diff --git a/.gitignore b/.gitignore index e4790fe7b4e..e935ec1bd59 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,8 @@ htdocs/includes/sebastian/ htdocs/includes/squizlabs/ htdocs/includes/webmozart/ htdocs/.well-known/apple-developer-merchantid-domain-association +/factory/ +/output/ # Node Modules build/yarn-error.log @@ -55,4 +57,3 @@ yarn.lock package-lock.json doc/install.lock -/factory/ diff --git a/.travis.yml b/.travis.yml index a260c31e3f3..637ba35995b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,11 +54,11 @@ jobs: env: DB=mysql - stage: PHP Dev if: type = push AND branch = develop - php: nightly + php: nightly env: DB=mysql - stage: PHP Dev if: type = push AND branch = 15.0 - php: nightly + php: nightly env: DB=mysql notifications: @@ -289,7 +289,7 @@ script: --exclude htdocs/includes/sabre --exclude htdocs/includes/phpoffice/PhpSpreadsheet --exclude htdocs/includes/sebastian \ --exclude htdocs/includes/squizlabs/php_codesniffer --exclude htdocs/includes/jakub-onderka --exclude htdocs/includes/php-parallel-lint --exclude htdocs/includes/symfony \ --exclude htdocs/includes/mike42/escpos-php/example --exclude htdocs/includes/maximebf \ - --exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --blame . + --exclude htdocs/includes/phpunit/ --exclude htdocs/includes/tecnickcom/tcpdf/include/barcodes --exclude htdocs/includes/webmozart --exclude htdocs/includes/webklex --blame . fi set +e echo @@ -436,6 +436,9 @@ script: php upgrade.php 15.0.0 16.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade15001600.log php upgrade2.php 15.0.0 16.0.0 > $TRAVIS_BUILD_DIR/upgrade15001600-2.log php step5.php 15.0.0 16.0.0 > $TRAVIS_BUILD_DIR/upgrade15001600-3.log + php upgrade.php 16.0.0 17.0.0 ignoredbversion > $TRAVIS_BUILD_DIR/upgrade16001700.log + php upgrade2.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-2.log + php step5.php 16.0.0 17.0.0 > $TRAVIS_BUILD_DIR/upgrade16001700-3.log ls -alrt $TRAVIS_BUILD_DIR/ - | diff --git a/.tx/config b/.tx/config index d4ca5e73180..ca169bfcc50 100644 --- a/.tx/config +++ b/.tx/config @@ -140,18 +140,6 @@ source_file = htdocs/langs/en_US/exports.lang source_lang = en_US type = MOZILLAPROPERTIES -[dolibarr.externalsite] -file_filter = htdocs/langs//externalsite.lang -source_file = htdocs/langs/en_US/externalsite.lang -source_lang = en_US -type = MOZILLAPROPERTIES - -[dolibarr.ftp] -file_filter = htdocs/langs//ftp.lang -source_file = htdocs/langs/en_US/ftp.lang -source_lang = en_US -type = MOZILLAPROPERTIES - [dolibarr.help] file_filter = htdocs/langs//help.lang source_file = htdocs/langs/en_US/help.lang diff --git a/COPYRIGHT b/COPYRIGHT index de293e3867e..83d054d63be 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -34,14 +34,15 @@ ParseDown 1.6 MIT License Yes PCLZip 2.8.4 LGPL-3+ Yes Library to zip/unzip files PHPDebugBar 1.15.1 MIT License Yes Used only by the module "debugbar" for developers PHPSpreadSheet 1.8.2 LGPL-2.1+ Yes Read/Write XLS files, read ODS files -php-iban 1.4.7 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP +php-iban 4.1 LGPL-3+ Yes Parse and validate IBAN (and IIBAN) bank account information in PHP PHPoAuthLib 0.8.2 MIT License Yes Library to provide oauth1 and oauth2 to different service PHPPrintIPP 1.3 GPL-2+ Yes Library to send print IPP requests -PSR/Logs 1.0 Library for logs (used by DebugBar) +PSR/Logs 1.0 MIT License Yes Library for logs (used by DebugBar) PSR/simple-cache ? MIT License Yes Library for cache (used by PHPSpreadSheet) Restler 3.1.1 LGPL-3+ Yes Library to develop REST Web services (+ swagger-ui js lib into dir explorer) Sabre 3.2.2 BSD Yes DAV support Swift Mailer 5.4.2-DEV MIT License Yes Comprehensive mailing tools for PHP +Symfony/var-dumper ??? MIT License Yes Library to make var dump (used by DebugBar) Stripe 7.67.0 MIT Licence Yes Library for Stripe module TCPDF 6.3.2 LGPL-3+ Yes PDF generation TCPDI 1.0.0 LGPL-3+ / Apache 2.0 Yes FPDI replacement @@ -51,7 +52,7 @@ Ace 1.4.14 BSD Yes ChartJS 3.7.1 MIT License Yes JS library for graph CKEditor 4.18 LGPL-2.1+ Yes Editor WYSIWYG jQuery 3.6.0 MIT License Yes JS library -jQuery UI 1.13.1 GPL and MIT License Yes JS library plugin UI +jQuery UI 1.13.2 GPL and MIT License Yes JS library plugin UI jQuery select2 4.0.13 GPL and Apache License Yes JS library plugin for sexier multiselect. Warning: 4.0.6+ create troubles without patching css jQuery blockUI 2.70.0 GPL and MIT License Yes JS library plugin blockUI (to use ajax popups) jQuery Colorpicker 1.1 MIT License Yes JS library for color picker for a defined list of colors diff --git a/ChangeLog b/ChangeLog index 0b0e8695a7b..e99731fe548 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,24 @@ English Dolibarr ChangeLog -------------------------------------------------------------- +***** ChangeLog for 17.0.0 compared to 16.0.0 ***** + +For users: +--------------- + +... + + +For developers or integrators: +------------------------------ + +... + + +WARNING: + +Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: +* The signature of method getNomUrl() of class ProductFournisseur has been modified to match the signature of method Product ***** ChangeLog for 16.0.0 compared to 15.0.0 ***** @@ -9,28 +27,28 @@ English Dolibarr ChangeLog For users: --------------- -NEW: PHP 8.1 compatibility +NEW: PHP 8.1 compatibility. + Warning: Application works correctly with PHP8 and 8.1 but you may experience a lot of PHP warning into the PHP server log files (depending + on the PHP setup). Removal of all PHP warnings on server side is planned for v17. NEW: Support for recurring purchase invoices. NEW: #20292 Include German public holidays -NEW: Can show ZATCA QRCode on PDFs -NEW: Can show Swiss QR Code on PDFs +NEW: Can show ZATCA QR-Code on PDFs +NEW: Can show Swiss QR-Code on PDFs NEW: #17123 added ExtraFields for Stock Mouvement -NEW: #20609 : new massaction to assign a sale representatives on a selection of thirdparties +NEW: #20609 new massaction to assign a sale representatives on a selection of thirdparties NEW: #20653 edit discount pourcentage for all lines in one shot NEW: Accept 'auto' for ref of object on import of purchase order/proposal NEW: Accountancy - Add more filters and info on page to bind accounting accounts -NEW: Accountancy - Add subledger account when we generate a transaction with a deposit invoice +NEW: Accountancy - Add subledger account when generate a transaction with a deposit invoice NEW: Accountancy - Add a massaction to preselect an account (customer and supplier list) NEW: ACE Editor is restored at same cursor position after a save. NEW: Add "addMoreActionsButtons" hook to subscription form NEW: Add an option in GUI to show a Quick add button into top menu bar -NEW: Module Recruitment - Add a public page with all list of open job positions. -NEW: Module Recruitment - Add a tab with list of application on the jobposition file. NEW: Add a workflow to auto link contract on a ticket NEW: Add column date of Signature on proposal list NEW: Add column template invoice in invoice list NEW: Add column "Total HT" to products array on document creation card -NEW: ADD configuration for text color of button action +NEW: Add configuration for text color of button action NEW: Add constant to hide categories in TakePos NEW: Add constant to show category description in TakePos NEW: Add constant to show only the products in stock in TakePos @@ -38,7 +56,7 @@ NEW: Add entity filter in exports NEW: Show the event block on recurring invoices #20870 NEW: Add filter "opportunity status" on statistics of projects. NEW: Add firstname, lastname and max number of attendees for module "Event Organization" -NEW: add margin info in proposal and order list +NEW: Add margin info in proposal and order list NEW: Add massaction "Edit Extrafield" for Product NEW: Add more fields to detect duplicate during import of thirdparties NEW: Add option to foce delivery on email for purchase order receipt to yes @@ -49,14 +67,12 @@ NEW: Add possibility with constant MAIN_LOGIN_BADCHARUNAUTHORIZED to define bad NEW: Add private and public notes on tax files. NEW: Add status "Obsolete" to KM articles NEW: Add substitutions "user numbers" -NEW: Add the possibility to add sub-BOMs to BOM NEW: allow a ticket to be automatically marked as read when created from backend. NEW: allow cut&paste as real numeric value to excel NEW: A public form to send a message and create a lead is available NEW: automatically set totally received status in reception NEW: Auto set invoice paid when adding credit not and remain to pay is 0 NEW: Availibility dictionnary has a new column unit and number -NEW: barcode rule to insert product in takepos NEW: Can change value of AWP during the inventory NEW: Can enter price with tax for predefined products on purchase objects NEW: Can filter on a thirdparty on product statistics @@ -72,7 +88,7 @@ NEW: create third-party with contact if not found on public ticket NEW: Default value for MAIN_SECURITY_CSRF_WITH_TOKEN is now 2 (GET are also protected agains CSRF attacks) NEW: deposit payment terms: add field into dictionary admin page to define default percentage of deposit. NEW: Dictionaries - add possibility to manage countries in EEC -NEW: display errors in a message box after generating documents +NEW: Display errors in a message box after generating documents NEW: Display physical and virtual stock of the products when creating OF from a BOM NEW: Display product ref in "Object link" product tab for BOM NEW: Enhance the import. Can use 'auto' for the ref (import of orders) @@ -84,10 +100,13 @@ NEW: leave requests: add field into type dictionary to block request if balance NEW: MAIN_MAIL_AUTOCOPY_TO can accept several email and special keys NEW: MAIN_SEARCH_CAT_OR_BY_DEFAULT const for search by category NEW: Mass action "Close shipments" +NEW: Module BOM - Add tabs for nets Bom +NEW: Module BOM - Add the possibility to add sub-BOMs to BOM +NEW: Module Recruitment - Add a public page with all list of open job positions. +NEW: Module Recruitment - Add a tab with list of application on the jobposition file. NEW: Module website now supports the multicompany module NEW: More mode for THEME_TOPMENU_DISABLE_IMAGE (2, 3, ...) NEW: Add option to move checkbox column as first column on Thirdparty list (only few screens) -NEW: Add tabs for nets Bom NEW: on redirect of page in website module, GET parameters are kept. NEW: optional display warning icons on ticket list NEW: option to default check "notify tier at creation" in ticket module @@ -99,15 +118,15 @@ NEW: Send email to the supplier order contact NEW: New permission to report time on timesheet. NEW: SEPA XML - option to place payment Type Info at Credit transfer Transaction level NEW: Show number of votes into the label of tab "Results" of a survey -NEW: Show product reference in Takepos NEW: Some core tables are created only at module activation NEW: split consumption line on MO NEW: stock filter in reassort lists NEW: stock limit in stock export CSV -NEW: Sub-bom are availables NEW: Supplier order - Show ref supplier of reception in linked object block NEW: support user_modif in order -NEW: TakePos - pagination on search results +NEW: TakePOS - barcode rule to insert product in TakePOS +NEW: TakePOS - pagination on search results +NEW: TakePOS - show product reference NEW: The backup tools has an "lowmemory" option for mysqldump on large database NEW: The 'reposition' class works on ajax constantonoff that make redirects NEW: Thirdparty - Add rules "customer accountancy code" is mandatory to validate invoice @@ -118,10 +137,11 @@ NEW: VAT Report by month - Show detail by rate and also by code NEW: Ticket triggers: allow to automatically send messages on new tickets NEW: Accountancy - Add hidden feature for accounting reconciliation NEW: Can store the session into database (instead of beeing managed by PHP) +NEW: Added MMK currency (Myanmar Kyat) Modules NEW: Module Partnership Management -NEW: Experimental module Event Organization Management +NEW: Module Event Organization Management For developers or integrators: @@ -129,17 +149,14 @@ For developers or integrators: NEW: dol_uncompress() supports more extensions (.gz, .bz2, .zstd). Only .zip was supported before. NEW: Implement a generic method for Kaban views NEW: Upgrade chartjs library to 3.7.1 -NEW: update rank line is possible on API for customer invoices, sales orders and supplier invoice NEW: stripe element with more gateways NEW: solde() function evolution to be able to get solde until a chosen date NEW: Suggest a way to run upgrade per entities. NEW: Support html content for multiselect component. NEW: ModuleBuilder - Add tabs view in module builder NEW: ModuleBuilder - More feature that can be modifed after module generation -NEW: Hook getNomUrl available everywhere in tooltip of ref links NEW: Identification of tr is possible with by attribute data-id on some pages NEW: Import with select boxes V2 -NEW: Can update rank of invoice, proposal and order lines with API update NEW: Can use current entity filter on 'chkbxlst' NEW: Creation of the function select_bom() used to display bom select list NEW: add printFieldListWhere hook in product reassort card @@ -147,29 +164,33 @@ NEW: Add trigger and event on completely received status change NEW: Add utility function send backup by mail NEW: add WordPress OAuth to save a token (not SSO) NEW: A module can embed a sql script run at each Dolibarr upgrade -NEW: API Proposals - Add POST lines -NEW: API REST filter states by country NEW: Add option INVOICEREC_SET_AUTOFILL_DATE_START/END -NEW: Add option MAIN_API_DEBUG to save API logs into a file NEW: Add param to keep the robot=index meta tag on public pages NEW: Add method hintindex() in database handlers. NEW: add modifications for new function "$db->prefix()" NEW: addMoreActionsButtonsList hook for button in list -NEW: Add API to get a template invoice NEW: Standardize a lot of code. -NEW: #20736 Allow extrafields SQL filters on REST API product lookup -NEW: #19294 implement detailed timespent in task of project API NEW: Add a protection into PHPunit to avoid to forget a var_dump -NEW: Add datem and type parameters to API to create movements NEW: Add hidden option on contract PDF line to hide qty and price NEW: Option MAIL_MASS_ACTION_ADD_LAST_IF_MAIN_DOC_NOT_FOUND to send last document in mass mailing action + +API: +NEW: API Proposals - Add POST lines +NEW: API REST filter states by country +NEW: Add API to get a template invoice +NEW: Add datem and type parameters to API to create movements +NEW: #19294 implement detailed timespent in task of project API +NEW: #20736 Allow extrafields SQL filters on REST API product lookup +NEW: Can update rank of invoice, proposal and order lines with API update +NEW: update rank line is possible on API for customer invoices, sales orders and supplier invoice +NEW: Add option MAIN_API_DEBUG to save API logs into a file + +Hooks: +NEW: Hook getNomUrl available everywhere in tooltip of ref links NEW: Add hooks: selectContactListWhere hook, selectThirdpartyListWhere hook -NEW: TakePos - add hooks complete product display -NEW: TakePos - add hooks for cart display -NEW: TakePos - add hooks to complete ajax return array NEW: Add hook before the public ticket list NEW: Add hook doaction in takepos invoice -NEW: Add Hook for Notif +NEW: Add hook for Notif NEW: Add hook for more buttons NEW: Add hook printFieldListWhere in "show_contacts" function NEW: Add hook printFieldWhere in load_state_board function @@ -182,8 +203,13 @@ NEW: Add hooks on project task time page NEW: Add hooks on salaries and sociales card NEW: Add hooks select product list and select thirdparty list function NEW: Add hook to getSellPrice function +NEW: TakePos - add hooks complete product display +NEW: TakePos - add hooks for cart display +NEW: TakePos - add hooks to complete ajax return array +WARNING: + Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: * There is a new specific permission to be allowed to enter timesheets. If you use timesheet, don't forget to give the new permission (disable and enable the module project if it is not visible). @@ -201,6 +227,79 @@ Following changes may create regressions for some external modules, but were nec * The context hook 'suppliercard' when on the supplier tab of a thirdparty has been renamed into 'thirdpartysupplier' +***** ChangeLog for 15.0.3 compared to 15.0.2 ***** + +FIX: 15.0: modules cannot declare more than 1 cron job using the same method with different parameters +FIX: 15 fix graph ficheinter status +FIX: #18704 +FIX: #20444 +FIX: #20448 missing preg_replace for vat rate when adding a free line +FIX: #20476 migration postgresql 13.0.x to 14.0.x packaging type +FIX: #20487 missing letter D in constant THIRDPARTIES_DISABLE_RELATED_OBJECT_TAB +FIX: #20527 Accountancy - Unbalanced entry proposed when an employee are declared on a social contribution +FIX: #20621 signature online with proposal with n page. +FIX: #20696 +FIX: #20828 +FIX: #20886 : manage durations in list_print_total.tpl.php +FIX: #20902 +FIX: #21051 +FIX: #21093 +FIX: #21138 +FIX: #21140 +FIX: #21174 +FIX: #21323 +FIX: #21472 On the bank transfer lists, a change of page switches to the lists of the direct debit module +FIX: #21495 +FIX: #21518 +FIX: Accountancy - Label of VAT account is empty +FIX: Accountancy - Model account list - Problem of CSRF +FIX: Accountancy - Partitioning of the entity on an automatic binding +FIX: add missing thead, th and id on table +FIX: backport commit 5b3fcc5e43979b1b0789bf81fb8f1b2b59c93056, chkbxlst cannot be emptied +FIX: Bank account not set when creating invoice from order +FIX: Bank transfer - Link on code supplier invoice was bad +FIX: Can convert a partially closed down payment when close for +FIX: class center linkedObjectblock order date +FIX: count elements in invoice list (Issue #21444) +FIX: Customer price non numeric warning when 0 vat. +FIX: errors in getLinesArray() +FIX: False alert of WAF when there is "set" into some URL action=update. +FIX: Intervention graph by status on ficheinter Index page +FIX: Intervention url link into Commerce index +FIX: Fix get origin from other than supplier proposal when add a new supplier proposal +FIX: Fix show errors in card +FIX: fourn/commande/card.php Added "$object" parameter to $formfile->showdocuments call +FIX: french traductions for payment methods +FIX: hook for dol_format_address +FIX: Index page for "Sales" give wrong URL link to Intervention +FIX: issue Dolibarr #21495 for v15 +FIX: label and get_substitutionarray_each_var_object on ODT generation +FIX: load product stock in inventory lines +FIX: missing morecss for multiselectarray +FIX: missins time spent list menu +FIX: new member subscription: bank account and payment mode might be hidden +FIX: ODT generation of BOM document +FIX: ODT tags for subobjects {object_subobject_yyy} was not working. +FIX: qty received label in Squille PDF model +FIX: rank duplicate on mass action invoice from multiple orders +FIX: regression + add $forceentity parameter +FIX: regression PR #20713 +FIX: security breach if we have same ref number in multiple entities +FIX: selection of type of invoice +FIX: Send remind to pay invoice only on validated invoices +FIX: Show sellist type of extrafield when none category selected +FIX: signature online with proposal with n page. +FIX: sql error when PRODUCT_USE_SUPPLIER_PACKAGING enabled. +FIX: sql order +FIX: trash icon on crontask list to do not work +FIX: v15 linked object block center order date +FIX: Warning on attribut +FIX: We must remove empty values of $features array in fetchByProductCombination2ValuePairs() because some products can use only several attributes in their variations and not necessarily all. In this case, fetch doesn't work without my correction +FIX: with callback function +FIX: xml file for company with special chars in name +FIX: Zatca QR code must use company name/vat + + ***** ChangeLog for 15.0.2 compared to 15.0.1 ***** FIX: #19777 #20281 @@ -481,6 +580,8 @@ NEW: we need to be able to put more filters on deleteByParentField() function NEW: make it easier to set the `keyword`, `keywords` and `description` attributes of an ecm file object NEW: Experimental feature to manage user sessions in database + +WARNING: Following changes may create regressions for some external modules, but were necessary to make Dolibarr better: * ALL EXTERNAL MODULES THAT WERE NOT CORRECTLY DEVELOPPED WILL NOT WORK ON V15 (All modules that forgot to manage the security token field diff --git a/build/README b/build/README index 626953f9376..19cf4ad1ec2 100644 --- a/build/README +++ b/build/README @@ -13,32 +13,12 @@ It is here only to build Dolibarr packages, and those generated packages will no There are several tools: +-------------------------------------------------------------------------------------------------- - To build full Dolibarr packages, launch the script > Launch command perl makepack-dolibarr.pl --------------------------------------------------------------------------------------------------- - - -Prerequisites to build tgz, debian and rpm packages: -> apt-get install tar dpkg dpatch p7zip-full rpm zip - - --------------------------------------------------------------------------------------------------- - -Prerequisites to build autoexe DoliWamp package: -> apt-get install wine q4wine -> Launch "wine cmd" to check a drive Z: pointing to / exists. -> Install InnoSetup - For example by running isetup-5.5.8.exe (https://www.jrsoftware.org) https://files.jrsoftware.org/is/5/ -> Install WampServer into "C:\wamp64" to have Apache, PHP and MariaDB - For example by running wampserver3.2.0_x64.exe (https://www.wampserver.com). - See file build/exe/doliwamp.iss to know the doliwamp version currently setup. -> Add path to ISCC into PATH windows var: - Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH -> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommanded), - open file build/exe/doliwamp.iss and click on button "Compile". - The .exe file will be build into directory build. +See makepack-howto.txt for prerequisites. -------------------------------------------------------------------------------------------------- diff --git a/build/docker/docker-run.sh b/build/docker/docker-run.sh index e57d9adfad0..4e69ea4a3a2 100644 --- a/build/docker/docker-run.sh +++ b/build/docker/docker-run.sh @@ -1,4 +1,6 @@ #!/bin/bash +# Script used by the Dockerfile. +# See README.md to know how to create a Dolibarr env with docker usermod -u ${HOST_USER_ID} www-data groupmod -g ${HOST_USER_ID} www-data diff --git a/build/exe/doliwamp/.gitignore b/build/exe/doliwamp/.gitignore index ce74d54f78e..f9a2ea83b34 100644 --- a/build/exe/doliwamp/.gitignore +++ b/build/exe/doliwamp/.gitignore @@ -1 +1 @@ -/doliwamp.tmp.iss +/doliwamp.tmp.iss* diff --git a/build/exe/doliwamp/doliwamp.iss b/build/exe/doliwamp/doliwamp.iss index c316e0f91d6..10cc1561011 100644 --- a/build/exe/doliwamp/doliwamp.iss +++ b/build/exe/doliwamp/doliwamp.iss @@ -24,7 +24,6 @@ OutputBaseFilename=__FILENAMEEXEDOLIWAMP__ ;OutputManifestFile=build\doliwampbuild.log ; Define full path from which all relative path are defined ; You must modify this to put here your dolibarr root directory -;SourceDir=Z:\home\ldestailleur\git\dolibarrxxx SourceDir=..\..\.. AppId=doliwamp AppPublisher=DoliCloud @@ -32,7 +31,7 @@ AppPublisherURL=https://www.dolicloud.com AppSupportURL=https://www.dolibarr.org AppUpdatesURL=https://www.dolibarr.org AppComments=DoliWamp includes Dolibarr, Apache, PHP and Mysql software. -AppCopyright=Copyright (C) 2008-2022 Laurent Destailleur (NLTechno), Fabian Rodriguez (Le Goût du Libre) +AppCopyright=Copyright (C) 2008-2022 Laurent Destailleur (DoliCloud), Fabian Rodriguez (Le Goût du Libre) DefaultDirName=c:\dolibarr DefaultGroupName=Dolibarr ;LicenseFile=COPYING @@ -81,7 +80,7 @@ Name: "desktopicon"; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm: Name: "{app}\logs" Name: "{app}\tmp" Name: "{app}\dolibarr_documents" -Name: "{app}\bin\apache\apache2.4.41\logs" +Name: "{app}\bin\apache\apache2.4.51\logs" [Files] ; Stop/start @@ -101,16 +100,10 @@ Source: "build\exe\doliwamp\UsedPort.exe"; DestDir: "{app}\"; Flags: ignoreversi ; Apache, Php, Mysql ; Put here path of Wampserver applications -; Value OK: apache 2.2.6, php 5.2.5 (5.2.11, 5.3.0 and 5.3.1 fails if php_exif, php_pgsql, php_zip is on), mysql 5.0.45 -; Value OK: apache 2.2.11, php 5.3.0 (if no php_exif, php_pgsql, php_zip), mysql 5.0.45 -; Value OK: apache 2.4.9, php 5.5.12, mysql 5.0.45 instead of 5.6.17 (wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-32b.exe) -; Value OK: apache 2.4.41, php 7.3.12, mariadb10.4.10 (wampserver3.2.0_x64.exe) -;Source: "C:\Program Files\Wamp\bin\apache\apache2.4.9\*.*"; DestDir: "{app}\bin\apache\apache2.4.9"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" -Source: "C:\wamp64\bin\apache\apache2.4.41\*.*"; DestDir: "{app}\bin\apache\apache2.4.41"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" -;Source: "C:\Program Files\Wamp\bin\php\php5.5.12\*.*"; DestDir: "{app}\bin\php\php5.5.12"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log" -Source: "C:\wamp64\bin\php\php7.3.12\*.*"; DestDir: "{app}\bin\php\php7.3.12"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log" -;Source: "C:\Program Files\Wamp\bin\mysql\mysql5.0.45\*.*"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe" -Source: "C:\wamp64\bin\mariadb\mariadb10.4.10\*.*"; DestDir: "{app}\bin\mariadb\mariadb10.4.10"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe" +; Value OK: apache 2.4.51, php 7.3.33, mariadb10.6.5 (wampserver3.2.6_x64.exe) +Source: "C:\wamp64\bin\apache\apache2.4.51\*.*"; DestDir: "{app}\bin\apache\apache2.4.51"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,httpd.conf,wampserver.conf,*.log,*_log" +Source: "C:\wamp64\bin\php\php7.3.33\*.*"; DestDir: "{app}\bin\php\php7.3.33"; Flags: ignoreversion recursesubdirs; Excludes: "php.ini,phpForApache.ini,wampserver.conf,*.log,*_log" +Source: "C:\wamp64\bin\mariadb\mariadb10.6.5\*.*"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion recursesubdirs; Excludes: "my.ini,data\*,wampserver.conf,*.log,*_log,MySQLInstanceConfig.exe" ; Mysql data files (does not overwrite if exists) ; We must copy them because the tool mysql_install_db.exe to generate them at first install does not return to prompt so make install hang @@ -125,12 +118,10 @@ Source: "*.*"; DestDir: "{app}\www\dolibarr"; Flags: ignoreversion; Excludes: ". ; Config files Source: "build\exe\doliwamp\dolibarr.conf.install"; DestDir: "{app}\alias"; Flags: ignoreversion; -;Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.9\conf"; Flags: ignoreversion; -Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.41\conf"; Flags: ignoreversion; +Source: "build\exe\doliwamp\httpd.conf.install"; DestDir: "{app}\bin\apache\apache2.4.51\conf"; Flags: ignoreversion; Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mysql\mysql5.0.45"; Flags: ignoreversion; -Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.4.10"; Flags: ignoreversion; -;Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php5.5.12"; Flags: ignoreversion; -Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.3.12"; Flags: ignoreversion; +Source: "build\exe\doliwamp\my.ini.install"; DestDir: "{app}\bin\mariadb\mariadb10.6.5"; Flags: ignoreversion; +Source: "build\exe\doliwamp\php.ini.install"; DestDir: "{app}\bin\php\php7.3.33"; Flags: ignoreversion; Source: "build\exe\doliwamp\index.php.install"; DestDir: "{app}\www"; Flags: ignoreversion; Source: "build\exe\doliwamp\install.forced.php.install"; DestDir: "{app}\www\dolibarr\htdocs\install"; Flags: ignoreversion; Source: "build\exe\doliwamp\openssl.conf"; DestDir: "{app}"; Flags: ignoreversion; @@ -236,12 +227,9 @@ procedure InitializeWizard(); begin //version des applis, a modifier pour chaque version de WampServer 2 - //apacheVersion := '2.4.9'; - //phpVersion := '5.5.12' ; - apacheVersion := '2.4.41'; - phpVersion := '7.3.12' ; - //mysqlVersion := '5.0.45'; - mysqlVersion := '10.4.10'; + apacheVersion := '2.4.51'; + phpVersion := '7.3.33' ; + mysqlVersion := '10.6.5'; smtpServer := 'localhost'; apachePort := '80'; @@ -375,9 +363,9 @@ begin // Migration of database -// datadir := pathWithSlashes+'/bin/mariadb/marradb10.4.10/data'; -// exedirold := pathWithSlashes+'/bin/mariadb/marradb10.4.10/'; -// exedirnew := pathWithSlashes+'/bin/mariadb/marradb10.4.10/'; +// datadir := pathWithSlashes+'/bin/mariadb/mariadb10.6.5/data'; +// exedirold := pathWithSlashes+'/bin/mariadb/mariadb10.6.5/'; +// exedirnew := pathWithSlashes+'/bin/mariadb/mariadb10.6.5/'; // If we have a new database version, we should only copy old my.ini file into new directory // and change only all basedir= strings to use new version. Like this, data dir is still correct. @@ -1027,7 +1015,7 @@ Filename: "{app}\rundoliwamp.bat"; Description: {cm:LaunchNow}; Flags: shellexec [UninstallDelete] Type: files; Name: "{app}\*.*" -Type: files; Name: "{app}\bin\mariadb\mariadb10.4.10\*.*" +Type: files; Name: "{app}\bin\mariadb\mariadb10.6.5\*.*" Type: filesandordirs; Name: "{app}\alias" Type: filesandordirs; Name: "{app}\apps" Type: filesandordirs; Name: "{app}\bin\apache" diff --git a/build/makepack-dolibarr.pl b/build/makepack-dolibarr.pl index 556ce9d0a7e..3024d3b1e61 100755 --- a/build/makepack-dolibarr.pl +++ b/build/makepack-dolibarr.pl @@ -65,7 +65,7 @@ $DIR||='.'; $DIR =~ s/([^\/\\])[\\\/]+$/$1/; $SOURCE="$DIR/.."; $DESTI="$SOURCE/build"; -if ($SOURCE !~ /^\//) +if ($SOURCE !~ /^\// && $SOURCE !~ /^[a-z]:/i) { print "Error: Launch the script $PROG.$Extension with its full path from /.\n"; print "$PROG.$Extension aborted.\n"; @@ -76,15 +76,23 @@ if (! $ENV{"DESTIBETARC"} || ! $ENV{"DESTISTABLE"}) { print "Error: Missing environment variables.\n"; print "You must define the environment variable DESTIBETARC and DESTISTABLE to point to the\ndirectories where you want to save the generated packages.\n"; + print "$PROG.$Extension aborted.\n"; + print "\n"; + print "You can set them with\n"; + print "On Linux:\n"; + print "export DESTIBETARC='/tmp'; export DESTISTABLE='/tmp';\n"; + print "On Windows:\n"; + print "set DESTIBETARC=c:/tmp\n"; + print "set DESTISTABLE=c:/tmp\n"; + print "\n"; print "Example: DESTIBETARC='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/lastbuild'\n"; print "Example: DESTISTABLE='/media/HDDATA1_LD/Mes Sites/Web/Dolibarr/dolibarr.org/files/stable'\n"; - print "$PROG.$Extension aborted.\n"; sleep 2; exit 1; } if (! -d $ENV{"DESTIBETARC"} || ! -d $ENV{"DESTISTABLE"}) { - print "Error: Directory of environment variable DESTIBETARC or DESTISTABLE does not exist.\n"; + print "Error: Directory of environment variable DESTIBETARC ($ENV{'DESTIBETARC'}) or DESTISTABLE ($ENV{'DESTISTABLE'}) does not exist.\n"; print "$PROG.$Extension aborted.\n"; sleep 2; exit 1; @@ -94,7 +102,7 @@ if (! -d $ENV{"DESTIBETARC"} || ! -d $ENV{"DESTISTABLE"}) # -------------- if ("$^O" =~ /linux/i || (-d "/etc" && -d "/var" && "$^O" !~ /cygwin/i)) { $OS='linux'; $CR=''; } elsif (-d "/etc" && -d "/Users") { $OS='macosx'; $CR=''; } -elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i) { $OS='windows'; $CR="\r"; } +elsif ("$^O" =~ /cygwin/i || "$^O" =~ /win32/i || "$^O" =~ /msys/i) { $OS='windows'; $CR="\r"; } if (! $OS) { print "Error: Can't detect your OS.\n"; print "Can't continue.\n"; @@ -390,7 +398,7 @@ if ($nboftargetok) { $olddir=getcwd(); chdir("$SOURCE"); - print "Clean $SOURCE/htdocs\n"; + print "Clean $SOURCE/htdocs/includes/autoload.php\n"; $ret=`rm -f $SOURCE/htdocs/includes/autoload.php`; $ret=`git ls-files . --exclude-standard --others`; @@ -1074,28 +1082,52 @@ if ($nboftargetok) { print "Remove target $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe...\n"; unlink "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"; - print "Check that in your Wine setup, you have created a Z: drive that point to your / directory.\n"; - + if ($OS eq 'windows') { + print "Check that ISCC.exe is in your PATH.\n"; + } else { + print "Check that in your Wine setup, you have created a Z: drive that point to your / directory.\n"; + } + $SOURCEBACK=$SOURCE; $SOURCEBACK =~ s/\//\\/g; - print "Prepare file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss from \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.iss\"\n"; - $ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; + print "Prepare file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" from \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.iss\"\n"; + + #$ret=`cat "$SOURCE/build/exe/doliwamp/doliwamp.iss" | sed -e 's/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g' > "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; + open(IN, '<' . $SOURCE."/build/exe/doliwamp/doliwamp.iss") or die $!; + open(OUT, '>' . "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss") or die $!; + while() + { + $_ =~ s/__FILENAMEEXEDOLIWAMP__/$FILENAMEEXEDOLIWAMP/g; + print OUT $_; + } + close(IN); + close(OUT); - print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\"\n"; - $cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + print "Compil exe $FILENAMEEXEDOLIWAMP.exe file from iss file \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\" on OS $OS\n"; + + if ($OS eq 'windows') { + $cmd= "ISCC.exe \"$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + } else { + #$cmd= "wine ISCC.exe \"Z:$SOURCEBACK\\build\\exe\\doliwamp\\doliwamp.tmp.iss\""; + } print "$cmd\n"; $ret= `$cmd`; - #print "$ret\n"; + print "ret=$ret\n"; # Move to final dir print "Move \"$SOURCE\\build\\$FILENAMEEXEDOLIWAMP.exe\" to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; rename("$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe","$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"); print "Move $SOURCE/build/$FILENAMEEXEDOLIWAMP.exe to $NEWDESTI/$FILENAMEEXEDOLIWAMP.exe\n"; - $ret=`mv "$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe" "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"`; + + use File::Copy; + + #$ret=`mv "$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe" "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"`; + $ret=move("$SOURCE/build/$FILENAMEEXEDOLIWAMP.exe", "$NEWDESTI/$FILENAMEEXEDOLIWAMP.exe"); print "Remove tmp file $SOURCE/build/exe/doliwamp/doliwamp.tmp.iss\n"; - $ret=`rm "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; + #$ret=`rm "$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"`; + $ret=unlink("$SOURCE/build/exe/doliwamp/doliwamp.tmp.iss"); next; } @@ -1242,7 +1274,7 @@ if ($nboftargetok) { print "\n----- Summary -----\n"; foreach my $target (sort keys %CHOOSEDTARGET) { - if ($target eq '-CHKSUM') { print "Checksum was generated"; next; } + if ($target eq '-CHKSUM') { print "Checksum was generated\n"; next; } if ($CHOOSEDTARGET{$target} < 0) { print "Package $target not built (bad requirement).\n"; } else { diff --git a/build/makepack-howto.txt b/build/makepack-howto.txt index d4e37e32629..be88302cd1d 100644 --- a/build/makepack-howto.txt +++ b/build/makepack-howto.txt @@ -1,7 +1,34 @@ ----- Dolibarr Makepack How To ----- This documentation describe steps to build a BETA or RELEASE versions -of Dolibarr. There is a chapter for BETA version and a chapter for -RELEASE version. +of Dolibarr. There is a chapter for BETA version and a chapter for RELEASE version. + + +***** Prerequisites For Linux ***** + +Prerequisites to build tgz, debian and rpm packages: +> apt-get install perl tar dpkg dpatch p7zip-full rpm zip php-cli + +Prerequisites to build autoexe DoliWamp package: +> apt-get install wine q4wine +> Launch "wine cmd" to check a drive Z: pointing to / exists. +> Install InnoSetup + For example by running isetup-5.5.8.exe (https://www.jrsoftware.org) https://files.jrsoftware.org/is/5/ +> Install WampServer into "C:\wamp64" to have Apache, PHP and MariaDB + For example by running wampserver3.2.0_x64.exe (https://www.wampserver.com). + See file build/exe/doliwamp.iss to know the doliwamp version currently setup. +> Add path to ISCC into PATH windows var: + Launch wine cmd, then regedit and add entry int HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment\PATH +> To build manually the .exe from Windows (running from makepack-dolibarr.pl script is however recommanded), + open file build/exe/doliwamp.iss and click on button "Compile". + The .exe file will be build into directory build. + + +***** Prerequisites For Windows ***** + +Install Perl +Install WampServer-3.2.*-64.exe +isetup-5.5.8.exe + ***** Actions to do a BETA ***** This files describe steps made by Dolibarr packaging team to make a diff --git a/build/rpm/dolibarr_fedora.spec b/build/rpm/dolibarr_fedora.spec index 27130244d00..1c6716408b7 100755 --- a/build/rpm/dolibarr_fedora.spec +++ b/build/rpm/dolibarr_fedora.spec @@ -227,6 +227,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/ticket %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants +%_datadir/dolibarr/htdocs/webhook %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation diff --git a/build/rpm/dolibarr_generic.spec b/build/rpm/dolibarr_generic.spec index aeddd5526f8..f6d81feaea4 100755 --- a/build/rpm/dolibarr_generic.spec +++ b/build/rpm/dolibarr_generic.spec @@ -54,7 +54,7 @@ BuildRequires: desktop-file-utils Group: Applications/Productivity Requires: apache-base, apache-mod_php, php-cgi, php-cli, php-bz2, php-gd, php-ldap, php-imap, php-mysqli, php-openssl, fonts-ttf-dejavu Requires: mysql, mysql-client -%else%_datadir/dolibarr/htdocs/datapolicy +%else %if 0%{?suse_version} # Voir http://en.opensuse.org/openSUSE:Packaging_Conventions_RPM_Macros Group: Productivity/Office/Management @@ -67,7 +67,7 @@ Requires: httpd, php >= 5.3.0, php-cli, php-gd, php-ldap, php-imap, php-mbstring Requires: mysql-server, mysql Requires: php-mysqli >= 4.1.0 %endif -%endif%_datadir/dolibarr/htdocs/eventorganization +%endif %endif @@ -125,7 +125,7 @@ cui hai bisogno ed essere facile da usare. %if 0%{?sles_version} %{__rm} -rf $RPM_BUILD_ROOT -%{__mkdir} $RPM_BUILD_ROOT%_datadir/dolibarr/htdocs/datapolicy +%{__mkdir} $RPM_BUILD_ROOT% %{__mkdir} $RPM_BUILD_ROOT%{_sysconfdir} %{__mkdir} $RPM_BUILD_ROOT%{_sysconfdir}/%{name} %else @@ -308,6 +308,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/ticket %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants +%_datadir/dolibarr/htdocs/webhook %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation diff --git a/build/rpm/dolibarr_mandriva.spec b/build/rpm/dolibarr_mandriva.spec index a1e4dffc781..a371e3ab02f 100755 --- a/build/rpm/dolibarr_mandriva.spec +++ b/build/rpm/dolibarr_mandriva.spec @@ -224,6 +224,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/ticket %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants +%_datadir/dolibarr/htdocs/webhook %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation diff --git a/build/rpm/dolibarr_opensuse.spec b/build/rpm/dolibarr_opensuse.spec index aed2d76ed29..bd6834582ac 100755 --- a/build/rpm/dolibarr_opensuse.spec +++ b/build/rpm/dolibarr_opensuse.spec @@ -66,7 +66,7 @@ ed essere facile da usare. Programmo web, progettato per poter fornire solo ciò di cui hai bisogno ed essere facile da usare. - +%_datadir/dolibarr/htdocs/webhook #---- prep %prep @@ -235,6 +235,7 @@ done >>%{name}.lang %_datadir/dolibarr/htdocs/ticket %_datadir/dolibarr/htdocs/user %_datadir/dolibarr/htdocs/variants +%_datadir/dolibarr/htdocs/webhook %_datadir/dolibarr/htdocs/webservices %_datadir/dolibarr/htdocs/website %_datadir/dolibarr/htdocs/workstation diff --git a/dev/initdemo/initdemopassword.sh b/dev/initdemo/initdemopassword.sh index 37264fb8e4d..12b09a02186 100755 --- a/dev/initdemo/initdemopassword.sh +++ b/dev/initdemo/initdemopassword.sh @@ -174,7 +174,7 @@ if [ -s "$mydir/initdemopostsql.sql" ]; then echo A file initdemopostsql.sql was found, we execute it. mysql -P$port $base < "$mydir/initdemopostsql.sql" else - echo No file initdemopostsql.sql found, we extra sql action done. + echo No file initdemopostsql.sql found, so no extra sql action done. fi diff --git a/dev/initdemo/mysqldump_dolibarr_15.0.0.sql b/dev/initdemo/mysqldump_dolibarr_16.0.0.sql similarity index 92% rename from dev/initdemo/mysqldump_dolibarr_15.0.0.sql rename to dev/initdemo/mysqldump_dolibarr_16.0.0.sql index 8b17c34203f..04bbc0288c3 100644 --- a/dev/initdemo/mysqldump_dolibarr_15.0.0.sql +++ b/dev/initdemo/mysqldump_dolibarr_16.0.0.sql @@ -1,8 +1,8 @@ --- MySQL dump 10.19 Distrib 10.3.31-MariaDB, for debian-linux-gnu (x86_64) +-- MariaDB dump 10.19 Distrib 10.6.7-MariaDB, for debian-linux-gnu (x86_64) -- --- Host: localhost Database: dolibarr_15 +-- Host: localhost Database: dolibarr_16 -- ------------------------------------------------------ --- Server version 10.3.31-MariaDB-0ubuntu0.20.04.1 +-- Server version 10.6.7-MariaDB-2ubuntu1 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -27,26 +27,26 @@ CREATE TABLE `llx_accounting_account` ( `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `fk_pcg_version` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `pcg_type` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `account_number` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_pcg_version` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `pcg_type` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `account_number` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `account_parent` int(11) DEFAULT 0, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `labelshort` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `labelshort` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_accounting_category` int(11) DEFAULT 0, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `reconcilable` tinyint(4) NOT NULL DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_accounting_account` (`account_number`,`entity`,`fk_pcg_version`), KEY `idx_accountingaccount_fk_pcg_version` (`fk_pcg_version`), KEY `idx_accounting_account_account_number` (`account_number`), KEY `idx_accounting_account_account_parent` (`account_parent`), CONSTRAINT `fk_accounting_account_fk_pcg_version` FOREIGN KEY (`fk_pcg_version`) REFERENCES `llx_accounting_system` (`pcg_version`) -) ENGINE=InnoDB AUTO_INCREMENT=4785 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4785 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -69,26 +69,26 @@ DROP TABLE IF EXISTS `llx_accounting_bookkeeping`; CREATE TABLE `llx_accounting_bookkeeping` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `doc_date` date NOT NULL, - `doc_type` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `doc_ref` varchar(300) COLLATE utf8_unicode_ci NOT NULL, + `doc_type` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `doc_ref` varchar(300) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_doc` int(11) NOT NULL, `fk_docdet` int(11) NOT NULL, - `thirdparty_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `numero_compte` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `label_compte` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `label_operation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `thirdparty_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `numero_compte` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label_compte` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label_operation` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `debit` double(24,8) DEFAULT NULL, `credit` double(24,8) DEFAULT NULL, `montant` double(24,8) DEFAULT NULL, - `sens` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `sens` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_amount` double(24,8) DEFAULT NULL, - `multicurrency_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `lettering_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lettering_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_lettering` datetime DEFAULT NULL, `fk_user_author` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_journal` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `journal_label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_journal` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `journal_label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `piece_num` int(11) NOT NULL, `date_validated` datetime DEFAULT NULL, `date_export` datetime DEFAULT NULL, @@ -96,9 +96,9 @@ CREATE TABLE `llx_accounting_bookkeeping` ( `fk_user_modif` int(11) DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `subledger_account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `subledger_label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `subledger_account` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subledger_label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_lim_reglement` datetime DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), @@ -108,7 +108,7 @@ CREATE TABLE `llx_accounting_bookkeeping` ( KEY `idx_accounting_bookkeeping_numero_compte` (`numero_compte`,`entity`), KEY `idx_accounting_bookkeeping_code_journal` (`code_journal`,`entity`), KEY `idx_accounting_bookkeeping_piece_num` (`piece_num`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -132,34 +132,34 @@ CREATE TABLE `llx_accounting_bookkeeping_tmp` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, `doc_date` date NOT NULL, - `doc_type` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `doc_ref` varchar(300) COLLATE utf8_unicode_ci NOT NULL, + `doc_type` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `doc_ref` varchar(300) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_doc` int(11) NOT NULL, `fk_docdet` int(11) NOT NULL, - `thirdparty_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `subledger_account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `subledger_label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `numero_compte` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `label_compte` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `label_operation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `thirdparty_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subledger_account` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subledger_label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `numero_compte` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label_compte` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `label_operation` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `debit` double(24,8) NOT NULL, `credit` double(24,8) NOT NULL, `montant` double(24,8) NOT NULL, - `sens` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `sens` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_amount` double(24,8) DEFAULT NULL, - `multicurrency_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `lettering_code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lettering_code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_lettering` datetime DEFAULT NULL, `fk_user_author` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_journal` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `journal_label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_journal` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `journal_label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `piece_num` int(11) NOT NULL, `date_validated` datetime DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_lim_reglement` datetime DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), @@ -167,7 +167,7 @@ CREATE TABLE `llx_accounting_bookkeeping_tmp` ( KEY `idx_accounting_bookkeeping_fk_docdet` (`fk_docdet`), KEY `idx_accounting_bookkeeping_numero_compte` (`numero_compte`), KEY `idx_accounting_bookkeeping_code_journal` (`code_journal`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -188,7 +188,7 @@ DROP TABLE IF EXISTS `llx_accounting_fiscalyear`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_accounting_fiscalyear` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `date_start` date DEFAULT NULL, `date_end` date DEFAULT NULL, `statut` tinyint(4) NOT NULL DEFAULT 0, @@ -198,7 +198,7 @@ CREATE TABLE `llx_accounting_fiscalyear` ( `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -222,7 +222,7 @@ CREATE TABLE `llx_accounting_groups_account` ( `fk_accounting_account` int(11) NOT NULL, `fk_c_accounting_category` int(11) NOT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -243,14 +243,14 @@ DROP TABLE IF EXISTS `llx_accounting_journal`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_accounting_journal` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `nature` smallint(6) NOT NULL DEFAULT 0, `active` smallint(6) DEFAULT 0, `entity` int(11) DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_accounting_journal_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -272,13 +272,13 @@ DROP TABLE IF EXISTS `llx_accounting_system`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_accounting_system` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `pcg_version` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `pcg_version` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `active` smallint(6) DEFAULT 0, `fk_country` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_accounting_system_pcg_version` (`pcg_version`) -) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -287,7 +287,7 @@ CREATE TABLE `llx_accounting_system` ( LOCK TABLES `llx_accounting_system` WRITE; /*!40000 ALTER TABLE `llx_accounting_system` DISABLE KEYS */; -INSERT INTO `llx_accounting_system` VALUES (1,'PCG99-ABREGE','The simple accountancy french plan',1,1),(2,'PCG99-BASE','The base accountancy french plan',1,1),(3,'PCMN-BASE','The base accountancy belgium plan',1,2),(4,'PCG08-PYME','The PYME accountancy spanish plan',1,4),(5,'PC-MIPYME','The PYME accountancy Chile plan',1,67),(6,'ENG-BASE','England plan',1,7),(7,'SYSCOHADA','Plan comptable Ouest-Africain',0,NULL),(39,'PCG14-DEV','The developed accountancy french plan 2014',1,1),(40,'PCG_SUISSE','Switzerland plan',1,6),(41,'PCN-LUXEMBURG','Plan comptable normalisé Luxembourgeois',1,140),(42,'DK-STD','Standardkontoplan fra SKAT',1,80),(43,'PCT','The Tunisia plan',1,10),(44,'PCG','The Moroccan chart of accounts',1,12),(47,'SYSCOHADA-BJ','Plan comptable Ouest-Africain',1,49),(48,'SYSCOHADA-BF','Plan comptable Ouest-Africain',1,60),(49,'SYSCOHADA-CM','Plan comptable Ouest-Africain',1,24),(50,'SYSCOHADA-CF','Plan comptable Ouest-Africain',1,65),(51,'SYSCOHADA-KM','Plan comptable Ouest-Africain',1,71),(52,'SYSCOHADA-CG','Plan comptable Ouest-Africain',1,72),(53,'SYSCOHADA-CI','Plan comptable Ouest-Africain',1,21),(54,'SYSCOHADA-GA','Plan comptable Ouest-Africain',1,16),(55,'SYSCOHADA-GQ','Plan comptable Ouest-Africain',1,87),(56,'SYSCOHADA-ML','Plan comptable Ouest-Africain',1,147),(57,'SYSCOHADA-NE','Plan comptable Ouest-Africain',1,168),(58,'SYSCOHADA-CD','Plan comptable Ouest-Africain',1,73),(59,'SYSCOHADA-SN','Plan comptable Ouest-Africain',1,22),(60,'SYSCOHADA-TD','Plan comptable Ouest-Africain',1,66),(61,'SYSCOHADA-TG','Plan comptable Ouest-Africain',1,15),(62,'RO-BASE','Plan de conturi romanesc',1,188),(63,'SKR03','Standardkontenrahmen SKR 03',1,5),(64,'SKR04','Standardkontenrahmen SKR 04',1,5),(65,'BAS-K1-MINI','The Swedish mini chart of accounts',1,20),(67,'PCG18-ASSOC','French foundation chart of accounts 2018',1,1),(68,'PCGAFR14-DEV','The developed farm accountancy french plan 2014',1,1),(69,'AT-BASE','Plan Austria',1,41),(70,'US-BASE','USA basic chart of accounts',1,11),(71,'CA-ENG-BASE','Canadian basic chart of accounts - English',1,14),(72,'SAT/24-2019','Catalogo y codigo agrupador fiscal del 2019',1,154); +INSERT INTO `llx_accounting_system` VALUES (1,'PCG99-ABREGE','The simple accountancy french plan',1,1),(2,'PCG99-BASE','The base accountancy french plan',1,1),(3,'PCMN-BASE','The base accountancy belgium plan',1,2),(4,'PCG08-PYME','The PYME accountancy spanish plan',1,4),(5,'PC-MIPYME','The PYME accountancy Chile plan',1,67),(6,'ENG-BASE','England plan',1,7),(7,'SYSCOHADA','Plan comptable Ouest-Africain',0,NULL),(39,'PCG14-DEV','The developed accountancy french plan 2014',1,1),(40,'PCG_SUISSE','Switzerland plan',1,6),(41,'PCN-LUXEMBURG','Plan comptable normalisé Luxembourgeois',1,140),(42,'DK-STD','Standardkontoplan fra SKAT',1,80),(43,'PCT','The Tunisia plan',1,10),(44,'PCG','The Moroccan chart of accounts',1,12),(47,'SYSCOHADA-BJ','Plan comptable Ouest-Africain',1,49),(48,'SYSCOHADA-BF','Plan comptable Ouest-Africain',1,60),(49,'SYSCOHADA-CM','Plan comptable Ouest-Africain',1,24),(50,'SYSCOHADA-CF','Plan comptable Ouest-Africain',1,65),(51,'SYSCOHADA-KM','Plan comptable Ouest-Africain',1,71),(52,'SYSCOHADA-CG','Plan comptable Ouest-Africain',1,72),(53,'SYSCOHADA-CI','Plan comptable Ouest-Africain',1,21),(54,'SYSCOHADA-GA','Plan comptable Ouest-Africain',1,16),(55,'SYSCOHADA-GQ','Plan comptable Ouest-Africain',1,87),(56,'SYSCOHADA-ML','Plan comptable Ouest-Africain',1,147),(57,'SYSCOHADA-NE','Plan comptable Ouest-Africain',1,168),(58,'SYSCOHADA-CD','Plan comptable Ouest-Africain',1,73),(59,'SYSCOHADA-SN','Plan comptable Ouest-Africain',1,22),(60,'SYSCOHADA-TD','Plan comptable Ouest-Africain',1,66),(61,'SYSCOHADA-TG','Plan comptable Ouest-Africain',1,15),(62,'RO-BASE','Plan de conturi romanesc',1,188),(63,'SKR03','Standardkontenrahmen SKR 03',1,5),(64,'SKR04','Standardkontenrahmen SKR 04',1,5),(65,'BAS-K1-MINI','The Swedish mini chart of accounts',1,20),(67,'PCG18-ASSOC','French foundation chart of accounts 2018',1,1),(68,'PCGAFR14-DEV','The developed farm accountancy french plan 2014',1,1),(69,'AT-BASE','Plan Austria',1,41),(70,'US-BASE','USA basic chart of accounts',1,11),(71,'CA-ENG-BASE','Canadian basic chart of accounts - English',1,14),(72,'SAT/24-2019','Catalogo y codigo agrupador fiscal del 2019',1,154),(73,'PCN2020-LUXEMBURG','Plan comptable normalisé 2020 Luxembourgeois',1,140); /*!40000 ALTER TABLE `llx_accounting_system` ENABLE KEYS */; UNLOCK TABLES; @@ -300,14 +300,14 @@ DROP TABLE IF EXISTS `llx_actioncomm`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_actioncomm` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `datep` datetime DEFAULT NULL, `datep2` datetime DEFAULT NULL, `fk_action` int(11) DEFAULT NULL, - `code` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_author` int(11) DEFAULT NULL, @@ -322,28 +322,28 @@ CREATE TABLE `llx_actioncomm` ( `priority` smallint(6) DEFAULT NULL, `fulldayevent` smallint(6) NOT NULL DEFAULT 0, `percent` smallint(6) NOT NULL DEFAULT 0, - `location` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `location` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `durationp` double DEFAULT NULL, `durationa` double DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_element` int(11) DEFAULT NULL, - `elementtype` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_msgid` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_subject` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_from` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_sender` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_to` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_tocc` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_tobcc` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `errors_to` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL, - `recurid` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `recurrule` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `elementtype` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_msgid` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_subject` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_from` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_sender` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_to` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_tocc` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_tobcc` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `errors_to` varchar(256) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `recurid` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `recurrule` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `recurdateend` datetime DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `calling_duration` int(11) DEFAULT NULL, - `visibility` varchar(12) COLLATE utf8_unicode_ci DEFAULT 'default', - `reply_to` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `visibility` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT 'default', + `reply_to` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `num_vote` int(11) DEFAULT NULL, `event_paid` smallint(6) NOT NULL DEFAULT 0, `status` smallint(6) NOT NULL DEFAULT 0, @@ -359,7 +359,7 @@ CREATE TABLE `llx_actioncomm` ( KEY `idx_actioncomm_datep2` (`datep2`), KEY `idx_actioncomm_recurid` (`recurid`), KEY `idx_actioncomm_ref_ext` (`ref_ext`) -) ENGINE=InnoDB AUTO_INCREMENT=608 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=608 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -383,10 +383,10 @@ CREATE TABLE `llx_actioncomm_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_actioncomm_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -408,22 +408,22 @@ DROP TABLE IF EXISTS `llx_actioncomm_reminder`; CREATE TABLE `llx_actioncomm_reminder` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `dateremind` datetime NOT NULL, - `typeremind` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `typeremind` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_user` int(11) NOT NULL, `offsetvalue` int(11) NOT NULL, - `offsetunit` varchar(1) COLLATE utf8_unicode_ci NOT NULL, + `offsetunit` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, `status` int(11) NOT NULL DEFAULT 0, `entity` int(11) NOT NULL DEFAULT 1, `fk_actioncomm` int(11) NOT NULL, `fk_email_template` int(11) DEFAULT NULL, - `lasterror` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `lasterror` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_actioncomm_reminder_unique` (`fk_user`,`typeremind`,`offsetvalue`,`offsetunit`,`fk_actioncomm`), KEY `idx_actioncomm_reminder_rowid` (`rowid`), KEY `idx_actioncomm_reminder_dateremind` (`dateremind`), KEY `idx_actioncomm_reminder_fk_user` (`fk_user`), KEY `idx_actioncomm_reminder_status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -445,15 +445,15 @@ DROP TABLE IF EXISTS `llx_actioncomm_resources`; CREATE TABLE `llx_actioncomm_resources` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_actioncomm` int(11) NOT NULL, - `element_type` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `element_type` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_element` int(11) NOT NULL, - `answer_status` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `answer_status` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `mandatory` smallint(6) DEFAULT NULL, `transparency` smallint(6) DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_actioncomm_resources` (`fk_actioncomm`,`element_type`,`fk_element`), KEY `idx_actioncomm_resources_fk_element` (`fk_element`) -) ENGINE=InnoDB AUTO_INCREMENT=488 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=488 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -475,47 +475,47 @@ DROP TABLE IF EXISTS `llx_adherent`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_adherent` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `civility` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `login` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass_crypted` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `civility` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `firstname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `login` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass_crypted` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_adherent_type` int(11) NOT NULL, - `morphy` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `societe` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `morphy` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `societe` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, - `address` text COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `address` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `state_id` int(11) DEFAULT NULL, `country` int(11) DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `socialnetworks` text COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone_perso` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone_mobile` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `socialnetworks` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone_perso` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone_mobile` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `birth` date DEFAULT NULL, - `photo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `photo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` smallint(6) NOT NULL DEFAULT 0, `public` smallint(6) NOT NULL DEFAULT 0, `datefin` datetime DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datevalid` datetime DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_author` int(11) DEFAULT NULL, `fk_user_mod` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `canvas` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `gender` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `canvas` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `gender` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_adherent_ref` (`ref`,`entity`), UNIQUE KEY `uk_adherent_login` (`login`,`entity`), @@ -523,7 +523,7 @@ CREATE TABLE `llx_adherent` ( KEY `idx_adherent_fk_adherent_type` (`fk_adherent_type`), CONSTRAINT `adherent_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_adherent_adherent_type` FOREIGN KEY (`fk_adherent_type`) REFERENCES `llx_adherent_type` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -547,14 +547,14 @@ CREATE TABLE `llx_adherent_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `aaa` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `sssss` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extradatamember` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `aaa` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `sssss` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extradatamember` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_adherent_options` (`fk_object`), KEY `idx_adherent_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -579,17 +579,17 @@ CREATE TABLE `llx_adherent_type` ( `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `statut` smallint(6) NOT NULL DEFAULT 0, - `libelle` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `subscription` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1', + `libelle` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `subscription` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '1', `amount` double(24,8) DEFAULT NULL, - `vote` varchar(3) COLLATE utf8_unicode_ci NOT NULL DEFAULT '1', - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `mail_valid` text COLLATE utf8_unicode_ci DEFAULT NULL, - `morphy` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `duration` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `vote` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '1', + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mail_valid` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `morphy` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `duration` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_adherent_type_libelle` (`libelle`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -613,11 +613,11 @@ CREATE TABLE `llx_adherent_type_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extradatamembertype` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extradatamembertype` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_adherent_type_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -640,13 +640,13 @@ DROP TABLE IF EXISTS `llx_adherent_type_lang`; CREATE TABLE `llx_adherent_type_lang` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_type` int(11) NOT NULL DEFAULT 0, - `lang` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `email` text COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -659,38 +659,6 @@ INSERT INTO `llx_adherent_type_lang` VALUES (1,2,'en_US','Standard members','',N /*!40000 ALTER TABLE `llx_adherent_type_lang` ENABLE KEYS */; UNLOCK TABLES; --- --- Table structure for table `llx_advtargetemailing` --- - -DROP TABLE IF EXISTS `llx_advtargetemailing`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_advtargetemailing` ( - `rowid` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(200) COLLATE utf8_unicode_ci NOT NULL, - `entity` int(11) NOT NULL DEFAULT 1, - `filtervalue` text COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_user_author` int(11) NOT NULL, - `datec` datetime NOT NULL, - `fk_user_mod` int(11) NOT NULL, - `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `fk_element` int(11) NOT NULL, - `type_element` varchar(180) COLLATE utf8_unicode_ci NOT NULL, - PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_advtargetemailing_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `llx_advtargetemailing` --- - -LOCK TABLES `llx_advtargetemailing` WRITE; -/*!40000 ALTER TABLE `llx_advtargetemailing` DISABLE KEYS */; -/*!40000 ALTER TABLE `llx_advtargetemailing` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Table structure for table `llx_asset` -- @@ -700,30 +668,50 @@ DROP TABLE IF EXISTS `llx_asset`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_asset` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `amount_ht` double(24,8) DEFAULT NULL, - `fk_asset_type` int(11) NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_asset_model` int(11) DEFAULT NULL, + `reversal_amount_ht` double(24,8) DEFAULT NULL, + `acquisition_value_ht` double(24,8) NOT NULL, `fk_soc` int(11) DEFAULT NULL, - `description` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, - `amount_vat` double(24,8) DEFAULT NULL, + `recovered_vat` double(24,8) DEFAULT NULL, + `reversal_date` date DEFAULT NULL, + `date_acquisition` date NOT NULL, + `date_start` date NOT NULL, + `qty` double NOT NULL DEFAULT 1, + `acquisition_type` smallint(6) NOT NULL DEFAULT 0, + `asset_type` smallint(6) NOT NULL DEFAULT 0, + `not_depreciated` int(11) DEFAULT 0, + `disposal_date` date DEFAULT NULL, + `disposal_amount_ht` double(24,8) DEFAULT NULL, + `fk_disposal_type` int(11) DEFAULT NULL, + `disposal_depreciated` int(11) DEFAULT 0, + `disposal_subject_to_vat` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), KEY `idx_asset_rowid` (`rowid`), KEY `idx_asset_ref` (`ref`), KEY `idx_asset_entity` (`entity`), KEY `idx_asset_fk_soc` (`fk_soc`), - KEY `idx_asset_fk_asset_type` (`fk_asset_type`), - CONSTRAINT `fk_asset_asset_type` FOREIGN KEY (`fk_asset_type`) REFERENCES `llx_asset_type` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + KEY `idx_asset_fk_asset_model` (`fk_asset_model`), + KEY `idx_asset_fk_disposal_type` (`fk_disposal_type`), + KEY `fk_asset_user_creat` (`fk_user_creat`), + KEY `fk_asset_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_asset_model` FOREIGN KEY (`fk_asset_model`) REFERENCES `llx_asset_model` (`rowid`), + CONSTRAINT `fk_asset_disposal_type` FOREIGN KEY (`fk_disposal_type`) REFERENCES `llx_c_asset_disposal_type` (`rowid`), + CONSTRAINT `fk_asset_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`), + CONSTRAINT `fk_asset_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -735,6 +723,204 @@ LOCK TABLES `llx_asset` WRITE; /*!40000 ALTER TABLE `llx_asset` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_asset_accountancy_codes_economic` +-- + +DROP TABLE IF EXISTS `llx_asset_accountancy_codes_economic`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_accountancy_codes_economic` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_asset` int(11) DEFAULT NULL, + `fk_asset_model` int(11) DEFAULT NULL, + `asset` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `depreciation_asset` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `depreciation_expense` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value_asset_sold` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `receivable_on_assignment` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `proceeds_from_sales` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `vat_collected` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `vat_deductible` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_user_modif` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_asset_ace_fk_asset` (`fk_asset`), + UNIQUE KEY `uk_asset_ace_fk_asset_model` (`fk_asset_model`), + KEY `idx_asset_ace_rowid` (`rowid`), + KEY `fk_asset_ace_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_ace_asset` FOREIGN KEY (`fk_asset`) REFERENCES `llx_asset` (`rowid`), + CONSTRAINT `fk_asset_ace_asset_model` FOREIGN KEY (`fk_asset_model`) REFERENCES `llx_asset_model` (`rowid`), + CONSTRAINT `fk_asset_ace_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_accountancy_codes_economic` +-- + +LOCK TABLES `llx_asset_accountancy_codes_economic` WRITE; +/*!40000 ALTER TABLE `llx_asset_accountancy_codes_economic` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_accountancy_codes_economic` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_asset_accountancy_codes_fiscal` +-- + +DROP TABLE IF EXISTS `llx_asset_accountancy_codes_fiscal`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_accountancy_codes_fiscal` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_asset` int(11) DEFAULT NULL, + `fk_asset_model` int(11) DEFAULT NULL, + `accelerated_depreciation` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `endowment_accelerated_depreciation` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `provision_accelerated_depreciation` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_user_modif` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_asset_acf_fk_asset` (`fk_asset`), + UNIQUE KEY `uk_asset_acf_fk_asset_model` (`fk_asset_model`), + KEY `idx_asset_acf_rowid` (`rowid`), + KEY `fk_asset_acf_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_acf_asset` FOREIGN KEY (`fk_asset`) REFERENCES `llx_asset` (`rowid`), + CONSTRAINT `fk_asset_acf_asset_model` FOREIGN KEY (`fk_asset_model`) REFERENCES `llx_asset_model` (`rowid`), + CONSTRAINT `fk_asset_acf_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_accountancy_codes_fiscal` +-- + +LOCK TABLES `llx_asset_accountancy_codes_fiscal` WRITE; +/*!40000 ALTER TABLE `llx_asset_accountancy_codes_fiscal` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_accountancy_codes_fiscal` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_asset_depreciation` +-- + +DROP TABLE IF EXISTS `llx_asset_depreciation`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_depreciation` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_asset` int(11) NOT NULL, + `depreciation_mode` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `depreciation_date` datetime NOT NULL, + `depreciation_ht` double(24,8) NOT NULL, + `cumulative_depreciation_ht` double(24,8) NOT NULL, + `accountancy_code_debit` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_credit` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_user_modif` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_asset_depreciation_fk_asset` (`fk_asset`,`depreciation_mode`,`ref`), + KEY `idx_asset_depreciation_rowid` (`rowid`), + KEY `idx_asset_depreciation_fk_asset` (`fk_asset`), + KEY `idx_asset_depreciation_depreciation_mode` (`depreciation_mode`), + KEY `idx_asset_depreciation_ref` (`ref`), + KEY `fk_asset_depreciation_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_depreciation_asset` FOREIGN KEY (`fk_asset`) REFERENCES `llx_asset` (`rowid`), + CONSTRAINT `fk_asset_depreciation_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_depreciation` +-- + +LOCK TABLES `llx_asset_depreciation` WRITE; +/*!40000 ALTER TABLE `llx_asset_depreciation` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_depreciation` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_asset_depreciation_options_economic` +-- + +DROP TABLE IF EXISTS `llx_asset_depreciation_options_economic`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_depreciation_options_economic` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_asset` int(11) DEFAULT NULL, + `fk_asset_model` int(11) DEFAULT NULL, + `depreciation_type` smallint(6) NOT NULL DEFAULT 0, + `accelerated_depreciation_option` int(11) DEFAULT NULL, + `degressive_coefficient` double(24,8) DEFAULT NULL, + `duration` smallint(6) NOT NULL, + `duration_type` smallint(6) NOT NULL DEFAULT 0, + `amount_base_depreciation_ht` double(24,8) DEFAULT NULL, + `amount_base_deductible_ht` double(24,8) DEFAULT NULL, + `total_amount_last_depreciation_ht` double(24,8) DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_user_modif` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_asset_doe_fk_asset` (`fk_asset`), + UNIQUE KEY `uk_asset_doe_fk_asset_model` (`fk_asset_model`), + KEY `idx_asset_doe_rowid` (`rowid`), + KEY `fk_asset_doe_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_doe_asset` FOREIGN KEY (`fk_asset`) REFERENCES `llx_asset` (`rowid`), + CONSTRAINT `fk_asset_doe_asset_model` FOREIGN KEY (`fk_asset_model`) REFERENCES `llx_asset_model` (`rowid`), + CONSTRAINT `fk_asset_doe_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_depreciation_options_economic` +-- + +LOCK TABLES `llx_asset_depreciation_options_economic` WRITE; +/*!40000 ALTER TABLE `llx_asset_depreciation_options_economic` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_depreciation_options_economic` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_asset_depreciation_options_fiscal` +-- + +DROP TABLE IF EXISTS `llx_asset_depreciation_options_fiscal`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_depreciation_options_fiscal` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_asset` int(11) DEFAULT NULL, + `fk_asset_model` int(11) DEFAULT NULL, + `depreciation_type` smallint(6) NOT NULL DEFAULT 0, + `degressive_coefficient` double(24,8) DEFAULT NULL, + `duration` smallint(6) NOT NULL, + `duration_type` smallint(6) NOT NULL DEFAULT 0, + `amount_base_depreciation_ht` double(24,8) DEFAULT NULL, + `amount_base_deductible_ht` double(24,8) DEFAULT NULL, + `total_amount_last_depreciation_ht` double(24,8) DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_user_modif` int(11) DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_asset_dof_fk_asset` (`fk_asset`), + UNIQUE KEY `uk_asset_dof_fk_asset_model` (`fk_asset_model`), + KEY `idx_asset_dof_rowid` (`rowid`), + KEY `fk_asset_dof_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_dof_asset` FOREIGN KEY (`fk_asset`) REFERENCES `llx_asset` (`rowid`), + CONSTRAINT `fk_asset_dof_asset_model` FOREIGN KEY (`fk_asset_model`) REFERENCES `llx_asset_model` (`rowid`), + CONSTRAINT `fk_asset_dof_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_depreciation_options_fiscal` +-- + +LOCK TABLES `llx_asset_depreciation_options_fiscal` WRITE; +/*!40000 ALTER TABLE `llx_asset_depreciation_options_fiscal` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_depreciation_options_fiscal` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_asset_extrafields` -- @@ -746,10 +932,10 @@ CREATE TABLE `llx_asset_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_asset_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -762,33 +948,73 @@ LOCK TABLES `llx_asset_extrafields` WRITE; UNLOCK TABLES; -- --- Table structure for table `llx_asset_type` +-- Table structure for table `llx_asset_model` -- -DROP TABLE IF EXISTS `llx_asset_type`; +DROP TABLE IF EXISTS `llx_asset_model`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; -CREATE TABLE `llx_asset_type` ( +CREATE TABLE `llx_asset_model` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `asset_type` smallint(6) NOT NULL, + `fk_pays` int(11) DEFAULT 0, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `accountancy_code_asset` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_depreciation_asset` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_depreciation_expense` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_user_creat` int(11) NOT NULL, + `fk_user_modif` int(11) DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` smallint(6) NOT NULL, PRIMARY KEY (`rowid`), - UNIQUE KEY `uk_asset_type_label` (`label`,`entity`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + UNIQUE KEY `uk_asset_model` (`entity`,`ref`), + KEY `idx_asset_model_rowid` (`rowid`), + KEY `idx_asset_model_ref` (`ref`), + KEY `idx_asset_model_pays` (`fk_pays`), + KEY `idx_asset_model_entity` (`entity`), + KEY `fk_asset_model_user_creat` (`fk_user_creat`), + KEY `fk_asset_model_user_modif` (`fk_user_modif`), + CONSTRAINT `fk_asset_model_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`), + CONSTRAINT `fk_asset_model_user_modif` FOREIGN KEY (`fk_user_modif`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- --- Dumping data for table `llx_asset_type` +-- Dumping data for table `llx_asset_model` -- -LOCK TABLES `llx_asset_type` WRITE; -/*!40000 ALTER TABLE `llx_asset_type` DISABLE KEYS */; -/*!40000 ALTER TABLE `llx_asset_type` ENABLE KEYS */; +LOCK TABLES `llx_asset_model` WRITE; +/*!40000 ALTER TABLE `llx_asset_model` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_model` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_asset_model_extrafields` +-- + +DROP TABLE IF EXISTS `llx_asset_model_extrafields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_asset_model_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_asset_model_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_asset_model_extrafields` +-- + +LOCK TABLES `llx_asset_model_extrafields` WRITE; +/*!40000 ALTER TABLE `llx_asset_model_extrafields` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_asset_model_extrafields` ENABLE KEYS */; UNLOCK TABLES; -- @@ -802,10 +1028,10 @@ CREATE TABLE `llx_asset_type_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_asset_type_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -831,30 +1057,31 @@ CREATE TABLE `llx_bank` ( `datev` date DEFAULT NULL, `dateo` date DEFAULT NULL, `amount` double(24,8) NOT NULL DEFAULT 0.00000000, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_account` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_rappro` int(11) DEFAULT NULL, - `fk_type` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `num_releve` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `num_chq` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_type` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `num_releve` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `num_chq` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `rappro` tinyint(4) DEFAULT 0, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bordereau` int(11) DEFAULT 0, - `banque` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `emetteur` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `author` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL, - `numero_compte` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `banque` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `emetteur` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `author` varchar(40) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `numero_compte` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `origin_id` int(11) DEFAULT NULL, - `origin_type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `origin_type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `amount_main_currency` double(24,8) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_bank_datev` (`datev`), KEY `idx_bank_dateo` (`dateo`), KEY `idx_bank_fk_account` (`fk_account`), KEY `idx_bank_rappro` (`rappro`), KEY `idx_bank_num_releve` (`num_releve`) -) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -863,7 +1090,7 @@ CREATE TABLE `llx_bank` ( LOCK TABLES `llx_bank` WRITE; /*!40000 ALTER TABLE `llx_bank` DISABLE KEYS */; -INSERT INTO `llx_bank` VALUES (1,'2012-07-08 23:56:14','2021-07-11 17:49:28','2021-07-08','2021-07-08',2000.00000000,'(Initial balance)',1,NULL,1,'SOLD','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'2012-07-09 00:00:24','2021-07-11 17:49:28','2021-07-09','2021-07-09',500.00000000,'(Initial balance)',2,NULL,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,'2012-07-10 13:33:42','2021-07-11 17:49:28','2021-07-10','2021-07-10',0.00000000,'(Solde initial)',3,NULL,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,'2013-07-18 20:50:24','2021-07-11 17:49:28','2021-07-08','2021-07-08',20.00000000,'(CustomerInvoicePayment)',1,1,NULL,'CB','201107',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,'2013-07-18 20:50:47','2021-07-11 17:49:28','2021-07-08','2021-07-08',10.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(8,'2013-08-01 03:34:11','2022-02-07 13:37:54','2021-08-15','2021-08-01',5.63000000,'(CustomerInvoicePayment)',1,1,1,'CB','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,'2013-08-05 23:11:37','2022-02-07 13:37:54','2021-08-12','2021-08-05',-10.00000000,'(SocialContributionPayment)',1,1,1,'VIR','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,'2013-08-06 20:33:54','2022-02-07 13:37:54','2021-08-06','2021-08-06',5.98000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,'2013-08-08 02:53:40','2022-02-07 13:37:54','2021-08-08','2021-08-08',26.10000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(15,'2013-08-08 02:55:58','2022-02-07 13:37:54','2021-08-08','2021-08-08',26.96000000,'(CustomerInvoicePayment)',1,1,1,'TIP','201211',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'2014-12-09 15:28:44','2022-02-07 13:37:54','2021-12-09','2021-12-09',2.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'2014-12-09 15:28:53','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,'2014-12-09 17:35:55','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'2014-12-09 17:37:02','2022-02-07 13:37:54','2021-12-09','2021-12-09',2.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(20,'2014-12-09 18:35:07','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(21,'2014-12-12 18:54:33','2022-02-07 13:37:54','2021-12-12','2021-12-12',1.00000000,'(CustomerInvoicePayment)',1,1,1,'TIP','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(22,'2015-03-06 16:48:16','2021-04-15 10:22:31','2021-03-06','2021-03-06',20.00000000,'(SubscriptionPayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(23,'2015-03-20 14:30:11','2021-04-15 10:22:31','2021-03-20','2021-03-20',10.00000000,'(SubscriptionPayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(24,'2016-03-02 19:57:58','2021-07-11 17:49:28','2021-07-09','2021-07-09',605.00000000,'(CustomerInvoicePayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'111',NULL,NULL,NULL,NULL,NULL),(26,'2016-03-02 20:01:39','2021-04-15 10:22:31','2021-03-19','2021-03-19',500.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(27,'2016-03-02 20:02:06','2021-04-15 10:22:31','2021-03-21','2021-03-21',400.00000000,'(CustomerInvoicePayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'ABC and Co',NULL,NULL,NULL,NULL,NULL),(28,'2016-03-03 19:22:32','2022-02-07 13:37:54','2021-10-03','2021-10-03',-400.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(29,'2016-03-03 19:23:16','2021-04-15 10:22:31','2021-03-10','2021-03-10',-300.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(30,'2018-01-22 18:56:34','2022-02-07 13:37:54','2022-01-22','2022-01-22',-900.00000000,'(SupplierInvoicePayment)',1,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(31,'2018-07-30 22:42:14','2022-02-07 13:37:54','2021-07-30','2021-07-30',0.00000000,'(Initial balance)',4,0,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(32,'2017-02-01 19:02:44','2022-02-07 13:37:54','2022-02-01','2022-02-01',-200.00000000,'(SupplierInvoicePayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(33,'2017-02-06 08:10:24','2021-04-15 10:22:31','2021-03-22','2021-03-22',150.00000000,'(CustomerInvoicePayment)',1,12,NULL,'CHQ',NULL,NULL,0,NULL,2,NULL,'Magic Food Store',NULL,NULL,NULL,NULL,NULL),(34,'2017-02-06 08:10:50','2021-04-15 10:22:31','2021-03-25','2021-03-25',140.00000000,'(CustomerInvoicePayment)',1,12,NULL,'PRE',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(36,'2017-02-16 02:22:09','2021-04-15 10:22:31','2021-02-16','2021-02-16',-1.00000000,'(ExpenseReportPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(37,'2017-02-21 16:07:43','2021-04-15 10:22:31','2021-02-21','2021-02-21',50.00000000,'(WithdrawalPayment)',1,12,NULL,'PRE',NULL,'T170201',0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(38,'2017-09-06 20:08:36','2022-02-07 13:37:54','2021-09-06','2021-09-06',10.00000000,'(DonationPayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(39,'2018-03-16 13:59:31','2021-04-15 10:22:31','2021-03-16','2021-03-16',10.00000000,'(CustomerInvoicePayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Indian SAS',NULL,'',NULL,NULL,NULL),(41,'2019-10-04 10:28:14','2022-02-07 13:37:54','2022-01-19','2022-01-19',5.63000000,'(CustomerInvoicePayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(42,'2019-10-08 13:18:50','2022-02-07 13:37:54','2021-10-08','2021-10-08',-1000.00000000,'Salary payment',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(43,'2019-12-26 01:48:30','2022-02-07 13:37:54','2021-12-25','2021-12-25',-5.00000000,'(SocialContributionPayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(44,'2019-12-26 01:48:46','2022-02-07 13:37:54','2021-12-25','2021-12-25',-5.00000000,'(SocialContributionPayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(47,'2020-01-01 20:28:49','2022-02-07 13:37:54','2022-01-01','2022-01-01',304.69000000,'(SupplierInvoicePayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(48,'2020-01-06 20:52:28','2022-02-07 13:37:54','2022-01-06','2022-01-06',10.00000000,'Patient payment',1,12,NULL,'CB',NULL,NULL,0,NULL,0,NULL,'Patient',NULL,'',NULL,NULL,NULL),(49,'2020-01-10 04:42:47','2022-02-07 13:37:54','2022-01-10','2022-01-10',-10.00000000,'Miscellaneous payment',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL),(50,'2020-01-16 02:36:48','2022-02-07 13:37:54','2022-01-16','2022-01-16',20.50000000,'(CustomerInvoicePayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'Magic Food Store',NULL,'',NULL,NULL,NULL),(51,'2020-01-21 01:02:14','2022-02-07 13:37:54','2021-07-18','2021-07-18',50.00000000,'Subscription 2013',4,12,NULL,'CB',NULL,'12345',0,NULL,0,'Bank CBN',NULL,NULL,'',NULL,NULL,NULL),(52,'2020-01-21 10:22:37','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'Subscription 2017',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'smith smith',NULL,'',NULL,NULL,NULL),(53,'2020-01-21 10:23:17','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Pierre Curie',NULL,'',NULL,NULL,NULL),(54,'2020-01-21 10:23:28','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Pierre Curie',NULL,'',NULL,NULL,NULL),(55,'2020-01-21 10:23:49','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CB',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL); +INSERT INTO `llx_bank` VALUES (1,'2012-07-08 23:56:14','2021-07-11 17:49:28','2021-07-08','2021-07-08',2000.00000000,'(Initial balance)',1,NULL,1,'SOLD','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'2012-07-09 00:00:24','2021-07-11 17:49:28','2021-07-09','2021-07-09',500.00000000,'(Initial balance)',2,NULL,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,'2012-07-10 13:33:42','2021-07-11 17:49:28','2021-07-10','2021-07-10',0.00000000,'(Solde initial)',3,NULL,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,'2013-07-18 20:50:24','2021-07-11 17:49:28','2021-07-08','2021-07-08',20.00000000,'(CustomerInvoicePayment)',1,1,NULL,'CB','201107',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,'2013-07-18 20:50:47','2021-07-11 17:49:28','2021-07-08','2021-07-08',10.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(8,'2013-08-01 03:34:11','2022-02-07 13:37:54','2021-08-15','2021-08-01',5.63000000,'(CustomerInvoicePayment)',1,1,1,'CB','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,'2013-08-05 23:11:37','2022-02-07 13:37:54','2021-08-12','2021-08-05',-10.00000000,'(SocialContributionPayment)',1,1,1,'VIR','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,'2013-08-06 20:33:54','2022-02-07 13:37:54','2021-08-06','2021-08-06',5.98000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,'2013-08-08 02:53:40','2022-02-07 13:37:54','2021-08-08','2021-08-08',26.10000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(15,'2013-08-08 02:55:58','2022-02-07 13:37:54','2021-08-08','2021-08-08',26.96000000,'(CustomerInvoicePayment)',1,1,1,'TIP','201211',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'2014-12-09 15:28:44','2022-02-07 13:37:54','2021-12-09','2021-12-09',2.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'2014-12-09 15:28:53','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,'2014-12-09 17:35:55','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'2014-12-09 17:37:02','2022-02-07 13:37:54','2021-12-09','2021-12-09',2.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(20,'2014-12-09 18:35:07','2022-02-07 13:37:54','2021-12-09','2021-12-09',-2.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(21,'2014-12-12 18:54:33','2022-02-07 13:37:54','2021-12-12','2021-12-12',1.00000000,'(CustomerInvoicePayment)',1,1,1,'TIP','201210',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(22,'2015-03-06 16:48:16','2022-07-04 01:11:35','2022-03-06','2022-03-06',20.00000000,'(SubscriptionPayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(23,'2015-03-20 14:30:11','2022-07-04 01:11:35','2022-03-20','2022-03-20',10.00000000,'(SubscriptionPayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(24,'2016-03-02 19:57:58','2021-07-11 17:49:28','2021-07-09','2021-07-09',605.00000000,'(CustomerInvoicePayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'111',NULL,NULL,NULL,NULL,NULL,NULL),(26,'2016-03-02 20:01:39','2022-07-04 01:11:35','2022-03-19','2022-03-19',500.00000000,'(CustomerInvoicePayment)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(27,'2016-03-02 20:02:06','2022-07-04 01:11:35','2022-03-21','2022-03-21',400.00000000,'(CustomerInvoicePayment)',1,1,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'ABC and Co',NULL,NULL,NULL,NULL,NULL,NULL),(28,'2016-03-03 19:22:32','2022-02-07 13:37:54','2021-10-03','2021-10-03',-400.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(29,'2016-03-03 19:23:16','2022-07-04 01:11:35','2022-03-10','2022-03-10',-300.00000000,'(CustomerInvoicePaymentBack)',3,1,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(30,'2018-01-22 18:56:34','2022-02-07 13:37:54','2022-01-22','2022-01-22',-900.00000000,'(SupplierInvoicePayment)',1,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(31,'2018-07-30 22:42:14','2022-02-07 13:37:54','2021-07-30','2021-07-30',0.00000000,'(Initial balance)',4,0,NULL,'SOLD',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(32,'2017-02-01 19:02:44','2022-02-07 13:37:54','2022-02-01','2022-02-01',-200.00000000,'(SupplierInvoicePayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(33,'2017-02-06 08:10:24','2022-07-04 01:11:35','2022-03-22','2022-03-22',150.00000000,'(CustomerInvoicePayment)',1,12,NULL,'CHQ',NULL,NULL,0,NULL,2,NULL,'Magic Food Store',NULL,NULL,NULL,NULL,NULL,NULL),(34,'2017-02-06 08:10:50','2022-07-04 01:11:35','2022-03-25','2022-03-25',140.00000000,'(CustomerInvoicePayment)',1,12,NULL,'PRE',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(36,'2017-02-16 02:22:09','2022-07-04 01:11:35','2022-02-16','2022-02-16',-1.00000000,'(ExpenseReportPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(37,'2017-02-21 16:07:43','2022-07-04 01:11:35','2022-02-21','2022-02-21',50.00000000,'(WithdrawalPayment)',1,12,NULL,'PRE',NULL,'T170201',0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(38,'2017-09-06 20:08:36','2022-02-07 13:37:54','2021-09-06','2021-09-06',10.00000000,'(DonationPayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(39,'2018-03-16 13:59:31','2022-07-04 01:11:35','2022-03-16','2022-03-16',10.00000000,'(CustomerInvoicePayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Indian SAS',NULL,'',NULL,NULL,NULL,NULL),(41,'2019-10-04 10:28:14','2022-02-07 13:37:54','2022-01-19','2022-01-19',5.63000000,'(CustomerInvoicePayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(42,'2019-10-08 13:18:50','2022-02-07 13:37:54','2021-10-08','2021-10-08',-1000.00000000,'Salary payment',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(43,'2019-12-26 01:48:30','2022-02-07 13:37:54','2021-12-25','2021-12-25',-5.00000000,'(SocialContributionPayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(44,'2019-12-26 01:48:46','2022-02-07 13:37:54','2021-12-25','2021-12-25',-5.00000000,'(SocialContributionPayment)',3,12,NULL,'LIQ',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(47,'2020-01-01 20:28:49','2022-02-07 13:37:54','2022-01-01','2022-01-01',304.69000000,'(SupplierInvoicePayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(48,'2020-01-06 20:52:28','2022-02-07 13:37:54','2022-01-06','2022-01-06',10.00000000,'Patient payment',1,12,NULL,'CB',NULL,NULL,0,NULL,0,NULL,'Patient',NULL,'',NULL,NULL,NULL,NULL),(49,'2020-01-10 04:42:47','2022-02-07 13:37:54','2022-01-10','2022-01-10',-10.00000000,'Miscellaneous payment',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL),(50,'2020-01-16 02:36:48','2022-02-07 13:37:54','2022-01-16','2022-01-16',20.50000000,'(CustomerInvoicePayment)',4,12,NULL,'VIR',NULL,NULL,0,NULL,0,NULL,'Magic Food Store',NULL,'',NULL,NULL,NULL,NULL),(51,'2020-01-21 01:02:14','2022-02-07 13:37:54','2021-07-18','2021-07-18',50.00000000,'Subscription 2013',4,12,NULL,'CB',NULL,'12345',0,NULL,0,'Bank CBN',NULL,NULL,'',NULL,NULL,NULL,NULL),(52,'2020-01-21 10:22:37','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'Subscription 2017',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'smith smith',NULL,'',NULL,NULL,NULL,NULL),(53,'2020-01-21 10:23:17','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Pierre Curie',NULL,'',NULL,NULL,NULL,NULL),(54,'2020-01-21 10:23:28','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CHQ',NULL,NULL,0,NULL,0,NULL,'Pierre Curie',NULL,'',NULL,NULL,NULL,NULL),(55,'2020-01-21 10:23:49','2022-02-07 13:37:54','2022-01-21','2022-01-21',50.00000000,'(SubscriptionPayment)',4,12,NULL,'CB',NULL,NULL,0,NULL,0,NULL,NULL,NULL,'',NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_bank` ENABLE KEYS */; UNLOCK TABLES; @@ -878,47 +1105,48 @@ CREATE TABLE `llx_bank_account` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `bank` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_guichet` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_rib` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `bic` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL, - `iban_prefix` varchar(34) COLLATE utf8_unicode_ci DEFAULT NULL, - `country_iban` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_iban` varchar(2) COLLATE utf8_unicode_ci DEFAULT NULL, - `domiciliation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `bank` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_guichet` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_rib` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bic` varchar(11) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `iban_prefix` varchar(34) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `country_iban` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_iban` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `domiciliation` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pti_in_ctti` smallint(6) DEFAULT 0, `state_id` int(11) DEFAULT NULL, `fk_pays` int(11) NOT NULL, - `proprio` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `owner_address` text COLLATE utf8_unicode_ci DEFAULT NULL, + `proprio` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `owner_address` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `courant` smallint(6) NOT NULL DEFAULT 0, `clos` smallint(6) NOT NULL DEFAULT 0, `rappro` smallint(6) DEFAULT 1, - `url` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `account_number` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_journal` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `currency_code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `url` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `account_number` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_journal` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `currency_code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `min_allowed` int(11) DEFAULT 0, `min_desired` int(11) DEFAULT 0, - `comment` text COLLATE utf8_unicode_ci DEFAULT NULL, + `comment` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_accountancy_journal` int(11) DEFAULT NULL, - `ics` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `ics_transfer` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `ics` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ics_transfer` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_bank_account_label` (`label`,`entity`), KEY `idx_fk_accountancy_journal` (`fk_accountancy_journal`), CONSTRAINT `fk_bank_account_accountancy_journal` FOREIGN KEY (`fk_accountancy_journal`) REFERENCES `llx_accounting_journal` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -927,7 +1155,7 @@ CREATE TABLE `llx_bank_account` ( LOCK TABLES `llx_bank_account` WRITE; /*!40000 ALTER TABLE `llx_bank_account` DISABLE KEYS */; -INSERT INTO `llx_bank_account` VALUES (1,'2012-07-08 23:56:14','2020-01-10 00:44:44','SWIBAC','Swiss bank account',1,'Switz Gold Bank','','','123456789','','','NL39RABO0314043352',NULL,NULL,'21 jum street',NULL,6,'Mac Golder','11 big road,\r\nZurich',1,0,1,NULL,'502','','EUR',1500,1500,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(2,'2012-07-09 00:00:24','2020-01-10 00:44:53','SWIBAC2','Swiss bank account old',1,'Switz Silver Bank','','','','','','NL07SNSB0908534915',NULL,NULL,'Road bankrupt\r\nZurich',NULL,6,'','',1,1,1,NULL,'503','','EUR',200,400,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(3,'2012-07-10 13:33:42','2020-01-10 00:44:32','ACCOUNTCASH','Account for cash',1,'','','','','','','',NULL,NULL,'',3,1,'','',2,0,1,NULL,'501','OD','EUR',0,0,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(4,'2018-07-30 18:42:14','2021-04-15 13:27:05','LUXBAC','Luxemburg Bank Account',1,'Lux Platinuium Bank','','','','','','NL46INGB0687674581',NULL,NULL,'',NULL,140,'','',1,0,1,NULL,'50','','EUR',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,3,'',''); +INSERT INTO `llx_bank_account` VALUES (1,'2012-07-08 23:56:14','2020-01-10 00:44:44','SWIBAC','Swiss bank account',1,'Switz Gold Bank','','','123456789','','','NL39RABO0314043352',NULL,NULL,'21 jum street',0,NULL,6,'Mac Golder','11 big road,\r\nZurich',1,0,1,NULL,'502','','EUR',1500,1500,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(2,'2012-07-09 00:00:24','2020-01-10 00:44:53','SWIBAC2','Swiss bank account old',1,'Switz Silver Bank','','','','','','NL07SNSB0908534915',NULL,NULL,'Road bankrupt\r\nZurich',0,NULL,6,'','',1,1,1,NULL,'503','','EUR',200,400,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(3,'2012-07-10 13:33:42','2020-01-10 00:44:32','ACCOUNTCASH','Account for cash',1,'','','','','','','',NULL,NULL,'',0,3,1,'','',2,0,1,NULL,'501','OD','EUR',0,0,'',NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,NULL),(4,'2018-07-30 18:42:14','2021-04-15 13:27:05','LUXBAC','Luxemburg Bank Account',1,'Lux Platinuium Bank','','','','','','NL46INGB0687674581',NULL,NULL,'',0,NULL,140,'','',1,0,1,NULL,'50','','EUR',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,3,'',''); /*!40000 ALTER TABLE `llx_bank_account` ENABLE KEYS */; UNLOCK TABLES; @@ -942,10 +1170,10 @@ CREATE TABLE `llx_bank_account_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_bank_account_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -966,10 +1194,10 @@ DROP TABLE IF EXISTS `llx_bank_categ`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_bank_categ` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -993,7 +1221,7 @@ CREATE TABLE `llx_bank_class` ( `lineid` int(11) NOT NULL, `fk_categ` int(11) NOT NULL, UNIQUE KEY `uk_bank_class_lineid` (`lineid`,`fk_categ`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1016,12 +1244,12 @@ CREATE TABLE `llx_bank_url` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_bank` int(11) DEFAULT NULL, `url_id` int(11) DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` varchar(24) COLLATE utf8_unicode_ci NOT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type` varchar(24) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_bank_url` (`fk_bank`,`url_id`,`type`) -) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=99 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1044,21 +1272,21 @@ DROP TABLE IF EXISTS `llx_blockedlog`; CREATE TABLE `llx_blockedlog` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `action` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `action` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `amounts` double(24,8) DEFAULT NULL, - `signature` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `signature_line` varchar(100) COLLATE utf8_unicode_ci NOT NULL, - `element` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `signature` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `signature_line` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, + `element` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_object` int(11) DEFAULT NULL, - `ref_object` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_object` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_object` datetime DEFAULT NULL, - `object_data` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `object_data` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `certified` int(11) DEFAULT NULL, `date_creation` datetime DEFAULT NULL, - `user_fullname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `object_version` varchar(32) COLLATE utf8_unicode_ci DEFAULT '', + `user_fullname` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `object_version` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT '', PRIMARY KEY (`rowid`), KEY `signature` (`signature`), KEY `fk_object_element` (`fk_object`,`element`), @@ -1066,7 +1294,7 @@ CREATE TABLE `llx_blockedlog` ( KEY `fk_user` (`fk_user`), KEY `entity_action` (`entity`,`action`), KEY `entity_action_certified` (`entity`,`action`,`certified`) -) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1088,12 +1316,12 @@ DROP TABLE IF EXISTS `llx_blockedlog_authority`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_blockedlog_authority` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `blockchain` longtext COLLATE utf8_unicode_ci NOT NULL, - `signature` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `blockchain` longtext COLLATE utf8mb3_unicode_ci NOT NULL, + `signature` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), KEY `signature` (`signature`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1115,11 +1343,11 @@ DROP TABLE IF EXISTS `llx_bom_bom`; CREATE TABLE `llx_bom_bom` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, `qty` double(24,8) DEFAULT NULL, `efficiency` double(8,4) DEFAULT 1.0000, @@ -1129,11 +1357,11 @@ CREATE TABLE `llx_bom_bom` ( `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, `duration` double(24,8) DEFAULT NULL, `fk_warehouse` int(11) DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `bomtype` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_bom_bom_ref` (`ref`,`entity`), @@ -1143,7 +1371,7 @@ CREATE TABLE `llx_bom_bom` ( KEY `idx_bom_bom_status` (`status`), KEY `idx_bom_bom_fk_product` (`fk_product`), CONSTRAINT `llx_bom_bom_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1167,10 +1395,10 @@ CREATE TABLE `llx_bom_bom_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_bom_bom_extrafields_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1194,8 +1422,8 @@ CREATE TABLE `llx_bom_bomline` ( `fk_bom` int(11) NOT NULL, `fk_product` int(11) NOT NULL, `fk_bom_child` int(11) DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double(24,8) NOT NULL, `efficiency` double(8,4) NOT NULL DEFAULT 1.0000, `position` int(11) NOT NULL, @@ -1206,7 +1434,7 @@ CREATE TABLE `llx_bom_bomline` ( KEY `idx_bom_bomline_fk_product` (`fk_product`), KEY `idx_bom_bomline_fk_bom` (`fk_bom`), CONSTRAINT `llx_bom_bomline_fk_bom` FOREIGN KEY (`fk_bom`) REFERENCES `llx_bom_bom` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1230,9 +1458,9 @@ CREATE TABLE `llx_bom_bomline_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1255,15 +1483,15 @@ CREATE TABLE `llx_bookmark` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_user` int(11) NOT NULL, `dateb` datetime DEFAULT NULL, - `url` text COLLATE utf8_unicode_ci DEFAULT NULL, - `target` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `title` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `favicon` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, + `url` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `target` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `title` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `favicon` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT 0, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_bookmark_title` (`fk_user`,`entity`,`title`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1287,19 +1515,19 @@ CREATE TABLE `llx_bordereau_cheque` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `datec` datetime NOT NULL, `date_bordereau` date DEFAULT NULL, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `amount` double(24,8) NOT NULL, `nbcheque` smallint(6) NOT NULL, `fk_bank_account` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` smallint(6) NOT NULL DEFAULT 0, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), UNIQUE KEY `uk_bordereau_cheque` (`ref`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1324,16 +1552,16 @@ CREATE TABLE `llx_boxes` ( `entity` int(11) NOT NULL DEFAULT 1, `box_id` int(11) NOT NULL, `position` smallint(6) NOT NULL, - `box_order` varchar(3) COLLATE utf8_unicode_ci NOT NULL, + `box_order` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_user` int(11) NOT NULL DEFAULT 0, `maxline` int(11) DEFAULT NULL, - `params` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `params` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_boxes` (`entity`,`box_id`,`position`,`fk_user`), KEY `idx_boxes_boxid` (`box_id`), KEY `idx_boxes_fk_user` (`fk_user`), CONSTRAINT `fk_boxes_box_id` FOREIGN KEY (`box_id`) REFERENCES `llx_boxes_def` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=1459 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1468 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1342,7 +1570,7 @@ CREATE TABLE `llx_boxes` ( LOCK TABLES `llx_boxes` WRITE; /*!40000 ALTER TABLE `llx_boxes` DISABLE KEYS */; -INSERT INTO `llx_boxes` VALUES (253,2,323,0,'0',0,NULL,NULL),(304,2,324,0,'0',0,NULL,NULL),(305,2,325,0,'0',0,NULL,NULL),(306,2,326,0,'0',0,NULL,NULL),(307,2,327,0,'0',0,NULL,NULL),(308,2,328,0,'0',0,NULL,NULL),(309,2,329,0,'0',0,NULL,NULL),(310,2,330,0,'0',0,NULL,NULL),(311,2,331,0,'0',0,NULL,NULL),(312,2,332,0,'0',0,NULL,NULL),(313,2,333,0,'0',0,NULL,NULL),(314,1,347,0,'A27',0,NULL,NULL),(315,1,348,0,'B20',0,NULL,NULL),(316,1,349,0,'B10',0,NULL,NULL),(317,1,350,0,'B18',0,NULL,NULL),(344,1,374,0,'B08',0,NULL,NULL),(347,1,377,0,'B16',0,NULL,NULL),(348,1,378,0,'B06',0,NULL,NULL),(358,1,388,0,'B38',0,NULL,NULL),(359,1,389,0,'A13',0,NULL,NULL),(360,1,390,0,'B36',0,NULL,NULL),(362,1,392,0,'A35',0,NULL,NULL),(363,1,393,0,'A11',0,NULL,NULL),(366,1,396,0,'B12',0,NULL,NULL),(387,1,403,0,'B22',0,NULL,NULL),(392,1,409,0,'A15',0,NULL,NULL),(393,1,410,0,'A33',0,NULL,NULL),(394,1,411,0,'A25',0,NULL,NULL),(395,1,412,0,'B30',0,NULL,NULL),(396,1,413,0,'A23',0,NULL,NULL),(397,1,414,0,'B28',0,NULL,NULL),(398,1,415,0,'A21',0,NULL,NULL),(399,1,416,0,'B26',0,NULL,NULL),(400,1,417,0,'A19',0,NULL,NULL),(401,1,418,0,'B24',0,NULL,NULL),(501,1,419,0,'A17',0,NULL,NULL),(1019,1,392,0,'A01',2,NULL,NULL),(1021,1,412,0,'A03',2,NULL,NULL),(1022,1,347,0,'A04',2,NULL,NULL),(1023,1,393,0,'A05',2,NULL,NULL),(1025,1,389,0,'A07',2,NULL,NULL),(1026,1,416,0,'A08',2,NULL,NULL),(1027,1,396,0,'B01',2,NULL,NULL),(1028,1,377,0,'B02',2,NULL,NULL),(1031,1,419,0,'B05',2,NULL,NULL),(1036,1,424,0,'A29',0,NULL,NULL),(1037,1,425,0,'B32',0,NULL,NULL),(1038,1,426,0,'B34',0,NULL,NULL),(1150,1,430,0,'A37',0,NULL,NULL),(1151,1,431,0,'A05',0,NULL,NULL),(1152,1,429,0,'A01',1,NULL,NULL),(1153,1,429,0,'B01',2,NULL,NULL),(1154,1,429,0,'A01',11,NULL,NULL),(1156,1,429,0,'A07',0,NULL,NULL),(1183,1,433,0,'A09',0,NULL,NULL),(1184,1,434,0,'B14',0,NULL,NULL),(1235,1,404,0,'B01',1,NULL,NULL),(1236,1,404,0,'B01',2,NULL,NULL),(1237,1,404,0,'B01',11,NULL,NULL),(1239,1,404,0,'A31',0,NULL,NULL),(1407,1,412,0,'A01',12,NULL,NULL),(1408,1,378,0,'A02',12,NULL,NULL),(1409,1,404,0,'A03',12,NULL,NULL),(1410,1,377,0,'A04',12,NULL,NULL),(1411,1,392,0,'B01',12,NULL,NULL),(1412,1,429,0,'B02',12,NULL,NULL),(1414,1,414,0,'B04',12,NULL,NULL),(1415,1,413,0,'B05',12,NULL,NULL),(1416,1,426,0,'B06',12,NULL,NULL),(1418,1,445,0,'B02',0,NULL,NULL),(1426,1,450,2,'A01',0,NULL,NULL),(1427,1,451,2,'B01',0,NULL,NULL),(1428,1,452,2,'A01',0,NULL,NULL),(1429,1,453,2,'B01',0,NULL,NULL),(1430,1,454,11,'A01',0,NULL,NULL),(1431,1,455,11,'B01',0,NULL,NULL),(1432,1,456,11,'A01',0,NULL,NULL),(1433,1,457,11,'B01',0,NULL,NULL),(1434,1,461,11,'A01',0,NULL,NULL),(1435,1,462,11,'B01',0,NULL,NULL),(1436,1,448,0,'A01',1,NULL,NULL),(1437,1,448,0,'B01',2,NULL,NULL),(1438,1,448,0,'A01',11,NULL,NULL),(1439,1,448,0,'A01',12,NULL,NULL),(1440,1,448,0,'A01',0,NULL,NULL),(1441,1,449,0,'B01',1,NULL,NULL),(1442,1,449,0,'A01',2,NULL,NULL),(1443,1,449,0,'B01',11,NULL,NULL),(1444,1,449,0,'A01',12,NULL,NULL),(1445,1,449,0,'B01',0,NULL,NULL),(1449,1,452,2,'A01',12,NULL,NULL),(1450,1,451,2,'B01',12,NULL,NULL),(1451,1,450,2,'B02',12,NULL,NULL),(1452,1,453,2,'B03',12,NULL,NULL),(1456,1,474,0,'0',0,NULL,NULL),(1457,1,475,0,'0',0,NULL,NULL),(1458,1,476,0,'0',0,NULL,NULL); +INSERT INTO `llx_boxes` VALUES (253,2,323,0,'0',0,NULL,NULL),(304,2,324,0,'0',0,NULL,NULL),(305,2,325,0,'0',0,NULL,NULL),(306,2,326,0,'0',0,NULL,NULL),(307,2,327,0,'0',0,NULL,NULL),(308,2,328,0,'0',0,NULL,NULL),(309,2,329,0,'0',0,NULL,NULL),(310,2,330,0,'0',0,NULL,NULL),(311,2,331,0,'0',0,NULL,NULL),(312,2,332,0,'0',0,NULL,NULL),(313,2,333,0,'0',0,NULL,NULL),(314,1,347,0,'A27',0,NULL,NULL),(315,1,348,0,'B20',0,NULL,NULL),(316,1,349,0,'B10',0,NULL,NULL),(317,1,350,0,'B18',0,NULL,NULL),(344,1,374,0,'B08',0,NULL,NULL),(347,1,377,0,'B16',0,NULL,NULL),(348,1,378,0,'B06',0,NULL,NULL),(358,1,388,0,'B38',0,NULL,NULL),(359,1,389,0,'A13',0,NULL,NULL),(360,1,390,0,'B36',0,NULL,NULL),(362,1,392,0,'A35',0,NULL,NULL),(363,1,393,0,'A11',0,NULL,NULL),(366,1,396,0,'B12',0,NULL,NULL),(387,1,403,0,'B22',0,NULL,NULL),(392,1,409,0,'A15',0,NULL,NULL),(393,1,410,0,'A33',0,NULL,NULL),(394,1,411,0,'A25',0,NULL,NULL),(395,1,412,0,'B30',0,NULL,NULL),(396,1,413,0,'A23',0,NULL,NULL),(397,1,414,0,'B28',0,NULL,NULL),(398,1,415,0,'A21',0,NULL,NULL),(399,1,416,0,'B26',0,NULL,NULL),(400,1,417,0,'A19',0,NULL,NULL),(401,1,418,0,'B24',0,NULL,NULL),(501,1,419,0,'A17',0,NULL,NULL),(1019,1,392,0,'A01',2,NULL,NULL),(1021,1,412,0,'A03',2,NULL,NULL),(1022,1,347,0,'A04',2,NULL,NULL),(1023,1,393,0,'A05',2,NULL,NULL),(1025,1,389,0,'A07',2,NULL,NULL),(1026,1,416,0,'A08',2,NULL,NULL),(1027,1,396,0,'B01',2,NULL,NULL),(1028,1,377,0,'B02',2,NULL,NULL),(1031,1,419,0,'B05',2,NULL,NULL),(1036,1,424,0,'A29',0,NULL,NULL),(1037,1,425,0,'B32',0,NULL,NULL),(1038,1,426,0,'B34',0,NULL,NULL),(1150,1,430,0,'A37',0,NULL,NULL),(1152,1,429,0,'A01',1,NULL,NULL),(1153,1,429,0,'B01',2,NULL,NULL),(1154,1,429,0,'A01',11,NULL,NULL),(1156,1,429,0,'A07',0,NULL,NULL),(1183,1,433,0,'A09',0,NULL,NULL),(1235,1,404,0,'B01',1,NULL,NULL),(1236,1,404,0,'B01',2,NULL,NULL),(1237,1,404,0,'B01',11,NULL,NULL),(1239,1,404,0,'A31',0,NULL,NULL),(1407,1,412,0,'A01',12,NULL,NULL),(1408,1,378,0,'A02',12,NULL,NULL),(1409,1,404,0,'A03',12,NULL,NULL),(1410,1,377,0,'A04',12,NULL,NULL),(1411,1,392,0,'B01',12,NULL,NULL),(1412,1,429,0,'B02',12,NULL,NULL),(1414,1,414,0,'B04',12,NULL,NULL),(1415,1,413,0,'B05',12,NULL,NULL),(1416,1,426,0,'B06',12,NULL,NULL),(1418,1,445,0,'B02',0,NULL,NULL),(1426,1,450,2,'A01',0,NULL,NULL),(1427,1,451,2,'B01',0,NULL,NULL),(1428,1,452,2,'A01',0,NULL,NULL),(1429,1,453,2,'B01',0,NULL,NULL),(1430,1,454,11,'A01',0,NULL,NULL),(1431,1,455,11,'B01',0,NULL,NULL),(1432,1,456,11,'A01',0,NULL,NULL),(1433,1,457,11,'B01',0,NULL,NULL),(1434,1,461,11,'A01',0,NULL,NULL),(1435,1,462,11,'B01',0,NULL,NULL),(1436,1,448,0,'A01',1,NULL,NULL),(1437,1,448,0,'B01',2,NULL,NULL),(1438,1,448,0,'A01',11,NULL,NULL),(1439,1,448,0,'A01',12,NULL,NULL),(1440,1,448,0,'A01',0,NULL,NULL),(1441,1,449,0,'B01',1,NULL,NULL),(1442,1,449,0,'A01',2,NULL,NULL),(1443,1,449,0,'B01',11,NULL,NULL),(1444,1,449,0,'A01',12,NULL,NULL),(1445,1,449,0,'B01',0,NULL,NULL),(1449,1,452,2,'A01',12,NULL,NULL),(1450,1,451,2,'B01',12,NULL,NULL),(1451,1,450,2,'B02',12,NULL,NULL),(1452,1,453,2,'B03',12,NULL,NULL),(1465,1,483,0,'0',0,NULL,NULL),(1466,1,484,0,'0',0,NULL,NULL),(1467,1,485,0,'0',0,NULL,NULL); /*!40000 ALTER TABLE `llx_boxes` ENABLE KEYS */; UNLOCK TABLES; @@ -1355,13 +1583,14 @@ DROP TABLE IF EXISTS `llx_boxes_def`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_boxes_def` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `file` varchar(200) COLLATE utf8_unicode_ci NOT NULL, + `file` varchar(200) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `note` varchar(130) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` varchar(130) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_user` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_boxes_def` (`file`,`entity`,`note`) -) ENGINE=InnoDB AUTO_INCREMENT=477 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=486 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1370,7 +1599,7 @@ CREATE TABLE `llx_boxes_def` ( LOCK TABLES `llx_boxes_def` WRITE; /*!40000 ALTER TABLE `llx_boxes_def` DISABLE KEYS */; -INSERT INTO `llx_boxes_def` VALUES (323,'box_actions.php',2,'2015-03-13 15:29:19',NULL),(324,'box_clients.php',2,'2015-03-13 20:21:35',NULL),(325,'box_prospect.php',2,'2015-03-13 20:21:35',NULL),(326,'box_contacts.php',2,'2015-03-13 20:21:35',NULL),(327,'box_activity.php',2,'2015-03-13 20:21:35','(WarningUsingThisBoxSlowDown)'),(328,'box_propales.php',2,'2015-03-13 20:32:38',NULL),(329,'box_comptes.php',2,'2015-03-13 20:33:09',NULL),(330,'box_factures_imp.php',2,'2015-03-13 20:33:09',NULL),(331,'box_factures.php',2,'2015-03-13 20:33:09',NULL),(332,'box_produits.php',2,'2015-03-13 20:33:09',NULL),(333,'box_produits_alerte_stock.php',2,'2015-03-13 20:33:09',NULL),(347,'box_clients.php',1,'2017-11-15 22:05:57',NULL),(348,'box_prospect.php',1,'2017-11-15 22:05:57',NULL),(349,'box_contacts.php',1,'2017-11-15 22:05:57',NULL),(350,'box_activity.php',1,'2017-11-15 22:05:57','(WarningUsingThisBoxSlowDown)'),(374,'box_services_contracts.php',1,'2017-11-15 22:38:37',NULL),(377,'box_project.php',1,'2017-11-15 22:38:44',NULL),(378,'box_task.php',1,'2017-11-15 22:38:44',NULL),(388,'box_contracts.php',1,'2017-11-15 22:39:52',NULL),(389,'box_services_expired.php',1,'2017-11-15 22:39:52',NULL),(390,'box_ficheinter.php',1,'2017-11-15 22:39:56',NULL),(392,'box_graph_propales_permonth.php',1,'2017-11-15 22:41:47',NULL),(393,'box_propales.php',1,'2017-11-15 22:41:47',NULL),(396,'box_graph_product_distribution.php',1,'2017-11-15 22:41:47',NULL),(403,'box_goodcustomers.php',1,'2018-07-30 11:13:20','(WarningUsingThisBoxSlowDown)'),(404,'box_external_rss.php',1,'2018-07-30 11:15:25','1 (Dolibarr.org News)'),(409,'box_produits.php',1,'2018-07-30 13:38:11',NULL),(410,'box_produits_alerte_stock.php',1,'2018-07-30 13:38:11',NULL),(411,'box_commandes.php',1,'2018-07-30 13:38:11',NULL),(412,'box_graph_orders_permonth.php',1,'2018-07-30 13:38:11',NULL),(413,'box_graph_invoices_supplier_permonth.php',1,'2018-07-30 13:38:11',NULL),(414,'box_graph_orders_supplier_permonth.php',1,'2018-07-30 13:38:11',NULL),(415,'box_fournisseurs.php',1,'2018-07-30 13:38:11',NULL),(416,'box_factures_fourn_imp.php',1,'2018-07-30 13:38:11',NULL),(417,'box_factures_fourn.php',1,'2018-07-30 13:38:11',NULL),(418,'box_supplier_orders.php',1,'2018-07-30 13:38:11',NULL),(419,'box_actions.php',1,'2018-07-30 15:42:32',NULL),(424,'box_factures_imp.php',1,'2017-02-07 18:56:12',NULL),(425,'box_factures.php',1,'2017-02-07 18:56:12',NULL),(426,'box_graph_invoices_permonth.php',1,'2017-02-07 18:56:12',NULL),(429,'box_lastlogin.php',1,'2017-08-27 13:29:14',NULL),(430,'box_bookmarks.php',1,'2018-01-19 11:27:34',NULL),(431,'box_members.php',1,'2018-01-19 11:27:56',NULL),(432,'box_birthdays.php',1,'2019-06-05 08:45:40',NULL),(433,'box_last_ticket',1,'2019-06-05 09:15:29',NULL),(434,'box_last_modified_ticket',1,'2019-06-05 09:15:29',NULL),(436,'box_accountancy_last_manual_entries.php',1,'2019-11-28 11:52:58',NULL),(437,'box_accountancy_suspense_account.php',1,'2019-11-28 11:52:58',NULL),(438,'box_supplier_orders_awaiting_reception.php',1,'2019-11-28 11:52:59',NULL),(445,'box_shipments.php',1,'2020-01-13 14:38:20',NULL),(446,'box_funnel_of_prospection.php',1,'2020-12-10 12:24:40',NULL),(447,'box_customers_outstanding_bill_reached.php',1,'2020-12-10 12:24:40',NULL),(448,'box_scheduled_jobs.php',1,'2021-04-15 10:22:49',NULL),(449,'box_dolibarr_state_board.php',1,'2021-04-15 10:22:54',NULL),(450,'box_members_last_modified.php',1,'2021-04-15 10:22:54',NULL),(451,'box_members_last_subscriptions.php',1,'2021-04-15 10:22:54',NULL),(452,'box_members_subscriptions_by_year.php',1,'2021-04-15 10:22:54',NULL),(453,'box_members_by_type.php',1,'2021-04-15 10:22:54',NULL),(454,'box_graph_ticket_by_severity.php',1,'2021-04-15 10:22:55',NULL),(455,'box_graph_nb_ticket_last_x_days.php',1,'2021-04-15 10:22:55',NULL),(456,'box_graph_nb_tickets_type.php',1,'2021-04-15 10:22:55',NULL),(457,'box_graph_new_vs_close_ticket.php',1,'2021-04-15 10:22:55',NULL),(461,'box_last_ticket.php',1,'2021-04-15 10:23:01',NULL),(462,'box_last_modified_ticket.php',1,'2021-04-15 10:23:01',NULL),(470,'box_ticket_by_severity.php',1,'2021-07-11 17:49:47',NULL),(471,'box_nb_ticket_last_x_days.php',1,'2021-07-11 17:49:47',NULL),(472,'box_nb_tickets_type.php',1,'2021-07-11 17:49:47',NULL),(473,'box_new_vs_close_ticket.php',1,'2021-07-11 17:49:47',NULL),(474,'box_boms.php',1,'2022-02-07 13:38:16',NULL),(475,'box_comptes.php',1,'2022-02-07 13:38:16',NULL),(476,'box_mos.php',1,'2022-02-07 13:38:17',NULL); +INSERT INTO `llx_boxes_def` VALUES (323,'box_actions.php',2,'2015-03-13 15:29:19',NULL,0),(324,'box_clients.php',2,'2015-03-13 20:21:35',NULL,0),(325,'box_prospect.php',2,'2015-03-13 20:21:35',NULL,0),(326,'box_contacts.php',2,'2015-03-13 20:21:35',NULL,0),(327,'box_activity.php',2,'2015-03-13 20:21:35','(WarningUsingThisBoxSlowDown)',0),(328,'box_propales.php',2,'2015-03-13 20:32:38',NULL,0),(329,'box_comptes.php',2,'2015-03-13 20:33:09',NULL,0),(330,'box_factures_imp.php',2,'2015-03-13 20:33:09',NULL,0),(331,'box_factures.php',2,'2015-03-13 20:33:09',NULL,0),(332,'box_produits.php',2,'2015-03-13 20:33:09',NULL,0),(333,'box_produits_alerte_stock.php',2,'2015-03-13 20:33:09',NULL,0),(347,'box_clients.php',1,'2017-11-15 22:05:57',NULL,0),(348,'box_prospect.php',1,'2017-11-15 22:05:57',NULL,0),(349,'box_contacts.php',1,'2017-11-15 22:05:57',NULL,0),(350,'box_activity.php',1,'2017-11-15 22:05:57','(WarningUsingThisBoxSlowDown)',0),(374,'box_services_contracts.php',1,'2017-11-15 22:38:37',NULL,0),(377,'box_project.php',1,'2017-11-15 22:38:44',NULL,0),(378,'box_task.php',1,'2017-11-15 22:38:44',NULL,0),(388,'box_contracts.php',1,'2017-11-15 22:39:52',NULL,0),(389,'box_services_expired.php',1,'2017-11-15 22:39:52',NULL,0),(390,'box_ficheinter.php',1,'2017-11-15 22:39:56',NULL,0),(392,'box_graph_propales_permonth.php',1,'2017-11-15 22:41:47',NULL,0),(393,'box_propales.php',1,'2017-11-15 22:41:47',NULL,0),(396,'box_graph_product_distribution.php',1,'2017-11-15 22:41:47',NULL,0),(403,'box_goodcustomers.php',1,'2018-07-30 11:13:20','(WarningUsingThisBoxSlowDown)',0),(404,'box_external_rss.php',1,'2018-07-30 11:15:25','1 (Dolibarr.org News)',0),(409,'box_produits.php',1,'2018-07-30 13:38:11',NULL,0),(410,'box_produits_alerte_stock.php',1,'2018-07-30 13:38:11',NULL,0),(411,'box_commandes.php',1,'2018-07-30 13:38:11',NULL,0),(412,'box_graph_orders_permonth.php',1,'2018-07-30 13:38:11',NULL,0),(413,'box_graph_invoices_supplier_permonth.php',1,'2018-07-30 13:38:11',NULL,0),(414,'box_graph_orders_supplier_permonth.php',1,'2018-07-30 13:38:11',NULL,0),(415,'box_fournisseurs.php',1,'2018-07-30 13:38:11',NULL,0),(416,'box_factures_fourn_imp.php',1,'2018-07-30 13:38:11',NULL,0),(417,'box_factures_fourn.php',1,'2018-07-30 13:38:11',NULL,0),(418,'box_supplier_orders.php',1,'2018-07-30 13:38:11',NULL,0),(419,'box_actions.php',1,'2018-07-30 15:42:32',NULL,0),(424,'box_factures_imp.php',1,'2017-02-07 18:56:12',NULL,0),(425,'box_factures.php',1,'2017-02-07 18:56:12',NULL,0),(426,'box_graph_invoices_permonth.php',1,'2017-02-07 18:56:12',NULL,0),(429,'box_lastlogin.php',1,'2017-08-27 13:29:14',NULL,0),(430,'box_bookmarks.php',1,'2018-01-19 11:27:34',NULL,0),(432,'box_birthdays.php',1,'2019-06-05 08:45:40',NULL,0),(433,'box_last_ticket',1,'2019-06-05 09:15:29',NULL,0),(436,'box_accountancy_last_manual_entries.php',1,'2019-11-28 11:52:58',NULL,0),(437,'box_accountancy_suspense_account.php',1,'2019-11-28 11:52:58',NULL,0),(438,'box_supplier_orders_awaiting_reception.php',1,'2019-11-28 11:52:59',NULL,0),(445,'box_shipments.php',1,'2020-01-13 14:38:20',NULL,0),(446,'box_funnel_of_prospection.php',1,'2020-12-10 12:24:40',NULL,0),(447,'box_customers_outstanding_bill_reached.php',1,'2020-12-10 12:24:40',NULL,0),(448,'box_scheduled_jobs.php',1,'2021-04-15 10:22:49',NULL,0),(449,'box_dolibarr_state_board.php',1,'2021-04-15 10:22:54',NULL,0),(450,'box_members_last_modified.php',1,'2021-04-15 10:22:54',NULL,0),(451,'box_members_last_subscriptions.php',1,'2021-04-15 10:22:54',NULL,0),(452,'box_members_subscriptions_by_year.php',1,'2021-04-15 10:22:54',NULL,0),(453,'box_members_by_type.php',1,'2021-04-15 10:22:54',NULL,0),(454,'box_graph_ticket_by_severity.php',1,'2021-04-15 10:22:55',NULL,0),(455,'box_graph_nb_ticket_last_x_days.php',1,'2021-04-15 10:22:55',NULL,0),(456,'box_graph_nb_tickets_type.php',1,'2021-04-15 10:22:55',NULL,0),(457,'box_graph_new_vs_close_ticket.php',1,'2021-04-15 10:22:55',NULL,0),(461,'box_last_ticket.php',1,'2021-04-15 10:23:01',NULL,0),(462,'box_last_modified_ticket.php',1,'2021-04-15 10:23:01',NULL,0),(470,'box_ticket_by_severity.php',1,'2021-07-11 17:49:47',NULL,0),(471,'box_nb_ticket_last_x_days.php',1,'2021-07-11 17:49:47',NULL,0),(472,'box_nb_tickets_type.php',1,'2021-07-11 17:49:47',NULL,0),(473,'box_new_vs_close_ticket.php',1,'2021-07-11 17:49:47',NULL,0),(483,'box_boms.php',1,'2022-07-05 08:07:11',NULL,0),(484,'box_comptes.php',1,'2022-07-05 08:07:11',NULL,0),(485,'box_mos.php',1,'2022-07-05 08:07:11',NULL,0); /*!40000 ALTER TABLE `llx_boxes_def` ENABLE KEYS */; UNLOCK TABLES; @@ -1384,9 +1613,9 @@ DROP TABLE IF EXISTS `llx_budget`; CREATE TABLE `llx_budget` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `status` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_start` date DEFAULT NULL, `date_end` date DEFAULT NULL, `datec` datetime DEFAULT NULL, @@ -1395,7 +1624,7 @@ CREATE TABLE `llx_budget` ( `fk_user_modif` int(11) DEFAULT NULL, `import_key` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1417,7 +1646,7 @@ DROP TABLE IF EXISTS `llx_budget_lines`; CREATE TABLE `llx_budget_lines` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_budget` int(11) NOT NULL, - `fk_project_ids` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `fk_project_ids` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `amount` double(24,8) NOT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), @@ -1427,7 +1656,7 @@ CREATE TABLE `llx_budget_lines` ( PRIMARY KEY (`rowid`), UNIQUE KEY `uk_budget_lines` (`fk_budget`,`fk_project_ids`), CONSTRAINT `fk_budget_lines_budget` FOREIGN KEY (`fk_budget`) REFERENCES `llx_budget` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1449,18 +1678,18 @@ DROP TABLE IF EXISTS `llx_c_accounting_category`; CREATE TABLE `llx_c_accounting_category` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `range_account` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `range_account` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `sens` tinyint(4) NOT NULL DEFAULT 0, `category_type` tinyint(4) NOT NULL DEFAULT 0, - `formula` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `formula` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `position` int(11) DEFAULT 0, `fk_country` int(11) DEFAULT NULL, `active` int(11) DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_accounting_category` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1482,15 +1711,15 @@ DROP TABLE IF EXISTS `llx_c_action_trigger`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_action_trigger` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(64) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `elementtype` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `elementtype` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `rang` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_action_trigger_code` (`code`), KEY `idx_action_trigger_rang` (`rang`) -) ENGINE=InnoDB AUTO_INCREMENT=407 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=455 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1499,7 +1728,7 @@ CREATE TABLE `llx_c_action_trigger` ( LOCK TABLES `llx_c_action_trigger` WRITE; /*!40000 ALTER TABLE `llx_c_action_trigger` DISABLE KEYS */; -INSERT INTO `llx_c_action_trigger` VALUES (131,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1),(132,'COMPANY_CREATE','Third party created','Executed when a third party is created','societe',1),(133,'PROPAL_VALIDATE','Customer proposal validated','Executed when a commercial proposal is validated','propal',2),(134,'PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3),(135,'ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4),(136,'ORDER_CLOSE','Customer order classify delivered','Executed when a customer order is set delivered','commande',5),(137,'ORDER_CLASSIFY_BILLED','Customer order classify billed','Executed when a customer order is set to billed','commande',5),(138,'ORDER_CANCEL','Customer order canceled','Executed when a customer order is canceled','commande',5),(139,'ORDER_SENTBYMAIL','Customer order sent by mail','Executed when a customer order is sent by mail ','commande',5),(140,'BILL_VALIDATE','Customer invoice validated','Executed when a customer invoice is approved','facture',6),(141,'BILL_PAYED','Customer invoice payed','Executed when a customer invoice is payed','facture',7),(142,'BILL_CANCEL','Customer invoice canceled','Executed when a customer invoice is conceled','facture',8),(143,'BILL_SENTBYMAIL','Customer invoice sent by mail','Executed when a customer invoice is sent by mail','facture',9),(144,'BILL_UNVALIDATE','Customer invoice unvalidated','Executed when a customer invoice status set back to draft','facture',10),(145,'ORDER_SUPPLIER_VALIDATE','Supplier order validated','Executed when a supplier order is validated','order_supplier',11),(146,'ORDER_SUPPLIER_APPROVE','Supplier order request approved','Executed when a supplier order is approved','order_supplier',12),(147,'ORDER_SUPPLIER_REFUSE','Supplier order request refused','Executed when a supplier order is refused','order_supplier',13),(148,'ORDER_SUPPLIER_SENTBYMAIL','Supplier order sent by mail','Executed when a supplier order is sent by mail','order_supplier',14),(149,'BILL_SUPPLIER_VALIDATE','Supplier invoice validated','Executed when a supplier invoice is validated','invoice_supplier',15),(150,'BILL_SUPPLIER_PAYED','Supplier invoice payed','Executed when a supplier invoice is payed','invoice_supplier',16),(151,'BILL_SUPPLIER_SENTBYMAIL','Supplier invoice sent by mail','Executed when a supplier invoice is sent by mail','invoice_supplier',17),(152,'BILL_SUPPLIER_CANCELED','Supplier invoice cancelled','Executed when a supplier invoice is cancelled','invoice_supplier',17),(153,'CONTRACT_VALIDATE','Contract validated','Executed when a contract is validated','contrat',18),(154,'SHIPPING_VALIDATE','Shipping validated','Executed when a shipping is validated','shipping',20),(155,'SHIPPING_SENTBYMAIL','Shipping sent by mail','Executed when a shipping is sent by mail','shipping',21),(156,'MEMBER_VALIDATE','Member validated','Executed when a member is validated','member',22),(158,'MEMBER_RESILIATE','Member resiliated','Executed when a member is resiliated','member',24),(159,'MEMBER_MODIFY','Member modified','Executed when a member is modified','member',24),(160,'MEMBER_DELETE','Member deleted','Executed when a member is deleted','member',25),(161,'FICHINTER_VALIDATE','Intervention validated','Executed when a intervention is validated','ficheinter',19),(162,'FICHINTER_CLASSIFY_BILLED','Intervention set billed','Executed when a intervention is set to billed (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19),(163,'FICHINTER_CLASSIFY_UNBILLED','Intervention set unbilled','Executed when a intervention is set to unbilled (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19),(164,'FICHINTER_REOPEN','Intervention opened','Executed when a intervention is re-opened','ficheinter',19),(165,'FICHINTER_SENTBYMAIL','Intervention sent by mail','Executed when a intervention is sent by mail','ficheinter',19),(166,'PROJECT_CREATE','Project creation','Executed when a project is created','project',140),(167,'PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2),(168,'PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2),(169,'PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2),(170,'TASK_CREATE','Task created','Executed when a project task is created','project',35),(171,'TASK_MODIFY','Task modified','Executed when a project task is modified','project',36),(172,'TASK_DELETE','Task deleted','Executed when a project task is deleted','project',37),(173,'BILL_SUPPLIER_UNVALIDATE','Supplier invoice unvalidated','Executed when a supplier invoice status is set back to draft','invoice_supplier',15),(174,'PROJECT_MODIFY','Project modified','Executed when a project is modified','project',141),(175,'PROJECT_DELETE','Project deleted','Executed when a project is deleted','project',142),(176,'ORDER_SUPPLIER_CREATE','Supplier order validated','Executed when a supplier order is validated','order_supplier',11),(177,'ORDER_SUPPLIER_SUBMIT','Supplier order request submited','Executed when a supplier order is approved','order_supplier',12),(178,'ORDER_SUPPLIER_RECEIVE','Supplier order request received','Executed when a supplier order is received','order_supplier',12),(179,'ORDER_SUPPLIER_CLASSIFY_BILLED','Supplier order set billed','Executed when a supplier order is set as billed','order_supplier',14),(180,'PRODUCT_CREATE','Product or service created','Executed when a product or sevice is created','product',30),(181,'PRODUCT_MODIFY','Product or service modified','Executed when a product or sevice is modified','product',30),(182,'PRODUCT_DELETE','Product or service deleted','Executed when a product or sevice is deleted','product',30),(183,'EXPENSE_REPORT_CREATE','Expense report created','Executed when an expense report is created','expensereport',201),(185,'EXPENSE_REPORT_VALIDATE','Expense report validated','Executed when an expense report is validated','expensereport',202),(186,'EXPENSE_REPORT_APPROVE','Expense report approved','Executed when an expense report is approved','expensereport',203),(187,'EXPENSE_REPORT_PAID','Expense report billed','Executed when an expense report is set as billed','expensereport',204),(192,'HOLIDAY_CREATE','Leave request created','Executed when a leave request is created','holiday',221),(193,'HOLIDAY_VALIDATE','Leave request validated','Executed when a leave request is validated','holiday',222),(194,'HOLIDAY_APPROVE','Leave request approved','Executed when a leave request is approved','holiday',223),(210,'MEMBER_SENTBYMAIL','Mails sent from member card','Executed when you send email from member card','member',23),(211,'CONTRACT_SENTBYMAIL','Contract sent by mail','Executed when a contract is sent by mail','contrat',18),(212,'PROPOSAL_SUPPLIER_VALIDATE','Price request validated','Executed when a commercial proposal is validated','proposal_supplier',10),(213,'PROPOSAL_SUPPLIER_SENTBYMAIL','Price request sent by mail','Executed when a commercial proposal is sent by mail','proposal_supplier',10),(214,'PROPOSAL_SUPPLIER_CLOSE_SIGNED','Price request closed signed','Executed when a customer proposal is closed signed','proposal_supplier',10),(215,'PROPOSAL_SUPPLIER_CLOSE_REFUSED','Price request closed refused','Executed when a customer proposal is closed refused','proposal_supplier',10),(216,'MEMBER_SUBSCRIPTION_CREATE','Member subscribtion recorded','Executed when a member subscribtion is deleted','member',24),(217,'MEMBER_SUBSCRIPTION_MODIFY','Member subscribtion modified','Executed when a member subscribtion is modified','member',24),(218,'MEMBER_SUBSCRIPTION_DELETE','Member subscribtion deleted','Executed when a member subscribtion is deleted','member',24),(225,'COMPANY_DELETE','Third party deleted','Executed when you delete third party','societe',1),(226,'PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2),(227,'ORDER_DELETE','Customer order deleted','Executed when a customer order is deleted','commande',5),(228,'BILL_DELETE','Customer invoice deleted','Executed when a customer invoice is deleted','facture',9),(229,'PROPOSAL_SUPPLIER_DELETE','Price request deleted','Executed when a customer proposal delete','proposal_supplier',10),(230,'ORDER_SUPPLIER_DELETE','Supplier order deleted','Executed when a supplier order is deleted','order_supplier',14),(231,'BILL_SUPPLIER_DELETE','Supplier invoice deleted','Executed when a supplier invoice is deleted','invoice_supplier',17),(232,'CONTRACT_DELETE','Contract deleted','Executed when a contract is deleted','contrat',18),(233,'FICHINTER_DELETE','Intervention is deleted','Executed when a intervention is deleted','ficheinter',35),(234,'EXPENSE_REPORT_DELETE','Expense report deleted','Executed when an expense report is deleted','expensereport',204),(249,'TICKET_CREATE','Ticket created','Executed when a ticket is created','ticket',161),(250,'TICKET_MODIFY','Ticket modified','Executed when a ticket is modified','ticket',163),(251,'TICKET_ASSIGNED','Ticket assigned','Executed when a ticket is assigned to another user','ticket',164),(252,'TICKET_CLOSE','Ticket closed','Executed when a ticket is closed','ticket',165),(253,'TICKET_SENTBYMAIL','Ticket message sent by email','Executed when a message is sent from the ticket record','ticket',166),(254,'TICKET_DELETE','Ticket deleted','Executed when a ticket is deleted','ticket',167),(261,'USER_SENTBYMAIL','Email sent','Executed when an email is sent from user card','user',300),(262,'BOM_VALIDATE','BOM validated','Executed when a BOM is validated','bom',650),(263,'BOM_UNVALIDATE','BOM unvalidated','Executed when a BOM is unvalidated','bom',651),(264,'BOM_CLOSE','BOM disabled','Executed when a BOM is disabled','bom',652),(265,'BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',653),(266,'BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654),(351,'MRP_MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660),(352,'MRP_MO_PRODUCED','MO produced','Executed when a MO is produced','bom',661),(353,'MRP_MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662),(354,'MRP_MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663),(365,'CONTACT_CREATE','Contact address created','Executed when a contact is created','contact',50),(366,'CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact adress card','contact',51),(367,'CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',52),(368,'RECRUITMENTJOBPOSITION_CREATE','Job created','Executed when a job is created','recruitment',7500),(369,'RECRUITMENTJOBPOSITION_MODIFY','Job modified','Executed when a job is modified','recruitment',7502),(370,'RECRUITMENTJOBPOSITION_SENTBYMAIL','Mails sent from job record','Executed when you send email from job record','recruitment',7504),(371,'RECRUITMENTJOBPOSITION_DELETE','Job deleted','Executed when a job is deleted','recruitment',7506),(372,'RECRUITMENTCANDIDATURE_CREATE','Candidature created','Executed when a candidature is created','recruitment',7510),(373,'RECRUITMENTCANDIDATURE_MODIFY','Candidature modified','Executed when a candidature is modified','recruitment',7512),(374,'RECRUITMENTCANDIDATURE_SENTBYMAIL','Mails sent from candidature record','Executed when you send email from candidature record','recruitment',7514),(375,'RECRUITMENTCANDIDATURE_DELETE','Candidature deleted','Executed when a candidature is deleted','recruitment',7516),(392,'COMPANY_MODIFY','Third party update','Executed when you update third party','societe',1),(393,'CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51),(394,'ORDER_SUPPLIER_CANCEL','Supplier order request canceled','Executed when a supplier order is canceled','order_supplier',13),(395,'MEMBER_EXCLUDE','Member excluded','Executed when a member is excluded','member',27),(396,'USER_CREATE','User created','Executed when a user is created','user',301),(397,'USER_MODIFY','User update','Executed when a user is updated','user',302),(398,'USER_DELETE','User update','Executed when a user is deleted','user',303),(399,'USER_NEW_PASSWORD','User update','Executed when a user is change password','user',304),(400,'USER_ENABLEDISABLE','User update','Executed when a user is enable or disable','user',305),(402,'HOLIDAY_MODIFY','Holiday modified','Executed when a holiday is modified','holiday',801),(405,'HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802),(406,'HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804); +INSERT INTO `llx_c_action_trigger` VALUES (131,'COMPANY_SENTBYMAIL','Mails sent from third party card','Executed when you send email from third party card','societe',1),(132,'COMPANY_CREATE','Third party created','Executed when a third party is created','societe',1),(133,'PROPAL_VALIDATE','Customer proposal validated','Executed when a commercial proposal is validated','propal',2),(134,'PROPAL_SENTBYMAIL','Commercial proposal sent by mail','Executed when a commercial proposal is sent by mail','propal',3),(135,'ORDER_VALIDATE','Customer order validate','Executed when a customer order is validated','commande',4),(136,'ORDER_CLOSE','Customer order classify delivered','Executed when a customer order is set delivered','commande',5),(137,'ORDER_CLASSIFY_BILLED','Customer order classify billed','Executed when a customer order is set to billed','commande',5),(138,'ORDER_CANCEL','Customer order canceled','Executed when a customer order is canceled','commande',5),(139,'ORDER_SENTBYMAIL','Customer order sent by mail','Executed when a customer order is sent by mail ','commande',5),(140,'BILL_VALIDATE','Customer invoice validated','Executed when a customer invoice is approved','facture',6),(141,'BILL_PAYED','Customer invoice payed','Executed when a customer invoice is payed','facture',7),(142,'BILL_CANCEL','Customer invoice canceled','Executed when a customer invoice is conceled','facture',8),(143,'BILL_SENTBYMAIL','Customer invoice sent by mail','Executed when a customer invoice is sent by mail','facture',9),(144,'BILL_UNVALIDATE','Customer invoice unvalidated','Executed when a customer invoice status set back to draft','facture',10),(145,'ORDER_SUPPLIER_VALIDATE','Supplier order validated','Executed when a supplier order is validated','order_supplier',11),(146,'ORDER_SUPPLIER_APPROVE','Supplier order request approved','Executed when a supplier order is approved','order_supplier',12),(147,'ORDER_SUPPLIER_REFUSE','Supplier order request refused','Executed when a supplier order is refused','order_supplier',13),(148,'ORDER_SUPPLIER_SENTBYMAIL','Supplier order sent by mail','Executed when a supplier order is sent by mail','order_supplier',14),(149,'BILL_SUPPLIER_VALIDATE','Supplier invoice validated','Executed when a supplier invoice is validated','invoice_supplier',15),(150,'BILL_SUPPLIER_PAYED','Supplier invoice payed','Executed when a supplier invoice is payed','invoice_supplier',16),(151,'BILL_SUPPLIER_SENTBYMAIL','Supplier invoice sent by mail','Executed when a supplier invoice is sent by mail','invoice_supplier',17),(152,'BILL_SUPPLIER_CANCELED','Supplier invoice cancelled','Executed when a supplier invoice is cancelled','invoice_supplier',17),(153,'CONTRACT_VALIDATE','Contract validated','Executed when a contract is validated','contrat',18),(154,'SHIPPING_VALIDATE','Shipping validated','Executed when a shipping is validated','shipping',20),(155,'SHIPPING_SENTBYMAIL','Shipping sent by mail','Executed when a shipping is sent by mail','shipping',21),(156,'MEMBER_VALIDATE','Member validated','Executed when a member is validated','member',22),(158,'MEMBER_RESILIATE','Member resiliated','Executed when a member is resiliated','member',24),(159,'MEMBER_MODIFY','Member modified','Executed when a member is modified','member',24),(160,'MEMBER_DELETE','Member deleted','Executed when a member is deleted','member',25),(161,'FICHINTER_VALIDATE','Intervention validated','Executed when a intervention is validated','ficheinter',19),(162,'FICHINTER_CLASSIFY_BILLED','Intervention set billed','Executed when a intervention is set to billed (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19),(163,'FICHINTER_CLASSIFY_UNBILLED','Intervention set unbilled','Executed when a intervention is set to unbilled (when option FICHINTER_CLASSIFY_BILLED is set)','ficheinter',19),(164,'FICHINTER_REOPEN','Intervention opened','Executed when a intervention is re-opened','ficheinter',19),(165,'FICHINTER_SENTBYMAIL','Intervention sent by mail','Executed when a intervention is sent by mail','ficheinter',19),(166,'PROJECT_CREATE','Project creation','Executed when a project is created','project',140),(167,'PROPAL_CLOSE_SIGNED','Customer proposal closed signed','Executed when a customer proposal is closed signed','propal',2),(168,'PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',2),(169,'PROPAL_CLASSIFY_BILLED','Customer proposal set billed','Executed when a customer proposal is set to billed','propal',2),(170,'TASK_CREATE','Task created','Executed when a project task is created','project',35),(171,'TASK_MODIFY','Task modified','Executed when a project task is modified','project',36),(172,'TASK_DELETE','Task deleted','Executed when a project task is deleted','project',37),(173,'BILL_SUPPLIER_UNVALIDATE','Supplier invoice unvalidated','Executed when a supplier invoice status is set back to draft','invoice_supplier',15),(174,'PROJECT_MODIFY','Project modified','Executed when a project is modified','project',141),(175,'PROJECT_DELETE','Project deleted','Executed when a project is deleted','project',142),(176,'ORDER_SUPPLIER_CREATE','Supplier order validated','Executed when a supplier order is validated','order_supplier',11),(177,'ORDER_SUPPLIER_SUBMIT','Supplier order request submited','Executed when a supplier order is approved','order_supplier',12),(178,'ORDER_SUPPLIER_RECEIVE','Supplier order request received','Executed when a supplier order is received','order_supplier',12),(179,'ORDER_SUPPLIER_CLASSIFY_BILLED','Supplier order set billed','Executed when a supplier order is set as billed','order_supplier',14),(180,'PRODUCT_CREATE','Product or service created','Executed when a product or sevice is created','product',30),(181,'PRODUCT_MODIFY','Product or service modified','Executed when a product or sevice is modified','product',30),(182,'PRODUCT_DELETE','Product or service deleted','Executed when a product or sevice is deleted','product',30),(183,'EXPENSE_REPORT_CREATE','Expense report created','Executed when an expense report is created','expensereport',201),(185,'EXPENSE_REPORT_VALIDATE','Expense report validated','Executed when an expense report is validated','expensereport',202),(186,'EXPENSE_REPORT_APPROVE','Expense report approved','Executed when an expense report is approved','expensereport',203),(187,'EXPENSE_REPORT_PAID','Expense report billed','Executed when an expense report is set as billed','expensereport',204),(192,'HOLIDAY_CREATE','Leave request created','Executed when a leave request is created','holiday',221),(193,'HOLIDAY_VALIDATE','Leave request validated','Executed when a leave request is validated','holiday',222),(194,'HOLIDAY_APPROVE','Leave request approved','Executed when a leave request is approved','holiday',223),(210,'MEMBER_SENTBYMAIL','Mails sent from member card','Executed when you send email from member card','member',23),(211,'CONTRACT_SENTBYMAIL','Contract sent by mail','Executed when a contract is sent by mail','contrat',18),(212,'PROPOSAL_SUPPLIER_VALIDATE','Price request validated','Executed when a commercial proposal is validated','proposal_supplier',10),(213,'PROPOSAL_SUPPLIER_SENTBYMAIL','Price request sent by mail','Executed when a commercial proposal is sent by mail','proposal_supplier',10),(214,'PROPOSAL_SUPPLIER_CLOSE_SIGNED','Price request closed signed','Executed when a customer proposal is closed signed','proposal_supplier',10),(215,'PROPOSAL_SUPPLIER_CLOSE_REFUSED','Price request closed refused','Executed when a customer proposal is closed refused','proposal_supplier',10),(216,'MEMBER_SUBSCRIPTION_CREATE','Member subscribtion recorded','Executed when a member subscribtion is deleted','member',24),(217,'MEMBER_SUBSCRIPTION_MODIFY','Member subscribtion modified','Executed when a member subscribtion is modified','member',24),(218,'MEMBER_SUBSCRIPTION_DELETE','Member subscribtion deleted','Executed when a member subscribtion is deleted','member',24),(225,'COMPANY_DELETE','Third party deleted','Executed when you delete third party','societe',1),(226,'PROPAL_DELETE','Customer proposal deleted','Executed when a customer proposal is deleted','propal',2),(227,'ORDER_DELETE','Customer order deleted','Executed when a customer order is deleted','commande',5),(228,'BILL_DELETE','Customer invoice deleted','Executed when a customer invoice is deleted','facture',9),(229,'PROPOSAL_SUPPLIER_DELETE','Price request deleted','Executed when a customer proposal delete','proposal_supplier',10),(230,'ORDER_SUPPLIER_DELETE','Supplier order deleted','Executed when a supplier order is deleted','order_supplier',14),(231,'BILL_SUPPLIER_DELETE','Supplier invoice deleted','Executed when a supplier invoice is deleted','invoice_supplier',17),(232,'CONTRACT_DELETE','Contract deleted','Executed when a contract is deleted','contrat',18),(233,'FICHINTER_DELETE','Intervention is deleted','Executed when a intervention is deleted','ficheinter',35),(234,'EXPENSE_REPORT_DELETE','Expense report deleted','Executed when an expense report is deleted','expensereport',204),(249,'TICKET_CREATE','Ticket created','Executed when a ticket is created','ticket',161),(250,'TICKET_MODIFY','Ticket modified','Executed when a ticket is modified','ticket',163),(251,'TICKET_ASSIGNED','Ticket assigned','Executed when a ticket is assigned to another user','ticket',164),(252,'TICKET_CLOSE','Ticket closed','Executed when a ticket is closed','ticket',165),(253,'TICKET_SENTBYMAIL','Ticket message sent by email','Executed when a message is sent from the ticket record','ticket',166),(254,'TICKET_DELETE','Ticket deleted','Executed when a ticket is deleted','ticket',167),(261,'USER_SENTBYMAIL','Email sent','Executed when an email is sent from user card','user',300),(262,'BOM_VALIDATE','BOM validated','Executed when a BOM is validated','bom',650),(263,'BOM_UNVALIDATE','BOM unvalidated','Executed when a BOM is unvalidated','bom',651),(264,'BOM_CLOSE','BOM disabled','Executed when a BOM is disabled','bom',652),(265,'BOM_REOPEN','BOM reopen','Executed when a BOM is re-open','bom',653),(266,'BOM_DELETE','BOM deleted','Executed when a BOM deleted','bom',654),(351,'MRP_MO_VALIDATE','MO validated','Executed when a MO is validated','bom',660),(352,'MRP_MO_PRODUCED','MO produced','Executed when a MO is produced','bom',661),(353,'MRP_MO_DELETE','MO deleted','Executed when a MO is deleted','bom',662),(354,'MRP_MO_CANCEL','MO canceled','Executed when a MO is canceled','bom',663),(365,'CONTACT_CREATE','Contact address created','Executed when a contact is created','contact',50),(366,'CONTACT_SENTBYMAIL','Mails sent from third party card','Executed when you send email from contact adress card','contact',51),(367,'CONTACT_DELETE','Contact address deleted','Executed when a contact is deleted','contact',52),(368,'RECRUITMENTJOBPOSITION_CREATE','Job created','Executed when a job is created','recruitment',7500),(369,'RECRUITMENTJOBPOSITION_MODIFY','Job modified','Executed when a job is modified','recruitment',7502),(370,'RECRUITMENTJOBPOSITION_SENTBYMAIL','Mails sent from job record','Executed when you send email from job record','recruitment',7504),(371,'RECRUITMENTJOBPOSITION_DELETE','Job deleted','Executed when a job is deleted','recruitment',7506),(372,'RECRUITMENTCANDIDATURE_CREATE','Candidature created','Executed when a candidature is created','recruitment',7510),(373,'RECRUITMENTCANDIDATURE_MODIFY','Candidature modified','Executed when a candidature is modified','recruitment',7512),(374,'RECRUITMENTCANDIDATURE_SENTBYMAIL','Mails sent from candidature record','Executed when you send email from candidature record','recruitment',7514),(375,'RECRUITMENTCANDIDATURE_DELETE','Candidature deleted','Executed when a candidature is deleted','recruitment',7516),(392,'COMPANY_MODIFY','Third party update','Executed when you update third party','societe',1),(393,'CONTACT_MODIFY','Contact address update','Executed when a contact is updated','contact',51),(394,'ORDER_SUPPLIER_CANCEL','Supplier order request canceled','Executed when a supplier order is canceled','order_supplier',13),(395,'MEMBER_EXCLUDE','Member excluded','Executed when a member is excluded','member',27),(396,'USER_CREATE','User created','Executed when a user is created','user',301),(397,'USER_MODIFY','User update','Executed when a user is updated','user',302),(398,'USER_DELETE','User update','Executed when a user is deleted','user',303),(399,'USER_NEW_PASSWORD','User update','Executed when a user is change password','user',304),(400,'USER_ENABLEDISABLE','User update','Executed when a user is enable or disable','user',305),(402,'HOLIDAY_MODIFY','Holiday modified','Executed when a holiday is modified','holiday',801),(405,'HOLIDAY_CANCEL','Holiday canceled','Executed when a holiday is canceled','holiday',802),(406,'HOLIDAY_DELETE','Holiday deleted','Executed when a holiday is deleted','holiday',804),(407,'PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2),(408,'ORDER_MODIFY','Customer order modified','Executed when a customer order is set modified','commande',5),(409,'BILL_MODIFY','Customer invoice modified','Executed when a customer invoice is modified','facture',7),(410,'PROPOSAL_SUPPLIER_MODIFY','Price request modified','Executed when a commercial proposal is modified','proposal_supplier',10),(411,'ORDER_SUPPLIER_MODIFY','Supplier order request modified','Executed when a supplier order is modified','order_supplier',13),(412,'BILL_SUPPLIER_MODIFY','Supplier invoice modified','Executed when a supplier invoice is modified','invoice_supplier',15),(413,'CONTRACT_MODIFY','Contract modified','Executed when a contract is modified','contrat',18),(414,'SHIPPING_MODIFY','Shipping modified','Executed when a shipping is modified','shipping',20),(415,'FICHINTER_MODIFY','Intervention modify','Executed when a intervention is modify','ficheinter',30),(417,'EXPENSE_REPORT_MODIFY','Expense report modified','Executed when an expense report is modified','expensereport',202); /*!40000 ALTER TABLE `llx_c_action_trigger` ENABLE KEYS */; UNLOCK TABLES; @@ -1512,18 +1741,18 @@ DROP TABLE IF EXISTS `llx_c_actioncomm`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_actioncomm` ( `id` int(11) NOT NULL, - `code` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'system', - `libelle` varchar(48) COLLATE utf8_unicode_ci NOT NULL, - `module` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'system', + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `todo` tinyint(4) DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, - `color` varchar(9) COLLATE utf8_unicode_ci DEFAULT NULL, - `picto` varchar(48) COLLATE utf8_unicode_ci DEFAULT NULL, + `color` varchar(9) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `picto` varchar(48) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_actioncomm` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1536,6 +1765,33 @@ INSERT INTO `llx_c_actioncomm` VALUES (1,'AC_TEL','system','Phone call',NULL,1,N /*!40000 ALTER TABLE `llx_c_actioncomm` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_c_asset_disposal_type` +-- + +DROP TABLE IF EXISTS `llx_c_asset_disposal_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_c_asset_disposal_type` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `active` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_c_asset_disposal_type` (`code`,`entity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_c_asset_disposal_type` +-- + +LOCK TABLES `llx_c_asset_disposal_type` WRITE; +/*!40000 ALTER TABLE `llx_c_asset_disposal_type` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_c_asset_disposal_type` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_c_availability` -- @@ -1545,13 +1801,15 @@ DROP TABLE IF EXISTS `llx_c_availability`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_availability` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(60) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `position` int(11) NOT NULL DEFAULT 0, + `type_duration` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `qty` double DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_availability` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1560,7 +1818,7 @@ CREATE TABLE `llx_c_availability` ( LOCK TABLES `llx_c_availability` WRITE; /*!40000 ALTER TABLE `llx_c_availability` DISABLE KEYS */; -INSERT INTO `llx_c_availability` VALUES (1,'AV_NOW','Immediate',1,0),(2,'AV_1W','1 week',1,0),(3,'AV_2W','2 weeks',1,0),(4,'AV_3W','3 weeks',1,0); +INSERT INTO `llx_c_availability` VALUES (1,'AV_NOW','Immediate',1,0,NULL,0),(2,'AV_1W','1 week',1,0,'w',1),(3,'AV_2W','2 weeks',1,0,'w',2),(4,'AV_3W','3 weeks',1,0,'w',3); /*!40000 ALTER TABLE `llx_c_availability` ENABLE KEYS */; UNLOCK TABLES; @@ -1573,14 +1831,14 @@ DROP TABLE IF EXISTS `llx_c_barcode_type`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_barcode_type` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `libelle` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `coder` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `example` varchar(16) COLLATE utf8_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `coder` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `example` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_barcode_type` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=71 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=95 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1602,15 +1860,15 @@ DROP TABLE IF EXISTS `llx_c_chargesociales`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_chargesociales` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `libelle` varchar(80) COLLATE utf8_unicode_ci DEFAULT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `deductible` smallint(6) NOT NULL DEFAULT 0, `active` tinyint(4) NOT NULL DEFAULT 1, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_pays` int(11) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=4110 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4110 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1631,14 +1889,14 @@ DROP TABLE IF EXISTS `llx_c_civility`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_civility` ( - `rowid` int(11) NOT NULL, - `code` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `code` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_civility` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1660,17 +1918,17 @@ DROP TABLE IF EXISTS `llx_c_country`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_country` ( `rowid` int(11) NOT NULL, - `code` varchar(2) COLLATE utf8_unicode_ci NOT NULL, - `code_iso` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, + `code_iso` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `favorite` tinyint(4) NOT NULL DEFAULT 0, - `eec` int(11) DEFAULT NULL, + `eec` tinyint(4) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_c_country_code` (`code`), UNIQUE KEY `idx_c_country_label` (`label`), UNIQUE KEY `idx_c_country_code_iso` (`code_iso`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1679,7 +1937,7 @@ CREATE TABLE `llx_c_country` ( LOCK TABLES `llx_c_country` WRITE; /*!40000 ALTER TABLE `llx_c_country` DISABLE KEYS */; -INSERT INTO `llx_c_country` VALUES (0,'',NULL,'-',1,1,NULL),(1,'FR','FRA','France',1,0,1),(2,'BE','BEL','Belgium',1,0,1),(3,'IT','ITA','Italy',1,0,1),(4,'ES','ESP','Spain',1,0,1),(5,'DE','DEU','Germany',1,0,1),(6,'CH','CHE','Switzerland',1,0,NULL),(7,'GB','GBR','United Kingdom',1,0,1),(8,'IE','IRL','Irland',1,0,1),(9,'CN','CHN','China',1,0,NULL),(10,'TN','TUN','Tunisia',1,0,NULL),(11,'US','USA','United States',1,0,NULL),(12,'MA','MAR','Maroc',1,0,NULL),(13,'DZ','DZA','Algeria',1,0,NULL),(14,'CA','CAN','Canada',1,0,NULL),(15,'TG','TGO','Togo',1,0,NULL),(16,'GA','GAB','Gabon',1,0,NULL),(17,'NL','NLD','Nerderland',1,0,1),(18,'HU','HUN','Hongrie',1,0,1),(19,'RU','RUS','Russia',1,0,NULL),(20,'SE','SWE','Sweden',1,0,1),(21,'CI','CIV','Côte d\'Ivoire',1,0,NULL),(22,'SN','SEN','Senegal',1,0,NULL),(23,'AR','ARG','Argentine',1,0,NULL),(24,'CM','CMR','Cameroun',1,0,NULL),(25,'PT','PRT','Portugal',1,0,1),(26,'SA','SAU','Saudi Arabia',1,0,NULL),(27,'MC','MCO','Monaco',1,0,1),(28,'AU','AUS','Australia',1,0,NULL),(29,'SG','SGP','Singapour',1,0,NULL),(30,'AF','AFG','Afghanistan',1,0,NULL),(31,'AX','ALA','Iles Aland',1,0,NULL),(32,'AL','ALB','Albanie',1,0,NULL),(33,'AS','ASM','Samoa américaines',1,0,NULL),(34,'AD','AND','Andorre',1,0,NULL),(35,'AO','AGO','Angola',1,0,NULL),(36,'AI','AIA','Anguilla',1,0,NULL),(37,'AQ','ATA','Antarctique',1,0,NULL),(38,'AG','ATG','Antigua-et-Barbuda',1,0,NULL),(39,'AM','ARM','Arménie',1,0,NULL),(40,'AW','ABW','Aruba',1,0,NULL),(41,'AT','AUT','Autriche',1,0,1),(42,'AZ','AZE','Azerbaïdjan',1,0,NULL),(43,'BS','BHS','Bahamas',1,0,NULL),(44,'BH','BHR','Bahreïn',1,0,NULL),(45,'BD','BGD','Bangladesh',1,0,NULL),(46,'BB','BRB','Barbade',1,0,NULL),(47,'BY','BLR','Biélorussie',1,0,NULL),(48,'BZ','BLZ','Belize',1,0,NULL),(49,'BJ','BEN','Bénin',1,0,NULL),(50,'BM','BMU','Bermudes',1,0,NULL),(51,'BT','BTN','Bhoutan',1,0,NULL),(52,'BO','BOL','Bolivie',1,0,NULL),(53,'BA','BIH','Bosnie-Herzégovine',1,0,NULL),(54,'BW','BWA','Botswana',1,0,NULL),(55,'BV','BVT','Ile Bouvet',1,0,NULL),(56,'BR','BRA','Brazil',1,0,NULL),(57,'IO','IOT','Territoire britannique de l\'Océan Indien',1,0,NULL),(58,'BN','BRN','Brunei',1,0,NULL),(59,'BG','BGR','Bulgarie',1,0,1),(60,'BF','BFA','Burkina Faso',1,0,NULL),(61,'BI','BDI','Burundi',1,0,NULL),(62,'KH','KHM','Cambodge',1,0,NULL),(63,'CV','CPV','Cap-Vert',1,0,NULL),(64,'KY','CYM','Iles Cayman',1,0,NULL),(65,'CF','CAF','République centrafricaine',1,0,NULL),(66,'TD','TCD','Tchad',1,0,NULL),(67,'CL','CHL','Chili',1,0,NULL),(68,'CX','CXR','Ile Christmas',1,0,NULL),(69,'CC','CCK','Iles des Cocos (Keeling)',1,0,NULL),(70,'CO','COL','Colombie',1,0,NULL),(71,'KM','COM','Comores',1,0,NULL),(72,'CG','COG','Congo',1,0,NULL),(73,'CD','COD','République démocratique du Congo',1,0,NULL),(74,'CK','COK','Iles Cook',1,0,NULL),(75,'CR','CRI','Costa Rica',1,0,NULL),(76,'HR','HRV','Croatie',1,0,1),(77,'CU','CUB','Cuba',1,0,NULL),(78,'CY','CYP','Chypre',1,0,1),(79,'CZ','CZE','République Tchèque',1,0,1),(80,'DK','DNK','Danemark',1,0,1),(81,'DJ','DJI','Djibouti',1,0,NULL),(82,'DM','DMA','Dominique',1,0,NULL),(83,'DO','DOM','République Dominicaine',1,0,NULL),(84,'EC','ECU','Equateur',1,0,NULL),(85,'EG','EGY','Egypte',1,0,NULL),(86,'SV','SLV','Salvador',1,0,NULL),(87,'GQ','GNQ','Guinée Equatoriale',1,0,NULL),(88,'ER','ERI','Erythrée',1,0,NULL),(89,'EE','EST','Estonia',1,0,1),(90,'ET','ETH','Ethiopie',1,0,NULL),(91,'FK','FLK','Iles Falkland',1,0,NULL),(92,'FO','FRO','Iles Féroé',1,0,NULL),(93,'FJ','FJI','Iles Fidji',1,0,NULL),(94,'FI','FIN','Finlande',1,0,1),(95,'GF','GUF','Guyane française',1,0,NULL),(96,'PF','PYF','Polynésie française',1,0,NULL),(97,'TF','ATF','Terres australes françaises',1,0,NULL),(98,'GM','GMB','Gambie',1,0,NULL),(99,'GE','GEO','Georgia',1,0,NULL),(100,'GH','GHA','Ghana',1,0,NULL),(101,'GI','GIB','Gibraltar',1,0,NULL),(102,'GR','GRC','Greece',1,0,1),(103,'GL','GRL','Groenland',1,0,NULL),(104,'GD','GRD','Grenade',1,0,NULL),(106,'GU','GUM','Guam',1,0,NULL),(107,'GT','GTM','Guatemala',1,0,NULL),(108,'GN','GIN','Guinea',1,0,NULL),(109,'GW','GNB','Guinea-Bissao',1,0,NULL),(111,'HT','HTI','Haiti',1,0,NULL),(112,'HM','HMD','Iles Heard et McDonald',1,0,NULL),(113,'VA','VAT','Saint-Siège (Vatican)',1,0,NULL),(114,'HN','HND','Honduras',1,0,NULL),(115,'HK','HKG','Hong Kong',1,0,NULL),(116,'IS','ISL','Islande',1,0,NULL),(117,'IN','IND','India',1,0,NULL),(118,'ID','IDN','Indonésie',1,0,NULL),(119,'IR','IRN','Iran',1,0,NULL),(120,'IQ','IRQ','Iraq',1,0,NULL),(121,'IL','ISR','Israel',1,0,NULL),(122,'JM','JAM','Jamaïque',1,0,NULL),(123,'JP','JPN','Japon',1,0,NULL),(124,'JO','JOR','Jordanie',1,0,NULL),(125,'KZ','KAZ','Kazakhstan',1,0,NULL),(126,'KE','KEN','Kenya',1,0,NULL),(127,'KI','KIR','Kiribati',1,0,NULL),(128,'KP','PRK','North Corea',1,0,NULL),(129,'KR','KOR','South Corea',1,0,NULL),(130,'KW','KWT','Koweït',1,0,NULL),(131,'KG','KGZ','Kirghizistan',1,0,NULL),(132,'LA','LAO','Laos',1,0,NULL),(133,'LV','LVA','Lettonie',1,0,1),(134,'LB','LBN','Liban',1,0,NULL),(135,'LS','LSO','Lesotho',1,0,NULL),(136,'LR','LBR','Liberia',1,0,NULL),(137,'LY','LBY','Libye',1,0,NULL),(138,'LI','LIE','Liechtenstein',1,0,NULL),(139,'LT','LTU','Lituanie',1,0,1),(140,'LU','LUX','Luxembourg',1,0,1),(141,'MO','MAC','Macao',1,0,NULL),(142,'MK','MKD','ex-République yougoslave de Macédoine',1,0,NULL),(143,'MG','MDG','Madagascar',1,0,NULL),(144,'MW','MWI','Malawi',1,0,NULL),(145,'MY','MYS','Malaisie',1,0,NULL),(146,'MV','MDV','Maldives',1,0,NULL),(147,'ML','MLI','Mali',1,0,NULL),(148,'MT','MLT','Malte',1,0,1),(149,'MH','MHL','Iles Marshall',1,0,NULL),(151,'MR','MRT','Mauritanie',1,0,NULL),(152,'MU','MUS','Maurice',1,0,NULL),(153,'YT','MYT','Mayotte',1,0,NULL),(154,'MX','MEX','Mexique',1,0,NULL),(155,'FM','FSM','Micronésie',1,0,NULL),(156,'MD','MDA','Moldavie',1,0,NULL),(157,'MN','MNG','Mongolie',1,0,NULL),(158,'MS','MSR','Monserrat',1,0,NULL),(159,'MZ','MOZ','Mozambique',1,0,NULL),(160,'MM','MMR','Birmanie (Myanmar)',1,0,NULL),(161,'NA','NAM','Namibie',1,0,NULL),(162,'NR','NRU','Nauru',1,0,NULL),(163,'NP','NPL','Népal',1,0,NULL),(164,'AN',NULL,'Antilles néerlandaises',1,0,NULL),(165,'NC','NCL','Nouvelle-Calédonie',1,0,NULL),(166,'NZ','NZL','Nouvelle-Zélande',1,0,NULL),(167,'NI','NIC','Nicaragua',1,0,NULL),(168,'NE','NER','Niger',1,0,NULL),(169,'NG','NGA','Nigeria',1,0,NULL),(170,'NU','NIU','Nioué',1,0,NULL),(171,'NF','NFK','Ile Norfolk',1,0,NULL),(172,'MP','MNP','Mariannes du Nord',1,0,NULL),(173,'NO','NOR','Norvège',1,0,NULL),(174,'OM','OMN','Oman',1,0,NULL),(175,'PK','PAK','Pakistan',1,0,NULL),(176,'PW','PLW','Palaos',1,0,NULL),(177,'PS','PSE','Territoire Palestinien Occupé',1,0,NULL),(178,'PA','PAN','Panama',1,0,NULL),(179,'PG','PNG','Papouasie-Nouvelle-Guinée',1,0,NULL),(180,'PY','PRY','Paraguay',1,0,NULL),(181,'PE','PER','Peru',1,0,NULL),(182,'PH','PHL','Philippines',1,0,NULL),(183,'PN','PCN','Iles Pitcairn',1,0,NULL),(184,'PL','POL','Pologne',1,0,1),(185,'PR','PRI','Porto Rico',1,0,NULL),(186,'QA','QAT','Qatar',1,0,NULL),(188,'RO','ROU','Roumanie',1,0,1),(189,'RW','RWA','Rwanda',1,0,NULL),(190,'SH','SHN','Sainte-Hélène',1,0,NULL),(191,'KN','KNA','Saint-Christophe-et-Niévès',1,0,NULL),(192,'LC','LCA','Sainte-Lucie',1,0,NULL),(193,'PM','SPM','Saint-Pierre-et-Miquelon',1,0,NULL),(194,'VC','VCT','Saint-Vincent-et-les-Grenadines',1,0,NULL),(195,'WS','WSM','Samoa',1,0,NULL),(196,'SM','SMR','Saint-Marin',1,0,NULL),(197,'ST','STP','Sao Tomé-et-Principe',1,0,NULL),(198,'RS','SRB','Serbie',1,0,NULL),(199,'SC','SYC','Seychelles',1,0,NULL),(200,'SL','SLE','Sierra Leone',1,0,NULL),(201,'SK','SVK','Slovaquie',1,0,1),(202,'SI','SVN','Slovénie',1,0,1),(203,'SB','SLB','Iles Salomon',1,0,NULL),(204,'SO','SOM','Somalie',1,0,NULL),(205,'ZA','ZAF','Afrique du Sud',1,0,NULL),(206,'GS','SGS','Iles Géorgie du Sud et Sandwich du Sud',1,0,NULL),(207,'LK','LKA','Sri Lanka',1,0,NULL),(208,'SD','SDN','Soudan',1,0,NULL),(209,'SR','SUR','Suriname',1,0,NULL),(210,'SJ','SJM','Iles Svalbard et Jan Mayen',1,0,NULL),(211,'SZ','SWZ','Swaziland',1,0,NULL),(212,'SY','SYR','Syrie',1,0,NULL),(213,'TW','TWN','Taïwan',1,0,NULL),(214,'TJ','TJK','Tadjikistan',1,0,NULL),(215,'TZ','TZA','Tanzanie',1,0,NULL),(216,'TH','THA','Thaïlande',1,0,NULL),(217,'TL','TLS','Timor Oriental',1,0,NULL),(218,'TK','TKL','Tokélaou',1,0,NULL),(219,'TO','TON','Tonga',1,0,NULL),(220,'TT','TTO','Trinité-et-Tobago',1,0,NULL),(221,'TR','TUR','Turquie',1,0,NULL),(222,'TM','TKM','Turkménistan',1,0,NULL),(223,'TC','TCA','Iles Turks-et-Caicos',1,0,NULL),(224,'TV','TUV','Tuvalu',1,0,NULL),(225,'UG','UGA','Ouganda',1,0,NULL),(226,'UA','UKR','Ukraine',1,0,NULL),(227,'xx','ARE','Émirats arabes unishh',1,0,NULL),(228,'UM','UMI','Iles mineures éloignées des États-Unis',1,0,NULL),(229,'UY','URY','Uruguay',1,0,NULL),(230,'UZ','UZB','Ouzbékistan',1,0,NULL),(231,'VU','VUT','Vanuatu',1,0,NULL),(232,'VE','VEN','Vénézuela',1,0,NULL),(233,'VN','VNM','Viêt Nam',1,0,NULL),(234,'VG','VGB','Iles Vierges britanniques',1,0,NULL),(235,'VI','VIR','Iles Vierges américaines',1,0,NULL),(236,'WF','WLF','Wallis-et-Futuna',1,0,NULL),(237,'EH','ESH','Sahara occidental',1,0,NULL),(238,'YE','YEM','Yémen',1,0,NULL),(239,'ZM','ZMB','Zambie',1,0,NULL),(240,'ZW','ZWE','Zimbabwe',1,0,NULL),(241,'GG','GGY','Guernesey',1,0,NULL),(242,'IM','IMN','Ile de Man',1,0,1),(243,'JE','JEY','Jersey',1,0,NULL),(244,'ME','MNE','Monténégro',1,0,NULL),(245,'BL','BLM','Saint-Barthélemy',1,0,NULL),(246,'MF','MAF','Saint-Martin',1,0,NULL),(247,'hh',NULL,'hhh',1,0,NULL); +INSERT INTO `llx_c_country` VALUES (0,'',NULL,'-',1,1,0),(1,'FR','FRA','France',1,0,1),(2,'BE','BEL','Belgium',1,0,1),(3,'IT','ITA','Italy',1,0,1),(4,'ES','ESP','Spain',1,0,1),(5,'DE','DEU','Germany',1,0,1),(6,'CH','CHE','Switzerland',1,0,0),(7,'GB','GBR','United Kingdom',1,0,1),(8,'IE','IRL','Irland',1,0,1),(9,'CN','CHN','China',1,0,0),(10,'TN','TUN','Tunisia',1,0,0),(11,'US','USA','United States',1,0,0),(12,'MA','MAR','Maroc',1,0,0),(13,'DZ','DZA','Algeria',1,0,0),(14,'CA','CAN','Canada',1,0,0),(15,'TG','TGO','Togo',1,0,0),(16,'GA','GAB','Gabon',1,0,0),(17,'NL','NLD','Nerderland',1,0,1),(18,'HU','HUN','Hongrie',1,0,1),(19,'RU','RUS','Russia',1,0,0),(20,'SE','SWE','Sweden',1,0,1),(21,'CI','CIV','Côte d\'Ivoire',1,0,0),(22,'SN','SEN','Senegal',1,0,0),(23,'AR','ARG','Argentine',1,0,0),(24,'CM','CMR','Cameroun',1,0,0),(25,'PT','PRT','Portugal',1,0,1),(26,'SA','SAU','Saudi Arabia',1,0,0),(27,'MC','MCO','Monaco',1,0,1),(28,'AU','AUS','Australia',1,0,0),(29,'SG','SGP','Singapour',1,0,0),(30,'AF','AFG','Afghanistan',1,0,0),(31,'AX','ALA','Iles Aland',1,0,0),(32,'AL','ALB','Albanie',1,0,0),(33,'AS','ASM','Samoa américaines',1,0,0),(34,'AD','AND','Andorre',1,0,0),(35,'AO','AGO','Angola',1,0,0),(36,'AI','AIA','Anguilla',1,0,0),(37,'AQ','ATA','Antarctique',1,0,0),(38,'AG','ATG','Antigua-et-Barbuda',1,0,0),(39,'AM','ARM','Arménie',1,0,0),(40,'AW','ABW','Aruba',1,0,0),(41,'AT','AUT','Autriche',1,0,1),(42,'AZ','AZE','Azerbaïdjan',1,0,0),(43,'BS','BHS','Bahamas',1,0,0),(44,'BH','BHR','Bahreïn',1,0,0),(45,'BD','BGD','Bangladesh',1,0,0),(46,'BB','BRB','Barbade',1,0,0),(47,'BY','BLR','Biélorussie',1,0,0),(48,'BZ','BLZ','Belize',1,0,0),(49,'BJ','BEN','Bénin',1,0,0),(50,'BM','BMU','Bermudes',1,0,0),(51,'BT','BTN','Bhoutan',1,0,0),(52,'BO','BOL','Bolivie',1,0,0),(53,'BA','BIH','Bosnie-Herzégovine',1,0,0),(54,'BW','BWA','Botswana',1,0,0),(55,'BV','BVT','Ile Bouvet',1,0,0),(56,'BR','BRA','Brazil',1,0,0),(57,'IO','IOT','Territoire britannique de l\'Océan Indien',1,0,0),(58,'BN','BRN','Brunei',1,0,0),(59,'BG','BGR','Bulgarie',1,0,1),(60,'BF','BFA','Burkina Faso',1,0,0),(61,'BI','BDI','Burundi',1,0,0),(62,'KH','KHM','Cambodge',1,0,0),(63,'CV','CPV','Cap-Vert',1,0,0),(64,'KY','CYM','Iles Cayman',1,0,0),(65,'CF','CAF','République centrafricaine',1,0,0),(66,'TD','TCD','Tchad',1,0,0),(67,'CL','CHL','Chili',1,0,0),(68,'CX','CXR','Ile Christmas',1,0,0),(69,'CC','CCK','Iles des Cocos (Keeling)',1,0,0),(70,'CO','COL','Colombie',1,0,0),(71,'KM','COM','Comores',1,0,0),(72,'CG','COG','Congo',1,0,0),(73,'CD','COD','République démocratique du Congo',1,0,0),(74,'CK','COK','Iles Cook',1,0,0),(75,'CR','CRI','Costa Rica',1,0,0),(76,'HR','HRV','Croatie',1,0,1),(77,'CU','CUB','Cuba',1,0,0),(78,'CY','CYP','Chypre',1,0,1),(79,'CZ','CZE','République Tchèque',1,0,1),(80,'DK','DNK','Danemark',1,0,1),(81,'DJ','DJI','Djibouti',1,0,0),(82,'DM','DMA','Dominique',1,0,0),(83,'DO','DOM','République Dominicaine',1,0,0),(84,'EC','ECU','Equateur',1,0,0),(85,'EG','EGY','Egypte',1,0,0),(86,'SV','SLV','Salvador',1,0,0),(87,'GQ','GNQ','Guinée Equatoriale',1,0,0),(88,'ER','ERI','Erythrée',1,0,0),(89,'EE','EST','Estonia',1,0,1),(90,'ET','ETH','Ethiopie',1,0,0),(91,'FK','FLK','Iles Falkland',1,0,0),(92,'FO','FRO','Iles Féroé',1,0,0),(93,'FJ','FJI','Iles Fidji',1,0,0),(94,'FI','FIN','Finlande',1,0,1),(95,'GF','GUF','Guyane française',1,0,0),(96,'PF','PYF','Polynésie française',1,0,0),(97,'TF','ATF','Terres australes françaises',1,0,0),(98,'GM','GMB','Gambie',1,0,0),(99,'GE','GEO','Georgia',1,0,0),(100,'GH','GHA','Ghana',1,0,0),(101,'GI','GIB','Gibraltar',1,0,0),(102,'GR','GRC','Greece',1,0,1),(103,'GL','GRL','Groenland',1,0,0),(104,'GD','GRD','Grenade',1,0,0),(106,'GU','GUM','Guam',1,0,0),(107,'GT','GTM','Guatemala',1,0,0),(108,'GN','GIN','Guinea',1,0,0),(109,'GW','GNB','Guinea-Bissao',1,0,0),(111,'HT','HTI','Haiti',1,0,0),(112,'HM','HMD','Iles Heard et McDonald',1,0,0),(113,'VA','VAT','Saint-Siège (Vatican)',1,0,0),(114,'HN','HND','Honduras',1,0,0),(115,'HK','HKG','Hong Kong',1,0,0),(116,'IS','ISL','Islande',1,0,0),(117,'IN','IND','India',1,0,0),(118,'ID','IDN','Indonésie',1,0,0),(119,'IR','IRN','Iran',1,0,0),(120,'IQ','IRQ','Iraq',1,0,0),(121,'IL','ISR','Israel',1,0,0),(122,'JM','JAM','Jamaïque',1,0,0),(123,'JP','JPN','Japon',1,0,0),(124,'JO','JOR','Jordanie',1,0,0),(125,'KZ','KAZ','Kazakhstan',1,0,0),(126,'KE','KEN','Kenya',1,0,0),(127,'KI','KIR','Kiribati',1,0,0),(128,'KP','PRK','North Corea',1,0,0),(129,'KR','KOR','South Corea',1,0,0),(130,'KW','KWT','Koweït',1,0,0),(131,'KG','KGZ','Kirghizistan',1,0,0),(132,'LA','LAO','Laos',1,0,0),(133,'LV','LVA','Lettonie',1,0,1),(134,'LB','LBN','Liban',1,0,0),(135,'LS','LSO','Lesotho',1,0,0),(136,'LR','LBR','Liberia',1,0,0),(137,'LY','LBY','Libye',1,0,0),(138,'LI','LIE','Liechtenstein',1,0,0),(139,'LT','LTU','Lituanie',1,0,1),(140,'LU','LUX','Luxembourg',1,0,1),(141,'MO','MAC','Macao',1,0,0),(142,'MK','MKD','ex-République yougoslave de Macédoine',1,0,0),(143,'MG','MDG','Madagascar',1,0,0),(144,'MW','MWI','Malawi',1,0,0),(145,'MY','MYS','Malaisie',1,0,0),(146,'MV','MDV','Maldives',1,0,0),(147,'ML','MLI','Mali',1,0,0),(148,'MT','MLT','Malte',1,0,1),(149,'MH','MHL','Iles Marshall',1,0,0),(151,'MR','MRT','Mauritanie',1,0,0),(152,'MU','MUS','Maurice',1,0,0),(153,'YT','MYT','Mayotte',1,0,0),(154,'MX','MEX','Mexique',1,0,0),(155,'FM','FSM','Micronésie',1,0,0),(156,'MD','MDA','Moldavie',1,0,0),(157,'MN','MNG','Mongolie',1,0,0),(158,'MS','MSR','Monserrat',1,0,0),(159,'MZ','MOZ','Mozambique',1,0,0),(160,'MM','MMR','Birmanie (Myanmar)',1,0,0),(161,'NA','NAM','Namibie',1,0,0),(162,'NR','NRU','Nauru',1,0,0),(163,'NP','NPL','Népal',1,0,0),(164,'AN',NULL,'Antilles néerlandaises',1,0,0),(165,'NC','NCL','Nouvelle-Calédonie',1,0,0),(166,'NZ','NZL','Nouvelle-Zélande',1,0,0),(167,'NI','NIC','Nicaragua',1,0,0),(168,'NE','NER','Niger',1,0,0),(169,'NG','NGA','Nigeria',1,0,0),(170,'NU','NIU','Nioué',1,0,0),(171,'NF','NFK','Ile Norfolk',1,0,0),(172,'MP','MNP','Mariannes du Nord',1,0,0),(173,'NO','NOR','Norvège',1,0,0),(174,'OM','OMN','Oman',1,0,0),(175,'PK','PAK','Pakistan',1,0,0),(176,'PW','PLW','Palaos',1,0,0),(177,'PS','PSE','Territoire Palestinien Occupé',1,0,0),(178,'PA','PAN','Panama',1,0,0),(179,'PG','PNG','Papouasie-Nouvelle-Guinée',1,0,0),(180,'PY','PRY','Paraguay',1,0,0),(181,'PE','PER','Peru',1,0,0),(182,'PH','PHL','Philippines',1,0,0),(183,'PN','PCN','Iles Pitcairn',1,0,0),(184,'PL','POL','Pologne',1,0,1),(185,'PR','PRI','Porto Rico',1,0,0),(186,'QA','QAT','Qatar',1,0,0),(188,'RO','ROU','Roumanie',1,0,1),(189,'RW','RWA','Rwanda',1,0,0),(190,'SH','SHN','Sainte-Hélène',1,0,0),(191,'KN','KNA','Saint-Christophe-et-Niévès',1,0,0),(192,'LC','LCA','Sainte-Lucie',1,0,0),(193,'PM','SPM','Saint-Pierre-et-Miquelon',1,0,0),(194,'VC','VCT','Saint-Vincent-et-les-Grenadines',1,0,0),(195,'WS','WSM','Samoa',1,0,0),(196,'SM','SMR','Saint-Marin',1,0,0),(197,'ST','STP','Sao Tomé-et-Principe',1,0,0),(198,'RS','SRB','Serbie',1,0,0),(199,'SC','SYC','Seychelles',1,0,0),(200,'SL','SLE','Sierra Leone',1,0,0),(201,'SK','SVK','Slovaquie',1,0,1),(202,'SI','SVN','Slovénie',1,0,1),(203,'SB','SLB','Iles Salomon',1,0,0),(204,'SO','SOM','Somalie',1,0,0),(205,'ZA','ZAF','Afrique du Sud',1,0,0),(206,'GS','SGS','Iles Géorgie du Sud et Sandwich du Sud',1,0,0),(207,'LK','LKA','Sri Lanka',1,0,0),(208,'SD','SDN','Soudan',1,0,0),(209,'SR','SUR','Suriname',1,0,0),(210,'SJ','SJM','Iles Svalbard et Jan Mayen',1,0,0),(211,'SZ','SWZ','Swaziland',1,0,0),(212,'SY','SYR','Syrie',1,0,0),(213,'TW','TWN','Taïwan',1,0,0),(214,'TJ','TJK','Tadjikistan',1,0,0),(215,'TZ','TZA','Tanzanie',1,0,0),(216,'TH','THA','Thaïlande',1,0,0),(217,'TL','TLS','Timor Oriental',1,0,0),(218,'TK','TKL','Tokélaou',1,0,0),(219,'TO','TON','Tonga',1,0,0),(220,'TT','TTO','Trinité-et-Tobago',1,0,0),(221,'TR','TUR','Turquie',1,0,0),(222,'TM','TKM','Turkménistan',1,0,0),(223,'TC','TCA','Iles Turks-et-Caicos',1,0,0),(224,'TV','TUV','Tuvalu',1,0,0),(225,'UG','UGA','Ouganda',1,0,0),(226,'UA','UKR','Ukraine',1,0,0),(227,'xx','ARE','Émirats arabes unishh',1,0,0),(228,'UM','UMI','Iles mineures éloignées des États-Unis',1,0,0),(229,'UY','URY','Uruguay',1,0,0),(230,'UZ','UZB','Ouzbékistan',1,0,0),(231,'VU','VUT','Vanuatu',1,0,0),(232,'VE','VEN','Vénézuela',1,0,0),(233,'VN','VNM','Viêt Nam',1,0,0),(234,'VG','VGB','Iles Vierges britanniques',1,0,0),(235,'VI','VIR','Iles Vierges américaines',1,0,0),(236,'WF','WLF','Wallis-et-Futuna',1,0,0),(237,'EH','ESH','Sahara occidental',1,0,0),(238,'YE','YEM','Yémen',1,0,0),(239,'ZM','ZMB','Zambie',1,0,0),(240,'ZW','ZWE','Zimbabwe',1,0,0),(241,'GG','GGY','Guernesey',1,0,0),(242,'IM','IMN','Ile de Man',1,0,1),(243,'JE','JEY','Jersey',1,0,0),(244,'ME','MNE','Monténégro',1,0,0),(245,'BL','BLM','Saint-Barthélemy',1,0,0),(246,'MF','MAF','Saint-Martin',1,0,0),(247,'hh',NULL,'hhh',1,0,0); /*!40000 ALTER TABLE `llx_c_country` ENABLE KEYS */; UNLOCK TABLES; @@ -1691,13 +1949,13 @@ DROP TABLE IF EXISTS `llx_c_currencies`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_currencies` ( - `code_iso` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, - `unicode` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `code_iso` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `unicode` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`code_iso`), UNIQUE KEY `uk_c_currencies_code_iso` (`code_iso`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1719,19 +1977,19 @@ DROP TABLE IF EXISTS `llx_c_departements`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_departements` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code_departement` varchar(6) COLLATE utf8_unicode_ci NOT NULL, + `code_departement` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_region` int(11) DEFAULT NULL, - `cheflieu` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `cheflieu` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tncc` int(11) DEFAULT NULL, - `ncc` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `nom` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ncc` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `nom` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_departements` (`code_departement`,`fk_region`), KEY `idx_departements_fk_region` (`fk_region`), CONSTRAINT `fk_departements_code_region` FOREIGN KEY (`fk_region`) REFERENCES `llx_c_regions` (`code_region`), CONSTRAINT `fk_departements_fk_region` FOREIGN KEY (`fk_region`) REFERENCES `llx_c_regions` (`code_region`) -) ENGINE=InnoDB AUTO_INCREMENT=2100 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2100 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1753,15 +2011,15 @@ DROP TABLE IF EXISTS `llx_c_ecotaxe`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_ecotaxe` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(64) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `price` double(24,8) DEFAULT NULL, - `organization` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `organization` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_pays` int(11) NOT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_ecotaxe` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1783,13 +2041,13 @@ DROP TABLE IF EXISTS `llx_c_effectif`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_effectif` ( `id` int(11) NOT NULL, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_effectif` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1815,14 +2073,14 @@ CREATE TABLE `llx_c_email_senderprofile` ( `private` smallint(6) NOT NULL DEFAULT 0, `date_creation` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `signature` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `signature` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` smallint(6) DEFAULT 0, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_email_senderprofile` (`entity`,`label`,`email`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1844,25 +2102,25 @@ DROP TABLE IF EXISTS `llx_c_email_templates`; CREATE TABLE `llx_c_email_templates` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `type_template` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type_template` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `private` smallint(6) NOT NULL DEFAULT 0, `fk_user` int(11) DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` smallint(6) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `topic` text COLLATE utf8_unicode_ci DEFAULT NULL, - `content` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `content_lines` text COLLATE utf8_unicode_ci DEFAULT NULL, - `enabled` varchar(255) COLLATE utf8_unicode_ci DEFAULT '1', - `joinfiles` varchar(255) COLLATE utf8_unicode_ci DEFAULT '1', + `topic` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `content` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `content_lines` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `enabled` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '1', + `joinfiles` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '1', PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_email_templates` (`entity`,`label`,`lang`), KEY `idx_type` (`type_template`) -) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1884,11 +2142,11 @@ DROP TABLE IF EXISTS `llx_c_exp_tax_cat`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_exp_tax_cat` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(48) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `active` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1915,7 +2173,7 @@ CREATE TABLE `llx_c_exp_tax_range` ( `entity` int(11) NOT NULL DEFAULT 1, `active` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1938,19 +2196,19 @@ DROP TABLE IF EXISTS `llx_c_field_list`; CREATE TABLE `llx_c_field_list` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `element` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `element` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `name` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `alias` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `title` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `align` varchar(6) COLLATE utf8_unicode_ci DEFAULT 'left', + `name` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `alias` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `title` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `align` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT 'left', `sort` tinyint(4) NOT NULL DEFAULT 1, `search` tinyint(4) NOT NULL DEFAULT 0, `visible` tinyint(4) NOT NULL DEFAULT 1, - `enabled` varchar(255) COLLATE utf8_unicode_ci DEFAULT '1', + `enabled` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '1', `rang` int(11) DEFAULT 0, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1972,11 +2230,11 @@ DROP TABLE IF EXISTS `llx_c_format_cards`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_format_cards` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `paper_size` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `orientation` varchar(1) COLLATE utf8_unicode_ci NOT NULL, - `metric` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `paper_size` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `orientation` varchar(1) COLLATE utf8mb3_unicode_ci NOT NULL, + `metric` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL, `leftmargin` double(24,8) NOT NULL, `topmargin` double(24,8) NOT NULL, `nx` int(11) NOT NULL, @@ -1990,7 +2248,7 @@ CREATE TABLE `llx_c_format_cards` ( `custom_y` double(24,8) NOT NULL, `active` int(11) NOT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2014,14 +2272,14 @@ CREATE TABLE `llx_c_forme_juridique` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `code` int(11) NOT NULL, `fk_pays` int(11) NOT NULL, - `libelle` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `isvatexempted` tinyint(4) NOT NULL DEFAULT 0, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_forme_juridique` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=100242 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=100318 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2030,7 +2288,7 @@ CREATE TABLE `llx_c_forme_juridique` ( LOCK TABLES `llx_c_forme_juridique` WRITE; /*!40000 ALTER TABLE `llx_c_forme_juridique` DISABLE KEYS */; -INSERT INTO `llx_c_forme_juridique` VALUES (100001,100001,1,'Etudiant',0,0,'cabinetmed',0),(100002,100002,1,'Retraité',0,0,'cabinetmed',0),(100003,100003,1,'Artisan',0,0,'cabinetmed',0),(100004,100004,1,'Femme de ménage',0,0,'cabinetmed',0),(100005,100005,1,'Professeur',0,0,'cabinetmed',0),(100006,100006,1,'Profession libérale',0,0,'cabinetmed',0),(100007,100007,1,'Informaticien',0,0,'cabinetmed',0),(100009,0,0,'-',0,1,NULL,0),(100010,2301,23,'Monotributista',0,1,NULL,0),(100011,2302,23,'Sociedad Civil',0,1,NULL,0),(100012,2303,23,'Sociedades Comerciales',0,1,NULL,0),(100013,2304,23,'Sociedades de Hecho',0,1,NULL,0),(100014,2305,23,'Sociedades Irregulares',0,1,NULL,0),(100015,2306,23,'Sociedad Colectiva',0,1,NULL,0),(100016,2307,23,'Sociedad en Comandita Simple',0,1,NULL,0),(100017,2308,23,'Sociedad de Capital e Industria',0,1,NULL,0),(100018,2309,23,'Sociedad Accidental o en participación',0,1,NULL,0),(100019,2310,23,'Sociedad de Responsabilidad Limitada',0,1,NULL,0),(100020,2311,23,'Sociedad Anónima',0,1,NULL,0),(100021,2312,23,'Sociedad Anónima con Participación Estatal Mayoritaria',0,1,NULL,0),(100022,2313,23,'Sociedad en Comandita por Acciones (arts. 315 a 324, LSC)',0,1,NULL,0),(100023,11,1,'Artisan Commerçant (EI)',0,1,NULL,0),(100024,12,1,'Commerçant (EI)',0,1,NULL,0),(100025,13,1,'Artisan (EI)',0,1,NULL,0),(100026,14,1,'Officier public ou ministériel',0,1,NULL,0),(100027,15,1,'Profession libérale (EI)',0,1,NULL,0),(100028,16,1,'Exploitant agricole',0,1,NULL,0),(100029,17,1,'Agent commercial',0,1,NULL,0),(100030,18,1,'Associé Gérant de société',0,1,NULL,0),(100031,19,1,'Personne physique',0,1,NULL,0),(100032,21,1,'Indivision',0,1,NULL,0),(100033,22,1,'Société créée de fait',0,1,NULL,0),(100034,23,1,'Société en participation',0,1,NULL,0),(100035,27,1,'Paroisse hors zone concordataire',0,1,NULL,0),(100036,29,1,'Groupement de droit privé non doté de la personnalité morale',0,1,NULL,0),(100037,31,1,'Personne morale de droit étranger, immatriculée au RCS',0,1,NULL,0),(100038,32,1,'Personne morale de droit étranger, non immatriculée au RCS',0,1,NULL,0),(100039,35,1,'Régime auto-entrepreneur',0,1,NULL,0),(100040,41,1,'Etablissement public ou régie à caractère industriel ou commercial',0,1,NULL,0),(100041,51,1,'Société coopérative commerciale particulière',0,1,NULL,0),(100042,52,1,'Société en nom collectif',0,1,NULL,0),(100043,53,1,'Société en commandite',0,1,NULL,0),(100044,54,1,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100045,55,1,'Société anonyme à conseil d administration',0,1,NULL,0),(100046,56,1,'Société anonyme à directoire',0,1,NULL,0),(100047,57,1,'Société par actions simplifiée (SAS)',0,1,NULL,0),(100048,58,1,'Entreprise Unipersonnelle à Responsabilité Limitée (EURL)',0,1,NULL,0),(100049,59,1,'Société par actions simplifiée unipersonnelle (SASU)',0,1,NULL,0),(100050,60,1,'Entreprise Individuelle à Responsabilité Limitée (EIRL)',0,1,NULL,0),(100051,61,1,'Caisse d\'épargne et de prévoyance',0,1,NULL,0),(100052,62,1,'Groupement d\'intérêt économique (GIE)',0,1,NULL,0),(100053,63,1,'Société coopérative agricole',0,1,NULL,0),(100054,64,1,'Société non commerciale d assurances',0,1,NULL,0),(100055,65,1,'Société civile',0,1,NULL,0),(100056,69,1,'Personnes de droit privé inscrites au RCS',0,1,NULL,0),(100057,71,1,'Administration de l état',0,1,NULL,0),(100058,72,1,'Collectivité territoriale',0,1,NULL,0),(100059,73,1,'Etablissement public administratif',0,1,NULL,0),(100060,74,1,'Personne morale de droit public administratif',0,1,NULL,0),(100061,81,1,'Organisme gérant régime de protection social à adhésion obligatoire',0,1,NULL,0),(100062,82,1,'Organisme mutualiste',0,1,NULL,0),(100063,83,1,'Comité d entreprise',0,1,NULL,0),(100064,84,1,'Organisme professionnel',0,1,NULL,0),(100065,85,1,'Organisme de retraite à adhésion non obligatoire',0,1,NULL,0),(100066,91,1,'Syndicat de propriétaires',0,1,NULL,0),(100067,92,1,'Association loi 1901 ou assimilé',0,1,NULL,0),(100068,93,1,'Fondation',0,1,NULL,0),(100069,99,1,'Personne morale de droit privé',0,1,NULL,0),(100070,200,2,'Indépendant',0,1,NULL,0),(100071,201,2,'SRL - Société à responsabilité limitée',0,1,NULL,0),(100072,202,2,'SA - Société Anonyme',0,1,NULL,0),(100073,203,2,'SCRL - Société coopérative à responsabilité limitée',0,1,NULL,0),(100074,204,2,'ASBL - Association sans but Lucratif',0,1,NULL,0),(100075,205,2,'SCRI - Société coopérative à responsabilité illimitée',0,1,NULL,0),(100076,206,2,'SCS - Société en commandite simple',0,1,NULL,0),(100077,207,2,'SCA - Société en commandite par action',0,1,NULL,0),(100078,208,2,'SNC - Société en nom collectif',0,1,NULL,0),(100079,209,2,'GIE - Groupement d intérêt économique',0,1,NULL,0),(100080,210,2,'GEIE - Groupement européen d intérêt économique',0,1,NULL,0),(100081,220,2,'Eenmanszaak',0,1,NULL,0),(100082,221,2,'BVBA - Besloten vennootschap met beperkte aansprakelijkheid',0,1,NULL,0),(100083,222,2,'NV - Naamloze Vennootschap',0,1,NULL,0),(100084,223,2,'CVBA - Coöperatieve vennootschap met beperkte aansprakelijkheid',0,1,NULL,0),(100085,224,2,'VZW - Vereniging zonder winstoogmerk',0,1,NULL,0),(100086,225,2,'CVOA - Coöperatieve vennootschap met onbeperkte aansprakelijkheid ',0,1,NULL,0),(100087,226,2,'GCV - Gewone commanditaire vennootschap',0,1,NULL,0),(100088,227,2,'Comm.VA - Commanditaire vennootschap op aandelen',0,1,NULL,0),(100089,228,2,'VOF - Vennootschap onder firma',0,1,NULL,0),(100090,229,2,'VS0 - Vennootschap met sociaal oogmerk',0,1,NULL,0),(100091,500,5,'GmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100092,501,5,'AG - Aktiengesellschaft ',0,1,NULL,0),(100093,502,5,'GmbH&Co. KG - Gesellschaft mit beschränkter Haftung & Compagnie Kommanditgesellschaft',0,1,NULL,0),(100094,503,5,'Gewerbe - Personengesellschaft',0,1,NULL,0),(100095,504,5,'UG - Unternehmergesellschaft -haftungsbeschränkt-',0,1,NULL,0),(100096,505,5,'GbR - Gesellschaft des bürgerlichen Rechts',0,1,NULL,0),(100097,506,5,'KG - Kommanditgesellschaft',0,1,NULL,0),(100098,507,5,'Ltd. - Limited Company',0,1,NULL,0),(100099,508,5,'OHG - Offene Handelsgesellschaft',0,1,NULL,0),(100100,10201,102,'Ατομική επιχείρηση',0,1,NULL,0),(100101,10202,102,'Εταιρική επιχείρηση',0,1,NULL,0),(100102,10203,102,'Ομόρρυθμη Εταιρεία Ο.Ε',0,1,NULL,0),(100103,10204,102,'Ετερόρρυθμη Εταιρεία Ε.Ε',0,1,NULL,0),(100104,10205,102,'Εταιρεία Περιορισμένης Ευθύνης Ε.Π.Ε',0,1,NULL,0),(100105,10206,102,'Ανώνυμη Εταιρεία Α.Ε',0,1,NULL,0),(100106,10207,102,'Ανώνυμη ναυτιλιακή εταιρεία Α.Ν.Ε',0,1,NULL,0),(100107,10208,102,'Συνεταιρισμός',0,1,NULL,0),(100108,10209,102,'Συμπλοιοκτησία',0,1,NULL,0),(100109,301,3,'Società semplice',0,1,NULL,0),(100110,302,3,'Società in nome collettivo s.n.c.',0,1,NULL,0),(100111,303,3,'Società in accomandita semplice s.a.s.',0,1,NULL,0),(100112,304,3,'Società per azioni s.p.a.',0,1,NULL,0),(100113,305,3,'Società a responsabilità limitata s.r.l.',0,1,NULL,0),(100114,306,3,'Società in accomandita per azioni s.a.p.a.',0,1,NULL,0),(100115,307,3,'Società cooperativa a r.l.',0,1,NULL,0),(100116,308,3,'Società consortile',0,1,NULL,0),(100117,309,3,'Società europea',0,1,NULL,0),(100118,310,3,'Società cooperativa europea',0,1,NULL,0),(100119,311,3,'Società unipersonale',0,1,NULL,0),(100120,312,3,'Società di professionisti',0,1,NULL,0),(100121,313,3,'Società di fatto',0,1,NULL,0),(100122,315,3,'Società apparente',0,1,NULL,0),(100123,316,3,'Impresa individuale ',0,1,NULL,0),(100124,317,3,'Impresa coniugale',0,1,NULL,0),(100125,318,3,'Impresa familiare',0,1,NULL,0),(100126,319,3,'Consorzio cooperativo',0,1,NULL,0),(100127,320,3,'Società cooperativa sociale',0,1,NULL,0),(100128,321,3,'Società cooperativa di consumo',0,1,NULL,0),(100129,322,3,'Società cooperativa agricola',0,1,NULL,0),(100130,323,3,'A.T.I. Associazione temporanea di imprese',0,1,NULL,0),(100131,324,3,'R.T.I. Raggruppamento temporaneo di imprese',0,1,NULL,0),(100132,325,3,'Studio associato',0,1,NULL,0),(100133,600,6,'Raison Individuelle',0,1,NULL,0),(100134,601,6,'Société Simple',0,1,NULL,0),(100135,602,6,'Société en nom collectif',0,1,NULL,0),(100136,603,6,'Société en commandite',0,1,NULL,0),(100137,604,6,'Société anonyme (SA)',0,1,NULL,0),(100138,605,6,'Société en commandite par actions',0,1,NULL,0),(100139,606,6,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100140,607,6,'Société coopérative',0,1,NULL,0),(100141,608,6,'Association',0,1,NULL,0),(100142,609,6,'Fondation',0,1,NULL,0),(100143,700,7,'Sole Trader',0,1,NULL,0),(100144,701,7,'Partnership',0,1,NULL,0),(100145,702,7,'Private Limited Company by shares (LTD)',0,1,NULL,0),(100146,703,7,'Public Limited Company',0,1,NULL,0),(100147,704,7,'Workers Cooperative',0,1,NULL,0),(100148,705,7,'Limited Liability Partnership',0,1,NULL,0),(100149,706,7,'Franchise',0,1,NULL,0),(100150,1000,10,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100151,1001,10,'Société en Nom Collectif (SNC)',0,1,NULL,0),(100152,1002,10,'Société en Commandite Simple (SCS)',0,1,NULL,0),(100153,1003,10,'société en participation',0,1,NULL,0),(100154,1004,10,'Société Anonyme (SA)',0,1,NULL,0),(100155,1005,10,'Société Unipersonnelle à Responsabilité Limitée (SUARL)',0,1,NULL,0),(100156,1006,10,'Groupement d\'intérêt économique (GEI)',0,1,NULL,0),(100157,1007,10,'Groupe de sociétés',0,1,NULL,0),(100158,1701,17,'Eenmanszaak',0,1,NULL,0),(100159,1702,17,'Maatschap',0,1,NULL,0),(100160,1703,17,'Vennootschap onder firma',0,1,NULL,0),(100161,1704,17,'Commanditaire vennootschap',0,1,NULL,0),(100162,1705,17,'Besloten vennootschap (BV)',0,1,NULL,0),(100163,1706,17,'Naamloze Vennootschap (NV)',0,1,NULL,0),(100164,1707,17,'Vereniging',0,1,NULL,0),(100165,1708,17,'Stichting',0,1,NULL,0),(100166,1709,17,'Coöperatie met beperkte aansprakelijkheid (BA)',0,1,NULL,0),(100167,1710,17,'Coöperatie met uitgesloten aansprakelijkheid (UA)',0,1,NULL,0),(100168,1711,17,'Coöperatie met wettelijke aansprakelijkheid (WA)',0,1,NULL,0),(100169,1712,17,'Onderlinge waarborgmaatschappij',0,1,NULL,0),(100170,401,4,'Empresario Individual',0,1,NULL,0),(100171,402,4,'Comunidad de Bienes',0,1,NULL,0),(100172,403,4,'Sociedad Civil',0,1,NULL,0),(100173,404,4,'Sociedad Colectiva',0,1,NULL,0),(100174,405,4,'Sociedad Limitada',0,1,NULL,0),(100175,406,4,'Sociedad Anónima',0,1,NULL,0),(100176,407,4,'Sociedad Comanditaria por Acciones',0,1,NULL,0),(100177,408,4,'Sociedad Comanditaria Simple',0,1,NULL,0),(100178,409,4,'Sociedad Laboral',0,1,NULL,0),(100179,410,4,'Sociedad Cooperativa',0,1,NULL,0),(100180,411,4,'Sociedad de Garantía Recíproca',0,1,NULL,0),(100181,412,4,'Entidad de Capital-Riesgo',0,1,NULL,0),(100182,413,4,'Agrupación de Interés Económico',0,1,NULL,0),(100183,414,4,'Sociedad de Inversión Mobiliaria',0,1,NULL,0),(100184,415,4,'Agrupación sin Ánimo de Lucro',0,1,NULL,0),(100185,15201,152,'Mauritius Private Company Limited By Shares',0,1,NULL,0),(100186,15202,152,'Mauritius Company Limited By Guarantee',0,1,NULL,0),(100187,15203,152,'Mauritius Public Company Limited By Shares',0,1,NULL,0),(100188,15204,152,'Mauritius Foreign Company',0,1,NULL,0),(100189,15205,152,'Mauritius GBC1 (Offshore Company)',0,1,NULL,0),(100190,15206,152,'Mauritius GBC2 (International Company)',0,1,NULL,0),(100191,15207,152,'Mauritius General Partnership',0,1,NULL,0),(100192,15208,152,'Mauritius Limited Partnership',0,1,NULL,0),(100193,15209,152,'Mauritius Sole Proprietorship',0,1,NULL,0),(100194,15210,152,'Mauritius Trusts',0,1,NULL,0),(100195,15401,154,'Sociedad en nombre colectivo',0,1,NULL,0),(100196,15402,154,'Sociedad en comandita simple',0,1,NULL,0),(100197,15403,154,'Sociedad de responsabilidad limitada',0,1,NULL,0),(100198,15404,154,'Sociedad anónima',0,1,NULL,0),(100199,15405,154,'Sociedad en comandita por acciones',0,1,NULL,0),(100200,15406,154,'Sociedad cooperativa',0,1,NULL,0),(100201,4100,41,'GmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100202,4101,41,'GesmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100203,4102,41,'AG - Aktiengesellschaft',0,1,NULL,0),(100204,4103,41,'EWIV - Europäische wirtschaftliche Interessenvereinigung',0,1,NULL,0),(100205,4104,41,'KEG - Kommanditerwerbsgesellschaft',0,1,NULL,0),(100206,4105,41,'OEG - Offene Erwerbsgesellschaft',0,1,NULL,0),(100207,4106,41,'OHG - Offene Handelsgesellschaft',0,1,NULL,0),(100208,4107,41,'AG & Co KG - Kommanditgesellschaft',0,1,NULL,0),(100209,4108,41,'GmbH & Co KG - Kommanditgesellschaft',0,1,NULL,0),(100210,4109,41,'KG - Kommanditgesellschaft',0,1,NULL,0),(100211,4110,41,'OG - Offene Gesellschaft',0,1,NULL,0),(100212,4111,41,'GbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100213,4112,41,'GesbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100214,4113,41,'GesnbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100215,4114,41,'e.U. - eingetragener Einzelunternehmer',0,1,NULL,0),(100216,17801,178,'Empresa individual',0,1,NULL,0),(100217,17802,178,'Asociación General',0,1,NULL,0),(100218,17803,178,'Sociedad de Responsabilidad Limitada',0,1,NULL,0),(100219,17804,178,'Sociedad Civil',0,1,NULL,0),(100220,17805,178,'Sociedad Anónima',0,1,NULL,0),(100221,8001,80,'Aktieselvskab A/S',0,1,NULL,0),(100222,8002,80,'Anparts Selvskab ApS',0,1,NULL,0),(100223,8003,80,'Personlig ejet selvskab',0,1,NULL,0),(100224,8004,80,'Iværksætterselvskab IVS',0,1,NULL,0),(100225,8005,80,'Interessentskab I/S',0,1,NULL,0),(100226,8006,80,'Holdingselskab',0,1,NULL,0),(100227,8007,80,'Selskab Med Begrænset Hæftelse SMBA',0,1,NULL,0),(100228,8008,80,'Kommanditselskab K/S',0,1,NULL,0),(100229,8009,80,'SPE-selskab',0,1,NULL,0),(100230,2001,20,'Aktiebolag',0,1,NULL,0),(100231,2002,20,'Publikt aktiebolag (AB publ)',0,1,NULL,0),(100232,2003,20,'Ekonomisk förening (ek. för.)',0,1,NULL,0),(100233,2004,20,'Bostadsrättsförening (BRF)',0,1,NULL,0),(100234,2005,20,'Hyresrättsförening (HRF)',0,1,NULL,0),(100235,2006,20,'Kooperativ',0,1,NULL,0),(100236,2007,20,'Enskild firma (EF)',0,1,NULL,0),(100237,2008,20,'Handelsbolag (HB)',0,1,NULL,0),(100238,2009,20,'Kommanditbolag (KB)',0,1,NULL,0),(100239,2010,20,'Enkelt bolag',0,1,NULL,0),(100240,2011,20,'Ideell förening',0,1,NULL,0),(100241,2012,20,'Stiftelse',0,1,NULL,0); +INSERT INTO `llx_c_forme_juridique` VALUES (100001,100001,1,'Etudiant',0,0,'cabinetmed',0),(100002,100002,1,'Retraité',0,0,'cabinetmed',0),(100003,100003,1,'Artisan',0,0,'cabinetmed',0),(100004,100004,1,'Femme de ménage',0,0,'cabinetmed',0),(100005,100005,1,'Professeur',0,0,'cabinetmed',0),(100006,100006,1,'Profession libérale',0,0,'cabinetmed',0),(100007,100007,1,'Informaticien',0,0,'cabinetmed',0),(100009,0,0,'-',0,1,NULL,0),(100010,2301,23,'Monotributista',0,1,NULL,0),(100011,2302,23,'Sociedad Civil',0,1,NULL,0),(100012,2303,23,'Sociedades Comerciales',0,1,NULL,0),(100013,2304,23,'Sociedades de Hecho',0,1,NULL,0),(100014,2305,23,'Sociedades Irregulares',0,1,NULL,0),(100015,2306,23,'Sociedad Colectiva',0,1,NULL,0),(100016,2307,23,'Sociedad en Comandita Simple',0,1,NULL,0),(100017,2308,23,'Sociedad de Capital e Industria',0,1,NULL,0),(100018,2309,23,'Sociedad Accidental o en participación',0,1,NULL,0),(100019,2310,23,'Sociedad de Responsabilidad Limitada',0,1,NULL,0),(100020,2311,23,'Sociedad Anónima',0,1,NULL,0),(100021,2312,23,'Sociedad Anónima con Participación Estatal Mayoritaria',0,1,NULL,0),(100022,2313,23,'Sociedad en Comandita por Acciones (arts. 315 a 324, LSC)',0,1,NULL,0),(100023,11,1,'Artisan Commerçant (EI)',0,1,NULL,0),(100024,12,1,'Commerçant (EI)',0,1,NULL,0),(100025,13,1,'Artisan (EI)',0,1,NULL,0),(100026,14,1,'Officier public ou ministériel',0,1,NULL,0),(100027,15,1,'Profession libérale (EI)',0,1,NULL,0),(100028,16,1,'Exploitant agricole',0,1,NULL,0),(100029,17,1,'Agent commercial',0,1,NULL,0),(100030,18,1,'Associé Gérant de société',0,1,NULL,0),(100031,19,1,'Personne physique',0,1,NULL,0),(100032,21,1,'Indivision',0,1,NULL,0),(100033,22,1,'Société créée de fait',0,1,NULL,0),(100034,23,1,'Société en participation',0,1,NULL,0),(100035,27,1,'Paroisse hors zone concordataire',0,1,NULL,0),(100036,29,1,'Groupement de droit privé non doté de la personnalité morale',0,1,NULL,0),(100037,31,1,'Personne morale de droit étranger, immatriculée au RCS',0,1,NULL,0),(100038,32,1,'Personne morale de droit étranger, non immatriculée au RCS',0,1,NULL,0),(100039,35,1,'Régime auto-entrepreneur',0,1,NULL,0),(100040,41,1,'Etablissement public ou régie à caractère industriel ou commercial',0,1,NULL,0),(100041,51,1,'Société coopérative commerciale particulière',0,1,NULL,0),(100042,52,1,'Société en nom collectif',0,1,NULL,0),(100043,53,1,'Société en commandite',0,1,NULL,0),(100044,54,1,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100045,55,1,'Société anonyme à conseil d administration',0,1,NULL,0),(100046,56,1,'Société anonyme à directoire',0,1,NULL,0),(100047,57,1,'Société par actions simplifiée (SAS)',0,1,NULL,0),(100048,58,1,'Entreprise Unipersonnelle à Responsabilité Limitée (EURL)',0,1,NULL,0),(100049,59,1,'Société par actions simplifiée unipersonnelle (SASU)',0,1,NULL,0),(100050,60,1,'Entreprise Individuelle à Responsabilité Limitée (EIRL)',0,1,NULL,0),(100051,61,1,'Caisse d\'épargne et de prévoyance',0,1,NULL,0),(100052,62,1,'Groupement d\'intérêt économique (GIE)',0,1,NULL,0),(100053,63,1,'Société coopérative agricole',0,1,NULL,0),(100054,64,1,'Société non commerciale d assurances',0,1,NULL,0),(100055,65,1,'Société civile',0,1,NULL,0),(100056,69,1,'Personnes de droit privé inscrites au RCS',0,1,NULL,0),(100057,71,1,'Administration de l état',0,1,NULL,0),(100058,72,1,'Collectivité territoriale',0,1,NULL,0),(100059,73,1,'Etablissement public administratif',0,1,NULL,0),(100060,74,1,'Personne morale de droit public administratif',0,1,NULL,0),(100061,81,1,'Organisme gérant régime de protection social à adhésion obligatoire',0,1,NULL,0),(100062,82,1,'Organisme mutualiste',0,1,NULL,0),(100063,83,1,'Comité d entreprise',0,1,NULL,0),(100064,84,1,'Organisme professionnel',0,1,NULL,0),(100065,85,1,'Organisme de retraite à adhésion non obligatoire',0,1,NULL,0),(100066,91,1,'Syndicat de propriétaires',0,1,NULL,0),(100067,92,1,'Association loi 1901 ou assimilé',0,1,NULL,0),(100068,93,1,'Fondation',0,1,NULL,0),(100069,99,1,'Personne morale de droit privé',0,1,NULL,0),(100070,200,2,'Indépendant',0,1,NULL,0),(100071,201,2,'SRL - Société à responsabilité limitée',0,1,NULL,0),(100072,202,2,'SA - Société Anonyme',0,1,NULL,0),(100073,203,2,'SCRL - Société coopérative à responsabilité limitée',0,1,NULL,0),(100074,204,2,'ASBL - Association sans but Lucratif',0,1,NULL,0),(100075,205,2,'SCRI - Société coopérative à responsabilité illimitée',0,1,NULL,0),(100076,206,2,'SCS - Société en commandite simple',0,1,NULL,0),(100077,207,2,'SCA - Société en commandite par action',0,1,NULL,0),(100078,208,2,'SNC - Société en nom collectif',0,1,NULL,0),(100079,209,2,'GIE - Groupement d intérêt économique',0,1,NULL,0),(100080,210,2,'GEIE - Groupement européen d intérêt économique',0,1,NULL,0),(100081,220,2,'Eenmanszaak',0,1,NULL,0),(100082,221,2,'BVBA - Besloten vennootschap met beperkte aansprakelijkheid',0,1,NULL,0),(100083,222,2,'NV - Naamloze Vennootschap',0,1,NULL,0),(100084,223,2,'CVBA - Coöperatieve vennootschap met beperkte aansprakelijkheid',0,1,NULL,0),(100085,224,2,'VZW - Vereniging zonder winstoogmerk',0,1,NULL,0),(100086,225,2,'CVOA - Coöperatieve vennootschap met onbeperkte aansprakelijkheid ',0,1,NULL,0),(100087,226,2,'GCV - Gewone commanditaire vennootschap',0,1,NULL,0),(100088,227,2,'Comm.VA - Commanditaire vennootschap op aandelen',0,1,NULL,0),(100089,228,2,'VOF - Vennootschap onder firma',0,1,NULL,0),(100090,229,2,'VS0 - Vennootschap met sociaal oogmerk',0,1,NULL,0),(100091,500,5,'GmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100092,501,5,'AG - Aktiengesellschaft ',0,1,NULL,0),(100093,502,5,'GmbH&Co. KG - Gesellschaft mit beschränkter Haftung & Compagnie Kommanditgesellschaft',0,1,NULL,0),(100094,503,5,'Gewerbe - Personengesellschaft',0,1,NULL,0),(100095,504,5,'UG - Unternehmergesellschaft -haftungsbeschränkt-',0,1,NULL,0),(100096,505,5,'GbR - Gesellschaft des bürgerlichen Rechts',0,1,NULL,0),(100097,506,5,'KG - Kommanditgesellschaft',0,1,NULL,0),(100098,507,5,'Ltd. - Limited Company',0,1,NULL,0),(100099,508,5,'OHG - Offene Handelsgesellschaft',0,1,NULL,0),(100100,10201,102,'Ατομική επιχείρηση',0,1,NULL,0),(100101,10202,102,'Εταιρική επιχείρηση',0,1,NULL,0),(100102,10203,102,'Ομόρρυθμη Εταιρεία Ο.Ε',0,1,NULL,0),(100103,10204,102,'Ετερόρρυθμη Εταιρεία Ε.Ε',0,1,NULL,0),(100104,10205,102,'Εταιρεία Περιορισμένης Ευθύνης Ε.Π.Ε',0,1,NULL,0),(100105,10206,102,'Ανώνυμη Εταιρεία Α.Ε',0,1,NULL,0),(100106,10207,102,'Ανώνυμη ναυτιλιακή εταιρεία Α.Ν.Ε',0,1,NULL,0),(100107,10208,102,'Συνεταιρισμός',0,1,NULL,0),(100108,10209,102,'Συμπλοιοκτησία',0,1,NULL,0),(100109,301,3,'Società semplice',0,1,NULL,0),(100110,302,3,'Società in nome collettivo s.n.c.',0,1,NULL,0),(100111,303,3,'Società in accomandita semplice s.a.s.',0,1,NULL,0),(100112,304,3,'Società per azioni s.p.a.',0,1,NULL,0),(100113,305,3,'Società a responsabilità limitata s.r.l.',0,1,NULL,0),(100114,306,3,'Società in accomandita per azioni s.a.p.a.',0,1,NULL,0),(100115,307,3,'Società cooperativa a r.l.',0,1,NULL,0),(100116,308,3,'Società consortile',0,1,NULL,0),(100117,309,3,'Società europea',0,1,NULL,0),(100118,310,3,'Società cooperativa europea',0,1,NULL,0),(100119,311,3,'Società unipersonale',0,1,NULL,0),(100120,312,3,'Società di professionisti',0,1,NULL,0),(100121,313,3,'Società di fatto',0,1,NULL,0),(100122,315,3,'Società apparente',0,1,NULL,0),(100123,316,3,'Impresa individuale ',0,1,NULL,0),(100124,317,3,'Impresa coniugale',0,1,NULL,0),(100125,318,3,'Impresa familiare',0,1,NULL,0),(100126,319,3,'Consorzio cooperativo',0,1,NULL,0),(100127,320,3,'Società cooperativa sociale',0,1,NULL,0),(100128,321,3,'Società cooperativa di consumo',0,1,NULL,0),(100129,322,3,'Società cooperativa agricola',0,1,NULL,0),(100130,323,3,'A.T.I. Associazione temporanea di imprese',0,1,NULL,0),(100131,324,3,'R.T.I. Raggruppamento temporaneo di imprese',0,1,NULL,0),(100132,325,3,'Studio associato',0,1,NULL,0),(100133,600,6,'Raison Individuelle',0,1,NULL,0),(100134,601,6,'Société Simple',0,1,NULL,0),(100135,602,6,'Société en nom collectif',0,1,NULL,0),(100136,603,6,'Société en commandite',0,1,NULL,0),(100137,604,6,'Société anonyme (SA)',0,1,NULL,0),(100138,605,6,'Société en commandite par actions',0,1,NULL,0),(100139,606,6,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100140,607,6,'Société coopérative',0,1,NULL,0),(100141,608,6,'Association',0,1,NULL,0),(100142,609,6,'Fondation',0,1,NULL,0),(100143,700,7,'Sole Trader',0,1,NULL,0),(100144,701,7,'Partnership',0,1,NULL,0),(100145,702,7,'Private Limited Company by shares (LTD)',0,1,NULL,0),(100146,703,7,'Public Limited Company',0,1,NULL,0),(100147,704,7,'Workers Cooperative',0,1,NULL,0),(100148,705,7,'Limited Liability Partnership',0,1,NULL,0),(100149,706,7,'Franchise',0,1,NULL,0),(100150,1000,10,'Société à responsabilité limitée (SARL)',0,1,NULL,0),(100151,1001,10,'Société en Nom Collectif (SNC)',0,1,NULL,0),(100152,1002,10,'Société en Commandite Simple (SCS)',0,1,NULL,0),(100153,1003,10,'société en participation',0,1,NULL,0),(100154,1004,10,'Société Anonyme (SA)',0,1,NULL,0),(100155,1005,10,'Société Unipersonnelle à Responsabilité Limitée (SUARL)',0,1,NULL,0),(100156,1006,10,'Groupement d\'intérêt économique (GEI)',0,1,NULL,0),(100157,1007,10,'Groupe de sociétés',0,1,NULL,0),(100158,1701,17,'Eenmanszaak',0,1,NULL,0),(100159,1702,17,'Maatschap',0,1,NULL,0),(100160,1703,17,'Vennootschap onder firma',0,1,NULL,0),(100161,1704,17,'Commanditaire vennootschap',0,1,NULL,0),(100162,1705,17,'Besloten vennootschap (BV)',0,1,NULL,0),(100163,1706,17,'Naamloze Vennootschap (NV)',0,1,NULL,0),(100164,1707,17,'Vereniging',0,1,NULL,0),(100165,1708,17,'Stichting',0,1,NULL,0),(100166,1709,17,'Coöperatie met beperkte aansprakelijkheid (BA)',0,1,NULL,0),(100167,1710,17,'Coöperatie met uitgesloten aansprakelijkheid (UA)',0,1,NULL,0),(100168,1711,17,'Coöperatie met wettelijke aansprakelijkheid (WA)',0,1,NULL,0),(100169,1712,17,'Onderlinge waarborgmaatschappij',0,1,NULL,0),(100170,401,4,'Empresario Individual',0,1,NULL,0),(100171,402,4,'Comunidad de Bienes',0,1,NULL,0),(100172,403,4,'Sociedad Civil',0,1,NULL,0),(100173,404,4,'Sociedad Colectiva',0,1,NULL,0),(100174,405,4,'Sociedad Limitada',0,1,NULL,0),(100175,406,4,'Sociedad Anónima',0,1,NULL,0),(100176,407,4,'Sociedad Comanditaria por Acciones',0,1,NULL,0),(100177,408,4,'Sociedad Comanditaria Simple',0,1,NULL,0),(100178,409,4,'Sociedad Laboral',0,1,NULL,0),(100179,410,4,'Sociedad Cooperativa',0,1,NULL,0),(100180,411,4,'Sociedad de Garantía Recíproca',0,1,NULL,0),(100181,412,4,'Entidad de Capital-Riesgo',0,1,NULL,0),(100182,413,4,'Agrupación de Interés Económico',0,1,NULL,0),(100183,414,4,'Sociedad de Inversión Mobiliaria',0,1,NULL,0),(100184,415,4,'Agrupación sin Ánimo de Lucro',0,1,NULL,0),(100185,15201,152,'Mauritius Private Company Limited By Shares',0,1,NULL,0),(100186,15202,152,'Mauritius Company Limited By Guarantee',0,1,NULL,0),(100187,15203,152,'Mauritius Public Company Limited By Shares',0,1,NULL,0),(100188,15204,152,'Mauritius Foreign Company',0,1,NULL,0),(100189,15205,152,'Mauritius GBC1 (Offshore Company)',0,1,NULL,0),(100190,15206,152,'Mauritius GBC2 (International Company)',0,1,NULL,0),(100191,15207,152,'Mauritius General Partnership',0,1,NULL,0),(100192,15208,152,'Mauritius Limited Partnership',0,1,NULL,0),(100193,15209,152,'Mauritius Sole Proprietorship',0,1,NULL,0),(100194,15210,152,'Mauritius Trusts',0,1,NULL,0),(100195,15401,154,'Sociedad en nombre colectivo',0,1,NULL,0),(100196,15402,154,'Sociedad en comandita simple',0,1,NULL,0),(100197,15403,154,'Sociedad de responsabilidad limitada',0,1,NULL,0),(100198,15404,154,'Sociedad anónima',0,1,NULL,0),(100199,15405,154,'Sociedad en comandita por acciones',0,1,NULL,0),(100200,15406,154,'Sociedad cooperativa',0,1,NULL,0),(100201,4100,41,'GmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100202,4101,41,'GesmbH - Gesellschaft mit beschränkter Haftung',0,1,NULL,0),(100203,4102,41,'AG - Aktiengesellschaft',0,1,NULL,0),(100204,4103,41,'EWIV - Europäische wirtschaftliche Interessenvereinigung',0,1,NULL,0),(100205,4104,41,'KEG - Kommanditerwerbsgesellschaft',0,1,NULL,0),(100206,4105,41,'OEG - Offene Erwerbsgesellschaft',0,1,NULL,0),(100207,4106,41,'OHG - Offene Handelsgesellschaft',0,1,NULL,0),(100208,4107,41,'AG & Co KG - Kommanditgesellschaft',0,1,NULL,0),(100209,4108,41,'GmbH & Co KG - Kommanditgesellschaft',0,1,NULL,0),(100210,4109,41,'KG - Kommanditgesellschaft',0,1,NULL,0),(100211,4110,41,'OG - Offene Gesellschaft',0,1,NULL,0),(100212,4111,41,'GbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100213,4112,41,'GesbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100214,4113,41,'GesnbR - Gesellschaft nach bürgerlichem Recht',0,1,NULL,0),(100215,4114,41,'e.U. - eingetragener Einzelunternehmer',0,1,NULL,0),(100216,17801,178,'Empresa individual',0,1,NULL,0),(100217,17802,178,'Asociación General',0,1,NULL,0),(100218,17803,178,'Sociedad de Responsabilidad Limitada',0,1,NULL,0),(100219,17804,178,'Sociedad Civil',0,1,NULL,0),(100220,17805,178,'Sociedad Anónima',0,1,NULL,0),(100221,8001,80,'Aktieselvskab A/S',0,1,NULL,0),(100222,8002,80,'Anparts Selvskab ApS',0,1,NULL,0),(100223,8003,80,'Personlig ejet selvskab',0,1,NULL,0),(100224,8004,80,'Iværksætterselvskab IVS',0,1,NULL,0),(100225,8005,80,'Interessentskab I/S',0,1,NULL,0),(100226,8006,80,'Holdingselskab',0,1,NULL,0),(100227,8007,80,'Selskab Med Begrænset Hæftelse SMBA',0,1,NULL,0),(100228,8008,80,'Kommanditselskab K/S',0,1,NULL,0),(100229,8009,80,'SPE-selskab',0,1,NULL,0),(100230,2001,20,'Aktiebolag',0,1,NULL,0),(100231,2002,20,'Publikt aktiebolag (AB publ)',0,1,NULL,0),(100232,2003,20,'Ekonomisk förening (ek. för.)',0,1,NULL,0),(100233,2004,20,'Bostadsrättsförening (BRF)',0,1,NULL,0),(100234,2005,20,'Hyresrättsförening (HRF)',0,1,NULL,0),(100235,2006,20,'Kooperativ',0,1,NULL,0),(100236,2007,20,'Enskild firma (EF)',0,1,NULL,0),(100237,2008,20,'Handelsbolag (HB)',0,1,NULL,0),(100238,2009,20,'Kommanditbolag (KB)',0,1,NULL,0),(100239,2010,20,'Enkelt bolag',0,1,NULL,0),(100240,2011,20,'Ideell förening',0,1,NULL,0),(100241,2012,20,'Stiftelse',0,1,NULL,0),(100248,15407,154,'610 - Residentes en el Extranjero sin Establecimiento Permanente en México',0,1,NULL,0),(100249,15408,154,'611 - Ingresos por Dividendos (socios y accionistas)',0,1,NULL,0),(100250,15409,154,'612 - Personas Físicas con Actividades Empresariales y Profesionales',0,1,NULL,0),(100251,15410,154,'614 - Ingresos por intereses',0,1,NULL,0),(100252,15411,154,'615 - Régimen de los ingresos por obtención de premios',0,1,NULL,0),(100253,15412,154,'616 - Sin obligaciones fiscales',0,1,NULL,0),(100254,15413,154,'620 - Sociedades Cooperativas de Producción que optan por diferir sus ingresos',0,1,NULL,0),(100255,15414,154,'621 - Incorporación Fiscal',0,1,NULL,0),(100256,15415,154,'622 - Actividades Agrícolas, Ganaderas, Silvícolas y Pesqueras',0,1,NULL,0),(100257,15416,154,'623 - Opcional para Grupos de Sociedades',0,1,NULL,0),(100258,15417,154,'624 - Coordinados',0,1,NULL,0),(100259,15418,154,'625 - Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas',0,1,NULL,0),(100260,15419,154,'626 - Régimen Simplificado de Confianza',0,1,NULL,0); /*!40000 ALTER TABLE `llx_c_forme_juridique` ENABLE KEYS */; UNLOCK TABLES; @@ -2043,16 +2301,17 @@ DROP TABLE IF EXISTS `llx_c_holiday_types`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_holiday_types` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `affect` int(11) NOT NULL, `delay` int(11) NOT NULL, `newbymonth` double(8,5) NOT NULL DEFAULT 0.00000, `fk_country` int(11) DEFAULT NULL, `active` int(11) DEFAULT 1, + `sortorder` smallint(6) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_holiday_types` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2061,7 +2320,7 @@ CREATE TABLE `llx_c_holiday_types` ( LOCK TABLES `llx_c_holiday_types` WRITE; /*!40000 ALTER TABLE `llx_c_holiday_types` DISABLE KEYS */; -INSERT INTO `llx_c_holiday_types` VALUES (1,'LEAVE_SICK','Sick leave',0,0,0.00000,NULL,1),(2,'LEAVE_OTHER','Other leave',0,0,0.00000,NULL,1),(3,'LEAVE_PAID','Paid vacation',1,7,0.00000,NULL,1),(4,'LEAVE_RTT_FR','RTT',1,7,0.83000,1,0),(5,'LEAVE_PAID_FR','Paid vacation',1,30,2.08334,1,0); +INSERT INTO `llx_c_holiday_types` VALUES (1,'LEAVE_SICK','Sick leave',0,0,0.00000,NULL,1,NULL),(2,'LEAVE_OTHER','Other leave',0,0,0.00000,NULL,1,NULL),(3,'LEAVE_PAID','Paid vacation',1,7,0.00000,NULL,1,NULL),(4,'LEAVE_RTT_FR','RTT',1,7,0.83000,1,0,NULL),(5,'LEAVE_PAID_FR','Paid vacation',1,30,2.08334,1,0,NULL); /*!40000 ALTER TABLE `llx_c_holiday_types` ENABLE KEYS */; UNLOCK TABLES; @@ -2075,11 +2334,11 @@ DROP TABLE IF EXISTS `llx_c_hrm_department`; CREATE TABLE `llx_c_hrm_department` ( `rowid` int(11) NOT NULL, `pos` tinyint(4) NOT NULL DEFAULT 0, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2102,12 +2361,12 @@ DROP TABLE IF EXISTS `llx_c_hrm_function`; CREATE TABLE `llx_c_hrm_function` ( `rowid` int(11) NOT NULL, `pos` tinyint(4) NOT NULL DEFAULT 0, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `c_level` tinyint(4) NOT NULL DEFAULT 0, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2131,17 +2390,17 @@ CREATE TABLE `llx_c_hrm_public_holiday` ( `id` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 0, `fk_country` int(11) DEFAULT NULL, - `code` varchar(62) COLLATE utf8_unicode_ci DEFAULT NULL, - `dayrule` varchar(64) COLLATE utf8_unicode_ci DEFAULT '', + `code` varchar(62) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `dayrule` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT '', `day` int(11) DEFAULT NULL, `month` int(11) DEFAULT NULL, `year` int(11) DEFAULT NULL, `active` int(11) DEFAULT 1, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_hrm_public_holiday` (`entity`,`code`), UNIQUE KEY `uk_c_hrm_public_holiday2` (`entity`,`fk_country`,`dayrule`,`day`,`month`,`year`) -) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=75 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2163,13 +2422,13 @@ DROP TABLE IF EXISTS `llx_c_incoterms`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_incoterms` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(3) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `label` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_incoterms` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2191,14 +2450,14 @@ DROP TABLE IF EXISTS `llx_c_input_method`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_input_method` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `libelle` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_methode_commande_fournisseur` (`code`), UNIQUE KEY `uk_c_input_method` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2220,13 +2479,13 @@ DROP TABLE IF EXISTS `llx_c_input_reason`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_input_reason` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(60) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_input_reason` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2248,14 +2507,14 @@ DROP TABLE IF EXISTS `llx_c_lead_status`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_lead_status` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT NULL, `percent` double(5,2) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_lead_status_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2278,16 +2537,16 @@ DROP TABLE IF EXISTS `llx_c_paiement`; CREATE TABLE `llx_c_paiement` ( `id` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(6) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(62) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(6) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `type` smallint(6) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `accountancy_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_paiement_code` (`entity`,`code`) -) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2309,15 +2568,15 @@ DROP TABLE IF EXISTS `llx_c_paper_format`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_paper_format` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `width` float(6,2) DEFAULT 0.00, `height` float(6,2) DEFAULT 0.00, - `unit` varchar(5) COLLATE utf8_unicode_ci NOT NULL, + `unit` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=226 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=226 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2340,12 +2599,13 @@ DROP TABLE IF EXISTS `llx_c_partnership_type`; CREATE TABLE `llx_c_partnership_type` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, + `keyword` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_partnership_type` (`entity`,`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2367,19 +2627,20 @@ DROP TABLE IF EXISTS `llx_c_payment_term`; CREATE TABLE `llx_c_payment_term` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `sortorder` smallint(6) DEFAULT NULL, `active` tinyint(4) DEFAULT 1, - `libelle` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `libelle_facture` text COLLATE utf8_unicode_ci DEFAULT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `libelle_facture` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `type_cdr` tinyint(4) DEFAULT NULL, `nbjour` smallint(6) DEFAULT NULL, `decalage` smallint(6) DEFAULT NULL, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `deposit_percent` varchar(63) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_payment_term_code` (`entity`,`code`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2388,7 +2649,7 @@ CREATE TABLE `llx_c_payment_term` ( LOCK TABLES `llx_c_payment_term` WRITE; /*!40000 ALTER TABLE `llx_c_payment_term` DISABLE KEYS */; -INSERT INTO `llx_c_payment_term` VALUES (1,1,'RECEP',1,1,'A réception','Réception de facture',0,0,NULL,NULL,0),(2,1,'30D',2,1,'30 jours','Réglement à 30 jours',0,30,NULL,NULL,0),(3,1,'30DENDMONTH',3,1,'30 jours fin de mois','Réglement à 30 jours fin de mois',1,30,NULL,NULL,0),(4,1,'60D',4,1,'60 jours','Réglement à 60 jours',0,60,NULL,NULL,0),(5,1,'60DENDMONTH',5,1,'60 jours fin de mois','Réglement à 60 jours fin de mois',1,60,NULL,NULL,0),(6,1,'PT_ORDER',6,1,'A réception de commande','A réception de commande',0,0,NULL,NULL,0),(7,1,'PT_DELIVERY',7,1,'Livraison','Règlement à la livraison',0,0,NULL,NULL,0),(8,1,'PT_5050',8,1,'50 et 50','Règlement 50% à la commande, 50% à la livraison',0,0,NULL,NULL,0); +INSERT INTO `llx_c_payment_term` VALUES (1,1,'RECEP',1,1,'A réception','Réception de facture',0,0,NULL,NULL,NULL,0),(2,1,'30D',2,1,'30 jours','Réglement à 30 jours',0,30,NULL,NULL,NULL,0),(3,1,'30DENDMONTH',3,1,'30 jours fin de mois','Réglement à 30 jours fin de mois',1,30,NULL,NULL,NULL,0),(4,1,'60D',4,1,'60 jours','Réglement à 60 jours',0,60,NULL,NULL,NULL,0),(5,1,'60DENDMONTH',5,1,'60 jours fin de mois','Réglement à 60 jours fin de mois',1,60,NULL,NULL,NULL,0),(6,1,'PT_ORDER',6,1,'A réception de commande','A réception de commande',0,0,NULL,NULL,NULL,0),(7,1,'PT_DELIVERY',7,1,'Livraison','Règlement à la livraison',0,0,NULL,NULL,NULL,0),(8,1,'PT_5050',8,1,'50 et 50','Règlement 50% à la commande, 50% à la livraison',0,0,NULL,NULL,NULL,0),(9,1,'DEP30PCTDEL',13,0,'__DEPOSIT_PERCENT__% deposit','__DEPOSIT_PERCENT__% deposit, remainder on delivery',0,1,NULL,'30',NULL,0); /*!40000 ALTER TABLE `llx_c_payment_term` ENABLE KEYS */; UNLOCK TABLES; @@ -2401,10 +2662,10 @@ DROP TABLE IF EXISTS `llx_c_price_expression`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_price_expression` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `title` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `expression` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `title` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `expression` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2425,11 +2686,11 @@ DROP TABLE IF EXISTS `llx_c_price_global_variable`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_price_global_variable` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(20) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(20) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `value` double(24,8) DEFAULT 0.00000000, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2451,14 +2712,14 @@ DROP TABLE IF EXISTS `llx_c_price_global_variable_updater`; CREATE TABLE `llx_c_price_global_variable_updater` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `type` int(11) NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `parameters` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `parameters` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_variable` int(11) NOT NULL, `update_interval` int(11) DEFAULT 0, `next_update` int(11) DEFAULT 0, - `last_status` text COLLATE utf8_unicode_ci DEFAULT NULL, + `last_status` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2480,11 +2741,11 @@ DROP TABLE IF EXISTS `llx_c_product_nature`; CREATE TABLE `llx_c_product_nature` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `code` tinyint(4) NOT NULL, - `label` varchar(100) CHARACTER SET utf8mb4 DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_product_nature` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=79 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2507,12 +2768,12 @@ DROP TABLE IF EXISTS `llx_c_productbatch_qcstatus`; CREATE TABLE `llx_c_productbatch_qcstatus` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_productbatch_qcstatus` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2534,12 +2795,12 @@ DROP TABLE IF EXISTS `llx_c_propalst`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_propalst` ( `id` smallint(6) NOT NULL, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_propalst` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2561,12 +2822,12 @@ DROP TABLE IF EXISTS `llx_c_prospectcontactlevel`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_prospectcontactlevel` ( `code` varchar(12) CHARACTER SET utf8mb4 NOT NULL, - `label` varchar(30) CHARACTER SET utf8mb4 DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `sortorder` smallint(6) DEFAULT NULL, `active` smallint(6) NOT NULL DEFAULT 1, `module` varchar(32) CHARACTER SET utf8mb4 DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2587,13 +2848,13 @@ DROP TABLE IF EXISTS `llx_c_prospectlevel`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_prospectlevel` ( - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `sortorder` smallint(6) DEFAULT NULL, `active` smallint(6) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2616,10 +2877,10 @@ DROP TABLE IF EXISTS `llx_c_recruitment_origin`; CREATE TABLE `llx_c_recruitment_origin` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `code` varchar(32) CHARACTER SET utf8mb4 NOT NULL, - `label` varchar(64) CHARACTER SET utf8mb4 NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2642,15 +2903,15 @@ CREATE TABLE `llx_c_regions` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `code_region` int(11) NOT NULL, `fk_pays` int(11) NOT NULL, - `cheflieu` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `cheflieu` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tncc` int(11) DEFAULT NULL, - `nom` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `nom` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `code_region` (`code_region`), UNIQUE KEY `uk_code_region` (`code_region`), KEY `idx_c_regions_fk_pays` (`fk_pays`) -) ENGINE=InnoDB AUTO_INCREMENT=23354 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=23354 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2674,13 +2935,13 @@ CREATE TABLE `llx_c_revenuestamp` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_pays` int(11) NOT NULL, `taux` double NOT NULL, - `note` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `revenuestamp_type` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'fixed', + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `revenuestamp_type` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'fixed', PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2703,16 +2964,16 @@ DROP TABLE IF EXISTS `llx_c_shipment_mode`; CREATE TABLE `llx_c_shipment_mode` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `code` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `tracking` varchar(256) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tracking` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) DEFAULT 0, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_shipment_mode` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2734,12 +2995,12 @@ DROP TABLE IF EXISTS `llx_c_shipment_package_type`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_shipment_package_type` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` int(11) NOT NULL DEFAULT 1, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2761,14 +3022,14 @@ DROP TABLE IF EXISTS `llx_c_socialnetworks`; CREATE TABLE `llx_c_socialnetworks` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `code` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(150) COLLATE utf8_unicode_ci DEFAULT NULL, - `url` text COLLATE utf8_unicode_ci DEFAULT NULL, - `icon` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(150) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `icon` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_c_socialnetworks_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=66 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2790,13 +3051,13 @@ DROP TABLE IF EXISTS `llx_c_stcomm`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_stcomm` ( `id` int(11) NOT NULL, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(24) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `picto` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `picto` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_stcomm` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2819,12 +3080,12 @@ DROP TABLE IF EXISTS `llx_c_stcommcontact`; CREATE TABLE `llx_c_stcommcontact` ( `id` int(11) NOT NULL, `code` varchar(12) CHARACTER SET utf8mb4 NOT NULL, - `libelle` varchar(30) CHARACTER SET utf8mb4 DEFAULT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `picto` varchar(128) CHARACTER SET utf8mb4 DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_stcommcontact` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2847,18 +3108,18 @@ DROP TABLE IF EXISTS `llx_c_ticket_category`; CREATE TABLE `llx_c_ticket_category` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `pos` int(11) NOT NULL DEFAULT 0, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `active` int(11) DEFAULT 1, `use_default` int(11) DEFAULT 1, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_parent` int(11) NOT NULL DEFAULT 0, - `force_severity` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `force_severity` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `public` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2881,15 +3142,15 @@ DROP TABLE IF EXISTS `llx_c_ticket_resolution`; CREATE TABLE `llx_c_ticket_resolution` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `pos` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `pos` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `active` int(11) DEFAULT 1, `use_default` int(11) DEFAULT 1, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2912,16 +3173,16 @@ DROP TABLE IF EXISTS `llx_c_ticket_severity`; CREATE TABLE `llx_c_ticket_severity` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `pos` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `color` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `pos` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `color` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` int(11) DEFAULT 1, `use_default` int(11) DEFAULT 1, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2944,15 +3205,15 @@ DROP TABLE IF EXISTS `llx_c_ticket_type`; CREATE TABLE `llx_c_ticket_type` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `pos` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `pos` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `active` int(11) DEFAULT 1, `use_default` int(11) DEFAULT 1, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_code` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2979,7 +3240,7 @@ CREATE TABLE `llx_c_transport_mode` ( `label` varchar(255) CHARACTER SET utf8mb4 NOT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=321 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=321 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3002,20 +3263,20 @@ DROP TABLE IF EXISTS `llx_c_tva`; CREATE TABLE `llx_c_tva` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_pays` int(11) NOT NULL, - `code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `taux` double NOT NULL, - `localtax1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `localtax2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `localtax2` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `recuperableonly` int(11) NOT NULL DEFAULT 0, - `note` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_tva_id` (`fk_pays`,`code`,`taux`,`recuperableonly`) -) ENGINE=InnoDB AUTO_INCREMENT=2478 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2478 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3037,16 +3298,16 @@ DROP TABLE IF EXISTS `llx_c_type_contact`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_type_contact` ( `rowid` int(11) NOT NULL, - `element` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `source` varchar(8) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'external', - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `element` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `source` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'external', + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_type_contact_id` (`element`,`source`,`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3068,14 +3329,14 @@ DROP TABLE IF EXISTS `llx_c_type_container`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_type_container` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_type_container_id` (`code`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3097,16 +3358,16 @@ DROP TABLE IF EXISTS `llx_c_type_fees`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_type_fees` ( `id` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, `type` int(11) DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_type_fees` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3128,12 +3389,12 @@ DROP TABLE IF EXISTS `llx_c_type_resource`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_type_resource` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_type_resource_id` (`label`,`code`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3155,15 +3416,15 @@ DROP TABLE IF EXISTS `llx_c_typent`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_typent` ( `id` int(11) NOT NULL, - `code` varchar(12) COLLATE utf8_unicode_ci NOT NULL, - `libelle` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, + `libelle` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_country` int(11) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, - `module` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `module` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `uk_c_typent` (`code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3185,16 +3446,16 @@ DROP TABLE IF EXISTS `llx_c_units`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_units` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `sortorder` smallint(6) DEFAULT NULL, - `label` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `short_label` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `short_label` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `scale` int(11) DEFAULT NULL, - `unit_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `unit_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_c_units_code` (`code`) -) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3216,11 +3477,11 @@ DROP TABLE IF EXISTS `llx_c_ziptown`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_c_ziptown` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_county` int(11) DEFAULT NULL, `fk_pays` int(11) NOT NULL DEFAULT 0, - `zip` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `town` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `zip` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `town` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_ziptown_fk_pays` (`zip`,`town`,`fk_pays`), @@ -3229,7 +3490,7 @@ CREATE TABLE `llx_c_ziptown` ( KEY `idx_c_ziptown_zip` (`zip`), CONSTRAINT `fk_c_ziptown_fk_county` FOREIGN KEY (`fk_county`) REFERENCES `llx_c_departements` (`rowid`), CONSTRAINT `fk_c_ziptown_fk_pays` FOREIGN KEY (`fk_pays`) REFERENCES `llx_c_country` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=101711 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=101711 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3253,11 +3514,11 @@ DROP TABLE IF EXISTS `llx_cabinetmed_c_banques`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_c_banques` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `active` smallint(6) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3278,12 +3539,12 @@ DROP TABLE IF EXISTS `llx_cabinetmed_c_examconclusion`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_c_examconclusion` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `position` int(11) DEFAULT 10, `active` smallint(6) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3307,24 +3568,24 @@ CREATE TABLE `llx_cabinetmed_cons` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_soc` int(11) DEFAULT NULL, `datecons` date NOT NULL, - `typepriseencharge` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `motifconsprinc` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `diaglesprinc` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `motifconssec` text COLLATE utf8_unicode_ci DEFAULT NULL, - `diaglessec` text COLLATE utf8_unicode_ci DEFAULT NULL, - `hdm` text COLLATE utf8_unicode_ci DEFAULT NULL, - `examenclinique` text COLLATE utf8_unicode_ci DEFAULT NULL, - `examenprescrit` text COLLATE utf8_unicode_ci DEFAULT NULL, - `traitementprescrit` text COLLATE utf8_unicode_ci DEFAULT NULL, - `comment` text COLLATE utf8_unicode_ci DEFAULT NULL, - `typevisit` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `infiltration` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `codageccam` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `typepriseencharge` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `motifconsprinc` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `diaglesprinc` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `motifconssec` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `diaglessec` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `hdm` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `examenclinique` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `examenprescrit` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `traitementprescrit` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `comment` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `typevisit` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `infiltration` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `codageccam` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `montant_cheque` double(24,8) DEFAULT NULL, `montant_espece` double(24,8) DEFAULT NULL, `montant_carte` double(24,8) DEFAULT NULL, `montant_tiers` double(24,8) DEFAULT NULL, - `banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_c` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user` int(11) DEFAULT NULL, @@ -3335,7 +3596,7 @@ CREATE TABLE `llx_cabinetmed_cons` ( KEY `idx_cabinetmed_cons_fk_soc` (`fk_soc`), KEY `idx_cabinetmed_cons_datecons` (`datecons`), CONSTRAINT `fk_cabinetmed_cons_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3359,11 +3620,11 @@ CREATE TABLE `llx_cabinetmed_cons_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `aaa` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `aaa` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_cabinetmed_cons_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3385,14 +3646,14 @@ DROP TABLE IF EXISTS `llx_cabinetmed_diaglec`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_diaglec` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `active` smallint(6) NOT NULL DEFAULT 1, - `icd` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `icd` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT 10, - `lang` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3417,13 +3678,13 @@ CREATE TABLE `llx_cabinetmed_examaut` ( `fk_soc` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `dateexam` date NOT NULL, - `examprinc` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `examsec` text COLLATE utf8_unicode_ci DEFAULT NULL, - `concprinc` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `concsec` text COLLATE utf8_unicode_ci DEFAULT NULL, + `examprinc` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `examsec` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `concprinc` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `concsec` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3448,9 +3709,9 @@ CREATE TABLE `llx_cabinetmed_exambio` ( `fk_soc` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `dateexam` date NOT NULL, - `resultat` text COLLATE utf8_unicode_ci DEFAULT NULL, - `conclusion` text COLLATE utf8_unicode_ci DEFAULT NULL, - `comment` text COLLATE utf8_unicode_ci DEFAULT NULL, + `resultat` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `conclusion` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `comment` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `suivipr_ad` int(11) DEFAULT NULL, `suivipr_ag` int(11) DEFAULT NULL, `suivipr_vs` int(11) DEFAULT NULL, @@ -3466,7 +3727,7 @@ CREATE TABLE `llx_cabinetmed_exambio` ( `suivisa_basdai` double DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3487,13 +3748,13 @@ DROP TABLE IF EXISTS `llx_cabinetmed_examenprescrit`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_examenprescrit` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, - `biorad` varchar(8) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, + `biorad` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, `position` int(11) DEFAULT 10, `active` smallint(6) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3515,12 +3776,12 @@ DROP TABLE IF EXISTS `llx_cabinetmed_motifcons`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_motifcons` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `code` varchar(8) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `code` varchar(8) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `position` int(11) DEFAULT 10, `active` smallint(6) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=54 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3542,15 +3803,15 @@ DROP TABLE IF EXISTS `llx_cabinetmed_patient`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_patient` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `note_antemed` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_antechirgen` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_antechirortho` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_anterhum` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_other` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_traitclass` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_traitallergie` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_traitintol` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_traitspec` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_antemed` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_antechirgen` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_antechirortho` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_anterhum` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_other` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_traitclass` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_traitallergie` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_traitintol` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_traitspec` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `alert_antemed` smallint(6) DEFAULT NULL, `alert_antechirgen` smallint(6) DEFAULT NULL, `alert_antechirortho` smallint(6) DEFAULT NULL, @@ -3562,7 +3823,7 @@ CREATE TABLE `llx_cabinetmed_patient` ( `alert_traitspec` smallint(6) DEFAULT NULL, `alert_note` smallint(6) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3584,48 +3845,48 @@ DROP TABLE IF EXISTS `llx_cabinetmed_societe`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_cabinetmed_societe` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `nom` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, + `nom` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` smallint(6) DEFAULT 0, `parent` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, `datea` datetime DEFAULT NULL, `status` smallint(6) DEFAULT 1, - `code_client` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_fournisseur` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_compta` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_compta_fournisseur` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cp` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `ville` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `code_client` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_fournisseur` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_compta` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_compta_fournisseur` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cp` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ville` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_departement` int(11) DEFAULT 0, `fk_pays` int(11) DEFAULT 0, - `tel` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `fax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `tel` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fax` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_effectif` int(11) DEFAULT 0, `fk_typent` int(11) DEFAULT 0, `fk_forme_juridique` int(11) DEFAULT 0, `fk_currency` int(11) DEFAULT 0, - `siren` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `siret` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ape` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof4` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof5` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof6` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `tva_intra` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `siren` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `siret` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ape` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof4` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof5` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof6` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tva_intra` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `capital` double DEFAULT NULL, `fk_stcomm` int(11) NOT NULL DEFAULT 0, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `prefix_comm` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `prefix_comm` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `client` smallint(6) DEFAULT 0, `fournisseur` smallint(6) DEFAULT 0, - `supplier_account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_prospectlevel` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `supplier_account` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_prospectlevel` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `customer_bad` smallint(6) DEFAULT 0, `customer_rate` double DEFAULT 0, `supplier_rate` double DEFAULT 0, @@ -3637,15 +3898,15 @@ CREATE TABLE `llx_cabinetmed_societe` ( `tva_assuj` smallint(6) DEFAULT 1, `localtax1_assuj` smallint(6) DEFAULT 0, `localtax2_assuj` smallint(6) DEFAULT 0, - `barcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `barcode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT 0, `price_level` int(11) DEFAULT NULL, - `default_lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `logo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `canvas` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `logo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `canvas` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3667,15 +3928,15 @@ DROP TABLE IF EXISTS `llx_categorie`; CREATE TABLE `llx_categorie` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_parent` int(11) NOT NULL DEFAULT 0, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `type` int(11) NOT NULL DEFAULT 1, `entity` int(11) NOT NULL DEFAULT 1, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, `visible` tinyint(4) NOT NULL DEFAULT 1, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `color` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `color` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, @@ -3684,7 +3945,7 @@ CREATE TABLE `llx_categorie` ( UNIQUE KEY `uk_categorie_ref` (`entity`,`fk_parent`,`label`,`type`), KEY `idx_categorie_type` (`type`), KEY `idx_categorie_label` (`label`) -) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3707,13 +3968,13 @@ DROP TABLE IF EXISTS `llx_categorie_account`; CREATE TABLE `llx_categorie_account` ( `fk_categorie` int(11) NOT NULL, `fk_account` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_account`), KEY `idx_categorie_account_fk_categorie` (`fk_categorie`), KEY `idx_categorie_account_fk_account` (`fk_account`), CONSTRAINT `fk_categorie_account_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_account_fk_account` FOREIGN KEY (`fk_account`) REFERENCES `llx_bank_account` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3736,13 +3997,13 @@ DROP TABLE IF EXISTS `llx_categorie_actioncomm`; CREATE TABLE `llx_categorie_actioncomm` ( `fk_categorie` int(11) NOT NULL, `fk_actioncomm` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_actioncomm`), KEY `idx_categorie_actioncomm_fk_categorie` (`fk_categorie`), KEY `idx_categorie_actioncomm_fk_actioncomm` (`fk_actioncomm`), CONSTRAINT `fk_categorie_actioncomm_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_actioncomm_fk_actioncomm` FOREIGN KEY (`fk_actioncomm`) REFERENCES `llx_actioncomm` (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3764,13 +4025,13 @@ DROP TABLE IF EXISTS `llx_categorie_contact`; CREATE TABLE `llx_categorie_contact` ( `fk_categorie` int(11) NOT NULL, `fk_socpeople` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_socpeople`), KEY `idx_categorie_contact_fk_categorie` (`fk_categorie`), KEY `idx_categorie_contact_fk_socpeople` (`fk_socpeople`), CONSTRAINT `fk_categorie_contact_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_contact_fk_socpeople` FOREIGN KEY (`fk_socpeople`) REFERENCES `llx_socpeople` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3793,13 +4054,13 @@ DROP TABLE IF EXISTS `llx_categorie_fournisseur`; CREATE TABLE `llx_categorie_fournisseur` ( `fk_categorie` int(11) NOT NULL, `fk_soc` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_soc`), KEY `idx_categorie_fournisseur_fk_categorie` (`fk_categorie`), KEY `idx_categorie_fournisseur_fk_societe` (`fk_soc`), CONSTRAINT `fk_categorie_fournisseur_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_fournisseur_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3822,13 +4083,13 @@ DROP TABLE IF EXISTS `llx_categorie_knowledgemanagement`; CREATE TABLE `llx_categorie_knowledgemanagement` ( `fk_categorie` int(11) NOT NULL, `fk_knowledgemanagement` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_knowledgemanagement`), KEY `idx_categorie_knowledgemanagement_fk_categorie` (`fk_categorie`), KEY `idx_categorie_knowledgemanagement_fk_knowledgemanagement` (`fk_knowledgemanagement`), CONSTRAINT `fk_categorie_knowledgemanagement_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_knowledgemanagement_knowledgemanagement_rowid` FOREIGN KEY (`fk_knowledgemanagement`) REFERENCES `llx_knowledgemanagement_knowledgerecord` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3850,13 +4111,13 @@ DROP TABLE IF EXISTS `llx_categorie_lang`; CREATE TABLE `llx_categorie_lang` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_category` int(11) NOT NULL DEFAULT 0, - `lang` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_category_lang` (`fk_category`,`lang`), CONSTRAINT `fk_category_lang_fk_category` FOREIGN KEY (`fk_category`) REFERENCES `llx_categorie` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3883,7 +4144,7 @@ CREATE TABLE `llx_categorie_member` ( KEY `idx_categorie_member_fk_member` (`fk_member`), CONSTRAINT `fk_categorie_member_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_member_member_rowid` FOREIGN KEY (`fk_member`) REFERENCES `llx_adherent` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3906,13 +4167,13 @@ DROP TABLE IF EXISTS `llx_categorie_product`; CREATE TABLE `llx_categorie_product` ( `fk_categorie` int(11) NOT NULL, `fk_product` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_product`), KEY `idx_categorie_product_fk_categorie` (`fk_categorie`), KEY `idx_categorie_product_fk_product` (`fk_product`), CONSTRAINT `fk_categorie_product_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_product_product_rowid` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3935,14 +4196,14 @@ DROP TABLE IF EXISTS `llx_categorie_project`; CREATE TABLE `llx_categorie_project` ( `fk_categorie` int(11) NOT NULL, `fk_project` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_project`), KEY `idx_categorie_project_fk_categorie` (`fk_categorie`), KEY `idx_categorie_project_fk_project` (`fk_project`), CONSTRAINT `fk_categorie_project_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_project_fk_project` FOREIGN KEY (`fk_project`) REFERENCES `llx_projet` (`rowid`), CONSTRAINT `fk_categorie_project_fk_project_rowid` FOREIGN KEY (`fk_project`) REFERENCES `llx_projet` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3965,13 +4226,13 @@ DROP TABLE IF EXISTS `llx_categorie_societe`; CREATE TABLE `llx_categorie_societe` ( `fk_categorie` int(11) NOT NULL, `fk_soc` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_soc`), KEY `idx_categorie_societe_fk_categorie` (`fk_categorie`), KEY `idx_categorie_societe_fk_societe` (`fk_soc`), CONSTRAINT `fk_categorie_societe_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_societe_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -3994,13 +4255,13 @@ DROP TABLE IF EXISTS `llx_categorie_ticket`; CREATE TABLE `llx_categorie_ticket` ( `fk_categorie` int(11) NOT NULL, `fk_ticket` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_ticket`), KEY `idx_categorie_ticket_fk_categorie` (`fk_categorie`), KEY `idx_categorie_ticket_fk_ticket` (`fk_ticket`), CONSTRAINT `fk_categorie_ticket_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_ticket_ticket_rowid` FOREIGN KEY (`fk_ticket`) REFERENCES `llx_ticket` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4022,13 +4283,13 @@ DROP TABLE IF EXISTS `llx_categorie_user`; CREATE TABLE `llx_categorie_user` ( `fk_categorie` int(11) NOT NULL, `fk_user` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_user`), KEY `idx_categorie_user_fk_categorie` (`fk_categorie`), KEY `idx_categorie_user_fk_user` (`fk_user`), CONSTRAINT `fk_categorie_user_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_user_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4050,13 +4311,13 @@ DROP TABLE IF EXISTS `llx_categorie_warehouse`; CREATE TABLE `llx_categorie_warehouse` ( `fk_categorie` int(11) NOT NULL, `fk_warehouse` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_warehouse`), KEY `idx_categorie_warehouse_fk_categorie` (`fk_categorie`), KEY `idx_categorie_warehouse_fk_warehouse` (`fk_warehouse`), CONSTRAINT `fk_categorie_warehouse_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_warehouse_fk_warehouse_rowid` FOREIGN KEY (`fk_warehouse`) REFERENCES `llx_entrepot` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4079,7 +4340,7 @@ DROP TABLE IF EXISTS `llx_categorie_website_page`; CREATE TABLE `llx_categorie_website_page` ( `fk_categorie` int(11) NOT NULL, `fk_website_page` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_categorie`,`fk_website_page`), KEY `idx_categorie_website_page_fk_categorie` (`fk_categorie`), KEY `idx_categorie_website_page_fk_website_page` (`fk_website_page`), @@ -4087,7 +4348,7 @@ CREATE TABLE `llx_categorie_website_page` ( CONSTRAINT `fk_categorie_website_page_website_page_rowid` FOREIGN KEY (`fk_website_page`) REFERENCES `llx_website_page` (`rowid`), CONSTRAINT `fk_categorie_websitepage_categorie_rowid` FOREIGN KEY (`fk_categorie`) REFERENCES `llx_categorie` (`rowid`), CONSTRAINT `fk_categorie_websitepage_website_page_rowid` FOREIGN KEY (`fk_website_page`) REFERENCES `llx_website_page` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4110,10 +4371,10 @@ CREATE TABLE `llx_categories_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_categories_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4135,7 +4396,7 @@ DROP TABLE IF EXISTS `llx_chargesociales`; CREATE TABLE `llx_chargesociales` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `date_ech` datetime NOT NULL, - `libelle` varchar(80) COLLATE utf8_unicode_ci NOT NULL, + `libelle` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_type` int(11) NOT NULL, `fk_account` int(11) DEFAULT NULL, @@ -4146,15 +4407,17 @@ CREATE TABLE `llx_chargesociales` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `date_creation` datetime DEFAULT NULL, `date_valid` datetime DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `ref` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4163,7 +4426,7 @@ CREATE TABLE `llx_chargesociales` ( LOCK TABLES `llx_chargesociales` WRITE; /*!40000 ALTER TABLE `llx_chargesociales` DISABLE KEYS */; -INSERT INTO `llx_chargesociales` VALUES (4,'2013-08-09 00:00:00','fff',1,60,NULL,NULL,10.00000000,1,'2013-08-01','2019-09-26 11:33:19','2014-12-08 14:11:10',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,'2019-12-10 00:00:00','gdfgdf',1,60,NULL,NULL,10.00000000,0,'2019-12-10','2019-12-25 21:46:17','2019-12-26 01:46:17',NULL,NULL,12,NULL,NULL,NULL,NULL,NULL),(6,'2019-12-10 00:00:00','gdfgdf',1,60,NULL,NULL,10.00000000,1,'2019-12-10','2019-12-25 21:48:46','2019-12-26 01:48:12',NULL,NULL,12,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `llx_chargesociales` VALUES (4,'2013-08-09 00:00:00','fff',1,60,NULL,NULL,10.00000000,1,'2013-08-01','2019-09-26 11:33:19','2014-12-08 14:11:10',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(5,'2019-12-10 00:00:00','gdfgdf',1,60,NULL,NULL,10.00000000,0,'2019-12-10','2019-12-25 21:46:17','2019-12-26 01:46:17',NULL,NULL,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(6,'2019-12-10 00:00:00','gdfgdf',1,60,NULL,NULL,10.00000000,1,'2019-12-10','2019-12-25 21:48:46','2019-12-26 01:48:12',NULL,NULL,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_chargesociales` ENABLE KEYS */; UNLOCK TABLES; @@ -4179,11 +4442,11 @@ CREATE TABLE `llx_commande` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_soc` int(11) NOT NULL, `fk_projet` int(11) DEFAULT NULL, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_client` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_client` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `date_valid` datetime DEFAULT NULL, `date_cloture` datetime DEFAULT NULL, @@ -4203,13 +4466,14 @@ CREATE TABLE `llx_commande` ( `localtax2` double(24,8) DEFAULT 0.00000000, `total_ht` double(24,8) DEFAULT 0.00000000, `total_ttc` double(24,8) DEFAULT 0.00000000, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `facture` tinyint(4) DEFAULT 0, `fk_account` int(11) DEFAULT NULL, - `fk_currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_currency` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_cond_reglement` int(11) DEFAULT NULL, + `deposit_percent` varchar(63) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_mode_reglement` int(11) DEFAULT NULL, `date_livraison` datetime DEFAULT NULL, `fk_shipping_method` int(11) DEFAULT NULL, @@ -4217,19 +4481,19 @@ CREATE TABLE `llx_commande` ( `fk_availability` int(11) DEFAULT NULL, `fk_input_reason` int(11) DEFAULT NULL, `fk_delivery_address` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `module_source` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `pos_source` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module_source` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pos_source` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_commande_ref` (`ref`,`entity`), KEY `idx_commande_fk_soc` (`fk_soc`), @@ -4244,7 +4508,7 @@ CREATE TABLE `llx_commande` ( CONSTRAINT `fk_commande_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_commande_fk_user_cloture` FOREIGN KEY (`fk_user_cloture`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_commande_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4253,7 +4517,7 @@ CREATE TABLE `llx_commande` ( LOCK TABLES `llx_commande` WRITE; /*!40000 ALTER TABLE `llx_commande` DISABLE KEYS */; -INSERT INTO `llx_commande` VALUES (1,'2022-02-07 13:37:54',1,NULL,'CO1107-0002',1,NULL,NULL,'','2013-07-20 15:23:12','2021-08-08 13:59:09',NULL,'2021-07-20',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,1,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(2,'2022-02-07 13:37:54',1,NULL,'CO1107-0003',1,NULL,NULL,'','2013-07-20 23:20:12','2021-02-12 17:06:51',NULL,'2021-07-21',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(3,'2022-02-07 13:37:54',1,NULL,'CO1107-0004',1,NULL,NULL,'','2013-07-20 23:22:53','2021-02-17 18:27:56',NULL,'2021-07-21',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,30.00000000,30.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(5,'2022-02-07 13:37:54',1,NULL,'CO1108-0001',1,NULL,NULL,'','2013-08-08 03:04:11','2021-08-08 03:04:21',NULL,'2021-08-08',1,NULL,1,NULL,NULL,2,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(6,'2021-04-15 10:22:31',19,NULL,'(PROV6)',1,NULL,NULL,'','2015-02-17 16:22:14',NULL,NULL,'2021-02-17',1,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','einstein',0,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,'commande/(PROV6)/(PROV6).pdf',NULL,NULL),(17,'2021-07-11 17:49:28',4,NULL,'CO7001-0005',1,NULL,NULL,NULL,'2017-02-15 23:50:34','2020-02-15 23:50:34',NULL,'2021-05-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,509.00000000,509.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,509.00000000,0.00000000,509.00000000,NULL,NULL,NULL),(18,'2022-02-07 13:37:54',7,4,'CO7001-0006',1,NULL,NULL,NULL,'2017-02-15 23:51:23','2021-02-15 23:51:23',NULL,'2022-02-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,900.00000000,900.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,900.00000000,0.00000000,900.00000000,NULL,NULL,NULL),(20,'2021-04-15 10:22:31',4,NULL,'CO7001-0007',1,NULL,NULL,NULL,'2017-02-15 23:55:52','2020-02-15 23:55:52',NULL,'2021-04-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,330.00000000,330.00000000,'','','',0,NULL,NULL,2,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,330.00000000,0.00000000,330.00000000,NULL,NULL,NULL),(29,'2021-04-15 10:22:31',4,NULL,'CO7001-0008',1,NULL,NULL,NULL,'2017-02-16 00:03:44','2021-02-16 00:03:44',NULL,'2021-02-12',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,457.00000000,457.00000000,'','','',0,NULL,NULL,1,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,457.00000000,0.00000000,457.00000000,NULL,NULL,NULL),(34,'2022-02-07 13:37:54',11,NULL,'CO7001-0009',1,NULL,NULL,NULL,'2017-02-16 00:05:01','2021-02-16 00:05:01',NULL,'2022-01-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,124.00000000,124.00000000,'','','',0,NULL,NULL,2,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,124.00000000,0.00000000,124.00000000,NULL,NULL,NULL),(38,'2022-02-07 13:37:54',3,NULL,'CO7001-0010',1,NULL,NULL,NULL,'2017-02-16 00:05:01','2021-02-16 00:05:01',NULL,'2022-02-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,200.00000000,200.00000000,'','','',0,NULL,NULL,1,NULL,NULL,2,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,200.00000000,0.00000000,200.00000000,NULL,NULL,NULL),(40,'2022-02-07 13:37:54',11,NULL,'CO7001-0011',1,NULL,NULL,NULL,'2017-02-16 00:05:10','2021-02-16 00:05:11',NULL,'2022-01-23',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1210.00000000,1210.00000000,'','','',0,NULL,NULL,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1210.00000000,0.00000000,1210.00000000,NULL,NULL,NULL),(43,'2021-04-15 10:22:31',10,NULL,'CO7001-0012',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2021-02-16 00:05:11',NULL,'2021-02-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,478.00000000,478.00000000,'','','',0,NULL,NULL,2,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,478.00000000,0.00000000,478.00000000,NULL,NULL,NULL),(47,'2022-02-07 13:37:54',1,NULL,'CO7001-0013',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2021-02-16 00:05:11',NULL,'2021-11-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,55.00000000,55.00000000,'','','',0,NULL,NULL,2,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,55.00000000,0.00000000,55.00000000,NULL,NULL,NULL),(48,'2022-02-07 13:37:54',4,NULL,'CO7001-0014',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2021-02-16 00:05:11',NULL,'2021-07-30',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,540.00000000,540.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,540.00000000,0.00000000,540.00000000,NULL,NULL,NULL),(50,'2022-02-07 13:37:54',1,NULL,'CO7001-0015',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2022-02-16 00:05:26',NULL,'2021-12-12',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,118.00000000,118.00000000,'','','',0,NULL,NULL,1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,118.00000000,0.00000000,118.00000000,NULL,NULL,NULL),(54,'2021-07-11 17:49:28',12,NULL,'CO7001-0016',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2020-02-16 00:05:26','2020-02-16 03:05:56','2021-06-03',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,220.00000000,220.00000000,'','','',1,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,220.00000000,0.00000000,220.00000000,NULL,NULL,NULL),(58,'2022-02-07 13:37:54',1,NULL,'CO7001-0017',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2021-02-16 00:05:26',NULL,'2021-07-23',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,436.00000000,436.00000000,'','','',0,NULL,NULL,1,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,436.00000000,0.00000000,436.00000000,NULL,NULL,NULL),(62,'2021-04-15 10:22:31',19,NULL,'CO7001-0018',1,NULL,NULL,NULL,'2017-02-16 00:05:35','2020-02-16 00:05:35','2020-12-20 20:48:55','2021-02-23',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,410.00000000,410.00000000,'','','',0,NULL,NULL,2,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,410.00000000,0.00000000,410.00000000,NULL,NULL,NULL),(68,'2021-07-11 17:49:28',3,NULL,'CO7001-0019',1,NULL,NULL,NULL,'2017-02-16 00:05:35','2020-02-16 00:05:35',NULL,'2021-05-19',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,45.00000000,45.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,45.00000000,0.00000000,45.00000000,NULL,NULL,NULL),(72,'2022-02-07 13:37:54',6,NULL,'CO7001-0020',1,NULL,NULL,NULL,'2017-02-16 00:05:36','2021-02-16 00:05:36','2022-01-16 02:42:56','2021-11-13',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,610.00000000,610.00000000,'','','',1,NULL,NULL,NULL,NULL,NULL,2,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,610.00000000,0.00000000,610.00000000,NULL,NULL,NULL),(75,'2021-04-15 10:22:31',4,NULL,'CO7001-0021',1,NULL,NULL,NULL,'2017-02-16 00:05:37','2020-02-16 04:14:20',NULL,'2021-02-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,25.00000000,49.88000000,0.00000000,1200.00000000,1274.88000000,'','','',0,NULL,NULL,2,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1200.00000000,25.00000000,1274.88000000,NULL,NULL,NULL),(78,'2022-02-07 13:37:54',12,NULL,'CO7001-0022',1,NULL,NULL,NULL,'2017-02-16 00:05:37','2021-02-16 00:05:37',NULL,'2021-10-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,928.00000000,928.00000000,'','','',0,NULL,NULL,2,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,928.00000000,0.00000000,928.00000000,NULL,NULL,NULL),(81,'2021-07-11 17:49:28',11,NULL,'CO7001-0023',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-02-16 00:05:38',NULL,'2021-07-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,725.00000000,725.00000000,'','','',0,NULL,NULL,2,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,725.00000000,0.00000000,725.00000000,NULL,NULL,NULL),(83,'2021-04-15 10:22:31',26,NULL,'CO7001-0024',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2020-02-16 00:05:38',NULL,'2021-04-03',12,NULL,12,NULL,1,-1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,105.00000000,105.00000000,'','','',0,NULL,NULL,1,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,105.00000000,0.00000000,105.00000000,NULL,NULL,NULL),(84,'2021-07-11 17:49:28',2,NULL,'CO7001-0025',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-02-16 00:05:38',NULL,'2021-06-19',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,510.00000000,510.00000000,'','','',0,NULL,NULL,1,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,510.00000000,0.00000000,510.00000000,NULL,NULL,NULL),(85,'2022-02-07 13:37:54',1,NULL,'CO7001-0026',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-02-16 00:05:38',NULL,'2022-01-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,47.00000000,47.00000000,'','','',0,NULL,NULL,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,47.00000000,0.00000000,47.00000000,NULL,NULL,NULL),(88,'2022-02-07 13:37:54',10,NULL,'CO7001-0027',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-12-20 20:42:42',NULL,'2021-12-23',12,12,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,'This is a private note','This is a public note','',0,NULL,NULL,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,'commande/CO7001-0027/CO7001-0027.pdf',NULL,NULL),(90,'2021-04-15 10:22:31',19,NULL,'(PROV90)',1,NULL,NULL,NULL,'2017-02-16 04:46:31',NULL,NULL,'2021-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,440.00000000,440.00000000,'','','',0,NULL,NULL,3,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,440.00000000,0.00000000,440.00000000,NULL,NULL,NULL),(91,'2021-04-15 10:22:31',1,NULL,'(PROV91)',1,NULL,NULL,NULL,'2017-02-16 04:46:37',NULL,NULL,'2021-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(92,'2021-04-15 10:22:31',3,NULL,'(PROV92)',1,NULL,NULL,NULL,'2017-02-16 04:47:25',NULL,NULL,'2021-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1018.00000000,1018.00000000,'','','',0,NULL,NULL,3,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1018.00000000,0.00000000,1018.00000000,NULL,NULL,NULL),(93,'2022-02-07 13:37:54',10,NULL,'(PROV93)',1,NULL,NULL,NULL,'2019-09-27 19:32:53',NULL,NULL,'2021-09-27',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'commande/(PROV93)/(PROV93).pdf',NULL,NULL),(94,'2022-02-07 13:37:54',1,NULL,'(PROV94)',1,NULL,NULL,NULL,'2019-12-20 20:49:54',NULL,NULL,'2021-12-20',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(95,'2022-02-07 13:37:54',1,NULL,'(PROV95)',1,NULL,NULL,NULL,'2019-12-20 20:50:23',NULL,NULL,'2021-12-20',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(96,'2022-02-07 13:37:54',10,6,'(PROV96)',1,NULL,NULL,NULL,'2020-01-07 23:39:09',NULL,NULL,'2022-01-07',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'aaa','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,NULL,NULL,NULL),(97,'2022-02-07 13:37:54',10,6,'(PROV97)',1,NULL,NULL,NULL,'2020-01-07 23:43:06',NULL,NULL,'2022-01-07',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'aaa','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,NULL,NULL,NULL),(98,'2022-02-07 13:37:54',1,NULL,'(PROV98)',1,NULL,NULL,NULL,'2020-01-19 14:22:34',NULL,NULL,'2022-01-19',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.45000000,0.45000000,3.00000000,3.90000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,3.00000000,0.00000000,3.90000000,NULL,NULL,NULL),(99,'2022-02-07 13:37:54',1,NULL,'(PROV99)',1,NULL,NULL,NULL,'2020-01-19 14:24:27',NULL,NULL,'2022-01-19',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.24000000,0.00000000,0.00000000,4.00000000,4.24000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,4.00000000,0.24000000,4.24000000,NULL,NULL,NULL); +INSERT INTO `llx_commande` VALUES (1,'2022-02-07 13:37:54',1,NULL,'CO1107-0002',1,NULL,NULL,'','2013-07-20 15:23:12','2021-08-08 13:59:09',NULL,'2021-07-20',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,1,NULL,1,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(2,'2022-02-07 13:37:54',1,NULL,'CO1107-0003',1,NULL,NULL,'','2013-07-20 23:20:12','2021-02-12 17:06:51',NULL,'2021-07-21',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(3,'2022-02-07 13:37:54',1,NULL,'CO1107-0004',1,NULL,NULL,'','2013-07-20 23:22:53','2021-02-17 18:27:56',NULL,'2021-07-21',1,NULL,1,NULL,NULL,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,30.00000000,30.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(5,'2022-02-07 13:37:54',1,NULL,'CO1108-0001',1,NULL,NULL,'','2013-08-08 03:04:11','2021-08-08 03:04:21',NULL,'2021-08-08',1,NULL,1,NULL,NULL,2,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(6,'2022-07-04 01:11:35',19,NULL,'(PROV6)',1,NULL,NULL,'','2015-02-17 16:22:14',NULL,NULL,'2022-02-17',1,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','einstein',0,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,'commande/(PROV6)/(PROV6).pdf',NULL,NULL),(17,'2022-07-04 01:11:35',4,NULL,'CO7001-0005',1,NULL,NULL,NULL,'2017-02-15 23:50:34','2021-02-15 23:50:34',NULL,'2022-05-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,509.00000000,509.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,509.00000000,0.00000000,509.00000000,NULL,NULL,NULL),(18,'2022-02-07 13:37:54',7,4,'CO7001-0006',1,NULL,NULL,NULL,'2017-02-15 23:51:23','2021-02-15 23:51:23',NULL,'2022-02-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,900.00000000,900.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,900.00000000,0.00000000,900.00000000,NULL,NULL,NULL),(20,'2022-07-04 01:11:35',4,NULL,'CO7001-0007',1,NULL,NULL,NULL,'2017-02-15 23:55:52','2021-02-15 23:55:52',NULL,'2022-04-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,330.00000000,330.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,330.00000000,0.00000000,330.00000000,NULL,NULL,NULL),(29,'2022-07-04 01:11:35',4,NULL,'CO7001-0008',1,NULL,NULL,NULL,'2017-02-16 00:03:44','2022-02-16 00:03:44',NULL,'2022-02-12',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,457.00000000,457.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,457.00000000,0.00000000,457.00000000,NULL,NULL,NULL),(34,'2022-02-07 13:37:54',11,NULL,'CO7001-0009',1,NULL,NULL,NULL,'2017-02-16 00:05:01','2021-02-16 00:05:01',NULL,'2022-01-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,124.00000000,124.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,124.00000000,0.00000000,124.00000000,NULL,NULL,NULL),(38,'2022-02-07 13:37:54',3,NULL,'CO7001-0010',1,NULL,NULL,NULL,'2017-02-16 00:05:01','2021-02-16 00:05:01',NULL,'2022-02-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,200.00000000,200.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,2,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,200.00000000,0.00000000,200.00000000,NULL,NULL,NULL),(40,'2022-02-07 13:37:54',11,NULL,'CO7001-0011',1,NULL,NULL,NULL,'2017-02-16 00:05:10','2021-02-16 00:05:11',NULL,'2022-01-23',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1210.00000000,1210.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1210.00000000,0.00000000,1210.00000000,NULL,NULL,NULL),(43,'2022-07-04 01:11:35',10,NULL,'CO7001-0012',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2022-02-16 00:05:11',NULL,'2022-02-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,478.00000000,478.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,478.00000000,0.00000000,478.00000000,NULL,NULL,NULL),(47,'2022-02-07 13:37:54',1,NULL,'CO7001-0013',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2021-02-16 00:05:11',NULL,'2021-11-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,55.00000000,55.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,55.00000000,0.00000000,55.00000000,NULL,NULL,NULL),(48,'2022-02-07 13:37:54',4,NULL,'CO7001-0014',1,NULL,NULL,NULL,'2017-02-16 00:05:11','2021-02-16 00:05:11',NULL,'2021-07-30',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,540.00000000,540.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,540.00000000,0.00000000,540.00000000,NULL,NULL,NULL),(50,'2022-02-07 13:37:54',1,NULL,'CO7001-0015',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2022-02-16 00:05:26',NULL,'2021-12-12',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,118.00000000,118.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,118.00000000,0.00000000,118.00000000,NULL,NULL,NULL),(54,'2022-07-04 01:11:35',12,NULL,'CO7001-0016',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2021-02-16 00:05:26','2021-02-16 03:05:56','2022-06-03',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,220.00000000,220.00000000,'','','',1,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,220.00000000,0.00000000,220.00000000,NULL,NULL,NULL),(58,'2022-02-07 13:37:54',1,NULL,'CO7001-0017',1,NULL,NULL,NULL,'2017-02-16 00:05:26','2021-02-16 00:05:26',NULL,'2021-07-23',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,436.00000000,436.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,436.00000000,0.00000000,436.00000000,NULL,NULL,NULL),(62,'2022-07-04 01:11:35',19,NULL,'CO7001-0018',1,NULL,NULL,NULL,'2017-02-16 00:05:35','2021-02-16 00:05:35','2021-12-20 20:48:55','2022-02-23',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,410.00000000,410.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,410.00000000,0.00000000,410.00000000,NULL,NULL,NULL),(68,'2022-07-04 01:11:35',3,NULL,'CO7001-0019',1,NULL,NULL,NULL,'2017-02-16 00:05:35','2021-02-16 00:05:35',NULL,'2022-05-19',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,45.00000000,45.00000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,45.00000000,0.00000000,45.00000000,NULL,NULL,NULL),(72,'2022-02-07 13:37:54',6,NULL,'CO7001-0020',1,NULL,NULL,NULL,'2017-02-16 00:05:36','2021-02-16 00:05:36','2022-01-16 02:42:56','2021-11-13',12,NULL,12,12,1,3,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,610.00000000,610.00000000,'','','',1,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,610.00000000,0.00000000,610.00000000,NULL,NULL,NULL),(75,'2022-07-04 01:11:35',4,NULL,'CO7001-0021',1,NULL,NULL,NULL,'2017-02-16 00:05:37','2021-02-16 04:14:20',NULL,'2022-02-13',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,25.00000000,49.88000000,0.00000000,1200.00000000,1274.88000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1200.00000000,25.00000000,1274.88000000,NULL,NULL,NULL),(78,'2022-02-07 13:37:54',12,NULL,'CO7001-0022',1,NULL,NULL,NULL,'2017-02-16 00:05:37','2021-02-16 00:05:37',NULL,'2021-10-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,928.00000000,928.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,928.00000000,0.00000000,928.00000000,NULL,NULL,NULL),(81,'2022-07-04 01:11:35',11,NULL,'CO7001-0023',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2022-02-16 00:05:38',NULL,'2022-07-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,725.00000000,725.00000000,'','','',0,NULL,NULL,2,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,725.00000000,0.00000000,725.00000000,NULL,NULL,NULL),(83,'2022-07-04 01:11:35',26,NULL,'CO7001-0024',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-02-16 00:05:38',NULL,'2022-04-03',12,NULL,12,NULL,1,-1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,105.00000000,105.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,1,NULL,1,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,105.00000000,0.00000000,105.00000000,NULL,NULL,NULL),(84,'2022-07-04 01:11:35',2,NULL,'CO7001-0025',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2022-02-16 00:05:38',NULL,'2022-06-19',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,510.00000000,510.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,510.00000000,0.00000000,510.00000000,NULL,NULL,NULL),(85,'2022-02-07 13:37:54',1,NULL,'CO7001-0026',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-02-16 00:05:38',NULL,'2022-01-03',12,NULL,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,47.00000000,47.00000000,'','','',0,NULL,NULL,1,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,47.00000000,0.00000000,47.00000000,NULL,NULL,NULL),(88,'2022-02-07 13:37:54',10,NULL,'CO7001-0027',1,NULL,NULL,NULL,'2017-02-16 00:05:38','2021-12-20 20:42:42',NULL,'2021-12-23',12,12,12,NULL,1,1,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,'This is a private note','This is a public note','',0,NULL,NULL,1,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,'commande/CO7001-0027/CO7001-0027.pdf',NULL,NULL),(90,'2022-07-04 01:11:35',19,NULL,'(PROV90)',1,NULL,NULL,NULL,'2017-02-16 04:46:31',NULL,NULL,'2022-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,440.00000000,440.00000000,'','','',0,NULL,NULL,3,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,440.00000000,0.00000000,440.00000000,NULL,NULL,NULL),(91,'2022-07-04 01:11:35',1,NULL,'(PROV91)',1,NULL,NULL,NULL,'2017-02-16 04:46:37',NULL,NULL,'2022-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(92,'2022-07-04 01:11:35',3,NULL,'(PROV92)',1,NULL,NULL,NULL,'2017-02-16 04:47:25',NULL,NULL,'2022-02-16',12,NULL,NULL,NULL,NULL,0,0.00000000,0,NULL,0,0.00000000,0.00000000,0.00000000,1018.00000000,1018.00000000,'','','',0,NULL,NULL,3,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1018.00000000,0.00000000,1018.00000000,NULL,NULL,NULL),(93,'2022-02-07 13:37:54',10,NULL,'(PROV93)',1,NULL,NULL,NULL,'2019-09-27 19:32:53',NULL,NULL,'2021-09-27',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','einstein',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'commande/(PROV93)/(PROV93).pdf',NULL,NULL),(94,'2022-02-07 13:37:54',1,NULL,'(PROV94)',1,NULL,NULL,NULL,'2019-12-20 20:49:54',NULL,NULL,'2021-12-20',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(95,'2022-02-07 13:37:54',1,NULL,'(PROV95)',1,NULL,NULL,NULL,'2019-12-20 20:50:23',NULL,NULL,'2021-12-20',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,1000.00000000,1000.00000000,'','','',0,NULL,NULL,3,NULL,3,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,NULL,NULL,NULL),(96,'2022-02-07 13:37:54',10,6,'(PROV96)',1,NULL,NULL,NULL,'2020-01-07 23:39:09',NULL,NULL,'2022-01-07',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'aaa','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,NULL,NULL,NULL),(97,'2022-02-07 13:37:54',10,6,'(PROV97)',1,NULL,NULL,NULL,'2020-01-07 23:43:06',NULL,NULL,'2022-01-07',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,'aaa','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,NULL,NULL,NULL),(98,'2022-02-07 13:37:54',1,NULL,'(PROV98)',1,NULL,NULL,NULL,'2020-01-19 14:22:34',NULL,NULL,'2022-01-19',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.00000000,0.45000000,0.45000000,3.00000000,3.90000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,3.00000000,0.00000000,3.90000000,NULL,NULL,NULL),(99,'2022-02-07 13:37:54',1,NULL,'(PROV99)',1,NULL,NULL,NULL,'2020-01-19 14:24:27',NULL,NULL,'2022-01-19',12,NULL,NULL,NULL,NULL,0,NULL,0,NULL,0,0.24000000,0.00000000,0.00000000,4.00000000,4.24000000,'','','',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'',0,'EUR',1.00000000,4.00000000,0.24000000,4.24000000,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_commande` ENABLE KEYS */; UNLOCK TABLES; @@ -4268,11 +4532,11 @@ CREATE TABLE `llx_commande_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `custom1` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `custom1` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_commande_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4295,10 +4559,10 @@ CREATE TABLE `llx_commande_fournisseur` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_soc` int(11) NOT NULL, - `ref` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_supplier` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_supplier` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_projet` int(11) DEFAULT 0, `date_creation` datetime DEFAULT NULL, `date_valid` datetime DEFAULT NULL, @@ -4321,31 +4585,31 @@ CREATE TABLE `llx_commande_fournisseur` ( `localtax2` double(24,8) DEFAULT 0.00000000, `total_ht` double(24,8) DEFAULT 0.00000000, `total_ttc` double(24,8) DEFAULT 0.00000000, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_input_method` int(11) DEFAULT 0, `fk_cond_reglement` int(11) DEFAULT 0, `fk_mode_reglement` int(11) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_livraison` datetime DEFAULT NULL, `fk_account` int(11) DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_commande_fournisseur_ref` (`ref`,`fk_soc`,`entity`), KEY `idx_commande_fournisseur_fk_soc` (`fk_soc`), KEY `billed` (`billed`), CONSTRAINT `fk_commande_fournisseur_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4354,7 +4618,7 @@ CREATE TABLE `llx_commande_fournisseur` ( LOCK TABLES `llx_commande_fournisseur` WRITE; /*!40000 ALTER TABLE `llx_commande_fournisseur` DISABLE KEYS */; -INSERT INTO `llx_commande_fournisseur` VALUES (1,'2022-02-07 13:37:54',13,'CF1007-0001',1,NULL,NULL,NULL,'2021-07-11 17:13:40','2022-02-01 18:51:42','2022-02-01 18:52:04',NULL,'2022-02-01',1,NULL,12,12,NULL,0,5,0,0.00000000,0,0,39.20000000,0.00000000,0.00000000,200.00000000,239.20000000,NULL,NULL,'muscadet',2,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(2,'2021-07-11 17:49:28',1,'CF1007-0002',1,NULL,NULL,NULL,'2021-07-11 18:46:28','2021-07-11 18:47:33',NULL,NULL,'2021-07-11',1,NULL,1,NULL,NULL,0,4,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,200.00000000,200.00000000,NULL,NULL,'muscadet',4,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(3,'2020-01-20 11:22:53',17,'(PROV3)',1,NULL,NULL,NULL,'2013-08-04 23:00:52',NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,1079.17000000,1079.17000000,NULL,NULL,'muscadet',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'USD',1.20000000,1295.00000000,0.00000000,1295.00000000,NULL),(4,'2020-01-20 11:19:49',17,'(PROV4)',1,NULL,NULL,NULL,'2013-08-04 23:19:32',NULL,NULL,NULL,NULL,1,12,NULL,NULL,NULL,0,0,0,0.00000000,0,0,11.88000000,0.00000000,0.00000000,174.17000000,186.05000000,'Private note','Public note','muscadet',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EUR',1.00000000,174.17000000,11.88000000,186.05000000,NULL),(13,'2021-04-15 10:22:31',1,'CF1303-0004',1,NULL,NULL,NULL,'2021-03-09 19:39:18','2021-03-09 19:39:27','2021-03-09 19:39:32',NULL,'2021-03-09',1,NULL,1,1,NULL,0,2,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,NULL,NULL,'muscadet',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(14,'2020-01-20 11:20:11',1,'(PROV14)',1,NULL,'',NULL,'2020-01-20 12:20:11',NULL,NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,0,NULL,0,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','muscadet',0,1,NULL,NULL,NULL,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL); +INSERT INTO `llx_commande_fournisseur` VALUES (1,'2022-02-07 13:37:54',13,'CF1007-0001',1,NULL,NULL,NULL,'2021-07-11 17:13:40','2022-02-01 18:51:42','2022-02-01 18:52:04',NULL,'2022-02-01',1,NULL,12,12,NULL,0,5,0,0.00000000,0,0,39.20000000,0.00000000,0.00000000,200.00000000,239.20000000,NULL,NULL,'muscadet',2,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(2,'2021-07-11 17:49:28',1,'CF1007-0002',1,NULL,NULL,NULL,'2021-07-11 18:46:28','2021-07-11 18:47:33',NULL,NULL,'2021-07-11',1,NULL,1,NULL,NULL,0,4,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,200.00000000,200.00000000,NULL,NULL,'muscadet',4,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(3,'2020-01-20 11:22:53',17,'(PROV3)',1,NULL,NULL,NULL,'2013-08-04 23:00:52',NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,1079.17000000,1079.17000000,NULL,NULL,'muscadet',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'USD',1.20000000,1295.00000000,0.00000000,1295.00000000,NULL),(4,'2020-01-20 11:19:49',17,'(PROV4)',1,NULL,NULL,NULL,'2013-08-04 23:19:32',NULL,NULL,NULL,NULL,1,12,NULL,NULL,NULL,0,0,0,0.00000000,0,0,11.88000000,0.00000000,0.00000000,174.17000000,186.05000000,'Private note','Public note','muscadet',0,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'EUR',1.00000000,174.17000000,11.88000000,186.05000000,NULL),(13,'2022-07-04 01:11:35',1,'CF1303-0004',1,NULL,NULL,NULL,'2022-03-09 19:39:18','2022-03-09 19:39:27','2022-03-09 19:39:32',NULL,'2022-03-09',1,NULL,1,1,NULL,0,2,0,0.00000000,0,0,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,NULL,NULL,'muscadet',1,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL),(14,'2020-01-20 11:20:11',1,'(PROV14)',1,NULL,'',NULL,'2020-01-20 12:20:11',NULL,NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,0,NULL,0,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,'','','muscadet',0,1,NULL,NULL,NULL,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL); /*!40000 ALTER TABLE `llx_commande_fournisseur` ENABLE KEYS */; UNLOCK TABLES; @@ -4374,10 +4638,10 @@ CREATE TABLE `llx_commande_fournisseur_dispatch` ( `fk_entrepot` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `datec` datetime DEFAULT NULL, - `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `comment` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `eatby` date DEFAULT NULL, `sellby` date DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, @@ -4385,7 +4649,7 @@ CREATE TABLE `llx_commande_fournisseur_dispatch` ( `cost_price` double(24,8) DEFAULT 0.00000000, PRIMARY KEY (`rowid`), KEY `idx_commande_fournisseur_dispatch_fk_commande` (`fk_commande`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4409,10 +4673,10 @@ CREATE TABLE `llx_commande_fournisseur_dispatch_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_commande_fournisseur_dispatch_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4435,10 +4699,10 @@ CREATE TABLE `llx_commande_fournisseur_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_commande_fournisseur_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4464,9 +4728,9 @@ CREATE TABLE `llx_commande_fournisseur_log` ( `fk_commande` int(11) NOT NULL, `fk_statut` smallint(6) NOT NULL, `fk_user` int(11) NOT NULL, - `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `comment` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4491,15 +4755,15 @@ CREATE TABLE `llx_commande_fournisseurdet` ( `fk_commande` int(11) NOT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva_tx` double(6,3) DEFAULT 0.000, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -4513,12 +4777,12 @@ CREATE TABLE `llx_commande_fournisseurdet` ( `date_start` datetime DEFAULT NULL, `date_end` datetime DEFAULT NULL, `info_bits` int(11) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `special_code` int(11) DEFAULT 0, `rang` int(11) DEFAULT 0, `fk_unit` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -4528,7 +4792,7 @@ CREATE TABLE `llx_commande_fournisseurdet` ( KEY `idx_commande_fournisseurdet_fk_commande` (`fk_commande`), KEY `idx_commande_fournisseurdet_fk_product` (`fk_product`), CONSTRAINT `fk_commande_fournisseurdet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4552,10 +4816,10 @@ CREATE TABLE `llx_commande_fournisseurdet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_commande_fournisseurdet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4579,15 +4843,15 @@ CREATE TABLE `llx_commandedet` ( `fk_commande` int(11) DEFAULT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT NULL, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT NULL, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -4607,11 +4871,11 @@ CREATE TABLE `llx_commandedet` ( `buy_price_ht` double(24,8) DEFAULT 0.00000000, `special_code` int(10) unsigned DEFAULT 0, `rang` int(11) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_commandefourndet` int(11) DEFAULT NULL, `fk_unit` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -4624,7 +4888,7 @@ CREATE TABLE `llx_commandedet` ( CONSTRAINT `fk_commandedet_fk_commande` FOREIGN KEY (`fk_commande`) REFERENCES `llx_commande` (`rowid`), CONSTRAINT `fk_commandedet_fk_commandefourndet` FOREIGN KEY (`fk_commandefourndet`) REFERENCES `llx_commande_fournisseurdet` (`rowid`), CONSTRAINT `fk_commandedet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=308 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4648,10 +4912,10 @@ CREATE TABLE `llx_commandedet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_commandedet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4674,15 +4938,15 @@ CREATE TABLE `llx_comment` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `description` text COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_element` int(11) DEFAULT NULL, - `element_type` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `element_type` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT 1, - `import_key` varchar(125) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(125) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4703,16 +4967,16 @@ DROP TABLE IF EXISTS `llx_const`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_const` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `value` text COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(64) COLLATE utf8_unicode_ci DEFAULT 'string', + `value` text COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT 'string', `visible` tinyint(4) NOT NULL DEFAULT 1, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), UNIQUE KEY `uk_const` (`name`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=9255 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=9451 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4721,7 +4985,7 @@ CREATE TABLE `llx_const` ( LOCK TABLES `llx_const` WRITE; /*!40000 ALTER TABLE `llx_const` DISABLE KEYS */; -INSERT INTO `llx_const` VALUES (8,'MAIN_UPLOAD_DOC',0,'2048','chaine',0,'Max size for file upload (0 means no upload allowed)','2012-07-08 11:17:57'),(9,'MAIN_SEARCHFORM_SOCIETE',0,'1','yesno',0,'Show form for quick company search','2012-07-08 11:17:57'),(10,'MAIN_SEARCHFORM_CONTACT',0,'1','yesno',0,'Show form for quick contact search','2012-07-08 11:17:57'),(11,'MAIN_SEARCHFORM_PRODUITSERVICE',0,'1','yesno',0,'Show form for quick product search','2012-07-08 11:17:58'),(12,'MAIN_SEARCHFORM_ADHERENT',0,'1','yesno',0,'Show form for quick member search','2012-07-08 11:17:58'),(16,'MAIN_SIZE_LISTE_LIMIT',0,'25','chaine',0,'Longueur maximum des listes','2012-07-08 11:17:58'),(29,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',1,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-07-08 11:17:58'),(33,'SOCIETE_NOLIST_COURRIER',0,'1','yesno',0,'Liste les fichiers du repertoire courrier','2012-07-08 11:17:58'),(36,'ADHERENT_MAIL_REQUIRED',1,'1','yesno',0,'EMail required to create a new member','2012-07-08 11:17:58'),(37,'ADHERENT_MAIL_FROM',1,'adherents@domain.com','chaine',0,'Sender EMail for automatic emails','2012-07-08 11:17:58'),(38,'ADHERENT_MAIL_RESIL',1,'Your subscription has been resiliated.\r\nWe hope to see you soon again','html',0,'Mail resiliation','2018-11-23 11:56:07'),(39,'ADHERENT_MAIL_VALID',1,'Your subscription has been validated.\r\nThis is a remind of your personal information :\r\n\r\n%INFOS%\r\n\r\n','html',0,'Mail de validation','2018-11-23 11:56:07'),(40,'ADHERENT_MAIL_COTIS',1,'Hello %PRENOM%,\r\nThanks for your subscription.\r\nThis email confirms that your subscription has been received and processed.\r\n\r\n','html',0,'Mail de validation de cotisation','2018-11-23 11:56:07'),(41,'ADHERENT_MAIL_VALID_SUBJECT',1,'Your subscription has been validated','chaine',0,'Sujet du mail de validation','2012-07-08 11:17:59'),(42,'ADHERENT_MAIL_RESIL_SUBJECT',1,'Resiliating your subscription','chaine',0,'Sujet du mail de resiliation','2012-07-08 11:17:59'),(43,'ADHERENT_MAIL_COTIS_SUBJECT',1,'Receipt of your subscription','chaine',0,'Sujet du mail de validation de cotisation','2012-07-08 11:17:59'),(44,'MAILING_EMAIL_FROM',1,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-07-08 11:17:59'),(45,'ADHERENT_USE_MAILMAN',1,'0','yesno',0,'Utilisation de Mailman','2012-07-08 11:17:59'),(46,'ADHERENT_MAILMAN_UNSUB_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%','chaine',0,'Url de desinscription aux listes mailman','2012-07-08 11:17:59'),(47,'ADHERENT_MAILMAN_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%','chaine',0,'Url pour les inscriptions mailman','2012-07-08 11:17:59'),(48,'ADHERENT_MAILMAN_LISTS',1,'test-test,test-test2','chaine',0,'Listes auxquelles inscrire les nouveaux adherents','2012-07-08 11:17:59'),(49,'ADHERENT_MAILMAN_ADMINPW',1,'','chaine',0,'Mot de passe Admin des liste mailman','2012-07-08 11:17:59'),(50,'ADHERENT_MAILMAN_SERVER',1,'lists.domain.com','chaine',0,'Serveur hebergeant les interfaces d Admin des listes mailman','2012-07-08 11:17:59'),(51,'ADHERENT_MAILMAN_LISTS_COTISANT',1,'','chaine',0,'Liste(s) auxquelles les nouveaux cotisants sont inscris automatiquement','2012-07-08 11:17:59'),(52,'ADHERENT_USE_SPIP',1,'0','yesno',0,'Utilisation de SPIP ?','2012-07-08 11:17:59'),(53,'ADHERENT_USE_SPIP_AUTO',1,'0','yesno',0,'Utilisation de SPIP automatiquement','2012-07-08 11:17:59'),(54,'ADHERENT_SPIP_USER',1,'user','chaine',0,'user spip','2012-07-08 11:17:59'),(55,'ADHERENT_SPIP_PASS',1,'pass','chaine',0,'Pass de connection','2012-07-08 11:17:59'),(56,'ADHERENT_SPIP_SERVEUR',1,'localhost','chaine',0,'serveur spip','2012-07-08 11:17:59'),(57,'ADHERENT_SPIP_DB',1,'spip','chaine',0,'db spip','2012-07-08 11:17:59'),(58,'ADHERENT_CARD_HEADER_TEXT',1,'%ANNEE%','chaine',0,'Texte imprime sur le haut de la carte adherent','2012-07-08 11:17:59'),(59,'ADHERENT_CARD_FOOTER_TEXT',1,'Association AZERTY','chaine',0,'Texte imprime sur le bas de la carte adherent','2012-07-08 11:17:59'),(61,'FCKEDITOR_ENABLE_USER',1,'1','yesno',0,'Activation fckeditor sur notes utilisateurs','2012-07-08 11:17:59'),(62,'FCKEDITOR_ENABLE_SOCIETE',1,'1','yesno',0,'Activation fckeditor sur notes societe','2012-07-08 11:17:59'),(63,'FCKEDITOR_ENABLE_PRODUCTDESC',1,'1','yesno',0,'Activation fckeditor sur notes produits','2012-07-08 11:17:59'),(64,'FCKEDITOR_ENABLE_MEMBER',1,'1','yesno',0,'Activation fckeditor sur notes adherent','2012-07-08 11:17:59'),(65,'FCKEDITOR_ENABLE_MAILING',1,'1','yesno',0,'Activation fckeditor sur emailing','2012-07-08 11:17:59'),(67,'DON_ADDON_MODEL',1,'html_cerfafr','chaine',0,'','2012-07-08 11:18:00'),(68,'PROPALE_ADDON',1,'mod_propale_marbre','chaine',0,'','2012-07-08 11:18:00'),(69,'PROPALE_ADDON_PDF',1,'azur','chaine',0,'','2012-07-08 11:18:00'),(70,'COMMANDE_ADDON',1,'mod_commande_marbre','chaine',0,'','2012-07-08 11:18:00'),(71,'COMMANDE_ADDON_PDF',1,'einstein','chaine',0,'','2012-07-08 11:18:00'),(72,'COMMANDE_SUPPLIER_ADDON',1,'mod_commande_fournisseur_muguet','chaine',0,'','2012-07-08 11:18:00'),(73,'COMMANDE_SUPPLIER_ADDON_PDF',1,'muscadet','chaine',0,'','2012-07-08 11:18:00'),(74,'EXPEDITION_ADDON',1,'enlevement','chaine',0,'','2012-07-08 11:18:00'),(76,'FICHEINTER_ADDON',1,'pacific','chaine',0,'','2012-07-08 11:18:00'),(77,'FICHEINTER_ADDON_PDF',1,'soleil','chaine',0,'','2012-07-08 11:18:00'),(79,'FACTURE_ADDON_PDF',1,'crabe','chaine',0,'','2012-07-08 11:18:00'),(80,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'Durée de validitée des propales','2012-07-08 11:18:00'),(230,'COMPANY_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2012-07-08 11:26:20'),(238,'LIVRAISON_ADDON_PDF',1,'typhon','chaine',0,'Nom du gestionnaire de generation des commandes en PDF','2012-07-08 11:26:27'),(239,'DELIVERY_ADDON_NUMBER',1,'mod_delivery_jade','chaine',0,'Nom du gestionnaire de numerotation des bons de livraison','2020-12-10 12:24:40'),(245,'FACTURE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2012-07-08 11:28:53'),(249,'DON_FORM',1,'html_cerfafr','chaine',0,'Nom du gestionnaire de formulaire de dons','2017-09-06 16:12:22'),(254,'ADHERENT_BANK_ACCOUNT',1,'','chaine',0,'ID du Compte banquaire utilise','2012-07-08 11:29:05'),(255,'ADHERENT_BANK_CATEGORIE',1,'','chaine',0,'ID de la categorie banquaire des cotisations','2012-07-08 11:29:05'),(256,'ADHERENT_ETIQUETTE_TYPE',1,'L7163','chaine',0,'Type d etiquette (pour impression de planche d etiquette)','2012-07-08 11:29:05'),(269,'PROJECT_ADDON_PDF',1,'baleine','chaine',0,'Nom du gestionnaire de generation des projets en PDF','2012-07-08 11:29:33'),(270,'PROJECT_ADDON',1,'mod_project_simple','chaine',0,'Nom du gestionnaire de numerotation des projets','2012-07-08 11:29:33'),(369,'EXPEDITION_ADDON_PDF',1,'merou','chaine',0,'','2012-07-08 22:58:07'),(377,'FACTURE_ADDON',1,'mod_facture_terre','chaine',0,'','2012-07-08 23:08:12'),(380,'ADHERENT_CARD_TEXT',1,'%TYPE% n° %ID%\r\n%PRENOM% %NOM%\r\n<%EMAIL%>\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%','',0,'Texte imprime sur la carte adherent','2012-07-08 23:14:46'),(381,'ADHERENT_CARD_TEXT_RIGHT',1,'aaa','',0,'','2012-07-08 23:14:55'),(386,'STOCK_CALCULATE_ON_SHIPMENT',1,'1','chaine',0,'','2012-07-08 23:23:21'),(387,'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER',1,'1','chaine',0,'','2012-07-08 23:23:26'),(392,'MAIN_AGENDA_XCAL_EXPORTKEY',1,'dolibarr','chaine',0,'','2012-07-08 23:27:50'),(393,'MAIN_AGENDA_EXPORT_PAST_DELAY',1,'100','chaine',0,'','2012-07-08 23:27:50'),(610,'CASHDESK_ID_THIRDPARTY',1,'7','chaine',0,'','2012-07-11 17:08:18'),(611,'CASHDESK_ID_BANKACCOUNT_CASH',1,'3','chaine',0,'','2012-07-11 17:08:18'),(612,'CASHDESK_ID_BANKACCOUNT_CHEQUE',1,'1','chaine',0,'','2012-07-11 17:08:18'),(613,'CASHDESK_ID_BANKACCOUNT_CB',1,'1','chaine',0,'','2012-07-11 17:08:18'),(614,'CASHDESK_ID_WAREHOUSE',1,'2','chaine',0,'','2012-07-11 17:08:18'),(660,'LDAP_USER_DN',1,'ou=users,dc=my-domain,dc=com','chaine',0,NULL,'2012-07-18 10:25:27'),(661,'LDAP_GROUP_DN',1,'ou=groups,dc=my-domain,dc=com','chaine',0,NULL,'2012-07-18 10:25:27'),(662,'LDAP_FILTER_CONNECTION',1,'&(objectClass=user)(objectCategory=person)','chaine',0,NULL,'2012-07-18 10:25:27'),(663,'LDAP_FIELD_LOGIN',1,'uid','chaine',0,NULL,'2012-07-18 10:25:27'),(664,'LDAP_FIELD_FULLNAME',1,'cn','chaine',0,NULL,'2012-07-18 10:25:27'),(665,'LDAP_FIELD_NAME',1,'sn','chaine',0,NULL,'2012-07-18 10:25:27'),(666,'LDAP_FIELD_FIRSTNAME',1,'givenname','chaine',0,NULL,'2012-07-18 10:25:27'),(667,'LDAP_FIELD_MAIL',1,'mail','chaine',0,NULL,'2012-07-18 10:25:27'),(668,'LDAP_FIELD_PHONE',1,'telephonenumber','chaine',0,NULL,'2012-07-18 10:25:27'),(669,'LDAP_FIELD_FAX',1,'facsimiletelephonenumber','chaine',0,NULL,'2012-07-18 10:25:27'),(670,'LDAP_FIELD_MOBILE',1,'mobile','chaine',0,NULL,'2012-07-18 10:25:27'),(671,'LDAP_SERVER_TYPE',1,'openldap','chaine',0,'','2012-07-18 10:25:46'),(672,'LDAP_SERVER_PROTOCOLVERSION',1,'3','chaine',0,'','2012-07-18 10:25:47'),(673,'LDAP_SERVER_HOST',1,'localhost','chaine',0,'','2012-07-18 10:25:47'),(674,'LDAP_SERVER_PORT',1,'389','chaine',0,'','2012-07-18 10:25:47'),(675,'LDAP_SERVER_USE_TLS',1,'0','chaine',0,'','2012-07-18 10:25:47'),(676,'LDAP_SYNCHRO_ACTIVE',1,'dolibarr2ldap','chaine',0,'','2012-07-18 10:25:47'),(677,'LDAP_CONTACT_ACTIVE',1,'1','chaine',0,'','2012-07-18 10:25:47'),(678,'LDAP_MEMBER_ACTIVE',1,'1','chaine',0,'','2012-07-18 10:25:47'),(974,'MAIN_MODULE_WORKFLOW_TRIGGERS',1,'1','chaine',0,NULL,'2013-07-18 18:02:20'),(975,'WORKFLOW_PROPAL_AUTOCREATE_ORDER',1,'1','chaine',0,'','2013-07-18 18:02:24'),(980,'PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR',1,'1234567','chaine',0,'','2013-07-18 18:05:50'),(983,'FACTURE_RIB_NUMBER',1,'1','chaine',0,'','2013-07-18 18:35:14'),(984,'FACTURE_CHQ_NUMBER',1,'1','chaine',0,'','2013-07-18 18:35:14'),(1016,'GOOGLE_DUPLICATE_INTO_GCAL',1,'1','chaine',0,'','2013-07-18 21:40:20'),(1152,'SOCIETE_CODECLIENT_ADDON',1,'mod_codeclient_monkey','chaine',0,'','2013-07-29 20:50:02'),(1240,'MAIN_LOGEVENTS_USER_LOGIN',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1241,'MAIN_LOGEVENTS_USER_LOGIN_FAILED',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1242,'MAIN_LOGEVENTS_USER_LOGOUT',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1243,'MAIN_LOGEVENTS_USER_CREATE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1244,'MAIN_LOGEVENTS_USER_MODIFY',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1245,'MAIN_LOGEVENTS_USER_NEW_PASSWORD',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1246,'MAIN_LOGEVENTS_USER_ENABLEDISABLE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1247,'MAIN_LOGEVENTS_USER_DELETE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1248,'MAIN_LOGEVENTS_GROUP_CREATE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1249,'MAIN_LOGEVENTS_GROUP_MODIFY',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1250,'MAIN_LOGEVENTS_GROUP_DELETE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1251,'MAIN_BOXES_MAXLINES',1,'5','',0,'','2013-07-29 21:05:42'),(1482,'EXPEDITION_ADDON_NUMBER',1,'mod_expedition_safor','chaine',0,'Nom du gestionnaire de numerotation des expeditions','2013-08-05 17:53:11'),(1490,'CONTRACT_ADDON',1,'mod_contract_serpis','chaine',0,'Nom du gestionnaire de numerotation des contrats','2013-08-05 18:11:58'),(1677,'COMMANDE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/orders','chaine',0,NULL,'2014-12-08 13:11:02'),(1724,'PROPALE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2014-12-08 13:17:14'),(1730,'OPENSTREETMAP_ENABLE_MAPS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1731,'OPENSTREETMAP_ENABLE_MAPS_CONTACTS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1732,'OPENSTREETMAP_ENABLE_MAPS_MEMBERS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1733,'OPENSTREETMAP_MAPS_ZOOM_LEVEL',1,'15','chaine',0,'','2014-12-08 13:22:47'),(1742,'MAIN_MAIL_EMAIL_FROM',2,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2014-12-08 14:08:14'),(1743,'MAIN_MENU_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2015-02-11 19:43:54'),(1744,'MAIN_MENUFRONT_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2015-02-11 19:43:54'),(1745,'MAIN_MENU_SMARTPHONE',2,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2014-12-08 14:08:14'),(1746,'MAIN_MENUFRONT_SMARTPHONE',2,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2014-12-08 14:08:14'),(1747,'MAIN_THEME',2,'eldy','chaine',0,'Default theme','2014-12-08 14:08:14'),(1748,'MAIN_DELAY_ACTIONS_TODO',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2014-12-08 14:08:14'),(1749,'MAIN_DELAY_ORDERS_TO_PROCESS',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2014-12-08 14:08:14'),(1750,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2014-12-08 14:08:14'),(1751,'MAIN_DELAY_PROPALS_TO_CLOSE',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2014-12-08 14:08:14'),(1752,'MAIN_DELAY_PROPALS_TO_BILL',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2014-12-08 14:08:14'),(1753,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2014-12-08 14:08:14'),(1754,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2014-12-08 14:08:14'),(1755,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2014-12-08 14:08:14'),(1756,'MAIN_DELAY_RUNNING_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2014-12-08 14:08:14'),(1757,'MAIN_DELAY_MEMBERS',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2014-12-08 14:08:14'),(1758,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',2,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2014-12-08 14:08:14'),(1759,'MAILING_EMAIL_FROM',2,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2014-12-08 14:08:14'),(1760,'MAIN_INFO_SOCIETE_COUNTRY',3,'1:FR:France','chaine',0,'','2015-02-26 21:56:28'),(1761,'MAIN_INFO_SOCIETE_NOM',3,'bbb','chaine',0,'','2014-12-08 14:08:20'),(1762,'MAIN_INFO_SOCIETE_STATE',3,'0','chaine',0,'','2015-02-27 14:20:27'),(1763,'MAIN_MONNAIE',3,'EUR','chaine',0,'','2014-12-08 14:08:20'),(1764,'MAIN_LANG_DEFAULT',3,'auto','chaine',0,'','2014-12-08 14:08:20'),(1765,'MAIN_MAIL_EMAIL_FROM',3,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2014-12-08 14:08:20'),(1766,'MAIN_MENU_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2015-02-11 19:43:54'),(1767,'MAIN_MENUFRONT_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2015-02-11 19:43:54'),(1768,'MAIN_MENU_SMARTPHONE',3,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2014-12-08 14:08:20'),(1769,'MAIN_MENUFRONT_SMARTPHONE',3,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2014-12-08 14:08:20'),(1770,'MAIN_THEME',3,'eldy','chaine',0,'Default theme','2014-12-08 14:08:20'),(1771,'MAIN_DELAY_ACTIONS_TODO',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2014-12-08 14:08:20'),(1772,'MAIN_DELAY_ORDERS_TO_PROCESS',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2014-12-08 14:08:20'),(1773,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2014-12-08 14:08:20'),(1774,'MAIN_DELAY_PROPALS_TO_CLOSE',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2014-12-08 14:08:20'),(1775,'MAIN_DELAY_PROPALS_TO_BILL',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2014-12-08 14:08:20'),(1776,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2014-12-08 14:08:20'),(1777,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2014-12-08 14:08:20'),(1778,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2014-12-08 14:08:20'),(1779,'MAIN_DELAY_RUNNING_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2014-12-08 14:08:20'),(1780,'MAIN_DELAY_MEMBERS',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2014-12-08 14:08:20'),(1781,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',3,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2014-12-08 14:08:20'),(1782,'MAILING_EMAIL_FROM',3,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2014-12-08 14:08:20'),(1803,'SYSLOG_FILE',1,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2014-12-08 14:15:08'),(1804,'SYSLOG_HANDLERS',1,'[\"mod_syslog_file\"]','chaine',0,'','2014-12-08 14:15:08'),(1805,'MAIN_MODULE_SKINCOLOREDITOR',3,'1',NULL,0,NULL,'2014-12-08 14:35:40'),(1922,'PAYPAL_API_SANDBOX',1,'1','chaine',0,'','2014-12-12 12:11:05'),(1923,'PAYPAL_API_USER',1,'seller_1355312017_biz_api1.mydomain.com','chaine',0,'','2014-12-12 12:11:05'),(1924,'PAYPAL_API_PASSWORD',1,'1355312040','chaine',0,'','2014-12-12 12:11:05'),(1925,'PAYPAL_API_SIGNATURE',1,'ABCDEFWBzvfn0q5iNmbuiDv1y.3EAXIMWyl4C5KvDReR9HDwwAd6dQ4Q','chaine',0,'','2014-12-12 12:11:05'),(1926,'PAYPAL_API_INTEGRAL_OR_PAYPALONLY',1,'integral','chaine',0,'','2014-12-12 12:11:05'),(1927,'PAYPAL_SECURITY_TOKEN',1,'50c82fab36bb3b6aa83e2a50691803b2','chaine',0,'','2014-12-12 12:11:05'),(1928,'PAYPAL_SECURITY_TOKEN_UNIQUE',1,'0','chaine',0,'','2014-12-12 12:11:05'),(1929,'PAYPAL_ADD_PAYMENT_URL',1,'1','chaine',0,'','2014-12-12 12:11:05'),(1980,'MAIN_PDF_FORMAT',1,'EUA4','chaine',0,'','2014-12-12 19:58:05'),(1981,'MAIN_PROFID1_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1982,'MAIN_PROFID2_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1983,'MAIN_PROFID3_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1984,'MAIN_PROFID4_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1985,'MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT',1,'0','chaine',0,'','2014-12-12 19:58:05'),(2835,'MAIN_USE_CONNECT_TIMEOUT',1,'10','chaine',0,'','2015-01-16 19:28:50'),(2836,'MAIN_USE_RESPONSE_TIMEOUT',1,'30','chaine',0,'','2015-01-16 19:28:50'),(2837,'MAIN_PROXY_USE',1,'0','chaine',0,'','2015-01-16 19:28:50'),(2838,'MAIN_PROXY_HOST',1,'localhost','chaine',0,'','2015-01-16 19:28:50'),(2839,'MAIN_PROXY_PORT',1,'8080','chaine',0,'','2015-01-16 19:28:50'),(2840,'MAIN_PROXY_USER',1,'aaa','chaine',0,'','2015-01-16 19:28:50'),(2841,'MAIN_PROXY_PASS',1,'bbb','chaine',0,'','2015-01-16 19:28:50'),(2848,'OVHSMS_NICK',1,'BN196-OVH','chaine',0,'','2015-01-16 19:32:36'),(2849,'OVHSMS_PASS',1,'bigone-10','chaine',0,'','2015-01-16 19:32:36'),(2850,'OVHSMS_SOAPURL',1,'https://www.ovh.com/soapi/soapi-re-1.55.wsdl','chaine',0,'','2015-01-16 19:32:36'),(2854,'THEME_ELDY_RGB',1,'bfbf00','chaine',0,'','2015-01-18 10:02:53'),(2855,'THEME_ELDY_ENABLE_PERSONALIZED',1,'0','chaine',0,'','2015-01-18 10:02:55'),(2858,'MAIN_SESSION_TIMEOUT',1,'2000','chaine',0,'','2015-01-19 17:01:53'),(2867,'FACSIM_ADDON',1,'mod_facsim_alcoy','chaine',0,'','2015-01-19 17:16:25'),(2868,'POS_SERVICES',1,'0','chaine',0,'','2015-01-19 17:16:51'),(2869,'POS_USE_TICKETS',1,'1','chaine',0,'','2015-01-19 17:16:51'),(2870,'POS_MAX_TTC',1,'100','chaine',0,'','2015-01-19 17:16:51'),(3190,'MAIN_MODULE_HOLIDAY',2,'1',NULL,0,NULL,'2015-02-01 08:52:34'),(3195,'INVOICE_SUPPLIER_ADDON_PDF',1,'canelle','chaine',0,'','2015-02-10 19:50:27'),(3199,'MAIN_FORCE_RELOAD_PAGE',1,'1','chaine',0,NULL,'2015-02-12 16:22:55'),(3223,'OVH_THIRDPARTY_IMPORT',1,'2','chaine',0,'','2015-02-13 16:20:18'),(3409,'AGENDA_USE_EVENT_TYPE',1,'1','chaine',0,'','2015-02-27 18:12:24'),(3886,'MAIN_REMOVE_INSTALL_WARNING',1,'1','chaine',1,'','2015-03-02 18:32:50'),(4013,'MAIN_DELAY_ACTIONS_TODO',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4014,'MAIN_DELAY_PROPALS_TO_CLOSE',1,'31','chaine',0,'','2015-03-06 08:59:12'),(4015,'MAIN_DELAY_PROPALS_TO_BILL',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4016,'MAIN_DELAY_ORDERS_TO_PROCESS',1,'2','chaine',0,'','2015-03-06 08:59:12'),(4017,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',1,'31','chaine',0,'','2015-03-06 08:59:12'),(4018,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4019,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',1,'2','chaine',0,'','2015-03-06 08:59:12'),(4020,'MAIN_DELAY_RUNNING_SERVICES',1,'-15','chaine',0,'','2015-03-06 08:59:12'),(4021,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',1,'62','chaine',0,'','2015-03-06 08:59:13'),(4022,'MAIN_DELAY_MEMBERS',1,'31','chaine',0,'','2015-03-06 08:59:13'),(4023,'MAIN_DISABLE_METEO',1,'0','chaine',0,'','2015-03-06 08:59:13'),(4044,'ADHERENT_VAT_FOR_SUBSCRIPTIONS',1,'0','',0,'','2015-03-06 16:06:38'),(4047,'ADHERENT_BANK_USE',1,'bankviainvoice','',0,'','2015-03-06 16:12:30'),(4049,'PHPSANE_SCANIMAGE',1,'/usr/bin/scanimage','chaine',0,'','2015-03-06 21:54:13'),(4050,'PHPSANE_PNMTOJPEG',1,'/usr/bin/pnmtojpeg','chaine',0,'','2015-03-06 21:54:13'),(4051,'PHPSANE_PNMTOTIFF',1,'/usr/bin/pnmtotiff','chaine',0,'','2015-03-06 21:54:13'),(4052,'PHPSANE_OCR',1,'/usr/bin/gocr','chaine',0,'','2015-03-06 21:54:13'),(4548,'ECM_AUTO_TREE_ENABLED',1,'1','chaine',0,'','2015-03-10 15:57:21'),(4579,'MAIN_MODULE_AGENDA',2,'1',NULL,0,NULL,'2015-03-13 15:29:19'),(4580,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4581,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4582,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4583,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4584,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4585,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4586,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4587,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4588,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4589,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4590,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4591,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4592,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4593,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4594,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4688,'GOOGLE_ENABLE_AGENDA',2,'1','chaine',0,'','2015-03-13 15:36:29'),(4689,'GOOGLE_AGENDA_NAME1',2,'eldy','chaine',0,'','2015-03-13 15:36:29'),(4690,'GOOGLE_AGENDA_SRC1',2,'eldy10@mail.com','chaine',0,'','2015-03-13 15:36:29'),(4691,'GOOGLE_AGENDA_COLOR1',2,'BE6D00','chaine',0,'','2015-03-13 15:36:29'),(4692,'GOOGLE_AGENDA_COLOR2',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4693,'GOOGLE_AGENDA_COLOR3',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4694,'GOOGLE_AGENDA_COLOR4',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4695,'GOOGLE_AGENDA_COLOR5',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4696,'GOOGLE_AGENDA_TIMEZONE',2,'Europe/Paris','chaine',0,'','2015-03-13 15:36:29'),(4697,'GOOGLE_AGENDA_NB',2,'5','chaine',0,'','2015-03-13 15:36:29'),(4725,'SOCIETE_CODECLIENT_ADDON',2,'mod_codeclient_leopard','chaine',0,'Module to control third parties codes','2015-03-13 20:21:35'),(4726,'SOCIETE_CODECOMPTA_ADDON',2,'mod_codecompta_panicum','chaine',0,'Module to control third parties codes','2015-03-13 20:21:35'),(4727,'SOCIETE_FISCAL_MONTH_START',2,'','chaine',0,'Mettre le numero du mois du debut d\\\'annee fiscale, ex: 9 pour septembre','2015-03-13 20:21:35'),(4728,'MAIN_SEARCHFORM_SOCIETE',2,'1','yesno',0,'Show form for quick company search','2015-03-13 20:21:35'),(4729,'MAIN_SEARCHFORM_CONTACT',2,'1','yesno',0,'Show form for quick contact search','2015-03-13 20:21:35'),(4730,'COMPANY_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2015-03-13 20:21:35'),(4743,'MAIN_MODULE_CLICKTODIAL',2,'1',NULL,0,NULL,'2015-03-13 20:30:28'),(4744,'MAIN_MODULE_NOTIFICATION',2,'1',NULL,0,NULL,'2015-03-13 20:30:34'),(4745,'MAIN_MODULE_WEBSERVICES',2,'1',NULL,0,NULL,'2015-03-13 20:30:41'),(4746,'MAIN_MODULE_PROPALE',2,'1',NULL,0,NULL,'2015-03-13 20:32:38'),(4747,'PROPALE_ADDON_PDF',2,'azur','chaine',0,'Nom du gestionnaire de generation des propales en PDF','2015-03-13 20:32:38'),(4748,'PROPALE_ADDON',2,'mod_propale_marbre','chaine',0,'Nom du gestionnaire de numerotation des propales','2015-03-13 20:32:38'),(4749,'PROPALE_VALIDITY_DURATION',2,'15','chaine',0,'Duration of validity of business proposals','2015-03-13 20:32:38'),(4750,'PROPALE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2015-03-13 20:32:38'),(4752,'MAIN_MODULE_TAX',2,'1',NULL,0,NULL,'2015-03-13 20:32:47'),(4753,'MAIN_MODULE_DON',2,'1',NULL,0,NULL,'2015-03-13 20:32:54'),(4754,'DON_ADDON_MODEL',2,'html_cerfafr','chaine',0,'Nom du gestionnaire de generation de recu de dons','2015-03-13 20:32:54'),(4755,'POS_USE_TICKETS',2,'1','chaine',0,'','2015-03-13 20:33:09'),(4756,'POS_MAX_TTC',2,'100','chaine',0,'','2015-03-13 20:33:09'),(4757,'MAIN_MODULE_POS',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4758,'TICKET_ADDON',2,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2015-03-13 20:33:09'),(4759,'MAIN_MODULE_BANQUE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4760,'MAIN_MODULE_FACTURE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4761,'FACTURE_ADDON_PDF',2,'crabe','chaine',0,'Name of PDF model of invoice','2015-03-13 20:33:09'),(4762,'FACTURE_ADDON',2,'mod_facture_terre','chaine',0,'Name of numbering numerotation rules of invoice','2015-03-13 20:33:09'),(4763,'FACTURE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2015-03-13 20:33:09'),(4764,'MAIN_MODULE_SOCIETE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4765,'MAIN_MODULE_PRODUCT',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4766,'PRODUCT_CODEPRODUCT_ADDON',2,'mod_codeproduct_leopard','chaine',0,'Module to control product codes','2015-03-13 20:33:09'),(4767,'MAIN_SEARCHFORM_PRODUITSERVICE',2,'1','yesno',0,'Show form for quick product search','2015-03-13 20:33:09'),(4772,'FACSIM_ADDON',2,'mod_facsim_alcoy','chaine',0,'','2015-03-13 20:33:32'),(4773,'MAIN_MODULE_MAILING',2,'1',NULL,0,NULL,'2015-03-13 20:33:37'),(4774,'MAIN_MODULE_OPENSURVEY',2,'1',NULL,0,NULL,'2015-03-13 20:33:42'),(4782,'AGENDA_USE_EVENT_TYPE',2,'1','chaine',0,'','2015-03-13 20:53:36'),(4884,'AGENDA_DISABLE_EXT',2,'1','chaine',0,'','2015-03-13 22:03:40'),(4928,'COMMANDE_SUPPLIER_ADDON_NUMBER',1,'mod_commande_fournisseur_muguet','chaine',0,'Nom du gestionnaire de numerotation des commandes fournisseur','2015-03-22 09:24:29'),(4929,'INVOICE_SUPPLIER_ADDON_NUMBER',1,'mod_facture_fournisseur_cactus','chaine',0,'Nom du gestionnaire de numerotation des factures fournisseur','2015-03-22 09:24:29'),(5001,'MAIN_CRON_KEY',0,'bc54582fe30d5d4a830c6f582ec28810','chaine',0,'','2015-03-23 17:54:53'),(5009,'CRON_KEY',0,'2c2e755c20be2014098f629865598006','chaine',0,'','2015-03-23 18:06:24'),(5139,'SOCIETE_ADD_REF_IN_LIST',1,'','yesno',0,'Display customer ref into select list','2015-09-08 23:06:08'),(5150,'PROJECT_TASK_ADDON_PDF',1,'','chaine',0,'Name of PDF/ODT tasks manager class','2015-09-08 23:06:14'),(5151,'PROJECT_TASK_ADDON',1,'mod_task_simple','chaine',0,'Name of Numbering Rule task manager class','2015-09-08 23:06:14'),(5152,'PROJECT_TASK_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/tasks','chaine',0,'','2015-09-08 23:06:14'),(5239,'BOOKMARKS_SHOW_IN_MENU',1,'10','chaine',0,'','2016-03-02 15:42:26'),(5271,'DONATION_ART200',1,'','yesno',0,'Option Française - Eligibilité Art200 du CGI','2016-12-21 12:51:28'),(5272,'DONATION_ART238',1,'','yesno',0,'Option Française - Eligibilité Art238 bis du CGI','2016-12-21 12:51:28'),(5274,'DONATION_MESSAGE',1,'Thank you','chaine',0,'Message affiché sur le récépissé de versements ou dons','2016-12-21 12:51:28'),(5349,'MAIN_SEARCHFORM_CONTACT',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5351,'MAIN_SEARCHFORM_PRODUITSERVICE',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5352,'MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER',1,'0','chaine',0,'','2017-10-03 10:11:33'),(5353,'MAIN_SEARCHFORM_ADHERENT',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5354,'MAIN_SEARCHFORM_PROJECT',1,'0','chaine',0,'','2017-10-03 10:11:33'),(5394,'FCKEDITOR_ENABLE_DETAILS',1,'1','yesno',0,'WYSIWIG for products details lines for all entities','2017-11-04 15:27:44'),(5395,'FCKEDITOR_ENABLE_USERSIGN',1,'1','yesno',0,'WYSIWIG for user signature','2017-11-04 15:27:44'),(5396,'FCKEDITOR_ENABLE_MAIL',1,'1','yesno',0,'WYSIWIG for products details lines for all entities','2017-11-04 15:27:44'),(5398,'CATEGORIE_RECURSIV_ADD',1,'','yesno',0,'Affect parent categories','2017-11-04 15:27:46'),(5404,'MAIN_MODULE_CATEGORIE',1,'1',NULL,0,NULL,'2017-11-04 15:41:43'),(5415,'EXPEDITION_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/shipment','chaine',0,NULL,'2017-11-15 22:38:28'),(5416,'LIVRAISON_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/delivery','chaine',0,NULL,'2017-11-15 22:38:28'),(5426,'MAIN_MODULE_PROJET',1,'1',NULL,0,NULL,'2017-11-15 22:38:44'),(5427,'PROJECT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/projects','chaine',0,NULL,'2017-11-15 22:38:44'),(5428,'PROJECT_USE_OPPORTUNIES',1,'1','chaine',0,NULL,'2017-11-15 22:38:44'),(5430,'MAIN_MODULE_EXPORT',1,'1',NULL,0,NULL,'2017-11-15 22:38:56'),(5431,'MAIN_MODULE_IMPORT',1,'1',NULL,0,NULL,'2017-11-15 22:38:58'),(5432,'MAIN_MODULE_MAILING',1,'1',NULL,0,NULL,'2017-11-15 22:39:00'),(5434,'EXPENSEREPORT_ADDON_PDF',1,'standard','chaine',0,'Name of manager to build PDF expense reports documents','2017-11-15 22:39:05'),(5437,'SALARIES_ACCOUNTING_ACCOUNT_CHARGE',1,'641','chaine',0,NULL,'2017-11-15 22:39:08'),(5441,'ADHERENT_ETIQUETTE_TEXT',1,'%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%','text',0,'Text to print on member address sheets','2018-11-23 11:56:07'),(5443,'MAIN_MODULE_PRELEVEMENT',1,'1',NULL,0,NULL,'2017-11-15 22:39:33'),(5453,'MAIN_MODULE_CONTRAT',1,'1',NULL,0,NULL,'2017-11-15 22:39:52'),(5455,'MAIN_MODULE_FICHEINTER',1,'1',NULL,0,NULL,'2017-11-15 22:39:56'),(5459,'MAIN_MODULE_PAYPAL',1,'1',NULL,0,NULL,'2017-11-15 22:41:02'),(5463,'MAIN_MODULE_PROPALE',1,'1',NULL,0,NULL,'2017-11-15 22:41:47'),(5483,'GENBARCODE_BARCODETYPE_THIRDPARTY',1,'6','chaine',0,'','2018-01-16 15:49:43'),(5484,'PRODUIT_DEFAULT_BARCODE_TYPE',1,'2','chaine',0,'','2018-01-16 15:49:46'),(5586,'MAIN_DELAY_EXPENSEREPORTS_TO_PAY',1,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur les notes de frais impayées','2018-01-22 17:28:18'),(5587,'MAIN_FIX_FOR_BUGGED_MTA',1,'1','chaine',1,'Set constant to fix email ending from PHP with some linux ike system','2018-01-22 17:28:18'),(5590,'MAIN_VERSION_LAST_INSTALL',0,'3.8.3','chaine',0,'Dolibarr version when install','2018-01-22 17:28:42'),(5604,'MAIN_INFO_SOCIETE_LOGO',1,'mybigcompany.png','chaine',0,'','2018-01-22 17:33:49'),(5605,'MAIN_INFO_SOCIETE_LOGO_SMALL',1,'mybigcompany_small.png','chaine',0,'','2018-01-22 17:33:49'),(5606,'MAIN_INFO_SOCIETE_LOGO_MINI',1,'mybigcompany_mini.png','chaine',0,'','2018-01-22 17:33:49'),(5614,'MAIN_SIZE_SHORTLISTE_LIMIT',1,'4','chaine',0,'Longueur maximum des listes courtes (fiche client)','2018-03-13 10:54:46'),(5627,'SUPPLIER_PROPOSAL_ADDON_PDF',1,'aurore','chaine',0,'Name of submodule to generate PDF for supplier quotation request','2018-07-30 11:13:20'),(5628,'SUPPLIER_PROPOSAL_ADDON',1,'mod_supplier_proposal_marbre','chaine',0,'Name of submodule to number supplier quotation request','2018-07-30 11:13:20'),(5629,'SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/supplier_proposal','chaine',0,NULL,'2018-07-30 11:13:20'),(5633,'MAIN_MODULE_API',1,'1',NULL,0,NULL,'2018-07-30 11:13:54'),(5634,'MAIN_MODULE_WEBSERVICES',1,'1',NULL,0,NULL,'2018-07-30 11:13:56'),(5635,'WEBSERVICES_KEY',1,'dolibarrkey','chaine',0,'','2018-07-30 11:14:04'),(5638,'MAIN_MODULE_EXTERNALRSS',1,'1',NULL,0,NULL,'2018-07-30 11:15:04'),(5642,'SOCIETE_CODECOMPTA_ADDON',1,'mod_codecompta_aquarium','chaine',0,'','2018-07-30 11:16:42'),(5707,'CASHDESK_NO_DECREASE_STOCK',1,'1','chaine',0,'','2018-07-30 13:38:11'),(5708,'MAIN_MODULE_PRODUCTBATCH',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5710,'MAIN_MODULE_STOCK',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5711,'MAIN_MODULE_PRODUCT',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5808,'MARGIN_TYPE',1,'costprice','chaine',0,'','2018-07-30 16:32:18'),(5809,'DISPLAY_MARGIN_RATES',1,'1','chaine',0,'','2018-07-30 16:32:20'),(5833,'ACCOUNTING_EXPORT_SEPARATORCSV',1,',','string',0,NULL,'2017-01-29 15:11:56'),(5840,'CHARTOFACCOUNTS',1,'2','chaine',0,NULL,'2017-01-29 15:11:56'),(5841,'ACCOUNTING_EXPORT_MODELCSV',1,'1','chaine',0,NULL,'2017-01-29 15:11:56'),(5842,'ACCOUNTING_LENGTH_GACCOUNT',1,'','chaine',0,NULL,'2017-01-29 15:11:56'),(5843,'ACCOUNTING_LENGTH_AACCOUNT',1,'','chaine',0,NULL,'2017-01-29 15:11:56'),(5844,'ACCOUNTING_LIST_SORT_VENTILATION_TODO',1,'1','yesno',0,NULL,'2017-01-29 15:11:56'),(5845,'ACCOUNTING_LIST_SORT_VENTILATION_DONE',1,'1','yesno',0,NULL,'2017-01-29 15:11:56'),(5846,'ACCOUNTING_EXPORT_DATE',1,'%d%m%Y','chaine',0,NULL,'2017-01-29 15:11:56'),(5848,'ACCOUNTING_EXPORT_FORMAT',1,'csv','chaine',0,NULL,'2017-01-29 15:11:56'),(5853,'MAIN_MODULE_WORKFLOW',1,'1',NULL,0,NULL,'2017-01-29 15:12:12'),(5854,'MAIN_MODULE_NOTIFICATION',1,'1',NULL,0,NULL,'2017-01-29 15:12:35'),(5855,'MAIN_MODULE_OAUTH',1,'1',NULL,0,NULL,'2017-01-29 15:12:41'),(5883,'MAILING_LIMIT_SENDBYWEB',0,'15','chaine',1,'Number of targets to defined packet size when sending mass email','2017-01-29 17:36:33'),(5884,'MAIN_MAIL_DEBUG',1,'0','chaine',1,'','2017-01-29 18:53:02'),(5885,'MAIN_SOAP_DEBUG',1,'0','chaine',1,'','2017-01-29 18:53:02'),(5925,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION',1,'1','chaine',0,'','2017-02-01 14:48:55'),(5931,'DATABASE_PWD_ENCRYPTED',1,'1','chaine',0,'','2017-02-01 15:06:04'),(5932,'MAIN_DISABLE_ALL_MAILS',1,'0','chaine',0,'','2017-02-01 15:09:09'),(5933,'MAIN_MAIL_SENDMODE',1,'mail','chaine',0,'','2017-02-01 15:09:09'),(5934,'MAIN_MAIL_SMTP_PORT',1,'465','chaine',0,'','2017-02-01 15:09:09'),(5935,'MAIN_MAIL_SMTP_SERVER',1,'smtp.mail.com','chaine',0,'','2017-02-01 15:09:09'),(5936,'MAIN_MAIL_SMTPS_ID',1,'eldy10@mail.com','chaine',0,'','2017-02-01 15:09:09'),(5937,'MAIN_MAIL_SMTPS_PW',1,'bidonge','chaine',0,'','2017-02-01 15:09:09'),(5938,'MAIN_MAIL_EMAIL_FROM',1,'robot@example.com','chaine',0,'','2017-02-01 15:09:09'),(5939,'MAIN_MAIL_DEFAULT_FROMTYPE',1,'user','chaine',0,'','2017-02-01 15:09:09'),(5940,'PRELEVEMENT_ID_BANKACCOUNT',1,'1','chaine',0,'','2017-02-06 04:04:47'),(5941,'PRELEVEMENT_ICS',1,'ICS123456','chaine',0,'','2017-02-06 04:04:47'),(5942,'PRELEVEMENT_USER',1,'1','chaine',0,'','2017-02-06 04:04:47'),(5943,'BANKADDON_PDF',1,'sepamandate','chaine',0,'','2017-02-06 04:13:52'),(5947,'CHEQUERECEIPTS_THYME_MASK',1,'CHK{yy}{mm}-{0000@1}','chaine',0,'','2017-02-06 04:16:27'),(5948,'MAIN_MODULE_LOAN',1,'1',NULL,0,NULL,'2017-02-06 19:19:05'),(5954,'MAIN_SUBMODULE_EXPEDITION',1,'1','chaine',0,'','2017-02-06 23:57:37'),(5964,'MAIN_MODULE_TAX',1,'1',NULL,0,NULL,'2017-02-07 18:56:12'),(6019,'MAIN_INFO_SOCIETE_COUNTRY',2,'1:FR:France','chaine',0,'','2017-02-15 17:18:22'),(6020,'MAIN_INFO_SOCIETE_NOM',2,'MySecondCompany','chaine',0,'','2017-02-15 17:18:22'),(6021,'MAIN_INFO_SOCIETE_STATE',2,'0','chaine',0,'','2017-02-15 17:18:22'),(6022,'MAIN_MONNAIE',2,'EUR','chaine',0,'','2017-02-15 17:18:22'),(6023,'MAIN_LANG_DEFAULT',2,'auto','chaine',0,'','2017-02-15 17:18:22'),(6032,'MAIN_MODULE_MULTICURRENCY',1,'1',NULL,0,NULL,'2017-02-15 17:29:59'),(6048,'SYSLOG_FACILITY',0,'LOG_USER','chaine',0,'','2017-02-15 22:37:01'),(6049,'SYSLOG_FIREPHP_INCLUDEPATH',0,'/home/ldestailleur/git/dolibarr_5.0/htdocs/includes/firephp/firephp-core/lib/','chaine',0,'','2017-02-15 22:37:01'),(6050,'SYSLOG_FILE',0,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2017-02-15 22:37:01'),(6051,'SYSLOG_CHROMEPHP_INCLUDEPATH',0,'/home/ldestailleur/git/dolibarr_5.0/htdocs/includes/ccampbell/chromephp/','chaine',0,'','2017-02-15 22:37:01'),(6052,'SYSLOG_HANDLERS',0,'[\"mod_syslog_file\"]','chaine',0,'','2017-02-15 22:37:01'),(6092,'MAIN_SIZE_SHORTLIST_LIMIT',0,'3','chaine',0,'Max length for small lists (tabs)','2017-05-12 09:02:38'),(6099,'MAIN_MODULE_SKYPE',1,'1',NULL,0,NULL,'2017-05-12 09:03:51'),(6100,'MAIN_MODULE_GRAVATAR',1,'1',NULL,0,NULL,'2017-05-12 09:03:54'),(6102,'PRODUCT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/products','chaine',0,'','2017-08-27 13:29:07'),(6103,'CONTRACT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/contracts','chaine',0,'','2017-08-27 13:29:07'),(6104,'USERGROUP_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/usergroups','chaine',0,'','2017-08-27 13:29:07'),(6105,'USER_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/users','chaine',0,'','2017-08-27 13:29:07'),(6106,'MAIN_ENABLE_OVERWRITE_TRANSLATION',1,'1','chaine',0,'Enable overwrote of translation','2017-08-27 13:29:07'),(6377,'COMMANDE_SAPHIR_MASK',1,'{yy}{mm}{000}{ttt}','chaine',0,'','2017-09-06 07:56:25'),(6518,'GOOGLE_DUPLICATE_INTO_THIRDPARTIES',1,'1','chaine',0,'','2017-09-06 19:43:57'),(6519,'GOOGLE_DUPLICATE_INTO_CONTACTS',1,'0','chaine',0,'','2017-09-06 19:43:57'),(6520,'GOOGLE_TAG_PREFIX',1,'Dolibarr (Thirdparties)','chaine',0,'','2017-09-06 19:43:57'),(6521,'GOOGLE_TAG_PREFIX_CONTACTS',1,'Dolibarr (Contacts/Addresses)','chaine',0,'','2017-09-06 19:43:57'),(6522,'GOOGLE_ENABLE_AGENDA',1,'1','chaine',0,'','2017-09-06 19:44:12'),(6523,'GOOGLE_AGENDA_COLOR1',1,'1B887A','chaine',0,'','2017-09-06 19:44:12'),(6524,'GOOGLE_AGENDA_COLOR2',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6525,'GOOGLE_AGENDA_COLOR3',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6526,'GOOGLE_AGENDA_COLOR4',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6527,'GOOGLE_AGENDA_COLOR5',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6528,'GOOGLE_AGENDA_TIMEZONE',1,'Europe/Paris','chaine',0,'','2017-09-06 19:44:12'),(6529,'GOOGLE_AGENDA_NB',1,'5','chaine',0,'','2017-09-06 19:44:12'),(6543,'MAIN_SMS_DEBUG',0,'1','chaine',1,'This is to enable OVH SMS debug','2017-09-06 19:44:34'),(6562,'BLOCKEDLOG_ENTITY_FINGERPRINT',1,'b63e359ffca54d5c2bab869916eaf23d4a736703028ccbf77ce1167c5f830e7b','chaine',0,'Numeric Unique Fingerprint','2018-01-19 11:27:15'),(6564,'BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY',1,'FR','chaine',0,'This is list of country code where the module may be mandatory','2018-01-19 11:27:15'),(6565,'MAIN_MODULE_BOOKMARK',1,'1',NULL,0,'{\"authorid\":\"12\",\"ip\":\"82.240.38.230\"}','2018-01-19 11:27:34'),(6566,'MAIN_MODULE_ADHERENT',1,'1',NULL,0,'{\"authorid\":\"12\",\"ip\":\"82.240.38.230\"}','2018-01-19 11:27:56'),(6567,'ADHERENT_ADDON_PDF',1,'standard','chaine',0,'Name of PDF model of member','2018-01-19 11:27:56'),(6636,'MAIN_MODULE_TICKET_MODELS',1,'1','chaine',0,NULL,'2019-06-05 09:15:29'),(6647,'MAIN_MODULE_SOCIALNETWORKS',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-06-05 09:16:49'),(6795,'TICKET_ADDON',1,'mod_ticket_simple','chaine',0,'','2019-09-26 12:07:59'),(6796,'PRODUCT_CODEPRODUCT_ADDON',1,'mod_codeproduct_elephant','chaine',0,'','2019-09-26 12:59:00'),(6800,'CASHDESK_ID_THIRDPARTY1',1,'7','chaine',0,'','2019-09-26 15:30:09'),(6801,'CASHDESK_ID_BANKACCOUNT_CASH1',1,'3','chaine',0,'','2019-09-26 15:30:09'),(6802,'CASHDESK_ID_BANKACCOUNT_CHEQUE1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6803,'CASHDESK_ID_BANKACCOUNT_CB1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6804,'CASHDESK_ID_BANKACCOUNT_PRE1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6805,'CASHDESK_ID_BANKACCOUNT_VIR1',1,'1','chaine',0,'','2019-09-26 15:30:09'),(6806,'CASHDESK_NO_DECREASE_STOCK1',1,'1','chaine',0,'','2019-09-26 15:30:09'),(6811,'FORCEPROJECT_ON_PROPOSAL',1,'1','chaine',0,'','2019-09-27 14:52:57'),(6813,'PROJECT_USE_OPPORTUNITIES',1,'1','chaine',0,'','2019-10-01 11:48:09'),(6814,'PACKTHEMEACTIVATEDTHEME',0,'modOwnTheme','chaine',0,'','2019-10-02 11:41:58'),(6815,'OWNTHEME_COL1',0,'#6a89cc','chaine',0,'','2019-10-02 11:41:58'),(6816,'OWNTHEME_COL2',0,'#60a3bc','chaine',0,'','2019-10-02 11:41:58'),(6817,'DOL_VERSION',0,'10.0.2','chaine',0,'Dolibarr version','2019-10-02 11:41:58'),(6823,'OWNTHEME_COL_BODY_BCKGRD',0,'#E9E9E9','chaine',0,'','2019-10-02 11:41:58'),(6824,'OWNTHEME_COL_LOGO_BCKGRD',0,'#474c80','chaine',0,'','2019-10-02 11:41:58'),(6825,'OWNTHEME_COL_TXT_MENU',0,'#b8c6e5','chaine',0,'','2019-10-02 11:41:58'),(6826,'OWNTHEME_COL_HEADER_BCKGRD',0,'#474c80','chaine',0,'','2019-10-02 11:41:58'),(6827,'OWNTHEME_CUSTOM_CSS',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6828,'OWNTHEME_CUSTOM_JS',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6829,'OWNTHEME_FIXED_MENU',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6830,'OWNTHEME_D_HEADER_FONT_SIZE',0,'1.7rem','chaine',0,'','2019-10-02 11:41:58'),(6831,'OWNTHEME_S_HEADER_FONT_SIZE',0,'1.6rem','chaine',0,'','2019-10-02 11:41:58'),(6832,'OWNTHEME_D_VMENU_FONT_SIZE',0,'1.2rem','chaine',0,'','2019-10-02 11:41:58'),(6833,'OWNTHEME_S_VMENU_FONT_SIZE',0,'1.2rem','chaine',0,'','2019-10-02 11:41:58'),(6844,'MAIN_THEME',0,'eldy','chaine',0,'','2019-10-02 11:46:02'),(6845,'MAIN_MENU_STANDARD',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6846,'MAIN_MENUFRONT_STANDARD',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6847,'MAIN_MENU_SMARTPHONE',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6848,'MAIN_MENUFRONT_SMARTPHONE',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6851,'BECREATIVE_COL1',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6852,'BECREATIVE_COL2',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6853,'DOL_VERSION',1,'10.0.2','chaine',0,'Dolibarr version','2019-10-02 11:47:10'),(6859,'BECREATIVE_COL_BODY_BCKGRD',1,'#e6eaef','chaine',0,'','2019-10-02 11:47:10'),(6860,'BECREATIVE_COL_LOGO_BCKGRD',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6861,'BECREATIVE_COL_TXT_MENU',1,'#b8c6e5','chaine',0,'','2019-10-02 11:47:10'),(6862,'BECREATIVE_COL_HEADER_BCKGRD',1,'#26a69a','chaine',0,'','2019-10-02 11:47:10'),(6863,'BECREATIVE_CUSTOM_CSS',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6864,'BECREATIVE_CUSTOM_JS',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6865,'BECREATIVE_FIXED_MENU',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6866,'BECREATIVE_D_HEADER_FONT_SIZE',1,'1.7rem','chaine',0,'','2019-10-02 11:47:10'),(6867,'BECREATIVE_S_HEADER_FONT_SIZE',1,'1.6rem','chaine',0,'','2019-10-02 11:47:10'),(6868,'BECREATIVE_D_VMENU_FONT_SIZE',1,'1.2rem','chaine',0,'','2019-10-02 11:47:10'),(6869,'BECREATIVE_S_VMENU_FONT_SIZE',1,'1.2rem','chaine',0,'','2019-10-02 11:47:10'),(6881,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6882,'MAIN_MENUFRONT_STANDARD',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6883,'MAIN_MENU_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6884,'MAIN_MENUFRONT_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6885,'ACCOUNTING_ACCOUNT_CUSTOMER',1,'411','chaine',0,'','2019-10-04 08:15:44'),(6886,'ACCOUNTING_ACCOUNT_SUPPLIER',1,'401','chaine',0,'','2019-10-04 08:15:44'),(6887,'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT',1,'421','chaine',0,'','2019-10-04 08:15:44'),(6888,'ACCOUNTING_PRODUCT_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6889,'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6890,'ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6891,'ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6892,'ACCOUNTING_SERVICE_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6893,'ACCOUNTING_SERVICE_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6894,'ACCOUNTING_VAT_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6895,'ACCOUNTING_VAT_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6896,'ACCOUNTING_VAT_PAY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6897,'ACCOUNTING_ACCOUNT_SUSPENSE',1,'471','chaine',0,'','2019-10-04 08:15:44'),(6898,'ACCOUNTING_ACCOUNT_TRANSFER_CASH',1,'58','chaine',0,'','2019-10-04 08:15:44'),(6899,'DONATION_ACCOUNTINGACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6900,'ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6901,'LOAN_ACCOUNTING_ACCOUNT_CAPITAL',1,'164','chaine',0,'','2019-10-04 08:15:44'),(6902,'LOAN_ACCOUNTING_ACCOUNT_INTEREST',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6903,'LOAN_ACCOUNTING_ACCOUNT_INSURANCE',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6912,'TICKET_ENABLE_PUBLIC_INTERFACE',1,'1','chaine',0,'','2019-10-04 11:44:33'),(6934,'TICKET_NOTIFICATION_EMAIL_FROM',1,'fff','chaine',0,'','2019-10-04 12:03:51'),(6935,'TICKET_NOTIFICATION_EMAIL_TO',1,'ff','chaine',0,'','2019-10-04 12:03:51'),(6936,'TICKET_MESSAGE_MAIL_INTRO',1,'Hello,
\r\nA new response was sent on a ticket that you contact. Here is the message:\"\"','chaine',0,'','2019-10-04 12:03:51'),(6937,'TICKET_MESSAGE_MAIL_SIGNATURE',1,'

Sincerely,

\r\n\r\n

--\"\"

\r\n','chaine',0,'','2019-10-04 12:03:51'),(7027,'USER_PASSWORD_GENERATED',1,'Perso','chaine',0,'','2019-10-07 10:52:46'),(7028,'USER_PASSWORD_PATTERN',1,'12;1;0;1;0;1','chaine',0,'','2019-10-07 10:57:03'),(7034,'BOM_ADDON',1,'mod_bom_standard','chaine',0,'Name of numbering rules of BOM','2019-10-08 18:49:41'),(7035,'BOM_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/boms','chaine',0,NULL,'2019-10-08 18:49:41'),(7036,'MAIN_MODULE_GEOIPMAXMIND',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-10-08 18:51:54'),(7037,'MAIN_MODULE_DAV',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-10-08 18:54:07'),(7122,'BOM_ADDON_PDF',1,'generic_bom_odt','chaine',0,'','2019-11-28 14:00:58'),(7195,'MAIN_AGENDA_ACTIONAUTO_MO_VALIDATE',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7196,'MAIN_AGENDA_ACTIONAUTO_MO_PRODUCED',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7197,'MAIN_AGENDA_ACTIONAUTO_MO_DELETE',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7198,'MAIN_AGENDA_ACTIONAUTO_MO_CANCEL',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7201,'TICKET_PUBLIC_INTERFACE_TOPIC',1,'MyBigCompany public interface for Ticket','chaine',0,'','2019-11-29 08:49:36'),(7202,'TICKET_PUBLIC_TEXT_HOME',1,'You can create a support ticket or view existing from its identifier tracking ticket.','chaine',0,'','2019-11-29 08:49:36'),(7203,'TICKET_PUBLIC_TEXT_HELP_MESSAGE',1,'Please accurately describe the problem. Provide the most information possible to allow us to correctly identify your request.','chaine',0,'','2019-11-29 08:49:36'),(7204,'TICKET_MESSAGE_MAIL_NEW',1,'TicketMessageMailNewText','chaine',0,'','2019-11-29 08:49:36'),(7220,'MRP_MO_ADDON',1,'mod_mo_standard','chaine',0,'Name of numbering rules of MO','2019-11-29 08:57:42'),(7221,'MRP_MO_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/mrps','chaine',0,NULL,'2019-11-29 08:57:42'),(7222,'MRP_MO_ADDON_PDF',1,'generic_mo_odt','chaine',0,'','2019-11-29 08:57:47'),(7254,'MAIN_INFO_OPENINGHOURS_MONDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7255,'MAIN_INFO_OPENINGHOURS_TUESDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7256,'MAIN_INFO_OPENINGHOURS_WEDNESDAY',1,'8-13','chaine',0,'','2019-12-19 11:14:21'),(7257,'MAIN_INFO_OPENINGHOURS_THURSDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7258,'MAIN_INFO_OPENINGHOURS_FRIDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7264,'MAIN_INFO_ACCOUNTANT_NAME',1,'Bob Bookkeeper','chaine',0,'','2019-12-19 11:14:54'),(7265,'MAIN_INFO_ACCOUNTANT_TOWN',1,'Berlin','chaine',0,'','2019-12-19 11:14:54'),(7266,'MAIN_INFO_ACCOUNTANT_STATE',1,'0','chaine',0,'','2019-12-19 11:14:54'),(7267,'MAIN_INFO_ACCOUNTANT_COUNTRY',1,'5','chaine',0,'','2019-12-19 11:14:54'),(7268,'MAIN_INFO_ACCOUNTANT_MAIL',1,'mybookkeeper@example.com','chaine',0,'','2019-12-19 11:14:54'),(7313,'MODULEBUILDER_ASCIIDOCTOR',1,'asciidoctor','chaine',0,'','2019-12-20 10:57:21'),(7314,'MODULEBUILDER_ASCIIDOCTORPDF',1,'asciidoctor-pdf','chaine',0,'','2019-12-20 10:57:21'),(7337,'EXTERNAL_RSS_TITLE_1',1,'Dolibarr.org News','chaine',0,'','2019-12-20 12:10:38'),(7338,'EXTERNAL_RSS_URLRSS_1',1,'https://www.dolibarr.org/rss','chaine',0,'','2019-12-20 12:10:38'),(7339,'EXPENSEREPORT_ADDON',1,'mod_expensereport_jade','chaine',0,'','2019-12-20 16:33:46'),(7378,'COMPANY_USE_SEARCH_TO_SELECT',1,'0','chaine',0,'','2019-12-21 15:54:22'),(7420,'CASHDESK_SERVICES',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7421,'TAKEPOS_ROOT_CATEGORY_ID',1,'31','chaine',0,'','2019-12-23 12:15:06'),(7422,'TAKEPOSCONNECTOR',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7423,'TAKEPOS_BAR_RESTAURANT',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7424,'TAKEPOS_TICKET_VAT_GROUPPED',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7425,'TAKEPOS_AUTO_PRINT_TICKETS',1,'0','int',0,'','2019-12-23 12:15:06'),(7426,'TAKEPOS_NUMPAD',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7427,'TAKEPOS_NUM_TERMINALS',1,'1','chaine',0,'','2019-12-23 12:15:06'),(7428,'TAKEPOS_DIRECT_PAYMENT',1,'0','int',0,'','2019-12-23 12:15:06'),(7429,'TAKEPOS_CUSTOM_RECEIPT',1,'0','int',0,'','2019-12-23 12:15:06'),(7430,'TAKEPOS_EMAIL_TEMPLATE_INVOICE',1,'-1','chaine',0,'','2019-12-23 12:15:06'),(7452,'MEMBER_ENABLE_PUBLIC',1,'1','chaine',0,'','2020-01-01 10:31:46'),(7453,'MEMBER_NEWFORM_AMOUNT',1,'20','chaine',0,'','2020-01-01 10:31:46'),(7454,'MEMBER_NEWFORM_EDITAMOUNT',1,'0','chaine',0,'','2020-01-01 10:31:46'),(7455,'MEMBER_NEWFORM_PAYONLINE',1,'all','chaine',0,'','2020-01-01 10:31:46'),(7456,'MEMBER_NEWFORM_FORCETYPE',1,'1','chaine',0,'','2020-01-01 10:31:46'),(7470,'STRIPE_TEST_PUBLISHABLE_KEY',1,'pk_test_123456789','chaine',0,'','2020-01-01 11:43:44'),(7471,'STRIPE_TEST_SECRET_KEY',1,'sk_test_123456','chaine',0,'','2020-01-01 11:43:44'),(7472,'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS',1,'4','chaine',0,'','2020-01-01 11:43:44'),(7473,'STRIPE_USER_ACCOUNT_FOR_ACTIONS',1,'1','chaine',0,'','2020-01-01 11:43:44'),(7489,'CAPTURESERVER_SECURITY_KEY',1,'securitykey123','chaine',0,'','2020-01-01 12:00:49'),(8136,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_DELETE',1,'1','chaine',0,'','2020-01-02 19:56:28'),(8190,'ACCOUNTING_PRODUCT_MODE',1,'ACCOUNTANCY_SELL_EXPORT','chaine',0,'','2020-01-06 01:23:30'),(8191,'MAIN_ENABLE_DEFAULT_VALUES',1,'1','chaine',0,'','2020-01-06 16:09:52'),(8210,'CABINETMED_RHEUMATOLOGY_ON',1,'0','texte',0,'','2020-01-06 16:51:43'),(8213,'MAIN_SEARCHFORM_SOCIETE',1,'1','texte',0,'','2020-01-06 16:51:43'),(8214,'CABINETMED_BANK_PATIENT_REQUIRED',1,'0','texte',0,'','2020-01-06 16:51:43'),(8215,'DIAGNOSTIC_IS_NOT_MANDATORY',1,'1','texte',0,'','2020-01-06 16:51:43'),(8216,'USER_ADDON_PDF_ODT',1,'generic_user_odt','chaine',0,'','2020-01-07 13:45:19'),(8217,'USERGROUP_ADDON_PDF_ODT',1,'generic_usergroup_odt','chaine',0,'','2020-01-07 13:45:23'),(8230,'MAIN_MODULE_EMAILCOLLECTOR',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-12 20:13:55'),(8232,'MAIN_MODULE_SUPPLIERPROPOSAL',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-13 14:37:09'),(8233,'MAIN_MODULE_EXPEDITION',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-13 14:38:20'),(8252,'SYSTEMTOOLS_MYSQLDUMP',1,'/usr/bin/mysqldump','chaine',0,'','2020-01-15 15:42:41'),(8259,'ACCOUNTING_REEXPORT',1,'1','yesno',0,'','2020-01-17 13:42:56'),(8291,'PRODUIT_MULTIPRICES_LIMIT',1,'5','chaine',0,'','2020-01-17 14:21:46'),(8293,'PRODUIT_CUSTOMER_PRICES_BY_QTY',1,'0','chaine',0,'','2020-01-17 14:21:46'),(8303,'PRODUCT_PRICE_UNIQ',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8304,'PRODUIT_MULTIPRICES',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8305,'PRODUIT_CUSTOMER_PRICES',1,'1','chaine',0,'','2020-01-17 14:25:30'),(8306,'PRODUIT_SOUSPRODUITS',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8307,'PRODUIT_DESC_IN_FORM',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8308,'PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8309,'PRODUIT_USE_SEARCH_TO_SELECT',1,'1','chaine',0,'','2020-01-17 14:25:30'),(8310,'PRODUIT_FOURN_TEXTS',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8313,'MAIN_MODULE_FCKEDITOR',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-18 17:13:27'),(8314,'FCKEDITOR_ENABLE_TICKET',1,'1','chaine',0,'','2020-01-18 19:39:54'),(8321,'FCKEDITOR_SKIN',1,'moono-lisa','chaine',0,'','2020-01-18 19:41:15'),(8322,'FCKEDITOR_TEST',1,'Test < aaa
\r\n
\r\n\"\"','chaine',0,'','2020-01-18 19:41:15'),(8486,'MAIN_MULTILANGS',1,'1','chaine',0,'','2020-01-21 09:40:00'),(8491,'MAIN_DISABLE_JAVASCRIPT',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8492,'MAIN_BUTTON_HIDE_UNAUTHORIZED',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8496,'MAIN_SHOW_LOGO',1,'1','chaine',0,'','2020-01-21 09:40:00'),(8498,'MAIN_HELPCENTER_DISABLELINK',0,'0','chaine',0,'','2020-01-21 09:40:00'),(8501,'MAIN_BUGTRACK_ENABLELINK',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8554,'MAIN_INFO_SOCIETE_FACEBOOK_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8555,'MAIN_INFO_SOCIETE_TWITTER_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8556,'MAIN_INFO_SOCIETE_LINKEDIN_URL',1,'https://www.linkedin.com/company/9400559/admin/','chaine',0,'','2020-06-12 17:24:42'),(8557,'MAIN_INFO_SOCIETE_INSTAGRAM_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8558,'MAIN_INFO_SOCIETE_YOUTUBE_URL',1,'DolibarrERPCRM','chaine',0,'','2020-06-12 17:24:42'),(8559,'MAIN_INFO_SOCIETE_GITHUB_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8577,'PRODUCT_PRICE_BASE_TYPE',0,'HT','string',0,NULL,'2020-12-10 12:24:38'),(8612,'MAIN_UPLOAD_DOC',1,'50000','chaine',0,'','2020-12-10 12:26:31'),(8613,'MAIN_UMASK',1,'0664','chaine',0,'','2020-12-10 12:26:31'),(8614,'MAIN_ANTIVIRUS_PARAM',1,'--fdpass','chaine',0,'','2020-12-10 12:26:31'),(8619,'WEBSITE_EDITINLINE',1,'0','chaine',0,'','2020-12-10 12:27:05'),(8633,'MAIN_MODULE_RECEPTION',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:30:13'),(8634,'RECEPTION_ADDON_PDF',1,'squille','chaine',0,'Nom du gestionnaire de generation des bons receptions en PDF','2020-12-10 12:30:13'),(8635,'RECEPTION_ADDON_NUMBER',1,'mod_reception_beryl','chaine',0,'Name for numbering manager for receptions','2020-12-10 12:30:13'),(8636,'RECEPTION_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/receptions','chaine',0,NULL,'2020-12-10 12:30:13'),(8637,'MAIN_SUBMODULE_RECEPTION',1,'1','chaine',0,'Enable receptions','2020-12-10 12:30:13'),(8638,'MAIN_MODULE_PAYMENTBYBANKTRANSFER',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:30:17'),(8640,'MAIN_MODULE_MARGIN_TABS_0',1,'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__','chaine',0,NULL,'2020-12-10 12:30:20'),(8641,'MAIN_MODULE_MARGIN_TABS_1',1,'thirdparty:+margin:Margins:margins:empty($user->socid) && $user->rights->margins->liretous && ($object->client > 0):/margin/tabs/thirdpartyMargins.php?socid=__ID__','chaine',0,NULL,'2020-12-10 12:30:20'),(8644,'MAIN_MODULE_INCOTERM',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:31:36'),(8645,'INCOTERM_ACTIVATE',1,'','chaine',0,'Description de INCOTERM_ACTIVATE','2020-12-10 12:31:36'),(8715,'SYSLOG_LEVEL',0,'5','chaine',0,'','2021-04-15 10:34:05'),(8716,'MAIN_SECURITY_HASH_ALGO',1,'password_hash','chaine',1,'','2021-04-15 10:38:33'),(8717,'MAIN_INFO_SOCIETE_COUNTRY',1,'117:IN:India','chaine',0,'','2021-04-15 10:46:30'),(8718,'MAIN_INFO_SOCIETE_NOM',1,'MyBigCompany','chaine',0,'','2021-04-15 10:46:30'),(8719,'MAIN_INFO_SOCIETE_ADDRESS',1,'21 Jump street.','chaine',0,'','2021-04-15 10:46:30'),(8720,'MAIN_INFO_SOCIETE_TOWN',1,'MyTown','chaine',0,'','2021-04-15 10:46:30'),(8721,'MAIN_INFO_SOCIETE_ZIP',1,'75500','chaine',0,'','2021-04-15 10:46:30'),(8722,'MAIN_MONNAIE',1,'EUR','chaine',0,'','2021-04-15 10:46:30'),(8723,'MAIN_INFO_SOCIETE_TEL',1,'09123123','chaine',0,'','2021-04-15 10:46:30'),(8724,'MAIN_INFO_SOCIETE_FAX',1,'09123124','chaine',0,'','2021-04-15 10:46:30'),(8725,'MAIN_INFO_SOCIETE_MAIL',1,'myemail@mybigcompany.com','chaine',0,'','2021-04-15 10:46:30'),(8726,'MAIN_INFO_SOCIETE_WEB',1,'https://www.dolibarr.org','chaine',0,'','2021-04-15 10:46:30'),(8727,'MAIN_INFO_SOCIETE_NOTE',1,'This is note about my company','chaine',0,'','2021-04-15 10:46:30'),(8728,'MAIN_INFO_SOCIETE_LOGO_SQUARRED',1,'mybigcompany_squarred.png','chaine',0,'','2021-04-15 10:46:30'),(8729,'MAIN_INFO_SOCIETE_LOGO_SQUARRED_SMALL',1,'mybigcompany_squarred_small.png','chaine',0,'','2021-04-15 10:46:30'),(8730,'MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI',1,'mybigcompany_squarred_mini.png','chaine',0,'','2021-04-15 10:46:30'),(8731,'MAIN_INFO_SOCIETE_MANAGERS',1,'Zack Zeceo','chaine',0,'','2021-04-15 10:46:30'),(8732,'MAIN_INFO_GDPR',1,'Zack Zeceo','chaine',0,'','2021-04-15 10:46:30'),(8733,'MAIN_INFO_CAPITAL',1,'10000','chaine',0,'','2021-04-15 10:46:30'),(8734,'MAIN_INFO_SOCIETE_FORME_JURIDIQUE',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8735,'MAIN_INFO_SIREN',1,'123456','chaine',0,'','2021-04-15 10:46:30'),(8736,'MAIN_INFO_SIRET',1,'ABC-DEF','chaine',0,'','2021-04-15 10:46:30'),(8737,'MAIN_INFO_APE',1,'15E-45-8D','chaine',0,'','2021-04-15 10:46:30'),(8738,'MAIN_INFO_TVAINTRA',1,'FR12345678','chaine',0,'','2021-04-15 10:46:30'),(8739,'MAIN_INFO_SOCIETE_OBJECT',1,'A company demo to show how Dolibarr ERP CRM is wonderfull','chaine',0,'','2021-04-15 10:46:30'),(8740,'SOCIETE_FISCAL_MONTH_START',1,'4','chaine',0,'','2021-04-15 10:46:30'),(8741,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2021-04-15 10:46:30'),(8742,'FACTURE_LOCAL_TAX1_OPTION',1,'localtax1on','chaine',0,'','2021-04-15 10:46:30'),(8743,'FACTURE_LOCAL_TAX2_OPTION',1,'localtax2on','chaine',0,'','2021-04-15 10:46:30'),(8744,'MAIN_INFO_VALUE_LOCALTAX1',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8745,'MAIN_INFO_LOCALTAX_CALC1',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8746,'MAIN_INFO_VALUE_LOCALTAX2',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8747,'MAIN_INFO_LOCALTAX_CALC2',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8759,'MAIN_LOGIN_BACKGROUND',1,'background_dolibarr.jpg','chaine',0,'','2021-04-15 10:54:37'),(8760,'MAIN_LANG_DEFAULT',1,'auto','chaine',0,'','2021-04-15 10:56:30'),(8762,'MAIN_THEME',1,'eldy','chaine',0,'','2021-04-15 10:56:30'),(8763,'THEME_ELDY_USE_HOVER',1,'237,244,251','chaine',0,'','2021-04-15 10:56:30'),(8764,'MAIN_SIZE_LISTE_LIMIT',1,'25','chaine',0,'','2021-04-15 10:56:30'),(8765,'MAIN_SIZE_SHORTLIST_LIMIT',1,'3','chaine',0,'','2021-04-15 10:56:30'),(8766,'MAIN_START_WEEK',1,'1','chaine',0,'','2021-04-15 10:56:30'),(8767,'MAIN_DEFAULT_WORKING_DAYS',1,'1-5','chaine',0,'','2021-04-15 10:56:30'),(8768,'MAIN_DEFAULT_WORKING_HOURS',1,'9-18','chaine',0,'','2021-04-15 10:56:30'),(8769,'MAIN_FIRSTNAME_NAME_POSITION',1,'0','chaine',0,'','2021-04-15 10:56:30'),(8770,'MAIN_HOME',1,'__(NoteSomeFeaturesAreDisabled)__
\r\n__(SomeTranslationAreUncomplete)__','chaine',0,'','2021-04-15 10:56:30'),(8771,'MAIN_FEATURES_LEVEL',0,'0','chaine',1,'Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development','2021-04-15 11:46:30'),(8877,'AGENDA_REMINDER_BROWSER',1,'1','chaine',0,'','2021-04-15 13:32:29'),(8943,'MAIN_MODULE_ACCOUNTING',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:16'),(8944,'MAIN_MODULE_AGENDA',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:16'),(8945,'MAIN_MODULE_BOM',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:16'),(8946,'MAIN_MODULE_BANQUE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:16'),(8947,'MAIN_MODULE_BARCODE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8948,'MAIN_MODULE_CRON',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8949,'MAIN_MODULE_COMMANDE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8950,'MAIN_MODULE_DON',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8951,'MAIN_MODULE_ECM',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8952,'MAIN_MODULE_EXPENSEREPORT',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8953,'MAIN_MODULE_FACTURE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8954,'MAIN_MODULE_FOURNISSEUR',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8955,'MAIN_MODULE_HOLIDAY',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8956,'MAIN_MODULE_MARGIN',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8959,'MAIN_MODULE_MRP',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8960,'MAIN_MODULE_MRP_TRIGGERS',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8961,'MAIN_MODULE_MRP_LOGIN',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8962,'MAIN_MODULE_MRP_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8963,'MAIN_MODULE_MRP_MENUS',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8964,'MAIN_MODULE_MRP_TPL',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8965,'MAIN_MODULE_MRP_BARCODE',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8966,'MAIN_MODULE_MRP_MODELS',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8967,'MAIN_MODULE_MRP_THEME',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8968,'MAIN_MODULE_MRP_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-02-07 13:38:17'),(8969,'MAIN_MODULE_OPENSURVEY',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8970,'MAIN_MODULE_PRINTING',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:17'),(8971,'MAIN_MODULE_RECRUITMENT',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8972,'MAIN_MODULE_RECRUITMENT_TRIGGERS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8973,'MAIN_MODULE_RECRUITMENT_LOGIN',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8974,'MAIN_MODULE_RECRUITMENT_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8975,'MAIN_MODULE_RECRUITMENT_MENUS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8976,'MAIN_MODULE_RECRUITMENT_TPL',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8977,'MAIN_MODULE_RECRUITMENT_BARCODE',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8978,'MAIN_MODULE_RECRUITMENT_MODELS',1,'1','chaine',0,NULL,'2022-02-07 13:38:18'),(8979,'MAIN_MODULE_RECRUITMENT_THEME',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8980,'MAIN_MODULE_RECRUITMENT_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8981,'MAIN_MODULE_RESOURCE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8982,'MAIN_MODULE_SALARIES',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8983,'MAIN_MODULE_SERVICE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8984,'MAIN_MODULE_SYSLOG',0,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8985,'MAIN_MODULE_SOCIETE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8986,'MAIN_MODULE_STRIPE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8987,'MAIN_MODULE_TICKET',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8988,'MAIN_MODULE_TICKET_TABS_0',1,'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__','chaine',0,NULL,'2022-02-07 13:38:18'),(8989,'MAIN_MODULE_TICKET_TABS_1',1,'project:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?projectid=__ID__','chaine',0,NULL,'2022-02-07 13:38:18'),(8990,'MAIN_MODULE_TICKET_TRIGGERS',1,'1','chaine',0,NULL,'2022-02-07 13:38:18'),(8991,'TAKEPOS_PRINT_METHOD',1,'browser','chaine',0,'','2022-02-07 13:38:18'),(8992,'MAIN_MODULE_TAKEPOS',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(8993,'MAIN_MODULE_TAKEPOS_TRIGGERS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8994,'MAIN_MODULE_TAKEPOS_LOGIN',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8995,'MAIN_MODULE_TAKEPOS_SUBSTITUTIONS',1,'1','chaine',0,NULL,'2022-02-07 13:38:18'),(8996,'MAIN_MODULE_TAKEPOS_MENUS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8997,'MAIN_MODULE_TAKEPOS_THEME',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8998,'MAIN_MODULE_TAKEPOS_TPL',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(8999,'MAIN_MODULE_TAKEPOS_BARCODE',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(9000,'MAIN_MODULE_TAKEPOS_MODELS',1,'0','chaine',0,NULL,'2022-02-07 13:38:18'),(9001,'MAIN_MODULE_USER',0,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(9002,'MAIN_MODULE_VARIANTS',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(9003,'MAIN_MODULE_WEBSITE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:38:18'),(9004,'MAIN_VERSION_LAST_UPGRADE',0,'15.0.0','chaine',0,'Dolibarr version for last upgrade','2022-02-07 13:38:20'),(9006,'MAIN_FIRST_PING_OK_DATE',1,'20220207133821','chaine',0,'','2022-02-07 13:38:21'),(9007,'MAIN_FIRST_PING_OK_ID',1,'disabled','chaine',0,'','2022-02-07 13:38:21'),(9008,'MAIN_MODULE_KNOWLEDGEMANAGEMENT',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:39:27'),(9009,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_TRIGGERS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9010,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_LOGIN',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9011,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9012,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MENUS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9013,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_TPL',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9014,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_BARCODE',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9015,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MODELS',1,'1','chaine',0,NULL,'2022-02-07 13:39:27'),(9016,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_PRINTING',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9017,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_THEME',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9018,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9021,'WEBSITE_SUBCONTAINERSINLINE',1,'1','chaine',0,'','2022-02-07 13:57:11'),(9022,'PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT',1,'1','chaine',0,'','2022-02-07 14:17:28'),(9023,'PAYMENTBYBANKTRANSFER_USER',1,'13','chaine',0,'','2022-02-07 14:17:28'),(9025,'MAIN_MODULE_BLOCKEDLOG',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 14:32:50'),(9026,'MAIN_IHM_PARAMS_REV',1,'16','chaine',0,'','2022-02-07 14:32:50'),(9141,'MAIN_AGENDA_ACTIONAUTO_COMPANY_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9142,'MAIN_AGENDA_ACTIONAUTO_COMPANY_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9143,'MAIN_AGENDA_ACTIONAUTO_COMPANY_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9144,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9145,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLOSE_SIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9146,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLOSE_REFUSED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9147,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9148,'MAIN_AGENDA_ACTIONAUTO_PROPAL_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9149,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9150,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9151,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9152,'MAIN_AGENDA_ACTIONAUTO_ORDER_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9153,'MAIN_AGENDA_ACTIONAUTO_ORDER_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9154,'MAIN_AGENDA_ACTIONAUTO_ORDER_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9155,'MAIN_AGENDA_ACTIONAUTO_ORDER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9156,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9157,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9158,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9159,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9160,'MAIN_AGENDA_ACTIONAUTO_BILL_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9161,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9162,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9163,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9164,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9165,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_CLOSE_SIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9166,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_CLOSE_REFUSED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9167,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9168,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9169,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9170,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9171,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_SUBMIT',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9172,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_RECEIVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9173,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_REFUSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9174,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9175,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9176,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9177,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9178,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9179,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9180,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_PAYED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9181,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_CANCELED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9182,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9183,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9184,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9185,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9186,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9187,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9188,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_REOPEN',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9189,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9190,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9191,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9192,'MAIN_AGENDA_ACTIONAUTO_MEMBER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9193,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9194,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9195,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9196,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9197,'MAIN_AGENDA_ACTIONAUTO_MEMBER_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9198,'MAIN_AGENDA_ACTIONAUTO_MEMBER_RESILIATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9199,'MAIN_AGENDA_ACTIONAUTO_MEMBER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9200,'MAIN_AGENDA_ACTIONAUTO_MEMBER_EXCLUDE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9201,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9202,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9203,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9204,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9205,'MAIN_AGENDA_ACTIONAUTO_TASK_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9206,'MAIN_AGENDA_ACTIONAUTO_TASK_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9207,'MAIN_AGENDA_ACTIONAUTO_TASK_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9208,'MAIN_AGENDA_ACTIONAUTO_CONTACT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9209,'MAIN_AGENDA_ACTIONAUTO_CONTACT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9210,'MAIN_AGENDA_ACTIONAUTO_CONTACT_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9211,'MAIN_AGENDA_ACTIONAUTO_CONTACT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9212,'MAIN_AGENDA_ACTIONAUTO_PROJECT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9213,'MAIN_AGENDA_ACTIONAUTO_PROJECT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9214,'MAIN_AGENDA_ACTIONAUTO_PROJECT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9215,'MAIN_AGENDA_ACTIONAUTO_TICKET_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9216,'MAIN_AGENDA_ACTIONAUTO_TICKET_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9217,'MAIN_AGENDA_ACTIONAUTO_TICKET_ASSIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9218,'MAIN_AGENDA_ACTIONAUTO_TICKET_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9219,'MAIN_AGENDA_ACTIONAUTO_TICKET_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9220,'MAIN_AGENDA_ACTIONAUTO_TICKET_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9221,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9222,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9223,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9224,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9225,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_PAID',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9226,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9227,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9228,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9229,'MAIN_AGENDA_ACTIONAUTO_USER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9230,'MAIN_AGENDA_ACTIONAUTO_USER_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9231,'MAIN_AGENDA_ACTIONAUTO_USER_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9232,'MAIN_AGENDA_ACTIONAUTO_USER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9233,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9234,'MAIN_AGENDA_ACTIONAUTO_USER_ENABLEDISABLE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9235,'MAIN_AGENDA_ACTIONAUTO_BOM_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9236,'MAIN_AGENDA_ACTIONAUTO_BOM_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9237,'MAIN_AGENDA_ACTIONAUTO_BOM_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9238,'MAIN_AGENDA_ACTIONAUTO_BOM_REOPEN',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9239,'MAIN_AGENDA_ACTIONAUTO_BOM_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9240,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9241,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_PRODUCED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9242,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9243,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9244,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9245,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9246,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9247,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9248,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9249,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9250,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9251,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9252,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9253,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9254,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'); +INSERT INTO `llx_const` VALUES (8,'MAIN_UPLOAD_DOC',0,'2048','chaine',0,'Max size for file upload (0 means no upload allowed)','2012-07-08 11:17:57'),(9,'MAIN_SEARCHFORM_SOCIETE',0,'1','yesno',0,'Show form for quick company search','2012-07-08 11:17:57'),(10,'MAIN_SEARCHFORM_CONTACT',0,'1','yesno',0,'Show form for quick contact search','2012-07-08 11:17:57'),(11,'MAIN_SEARCHFORM_PRODUITSERVICE',0,'1','yesno',0,'Show form for quick product search','2012-07-08 11:17:58'),(12,'MAIN_SEARCHFORM_ADHERENT',0,'1','yesno',0,'Show form for quick member search','2012-07-08 11:17:58'),(16,'MAIN_SIZE_LISTE_LIMIT',0,'25','chaine',0,'Longueur maximum des listes','2012-07-08 11:17:58'),(29,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',1,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2012-07-08 11:17:58'),(33,'SOCIETE_NOLIST_COURRIER',0,'1','yesno',0,'Liste les fichiers du repertoire courrier','2012-07-08 11:17:58'),(36,'ADHERENT_MAIL_REQUIRED',1,'1','yesno',0,'EMail required to create a new member','2012-07-08 11:17:58'),(37,'ADHERENT_MAIL_FROM',1,'adherents@domain.com','chaine',0,'Sender EMail for automatic emails','2012-07-08 11:17:58'),(38,'ADHERENT_MAIL_RESIL',1,'Your subscription has been resiliated.\r\nWe hope to see you soon again','html',0,'Mail resiliation','2018-11-23 11:56:07'),(39,'ADHERENT_MAIL_VALID',1,'Your subscription has been validated.\r\nThis is a remind of your personal information :\r\n\r\n%INFOS%\r\n\r\n','html',0,'Mail de validation','2018-11-23 11:56:07'),(40,'ADHERENT_MAIL_COTIS',1,'Hello %PRENOM%,\r\nThanks for your subscription.\r\nThis email confirms that your subscription has been received and processed.\r\n\r\n','html',0,'Mail de validation de cotisation','2018-11-23 11:56:07'),(41,'ADHERENT_MAIL_VALID_SUBJECT',1,'Your subscription has been validated','chaine',0,'Sujet du mail de validation','2012-07-08 11:17:59'),(42,'ADHERENT_MAIL_RESIL_SUBJECT',1,'Resiliating your subscription','chaine',0,'Sujet du mail de resiliation','2012-07-08 11:17:59'),(43,'ADHERENT_MAIL_COTIS_SUBJECT',1,'Receipt of your subscription','chaine',0,'Sujet du mail de validation de cotisation','2012-07-08 11:17:59'),(44,'MAILING_EMAIL_FROM',1,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2012-07-08 11:17:59'),(45,'ADHERENT_USE_MAILMAN',1,'0','yesno',0,'Utilisation de Mailman','2012-07-08 11:17:59'),(46,'ADHERENT_MAILMAN_UNSUB_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&user=%EMAIL%','chaine',0,'Url de desinscription aux listes mailman','2012-07-08 11:17:59'),(47,'ADHERENT_MAILMAN_URL',1,'http://lists.domain.com/cgi-bin/mailman/admin/%LISTE%/members?adminpw=%MAILMAN_ADMINPW%&send_welcome_msg_to_this_batch=1&subscribees=%EMAIL%','chaine',0,'Url pour les inscriptions mailman','2012-07-08 11:17:59'),(48,'ADHERENT_MAILMAN_LISTS',1,'test-test,test-test2','chaine',0,'Listes auxquelles inscrire les nouveaux adherents','2012-07-08 11:17:59'),(49,'ADHERENT_MAILMAN_ADMINPW',1,'','chaine',0,'Mot de passe Admin des liste mailman','2012-07-08 11:17:59'),(50,'ADHERENT_MAILMAN_SERVER',1,'lists.domain.com','chaine',0,'Serveur hebergeant les interfaces d Admin des listes mailman','2012-07-08 11:17:59'),(51,'ADHERENT_MAILMAN_LISTS_COTISANT',1,'','chaine',0,'Liste(s) auxquelles les nouveaux cotisants sont inscris automatiquement','2012-07-08 11:17:59'),(52,'ADHERENT_USE_SPIP',1,'0','yesno',0,'Utilisation de SPIP ?','2012-07-08 11:17:59'),(53,'ADHERENT_USE_SPIP_AUTO',1,'0','yesno',0,'Utilisation de SPIP automatiquement','2012-07-08 11:17:59'),(54,'ADHERENT_SPIP_USER',1,'user','chaine',0,'user spip','2012-07-08 11:17:59'),(55,'ADHERENT_SPIP_PASS',1,'pass','chaine',0,'Pass de connection','2012-07-08 11:17:59'),(56,'ADHERENT_SPIP_SERVEUR',1,'localhost','chaine',0,'serveur spip','2012-07-08 11:17:59'),(57,'ADHERENT_SPIP_DB',1,'spip','chaine',0,'db spip','2012-07-08 11:17:59'),(58,'ADHERENT_CARD_HEADER_TEXT',1,'%ANNEE%','chaine',0,'Texte imprime sur le haut de la carte adherent','2012-07-08 11:17:59'),(59,'ADHERENT_CARD_FOOTER_TEXT',1,'Association AZERTY','chaine',0,'Texte imprime sur le bas de la carte adherent','2012-07-08 11:17:59'),(61,'FCKEDITOR_ENABLE_USER',1,'1','yesno',0,'Activation fckeditor sur notes utilisateurs','2012-07-08 11:17:59'),(62,'FCKEDITOR_ENABLE_SOCIETE',1,'1','yesno',0,'Activation fckeditor sur notes societe','2012-07-08 11:17:59'),(63,'FCKEDITOR_ENABLE_PRODUCTDESC',1,'1','yesno',0,'Activation fckeditor sur notes produits','2012-07-08 11:17:59'),(64,'FCKEDITOR_ENABLE_MEMBER',1,'1','yesno',0,'Activation fckeditor sur notes adherent','2012-07-08 11:17:59'),(65,'FCKEDITOR_ENABLE_MAILING',1,'1','yesno',0,'Activation fckeditor sur emailing','2012-07-08 11:17:59'),(67,'DON_ADDON_MODEL',1,'html_cerfafr','chaine',0,'','2012-07-08 11:18:00'),(68,'PROPALE_ADDON',1,'mod_propale_marbre','chaine',0,'','2012-07-08 11:18:00'),(69,'PROPALE_ADDON_PDF',1,'azur','chaine',0,'','2012-07-08 11:18:00'),(70,'COMMANDE_ADDON',1,'mod_commande_marbre','chaine',0,'','2012-07-08 11:18:00'),(71,'COMMANDE_ADDON_PDF',1,'einstein','chaine',0,'','2012-07-08 11:18:00'),(72,'COMMANDE_SUPPLIER_ADDON',1,'mod_commande_fournisseur_muguet','chaine',0,'','2012-07-08 11:18:00'),(73,'COMMANDE_SUPPLIER_ADDON_PDF',1,'muscadet','chaine',0,'','2012-07-08 11:18:00'),(74,'EXPEDITION_ADDON',1,'enlevement','chaine',0,'','2012-07-08 11:18:00'),(76,'FICHEINTER_ADDON',1,'pacific','chaine',0,'','2012-07-08 11:18:00'),(77,'FICHEINTER_ADDON_PDF',1,'soleil','chaine',0,'','2012-07-08 11:18:00'),(79,'FACTURE_ADDON_PDF',1,'crabe','chaine',0,'','2012-07-08 11:18:00'),(80,'PROPALE_VALIDITY_DURATION',1,'15','chaine',0,'Durée de validitée des propales','2012-07-08 11:18:00'),(230,'COMPANY_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2012-07-08 11:26:20'),(238,'LIVRAISON_ADDON_PDF',1,'typhon','chaine',0,'Nom du gestionnaire de generation des commandes en PDF','2012-07-08 11:26:27'),(239,'DELIVERY_ADDON_NUMBER',1,'mod_delivery_jade','chaine',0,'Nom du gestionnaire de numerotation des bons de livraison','2020-12-10 12:24:40'),(245,'FACTURE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2012-07-08 11:28:53'),(249,'DON_FORM',1,'html_cerfafr','chaine',0,'Nom du gestionnaire de formulaire de dons','2017-09-06 16:12:22'),(254,'ADHERENT_BANK_ACCOUNT',1,'','chaine',0,'ID du Compte banquaire utilise','2012-07-08 11:29:05'),(255,'ADHERENT_BANK_CATEGORIE',1,'','chaine',0,'ID de la categorie banquaire des cotisations','2012-07-08 11:29:05'),(256,'ADHERENT_ETIQUETTE_TYPE',1,'L7163','chaine',0,'Type d etiquette (pour impression de planche d etiquette)','2012-07-08 11:29:05'),(269,'PROJECT_ADDON_PDF',1,'baleine','chaine',0,'Nom du gestionnaire de generation des projets en PDF','2012-07-08 11:29:33'),(270,'PROJECT_ADDON',1,'mod_project_simple','chaine',0,'Nom du gestionnaire de numerotation des projets','2012-07-08 11:29:33'),(369,'EXPEDITION_ADDON_PDF',1,'merou','chaine',0,'','2012-07-08 22:58:07'),(377,'FACTURE_ADDON',1,'mod_facture_terre','chaine',0,'','2012-07-08 23:08:12'),(380,'ADHERENT_CARD_TEXT',1,'%TYPE% n° %ID%\r\n%PRENOM% %NOM%\r\n<%EMAIL%>\r\n%ADRESSE%\r\n%CP% %VILLE%\r\n%PAYS%','',0,'Texte imprime sur la carte adherent','2012-07-08 23:14:46'),(381,'ADHERENT_CARD_TEXT_RIGHT',1,'aaa','',0,'','2012-07-08 23:14:55'),(386,'STOCK_CALCULATE_ON_SHIPMENT',1,'1','chaine',0,'','2012-07-08 23:23:21'),(387,'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER',1,'1','chaine',0,'','2012-07-08 23:23:26'),(392,'MAIN_AGENDA_XCAL_EXPORTKEY',1,'dolibarr','chaine',0,'','2012-07-08 23:27:50'),(393,'MAIN_AGENDA_EXPORT_PAST_DELAY',1,'100','chaine',0,'','2012-07-08 23:27:50'),(610,'CASHDESK_ID_THIRDPARTY',1,'7','chaine',0,'','2012-07-11 17:08:18'),(611,'CASHDESK_ID_BANKACCOUNT_CASH',1,'3','chaine',0,'','2012-07-11 17:08:18'),(612,'CASHDESK_ID_BANKACCOUNT_CHEQUE',1,'1','chaine',0,'','2012-07-11 17:08:18'),(613,'CASHDESK_ID_BANKACCOUNT_CB',1,'1','chaine',0,'','2012-07-11 17:08:18'),(614,'CASHDESK_ID_WAREHOUSE',1,'2','chaine',0,'','2012-07-11 17:08:18'),(660,'LDAP_USER_DN',1,'ou=users,dc=my-domain,dc=com','chaine',0,NULL,'2012-07-18 10:25:27'),(661,'LDAP_GROUP_DN',1,'ou=groups,dc=my-domain,dc=com','chaine',0,NULL,'2012-07-18 10:25:27'),(662,'LDAP_FILTER_CONNECTION',1,'&(objectClass=user)(objectCategory=person)','chaine',0,NULL,'2012-07-18 10:25:27'),(663,'LDAP_FIELD_LOGIN',1,'uid','chaine',0,NULL,'2012-07-18 10:25:27'),(664,'LDAP_FIELD_FULLNAME',1,'cn','chaine',0,NULL,'2012-07-18 10:25:27'),(665,'LDAP_FIELD_NAME',1,'sn','chaine',0,NULL,'2012-07-18 10:25:27'),(666,'LDAP_FIELD_FIRSTNAME',1,'givenname','chaine',0,NULL,'2012-07-18 10:25:27'),(667,'LDAP_FIELD_MAIL',1,'mail','chaine',0,NULL,'2012-07-18 10:25:27'),(668,'LDAP_FIELD_PHONE',1,'telephonenumber','chaine',0,NULL,'2012-07-18 10:25:27'),(669,'LDAP_FIELD_FAX',1,'facsimiletelephonenumber','chaine',0,NULL,'2012-07-18 10:25:27'),(670,'LDAP_FIELD_MOBILE',1,'mobile','chaine',0,NULL,'2012-07-18 10:25:27'),(671,'LDAP_SERVER_TYPE',1,'openldap','chaine',0,'','2012-07-18 10:25:46'),(672,'LDAP_SERVER_PROTOCOLVERSION',1,'3','chaine',0,'','2012-07-18 10:25:47'),(673,'LDAP_SERVER_HOST',1,'localhost','chaine',0,'','2012-07-18 10:25:47'),(674,'LDAP_SERVER_PORT',1,'389','chaine',0,'','2012-07-18 10:25:47'),(675,'LDAP_SERVER_USE_TLS',1,'0','chaine',0,'','2012-07-18 10:25:47'),(676,'LDAP_SYNCHRO_ACTIVE',1,'dolibarr2ldap','chaine',0,'','2012-07-18 10:25:47'),(677,'LDAP_CONTACT_ACTIVE',1,'1','chaine',0,'','2012-07-18 10:25:47'),(678,'LDAP_MEMBER_ACTIVE',1,'1','chaine',0,'','2012-07-18 10:25:47'),(974,'MAIN_MODULE_WORKFLOW_TRIGGERS',1,'1','chaine',0,NULL,'2013-07-18 18:02:20'),(975,'WORKFLOW_PROPAL_AUTOCREATE_ORDER',1,'1','chaine',0,'','2013-07-18 18:02:24'),(980,'PRELEVEMENT_NUMERO_NATIONAL_EMETTEUR',1,'1234567','chaine',0,'','2013-07-18 18:05:50'),(983,'FACTURE_RIB_NUMBER',1,'1','chaine',0,'','2013-07-18 18:35:14'),(984,'FACTURE_CHQ_NUMBER',1,'1','chaine',0,'','2013-07-18 18:35:14'),(1016,'GOOGLE_DUPLICATE_INTO_GCAL',1,'1','chaine',0,'','2013-07-18 21:40:20'),(1152,'SOCIETE_CODECLIENT_ADDON',1,'mod_codeclient_monkey','chaine',0,'','2013-07-29 20:50:02'),(1240,'MAIN_LOGEVENTS_USER_LOGIN',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1241,'MAIN_LOGEVENTS_USER_LOGIN_FAILED',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1242,'MAIN_LOGEVENTS_USER_LOGOUT',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1243,'MAIN_LOGEVENTS_USER_CREATE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1244,'MAIN_LOGEVENTS_USER_MODIFY',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1245,'MAIN_LOGEVENTS_USER_NEW_PASSWORD',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1246,'MAIN_LOGEVENTS_USER_ENABLEDISABLE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1247,'MAIN_LOGEVENTS_USER_DELETE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1248,'MAIN_LOGEVENTS_GROUP_CREATE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1249,'MAIN_LOGEVENTS_GROUP_MODIFY',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1250,'MAIN_LOGEVENTS_GROUP_DELETE',1,'1','chaine',0,'','2013-07-29 21:05:01'),(1251,'MAIN_BOXES_MAXLINES',1,'5','',0,'','2013-07-29 21:05:42'),(1482,'EXPEDITION_ADDON_NUMBER',1,'mod_expedition_safor','chaine',0,'Nom du gestionnaire de numerotation des expeditions','2013-08-05 17:53:11'),(1490,'CONTRACT_ADDON',1,'mod_contract_serpis','chaine',0,'Nom du gestionnaire de numerotation des contrats','2013-08-05 18:11:58'),(1677,'COMMANDE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/orders','chaine',0,NULL,'2014-12-08 13:11:02'),(1724,'PROPALE_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2014-12-08 13:17:14'),(1730,'OPENSTREETMAP_ENABLE_MAPS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1731,'OPENSTREETMAP_ENABLE_MAPS_CONTACTS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1732,'OPENSTREETMAP_ENABLE_MAPS_MEMBERS',1,'1','chaine',0,'','2014-12-08 13:22:47'),(1733,'OPENSTREETMAP_MAPS_ZOOM_LEVEL',1,'15','chaine',0,'','2014-12-08 13:22:47'),(1742,'MAIN_MAIL_EMAIL_FROM',2,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2014-12-08 14:08:14'),(1743,'MAIN_MENU_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2015-02-11 19:43:54'),(1744,'MAIN_MENUFRONT_STANDARD',2,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2015-02-11 19:43:54'),(1745,'MAIN_MENU_SMARTPHONE',2,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2014-12-08 14:08:14'),(1746,'MAIN_MENUFRONT_SMARTPHONE',2,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2014-12-08 14:08:14'),(1747,'MAIN_THEME',2,'eldy','chaine',0,'Default theme','2014-12-08 14:08:14'),(1748,'MAIN_DELAY_ACTIONS_TODO',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2014-12-08 14:08:14'),(1749,'MAIN_DELAY_ORDERS_TO_PROCESS',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2014-12-08 14:08:14'),(1750,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2014-12-08 14:08:14'),(1751,'MAIN_DELAY_PROPALS_TO_CLOSE',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2014-12-08 14:08:14'),(1752,'MAIN_DELAY_PROPALS_TO_BILL',2,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2014-12-08 14:08:14'),(1753,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2014-12-08 14:08:14'),(1754,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',2,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2014-12-08 14:08:14'),(1755,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2014-12-08 14:08:14'),(1756,'MAIN_DELAY_RUNNING_SERVICES',2,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2014-12-08 14:08:14'),(1757,'MAIN_DELAY_MEMBERS',2,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2014-12-08 14:08:14'),(1758,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',2,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2014-12-08 14:08:14'),(1759,'MAILING_EMAIL_FROM',2,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2014-12-08 14:08:14'),(1760,'MAIN_INFO_SOCIETE_COUNTRY',3,'1:FR:France','chaine',0,'','2015-02-26 21:56:28'),(1761,'MAIN_INFO_SOCIETE_NOM',3,'bbb','chaine',0,'','2014-12-08 14:08:20'),(1762,'MAIN_INFO_SOCIETE_STATE',3,'0','chaine',0,'','2015-02-27 14:20:27'),(1763,'MAIN_MONNAIE',3,'EUR','chaine',0,'','2014-12-08 14:08:20'),(1764,'MAIN_LANG_DEFAULT',3,'auto','chaine',0,'','2014-12-08 14:08:20'),(1765,'MAIN_MAIL_EMAIL_FROM',3,'dolibarr-robot@domain.com','chaine',0,'EMail emetteur pour les emails automatiques Dolibarr','2014-12-08 14:08:20'),(1766,'MAIN_MENU_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs internes','2015-02-11 19:43:54'),(1767,'MAIN_MENUFRONT_STANDARD',3,'eldy_menu.php','chaine',0,'Module de gestion de la barre de menu du haut pour utilisateurs externes','2015-02-11 19:43:54'),(1768,'MAIN_MENU_SMARTPHONE',3,'iphone_backoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs internes','2014-12-08 14:08:20'),(1769,'MAIN_MENUFRONT_SMARTPHONE',3,'iphone_frontoffice.php','chaine',0,'Module de gestion de la barre de menu smartphone pour utilisateurs externes','2014-12-08 14:08:20'),(1770,'MAIN_THEME',3,'eldy','chaine',0,'Default theme','2014-12-08 14:08:20'),(1771,'MAIN_DELAY_ACTIONS_TODO',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur actions planifiées non réalisées','2014-12-08 14:08:20'),(1772,'MAIN_DELAY_ORDERS_TO_PROCESS',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes clients non traitées','2014-12-08 14:08:20'),(1773,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur commandes fournisseurs non traitées','2014-12-08 14:08:20'),(1774,'MAIN_DELAY_PROPALS_TO_CLOSE',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales à cloturer','2014-12-08 14:08:20'),(1775,'MAIN_DELAY_PROPALS_TO_BILL',3,'7','chaine',0,'Tolérance de retard avant alerte (en jours) sur propales non facturées','2014-12-08 14:08:20'),(1776,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures client impayées','2014-12-08 14:08:20'),(1777,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',3,'2','chaine',0,'Tolérance de retard avant alerte (en jours) sur factures fournisseur impayées','2014-12-08 14:08:20'),(1778,'MAIN_DELAY_NOT_ACTIVATED_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services à activer','2014-12-08 14:08:20'),(1779,'MAIN_DELAY_RUNNING_SERVICES',3,'0','chaine',0,'Tolérance de retard avant alerte (en jours) sur services expirés','2014-12-08 14:08:20'),(1780,'MAIN_DELAY_MEMBERS',3,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur cotisations adhérent en retard','2014-12-08 14:08:20'),(1781,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',3,'62','chaine',0,'Tolérance de retard avant alerte (en jours) sur rapprochements bancaires à faire','2014-12-08 14:08:20'),(1782,'MAILING_EMAIL_FROM',3,'dolibarr@domain.com','chaine',0,'EMail emmetteur pour les envois d emailings','2014-12-08 14:08:20'),(1803,'SYSLOG_FILE',1,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2014-12-08 14:15:08'),(1804,'SYSLOG_HANDLERS',1,'[\"mod_syslog_file\"]','chaine',0,'','2014-12-08 14:15:08'),(1805,'MAIN_MODULE_SKINCOLOREDITOR',3,'1',NULL,0,NULL,'2014-12-08 14:35:40'),(1922,'PAYPAL_API_SANDBOX',1,'1','chaine',0,'','2014-12-12 12:11:05'),(1923,'PAYPAL_API_USER',1,'seller_1355312017_biz_api1.mydomain.com','chaine',0,'','2014-12-12 12:11:05'),(1924,'PAYPAL_API_PASSWORD',1,'1355312040','chaine',0,'','2014-12-12 12:11:05'),(1925,'PAYPAL_API_SIGNATURE',1,'ABCDEFWBzvfn0q5iNmbuiDv1y.3EAXIMWyl4C5KvDReR9HDwwAd6dQ4Q','chaine',0,'','2014-12-12 12:11:05'),(1926,'PAYPAL_API_INTEGRAL_OR_PAYPALONLY',1,'integral','chaine',0,'','2014-12-12 12:11:05'),(1927,'PAYPAL_SECURITY_TOKEN',1,'50c82fab36bb3b6aa83e2a50691803b2','chaine',0,'','2014-12-12 12:11:05'),(1928,'PAYPAL_SECURITY_TOKEN_UNIQUE',1,'0','chaine',0,'','2014-12-12 12:11:05'),(1929,'PAYPAL_ADD_PAYMENT_URL',1,'1','chaine',0,'','2014-12-12 12:11:05'),(1980,'MAIN_PDF_FORMAT',1,'EUA4','chaine',0,'','2014-12-12 19:58:05'),(1981,'MAIN_PROFID1_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1982,'MAIN_PROFID2_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1983,'MAIN_PROFID3_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1984,'MAIN_PROFID4_IN_ADDRESS',1,'0','chaine',0,'','2014-12-12 19:58:05'),(1985,'MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT',1,'0','chaine',0,'','2014-12-12 19:58:05'),(2835,'MAIN_USE_CONNECT_TIMEOUT',1,'10','chaine',0,'','2015-01-16 19:28:50'),(2836,'MAIN_USE_RESPONSE_TIMEOUT',1,'30','chaine',0,'','2015-01-16 19:28:50'),(2837,'MAIN_PROXY_USE',1,'0','chaine',0,'','2015-01-16 19:28:50'),(2838,'MAIN_PROXY_HOST',1,'localhost','chaine',0,'','2015-01-16 19:28:50'),(2839,'MAIN_PROXY_PORT',1,'8080','chaine',0,'','2015-01-16 19:28:50'),(2840,'MAIN_PROXY_USER',1,'aaa','chaine',0,'','2015-01-16 19:28:50'),(2841,'MAIN_PROXY_PASS',1,'bbb','chaine',0,'','2015-01-16 19:28:50'),(2848,'OVHSMS_NICK',1,'BN196-OVH','chaine',0,'','2015-01-16 19:32:36'),(2849,'OVHSMS_PASS',1,'bigone-10','chaine',0,'','2015-01-16 19:32:36'),(2850,'OVHSMS_SOAPURL',1,'https://www.ovh.com/soapi/soapi-re-1.55.wsdl','chaine',0,'','2015-01-16 19:32:36'),(2854,'THEME_ELDY_RGB',1,'bfbf00','chaine',0,'','2015-01-18 10:02:53'),(2855,'THEME_ELDY_ENABLE_PERSONALIZED',1,'0','chaine',0,'','2015-01-18 10:02:55'),(2858,'MAIN_SESSION_TIMEOUT',1,'2000','chaine',0,'','2015-01-19 17:01:53'),(2867,'FACSIM_ADDON',1,'mod_facsim_alcoy','chaine',0,'','2015-01-19 17:16:25'),(2868,'POS_SERVICES',1,'0','chaine',0,'','2015-01-19 17:16:51'),(2869,'POS_USE_TICKETS',1,'1','chaine',0,'','2015-01-19 17:16:51'),(2870,'POS_MAX_TTC',1,'100','chaine',0,'','2015-01-19 17:16:51'),(3190,'MAIN_MODULE_HOLIDAY',2,'1',NULL,0,NULL,'2015-02-01 08:52:34'),(3195,'INVOICE_SUPPLIER_ADDON_PDF',1,'canelle','chaine',0,'','2015-02-10 19:50:27'),(3199,'MAIN_FORCE_RELOAD_PAGE',1,'1','chaine',0,NULL,'2015-02-12 16:22:55'),(3223,'OVH_THIRDPARTY_IMPORT',1,'2','chaine',0,'','2015-02-13 16:20:18'),(3409,'AGENDA_USE_EVENT_TYPE',1,'1','chaine',0,'','2015-02-27 18:12:24'),(3886,'MAIN_REMOVE_INSTALL_WARNING',1,'1','chaine',1,'','2015-03-02 18:32:50'),(4013,'MAIN_DELAY_ACTIONS_TODO',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4014,'MAIN_DELAY_PROPALS_TO_CLOSE',1,'31','chaine',0,'','2015-03-06 08:59:12'),(4015,'MAIN_DELAY_PROPALS_TO_BILL',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4016,'MAIN_DELAY_ORDERS_TO_PROCESS',1,'2','chaine',0,'','2015-03-06 08:59:12'),(4017,'MAIN_DELAY_CUSTOMER_BILLS_UNPAYED',1,'31','chaine',0,'','2015-03-06 08:59:12'),(4018,'MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS',1,'7','chaine',0,'','2015-03-06 08:59:12'),(4019,'MAIN_DELAY_SUPPLIER_BILLS_TO_PAY',1,'2','chaine',0,'','2015-03-06 08:59:12'),(4020,'MAIN_DELAY_RUNNING_SERVICES',1,'-15','chaine',0,'','2015-03-06 08:59:12'),(4021,'MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE',1,'62','chaine',0,'','2015-03-06 08:59:13'),(4022,'MAIN_DELAY_MEMBERS',1,'31','chaine',0,'','2015-03-06 08:59:13'),(4023,'MAIN_DISABLE_METEO',1,'0','chaine',0,'','2015-03-06 08:59:13'),(4044,'ADHERENT_VAT_FOR_SUBSCRIPTIONS',1,'0','',0,'','2015-03-06 16:06:38'),(4047,'ADHERENT_BANK_USE',1,'bankviainvoice','',0,'','2015-03-06 16:12:30'),(4049,'PHPSANE_SCANIMAGE',1,'/usr/bin/scanimage','chaine',0,'','2015-03-06 21:54:13'),(4050,'PHPSANE_PNMTOJPEG',1,'/usr/bin/pnmtojpeg','chaine',0,'','2015-03-06 21:54:13'),(4051,'PHPSANE_PNMTOTIFF',1,'/usr/bin/pnmtotiff','chaine',0,'','2015-03-06 21:54:13'),(4052,'PHPSANE_OCR',1,'/usr/bin/gocr','chaine',0,'','2015-03-06 21:54:13'),(4548,'ECM_AUTO_TREE_ENABLED',1,'1','chaine',0,'','2015-03-10 15:57:21'),(4579,'MAIN_MODULE_AGENDA',2,'1',NULL,0,NULL,'2015-03-13 15:29:19'),(4580,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4581,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4582,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4583,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4584,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4585,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4586,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4587,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4588,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4589,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4590,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4591,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4592,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4593,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4594,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',2,'1','chaine',0,NULL,'2015-03-13 15:29:19'),(4688,'GOOGLE_ENABLE_AGENDA',2,'1','chaine',0,'','2015-03-13 15:36:29'),(4689,'GOOGLE_AGENDA_NAME1',2,'eldy','chaine',0,'','2015-03-13 15:36:29'),(4690,'GOOGLE_AGENDA_SRC1',2,'eldy10@mail.com','chaine',0,'','2015-03-13 15:36:29'),(4691,'GOOGLE_AGENDA_COLOR1',2,'BE6D00','chaine',0,'','2015-03-13 15:36:29'),(4692,'GOOGLE_AGENDA_COLOR2',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4693,'GOOGLE_AGENDA_COLOR3',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4694,'GOOGLE_AGENDA_COLOR4',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4695,'GOOGLE_AGENDA_COLOR5',2,'7A367A','chaine',0,'','2015-03-13 15:36:29'),(4696,'GOOGLE_AGENDA_TIMEZONE',2,'Europe/Paris','chaine',0,'','2015-03-13 15:36:29'),(4697,'GOOGLE_AGENDA_NB',2,'5','chaine',0,'','2015-03-13 15:36:29'),(4725,'SOCIETE_CODECLIENT_ADDON',2,'mod_codeclient_leopard','chaine',0,'Module to control third parties codes','2015-03-13 20:21:35'),(4726,'SOCIETE_CODECOMPTA_ADDON',2,'mod_codecompta_panicum','chaine',0,'Module to control third parties codes','2015-03-13 20:21:35'),(4727,'SOCIETE_FISCAL_MONTH_START',2,'','chaine',0,'Mettre le numero du mois du debut d\\\'annee fiscale, ex: 9 pour septembre','2015-03-13 20:21:35'),(4728,'MAIN_SEARCHFORM_SOCIETE',2,'1','yesno',0,'Show form for quick company search','2015-03-13 20:21:35'),(4729,'MAIN_SEARCHFORM_CONTACT',2,'1','yesno',0,'Show form for quick contact search','2015-03-13 20:21:35'),(4730,'COMPANY_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/thirdparties','chaine',0,NULL,'2015-03-13 20:21:35'),(4743,'MAIN_MODULE_CLICKTODIAL',2,'1',NULL,0,NULL,'2015-03-13 20:30:28'),(4744,'MAIN_MODULE_NOTIFICATION',2,'1',NULL,0,NULL,'2015-03-13 20:30:34'),(4745,'MAIN_MODULE_WEBSERVICES',2,'1',NULL,0,NULL,'2015-03-13 20:30:41'),(4746,'MAIN_MODULE_PROPALE',2,'1',NULL,0,NULL,'2015-03-13 20:32:38'),(4747,'PROPALE_ADDON_PDF',2,'azur','chaine',0,'Nom du gestionnaire de generation des propales en PDF','2015-03-13 20:32:38'),(4748,'PROPALE_ADDON',2,'mod_propale_marbre','chaine',0,'Nom du gestionnaire de numerotation des propales','2015-03-13 20:32:38'),(4749,'PROPALE_VALIDITY_DURATION',2,'15','chaine',0,'Duration of validity of business proposals','2015-03-13 20:32:38'),(4750,'PROPALE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/proposals','chaine',0,NULL,'2015-03-13 20:32:38'),(4752,'MAIN_MODULE_TAX',2,'1',NULL,0,NULL,'2015-03-13 20:32:47'),(4753,'MAIN_MODULE_DON',2,'1',NULL,0,NULL,'2015-03-13 20:32:54'),(4754,'DON_ADDON_MODEL',2,'html_cerfafr','chaine',0,'Nom du gestionnaire de generation de recu de dons','2015-03-13 20:32:54'),(4755,'POS_USE_TICKETS',2,'1','chaine',0,'','2015-03-13 20:33:09'),(4756,'POS_MAX_TTC',2,'100','chaine',0,'','2015-03-13 20:33:09'),(4757,'MAIN_MODULE_POS',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4758,'TICKET_ADDON',2,'mod_ticket_avenc','chaine',0,'Nom du gestionnaire de numerotation des tickets','2015-03-13 20:33:09'),(4759,'MAIN_MODULE_BANQUE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4760,'MAIN_MODULE_FACTURE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4761,'FACTURE_ADDON_PDF',2,'crabe','chaine',0,'Name of PDF model of invoice','2015-03-13 20:33:09'),(4762,'FACTURE_ADDON',2,'mod_facture_terre','chaine',0,'Name of numbering numerotation rules of invoice','2015-03-13 20:33:09'),(4763,'FACTURE_ADDON_PDF_ODT_PATH',2,'DOL_DATA_ROOT/doctemplates/invoices','chaine',0,NULL,'2015-03-13 20:33:09'),(4764,'MAIN_MODULE_SOCIETE',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4765,'MAIN_MODULE_PRODUCT',2,'1',NULL,0,NULL,'2015-03-13 20:33:09'),(4766,'PRODUCT_CODEPRODUCT_ADDON',2,'mod_codeproduct_leopard','chaine',0,'Module to control product codes','2015-03-13 20:33:09'),(4767,'MAIN_SEARCHFORM_PRODUITSERVICE',2,'1','yesno',0,'Show form for quick product search','2015-03-13 20:33:09'),(4772,'FACSIM_ADDON',2,'mod_facsim_alcoy','chaine',0,'','2015-03-13 20:33:32'),(4773,'MAIN_MODULE_MAILING',2,'1',NULL,0,NULL,'2015-03-13 20:33:37'),(4774,'MAIN_MODULE_OPENSURVEY',2,'1',NULL,0,NULL,'2015-03-13 20:33:42'),(4782,'AGENDA_USE_EVENT_TYPE',2,'1','chaine',0,'','2015-03-13 20:53:36'),(4884,'AGENDA_DISABLE_EXT',2,'1','chaine',0,'','2015-03-13 22:03:40'),(4928,'COMMANDE_SUPPLIER_ADDON_NUMBER',1,'mod_commande_fournisseur_muguet','chaine',0,'Nom du gestionnaire de numerotation des commandes fournisseur','2015-03-22 09:24:29'),(4929,'INVOICE_SUPPLIER_ADDON_NUMBER',1,'mod_facture_fournisseur_cactus','chaine',0,'Nom du gestionnaire de numerotation des factures fournisseur','2015-03-22 09:24:29'),(5001,'MAIN_CRON_KEY',0,'bc54582fe30d5d4a830c6f582ec28810','chaine',0,'','2015-03-23 17:54:53'),(5009,'CRON_KEY',0,'2c2e755c20be2014098f629865598006','chaine',0,'','2015-03-23 18:06:24'),(5139,'SOCIETE_ADD_REF_IN_LIST',1,'','yesno',0,'Display customer ref into select list','2015-09-08 23:06:08'),(5150,'PROJECT_TASK_ADDON_PDF',1,'','chaine',0,'Name of PDF/ODT tasks manager class','2015-09-08 23:06:14'),(5151,'PROJECT_TASK_ADDON',1,'mod_task_simple','chaine',0,'Name of Numbering Rule task manager class','2015-09-08 23:06:14'),(5152,'PROJECT_TASK_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/tasks','chaine',0,'','2015-09-08 23:06:14'),(5239,'BOOKMARKS_SHOW_IN_MENU',1,'10','chaine',0,'','2016-03-02 15:42:26'),(5271,'DONATION_ART200',1,'','yesno',0,'Option Française - Eligibilité Art200 du CGI','2016-12-21 12:51:28'),(5272,'DONATION_ART238',1,'','yesno',0,'Option Française - Eligibilité Art238 bis du CGI','2016-12-21 12:51:28'),(5274,'DONATION_MESSAGE',1,'Thank you','chaine',0,'Message affiché sur le récépissé de versements ou dons','2016-12-21 12:51:28'),(5349,'MAIN_SEARCHFORM_CONTACT',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5351,'MAIN_SEARCHFORM_PRODUITSERVICE',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5352,'MAIN_SEARCHFORM_PRODUITSERVICE_SUPPLIER',1,'0','chaine',0,'','2017-10-03 10:11:33'),(5353,'MAIN_SEARCHFORM_ADHERENT',1,'1','chaine',0,'','2017-10-03 10:11:33'),(5354,'MAIN_SEARCHFORM_PROJECT',1,'0','chaine',0,'','2017-10-03 10:11:33'),(5394,'FCKEDITOR_ENABLE_DETAILS',1,'1','yesno',0,'WYSIWIG for products details lines for all entities','2017-11-04 15:27:44'),(5395,'FCKEDITOR_ENABLE_USERSIGN',1,'1','yesno',0,'WYSIWIG for user signature','2017-11-04 15:27:44'),(5396,'FCKEDITOR_ENABLE_MAIL',1,'1','yesno',0,'WYSIWIG for products details lines for all entities','2017-11-04 15:27:44'),(5398,'CATEGORIE_RECURSIV_ADD',1,'','yesno',0,'Affect parent categories','2017-11-04 15:27:46'),(5404,'MAIN_MODULE_CATEGORIE',1,'1',NULL,0,NULL,'2017-11-04 15:41:43'),(5415,'EXPEDITION_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/shipment','chaine',0,NULL,'2017-11-15 22:38:28'),(5416,'LIVRAISON_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/delivery','chaine',0,NULL,'2017-11-15 22:38:28'),(5426,'MAIN_MODULE_PROJET',1,'1',NULL,0,NULL,'2017-11-15 22:38:44'),(5427,'PROJECT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/projects','chaine',0,NULL,'2017-11-15 22:38:44'),(5428,'PROJECT_USE_OPPORTUNIES',1,'1','chaine',0,NULL,'2017-11-15 22:38:44'),(5430,'MAIN_MODULE_EXPORT',1,'1',NULL,0,NULL,'2017-11-15 22:38:56'),(5431,'MAIN_MODULE_IMPORT',1,'1',NULL,0,NULL,'2017-11-15 22:38:58'),(5432,'MAIN_MODULE_MAILING',1,'1',NULL,0,NULL,'2017-11-15 22:39:00'),(5434,'EXPENSEREPORT_ADDON_PDF',1,'standard','chaine',0,'Name of manager to build PDF expense reports documents','2017-11-15 22:39:05'),(5437,'SALARIES_ACCOUNTING_ACCOUNT_CHARGE',1,'641','chaine',0,NULL,'2017-11-15 22:39:08'),(5441,'ADHERENT_ETIQUETTE_TEXT',1,'%FULLNAME%\n%ADDRESS%\n%ZIP% %TOWN%\n%COUNTRY%','text',0,'Text to print on member address sheets','2018-11-23 11:56:07'),(5443,'MAIN_MODULE_PRELEVEMENT',1,'1',NULL,0,NULL,'2017-11-15 22:39:33'),(5453,'MAIN_MODULE_CONTRAT',1,'1',NULL,0,NULL,'2017-11-15 22:39:52'),(5455,'MAIN_MODULE_FICHEINTER',1,'1',NULL,0,NULL,'2017-11-15 22:39:56'),(5459,'MAIN_MODULE_PAYPAL',1,'1',NULL,0,NULL,'2017-11-15 22:41:02'),(5463,'MAIN_MODULE_PROPALE',1,'1',NULL,0,NULL,'2017-11-15 22:41:47'),(5483,'GENBARCODE_BARCODETYPE_THIRDPARTY',1,'6','chaine',0,'','2018-01-16 15:49:43'),(5484,'PRODUIT_DEFAULT_BARCODE_TYPE',1,'2','chaine',0,'','2018-01-16 15:49:46'),(5586,'MAIN_DELAY_EXPENSEREPORTS_TO_PAY',1,'31','chaine',0,'Tolérance de retard avant alerte (en jours) sur les notes de frais impayées','2018-01-22 17:28:18'),(5587,'MAIN_FIX_FOR_BUGGED_MTA',1,'1','chaine',1,'Set constant to fix email ending from PHP with some linux ike system','2018-01-22 17:28:18'),(5590,'MAIN_VERSION_LAST_INSTALL',0,'3.8.3','chaine',0,'Dolibarr version when install','2018-01-22 17:28:42'),(5604,'MAIN_INFO_SOCIETE_LOGO',1,'mybigcompany.png','chaine',0,'','2018-01-22 17:33:49'),(5605,'MAIN_INFO_SOCIETE_LOGO_SMALL',1,'mybigcompany_small.png','chaine',0,'','2018-01-22 17:33:49'),(5606,'MAIN_INFO_SOCIETE_LOGO_MINI',1,'mybigcompany_mini.png','chaine',0,'','2018-01-22 17:33:49'),(5614,'MAIN_SIZE_SHORTLISTE_LIMIT',1,'4','chaine',0,'Longueur maximum des listes courtes (fiche client)','2018-03-13 10:54:46'),(5627,'SUPPLIER_PROPOSAL_ADDON_PDF',1,'aurore','chaine',0,'Name of submodule to generate PDF for supplier quotation request','2018-07-30 11:13:20'),(5628,'SUPPLIER_PROPOSAL_ADDON',1,'mod_supplier_proposal_marbre','chaine',0,'Name of submodule to number supplier quotation request','2018-07-30 11:13:20'),(5629,'SUPPLIER_PROPOSAL_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/supplier_proposal','chaine',0,NULL,'2018-07-30 11:13:20'),(5633,'MAIN_MODULE_API',1,'1',NULL,0,NULL,'2018-07-30 11:13:54'),(5634,'MAIN_MODULE_WEBSERVICES',1,'1',NULL,0,NULL,'2018-07-30 11:13:56'),(5635,'WEBSERVICES_KEY',1,'dolibarrkey','chaine',0,'','2018-07-30 11:14:04'),(5638,'MAIN_MODULE_EXTERNALRSS',1,'1',NULL,0,NULL,'2018-07-30 11:15:04'),(5642,'SOCIETE_CODECOMPTA_ADDON',1,'mod_codecompta_aquarium','chaine',0,'','2018-07-30 11:16:42'),(5707,'CASHDESK_NO_DECREASE_STOCK',1,'1','chaine',0,'','2018-07-30 13:38:11'),(5708,'MAIN_MODULE_PRODUCTBATCH',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5710,'MAIN_MODULE_STOCK',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5711,'MAIN_MODULE_PRODUCT',1,'1',NULL,0,NULL,'2018-07-30 13:38:11'),(5808,'MARGIN_TYPE',1,'costprice','chaine',0,'','2018-07-30 16:32:18'),(5809,'DISPLAY_MARGIN_RATES',1,'1','chaine',0,'','2018-07-30 16:32:20'),(5833,'ACCOUNTING_EXPORT_SEPARATORCSV',1,',','string',0,NULL,'2017-01-29 15:11:56'),(5840,'CHARTOFACCOUNTS',1,'2','chaine',0,NULL,'2017-01-29 15:11:56'),(5841,'ACCOUNTING_EXPORT_MODELCSV',1,'1','chaine',0,NULL,'2017-01-29 15:11:56'),(5842,'ACCOUNTING_LENGTH_GACCOUNT',1,'','chaine',0,NULL,'2017-01-29 15:11:56'),(5843,'ACCOUNTING_LENGTH_AACCOUNT',1,'','chaine',0,NULL,'2017-01-29 15:11:56'),(5844,'ACCOUNTING_LIST_SORT_VENTILATION_TODO',1,'1','yesno',0,NULL,'2017-01-29 15:11:56'),(5845,'ACCOUNTING_LIST_SORT_VENTILATION_DONE',1,'1','yesno',0,NULL,'2017-01-29 15:11:56'),(5846,'ACCOUNTING_EXPORT_DATE',1,'%d%m%Y','chaine',0,NULL,'2017-01-29 15:11:56'),(5848,'ACCOUNTING_EXPORT_FORMAT',1,'csv','chaine',0,NULL,'2017-01-29 15:11:56'),(5853,'MAIN_MODULE_WORKFLOW',1,'1',NULL,0,NULL,'2017-01-29 15:12:12'),(5854,'MAIN_MODULE_NOTIFICATION',1,'1',NULL,0,NULL,'2017-01-29 15:12:35'),(5855,'MAIN_MODULE_OAUTH',1,'1',NULL,0,NULL,'2017-01-29 15:12:41'),(5883,'MAILING_LIMIT_SENDBYWEB',0,'15','chaine',1,'Number of targets to defined packet size when sending mass email','2017-01-29 17:36:33'),(5884,'MAIN_MAIL_DEBUG',1,'0','chaine',1,'','2017-01-29 18:53:02'),(5885,'MAIN_SOAP_DEBUG',1,'0','chaine',1,'','2017-01-29 18:53:02'),(5925,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION',1,'1','chaine',0,'','2017-02-01 14:48:55'),(5931,'DATABASE_PWD_ENCRYPTED',1,'1','chaine',0,'','2017-02-01 15:06:04'),(5932,'MAIN_DISABLE_ALL_MAILS',1,'0','chaine',0,'','2017-02-01 15:09:09'),(5933,'MAIN_MAIL_SENDMODE',1,'mail','chaine',0,'','2017-02-01 15:09:09'),(5934,'MAIN_MAIL_SMTP_PORT',1,'465','chaine',0,'','2017-02-01 15:09:09'),(5935,'MAIN_MAIL_SMTP_SERVER',1,'smtp.mail.com','chaine',0,'','2017-02-01 15:09:09'),(5936,'MAIN_MAIL_SMTPS_ID',1,'eldy10@mail.com','chaine',0,'','2017-02-01 15:09:09'),(5937,'MAIN_MAIL_SMTPS_PW',1,'bidonge','chaine',0,'','2017-02-01 15:09:09'),(5938,'MAIN_MAIL_EMAIL_FROM',1,'robot@example.com','chaine',0,'','2017-02-01 15:09:09'),(5939,'MAIN_MAIL_DEFAULT_FROMTYPE',1,'user','chaine',0,'','2017-02-01 15:09:09'),(5940,'PRELEVEMENT_ID_BANKACCOUNT',1,'1','chaine',0,'','2017-02-06 04:04:47'),(5941,'PRELEVEMENT_ICS',1,'ICS123456','chaine',0,'','2017-02-06 04:04:47'),(5942,'PRELEVEMENT_USER',1,'1','chaine',0,'','2017-02-06 04:04:47'),(5943,'BANKADDON_PDF',1,'sepamandate','chaine',0,'','2017-02-06 04:13:52'),(5947,'CHEQUERECEIPTS_THYME_MASK',1,'CHK{yy}{mm}-{0000@1}','chaine',0,'','2017-02-06 04:16:27'),(5948,'MAIN_MODULE_LOAN',1,'1',NULL,0,NULL,'2017-02-06 19:19:05'),(5954,'MAIN_SUBMODULE_EXPEDITION',1,'1','chaine',0,'','2017-02-06 23:57:37'),(5964,'MAIN_MODULE_TAX',1,'1',NULL,0,NULL,'2017-02-07 18:56:12'),(6019,'MAIN_INFO_SOCIETE_COUNTRY',2,'1:FR:France','chaine',0,'','2017-02-15 17:18:22'),(6020,'MAIN_INFO_SOCIETE_NOM',2,'MySecondCompany','chaine',0,'','2017-02-15 17:18:22'),(6021,'MAIN_INFO_SOCIETE_STATE',2,'0','chaine',0,'','2017-02-15 17:18:22'),(6022,'MAIN_MONNAIE',2,'EUR','chaine',0,'','2017-02-15 17:18:22'),(6023,'MAIN_LANG_DEFAULT',2,'auto','chaine',0,'','2017-02-15 17:18:22'),(6032,'MAIN_MODULE_MULTICURRENCY',1,'1',NULL,0,NULL,'2017-02-15 17:29:59'),(6048,'SYSLOG_FACILITY',0,'LOG_USER','chaine',0,'','2017-02-15 22:37:01'),(6049,'SYSLOG_FIREPHP_INCLUDEPATH',0,'/home/ldestailleur/git/dolibarr_5.0/htdocs/includes/firephp/firephp-core/lib/','chaine',0,'','2017-02-15 22:37:01'),(6050,'SYSLOG_FILE',0,'DOL_DATA_ROOT/dolibarr.log','chaine',0,'','2017-02-15 22:37:01'),(6051,'SYSLOG_CHROMEPHP_INCLUDEPATH',0,'/home/ldestailleur/git/dolibarr_5.0/htdocs/includes/ccampbell/chromephp/','chaine',0,'','2017-02-15 22:37:01'),(6052,'SYSLOG_HANDLERS',0,'[\"mod_syslog_file\"]','chaine',0,'','2017-02-15 22:37:01'),(6092,'MAIN_SIZE_SHORTLIST_LIMIT',0,'3','chaine',0,'Max length for small lists (tabs)','2017-05-12 09:02:38'),(6099,'MAIN_MODULE_SKYPE',1,'1',NULL,0,NULL,'2017-05-12 09:03:51'),(6100,'MAIN_MODULE_GRAVATAR',1,'1',NULL,0,NULL,'2017-05-12 09:03:54'),(6102,'PRODUCT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/products','chaine',0,'','2017-08-27 13:29:07'),(6103,'CONTRACT_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/contracts','chaine',0,'','2017-08-27 13:29:07'),(6104,'USERGROUP_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/usergroups','chaine',0,'','2017-08-27 13:29:07'),(6105,'USER_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/users','chaine',0,'','2017-08-27 13:29:07'),(6106,'MAIN_ENABLE_OVERWRITE_TRANSLATION',1,'1','chaine',0,'Enable overwrote of translation','2017-08-27 13:29:07'),(6377,'COMMANDE_SAPHIR_MASK',1,'{yy}{mm}{000}{ttt}','chaine',0,'','2017-09-06 07:56:25'),(6518,'GOOGLE_DUPLICATE_INTO_THIRDPARTIES',1,'1','chaine',0,'','2017-09-06 19:43:57'),(6519,'GOOGLE_DUPLICATE_INTO_CONTACTS',1,'0','chaine',0,'','2017-09-06 19:43:57'),(6520,'GOOGLE_TAG_PREFIX',1,'Dolibarr (Thirdparties)','chaine',0,'','2017-09-06 19:43:57'),(6521,'GOOGLE_TAG_PREFIX_CONTACTS',1,'Dolibarr (Contacts/Addresses)','chaine',0,'','2017-09-06 19:43:57'),(6522,'GOOGLE_ENABLE_AGENDA',1,'1','chaine',0,'','2017-09-06 19:44:12'),(6523,'GOOGLE_AGENDA_COLOR1',1,'1B887A','chaine',0,'','2017-09-06 19:44:12'),(6524,'GOOGLE_AGENDA_COLOR2',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6525,'GOOGLE_AGENDA_COLOR3',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6526,'GOOGLE_AGENDA_COLOR4',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6527,'GOOGLE_AGENDA_COLOR5',1,'7A367A','chaine',0,'','2017-09-06 19:44:12'),(6528,'GOOGLE_AGENDA_TIMEZONE',1,'Europe/Paris','chaine',0,'','2017-09-06 19:44:12'),(6529,'GOOGLE_AGENDA_NB',1,'5','chaine',0,'','2017-09-06 19:44:12'),(6543,'MAIN_SMS_DEBUG',0,'1','chaine',1,'This is to enable OVH SMS debug','2017-09-06 19:44:34'),(6562,'BLOCKEDLOG_ENTITY_FINGERPRINT',1,'b63e359ffca54d5c2bab869916eaf23d4a736703028ccbf77ce1167c5f830e7b','chaine',0,'Numeric Unique Fingerprint','2018-01-19 11:27:15'),(6564,'BLOCKEDLOG_DISABLE_NOT_ALLOWED_FOR_COUNTRY',1,'FR','chaine',0,'This is list of country code where the module may be mandatory','2018-01-19 11:27:15'),(6565,'MAIN_MODULE_BOOKMARK',1,'1',NULL,0,'{\"authorid\":\"12\",\"ip\":\"82.240.38.230\"}','2018-01-19 11:27:34'),(6566,'MAIN_MODULE_ADHERENT',1,'1',NULL,0,'{\"authorid\":\"12\",\"ip\":\"82.240.38.230\"}','2018-01-19 11:27:56'),(6567,'ADHERENT_ADDON_PDF',1,'standard','chaine',0,'Name of PDF model of member','2018-01-19 11:27:56'),(6636,'MAIN_MODULE_TICKET_MODELS',1,'1','chaine',0,NULL,'2019-06-05 09:15:29'),(6647,'MAIN_MODULE_SOCIALNETWORKS',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-06-05 09:16:49'),(6795,'TICKET_ADDON',1,'mod_ticket_simple','chaine',0,'','2019-09-26 12:07:59'),(6796,'PRODUCT_CODEPRODUCT_ADDON',1,'mod_codeproduct_elephant','chaine',0,'','2019-09-26 12:59:00'),(6800,'CASHDESK_ID_THIRDPARTY1',1,'7','chaine',0,'','2019-09-26 15:30:09'),(6801,'CASHDESK_ID_BANKACCOUNT_CASH1',1,'3','chaine',0,'','2019-09-26 15:30:09'),(6802,'CASHDESK_ID_BANKACCOUNT_CHEQUE1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6803,'CASHDESK_ID_BANKACCOUNT_CB1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6804,'CASHDESK_ID_BANKACCOUNT_PRE1',1,'4','chaine',0,'','2019-09-26 15:30:09'),(6805,'CASHDESK_ID_BANKACCOUNT_VIR1',1,'1','chaine',0,'','2019-09-26 15:30:09'),(6806,'CASHDESK_NO_DECREASE_STOCK1',1,'1','chaine',0,'','2019-09-26 15:30:09'),(6811,'FORCEPROJECT_ON_PROPOSAL',1,'1','chaine',0,'','2019-09-27 14:52:57'),(6813,'PROJECT_USE_OPPORTUNITIES',1,'1','chaine',0,'','2019-10-01 11:48:09'),(6814,'PACKTHEMEACTIVATEDTHEME',0,'modOwnTheme','chaine',0,'','2019-10-02 11:41:58'),(6815,'OWNTHEME_COL1',0,'#6a89cc','chaine',0,'','2019-10-02 11:41:58'),(6816,'OWNTHEME_COL2',0,'#60a3bc','chaine',0,'','2019-10-02 11:41:58'),(6817,'DOL_VERSION',0,'10.0.2','chaine',0,'Dolibarr version','2019-10-02 11:41:58'),(6823,'OWNTHEME_COL_BODY_BCKGRD',0,'#E9E9E9','chaine',0,'','2019-10-02 11:41:58'),(6824,'OWNTHEME_COL_LOGO_BCKGRD',0,'#474c80','chaine',0,'','2019-10-02 11:41:58'),(6825,'OWNTHEME_COL_TXT_MENU',0,'#b8c6e5','chaine',0,'','2019-10-02 11:41:58'),(6826,'OWNTHEME_COL_HEADER_BCKGRD',0,'#474c80','chaine',0,'','2019-10-02 11:41:58'),(6827,'OWNTHEME_CUSTOM_CSS',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6828,'OWNTHEME_CUSTOM_JS',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6829,'OWNTHEME_FIXED_MENU',0,'0','yesno',0,'','2019-10-02 11:41:58'),(6830,'OWNTHEME_D_HEADER_FONT_SIZE',0,'1.7rem','chaine',0,'','2019-10-02 11:41:58'),(6831,'OWNTHEME_S_HEADER_FONT_SIZE',0,'1.6rem','chaine',0,'','2019-10-02 11:41:58'),(6832,'OWNTHEME_D_VMENU_FONT_SIZE',0,'1.2rem','chaine',0,'','2019-10-02 11:41:58'),(6833,'OWNTHEME_S_VMENU_FONT_SIZE',0,'1.2rem','chaine',0,'','2019-10-02 11:41:58'),(6844,'MAIN_THEME',0,'eldy','chaine',0,'','2019-10-02 11:46:02'),(6845,'MAIN_MENU_STANDARD',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6846,'MAIN_MENUFRONT_STANDARD',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6847,'MAIN_MENU_SMARTPHONE',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6848,'MAIN_MENUFRONT_SMARTPHONE',0,'eldy_menu.php','chaine',0,'','2019-10-02 11:46:02'),(6851,'BECREATIVE_COL1',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6852,'BECREATIVE_COL2',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6853,'DOL_VERSION',1,'10.0.2','chaine',0,'Dolibarr version','2019-10-02 11:47:10'),(6859,'BECREATIVE_COL_BODY_BCKGRD',1,'#e6eaef','chaine',0,'','2019-10-02 11:47:10'),(6860,'BECREATIVE_COL_LOGO_BCKGRD',1,'#1e88e5','chaine',0,'','2019-10-02 11:47:10'),(6861,'BECREATIVE_COL_TXT_MENU',1,'#b8c6e5','chaine',0,'','2019-10-02 11:47:10'),(6862,'BECREATIVE_COL_HEADER_BCKGRD',1,'#26a69a','chaine',0,'','2019-10-02 11:47:10'),(6863,'BECREATIVE_CUSTOM_CSS',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6864,'BECREATIVE_CUSTOM_JS',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6865,'BECREATIVE_FIXED_MENU',1,'0','yesno',0,'','2019-10-02 11:47:10'),(6866,'BECREATIVE_D_HEADER_FONT_SIZE',1,'1.7rem','chaine',0,'','2019-10-02 11:47:10'),(6867,'BECREATIVE_S_HEADER_FONT_SIZE',1,'1.6rem','chaine',0,'','2019-10-02 11:47:10'),(6868,'BECREATIVE_D_VMENU_FONT_SIZE',1,'1.2rem','chaine',0,'','2019-10-02 11:47:10'),(6869,'BECREATIVE_S_VMENU_FONT_SIZE',1,'1.2rem','chaine',0,'','2019-10-02 11:47:10'),(6881,'MAIN_MENU_STANDARD',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6882,'MAIN_MENUFRONT_STANDARD',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6883,'MAIN_MENU_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6884,'MAIN_MENUFRONT_SMARTPHONE',1,'eldy_menu.php','chaine',0,'','2019-10-02 11:48:49'),(6885,'ACCOUNTING_ACCOUNT_CUSTOMER',1,'411','chaine',0,'','2019-10-04 08:15:44'),(6886,'ACCOUNTING_ACCOUNT_SUPPLIER',1,'401','chaine',0,'','2019-10-04 08:15:44'),(6887,'SALARIES_ACCOUNTING_ACCOUNT_PAYMENT',1,'421','chaine',0,'','2019-10-04 08:15:44'),(6888,'ACCOUNTING_PRODUCT_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6889,'ACCOUNTING_PRODUCT_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6890,'ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6891,'ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6892,'ACCOUNTING_SERVICE_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6893,'ACCOUNTING_SERVICE_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6894,'ACCOUNTING_VAT_BUY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6895,'ACCOUNTING_VAT_SOLD_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6896,'ACCOUNTING_VAT_PAY_ACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6897,'ACCOUNTING_ACCOUNT_SUSPENSE',1,'471','chaine',0,'','2019-10-04 08:15:44'),(6898,'ACCOUNTING_ACCOUNT_TRANSFER_CASH',1,'58','chaine',0,'','2019-10-04 08:15:44'),(6899,'DONATION_ACCOUNTINGACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6900,'ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6901,'LOAN_ACCOUNTING_ACCOUNT_CAPITAL',1,'164','chaine',0,'','2019-10-04 08:15:44'),(6902,'LOAN_ACCOUNTING_ACCOUNT_INTEREST',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6903,'LOAN_ACCOUNTING_ACCOUNT_INSURANCE',1,'-1','chaine',0,'','2019-10-04 08:15:44'),(6912,'TICKET_ENABLE_PUBLIC_INTERFACE',1,'1','chaine',0,'','2019-10-04 11:44:33'),(6934,'TICKET_NOTIFICATION_EMAIL_FROM',1,'fff','chaine',0,'','2019-10-04 12:03:51'),(6935,'TICKET_NOTIFICATION_EMAIL_TO',1,'ff','chaine',0,'','2019-10-04 12:03:51'),(6936,'TICKET_MESSAGE_MAIL_INTRO',1,'Hello,
\r\nA new response was sent on a ticket that you contact. Here is the message:\"\"','chaine',0,'','2019-10-04 12:03:51'),(6937,'TICKET_MESSAGE_MAIL_SIGNATURE',1,'

Sincerely,

\r\n\r\n

--\"\"

\r\n','chaine',0,'','2019-10-04 12:03:51'),(7027,'USER_PASSWORD_GENERATED',1,'Perso','chaine',0,'','2019-10-07 10:52:46'),(7028,'USER_PASSWORD_PATTERN',1,'12;1;0;1;0;1','chaine',0,'','2019-10-07 10:57:03'),(7034,'BOM_ADDON',1,'mod_bom_standard','chaine',0,'Name of numbering rules of BOM','2019-10-08 18:49:41'),(7035,'BOM_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/boms','chaine',0,NULL,'2019-10-08 18:49:41'),(7036,'MAIN_MODULE_GEOIPMAXMIND',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-10-08 18:51:54'),(7037,'MAIN_MODULE_DAV',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2019-10-08 18:54:07'),(7122,'BOM_ADDON_PDF',1,'generic_bom_odt','chaine',0,'','2019-11-28 14:00:58'),(7195,'MAIN_AGENDA_ACTIONAUTO_MO_VALIDATE',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7196,'MAIN_AGENDA_ACTIONAUTO_MO_PRODUCED',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7197,'MAIN_AGENDA_ACTIONAUTO_MO_DELETE',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7198,'MAIN_AGENDA_ACTIONAUTO_MO_CANCEL',1,'1','chaine',0,'','2019-11-29 08:44:37'),(7201,'TICKET_PUBLIC_INTERFACE_TOPIC',1,'MyBigCompany public interface for Ticket','chaine',0,'','2019-11-29 08:49:36'),(7202,'TICKET_PUBLIC_TEXT_HOME',1,'You can create a support ticket or view existing from its identifier tracking ticket.','chaine',0,'','2019-11-29 08:49:36'),(7203,'TICKET_PUBLIC_TEXT_HELP_MESSAGE',1,'Please accurately describe the problem. Provide the most information possible to allow us to correctly identify your request.','chaine',0,'','2019-11-29 08:49:36'),(7204,'TICKET_MESSAGE_MAIL_NEW',1,'TicketMessageMailNewText','chaine',0,'','2019-11-29 08:49:36'),(7220,'MRP_MO_ADDON',1,'mod_mo_standard','chaine',0,'Name of numbering rules of MO','2019-11-29 08:57:42'),(7221,'MRP_MO_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/mrps','chaine',0,NULL,'2019-11-29 08:57:42'),(7222,'MRP_MO_ADDON_PDF',1,'generic_mo_odt','chaine',0,'','2019-11-29 08:57:47'),(7254,'MAIN_INFO_OPENINGHOURS_MONDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7255,'MAIN_INFO_OPENINGHOURS_TUESDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7256,'MAIN_INFO_OPENINGHOURS_WEDNESDAY',1,'8-13','chaine',0,'','2019-12-19 11:14:21'),(7257,'MAIN_INFO_OPENINGHOURS_THURSDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7258,'MAIN_INFO_OPENINGHOURS_FRIDAY',1,'8-12 13-18','chaine',0,'','2019-12-19 11:14:21'),(7264,'MAIN_INFO_ACCOUNTANT_NAME',1,'Bob Bookkeeper','chaine',0,'','2019-12-19 11:14:54'),(7265,'MAIN_INFO_ACCOUNTANT_TOWN',1,'Berlin','chaine',0,'','2019-12-19 11:14:54'),(7266,'MAIN_INFO_ACCOUNTANT_STATE',1,'0','chaine',0,'','2019-12-19 11:14:54'),(7267,'MAIN_INFO_ACCOUNTANT_COUNTRY',1,'5','chaine',0,'','2019-12-19 11:14:54'),(7268,'MAIN_INFO_ACCOUNTANT_MAIL',1,'mybookkeeper@example.com','chaine',0,'','2019-12-19 11:14:54'),(7313,'MODULEBUILDER_ASCIIDOCTOR',1,'asciidoctor','chaine',0,'','2019-12-20 10:57:21'),(7314,'MODULEBUILDER_ASCIIDOCTORPDF',1,'asciidoctor-pdf','chaine',0,'','2019-12-20 10:57:21'),(7337,'EXTERNAL_RSS_TITLE_1',1,'Dolibarr.org News','chaine',0,'','2019-12-20 12:10:38'),(7338,'EXTERNAL_RSS_URLRSS_1',1,'https://www.dolibarr.org/rss','chaine',0,'','2019-12-20 12:10:38'),(7339,'EXPENSEREPORT_ADDON',1,'mod_expensereport_jade','chaine',0,'','2019-12-20 16:33:46'),(7378,'COMPANY_USE_SEARCH_TO_SELECT',1,'0','chaine',0,'','2019-12-21 15:54:22'),(7420,'CASHDESK_SERVICES',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7421,'TAKEPOS_ROOT_CATEGORY_ID',1,'31','chaine',0,'','2019-12-23 12:15:06'),(7422,'TAKEPOSCONNECTOR',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7423,'TAKEPOS_BAR_RESTAURANT',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7424,'TAKEPOS_TICKET_VAT_GROUPPED',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7425,'TAKEPOS_AUTO_PRINT_TICKETS',1,'0','int',0,'','2019-12-23 12:15:06'),(7426,'TAKEPOS_NUMPAD',1,'0','chaine',0,'','2019-12-23 12:15:06'),(7427,'TAKEPOS_NUM_TERMINALS',1,'1','chaine',0,'','2019-12-23 12:15:06'),(7428,'TAKEPOS_DIRECT_PAYMENT',1,'0','int',0,'','2019-12-23 12:15:06'),(7429,'TAKEPOS_CUSTOM_RECEIPT',1,'0','int',0,'','2019-12-23 12:15:06'),(7430,'TAKEPOS_EMAIL_TEMPLATE_INVOICE',1,'-1','chaine',0,'','2019-12-23 12:15:06'),(7452,'MEMBER_ENABLE_PUBLIC',1,'1','chaine',0,'','2020-01-01 10:31:46'),(7453,'MEMBER_NEWFORM_AMOUNT',1,'20','chaine',0,'','2020-01-01 10:31:46'),(7454,'MEMBER_NEWFORM_EDITAMOUNT',1,'0','chaine',0,'','2020-01-01 10:31:46'),(7455,'MEMBER_NEWFORM_PAYONLINE',1,'all','chaine',0,'','2020-01-01 10:31:46'),(7456,'MEMBER_NEWFORM_FORCETYPE',1,'1','chaine',0,'','2020-01-01 10:31:46'),(7470,'STRIPE_TEST_PUBLISHABLE_KEY',1,'pk_test_123456789','chaine',0,'','2020-01-01 11:43:44'),(7471,'STRIPE_TEST_SECRET_KEY',1,'sk_test_123456','chaine',0,'','2020-01-01 11:43:44'),(7472,'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS',1,'4','chaine',0,'','2020-01-01 11:43:44'),(7473,'STRIPE_USER_ACCOUNT_FOR_ACTIONS',1,'1','chaine',0,'','2020-01-01 11:43:44'),(7489,'CAPTURESERVER_SECURITY_KEY',1,'securitykey123','chaine',0,'','2020-01-01 12:00:49'),(8136,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_DELETE',1,'1','chaine',0,'','2020-01-02 19:56:28'),(8190,'ACCOUNTING_PRODUCT_MODE',1,'ACCOUNTANCY_SELL_EXPORT','chaine',0,'','2020-01-06 01:23:30'),(8191,'MAIN_ENABLE_DEFAULT_VALUES',1,'1','chaine',0,'','2020-01-06 16:09:52'),(8210,'CABINETMED_RHEUMATOLOGY_ON',1,'0','texte',0,'','2020-01-06 16:51:43'),(8213,'MAIN_SEARCHFORM_SOCIETE',1,'1','texte',0,'','2020-01-06 16:51:43'),(8214,'CABINETMED_BANK_PATIENT_REQUIRED',1,'0','texte',0,'','2020-01-06 16:51:43'),(8215,'DIAGNOSTIC_IS_NOT_MANDATORY',1,'1','texte',0,'','2020-01-06 16:51:43'),(8216,'USER_ADDON_PDF_ODT',1,'generic_user_odt','chaine',0,'','2020-01-07 13:45:19'),(8217,'USERGROUP_ADDON_PDF_ODT',1,'generic_usergroup_odt','chaine',0,'','2020-01-07 13:45:23'),(8230,'MAIN_MODULE_EMAILCOLLECTOR',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-12 20:13:55'),(8232,'MAIN_MODULE_SUPPLIERPROPOSAL',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-13 14:37:09'),(8233,'MAIN_MODULE_EXPEDITION',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-13 14:38:20'),(8252,'SYSTEMTOOLS_MYSQLDUMP',1,'/usr/bin/mysqldump','chaine',0,'','2020-01-15 15:42:41'),(8259,'ACCOUNTING_REEXPORT',1,'1','yesno',0,'','2020-01-17 13:42:56'),(8291,'PRODUIT_MULTIPRICES_LIMIT',1,'5','chaine',0,'','2020-01-17 14:21:46'),(8293,'PRODUIT_CUSTOMER_PRICES_BY_QTY',1,'0','chaine',0,'','2020-01-17 14:21:46'),(8303,'PRODUCT_PRICE_UNIQ',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8304,'PRODUIT_MULTIPRICES',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8305,'PRODUIT_CUSTOMER_PRICES',1,'1','chaine',0,'','2020-01-17 14:25:30'),(8306,'PRODUIT_SOUSPRODUITS',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8307,'PRODUIT_DESC_IN_FORM',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8308,'PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8309,'PRODUIT_USE_SEARCH_TO_SELECT',1,'1','chaine',0,'','2020-01-17 14:25:30'),(8310,'PRODUIT_FOURN_TEXTS',1,'0','chaine',0,'','2020-01-17 14:25:30'),(8313,'MAIN_MODULE_FCKEDITOR',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-01-18 17:13:27'),(8314,'FCKEDITOR_ENABLE_TICKET',1,'1','chaine',0,'','2020-01-18 19:39:54'),(8321,'FCKEDITOR_SKIN',1,'moono-lisa','chaine',0,'','2020-01-18 19:41:15'),(8322,'FCKEDITOR_TEST',1,'Test < aaa
\r\n
\r\n\"\"','chaine',0,'','2020-01-18 19:41:15'),(8486,'MAIN_MULTILANGS',1,'1','chaine',0,'','2020-01-21 09:40:00'),(8491,'MAIN_DISABLE_JAVASCRIPT',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8492,'MAIN_BUTTON_HIDE_UNAUTHORIZED',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8496,'MAIN_SHOW_LOGO',1,'1','chaine',0,'','2020-01-21 09:40:00'),(8498,'MAIN_HELPCENTER_DISABLELINK',0,'0','chaine',0,'','2020-01-21 09:40:00'),(8501,'MAIN_BUGTRACK_ENABLELINK',1,'0','chaine',0,'','2020-01-21 09:40:00'),(8554,'MAIN_INFO_SOCIETE_FACEBOOK_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8555,'MAIN_INFO_SOCIETE_TWITTER_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8556,'MAIN_INFO_SOCIETE_LINKEDIN_URL',1,'https://www.linkedin.com/company/9400559/admin/','chaine',0,'','2020-06-12 17:24:42'),(8557,'MAIN_INFO_SOCIETE_INSTAGRAM_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8558,'MAIN_INFO_SOCIETE_YOUTUBE_URL',1,'DolibarrERPCRM','chaine',0,'','2020-06-12 17:24:42'),(8559,'MAIN_INFO_SOCIETE_GITHUB_URL',1,'dolibarr','chaine',0,'','2020-06-12 17:24:42'),(8577,'PRODUCT_PRICE_BASE_TYPE',0,'HT','string',0,NULL,'2020-12-10 12:24:38'),(8612,'MAIN_UPLOAD_DOC',1,'50000','chaine',0,'','2020-12-10 12:26:31'),(8613,'MAIN_UMASK',1,'0664','chaine',0,'','2020-12-10 12:26:31'),(8614,'MAIN_ANTIVIRUS_PARAM',1,'--fdpass','chaine',0,'','2020-12-10 12:26:31'),(8619,'WEBSITE_EDITINLINE',1,'0','chaine',0,'','2020-12-10 12:27:05'),(8633,'MAIN_MODULE_RECEPTION',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:30:13'),(8634,'RECEPTION_ADDON_PDF',1,'squille','chaine',0,'Nom du gestionnaire de generation des bons receptions en PDF','2020-12-10 12:30:13'),(8635,'RECEPTION_ADDON_NUMBER',1,'mod_reception_beryl','chaine',0,'Name for numbering manager for receptions','2020-12-10 12:30:13'),(8636,'RECEPTION_ADDON_PDF_ODT_PATH',1,'DOL_DATA_ROOT/doctemplates/receptions','chaine',0,NULL,'2020-12-10 12:30:13'),(8637,'MAIN_SUBMODULE_RECEPTION',1,'1','chaine',0,'Enable receptions','2020-12-10 12:30:13'),(8638,'MAIN_MODULE_PAYMENTBYBANKTRANSFER',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:30:17'),(8640,'MAIN_MODULE_MARGIN_TABS_0',1,'product:+margin:Margins:margins:$user->rights->margins->liretous:/margin/tabs/productMargins.php?id=__ID__','chaine',0,NULL,'2020-12-10 12:30:20'),(8641,'MAIN_MODULE_MARGIN_TABS_1',1,'thirdparty:+margin:Margins:margins:empty($user->socid) && $user->rights->margins->liretous && ($object->client > 0):/margin/tabs/thirdpartyMargins.php?socid=__ID__','chaine',0,NULL,'2020-12-10 12:30:20'),(8644,'MAIN_MODULE_INCOTERM',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\"}','2020-12-10 12:31:36'),(8645,'INCOTERM_ACTIVATE',1,'','chaine',0,'Description de INCOTERM_ACTIVATE','2020-12-10 12:31:36'),(8715,'SYSLOG_LEVEL',0,'5','chaine',0,'','2021-04-15 10:34:05'),(8716,'MAIN_SECURITY_HASH_ALGO',1,'password_hash','chaine',1,'','2021-04-15 10:38:33'),(8717,'MAIN_INFO_SOCIETE_COUNTRY',1,'117:IN:India','chaine',0,'','2021-04-15 10:46:30'),(8718,'MAIN_INFO_SOCIETE_NOM',1,'MyBigCompany','chaine',0,'','2021-04-15 10:46:30'),(8719,'MAIN_INFO_SOCIETE_ADDRESS',1,'21 Jump street.','chaine',0,'','2021-04-15 10:46:30'),(8720,'MAIN_INFO_SOCIETE_TOWN',1,'MyTown','chaine',0,'','2021-04-15 10:46:30'),(8721,'MAIN_INFO_SOCIETE_ZIP',1,'75500','chaine',0,'','2021-04-15 10:46:30'),(8722,'MAIN_MONNAIE',1,'EUR','chaine',0,'','2021-04-15 10:46:30'),(8723,'MAIN_INFO_SOCIETE_TEL',1,'09123123','chaine',0,'','2021-04-15 10:46:30'),(8724,'MAIN_INFO_SOCIETE_FAX',1,'09123124','chaine',0,'','2021-04-15 10:46:30'),(8725,'MAIN_INFO_SOCIETE_MAIL',1,'myemail@mybigcompany.com','chaine',0,'','2021-04-15 10:46:30'),(8726,'MAIN_INFO_SOCIETE_WEB',1,'https://www.dolibarr.org','chaine',0,'','2021-04-15 10:46:30'),(8727,'MAIN_INFO_SOCIETE_NOTE',1,'This is note about my company','chaine',0,'','2021-04-15 10:46:30'),(8728,'MAIN_INFO_SOCIETE_LOGO_SQUARRED',1,'mybigcompany_squarred.png','chaine',0,'','2021-04-15 10:46:30'),(8729,'MAIN_INFO_SOCIETE_LOGO_SQUARRED_SMALL',1,'mybigcompany_squarred_small.png','chaine',0,'','2021-04-15 10:46:30'),(8730,'MAIN_INFO_SOCIETE_LOGO_SQUARRED_MINI',1,'mybigcompany_squarred_mini.png','chaine',0,'','2021-04-15 10:46:30'),(8731,'MAIN_INFO_SOCIETE_MANAGERS',1,'Zack Zeceo','chaine',0,'','2021-04-15 10:46:30'),(8732,'MAIN_INFO_GDPR',1,'Zack Zeceo','chaine',0,'','2021-04-15 10:46:30'),(8733,'MAIN_INFO_CAPITAL',1,'10000','chaine',0,'','2021-04-15 10:46:30'),(8734,'MAIN_INFO_SOCIETE_FORME_JURIDIQUE',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8735,'MAIN_INFO_SIREN',1,'123456','chaine',0,'','2021-04-15 10:46:30'),(8736,'MAIN_INFO_SIRET',1,'ABC-DEF','chaine',0,'','2021-04-15 10:46:30'),(8737,'MAIN_INFO_APE',1,'15E-45-8D','chaine',0,'','2021-04-15 10:46:30'),(8738,'MAIN_INFO_TVAINTRA',1,'FR12345678','chaine',0,'','2021-04-15 10:46:30'),(8739,'MAIN_INFO_SOCIETE_OBJECT',1,'A company demo to show how Dolibarr ERP CRM is wonderfull','chaine',0,'','2021-04-15 10:46:30'),(8740,'SOCIETE_FISCAL_MONTH_START',1,'4','chaine',0,'','2021-04-15 10:46:30'),(8741,'FACTURE_TVAOPTION',1,'1','chaine',0,'','2021-04-15 10:46:30'),(8742,'FACTURE_LOCAL_TAX1_OPTION',1,'localtax1on','chaine',0,'','2021-04-15 10:46:30'),(8743,'FACTURE_LOCAL_TAX2_OPTION',1,'localtax2on','chaine',0,'','2021-04-15 10:46:30'),(8744,'MAIN_INFO_VALUE_LOCALTAX1',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8745,'MAIN_INFO_LOCALTAX_CALC1',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8746,'MAIN_INFO_VALUE_LOCALTAX2',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8747,'MAIN_INFO_LOCALTAX_CALC2',1,'0','chaine',0,'','2021-04-15 10:46:30'),(8759,'MAIN_LOGIN_BACKGROUND',1,'background_dolibarr.jpg','chaine',0,'','2021-04-15 10:54:37'),(8760,'MAIN_LANG_DEFAULT',1,'auto','chaine',0,'','2021-04-15 10:56:30'),(8762,'MAIN_THEME',1,'eldy','chaine',0,'','2021-04-15 10:56:30'),(8763,'THEME_ELDY_USE_HOVER',1,'237,244,251','chaine',0,'','2021-04-15 10:56:30'),(8764,'MAIN_SIZE_LISTE_LIMIT',1,'25','chaine',0,'','2021-04-15 10:56:30'),(8765,'MAIN_SIZE_SHORTLIST_LIMIT',1,'3','chaine',0,'','2021-04-15 10:56:30'),(8766,'MAIN_START_WEEK',1,'1','chaine',0,'','2021-04-15 10:56:30'),(8767,'MAIN_DEFAULT_WORKING_DAYS',1,'1-5','chaine',0,'','2021-04-15 10:56:30'),(8768,'MAIN_DEFAULT_WORKING_HOURS',1,'9-18','chaine',0,'','2021-04-15 10:56:30'),(8769,'MAIN_FIRSTNAME_NAME_POSITION',1,'0','chaine',0,'','2021-04-15 10:56:30'),(8770,'MAIN_HOME',1,'__(NoteSomeFeaturesAreDisabled)__
\r\n__(SomeTranslationAreUncomplete)__','chaine',0,'','2021-04-15 10:56:30'),(8771,'MAIN_FEATURES_LEVEL',0,'0','chaine',1,'Level of features to show (0=stable only, 1=stable+experimental, 2=stable+experimental+development','2021-04-15 11:46:30'),(8877,'AGENDA_REMINDER_BROWSER',1,'1','chaine',0,'','2021-04-15 13:32:29'),(9008,'MAIN_MODULE_KNOWLEDGEMANAGEMENT',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 13:39:27'),(9009,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_TRIGGERS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9010,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_LOGIN',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9011,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9012,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MENUS',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9013,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_TPL',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9014,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_BARCODE',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9015,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MODELS',1,'1','chaine',0,NULL,'2022-02-07 13:39:27'),(9016,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_PRINTING',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9017,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_THEME',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9018,'MAIN_MODULE_KNOWLEDGEMANAGEMENT_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-02-07 13:39:27'),(9021,'WEBSITE_SUBCONTAINERSINLINE',1,'1','chaine',0,'','2022-02-07 13:57:11'),(9022,'PAYMENTBYBANKTRANSFER_ID_BANKACCOUNT',1,'1','chaine',0,'','2022-02-07 14:17:28'),(9023,'PAYMENTBYBANKTRANSFER_USER',1,'13','chaine',0,'','2022-02-07 14:17:28'),(9025,'MAIN_MODULE_BLOCKEDLOG',1,'1','string',0,'{\"authorid\":\"12\",\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2022-02-07 14:32:50'),(9026,'MAIN_IHM_PARAMS_REV',1,'16','chaine',0,'','2022-02-07 14:32:50'),(9141,'MAIN_AGENDA_ACTIONAUTO_COMPANY_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9142,'MAIN_AGENDA_ACTIONAUTO_COMPANY_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9143,'MAIN_AGENDA_ACTIONAUTO_COMPANY_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9144,'MAIN_AGENDA_ACTIONAUTO_COMPANY_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9145,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLOSE_SIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9146,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLOSE_REFUSED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9147,'MAIN_AGENDA_ACTIONAUTO_PROPAL_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9148,'MAIN_AGENDA_ACTIONAUTO_PROPAL_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9149,'MAIN_AGENDA_ACTIONAUTO_PROPAL_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9150,'MAIN_AGENDA_ACTIONAUTO_PROPAL_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9151,'MAIN_AGENDA_ACTIONAUTO_ORDER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9152,'MAIN_AGENDA_ACTIONAUTO_ORDER_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9153,'MAIN_AGENDA_ACTIONAUTO_ORDER_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9154,'MAIN_AGENDA_ACTIONAUTO_ORDER_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9155,'MAIN_AGENDA_ACTIONAUTO_ORDER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9156,'MAIN_AGENDA_ACTIONAUTO_ORDER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9157,'MAIN_AGENDA_ACTIONAUTO_BILL_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9158,'MAIN_AGENDA_ACTIONAUTO_BILL_PAYED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9159,'MAIN_AGENDA_ACTIONAUTO_BILL_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9160,'MAIN_AGENDA_ACTIONAUTO_BILL_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9161,'MAIN_AGENDA_ACTIONAUTO_BILL_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9162,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9163,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9164,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9165,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_CLOSE_SIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9166,'MAIN_AGENDA_ACTIONAUTO_PROPOSAL_SUPPLIER_CLOSE_REFUSED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9167,'MAIN_AGENDA_ACTIONAUTO_BILL_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9168,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9169,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9170,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9171,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_SUBMIT',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9172,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_RECEIVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9173,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_REFUSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9174,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9175,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_CLASSIFY_BILLED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9176,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9177,'MAIN_AGENDA_ACTIONAUTO_ORDER_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9178,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9179,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9180,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_PAYED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9181,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_CANCELED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9182,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9183,'MAIN_AGENDA_ACTIONAUTO_BILL_SUPPLIER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9184,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9185,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9186,'MAIN_AGENDA_ACTIONAUTO_CONTRACT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9187,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9188,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_REOPEN',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9189,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9190,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9191,'MAIN_AGENDA_ACTIONAUTO_SHIPPING_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9192,'MAIN_AGENDA_ACTIONAUTO_MEMBER_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9193,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9194,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9195,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9196,'MAIN_AGENDA_ACTIONAUTO_MEMBER_SUBSCRIPTION_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9197,'MAIN_AGENDA_ACTIONAUTO_MEMBER_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9198,'MAIN_AGENDA_ACTIONAUTO_MEMBER_RESILIATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9199,'MAIN_AGENDA_ACTIONAUTO_MEMBER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9200,'MAIN_AGENDA_ACTIONAUTO_MEMBER_EXCLUDE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9201,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9202,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9203,'MAIN_AGENDA_ACTIONAUTO_PRODUCT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9204,'MAIN_AGENDA_ACTIONAUTO_FICHINTER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9205,'MAIN_AGENDA_ACTIONAUTO_TASK_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9206,'MAIN_AGENDA_ACTIONAUTO_TASK_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9207,'MAIN_AGENDA_ACTIONAUTO_TASK_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9208,'MAIN_AGENDA_ACTIONAUTO_CONTACT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9209,'MAIN_AGENDA_ACTIONAUTO_CONTACT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9210,'MAIN_AGENDA_ACTIONAUTO_CONTACT_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9211,'MAIN_AGENDA_ACTIONAUTO_CONTACT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9212,'MAIN_AGENDA_ACTIONAUTO_PROJECT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9213,'MAIN_AGENDA_ACTIONAUTO_PROJECT_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9214,'MAIN_AGENDA_ACTIONAUTO_PROJECT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9215,'MAIN_AGENDA_ACTIONAUTO_TICKET_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9216,'MAIN_AGENDA_ACTIONAUTO_TICKET_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9217,'MAIN_AGENDA_ACTIONAUTO_TICKET_ASSIGNED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9218,'MAIN_AGENDA_ACTIONAUTO_TICKET_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9219,'MAIN_AGENDA_ACTIONAUTO_TICKET_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9220,'MAIN_AGENDA_ACTIONAUTO_TICKET_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9221,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9222,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9223,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9224,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9225,'MAIN_AGENDA_ACTIONAUTO_EXPENSE_REPORT_PAID',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9226,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9227,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9228,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_APPROVE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9229,'MAIN_AGENDA_ACTIONAUTO_USER_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9230,'MAIN_AGENDA_ACTIONAUTO_USER_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9231,'MAIN_AGENDA_ACTIONAUTO_USER_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9232,'MAIN_AGENDA_ACTIONAUTO_USER_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9233,'MAIN_AGENDA_ACTIONAUTO_USER_NEW_PASSWORD',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9234,'MAIN_AGENDA_ACTIONAUTO_USER_ENABLEDISABLE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9235,'MAIN_AGENDA_ACTIONAUTO_BOM_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9236,'MAIN_AGENDA_ACTIONAUTO_BOM_UNVALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9237,'MAIN_AGENDA_ACTIONAUTO_BOM_CLOSE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9238,'MAIN_AGENDA_ACTIONAUTO_BOM_REOPEN',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9239,'MAIN_AGENDA_ACTIONAUTO_BOM_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9240,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_VALIDATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9241,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_PRODUCED',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9242,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9243,'MAIN_AGENDA_ACTIONAUTO_MRP_MO_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9244,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9245,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_CANCEL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9246,'MAIN_AGENDA_ACTIONAUTO_HOLIDAY_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9247,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9248,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9249,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9250,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTJOBPOSITION_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9251,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_CREATE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9252,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_MODIFY',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9253,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_SENTBYMAIL',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9254,'MAIN_AGENDA_ACTIONAUTO_RECRUITMENTCANDIDATURE_DELETE',1,'1','chaine',0,'','2022-02-07 14:37:16'),(9293,'RECRUITMENT_RECRUITMENTJOBPOSITION_ADDON',1,'mod_recruitmentjobposition_standard','chaine',0,'Name of manager to generate recruitment job position ref number','2022-07-04 01:12:19'),(9294,'RECRUITMENT_RECRUITMENTCANDIDATURE_ADDON',1,'mod_recruitmentcandidature_standard','chaine',0,'Name of manager to generate recruitment candidature ref number','2022-07-04 01:12:19'),(9383,'MAIN_VERSION_LAST_UPGRADE',0,'16.0.0','chaine',0,'Dolibarr version for last upgrade','2022-07-05 08:03:57'),(9387,'MAIN_MODULE_ACCOUNTING',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9388,'MAIN_MODULE_AGENDA',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9389,'MAIN_MODULE_BOM',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9390,'MAIN_MODULE_BANQUE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9391,'MAIN_MODULE_BARCODE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9392,'MAIN_MODULE_CRON',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9393,'MAIN_MODULE_COMMANDE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9394,'MAIN_MODULE_DON',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9395,'MAIN_MODULE_ECM',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9396,'MAIN_MODULE_EXPENSEREPORT',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9397,'MAIN_MODULE_FACTURE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9398,'MAIN_MODULE_FOURNISSEUR',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9399,'MAIN_MODULE_HOLIDAY',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9400,'MAIN_MODULE_MARGIN',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9403,'MAIN_MODULE_MRP',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9404,'MAIN_MODULE_MRP_TRIGGERS',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9405,'MAIN_MODULE_MRP_LOGIN',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9406,'MAIN_MODULE_MRP_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9407,'MAIN_MODULE_MRP_MENUS',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9408,'MAIN_MODULE_MRP_TPL',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9409,'MAIN_MODULE_MRP_BARCODE',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9410,'MAIN_MODULE_MRP_MODELS',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9411,'MAIN_MODULE_MRP_THEME',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9412,'MAIN_MODULE_MRP_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-07-05 08:07:11'),(9413,'MAIN_MODULE_OPENSURVEY',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:11'),(9414,'MAIN_MODULE_PRINTING',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9415,'MAIN_MODULE_RECRUITMENT',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9416,'MAIN_MODULE_RECRUITMENT_TRIGGERS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9417,'MAIN_MODULE_RECRUITMENT_LOGIN',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9418,'MAIN_MODULE_RECRUITMENT_SUBSTITUTIONS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9419,'MAIN_MODULE_RECRUITMENT_MENUS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9420,'MAIN_MODULE_RECRUITMENT_TPL',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9421,'MAIN_MODULE_RECRUITMENT_BARCODE',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9422,'MAIN_MODULE_RECRUITMENT_MODELS',1,'1','chaine',0,NULL,'2022-07-05 08:07:12'),(9423,'MAIN_MODULE_RECRUITMENT_THEME',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9424,'MAIN_MODULE_RECRUITMENT_MODULEFOREXTERNAL',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9425,'MAIN_MODULE_RESOURCE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9426,'MAIN_MODULE_SALARIES',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9427,'MAIN_MODULE_SERVICE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9428,'MAIN_MODULE_SYSLOG',0,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9429,'MAIN_MODULE_SOCIETE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9430,'MAIN_MODULE_STRIPE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9431,'MAIN_MODULE_TICKET',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9432,'MAIN_MODULE_TICKET_TABS_0',1,'thirdparty:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?socid=__ID__','chaine',0,NULL,'2022-07-05 08:07:12'),(9433,'MAIN_MODULE_TICKET_TABS_1',1,'project:+ticket:Tickets:@ticket:$user->rights->ticket->read:/ticket/list.php?projectid=__ID__','chaine',0,NULL,'2022-07-05 08:07:12'),(9434,'MAIN_MODULE_TICKET_TRIGGERS',1,'1','chaine',0,NULL,'2022-07-05 08:07:12'),(9435,'TAKEPOS_PRINT_METHOD',1,'browser','chaine',0,'','2022-07-05 08:07:12'),(9436,'MAIN_MODULE_TAKEPOS',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9437,'MAIN_MODULE_TAKEPOS_TRIGGERS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9438,'MAIN_MODULE_TAKEPOS_LOGIN',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9439,'MAIN_MODULE_TAKEPOS_SUBSTITUTIONS',1,'1','chaine',0,NULL,'2022-07-05 08:07:12'),(9440,'MAIN_MODULE_TAKEPOS_MENUS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9441,'MAIN_MODULE_TAKEPOS_THEME',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9442,'MAIN_MODULE_TAKEPOS_TPL',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9443,'MAIN_MODULE_TAKEPOS_BARCODE',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9444,'MAIN_MODULE_TAKEPOS_MODELS',1,'0','chaine',0,NULL,'2022-07-05 08:07:12'),(9445,'MAIN_MODULE_USER',0,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9446,'MAIN_MODULE_VARIANTS',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:12'),(9447,'MAIN_MODULE_WEBSITE',1,'1','string',0,'{\"authorid\":\"18\",\"ip\":\"192.168.0.254\",\"lastactivationversion\":\"dolibarr\"}','2022-07-05 08:07:13'),(9449,'MAIN_FIRST_PING_OK_DATE',1,'20220705080715','chaine',0,'','2022-07-05 08:07:15'),(9450,'MAIN_FIRST_PING_OK_ID',1,'0dd1a04e9becaaafb6fbb7a86e945a55','chaine',0,'','2022-07-05 08:07:15'); /*!40000 ALTER TABLE `llx_const` ENABLE KEYS */; UNLOCK TABLES; @@ -4734,9 +4998,9 @@ DROP TABLE IF EXISTS `llx_contrat`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_contrat` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_supplier` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_supplier` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, @@ -4752,21 +5016,21 @@ CREATE TABLE `llx_contrat` ( `fk_user_author` int(11) NOT NULL DEFAULT 0, `fk_user_mise_en_service` int(11) DEFAULT NULL, `fk_user_cloture` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_customer` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_customer` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_contrat_ref` (`ref`,`entity`), KEY `idx_contrat_fk_soc` (`fk_soc`), KEY `idx_contrat_fk_user_author` (`fk_user_author`), CONSTRAINT `fk_contrat_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_contrat_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4790,10 +5054,10 @@ CREATE TABLE `llx_contrat_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_contrat_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4818,8 +5082,8 @@ CREATE TABLE `llx_contratdet` ( `fk_contrat` int(11) NOT NULL, `fk_product` int(11) DEFAULT NULL, `statut` smallint(6) DEFAULT 0, - `label` text COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_remise_except` int(11) DEFAULT NULL, `date_commande` datetime DEFAULT NULL, `date_ouverture_prevue` datetime DEFAULT NULL, @@ -4827,11 +5091,11 @@ CREATE TABLE `llx_contratdet` ( `date_fin_validite` datetime DEFAULT NULL, `date_cloture` datetime DEFAULT NULL, `tva_tx` double(6,3) DEFAULT 0.000, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double NOT NULL, `remise_percent` double DEFAULT 0, `subprice` double(24,8) DEFAULT 0.00000000, @@ -4844,15 +5108,16 @@ CREATE TABLE `llx_contratdet` ( `total_ttc` double(24,8) DEFAULT 0.00000000, `product_type` int(11) DEFAULT 1, `info_bits` int(11) DEFAULT 0, + `rang` int(11) DEFAULT 0, `fk_product_fournisseur_price` int(11) DEFAULT NULL, `buy_price_ht` double(24,8) DEFAULT 0.00000000, `fk_user_author` int(11) NOT NULL DEFAULT 0, `fk_user_ouverture` int(11) DEFAULT NULL, `fk_user_cloture` int(11) DEFAULT NULL, - `commentaire` text COLLATE utf8_unicode_ci DEFAULT NULL, + `commentaire` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_unit` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -4867,7 +5132,7 @@ CREATE TABLE `llx_contratdet` ( CONSTRAINT `fk_contratdet_fk_contrat` FOREIGN KEY (`fk_contrat`) REFERENCES `llx_contrat` (`rowid`), CONSTRAINT `fk_contratdet_fk_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`), CONSTRAINT `fk_contratdet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4876,7 +5141,7 @@ CREATE TABLE `llx_contratdet` ( LOCK TABLES `llx_contratdet` WRITE; /*!40000 ALTER TABLE `llx_contratdet` DISABLE KEYS */; -INSERT INTO `llx_contratdet` VALUES (2,'2012-07-10 16:14:14',2,NULL,0,'','Abonnement annuel assurance',NULL,NULL,'2012-07-10 00:00:00',NULL,'2013-07-10 00:00:00',NULL,1.000,'',0.000,'',0.000,'',1,0,10.00000000,10,0,10.00000000,0.10000000,0.00000000,0.00000000,10.10000000,1,0,NULL,0.00000000,0,NULL,NULL,NULL,NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(3,'2015-03-05 10:20:58',2,3,5,'','gdfg',NULL,NULL,'2012-07-10 00:00:00','2012-07-10 12:00:00','2013-07-09 00:00:00','2015-03-06 12:00:00',4.000,'',0.000,'',0.000,'',1,0,0.00000000,0,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,1,0,0,0.00000000,0,1,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(4,'2014-12-08 13:11:17',2,3,0,'','',NULL,NULL,'2012-07-10 00:00:00',NULL,NULL,NULL,0.000,'',0.000,'',0.000,'',1,10,40.00000000,40,NULL,36.00000000,0.00000000,0.00000000,0.00000000,36.00000000,1,0,NULL,0.00000000,0,NULL,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(5,'2015-03-06 09:05:40',3,NULL,4,'','gfdg',NULL,NULL,NULL,'2015-03-06 12:00:00','2015-03-07 12:00:00',NULL,0.000,'',0.000,'',0.000,'',1,0,10.00000000,10,NULL,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,1,0,0,0.00000000,0,1,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(15,'2020-01-13 14:56:58',1,NULL,0,'','aaa',NULL,NULL,NULL,NULL,NULL,NULL,0.000,'CGST+SGST',9.000,'0',9.000,'0',1,0,10.00000000,10,NULL,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,1,0,NULL,0.00000000,0,NULL,12,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(16,'2020-01-13 14:56:53',1,NULL,0,'','aaa',NULL,NULL,NULL,NULL,NULL,NULL,18.000,'IGST',0.000,'1',0.000,'1',1,0,10.00000000,10,NULL,10.00000000,1.80000000,0.00000000,0.00000000,11.80000000,1,0,NULL,0.00000000,0,NULL,12,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000); +INSERT INTO `llx_contratdet` VALUES (2,'2012-07-10 16:14:14',2,NULL,0,'','Abonnement annuel assurance',NULL,NULL,'2012-07-10 00:00:00',NULL,'2013-07-10 00:00:00',NULL,1.000,'',0.000,'',0.000,'',1,0,10.00000000,10,0,10.00000000,0.10000000,0.00000000,0.00000000,10.10000000,1,0,0,NULL,0.00000000,0,NULL,NULL,NULL,NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(3,'2015-03-05 10:20:58',2,3,5,'','gdfg',NULL,NULL,'2012-07-10 00:00:00','2012-07-10 12:00:00','2013-07-09 00:00:00','2015-03-06 12:00:00',4.000,'',0.000,'',0.000,'',1,0,0.00000000,0,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,1,0,0,0,0.00000000,0,1,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(4,'2014-12-08 13:11:17',2,3,0,'','',NULL,NULL,'2012-07-10 00:00:00',NULL,NULL,NULL,0.000,'',0.000,'',0.000,'',1,10,40.00000000,40,NULL,36.00000000,0.00000000,0.00000000,0.00000000,36.00000000,1,0,0,NULL,0.00000000,0,NULL,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(5,'2015-03-06 09:05:40',3,NULL,4,'','gfdg',NULL,NULL,NULL,'2015-03-06 12:00:00','2015-03-07 12:00:00',NULL,0.000,'',0.000,'',0.000,'',1,0,10.00000000,10,NULL,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,1,0,0,0,0.00000000,0,1,1,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(15,'2020-01-13 14:56:58',1,NULL,0,'','aaa',NULL,NULL,NULL,NULL,NULL,NULL,0.000,'CGST+SGST',9.000,'0',9.000,'0',1,0,10.00000000,10,NULL,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,1,0,0,NULL,0.00000000,0,NULL,12,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000),(16,'2020-01-13 14:56:53',1,NULL,0,'','aaa',NULL,NULL,NULL,NULL,NULL,NULL,18.000,'IGST',0.000,'1',0.000,'1',1,0,10.00000000,10,NULL,10.00000000,1.80000000,0.00000000,0.00000000,11.80000000,1,0,0,NULL,0.00000000,0,NULL,12,'',NULL,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000); /*!40000 ALTER TABLE `llx_contratdet` ENABLE KEYS */; UNLOCK TABLES; @@ -4891,10 +5156,10 @@ CREATE TABLE `llx_contratdet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_contratdet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4920,12 +5185,12 @@ CREATE TABLE `llx_contratdet_log` ( `date` datetime NOT NULL, `statut` smallint(6) NOT NULL, `fk_user_author` int(11) NOT NULL, - `commentaire` text COLLATE utf8_unicode_ci DEFAULT NULL, + `commentaire` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_contratdet_log_fk_contratdet` (`fk_contratdet`), KEY `idx_contratdet_log_date` (`date`), CONSTRAINT `fk_contratdet_log_fk_contratdet` FOREIGN KEY (`fk_contratdet`) REFERENCES `llx_contratdet` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4948,39 +5213,41 @@ CREATE TABLE `llx_cronjob` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, - `jobtype` varchar(10) COLLATE utf8_unicode_ci NOT NULL, - `label` text COLLATE utf8_unicode_ci NOT NULL, - `command` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `classesname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `objectname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `methodename` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `params` text COLLATE utf8_unicode_ci DEFAULT NULL, - `md5params` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `module_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `jobtype` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `command` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `classesname` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `objectname` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `methodename` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `params` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `md5params` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module_name` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `priority` int(11) DEFAULT 0, `datelastrun` datetime DEFAULT NULL, `datenextrun` datetime DEFAULT NULL, `datestart` datetime DEFAULT NULL, `dateend` datetime DEFAULT NULL, `datelastresult` datetime DEFAULT NULL, - `lastresult` text COLLATE utf8_unicode_ci DEFAULT NULL, - `lastoutput` text COLLATE utf8_unicode_ci DEFAULT NULL, - `unitfrequency` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '3600', + `lastresult` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastoutput` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `unitfrequency` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '3600', `frequency` int(11) NOT NULL DEFAULT 0, `nbrun` int(11) DEFAULT NULL, `status` int(11) NOT NULL DEFAULT 1, `fk_user_author` int(11) DEFAULT NULL, `fk_user_mod` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `libname` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `libname` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT 0, `maxrun` int(11) NOT NULL DEFAULT 0, `autodelete` int(11) DEFAULT 0, `fk_mailing` int(11) DEFAULT NULL, - `test` varchar(255) COLLATE utf8_unicode_ci DEFAULT '1', + `test` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '1', `processing` int(11) NOT NULL DEFAULT 0, - PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `email_alert` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_cronjob` (`label`,`entity`) +) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -4989,7 +5256,7 @@ CREATE TABLE `llx_cronjob` ( LOCK TABLES `llx_cronjob` WRITE; /*!40000 ALTER TABLE `llx_cronjob` DISABLE KEYS */; -INSERT INTO `llx_cronjob` VALUES (1,'2015-03-23 18:18:39','2015-03-23 19:18:39','command','aaa','aaaa','','','','','','',0,NULL,NULL,'2015-03-23 19:18:00',NULL,NULL,NULL,NULL,'3600',3600,0,0,1,1,'',NULL,0,0,0,NULL,'1',0),(40,'2018-11-23 11:58:15','2018-11-23 12:58:15','method','SendEmailsReminders',NULL,'comm/action/class/actioncomm.class.php','ActionComm','sendEmailsReminder',NULL,NULL,'agenda',10,NULL,NULL,'2018-11-23 12:58:15',NULL,NULL,NULL,NULL,'60',10,NULL,1,NULL,NULL,'SendEMailsReminder',NULL,1,0,0,NULL,'$conf->agenda->enabled',0),(41,'2018-11-23 11:58:16','2018-11-23 12:58:16','method','PurgeDeleteTemporaryFilesShort',NULL,'core/class/utils.class.php','Utils','purgeFiles',NULL,NULL,'cron',50,NULL,NULL,'2018-11-23 12:58:16',NULL,NULL,NULL,NULL,'604800',2,NULL,1,NULL,NULL,'PurgeDeleteTemporaryFiles',NULL,0,0,0,NULL,'1',0),(42,'2020-01-15 15:43:12','2018-11-23 12:58:16','method','MakeLocalDatabaseDumpShort',NULL,'core/class/utils.class.php','Utils','dumpDatabase','none,auto,1,auto,10',NULL,'cron',90,'2020-01-15 19:43:12','2020-01-17 12:58:16','2018-11-23 12:58:16',NULL,'2020-01-15 19:43:12','-1','Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir.\nFailed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir.','604800',1,2,1,NULL,12,'MakeLocalDatabaseDump',NULL,0,0,0,NULL,'1',0),(43,'2018-11-23 11:58:17','2018-11-23 12:58:17','method','RecurringInvoices',NULL,'compta/facture/class/facture-rec.class.php','FactureRec','createRecurringInvoices',NULL,NULL,'facture',50,NULL,NULL,'2018-11-23 23:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,1,NULL,NULL,'Generate recurring invoices',NULL,1,0,0,NULL,'$conf->facture->enabled',0),(45,'2020-01-01 12:00:34','2020-01-01 16:00:34','method','MyJob label',NULL,'/captureserver/class/myobject.class.php','MyObject','doScheduledJob',NULL,NULL,'captureserver',0,NULL,NULL,'2020-01-01 16:00:34',NULL,NULL,NULL,NULL,'3600',2,NULL,0,NULL,NULL,'Comment',NULL,1,0,0,NULL,'$conf->captureserver->enabled',0),(46,'2020-01-12 20:13:55','2020-01-13 00:13:55','method','Email collector',NULL,'/emailcollector/class/emailcollector.class.php','EmailCollector','doCollect',NULL,NULL,'emailcollector',50,NULL,NULL,'2020-01-13 00:13:55',NULL,NULL,NULL,NULL,'60',5,NULL,1,NULL,NULL,'Comment',NULL,1,0,0,NULL,'$conf->emailcollector->enabled',0),(47,'2021-04-15 10:34:00','2021-04-15 07:34:00','method','CompressSyslogs',NULL,'core/class/utils.class.php','Utils','compressSyslogs',NULL,NULL,'syslog',50,NULL,NULL,'2021-04-15 07:34:00',NULL,NULL,NULL,NULL,'86400',1,NULL,0,NULL,NULL,'Compress and archive log files. The number of versions to keep is defined into the setup of module. Warning: Main application cron script must be run with same account than your web server to avoid to get log files with different owner than required by web server. Another solution is to set web server Operating System group as the group of directory documents and set GROUP permission \"rws\" on this directory so log files will always have the group and permissions of the web server Operating System group.',NULL,1,0,0,NULL,'1',0),(48,'2021-07-11 17:49:46','2021-07-11 19:49:46','method','SendEmailsRemindersOnInvoiceDueDate',NULL,'compta/facture/class/facture.class.php','Facture','sendEmailsRemindersOnInvoiceDueDate','10,all,EmailTemplateCode',NULL,'facture',50,NULL,NULL,'2021-07-11 23:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,0,NULL,NULL,'Send an emails when the unpaid invoices reach a due date + n days = today. First param is the offset n of days, second parameter is \"all\" or a payment mode code, last paramater is the code of email template to use (an email template with EmailTemplateCode must exists. the version in the language of the thirdparty will be used in priority).',NULL,1,0,0,NULL,'$conf->facture->enabled',0),(49,'2022-02-07 13:38:17','2022-02-07 13:38:17','method','HolidayBalanceMonthlyUpdate',NULL,'holiday/class/holiday.class.php','Holiday','updateBalance',NULL,NULL,'holiday',50,NULL,NULL,'2022-02-07 04:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,1,NULL,NULL,'Update holiday balance every month',NULL,1,0,0,NULL,'$conf->holiday->enabled',0); +INSERT INTO `llx_cronjob` VALUES (1,'2015-03-23 18:18:39','2015-03-23 19:18:39','command','aaa','aaaa','','','','','','',0,NULL,NULL,'2015-03-23 19:18:00',NULL,NULL,NULL,NULL,'3600',3600,0,0,1,1,'',NULL,0,0,0,NULL,'1',0,NULL),(40,'2018-11-23 11:58:15','2018-11-23 12:58:15','method','SendEmailsReminders',NULL,'comm/action/class/actioncomm.class.php','ActionComm','sendEmailsReminder',NULL,NULL,'agenda',10,NULL,NULL,'2018-11-23 12:58:15',NULL,NULL,NULL,NULL,'60',10,NULL,1,NULL,NULL,'SendEMailsReminder',NULL,1,0,0,NULL,'$conf->agenda->enabled',0,NULL),(41,'2018-11-23 11:58:16','2018-11-23 12:58:16','method','PurgeDeleteTemporaryFilesShort',NULL,'core/class/utils.class.php','Utils','purgeFiles',NULL,NULL,'cron',50,NULL,NULL,'2018-11-23 12:58:16',NULL,NULL,NULL,NULL,'604800',2,NULL,1,NULL,NULL,'PurgeDeleteTemporaryFiles',NULL,0,0,0,NULL,'1',0,NULL),(42,'2020-01-15 15:43:12','2018-11-23 12:58:16','method','MakeLocalDatabaseDumpShort',NULL,'core/class/utils.class.php','Utils','dumpDatabase','none,auto,1,auto,10',NULL,'cron',90,'2020-01-15 19:43:12','2020-01-17 12:58:16','2018-11-23 12:58:16',NULL,'2020-01-15 19:43:12','-1','Failed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir.\nFailed to run external command. Check it is available and runnable by your PHP server. If PHP Safe Mode is enabled, check that command is inside a directory defined by parameter safe_mode_exec_dir.','604800',1,2,1,NULL,12,'MakeLocalDatabaseDump',NULL,0,0,0,NULL,'1',0,NULL),(43,'2022-07-04 01:11:54','2018-11-23 12:58:17','method','RecurringInvoicesJob',NULL,'compta/facture/class/facture-rec.class.php','FactureRec','createRecurringInvoices',NULL,NULL,'facture',50,NULL,NULL,'2018-11-23 23:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,1,NULL,NULL,'Generate recurring invoices',NULL,1,0,0,NULL,'$conf->facture->enabled',0,NULL),(45,'2020-01-01 12:00:34','2020-01-01 16:00:34','method','MyJob label',NULL,'/captureserver/class/myobject.class.php','MyObject','doScheduledJob',NULL,NULL,'captureserver',0,NULL,NULL,'2020-01-01 16:00:34',NULL,NULL,NULL,NULL,'3600',2,NULL,0,NULL,NULL,'Comment',NULL,1,0,0,NULL,'$conf->captureserver->enabled',0,NULL),(46,'2020-01-12 20:13:55','2020-01-13 00:13:55','method','Email collector',NULL,'/emailcollector/class/emailcollector.class.php','EmailCollector','doCollect',NULL,NULL,'emailcollector',50,NULL,NULL,'2020-01-13 00:13:55',NULL,NULL,NULL,NULL,'60',5,NULL,1,NULL,NULL,'Comment',NULL,1,0,0,NULL,'$conf->emailcollector->enabled',0,NULL),(47,'2021-04-15 10:34:00','2021-04-15 07:34:00','method','CompressSyslogs',NULL,'core/class/utils.class.php','Utils','compressSyslogs',NULL,NULL,'syslog',50,NULL,NULL,'2021-04-15 07:34:00',NULL,NULL,NULL,NULL,'86400',1,NULL,0,NULL,NULL,'Compress and archive log files. The number of versions to keep is defined into the setup of module. Warning: Main application cron script must be run with same account than your web server to avoid to get log files with different owner than required by web server. Another solution is to set web server Operating System group as the group of directory documents and set GROUP permission \"rws\" on this directory so log files will always have the group and permissions of the web server Operating System group.',NULL,1,0,0,NULL,'1',0,NULL),(48,'2021-07-11 17:49:46','2021-07-11 19:49:46','method','SendEmailsRemindersOnInvoiceDueDate',NULL,'compta/facture/class/facture.class.php','Facture','sendEmailsRemindersOnInvoiceDueDate','10,all,EmailTemplateCode',NULL,'facture',50,NULL,NULL,'2021-07-11 23:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,0,NULL,NULL,'Send an emails when the unpaid invoices reach a due date + n days = today. First param is the offset n of days, second parameter is \"all\" or a payment mode code, last paramater is the code of email template to use (an email template with EmailTemplateCode must exists. the version in the language of the thirdparty will be used in priority).',NULL,1,0,0,NULL,'$conf->facture->enabled',0,NULL),(49,'2022-02-07 13:38:17','2022-02-07 13:38:17','method','HolidayBalanceMonthlyUpdate',NULL,'holiday/class/holiday.class.php','Holiday','updateBalance',NULL,NULL,'holiday',50,NULL,NULL,'2022-02-07 04:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,1,NULL,NULL,'Update holiday balance every month',NULL,1,0,0,NULL,'$conf->holiday->enabled',0,NULL),(50,'2022-07-04 01:12:18','2022-07-04 01:12:18','method','MakeSendLocalDatabaseDumpShort',NULL,'core/class/utils.class.php','Utils','sendDumpDatabase',',,,,,sql',NULL,'cron',91,NULL,NULL,'2022-07-04 01:12:18',NULL,NULL,NULL,NULL,'604800',1,NULL,0,NULL,NULL,'MakeSendLocalDatabaseDump',NULL,0,0,0,NULL,'!empty($conf->global->MAIN_ALLOW_BACKUP_BY_EMAIL) && in_array($conf->db->type, array(\'mysql\', \'mysqli\'))',0,NULL),(51,'2022-07-04 01:12:18','2022-07-04 01:12:18','method','RecurringSupplierInvoicesJob',NULL,'fourn/class/fournisseur.facture-rec.class.php','FactureFournisseurRec','createRecurringInvoices',NULL,NULL,'fournisseur',51,NULL,NULL,'2022-07-04 23:00:00',NULL,NULL,NULL,NULL,'86400',1,NULL,1,NULL,NULL,'Generate recurring supplier invoices',NULL,1,0,0,NULL,'',0,NULL); /*!40000 ALTER TABLE `llx_cronjob` ENABLE KEYS */; UNLOCK TABLES; @@ -5003,14 +5270,14 @@ DROP TABLE IF EXISTS `llx_default_values`; CREATE TABLE `llx_default_values` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `user_id` int(11) NOT NULL DEFAULT 0, - `page` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `param` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `page` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `param` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_default_values` (`type`,`entity`,`user_id`,`page`,`param`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5033,12 +5300,12 @@ DROP TABLE IF EXISTS `llx_delivery`; CREATE TABLE `llx_delivery` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_customer` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_customer` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) NOT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `date_valid` datetime DEFAULT NULL, @@ -5047,14 +5314,14 @@ CREATE TABLE `llx_delivery` ( `fk_address` int(11) DEFAULT NULL, `fk_statut` smallint(6) DEFAULT 0, `total_ht` double(24,8) DEFAULT 0.00000000, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_delivery_uk_ref` (`ref`,`entity`), KEY `idx_delivery_fk_soc` (`fk_soc`), @@ -5063,7 +5330,7 @@ CREATE TABLE `llx_delivery` ( CONSTRAINT `fk_delivery_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_delivery_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_delivery_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5086,10 +5353,10 @@ CREATE TABLE `llx_delivery_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_delivery_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5113,7 +5380,7 @@ CREATE TABLE `llx_deliverydet` ( `fk_delivery` int(11) DEFAULT NULL, `fk_origin_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double DEFAULT NULL, `subprice` double(24,8) DEFAULT 0.00000000, `total_ht` double(24,8) DEFAULT 0.00000000, @@ -5122,7 +5389,7 @@ CREATE TABLE `llx_deliverydet` ( KEY `idx_deliverydet_fk_expedition` (`fk_delivery`), KEY `idx_deliverydet_fk_delivery` (`fk_delivery`), CONSTRAINT `fk_deliverydet_fk_delivery` FOREIGN KEY (`fk_delivery`) REFERENCES `llx_delivery` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5145,10 +5412,10 @@ CREATE TABLE `llx_deliverydet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_deliverydet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5169,7 +5436,7 @@ DROP TABLE IF EXISTS `llx_deplacement`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_deplacement` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), @@ -5177,16 +5444,16 @@ CREATE TABLE `llx_deplacement` ( `fk_user` int(11) NOT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `type` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `type` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_statut` int(11) NOT NULL DEFAULT 1, `km` double DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, `fk_projet` int(11) DEFAULT 0, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5208,14 +5475,14 @@ DROP TABLE IF EXISTS `llx_document_model`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_document_model` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `nom` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `nom` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `libelle` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_document_model` (`nom`,`type`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=418 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=442 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5224,7 +5491,7 @@ CREATE TABLE `llx_document_model` ( LOCK TABLES `llx_document_model` WRITE; /*!40000 ALTER TABLE `llx_document_model` DISABLE KEYS */; -INSERT INTO `llx_document_model` VALUES (9,'merou',1,'shipping',NULL,NULL),(181,'generic_invoice_odt',1,'invoice','ODT templates','FACTURE_ADDON_PDF_ODT_PATH'),(193,'canelle2',1,'invoice_supplier','canelle2',NULL),(195,'canelle',1,'invoice_supplier','canelle',NULL),(198,'azur',2,'propal',NULL,NULL),(199,'html_cerfafr',2,'donation',NULL,NULL),(200,'crabe',2,'invoice',NULL,NULL),(201,'generic_odt',1,'company','ODT templates','COMPANY_ADDON_PDF_ODT_PATH'),(250,'baleine',1,'project',NULL,NULL),(255,'soleil',1,'ficheinter',NULL,NULL),(256,'azur',1,'propal',NULL,NULL),(273,'beluga',1,'project','beluga',NULL),(281,'sepamandate',1,'bankaccount','sepamandate',NULL),(299,'standard',1,'member',NULL,NULL),(319,'generic_bom_odt',1,'bom','ODT templates','BOM_ADDON_PDF_ODT_PATH'),(320,'generic_mo_odt',1,'mrp','ODT templates','MRP_MO_ADDON_PDF_ODT_PATH'),(366,'generic_user_odt',1,'user',NULL,NULL),(367,'generic_usergroup_odt',1,'group',NULL,NULL),(370,'aurore',1,'supplier_proposal',NULL,NULL),(371,'rouget',1,'shipping',NULL,NULL),(372,'typhon',1,'delivery',NULL,NULL),(393,'squille',1,'reception',NULL,NULL),(410,'einstein',1,'order',NULL,NULL),(411,'html_cerfafr',1,'donation',NULL,NULL),(412,'standard',1,'expensereport',NULL,NULL),(413,'crabe',1,'invoice',NULL,NULL),(414,'muscadet',1,'order_supplier',NULL,NULL),(415,'standard_recruitmentjobposition',1,'recruitmentjobposition',NULL,NULL),(416,'generic_recruitmentjobposition_odt',1,'recruitmentjobposition',NULL,NULL),(417,'TICKET_ADDON_PDF_ODT_PATH',1,'ticket',NULL,NULL); +INSERT INTO `llx_document_model` VALUES (9,'merou',1,'shipping',NULL,NULL),(181,'generic_invoice_odt',1,'invoice','ODT templates','FACTURE_ADDON_PDF_ODT_PATH'),(193,'canelle2',1,'invoice_supplier','canelle2',NULL),(195,'canelle',1,'invoice_supplier','canelle',NULL),(198,'azur',2,'propal',NULL,NULL),(199,'html_cerfafr',2,'donation',NULL,NULL),(200,'crabe',2,'invoice',NULL,NULL),(201,'generic_odt',1,'company','ODT templates','COMPANY_ADDON_PDF_ODT_PATH'),(250,'baleine',1,'project',NULL,NULL),(255,'soleil',1,'ficheinter',NULL,NULL),(256,'azur',1,'propal',NULL,NULL),(273,'beluga',1,'project','beluga',NULL),(281,'sepamandate',1,'bankaccount','sepamandate',NULL),(299,'standard',1,'member',NULL,NULL),(319,'generic_bom_odt',1,'bom','ODT templates','BOM_ADDON_PDF_ODT_PATH'),(320,'generic_mo_odt',1,'mrp','ODT templates','MRP_MO_ADDON_PDF_ODT_PATH'),(366,'generic_user_odt',1,'user',NULL,NULL),(367,'generic_usergroup_odt',1,'group',NULL,NULL),(370,'aurore',1,'supplier_proposal',NULL,NULL),(371,'rouget',1,'shipping',NULL,NULL),(372,'typhon',1,'delivery',NULL,NULL),(393,'squille',1,'reception',NULL,NULL),(434,'einstein',1,'order',NULL,NULL),(435,'html_cerfafr',1,'donation',NULL,NULL),(436,'standard',1,'expensereport',NULL,NULL),(437,'crabe',1,'invoice',NULL,NULL),(438,'muscadet',1,'order_supplier',NULL,NULL),(439,'standard_recruitmentjobposition',1,'recruitmentjobposition',NULL,NULL),(440,'generic_recruitmentjobposition_odt',1,'recruitmentjobposition',NULL,NULL),(441,'TICKET_ADDON_PDF_ODT_PATH',1,'ticket',NULL,NULL); /*!40000 ALTER TABLE `llx_document_model` ENABLE KEYS */; UNLOCK TABLES; @@ -5237,7 +5504,7 @@ DROP TABLE IF EXISTS `llx_don`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_don` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_statut` smallint(6) NOT NULL DEFAULT 0, @@ -5246,31 +5513,31 @@ CREATE TABLE `llx_don` ( `amount` double(24,8) DEFAULT NULL, `fk_payment` int(11) DEFAULT NULL, `paid` smallint(6) NOT NULL DEFAULT 0, - `firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `societe` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` text COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `country` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `firstname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `societe` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `country` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_country` int(11) NOT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone_mobile` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone_mobile` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `public` smallint(6) NOT NULL DEFAULT 1, `fk_projet` int(11) DEFAULT NULL, `fk_user_author` int(11) NOT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_valid` datetime DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5294,10 +5561,10 @@ CREATE TABLE `llx_don_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_don_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5318,27 +5585,27 @@ DROP TABLE IF EXISTS `llx_ecm_directories`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_ecm_directories` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_parent` int(11) DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `cachenbofdoc` int(11) NOT NULL DEFAULT 0, - `fullpath` varchar(750) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `fullpath` varchar(750) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_c` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_c` int(11) DEFAULT NULL, `fk_user_m` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `acl` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `acl` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_ecm_directories` (`label`,`fk_parent`,`entity`), KEY `idx_ecm_directories_fk_user_c` (`fk_user_c`), KEY `idx_ecm_directories_fk_user_m` (`fk_user_m`), CONSTRAINT `fk_ecm_directories_fk_user_c` FOREIGN KEY (`fk_user_c`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_ecm_directories_fk_user_m` FOREIGN KEY (`fk_user_m`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5365,7 +5632,7 @@ CREATE TABLE `llx_ecm_directories_extrafields` ( `import_key` varchar(14) CHARACTER SET utf8mb4 DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_ecm_directories_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5386,33 +5653,33 @@ DROP TABLE IF EXISTS `llx_ecm_files`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_ecm_files` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `share` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `share` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `filename` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `filepath` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `fullpath_orig` varchar(750) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `keywords` text COLLATE utf8_unicode_ci DEFAULT NULL, - `cover` text COLLATE utf8_unicode_ci DEFAULT NULL, - `gen_or_uploaded` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `filename` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `filepath` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fullpath_orig` varchar(750) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `keywords` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cover` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `gen_or_uploaded` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_c` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_c` int(11) DEFAULT NULL, `fk_user_m` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `acl` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `acl` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT NULL, - `keyword` varchar(750) COLLATE utf8_unicode_ci DEFAULT NULL, - `src_object_type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `keyword` varchar(750) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `src_object_type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `src_object_id` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_ecm_files` (`filepath`,`filename`,`entity`), KEY `idx_ecm_files_label` (`label`) -) ENGINE=InnoDB AUTO_INCREMENT=161 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=161 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5439,7 +5706,7 @@ CREATE TABLE `llx_ecm_files_extrafields` ( `import_key` varchar(14) CHARACTER SET utf8mb4 DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_ecm_files_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5470,7 +5737,7 @@ CREATE TABLE `llx_element_contact` ( KEY `fk_element_contact_fk_c_type_contact` (`fk_c_type_contact`), KEY `idx_element_contact_fk_socpeople` (`fk_socpeople`), CONSTRAINT `fk_element_contact_fk_c_type_contact` FOREIGN KEY (`fk_c_type_contact`) REFERENCES `llx_c_type_contact` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5493,13 +5760,13 @@ DROP TABLE IF EXISTS `llx_element_element`; CREATE TABLE `llx_element_element` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_source` int(11) NOT NULL, - `sourcetype` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `sourcetype` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_target` int(11) NOT NULL, - `targettype` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `targettype` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_element_element_idx1` (`fk_source`,`sourcetype`,`fk_target`,`targettype`), KEY `idx_element_element_fk_target` (`fk_target`) -) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5522,9 +5789,9 @@ DROP TABLE IF EXISTS `llx_element_resources`; CREATE TABLE `llx_element_resources` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `element_id` int(11) DEFAULT NULL, - `element_type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `element_type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `resource_id` int(11) DEFAULT NULL, - `resource_type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `resource_type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `busy` int(11) DEFAULT NULL, `mandatory` int(11) DEFAULT NULL, `fk_user_create` int(11) DEFAULT NULL, @@ -5533,7 +5800,7 @@ CREATE TABLE `llx_element_resources` ( PRIMARY KEY (`rowid`), UNIQUE KEY `idx_element_resources_idx1` (`resource_id`,`resource_type`,`element_id`,`element_type`), KEY `idx_element_element_element_id` (`element_id`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5556,38 +5823,38 @@ DROP TABLE IF EXISTS `llx_emailcollector_emailcollector`; CREATE TABLE `llx_emailcollector_emailcollector` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `host` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `user` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `password` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `source_directory` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `filter` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `actiontodo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `target_directory` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `host` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `user` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `password` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `source_directory` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `filter` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `actiontodo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `target_directory` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datelastresult` datetime DEFAULT NULL, - `lastresult` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `lastresult` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, - `codelastresult` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `codelastresult` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT 0, - `login` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `login` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datelastok` datetime DEFAULT NULL, `maxemailpercollect` int(11) DEFAULT 100, - `hostcharset` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'UTF-8', + `hostcharset` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'UTF-8', PRIMARY KEY (`rowid`), UNIQUE KEY `uk_emailcollector_emailcollector_ref` (`ref`,`entity`), KEY `idx_emailcollector_rowid` (`rowid`), KEY `idx_emailcollector_entity` (`entity`), KEY `idx_emailcollector_status` (`status`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5610,20 +5877,20 @@ DROP TABLE IF EXISTS `llx_emailcollector_emailcollectoraction`; CREATE TABLE `llx_emailcollector_emailcollectoraction` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_emailcollector` int(11) NOT NULL, - `type` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `actionparam` text COLLATE utf8_unicode_ci DEFAULT NULL, + `type` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `actionparam` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, `position` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_emailcollector_emailcollectoraction` (`fk_emailcollector`,`type`), KEY `idx_emailcollector_fk_emailcollector` (`fk_emailcollector`), CONSTRAINT `fk_emailcollectoraction_fk_emailcollector` FOREIGN KEY (`fk_emailcollector`) REFERENCES `llx_emailcollector_emailcollector` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5646,20 +5913,20 @@ DROP TABLE IF EXISTS `llx_emailcollector_emailcollectorfilter`; CREATE TABLE `llx_emailcollector_emailcollectorfilter` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_emailcollector` int(11) NOT NULL, - `type` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `rulevalue` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `type` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `rulevalue` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_emailcollector_emailcollectorfilter` (`fk_emailcollector`,`type`,`rulevalue`), KEY `idx_emailcollector_fk_emailcollector` (`fk_emailcollector`), CONSTRAINT `fk_emailcollector_fk_emailcollector` FOREIGN KEY (`fk_emailcollector`) REFERENCES `llx_emailcollector_emailcollector` (`rowid`), CONSTRAINT `fk_emailcollectorfilter_fk_emailcollector` FOREIGN KEY (`fk_emailcollector`) REFERENCES `llx_emailcollector_emailcollector` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5683,27 +5950,29 @@ CREATE TABLE `llx_entrepot` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_project` int(11) DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `lieu` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lieu` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_departement` int(11) DEFAULT NULL, `fk_pays` int(11) DEFAULT 0, `statut` tinyint(4) DEFAULT 1, `fk_user_author` int(11) DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_parent` int(11) DEFAULT 0, - `fax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `fax` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `warehouse_usage` int(11) DEFAULT 1, + `barcode` varchar(180) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_barcode_type` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_entrepot_label` (`ref`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5712,7 +5981,7 @@ CREATE TABLE `llx_entrepot` ( LOCK TABLES `llx_entrepot` WRITE; /*!40000 ALTER TABLE `llx_entrepot` DISABLE KEYS */; -INSERT INTO `llx_entrepot` VALUES (1,'2012-07-09 00:31:22','2020-06-12 17:18:30','WAREHOUSEHOUSTON',1,NULL,'Warehouse located at Houston','Warehouse houston','','','Houston',NULL,11,1,1,NULL,NULL,NULL,'','',1),(2,'2012-07-09 00:41:03','2020-06-12 17:18:33','WAREHOUSEPARIS',1,NULL,'','Warehouse Paris','','75000','Paris',NULL,1,1,1,NULL,NULL,NULL,'','',1),(3,'2012-07-11 16:18:59','2020-06-12 17:18:25','Stock personnel Dupont',1,NULL,'Cet entrepôt représente le stock personnel de Alain Dupont','','','','',NULL,2,1,1,NULL,NULL,NULL,'','',1),(9,'2017-10-03 11:47:41','2017-10-03 09:47:41','Personal stock Marie Curie',1,NULL,'This warehouse represents personal stock of Marie Curie','','','','',NULL,1,1,1,NULL,NULL,0,NULL,NULL,1),(10,'2017-10-05 09:07:52','2018-07-30 13:52:24','Personal stock Alex Theceo',1,NULL,'This warehouse represents personal stock of Alex Theceo','','','','',NULL,3,1,1,NULL,NULL,0,NULL,NULL,1),(12,'2017-10-05 21:29:35','2017-10-05 19:29:35','Personal stock Charly Commery',1,NULL,'This warehouse represents personal stock of Charly Commery','','','','',NULL,1,1,11,NULL,NULL,0,NULL,NULL,1),(13,'2017-10-05 21:33:33','2018-07-30 13:51:38','Personal stock Sam Scientol',1,NULL,'This warehouse represents personal stock of Sam Scientol','','','7500','Paris',NULL,1,0,11,NULL,NULL,0,NULL,NULL,1),(18,'2018-01-22 17:27:02','2020-06-12 17:18:18','Personal stock Laurent Destailleur',1,NULL,'This warehouse represents personal stock of Laurent Destailleur','','','','',NULL,1,1,12,NULL,NULL,NULL,'','',1),(19,'2018-07-30 16:50:23','2020-06-12 17:18:12','Personal stock Eldy',1,NULL,'This warehouse represents personal stock of Eldy','','','','',NULL,14,1,12,NULL,NULL,NULL,'','',1),(20,'2017-02-02 03:55:45','2020-06-12 17:18:55','Personal stock Alex Boston',1,NULL,'This warehouse represents personal stock of Alex Boston','PSTOCKALEXB','','','',NULL,14,1,12,NULL,NULL,NULL,'','',1); +INSERT INTO `llx_entrepot` VALUES (1,'2012-07-09 00:31:22','2020-06-12 17:18:30','WAREHOUSEHOUSTON',1,NULL,'Warehouse located at Houston','Warehouse houston','','','Houston',NULL,11,1,1,NULL,NULL,NULL,'','',1,NULL,NULL),(2,'2012-07-09 00:41:03','2020-06-12 17:18:33','WAREHOUSEPARIS',1,NULL,'','Warehouse Paris','','75000','Paris',NULL,1,1,1,NULL,NULL,NULL,'','',1,NULL,NULL),(3,'2012-07-11 16:18:59','2020-06-12 17:18:25','Stock personnel Dupont',1,NULL,'Cet entrepôt représente le stock personnel de Alain Dupont','','','','',NULL,2,1,1,NULL,NULL,NULL,'','',1,NULL,NULL),(9,'2017-10-03 11:47:41','2017-10-03 09:47:41','Personal stock Marie Curie',1,NULL,'This warehouse represents personal stock of Marie Curie','','','','',NULL,1,1,1,NULL,NULL,0,NULL,NULL,1,NULL,NULL),(10,'2017-10-05 09:07:52','2018-07-30 13:52:24','Personal stock Alex Theceo',1,NULL,'This warehouse represents personal stock of Alex Theceo','','','','',NULL,3,1,1,NULL,NULL,0,NULL,NULL,1,NULL,NULL),(12,'2017-10-05 21:29:35','2017-10-05 19:29:35','Personal stock Charly Commery',1,NULL,'This warehouse represents personal stock of Charly Commery','','','','',NULL,1,1,11,NULL,NULL,0,NULL,NULL,1,NULL,NULL),(13,'2017-10-05 21:33:33','2018-07-30 13:51:38','Personal stock Sam Scientol',1,NULL,'This warehouse represents personal stock of Sam Scientol','','','7500','Paris',NULL,1,0,11,NULL,NULL,0,NULL,NULL,1,NULL,NULL),(18,'2018-01-22 17:27:02','2020-06-12 17:18:18','Personal stock Laurent Destailleur',1,NULL,'This warehouse represents personal stock of Laurent Destailleur','','','','',NULL,1,1,12,NULL,NULL,NULL,'','',1,NULL,NULL),(19,'2018-07-30 16:50:23','2020-06-12 17:18:12','Personal stock Eldy',1,NULL,'This warehouse represents personal stock of Eldy','','','','',NULL,14,1,12,NULL,NULL,NULL,'','',1,NULL,NULL),(20,'2017-02-02 03:55:45','2020-06-12 17:18:55','Personal stock Alex Boston',1,NULL,'This warehouse represents personal stock of Alex Boston','PSTOCKALEXB','','','',NULL,14,1,12,NULL,NULL,NULL,'','',1,NULL,NULL); /*!40000 ALTER TABLE `llx_entrepot` ENABLE KEYS */; UNLOCK TABLES; @@ -5727,10 +5996,10 @@ CREATE TABLE `llx_entrepot_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_entrepot_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5752,25 +6021,25 @@ DROP TABLE IF EXISTS `llx_establishment`; CREATE TABLE `llx_establishment` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `name` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_state` int(11) DEFAULT 0, `fk_country` int(11) DEFAULT 0, - `profid1` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `profid2` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `profid3` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `profid1` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `profid2` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `profid3` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) NOT NULL, `fk_user_mod` int(11) DEFAULT NULL, `datec` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `status` tinyint(4) DEFAULT 1, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5793,9 +6062,9 @@ CREATE TABLE `llx_event_element` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_source` int(11) NOT NULL, `fk_target` int(11) NOT NULL, - `targettype` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `targettype` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5816,24 +6085,27 @@ DROP TABLE IF EXISTS `llx_eventorganization_conferenceorboothattendee`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_eventorganization_conferenceorboothattendee` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_soc` int(11) DEFAULT NULL, `fk_actioncomm` int(11) DEFAULT NULL, - `email` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_company` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_subscription` datetime DEFAULT NULL, `amount` double DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` smallint(6) NOT NULL, `fk_project` int(11) NOT NULL, `fk_invoice` int(11) DEFAULT NULL, + `firstname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_eventorganization_conferenceorboothattendee` (`fk_project`,`email`,`fk_actioncomm`), KEY `idx_eventorganization_conferenceorboothattendee_rowid` (`rowid`), @@ -5842,7 +6114,7 @@ CREATE TABLE `llx_eventorganization_conferenceorboothattendee` ( KEY `idx_eventorganization_conferenceorboothattendee_fk_actioncomm` (`fk_actioncomm`), KEY `idx_eventorganization_conferenceorboothattendee_email` (`email`), KEY `idx_eventorganization_conferenceorboothattendee_status` (`status`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5865,10 +6137,10 @@ CREATE TABLE `llx_eventorganization_conferenceorboothattendee_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_conferenceorboothattendee_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5890,20 +6162,20 @@ DROP TABLE IF EXISTS `llx_events`; CREATE TABLE `llx_events` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `type` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `type` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `dateevent` datetime DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, - `description` varchar(250) COLLATE utf8_unicode_ci NOT NULL, - `ip` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, - `user_agent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(250) COLLATE utf8mb3_unicode_ci NOT NULL, + `ip` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `user_agent` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_object` int(11) DEFAULT NULL, - `prefix_session` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `authentication_method` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `prefix_session` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `authentication_method` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_oauth_token` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_events_dateevent` (`dateevent`) -) ENGINE=InnoDB AUTO_INCREMENT=1095 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1097 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5912,7 +6184,7 @@ CREATE TABLE `llx_events` ( LOCK TABLES `llx_events` WRITE; /*!40000 ALTER TABLE `llx_events` DISABLE KEYS */; -INSERT INTO `llx_events` VALUES (30,'2013-07-18 18:23:06','USER_LOGOUT',1,'2013-07-18 20:23:06',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(31,'2013-07-18 18:23:12','USER_LOGIN_FAILED',1,'2013-07-18 20:23:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(32,'2013-07-18 18:23:17','USER_LOGIN',1,'2013-07-18 20:23:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(33,'2013-07-18 20:10:51','USER_LOGIN_FAILED',1,'2013-07-18 22:10:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(34,'2013-07-18 20:10:55','USER_LOGIN',1,'2013-07-18 22:10:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(35,'2013-07-18 21:18:57','USER_LOGIN',1,'2013-07-18 23:18:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(36,'2013-07-20 10:34:10','USER_LOGIN',1,'2013-07-20 12:34:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(37,'2013-07-20 12:36:44','USER_LOGIN',1,'2013-07-20 14:36:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(38,'2013-07-20 13:20:51','USER_LOGIN_FAILED',1,'2013-07-20 15:20:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(39,'2013-07-20 13:20:54','USER_LOGIN',1,'2013-07-20 15:20:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(40,'2013-07-20 15:03:46','USER_LOGIN_FAILED',1,'2013-07-20 17:03:46',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(41,'2013-07-20 15:03:55','USER_LOGIN',1,'2013-07-20 17:03:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(42,'2013-07-20 18:05:05','USER_LOGIN_FAILED',1,'2013-07-20 20:05:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(43,'2013-07-20 18:05:08','USER_LOGIN',1,'2013-07-20 20:05:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(44,'2013-07-20 21:08:53','USER_LOGIN_FAILED',1,'2013-07-20 23:08:53',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(45,'2013-07-20 21:08:56','USER_LOGIN',1,'2013-07-20 23:08:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(46,'2013-07-21 01:26:12','USER_LOGIN',1,'2013-07-21 03:26:12',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(47,'2013-07-21 22:35:45','USER_LOGIN_FAILED',1,'2013-07-22 00:35:45',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(48,'2013-07-21 22:35:49','USER_LOGIN',1,'2013-07-22 00:35:49',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(49,'2013-07-26 23:09:47','USER_LOGIN_FAILED',1,'2013-07-27 01:09:47',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(50,'2013-07-26 23:09:50','USER_LOGIN',1,'2013-07-27 01:09:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(51,'2013-07-27 17:02:27','USER_LOGIN_FAILED',1,'2013-07-27 19:02:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(52,'2013-07-27 17:02:32','USER_LOGIN',1,'2013-07-27 19:02:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(53,'2013-07-27 23:33:37','USER_LOGIN_FAILED',1,'2013-07-28 01:33:37',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(54,'2013-07-27 23:33:41','USER_LOGIN',1,'2013-07-28 01:33:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(55,'2013-07-28 18:20:36','USER_LOGIN_FAILED',1,'2013-07-28 20:20:36',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(56,'2013-07-28 18:20:38','USER_LOGIN',1,'2013-07-28 20:20:38',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(57,'2013-07-28 20:13:30','USER_LOGIN_FAILED',1,'2013-07-28 22:13:30',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(58,'2013-07-28 20:13:34','USER_LOGIN',1,'2013-07-28 22:13:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(59,'2013-07-28 20:22:51','USER_LOGIN',1,'2013-07-28 22:22:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(60,'2013-07-28 23:05:06','USER_LOGIN',1,'2013-07-29 01:05:06',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(61,'2013-07-29 20:15:50','USER_LOGIN_FAILED',1,'2013-07-29 22:15:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(62,'2013-07-29 20:15:53','USER_LOGIN',1,'2013-07-29 22:15:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(68,'2013-07-29 20:51:01','USER_LOGOUT',1,'2013-07-29 22:51:01',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(69,'2013-07-29 20:51:05','USER_LOGIN',1,'2013-07-29 22:51:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(70,'2013-07-30 08:46:20','USER_LOGIN_FAILED',1,'2013-07-30 10:46:20',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(71,'2013-07-30 08:46:38','USER_LOGIN_FAILED',1,'2013-07-30 10:46:38',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(72,'2013-07-30 08:46:42','USER_LOGIN',1,'2013-07-30 10:46:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(73,'2013-07-30 10:05:12','USER_LOGIN_FAILED',1,'2013-07-30 12:05:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(74,'2013-07-30 10:05:15','USER_LOGIN',1,'2013-07-30 12:05:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(75,'2013-07-30 12:15:46','USER_LOGIN',1,'2013-07-30 14:15:46',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(76,'2013-07-31 22:19:30','USER_LOGIN',1,'2013-08-01 00:19:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(77,'2013-07-31 23:32:52','USER_LOGIN',1,'2013-08-01 01:32:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(78,'2013-08-01 01:24:50','USER_LOGIN_FAILED',1,'2013-08-01 03:24:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(79,'2013-08-01 01:24:54','USER_LOGIN',1,'2013-08-01 03:24:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(80,'2013-08-01 19:31:36','USER_LOGIN_FAILED',1,'2013-08-01 21:31:35',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(81,'2013-08-01 19:31:39','USER_LOGIN',1,'2013-08-01 21:31:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(82,'2013-08-01 20:01:36','USER_LOGIN',1,'2013-08-01 22:01:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(83,'2013-08-01 20:52:54','USER_LOGIN_FAILED',1,'2013-08-01 22:52:54',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(84,'2013-08-01 20:52:58','USER_LOGIN',1,'2013-08-01 22:52:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(85,'2013-08-01 21:17:28','USER_LOGIN_FAILED',1,'2013-08-01 23:17:28',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(86,'2013-08-01 21:17:31','USER_LOGIN',1,'2013-08-01 23:17:31',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(87,'2013-08-04 11:55:17','USER_LOGIN',1,'2013-08-04 13:55:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(88,'2013-08-04 20:19:03','USER_LOGIN_FAILED',1,'2013-08-04 22:19:03',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(89,'2013-08-04 20:19:07','USER_LOGIN',1,'2013-08-04 22:19:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(90,'2013-08-05 17:51:42','USER_LOGIN_FAILED',1,'2013-08-05 19:51:42',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(91,'2013-08-05 17:51:47','USER_LOGIN',1,'2013-08-05 19:51:47',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(92,'2013-08-05 17:56:03','USER_LOGIN',1,'2013-08-05 19:56:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(93,'2013-08-05 17:59:10','USER_LOGIN',1,'2013-08-05 19:59:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL,NULL,NULL,NULL),(94,'2013-08-05 18:01:58','USER_LOGIN',1,'2013-08-05 20:01:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL,NULL,NULL,NULL),(95,'2013-08-05 19:59:56','USER_LOGIN',1,'2013-08-05 21:59:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(96,'2013-08-06 18:33:22','USER_LOGIN',1,'2013-08-06 20:33:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(97,'2013-08-07 00:56:59','USER_LOGIN',1,'2013-08-07 02:56:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(98,'2013-08-07 22:49:14','USER_LOGIN',1,'2013-08-08 00:49:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(99,'2013-08-07 23:05:18','USER_LOGOUT',1,'2013-08-08 01:05:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(105,'2013-08-08 00:41:09','USER_LOGIN',1,'2013-08-08 02:41:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(106,'2013-08-08 11:58:55','USER_LOGIN',1,'2013-08-08 13:58:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(107,'2013-08-08 14:35:48','USER_LOGIN',1,'2013-08-08 16:35:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(108,'2013-08-08 14:36:31','USER_LOGOUT',1,'2013-08-08 16:36:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(109,'2013-08-08 14:38:28','USER_LOGIN',1,'2013-08-08 16:38:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(110,'2013-08-08 14:39:02','USER_LOGOUT',1,'2013-08-08 16:39:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(111,'2013-08-08 14:39:10','USER_LOGIN',1,'2013-08-08 16:39:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(112,'2013-08-08 14:39:28','USER_LOGOUT',1,'2013-08-08 16:39:28',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(113,'2013-08-08 14:39:37','USER_LOGIN',1,'2013-08-08 16:39:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(114,'2013-08-08 14:50:02','USER_LOGOUT',1,'2013-08-08 16:50:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(115,'2013-08-08 14:51:45','USER_LOGIN_FAILED',1,'2013-08-08 16:51:45',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(116,'2013-08-08 14:51:52','USER_LOGIN',1,'2013-08-08 16:51:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(117,'2013-08-08 15:09:54','USER_LOGOUT',1,'2013-08-08 17:09:54',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(118,'2013-08-08 15:10:19','USER_LOGIN_FAILED',1,'2013-08-08 17:10:19',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(119,'2013-08-08 15:10:28','USER_LOGIN',1,'2013-08-08 17:10:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(121,'2013-08-08 15:14:58','USER_LOGOUT',1,'2013-08-08 17:14:58',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(122,'2013-08-08 15:15:00','USER_LOGIN_FAILED',1,'2013-08-08 17:15:00',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(123,'2013-08-08 15:17:57','USER_LOGIN',1,'2013-08-08 17:17:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(124,'2013-08-08 15:35:56','USER_LOGOUT',1,'2013-08-08 17:35:56',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(125,'2013-08-08 15:36:05','USER_LOGIN',1,'2013-08-08 17:36:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(126,'2013-08-08 17:32:42','USER_LOGIN',1,'2013-08-08 19:32:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(127,'2014-12-08 13:49:37','USER_LOGOUT',1,'2014-12-08 14:49:37',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(128,'2014-12-08 13:49:42','USER_LOGIN',1,'2014-12-08 14:49:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(129,'2014-12-08 13:50:12','USER_LOGOUT',1,'2014-12-08 14:50:12',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(130,'2014-12-08 13:50:14','USER_LOGIN',1,'2014-12-08 14:50:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(131,'2014-12-08 13:50:17','USER_LOGOUT',1,'2014-12-08 14:50:17',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(132,'2014-12-08 13:52:47','USER_LOGIN',1,'2014-12-08 14:52:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(133,'2014-12-08 13:53:08','USER_MODIFY',1,'2014-12-08 14:53:08',1,'User admin modified','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(134,'2014-12-08 14:08:45','USER_LOGOUT',1,'2014-12-08 15:08:45',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(135,'2014-12-08 14:09:09','USER_LOGIN',1,'2014-12-08 15:09:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(136,'2014-12-08 14:11:43','USER_LOGOUT',1,'2014-12-08 15:11:43',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(137,'2014-12-08 14:11:45','USER_LOGIN',1,'2014-12-08 15:11:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(138,'2014-12-08 14:22:53','USER_LOGOUT',1,'2014-12-08 15:22:53',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(139,'2014-12-08 14:22:54','USER_LOGIN',1,'2014-12-08 15:22:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(140,'2014-12-08 14:23:10','USER_LOGOUT',1,'2014-12-08 15:23:10',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(141,'2014-12-08 14:23:11','USER_LOGIN',1,'2014-12-08 15:23:11',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(142,'2014-12-08 14:23:49','USER_LOGOUT',1,'2014-12-08 15:23:49',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(143,'2014-12-08 14:23:50','USER_LOGIN',1,'2014-12-08 15:23:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(144,'2014-12-08 14:28:08','USER_LOGOUT',1,'2014-12-08 15:28:08',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(145,'2014-12-08 14:35:15','USER_LOGIN',1,'2014-12-08 15:35:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(146,'2014-12-08 14:35:18','USER_LOGOUT',1,'2014-12-08 15:35:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(147,'2014-12-08 14:36:07','USER_LOGIN',1,'2014-12-08 15:36:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(148,'2014-12-08 14:36:09','USER_LOGOUT',1,'2014-12-08 15:36:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(149,'2014-12-08 14:36:41','USER_LOGIN',1,'2014-12-08 15:36:41',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(150,'2014-12-08 15:59:13','USER_LOGIN',1,'2014-12-08 16:59:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(151,'2014-12-09 11:49:52','USER_LOGIN',1,'2014-12-09 12:49:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(152,'2014-12-09 13:46:31','USER_LOGIN',1,'2014-12-09 14:46:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(153,'2014-12-09 19:03:14','USER_LOGIN',1,'2014-12-09 20:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(154,'2014-12-10 00:16:31','USER_LOGIN',1,'2014-12-10 01:16:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(170,'2014-12-11 22:03:31','USER_LOGIN',1,'2014-12-11 23:03:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(171,'2014-12-12 00:32:39','USER_LOGIN',1,'2014-12-12 01:32:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(172,'2014-12-12 10:49:59','USER_LOGIN',1,'2014-12-12 11:49:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(175,'2014-12-12 10:57:40','USER_MODIFY',1,'2014-12-12 11:57:40',1,'Modification utilisateur admin','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(176,'2014-12-12 13:29:15','USER_LOGIN',1,'2014-12-12 14:29:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(177,'2014-12-12 13:30:15','USER_LOGIN',1,'2014-12-12 14:30:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(178,'2014-12-12 13:40:08','USER_LOGOUT',1,'2014-12-12 14:40:08',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(179,'2014-12-12 13:40:10','USER_LOGIN',1,'2014-12-12 14:40:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(180,'2014-12-12 13:40:26','USER_MODIFY',1,'2014-12-12 14:40:26',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(181,'2014-12-12 13:40:34','USER_LOGOUT',1,'2014-12-12 14:40:34',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(182,'2014-12-12 13:42:23','USER_LOGIN',1,'2014-12-12 14:42:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(183,'2014-12-12 13:43:02','USER_NEW_PASSWORD',1,'2014-12-12 14:43:02',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(184,'2014-12-12 13:43:25','USER_LOGOUT',1,'2014-12-12 14:43:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(185,'2014-12-12 13:43:27','USER_LOGIN_FAILED',1,'2014-12-12 14:43:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(186,'2014-12-12 13:43:30','USER_LOGIN',1,'2014-12-12 14:43:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(187,'2014-12-12 14:52:11','USER_LOGIN',1,'2014-12-12 15:52:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(188,'2014-12-12 17:53:00','USER_LOGIN_FAILED',1,'2014-12-12 18:53:00',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(189,'2014-12-12 17:53:07','USER_LOGIN_FAILED',1,'2014-12-12 18:53:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(190,'2014-12-12 17:53:51','USER_NEW_PASSWORD',1,'2014-12-12 18:53:51',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(191,'2014-12-12 17:54:00','USER_LOGIN',1,'2014-12-12 18:54:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(192,'2014-12-12 17:54:10','USER_NEW_PASSWORD',1,'2014-12-12 18:54:10',1,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(193,'2014-12-12 17:54:10','USER_MODIFY',1,'2014-12-12 18:54:10',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(194,'2014-12-12 18:57:09','USER_LOGIN',1,'2014-12-12 19:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(195,'2014-12-12 23:04:08','USER_LOGIN',1,'2014-12-13 00:04:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(196,'2014-12-17 20:03:14','USER_LOGIN',1,'2014-12-17 21:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(197,'2014-12-17 21:18:45','USER_LOGIN',1,'2014-12-17 22:18:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(198,'2014-12-17 22:30:08','USER_LOGIN',1,'2014-12-17 23:30:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(199,'2014-12-18 23:32:03','USER_LOGIN',1,'2014-12-19 00:32:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(200,'2014-12-19 09:38:03','USER_LOGIN',1,'2014-12-19 10:38:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(201,'2014-12-19 11:23:35','USER_LOGIN',1,'2014-12-19 12:23:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(202,'2014-12-19 12:46:22','USER_LOGIN',1,'2014-12-19 13:46:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(214,'2014-12-19 19:11:31','USER_LOGIN',1,'2014-12-19 20:11:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(215,'2014-12-21 16:36:57','USER_LOGIN',1,'2014-12-21 17:36:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(216,'2014-12-21 16:38:43','USER_NEW_PASSWORD',1,'2014-12-21 17:38:43',1,'Changement mot de passe de adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(217,'2014-12-21 16:38:43','USER_MODIFY',1,'2014-12-21 17:38:43',1,'Modification utilisateur adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(218,'2014-12-21 16:38:51','USER_LOGOUT',1,'2014-12-21 17:38:51',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(219,'2014-12-21 16:38:55','USER_LOGIN',1,'2014-12-21 17:38:55',3,'(UserLogged,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(220,'2014-12-21 16:48:18','USER_LOGOUT',1,'2014-12-21 17:48:18',3,'(UserLogoff,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(221,'2014-12-21 16:48:20','USER_LOGIN',1,'2014-12-21 17:48:20',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(222,'2014-12-26 18:28:18','USER_LOGIN',1,'2014-12-26 19:28:18',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(223,'2014-12-26 20:00:24','USER_LOGIN',1,'2014-12-26 21:00:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(224,'2014-12-27 01:10:27','USER_LOGIN',1,'2014-12-27 02:10:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(225,'2014-12-28 19:12:08','USER_LOGIN',1,'2014-12-28 20:12:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(226,'2014-12-28 20:16:58','USER_LOGIN',1,'2014-12-28 21:16:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(227,'2014-12-29 14:35:46','USER_LOGIN',1,'2014-12-29 15:35:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(228,'2014-12-29 14:37:59','USER_LOGOUT',1,'2014-12-29 15:37:59',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(229,'2014-12-29 14:38:00','USER_LOGIN',1,'2014-12-29 15:38:00',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(230,'2014-12-29 17:16:48','USER_LOGIN',1,'2014-12-29 18:16:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(231,'2014-12-31 12:02:59','USER_LOGIN',1,'2014-12-31 13:02:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(232,'2015-01-02 20:32:51','USER_LOGIN',1,'2015-01-02 21:32:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0',NULL,NULL,NULL,NULL),(233,'2015-01-02 20:58:59','USER_LOGIN',1,'2015-01-02 21:58:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(234,'2015-01-03 09:25:07','USER_LOGIN',1,'2015-01-03 10:25:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(235,'2015-01-03 19:39:31','USER_LOGIN',1,'2015-01-03 20:39:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(236,'2015-01-04 22:40:19','USER_LOGIN',1,'2015-01-04 23:40:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(237,'2015-01-05 12:59:59','USER_LOGIN',1,'2015-01-05 13:59:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(238,'2015-01-05 15:28:52','USER_LOGIN',1,'2015-01-05 16:28:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(239,'2015-01-05 17:02:08','USER_LOGIN',1,'2015-01-05 18:02:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(240,'2015-01-06 12:13:33','USER_LOGIN',1,'2015-01-06 13:13:33',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(241,'2015-01-07 01:21:15','USER_LOGIN',1,'2015-01-07 02:21:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(242,'2015-01-07 01:46:31','USER_LOGOUT',1,'2015-01-07 02:46:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(243,'2015-01-07 19:54:50','USER_LOGIN',1,'2015-01-07 20:54:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(244,'2015-01-08 21:55:01','USER_LOGIN',1,'2015-01-08 22:55:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(245,'2015-01-09 11:13:28','USER_LOGIN',1,'2015-01-09 12:13:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(246,'2015-01-10 18:30:46','USER_LOGIN',1,'2015-01-10 19:30:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(247,'2015-01-11 18:03:26','USER_LOGIN',1,'2015-01-11 19:03:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(248,'2015-01-12 11:15:04','USER_LOGIN',1,'2015-01-12 12:15:04',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(249,'2015-01-12 14:42:44','USER_LOGIN',1,'2015-01-12 15:42:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(250,'2015-01-13 12:07:17','USER_LOGIN',1,'2015-01-13 13:07:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(251,'2015-01-13 17:37:58','USER_LOGIN',1,'2015-01-13 18:37:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(252,'2015-01-13 19:24:21','USER_LOGIN',1,'2015-01-13 20:24:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(253,'2015-01-13 19:29:19','USER_LOGOUT',1,'2015-01-13 20:29:19',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(254,'2015-01-13 21:39:39','USER_LOGIN',1,'2015-01-13 22:39:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(255,'2015-01-14 00:52:21','USER_LOGIN',1,'2015-01-14 01:52:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(256,'2015-01-16 11:34:31','USER_LOGIN',1,'2015-01-16 12:34:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(257,'2015-01-16 15:36:21','USER_LOGIN',1,'2015-01-16 16:36:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(258,'2015-01-16 19:17:36','USER_LOGIN',1,'2015-01-16 20:17:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(259,'2015-01-16 19:48:08','GROUP_CREATE',1,'2015-01-16 20:48:08',1,'Création groupe ggg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(260,'2015-01-16 21:48:53','USER_LOGIN',1,'2015-01-16 22:48:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(261,'2015-01-17 19:55:53','USER_LOGIN',1,'2015-01-17 20:55:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(262,'2015-01-18 09:48:01','USER_LOGIN',1,'2015-01-18 10:48:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(263,'2015-01-18 13:22:36','USER_LOGIN',1,'2015-01-18 14:22:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(264,'2015-01-18 16:10:23','USER_LOGIN',1,'2015-01-18 17:10:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(265,'2015-01-18 17:41:40','USER_LOGIN',1,'2015-01-18 18:41:40',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(266,'2015-01-19 14:33:48','USER_LOGIN',1,'2015-01-19 15:33:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(267,'2015-01-19 16:47:43','USER_LOGIN',1,'2015-01-19 17:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(268,'2015-01-19 16:59:43','USER_LOGIN',1,'2015-01-19 17:59:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(269,'2015-01-19 17:00:22','USER_LOGIN',1,'2015-01-19 18:00:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(270,'2015-01-19 17:04:16','USER_LOGOUT',1,'2015-01-19 18:04:16',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(271,'2015-01-19 17:04:18','USER_LOGIN',1,'2015-01-19 18:04:18',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(272,'2015-01-20 00:34:19','USER_LOGIN',1,'2015-01-20 01:34:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(273,'2015-01-21 11:54:17','USER_LOGIN',1,'2015-01-21 12:54:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(274,'2015-01-21 13:48:15','USER_LOGIN',1,'2015-01-21 14:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(275,'2015-01-21 14:30:22','USER_LOGIN',1,'2015-01-21 15:30:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(276,'2015-01-21 15:10:46','USER_LOGIN',1,'2015-01-21 16:10:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(277,'2015-01-21 17:27:43','USER_LOGIN',1,'2015-01-21 18:27:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(278,'2015-01-21 21:48:15','USER_LOGIN',1,'2015-01-21 22:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(279,'2015-01-21 21:50:42','USER_LOGIN',1,'2015-01-21 22:50:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(280,'2015-01-23 09:28:26','USER_LOGIN',1,'2015-01-23 10:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(281,'2015-01-23 13:21:57','USER_LOGIN',1,'2015-01-23 14:21:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(282,'2015-01-23 16:52:00','USER_LOGOUT',1,'2015-01-23 17:52:00',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(283,'2015-01-23 16:52:05','USER_LOGIN_FAILED',1,'2015-01-23 17:52:05',NULL,'Bad value for login or password - login=bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(284,'2015-01-23 16:52:09','USER_LOGIN',1,'2015-01-23 17:52:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(285,'2015-01-23 16:52:27','USER_CREATE',1,'2015-01-23 17:52:27',1,'Création utilisateur aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(286,'2015-01-23 16:52:27','USER_NEW_PASSWORD',1,'2015-01-23 17:52:27',1,'Changement mot de passe de aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(287,'2015-01-23 16:52:37','USER_CREATE',1,'2015-01-23 17:52:37',1,'Création utilisateur bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(288,'2015-01-23 16:52:37','USER_NEW_PASSWORD',1,'2015-01-23 17:52:37',1,'Changement mot de passe de bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(289,'2015-01-23 16:53:15','USER_LOGOUT',1,'2015-01-23 17:53:15',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(290,'2015-01-23 16:53:20','USER_LOGIN',1,'2015-01-23 17:53:20',4,'(UserLogged,aaa)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(291,'2015-01-23 19:16:58','USER_LOGIN',1,'2015-01-23 20:16:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(292,'2015-01-26 10:54:07','USER_LOGIN',1,'2015-01-26 11:54:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(293,'2015-01-29 10:15:36','USER_LOGIN',1,'2015-01-29 11:15:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(294,'2015-01-30 17:42:50','USER_LOGIN',1,'2015-01-30 18:42:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(295,'2015-02-01 08:49:55','USER_LOGIN',1,'2015-02-01 09:49:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(296,'2015-02-01 08:51:57','USER_LOGOUT',1,'2015-02-01 09:51:57',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(297,'2015-02-01 08:52:39','USER_LOGIN',1,'2015-02-01 09:52:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(298,'2015-02-01 21:03:01','USER_LOGIN',1,'2015-02-01 22:03:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(299,'2015-02-10 19:48:39','USER_LOGIN',1,'2015-02-10 20:48:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(300,'2015-02-10 20:46:48','USER_LOGIN',1,'2015-02-10 21:46:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(301,'2015-02-10 21:39:23','USER_LOGIN',1,'2015-02-10 22:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(302,'2015-02-11 19:00:13','USER_LOGIN',1,'2015-02-11 20:00:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(303,'2015-02-11 19:43:44','USER_LOGIN_FAILED',1,'2015-02-11 20:43:44',NULL,'Unknown column \'u.fk_user\' in \'field list\'','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(304,'2015-02-11 19:44:01','USER_LOGIN',1,'2015-02-11 20:44:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(305,'2015-02-12 00:27:35','USER_LOGIN',1,'2015-02-12 01:27:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(306,'2015-02-12 00:27:38','USER_LOGOUT',1,'2015-02-12 01:27:38',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(307,'2015-02-12 00:28:07','USER_LOGIN',1,'2015-02-12 01:28:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(308,'2015-02-12 00:28:09','USER_LOGOUT',1,'2015-02-12 01:28:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(309,'2015-02-12 00:28:26','USER_LOGIN',1,'2015-02-12 01:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(310,'2015-02-12 00:28:30','USER_LOGOUT',1,'2015-02-12 01:28:30',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(311,'2015-02-12 12:42:15','USER_LOGIN',1,'2015-02-12 13:42:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(312,'2015-02-12 13:46:16','USER_LOGIN',1,'2015-02-12 14:46:16',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(313,'2015-02-12 14:54:28','USER_LOGIN',1,'2015-02-12 15:54:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(314,'2015-02-12 16:04:46','USER_LOGIN',1,'2015-02-12 17:04:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(315,'2015-02-13 14:02:43','USER_LOGIN',1,'2015-02-13 15:02:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(316,'2015-02-13 14:48:30','USER_LOGIN',1,'2015-02-13 15:48:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(317,'2015-02-13 17:44:53','USER_LOGIN',1,'2015-02-13 18:44:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(318,'2015-02-15 08:44:36','USER_LOGIN',1,'2015-02-15 09:44:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(319,'2015-02-15 08:53:20','USER_LOGIN',1,'2015-02-15 09:53:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(320,'2015-02-16 19:10:28','USER_LOGIN',1,'2015-02-16 20:10:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(321,'2015-02-16 19:22:40','USER_CREATE',1,'2015-02-16 20:22:40',1,'Création utilisateur aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(322,'2015-02-16 19:22:40','USER_NEW_PASSWORD',1,'2015-02-16 20:22:40',1,'Changement mot de passe de aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(323,'2015-02-16 19:48:15','USER_CREATE',1,'2015-02-16 20:48:15',1,'Création utilisateur zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(324,'2015-02-16 19:48:15','USER_NEW_PASSWORD',1,'2015-02-16 20:48:15',1,'Changement mot de passe de zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(325,'2015-02-16 19:50:08','USER_CREATE',1,'2015-02-16 20:50:08',1,'Création utilisateur zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(326,'2015-02-16 19:50:08','USER_NEW_PASSWORD',1,'2015-02-16 20:50:08',1,'Changement mot de passe de zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(327,'2015-02-16 21:20:03','USER_LOGIN',1,'2015-02-16 22:20:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(328,'2015-02-17 14:30:51','USER_LOGIN',1,'2015-02-17 15:30:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(329,'2015-02-17 17:21:22','USER_LOGIN',1,'2015-02-17 18:21:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(330,'2015-02-17 17:48:43','USER_MODIFY',1,'2015-02-17 18:48:43',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(331,'2015-02-17 17:48:47','USER_MODIFY',1,'2015-02-17 18:48:47',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(332,'2015-02-17 17:48:51','USER_MODIFY',1,'2015-02-17 18:48:51',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(333,'2015-02-17 17:48:56','USER_MODIFY',1,'2015-02-17 18:48:56',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(334,'2015-02-18 22:00:01','USER_LOGIN',1,'2015-02-18 23:00:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(335,'2015-02-19 08:19:52','USER_LOGIN',1,'2015-02-19 09:19:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(336,'2015-02-19 22:00:52','USER_LOGIN',1,'2015-02-19 23:00:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(337,'2015-02-20 09:34:52','USER_LOGIN',1,'2015-02-20 10:34:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(338,'2015-02-20 13:12:28','USER_LOGIN',1,'2015-02-20 14:12:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(339,'2015-02-20 17:19:44','USER_LOGIN',1,'2015-02-20 18:19:44',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(340,'2015-02-20 19:07:21','USER_MODIFY',1,'2015-02-20 20:07:21',1,'Modification utilisateur adupont','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(341,'2015-02-20 19:47:17','USER_LOGIN',1,'2015-02-20 20:47:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(342,'2015-02-20 19:48:01','USER_MODIFY',1,'2015-02-20 20:48:01',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(343,'2015-02-21 08:27:07','USER_LOGIN',1,'2015-02-21 09:27:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(344,'2015-02-23 13:34:13','USER_LOGIN',1,'2015-02-23 14:34:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(345,'2015-02-24 01:06:41','USER_LOGIN_FAILED',1,'2015-02-24 02:06:41',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(346,'2015-02-24 01:06:45','USER_LOGIN_FAILED',1,'2015-02-24 02:06:45',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(347,'2015-02-24 01:06:55','USER_LOGIN_FAILED',1,'2015-02-24 02:06:55',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(348,'2015-02-24 01:07:03','USER_LOGIN_FAILED',1,'2015-02-24 02:07:03',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(349,'2015-02-24 01:07:21','USER_LOGIN_FAILED',1,'2015-02-24 02:07:21',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(350,'2015-02-24 01:08:12','USER_LOGIN_FAILED',1,'2015-02-24 02:08:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(351,'2015-02-24 01:08:42','USER_LOGIN_FAILED',1,'2015-02-24 02:08:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(352,'2015-02-24 01:08:50','USER_LOGIN_FAILED',1,'2015-02-24 02:08:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(353,'2015-02-24 01:09:08','USER_LOGIN_FAILED',1,'2015-02-24 02:09:08',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(354,'2015-02-24 01:09:42','USER_LOGIN_FAILED',1,'2015-02-24 02:09:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(355,'2015-02-24 01:09:50','USER_LOGIN_FAILED',1,'2015-02-24 02:09:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(356,'2015-02-24 01:10:05','USER_LOGIN_FAILED',1,'2015-02-24 02:10:05',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(357,'2015-02-24 01:10:22','USER_LOGIN_FAILED',1,'2015-02-24 02:10:22',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(358,'2015-02-24 01:10:30','USER_LOGIN_FAILED',1,'2015-02-24 02:10:30',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(359,'2015-02-24 01:10:56','USER_LOGIN_FAILED',1,'2015-02-24 02:10:56',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(360,'2015-02-24 01:11:26','USER_LOGIN_FAILED',1,'2015-02-24 02:11:26',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(361,'2015-02-24 01:12:06','USER_LOGIN_FAILED',1,'2015-02-24 02:12:06',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(362,'2015-02-24 01:21:14','USER_LOGIN_FAILED',1,'2015-02-24 02:21:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(363,'2015-02-24 01:21:25','USER_LOGIN_FAILED',1,'2015-02-24 02:21:25',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(364,'2015-02-24 01:21:54','USER_LOGIN_FAILED',1,'2015-02-24 02:21:54',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(365,'2015-02-24 01:22:14','USER_LOGIN_FAILED',1,'2015-02-24 02:22:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(366,'2015-02-24 01:22:37','USER_LOGIN_FAILED',1,'2015-02-24 02:22:37',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(367,'2015-02-24 01:23:01','USER_LOGIN_FAILED',1,'2015-02-24 02:23:01',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(368,'2015-02-24 01:23:39','USER_LOGIN_FAILED',1,'2015-02-24 02:23:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(369,'2015-02-24 01:24:04','USER_LOGIN_FAILED',1,'2015-02-24 02:24:04',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(370,'2015-02-24 01:24:39','USER_LOGIN_FAILED',1,'2015-02-24 02:24:39',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(371,'2015-02-24 01:25:01','USER_LOGIN_FAILED',1,'2015-02-24 02:25:01',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(372,'2015-02-24 01:25:12','USER_LOGIN_FAILED',1,'2015-02-24 02:25:12',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(373,'2015-02-24 01:27:30','USER_LOGIN_FAILED',1,'2015-02-24 02:27:30',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(374,'2015-02-24 01:28:00','USER_LOGIN_FAILED',1,'2015-02-24 02:28:00',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(375,'2015-02-24 01:28:35','USER_LOGIN_FAILED',1,'2015-02-24 02:28:35',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(376,'2015-02-24 01:29:03','USER_LOGIN_FAILED',1,'2015-02-24 02:29:03',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(377,'2015-02-24 01:29:55','USER_LOGIN_FAILED',1,'2015-02-24 02:29:55',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(378,'2015-02-24 01:32:40','USER_LOGIN_FAILED',1,'2015-02-24 02:32:40',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(379,'2015-02-24 01:39:33','USER_LOGIN_FAILED',1,'2015-02-24 02:39:33',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(380,'2015-02-24 01:39:38','USER_LOGIN_FAILED',1,'2015-02-24 02:39:38',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(381,'2015-02-24 01:39:47','USER_LOGIN_FAILED',1,'2015-02-24 02:39:47',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(382,'2015-02-24 01:40:54','USER_LOGIN_FAILED',1,'2015-02-24 02:40:54',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(383,'2015-02-24 01:47:57','USER_LOGIN_FAILED',1,'2015-02-24 02:47:57',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(384,'2015-02-24 01:48:05','USER_LOGIN_FAILED',1,'2015-02-24 02:48:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(385,'2015-02-24 01:48:07','USER_LOGIN_FAILED',1,'2015-02-24 02:48:07',NULL,'Unknown column \'u.lastname\' in \'field list\'','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(386,'2015-02-24 01:48:35','USER_LOGIN',1,'2015-02-24 02:48:35',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(387,'2015-02-24 01:56:32','USER_LOGIN',1,'2015-02-24 02:56:32',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(388,'2015-02-24 02:05:55','USER_LOGOUT',1,'2015-02-24 03:05:55',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(389,'2015-02-24 02:39:52','USER_LOGIN',1,'2015-02-24 03:39:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(390,'2015-02-24 02:51:10','USER_LOGOUT',1,'2015-02-24 03:51:10',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(391,'2015-02-24 12:46:41','USER_LOGIN',1,'2015-02-24 13:46:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(392,'2015-02-24 12:46:52','USER_LOGOUT',1,'2015-02-24 13:46:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(393,'2015-02-24 12:46:56','USER_LOGIN',1,'2015-02-24 13:46:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(394,'2015-02-24 12:47:56','USER_LOGOUT',1,'2015-02-24 13:47:56',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(395,'2015-02-24 12:48:00','USER_LOGIN',1,'2015-02-24 13:48:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(396,'2015-02-24 12:48:11','USER_LOGOUT',1,'2015-02-24 13:48:11',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(397,'2015-02-24 12:48:32','USER_LOGIN',1,'2015-02-24 13:48:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(398,'2015-02-24 12:52:22','USER_LOGOUT',1,'2015-02-24 13:52:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(399,'2015-02-24 12:52:27','USER_LOGIN',1,'2015-02-24 13:52:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(400,'2015-02-24 12:52:54','USER_LOGOUT',1,'2015-02-24 13:52:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(401,'2015-02-24 12:52:59','USER_LOGIN',1,'2015-02-24 13:52:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(402,'2015-02-24 12:55:39','USER_LOGOUT',1,'2015-02-24 13:55:39',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(403,'2015-02-24 12:55:59','USER_LOGIN',1,'2015-02-24 13:55:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(404,'2015-02-24 12:56:07','USER_LOGOUT',1,'2015-02-24 13:56:07',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(405,'2015-02-24 12:56:23','USER_LOGIN',1,'2015-02-24 13:56:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(406,'2015-02-24 12:56:46','USER_LOGOUT',1,'2015-02-24 13:56:46',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(407,'2015-02-24 12:58:30','USER_LOGIN',1,'2015-02-24 13:58:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(408,'2015-02-24 12:58:33','USER_LOGOUT',1,'2015-02-24 13:58:33',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(409,'2015-02-24 12:58:51','USER_LOGIN',1,'2015-02-24 13:58:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(410,'2015-02-24 12:58:58','USER_LOGOUT',1,'2015-02-24 13:58:58',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(411,'2015-02-24 13:18:53','USER_LOGIN',1,'2015-02-24 14:18:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(412,'2015-02-24 13:19:52','USER_LOGOUT',1,'2015-02-24 14:19:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(413,'2015-02-24 15:39:31','USER_LOGIN_FAILED',1,'2015-02-24 16:39:31',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1',NULL,NULL,NULL,NULL,NULL),(414,'2015-02-24 15:42:07','USER_LOGIN',1,'2015-02-24 16:42:07',1,'(UserLogged,admin)','127.0.0.1',NULL,NULL,NULL,NULL,NULL),(415,'2015-02-24 15:42:52','USER_LOGOUT',1,'2015-02-24 16:42:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(416,'2015-02-24 16:04:21','USER_LOGIN',1,'2015-02-24 17:04:21',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(417,'2015-02-24 16:11:28','USER_LOGIN_FAILED',1,'2015-02-24 17:11:28',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(418,'2015-02-24 16:11:37','USER_LOGIN',1,'2015-02-24 17:11:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(419,'2015-02-24 16:36:52','USER_LOGOUT',1,'2015-02-24 17:36:52',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(420,'2015-02-24 16:40:37','USER_LOGIN',1,'2015-02-24 17:40:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(421,'2015-02-24 16:57:16','USER_LOGIN',1,'2015-02-24 17:57:16',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(422,'2015-02-24 17:01:30','USER_LOGOUT',1,'2015-02-24 18:01:30',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(423,'2015-02-24 17:02:33','USER_LOGIN',1,'2015-02-24 18:02:33',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(424,'2015-02-24 17:14:22','USER_LOGOUT',1,'2015-02-24 18:14:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(425,'2015-02-24 17:15:07','USER_LOGIN_FAILED',1,'2015-02-24 18:15:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(426,'2015-02-24 17:15:20','USER_LOGIN',1,'2015-02-24 18:15:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(427,'2015-02-24 17:20:14','USER_LOGIN',1,'2015-02-24 18:20:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(428,'2015-02-24 17:20:51','USER_LOGIN',1,'2015-02-24 18:20:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(429,'2015-02-24 17:20:54','USER_LOGOUT',1,'2015-02-24 18:20:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(430,'2015-02-24 17:21:19','USER_LOGIN',1,'2015-02-24 18:21:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(431,'2015-02-24 17:32:35','USER_LOGIN',1,'2015-02-24 18:32:35',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(432,'2015-02-24 18:28:48','USER_LOGIN',1,'2015-02-24 19:28:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(433,'2015-02-24 18:29:27','USER_LOGOUT',1,'2015-02-24 19:29:27',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(434,'2015-02-24 18:29:32','USER_LOGIN',1,'2015-02-24 19:29:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(435,'2015-02-24 20:13:13','USER_LOGOUT',1,'2015-02-24 21:13:13',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(436,'2015-02-24 20:13:17','USER_LOGIN',1,'2015-02-24 21:13:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(437,'2015-02-25 08:57:16','USER_LOGIN',1,'2015-02-25 09:57:16',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(438,'2015-02-25 08:57:59','USER_LOGOUT',1,'2015-02-25 09:57:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(439,'2015-02-25 09:15:02','USER_LOGIN',1,'2015-02-25 10:15:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(440,'2015-02-25 09:15:50','USER_LOGOUT',1,'2015-02-25 10:15:50',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(441,'2015-02-25 09:15:57','USER_LOGIN',1,'2015-02-25 10:15:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(442,'2015-02-25 09:16:12','USER_LOGOUT',1,'2015-02-25 10:16:12',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(443,'2015-02-25 09:16:19','USER_LOGIN',1,'2015-02-25 10:16:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(444,'2015-02-25 09:16:25','USER_LOGOUT',1,'2015-02-25 10:16:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(445,'2015-02-25 09:16:39','USER_LOGIN_FAILED',1,'2015-02-25 10:16:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(446,'2015-02-25 09:16:42','USER_LOGIN_FAILED',1,'2015-02-25 10:16:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(447,'2015-02-25 09:16:54','USER_LOGIN_FAILED',1,'2015-02-25 10:16:54',NULL,'Identificadors d'usuari o contrasenya incorrectes - login=gfdg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(448,'2015-02-25 09:17:53','USER_LOGIN',1,'2015-02-25 10:17:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(449,'2015-02-25 09:18:37','USER_LOGOUT',1,'2015-02-25 10:18:37',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(450,'2015-02-25 09:18:41','USER_LOGIN',1,'2015-02-25 10:18:41',4,'(UserLogged,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(451,'2015-02-25 09:18:47','USER_LOGOUT',1,'2015-02-25 10:18:47',4,'(UserLogoff,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(452,'2015-02-25 10:05:34','USER_LOGIN',1,'2015-02-25 11:05:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(453,'2015-02-26 21:51:40','USER_LOGIN',1,'2015-02-26 22:51:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(454,'2015-02-26 23:30:06','USER_LOGIN',1,'2015-02-27 00:30:06',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(455,'2015-02-27 14:13:11','USER_LOGIN',1,'2015-02-27 15:13:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(456,'2015-02-27 18:12:06','USER_LOGIN_FAILED',1,'2015-02-27 19:12:06',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(457,'2015-02-27 18:12:10','USER_LOGIN',1,'2015-02-27 19:12:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(458,'2015-02-27 20:20:08','USER_LOGIN',1,'2015-02-27 21:20:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(459,'2015-03-01 22:12:03','USER_LOGIN',1,'2015-03-01 23:12:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(460,'2015-03-02 11:45:50','USER_LOGIN',1,'2015-03-02 12:45:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(461,'2015-03-02 15:53:51','USER_LOGIN_FAILED',1,'2015-03-02 16:53:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(462,'2015-03-02 15:53:53','USER_LOGIN',1,'2015-03-02 16:53:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(463,'2015-03-02 18:32:32','USER_LOGIN',1,'2015-03-02 19:32:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(464,'2015-03-02 22:59:36','USER_LOGIN',1,'2015-03-02 23:59:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(465,'2015-03-03 16:26:26','USER_LOGIN',1,'2015-03-03 17:26:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(466,'2015-03-03 22:50:27','USER_LOGIN',1,'2015-03-03 23:50:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(467,'2015-03-04 08:29:27','USER_LOGIN',1,'2015-03-04 09:29:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(468,'2015-03-04 18:27:28','USER_LOGIN',1,'2015-03-04 19:27:28',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP06)',NULL,NULL,NULL,NULL),(469,'2015-03-04 19:27:23','USER_LOGIN',1,'2015-03-04 20:27:23',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',NULL,NULL,NULL,NULL),(470,'2015-03-04 19:35:14','USER_LOGIN',1,'2015-03-04 20:35:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(471,'2015-03-04 19:55:49','USER_LOGIN',1,'2015-03-04 20:55:49',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',NULL,NULL,NULL,NULL),(472,'2015-03-04 21:16:13','USER_LOGIN',1,'2015-03-04 22:16:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(473,'2015-03-05 10:17:30','USER_LOGIN',1,'2015-03-05 11:17:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(474,'2015-03-05 11:02:43','USER_LOGIN',1,'2015-03-05 12:02:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(475,'2015-03-05 23:14:39','USER_LOGIN',1,'2015-03-06 00:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(476,'2015-03-06 08:58:57','USER_LOGIN',1,'2015-03-06 09:58:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(477,'2015-03-06 14:29:40','USER_LOGIN',1,'2015-03-06 15:29:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(478,'2015-03-06 21:53:02','USER_LOGIN',1,'2015-03-06 22:53:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(479,'2015-03-07 21:14:39','USER_LOGIN',1,'2015-03-07 22:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(480,'2015-03-08 00:06:05','USER_LOGIN',1,'2015-03-08 01:06:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(481,'2015-03-08 01:38:13','USER_LOGIN',1,'2015-03-08 02:38:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(482,'2015-03-08 08:59:50','USER_LOGIN',1,'2015-03-08 09:59:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(483,'2015-03-09 12:08:51','USER_LOGIN',1,'2015-03-09 13:08:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(484,'2015-03-09 15:19:53','USER_LOGIN',1,'2015-03-09 16:19:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(495,'2015-03-09 18:06:21','USER_LOGIN',1,'2015-03-09 19:06:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(496,'2015-03-09 20:01:24','USER_LOGIN',1,'2015-03-09 21:01:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(497,'2015-03-09 23:36:45','USER_LOGIN',1,'2015-03-10 00:36:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(498,'2015-03-10 14:37:13','USER_LOGIN',1,'2015-03-10 15:37:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(499,'2015-03-10 17:54:12','USER_LOGIN',1,'2015-03-10 18:54:12',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(500,'2015-03-11 08:57:09','USER_LOGIN',1,'2015-03-11 09:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(501,'2015-03-11 22:05:13','USER_LOGIN',1,'2015-03-11 23:05:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(502,'2015-03-12 08:34:27','USER_LOGIN',1,'2015-03-12 09:34:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(503,'2015-03-13 09:11:02','USER_LOGIN',1,'2015-03-13 10:11:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(504,'2015-03-13 10:02:11','USER_LOGIN',1,'2015-03-13 11:02:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(505,'2015-03-13 13:20:58','USER_LOGIN',1,'2015-03-13 14:20:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(506,'2015-03-13 16:19:28','USER_LOGIN',1,'2015-03-13 17:19:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(507,'2015-03-13 18:34:30','USER_LOGIN',1,'2015-03-13 19:34:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(508,'2015-03-14 08:25:02','USER_LOGIN',1,'2015-03-14 09:25:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(509,'2015-03-14 19:15:22','USER_LOGIN',1,'2015-03-14 20:15:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(510,'2015-03-14 21:58:53','USER_LOGIN',1,'2015-03-14 22:58:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(511,'2015-03-14 21:58:59','USER_LOGOUT',1,'2015-03-14 22:58:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(512,'2015-03-14 21:59:07','USER_LOGIN',1,'2015-03-14 22:59:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(513,'2015-03-14 22:58:22','USER_LOGOUT',1,'2015-03-14 23:58:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(514,'2015-03-14 23:00:25','USER_LOGIN',1,'2015-03-15 00:00:25',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(515,'2015-03-16 12:14:28','USER_LOGIN',1,'2015-03-16 13:14:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(516,'2015-03-16 16:09:01','USER_LOGIN',1,'2015-03-16 17:09:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(517,'2015-03-16 16:57:11','USER_LOGIN',1,'2015-03-16 17:57:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(518,'2015-03-16 19:31:31','USER_LOGIN',1,'2015-03-16 20:31:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(519,'2015-03-17 17:44:39','USER_LOGIN',1,'2015-03-17 18:44:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(520,'2015-03-17 20:40:57','USER_LOGIN',1,'2015-03-17 21:40:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(521,'2015-03-17 23:14:05','USER_LOGIN',1,'2015-03-18 00:14:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(522,'2015-03-17 23:28:47','USER_LOGOUT',1,'2015-03-18 00:28:47',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(523,'2015-03-17 23:28:54','USER_LOGIN',1,'2015-03-18 00:28:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(524,'2015-03-18 17:37:30','USER_LOGIN',1,'2015-03-18 18:37:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(525,'2015-03-18 18:11:37','USER_LOGIN',1,'2015-03-18 19:11:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(526,'2015-03-19 08:35:08','USER_LOGIN',1,'2015-03-19 09:35:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(527,'2015-03-19 09:20:23','USER_LOGIN',1,'2015-03-19 10:20:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(528,'2015-03-20 13:17:13','USER_LOGIN',1,'2015-03-20 14:17:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(529,'2015-03-20 14:44:31','USER_LOGIN',1,'2015-03-20 15:44:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(530,'2015-03-20 18:24:25','USER_LOGIN',1,'2015-03-20 19:24:25',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(531,'2015-03-20 19:15:54','USER_LOGIN',1,'2015-03-20 20:15:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(532,'2015-03-21 18:40:47','USER_LOGIN',1,'2015-03-21 19:40:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(533,'2015-03-21 21:42:24','USER_LOGIN',1,'2015-03-21 22:42:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(534,'2015-03-22 08:39:23','USER_LOGIN',1,'2015-03-22 09:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(535,'2015-03-23 13:04:55','USER_LOGIN',1,'2015-03-23 14:04:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(536,'2015-03-23 15:47:43','USER_LOGIN',1,'2015-03-23 16:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(537,'2015-03-23 22:56:36','USER_LOGIN',1,'2015-03-23 23:56:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(538,'2015-03-24 01:22:32','USER_LOGIN',1,'2015-03-24 02:22:32',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(539,'2015-03-24 14:40:42','USER_LOGIN',1,'2015-03-24 15:40:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(540,'2015-03-24 15:30:26','USER_LOGOUT',1,'2015-03-24 16:30:26',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(541,'2015-03-24 15:30:29','USER_LOGIN',1,'2015-03-24 16:30:29',2,'(UserLogged,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(542,'2015-03-24 15:49:40','USER_LOGOUT',1,'2015-03-24 16:49:40',2,'(UserLogoff,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(543,'2015-03-24 15:49:48','USER_LOGIN',1,'2015-03-24 16:49:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(544,'2015-03-24 15:52:35','USER_MODIFY',1,'2015-03-24 16:52:35',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(545,'2015-03-24 15:52:52','USER_MODIFY',1,'2015-03-24 16:52:52',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(546,'2015-03-24 15:53:09','USER_MODIFY',1,'2015-03-24 16:53:09',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(547,'2015-03-24 15:53:23','USER_MODIFY',1,'2015-03-24 16:53:23',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(548,'2015-03-24 16:00:04','USER_MODIFY',1,'2015-03-24 17:00:04',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(549,'2015-03-24 16:01:50','USER_MODIFY',1,'2015-03-24 17:01:50',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(550,'2015-03-24 16:10:14','USER_MODIFY',1,'2015-03-24 17:10:14',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(551,'2015-03-24 16:55:13','USER_LOGIN',1,'2015-03-24 17:55:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(552,'2015-03-24 17:44:29','USER_LOGIN',1,'2015-03-24 18:44:29',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(553,'2015-09-08 23:06:26','USER_LOGIN',1,'2015-09-09 01:06:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36',NULL,NULL,NULL,NULL),(554,'2015-10-21 22:32:28','USER_LOGIN',1,'2015-10-22 00:32:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL,NULL,NULL,NULL),(555,'2015-10-21 22:32:48','USER_LOGIN',1,'2015-10-22 00:32:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL,NULL,NULL,NULL),(556,'2015-11-07 00:01:51','USER_LOGIN',1,'2015-11-07 01:01:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36',NULL,NULL,NULL,NULL),(557,'2016-03-02 15:21:07','USER_LOGIN',1,'2016-03-02 16:21:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(558,'2016-03-02 15:36:53','USER_LOGIN',1,'2016-03-02 16:36:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(559,'2016-03-02 18:54:23','USER_LOGIN',1,'2016-03-02 19:54:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(560,'2016-03-02 19:11:17','USER_LOGIN',1,'2016-03-02 20:11:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(561,'2016-03-03 18:19:24','USER_LOGIN',1,'2016-03-03 19:19:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(562,'2016-12-21 12:51:38','USER_LOGIN',1,'2016-12-21 13:51:38',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL,NULL,NULL,NULL),(563,'2016-12-21 19:52:09','USER_LOGIN',1,'2016-12-21 20:52:09',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL,NULL,NULL,NULL),(566,'2017-10-03 08:49:43','USER_NEW_PASSWORD',1,'2017-10-03 10:49:43',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(567,'2017-10-03 08:49:43','USER_MODIFY',1,'2017-10-03 10:49:43',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(568,'2017-10-03 09:03:12','USER_MODIFY',1,'2017-10-03 11:03:12',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(569,'2017-10-03 09:03:42','USER_MODIFY',1,'2017-10-03 11:03:42',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(570,'2017-10-03 09:07:36','USER_MODIFY',1,'2017-10-03 11:07:36',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(571,'2017-10-03 09:08:58','USER_NEW_PASSWORD',1,'2017-10-03 11:08:58',1,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(572,'2017-10-03 09:08:58','USER_MODIFY',1,'2017-10-03 11:08:58',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(573,'2017-10-03 09:09:23','USER_MODIFY',1,'2017-10-03 11:09:23',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(574,'2017-10-03 09:11:04','USER_NEW_PASSWORD',1,'2017-10-03 11:11:04',1,'Password change for athestudent','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(575,'2017-10-03 09:11:04','USER_MODIFY',1,'2017-10-03 11:11:04',1,'User athestudent modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(576,'2017-10-03 09:11:53','USER_MODIFY',1,'2017-10-03 11:11:53',1,'User abookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(577,'2017-10-03 09:42:12','USER_LOGIN_FAILED',1,'2017-10-03 11:42:11',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(578,'2017-10-03 09:42:19','USER_LOGIN_FAILED',1,'2017-10-03 11:42:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(579,'2017-10-03 09:42:42','USER_LOGIN_FAILED',1,'2017-10-03 11:42:42',NULL,'Bad value for login or password - login=aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(580,'2017-10-03 09:43:50','USER_LOGIN',1,'2017-10-03 11:43:50',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x788','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(581,'2017-10-03 09:44:44','GROUP_MODIFY',1,'2017-10-03 11:44:44',1,'Group Sale representatives modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(582,'2017-10-03 09:46:25','GROUP_CREATE',1,'2017-10-03 11:46:25',1,'Group Management created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(583,'2017-10-03 09:46:46','GROUP_CREATE',1,'2017-10-03 11:46:46',1,'Group Scientists created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(584,'2017-10-03 09:47:41','USER_CREATE',1,'2017-10-03 11:47:41',1,'User mcurie created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(585,'2017-10-03 09:47:41','USER_NEW_PASSWORD',1,'2017-10-03 11:47:41',1,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(586,'2017-10-03 09:47:53','USER_MODIFY',1,'2017-10-03 11:47:53',1,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(587,'2017-10-03 09:48:32','USER_DELETE',1,'2017-10-03 11:48:32',1,'User bbb removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(588,'2017-10-03 09:48:52','USER_MODIFY',1,'2017-10-03 11:48:52',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(589,'2017-10-03 10:01:28','USER_MODIFY',1,'2017-10-03 12:01:28',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(590,'2017-10-03 10:01:39','USER_MODIFY',1,'2017-10-03 12:01:39',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(591,'2017-10-05 06:32:38','USER_LOGIN_FAILED',1,'2017-10-05 08:32:38',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(592,'2017-10-05 06:32:44','USER_LOGIN',1,'2017-10-05 08:32:44',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(593,'2017-10-05 07:07:52','USER_CREATE',1,'2017-10-05 09:07:52',1,'User atheceo created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(594,'2017-10-05 07:07:52','USER_NEW_PASSWORD',1,'2017-10-05 09:07:52',1,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(595,'2017-10-05 07:09:08','USER_NEW_PASSWORD',1,'2017-10-05 09:09:08',1,'Password change for aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(596,'2017-10-05 07:09:08','USER_MODIFY',1,'2017-10-05 09:09:08',1,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(597,'2017-10-05 07:09:46','USER_CREATE',1,'2017-10-05 09:09:46',1,'User admin created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(598,'2017-10-05 07:09:46','USER_NEW_PASSWORD',1,'2017-10-05 09:09:46',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(599,'2017-10-05 07:10:20','USER_MODIFY',1,'2017-10-05 09:10:20',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(600,'2017-10-05 07:10:48','USER_MODIFY',1,'2017-10-05 09:10:48',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(601,'2017-10-05 07:11:22','USER_NEW_PASSWORD',1,'2017-10-05 09:11:22',1,'Password change for bbookkeeper','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(602,'2017-10-05 07:11:22','USER_MODIFY',1,'2017-10-05 09:11:22',1,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(603,'2017-10-05 07:12:37','USER_MODIFY',1,'2017-10-05 09:12:37',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(604,'2017-10-05 07:13:27','USER_MODIFY',1,'2017-10-05 09:13:27',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(605,'2017-10-05 07:13:52','USER_MODIFY',1,'2017-10-05 09:13:52',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(606,'2017-10-05 07:14:35','USER_LOGOUT',1,'2017-10-05 09:14:35',1,'(UserLogoff,aeinstein)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(607,'2017-10-05 07:14:40','USER_LOGIN_FAILED',1,'2017-10-05 09:14:40',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(608,'2017-10-05 07:14:44','USER_LOGIN_FAILED',1,'2017-10-05 09:14:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(609,'2017-10-05 07:14:49','USER_LOGIN',1,'2017-10-05 09:14:49',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(610,'2017-10-05 07:57:18','USER_MODIFY',1,'2017-10-05 09:57:18',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(611,'2017-10-05 08:06:54','USER_LOGOUT',1,'2017-10-05 10:06:54',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(612,'2017-10-05 08:07:03','USER_LOGIN',1,'2017-10-05 10:07:03',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(613,'2017-10-05 19:18:46','USER_LOGIN',1,'2017-10-05 21:18:46',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(614,'2017-10-05 19:29:35','USER_CREATE',1,'2017-10-05 21:29:35',11,'User ccommercy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(615,'2017-10-05 19:29:35','USER_NEW_PASSWORD',1,'2017-10-05 21:29:35',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(616,'2017-10-05 19:30:13','GROUP_CREATE',1,'2017-10-05 21:30:13',11,'Group Commercial created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(617,'2017-10-05 19:31:37','USER_NEW_PASSWORD',1,'2017-10-05 21:31:37',11,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(618,'2017-10-05 19:31:37','USER_MODIFY',1,'2017-10-05 21:31:37',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(619,'2017-10-05 19:32:00','USER_MODIFY',1,'2017-10-05 21:32:00',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(620,'2017-10-05 19:33:33','USER_CREATE',1,'2017-10-05 21:33:33',11,'User sscientol created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(621,'2017-10-05 19:33:33','USER_NEW_PASSWORD',1,'2017-10-05 21:33:33',11,'Password change for sscientol','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(622,'2017-10-05 19:33:47','USER_NEW_PASSWORD',1,'2017-10-05 21:33:47',11,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(623,'2017-10-05 19:33:47','USER_MODIFY',1,'2017-10-05 21:33:47',11,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(624,'2017-10-05 19:34:23','USER_NEW_PASSWORD',1,'2017-10-05 21:34:23',11,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(625,'2017-10-05 19:34:23','USER_MODIFY',1,'2017-10-05 21:34:23',11,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(626,'2017-10-05 19:34:42','USER_MODIFY',1,'2017-10-05 21:34:42',11,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(627,'2017-10-05 19:36:06','USER_NEW_PASSWORD',1,'2017-10-05 21:36:06',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(628,'2017-10-05 19:36:06','USER_MODIFY',1,'2017-10-05 21:36:06',11,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(629,'2017-10-05 19:36:57','USER_NEW_PASSWORD',1,'2017-10-05 21:36:57',11,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(630,'2017-10-05 19:36:57','USER_MODIFY',1,'2017-10-05 21:36:57',11,'User atheceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(631,'2017-10-05 19:37:27','USER_LOGOUT',1,'2017-10-05 21:37:27',11,'(UserLogoff,atheceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(632,'2017-10-05 19:37:35','USER_LOGIN_FAILED',1,'2017-10-05 21:37:35',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(633,'2017-10-05 19:37:39','USER_LOGIN_FAILED',1,'2017-10-05 21:37:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(634,'2017-10-05 19:37:44','USER_LOGIN_FAILED',1,'2017-10-05 21:37:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(635,'2017-10-05 19:37:49','USER_LOGIN_FAILED',1,'2017-10-05 21:37:49',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(636,'2017-10-05 19:38:12','USER_LOGIN_FAILED',1,'2017-10-05 21:38:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(637,'2017-10-05 19:40:48','USER_LOGIN_FAILED',1,'2017-10-05 21:40:48',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(638,'2017-10-05 19:40:55','USER_LOGIN',1,'2017-10-05 21:40:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(639,'2017-10-05 19:43:34','USER_MODIFY',1,'2017-10-05 21:43:34',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(640,'2017-10-05 19:45:43','USER_CREATE',1,'2017-10-05 21:45:43',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(641,'2017-10-05 19:45:43','USER_NEW_PASSWORD',1,'2017-10-05 21:45:43',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(642,'2017-10-05 19:46:18','USER_DELETE',1,'2017-10-05 21:46:18',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(643,'2017-10-05 19:47:09','USER_MODIFY',1,'2017-10-05 21:47:09',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(644,'2017-10-05 19:47:22','USER_MODIFY',1,'2017-10-05 21:47:22',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(645,'2017-10-05 19:52:05','USER_MODIFY',1,'2017-10-05 21:52:05',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(646,'2017-10-05 19:52:23','USER_MODIFY',1,'2017-10-05 21:52:23',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(647,'2017-10-05 19:54:54','USER_NEW_PASSWORD',1,'2017-10-05 21:54:54',12,'Password change for zzeceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(648,'2017-10-05 19:54:54','USER_MODIFY',1,'2017-10-05 21:54:54',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(649,'2017-10-05 19:57:02','USER_MODIFY',1,'2017-10-05 21:57:02',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(650,'2017-10-05 19:57:57','USER_NEW_PASSWORD',1,'2017-10-05 21:57:57',12,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(651,'2017-10-05 19:57:57','USER_MODIFY',1,'2017-10-05 21:57:57',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(652,'2017-10-05 19:59:42','USER_NEW_PASSWORD',1,'2017-10-05 21:59:42',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(653,'2017-10-05 19:59:42','USER_MODIFY',1,'2017-10-05 21:59:42',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(654,'2017-10-05 20:00:21','USER_MODIFY',1,'2017-10-05 22:00:21',12,'User adminx modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(655,'2017-10-05 20:05:36','USER_MODIFY',1,'2017-10-05 22:05:36',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(656,'2017-10-05 20:06:25','USER_MODIFY',1,'2017-10-05 22:06:25',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(657,'2017-10-05 20:07:18','USER_MODIFY',1,'2017-10-05 22:07:18',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(658,'2017-10-05 20:07:36','USER_MODIFY',1,'2017-10-05 22:07:36',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(659,'2017-10-05 20:08:34','USER_MODIFY',1,'2017-10-05 22:08:34',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(660,'2017-10-05 20:47:52','USER_CREATE',1,'2017-10-05 22:47:52',12,'User cc1 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(661,'2017-10-05 20:47:52','USER_NEW_PASSWORD',1,'2017-10-05 22:47:52',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(662,'2017-10-05 20:47:55','USER_LOGOUT',1,'2017-10-05 22:47:55',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(663,'2017-10-05 20:48:08','USER_LOGIN',1,'2017-10-05 22:48:08',11,'(UserLogged,zzeceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x434','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(664,'2017-10-05 20:48:39','USER_CREATE',1,'2017-10-05 22:48:39',11,'User cc2 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(665,'2017-10-05 20:48:39','USER_NEW_PASSWORD',1,'2017-10-05 22:48:39',11,'Password change for cc2','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(666,'2017-10-05 20:48:59','USER_NEW_PASSWORD',1,'2017-10-05 22:48:59',11,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(667,'2017-10-05 20:48:59','USER_MODIFY',1,'2017-10-05 22:48:59',11,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(668,'2017-10-05 21:06:36','USER_LOGOUT',1,'2017-10-05 23:06:35',11,'(UserLogoff,zzeceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(669,'2017-10-05 21:06:44','USER_LOGIN_FAILED',1,'2017-10-05 23:06:44',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(670,'2017-10-05 21:07:12','USER_LOGIN_FAILED',1,'2017-10-05 23:07:12',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(671,'2017-10-05 21:07:19','USER_LOGIN_FAILED',1,'2017-10-05 23:07:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(672,'2017-10-05 21:07:27','USER_LOGIN_FAILED',1,'2017-10-05 23:07:27',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(673,'2017-10-05 21:07:32','USER_LOGIN',1,'2017-10-05 23:07:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(674,'2017-10-05 21:12:28','USER_NEW_PASSWORD',1,'2017-10-05 23:12:28',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(675,'2017-10-05 21:12:28','USER_MODIFY',1,'2017-10-05 23:12:28',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(676,'2017-10-05 21:13:00','USER_CREATE',1,'2017-10-05 23:13:00',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(677,'2017-10-05 21:13:00','USER_NEW_PASSWORD',1,'2017-10-05 23:13:00',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(678,'2017-10-05 21:13:40','USER_DELETE',1,'2017-10-05 23:13:40',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(679,'2017-10-05 21:14:47','USER_LOGOUT',1,'2017-10-05 23:14:47',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(680,'2017-10-05 21:14:56','USER_LOGIN',1,'2017-10-05 23:14:56',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(681,'2017-10-05 21:15:56','USER_LOGOUT',1,'2017-10-05 23:15:56',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(682,'2017-10-05 21:16:06','USER_LOGIN',1,'2017-10-05 23:16:06',17,'(UserLogged,cc2) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(683,'2017-10-05 21:37:25','USER_LOGOUT',1,'2017-10-05 23:37:25',17,'(UserLogoff,cc2)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(684,'2017-10-05 21:37:31','USER_LOGIN',1,'2017-10-05 23:37:31',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(685,'2017-10-05 21:43:53','USER_LOGOUT',1,'2017-10-05 23:43:53',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(686,'2017-10-05 21:44:00','USER_LOGIN',1,'2017-10-05 23:44:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(687,'2017-10-05 21:46:17','USER_LOGOUT',1,'2017-10-05 23:46:17',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(688,'2017-10-05 21:46:24','USER_LOGIN',1,'2017-10-05 23:46:24',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(689,'2017-11-04 15:17:06','USER_LOGIN',1,'2017-11-04 16:17:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(690,'2017-11-15 22:04:04','USER_LOGIN',1,'2017-11-15 23:04:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(691,'2017-11-15 22:23:45','USER_MODIFY',1,'2017-11-15 23:23:45',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(692,'2017-11-15 22:24:22','USER_MODIFY',1,'2017-11-15 23:24:22',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(693,'2017-11-15 22:24:53','USER_MODIFY',1,'2017-11-15 23:24:53',12,'User cc2 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(694,'2017-11-15 22:25:17','USER_MODIFY',1,'2017-11-15 23:25:17',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(695,'2017-11-15 22:45:37','USER_LOGOUT',1,'2017-11-15 23:45:37',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(696,'2017-11-18 13:41:02','USER_LOGIN',1,'2017-11-18 14:41:02',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(697,'2017-11-18 14:23:35','USER_LOGIN',1,'2017-11-18 15:23:35',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(698,'2017-11-18 15:15:46','USER_LOGOUT',1,'2017-11-18 16:15:46',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(699,'2017-11-18 15:15:51','USER_LOGIN',1,'2017-11-18 16:15:51',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(700,'2017-11-30 17:52:08','USER_LOGIN',1,'2017-11-30 18:52:08',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(701,'2018-01-10 16:45:43','USER_LOGIN',1,'2018-01-10 17:45:43',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(702,'2018-01-10 16:45:52','USER_LOGOUT',1,'2018-01-10 17:45:52',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(703,'2018-01-10 16:46:06','USER_LOGIN',1,'2018-01-10 17:46:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(704,'2018-01-16 14:53:47','USER_LOGIN',1,'2018-01-16 15:53:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(705,'2018-01-16 15:04:29','USER_LOGOUT',1,'2018-01-16 16:04:29',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(706,'2018-01-16 15:04:40','USER_LOGIN',1,'2018-01-16 16:04:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(707,'2018-01-22 09:33:26','USER_LOGIN',1,'2018-01-22 10:33:26',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(708,'2018-01-22 09:35:19','USER_LOGOUT',1,'2018-01-22 10:35:19',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(709,'2018-01-22 09:35:29','USER_LOGIN',1,'2018-01-22 10:35:29',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(710,'2018-01-22 10:47:34','USER_CREATE',1,'2018-01-22 11:47:34',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(711,'2018-01-22 10:47:34','USER_NEW_PASSWORD',1,'2018-01-22 11:47:34',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(712,'2018-01-22 12:07:56','USER_LOGIN',1,'2018-01-22 13:07:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(713,'2018-01-22 12:36:25','USER_NEW_PASSWORD',1,'2018-01-22 13:36:25',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(714,'2018-01-22 12:36:25','USER_MODIFY',1,'2018-01-22 13:36:25',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(715,'2018-01-22 12:56:32','USER_MODIFY',1,'2018-01-22 13:56:32',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(716,'2018-01-22 12:58:05','USER_MODIFY',1,'2018-01-22 13:58:05',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(717,'2018-01-22 13:01:02','USER_MODIFY',1,'2018-01-22 14:01:02',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(718,'2018-01-22 13:01:18','USER_MODIFY',1,'2018-01-22 14:01:18',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(719,'2018-01-22 13:13:42','USER_MODIFY',1,'2018-01-22 14:13:42',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(720,'2018-01-22 13:15:20','USER_DELETE',1,'2018-01-22 14:15:20',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(721,'2018-01-22 13:19:21','USER_LOGOUT',1,'2018-01-22 14:19:21',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(722,'2018-01-22 13:19:32','USER_LOGIN',1,'2018-01-22 14:19:32',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(723,'2018-01-22 13:19:51','USER_LOGOUT',1,'2018-01-22 14:19:51',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(724,'2018-01-22 13:20:01','USER_LOGIN',1,'2018-01-22 14:20:01',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(725,'2018-01-22 13:28:22','USER_LOGOUT',1,'2018-01-22 14:28:22',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(726,'2018-01-22 13:28:35','USER_LOGIN',1,'2018-01-22 14:28:35',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(727,'2018-01-22 13:33:54','USER_LOGOUT',1,'2018-01-22 14:33:54',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(728,'2018-01-22 13:34:05','USER_LOGIN',1,'2018-01-22 14:34:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(729,'2018-01-22 13:51:46','USER_MODIFY',1,'2018-01-22 14:51:46',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(730,'2018-01-22 16:20:12','USER_LOGIN',1,'2018-01-22 17:20:12',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(731,'2018-01-22 16:20:22','USER_LOGOUT',1,'2018-01-22 17:20:22',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(732,'2018-01-22 16:20:36','USER_LOGIN',1,'2018-01-22 17:20:36',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(733,'2018-01-22 16:27:02','USER_CREATE',1,'2018-01-22 17:27:02',12,'User ldestailleur created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(734,'2018-01-22 16:27:02','USER_NEW_PASSWORD',1,'2018-01-22 17:27:02',12,'Password change for ldestailleur','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(735,'2018-01-22 16:28:34','USER_MODIFY',1,'2018-01-22 17:28:34',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(736,'2018-01-22 16:30:01','USER_ENABLEDISABLE',1,'2018-01-22 17:30:01',12,'User cc2 activated','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(737,'2018-01-22 17:11:06','USER_LOGIN',1,'2018-01-22 18:11:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(738,'2018-01-22 18:00:02','USER_DELETE',1,'2018-01-22 19:00:02',12,'User zzz removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(739,'2018-01-22 18:01:40','USER_DELETE',1,'2018-01-22 19:01:40',12,'User aaab removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(740,'2018-01-22 18:01:52','USER_DELETE',1,'2018-01-22 19:01:52',12,'User zzzg removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(741,'2018-03-13 10:54:59','USER_LOGIN',1,'2018-03-13 14:54:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x971','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',NULL,NULL,NULL,NULL),(742,'2018-07-30 11:13:10','USER_LOGIN',1,'2018-07-30 15:13:10',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(743,'2018-07-30 12:50:23','USER_CREATE',1,'2018-07-30 16:50:23',12,'User eldy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(744,'2018-07-30 12:50:23','USER_CREATE',1,'2018-07-30 16:50:23',12,'User eldy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(745,'2018-07-30 12:50:23','USER_NEW_PASSWORD',1,'2018-07-30 16:50:23',12,'Password change for eldy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(746,'2018-07-30 12:50:38','USER_MODIFY',1,'2018-07-30 16:50:38',12,'User eldy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(747,'2018-07-30 12:50:54','USER_DELETE',1,'2018-07-30 16:50:54',12,'User eldy removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(748,'2018-07-30 12:51:23','USER_NEW_PASSWORD',1,'2018-07-30 16:51:23',12,'Password change for ldestailleur','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(749,'2018-07-30 12:51:23','USER_MODIFY',1,'2018-07-30 16:51:23',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(750,'2018-07-30 18:26:58','USER_LOGIN',1,'2018-07-30 22:26:58',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(751,'2018-07-30 18:27:40','USER_LOGOUT',1,'2018-07-30 22:27:40',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(752,'2018-07-30 18:27:47','USER_LOGIN',1,'2018-07-30 22:27:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(753,'2018-07-30 19:00:00','USER_LOGOUT',1,'2018-07-30 23:00:00',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(754,'2018-07-30 19:00:04','USER_LOGIN',1,'2018-07-30 23:00:04',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(755,'2018-07-30 19:00:14','USER_LOGOUT',1,'2018-07-30 23:00:14',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(756,'2018-07-30 19:00:19','USER_LOGIN',1,'2018-07-30 23:00:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(757,'2018-07-30 19:00:43','USER_LOGOUT',1,'2018-07-30 23:00:43',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(758,'2018-07-30 19:00:48','USER_LOGIN',1,'2018-07-30 23:00:48',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(759,'2018-07-30 19:03:52','USER_LOGOUT',1,'2018-07-30 23:03:52',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(760,'2018-07-30 19:03:57','USER_LOGIN_FAILED',1,'2018-07-30 23:03:57',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(761,'2018-07-30 19:03:59','USER_LOGIN',1,'2018-07-30 23:03:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(762,'2018-07-30 19:04:13','USER_LOGOUT',1,'2018-07-30 23:04:13',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(763,'2018-07-30 19:04:17','USER_LOGIN',1,'2018-07-30 23:04:17',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(764,'2018-07-30 19:04:26','USER_LOGOUT',1,'2018-07-30 23:04:26',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(765,'2018-07-30 19:04:31','USER_LOGIN',1,'2018-07-30 23:04:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(766,'2018-07-30 19:10:50','USER_LOGOUT',1,'2018-07-30 23:10:50',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(767,'2018-07-30 19:10:54','USER_LOGIN',1,'2018-07-30 23:10:54',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(768,'2018-07-31 10:15:52','USER_LOGIN',1,'2018-07-31 14:15:52',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(769,'2018-07-31 10:16:27','USER_LOGIN',1,'2018-07-31 14:16:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(770,'2018-07-31 10:32:14','USER_LOGIN',1,'2018-07-31 14:32:14',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(771,'2018-07-31 10:36:28','USER_LOGIN',1,'2018-07-31 14:36:28',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Links (2.8; Linux 3.19.0-46-generic x86_64; GNU C 4.8.2; text)',NULL,NULL,NULL,NULL),(772,'2018-07-31 10:40:10','USER_LOGIN',1,'2018-07-31 14:40:10',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Links (2.8; Linux 3.19.0-46-generic x86_64; GNU C 4.8.2; text)',NULL,NULL,NULL,NULL),(773,'2018-07-31 10:54:16','USER_LOGIN',1,'2018-07-31 14:54:16',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(774,'2018-07-31 12:52:52','USER_LOGIN',1,'2018-07-31 16:52:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x592','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(775,'2018-07-31 13:25:33','USER_LOGOUT',1,'2018-07-31 17:25:33',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(776,'2018-07-31 13:26:32','USER_LOGIN',1,'2018-07-31 17:26:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1280x751','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(777,'2018-07-31 14:13:57','USER_LOGOUT',1,'2018-07-31 18:13:57',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(778,'2018-07-31 14:14:04','USER_LOGIN',1,'2018-07-31 18:14:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(779,'2018-07-31 16:04:35','USER_LOGIN',1,'2018-07-31 20:04:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(780,'2018-07-31 21:14:14','USER_LOGIN',1,'2018-08-01 01:14:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(781,'2017-01-29 15:14:05','USER_LOGOUT',1,'2017-01-29 19:14:05',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(782,'2017-01-29 15:34:43','USER_LOGIN',1,'2017-01-29 19:34:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(783,'2017-01-29 15:35:04','USER_LOGOUT',1,'2017-01-29 19:35:04',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(784,'2017-01-29 15:35:12','USER_LOGIN',1,'2017-01-29 19:35:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(785,'2017-01-29 15:36:43','USER_LOGOUT',1,'2017-01-29 19:36:43',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(786,'2017-01-29 15:41:21','USER_LOGIN',1,'2017-01-29 19:41:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(787,'2017-01-29 15:41:41','USER_LOGOUT',1,'2017-01-29 19:41:41',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(788,'2017-01-29 15:42:43','USER_LOGIN',1,'2017-01-29 19:42:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(789,'2017-01-29 15:43:18','USER_LOGOUT',1,'2017-01-29 19:43:18',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(790,'2017-01-29 15:46:31','USER_LOGIN',1,'2017-01-29 19:46:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(791,'2017-01-29 16:18:56','USER_LOGIN',1,'2017-01-29 20:18:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=360x526','192.168.0.254','Mozilla/5.0 (Linux; Android 6.0; LG-H818 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 - DoliDroid - Android client pour Dolibarr ERP-CRM',NULL,NULL,NULL,NULL),(792,'2017-01-29 17:20:59','USER_LOGIN',1,'2017-01-29 21:20:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(793,'2017-01-30 11:19:40','USER_LOGIN',1,'2017-01-30 15:19:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(794,'2017-01-31 16:49:39','USER_LOGIN',1,'2017-01-31 20:49:39',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x520','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(795,'2017-02-01 10:55:23','USER_LOGIN',1,'2017-02-01 14:55:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(796,'2017-02-01 13:34:31','USER_LOGIN',1,'2017-02-01 17:34:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(797,'2017-02-01 14:41:26','USER_LOGIN',1,'2017-02-01 18:41:26',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(798,'2017-02-01 23:51:48','USER_LOGIN_FAILED',1,'2017-02-02 03:51:48',NULL,'Bad value for login or password - login=autologin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(799,'2017-02-01 23:52:55','USER_LOGIN',1,'2017-02-02 03:52:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(800,'2017-02-01 23:55:45','USER_CREATE',1,'2017-02-02 03:55:45',12,'User aboston created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(801,'2017-02-01 23:55:45','USER_NEW_PASSWORD',1,'2017-02-02 03:55:45',12,'Password change for aboston','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(802,'2017-02-01 23:56:38','USER_MODIFY',1,'2017-02-02 03:56:38',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(803,'2017-02-01 23:56:50','USER_MODIFY',1,'2017-02-02 03:56:50',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(804,'2017-02-02 01:14:44','USER_LOGIN',1,'2017-02-02 05:14:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(805,'2017-02-03 10:27:18','USER_LOGIN',1,'2017-02-03 14:27:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(806,'2017-02-04 10:22:34','USER_LOGIN',1,'2017-02-04 14:22:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x489','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(807,'2017-02-06 04:01:31','USER_LOGIN',1,'2017-02-06 08:01:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(808,'2017-02-06 10:21:32','USER_LOGIN',1,'2017-02-06 14:21:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(809,'2017-02-06 19:09:27','USER_LOGIN',1,'2017-02-06 23:09:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(810,'2017-02-06 23:39:17','USER_LOGIN',1,'2017-02-07 03:39:17',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(811,'2017-02-07 11:36:34','USER_LOGIN',1,'2017-02-07 15:36:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x676','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(812,'2017-02-07 18:51:53','USER_LOGIN',1,'2017-02-07 22:51:53',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(813,'2017-02-07 23:13:40','USER_LOGIN',1,'2017-02-08 03:13:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(814,'2017-02-08 09:29:12','USER_LOGIN',1,'2017-02-08 13:29:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(815,'2017-02-08 17:33:12','USER_LOGIN',1,'2017-02-08 21:33:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(816,'2017-02-09 17:30:34','USER_LOGIN',1,'2017-02-09 21:30:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(817,'2017-02-10 09:30:02','USER_LOGIN',1,'2017-02-10 13:30:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(818,'2017-02-10 16:16:14','USER_LOGIN',1,'2017-02-10 20:16:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(819,'2017-02-10 17:28:15','USER_LOGIN',1,'2017-02-10 21:28:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(820,'2017-02-11 12:54:03','USER_LOGIN',1,'2017-02-11 16:54:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(821,'2017-02-11 17:23:52','USER_LOGIN',1,'2017-02-11 21:23:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(822,'2017-02-12 12:44:03','USER_LOGIN',1,'2017-02-12 16:44:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(823,'2017-02-12 16:42:13','USER_LOGIN',1,'2017-02-12 20:42:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(824,'2017-02-12 19:14:18','USER_LOGIN',1,'2017-02-12 23:14:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(825,'2017-02-15 17:17:00','USER_LOGIN',1,'2017-02-15 21:17:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(826,'2017-02-15 22:02:40','USER_LOGIN',1,'2017-02-16 02:02:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(827,'2017-02-16 22:13:27','USER_LOGIN',1,'2017-02-17 02:13:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x619','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(828,'2017-02-16 23:54:04','USER_LOGIN',1,'2017-02-17 03:54:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(829,'2017-02-17 09:14:27','USER_LOGIN',1,'2017-02-17 13:14:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(830,'2017-02-17 12:07:05','USER_LOGIN',1,'2017-02-17 16:07:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(831,'2017-02-19 21:22:20','USER_LOGIN',1,'2017-02-20 01:22:20',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(832,'2017-02-20 09:26:47','USER_LOGIN',1,'2017-02-20 13:26:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(833,'2017-02-20 16:39:55','USER_LOGIN',1,'2017-02-20 20:39:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(834,'2017-02-20 16:49:00','USER_MODIFY',1,'2017-02-20 20:49:00',12,'Modification utilisateur ccommerson','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(835,'2017-02-20 17:57:15','USER_LOGIN',1,'2017-02-20 21:57:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(836,'2017-02-20 19:43:48','USER_LOGIN',1,'2017-02-20 23:43:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(837,'2017-02-21 00:04:05','USER_LOGIN',1,'2017-02-21 04:04:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(838,'2017-02-21 10:23:13','USER_LOGIN',1,'2017-02-21 14:23:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(839,'2017-02-21 10:30:17','USER_LOGOUT',1,'2017-02-21 14:30:17',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(840,'2017-02-21 10:30:22','USER_LOGIN',1,'2017-02-21 14:30:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(841,'2017-02-21 11:44:05','USER_LOGIN',1,'2017-02-21 15:44:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(842,'2017-05-12 09:02:48','USER_LOGIN',1,'2017-05-12 13:02:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',NULL,NULL,NULL,NULL),(843,'2017-08-27 13:29:16','USER_LOGIN',1,'2017-08-27 17:29:16',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(844,'2017-08-28 09:11:07','USER_LOGIN',1,'2017-08-28 13:11:07',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(845,'2017-08-28 10:08:58','USER_LOGIN',1,'2017-08-28 14:08:58',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(846,'2017-08-28 10:12:46','USER_MODIFY',1,'2017-08-28 14:12:46',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(847,'2017-08-28 10:28:25','USER_LOGIN',1,'2017-08-28 14:28:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(848,'2017-08-28 10:28:36','USER_LOGOUT',1,'2017-08-28 14:28:36',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(849,'2017-08-28 10:34:50','USER_LOGIN',1,'2017-08-28 14:34:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(850,'2017-08-28 11:59:02','USER_LOGIN',1,'2017-08-28 15:59:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(851,'2017-08-29 09:57:34','USER_LOGIN',1,'2017-08-29 13:57:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(852,'2017-08-29 11:05:51','USER_LOGIN',1,'2017-08-29 15:05:51',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(853,'2017-08-29 14:15:58','USER_LOGIN',1,'2017-08-29 18:15:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(854,'2017-08-29 17:49:28','USER_LOGIN',1,'2017-08-29 21:49:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(855,'2017-08-30 11:53:25','USER_LOGIN',1,'2017-08-30 15:53:25',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(856,'2017-08-30 12:19:31','USER_MODIFY',1,'2017-08-30 16:19:31',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(857,'2017-08-30 12:19:32','USER_MODIFY',1,'2017-08-30 16:19:32',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(858,'2017-08-30 12:19:33','USER_MODIFY',1,'2017-08-30 16:19:33',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(859,'2017-08-30 12:21:42','USER_LOGOUT',1,'2017-08-30 16:21:42',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(860,'2017-08-30 12:21:48','USER_LOGIN',1,'2017-08-30 16:21:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(861,'2017-08-30 15:02:06','USER_LOGIN',1,'2017-08-30 19:02:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(862,'2017-08-31 09:25:42','USER_LOGIN',1,'2017-08-31 13:25:42',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(863,'2017-09-04 07:51:21','USER_LOGIN',1,'2017-09-04 11:51:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x577','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(864,'2017-09-04 09:17:09','USER_LOGIN',1,'2017-09-04 13:17:09',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(865,'2017-09-04 13:40:28','USER_LOGIN',1,'2017-09-04 17:40:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(866,'2017-09-06 07:55:30','USER_LOGIN',1,'2017-09-06 11:55:30',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(867,'2017-09-06 07:55:33','USER_LOGOUT',1,'2017-09-06 11:55:33',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(868,'2017-09-06 07:55:38','USER_LOGIN',1,'2017-09-06 11:55:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(869,'2017-09-06 16:03:38','USER_LOGIN',1,'2017-09-06 20:03:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(870,'2017-09-06 19:43:07','USER_LOGIN',1,'2017-09-06 23:43:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(871,'2018-01-19 11:18:08','USER_LOGOUT',1,'2018-01-19 11:18:08',12,'(UserLogoff,admin)','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',NULL,NULL,NULL,NULL),(872,'2018-01-19 11:18:47','USER_LOGIN',1,'2018-01-19 11:18:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x965','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',NULL,NULL,NULL,NULL),(873,'2018-01-19 11:21:41','USER_LOGIN',1,'2018-01-19 11:21:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x926','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(874,'2018-01-19 11:24:18','USER_NEW_PASSWORD',1,'2018-01-19 11:24:18',12,'Password change for admin','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(875,'2018-01-19 11:24:18','USER_MODIFY',1,'2018-01-19 11:24:18',12,'User admin modified','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(876,'2018-01-19 11:28:45','USER_LOGOUT',1,'2018-01-19 11:28:45',12,'(UserLogoff,admin)','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(877,'2018-03-16 09:54:15','USER_LOGIN_FAILED',1,'2018-03-16 13:54:15',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',NULL,NULL,NULL,NULL),(878,'2018-03-16 09:54:23','USER_LOGIN',1,'2018-03-16 13:54:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x936','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',NULL,NULL,NULL,NULL),(879,'2019-09-26 11:35:07','USER_MODIFY',1,'2019-09-26 13:35:07',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(880,'2019-09-26 11:35:33','USER_MODIFY',1,'2019-09-26 13:35:33',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(881,'2019-09-26 11:36:33','USER_MODIFY',1,'2019-09-26 13:36:33',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(882,'2019-09-26 11:36:56','USER_MODIFY',1,'2019-09-26 13:36:56',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(883,'2019-09-26 11:37:30','USER_MODIFY',1,'2019-09-26 13:37:30',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(884,'2019-09-26 11:37:56','USER_MODIFY',1,'2019-09-26 13:37:56',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(885,'2019-09-26 11:38:11','USER_MODIFY',1,'2019-09-26 13:38:11',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(886,'2019-09-26 11:38:27','USER_MODIFY',1,'2019-09-26 13:38:27',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(887,'2019-09-26 11:38:48','USER_MODIFY',1,'2019-09-26 13:38:48',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(888,'2019-09-26 11:39:35','USER_MODIFY',1,'2019-09-26 13:39:35',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(889,'2019-09-26 11:41:28','USER_MODIFY',1,'2019-09-26 13:41:28',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(890,'2019-09-26 11:43:27','USER_MODIFY',1,'2019-09-26 13:43:27',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(891,'2019-09-26 11:46:44','USER_MODIFY',1,'2019-09-26 13:46:44',12,'User aleerfok modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(892,'2019-09-26 11:46:54','USER_MODIFY',1,'2019-09-26 13:46:54',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(893,'2019-09-26 11:47:08','USER_MODIFY',1,'2019-09-26 13:47:08',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(894,'2019-09-26 11:48:04','USER_MODIFY',1,'2019-09-26 13:48:04',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(895,'2019-09-26 11:48:32','USER_MODIFY',1,'2019-09-26 13:48:32',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(896,'2019-09-26 11:48:49','USER_MODIFY',1,'2019-09-26 13:48:49',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(897,'2019-09-26 11:49:12','USER_MODIFY',1,'2019-09-26 13:49:12',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(898,'2019-09-26 11:49:21','USER_MODIFY',1,'2019-09-26 13:49:21',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(899,'2019-09-26 11:49:28','USER_MODIFY',1,'2019-09-26 13:49:28',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(900,'2019-09-26 11:49:37','USER_MODIFY',1,'2019-09-26 13:49:37',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(901,'2019-09-26 11:49:46','USER_MODIFY',1,'2019-09-26 13:49:46',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(902,'2019-09-26 11:49:57','USER_MODIFY',1,'2019-09-26 13:49:57',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(903,'2019-09-26 11:50:17','USER_MODIFY',1,'2019-09-26 13:50:17',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(904,'2019-09-26 11:50:43','USER_MODIFY',1,'2019-09-26 13:50:43',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(905,'2019-09-26 11:51:10','USER_MODIFY',1,'2019-09-26 13:51:10',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(906,'2019-09-26 11:51:36','USER_MODIFY',1,'2019-09-26 13:51:36',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(907,'2019-09-26 11:52:16','USER_MODIFY',1,'2019-09-26 13:52:16',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(908,'2019-09-26 11:52:35','USER_MODIFY',1,'2019-09-26 13:52:35',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(909,'2019-09-26 11:52:59','USER_MODIFY',1,'2019-09-26 13:52:59',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(910,'2019-09-26 11:53:28','USER_MODIFY',1,'2019-09-26 13:53:28',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(911,'2019-09-26 11:53:50','USER_MODIFY',1,'2019-09-26 13:53:50',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(912,'2019-09-26 11:54:18','USER_MODIFY',1,'2019-09-26 13:54:18',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(913,'2019-09-26 11:54:43','USER_MODIFY',1,'2019-09-26 13:54:43',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(914,'2019-09-26 11:55:09','USER_MODIFY',1,'2019-09-26 13:55:09',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(915,'2019-09-26 11:55:23','USER_MODIFY',1,'2019-09-26 13:55:23',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(916,'2019-09-26 11:55:35','USER_MODIFY',1,'2019-09-26 13:55:35',12,'User aleerfok modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(917,'2019-09-26 11:55:58','USER_MODIFY',1,'2019-09-26 13:55:58',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(918,'2019-09-26 15:28:46','USER_LOGIN_FAILED',1,'2019-09-26 17:28:46',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(919,'2019-09-26 15:28:51','USER_LOGIN_FAILED',1,'2019-09-26 17:28:51',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(920,'2019-09-26 15:28:55','USER_LOGIN',1,'2019-09-26 17:28:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(921,'2019-09-27 14:51:19','USER_LOGIN_FAILED',1,'2019-09-27 16:51:19',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(922,'2019-09-27 14:51:49','USER_LOGIN_FAILED',1,'2019-09-27 16:51:49',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(923,'2019-09-27 14:51:55','USER_LOGIN_FAILED',1,'2019-09-27 16:51:55',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(924,'2019-09-27 14:52:22','USER_LOGIN_FAILED',1,'2019-09-27 16:52:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(925,'2019-09-27 14:52:41','USER_LOGIN',1,'2019-09-27 16:52:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(926,'2019-09-27 15:47:07','USER_LOGIN_FAILED',1,'2019-09-27 17:47:07',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(927,'2019-09-27 15:47:09','USER_LOGIN_FAILED',1,'2019-09-27 17:47:09',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(928,'2019-09-27 15:47:12','USER_LOGIN',1,'2019-09-27 17:47:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(929,'2019-09-27 16:39:57','USER_LOGIN',1,'2019-09-27 18:39:57',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(930,'2019-09-30 13:49:22','USER_LOGIN_FAILED',1,'2019-09-30 15:49:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(931,'2019-09-30 13:49:27','USER_LOGIN_FAILED',1,'2019-09-30 15:49:27',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(932,'2019-09-30 13:49:30','USER_LOGIN',1,'2019-09-30 15:49:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(933,'2019-09-30 15:49:05','USER_LOGIN_FAILED',1,'2019-09-30 17:49:05',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(934,'2019-09-30 15:49:08','USER_LOGIN',1,'2019-09-30 17:49:08',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(935,'2019-10-01 11:47:44','USER_LOGIN',1,'2019-10-01 13:47:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(936,'2019-10-01 13:24:03','USER_LOGIN',1,'2019-10-01 15:24:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(937,'2019-10-02 11:41:30','USER_LOGIN_FAILED',1,'2019-10-02 13:41:30',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(938,'2019-10-02 11:41:35','USER_LOGIN',1,'2019-10-02 13:41:35',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(939,'2019-10-02 17:01:42','USER_LOGIN_FAILED',1,'2019-10-02 19:01:42',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(940,'2019-10-02 17:01:44','USER_LOGIN',1,'2019-10-02 19:01:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(941,'2019-10-04 08:06:36','USER_LOGIN_FAILED',1,'2019-10-04 10:06:36',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(942,'2019-10-04 08:06:40','USER_LOGIN',1,'2019-10-04 10:06:40',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(943,'2019-10-04 08:06:46','USER_LOGOUT',1,'2019-10-04 10:06:46',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(944,'2019-10-04 08:06:50','USER_LOGIN',1,'2019-10-04 10:06:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(945,'2019-10-04 10:28:53','USER_LOGIN_FAILED',1,'2019-10-04 12:28:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(946,'2019-10-04 10:31:06','USER_LOGIN',1,'2019-10-04 12:31:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x520','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(947,'2019-10-04 14:55:58','USER_LOGIN',1,'2019-10-04 16:55:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(948,'2019-10-04 16:45:36','USER_LOGIN_FAILED',1,'2019-10-04 18:45:36',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(949,'2019-10-04 16:45:40','USER_LOGIN',1,'2019-10-04 18:45:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(950,'2019-10-05 09:10:32','USER_LOGIN',1,'2019-10-05 11:10:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(951,'2019-10-06 09:02:10','USER_LOGIN_FAILED',1,'2019-10-06 11:02:10',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(952,'2019-10-06 09:02:12','USER_LOGIN',1,'2019-10-06 11:02:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x513','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(953,'2019-10-07 09:00:29','USER_LOGIN_FAILED',1,'2019-10-07 11:00:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(954,'2019-10-07 09:00:33','USER_LOGIN',1,'2019-10-07 11:00:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(955,'2019-10-07 15:05:26','USER_LOGIN_FAILED',1,'2019-10-07 17:05:26',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(956,'2019-10-07 15:05:29','USER_LOGIN_FAILED',1,'2019-10-07 17:05:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(957,'2019-10-08 09:57:04','USER_LOGIN_FAILED',1,'2019-10-08 11:57:04',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(958,'2019-10-08 09:57:07','USER_LOGIN',1,'2019-10-08 11:57:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x637','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(959,'2019-10-08 11:18:14','USER_LOGIN_FAILED',1,'2019-10-08 13:18:14',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(960,'2019-10-08 11:18:18','USER_LOGIN',1,'2019-10-08 13:18:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(961,'2019-10-08 13:29:24','USER_LOGIN',1,'2019-10-08 15:29:24',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(962,'2019-10-08 17:04:42','USER_LOGIN_FAILED',1,'2019-10-08 19:04:42',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(963,'2019-10-08 17:04:46','USER_LOGIN',1,'2019-10-08 19:04:46',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(964,'2019-10-08 18:37:06','USER_LOGIN_FAILED',1,'2019-10-08 20:37:06',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(965,'2019-10-08 18:38:29','USER_LOGIN_FAILED',1,'2019-10-08 20:38:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(966,'2019-10-08 18:38:32','USER_LOGIN',1,'2019-10-08 20:38:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(967,'2019-10-08 19:01:07','USER_MODIFY',1,'2019-10-08 21:01:07',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(968,'2019-11-28 15:09:03','USER_LOGOUT',1,'2019-11-28 19:09:03',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(969,'2019-11-28 15:09:18','USER_LOGIN_FAILED',1,'2019-11-28 19:09:18',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(970,'2019-11-28 15:09:22','USER_LOGIN',1,'2019-11-28 19:09:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(971,'2019-11-28 16:25:52','USER_LOGIN_FAILED',1,'2019-11-28 20:25:52',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(972,'2019-11-28 16:25:56','USER_LOGIN',1,'2019-11-28 20:25:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(973,'2019-11-29 08:43:22','USER_LOGIN_FAILED',1,'2019-11-29 12:43:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(974,'2019-11-29 08:43:24','USER_LOGIN',1,'2019-11-29 12:43:24',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(975,'2019-12-19 11:12:30','USER_LOGIN_FAILED',1,'2019-12-19 15:12:30',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(976,'2019-12-19 11:12:33','USER_LOGIN',1,'2019-12-19 15:12:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(977,'2019-12-20 09:38:10','USER_LOGIN_FAILED',1,'2019-12-20 13:38:10',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(978,'2019-12-20 09:38:13','USER_LOGIN',1,'2019-12-20 13:38:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(979,'2019-12-20 15:59:50','USER_LOGIN',1,'2019-12-20 19:59:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(980,'2019-12-21 13:05:49','USER_LOGIN_FAILED',1,'2019-12-21 17:05:49',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(981,'2019-12-21 13:05:52','USER_LOGIN',1,'2019-12-21 17:05:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x552','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(982,'2019-12-21 15:26:25','USER_LOGIN_FAILED',1,'2019-12-21 19:26:25',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(983,'2019-12-21 15:26:28','USER_LOGIN',1,'2019-12-21 19:26:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(984,'2019-12-21 15:27:00','USER_LOGOUT',1,'2019-12-21 19:27:00',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(985,'2019-12-21 15:27:05','USER_LOGIN',1,'2019-12-21 19:27:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(986,'2019-12-21 15:27:44','USER_LOGOUT',1,'2019-12-21 19:27:44',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(987,'2019-12-21 15:28:04','USER_LOGIN',1,'2019-12-21 19:28:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(988,'2019-12-22 11:59:41','USER_LOGIN',1,'2019-12-22 15:59:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(989,'2019-12-22 15:06:01','USER_LOGIN_FAILED',1,'2019-12-22 19:06:01',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(990,'2019-12-22 15:06:06','USER_LOGIN_FAILED',1,'2019-12-22 19:06:06',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(991,'2019-12-22 15:06:15','USER_LOGIN',1,'2019-12-22 19:06:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(992,'2019-12-22 18:43:21','USER_LOGIN',1,'2019-12-22 22:43:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(993,'2019-12-22 20:16:19','USER_LOGIN',1,'2019-12-23 00:16:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x584','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(994,'2019-12-23 10:05:11','USER_LOGIN_FAILED',1,'2019-12-23 14:05:11',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(995,'2019-12-23 10:05:14','USER_LOGIN',1,'2019-12-23 14:05:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(996,'2019-12-23 13:24:50','USER_LOGIN_FAILED',1,'2019-12-23 17:24:50',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(997,'2019-12-23 13:24:54','USER_LOGIN',1,'2019-12-23 17:24:54',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(998,'2019-12-25 21:37:28','USER_LOGIN_FAILED',1,'2019-12-26 01:37:28',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(999,'2019-12-25 21:37:30','USER_LOGIN',1,'2019-12-26 01:37:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1000,'2020-01-01 10:23:41','USER_LOGIN_FAILED',1,'2020-01-01 14:23:41',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1001,'2020-01-01 10:23:43','USER_LOGIN',1,'2020-01-01 14:23:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1002,'2020-01-01 19:52:00','USER_LOGIN_FAILED',1,'2020-01-01 23:52:00',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1003,'2020-01-01 19:52:07','USER_LOGIN',1,'2020-01-01 23:52:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1004,'2020-01-02 13:46:18','USER_LOGIN',1,'2020-01-02 17:46:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1005,'2020-01-02 14:49:05','USER_LOGIN',1,'2020-01-02 18:49:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x710','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1006,'2020-01-02 16:44:11','USER_LOGIN_FAILED',1,'2020-01-02 20:44:11',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1007,'2020-01-02 16:44:14','USER_LOGIN',1,'2020-01-02 20:44:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1008,'2020-01-02 18:54:45','USER_LOGIN_FAILED',1,'2020-01-02 22:54:45',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1009,'2020-01-02 18:54:48','USER_LOGIN',1,'2020-01-02 22:54:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1010,'2020-01-03 09:22:02','USER_LOGIN_FAILED',1,'2020-01-03 13:22:02',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1011,'2020-01-03 09:22:06','USER_LOGIN',1,'2020-01-03 13:22:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1012,'2020-01-03 11:56:30','USER_LOGIN',1,'2020-01-03 15:56:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1013,'2020-01-04 13:44:25','USER_LOGIN_FAILED',1,'2020-01-04 17:44:25',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1014,'2020-01-04 13:44:28','USER_LOGIN',1,'2020-01-04 17:44:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1015,'2020-01-05 19:36:34','USER_LOGIN_FAILED',1,'2020-01-05 23:36:34',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1016,'2020-01-05 19:36:39','USER_LOGIN',1,'2020-01-05 23:36:39',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1017,'2020-01-06 01:12:23','USER_LOGIN_FAILED',1,'2020-01-06 05:12:23',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1018,'2020-01-06 01:12:25','USER_LOGIN',1,'2020-01-06 05:12:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1019,'2020-01-06 10:33:33','USER_LOGIN',1,'2020-01-06 14:33:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1020,'2020-01-06 13:59:58','USER_LOGIN',1,'2020-01-06 17:59:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1021,'2020-01-06 16:08:41','USER_LOGIN',1,'2020-01-06 20:08:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1022,'2020-01-07 13:19:13','USER_LOGIN',1,'2020-01-07 17:19:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1023,'2020-01-07 15:06:53','USER_LOGIN_FAILED',1,'2020-01-07 19:06:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1024,'2020-01-07 15:06:59','USER_LOGIN',1,'2020-01-07 19:06:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1025,'2020-01-07 16:21:53','USER_LOGIN_FAILED',1,'2020-01-07 20:21:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1026,'2020-01-07 16:21:56','USER_LOGIN',1,'2020-01-07 20:21:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1027,'2020-01-07 17:46:46','USER_LOGIN',1,'2020-01-07 21:46:46',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1028,'2020-01-08 01:31:40','USER_LOGIN',1,'2020-01-08 05:31:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1029,'2020-01-08 15:32:34','USER_LOGIN_FAILED',1,'2020-01-08 19:32:34',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1030,'2020-01-08 15:32:38','USER_LOGIN',1,'2020-01-08 19:32:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1031,'2020-01-09 15:59:02','USER_LOGIN',1,'2020-01-09 19:59:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1032,'2020-01-09 21:33:47','USER_LOGIN',1,'2020-01-10 01:33:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1033,'2020-01-10 00:42:07','USER_LOGIN',1,'2020-01-10 04:42:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1034,'2020-01-10 22:18:15','USER_LOGIN',1,'2020-01-11 02:18:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1035,'2020-01-11 13:11:59','USER_LOGIN',1,'2020-01-11 17:11:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1036,'2020-01-12 20:13:37','USER_LOGIN',1,'2020-01-13 00:13:37',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1037,'2020-01-12 20:58:27','USER_LOGIN',1,'2020-01-13 00:58:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1038,'2020-01-13 03:35:56','USER_LOGIN',1,'2020-01-13 07:35:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1039,'2020-01-13 10:37:51','USER_LOGIN_FAILED',1,'2020-01-13 14:37:51',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1040,'2020-01-13 10:37:55','USER_LOGIN',1,'2020-01-13 14:37:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1041,'2020-01-13 14:34:55','USER_LOGIN_FAILED',1,'2020-01-13 18:34:55',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1042,'2020-01-13 14:34:58','USER_LOGIN',1,'2020-01-13 18:34:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1043,'2020-01-15 10:28:04','USER_LOGIN_FAILED',1,'2020-01-15 14:28:04',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1044,'2020-01-15 10:28:07','USER_LOGIN',1,'2020-01-15 14:28:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1045,'2020-01-15 11:49:56','USER_LOGIN_FAILED',1,'2020-01-15 15:49:56',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1046,'2020-01-15 11:49:58','USER_LOGIN',1,'2020-01-15 15:49:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1047,'2020-01-15 13:35:01','USER_LOGIN_FAILED',1,'2020-01-15 17:35:01',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1048,'2020-01-15 13:35:04','USER_LOGIN',1,'2020-01-15 17:35:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1049,'2020-01-15 14:41:15','USER_LOGIN_FAILED',1,'2020-01-15 18:41:15',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1050,'2020-01-15 14:41:18','USER_LOGIN',1,'2020-01-15 18:41:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1051,'2020-01-15 18:14:40','USER_LOGIN',1,'2020-01-15 22:14:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1052,'2020-01-15 20:03:35','USER_LOGIN',1,'2020-01-16 00:03:35',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1053,'2020-01-15 20:41:56','USER_LOGIN',1,'2020-01-16 00:41:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1054,'2020-01-16 01:01:22','USER_LOGIN',1,'2020-01-16 02:01:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1055,'2020-01-16 15:43:23','USER_LOGIN',1,'2020-01-16 16:43:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1056,'2020-01-16 15:44:42','USER_ENABLEDISABLE',1,'2020-01-16 16:44:42',12,'User aboston activated','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1057,'2020-01-16 17:01:27','USER_LOGIN',1,'2020-01-16 18:01:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1058,'2020-01-17 09:34:03','USER_LOGIN',1,'2020-01-17 10:34:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1059,'2020-01-18 15:17:00','USER_LOGIN',1,'2020-01-18 16:17:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1060,'2020-01-18 18:32:21','USER_LOGIN',1,'2020-01-18 19:32:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x672','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1061,'2020-01-19 13:20:27','USER_LOGIN_FAILED',1,'2020-01-19 14:20:27',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1062,'2020-01-19 13:20:30','USER_LOGIN',1,'2020-01-19 14:20:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1063,'2020-01-19 17:05:23','USER_LOGIN',1,'2020-01-19 18:05:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1064,'2020-01-19 19:29:37','USER_LOGIN',1,'2020-01-19 20:29:37',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1065,'2020-01-20 00:19:16','USER_LOGIN_FAILED',1,'2020-01-20 01:19:16',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1066,'2020-01-20 00:19:19','USER_LOGIN',1,'2020-01-20 01:19:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1067,'2020-01-20 10:20:00','USER_LOGIN',1,'2020-01-20 11:20:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1068,'2020-01-20 13:29:21','USER_LOGIN',1,'2020-01-20 14:29:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1069,'2020-01-20 16:20:00','USER_LOGIN',1,'2020-01-20 17:20:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1070,'2020-01-20 22:52:22','USER_LOGIN_FAILED',1,'2020-01-20 23:52:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1071,'2020-01-20 22:52:25','USER_LOGIN',1,'2020-01-20 23:52:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1072,'2020-01-20 23:43:37','USER_LOGIN_FAILED',1,'2020-01-21 00:43:37',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1073,'2020-01-20 23:43:41','USER_LOGIN',1,'2020-01-21 00:43:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x643','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1074,'2020-01-21 09:21:05','USER_LOGIN_FAILED',1,'2020-01-21 10:21:05',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1075,'2020-01-21 09:21:09','USER_LOGIN',1,'2020-01-21 10:21:09',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x870','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1076,'2020-01-21 09:33:53','USER_LOGOUT',1,'2020-01-21 10:33:53',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1077,'2020-01-21 09:35:27','USER_LOGIN',1,'2020-01-21 10:35:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1078,'2020-01-21 09:35:52','USER_LOGOUT',1,'2020-01-21 10:35:52',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1079,'2020-01-21 09:38:41','USER_LOGIN',1,'2020-01-21 10:38:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1080,'2021-04-15 10:38:52','USER_NEW_PASSWORD',1,'2021-04-15 07:38:52',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1081,'2021-04-15 10:38:52','USER_MODIFY',1,'2021-04-15 07:38:52',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1082,'2021-04-15 10:40:22','USER_NEW_PASSWORD',1,'2021-04-15 07:40:22',12,'Password change for zzeceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1083,'2021-04-15 10:40:22','USER_MODIFY',1,'2021-04-15 07:40:22',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1084,'2021-04-15 10:41:51','USER_NEW_PASSWORD',1,'2021-04-15 07:41:51',12,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1085,'2021-04-15 10:41:51','USER_MODIFY',1,'2021-04-15 07:41:51',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1086,'2021-04-15 10:42:13','USER_NEW_PASSWORD',1,'2021-04-15 07:42:13',12,'Password change for aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1087,'2021-04-15 10:42:13','USER_MODIFY',1,'2021-04-15 07:42:13',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1088,'2021-04-15 10:54:43','USER_LOGOUT',1,'2021-04-15 07:54:43',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1089,'2021-04-15 10:55:32','USER_LOGIN_FAILED',1,'2021-04-15 07:55:32',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1090,'2021-04-15 10:55:36','USER_LOGIN',1,'2021-04-15 07:55:36',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1091,'2021-04-15 10:55:57','USER_LOGOUT',1,'2021-04-15 07:55:57',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1092,'2021-04-15 10:56:17','USER_LOGIN',1,'2021-04-15 07:56:17',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1093,'2021-04-15 10:56:37','USER_LOGOUT',1,'2021-04-15 07:56:37',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1094,'2021-04-15 10:59:04','USER_LOGIN',1,'2021-04-15 07:59:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL); +INSERT INTO `llx_events` VALUES (30,'2013-07-18 18:23:06','USER_LOGOUT',1,'2013-07-18 20:23:06',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(31,'2013-07-18 18:23:12','USER_LOGIN_FAILED',1,'2013-07-18 20:23:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(32,'2013-07-18 18:23:17','USER_LOGIN',1,'2013-07-18 20:23:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(33,'2013-07-18 20:10:51','USER_LOGIN_FAILED',1,'2013-07-18 22:10:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(34,'2013-07-18 20:10:55','USER_LOGIN',1,'2013-07-18 22:10:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(35,'2013-07-18 21:18:57','USER_LOGIN',1,'2013-07-18 23:18:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(36,'2013-07-20 10:34:10','USER_LOGIN',1,'2013-07-20 12:34:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(37,'2013-07-20 12:36:44','USER_LOGIN',1,'2013-07-20 14:36:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(38,'2013-07-20 13:20:51','USER_LOGIN_FAILED',1,'2013-07-20 15:20:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(39,'2013-07-20 13:20:54','USER_LOGIN',1,'2013-07-20 15:20:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(40,'2013-07-20 15:03:46','USER_LOGIN_FAILED',1,'2013-07-20 17:03:46',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(41,'2013-07-20 15:03:55','USER_LOGIN',1,'2013-07-20 17:03:55',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(42,'2013-07-20 18:05:05','USER_LOGIN_FAILED',1,'2013-07-20 20:05:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(43,'2013-07-20 18:05:08','USER_LOGIN',1,'2013-07-20 20:05:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(44,'2013-07-20 21:08:53','USER_LOGIN_FAILED',1,'2013-07-20 23:08:53',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(45,'2013-07-20 21:08:56','USER_LOGIN',1,'2013-07-20 23:08:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(46,'2013-07-21 01:26:12','USER_LOGIN',1,'2013-07-21 03:26:12',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(47,'2013-07-21 22:35:45','USER_LOGIN_FAILED',1,'2013-07-22 00:35:45',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(48,'2013-07-21 22:35:49','USER_LOGIN',1,'2013-07-22 00:35:49',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(49,'2013-07-26 23:09:47','USER_LOGIN_FAILED',1,'2013-07-27 01:09:47',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(50,'2013-07-26 23:09:50','USER_LOGIN',1,'2013-07-27 01:09:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(51,'2013-07-27 17:02:27','USER_LOGIN_FAILED',1,'2013-07-27 19:02:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(52,'2013-07-27 17:02:32','USER_LOGIN',1,'2013-07-27 19:02:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(53,'2013-07-27 23:33:37','USER_LOGIN_FAILED',1,'2013-07-28 01:33:37',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(54,'2013-07-27 23:33:41','USER_LOGIN',1,'2013-07-28 01:33:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(55,'2013-07-28 18:20:36','USER_LOGIN_FAILED',1,'2013-07-28 20:20:36',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(56,'2013-07-28 18:20:38','USER_LOGIN',1,'2013-07-28 20:20:38',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(57,'2013-07-28 20:13:30','USER_LOGIN_FAILED',1,'2013-07-28 22:13:30',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(58,'2013-07-28 20:13:34','USER_LOGIN',1,'2013-07-28 22:13:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(59,'2013-07-28 20:22:51','USER_LOGIN',1,'2013-07-28 22:22:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(60,'2013-07-28 23:05:06','USER_LOGIN',1,'2013-07-29 01:05:06',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(61,'2013-07-29 20:15:50','USER_LOGIN_FAILED',1,'2013-07-29 22:15:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(62,'2013-07-29 20:15:53','USER_LOGIN',1,'2013-07-29 22:15:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(68,'2013-07-29 20:51:01','USER_LOGOUT',1,'2013-07-29 22:51:01',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(69,'2013-07-29 20:51:05','USER_LOGIN',1,'2013-07-29 22:51:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(70,'2013-07-30 08:46:20','USER_LOGIN_FAILED',1,'2013-07-30 10:46:20',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(71,'2013-07-30 08:46:38','USER_LOGIN_FAILED',1,'2013-07-30 10:46:38',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(72,'2013-07-30 08:46:42','USER_LOGIN',1,'2013-07-30 10:46:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(73,'2013-07-30 10:05:12','USER_LOGIN_FAILED',1,'2013-07-30 12:05:12',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(74,'2013-07-30 10:05:15','USER_LOGIN',1,'2013-07-30 12:05:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(75,'2013-07-30 12:15:46','USER_LOGIN',1,'2013-07-30 14:15:46',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(76,'2013-07-31 22:19:30','USER_LOGIN',1,'2013-08-01 00:19:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(77,'2013-07-31 23:32:52','USER_LOGIN',1,'2013-08-01 01:32:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(78,'2013-08-01 01:24:50','USER_LOGIN_FAILED',1,'2013-08-01 03:24:50',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(79,'2013-08-01 01:24:54','USER_LOGIN',1,'2013-08-01 03:24:54',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(80,'2013-08-01 19:31:36','USER_LOGIN_FAILED',1,'2013-08-01 21:31:35',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(81,'2013-08-01 19:31:39','USER_LOGIN',1,'2013-08-01 21:31:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(82,'2013-08-01 20:01:36','USER_LOGIN',1,'2013-08-01 22:01:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(83,'2013-08-01 20:52:54','USER_LOGIN_FAILED',1,'2013-08-01 22:52:54',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(84,'2013-08-01 20:52:58','USER_LOGIN',1,'2013-08-01 22:52:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(85,'2013-08-01 21:17:28','USER_LOGIN_FAILED',1,'2013-08-01 23:17:28',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(86,'2013-08-01 21:17:31','USER_LOGIN',1,'2013-08-01 23:17:31',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(87,'2013-08-04 11:55:17','USER_LOGIN',1,'2013-08-04 13:55:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(88,'2013-08-04 20:19:03','USER_LOGIN_FAILED',1,'2013-08-04 22:19:03',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(89,'2013-08-04 20:19:07','USER_LOGIN',1,'2013-08-04 22:19:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(90,'2013-08-05 17:51:42','USER_LOGIN_FAILED',1,'2013-08-05 19:51:42',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(91,'2013-08-05 17:51:47','USER_LOGIN',1,'2013-08-05 19:51:47',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(92,'2013-08-05 17:56:03','USER_LOGIN',1,'2013-08-05 19:56:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(93,'2013-08-05 17:59:10','USER_LOGIN',1,'2013-08-05 19:59:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL,NULL,NULL,NULL),(94,'2013-08-05 18:01:58','USER_LOGIN',1,'2013-08-05 20:01:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.100 Safari/534.30',NULL,NULL,NULL,NULL),(95,'2013-08-05 19:59:56','USER_LOGIN',1,'2013-08-05 21:59:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(96,'2013-08-06 18:33:22','USER_LOGIN',1,'2013-08-06 20:33:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(97,'2013-08-07 00:56:59','USER_LOGIN',1,'2013-08-07 02:56:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(98,'2013-08-07 22:49:14','USER_LOGIN',1,'2013-08-08 00:49:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(99,'2013-08-07 23:05:18','USER_LOGOUT',1,'2013-08-08 01:05:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(105,'2013-08-08 00:41:09','USER_LOGIN',1,'2013-08-08 02:41:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(106,'2013-08-08 11:58:55','USER_LOGIN',1,'2013-08-08 13:58:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(107,'2013-08-08 14:35:48','USER_LOGIN',1,'2013-08-08 16:35:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(108,'2013-08-08 14:36:31','USER_LOGOUT',1,'2013-08-08 16:36:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(109,'2013-08-08 14:38:28','USER_LOGIN',1,'2013-08-08 16:38:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(110,'2013-08-08 14:39:02','USER_LOGOUT',1,'2013-08-08 16:39:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(111,'2013-08-08 14:39:10','USER_LOGIN',1,'2013-08-08 16:39:10',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(112,'2013-08-08 14:39:28','USER_LOGOUT',1,'2013-08-08 16:39:28',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(113,'2013-08-08 14:39:37','USER_LOGIN',1,'2013-08-08 16:39:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(114,'2013-08-08 14:50:02','USER_LOGOUT',1,'2013-08-08 16:50:02',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(115,'2013-08-08 14:51:45','USER_LOGIN_FAILED',1,'2013-08-08 16:51:45',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(116,'2013-08-08 14:51:52','USER_LOGIN',1,'2013-08-08 16:51:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(117,'2013-08-08 15:09:54','USER_LOGOUT',1,'2013-08-08 17:09:54',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(118,'2013-08-08 15:10:19','USER_LOGIN_FAILED',1,'2013-08-08 17:10:19',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(119,'2013-08-08 15:10:28','USER_LOGIN',1,'2013-08-08 17:10:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(121,'2013-08-08 15:14:58','USER_LOGOUT',1,'2013-08-08 17:14:58',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(122,'2013-08-08 15:15:00','USER_LOGIN_FAILED',1,'2013-08-08 17:15:00',NULL,'Identifiants login ou mot de passe incorrects - login=','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(123,'2013-08-08 15:17:57','USER_LOGIN',1,'2013-08-08 17:17:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(124,'2013-08-08 15:35:56','USER_LOGOUT',1,'2013-08-08 17:35:56',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(125,'2013-08-08 15:36:05','USER_LOGIN',1,'2013-08-08 17:36:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(126,'2013-08-08 17:32:42','USER_LOGIN',1,'2013-08-08 19:32:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0',NULL,NULL,NULL,NULL),(127,'2014-12-08 13:49:37','USER_LOGOUT',1,'2014-12-08 14:49:37',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(128,'2014-12-08 13:49:42','USER_LOGIN',1,'2014-12-08 14:49:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(129,'2014-12-08 13:50:12','USER_LOGOUT',1,'2014-12-08 14:50:12',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(130,'2014-12-08 13:50:14','USER_LOGIN',1,'2014-12-08 14:50:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(131,'2014-12-08 13:50:17','USER_LOGOUT',1,'2014-12-08 14:50:17',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(132,'2014-12-08 13:52:47','USER_LOGIN',1,'2014-12-08 14:52:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(133,'2014-12-08 13:53:08','USER_MODIFY',1,'2014-12-08 14:53:08',1,'User admin modified','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(134,'2014-12-08 14:08:45','USER_LOGOUT',1,'2014-12-08 15:08:45',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(135,'2014-12-08 14:09:09','USER_LOGIN',1,'2014-12-08 15:09:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(136,'2014-12-08 14:11:43','USER_LOGOUT',1,'2014-12-08 15:11:43',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(137,'2014-12-08 14:11:45','USER_LOGIN',1,'2014-12-08 15:11:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(138,'2014-12-08 14:22:53','USER_LOGOUT',1,'2014-12-08 15:22:53',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(139,'2014-12-08 14:22:54','USER_LOGIN',1,'2014-12-08 15:22:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(140,'2014-12-08 14:23:10','USER_LOGOUT',1,'2014-12-08 15:23:10',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(141,'2014-12-08 14:23:11','USER_LOGIN',1,'2014-12-08 15:23:11',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(142,'2014-12-08 14:23:49','USER_LOGOUT',1,'2014-12-08 15:23:49',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(143,'2014-12-08 14:23:50','USER_LOGIN',1,'2014-12-08 15:23:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(144,'2014-12-08 14:28:08','USER_LOGOUT',1,'2014-12-08 15:28:08',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(145,'2014-12-08 14:35:15','USER_LOGIN',1,'2014-12-08 15:35:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(146,'2014-12-08 14:35:18','USER_LOGOUT',1,'2014-12-08 15:35:18',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(147,'2014-12-08 14:36:07','USER_LOGIN',1,'2014-12-08 15:36:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(148,'2014-12-08 14:36:09','USER_LOGOUT',1,'2014-12-08 15:36:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(149,'2014-12-08 14:36:41','USER_LOGIN',1,'2014-12-08 15:36:41',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(150,'2014-12-08 15:59:13','USER_LOGIN',1,'2014-12-08 16:59:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(151,'2014-12-09 11:49:52','USER_LOGIN',1,'2014-12-09 12:49:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(152,'2014-12-09 13:46:31','USER_LOGIN',1,'2014-12-09 14:46:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(153,'2014-12-09 19:03:14','USER_LOGIN',1,'2014-12-09 20:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(154,'2014-12-10 00:16:31','USER_LOGIN',1,'2014-12-10 01:16:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(170,'2014-12-11 22:03:31','USER_LOGIN',1,'2014-12-11 23:03:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(171,'2014-12-12 00:32:39','USER_LOGIN',1,'2014-12-12 01:32:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(172,'2014-12-12 10:49:59','USER_LOGIN',1,'2014-12-12 11:49:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(175,'2014-12-12 10:57:40','USER_MODIFY',1,'2014-12-12 11:57:40',1,'Modification utilisateur admin','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(176,'2014-12-12 13:29:15','USER_LOGIN',1,'2014-12-12 14:29:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(177,'2014-12-12 13:30:15','USER_LOGIN',1,'2014-12-12 14:30:15',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(178,'2014-12-12 13:40:08','USER_LOGOUT',1,'2014-12-12 14:40:08',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(179,'2014-12-12 13:40:10','USER_LOGIN',1,'2014-12-12 14:40:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(180,'2014-12-12 13:40:26','USER_MODIFY',1,'2014-12-12 14:40:26',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(181,'2014-12-12 13:40:34','USER_LOGOUT',1,'2014-12-12 14:40:34',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(182,'2014-12-12 13:42:23','USER_LOGIN',1,'2014-12-12 14:42:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(183,'2014-12-12 13:43:02','USER_NEW_PASSWORD',1,'2014-12-12 14:43:02',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(184,'2014-12-12 13:43:25','USER_LOGOUT',1,'2014-12-12 14:43:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(185,'2014-12-12 13:43:27','USER_LOGIN_FAILED',1,'2014-12-12 14:43:27',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(186,'2014-12-12 13:43:30','USER_LOGIN',1,'2014-12-12 14:43:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(187,'2014-12-12 14:52:11','USER_LOGIN',1,'2014-12-12 15:52:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11',NULL,NULL,NULL,NULL),(188,'2014-12-12 17:53:00','USER_LOGIN_FAILED',1,'2014-12-12 18:53:00',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(189,'2014-12-12 17:53:07','USER_LOGIN_FAILED',1,'2014-12-12 18:53:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(190,'2014-12-12 17:53:51','USER_NEW_PASSWORD',1,'2014-12-12 18:53:51',NULL,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(191,'2014-12-12 17:54:00','USER_LOGIN',1,'2014-12-12 18:54:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(192,'2014-12-12 17:54:10','USER_NEW_PASSWORD',1,'2014-12-12 18:54:10',1,'Changement mot de passe de admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(193,'2014-12-12 17:54:10','USER_MODIFY',1,'2014-12-12 18:54:10',1,'Modification utilisateur admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(194,'2014-12-12 18:57:09','USER_LOGIN',1,'2014-12-12 19:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(195,'2014-12-12 23:04:08','USER_LOGIN',1,'2014-12-13 00:04:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(196,'2014-12-17 20:03:14','USER_LOGIN',1,'2014-12-17 21:03:14',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(197,'2014-12-17 21:18:45','USER_LOGIN',1,'2014-12-17 22:18:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(198,'2014-12-17 22:30:08','USER_LOGIN',1,'2014-12-17 23:30:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(199,'2014-12-18 23:32:03','USER_LOGIN',1,'2014-12-19 00:32:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(200,'2014-12-19 09:38:03','USER_LOGIN',1,'2014-12-19 10:38:03',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(201,'2014-12-19 11:23:35','USER_LOGIN',1,'2014-12-19 12:23:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(202,'2014-12-19 12:46:22','USER_LOGIN',1,'2014-12-19 13:46:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(214,'2014-12-19 19:11:31','USER_LOGIN',1,'2014-12-19 20:11:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(215,'2014-12-21 16:36:57','USER_LOGIN',1,'2014-12-21 17:36:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(216,'2014-12-21 16:38:43','USER_NEW_PASSWORD',1,'2014-12-21 17:38:43',1,'Changement mot de passe de adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(217,'2014-12-21 16:38:43','USER_MODIFY',1,'2014-12-21 17:38:43',1,'Modification utilisateur adupont','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(218,'2014-12-21 16:38:51','USER_LOGOUT',1,'2014-12-21 17:38:51',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(219,'2014-12-21 16:38:55','USER_LOGIN',1,'2014-12-21 17:38:55',3,'(UserLogged,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(220,'2014-12-21 16:48:18','USER_LOGOUT',1,'2014-12-21 17:48:18',3,'(UserLogoff,adupont)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(221,'2014-12-21 16:48:20','USER_LOGIN',1,'2014-12-21 17:48:20',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(222,'2014-12-26 18:28:18','USER_LOGIN',1,'2014-12-26 19:28:18',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(223,'2014-12-26 20:00:24','USER_LOGIN',1,'2014-12-26 21:00:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(224,'2014-12-27 01:10:27','USER_LOGIN',1,'2014-12-27 02:10:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(225,'2014-12-28 19:12:08','USER_LOGIN',1,'2014-12-28 20:12:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(226,'2014-12-28 20:16:58','USER_LOGIN',1,'2014-12-28 21:16:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(227,'2014-12-29 14:35:46','USER_LOGIN',1,'2014-12-29 15:35:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(228,'2014-12-29 14:37:59','USER_LOGOUT',1,'2014-12-29 15:37:59',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(229,'2014-12-29 14:38:00','USER_LOGIN',1,'2014-12-29 15:38:00',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(230,'2014-12-29 17:16:48','USER_LOGIN',1,'2014-12-29 18:16:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(231,'2014-12-31 12:02:59','USER_LOGIN',1,'2014-12-31 13:02:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(232,'2015-01-02 20:32:51','USER_LOGIN',1,'2015-01-02 21:32:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0',NULL,NULL,NULL,NULL),(233,'2015-01-02 20:58:59','USER_LOGIN',1,'2015-01-02 21:58:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(234,'2015-01-03 09:25:07','USER_LOGIN',1,'2015-01-03 10:25:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(235,'2015-01-03 19:39:31','USER_LOGIN',1,'2015-01-03 20:39:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(236,'2015-01-04 22:40:19','USER_LOGIN',1,'2015-01-04 23:40:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(237,'2015-01-05 12:59:59','USER_LOGIN',1,'2015-01-05 13:59:59',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(238,'2015-01-05 15:28:52','USER_LOGIN',1,'2015-01-05 16:28:52',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(239,'2015-01-05 17:02:08','USER_LOGIN',1,'2015-01-05 18:02:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(240,'2015-01-06 12:13:33','USER_LOGIN',1,'2015-01-06 13:13:33',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(241,'2015-01-07 01:21:15','USER_LOGIN',1,'2015-01-07 02:21:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(242,'2015-01-07 01:46:31','USER_LOGOUT',1,'2015-01-07 02:46:31',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(243,'2015-01-07 19:54:50','USER_LOGIN',1,'2015-01-07 20:54:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(244,'2015-01-08 21:55:01','USER_LOGIN',1,'2015-01-08 22:55:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(245,'2015-01-09 11:13:28','USER_LOGIN',1,'2015-01-09 12:13:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(246,'2015-01-10 18:30:46','USER_LOGIN',1,'2015-01-10 19:30:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(247,'2015-01-11 18:03:26','USER_LOGIN',1,'2015-01-11 19:03:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(248,'2015-01-12 11:15:04','USER_LOGIN',1,'2015-01-12 12:15:04',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(249,'2015-01-12 14:42:44','USER_LOGIN',1,'2015-01-12 15:42:44',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(250,'2015-01-13 12:07:17','USER_LOGIN',1,'2015-01-13 13:07:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(251,'2015-01-13 17:37:58','USER_LOGIN',1,'2015-01-13 18:37:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(252,'2015-01-13 19:24:21','USER_LOGIN',1,'2015-01-13 20:24:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(253,'2015-01-13 19:29:19','USER_LOGOUT',1,'2015-01-13 20:29:19',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(254,'2015-01-13 21:39:39','USER_LOGIN',1,'2015-01-13 22:39:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(255,'2015-01-14 00:52:21','USER_LOGIN',1,'2015-01-14 01:52:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11',NULL,NULL,NULL,NULL),(256,'2015-01-16 11:34:31','USER_LOGIN',1,'2015-01-16 12:34:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(257,'2015-01-16 15:36:21','USER_LOGIN',1,'2015-01-16 16:36:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(258,'2015-01-16 19:17:36','USER_LOGIN',1,'2015-01-16 20:17:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(259,'2015-01-16 19:48:08','GROUP_CREATE',1,'2015-01-16 20:48:08',1,'Création groupe ggg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(260,'2015-01-16 21:48:53','USER_LOGIN',1,'2015-01-16 22:48:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(261,'2015-01-17 19:55:53','USER_LOGIN',1,'2015-01-17 20:55:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(262,'2015-01-18 09:48:01','USER_LOGIN',1,'2015-01-18 10:48:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(263,'2015-01-18 13:22:36','USER_LOGIN',1,'2015-01-18 14:22:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(264,'2015-01-18 16:10:23','USER_LOGIN',1,'2015-01-18 17:10:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(265,'2015-01-18 17:41:40','USER_LOGIN',1,'2015-01-18 18:41:40',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(266,'2015-01-19 14:33:48','USER_LOGIN',1,'2015-01-19 15:33:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(267,'2015-01-19 16:47:43','USER_LOGIN',1,'2015-01-19 17:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(268,'2015-01-19 16:59:43','USER_LOGIN',1,'2015-01-19 17:59:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(269,'2015-01-19 17:00:22','USER_LOGIN',1,'2015-01-19 18:00:22',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(270,'2015-01-19 17:04:16','USER_LOGOUT',1,'2015-01-19 18:04:16',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(271,'2015-01-19 17:04:18','USER_LOGIN',1,'2015-01-19 18:04:18',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(272,'2015-01-20 00:34:19','USER_LOGIN',1,'2015-01-20 01:34:19',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(273,'2015-01-21 11:54:17','USER_LOGIN',1,'2015-01-21 12:54:17',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(274,'2015-01-21 13:48:15','USER_LOGIN',1,'2015-01-21 14:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(275,'2015-01-21 14:30:22','USER_LOGIN',1,'2015-01-21 15:30:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(276,'2015-01-21 15:10:46','USER_LOGIN',1,'2015-01-21 16:10:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(277,'2015-01-21 17:27:43','USER_LOGIN',1,'2015-01-21 18:27:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(278,'2015-01-21 21:48:15','USER_LOGIN',1,'2015-01-21 22:48:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(279,'2015-01-21 21:50:42','USER_LOGIN',1,'2015-01-21 22:50:42',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17',NULL,NULL,NULL,NULL),(280,'2015-01-23 09:28:26','USER_LOGIN',1,'2015-01-23 10:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(281,'2015-01-23 13:21:57','USER_LOGIN',1,'2015-01-23 14:21:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(282,'2015-01-23 16:52:00','USER_LOGOUT',1,'2015-01-23 17:52:00',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(283,'2015-01-23 16:52:05','USER_LOGIN_FAILED',1,'2015-01-23 17:52:05',NULL,'Bad value for login or password - login=bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(284,'2015-01-23 16:52:09','USER_LOGIN',1,'2015-01-23 17:52:09',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(285,'2015-01-23 16:52:27','USER_CREATE',1,'2015-01-23 17:52:27',1,'Création utilisateur aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(286,'2015-01-23 16:52:27','USER_NEW_PASSWORD',1,'2015-01-23 17:52:27',1,'Changement mot de passe de aaa','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(287,'2015-01-23 16:52:37','USER_CREATE',1,'2015-01-23 17:52:37',1,'Création utilisateur bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(288,'2015-01-23 16:52:37','USER_NEW_PASSWORD',1,'2015-01-23 17:52:37',1,'Changement mot de passe de bbb','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(289,'2015-01-23 16:53:15','USER_LOGOUT',1,'2015-01-23 17:53:15',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(290,'2015-01-23 16:53:20','USER_LOGIN',1,'2015-01-23 17:53:20',4,'(UserLogged,aaa)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(291,'2015-01-23 19:16:58','USER_LOGIN',1,'2015-01-23 20:16:58',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(292,'2015-01-26 10:54:07','USER_LOGIN',1,'2015-01-26 11:54:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(293,'2015-01-29 10:15:36','USER_LOGIN',1,'2015-01-29 11:15:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(294,'2015-01-30 17:42:50','USER_LOGIN',1,'2015-01-30 18:42:50',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17',NULL,NULL,NULL,NULL),(295,'2015-02-01 08:49:55','USER_LOGIN',1,'2015-02-01 09:49:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(296,'2015-02-01 08:51:57','USER_LOGOUT',1,'2015-02-01 09:51:57',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(297,'2015-02-01 08:52:39','USER_LOGIN',1,'2015-02-01 09:52:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(298,'2015-02-01 21:03:01','USER_LOGIN',1,'2015-02-01 22:03:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(299,'2015-02-10 19:48:39','USER_LOGIN',1,'2015-02-10 20:48:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(300,'2015-02-10 20:46:48','USER_LOGIN',1,'2015-02-10 21:46:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(301,'2015-02-10 21:39:23','USER_LOGIN',1,'2015-02-10 22:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(302,'2015-02-11 19:00:13','USER_LOGIN',1,'2015-02-11 20:00:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(303,'2015-02-11 19:43:44','USER_LOGIN_FAILED',1,'2015-02-11 20:43:44',NULL,'Unknown column \'u.fk_user\' in \'field list\'','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(304,'2015-02-11 19:44:01','USER_LOGIN',1,'2015-02-11 20:44:01',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(305,'2015-02-12 00:27:35','USER_LOGIN',1,'2015-02-12 01:27:35',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(306,'2015-02-12 00:27:38','USER_LOGOUT',1,'2015-02-12 01:27:38',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(307,'2015-02-12 00:28:07','USER_LOGIN',1,'2015-02-12 01:28:07',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(308,'2015-02-12 00:28:09','USER_LOGOUT',1,'2015-02-12 01:28:09',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(309,'2015-02-12 00:28:26','USER_LOGIN',1,'2015-02-12 01:28:26',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(310,'2015-02-12 00:28:30','USER_LOGOUT',1,'2015-02-12 01:28:30',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(311,'2015-02-12 12:42:15','USER_LOGIN',1,'2015-02-12 13:42:15',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',NULL,NULL,NULL,NULL),(312,'2015-02-12 13:46:16','USER_LOGIN',1,'2015-02-12 14:46:16',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(313,'2015-02-12 14:54:28','USER_LOGIN',1,'2015-02-12 15:54:28',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(314,'2015-02-12 16:04:46','USER_LOGIN',1,'2015-02-12 17:04:46',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(315,'2015-02-13 14:02:43','USER_LOGIN',1,'2015-02-13 15:02:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(316,'2015-02-13 14:48:30','USER_LOGIN',1,'2015-02-13 15:48:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(317,'2015-02-13 17:44:53','USER_LOGIN',1,'2015-02-13 18:44:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(318,'2015-02-15 08:44:36','USER_LOGIN',1,'2015-02-15 09:44:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(319,'2015-02-15 08:53:20','USER_LOGIN',1,'2015-02-15 09:53:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(320,'2015-02-16 19:10:28','USER_LOGIN',1,'2015-02-16 20:10:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(321,'2015-02-16 19:22:40','USER_CREATE',1,'2015-02-16 20:22:40',1,'Création utilisateur aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(322,'2015-02-16 19:22:40','USER_NEW_PASSWORD',1,'2015-02-16 20:22:40',1,'Changement mot de passe de aaab','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(323,'2015-02-16 19:48:15','USER_CREATE',1,'2015-02-16 20:48:15',1,'Création utilisateur zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(324,'2015-02-16 19:48:15','USER_NEW_PASSWORD',1,'2015-02-16 20:48:15',1,'Changement mot de passe de zzz','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(325,'2015-02-16 19:50:08','USER_CREATE',1,'2015-02-16 20:50:08',1,'Création utilisateur zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(326,'2015-02-16 19:50:08','USER_NEW_PASSWORD',1,'2015-02-16 20:50:08',1,'Changement mot de passe de zzzg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(327,'2015-02-16 21:20:03','USER_LOGIN',1,'2015-02-16 22:20:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(328,'2015-02-17 14:30:51','USER_LOGIN',1,'2015-02-17 15:30:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(329,'2015-02-17 17:21:22','USER_LOGIN',1,'2015-02-17 18:21:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(330,'2015-02-17 17:48:43','USER_MODIFY',1,'2015-02-17 18:48:43',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(331,'2015-02-17 17:48:47','USER_MODIFY',1,'2015-02-17 18:48:47',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(332,'2015-02-17 17:48:51','USER_MODIFY',1,'2015-02-17 18:48:51',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(333,'2015-02-17 17:48:56','USER_MODIFY',1,'2015-02-17 18:48:56',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(334,'2015-02-18 22:00:01','USER_LOGIN',1,'2015-02-18 23:00:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(335,'2015-02-19 08:19:52','USER_LOGIN',1,'2015-02-19 09:19:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(336,'2015-02-19 22:00:52','USER_LOGIN',1,'2015-02-19 23:00:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(337,'2015-02-20 09:34:52','USER_LOGIN',1,'2015-02-20 10:34:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(338,'2015-02-20 13:12:28','USER_LOGIN',1,'2015-02-20 14:12:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(339,'2015-02-20 17:19:44','USER_LOGIN',1,'2015-02-20 18:19:44',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(340,'2015-02-20 19:07:21','USER_MODIFY',1,'2015-02-20 20:07:21',1,'Modification utilisateur adupont','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(341,'2015-02-20 19:47:17','USER_LOGIN',1,'2015-02-20 20:47:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(342,'2015-02-20 19:48:01','USER_MODIFY',1,'2015-02-20 20:48:01',1,'Modification utilisateur aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(343,'2015-02-21 08:27:07','USER_LOGIN',1,'2015-02-21 09:27:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(344,'2015-02-23 13:34:13','USER_LOGIN',1,'2015-02-23 14:34:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.69 Safari/537.17',NULL,NULL,NULL,NULL),(345,'2015-02-24 01:06:41','USER_LOGIN_FAILED',1,'2015-02-24 02:06:41',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(346,'2015-02-24 01:06:45','USER_LOGIN_FAILED',1,'2015-02-24 02:06:45',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(347,'2015-02-24 01:06:55','USER_LOGIN_FAILED',1,'2015-02-24 02:06:55',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(348,'2015-02-24 01:07:03','USER_LOGIN_FAILED',1,'2015-02-24 02:07:03',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(349,'2015-02-24 01:07:21','USER_LOGIN_FAILED',1,'2015-02-24 02:07:21',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(350,'2015-02-24 01:08:12','USER_LOGIN_FAILED',1,'2015-02-24 02:08:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(351,'2015-02-24 01:08:42','USER_LOGIN_FAILED',1,'2015-02-24 02:08:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(352,'2015-02-24 01:08:50','USER_LOGIN_FAILED',1,'2015-02-24 02:08:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(353,'2015-02-24 01:09:08','USER_LOGIN_FAILED',1,'2015-02-24 02:09:08',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(354,'2015-02-24 01:09:42','USER_LOGIN_FAILED',1,'2015-02-24 02:09:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(355,'2015-02-24 01:09:50','USER_LOGIN_FAILED',1,'2015-02-24 02:09:50',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(356,'2015-02-24 01:10:05','USER_LOGIN_FAILED',1,'2015-02-24 02:10:05',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(357,'2015-02-24 01:10:22','USER_LOGIN_FAILED',1,'2015-02-24 02:10:22',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(358,'2015-02-24 01:10:30','USER_LOGIN_FAILED',1,'2015-02-24 02:10:30',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(359,'2015-02-24 01:10:56','USER_LOGIN_FAILED',1,'2015-02-24 02:10:56',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(360,'2015-02-24 01:11:26','USER_LOGIN_FAILED',1,'2015-02-24 02:11:26',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(361,'2015-02-24 01:12:06','USER_LOGIN_FAILED',1,'2015-02-24 02:12:06',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(362,'2015-02-24 01:21:14','USER_LOGIN_FAILED',1,'2015-02-24 02:21:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(363,'2015-02-24 01:21:25','USER_LOGIN_FAILED',1,'2015-02-24 02:21:25',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(364,'2015-02-24 01:21:54','USER_LOGIN_FAILED',1,'2015-02-24 02:21:54',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(365,'2015-02-24 01:22:14','USER_LOGIN_FAILED',1,'2015-02-24 02:22:14',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(366,'2015-02-24 01:22:37','USER_LOGIN_FAILED',1,'2015-02-24 02:22:37',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(367,'2015-02-24 01:23:01','USER_LOGIN_FAILED',1,'2015-02-24 02:23:01',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(368,'2015-02-24 01:23:39','USER_LOGIN_FAILED',1,'2015-02-24 02:23:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(369,'2015-02-24 01:24:04','USER_LOGIN_FAILED',1,'2015-02-24 02:24:04',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(370,'2015-02-24 01:24:39','USER_LOGIN_FAILED',1,'2015-02-24 02:24:39',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(371,'2015-02-24 01:25:01','USER_LOGIN_FAILED',1,'2015-02-24 02:25:01',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(372,'2015-02-24 01:25:12','USER_LOGIN_FAILED',1,'2015-02-24 02:25:12',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(373,'2015-02-24 01:27:30','USER_LOGIN_FAILED',1,'2015-02-24 02:27:30',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(374,'2015-02-24 01:28:00','USER_LOGIN_FAILED',1,'2015-02-24 02:28:00',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(375,'2015-02-24 01:28:35','USER_LOGIN_FAILED',1,'2015-02-24 02:28:35',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(376,'2015-02-24 01:29:03','USER_LOGIN_FAILED',1,'2015-02-24 02:29:03',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(377,'2015-02-24 01:29:55','USER_LOGIN_FAILED',1,'2015-02-24 02:29:55',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(378,'2015-02-24 01:32:40','USER_LOGIN_FAILED',1,'2015-02-24 02:32:40',NULL,'Bad value for login or password - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(379,'2015-02-24 01:39:33','USER_LOGIN_FAILED',1,'2015-02-24 02:39:33',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(380,'2015-02-24 01:39:38','USER_LOGIN_FAILED',1,'2015-02-24 02:39:38',NULL,'Identifiants login ou mot de passe incorrects - login=aa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(381,'2015-02-24 01:39:47','USER_LOGIN_FAILED',1,'2015-02-24 02:39:47',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(382,'2015-02-24 01:40:54','USER_LOGIN_FAILED',1,'2015-02-24 02:40:54',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(383,'2015-02-24 01:47:57','USER_LOGIN_FAILED',1,'2015-02-24 02:47:57',NULL,'Identifiants login ou mot de passe incorrects - login=lmkm','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(384,'2015-02-24 01:48:05','USER_LOGIN_FAILED',1,'2015-02-24 02:48:05',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(385,'2015-02-24 01:48:07','USER_LOGIN_FAILED',1,'2015-02-24 02:48:07',NULL,'Unknown column \'u.lastname\' in \'field list\'','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(386,'2015-02-24 01:48:35','USER_LOGIN',1,'2015-02-24 02:48:35',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(387,'2015-02-24 01:56:32','USER_LOGIN',1,'2015-02-24 02:56:32',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(388,'2015-02-24 02:05:55','USER_LOGOUT',1,'2015-02-24 03:05:55',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(389,'2015-02-24 02:39:52','USER_LOGIN',1,'2015-02-24 03:39:52',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(390,'2015-02-24 02:51:10','USER_LOGOUT',1,'2015-02-24 03:51:10',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(391,'2015-02-24 12:46:41','USER_LOGIN',1,'2015-02-24 13:46:41',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(392,'2015-02-24 12:46:52','USER_LOGOUT',1,'2015-02-24 13:46:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(393,'2015-02-24 12:46:56','USER_LOGIN',1,'2015-02-24 13:46:56',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(394,'2015-02-24 12:47:56','USER_LOGOUT',1,'2015-02-24 13:47:56',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(395,'2015-02-24 12:48:00','USER_LOGIN',1,'2015-02-24 13:48:00',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(396,'2015-02-24 12:48:11','USER_LOGOUT',1,'2015-02-24 13:48:11',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(397,'2015-02-24 12:48:32','USER_LOGIN',1,'2015-02-24 13:48:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(398,'2015-02-24 12:52:22','USER_LOGOUT',1,'2015-02-24 13:52:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(399,'2015-02-24 12:52:27','USER_LOGIN',1,'2015-02-24 13:52:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(400,'2015-02-24 12:52:54','USER_LOGOUT',1,'2015-02-24 13:52:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(401,'2015-02-24 12:52:59','USER_LOGIN',1,'2015-02-24 13:52:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(402,'2015-02-24 12:55:39','USER_LOGOUT',1,'2015-02-24 13:55:39',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(403,'2015-02-24 12:55:59','USER_LOGIN',1,'2015-02-24 13:55:59',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(404,'2015-02-24 12:56:07','USER_LOGOUT',1,'2015-02-24 13:56:07',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(405,'2015-02-24 12:56:23','USER_LOGIN',1,'2015-02-24 13:56:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(406,'2015-02-24 12:56:46','USER_LOGOUT',1,'2015-02-24 13:56:46',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(407,'2015-02-24 12:58:30','USER_LOGIN',1,'2015-02-24 13:58:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(408,'2015-02-24 12:58:33','USER_LOGOUT',1,'2015-02-24 13:58:33',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(409,'2015-02-24 12:58:51','USER_LOGIN',1,'2015-02-24 13:58:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(410,'2015-02-24 12:58:58','USER_LOGOUT',1,'2015-02-24 13:58:58',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(411,'2015-02-24 13:18:53','USER_LOGIN',1,'2015-02-24 14:18:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(412,'2015-02-24 13:19:52','USER_LOGOUT',1,'2015-02-24 14:19:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(413,'2015-02-24 15:39:31','USER_LOGIN_FAILED',1,'2015-02-24 16:39:31',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1',NULL,NULL,NULL,NULL,NULL),(414,'2015-02-24 15:42:07','USER_LOGIN',1,'2015-02-24 16:42:07',1,'(UserLogged,admin)','127.0.0.1',NULL,NULL,NULL,NULL,NULL),(415,'2015-02-24 15:42:52','USER_LOGOUT',1,'2015-02-24 16:42:52',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(416,'2015-02-24 16:04:21','USER_LOGIN',1,'2015-02-24 17:04:21',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(417,'2015-02-24 16:11:28','USER_LOGIN_FAILED',1,'2015-02-24 17:11:28',NULL,'ErrorBadValueForCode - login=admin','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(418,'2015-02-24 16:11:37','USER_LOGIN',1,'2015-02-24 17:11:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(419,'2015-02-24 16:36:52','USER_LOGOUT',1,'2015-02-24 17:36:52',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1',NULL,NULL,NULL,NULL),(420,'2015-02-24 16:40:37','USER_LOGIN',1,'2015-02-24 17:40:37',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(421,'2015-02-24 16:57:16','USER_LOGIN',1,'2015-02-24 17:57:16',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(422,'2015-02-24 17:01:30','USER_LOGOUT',1,'2015-02-24 18:01:30',1,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(423,'2015-02-24 17:02:33','USER_LOGIN',1,'2015-02-24 18:02:33',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(424,'2015-02-24 17:14:22','USER_LOGOUT',1,'2015-02-24 18:14:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(425,'2015-02-24 17:15:07','USER_LOGIN_FAILED',1,'2015-02-24 18:15:07',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(426,'2015-02-24 17:15:20','USER_LOGIN',1,'2015-02-24 18:15:20',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(427,'2015-02-24 17:20:14','USER_LOGIN',1,'2015-02-24 18:20:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(428,'2015-02-24 17:20:51','USER_LOGIN',1,'2015-02-24 18:20:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(429,'2015-02-24 17:20:54','USER_LOGOUT',1,'2015-02-24 18:20:54',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(430,'2015-02-24 17:21:19','USER_LOGIN',1,'2015-02-24 18:21:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(431,'2015-02-24 17:32:35','USER_LOGIN',1,'2015-02-24 18:32:35',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (Linux; U; Android 2.2; en-us; sdk Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 - 2131034114',NULL,NULL,NULL,NULL),(432,'2015-02-24 18:28:48','USER_LOGIN',1,'2015-02-24 19:28:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(433,'2015-02-24 18:29:27','USER_LOGOUT',1,'2015-02-24 19:29:27',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(434,'2015-02-24 18:29:32','USER_LOGIN',1,'2015-02-24 19:29:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7',NULL,NULL,NULL,NULL),(435,'2015-02-24 20:13:13','USER_LOGOUT',1,'2015-02-24 21:13:13',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(436,'2015-02-24 20:13:17','USER_LOGIN',1,'2015-02-24 21:13:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(437,'2015-02-25 08:57:16','USER_LOGIN',1,'2015-02-25 09:57:16',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(438,'2015-02-25 08:57:59','USER_LOGOUT',1,'2015-02-25 09:57:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(439,'2015-02-25 09:15:02','USER_LOGIN',1,'2015-02-25 10:15:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(440,'2015-02-25 09:15:50','USER_LOGOUT',1,'2015-02-25 10:15:50',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(441,'2015-02-25 09:15:57','USER_LOGIN',1,'2015-02-25 10:15:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(442,'2015-02-25 09:16:12','USER_LOGOUT',1,'2015-02-25 10:16:12',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(443,'2015-02-25 09:16:19','USER_LOGIN',1,'2015-02-25 10:16:19',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(444,'2015-02-25 09:16:25','USER_LOGOUT',1,'2015-02-25 10:16:25',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(445,'2015-02-25 09:16:39','USER_LOGIN_FAILED',1,'2015-02-25 10:16:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(446,'2015-02-25 09:16:42','USER_LOGIN_FAILED',1,'2015-02-25 10:16:42',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(447,'2015-02-25 09:16:54','USER_LOGIN_FAILED',1,'2015-02-25 10:16:54',NULL,'Identificadors d'usuari o contrasenya incorrectes - login=gfdg','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(448,'2015-02-25 09:17:53','USER_LOGIN',1,'2015-02-25 10:17:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(449,'2015-02-25 09:18:37','USER_LOGOUT',1,'2015-02-25 10:18:37',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(450,'2015-02-25 09:18:41','USER_LOGIN',1,'2015-02-25 10:18:41',4,'(UserLogged,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(451,'2015-02-25 09:18:47','USER_LOGOUT',1,'2015-02-25 10:18:47',4,'(UserLogoff,aaa)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(452,'2015-02-25 10:05:34','USER_LOGIN',1,'2015-02-25 11:05:34',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(453,'2015-02-26 21:51:40','USER_LOGIN',1,'2015-02-26 22:51:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(454,'2015-02-26 23:30:06','USER_LOGIN',1,'2015-02-27 00:30:06',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(455,'2015-02-27 14:13:11','USER_LOGIN',1,'2015-02-27 15:13:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(456,'2015-02-27 18:12:06','USER_LOGIN_FAILED',1,'2015-02-27 19:12:06',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(457,'2015-02-27 18:12:10','USER_LOGIN',1,'2015-02-27 19:12:10',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(458,'2015-02-27 20:20:08','USER_LOGIN',1,'2015-02-27 21:20:08',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(459,'2015-03-01 22:12:03','USER_LOGIN',1,'2015-03-01 23:12:03',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(460,'2015-03-02 11:45:50','USER_LOGIN',1,'2015-03-02 12:45:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(461,'2015-03-02 15:53:51','USER_LOGIN_FAILED',1,'2015-03-02 16:53:51',NULL,'Identifiants login ou mot de passe incorrects - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(462,'2015-03-02 15:53:53','USER_LOGIN',1,'2015-03-02 16:53:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(463,'2015-03-02 18:32:32','USER_LOGIN',1,'2015-03-02 19:32:32',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(464,'2015-03-02 22:59:36','USER_LOGIN',1,'2015-03-02 23:59:36',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(465,'2015-03-03 16:26:26','USER_LOGIN',1,'2015-03-03 17:26:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(466,'2015-03-03 22:50:27','USER_LOGIN',1,'2015-03-03 23:50:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(467,'2015-03-04 08:29:27','USER_LOGIN',1,'2015-03-04 09:29:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(468,'2015-03-04 18:27:28','USER_LOGIN',1,'2015-03-04 19:27:28',1,'(UserLogged,admin)','192.168.0.254','Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; NP06)',NULL,NULL,NULL,NULL),(469,'2015-03-04 19:27:23','USER_LOGIN',1,'2015-03-04 20:27:23',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)',NULL,NULL,NULL,NULL),(470,'2015-03-04 19:35:14','USER_LOGIN',1,'2015-03-04 20:35:14',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(471,'2015-03-04 19:55:49','USER_LOGIN',1,'2015-03-04 20:55:49',1,'(UserLogged,admin)','192.168.0.254','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',NULL,NULL,NULL,NULL),(472,'2015-03-04 21:16:13','USER_LOGIN',1,'2015-03-04 22:16:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(473,'2015-03-05 10:17:30','USER_LOGIN',1,'2015-03-05 11:17:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(474,'2015-03-05 11:02:43','USER_LOGIN',1,'2015-03-05 12:02:43',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(475,'2015-03-05 23:14:39','USER_LOGIN',1,'2015-03-06 00:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(476,'2015-03-06 08:58:57','USER_LOGIN',1,'2015-03-06 09:58:57',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(477,'2015-03-06 14:29:40','USER_LOGIN',1,'2015-03-06 15:29:40',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(478,'2015-03-06 21:53:02','USER_LOGIN',1,'2015-03-06 22:53:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(479,'2015-03-07 21:14:39','USER_LOGIN',1,'2015-03-07 22:14:39',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(480,'2015-03-08 00:06:05','USER_LOGIN',1,'2015-03-08 01:06:05',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(481,'2015-03-08 01:38:13','USER_LOGIN',1,'2015-03-08 02:38:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(482,'2015-03-08 08:59:50','USER_LOGIN',1,'2015-03-08 09:59:50',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(483,'2015-03-09 12:08:51','USER_LOGIN',1,'2015-03-09 13:08:51',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(484,'2015-03-09 15:19:53','USER_LOGIN',1,'2015-03-09 16:19:53',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(495,'2015-03-09 18:06:21','USER_LOGIN',1,'2015-03-09 19:06:21',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(496,'2015-03-09 20:01:24','USER_LOGIN',1,'2015-03-09 21:01:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(497,'2015-03-09 23:36:45','USER_LOGIN',1,'2015-03-10 00:36:45',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(498,'2015-03-10 14:37:13','USER_LOGIN',1,'2015-03-10 15:37:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(499,'2015-03-10 17:54:12','USER_LOGIN',1,'2015-03-10 18:54:12',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(500,'2015-03-11 08:57:09','USER_LOGIN',1,'2015-03-11 09:57:09',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(501,'2015-03-11 22:05:13','USER_LOGIN',1,'2015-03-11 23:05:13',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(502,'2015-03-12 08:34:27','USER_LOGIN',1,'2015-03-12 09:34:27',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(503,'2015-03-13 09:11:02','USER_LOGIN',1,'2015-03-13 10:11:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(504,'2015-03-13 10:02:11','USER_LOGIN',1,'2015-03-13 11:02:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(505,'2015-03-13 13:20:58','USER_LOGIN',1,'2015-03-13 14:20:58',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(506,'2015-03-13 16:19:28','USER_LOGIN',1,'2015-03-13 17:19:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(507,'2015-03-13 18:34:30','USER_LOGIN',1,'2015-03-13 19:34:30',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(508,'2015-03-14 08:25:02','USER_LOGIN',1,'2015-03-14 09:25:02',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(509,'2015-03-14 19:15:22','USER_LOGIN',1,'2015-03-14 20:15:22',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(510,'2015-03-14 21:58:53','USER_LOGIN',1,'2015-03-14 22:58:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(511,'2015-03-14 21:58:59','USER_LOGOUT',1,'2015-03-14 22:58:59',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(512,'2015-03-14 21:59:07','USER_LOGIN',1,'2015-03-14 22:59:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(513,'2015-03-14 22:58:22','USER_LOGOUT',1,'2015-03-14 23:58:22',1,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(514,'2015-03-14 23:00:25','USER_LOGIN',1,'2015-03-15 00:00:25',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(515,'2015-03-16 12:14:28','USER_LOGIN',1,'2015-03-16 13:14:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(516,'2015-03-16 16:09:01','USER_LOGIN',1,'2015-03-16 17:09:01',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(517,'2015-03-16 16:57:11','USER_LOGIN',1,'2015-03-16 17:57:11',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(518,'2015-03-16 19:31:31','USER_LOGIN',1,'2015-03-16 20:31:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22',NULL,NULL,NULL,NULL),(519,'2015-03-17 17:44:39','USER_LOGIN',1,'2015-03-17 18:44:39',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(520,'2015-03-17 20:40:57','USER_LOGIN',1,'2015-03-17 21:40:57',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(521,'2015-03-17 23:14:05','USER_LOGIN',1,'2015-03-18 00:14:05',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(522,'2015-03-17 23:28:47','USER_LOGOUT',1,'2015-03-18 00:28:47',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(523,'2015-03-17 23:28:54','USER_LOGIN',1,'2015-03-18 00:28:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(524,'2015-03-18 17:37:30','USER_LOGIN',1,'2015-03-18 18:37:30',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(525,'2015-03-18 18:11:37','USER_LOGIN',1,'2015-03-18 19:11:37',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(526,'2015-03-19 08:35:08','USER_LOGIN',1,'2015-03-19 09:35:08',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(527,'2015-03-19 09:20:23','USER_LOGIN',1,'2015-03-19 10:20:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(528,'2015-03-20 13:17:13','USER_LOGIN',1,'2015-03-20 14:17:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(529,'2015-03-20 14:44:31','USER_LOGIN',1,'2015-03-20 15:44:31',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(530,'2015-03-20 18:24:25','USER_LOGIN',1,'2015-03-20 19:24:25',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(531,'2015-03-20 19:15:54','USER_LOGIN',1,'2015-03-20 20:15:54',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(532,'2015-03-21 18:40:47','USER_LOGIN',1,'2015-03-21 19:40:47',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(533,'2015-03-21 21:42:24','USER_LOGIN',1,'2015-03-21 22:42:24',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(534,'2015-03-22 08:39:23','USER_LOGIN',1,'2015-03-22 09:39:23',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(535,'2015-03-23 13:04:55','USER_LOGIN',1,'2015-03-23 14:04:55',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(536,'2015-03-23 15:47:43','USER_LOGIN',1,'2015-03-23 16:47:43',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(537,'2015-03-23 22:56:36','USER_LOGIN',1,'2015-03-23 23:56:36',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(538,'2015-03-24 01:22:32','USER_LOGIN',1,'2015-03-24 02:22:32',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(539,'2015-03-24 14:40:42','USER_LOGIN',1,'2015-03-24 15:40:42',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(540,'2015-03-24 15:30:26','USER_LOGOUT',1,'2015-03-24 16:30:26',1,'(UserLogoff,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(541,'2015-03-24 15:30:29','USER_LOGIN',1,'2015-03-24 16:30:29',2,'(UserLogged,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(542,'2015-03-24 15:49:40','USER_LOGOUT',1,'2015-03-24 16:49:40',2,'(UserLogoff,demo)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(543,'2015-03-24 15:49:48','USER_LOGIN',1,'2015-03-24 16:49:48',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(544,'2015-03-24 15:52:35','USER_MODIFY',1,'2015-03-24 16:52:35',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(545,'2015-03-24 15:52:52','USER_MODIFY',1,'2015-03-24 16:52:52',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(546,'2015-03-24 15:53:09','USER_MODIFY',1,'2015-03-24 16:53:09',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(547,'2015-03-24 15:53:23','USER_MODIFY',1,'2015-03-24 16:53:23',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(548,'2015-03-24 16:00:04','USER_MODIFY',1,'2015-03-24 17:00:04',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(549,'2015-03-24 16:01:50','USER_MODIFY',1,'2015-03-24 17:01:50',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(550,'2015-03-24 16:10:14','USER_MODIFY',1,'2015-03-24 17:10:14',1,'Modification utilisateur zzzg','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(551,'2015-03-24 16:55:13','USER_LOGIN',1,'2015-03-24 17:55:13',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(552,'2015-03-24 17:44:29','USER_LOGIN',1,'2015-03-24 18:44:29',1,'(UserLogged,admin)','::1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',NULL,NULL,NULL,NULL),(553,'2015-09-08 23:06:26','USER_LOGIN',1,'2015-09-09 01:06:26',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36',NULL,NULL,NULL,NULL),(554,'2015-10-21 22:32:28','USER_LOGIN',1,'2015-10-22 00:32:28',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL,NULL,NULL,NULL),(555,'2015-10-21 22:32:48','USER_LOGIN',1,'2015-10-22 00:32:48',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36',NULL,NULL,NULL,NULL),(556,'2015-11-07 00:01:51','USER_LOGIN',1,'2015-11-07 01:01:51',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36',NULL,NULL,NULL,NULL),(557,'2016-03-02 15:21:07','USER_LOGIN',1,'2016-03-02 16:21:07',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(558,'2016-03-02 15:36:53','USER_LOGIN',1,'2016-03-02 16:36:53',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(559,'2016-03-02 18:54:23','USER_LOGIN',1,'2016-03-02 19:54:23',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(560,'2016-03-02 19:11:17','USER_LOGIN',1,'2016-03-02 20:11:17',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(561,'2016-03-03 18:19:24','USER_LOGIN',1,'2016-03-03 19:19:24',1,'(UserLogged,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36',NULL,NULL,NULL,NULL),(562,'2016-12-21 12:51:38','USER_LOGIN',1,'2016-12-21 13:51:38',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL,NULL,NULL,NULL),(563,'2016-12-21 19:52:09','USER_LOGIN',1,'2016-12-21 20:52:09',1,'(UserLogged,admin) - TZ=1;TZString=CET;Screen=1920x969','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36',NULL,NULL,NULL,NULL),(566,'2017-10-03 08:49:43','USER_NEW_PASSWORD',1,'2017-10-03 10:49:43',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(567,'2017-10-03 08:49:43','USER_MODIFY',1,'2017-10-03 10:49:43',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(568,'2017-10-03 09:03:12','USER_MODIFY',1,'2017-10-03 11:03:12',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(569,'2017-10-03 09:03:42','USER_MODIFY',1,'2017-10-03 11:03:42',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(570,'2017-10-03 09:07:36','USER_MODIFY',1,'2017-10-03 11:07:36',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(571,'2017-10-03 09:08:58','USER_NEW_PASSWORD',1,'2017-10-03 11:08:58',1,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(572,'2017-10-03 09:08:58','USER_MODIFY',1,'2017-10-03 11:08:58',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(573,'2017-10-03 09:09:23','USER_MODIFY',1,'2017-10-03 11:09:23',1,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(574,'2017-10-03 09:11:04','USER_NEW_PASSWORD',1,'2017-10-03 11:11:04',1,'Password change for athestudent','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(575,'2017-10-03 09:11:04','USER_MODIFY',1,'2017-10-03 11:11:04',1,'User athestudent modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(576,'2017-10-03 09:11:53','USER_MODIFY',1,'2017-10-03 11:11:53',1,'User abookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(577,'2017-10-03 09:42:12','USER_LOGIN_FAILED',1,'2017-10-03 11:42:11',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(578,'2017-10-03 09:42:19','USER_LOGIN_FAILED',1,'2017-10-03 11:42:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(579,'2017-10-03 09:42:42','USER_LOGIN_FAILED',1,'2017-10-03 11:42:42',NULL,'Bad value for login or password - login=aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(580,'2017-10-03 09:43:50','USER_LOGIN',1,'2017-10-03 11:43:50',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x788','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(581,'2017-10-03 09:44:44','GROUP_MODIFY',1,'2017-10-03 11:44:44',1,'Group Sale representatives modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(582,'2017-10-03 09:46:25','GROUP_CREATE',1,'2017-10-03 11:46:25',1,'Group Management created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(583,'2017-10-03 09:46:46','GROUP_CREATE',1,'2017-10-03 11:46:46',1,'Group Scientists created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(584,'2017-10-03 09:47:41','USER_CREATE',1,'2017-10-03 11:47:41',1,'User mcurie created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(585,'2017-10-03 09:47:41','USER_NEW_PASSWORD',1,'2017-10-03 11:47:41',1,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(586,'2017-10-03 09:47:53','USER_MODIFY',1,'2017-10-03 11:47:53',1,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(587,'2017-10-03 09:48:32','USER_DELETE',1,'2017-10-03 11:48:32',1,'User bbb removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(588,'2017-10-03 09:48:52','USER_MODIFY',1,'2017-10-03 11:48:52',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(589,'2017-10-03 10:01:28','USER_MODIFY',1,'2017-10-03 12:01:28',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(590,'2017-10-03 10:01:39','USER_MODIFY',1,'2017-10-03 12:01:39',1,'User bookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(591,'2017-10-05 06:32:38','USER_LOGIN_FAILED',1,'2017-10-05 08:32:38',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(592,'2017-10-05 06:32:44','USER_LOGIN',1,'2017-10-05 08:32:44',1,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(593,'2017-10-05 07:07:52','USER_CREATE',1,'2017-10-05 09:07:52',1,'User atheceo created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(594,'2017-10-05 07:07:52','USER_NEW_PASSWORD',1,'2017-10-05 09:07:52',1,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(595,'2017-10-05 07:09:08','USER_NEW_PASSWORD',1,'2017-10-05 09:09:08',1,'Password change for aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(596,'2017-10-05 07:09:08','USER_MODIFY',1,'2017-10-05 09:09:08',1,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(597,'2017-10-05 07:09:46','USER_CREATE',1,'2017-10-05 09:09:46',1,'User admin created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(598,'2017-10-05 07:09:46','USER_NEW_PASSWORD',1,'2017-10-05 09:09:46',1,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(599,'2017-10-05 07:10:20','USER_MODIFY',1,'2017-10-05 09:10:20',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(600,'2017-10-05 07:10:48','USER_MODIFY',1,'2017-10-05 09:10:48',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(601,'2017-10-05 07:11:22','USER_NEW_PASSWORD',1,'2017-10-05 09:11:22',1,'Password change for bbookkeeper','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(602,'2017-10-05 07:11:22','USER_MODIFY',1,'2017-10-05 09:11:22',1,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(603,'2017-10-05 07:12:37','USER_MODIFY',1,'2017-10-05 09:12:37',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(604,'2017-10-05 07:13:27','USER_MODIFY',1,'2017-10-05 09:13:27',1,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(605,'2017-10-05 07:13:52','USER_MODIFY',1,'2017-10-05 09:13:52',1,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(606,'2017-10-05 07:14:35','USER_LOGOUT',1,'2017-10-05 09:14:35',1,'(UserLogoff,aeinstein)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(607,'2017-10-05 07:14:40','USER_LOGIN_FAILED',1,'2017-10-05 09:14:40',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(608,'2017-10-05 07:14:44','USER_LOGIN_FAILED',1,'2017-10-05 09:14:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(609,'2017-10-05 07:14:49','USER_LOGIN',1,'2017-10-05 09:14:49',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(610,'2017-10-05 07:57:18','USER_MODIFY',1,'2017-10-05 09:57:18',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(611,'2017-10-05 08:06:54','USER_LOGOUT',1,'2017-10-05 10:06:54',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(612,'2017-10-05 08:07:03','USER_LOGIN',1,'2017-10-05 10:07:03',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(613,'2017-10-05 19:18:46','USER_LOGIN',1,'2017-10-05 21:18:46',11,'(UserLogged,atheceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(614,'2017-10-05 19:29:35','USER_CREATE',1,'2017-10-05 21:29:35',11,'User ccommercy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(615,'2017-10-05 19:29:35','USER_NEW_PASSWORD',1,'2017-10-05 21:29:35',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(616,'2017-10-05 19:30:13','GROUP_CREATE',1,'2017-10-05 21:30:13',11,'Group Commercial created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(617,'2017-10-05 19:31:37','USER_NEW_PASSWORD',1,'2017-10-05 21:31:37',11,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(618,'2017-10-05 19:31:37','USER_MODIFY',1,'2017-10-05 21:31:37',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(619,'2017-10-05 19:32:00','USER_MODIFY',1,'2017-10-05 21:32:00',11,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(620,'2017-10-05 19:33:33','USER_CREATE',1,'2017-10-05 21:33:33',11,'User sscientol created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(621,'2017-10-05 19:33:33','USER_NEW_PASSWORD',1,'2017-10-05 21:33:33',11,'Password change for sscientol','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(622,'2017-10-05 19:33:47','USER_NEW_PASSWORD',1,'2017-10-05 21:33:47',11,'Password change for mcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(623,'2017-10-05 19:33:47','USER_MODIFY',1,'2017-10-05 21:33:47',11,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(624,'2017-10-05 19:34:23','USER_NEW_PASSWORD',1,'2017-10-05 21:34:23',11,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(625,'2017-10-05 19:34:23','USER_MODIFY',1,'2017-10-05 21:34:23',11,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(626,'2017-10-05 19:34:42','USER_MODIFY',1,'2017-10-05 21:34:42',11,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(627,'2017-10-05 19:36:06','USER_NEW_PASSWORD',1,'2017-10-05 21:36:06',11,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(628,'2017-10-05 19:36:06','USER_MODIFY',1,'2017-10-05 21:36:06',11,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(629,'2017-10-05 19:36:57','USER_NEW_PASSWORD',1,'2017-10-05 21:36:57',11,'Password change for atheceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(630,'2017-10-05 19:36:57','USER_MODIFY',1,'2017-10-05 21:36:57',11,'User atheceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(631,'2017-10-05 19:37:27','USER_LOGOUT',1,'2017-10-05 21:37:27',11,'(UserLogoff,atheceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(632,'2017-10-05 19:37:35','USER_LOGIN_FAILED',1,'2017-10-05 21:37:35',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(633,'2017-10-05 19:37:39','USER_LOGIN_FAILED',1,'2017-10-05 21:37:39',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(634,'2017-10-05 19:37:44','USER_LOGIN_FAILED',1,'2017-10-05 21:37:44',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(635,'2017-10-05 19:37:49','USER_LOGIN_FAILED',1,'2017-10-05 21:37:49',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(636,'2017-10-05 19:38:12','USER_LOGIN_FAILED',1,'2017-10-05 21:38:12',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(637,'2017-10-05 19:40:48','USER_LOGIN_FAILED',1,'2017-10-05 21:40:48',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(638,'2017-10-05 19:40:55','USER_LOGIN',1,'2017-10-05 21:40:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(639,'2017-10-05 19:43:34','USER_MODIFY',1,'2017-10-05 21:43:34',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(640,'2017-10-05 19:45:43','USER_CREATE',1,'2017-10-05 21:45:43',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(641,'2017-10-05 19:45:43','USER_NEW_PASSWORD',1,'2017-10-05 21:45:43',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(642,'2017-10-05 19:46:18','USER_DELETE',1,'2017-10-05 21:46:18',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(643,'2017-10-05 19:47:09','USER_MODIFY',1,'2017-10-05 21:47:09',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(644,'2017-10-05 19:47:22','USER_MODIFY',1,'2017-10-05 21:47:22',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(645,'2017-10-05 19:52:05','USER_MODIFY',1,'2017-10-05 21:52:05',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(646,'2017-10-05 19:52:23','USER_MODIFY',1,'2017-10-05 21:52:23',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(647,'2017-10-05 19:54:54','USER_NEW_PASSWORD',1,'2017-10-05 21:54:54',12,'Password change for zzeceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(648,'2017-10-05 19:54:54','USER_MODIFY',1,'2017-10-05 21:54:54',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(649,'2017-10-05 19:57:02','USER_MODIFY',1,'2017-10-05 21:57:02',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(650,'2017-10-05 19:57:57','USER_NEW_PASSWORD',1,'2017-10-05 21:57:57',12,'Password change for pcurie','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(651,'2017-10-05 19:57:57','USER_MODIFY',1,'2017-10-05 21:57:57',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(652,'2017-10-05 19:59:42','USER_NEW_PASSWORD',1,'2017-10-05 21:59:42',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(653,'2017-10-05 19:59:42','USER_MODIFY',1,'2017-10-05 21:59:42',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(654,'2017-10-05 20:00:21','USER_MODIFY',1,'2017-10-05 22:00:21',12,'User adminx modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(655,'2017-10-05 20:05:36','USER_MODIFY',1,'2017-10-05 22:05:36',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(656,'2017-10-05 20:06:25','USER_MODIFY',1,'2017-10-05 22:06:25',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(657,'2017-10-05 20:07:18','USER_MODIFY',1,'2017-10-05 22:07:18',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(658,'2017-10-05 20:07:36','USER_MODIFY',1,'2017-10-05 22:07:36',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(659,'2017-10-05 20:08:34','USER_MODIFY',1,'2017-10-05 22:08:34',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(660,'2017-10-05 20:47:52','USER_CREATE',1,'2017-10-05 22:47:52',12,'User cc1 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(661,'2017-10-05 20:47:52','USER_NEW_PASSWORD',1,'2017-10-05 22:47:52',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(662,'2017-10-05 20:47:55','USER_LOGOUT',1,'2017-10-05 22:47:55',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(663,'2017-10-05 20:48:08','USER_LOGIN',1,'2017-10-05 22:48:08',11,'(UserLogged,zzeceo) - TZ=1;TZString=Europe/Berlin;Screen=1590x434','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(664,'2017-10-05 20:48:39','USER_CREATE',1,'2017-10-05 22:48:39',11,'User cc2 created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(665,'2017-10-05 20:48:39','USER_NEW_PASSWORD',1,'2017-10-05 22:48:39',11,'Password change for cc2','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(666,'2017-10-05 20:48:59','USER_NEW_PASSWORD',1,'2017-10-05 22:48:59',11,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(667,'2017-10-05 20:48:59','USER_MODIFY',1,'2017-10-05 22:48:59',11,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(668,'2017-10-05 21:06:36','USER_LOGOUT',1,'2017-10-05 23:06:35',11,'(UserLogoff,zzeceo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(669,'2017-10-05 21:06:44','USER_LOGIN_FAILED',1,'2017-10-05 23:06:44',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(670,'2017-10-05 21:07:12','USER_LOGIN_FAILED',1,'2017-10-05 23:07:12',NULL,'Bad value for login or password - login=cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(671,'2017-10-05 21:07:19','USER_LOGIN_FAILED',1,'2017-10-05 23:07:19',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(672,'2017-10-05 21:07:27','USER_LOGIN_FAILED',1,'2017-10-05 23:07:27',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(673,'2017-10-05 21:07:32','USER_LOGIN',1,'2017-10-05 23:07:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(674,'2017-10-05 21:12:28','USER_NEW_PASSWORD',1,'2017-10-05 23:12:28',12,'Password change for cc1','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(675,'2017-10-05 21:12:28','USER_MODIFY',1,'2017-10-05 23:12:28',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(676,'2017-10-05 21:13:00','USER_CREATE',1,'2017-10-05 23:13:00',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(677,'2017-10-05 21:13:00','USER_NEW_PASSWORD',1,'2017-10-05 23:13:00',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(678,'2017-10-05 21:13:40','USER_DELETE',1,'2017-10-05 23:13:40',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(679,'2017-10-05 21:14:47','USER_LOGOUT',1,'2017-10-05 23:14:47',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(680,'2017-10-05 21:14:56','USER_LOGIN',1,'2017-10-05 23:14:56',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(681,'2017-10-05 21:15:56','USER_LOGOUT',1,'2017-10-05 23:15:56',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(682,'2017-10-05 21:16:06','USER_LOGIN',1,'2017-10-05 23:16:06',17,'(UserLogged,cc2) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(683,'2017-10-05 21:37:25','USER_LOGOUT',1,'2017-10-05 23:37:25',17,'(UserLogoff,cc2)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(684,'2017-10-05 21:37:31','USER_LOGIN',1,'2017-10-05 23:37:31',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(685,'2017-10-05 21:43:53','USER_LOGOUT',1,'2017-10-05 23:43:53',16,'(UserLogoff,cc1)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(686,'2017-10-05 21:44:00','USER_LOGIN',1,'2017-10-05 23:44:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(687,'2017-10-05 21:46:17','USER_LOGOUT',1,'2017-10-05 23:46:17',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(688,'2017-10-05 21:46:24','USER_LOGIN',1,'2017-10-05 23:46:24',16,'(UserLogged,cc1) - TZ=1;TZString=Europe/Berlin;Screen=1590x767','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',NULL,NULL,NULL,NULL),(689,'2017-11-04 15:17:06','USER_LOGIN',1,'2017-11-04 16:17:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(690,'2017-11-15 22:04:04','USER_LOGIN',1,'2017-11-15 23:04:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(691,'2017-11-15 22:23:45','USER_MODIFY',1,'2017-11-15 23:23:45',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(692,'2017-11-15 22:24:22','USER_MODIFY',1,'2017-11-15 23:24:22',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(693,'2017-11-15 22:24:53','USER_MODIFY',1,'2017-11-15 23:24:53',12,'User cc2 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(694,'2017-11-15 22:25:17','USER_MODIFY',1,'2017-11-15 23:25:17',12,'User cc1 modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(695,'2017-11-15 22:45:37','USER_LOGOUT',1,'2017-11-15 23:45:37',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(696,'2017-11-18 13:41:02','USER_LOGIN',1,'2017-11-18 14:41:02',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(697,'2017-11-18 14:23:35','USER_LOGIN',1,'2017-11-18 15:23:35',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(698,'2017-11-18 15:15:46','USER_LOGOUT',1,'2017-11-18 16:15:46',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(699,'2017-11-18 15:15:51','USER_LOGIN',1,'2017-11-18 16:15:51',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(700,'2017-11-30 17:52:08','USER_LOGIN',1,'2017-11-30 18:52:08',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(701,'2018-01-10 16:45:43','USER_LOGIN',1,'2018-01-10 17:45:43',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(702,'2018-01-10 16:45:52','USER_LOGOUT',1,'2018-01-10 17:45:52',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(703,'2018-01-10 16:46:06','USER_LOGIN',1,'2018-01-10 17:46:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(704,'2018-01-16 14:53:47','USER_LOGIN',1,'2018-01-16 15:53:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(705,'2018-01-16 15:04:29','USER_LOGOUT',1,'2018-01-16 16:04:29',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(706,'2018-01-16 15:04:40','USER_LOGIN',1,'2018-01-16 16:04:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(707,'2018-01-22 09:33:26','USER_LOGIN',1,'2018-01-22 10:33:26',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(708,'2018-01-22 09:35:19','USER_LOGOUT',1,'2018-01-22 10:35:19',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(709,'2018-01-22 09:35:29','USER_LOGIN',1,'2018-01-22 10:35:29',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(710,'2018-01-22 10:47:34','USER_CREATE',1,'2018-01-22 11:47:34',12,'User aaa created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(711,'2018-01-22 10:47:34','USER_NEW_PASSWORD',1,'2018-01-22 11:47:34',12,'Password change for aaa','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(712,'2018-01-22 12:07:56','USER_LOGIN',1,'2018-01-22 13:07:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(713,'2018-01-22 12:36:25','USER_NEW_PASSWORD',1,'2018-01-22 13:36:25',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(714,'2018-01-22 12:36:25','USER_MODIFY',1,'2018-01-22 13:36:25',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(715,'2018-01-22 12:56:32','USER_MODIFY',1,'2018-01-22 13:56:32',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(716,'2018-01-22 12:58:05','USER_MODIFY',1,'2018-01-22 13:58:05',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(717,'2018-01-22 13:01:02','USER_MODIFY',1,'2018-01-22 14:01:02',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(718,'2018-01-22 13:01:18','USER_MODIFY',1,'2018-01-22 14:01:18',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(719,'2018-01-22 13:13:42','USER_MODIFY',1,'2018-01-22 14:13:42',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(720,'2018-01-22 13:15:20','USER_DELETE',1,'2018-01-22 14:15:20',12,'User aaa removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(721,'2018-01-22 13:19:21','USER_LOGOUT',1,'2018-01-22 14:19:21',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(722,'2018-01-22 13:19:32','USER_LOGIN',1,'2018-01-22 14:19:32',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(723,'2018-01-22 13:19:51','USER_LOGOUT',1,'2018-01-22 14:19:51',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(724,'2018-01-22 13:20:01','USER_LOGIN',1,'2018-01-22 14:20:01',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(725,'2018-01-22 13:28:22','USER_LOGOUT',1,'2018-01-22 14:28:22',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(726,'2018-01-22 13:28:35','USER_LOGIN',1,'2018-01-22 14:28:35',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(727,'2018-01-22 13:33:54','USER_LOGOUT',1,'2018-01-22 14:33:54',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(728,'2018-01-22 13:34:05','USER_LOGIN',1,'2018-01-22 14:34:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(729,'2018-01-22 13:51:46','USER_MODIFY',1,'2018-01-22 14:51:46',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36',NULL,NULL,NULL,NULL),(730,'2018-01-22 16:20:12','USER_LOGIN',1,'2018-01-22 17:20:12',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(731,'2018-01-22 16:20:22','USER_LOGOUT',1,'2018-01-22 17:20:22',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(732,'2018-01-22 16:20:36','USER_LOGIN',1,'2018-01-22 17:20:36',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(733,'2018-01-22 16:27:02','USER_CREATE',1,'2018-01-22 17:27:02',12,'User ldestailleur created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(734,'2018-01-22 16:27:02','USER_NEW_PASSWORD',1,'2018-01-22 17:27:02',12,'Password change for ldestailleur','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(735,'2018-01-22 16:28:34','USER_MODIFY',1,'2018-01-22 17:28:34',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(736,'2018-01-22 16:30:01','USER_ENABLEDISABLE',1,'2018-01-22 17:30:01',12,'User cc2 activated','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(737,'2018-01-22 17:11:06','USER_LOGIN',1,'2018-01-22 18:11:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=1600x790','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(738,'2018-01-22 18:00:02','USER_DELETE',1,'2018-01-22 19:00:02',12,'User zzz removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(739,'2018-01-22 18:01:40','USER_DELETE',1,'2018-01-22 19:01:40',12,'User aaab removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(740,'2018-01-22 18:01:52','USER_DELETE',1,'2018-01-22 19:01:52',12,'User zzzg removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36',NULL,NULL,NULL,NULL),(741,'2018-03-13 10:54:59','USER_LOGIN',1,'2018-03-13 14:54:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x971','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',NULL,NULL,NULL,NULL),(742,'2018-07-30 11:13:10','USER_LOGIN',1,'2018-07-30 15:13:10',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(743,'2018-07-30 12:50:23','USER_CREATE',1,'2018-07-30 16:50:23',12,'User eldy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(744,'2018-07-30 12:50:23','USER_CREATE',1,'2018-07-30 16:50:23',12,'User eldy created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(745,'2018-07-30 12:50:23','USER_NEW_PASSWORD',1,'2018-07-30 16:50:23',12,'Password change for eldy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(746,'2018-07-30 12:50:38','USER_MODIFY',1,'2018-07-30 16:50:38',12,'User eldy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(747,'2018-07-30 12:50:54','USER_DELETE',1,'2018-07-30 16:50:54',12,'User eldy removed','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(748,'2018-07-30 12:51:23','USER_NEW_PASSWORD',1,'2018-07-30 16:51:23',12,'Password change for ldestailleur','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(749,'2018-07-30 12:51:23','USER_MODIFY',1,'2018-07-30 16:51:23',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(750,'2018-07-30 18:26:58','USER_LOGIN',1,'2018-07-30 22:26:58',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(751,'2018-07-30 18:27:40','USER_LOGOUT',1,'2018-07-30 22:27:40',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(752,'2018-07-30 18:27:47','USER_LOGIN',1,'2018-07-30 22:27:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(753,'2018-07-30 19:00:00','USER_LOGOUT',1,'2018-07-30 23:00:00',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(754,'2018-07-30 19:00:04','USER_LOGIN',1,'2018-07-30 23:00:04',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(755,'2018-07-30 19:00:14','USER_LOGOUT',1,'2018-07-30 23:00:14',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(756,'2018-07-30 19:00:19','USER_LOGIN',1,'2018-07-30 23:00:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(757,'2018-07-30 19:00:43','USER_LOGOUT',1,'2018-07-30 23:00:43',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(758,'2018-07-30 19:00:48','USER_LOGIN',1,'2018-07-30 23:00:48',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(759,'2018-07-30 19:03:52','USER_LOGOUT',1,'2018-07-30 23:03:52',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(760,'2018-07-30 19:03:57','USER_LOGIN_FAILED',1,'2018-07-30 23:03:57',NULL,'Bad value for login or password - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(761,'2018-07-30 19:03:59','USER_LOGIN',1,'2018-07-30 23:03:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(762,'2018-07-30 19:04:13','USER_LOGOUT',1,'2018-07-30 23:04:13',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(763,'2018-07-30 19:04:17','USER_LOGIN',1,'2018-07-30 23:04:17',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(764,'2018-07-30 19:04:26','USER_LOGOUT',1,'2018-07-30 23:04:26',2,'(UserLogoff,demo)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(765,'2018-07-30 19:04:31','USER_LOGIN',1,'2018-07-30 23:04:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(766,'2018-07-30 19:10:50','USER_LOGOUT',1,'2018-07-30 23:10:50',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(767,'2018-07-30 19:10:54','USER_LOGIN',1,'2018-07-30 23:10:54',2,'(UserLogged,demo) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(768,'2018-07-31 10:15:52','USER_LOGIN',1,'2018-07-31 14:15:52',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(769,'2018-07-31 10:16:27','USER_LOGIN',1,'2018-07-31 14:16:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(770,'2018-07-31 10:32:14','USER_LOGIN',1,'2018-07-31 14:32:14',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(771,'2018-07-31 10:36:28','USER_LOGIN',1,'2018-07-31 14:36:28',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Links (2.8; Linux 3.19.0-46-generic x86_64; GNU C 4.8.2; text)',NULL,NULL,NULL,NULL),(772,'2018-07-31 10:40:10','USER_LOGIN',1,'2018-07-31 14:40:10',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Links (2.8; Linux 3.19.0-46-generic x86_64; GNU C 4.8.2; text)',NULL,NULL,NULL,NULL),(773,'2018-07-31 10:54:16','USER_LOGIN',1,'2018-07-31 14:54:16',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23',NULL,NULL,NULL,NULL),(774,'2018-07-31 12:52:52','USER_LOGIN',1,'2018-07-31 16:52:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x592','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(775,'2018-07-31 13:25:33','USER_LOGOUT',1,'2018-07-31 17:25:33',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(776,'2018-07-31 13:26:32','USER_LOGIN',1,'2018-07-31 17:26:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1280x751','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(777,'2018-07-31 14:13:57','USER_LOGOUT',1,'2018-07-31 18:13:57',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(778,'2018-07-31 14:14:04','USER_LOGIN',1,'2018-07-31 18:14:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(779,'2018-07-31 16:04:35','USER_LOGIN',1,'2018-07-31 20:04:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(780,'2018-07-31 21:14:14','USER_LOGIN',1,'2018-08-01 01:14:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36',NULL,NULL,NULL,NULL),(781,'2017-01-29 15:14:05','USER_LOGOUT',1,'2017-01-29 19:14:05',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(782,'2017-01-29 15:34:43','USER_LOGIN',1,'2017-01-29 19:34:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(783,'2017-01-29 15:35:04','USER_LOGOUT',1,'2017-01-29 19:35:04',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(784,'2017-01-29 15:35:12','USER_LOGIN',1,'2017-01-29 19:35:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(785,'2017-01-29 15:36:43','USER_LOGOUT',1,'2017-01-29 19:36:43',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(786,'2017-01-29 15:41:21','USER_LOGIN',1,'2017-01-29 19:41:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(787,'2017-01-29 15:41:41','USER_LOGOUT',1,'2017-01-29 19:41:41',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(788,'2017-01-29 15:42:43','USER_LOGIN',1,'2017-01-29 19:42:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(789,'2017-01-29 15:43:18','USER_LOGOUT',1,'2017-01-29 19:43:18',12,'(UserLogoff,admin)','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(790,'2017-01-29 15:46:31','USER_LOGIN',1,'2017-01-29 19:46:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x571','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(791,'2017-01-29 16:18:56','USER_LOGIN',1,'2017-01-29 20:18:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Berlin;Screen=360x526','192.168.0.254','Mozilla/5.0 (Linux; Android 6.0; LG-H818 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 - DoliDroid - Android client pour Dolibarr ERP-CRM',NULL,NULL,NULL,NULL),(792,'2017-01-29 17:20:59','USER_LOGIN',1,'2017-01-29 21:20:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(793,'2017-01-30 11:19:40','USER_LOGIN',1,'2017-01-30 15:19:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(794,'2017-01-31 16:49:39','USER_LOGIN',1,'2017-01-31 20:49:39',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x520','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(795,'2017-02-01 10:55:23','USER_LOGIN',1,'2017-02-01 14:55:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(796,'2017-02-01 13:34:31','USER_LOGIN',1,'2017-02-01 17:34:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(797,'2017-02-01 14:41:26','USER_LOGIN',1,'2017-02-01 18:41:26',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(798,'2017-02-01 23:51:48','USER_LOGIN_FAILED',1,'2017-02-02 03:51:48',NULL,'Bad value for login or password - login=autologin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(799,'2017-02-01 23:52:55','USER_LOGIN',1,'2017-02-02 03:52:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(800,'2017-02-01 23:55:45','USER_CREATE',1,'2017-02-02 03:55:45',12,'User aboston created','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(801,'2017-02-01 23:55:45','USER_NEW_PASSWORD',1,'2017-02-02 03:55:45',12,'Password change for aboston','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(802,'2017-02-01 23:56:38','USER_MODIFY',1,'2017-02-02 03:56:38',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(803,'2017-02-01 23:56:50','USER_MODIFY',1,'2017-02-02 03:56:50',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(804,'2017-02-02 01:14:44','USER_LOGIN',1,'2017-02-02 05:14:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',NULL,NULL,NULL,NULL),(805,'2017-02-03 10:27:18','USER_LOGIN',1,'2017-02-03 14:27:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(806,'2017-02-04 10:22:34','USER_LOGIN',1,'2017-02-04 14:22:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x489','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(807,'2017-02-06 04:01:31','USER_LOGIN',1,'2017-02-06 08:01:31',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(808,'2017-02-06 10:21:32','USER_LOGIN',1,'2017-02-06 14:21:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(809,'2017-02-06 19:09:27','USER_LOGIN',1,'2017-02-06 23:09:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(810,'2017-02-06 23:39:17','USER_LOGIN',1,'2017-02-07 03:39:17',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(811,'2017-02-07 11:36:34','USER_LOGIN',1,'2017-02-07 15:36:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x676','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(812,'2017-02-07 18:51:53','USER_LOGIN',1,'2017-02-07 22:51:53',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(813,'2017-02-07 23:13:40','USER_LOGIN',1,'2017-02-08 03:13:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(814,'2017-02-08 09:29:12','USER_LOGIN',1,'2017-02-08 13:29:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(815,'2017-02-08 17:33:12','USER_LOGIN',1,'2017-02-08 21:33:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(816,'2017-02-09 17:30:34','USER_LOGIN',1,'2017-02-09 21:30:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(817,'2017-02-10 09:30:02','USER_LOGIN',1,'2017-02-10 13:30:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(818,'2017-02-10 16:16:14','USER_LOGIN',1,'2017-02-10 20:16:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(819,'2017-02-10 17:28:15','USER_LOGIN',1,'2017-02-10 21:28:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(820,'2017-02-11 12:54:03','USER_LOGIN',1,'2017-02-11 16:54:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(821,'2017-02-11 17:23:52','USER_LOGIN',1,'2017-02-11 21:23:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(822,'2017-02-12 12:44:03','USER_LOGIN',1,'2017-02-12 16:44:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(823,'2017-02-12 16:42:13','USER_LOGIN',1,'2017-02-12 20:42:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(824,'2017-02-12 19:14:18','USER_LOGIN',1,'2017-02-12 23:14:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(825,'2017-02-15 17:17:00','USER_LOGIN',1,'2017-02-15 21:17:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(826,'2017-02-15 22:02:40','USER_LOGIN',1,'2017-02-16 02:02:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(827,'2017-02-16 22:13:27','USER_LOGIN',1,'2017-02-17 02:13:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x619','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(828,'2017-02-16 23:54:04','USER_LOGIN',1,'2017-02-17 03:54:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(829,'2017-02-17 09:14:27','USER_LOGIN',1,'2017-02-17 13:14:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(830,'2017-02-17 12:07:05','USER_LOGIN',1,'2017-02-17 16:07:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(831,'2017-02-19 21:22:20','USER_LOGIN',1,'2017-02-20 01:22:20',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(832,'2017-02-20 09:26:47','USER_LOGIN',1,'2017-02-20 13:26:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(833,'2017-02-20 16:39:55','USER_LOGIN',1,'2017-02-20 20:39:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(834,'2017-02-20 16:49:00','USER_MODIFY',1,'2017-02-20 20:49:00',12,'Modification utilisateur ccommerson','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(835,'2017-02-20 17:57:15','USER_LOGIN',1,'2017-02-20 21:57:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(836,'2017-02-20 19:43:48','USER_LOGIN',1,'2017-02-20 23:43:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(837,'2017-02-21 00:04:05','USER_LOGIN',1,'2017-02-21 04:04:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(838,'2017-02-21 10:23:13','USER_LOGIN',1,'2017-02-21 14:23:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(839,'2017-02-21 10:30:17','USER_LOGOUT',1,'2017-02-21 14:30:17',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(840,'2017-02-21 10:30:22','USER_LOGIN',1,'2017-02-21 14:30:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(841,'2017-02-21 11:44:05','USER_LOGIN',1,'2017-02-21 15:44:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',NULL,NULL,NULL,NULL),(842,'2017-05-12 09:02:48','USER_LOGIN',1,'2017-05-12 13:02:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',NULL,NULL,NULL,NULL),(843,'2017-08-27 13:29:16','USER_LOGIN',1,'2017-08-27 17:29:16',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(844,'2017-08-28 09:11:07','USER_LOGIN',1,'2017-08-28 13:11:07',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(845,'2017-08-28 10:08:58','USER_LOGIN',1,'2017-08-28 14:08:58',12,'(UserLogged,admin) - TZ=;TZString=;Screen=x','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(846,'2017-08-28 10:12:46','USER_MODIFY',1,'2017-08-28 14:12:46',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(847,'2017-08-28 10:28:25','USER_LOGIN',1,'2017-08-28 14:28:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(848,'2017-08-28 10:28:36','USER_LOGOUT',1,'2017-08-28 14:28:36',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(849,'2017-08-28 10:34:50','USER_LOGIN',1,'2017-08-28 14:34:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(850,'2017-08-28 11:59:02','USER_LOGIN',1,'2017-08-28 15:59:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36',NULL,NULL,NULL,NULL),(851,'2017-08-29 09:57:34','USER_LOGIN',1,'2017-08-29 13:57:34',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(852,'2017-08-29 11:05:51','USER_LOGIN',1,'2017-08-29 15:05:51',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(853,'2017-08-29 14:15:58','USER_LOGIN',1,'2017-08-29 18:15:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(854,'2017-08-29 17:49:28','USER_LOGIN',1,'2017-08-29 21:49:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(855,'2017-08-30 11:53:25','USER_LOGIN',1,'2017-08-30 15:53:25',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(856,'2017-08-30 12:19:31','USER_MODIFY',1,'2017-08-30 16:19:31',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(857,'2017-08-30 12:19:32','USER_MODIFY',1,'2017-08-30 16:19:32',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(858,'2017-08-30 12:19:33','USER_MODIFY',1,'2017-08-30 16:19:33',18,'Modification utilisateur ldestailleur - UserRemovedFromGroup','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(859,'2017-08-30 12:21:42','USER_LOGOUT',1,'2017-08-30 16:21:42',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(860,'2017-08-30 12:21:48','USER_LOGIN',1,'2017-08-30 16:21:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(861,'2017-08-30 15:02:06','USER_LOGIN',1,'2017-08-30 19:02:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(862,'2017-08-31 09:25:42','USER_LOGIN',1,'2017-08-31 13:25:42',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(863,'2017-09-04 07:51:21','USER_LOGIN',1,'2017-09-04 11:51:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x577','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(864,'2017-09-04 09:17:09','USER_LOGIN',1,'2017-09-04 13:17:09',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(865,'2017-09-04 13:40:28','USER_LOGIN',1,'2017-09-04 17:40:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(866,'2017-09-06 07:55:30','USER_LOGIN',1,'2017-09-06 11:55:30',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(867,'2017-09-06 07:55:33','USER_LOGOUT',1,'2017-09-06 11:55:33',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(868,'2017-09-06 07:55:38','USER_LOGIN',1,'2017-09-06 11:55:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(869,'2017-09-06 16:03:38','USER_LOGIN',1,'2017-09-06 20:03:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(870,'2017-09-06 19:43:07','USER_LOGIN',1,'2017-09-06 23:43:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x937','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36',NULL,NULL,NULL,NULL),(871,'2018-01-19 11:18:08','USER_LOGOUT',1,'2018-01-19 11:18:08',12,'(UserLogoff,admin)','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',NULL,NULL,NULL,NULL),(872,'2018-01-19 11:18:47','USER_LOGIN',1,'2018-01-19 11:18:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x965','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',NULL,NULL,NULL,NULL),(873,'2018-01-19 11:21:41','USER_LOGIN',1,'2018-01-19 11:21:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x926','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(874,'2018-01-19 11:24:18','USER_NEW_PASSWORD',1,'2018-01-19 11:24:18',12,'Password change for admin','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(875,'2018-01-19 11:24:18','USER_MODIFY',1,'2018-01-19 11:24:18',12,'User admin modified','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(876,'2018-01-19 11:28:45','USER_LOGOUT',1,'2018-01-19 11:28:45',12,'(UserLogoff,admin)','82.240.38.230','Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0',NULL,NULL,NULL,NULL),(877,'2018-03-16 09:54:15','USER_LOGIN_FAILED',1,'2018-03-16 13:54:15',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',NULL,NULL,NULL,NULL),(878,'2018-03-16 09:54:23','USER_LOGIN',1,'2018-03-16 13:54:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x936','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',NULL,NULL,NULL,NULL),(879,'2019-09-26 11:35:07','USER_MODIFY',1,'2019-09-26 13:35:07',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(880,'2019-09-26 11:35:33','USER_MODIFY',1,'2019-09-26 13:35:33',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(881,'2019-09-26 11:36:33','USER_MODIFY',1,'2019-09-26 13:36:33',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(882,'2019-09-26 11:36:56','USER_MODIFY',1,'2019-09-26 13:36:56',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(883,'2019-09-26 11:37:30','USER_MODIFY',1,'2019-09-26 13:37:30',12,'User ldestailleur modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(884,'2019-09-26 11:37:56','USER_MODIFY',1,'2019-09-26 13:37:56',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(885,'2019-09-26 11:38:11','USER_MODIFY',1,'2019-09-26 13:38:11',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(886,'2019-09-26 11:38:27','USER_MODIFY',1,'2019-09-26 13:38:27',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(887,'2019-09-26 11:38:48','USER_MODIFY',1,'2019-09-26 13:38:48',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(888,'2019-09-26 11:39:35','USER_MODIFY',1,'2019-09-26 13:39:35',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(889,'2019-09-26 11:41:28','USER_MODIFY',1,'2019-09-26 13:41:28',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(890,'2019-09-26 11:43:27','USER_MODIFY',1,'2019-09-26 13:43:27',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(891,'2019-09-26 11:46:44','USER_MODIFY',1,'2019-09-26 13:46:44',12,'User aleerfok modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(892,'2019-09-26 11:46:54','USER_MODIFY',1,'2019-09-26 13:46:54',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(893,'2019-09-26 11:47:08','USER_MODIFY',1,'2019-09-26 13:47:08',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(894,'2019-09-26 11:48:04','USER_MODIFY',1,'2019-09-26 13:48:04',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(895,'2019-09-26 11:48:32','USER_MODIFY',1,'2019-09-26 13:48:32',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(896,'2019-09-26 11:48:49','USER_MODIFY',1,'2019-09-26 13:48:49',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(897,'2019-09-26 11:49:12','USER_MODIFY',1,'2019-09-26 13:49:12',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(898,'2019-09-26 11:49:21','USER_MODIFY',1,'2019-09-26 13:49:21',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(899,'2019-09-26 11:49:28','USER_MODIFY',1,'2019-09-26 13:49:28',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(900,'2019-09-26 11:49:37','USER_MODIFY',1,'2019-09-26 13:49:37',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(901,'2019-09-26 11:49:46','USER_MODIFY',1,'2019-09-26 13:49:46',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(902,'2019-09-26 11:49:57','USER_MODIFY',1,'2019-09-26 13:49:57',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(903,'2019-09-26 11:50:17','USER_MODIFY',1,'2019-09-26 13:50:17',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(904,'2019-09-26 11:50:43','USER_MODIFY',1,'2019-09-26 13:50:43',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(905,'2019-09-26 11:51:10','USER_MODIFY',1,'2019-09-26 13:51:10',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(906,'2019-09-26 11:51:36','USER_MODIFY',1,'2019-09-26 13:51:36',12,'User aboston modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(907,'2019-09-26 11:52:16','USER_MODIFY',1,'2019-09-26 13:52:16',12,'User demo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(908,'2019-09-26 11:52:35','USER_MODIFY',1,'2019-09-26 13:52:35',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(909,'2019-09-26 11:52:59','USER_MODIFY',1,'2019-09-26 13:52:59',12,'User bbookkeeper modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(910,'2019-09-26 11:53:28','USER_MODIFY',1,'2019-09-26 13:53:28',12,'User mcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(911,'2019-09-26 11:53:50','USER_MODIFY',1,'2019-09-26 13:53:50',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(912,'2019-09-26 11:54:18','USER_MODIFY',1,'2019-09-26 13:54:18',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(913,'2019-09-26 11:54:43','USER_MODIFY',1,'2019-09-26 13:54:43',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(914,'2019-09-26 11:55:09','USER_MODIFY',1,'2019-09-26 13:55:09',12,'User sscientol modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(915,'2019-09-26 11:55:23','USER_MODIFY',1,'2019-09-26 13:55:23',12,'User ccommerson modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(916,'2019-09-26 11:55:35','USER_MODIFY',1,'2019-09-26 13:55:35',12,'User aleerfok modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(917,'2019-09-26 11:55:58','USER_MODIFY',1,'2019-09-26 13:55:58',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(918,'2019-09-26 15:28:46','USER_LOGIN_FAILED',1,'2019-09-26 17:28:46',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(919,'2019-09-26 15:28:51','USER_LOGIN_FAILED',1,'2019-09-26 17:28:51',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(920,'2019-09-26 15:28:55','USER_LOGIN',1,'2019-09-26 17:28:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(921,'2019-09-27 14:51:19','USER_LOGIN_FAILED',1,'2019-09-27 16:51:19',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(922,'2019-09-27 14:51:49','USER_LOGIN_FAILED',1,'2019-09-27 16:51:49',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(923,'2019-09-27 14:51:55','USER_LOGIN_FAILED',1,'2019-09-27 16:51:55',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(924,'2019-09-27 14:52:22','USER_LOGIN_FAILED',1,'2019-09-27 16:52:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(925,'2019-09-27 14:52:41','USER_LOGIN',1,'2019-09-27 16:52:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(926,'2019-09-27 15:47:07','USER_LOGIN_FAILED',1,'2019-09-27 17:47:07',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(927,'2019-09-27 15:47:09','USER_LOGIN_FAILED',1,'2019-09-27 17:47:09',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(928,'2019-09-27 15:47:12','USER_LOGIN',1,'2019-09-27 17:47:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(929,'2019-09-27 16:39:57','USER_LOGIN',1,'2019-09-27 18:39:57',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(930,'2019-09-30 13:49:22','USER_LOGIN_FAILED',1,'2019-09-30 15:49:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(931,'2019-09-30 13:49:27','USER_LOGIN_FAILED',1,'2019-09-30 15:49:27',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(932,'2019-09-30 13:49:30','USER_LOGIN',1,'2019-09-30 15:49:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(933,'2019-09-30 15:49:05','USER_LOGIN_FAILED',1,'2019-09-30 17:49:05',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(934,'2019-09-30 15:49:08','USER_LOGIN',1,'2019-09-30 17:49:08',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(935,'2019-10-01 11:47:44','USER_LOGIN',1,'2019-10-01 13:47:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(936,'2019-10-01 13:24:03','USER_LOGIN',1,'2019-10-01 15:24:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(937,'2019-10-02 11:41:30','USER_LOGIN_FAILED',1,'2019-10-02 13:41:30',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(938,'2019-10-02 11:41:35','USER_LOGIN',1,'2019-10-02 13:41:35',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(939,'2019-10-02 17:01:42','USER_LOGIN_FAILED',1,'2019-10-02 19:01:42',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(940,'2019-10-02 17:01:44','USER_LOGIN',1,'2019-10-02 19:01:44',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(941,'2019-10-04 08:06:36','USER_LOGIN_FAILED',1,'2019-10-04 10:06:36',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(942,'2019-10-04 08:06:40','USER_LOGIN',1,'2019-10-04 10:06:40',18,'(UserLogged,ldestailleur) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(943,'2019-10-04 08:06:46','USER_LOGOUT',1,'2019-10-04 10:06:46',18,'(UserLogoff,ldestailleur)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(944,'2019-10-04 08:06:50','USER_LOGIN',1,'2019-10-04 10:06:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(945,'2019-10-04 10:28:53','USER_LOGIN_FAILED',1,'2019-10-04 12:28:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(946,'2019-10-04 10:31:06','USER_LOGIN',1,'2019-10-04 12:31:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x520','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(947,'2019-10-04 14:55:58','USER_LOGIN',1,'2019-10-04 16:55:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(948,'2019-10-04 16:45:36','USER_LOGIN_FAILED',1,'2019-10-04 18:45:36',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(949,'2019-10-04 16:45:40','USER_LOGIN',1,'2019-10-04 18:45:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(950,'2019-10-05 09:10:32','USER_LOGIN',1,'2019-10-05 11:10:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(951,'2019-10-06 09:02:10','USER_LOGIN_FAILED',1,'2019-10-06 11:02:10',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(952,'2019-10-06 09:02:12','USER_LOGIN',1,'2019-10-06 11:02:12',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x513','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(953,'2019-10-07 09:00:29','USER_LOGIN_FAILED',1,'2019-10-07 11:00:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(954,'2019-10-07 09:00:33','USER_LOGIN',1,'2019-10-07 11:00:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(955,'2019-10-07 15:05:26','USER_LOGIN_FAILED',1,'2019-10-07 17:05:26',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(956,'2019-10-07 15:05:29','USER_LOGIN_FAILED',1,'2019-10-07 17:05:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(957,'2019-10-08 09:57:04','USER_LOGIN_FAILED',1,'2019-10-08 11:57:04',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(958,'2019-10-08 09:57:07','USER_LOGIN',1,'2019-10-08 11:57:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x637','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(959,'2019-10-08 11:18:14','USER_LOGIN_FAILED',1,'2019-10-08 13:18:14',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(960,'2019-10-08 11:18:18','USER_LOGIN',1,'2019-10-08 13:18:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(961,'2019-10-08 13:29:24','USER_LOGIN',1,'2019-10-08 15:29:24',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(962,'2019-10-08 17:04:42','USER_LOGIN_FAILED',1,'2019-10-08 19:04:42',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(963,'2019-10-08 17:04:46','USER_LOGIN',1,'2019-10-08 19:04:46',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(964,'2019-10-08 18:37:06','USER_LOGIN_FAILED',1,'2019-10-08 20:37:06',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(965,'2019-10-08 18:38:29','USER_LOGIN_FAILED',1,'2019-10-08 20:38:29',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(966,'2019-10-08 18:38:32','USER_LOGIN',1,'2019-10-08 20:38:32',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(967,'2019-10-08 19:01:07','USER_MODIFY',1,'2019-10-08 21:01:07',12,'User pcurie modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,NULL,NULL,NULL),(968,'2019-11-28 15:09:03','USER_LOGOUT',1,'2019-11-28 19:09:03',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(969,'2019-11-28 15:09:18','USER_LOGIN_FAILED',1,'2019-11-28 19:09:18',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(970,'2019-11-28 15:09:22','USER_LOGIN',1,'2019-11-28 19:09:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(971,'2019-11-28 16:25:52','USER_LOGIN_FAILED',1,'2019-11-28 20:25:52',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(972,'2019-11-28 16:25:56','USER_LOGIN',1,'2019-11-28 20:25:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(973,'2019-11-29 08:43:22','USER_LOGIN_FAILED',1,'2019-11-29 12:43:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(974,'2019-11-29 08:43:24','USER_LOGIN',1,'2019-11-29 12:43:24',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(975,'2019-12-19 11:12:30','USER_LOGIN_FAILED',1,'2019-12-19 15:12:30',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(976,'2019-12-19 11:12:33','USER_LOGIN',1,'2019-12-19 15:12:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(977,'2019-12-20 09:38:10','USER_LOGIN_FAILED',1,'2019-12-20 13:38:10',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(978,'2019-12-20 09:38:13','USER_LOGIN',1,'2019-12-20 13:38:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(979,'2019-12-20 15:59:50','USER_LOGIN',1,'2019-12-20 19:59:50',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(980,'2019-12-21 13:05:49','USER_LOGIN_FAILED',1,'2019-12-21 17:05:49',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(981,'2019-12-21 13:05:52','USER_LOGIN',1,'2019-12-21 17:05:52',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x552','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(982,'2019-12-21 15:26:25','USER_LOGIN_FAILED',1,'2019-12-21 19:26:25',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(983,'2019-12-21 15:26:28','USER_LOGIN',1,'2019-12-21 19:26:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(984,'2019-12-21 15:27:00','USER_LOGOUT',1,'2019-12-21 19:27:00',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(985,'2019-12-21 15:27:05','USER_LOGIN',1,'2019-12-21 19:27:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(986,'2019-12-21 15:27:44','USER_LOGOUT',1,'2019-12-21 19:27:44',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(987,'2019-12-21 15:28:04','USER_LOGIN',1,'2019-12-21 19:28:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(988,'2019-12-22 11:59:41','USER_LOGIN',1,'2019-12-22 15:59:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(989,'2019-12-22 15:06:01','USER_LOGIN_FAILED',1,'2019-12-22 19:06:01',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(990,'2019-12-22 15:06:06','USER_LOGIN_FAILED',1,'2019-12-22 19:06:06',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(991,'2019-12-22 15:06:15','USER_LOGIN',1,'2019-12-22 19:06:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(992,'2019-12-22 18:43:21','USER_LOGIN',1,'2019-12-22 22:43:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x980','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(993,'2019-12-22 20:16:19','USER_LOGIN',1,'2019-12-23 00:16:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x584','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(994,'2019-12-23 10:05:11','USER_LOGIN_FAILED',1,'2019-12-23 14:05:11',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(995,'2019-12-23 10:05:14','USER_LOGIN',1,'2019-12-23 14:05:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(996,'2019-12-23 13:24:50','USER_LOGIN_FAILED',1,'2019-12-23 17:24:50',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(997,'2019-12-23 13:24:54','USER_LOGIN',1,'2019-12-23 17:24:54',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(998,'2019-12-25 21:37:28','USER_LOGIN_FAILED',1,'2019-12-26 01:37:28',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(999,'2019-12-25 21:37:30','USER_LOGIN',1,'2019-12-26 01:37:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1000,'2020-01-01 10:23:41','USER_LOGIN_FAILED',1,'2020-01-01 14:23:41',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1001,'2020-01-01 10:23:43','USER_LOGIN',1,'2020-01-01 14:23:43',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1002,'2020-01-01 19:52:00','USER_LOGIN_FAILED',1,'2020-01-01 23:52:00',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1003,'2020-01-01 19:52:07','USER_LOGIN',1,'2020-01-01 23:52:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1004,'2020-01-02 13:46:18','USER_LOGIN',1,'2020-01-02 17:46:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1005,'2020-01-02 14:49:05','USER_LOGIN',1,'2020-01-02 18:49:05',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x710','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1006,'2020-01-02 16:44:11','USER_LOGIN_FAILED',1,'2020-01-02 20:44:11',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1007,'2020-01-02 16:44:14','USER_LOGIN',1,'2020-01-02 20:44:14',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1008,'2020-01-02 18:54:45','USER_LOGIN_FAILED',1,'2020-01-02 22:54:45',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1009,'2020-01-02 18:54:48','USER_LOGIN',1,'2020-01-02 22:54:48',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1010,'2020-01-03 09:22:02','USER_LOGIN_FAILED',1,'2020-01-03 13:22:02',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1011,'2020-01-03 09:22:06','USER_LOGIN',1,'2020-01-03 13:22:06',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1012,'2020-01-03 11:56:30','USER_LOGIN',1,'2020-01-03 15:56:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1013,'2020-01-04 13:44:25','USER_LOGIN_FAILED',1,'2020-01-04 17:44:25',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1014,'2020-01-04 13:44:28','USER_LOGIN',1,'2020-01-04 17:44:28',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1015,'2020-01-05 19:36:34','USER_LOGIN_FAILED',1,'2020-01-05 23:36:34',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1016,'2020-01-05 19:36:39','USER_LOGIN',1,'2020-01-05 23:36:39',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1017,'2020-01-06 01:12:23','USER_LOGIN_FAILED',1,'2020-01-06 05:12:23',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1018,'2020-01-06 01:12:25','USER_LOGIN',1,'2020-01-06 05:12:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1019,'2020-01-06 10:33:33','USER_LOGIN',1,'2020-01-06 14:33:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1020,'2020-01-06 13:59:58','USER_LOGIN',1,'2020-01-06 17:59:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1021,'2020-01-06 16:08:41','USER_LOGIN',1,'2020-01-06 20:08:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1022,'2020-01-07 13:19:13','USER_LOGIN',1,'2020-01-07 17:19:13',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1023,'2020-01-07 15:06:53','USER_LOGIN_FAILED',1,'2020-01-07 19:06:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1024,'2020-01-07 15:06:59','USER_LOGIN',1,'2020-01-07 19:06:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1025,'2020-01-07 16:21:53','USER_LOGIN_FAILED',1,'2020-01-07 20:21:53',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1026,'2020-01-07 16:21:56','USER_LOGIN',1,'2020-01-07 20:21:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1027,'2020-01-07 17:46:46','USER_LOGIN',1,'2020-01-07 21:46:46',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1028,'2020-01-08 01:31:40','USER_LOGIN',1,'2020-01-08 05:31:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1029,'2020-01-08 15:32:34','USER_LOGIN_FAILED',1,'2020-01-08 19:32:34',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1030,'2020-01-08 15:32:38','USER_LOGIN',1,'2020-01-08 19:32:38',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1031,'2020-01-09 15:59:02','USER_LOGIN',1,'2020-01-09 19:59:02',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1032,'2020-01-09 21:33:47','USER_LOGIN',1,'2020-01-10 01:33:47',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1033,'2020-01-10 00:42:07','USER_LOGIN',1,'2020-01-10 04:42:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1034,'2020-01-10 22:18:15','USER_LOGIN',1,'2020-01-11 02:18:15',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1035,'2020-01-11 13:11:59','USER_LOGIN',1,'2020-01-11 17:11:59',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1036,'2020-01-12 20:13:37','USER_LOGIN',1,'2020-01-13 00:13:37',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1037,'2020-01-12 20:58:27','USER_LOGIN',1,'2020-01-13 00:58:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1038,'2020-01-13 03:35:56','USER_LOGIN',1,'2020-01-13 07:35:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1039,'2020-01-13 10:37:51','USER_LOGIN_FAILED',1,'2020-01-13 14:37:51',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1040,'2020-01-13 10:37:55','USER_LOGIN',1,'2020-01-13 14:37:55',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1041,'2020-01-13 14:34:55','USER_LOGIN_FAILED',1,'2020-01-13 18:34:55',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1042,'2020-01-13 14:34:58','USER_LOGIN',1,'2020-01-13 18:34:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1043,'2020-01-15 10:28:04','USER_LOGIN_FAILED',1,'2020-01-15 14:28:04',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1044,'2020-01-15 10:28:07','USER_LOGIN',1,'2020-01-15 14:28:07',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1045,'2020-01-15 11:49:56','USER_LOGIN_FAILED',1,'2020-01-15 15:49:56',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1046,'2020-01-15 11:49:58','USER_LOGIN',1,'2020-01-15 15:49:58',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1047,'2020-01-15 13:35:01','USER_LOGIN_FAILED',1,'2020-01-15 17:35:01',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1048,'2020-01-15 13:35:04','USER_LOGIN',1,'2020-01-15 17:35:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1049,'2020-01-15 14:41:15','USER_LOGIN_FAILED',1,'2020-01-15 18:41:15',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1050,'2020-01-15 14:41:18','USER_LOGIN',1,'2020-01-15 18:41:18',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1051,'2020-01-15 18:14:40','USER_LOGIN',1,'2020-01-15 22:14:40',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1052,'2020-01-15 20:03:35','USER_LOGIN',1,'2020-01-16 00:03:35',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1053,'2020-01-15 20:41:56','USER_LOGIN',1,'2020-01-16 00:41:56',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1054,'2020-01-16 01:01:22','USER_LOGIN',1,'2020-01-16 02:01:22',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1055,'2020-01-16 15:43:23','USER_LOGIN',1,'2020-01-16 16:43:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1056,'2020-01-16 15:44:42','USER_ENABLEDISABLE',1,'2020-01-16 16:44:42',12,'User aboston activated','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1057,'2020-01-16 17:01:27','USER_LOGIN',1,'2020-01-16 18:01:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1058,'2020-01-17 09:34:03','USER_LOGIN',1,'2020-01-17 10:34:03',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1059,'2020-01-18 15:17:00','USER_LOGIN',1,'2020-01-18 16:17:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x899','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1060,'2020-01-18 18:32:21','USER_LOGIN',1,'2020-01-18 19:32:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x672','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1061,'2020-01-19 13:20:27','USER_LOGIN_FAILED',1,'2020-01-19 14:20:27',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1062,'2020-01-19 13:20:30','USER_LOGIN',1,'2020-01-19 14:20:30',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1063,'2020-01-19 17:05:23','USER_LOGIN',1,'2020-01-19 18:05:23',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1064,'2020-01-19 19:29:37','USER_LOGIN',1,'2020-01-19 20:29:37',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1065,'2020-01-20 00:19:16','USER_LOGIN_FAILED',1,'2020-01-20 01:19:16',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1066,'2020-01-20 00:19:19','USER_LOGIN',1,'2020-01-20 01:19:19',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1067,'2020-01-20 10:20:00','USER_LOGIN',1,'2020-01-20 11:20:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1068,'2020-01-20 13:29:21','USER_LOGIN',1,'2020-01-20 14:29:21',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1069,'2020-01-20 16:20:00','USER_LOGIN',1,'2020-01-20 17:20:00',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1070,'2020-01-20 22:52:22','USER_LOGIN_FAILED',1,'2020-01-20 23:52:22',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1071,'2020-01-20 22:52:25','USER_LOGIN',1,'2020-01-20 23:52:25',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1072,'2020-01-20 23:43:37','USER_LOGIN_FAILED',1,'2020-01-21 00:43:37',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1073,'2020-01-20 23:43:41','USER_LOGIN',1,'2020-01-21 00:43:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1905x643','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1074,'2020-01-21 09:21:05','USER_LOGIN_FAILED',1,'2020-01-21 10:21:05',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1075,'2020-01-21 09:21:09','USER_LOGIN',1,'2020-01-21 10:21:09',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x870','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1076,'2020-01-21 09:33:53','USER_LOGOUT',1,'2020-01-21 10:33:53',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1077,'2020-01-21 09:35:27','USER_LOGIN',1,'2020-01-21 10:35:27',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1078,'2020-01-21 09:35:52','USER_LOGOUT',1,'2020-01-21 10:35:52',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1079,'2020-01-21 09:38:41','USER_LOGIN',1,'2020-01-21 10:38:41',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x919','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',NULL,'8ac86e29343929e21171a305760f9a3b',NULL,NULL),(1080,'2021-04-15 10:38:52','USER_NEW_PASSWORD',1,'2021-04-15 07:38:52',12,'Password change for admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1081,'2021-04-15 10:38:52','USER_MODIFY',1,'2021-04-15 07:38:52',12,'User admin modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1082,'2021-04-15 10:40:22','USER_NEW_PASSWORD',1,'2021-04-15 07:40:22',12,'Password change for zzeceo','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1083,'2021-04-15 10:40:22','USER_MODIFY',1,'2021-04-15 07:40:22',12,'User zzeceo modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1084,'2021-04-15 10:41:51','USER_NEW_PASSWORD',1,'2021-04-15 07:41:51',12,'Password change for ccommercy','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1085,'2021-04-15 10:41:51','USER_MODIFY',1,'2021-04-15 07:41:51',12,'User ccommercy modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1086,'2021-04-15 10:42:13','USER_NEW_PASSWORD',1,'2021-04-15 07:42:13',12,'Password change for aeinstein','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1087,'2021-04-15 10:42:13','USER_MODIFY',1,'2021-04-15 07:42:13',12,'User aeinstein modified','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1088,'2021-04-15 10:54:43','USER_LOGOUT',1,'2021-04-15 07:54:43',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1089,'2021-04-15 10:55:32','USER_LOGIN_FAILED',1,'2021-04-15 07:55:32',NULL,'Identifiant ou mot de passe incorrect - login=admin','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1090,'2021-04-15 10:55:36','USER_LOGIN',1,'2021-04-15 07:55:36',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1091,'2021-04-15 10:55:57','USER_LOGOUT',1,'2021-04-15 07:55:57',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1092,'2021-04-15 10:56:17','USER_LOGIN',1,'2021-04-15 07:56:17',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1093,'2021-04-15 10:56:37','USER_LOGOUT',1,'2021-04-15 07:56:37',12,'(UserLogoff,admin)','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1094,'2021-04-15 10:59:04','USER_LOGIN',1,'2021-04-15 07:59:04',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x948','127.0.0.1','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36',NULL,'ad25e182a7c96613025098ed58d8c6cb',NULL,NULL),(1095,'2022-07-05 07:56:28','USER_LOGIN_FAILED',1,'2022-07-05 07:56:28',NULL,'Identifiant ou mot de passe incorrect - login=admin','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',NULL,'eef6babe82a3a30e6c3b93525e9fe8be60019b63',NULL,NULL),(1096,'2022-07-05 07:56:33','USER_LOGIN',1,'2022-07-05 07:56:33',12,'(UserLogged,admin) - TZ=1;TZString=Europe/Paris;Screen=1920x913','192.168.0.254','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36',NULL,'eef6babe82a3a30e6c3b93525e9fe8be60019b63',NULL,NULL); /*!40000 ALTER TABLE `llx_events` ENABLE KEYS */; UNLOCK TABLES; @@ -5926,13 +6198,13 @@ DROP TABLE IF EXISTS `llx_expedition`; CREATE TABLE `llx_expedition` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_customer` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_customer` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) NOT NULL, `fk_projet` int(11) DEFAULT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `date_valid` datetime DEFAULT NULL, @@ -5941,7 +6213,7 @@ CREATE TABLE `llx_expedition` ( `date_delivery` datetime DEFAULT NULL, `fk_address` int(11) DEFAULT NULL, `fk_shipping_method` int(11) DEFAULT NULL, - `tracking_number` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `tracking_number` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_statut` smallint(6) DEFAULT 0, `height` float DEFAULT NULL, `height_unit` int(11) DEFAULT NULL, @@ -5950,16 +6222,16 @@ CREATE TABLE `llx_expedition` ( `size` float DEFAULT NULL, `weight_units` int(11) DEFAULT NULL, `weight` float DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `billed` smallint(6) DEFAULT 0, `fk_user_modif` int(11) DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_expedition_uk_ref` (`ref`,`entity`), KEY `idx_expedition_fk_soc` (`fk_soc`), @@ -5970,7 +6242,7 @@ CREATE TABLE `llx_expedition` ( CONSTRAINT `fk_expedition_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_expedition_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_expedition_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -5994,10 +6266,10 @@ CREATE TABLE `llx_expedition_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_expedition_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6019,7 +6291,7 @@ DROP TABLE IF EXISTS `llx_expedition_package`; CREATE TABLE `llx_expedition_package` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_expedition` int(11) NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `value` double(24,8) DEFAULT 0.00000000, `fk_package_type` int(11) DEFAULT NULL, `height` float DEFAULT NULL, @@ -6032,7 +6304,7 @@ CREATE TABLE `llx_expedition_package` ( `tail_lift` smallint(6) DEFAULT 0, `rang` int(11) DEFAULT 0, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6062,7 +6334,7 @@ CREATE TABLE `llx_expeditiondet` ( KEY `idx_expeditiondet_fk_expedition` (`fk_expedition`), KEY `idx_expeditiondet_fk_origin_line` (`fk_origin_line`), CONSTRAINT `fk_expeditiondet_fk_expedition` FOREIGN KEY (`fk_expedition`) REFERENCES `llx_expedition` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6087,13 +6359,13 @@ CREATE TABLE `llx_expeditiondet_batch` ( `fk_expeditiondet` int(11) NOT NULL, `eatby` date DEFAULT NULL, `sellby` date DEFAULT NULL, - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double NOT NULL DEFAULT 0, `fk_origin_stock` int(11) NOT NULL, PRIMARY KEY (`rowid`), KEY `idx_fk_expeditiondet` (`fk_expeditiondet`), CONSTRAINT `fk_expeditiondet_batch_fk_expeditiondet` FOREIGN KEY (`fk_expeditiondet`) REFERENCES `llx_expeditiondet` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6116,10 +6388,10 @@ CREATE TABLE `llx_expeditiondet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_expeditiondet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6140,7 +6412,7 @@ DROP TABLE IF EXISTS `llx_expensereport`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_expensereport` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `ref_number_int` int(11) DEFAULT NULL, `ref_ext` int(11) DEFAULT NULL, @@ -6167,22 +6439,22 @@ CREATE TABLE `llx_expensereport` ( `fk_statut` int(11) NOT NULL, `fk_c_paiement` int(11) DEFAULT NULL, `paid` smallint(6) NOT NULL DEFAULT 0, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `detail_refuse` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `detail_cancel` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `detail_refuse` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `detail_cancel` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `integration_compta` int(11) DEFAULT NULL, `fk_bank_account` int(11) DEFAULT NULL, - `model_pdf` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `model_pdf` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_expensereport_uk_ref` (`ref`,`entity`), @@ -6193,7 +6465,7 @@ CREATE TABLE `llx_expensereport` ( KEY `idx_expensereport_fk_user_valid` (`fk_user_valid`), KEY `idx_expensereport_fk_user_approve` (`fk_user_approve`), KEY `idx_expensereport_fk_refuse` (`fk_user_approve`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6216,10 +6488,10 @@ DROP TABLE IF EXISTS `llx_expensereport_det`; CREATE TABLE `llx_expensereport_det` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_expensereport` int(11) NOT NULL, - `docnumber` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `docnumber` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_c_type_fees` int(11) NOT NULL, `fk_projet` int(11) DEFAULT NULL, - `comments` text COLLATE utf8_unicode_ci NOT NULL, + `comments` text COLLATE utf8mb3_unicode_ci NOT NULL, `product_type` int(11) DEFAULT -1, `qty` double NOT NULL, `subprice` double(24,8) NOT NULL DEFAULT 0.00000000, @@ -6227,9 +6499,9 @@ CREATE TABLE `llx_expensereport_det` ( `remise_percent` double DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `total_ht` double(24,8) NOT NULL DEFAULT 0.00000000, `total_tva` double(24,8) NOT NULL DEFAULT 0.00000000, `total_localtax1` double(24,8) DEFAULT 0.00000000, @@ -6239,21 +6511,21 @@ CREATE TABLE `llx_expensereport_det` ( `info_bits` int(11) DEFAULT 0, `special_code` int(11) DEFAULT 0, `rang` int(11) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, `fk_facture` int(11) DEFAULT 0, `fk_code_ventilation` int(11) DEFAULT 0, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', - `rule_warning_message` text COLLATE utf8_unicode_ci DEFAULT NULL, + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', + `rule_warning_message` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_c_exp_tax_cat` int(11) DEFAULT NULL, `fk_ecm_files` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6277,10 +6549,10 @@ CREATE TABLE `llx_expensereport_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_expensereport_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6309,7 +6581,7 @@ CREATE TABLE `llx_expensereport_ik` ( `ikoffset` double NOT NULL DEFAULT 0, `active` int(11) DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6340,11 +6612,11 @@ CREATE TABLE `llx_expensereport_rules` ( `fk_user` int(11) DEFAULT NULL, `fk_usergroup` int(11) DEFAULT NULL, `fk_c_type_fees` int(11) NOT NULL, - `code_expense_rules_type` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `code_expense_rules_type` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `is_for_all` tinyint(4) DEFAULT 0, `entity` int(11) DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6365,12 +6637,12 @@ DROP TABLE IF EXISTS `llx_export_compta`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_export_compta` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(12) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(12) COLLATE utf8mb3_unicode_ci NOT NULL, `date_export` datetime NOT NULL, `fk_user` int(11) NOT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6392,14 +6664,14 @@ DROP TABLE IF EXISTS `llx_export_model`; CREATE TABLE `llx_export_model` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_user` int(11) NOT NULL DEFAULT 0, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `field` text COLLATE utf8_unicode_ci NOT NULL, - `filter` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `field` text COLLATE utf8mb3_unicode_ci NOT NULL, + `filter` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_export_model` (`label`,`type`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6421,34 +6693,37 @@ DROP TABLE IF EXISTS `llx_extrafields`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `elementtype` varchar(64) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'member', - `name` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `elementtype` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'member', + `name` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `size` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `size` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `pos` int(11) DEFAULT 0, `alwayseditable` int(11) DEFAULT 0, - `param` text COLLATE utf8_unicode_ci DEFAULT NULL, + `param` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fieldunique` int(11) DEFAULT 0, `fieldrequired` int(11) DEFAULT 0, - `perms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `list` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `perms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `list` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `totalizable` tinyint(1) DEFAULT 0, `ishidden` int(11) DEFAULT 0, - `fieldcomputed` text COLLATE utf8_unicode_ci DEFAULT NULL, - `fielddefault` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `langs` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `fieldcomputed` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fielddefault` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `langs` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `datec` datetime DEFAULT NULL, - `enabled` varchar(255) COLLATE utf8_unicode_ci DEFAULT '1', - `help` text COLLATE utf8_unicode_ci DEFAULT NULL, + `enabled` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '1', + `help` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `printable` int(11) DEFAULT 0, + `css` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cssview` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `csslist` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_extrafields_name` (`name`,`entity`,`elementtype`) -) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6457,7 +6732,7 @@ CREATE TABLE `llx_extrafields` ( LOCK TABLES `llx_extrafields` WRITE; /*!40000 ALTER TABLE `llx_extrafields` DISABLE KEYS */; -INSERT INTO `llx_extrafields` VALUES (27,'projet','priority',1,'2018-01-19 11:17:49','Priority','select','',0,1,'a:1:{s:7:\"options\";a:5:{i:1;s:1:\"1\";i:2;s:1:\"2\";i:3;s:1:\"3\";i:4;s:1:\"4\";i:5;s:1:\"5\";}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,0),(33,'adherent','extradatamember',1,'2019-10-08 18:47:11','Extra personalized data','varchar','10',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:11','1',NULL,0),(34,'adherent_type','extradatamembertype',1,'2019-10-08 18:47:43','Extra personalized data','varchar','32',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:43','1',NULL,0),(35,'commande','custom1',1,'2019-12-21 13:31:31','Custom field 1','varchar','10',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-12-21 17:31:31','1',NULL,0),(36,'societe','height',1,'2020-01-05 20:37:18','Height','varchar','128',1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0),(37,'societe','weight',1,'2020-01-05 20:37:18','Weigth','varchar','128',2,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0),(38,'societe','prof',1,'2020-01-05 20:37:18','Profession','varchar','128',3,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0),(39,'societe','birthdate',1,'2020-01-05 20:37:19','Birth date','date','0',4,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:19','1',NULL,0),(40,'cabinetmed_cons','aaa',1,'2020-01-06 17:23:52','aaa','varchar','255',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 21:23:52','1',NULL,0); +INSERT INTO `llx_extrafields` VALUES (27,'projet','priority',1,'2018-01-19 11:17:49','Priority','select','',0,1,'a:1:{s:7:\"options\";a:5:{i:1;s:1:\"1\";i:2;s:1:\"2\";i:3;s:1:\"3\";i:4;s:1:\"4\";i:5;s:1:\"5\";}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,NULL,NULL,NULL,'1',NULL,0,NULL,NULL,NULL),(33,'adherent','extradatamember',1,'2019-10-08 18:47:11','Extra personalized data','varchar','10',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:11','1',NULL,0,NULL,NULL,NULL),(34,'adherent_type','extradatamembertype',1,'2019-10-08 18:47:43','Extra personalized data','varchar','32',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:43','1',NULL,0,NULL,NULL,NULL),(35,'commande','custom1',1,'2019-12-21 13:31:31','Custom field 1','varchar','10',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-12-21 17:31:31','1',NULL,0,NULL,NULL,NULL),(36,'societe','height',1,'2020-01-05 20:37:18','Height','varchar','128',1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL),(37,'societe','weight',1,'2020-01-05 20:37:18','Weigth','varchar','128',2,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL),(38,'societe','prof',1,'2020-01-05 20:37:18','Profession','varchar','128',3,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL),(39,'societe','birthdate',1,'2020-01-05 20:37:19','Birth date','date','0',4,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:19','1',NULL,0,NULL,NULL,NULL),(40,'cabinetmed_cons','aaa',1,'2020-01-06 17:23:52','aaa','varchar','255',100,1,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 21:23:52','1',NULL,0,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_extrafields` ENABLE KEYS */; UNLOCK TABLES; @@ -6470,13 +6745,13 @@ DROP TABLE IF EXISTS `llx_facture`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_facture` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `type` smallint(6) NOT NULL DEFAULT 0, - `ref_client` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `increment` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_client` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `increment` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) NOT NULL, `datec` datetime DEFAULT NULL, `datef` date DEFAULT NULL, @@ -6488,8 +6763,8 @@ CREATE TABLE `llx_facture` ( `remise_percent` double DEFAULT 0, `remise_absolue` double DEFAULT 0, `remise` double DEFAULT 0, - `close_code` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `close_note` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `close_code` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `close_note` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `total_tva` double(24,8) DEFAULT 0.00000000, `localtax1` double(24,8) DEFAULT 0.00000000, `localtax2` double(24,8) DEFAULT 0.00000000, @@ -6504,15 +6779,15 @@ CREATE TABLE `llx_facture` ( `fk_facture_source` int(11) DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `fk_account` int(11) DEFAULT NULL, - `fk_currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_currency` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_cond_reglement` int(11) NOT NULL DEFAULT 1, `fk_mode_reglement` int(11) DEFAULT NULL, `date_lim_reglement` date DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `situation_cycle_ref` smallint(6) DEFAULT NULL, `situation_counter` smallint(6) DEFAULT NULL, `situation_final` smallint(6) DEFAULT NULL, @@ -6520,19 +6795,19 @@ CREATE TABLE `llx_facture` ( `retained_warranty_date_limit` date DEFAULT NULL, `retained_warranty_fk_cond_reglement` int(11) DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_transport_mode` int(11) DEFAULT NULL, `date_pointoftax` date DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, `fk_fac_rec_source` int(11) DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `module_source` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `pos_source` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module_source` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pos_source` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_facture_ref` (`ref`,`entity`), KEY `idx_facture_fk_soc` (`fk_soc`), @@ -6543,12 +6818,13 @@ CREATE TABLE `llx_facture` ( KEY `idx_facture_fk_account` (`fk_account`), KEY `idx_facture_fk_currency` (`fk_currency`), KEY `idx_facture_fk_statut` (`fk_statut`), + KEY `idx_facture_datef` (`datef`), CONSTRAINT `fk_facture_fk_facture_source` FOREIGN KEY (`fk_facture_source`) REFERENCES `llx_facture` (`rowid`), CONSTRAINT `fk_facture_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), CONSTRAINT `fk_facture_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_facture_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_facture_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=232 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=232 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6557,7 +6833,7 @@ CREATE TABLE `llx_facture` ( LOCK TABLES `llx_facture` WRITE; /*!40000 ALTER TABLE `llx_facture` DISABLE KEYS */; -INSERT INTO `llx_facture` VALUES (2,'FA1007-0002',1,NULL,NULL,0,NULL,NULL,2,'2012-07-10 18:20:13','2021-07-10',NULL,NULL,'2021-07-11 17:49:28',1,10.00000000,NULL,NULL,0,NULL,NULL,0.10000000,0.00000000,0.00000000,0.00000000,46.00000000,46.10000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-10',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(3,'FA1107-0006',1,NULL,NULL,0,NULL,NULL,10,'2013-07-18 20:33:35','2021-07-18',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,15.00000000,15.00000000,2,1,NULL,1,NULL,NULL,1,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(5,'FA1108-0003',1,NULL,NULL,0,NULL,NULL,7,'2013-08-01 03:34:11','2021-08-01',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,6,'2021-08-01',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(6,'FA1108-0004',1,NULL,NULL,0,NULL,NULL,7,'2013-08-06 20:33:53','2021-08-06',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.98000000,0.00000000,0.00000000,0.00000000,5.00000000,5.98000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,4,'2021-08-06','Cash\nReceived : 6 EUR\nRendu : 0.02 EUR\n\n--------------------------------------',NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(8,'FA1108-0005',1,NULL,NULL,3,NULL,NULL,2,'2013-08-08 02:41:44','2021-08-08',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(9,'FA1108-0007',1,NULL,NULL,3,NULL,NULL,10,'2013-08-08 02:55:14','2021-08-08',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.96000000,0.00000000,0.00000000,0.00000000,10.00000000,11.96000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(10,'AV1212-0001',1,NULL,NULL,2,NULL,NULL,10,'2014-12-08 17:45:20','2021-12-08','2021-12-08 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,-0.63000000,0.00000000,0.00000000,0.00000000,-11.00000000,-11.63000000,1,1,NULL,1,NULL,3,NULL,NULL,NULL,0,0,'2021-12-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(12,'AV1212-0002',1,NULL,NULL,2,NULL,NULL,10,'2014-12-08 18:20:14','2021-12-08','2021-12-08 00:00:00',NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,-5.00000000,-5.00000000,2,1,NULL,1,NULL,3,NULL,NULL,NULL,0,0,'2021-12-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(13,'FA1212-0011',1,NULL,NULL,0,NULL,NULL,7,'2014-12-09 20:04:19','2021-12-09','2021-02-12 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,2.74000000,0.00000000,0.00000000,0.00000000,14.00000000,16.74000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-09',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(32,'FA1212-0021',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:34:23','2021-12-11','2022-03-24 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,90.00000000,0.00000000,0.00000000,0.60000000,520.00000000,610.60000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(33,'FA1212-0023',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:34:23','2021-12-11','2022-03-03 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,'abandon',NULL,0.24000000,0.00000000,0.00000000,0.00000000,2.48000000,2.72000000,3,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(55,'FA1212-0009',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:35:51','2021-12-11','2021-12-12 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.24000000,0.00000000,0.00000000,0.00000000,2.48000000,2.72000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','generic_invoice_odt:/home/ldestailleur/git/dolibarr_3.8/documents/doctemplates/invoices/template_invoice.odt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(148,'FS1301-0001',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:22:48','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,'facture/FS1301-0001/FS1301-0001.pdf',NULL,NULL),(149,'FA1601-0024',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:30:05','2022-01-19','2021-08-29 00:00:00','2020-01-02 20:49:34','2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,'other','test',1.80000000,0.90000000,0.90000000,0.00000000,20.00000000,23.60000000,2,1,NULL,12,12,NULL,NULL,NULL,NULL,0,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,20.00000000,1.80000000,23.60000000,NULL,'facture/FA1601-0024/FA1601-0024.pdf',NULL,NULL),(150,'FA6801-0010',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:31:10','2022-01-19','2021-10-04 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,1,1,NULL,12,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,5.00000000,0.63000000,5.63000000,NULL,'facture/FA6801-0010/FA6801-0010.pdf',NULL,NULL),(151,'FS1301-0002',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:31:58','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(160,'FA1507-0015',1,NULL,NULL,0,NULL,NULL,12,'2015-03-06 16:47:48','2021-07-18','2021-03-06 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.11000000,0.00000000,0.00000000,0.00000000,8.89000000,10.00000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(210,'FA1107-0019',1,NULL,NULL,0,NULL,NULL,10,'2015-03-20 14:30:11','2021-07-10','2021-03-20 00:00:00',NULL,'2021-07-11 17:49:28',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-10',NULL,NULL,'generic_invoice_odt:/home/ldestailleur/git/dolibarr_3.8/documents/doctemplates/invoices/template_invoice.odt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(211,'FA1303-0020',1,NULL,NULL,0,NULL,NULL,19,'2015-03-22 09:40:10','2021-03-22','2020-03-02 00:00:00',NULL,'2021-04-15 10:22:31',0,0.00000000,NULL,NULL,0,NULL,NULL,17.64000000,0.00000000,0.00000000,0.40000000,340.00000000,358.04000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,3,'2021-03-22',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(213,'AV1303-0003',1,NULL,NULL,2,NULL,NULL,1,'2016-03-03 19:22:03','2021-03-03','2020-03-03 00:00:00',NULL,'2021-04-15 10:22:31',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,-1000.00000000,-1000.00000000,1,1,NULL,1,NULL,32,NULL,NULL,NULL,0,0,'2021-03-03',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(216,'(PROV216)',1,NULL,NULL,0,NULL,NULL,26,'2017-02-12 23:21:27','2021-02-12',NULL,NULL,'2021-04-15 10:22:31',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2021-02-12',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,0,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(217,'(PROV217)',1,NULL,NULL,0,NULL,NULL,1,'2017-08-31 13:26:17','2021-08-31',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.13000000,0.00000000,0.00000000,0.00000000,21.00000000,22.13000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-31',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,1,'EUR',1.00000000,21.00000000,1.13000000,22.13000000,NULL,'facture/(PROV217)/(PROV217).pdf',NULL,NULL),(218,'FA1909-0025',1,NULL,NULL,0,NULL,NULL,12,'2019-09-26 17:30:14','2021-09-26','2021-09-26 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.08000000,0.00000000,0.00000000,0.00000000,42.50000000,43.58000000,1,12,NULL,12,NULL,NULL,NULL,NULL,NULL,0,0,'2021-09-26',NULL,NULL,'',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,0,'EUR',1.00000000,42.50000000,1.08000000,43.58000000,NULL,NULL,'takepos','1'),(219,'(PROV-POS1-0)',1,NULL,NULL,0,NULL,NULL,1,'2019-11-28 19:04:03','2021-11-28',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,5.00000000,6.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,'2021-11-28',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,5.00000000,1.00000000,6.00000000,NULL,NULL,'takepos','1'),(220,'(PROV220)',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:03:17','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,100.00000000,100.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,100.00000000,0.00000000,100.00000000,NULL,NULL,NULL,NULL),(221,'AC2001-0001',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:21:05','2022-01-16','2022-01-16 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,123.00000000,123.00000000,0,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,123.00000000,0.00000000,123.00000000,NULL,'facture/AC2001-0001/AC2001-0001.pdf',NULL,NULL),(222,'(PROV222)',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:21:28','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,100.00000000,100.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,100.00000000,0.00000000,100.00000000,NULL,NULL,NULL,NULL),(223,'(PROV223)',1,NULL,NULL,0,NULL,NULL,19,'2020-01-16 02:32:04','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,410.00000000,410.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,0,'2021-02-15',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,410.00000000,0.00000000,410.00000000,NULL,NULL,NULL,NULL),(224,'AC2001-0002',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:33:19','2022-01-16','2022-01-16 00:00:00','2020-01-16 02:36:48','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,20.50000000,20.50000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,20.50000000,0.00000000,20.50000000,NULL,'facture/AC2001-0002/AC2001-0002.pdf',NULL,NULL),(225,'(PROV225)',1,NULL,NULL,0,NULL,NULL,19,'2020-01-16 02:37:48','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,389.50000000,389.50000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,0,'2021-02-15',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,389.50000000,0.00000000,389.50000000,NULL,'facture/(PROV225)/(PROV225).pdf',NULL,NULL),(226,'(PROV226)',1,NULL,NULL,3,NULL,NULL,11,'2020-01-19 14:20:54','2022-01-19',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,12.50000000,0.00000000,0.00000000,0.00000000,120.00000000,132.50000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,120.00000000,12.50000000,132.50000000,NULL,'facture/(PROV226)/(PROV226).pdf',NULL,NULL),(227,'AC2001-0003',1,NULL,NULL,3,NULL,NULL,1,'2020-01-19 14:22:54','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,39.20000000,0.00000000,0.00000000,0.00000000,200.00000000,239.20000000,0,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,200.00000000,39.20000000,239.20000000,NULL,'facture/AC2001-0003/AC2001-0003.pdf',NULL,NULL),(228,'AC2001-0004',1,NULL,NULL,3,NULL,NULL,1,'2020-01-19 14:24:49','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.94000000,0.00000000,0.00000000,0.00000000,48.60000000,50.54000000,1,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,48.60000000,1.94000000,50.54000000,NULL,'facture/AC2001-0004/AC2001-0004.pdf',NULL,NULL),(229,'FA1707-0026',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:17','2021-07-18','2023-01-21 00:00:00','2020-01-21 10:23:17','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1707-0026/FA1707-0026.pdf',NULL,NULL),(230,'FA1807-0027',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:28','2021-07-18','2022-01-21 00:00:00','2020-01-21 10:23:28','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1807-0027/FA1807-0027.pdf',NULL,NULL),(231,'FA1907-0028',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:49','2021-07-18','2022-01-21 00:00:00','2020-01-21 10:23:49','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1907-0028/FA1907-0028.pdf',NULL,NULL); +INSERT INTO `llx_facture` VALUES (2,'FA1007-0002',1,NULL,NULL,0,NULL,NULL,2,'2012-07-10 18:20:13','2021-07-10',NULL,NULL,'2021-07-11 17:49:28',1,10.00000000,NULL,NULL,0,NULL,NULL,0.10000000,0.00000000,0.00000000,0.00000000,46.00000000,46.10000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-10',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(3,'FA1107-0006',1,NULL,NULL,0,NULL,NULL,10,'2013-07-18 20:33:35','2021-07-18',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,15.00000000,15.00000000,2,1,NULL,1,NULL,NULL,1,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(5,'FA1108-0003',1,NULL,NULL,0,NULL,NULL,7,'2013-08-01 03:34:11','2021-08-01',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,6,'2021-08-01',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(6,'FA1108-0004',1,NULL,NULL,0,NULL,NULL,7,'2013-08-06 20:33:53','2021-08-06',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.98000000,0.00000000,0.00000000,0.00000000,5.00000000,5.98000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,4,'2021-08-06','Cash\nReceived : 6 EUR\nRendu : 0.02 EUR\n\n--------------------------------------',NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(8,'FA1108-0005',1,NULL,NULL,3,NULL,NULL,2,'2013-08-08 02:41:44','2021-08-08',NULL,NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(9,'FA1108-0007',1,NULL,NULL,3,NULL,NULL,10,'2013-08-08 02:55:14','2021-08-08',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.96000000,0.00000000,0.00000000,0.00000000,10.00000000,11.96000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(10,'AV1212-0001',1,NULL,NULL,2,NULL,NULL,10,'2014-12-08 17:45:20','2021-12-08','2021-12-08 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,-0.63000000,0.00000000,0.00000000,0.00000000,-11.00000000,-11.63000000,1,1,NULL,1,NULL,3,NULL,NULL,NULL,0,0,'2021-12-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(12,'AV1212-0002',1,NULL,NULL,2,NULL,NULL,10,'2014-12-08 18:20:14','2021-12-08','2021-12-08 00:00:00',NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,-5.00000000,-5.00000000,2,1,NULL,1,NULL,3,NULL,NULL,NULL,0,0,'2021-12-08',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(13,'FA1212-0011',1,NULL,NULL,0,NULL,NULL,7,'2014-12-09 20:04:19','2021-12-09','2021-02-12 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,2.74000000,0.00000000,0.00000000,0.00000000,14.00000000,16.74000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-09',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(32,'FA1212-0021',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:34:23','2021-12-11','2022-03-24 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,90.00000000,0.00000000,0.00000000,0.60000000,520.00000000,610.60000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(33,'FA1212-0023',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:34:23','2021-12-11','2022-03-03 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,'abandon',NULL,0.24000000,0.00000000,0.00000000,0.00000000,2.48000000,2.72000000,3,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(55,'FA1212-0009',1,NULL,NULL,0,NULL,NULL,1,'2014-12-11 09:35:51','2021-12-11','2021-12-12 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.24000000,0.00000000,0.00000000,0.00000000,2.48000000,2.72000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-12-11','This is a comment (private)','This is a comment (public)','generic_invoice_odt:/home/ldestailleur/git/dolibarr_3.8/documents/doctemplates/invoices/template_invoice.odt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(148,'FS1301-0001',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:22:48','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,'facture/FS1301-0001/FS1301-0001.pdf',NULL,NULL),(149,'FA1601-0024',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:30:05','2022-01-19','2021-08-29 00:00:00','2020-01-02 20:49:34','2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,'other','test',1.80000000,0.90000000,0.90000000,0.00000000,20.00000000,23.60000000,2,1,NULL,12,12,NULL,NULL,NULL,NULL,0,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,20.00000000,1.80000000,23.60000000,NULL,'facture/FA1601-0024/FA1601-0024.pdf',NULL,NULL),(150,'FA6801-0010',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:31:10','2022-01-19','2021-10-04 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.63000000,0.00000000,0.00000000,0.00000000,5.00000000,5.63000000,1,1,NULL,12,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,5.00000000,0.63000000,5.63000000,NULL,'facture/FA6801-0010/FA6801-0010.pdf',NULL,NULL),(151,'FS1301-0002',1,NULL,NULL,0,NULL,NULL,1,'2015-01-19 18:31:58','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,2,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,1,'2022-01-19',NULL,NULL,'',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(160,'FA1507-0015',1,NULL,NULL,0,NULL,NULL,12,'2015-03-06 16:47:48','2021-07-18','2021-03-06 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.11000000,0.00000000,0.00000000,0.00000000,8.89000000,10.00000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(210,'FA1107-0019',1,NULL,NULL,0,NULL,NULL,10,'2015-03-20 14:30:11','2021-07-10','2021-03-20 00:00:00',NULL,'2021-07-11 17:49:28',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,10.00000000,10.00000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,0,'2021-07-10',NULL,NULL,'generic_invoice_odt:/home/ldestailleur/git/dolibarr_3.8/documents/doctemplates/invoices/template_invoice.odt',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(211,'FA1303-0020',1,NULL,NULL,0,NULL,NULL,19,'2015-03-22 09:40:10','2022-03-22','2021-03-02 00:00:00',NULL,'2022-07-04 01:11:35',0,0.00000000,NULL,NULL,0,NULL,NULL,17.64000000,0.00000000,0.00000000,0.40000000,340.00000000,358.04000000,1,1,NULL,1,NULL,NULL,NULL,NULL,NULL,1,3,'2022-03-22',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(213,'AV1303-0003',1,NULL,NULL,2,NULL,NULL,1,'2016-03-03 19:22:03','2022-03-03','2021-03-03 00:00:00',NULL,'2022-07-04 01:11:35',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,-1000.00000000,-1000.00000000,1,1,NULL,1,NULL,32,NULL,NULL,NULL,0,0,'2022-03-03',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(216,'(PROV216)',1,NULL,NULL,0,NULL,NULL,26,'2017-02-12 23:21:27','2022-02-12',NULL,NULL,'2022-07-04 01:11:35',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-02-12',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,0,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(217,'(PROV217)',1,NULL,NULL,0,NULL,NULL,1,'2017-08-31 13:26:17','2021-08-31',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.13000000,0.00000000,0.00000000,0.00000000,21.00000000,22.13000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2021-08-31',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,1,'EUR',1.00000000,21.00000000,1.13000000,22.13000000,NULL,'facture/(PROV217)/(PROV217).pdf',NULL,NULL),(218,'FA1909-0025',1,NULL,NULL,0,NULL,NULL,12,'2019-09-26 17:30:14','2021-09-26','2021-09-26 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.08000000,0.00000000,0.00000000,0.00000000,42.50000000,43.58000000,1,12,NULL,12,NULL,NULL,NULL,NULL,NULL,0,0,'2021-09-26',NULL,NULL,'',NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,0,'',NULL,NULL,0,'EUR',1.00000000,42.50000000,1.08000000,43.58000000,NULL,NULL,'takepos','1'),(219,'(PROV-POS1-0)',1,NULL,NULL,0,NULL,NULL,1,'2019-11-28 19:04:03','2021-11-28',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,5.00000000,6.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,'2021-11-28',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,5.00000000,1.00000000,6.00000000,NULL,NULL,'takepos','1'),(220,'(PROV220)',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:03:17','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,100.00000000,100.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,100.00000000,0.00000000,100.00000000,NULL,NULL,NULL,NULL),(221,'AC2001-0001',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:21:05','2022-01-16','2022-01-16 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,123.00000000,123.00000000,0,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,123.00000000,0.00000000,123.00000000,NULL,'facture/AC2001-0001/AC2001-0001.pdf',NULL,NULL),(222,'(PROV222)',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:21:28','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,100.00000000,100.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,100.00000000,0.00000000,100.00000000,NULL,NULL,NULL,NULL),(223,'(PROV223)',1,NULL,NULL,0,NULL,NULL,19,'2020-01-16 02:32:04','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,410.00000000,410.00000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,0,'2021-02-15',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,410.00000000,0.00000000,410.00000000,NULL,NULL,NULL,NULL),(224,'AC2001-0002',1,NULL,NULL,3,NULL,NULL,19,'2020-01-16 02:33:19','2022-01-16','2022-01-16 00:00:00','2020-01-16 02:36:48','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,20.50000000,20.50000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2022-01-16',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,20.50000000,0.00000000,20.50000000,NULL,'facture/AC2001-0002/AC2001-0002.pdf',NULL,NULL),(225,'(PROV225)',1,NULL,NULL,0,NULL,NULL,19,'2020-01-16 02:37:48','2022-01-16',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,389.50000000,389.50000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,0,'2021-02-15',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,389.50000000,0.00000000,389.50000000,NULL,'facture/(PROV225)/(PROV225).pdf',NULL,NULL),(226,'(PROV226)',1,NULL,NULL,3,NULL,NULL,11,'2020-01-19 14:20:54','2022-01-19',NULL,NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,12.50000000,0.00000000,0.00000000,0.00000000,120.00000000,132.50000000,0,12,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,120.00000000,12.50000000,132.50000000,NULL,'facture/(PROV226)/(PROV226).pdf',NULL,NULL),(227,'AC2001-0003',1,NULL,NULL,3,NULL,NULL,1,'2020-01-19 14:22:54','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,39.20000000,0.00000000,0.00000000,0.00000000,200.00000000,239.20000000,0,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,200.00000000,39.20000000,239.20000000,NULL,'facture/AC2001-0003/AC2001-0003.pdf',NULL,NULL),(228,'AC2001-0004',1,NULL,NULL,3,NULL,NULL,1,'2020-01-19 14:24:49','2022-01-19','2022-01-19 00:00:00',NULL,'2022-02-07 13:37:54',0,0.00000000,NULL,NULL,0,NULL,NULL,1.94000000,0.00000000,0.00000000,0.00000000,48.60000000,50.54000000,1,12,NULL,12,NULL,NULL,NULL,NULL,NULL,1,0,'2022-01-19',NULL,NULL,'crabe',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,1,'EUR',1.00000000,48.60000000,1.94000000,50.54000000,NULL,'facture/AC2001-0004/AC2001-0004.pdf',NULL,NULL),(229,'FA1707-0026',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:17','2021-07-18','2023-01-21 00:00:00','2020-01-21 10:23:17','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1707-0026/FA1707-0026.pdf',NULL,NULL),(230,'FA1807-0027',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:28','2021-07-18','2022-01-21 00:00:00','2020-01-21 10:23:28','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1807-0027/FA1807-0027.pdf',NULL,NULL),(231,'FA1907-0028',1,NULL,NULL,0,NULL,NULL,12,'2020-01-21 10:23:49','2021-07-18','2022-01-21 00:00:00','2020-01-21 10:23:49','2022-02-07 13:37:54',1,0.00000000,NULL,NULL,0,NULL,NULL,0.00000000,0.00000000,0.00000000,0.00000000,50.00000000,50.00000000,2,12,NULL,12,12,NULL,NULL,NULL,NULL,1,0,'2021-07-18',NULL,NULL,'',NULL,NULL,NULL,NULL,0,0,NULL,0,0,'',NULL,NULL,0,'EUR',1.00000000,50.00000000,0.00000000,50.00000000,NULL,'facture/FA1907-0028/FA1907-0028.pdf',NULL,NULL); /*!40000 ALTER TABLE `llx_facture` ENABLE KEYS */; UNLOCK TABLES; @@ -6572,10 +6848,10 @@ CREATE TABLE `llx_facture_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facture_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6596,21 +6872,21 @@ DROP TABLE IF EXISTS `llx_facture_fourn`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_facture_fourn` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `ref_supplier` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref_supplier` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `type` smallint(6) NOT NULL DEFAULT 0, `fk_soc` int(11) NOT NULL, `datec` datetime DEFAULT NULL, `datef` date DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `libelle` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `paye` smallint(6) NOT NULL DEFAULT 0, `amount` double(24,8) NOT NULL DEFAULT 0.00000000, `remise` double(24,8) DEFAULT 0.00000000, - `close_code` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `close_note` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `close_code` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `close_note` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva` double(24,8) DEFAULT 0.00000000, `localtax1` double(24,8) DEFAULT 0.00000000, `localtax2` double(24,8) DEFAULT 0.00000000, @@ -6628,24 +6904,25 @@ CREATE TABLE `llx_facture_fourn` ( `fk_cond_reglement` int(11) DEFAULT NULL, `fk_mode_reglement` int(11) DEFAULT NULL, `date_lim_reglement` date DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_transport_mode` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_pointoftax` date DEFAULT NULL, `date_valid` date DEFAULT NULL, `date_closing` datetime DEFAULT NULL, + `fk_fac_rec_source` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_facture_fourn_ref` (`ref`,`entity`), UNIQUE KEY `uk_facture_fourn_ref_supplier` (`ref_supplier`,`fk_soc`,`entity`), @@ -6658,7 +6935,7 @@ CREATE TABLE `llx_facture_fourn` ( CONSTRAINT `fk_facture_fourn_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_facture_fourn_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_facture_fourn_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6667,7 +6944,7 @@ CREATE TABLE `llx_facture_fourn` ( LOCK TABLES `llx_facture_fourn` WRITE; /*!40000 ALTER TABLE `llx_facture_fourn` DISABLE KEYS */; -INSERT INTO `llx_facture_fourn` VALUES (16,'SI1601-0001','FR70813',1,NULL,0,1,'2014-12-19 15:24:11','2003-04-11','2017-02-06 04:08:22','OVH FR70813',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,829.00000000,162.48000000,991.48000000,1,1,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2003-04-11','','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(17,'SI1601-0002','FR81385',1,NULL,0,1,'2015-02-13 17:19:35','2003-06-04','2019-10-04 08:31:30','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,1,1,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2003-06-04','','','canelle',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,'2019-10-04',NULL),(18,'SI1601-0003','FR81385',1,NULL,0,2,'2015-02-13 17:20:25','2003-06-04','2017-02-06 04:08:35','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,0,1,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'2003-06-04','','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(19,'SI1601-0004','FR813852',1,NULL,0,2,'2015-03-16 17:59:02','2015-03-16','2017-02-06 04:08:38','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,0,1,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,'','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL),(20,'SI1702-0001','INV-AE56ER08',1,NULL,0,13,'2017-02-01 19:00:31','2017-02-01','2017-02-01 15:05:28','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,200.00000000,39.20000000,239.20000000,1,12,NULL,12,NULL,NULL,5,NULL,1,0,'2017-02-01','The customer has called us the 24th april. He agree us to not pay the remain of invoice due to default.
\r\nLet\'s see with our book keeper, if we must cancel invoice or ask the supplier a credit note...',NULL,'canelle',NULL,NULL,0,'',NULL,0,'EUR',1.00000000,200.00000000,39.20000000,239.20000000,NULL,NULL,NULL,NULL),(21,'SI1911-0005','NL-123',1,NULL,0,10,'2019-11-28 15:54:30','2019-11-28','2019-11-28 11:54:46','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,450.00000000,0.00000000,450.00000000,1,12,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2019-11-28','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,450.00000000,0.00000000,450.00000000,NULL,NULL,'2019-11-28',NULL),(22,'SI2001-0006','INV20200101',1,NULL,0,17,'2020-01-01 17:48:01','2020-01-01','2020-01-16 17:05:43','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,357.00000000,43.75000000,400.75000000,1,12,NULL,12,NULL,NULL,NULL,1,1,2,'2020-01-01','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,357.00000000,43.75000000,400.75000000,NULL,NULL,'2020-01-16',NULL),(27,'SA2001-0001','CN01',1,NULL,2,17,'2020-01-01 20:21:51','2020-01-01','2022-02-07 13:38:10','',1,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,-350.00000000,-43.75000000,-393.75000000,2,12,12,12,NULL,22,NULL,NULL,1,NULL,NULL,'','ddd',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,-350.00000000,-43.75000000,-393.75000000,NULL,NULL,'2020-01-01',NULL),(28,'SI2001-0007','INV02',1,NULL,0,17,'2020-01-01 20:22:48','2020-01-01','2020-01-01 18:06:02','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,79.17000000,9.89000000,89.06000000,1,12,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2020-01-01','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,79.17000000,9.89000000,89.06000000,NULL,NULL,'2020-01-01',NULL),(30,'SA2001-0002','555',1,NULL,2,1,'2020-01-01 20:51:32','2020-01-01','2020-01-01 17:15:57','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,-26.00000000,-5.10000000,-31.10000000,1,12,NULL,12,NULL,17,NULL,NULL,1,NULL,NULL,'','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,'2020-01-01',NULL); +INSERT INTO `llx_facture_fourn` VALUES (16,'SI1601-0001','FR70813',1,NULL,0,1,'2014-12-19 15:24:11','2003-04-11','2017-02-06 04:08:22','OVH FR70813',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,829.00000000,162.48000000,991.48000000,1,1,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2003-04-11','','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,NULL),(17,'SI1601-0002','FR81385',1,NULL,0,1,'2015-02-13 17:19:35','2003-06-04','2019-10-04 08:31:30','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,1,1,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2003-06-04','','','canelle',NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,'2019-10-04',NULL,NULL),(18,'SI1601-0003','FR81385',1,NULL,0,2,'2015-02-13 17:20:25','2003-06-04','2017-02-06 04:08:35','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,0,1,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,'2003-06-04','','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,NULL),(19,'SI1601-0004','FR813852',1,NULL,0,2,'2015-03-16 17:59:02','2015-03-16','2017-02-06 04:08:38','OVH FR81385',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,26.00000000,5.10000000,31.10000000,0,1,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,'','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,NULL),(20,'SI1702-0001','INV-AE56ER08',1,NULL,0,13,'2017-02-01 19:00:31','2017-02-01','2017-02-01 15:05:28','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,200.00000000,39.20000000,239.20000000,1,12,NULL,12,NULL,NULL,5,NULL,1,0,'2017-02-01','The customer has called us the 24th april. He agree us to not pay the remain of invoice due to default.
\r\nLet\'s see with our book keeper, if we must cancel invoice or ask the supplier a credit note...',NULL,'canelle',NULL,NULL,0,'',NULL,0,'EUR',1.00000000,200.00000000,39.20000000,239.20000000,NULL,NULL,NULL,NULL,NULL),(21,'SI1911-0005','NL-123',1,NULL,0,10,'2019-11-28 15:54:30','2019-11-28','2019-11-28 11:54:46','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,450.00000000,0.00000000,450.00000000,1,12,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2019-11-28','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,450.00000000,0.00000000,450.00000000,NULL,NULL,'2019-11-28',NULL,NULL),(22,'SI2001-0006','INV20200101',1,NULL,0,17,'2020-01-01 17:48:01','2020-01-01','2020-01-16 17:05:43','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,357.00000000,43.75000000,400.75000000,1,12,NULL,12,NULL,NULL,NULL,1,1,2,'2020-01-01','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,357.00000000,43.75000000,400.75000000,NULL,NULL,'2020-01-16',NULL,NULL),(27,'SA2001-0001','CN01',1,NULL,2,17,'2020-01-01 20:21:51','2020-01-01','2022-02-07 13:38:10','',1,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,-350.00000000,-43.75000000,-393.75000000,2,12,12,12,NULL,22,NULL,NULL,1,NULL,NULL,'','ddd',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,-350.00000000,-43.75000000,-393.75000000,NULL,NULL,'2020-01-01',NULL,NULL),(28,'SI2001-0007','INV02',1,NULL,0,17,'2020-01-01 20:22:48','2020-01-01','2020-01-01 18:06:02','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,79.17000000,9.89000000,89.06000000,1,12,NULL,12,NULL,NULL,NULL,NULL,1,NULL,'2020-01-01','','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,79.17000000,9.89000000,89.06000000,NULL,NULL,'2020-01-01',NULL,NULL),(30,'SA2001-0002','555',1,NULL,2,1,'2020-01-01 20:51:32','2020-01-01','2020-01-01 17:15:57','',0,0.00000000,0.00000000,NULL,NULL,0.00000000,0.00000000,0.00000000,-26.00000000,-5.10000000,-31.10000000,1,12,NULL,12,NULL,17,NULL,NULL,1,NULL,NULL,'','',NULL,NULL,NULL,0,'',NULL,1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,'2020-01-01',NULL,NULL); /*!40000 ALTER TABLE `llx_facture_fourn` ENABLE KEYS */; UNLOCK TABLES; @@ -6683,20 +6960,20 @@ CREATE TABLE `llx_facture_fourn_det` ( `fk_facture_fourn` int(11) NOT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `pu_ht` double(24,8) DEFAULT NULL, `pu_ttc` double(24,8) DEFAULT NULL, `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `fk_remise_except` int(11) DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `total_ht` double(24,8) DEFAULT NULL, `tva` double(24,8) DEFAULT NULL, `total_localtax1` double(24,8) DEFAULT 0.00000000, @@ -6706,13 +6983,13 @@ CREATE TABLE `llx_facture_fourn_det` ( `date_start` datetime DEFAULT NULL, `date_end` datetime DEFAULT NULL, `info_bits` int(11) NOT NULL DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_code_ventilation` int(11) NOT NULL DEFAULT 0, `special_code` int(11) DEFAULT 0, `rang` int(11) DEFAULT 0, `fk_unit` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -6725,7 +7002,7 @@ CREATE TABLE `llx_facture_fourn_det` ( KEY `idx_facture_fourn_det_fk_product` (`fk_product`), CONSTRAINT `fk_facture_fourn_det_fk_facture` FOREIGN KEY (`fk_facture_fourn`) REFERENCES `llx_facture_fourn` (`rowid`), CONSTRAINT `fk_facture_fourn_det_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6749,10 +7026,10 @@ CREATE TABLE `llx_facture_fourn_det_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facture_fourn_det_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6764,6 +7041,95 @@ LOCK TABLES `llx_facture_fourn_det_extrafields` WRITE; /*!40000 ALTER TABLE `llx_facture_fourn_det_extrafields` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_facture_fourn_det_rec` +-- + +DROP TABLE IF EXISTS `llx_facture_fourn_det_rec`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_facture_fourn_det_rec` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `fk_facture_fourn` int(11) NOT NULL, + `fk_parent_line` int(11) DEFAULT NULL, + `fk_product` int(11) DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pu_ht` double(24,8) DEFAULT NULL, + `pu_ttc` double(24,8) DEFAULT NULL, + `qty` double DEFAULT NULL, + `remise_percent` double DEFAULT 0, + `fk_remise_except` int(11) DEFAULT NULL, + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', + `tva_tx` double(7,4) DEFAULT NULL, + `localtax1_tx` double(7,4) DEFAULT 0.0000, + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `localtax2_tx` double(7,4) DEFAULT 0.0000, + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `total_ht` double(24,8) DEFAULT NULL, + `total_tva` double(24,8) DEFAULT NULL, + `total_localtax1` double(24,8) DEFAULT 0.00000000, + `total_localtax2` double(24,8) DEFAULT 0.00000000, + `total_ttc` double(24,8) DEFAULT NULL, + `product_type` int(11) DEFAULT 0, + `date_start` int(11) DEFAULT NULL, + `date_end` int(11) DEFAULT NULL, + `info_bits` int(11) DEFAULT 0, + `special_code` int(10) unsigned DEFAULT 0, + `rang` int(11) DEFAULT 0, + `fk_unit` int(11) DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_user_author` int(11) DEFAULT NULL, + `fk_user_modif` int(11) DEFAULT NULL, + `fk_multicurrency` int(11) DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, + `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, + `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, + `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, + PRIMARY KEY (`rowid`), + KEY `fk_facture_fourn_det_rec_fk_unit` (`fk_unit`), + CONSTRAINT `fk_facture_fourn_det_rec_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_facture_fourn_det_rec` +-- + +LOCK TABLES `llx_facture_fourn_det_rec` WRITE; +/*!40000 ALTER TABLE `llx_facture_fourn_det_rec` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_facture_fourn_det_rec` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_facture_fourn_det_rec_extrafields` +-- + +DROP TABLE IF EXISTS `llx_facture_fourn_det_rec_extrafields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_facture_fourn_det_rec_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `llx_facture_fourn_det_rec_extrafields` (`fk_object`), + KEY `idx_facture_fourn_det_rec_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_facture_fourn_det_rec_extrafields` +-- + +LOCK TABLES `llx_facture_fourn_det_rec_extrafields` WRITE; +/*!40000 ALTER TABLE `llx_facture_fourn_det_rec_extrafields` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_facture_fourn_det_rec_extrafields` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_facture_fourn_extrafields` -- @@ -6775,10 +7141,10 @@ CREATE TABLE `llx_facture_fourn_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facture_fourn_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6790,6 +7156,104 @@ LOCK TABLES `llx_facture_fourn_extrafields` WRITE; /*!40000 ALTER TABLE `llx_facture_fourn_extrafields` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_facture_fourn_rec` +-- + +DROP TABLE IF EXISTS `llx_facture_fourn_rec`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_facture_fourn_rec` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `titre` varchar(200) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref_supplier` varchar(180) COLLATE utf8mb3_unicode_ci NOT NULL, + `entity` int(11) NOT NULL DEFAULT 1, + `fk_soc` int(11) NOT NULL, + `datec` datetime DEFAULT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `suspended` int(11) DEFAULT 0, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `amount` double(24,8) NOT NULL DEFAULT 0.00000000, + `remise` double DEFAULT 0, + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', + `localtax1` double(24,8) DEFAULT 0.00000000, + `localtax2` double(24,8) DEFAULT 0.00000000, + `total_ht` double(24,8) DEFAULT 0.00000000, + `total_tva` double(24,8) DEFAULT 0.00000000, + `total_ttc` double(24,8) DEFAULT 0.00000000, + `fk_user_author` int(11) DEFAULT NULL, + `fk_user_modif` int(11) DEFAULT NULL, + `fk_projet` int(11) DEFAULT NULL, + `fk_account` int(11) DEFAULT NULL, + `fk_cond_reglement` int(11) DEFAULT NULL, + `fk_mode_reglement` int(11) DEFAULT NULL, + `date_lim_reglement` date DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `modelpdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_multicurrency` int(11) DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `multicurrency_tx` double(24,8) DEFAULT 1.00000000, + `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, + `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, + `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, + `usenewprice` int(11) DEFAULT 0, + `frequency` int(11) DEFAULT NULL, + `unit_frequency` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT 'm', + `date_when` datetime DEFAULT NULL, + `date_last_gen` datetime DEFAULT NULL, + `nb_gen_done` int(11) DEFAULT NULL, + `nb_gen_max` int(11) DEFAULT NULL, + `auto_validate` int(11) DEFAULT 0, + `generate_pdf` int(11) DEFAULT 1, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_facture_fourn_rec_ref` (`titre`,`entity`), + UNIQUE KEY `uk_facture_fourn_rec_ref_supplier` (`ref_supplier`,`fk_soc`,`entity`), + KEY `idx_facture_fourn_rec_fk_soc` (`fk_soc`), + KEY `idx_facture_fourn_rec_fk_user_author` (`fk_user_author`), + KEY `idx_facture_fourn_rec_fk_projet` (`fk_projet`), + KEY `idx_facture_fourn_rec_date_lim_reglement` (`date_lim_reglement`), + CONSTRAINT `fk_facture_fourn_rec_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), + CONSTRAINT `fk_facture_fourn_rec_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), + CONSTRAINT `fk_facture_fourn_rec_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_facture_fourn_rec` +-- + +LOCK TABLES `llx_facture_fourn_rec` WRITE; +/*!40000 ALTER TABLE `llx_facture_fourn_rec` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_facture_fourn_rec` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_facture_fourn_rec_extrafields` +-- + +DROP TABLE IF EXISTS `llx_facture_fourn_rec_extrafields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_facture_fourn_rec_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_facture_fourn_rec_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_facture_fourn_rec_extrafields` +-- + +LOCK TABLES `llx_facture_fourn_rec_extrafields` WRITE; +/*!40000 ALTER TABLE `llx_facture_fourn_rec_extrafields` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_facture_fourn_rec_extrafields` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_facture_rec` -- @@ -6799,7 +7263,7 @@ DROP TABLE IF EXISTS `llx_facture_rec`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_facture_rec` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `titre` varchar(200) COLLATE utf8_unicode_ci NOT NULL, + `titre` varchar(200) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_soc` int(11) NOT NULL, `datec` datetime DEFAULT NULL, @@ -6817,11 +7281,11 @@ CREATE TABLE `llx_facture_rec` ( `fk_cond_reglement` int(11) NOT NULL DEFAULT 1, `fk_mode_reglement` int(11) DEFAULT 0, `date_lim_reglement` date DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `modelpdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_gen` varchar(7) COLLATE utf8_unicode_ci DEFAULT NULL, - `unit_frequency` varchar(2) COLLATE utf8_unicode_ci DEFAULT 'd', + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `modelpdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_gen` varchar(7) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `unit_frequency` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT 'd', `date_when` datetime DEFAULT NULL, `date_last_gen` datetime DEFAULT NULL, `nb_gen_done` int(11) DEFAULT NULL, @@ -6833,14 +7297,14 @@ CREATE TABLE `llx_facture_rec` ( `generate_pdf` int(11) DEFAULT 1, `fk_account` int(11) DEFAULT 0, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, `fk_user_modif` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `suspended` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_facture_rec_uk_titre` (`titre`,`entity`), @@ -6850,7 +7314,7 @@ CREATE TABLE `llx_facture_rec` ( CONSTRAINT `fk_facture_rec_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), CONSTRAINT `fk_facture_rec_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_facture_rec_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6874,10 +7338,10 @@ CREATE TABLE `llx_facture_rec_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facture_rec_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6901,14 +7365,14 @@ CREATE TABLE `llx_facturedet` ( `fk_facture` int(11) NOT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -6930,19 +7394,19 @@ CREATE TABLE `llx_facturedet` ( `special_code` int(10) unsigned DEFAULT 0, `rang` int(11) DEFAULT 0, `fk_contract_line` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `situation_percent` double DEFAULT 100, `fk_prev_id` int(11) DEFAULT NULL, `fk_unit` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_fk_remise_except` (`fk_remise_except`,`fk_facture`), KEY `idx_facturedet_fk_facture` (`fk_facture`), @@ -6951,7 +7415,7 @@ CREATE TABLE `llx_facturedet` ( KEY `idx_facturedet_fk_code_ventilation` (`fk_code_ventilation`), CONSTRAINT `fk_facturedet_fk_facture` FOREIGN KEY (`fk_facture`) REFERENCES `llx_facture` (`rowid`), CONSTRAINT `fk_facturedet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=1093 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=1093 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -6975,10 +7439,10 @@ CREATE TABLE `llx_facturedet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facturedet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7003,14 +7467,14 @@ CREATE TABLE `llx_facturedet_rec` ( `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, `product_type` int(11) DEFAULT 0, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -7026,9 +7490,9 @@ CREATE TABLE `llx_facturedet_rec` ( `rang` int(11) DEFAULT 0, `fk_contract_line` int(11) DEFAULT NULL, `fk_unit` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -7042,7 +7506,7 @@ CREATE TABLE `llx_facturedet_rec` ( PRIMARY KEY (`rowid`), KEY `fk_facturedet_rec_fk_unit` (`fk_unit`), CONSTRAINT `fk_facturedet_rec_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7066,10 +7530,10 @@ CREATE TABLE `llx_facturedet_rec_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_facturedet_rec_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7093,7 +7557,7 @@ CREATE TABLE `llx_fichinter` ( `fk_soc` int(11) NOT NULL, `fk_projet` int(11) DEFAULT 0, `fk_contrat` int(11) DEFAULT 0, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, @@ -7107,19 +7571,20 @@ CREATE TABLE `llx_fichinter` ( `dateo` date DEFAULT NULL, `datee` date DEFAULT NULL, `datet` date DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_client` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_fichinter_ref` (`ref`,`entity`), KEY `idx_fichinter_fk_soc` (`fk_soc`), CONSTRAINT `fk_fichinter_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7128,7 +7593,7 @@ CREATE TABLE `llx_fichinter` ( LOCK TABLES `llx_fichinter` WRITE; /*!40000 ALTER TABLE `llx_fichinter` DISABLE KEYS */; -INSERT INTO `llx_fichinter` VALUES (1,2,1,0,'FI1007-0001',1,'2018-01-22 17:39:37','2012-07-09 01:42:41','2018-01-22 18:39:37',NULL,1,NULL,12,1,10800,NULL,NULL,NULL,NULL,NULL,NULL,'soleil',NULL,NULL,NULL,NULL),(2,1,NULL,0,'FI1007-0002',1,'2014-12-08 13:11:07','2012-07-11 16:07:51',NULL,NULL,1,NULL,NULL,0,3600,NULL,NULL,NULL,'ferfrefeferf',NULL,NULL,'soleil',NULL,NULL,NULL,NULL),(3,2,NULL,0,'FI1511-0003',1,'2018-07-30 15:51:16','2017-11-18 15:57:34','2018-01-22 18:38:46',NULL,2,NULL,12,1,36000,NULL,NULL,NULL,NULL,NULL,NULL,'soleil',NULL,NULL,NULL,NULL); +INSERT INTO `llx_fichinter` VALUES (1,2,1,0,'FI1007-0001',1,'2018-01-22 17:39:37','2012-07-09 01:42:41','2018-01-22 18:39:37',NULL,1,NULL,12,1,10800,NULL,NULL,NULL,NULL,NULL,NULL,'soleil',NULL,NULL,NULL,NULL,NULL),(2,1,NULL,0,'FI1007-0002',1,'2014-12-08 13:11:07','2012-07-11 16:07:51',NULL,NULL,1,NULL,NULL,0,3600,NULL,NULL,NULL,'ferfrefeferf',NULL,NULL,'soleil',NULL,NULL,NULL,NULL,NULL),(3,2,NULL,0,'FI1511-0003',1,'2018-07-30 15:51:16','2017-11-18 15:57:34','2018-01-22 18:38:46',NULL,2,NULL,12,1,36000,NULL,NULL,NULL,NULL,NULL,NULL,'soleil',NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_fichinter` ENABLE KEYS */; UNLOCK TABLES; @@ -7143,10 +7608,10 @@ CREATE TABLE `llx_fichinter_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_ficheinter_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7167,7 +7632,7 @@ DROP TABLE IF EXISTS `llx_fichinter_rec`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_fichinter_rec` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `titre` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `titre` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_soc` int(11) DEFAULT NULL, `datec` datetime DEFAULT NULL, @@ -7175,12 +7640,12 @@ CREATE TABLE `llx_fichinter_rec` ( `fk_user_author` int(11) DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `duree` double DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `modelpdf` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `modelpdf` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `frequency` int(11) DEFAULT NULL, - `unit_frequency` varchar(2) COLLATE utf8_unicode_ci DEFAULT 'm', + `unit_frequency` varchar(2) COLLATE utf8mb3_unicode_ci DEFAULT 'm', `date_when` datetime DEFAULT NULL, `date_last_gen` datetime DEFAULT NULL, `nb_gen_done` int(11) DEFAULT NULL, @@ -7193,7 +7658,7 @@ CREATE TABLE `llx_fichinter_rec` ( KEY `idx_fichinter_rec_fk_projet` (`fk_projet`), CONSTRAINT `fk_fichinter_rec_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), CONSTRAINT `fk_fichinter_rec_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7217,13 +7682,13 @@ CREATE TABLE `llx_fichinterdet` ( `fk_fichinter` int(11) DEFAULT NULL, `fk_parent_line` int(11) DEFAULT NULL, `date` datetime DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `duree` int(11) DEFAULT NULL, `rang` int(11) DEFAULT 0, PRIMARY KEY (`rowid`), KEY `idx_fichinterdet_fk_fichinter` (`fk_fichinter`), CONSTRAINT `fk_fichinterdet_fk_fichinter` FOREIGN KEY (`fk_fichinter`) REFERENCES `llx_fichinter` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7247,10 +7712,10 @@ CREATE TABLE `llx_fichinterdet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_ficheinterdet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7273,19 +7738,19 @@ CREATE TABLE `llx_fichinterdet_rec` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_fichinter` int(11) NOT NULL, `date` datetime DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `duree` int(11) DEFAULT NULL, `rang` int(11) DEFAULT 0, `total_ht` double(24,8) DEFAULT NULL, `subprice` double(24,8) DEFAULT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tva_tx` double(6,3) DEFAULT NULL, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax1_type` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax2_type` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -7305,9 +7770,9 @@ CREATE TABLE `llx_fichinterdet_rec` ( `fk_export_commpta` int(11) NOT NULL DEFAULT 0, `special_code` int(10) unsigned DEFAULT 0, `fk_unit` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7330,7 +7795,7 @@ CREATE TABLE `llx_holiday` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_user` int(11) NOT NULL, `date_create` datetime NOT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `date_debut` date NOT NULL, `date_fin` date NOT NULL, `halfday` int(11) DEFAULT 0, @@ -7342,21 +7807,22 @@ CREATE TABLE `llx_holiday` ( `fk_user_refuse` int(11) DEFAULT NULL, `date_cancel` datetime DEFAULT NULL, `fk_user_cancel` int(11) DEFAULT NULL, - `detail_refuse` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `detail_refuse` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_create` int(11) DEFAULT NULL, `fk_type` int(11) NOT NULL DEFAULT 1, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `date_approve` datetime DEFAULT NULL, `fk_user_approve` int(11) DEFAULT NULL, + `nb_open_day` double(24,8) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_holiday_fk_user` (`fk_user`), KEY `idx_holiday_date_debut` (`date_debut`), @@ -7365,7 +7831,7 @@ CREATE TABLE `llx_holiday` ( KEY `idx_holiday_date_create` (`date_create`), KEY `idx_holiday_fk_validator` (`fk_validator`), KEY `idx_holiday_entity` (`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7374,7 +7840,7 @@ CREATE TABLE `llx_holiday` ( LOCK TABLES `llx_holiday` WRITE; /*!40000 ALTER TABLE `llx_holiday` DISABLE KEYS */; -INSERT INTO `llx_holiday` VALUES (1,1,'2021-02-17 19:06:35','gdf','2021-02-10','2021-02-11',0,3,1,'2021-02-17 19:06:57',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2021-04-15 10:22:31',1,'1',NULL,NULL,NULL,NULL,NULL,NULL),(2,12,'2022-01-22 19:10:01','','2021-12-28','2022-01-03',0,1,11,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12,5,'2022-02-07 13:37:54',1,'2',NULL,NULL,NULL,NULL,NULL,NULL),(3,13,'2022-01-22 19:10:29','','2022-01-11','2022-01-13',0,2,11,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12,5,'2022-02-07 13:37:54',1,'3',NULL,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `llx_holiday` VALUES (1,1,'2022-02-17 19:06:35','gdf','2022-02-10','2022-02-11',0,3,1,'2022-02-17 19:06:57',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,'2022-07-04 01:11:35',1,'1',NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,12,'2022-01-22 19:10:01','','2021-12-28','2022-01-03',0,1,11,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12,5,'2022-02-07 13:37:54',1,'2',NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,13,'2022-01-22 19:10:29','','2022-01-11','2022-01-13',0,2,11,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,12,5,'2022-02-07 13:37:54',1,'3',NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_holiday` ENABLE KEYS */; UNLOCK TABLES; @@ -7387,12 +7853,12 @@ DROP TABLE IF EXISTS `llx_holiday_config`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_holiday_config` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `name` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` text COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `value` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `name` (`name`), UNIQUE KEY `idx_holiday_config` (`name`) -) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7416,10 +7882,10 @@ CREATE TABLE `llx_holiday_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_holiday_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7443,12 +7909,12 @@ CREATE TABLE `llx_holiday_logs` ( `date_action` datetime NOT NULL, `fk_user_action` int(11) NOT NULL, `fk_user_update` int(11) NOT NULL, - `type_action` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `prev_solde` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `new_solde` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `type_action` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `prev_solde` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `new_solde` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_type` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=195 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=195 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7473,7 +7939,7 @@ CREATE TABLE `llx_holiday_users` ( `nb_holiday` double NOT NULL DEFAULT 0, `fk_type` int(11) NOT NULL DEFAULT 1, UNIQUE KEY `uk_holiday_users` (`fk_user`,`fk_type`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7495,16 +7961,16 @@ DROP TABLE IF EXISTS `llx_hrm_evaluation`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_hrm_evaluation` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '(PROV)', - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '(PROV)', + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` smallint(6) NOT NULL, `date_eval` date DEFAULT NULL, `fk_user` int(11) NOT NULL, @@ -7515,7 +7981,7 @@ CREATE TABLE `llx_hrm_evaluation` ( KEY `llx_hrm_evaluation_fk_user_creat` (`fk_user_creat`), KEY `idx_hrm_evaluation_status` (`status`), CONSTRAINT `llx_hrm_evaluation_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7538,10 +8004,10 @@ CREATE TABLE `llx_hrm_evaluation_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_evaluation_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7570,14 +8036,14 @@ CREATE TABLE `llx_hrm_evaluationdet` ( `fk_evaluation` int(11) NOT NULL, `rankorder` int(11) NOT NULL, `required_rank` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_hrm_evaluationdet_rowid` (`rowid`), KEY `llx_hrm_evaluationdet_fk_user_creat` (`fk_user_creat`), KEY `idx_hrm_evaluationdet_fk_skill` (`fk_skill`), KEY `idx_hrm_evaluationdet_fk_evaluation` (`fk_evaluation`), CONSTRAINT `llx_hrm_evaluationdet_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7600,10 +8066,10 @@ CREATE TABLE `llx_hrm_evaluationdet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_evaluationdet_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7624,19 +8090,19 @@ DROP TABLE IF EXISTS `llx_hrm_job`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_hrm_job` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `deplacement` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `deplacement` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_hrm_job_rowid` (`rowid`), KEY `idx_hrm_job_label` (`label`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7659,10 +8125,10 @@ CREATE TABLE `llx_hrm_job_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_job_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7683,7 +8149,7 @@ DROP TABLE IF EXISTS `llx_hrm_job_user`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_hrm_job_user` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_contrat` int(11) DEFAULT NULL, @@ -7691,14 +8157,14 @@ CREATE TABLE `llx_hrm_job_user` ( `fk_job` int(11) NOT NULL, `date_start` date DEFAULT NULL, `date_end` date DEFAULT NULL, - `abort_comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `abort_comment` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_hrm_job_user_rowid` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7719,8 +8185,8 @@ DROP TABLE IF EXISTS `llx_hrm_skill`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_hrm_skill` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, @@ -7729,14 +8195,14 @@ CREATE TABLE `llx_hrm_skill` ( `date_validite` int(11) NOT NULL, `temps_theorique` double(24,8) NOT NULL, `skill_type` int(11) NOT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_hrm_skill_rowid` (`rowid`), KEY `llx_hrm_skill_fk_user_creat` (`fk_user_creat`), KEY `idx_hrm_skill_skill_type` (`skill_type`), CONSTRAINT `llx_hrm_skill_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7759,10 +8225,10 @@ CREATE TABLE `llx_hrm_skill_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_skill_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7783,7 +8249,7 @@ DROP TABLE IF EXISTS `llx_hrm_skilldet`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_hrm_skilldet` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_skill` int(11) NOT NULL, @@ -7792,7 +8258,7 @@ CREATE TABLE `llx_hrm_skilldet` ( KEY `idx_hrm_skilldet_rowid` (`rowid`), KEY `llx_hrm_skilldet_fk_user_creat` (`fk_user_creat`), CONSTRAINT `llx_hrm_skilldet_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7820,13 +8286,13 @@ CREATE TABLE `llx_hrm_skillrank` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `objecttype` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `objecttype` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`rowid`), KEY `idx_hrm_skillrank_rowid` (`rowid`), KEY `idx_hrm_skillrank_fk_skill` (`fk_skill`), KEY `llx_hrm_skillrank_fk_user_creat` (`fk_user_creat`), CONSTRAINT `llx_hrm_skillrank_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7848,13 +8314,13 @@ DROP TABLE IF EXISTS `llx_import_model`; CREATE TABLE `llx_import_model` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_user` int(11) NOT NULL DEFAULT 0, - `label` varchar(50) COLLATE utf8_unicode_ci NOT NULL, - `type` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `field` text COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, + `type` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `field` text COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_import_model` (`label`,`type`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7879,14 +8345,14 @@ CREATE TABLE `llx_intracommreport` ( `ref` varchar(30) CHARACTER SET utf8mb4 NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `type_declaration` varchar(32) CHARACTER SET utf8mb4 DEFAULT NULL, - `periods` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `periods` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `mode` varchar(32) CHARACTER SET utf8mb4 DEFAULT NULL, `content_xml` text CHARACTER SET utf8mb4 DEFAULT NULL, `type_export` varchar(10) CHARACTER SET utf8mb4 DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7907,11 +8373,11 @@ DROP TABLE IF EXISTS `llx_inventory`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_inventory` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(64) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_warehouse` int(11) DEFAULT NULL, `date_inventory` date DEFAULT NULL, - `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `date_validation` datetime DEFAULT NULL, @@ -7919,7 +8385,7 @@ CREATE TABLE `llx_inventory` ( `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datec` datetime DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), @@ -7932,7 +8398,7 @@ CREATE TABLE `llx_inventory` ( KEY `idx_inventory_import_key` (`import_key`), KEY `idx_inventory_tms` (`tms`), KEY `idx_inventory_datec` (`datec`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7945,6 +8411,32 @@ INSERT INTO `llx_inventory` VALUES (1,'aaa',1,NULL,NULL,'aa aaa',0,'2020-01-10 0 /*!40000 ALTER TABLE `llx_inventory` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_inventory_extrafields` +-- + +DROP TABLE IF EXISTS `llx_inventory_extrafields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_inventory_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_inventory_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_inventory_extrafields` +-- + +LOCK TABLES `llx_inventory_extrafields` WRITE; +/*!40000 ALTER TABLE `llx_inventory_extrafields` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_inventory_extrafields` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_inventorydet` -- @@ -7959,17 +8451,19 @@ CREATE TABLE `llx_inventorydet` ( `fk_inventory` int(11) DEFAULT 0, `fk_warehouse` int(11) DEFAULT 0, `fk_product` int(11) DEFAULT 0, - `batch` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty_view` double DEFAULT NULL, `qty_stock` double DEFAULT NULL, `qty_regulated` double DEFAULT NULL, `fk_movement` int(11) DEFAULT NULL, + `pmp_real` double DEFAULT NULL, + `pmp_expected` double DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_inventorydet` (`fk_inventory`,`fk_warehouse`,`fk_product`,`batch`), KEY `idx_inventorydet_tms` (`tms`), KEY `idx_inventorydet_datec` (`datec`), KEY `idx_inventorydet_fk_inventory` (`fk_inventory`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -7990,25 +8484,25 @@ DROP TABLE IF EXISTS `llx_knowledgemanagement_knowledgerecord`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_knowledgemanagement_knowledgerecord` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `question` text COLLATE utf8_unicode_ci NOT NULL, - `answer` text COLLATE utf8_unicode_ci DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `question` text COLLATE utf8mb3_unicode_ci NOT NULL, + `answer` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_ticket` int(11) DEFAULT NULL, `fk_c_ticket_category` int(11) DEFAULT NULL, `status` int(11) NOT NULL, - `lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8032,9 +8526,9 @@ CREATE TABLE `llx_knowledgemanagement_knowledgerecord_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8057,13 +8551,13 @@ CREATE TABLE `llx_links` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, `datea` datetime NOT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `objecttype` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `objecttype` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `objectid` int(11) NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_links` (`objectid`,`label`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8088,28 +8582,28 @@ CREATE TABLE `llx_loan` ( `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(80) COLLATE utf8_unicode_ci NOT NULL, + `label` varchar(80) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_bank` int(11) DEFAULT NULL, `capital` double(24,8) DEFAULT NULL, `datestart` date DEFAULT NULL, `dateend` date DEFAULT NULL, `nbterm` double DEFAULT NULL, `rate` double NOT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `capital_position` double(24,8) DEFAULT NULL, `date_position` date DEFAULT NULL, `paid` smallint(6) NOT NULL DEFAULT 0, - `accountancy_account_capital` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_account_insurance` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_account_interest` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_account_capital` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_account_insurance` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_account_interest` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `active` tinyint(4) NOT NULL DEFAULT 1, `fk_projet` int(11) DEFAULT NULL, `insurance_amount` double(24,8) DEFAULT 0.00000000, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8139,15 +8633,15 @@ CREATE TABLE `llx_loan_schedule` ( `amount_insurance` double(24,8) DEFAULT NULL, `amount_interest` double(24,8) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_payment_loan` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8174,13 +8668,13 @@ CREATE TABLE `llx_localtax` ( `datep` date DEFAULT NULL, `datev` date DEFAULT NULL, `amount` double NOT NULL DEFAULT 0, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8202,18 +8696,18 @@ DROP TABLE IF EXISTS `llx_mailing`; CREATE TABLE `llx_mailing` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `statut` smallint(6) DEFAULT 0, - `titre` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `titre` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `sujet` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `body` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `bgcolor` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `bgimage` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cible` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, + `sujet` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `body` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bgcolor` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bgimage` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cible` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `nbemail` int(11) DEFAULT NULL, - `email_from` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_replyto` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_errorsto` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `email_from` varchar(160) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_replyto` varchar(160) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_errorsto` varchar(160) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creat` datetime DEFAULT NULL, `date_valid` datetime DEFAULT NULL, `date_appro` datetime DEFAULT NULL, @@ -8221,14 +8715,15 @@ CREATE TABLE `llx_mailing` ( `fk_user_creat` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, `fk_user_appro` int(11) DEFAULT NULL, - `joined_file1` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `joined_file2` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `joined_file3` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `joined_file4` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `joined_file1` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `joined_file2` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `joined_file3` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `joined_file4` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_mailing` (`titre`,`entity`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8241,6 +8736,38 @@ INSERT INTO `llx_mailing` VALUES (3,2,'Commercial emailing January',1,'Buy my pr /*!40000 ALTER TABLE `llx_mailing` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_mailing_advtarget` +-- + +DROP TABLE IF EXISTS `llx_mailing_advtarget`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_mailing_advtarget` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(200) COLLATE utf8mb3_unicode_ci NOT NULL, + `entity` int(11) NOT NULL DEFAULT 1, + `filtervalue` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_user_author` int(11) NOT NULL, + `datec` datetime NOT NULL, + `fk_user_mod` int(11) NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_element` int(11) NOT NULL, + `type_element` varchar(180) COLLATE utf8mb3_unicode_ci NOT NULL, + PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_advtargetemailing_name` (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_mailing_advtarget` +-- + +LOCK TABLES `llx_mailing_advtarget` WRITE; +/*!40000 ALTER TABLE `llx_mailing_advtarget` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_mailing_advtarget` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_mailing_cibles` -- @@ -8252,23 +8779,23 @@ CREATE TABLE `llx_mailing_cibles` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_mailing` int(11) NOT NULL, `fk_contact` int(11) NOT NULL, - `lastname` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL, - `firstname` varchar(160) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(160) COLLATE utf8_unicode_ci NOT NULL, - `other` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `tag` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `lastname` varchar(160) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `firstname` varchar(160) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(160) COLLATE utf8mb3_unicode_ci NOT NULL, + `other` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tag` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` smallint(6) NOT NULL DEFAULT 0, - `source_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `source_url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `source_id` int(11) DEFAULT NULL, - `source_type` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `source_type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_envoi` datetime DEFAULT NULL, - `error_text` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `error_text` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), UNIQUE KEY `uk_mailing_cibles` (`fk_mailing`,`email`), KEY `idx_mailing_cibles_email` (`email`), KEY `idx_mailing_cibles_tag` (`tag`) -) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=60 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8291,14 +8818,14 @@ DROP TABLE IF EXISTS `llx_mailing_unsubscribe`; CREATE TABLE `llx_mailing_unsubscribe` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `unsubscribegroup` varchar(128) COLLATE utf8_unicode_ci DEFAULT '', - `ip` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `unsubscribegroup` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT '', + `ip` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creat` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), UNIQUE KEY `uk_mailing_unsubscribe` (`email`,`entity`,`unsubscribegroup`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8319,30 +8846,30 @@ DROP TABLE IF EXISTS `llx_menu`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_menu` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `menu_handler` varchar(16) COLLATE utf8_unicode_ci NOT NULL, + `menu_handler` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `module` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` varchar(4) COLLATE utf8_unicode_ci NOT NULL, - `mainmenu` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `module` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type` varchar(4) COLLATE utf8mb3_unicode_ci NOT NULL, + `mainmenu` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_menu` int(11) NOT NULL, - `fk_leftmenu` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_mainmenu` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_leftmenu` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_mainmenu` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `target` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `titre` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `prefix` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `langs` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `target` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `titre` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `prefix` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `langs` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `level` smallint(6) DEFAULT NULL, - `leftmenu` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL, - `perms` text COLLATE utf8_unicode_ci DEFAULT NULL, - `enabled` text COLLATE utf8_unicode_ci DEFAULT NULL, + `leftmenu` varchar(100) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `perms` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `enabled` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `usertype` int(11) NOT NULL DEFAULT 0, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`), UNIQUE KEY `idx_menu_uk_menu` (`menu_handler`,`fk_menu`,`position`,`url`,`entity`), KEY `idx_menu_menuhandler_type` (`menu_handler`,`type`) -) ENGINE=InnoDB AUTO_INCREMENT=167187 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=167331 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8351,7 +8878,7 @@ CREATE TABLE `llx_menu` ( LOCK TABLES `llx_menu` WRITE; /*!40000 ALTER TABLE `llx_menu` DISABLE KEYS */; -INSERT INTO `llx_menu` VALUES (103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction',NULL,'commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys',NULL,'opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey',NULL,'opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey',NULL,'opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List',NULL,'opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(161088,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home',NULL,'',-1,'','','1',2,'2017-08-30 15:14:30'),(161089,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties',NULL,'companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2017-08-30 15:14:30'),(161090,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services',NULL,'products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2017-08-30 15:14:30'),(161092,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial',NULL,'commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->supplier_order->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(161093,'auguria',1,'comptabilite|accounting|facture|don|tax|salaries|loan','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial',NULL,'compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $user->rights->loan->read','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->supplier_invoice->enabled || $conf->loan->enabled',2,'2017-08-30 15:14:30'),(161094,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects',NULL,'projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(161095,'auguria',1,'mailing|export|import|opensurvey|resource','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools',NULL,'other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read || $user->rights->resource->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled || $conf->resource->enabled',2,'2017-08-30 15:14:30'),(161101,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash',NULL,'banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2017-08-30 15:14:30'),(161102,'auguria',1,'hrm|holiday|deplacement|expensereport','top','hrm',0,NULL,NULL,80,'/hrm/index.php?mainmenu=hrm&leftmenu=','','HRM',NULL,'holiday',-1,'','$user->rights->hrm->employee->read || $user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->hrm->enabled || $conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(161177,'auguria',1,'','left','home',161088,NULL,NULL,0,'/index.php','','MyDashboard',NULL,'',0,'','','1',2,'2017-08-30 15:14:30'),(161187,'auguria',1,'','left','home',161088,NULL,NULL,1,'/admin/index.php?leftmenu=setup','','Setup',NULL,'admin',0,'setup','','$user->admin',2,'2017-08-30 15:14:30'),(161188,'auguria',1,'','left','home',161187,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161189,'auguria',1,'','left','home',161187,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161190,'auguria',1,'','left','home',161187,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161191,'auguria',1,'','left','home',161187,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161192,'auguria',1,'','left','home',161187,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus',NULL,'admin',1,'','','$leftmenu==\'setup\'',2,'2017-09-06 08:29:47'),(161193,'auguria',1,'','left','home',161187,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161194,'auguria',1,'','left','home',161187,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161195,'auguria',1,'','left','home',161187,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security',NULL,'admin',1,'','','$leftmenu==\'setup\'',2,'2017-09-06 08:29:36'),(161196,'auguria',1,'','left','home',161187,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161197,'auguria',1,'','left','home',161187,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161198,'auguria',1,'','left','home',161187,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161199,'auguria',1,'','left','home',161187,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161200,'auguria',1,'','left','home',161187,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161201,'auguria',1,'','left','home',161187,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161288,'auguria',1,'','left','home',161387,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161289,'auguria',1,'','left','home',161288,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161290,'auguria',1,'','left','home',161288,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161291,'auguria',1,'','left','home',161288,NULL,NULL,4,'/admin/system/filecheck.php?leftmenu=admintools','','FileCheck',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161292,'auguria',1,'','left','home',161387,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161293,'auguria',1,'','left','home',161387,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161294,'auguria',1,'','left','home',161387,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161295,'auguria',1,'','left','home',161387,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161297,'auguria',1,'','left','home',161387,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161387,'auguria',1,'','left','home',161088,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','AdminTools',NULL,'admin',0,'admintools','','$user->admin',2,'2017-08-30 15:14:30'),(161388,'auguria',1,'','left','home',161387,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161389,'auguria',1,'','left','home',161387,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161392,'auguria',1,'','left','home',161387,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161393,'auguria',1,'','left','home',161387,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator',NULL,'admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2017-08-30 15:14:30'),(161394,'auguria',1,'','left','home',161387,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161395,'auguria',1,'','left','home',161387,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161396,'auguria',1,'','left','home',161387,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161398,'auguria',1,'','left','home',161387,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','ExternalResources',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161407,'auguria',1,'','left','home',161387,NULL,NULL,15,'/product/admin/product_tools.php?mainmenu=home&leftmenu=admintools','','ProductVatMassChange',NULL,'products',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161487,'auguria',1,'','left','home',161088,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups',NULL,'users',0,'users','','1',2,'2017-08-30 15:14:30'),(161488,'auguria',1,'','left','home',161487,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users',NULL,'users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161489,'auguria',1,'','left','home',161488,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser',NULL,'users',2,'','($user->rights->user->user->creer || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161490,'auguria',1,'','left','home',161487,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups',NULL,'users',1,'','(($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161491,'auguria',1,'','left','home',161490,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup',NULL,'users',2,'','(($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161587,'auguria',1,'','left','companies',161089,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty',NULL,'companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161588,'auguria',1,'','left','companies',161587,NULL,NULL,0,'/societe/card.php?action=create','','MenuNewThirdParty',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161589,'auguria',1,'','left','companies',161587,NULL,NULL,0,'/societe/list.php?action=create','','List',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161590,'auguria',1,'','left','companies',161587,NULL,NULL,5,'/societe/list.php?type=f&leftmenu=suppliers','','ListSuppliersShort',NULL,'suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161591,'auguria',1,'','left','companies',161590,NULL,NULL,0,'/societe/card.php?leftmenu=supplier&action=create&type=f','','NewSupplier',NULL,'suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161593,'auguria',1,'','left','companies',161587,NULL,NULL,3,'/societe/list.php?type=p&leftmenu=prospects','','ListProspectsShort',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161594,'auguria',1,'','left','companies',161593,NULL,NULL,0,'/societe/card.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect',NULL,'companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161596,'auguria',1,'','left','companies',161587,NULL,NULL,4,'/societe/list.php?type=c&leftmenu=customers','','ListCustomersShort',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161597,'auguria',1,'','left','companies',161596,NULL,NULL,0,'/societe/card.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer',NULL,'companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161687,'auguria',1,'','left','companies',161089,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses',NULL,'companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161688,'auguria',1,'','left','companies',161687,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress',NULL,'companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161689,'auguria',1,'','left','companies',161687,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161691,'auguria',1,'','left','companies',161689,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161692,'auguria',1,'','left','companies',161689,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161693,'auguria',1,'','left','companies',161689,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161694,'auguria',1,'','left','companies',161689,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161737,'auguria',1,'','left','companies',161089,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161738,'auguria',1,'','left','companies',161737,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161747,'auguria',1,'','left','companies',161089,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161748,'auguria',1,'','left','companies',161747,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161757,'auguria',1,'','left','companies',161089,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161758,'auguria',1,'','left','companies',161757,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(162187,'auguria',1,'','left','commercial',161092,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop',NULL,'propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162188,'auguria',1,'','left','commercial',162187,NULL,NULL,0,'/comm/propal/card.php?action=create&leftmenu=propals','','NewPropal',NULL,'propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162189,'auguria',1,'','left','commercial',162187,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162190,'auguria',1,'','left','commercial',162189,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&search_status=0','','PropalsDraft',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162191,'auguria',1,'','left','commercial',162189,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&search_status=1','','PropalsOpened',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162192,'auguria',1,'','left','commercial',162189,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&search_status=2','','PropalStatusSigned',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162193,'auguria',1,'','left','commercial',162189,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&search_status=3','','PropalStatusNotSigned',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162194,'auguria',1,'','left','commercial',162189,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&search_status=4','','PropalStatusBilled',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162197,'auguria',1,'','left','commercial',162187,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162287,'auguria',1,'','left','commercial',161092,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders',NULL,'orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162288,'auguria',1,'','left','commercial',162287,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder',NULL,'orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162289,'auguria',1,'','left','commercial',162287,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162290,'auguria',1,'','left','commercial',162289,NULL,NULL,2,'/commande/list.php?leftmenu=orders&search_status=0','','StatusOrderDraftShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162291,'auguria',1,'','left','commercial',162289,NULL,NULL,3,'/commande/list.php?leftmenu=orders&search_status=1','','StatusOrderValidated',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162292,'auguria',1,'','left','commercial',162289,NULL,NULL,4,'/commande/list.php?leftmenu=orders&search_status=2','','StatusOrderOnProcessShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162293,'auguria',1,'','left','commercial',162289,NULL,NULL,5,'/commande/list.php?leftmenu=orders&search_status=3','','StatusOrderToBill',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162294,'auguria',1,'','left','commercial',162289,NULL,NULL,6,'/commande/list.php?leftmenu=orders&search_status=4','','StatusOrderProcessed',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162295,'auguria',1,'','left','commercial',162289,NULL,NULL,7,'/commande/list.php?leftmenu=orders&search_status=-1','','StatusOrderCanceledShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162296,'auguria',1,'','left','commercial',162287,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162387,'auguria',1,'','left','commercial',161090,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments',NULL,'sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2017-08-30 15:14:30'),(162388,'auguria',1,'','left','commercial',162387,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending',NULL,'sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162389,'auguria',1,'','left','commercial',162387,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List',NULL,'sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162390,'auguria',1,'','left','commercial',162387,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics',NULL,'sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162487,'auguria',1,'','left','commercial',161092,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts',NULL,'contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162488,'auguria',1,'','left','commercial',162487,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract',NULL,'contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162489,'auguria',1,'','left','commercial',162487,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List',NULL,'contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162490,'auguria',1,'','left','commercial',162487,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices',NULL,'contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162491,'auguria',1,'','left','commercial',162490,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162492,'auguria',1,'','left','commercial',162490,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162493,'auguria',1,'','left','commercial',162490,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162494,'auguria',1,'','left','commercial',162490,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162587,'auguria',1,'','left','commercial',161092,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions',NULL,'interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162588,'auguria',1,'','left','commercial',162587,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention',NULL,'interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162589,'auguria',1,'','left','commercial',162587,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List',NULL,'interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162590,'auguria',1,'','left','commercial',162587,NULL,NULL,2,'/fichinter/stats/index.php?leftmenu=ficheinter','','Statistics',NULL,'interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162687,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers',NULL,'bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162688,'auguria',1,'','left','accountancy',162687,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill',NULL,'bills',1,'','$user->rights->fournisseur->facture->creer','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162689,'auguria',1,'','left','accountancy',162687,NULL,NULL,1,'/fourn/facture/list.php?leftmenu=suppliers_bills','','List',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162690,'auguria',1,'','left','accountancy',162687,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162691,'auguria',1,'','left','accountancy',162687,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162692,'auguria',1,'','left','accountancy',162690,NULL,NULL,1,'/fourn/facture/rapport.php?leftmenu=suppliers_bills','','Reporting',NULL,'bills',2,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162787,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers',NULL,'bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162788,'auguria',1,'','left','accountancy',162787,NULL,NULL,3,'/compta/facture/card.php?action=create&leftmenu=customers_bills','','NewBill',NULL,'bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162789,'auguria',1,'','left','accountancy',162787,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162791,'auguria',1,'','left','accountancy',162787,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162792,'auguria',1,'','left','accountancy',162787,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162797,'auguria',1,'','left','accountancy',162791,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162798,'auguria',1,'','left','accountancy',161101,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits',NULL,'bills',0,'checks','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162799,'auguria',1,'','left','accountancy',162798,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit',NULL,'compta',1,'','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162800,'auguria',1,'','left','accountancy',162798,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List',NULL,'bills',1,'','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162801,'auguria',1,'','left','accountancy',162787,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162807,'auguria',1,'','left','accountancy',162792,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162808,'auguria',1,'','left','accountancy',162792,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162809,'auguria',1,'','left','accountancy',162792,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162810,'auguria',1,'','left','accountancy',162792,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162987,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/commande/list.php?leftmenu=orders&search_status=3','','MenuOrdersToBill',NULL,'orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2017-08-30 15:14:30'),(163087,'auguria',1,'','left','accountancy',161093,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations',NULL,'donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2017-08-30 15:14:30'),(163088,'auguria',1,'','left','accountancy',163087,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation',NULL,'donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2017-08-30 15:14:30'),(163089,'auguria',1,'','left','accountancy',163087,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List',NULL,'donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2017-08-30 15:14:30'),(163187,'auguria',1,'','left','accountancy',161102,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses',NULL,'trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163188,'auguria',1,'','left','accountancy',163187,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New',NULL,'trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163189,'auguria',1,'','left','accountancy',163187,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List',NULL,'trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163190,'auguria',1,'','left','accountancy',163187,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics',NULL,'trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163287,'auguria',1,'','left','accountancy',161093,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses',NULL,'compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2017-08-30 15:14:30'),(163297,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries',NULL,'salaries',1,'tax_sal','$user->rights->salaries->payment->read','$conf->salaries->enabled',0,'2017-08-30 15:14:30'),(163298,'auguria',1,'','left','accountancy',163297,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment',NULL,'companies',2,'','$user->rights->salaries->payment->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2017-08-30 15:14:30'),(163299,'auguria',1,'','left','accountancy',163297,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments',NULL,'companies',2,'','$user->rights->salaries->payment->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2017-08-30 15:14:30'),(163307,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans',NULL,'loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2017-08-30 15:14:30'),(163308,'auguria',1,'','left','accountancy',163307,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan',NULL,'loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2017-08-30 15:14:30'),(163310,'auguria',1,'','left','accountancy',163307,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator',NULL,'companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\" && ! empty($conf->global->LOAN_SHOW_CALCULATOR)',0,'2017-08-30 15:14:30'),(163337,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions',NULL,'',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2017-08-30 15:14:30'),(163338,'auguria',1,'','left','accountancy',163337,NULL,NULL,2,'/compta/sociales/card.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution',NULL,'',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2017-08-30 15:14:30'),(163339,'auguria',1,'','left','accountancy',163337,NULL,NULL,3,'/compta/sociales/payments.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments',NULL,'',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2017-08-30 15:14:30'),(163387,'auguria',1,'','left','accountancy',163287,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT',NULL,'companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2017-08-30 15:14:30'),(163388,'auguria',1,'','left','accountancy',163387,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','New',NULL,'companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163389,'auguria',1,'','left','accountancy',163387,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','List',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163390,'auguria',1,'','left','accountancy',163387,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163391,'auguria',1,'','left','accountancy',163387,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163487,'auguria',1,'','left','accountancy',161093,NULL,NULL,7,'/accountancy/index.php?leftmenu=accountancy','','MenuAccountancy',NULL,'accountancy',0,'accounting','! empty($conf->accounting->enabled) || $user->rights->accounting->bind->write || $user->rights->accounting->bind->write || $user->rights->compta->resultat->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163488,'auguria',1,'','left','accountancy',163487,NULL,NULL,2,'/accountancy/customer/index.php?leftmenu=dispatch_customer','','CustomersVentilation',NULL,'accountancy',1,'dispatch_customer','$user->rights->accounting->bind->write','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163489,'auguria',1,'','left','accountancy',163488,NULL,NULL,3,'/accountancy/customer/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $leftmenu==\"dispatch_customer\"',0,'2017-08-30 15:14:30'),(163490,'auguria',1,'','left','accountancy',163488,NULL,NULL,4,'/accountancy/customer/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $leftmenu==\"dispatch_customer\"',0,'2017-08-30 15:14:30'),(163497,'auguria',1,'','left','accountancy',163487,NULL,NULL,5,'/accountancy/supplier/index.php?leftmenu=dispatch_supplier','','SuppliersVentilation',NULL,'accountancy',1,'ventil_supplier','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2017-08-30 15:14:30'),(163498,'auguria',1,'','left','accountancy',163497,NULL,NULL,6,'/accountancy/supplier/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"dispatch_supplier\"',0,'2017-08-30 15:14:30'),(163499,'auguria',1,'','left','accountancy',163497,NULL,NULL,7,'/accountancy/supplier/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"dispatch_supplier\"',0,'2017-08-30 15:14:30'),(163507,'auguria',1,'','left','accountancy',163487,NULL,NULL,5,'/accountancy/expensereport/index.php?leftmenu=dispatch_expensereport','','ExpenseReportsVentilation',NULL,'accountancy',1,'ventil_expensereport','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(163508,'auguria',1,'','left','accountancy',163507,NULL,NULL,6,'/accountancy/expensereport/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"dispatch_expensereport\"',0,'2017-08-30 15:14:30'),(163509,'auguria',1,'','left','accountancy',163507,NULL,NULL,7,'/accountancy/expensereport/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"dispatch_expensereport\"',0,'2017-08-30 15:14:30'),(163517,'auguria',1,'','left','accountancy',163487,NULL,NULL,15,'/accountancy/bookkeeping/list.php','','Bookkeeping',NULL,'accountancy',1,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163522,'auguria',1,'','left','accountancy',163487,NULL,NULL,16,'/accountancy/bookkeeping/balance.php','','AccountBalance',NULL,'accountancy',1,'balance','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163527,'auguria',1,'','left','accountancy',163487,NULL,NULL,17,'/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy','','Reportings',NULL,'main',1,'report','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163528,'auguria',1,'','left','accountancy',163527,NULL,NULL,19,'/compta/resultat/index.php?mainmenu=accountancy&leftmenu=accountancy','','ReportInOut',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163529,'auguria',1,'','left','accountancy',163528,NULL,NULL,18,'/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy','','ByAccounts',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163530,'auguria',1,'','left','accountancy',163528,NULL,NULL,20,'/compta/resultat/clientfourn.php?mainmenu=accountancy&leftmenu=accountancy','','ByCompanies',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163531,'auguria',1,'','left','accountancy',163527,NULL,NULL,21,'/compta/stats/index.php?mainmenu=accountancy&leftmenu=accountancy','','ReportTurnover',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163532,'auguria',1,'','left','accountancy',163531,NULL,NULL,22,'/compta/stats/casoc.php?mainmenu=accountancy&leftmenu=accountancy','','ByCompanies',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163533,'auguria',1,'','left','accountancy',163531,NULL,NULL,23,'/compta/stats/cabyuser.php?mainmenu=accountancy&leftmenu=accountancy','','ByUsers',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163534,'auguria',1,'','left','accountancy',163531,NULL,NULL,24,'/compta/stats/cabyprodserv.php?mainmenu=accountancy&leftmenu=accountancy','','ByProductsAndServices',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163537,'auguria',1,'','left','accountancy',163538,NULL,NULL,80,'/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin','','FiscalPeriod',NULL,'admin',1,'accountancy_admin_period','','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\" && $conf->global->MAIN_FEATURES_LEVEL > 0',2,'2017-08-30 15:14:30'),(163538,'auguria',1,'','left','accountancy',163487,NULL,NULL,1,'/accountancy/index.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Setup',NULL,'accountancy',1,'accountancy_admin','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163541,'auguria',1,'','left','accountancy',163538,NULL,NULL,10,'/accountancy/admin/journals_list.php?id=35&mainmenu=accountancy&leftmenu=accountancy_admin','','AccountingJournals',NULL,'accountancy',2,'accountancy_admin_journal','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163542,'auguria',1,'','left','accountancy',163538,NULL,NULL,20,'/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Pcg_version',NULL,'accountancy',2,'accountancy_admin_chartmodel','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163543,'auguria',1,'','left','accountancy',163538,NULL,NULL,30,'/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Chartofaccounts',NULL,'accountancy',2,'accountancy_admin_chart','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163544,'auguria',1,'','left','accountancy',163538,NULL,NULL,40,'/accountancy/admin/categories_list.php?id=32&mainmenu=accountancy&leftmenu=accountancy_admin','','AccountingCategory',NULL,'accountancy',2,'accountancy_admin_chart_group','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163545,'auguria',1,'','left','accountancy',163538,NULL,NULL,50,'/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin','','MenuDefaultAccounts',NULL,'accountancy',2,'accountancy_admin_default','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163546,'auguria',1,'','left','accountancy',163538,NULL,NULL,60,'/admin/dict.php?id=10&from=accountancy&search_country_id=__MYCOUNTRYID__&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuVatAccounts',NULL,'accountancy',2,'accountancy_admin_vat','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163547,'auguria',1,'','left','accountancy',163538,NULL,NULL,70,'/admin/dict.php?id=7&from=accountancy&search_country_id=__MYCOUNTRYID__&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuTaxAccounts',NULL,'accountancy',2,'accountancy_admin_tax','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163548,'auguria',1,'','left','accountancy',163538,NULL,NULL,80,'/admin/dict.php?id=17&from=accountancy&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuExpenseReportAccounts',NULL,'accountancy',2,'accountancy_admin_expensereport','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163549,'auguria',1,'','left','accountancy',163538,NULL,NULL,90,'/accountancy/admin/productaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin','','MenuProductsAccounts',NULL,'accountancy',2,'accountancy_admin_product','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163587,'auguria',1,'','left','accountancy',161101,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders',NULL,'withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2017-08-30 15:14:30'),(163589,'auguria',1,'','left','accountancy',163587,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163590,'auguria',1,'','left','accountancy',163587,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163591,'auguria',1,'','left','accountancy',163587,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163593,'auguria',1,'','left','accountancy',163587,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163594,'auguria',1,'','left','accountancy',163587,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163687,'auguria',1,'','left','accountancy',161101,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash',NULL,'banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2017-08-30 15:14:30'),(163688,'auguria',1,'','left','accountancy',163687,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount',NULL,'banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163690,'auguria',1,'','left','accountancy',163687,NULL,NULL,2,'/compta/bank/bankentries.php?leftmenu=bank','','ListTransactions',NULL,'banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163691,'auguria',1,'','left','accountancy',163687,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory',NULL,'banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163693,'auguria',1,'','left','accountancy',163687,NULL,NULL,5,'/compta/bank/transfer.php?leftmenu=bank','','BankTransfers',NULL,'banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163737,'auguria',1,'','left','accountancy',161101,NULL,NULL,4,'/categories/index.php?leftmenu=bank&type=5','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(163738,'auguria',1,'','left','accountancy',163737,NULL,NULL,0,'/categories/card.php?leftmenu=bank&action=create&type=5','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(163787,'auguria',1,'','left','accountancy',161093,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings',NULL,'main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled',0,'2017-08-30 15:14:30'),(163792,'auguria',1,'','left','accountancy',163487,NULL,NULL,1,'','','Journalization',NULL,'main',1,'','$user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163793,'auguria',1,'','left','accountancy',163792,NULL,NULL,4,'/accountancy/journal/sellsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=1','','SellsJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163794,'auguria',1,'','left','accountancy',163792,NULL,NULL,1,'/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=3','','BankJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163795,'auguria',1,'','left','accountancy',163792,NULL,NULL,2,'/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=6','','ExpenseReportJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163796,'auguria',1,'','left','accountancy',163792,NULL,NULL,3,'/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=2','','PurchasesJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163798,'auguria',1,'','left','accountancy',163787,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut',NULL,'main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163799,'auguria',1,'','left','accountancy',163788,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163800,'auguria',1,'','left','accountancy',163787,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover',NULL,'main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163801,'auguria',1,'','left','accountancy',163790,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163802,'auguria',1,'','left','accountancy',163790,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163803,'auguria',1,'','left','accountancy',163790,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163887,'auguria',1,'','left','products',161090,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products',NULL,'products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163888,'auguria',1,'','left','products',163887,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct',NULL,'products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163889,'auguria',1,'','left','products',163887,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List',NULL,'products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163890,'auguria',1,'','left','products',163887,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163891,'auguria',1,'','left','products',163887,NULL,NULL,7,'/product/stats/card.php?id=all&leftmenu=stats&type=0','','Statistics',NULL,'main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(163892,'auguria',1,'','left','products',163887,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2017-08-30 15:14:30'),(163893,'auguria',1,'','left','products',163887,NULL,NULL,6,'/product/stock/productlot_list.php','','LotSerial',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2017-08-30 15:14:30'),(163987,'auguria',1,'','left','products',161090,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services',NULL,'products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163988,'auguria',1,'','left','products',163987,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService',NULL,'products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163989,'auguria',1,'','left','products',163987,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List',NULL,'products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163990,'auguria',1,'','left','products',163987,NULL,NULL,5,'/product/stats/card.php?id=all&leftmenu=stats&type=1','','Statistics',NULL,'main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(164187,'auguria',1,'','left','products',161090,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock',NULL,'stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164188,'auguria',1,'','left','products',164187,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse',NULL,'stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164189,'auguria',1,'','left','products',164187,NULL,NULL,1,'/product/stock/list.php','','List',NULL,'stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164191,'auguria',1,'','left','products',164187,NULL,NULL,3,'/product/stock/mouvement.php','','Movements',NULL,'stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164192,'auguria',1,'','left','products',164187,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments',NULL,'stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(164193,'auguria',1,'','left','products',164187,NULL,NULL,5,'/product/stock/massstockmove.php','','MassStockTransferShort',NULL,'stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164287,'auguria',1,'','left','products',161090,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164288,'auguria',1,'','left','products',164287,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164487,'auguria',1,'','left','project',161094,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent',NULL,'projects',0,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164687,'auguria',1,'','left','project',161094,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects',NULL,'projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164688,'auguria',1,'','left','project',164687,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject',NULL,'projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164689,'auguria',1,'','left','project',164687,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164690,'auguria',1,'','left','project',164687,NULL,NULL,3,'/projet/stats/index.php?leftmenu=projects','','Statistics',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164787,'auguria',1,'','left','project',161094,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities',NULL,'projects',0,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164788,'auguria',1,'','left','project',164787,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask',NULL,'projects',1,'','$user->rights->projet->creer','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164789,'auguria',1,'','left','project',164787,NULL,NULL,2,'/projet/tasks/list.php?leftmenu=projects','','List',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164791,'auguria',1,'','left','project',164787,NULL,NULL,4,'/projet/tasks/stats/index.php?leftmenu=projects','','Statistics',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164891,'auguria',1,'','left','project',161094,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=6','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164892,'auguria',1,'','left','project',164891,NULL,NULL,0,'/categories/card.php?action=create&type=6','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164987,'auguria',1,'','left','tools',161095,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings',NULL,'mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(164988,'auguria',1,'','left','tools',164987,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing',NULL,'mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(164989,'auguria',1,'','left','tools',164987,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List',NULL,'mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(165187,'auguria',1,'','left','tools',161095,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport',NULL,'exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2017-08-30 15:14:30'),(165188,'auguria',1,'','left','tools',165187,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport',NULL,'exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2017-08-30 15:14:30'),(165217,'auguria',1,'','left','tools',161095,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport',NULL,'exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2017-08-30 15:14:30'),(165218,'auguria',1,'','left','tools',165217,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport',NULL,'exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2017-08-30 15:14:30'),(165287,'auguria',1,'','left','members',161100,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members',NULL,'members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165288,'auguria',1,'','left','members',165287,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember',NULL,'members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165289,'auguria',1,'','left','members',165287,NULL,NULL,1,'/adherents/list.php','','List',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165290,'auguria',1,'','left','members',165289,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165291,'auguria',1,'','left','members',165289,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165292,'auguria',1,'','left','members',165289,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165293,'auguria',1,'','left','members',165289,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165294,'auguria',1,'','left','members',165289,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165295,'auguria',1,'','left','members',165287,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165387,'auguria',1,'','left','members',161100,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions',NULL,'compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165388,'auguria',1,'','left','members',165387,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription',NULL,'compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165389,'auguria',1,'','left','members',165387,NULL,NULL,1,'/adherents/subscription/list.php?leftmenu=members','','List',NULL,'compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165390,'auguria',1,'','left','members',165387,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165589,'auguria',1,'','left','members',165287,NULL,NULL,9,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd',NULL,'members',1,'','$user->rights->adherent->export','! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && $conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165590,'auguria',1,'','left','members',165287,NULL,NULL,10,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards',NULL,'members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165687,'auguria',1,'','left','hrm',161102,NULL,NULL,1,'/user/index.php?leftmenu=hrm&mode=employee','','Employees',NULL,'hrm',0,'hrm','$user->rights->hrm->employee->read','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165688,'auguria',1,'','left','hrm',165687,NULL,NULL,1,'/user/card.php?action=create&employee=1','','NewEmployee',NULL,'hrm',1,'','$user->rights->hrm->employee->write','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165689,'auguria',1,'','left','hrm',165687,NULL,NULL,2,'/user/index.php?$leftmenu=hrm&mode=employee&contextpage=employeelist','','List',NULL,'hrm',1,'','$user->rights->hrm->employee->read','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165787,'auguria',1,'','left','members',161100,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes',NULL,'members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165788,'auguria',1,'','left','members',165787,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New',NULL,'members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165789,'auguria',1,'','left','members',165787,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List',NULL,'members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(166087,'auguria',1,'','left','hrm',161102,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu',NULL,'holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166088,'auguria',1,'','left','hrm',166087,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP',NULL,'holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166089,'auguria',1,'','left','hrm',166087,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List',NULL,'holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166090,'auguria',1,'','left','hrm',166089,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove',NULL,'trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166091,'auguria',1,'','left','hrm',166087,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP',NULL,'holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166092,'auguria',1,'','left','hrm',166087,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP',NULL,'holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166187,'auguria',1,'','left','commercial',161092,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders',NULL,'orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166188,'auguria',1,'','left','commercial',166187,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder',NULL,'orders',1,'','$user->rights->fournisseur->commande->creer','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166189,'auguria',1,'','left','commercial',166187,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&search_status=0','','List',NULL,'orders',1,'','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166195,'auguria',1,'','left','commercial',166187,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics',NULL,'orders',1,'','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166287,'auguria',1,'','left','members',161100,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(166288,'auguria',1,'','left','members',166287,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(166387,'auguria',1,'','left','hrm',161102,NULL,NULL,5,'/expensereport/index.php?leftmenu=expensereport','','TripsAndExpenses',NULL,'trips',0,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166388,'auguria',1,'','left','hrm',166387,NULL,NULL,1,'/expensereport/card.php?action=create&leftmenu=expensereport','','New',NULL,'trips',1,'','$user->rights->expensereport->creer','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166389,'auguria',1,'','left','hrm',166387,NULL,NULL,2,'/expensereport/list.php?leftmenu=expensereport','','List',NULL,'trips',1,'','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166390,'auguria',1,'','left','hrm',166389,NULL,NULL,2,'/expensereport/list.php?search_status=2&leftmenu=expensereport','','ListToApprove',NULL,'trips',2,'','$user->rights->expensereport->approve','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166391,'auguria',1,'','left','hrm',166387,NULL,NULL,2,'/expensereport/stats/index.php?leftmenu=expensereport','','Statistics',NULL,'trips',1,'','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(167134,'all',1,'agenda','top','agenda',0,NULL,NULL,86,'/comm/action/index.php','','TMenuAgenda','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167135,'all',1,'agenda','left','agenda',167134,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167136,'all',1,'agenda','left','agenda',167135,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167137,'all',1,'agenda','left','agenda',167135,NULL,NULL,140,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda','','Calendar','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167138,'all',1,'agenda','left','agenda',167137,NULL,NULL,141,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167139,'all',1,'agenda','left','agenda',167137,NULL,NULL,142,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167140,'all',1,'agenda','left','agenda',167137,NULL,NULL,143,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1','','MenuToDoActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-02-07 13:38:16'),(167141,'all',1,'agenda','left','agenda',167137,NULL,NULL,144,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1','','MenuDoneActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-02-07 13:38:16'),(167142,'all',1,'agenda','left','agenda',167135,NULL,NULL,110,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda','','List','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167143,'all',1,'agenda','left','agenda',167142,NULL,NULL,111,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167144,'all',1,'agenda','left','agenda',167142,NULL,NULL,112,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167145,'all',1,'agenda','left','agenda',167142,NULL,NULL,113,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1','','MenuToDoActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-02-07 13:38:16'),(167146,'all',1,'agenda','left','agenda',167142,NULL,NULL,114,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1','','MenuDoneActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-02-07 13:38:16'),(167147,'all',1,'agenda','left','agenda',167135,NULL,NULL,160,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2022-02-07 13:38:16'),(167148,'all',1,'agenda','left','agenda',167135,NULL,NULL,170,'/categories/index.php?mainmenu=agenda&leftmenu=agenda&type=10','','Categories','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->categorie->enabled',2,'2022-02-07 13:38:16'),(167149,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',0,'2022-02-07 13:38:17'),(167150,'all',1,'barcode','left','home',-1,'admintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=admintools','','MassBarcodeInit','','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && preg_match(\'/^(admintools|all)/\',$leftmenu)',0,'2022-02-07 13:38:17'),(167151,'all',1,'cron','left','home',-1,'admintools','home',200,'/cron/list.php?leftmenu=admintools','','CronList','','cron',NULL,NULL,'$user->rights->cron->read','$conf->cron->enabled && preg_match(\'/^(admintools|all)/\', $leftmenu)',2,'2022-02-07 13:38:17'),(167153,'all',1,'ecm','top','ecm',0,NULL,NULL,82,'/ecm/index.php','','MenuECM','','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2022-02-07 13:38:17'),(167154,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2022-02-07 13:38:17'),(167155,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2022-02-07 13:38:17'),(167156,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','($user->rights->ecm->read || $user->rights->ecm->upload) && ! empty($conf->global->ECM_AUTO_TREE_ENABLED)',2,'2022-02-07 13:38:17'),(167157,'all',1,'margins','left','billing',-1,NULL,'billing',100,'/margin/index.php','','Margins','','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2022-02-07 13:38:17'),(167158,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','','opensurvey',NULL,'opensurvey','$user->rights->opensurvey->read','$conf->opensurvey->enabled',0,'2022-02-07 13:38:17'),(167159,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2022-02-07 13:38:17'),(167160,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','','opensurvey',NULL,'opensurvey_list','$user->rights->opensurvey->read','$conf->opensurvey->enabled',0,'2022-02-07 13:38:17'),(167161,'all',1,'printing','left','home',-1,'admintools','home',300,'/printing/index.php?mainmenu=home&leftmenu=admintools','','MenuDirectPrinting','','printing',NULL,NULL,'$user->rights->printing->read','$conf->printing->enabled && preg_match(\'/^(admintools|all)/\', $leftmenu)',0,'2022-02-07 13:38:17'),(167162,'all',1,'recruitment','left','hrm',-1,NULL,'hrm',1001,'/recruitment/recruitmentindex.php','','Recruitment','','recruitment',NULL,'recruitmentjobposition','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-02-07 13:38:18'),(167163,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1002,'/recruitment/recruitmentjobposition_card.php?action=create','','NewPositionToBeFilled','','recruitment',NULL,'recruitment_recruitmentjobposition_new','$user->rights->recruitment->recruitmentjobposition->write','$conf->recruitment->enabled',2,'2022-02-07 13:38:18'),(167164,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1003,'/recruitment/recruitmentjobposition_list.php','','ListOfPositionsToBeFilled','','recruitment',NULL,'recruitment_recruitmentjobposition_list','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-02-07 13:38:18'),(167165,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1004,'/recruitment/recruitmentcandidature_card.php?action=create','','NewCandidature','','recruitment',NULL,'recruitment_recruitmentcandidature_new','$user->rights->recruitment->recruitmentjobposition->write','$conf->recruitment->enabled',2,'2022-02-07 13:38:18'),(167166,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1005,'/recruitment/recruitmentcandidature_list.php','','ListOfCandidatures','','recruitment',NULL,'recruitment_recruitmentcandidature_list','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-02-07 13:38:18'),(167167,'all',1,'resource','left','tools',-1,NULL,'tools',100,'/resource/list.php','','MenuResourceIndex','','resource',NULL,'resource','$user->rights->resource->read','1',0,'2022-02-07 13:38:18'),(167168,'all',1,'resource','left','tools',-1,'resource','tools',101,'/resource/card.php?action=create','','MenuResourceAdd','','resource',NULL,'resource_add','$user->rights->resource->write','1',0,'2022-02-07 13:38:18'),(167169,'all',1,'resource','left','tools',-1,'resource','tools',102,'/resource/list.php','','List','','resource',NULL,'resource_list','$user->rights->resource->read','1',0,'2022-02-07 13:38:18'),(167170,'all',1,'stripe','left','bank',-1,NULL,'bank',100,'','','StripeAccount','','stripe',NULL,'stripe','$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-02-07 13:38:18'),(167171,'all',1,'stripe','left','bank',-1,'stripe','bank',102,'/stripe/charge.php','','StripeChargeList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-02-07 13:38:18'),(167172,'all',1,'stripe','left','bank',-1,'stripe','bank',102,'/stripe/transaction.php','','StripeTransactionList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-02-07 13:38:18'),(167173,'all',1,'stripe','left','bank',-1,'stripe','bank',103,'/stripe/payout.php','','StripePayoutList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-02-07 13:38:18'),(167174,'all',1,'ticket','left','ticket',-1,NULL,'ticket',101,'/ticket/index.php','','Ticket','','ticket',NULL,'ticket','$user->rights->ticket->read','$conf->ticket->enabled',2,'2022-02-07 13:38:18'),(167175,'all',1,'ticket','left','ticket',-1,'ticket','ticket',102,'/ticket/card.php?action=create','','NewTicket','','ticket',NULL,NULL,'$user->rights->ticket->write','$conf->ticket->enabled',2,'2022-02-07 13:38:18'),(167176,'all',1,'ticket','left','ticket',-1,'ticket','ticket',103,'/ticket/list.php?search_fk_status=non_closed','','List','','ticket',NULL,'ticketlist','$user->rights->ticket->read','$conf->ticket->enabled',2,'2022-02-07 13:38:18'),(167177,'all',1,'ticket','left','ticket',-1,'ticket','ticket',105,'/ticket/list.php?mode=mine&search_fk_status=non_closed','','MenuTicketMyAssign','','ticket',NULL,'ticketmy','$user->rights->ticket->read','$conf->ticket->enabled',0,'2022-02-07 13:38:18'),(167178,'all',1,'ticket','left','ticket',-1,'ticket','ticket',107,'/ticket/stats/index.php','','Statistics','','ticket',NULL,NULL,'$user->rights->ticket->read','$conf->ticket->enabled',0,'2022-02-07 13:38:18'),(167179,'all',1,'ticket','left','ticket',-1,'ticket','ticket',107,'/categories/index.php?type=12','','Categories','','ticket',NULL,NULL,'$user->rights->ticket->read','$conf->categorie->enabled',0,'2022-02-07 13:38:18'),(167180,'all',1,'takepos','top','takepos',0,NULL,NULL,1001,'/takepos/index.php','takepos','PointOfSaleShort','','cashdesk',NULL,NULL,'$user->rights->takepos->run','$conf->takepos->enabled',2,'2022-02-07 13:38:18'),(167181,'all',1,'website','top','website',0,NULL,NULL,100,'/website/index.php','','WebSites','','website',NULL,NULL,'$user->rights->website->read','$conf->website->enabled',2,'2022-02-07 13:38:18'),(167182,'all',1,'knowledgemanagement','left','ticket',-1,NULL,'ticket',101,'/knowledgemanagement/knowledgerecord_list.php','','MenuKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_knowledgerecord','$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167183,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',111,'/knowledgemanagement/knowledgerecord_list.php','','ListKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_list','$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167184,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',110,'/knowledgemanagement/knowledgerecord_card.php?action=create','','NewKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_new','$user->rights->knowledgemanagement->knowledgerecord->write','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167185,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',112,'/categories/index.php?type=13','','Categories','','knowledgemanagement',NULL,NULL,'$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',0,'2022-02-07 13:39:27'),(167186,'all',1,'blockedlog','left','tools',-1,NULL,'tools',200,'/blockedlog/admin/blockedlog_list.php?mainmenu=tools&leftmenu=blockedlogbrowser','','BrowseBlockedLog','','blockedlog',NULL,'blockedlogbrowser','$user->rights->blockedlog->read','$conf->blockedlog->enabled',2,'2022-02-07 14:32:50'); +INSERT INTO `llx_menu` VALUES (103094,'all',2,'agenda','top','agenda',0,NULL,NULL,100,'/comm/action/index.php','','Agenda',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103095,'all',2,'agenda','left','agenda',103094,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103096,'all',2,'agenda','left','agenda',103095,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction',NULL,'commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103097,'all',2,'agenda','left','agenda',103095,NULL,NULL,102,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Calendar',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103098,'all',2,'agenda','left','agenda',103097,NULL,NULL,103,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103099,'all',2,'agenda','left','agenda',103097,NULL,NULL,104,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103100,'all',2,'agenda','left','agenda',103097,NULL,NULL,105,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103101,'all',2,'agenda','left','agenda',103097,NULL,NULL,106,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103102,'all',2,'agenda','left','agenda',103095,NULL,NULL,112,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda','','List',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103103,'all',2,'agenda','left','agenda',103102,NULL,NULL,113,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103104,'all',2,'agenda','left','agenda',103102,NULL,NULL,114,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103105,'all',2,'agenda','left','agenda',103102,NULL,NULL,115,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=todo','','MenuToDoActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103106,'all',2,'agenda','left','agenda',103102,NULL,NULL,116,'/comm/action/listactions.php?mainmenu=agenda&leftmenu=agenda&status=done','','MenuDoneActions',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2015-03-13 15:29:19'),(103107,'all',2,'agenda','left','agenda',103095,NULL,NULL,120,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings',NULL,'agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2015-03-13 15:29:19'),(103134,'all',2,'opensurvey','top','opensurvey',0,NULL,NULL,200,'/opensurvey/index.php','','Surveys',NULL,'opensurvey',NULL,NULL,'$user->rights->opensurvey->survey->read','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103135,'all',2,'opensurvey','left','opensurvey',-1,NULL,'opensurvey',200,'/opensurvey/index.php?mainmenu=opensurvey&leftmenu=opensurvey','','Survey',NULL,'opensurvey@opensurvey',NULL,'opensurvey','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103136,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',210,'/opensurvey/public/index.php','_blank','NewSurvey',NULL,'opensurvey@opensurvey',NULL,'opensurvey_new','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(103137,'all',2,'opensurvey','left','opensurvey',-1,'opensurvey','opensurvey',220,'/opensurvey/list.php','','List',NULL,'opensurvey@opensurvey',NULL,'opensurvey_list','','$conf->opensurvey->enabled',0,'2015-03-13 20:33:42'),(161088,'auguria',1,'','top','home',0,NULL,NULL,10,'/index.php?mainmenu=home&leftmenu=','','Home',NULL,'',-1,'','','1',2,'2017-08-30 15:14:30'),(161089,'auguria',1,'societe|fournisseur','top','companies',0,NULL,NULL,20,'/societe/index.php?mainmenu=companies&leftmenu=','','ThirdParties',NULL,'companies',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','( ! empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ! empty($conf->fournisseur->enabled)',2,'2017-08-30 15:14:30'),(161090,'auguria',1,'product|service','top','products',0,NULL,NULL,30,'/product/index.php?mainmenu=products&leftmenu=','','Products/Services',NULL,'products',-1,'','$user->rights->produit->lire||$user->rights->service->lire','$conf->product->enabled || $conf->service->enabled',0,'2017-08-30 15:14:30'),(161092,'auguria',1,'propal|commande|fournisseur|contrat|ficheinter','top','commercial',0,NULL,NULL,40,'/comm/index.php?mainmenu=commercial&leftmenu=','','Commercial',NULL,'commercial',-1,'','$user->rights->societe->lire || $user->rights->societe->contact->lire','$conf->propal->enabled || $conf->commande->enabled || $conf->supplier_order->enabled || $conf->contrat->enabled || $conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(161093,'auguria',1,'comptabilite|accounting|facture|don|tax|salaries|loan','top','accountancy',0,NULL,NULL,50,'/compta/index.php?mainmenu=accountancy&leftmenu=','','MenuFinancial',NULL,'compta',-1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->plancompte->lire || $user->rights->facture->lire|| $user->rights->don->lire || $user->rights->tax->charges->lire || $user->rights->salaries->read || $user->rights->loan->read','$conf->comptabilite->enabled || $conf->accounting->enabled || $conf->facture->enabled || $conf->don->enabled || $conf->tax->enabled || $conf->salaries->enabled || $conf->supplier_invoice->enabled || $conf->loan->enabled',2,'2017-08-30 15:14:30'),(161094,'auguria',1,'projet','top','project',0,NULL,NULL,70,'/projet/index.php?mainmenu=project&leftmenu=','','Projects',NULL,'projects',-1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(161095,'auguria',1,'mailing|export|import|opensurvey|resource','top','tools',0,NULL,NULL,90,'/core/tools.php?mainmenu=tools&leftmenu=','','Tools',NULL,'other',-1,'','$user->rights->mailing->lire || $user->rights->export->lire || $user->rights->import->run || $user->rights->opensurvey->read || $user->rights->resource->read','$conf->mailing->enabled || $conf->export->enabled || $conf->import->enabled || $conf->opensurvey->enabled || $conf->resource->enabled',2,'2017-08-30 15:14:30'),(161101,'auguria',1,'banque|prelevement','top','bank',0,NULL,NULL,60,'/compta/bank/index.php?mainmenu=bank&leftmenu=bank','','MenuBankCash',NULL,'banks',-1,'','$user->rights->banque->lire || $user->rights->prelevement->bons->lire','$conf->banque->enabled || $conf->prelevement->enabled',0,'2017-08-30 15:14:30'),(161102,'auguria',1,'hrm|holiday|deplacement|expensereport','top','hrm',0,NULL,NULL,80,'/hrm/index.php?mainmenu=hrm&leftmenu=','','HRM',NULL,'holiday',-1,'','$user->rights->hrm->employee->read || $user->rights->holiday->write || $user->rights->deplacement->lire || $user->rights->expensereport->lire','$conf->hrm->enabled || $conf->holiday->enabled || $conf->deplacement->enabled || $conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(161177,'auguria',1,'','left','home',161088,NULL,NULL,0,'/index.php','','MyDashboard',NULL,'',0,'','','1',2,'2017-08-30 15:14:30'),(161187,'auguria',1,'','left','home',161088,NULL,NULL,1,'/admin/index.php?leftmenu=setup','','Setup',NULL,'admin',0,'setup','','$user->admin',2,'2017-08-30 15:14:30'),(161188,'auguria',1,'','left','home',161187,NULL,NULL,1,'/admin/company.php?leftmenu=setup','','MenuCompanySetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161189,'auguria',1,'','left','home',161187,NULL,NULL,4,'/admin/ihm.php?leftmenu=setup','','GUISetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161190,'auguria',1,'','left','home',161187,NULL,NULL,2,'/admin/modules.php?leftmenu=setup','','Modules',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161191,'auguria',1,'','left','home',161187,NULL,NULL,6,'/admin/boxes.php?leftmenu=setup','','Boxes',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161192,'auguria',1,'','left','home',161187,NULL,NULL,3,'/admin/menus.php?leftmenu=setup','','Menus',NULL,'admin',1,'','','$leftmenu==\'setup\'',2,'2017-09-06 08:29:47'),(161193,'auguria',1,'','left','home',161187,NULL,NULL,7,'/admin/delais.php?leftmenu=setup','','Alerts',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161194,'auguria',1,'','left','home',161187,NULL,NULL,10,'/admin/pdf.php?leftmenu=setup','','PDF',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161195,'auguria',1,'','left','home',161187,NULL,NULL,8,'/admin/security_other.php?leftmenu=setup','','Security',NULL,'admin',1,'','','$leftmenu==\'setup\'',2,'2017-09-06 08:29:36'),(161196,'auguria',1,'','left','home',161187,NULL,NULL,11,'/admin/mails.php?leftmenu=setup','','Emails',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161197,'auguria',1,'','left','home',161187,NULL,NULL,9,'/admin/limits.php?leftmenu=setup','','MenuLimits',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161198,'auguria',1,'','left','home',161187,NULL,NULL,13,'/admin/dict.php?leftmenu=setup','','Dictionary',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161199,'auguria',1,'','left','home',161187,NULL,NULL,14,'/admin/const.php?leftmenu=setup','','OtherSetup',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161200,'auguria',1,'','left','home',161187,NULL,NULL,12,'/admin/sms.php?leftmenu=setup','','SMS',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161201,'auguria',1,'','left','home',161187,NULL,NULL,4,'/admin/translation.php?leftmenu=setup','','Translation',NULL,'admin',1,'','','$leftmenu==\"setup\"',2,'2017-08-30 15:14:30'),(161288,'auguria',1,'','left','home',161387,NULL,NULL,0,'/admin/system/dolibarr.php?leftmenu=admintools','','InfoDolibarr',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161289,'auguria',1,'','left','home',161288,NULL,NULL,2,'/admin/system/modules.php?leftmenu=admintools','','Modules',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161290,'auguria',1,'','left','home',161288,NULL,NULL,3,'/admin/triggers.php?leftmenu=admintools','','Triggers',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161291,'auguria',1,'','left','home',161288,NULL,NULL,4,'/admin/system/filecheck.php?leftmenu=admintools','','FileCheck',NULL,'admin',2,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161292,'auguria',1,'','left','home',161387,NULL,NULL,1,'/admin/system/browser.php?leftmenu=admintools','','InfoBrowser',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161293,'auguria',1,'','left','home',161387,NULL,NULL,2,'/admin/system/os.php?leftmenu=admintools','','InfoOS',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161294,'auguria',1,'','left','home',161387,NULL,NULL,3,'/admin/system/web.php?leftmenu=admintools','','InfoWebServer',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161295,'auguria',1,'','left','home',161387,NULL,NULL,4,'/admin/system/phpinfo.php?leftmenu=admintools','','InfoPHP',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161297,'auguria',1,'','left','home',161387,NULL,NULL,5,'/admin/system/database.php?leftmenu=admintools','','InfoDatabase',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161387,'auguria',1,'','left','home',161088,NULL,NULL,2,'/admin/tools/index.php?leftmenu=admintools','','AdminTools',NULL,'admin',0,'admintools','','$user->admin',2,'2017-08-30 15:14:30'),(161388,'auguria',1,'','left','home',161387,NULL,NULL,6,'/admin/tools/dolibarr_export.php?leftmenu=admintools','','Backup',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161389,'auguria',1,'','left','home',161387,NULL,NULL,7,'/admin/tools/dolibarr_import.php?leftmenu=admintools','','Restore',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161392,'auguria',1,'','left','home',161387,NULL,NULL,8,'/admin/tools/update.php?leftmenu=admintools','','MenuUpgrade',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161393,'auguria',1,'','left','home',161387,NULL,NULL,9,'/admin/tools/eaccelerator.php?leftmenu=admintools','','EAccelerator',NULL,'admin',1,'','','$leftmenu==\"admintools\" && function_exists(\"eaccelerator_info\")',2,'2017-08-30 15:14:30'),(161394,'auguria',1,'','left','home',161387,NULL,NULL,10,'/admin/tools/listevents.php?leftmenu=admintools','','Audit',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161395,'auguria',1,'','left','home',161387,NULL,NULL,11,'/admin/tools/listsessions.php?leftmenu=admintools','','Sessions',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161396,'auguria',1,'','left','home',161387,NULL,NULL,12,'/admin/tools/purge.php?leftmenu=admintools','','Purge',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161398,'auguria',1,'','left','home',161387,NULL,NULL,14,'/admin/system/about.php?leftmenu=admintools','','ExternalResources',NULL,'admin',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161407,'auguria',1,'','left','home',161387,NULL,NULL,15,'/product/admin/product_tools.php?mainmenu=home&leftmenu=admintools','','ProductVatMassChange',NULL,'products',1,'','','$leftmenu==\"admintools\"',2,'2017-08-30 15:14:30'),(161487,'auguria',1,'','left','home',161088,NULL,NULL,4,'/user/home.php?leftmenu=users','','MenuUsersAndGroups',NULL,'users',0,'users','','1',2,'2017-08-30 15:14:30'),(161488,'auguria',1,'','left','home',161487,NULL,NULL,0,'/user/index.php?leftmenu=users','','Users',NULL,'users',1,'','$user->rights->user->user->lire || $user->admin','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161489,'auguria',1,'','left','home',161488,NULL,NULL,0,'/user/card.php?leftmenu=users&action=create','','NewUser',NULL,'users',2,'','($user->rights->user->user->creer || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161490,'auguria',1,'','left','home',161487,NULL,NULL,1,'/user/group/index.php?leftmenu=users','','Groups',NULL,'users',1,'','(($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->read:$user->rights->user->user->lire) || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161491,'auguria',1,'','left','home',161490,NULL,NULL,0,'/user/group/card.php?leftmenu=users&action=create','','NewGroup',NULL,'users',2,'','(($conf->global->MAIN_USE_ADVANCED_PERMS?$user->rights->user->group_advance->write:$user->rights->user->user->creer) || $user->admin) && !(! empty($conf->multicompany->enabled) && $conf->entity > 1 && $conf->global->MULTICOMPANY_TRANSVERSE_MODE)','$leftmenu==\"users\"',2,'2017-08-30 15:14:30'),(161587,'auguria',1,'','left','companies',161089,NULL,NULL,0,'/societe/index.php?leftmenu=thirdparties','','ThirdParty',NULL,'companies',0,'thirdparties','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161588,'auguria',1,'','left','companies',161587,NULL,NULL,0,'/societe/card.php?action=create','','MenuNewThirdParty',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161589,'auguria',1,'','left','companies',161587,NULL,NULL,0,'/societe/list.php?action=create','','List',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161590,'auguria',1,'','left','companies',161587,NULL,NULL,5,'/societe/list.php?type=f&leftmenu=suppliers','','ListSuppliersShort',NULL,'suppliers',1,'','$user->rights->societe->lire && $user->rights->fournisseur->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161591,'auguria',1,'','left','companies',161590,NULL,NULL,0,'/societe/card.php?leftmenu=supplier&action=create&type=f','','NewSupplier',NULL,'suppliers',2,'','$user->rights->societe->creer','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161593,'auguria',1,'','left','companies',161587,NULL,NULL,3,'/societe/list.php?type=p&leftmenu=prospects','','ListProspectsShort',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161594,'auguria',1,'','left','companies',161593,NULL,NULL,0,'/societe/card.php?leftmenu=prospects&action=create&type=p','','MenuNewProspect',NULL,'companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161596,'auguria',1,'','left','companies',161587,NULL,NULL,4,'/societe/list.php?type=c&leftmenu=customers','','ListCustomersShort',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161597,'auguria',1,'','left','companies',161596,NULL,NULL,0,'/societe/card.php?leftmenu=customers&action=create&type=c','','MenuNewCustomer',NULL,'companies',2,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161687,'auguria',1,'','left','companies',161089,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','ContactsAddresses',NULL,'companies',0,'contacts','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161688,'auguria',1,'','left','companies',161687,NULL,NULL,0,'/contact/card.php?leftmenu=contacts&action=create','','NewContactAddress',NULL,'companies',1,'','$user->rights->societe->creer','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161689,'auguria',1,'','left','companies',161687,NULL,NULL,1,'/contact/list.php?leftmenu=contacts','','List',NULL,'companies',1,'','$user->rights->societe->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161691,'auguria',1,'','left','companies',161689,NULL,NULL,1,'/contact/list.php?leftmenu=contacts&type=p','','ThirdPartyProspects',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161692,'auguria',1,'','left','companies',161689,NULL,NULL,2,'/contact/list.php?leftmenu=contacts&type=c','','ThirdPartyCustomers',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161693,'auguria',1,'','left','companies',161689,NULL,NULL,3,'/contact/list.php?leftmenu=contacts&type=f','','ThirdPartySuppliers',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled && $conf->fournisseur->enabled',2,'2017-08-30 15:14:30'),(161694,'auguria',1,'','left','companies',161689,NULL,NULL,4,'/contact/list.php?leftmenu=contacts&type=o','','Others',NULL,'companies',2,'','$user->rights->societe->contact->lire','$conf->societe->enabled',2,'2017-08-30 15:14:30'),(161737,'auguria',1,'','left','companies',161089,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=1','','SuppliersCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161738,'auguria',1,'','left','companies',161737,NULL,NULL,0,'/categories/card.php?action=create&type=1','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161747,'auguria',1,'','left','companies',161089,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=2','','CustomersProspectsCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161748,'auguria',1,'','left','companies',161747,NULL,NULL,0,'/categories/card.php?action=create&type=2','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->fournisseur->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161757,'auguria',1,'','left','companies',161089,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=4','','ContactCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(161758,'auguria',1,'','left','companies',161757,NULL,NULL,0,'/categories/card.php?action=create&type=4','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->societe->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(162187,'auguria',1,'','left','commercial',161092,NULL,NULL,4,'/comm/propal/index.php?leftmenu=propals','','Prop',NULL,'propal',0,'propals','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162188,'auguria',1,'','left','commercial',162187,NULL,NULL,0,'/comm/propal/card.php?action=create&leftmenu=propals','','NewPropal',NULL,'propal',1,'','$user->rights->propale->creer','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162189,'auguria',1,'','left','commercial',162187,NULL,NULL,1,'/comm/propal/list.php?leftmenu=propals','','List',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162190,'auguria',1,'','left','commercial',162189,NULL,NULL,2,'/comm/propal/list.php?leftmenu=propals&search_status=0','','PropalsDraft',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162191,'auguria',1,'','left','commercial',162189,NULL,NULL,3,'/comm/propal/list.php?leftmenu=propals&search_status=1','','PropalsOpened',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162192,'auguria',1,'','left','commercial',162189,NULL,NULL,4,'/comm/propal/list.php?leftmenu=propals&search_status=2','','PropalStatusSigned',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162193,'auguria',1,'','left','commercial',162189,NULL,NULL,5,'/comm/propal/list.php?leftmenu=propals&search_status=3','','PropalStatusNotSigned',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162194,'auguria',1,'','left','commercial',162189,NULL,NULL,6,'/comm/propal/list.php?leftmenu=propals&search_status=4','','PropalStatusBilled',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled && $leftmenu==\"propals\"',2,'2017-08-30 15:14:30'),(162197,'auguria',1,'','left','commercial',162187,NULL,NULL,4,'/comm/propal/stats/index.php?leftmenu=propals','','Statistics',NULL,'propal',1,'','$user->rights->propale->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(162287,'auguria',1,'','left','commercial',161092,NULL,NULL,5,'/commande/index.php?leftmenu=orders','','CustomersOrders',NULL,'orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162288,'auguria',1,'','left','commercial',162287,NULL,NULL,0,'/commande/card.php?action=create&leftmenu=orders','','NewOrder',NULL,'orders',1,'','$user->rights->commande->creer','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162289,'auguria',1,'','left','commercial',162287,NULL,NULL,1,'/commande/list.php?leftmenu=orders','','List',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162290,'auguria',1,'','left','commercial',162289,NULL,NULL,2,'/commande/list.php?leftmenu=orders&search_status=0','','StatusOrderDraftShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162291,'auguria',1,'','left','commercial',162289,NULL,NULL,3,'/commande/list.php?leftmenu=orders&search_status=1','','StatusOrderValidated',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162292,'auguria',1,'','left','commercial',162289,NULL,NULL,4,'/commande/list.php?leftmenu=orders&search_status=2','','StatusOrderOnProcessShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162293,'auguria',1,'','left','commercial',162289,NULL,NULL,5,'/commande/list.php?leftmenu=orders&search_status=3','','StatusOrderToBill',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162294,'auguria',1,'','left','commercial',162289,NULL,NULL,6,'/commande/list.php?leftmenu=orders&search_status=4','','StatusOrderProcessed',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162295,'auguria',1,'','left','commercial',162289,NULL,NULL,7,'/commande/list.php?leftmenu=orders&search_status=-1','','StatusOrderCanceledShort',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled && $leftmenu==\"orders\"',2,'2017-08-30 15:14:30'),(162296,'auguria',1,'','left','commercial',162287,NULL,NULL,4,'/commande/stats/index.php?leftmenu=orders','','Statistics',NULL,'orders',1,'','$user->rights->commande->lire','$conf->commande->enabled',2,'2017-08-30 15:14:30'),(162387,'auguria',1,'','left','commercial',161090,NULL,NULL,6,'/expedition/index.php?leftmenu=sendings','','Shipments',NULL,'sendings',0,'sendings','$user->rights->expedition->lire','$conf->expedition->enabled',2,'2017-08-30 15:14:30'),(162388,'auguria',1,'','left','commercial',162387,NULL,NULL,0,'/expedition/card.php?action=create2&leftmenu=sendings','','NewSending',NULL,'sendings',1,'','$user->rights->expedition->creer','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162389,'auguria',1,'','left','commercial',162387,NULL,NULL,1,'/expedition/list.php?leftmenu=sendings','','List',NULL,'sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162390,'auguria',1,'','left','commercial',162387,NULL,NULL,2,'/expedition/stats/index.php?leftmenu=sendings','','Statistics',NULL,'sendings',1,'','$user->rights->expedition->lire','$conf->expedition->enabled && $leftmenu==\"sendings\"',2,'2017-08-30 15:14:30'),(162487,'auguria',1,'','left','commercial',161092,NULL,NULL,7,'/contrat/index.php?leftmenu=contracts','','Contracts',NULL,'contracts',0,'contracts','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162488,'auguria',1,'','left','commercial',162487,NULL,NULL,0,'/contrat/card.php?&action=create&leftmenu=contracts','','NewContract',NULL,'contracts',1,'','$user->rights->contrat->creer','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162489,'auguria',1,'','left','commercial',162487,NULL,NULL,1,'/contrat/list.php?leftmenu=contracts','','List',NULL,'contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162490,'auguria',1,'','left','commercial',162487,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts','','MenuServices',NULL,'contracts',1,'','$user->rights->contrat->lire','$conf->contrat->enabled',2,'2017-08-30 15:14:30'),(162491,'auguria',1,'','left','commercial',162490,NULL,NULL,0,'/contrat/services.php?leftmenu=contracts&mode=0','','MenuInactiveServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162492,'auguria',1,'','left','commercial',162490,NULL,NULL,1,'/contrat/services.php?leftmenu=contracts&mode=4','','MenuRunningServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162493,'auguria',1,'','left','commercial',162490,NULL,NULL,2,'/contrat/services.php?leftmenu=contracts&mode=4&filter=expired','','MenuExpiredServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162494,'auguria',1,'','left','commercial',162490,NULL,NULL,3,'/contrat/services.php?leftmenu=contracts&mode=5','','MenuClosedServices',NULL,'contracts',2,'','$user->rights->contrat->lire','$conf->contrat->enabled && $leftmenu==\"contracts\"',2,'2017-08-30 15:14:30'),(162587,'auguria',1,'','left','commercial',161092,NULL,NULL,8,'/fichinter/list.php?leftmenu=ficheinter','','Interventions',NULL,'interventions',0,'ficheinter','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162588,'auguria',1,'','left','commercial',162587,NULL,NULL,0,'/fichinter/card.php?action=create&leftmenu=ficheinter','','NewIntervention',NULL,'interventions',1,'','$user->rights->ficheinter->creer','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162589,'auguria',1,'','left','commercial',162587,NULL,NULL,1,'/fichinter/list.php?leftmenu=ficheinter','','List',NULL,'interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162590,'auguria',1,'','left','commercial',162587,NULL,NULL,2,'/fichinter/stats/index.php?leftmenu=ficheinter','','Statistics',NULL,'interventions',1,'','$user->rights->ficheinter->lire','$conf->ficheinter->enabled',2,'2017-08-30 15:14:30'),(162687,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/fourn/facture/list.php?leftmenu=suppliers_bills','','BillsSuppliers',NULL,'bills',0,'supplier_bills','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162688,'auguria',1,'','left','accountancy',162687,NULL,NULL,0,'/fourn/facture/card.php?action=create&leftmenu=suppliers_bills','','NewBill',NULL,'bills',1,'','$user->rights->fournisseur->facture->creer','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162689,'auguria',1,'','left','accountancy',162687,NULL,NULL,1,'/fourn/facture/list.php?leftmenu=suppliers_bills','','List',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162690,'auguria',1,'','left','accountancy',162687,NULL,NULL,2,'/fourn/facture/paiement.php?leftmenu=suppliers_bills','','Payments',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162691,'auguria',1,'','left','accountancy',162687,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills&mode=supplier','','Statistics',NULL,'bills',1,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162692,'auguria',1,'','left','accountancy',162690,NULL,NULL,1,'/fourn/facture/rapport.php?leftmenu=suppliers_bills','','Reporting',NULL,'bills',2,'','$user->rights->fournisseur->facture->lire','$conf->supplier_invoice->enabled',2,'2017-08-30 15:14:30'),(162787,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills','','BillsCustomers',NULL,'bills',0,'customer_bills','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162788,'auguria',1,'','left','accountancy',162787,NULL,NULL,3,'/compta/facture/card.php?action=create&leftmenu=customers_bills','','NewBill',NULL,'bills',1,'','$user->rights->facture->creer','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162789,'auguria',1,'','left','accountancy',162787,NULL,NULL,5,'/compta/facture/fiche-rec.php?leftmenu=customers_bills','','ListOfTemplates',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162791,'auguria',1,'','left','accountancy',162787,NULL,NULL,6,'/compta/paiement/list.php?leftmenu=customers_bills','','Payments',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162792,'auguria',1,'','left','accountancy',162787,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills','','List',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162797,'auguria',1,'','left','accountancy',162791,NULL,NULL,1,'/compta/paiement/rapport.php?leftmenu=customers_bills','','Reportings',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162798,'auguria',1,'','left','accountancy',161101,NULL,NULL,9,'/compta/paiement/cheque/index.php?leftmenu=checks&mainmenu=bank','','MenuChequeDeposits',NULL,'bills',0,'checks','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162799,'auguria',1,'','left','accountancy',162798,NULL,NULL,0,'/compta/paiement/cheque/card.php?leftmenu=checks&action=new','','NewCheckDeposit',NULL,'compta',1,'','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162800,'auguria',1,'','left','accountancy',162798,NULL,NULL,1,'/compta/paiement/cheque/list.php?leftmenu=checks','','List',NULL,'bills',1,'','$user->rights->banque->lire','empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT) && ! empty($conf->banque->enabled) && (! empty($conf->facture->enabled) || ! empty($conf->global->MAIN_MENU_CHEQUE_DEPOSIT_ON))',2,'2017-08-30 15:14:30'),(162801,'auguria',1,'','left','accountancy',162787,NULL,NULL,8,'/compta/facture/stats/index.php?leftmenu=customers_bills','','Statistics',NULL,'bills',1,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162807,'auguria',1,'','left','accountancy',162792,NULL,NULL,1,'/compta/facture/list.php?leftmenu=customers_bills&search_status=0','','BillShortStatusDraft',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162808,'auguria',1,'','left','accountancy',162792,NULL,NULL,2,'/compta/facture/list.php?leftmenu=customers_bills&search_status=1','','BillShortStatusNotPaid',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162809,'auguria',1,'','left','accountancy',162792,NULL,NULL,3,'/compta/facture/list.php?leftmenu=customers_bills&search_status=2','','BillShortStatusPaid',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162810,'auguria',1,'','left','accountancy',162792,NULL,NULL,4,'/compta/facture/list.php?leftmenu=customers_bills&search_status=3','','BillShortStatusCanceled',NULL,'bills',2,'','$user->rights->facture->lire','$conf->facture->enabled',2,'2017-08-30 15:14:30'),(162987,'auguria',1,'','left','accountancy',161093,NULL,NULL,3,'/commande/list.php?leftmenu=orders&search_status=3','','MenuOrdersToBill',NULL,'orders',0,'orders','$user->rights->commande->lire','$conf->commande->enabled',0,'2017-08-30 15:14:30'),(163087,'auguria',1,'','left','accountancy',161093,NULL,NULL,4,'/don/index.php?leftmenu=donations&mainmenu=accountancy','','Donations',NULL,'donations',0,'donations','$user->rights->don->lire','$conf->don->enabled',2,'2017-08-30 15:14:30'),(163088,'auguria',1,'','left','accountancy',163087,NULL,NULL,0,'/don/card.php?leftmenu=donations&mainmenu=accountancy&action=create','','NewDonation',NULL,'donations',1,'','$user->rights->don->creer','$conf->don->enabled && $leftmenu==\"donations\"',2,'2017-08-30 15:14:30'),(163089,'auguria',1,'','left','accountancy',163087,NULL,NULL,1,'/don/list.php?leftmenu=donations&mainmenu=accountancy','','List',NULL,'donations',1,'','$user->rights->don->lire','$conf->don->enabled && $leftmenu==\"donations\"',2,'2017-08-30 15:14:30'),(163187,'auguria',1,'','left','accountancy',161102,NULL,NULL,5,'/compta/deplacement/index.php?leftmenu=tripsandexpenses','','TripsAndExpenses',NULL,'trips',0,'tripsandexpenses','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163188,'auguria',1,'','left','accountancy',163187,NULL,NULL,1,'/compta/deplacement/card.php?action=create&leftmenu=tripsandexpenses','','New',NULL,'trips',1,'','$user->rights->deplacement->creer','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163189,'auguria',1,'','left','accountancy',163187,NULL,NULL,2,'/compta/deplacement/list.php?leftmenu=tripsandexpenses','','List',NULL,'trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163190,'auguria',1,'','left','accountancy',163187,NULL,NULL,2,'/compta/deplacement/stats/index.php?leftmenu=tripsandexpenses','','Statistics',NULL,'trips',1,'','$user->rights->deplacement->lire','$conf->deplacement->enabled',0,'2017-08-30 15:14:30'),(163287,'auguria',1,'','left','accountancy',161093,NULL,NULL,6,'/compta/charges/index.php?leftmenu=tax&mainmenu=accountancy','','MenuSpecialExpenses',NULL,'compta',0,'tax','(! empty($conf->tax->enabled) && $user->rights->tax->charges->lire) || (! empty($conf->salaries->enabled) && $user->rights->salaries->read)','$conf->tax->enabled || $conf->salaries->enabled',0,'2017-08-30 15:14:30'),(163297,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/compta/salaries/index.php?leftmenu=tax_salary&mainmenu=accountancy','','Salaries',NULL,'salaries',1,'tax_sal','$user->rights->salaries->payment->read','$conf->salaries->enabled',0,'2017-08-30 15:14:30'),(163298,'auguria',1,'','left','accountancy',163297,NULL,NULL,2,'/compta/salaries/card.php?leftmenu=tax_salary&action=create','','NewPayment',NULL,'companies',2,'','$user->rights->salaries->payment->write','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2017-08-30 15:14:30'),(163299,'auguria',1,'','left','accountancy',163297,NULL,NULL,3,'/compta/salaries/index.php?leftmenu=tax_salary','','Payments',NULL,'companies',2,'','$user->rights->salaries->payment->read','$conf->salaries->enabled && $leftmenu==\"tax_salary\"',0,'2017-08-30 15:14:30'),(163307,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/loan/index.php?leftmenu=tax_loan&mainmenu=accountancy','','Loans',NULL,'loan',1,'tax_loan','$user->rights->loan->read','$conf->loan->enabled',0,'2017-08-30 15:14:30'),(163308,'auguria',1,'','left','accountancy',163307,NULL,NULL,2,'/loan/card.php?leftmenu=tax_loan&action=create','','NewLoan',NULL,'loan',2,'','$user->rights->loan->write','$conf->loan->enabled && $leftmenu==\"tax_loan\"',0,'2017-08-30 15:14:30'),(163310,'auguria',1,'','left','accountancy',163307,NULL,NULL,4,'/loan/calc.php?leftmenu=tax_loan','','Calculator',NULL,'companies',2,'','$user->rights->loan->calc','$conf->loan->enabled && $leftmenu==\"tax_loan\" && ! empty($conf->global->LOAN_SHOW_CALCULATOR)',0,'2017-08-30 15:14:30'),(163337,'auguria',1,'','left','accountancy',163287,NULL,NULL,1,'/compta/sociales/index.php?leftmenu=tax_social','','SocialContributions',NULL,'',1,'tax_social','$user->rights->tax->charges->lire','$conf->tax->enabled',0,'2017-08-30 15:14:30'),(163338,'auguria',1,'','left','accountancy',163337,NULL,NULL,2,'/compta/sociales/card.php?leftmenu=tax_social&action=create','','MenuNewSocialContribution',NULL,'',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2017-08-30 15:14:30'),(163339,'auguria',1,'','left','accountancy',163337,NULL,NULL,3,'/compta/sociales/payments.php?leftmenu=tax_social&mainmenu=accountancy&mode=sconly','','Payments',NULL,'',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && $leftmenu==\"tax_social\"',0,'2017-08-30 15:14:30'),(163387,'auguria',1,'','left','accountancy',163287,NULL,NULL,7,'/compta/tva/index.php?leftmenu=tax_vat&mainmenu=accountancy','','VAT',NULL,'companies',1,'tax_vat','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)',0,'2017-08-30 15:14:30'),(163388,'auguria',1,'','left','accountancy',163387,NULL,NULL,0,'/compta/tva/card.php?leftmenu=tax_vat&action=create','','New',NULL,'companies',2,'','$user->rights->tax->charges->creer','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163389,'auguria',1,'','left','accountancy',163387,NULL,NULL,1,'/compta/tva/reglement.php?leftmenu=tax_vat','','List',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163390,'auguria',1,'','left','accountancy',163387,NULL,NULL,2,'/compta/tva/clients.php?leftmenu=tax_vat','','ReportByCustomers',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163391,'auguria',1,'','left','accountancy',163387,NULL,NULL,3,'/compta/tva/quadri_detail.php?leftmenu=tax_vat','','ReportByQuarter',NULL,'companies',2,'','$user->rights->tax->charges->lire','$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu==\"tax_vat\"',0,'2017-08-30 15:14:30'),(163487,'auguria',1,'','left','accountancy',161093,NULL,NULL,7,'/accountancy/index.php?leftmenu=accountancy','','MenuAccountancy',NULL,'accountancy',0,'accounting','! empty($conf->accounting->enabled) || $user->rights->accounting->bind->write || $user->rights->accounting->bind->write || $user->rights->compta->resultat->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163488,'auguria',1,'','left','accountancy',163487,NULL,NULL,2,'/accountancy/customer/index.php?leftmenu=dispatch_customer','','CustomersVentilation',NULL,'accountancy',1,'dispatch_customer','$user->rights->accounting->bind->write','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163489,'auguria',1,'','left','accountancy',163488,NULL,NULL,3,'/accountancy/customer/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $leftmenu==\"dispatch_customer\"',0,'2017-08-30 15:14:30'),(163490,'auguria',1,'','left','accountancy',163488,NULL,NULL,4,'/accountancy/customer/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $leftmenu==\"dispatch_customer\"',0,'2017-08-30 15:14:30'),(163497,'auguria',1,'','left','accountancy',163487,NULL,NULL,5,'/accountancy/supplier/index.php?leftmenu=dispatch_supplier','','SuppliersVentilation',NULL,'accountancy',1,'ventil_supplier','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled',0,'2017-08-30 15:14:30'),(163498,'auguria',1,'','left','accountancy',163497,NULL,NULL,6,'/accountancy/supplier/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"dispatch_supplier\"',0,'2017-08-30 15:14:30'),(163499,'auguria',1,'','left','accountancy',163497,NULL,NULL,7,'/accountancy/supplier/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->fournisseur->enabled && $leftmenu==\"dispatch_supplier\"',0,'2017-08-30 15:14:30'),(163507,'auguria',1,'','left','accountancy',163487,NULL,NULL,5,'/accountancy/expensereport/index.php?leftmenu=dispatch_expensereport','','ExpenseReportsVentilation',NULL,'accountancy',1,'ventil_expensereport','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(163508,'auguria',1,'','left','accountancy',163507,NULL,NULL,6,'/accountancy/expensereport/list.php','','ToDispatch',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"dispatch_expensereport\"',0,'2017-08-30 15:14:30'),(163509,'auguria',1,'','left','accountancy',163507,NULL,NULL,7,'/accountancy/expensereport/lines.php','','Dispatched',NULL,'accountancy',2,'','$user->rights->accounting->bind->write','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"dispatch_expensereport\"',0,'2017-08-30 15:14:30'),(163517,'auguria',1,'','left','accountancy',163487,NULL,NULL,15,'/accountancy/bookkeeping/list.php','','Bookkeeping',NULL,'accountancy',1,'bookkeeping','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163522,'auguria',1,'','left','accountancy',163487,NULL,NULL,16,'/accountancy/bookkeeping/balance.php','','AccountBalance',NULL,'accountancy',1,'balance','$user->rights->accounting->mouvements->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163527,'auguria',1,'','left','accountancy',163487,NULL,NULL,17,'/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy','','Reportings',NULL,'main',1,'report','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163528,'auguria',1,'','left','accountancy',163527,NULL,NULL,19,'/compta/resultat/index.php?mainmenu=accountancy&leftmenu=accountancy','','ReportInOut',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163529,'auguria',1,'','left','accountancy',163528,NULL,NULL,18,'/accountancy/report/result.php?mainmenu=accountancy&leftmenu=accountancy','','ByAccounts',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163530,'auguria',1,'','left','accountancy',163528,NULL,NULL,20,'/compta/resultat/clientfourn.php?mainmenu=accountancy&leftmenu=accountancy','','ByCompanies',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163531,'auguria',1,'','left','accountancy',163527,NULL,NULL,21,'/compta/stats/index.php?mainmenu=accountancy&leftmenu=accountancy','','ReportTurnover',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163532,'auguria',1,'','left','accountancy',163531,NULL,NULL,22,'/compta/stats/casoc.php?mainmenu=accountancy&leftmenu=accountancy','','ByCompanies',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163533,'auguria',1,'','left','accountancy',163531,NULL,NULL,23,'/compta/stats/cabyuser.php?mainmenu=accountancy&leftmenu=accountancy','','ByUsers',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163534,'auguria',1,'','left','accountancy',163531,NULL,NULL,24,'/compta/stats/cabyprodserv.php?mainmenu=accountancy&leftmenu=accountancy','','ByProductsAndServices',NULL,'main',3,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled && $leftmenu==\"accountancy\"',0,'2017-08-30 15:14:30'),(163537,'auguria',1,'','left','accountancy',163538,NULL,NULL,80,'/accountancy/admin/fiscalyear.php?mainmenu=accountancy&leftmenu=accountancy_admin','','FiscalPeriod',NULL,'admin',1,'accountancy_admin_period','','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\" && $conf->global->MAIN_FEATURES_LEVEL > 0',2,'2017-08-30 15:14:30'),(163538,'auguria',1,'','left','accountancy',163487,NULL,NULL,1,'/accountancy/index.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Setup',NULL,'accountancy',1,'accountancy_admin','$user->rights->accounting->chartofaccount','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163541,'auguria',1,'','left','accountancy',163538,NULL,NULL,10,'/accountancy/admin/journals_list.php?id=35&mainmenu=accountancy&leftmenu=accountancy_admin','','AccountingJournals',NULL,'accountancy',2,'accountancy_admin_journal','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163542,'auguria',1,'','left','accountancy',163538,NULL,NULL,20,'/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Pcg_version',NULL,'accountancy',2,'accountancy_admin_chartmodel','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163543,'auguria',1,'','left','accountancy',163538,NULL,NULL,30,'/accountancy/admin/account.php?mainmenu=accountancy&leftmenu=accountancy_admin','','Chartofaccounts',NULL,'accountancy',2,'accountancy_admin_chart','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163544,'auguria',1,'','left','accountancy',163538,NULL,NULL,40,'/accountancy/admin/categories_list.php?id=32&mainmenu=accountancy&leftmenu=accountancy_admin','','AccountingCategory',NULL,'accountancy',2,'accountancy_admin_chart_group','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163545,'auguria',1,'','left','accountancy',163538,NULL,NULL,50,'/accountancy/admin/defaultaccounts.php?mainmenu=accountancy&leftmenu=accountancy_admin','','MenuDefaultAccounts',NULL,'accountancy',2,'accountancy_admin_default','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163546,'auguria',1,'','left','accountancy',163538,NULL,NULL,60,'/admin/dict.php?id=10&from=accountancy&search_country_id=__MYCOUNTRYID__&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuVatAccounts',NULL,'accountancy',2,'accountancy_admin_vat','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163547,'auguria',1,'','left','accountancy',163538,NULL,NULL,70,'/admin/dict.php?id=7&from=accountancy&search_country_id=__MYCOUNTRYID__&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuTaxAccounts',NULL,'accountancy',2,'accountancy_admin_tax','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163548,'auguria',1,'','left','accountancy',163538,NULL,NULL,80,'/admin/dict.php?id=17&from=accountancy&mainmenu=accountancy&leftmenu=accountancy_admin','','MenuExpenseReportAccounts',NULL,'accountancy',2,'accountancy_admin_expensereport','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $conf->expensereport->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163549,'auguria',1,'','left','accountancy',163538,NULL,NULL,90,'/accountancy/admin/productaccount.php?mainmenu=accountancy&leftmenu=accountancy_admin','','MenuProductsAccounts',NULL,'accountancy',2,'accountancy_admin_product','$user->rights->accounting->chartofaccount','$conf->accounting->enabled && $leftmenu==\"accountancy_admin\"',0,'2017-08-30 15:14:30'),(163587,'auguria',1,'','left','accountancy',161101,NULL,NULL,9,'/compta/prelevement/index.php?leftmenu=withdraw&mainmenu=bank','','StandingOrders',NULL,'withdrawals',0,'withdraw','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled',2,'2017-08-30 15:14:30'),(163589,'auguria',1,'','left','accountancy',163587,NULL,NULL,0,'/compta/prelevement/create.php?leftmenu=withdraw','','NewStandingOrder',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163590,'auguria',1,'','left','accountancy',163587,NULL,NULL,2,'/compta/prelevement/bons.php?leftmenu=withdraw','','WithdrawalsReceipts',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163591,'auguria',1,'','left','accountancy',163587,NULL,NULL,3,'/compta/prelevement/list.php?leftmenu=withdraw','','WithdrawalsLines',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163593,'auguria',1,'','left','accountancy',163587,NULL,NULL,5,'/compta/prelevement/rejets.php?leftmenu=withdraw','','Rejects',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163594,'auguria',1,'','left','accountancy',163587,NULL,NULL,6,'/compta/prelevement/stats.php?leftmenu=withdraw','','Statistics',NULL,'withdrawals',1,'','$user->rights->prelevement->bons->lire','$conf->prelevement->enabled && $leftmenu==\"withdraw\"',2,'2017-08-30 15:14:30'),(163687,'auguria',1,'','left','accountancy',161101,NULL,NULL,1,'/compta/bank/index.php?leftmenu=bank&mainmenu=bank','','MenuBankCash',NULL,'banks',0,'bank','$user->rights->banque->lire','$conf->banque->enabled',0,'2017-08-30 15:14:30'),(163688,'auguria',1,'','left','accountancy',163687,NULL,NULL,0,'/compta/bank/card.php?action=create&leftmenu=bank','','MenuNewFinancialAccount',NULL,'banks',1,'','$user->rights->banque->configurer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163690,'auguria',1,'','left','accountancy',163687,NULL,NULL,2,'/compta/bank/bankentries.php?leftmenu=bank','','ListTransactions',NULL,'banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163691,'auguria',1,'','left','accountancy',163687,NULL,NULL,3,'/compta/bank/budget.php?leftmenu=bank','','ListTransactionsByCategory',NULL,'banks',1,'','$user->rights->banque->lire','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163693,'auguria',1,'','left','accountancy',163687,NULL,NULL,5,'/compta/bank/transfer.php?leftmenu=bank','','BankTransfers',NULL,'banks',1,'','$user->rights->banque->transfer','$conf->banque->enabled && ($leftmenu==\"bank\" || $leftmenu==\"checks\" || $leftmenu==\"withdraw\")',0,'2017-08-30 15:14:30'),(163737,'auguria',1,'','left','accountancy',161101,NULL,NULL,4,'/categories/index.php?leftmenu=bank&type=5','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(163738,'auguria',1,'','left','accountancy',163737,NULL,NULL,0,'/categories/card.php?leftmenu=bank&action=create&type=5','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(163787,'auguria',1,'','left','accountancy',161093,NULL,NULL,11,'/compta/resultat/index.php?leftmenu=ca&mainmenu=accountancy','','Reportings',NULL,'main',0,'ca','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled',0,'2017-08-30 15:14:30'),(163792,'auguria',1,'','left','accountancy',163487,NULL,NULL,1,'','','Journalization',NULL,'main',1,'','$user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163793,'auguria',1,'','left','accountancy',163792,NULL,NULL,4,'/accountancy/journal/sellsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=1','','SellsJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163794,'auguria',1,'','left','accountancy',163792,NULL,NULL,1,'/accountancy/journal/bankjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=3','','BankJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163795,'auguria',1,'','left','accountancy',163792,NULL,NULL,2,'/accountancy/journal/expensereportsjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=6','','ExpenseReportJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163796,'auguria',1,'','left','accountancy',163792,NULL,NULL,3,'/accountancy/journal/purchasesjournal.php?mainmenu=accountancy&leftmenu=accountancy_journal&id_journal=2','','PurchasesJournal',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->accounting->enabled',0,'2017-08-30 15:14:30'),(163798,'auguria',1,'','left','accountancy',163787,NULL,NULL,0,'/compta/resultat/index.php?leftmenu=ca','','ReportInOut',NULL,'main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163799,'auguria',1,'','left','accountancy',163788,NULL,NULL,0,'/compta/resultat/clientfourn.php?leftmenu=ca','','ByCompanies',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163800,'auguria',1,'','left','accountancy',163787,NULL,NULL,1,'/compta/stats/index.php?leftmenu=ca','','ReportTurnover',NULL,'main',1,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163801,'auguria',1,'','left','accountancy',163790,NULL,NULL,0,'/compta/stats/casoc.php?leftmenu=ca','','ByCompanies',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163802,'auguria',1,'','left','accountancy',163790,NULL,NULL,1,'/compta/stats/cabyuser.php?leftmenu=ca','','ByUsers',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163803,'auguria',1,'','left','accountancy',163790,NULL,NULL,1,'/compta/stats/cabyprodserv.php?leftmenu=ca','','ByProductsAndServices',NULL,'main',2,'','$user->rights->compta->resultat->lire || $user->rights->accounting->comptarapport->lire','$conf->comptabilite->enabled && $leftmenu==\"ca\"',0,'2017-08-30 15:14:30'),(163887,'auguria',1,'','left','products',161090,NULL,NULL,0,'/product/index.php?leftmenu=product&type=0','','Products',NULL,'products',0,'product','$user->rights->produit->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163888,'auguria',1,'','left','products',163887,NULL,NULL,0,'/product/card.php?leftmenu=product&action=create&type=0','','NewProduct',NULL,'products',1,'','$user->rights->produit->creer','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163889,'auguria',1,'','left','products',163887,NULL,NULL,1,'/product/list.php?leftmenu=product&type=0','','List',NULL,'products',1,'','$user->rights->produit->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163890,'auguria',1,'','left','products',163887,NULL,NULL,4,'/product/reassort.php?type=0','','Stocks',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->product->enabled',2,'2017-08-30 15:14:30'),(163891,'auguria',1,'','left','products',163887,NULL,NULL,7,'/product/stats/card.php?id=all&leftmenu=stats&type=0','','Statistics',NULL,'main',1,'','$user->rights->produit->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(163892,'auguria',1,'','left','products',163887,NULL,NULL,5,'/product/reassortlot.php?type=0','','StocksByLotSerial',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2017-08-30 15:14:30'),(163893,'auguria',1,'','left','products',163887,NULL,NULL,6,'/product/stock/productlot_list.php','','LotSerial',NULL,'products',1,'','$user->rights->produit->lire && $user->rights->stock->lire','$conf->productbatch->enabled',2,'2017-08-30 15:14:30'),(163987,'auguria',1,'','left','products',161090,NULL,NULL,1,'/product/index.php?leftmenu=service&type=1','','Services',NULL,'products',0,'service','$user->rights->service->lire','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163988,'auguria',1,'','left','products',163987,NULL,NULL,0,'/product/card.php?leftmenu=service&action=create&type=1','','NewService',NULL,'products',1,'','$user->rights->service->creer','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163989,'auguria',1,'','left','products',163987,NULL,NULL,1,'/product/list.php?leftmenu=service&type=1','','List',NULL,'products',1,'','$user->rights->service->lire','$conf->service->enabled',2,'2017-08-30 15:14:30'),(163990,'auguria',1,'','left','products',163987,NULL,NULL,5,'/product/stats/card.php?id=all&leftmenu=stats&type=1','','Statistics',NULL,'main',1,'','$user->rights->service->lire','$conf->propal->enabled',2,'2017-08-30 15:14:30'),(164187,'auguria',1,'','left','products',161090,NULL,NULL,3,'/product/stock/index.php?leftmenu=stock','','Stock',NULL,'stocks',0,'stock','$user->rights->stock->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164188,'auguria',1,'','left','products',164187,NULL,NULL,0,'/product/stock/card.php?action=create','','MenuNewWarehouse',NULL,'stocks',1,'','$user->rights->stock->creer','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164189,'auguria',1,'','left','products',164187,NULL,NULL,1,'/product/stock/list.php','','List',NULL,'stocks',1,'','$user->rights->stock->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164191,'auguria',1,'','left','products',164187,NULL,NULL,3,'/product/stock/mouvement.php','','Movements',NULL,'stocks',1,'','$user->rights->stock->mouvement->lire','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164192,'auguria',1,'','left','products',164187,NULL,NULL,4,'/product/stock/replenish.php','','Replenishments',NULL,'stocks',1,'','$user->rights->stock->mouvement->creer && $user->rights->fournisseur->lire','$conf->stock->enabled && $conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(164193,'auguria',1,'','left','products',164187,NULL,NULL,5,'/product/stock/massstockmove.php','','MassStockTransferShort',NULL,'stocks',1,'','$user->rights->stock->mouvement->creer','$conf->stock->enabled',2,'2017-08-30 15:14:30'),(164287,'auguria',1,'','left','products',161090,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=0','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164288,'auguria',1,'','left','products',164287,NULL,NULL,0,'/categories/card.php?action=create&type=0','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164487,'auguria',1,'','left','project',161094,NULL,NULL,3,'/projet/activity/perweek.php?leftmenu=projects','','NewTimeSpent',NULL,'projects',0,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164687,'auguria',1,'','left','project',161094,NULL,NULL,0,'/projet/index.php?leftmenu=projects','','Projects',NULL,'projects',0,'projects','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164688,'auguria',1,'','left','project',164687,NULL,NULL,1,'/projet/card.php?leftmenu=projects&action=create','','NewProject',NULL,'projects',1,'','$user->rights->projet->creer','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164689,'auguria',1,'','left','project',164687,NULL,NULL,2,'/projet/list.php?leftmenu=projects','','List',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164690,'auguria',1,'','left','project',164687,NULL,NULL,3,'/projet/stats/index.php?leftmenu=projects','','Statistics',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled',2,'2017-08-30 15:14:30'),(164787,'auguria',1,'','left','project',161094,NULL,NULL,0,'/projet/activity/index.php?leftmenu=projects','','Activities',NULL,'projects',0,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164788,'auguria',1,'','left','project',164787,NULL,NULL,1,'/projet/tasks.php?leftmenu=projects&action=create','','NewTask',NULL,'projects',1,'','$user->rights->projet->creer','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164789,'auguria',1,'','left','project',164787,NULL,NULL,2,'/projet/tasks/list.php?leftmenu=projects','','List',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164791,'auguria',1,'','left','project',164787,NULL,NULL,4,'/projet/tasks/stats/index.php?leftmenu=projects','','Statistics',NULL,'projects',1,'','$user->rights->projet->lire','$conf->projet->enabled && $conf->global->PROJECT_USE_TASKS',2,'2017-08-30 15:14:30'),(164891,'auguria',1,'','left','project',161094,NULL,NULL,4,'/categories/index.php?leftmenu=cat&type=6','','Categories',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164892,'auguria',1,'','left','project',164891,NULL,NULL,0,'/categories/card.php?action=create&type=6','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->categorie->enabled',2,'2017-08-30 15:14:30'),(164987,'auguria',1,'','left','tools',161095,NULL,NULL,0,'/comm/mailing/index.php?leftmenu=mailing','','EMailings',NULL,'mails',0,'mailing','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(164988,'auguria',1,'','left','tools',164987,NULL,NULL,0,'/comm/mailing/card.php?leftmenu=mailing&action=create','','NewMailing',NULL,'mails',1,'','$user->rights->mailing->creer','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(164989,'auguria',1,'','left','tools',164987,NULL,NULL,1,'/comm/mailing/list.php?leftmenu=mailing','','List',NULL,'mails',1,'','$user->rights->mailing->lire','$conf->mailing->enabled',0,'2017-08-30 15:14:30'),(165187,'auguria',1,'','left','tools',161095,NULL,NULL,2,'/exports/index.php?leftmenu=export','','FormatedExport',NULL,'exports',0,'export','$user->rights->export->lire','$conf->export->enabled',2,'2017-08-30 15:14:30'),(165188,'auguria',1,'','left','tools',165187,NULL,NULL,0,'/exports/export.php?leftmenu=export','','NewExport',NULL,'exports',1,'','$user->rights->export->creer','$conf->export->enabled',2,'2017-08-30 15:14:30'),(165217,'auguria',1,'','left','tools',161095,NULL,NULL,2,'/imports/index.php?leftmenu=import','','FormatedImport',NULL,'exports',0,'import','$user->rights->import->run','$conf->import->enabled',2,'2017-08-30 15:14:30'),(165218,'auguria',1,'','left','tools',165217,NULL,NULL,0,'/imports/import.php?leftmenu=import','','NewImport',NULL,'exports',1,'','$user->rights->import->run','$conf->import->enabled',2,'2017-08-30 15:14:30'),(165287,'auguria',1,'','left','members',161100,NULL,NULL,0,'/adherents/index.php?leftmenu=members&mainmenu=members','','Members',NULL,'members',0,'members','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165288,'auguria',1,'','left','members',165287,NULL,NULL,0,'/adherents/card.php?leftmenu=members&action=create','','NewMember',NULL,'members',1,'','$user->rights->adherent->creer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165289,'auguria',1,'','left','members',165287,NULL,NULL,1,'/adherents/list.php','','List',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165290,'auguria',1,'','left','members',165289,NULL,NULL,2,'/adherents/list.php?leftmenu=members&statut=-1','','MenuMembersToValidate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165291,'auguria',1,'','left','members',165289,NULL,NULL,3,'/adherents/list.php?leftmenu=members&statut=1','','MenuMembersValidated',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165292,'auguria',1,'','left','members',165289,NULL,NULL,4,'/adherents/list.php?leftmenu=members&statut=1&filter=outofdate','','MenuMembersNotUpToDate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165293,'auguria',1,'','left','members',165289,NULL,NULL,5,'/adherents/list.php?leftmenu=members&statut=1&filter=uptodate','','MenuMembersUpToDate',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165294,'auguria',1,'','left','members',165289,NULL,NULL,6,'/adherents/list.php?leftmenu=members&statut=0','','MenuMembersResiliated',NULL,'members',2,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165295,'auguria',1,'','left','members',165287,NULL,NULL,7,'/adherents/stats/geo.php?leftmenu=members&mode=memberbycountry','','MenuMembersStats',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165387,'auguria',1,'','left','members',161100,NULL,NULL,1,'/adherents/index.php?leftmenu=members&mainmenu=members','','Subscriptions',NULL,'compta',0,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165388,'auguria',1,'','left','members',165387,NULL,NULL,0,'/adherents/list.php?statut=-1&leftmenu=accountancy&mainmenu=members','','NewSubscription',NULL,'compta',1,'','$user->rights->adherent->cotisation->creer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165389,'auguria',1,'','left','members',165387,NULL,NULL,1,'/adherents/subscription/list.php?leftmenu=members','','List',NULL,'compta',1,'','$user->rights->adherent->cotisation->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165390,'auguria',1,'','left','members',165387,NULL,NULL,7,'/adherents/stats/index.php?leftmenu=members','','MenuMembersStats',NULL,'members',1,'','$user->rights->adherent->lire','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165589,'auguria',1,'','left','members',165287,NULL,NULL,9,'/adherents/htpasswd.php?leftmenu=export','','Filehtpasswd',NULL,'members',1,'','$user->rights->adherent->export','! empty($conf->global->MEMBER_LINK_TO_HTPASSWDFILE) && $conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165590,'auguria',1,'','left','members',165287,NULL,NULL,10,'/adherents/cartes/carte.php?leftmenu=export','','MembersCards',NULL,'members',1,'','$user->rights->adherent->export','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165687,'auguria',1,'','left','hrm',161102,NULL,NULL,1,'/user/index.php?leftmenu=hrm&mode=employee','','Employees',NULL,'hrm',0,'hrm','$user->rights->hrm->employee->read','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165688,'auguria',1,'','left','hrm',165687,NULL,NULL,1,'/user/card.php?action=create&employee=1','','NewEmployee',NULL,'hrm',1,'','$user->rights->hrm->employee->write','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165689,'auguria',1,'','left','hrm',165687,NULL,NULL,2,'/user/index.php?$leftmenu=hrm&mode=employee&contextpage=employeelist','','List',NULL,'hrm',1,'','$user->rights->hrm->employee->read','$conf->hrm->enabled',0,'2017-08-30 15:14:30'),(165787,'auguria',1,'','left','members',161100,NULL,NULL,5,'/adherents/type.php?leftmenu=setup&mainmenu=members','','MembersTypes',NULL,'members',0,'setup','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165788,'auguria',1,'','left','members',165787,NULL,NULL,0,'/adherents/type.php?leftmenu=setup&mainmenu=members&action=create','','New',NULL,'members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(165789,'auguria',1,'','left','members',165787,NULL,NULL,1,'/adherents/type.php?leftmenu=setup&mainmenu=members','','List',NULL,'members',1,'','$user->rights->adherent->configurer','$conf->adherent->enabled',2,'2017-08-30 15:14:30'),(166087,'auguria',1,'','left','hrm',161102,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','CPTitreMenu',NULL,'holiday',0,'hrm','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166088,'auguria',1,'','left','hrm',166087,NULL,NULL,1,'/holiday/card.php?&action=request','','MenuAddCP',NULL,'holiday',1,'','$user->rights->holiday->write','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166089,'auguria',1,'','left','hrm',166087,NULL,NULL,1,'/holiday/list.php?&leftmenu=hrm','','List',NULL,'holiday',1,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166090,'auguria',1,'','left','hrm',166089,NULL,NULL,1,'/holiday/list.php?select_statut=2&leftmenu=hrm','','ListToApprove',NULL,'trips',2,'','$user->rights->holiday->read','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166091,'auguria',1,'','left','hrm',166087,NULL,NULL,2,'/holiday/define_holiday.php?&action=request','','MenuConfCP',NULL,'holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166092,'auguria',1,'','left','hrm',166087,NULL,NULL,3,'/holiday/view_log.php?&action=request','','MenuLogCP',NULL,'holiday',1,'','$user->rights->holiday->define_holiday','$conf->holiday->enabled',0,'2017-08-30 15:14:30'),(166187,'auguria',1,'','left','commercial',161092,NULL,NULL,6,'/fourn/commande/index.php?leftmenu=orders_suppliers','','SuppliersOrders',NULL,'orders',0,'orders_suppliers','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166188,'auguria',1,'','left','commercial',166187,NULL,NULL,0,'/fourn/commande/card.php?action=create&leftmenu=orders_suppliers','','NewOrder',NULL,'orders',1,'','$user->rights->fournisseur->commande->creer','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166189,'auguria',1,'','left','commercial',166187,NULL,NULL,1,'/fourn/commande/list.php?leftmenu=orders_suppliers&search_status=0','','List',NULL,'orders',1,'','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166195,'auguria',1,'','left','commercial',166187,NULL,NULL,7,'/commande/stats/index.php?leftmenu=orders_suppliers&mode=supplier','','Statistics',NULL,'orders',1,'','$user->rights->fournisseur->commande->lire','$conf->supplier_order->enabled',2,'2017-08-30 15:14:30'),(166287,'auguria',1,'','left','members',161100,NULL,NULL,3,'/categories/index.php?leftmenu=cat&type=3','','MembersCategoriesShort',NULL,'categories',0,'cat','$user->rights->categorie->lire','$conf->adherent->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(166288,'auguria',1,'','left','members',166287,NULL,NULL,0,'/categories/card.php?action=create&type=3','','NewCategory',NULL,'categories',1,'','$user->rights->categorie->creer','$conf->adherent->enabled && $conf->categorie->enabled',2,'2017-08-30 15:14:30'),(166387,'auguria',1,'','left','hrm',161102,NULL,NULL,5,'/expensereport/index.php?leftmenu=expensereport','','TripsAndExpenses',NULL,'trips',0,'expensereport','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166388,'auguria',1,'','left','hrm',166387,NULL,NULL,1,'/expensereport/card.php?action=create&leftmenu=expensereport','','New',NULL,'trips',1,'','$user->rights->expensereport->creer','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166389,'auguria',1,'','left','hrm',166387,NULL,NULL,2,'/expensereport/list.php?leftmenu=expensereport','','List',NULL,'trips',1,'','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166390,'auguria',1,'','left','hrm',166389,NULL,NULL,2,'/expensereport/list.php?search_status=2&leftmenu=expensereport','','ListToApprove',NULL,'trips',2,'','$user->rights->expensereport->approve','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(166391,'auguria',1,'','left','hrm',166387,NULL,NULL,2,'/expensereport/stats/index.php?leftmenu=expensereport','','Statistics',NULL,'trips',1,'','$user->rights->expensereport->lire','$conf->expensereport->enabled',0,'2017-08-30 15:14:30'),(167182,'all',1,'knowledgemanagement','left','ticket',-1,NULL,'ticket',101,'/knowledgemanagement/knowledgerecord_list.php','','MenuKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_knowledgerecord','$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167183,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',111,'/knowledgemanagement/knowledgerecord_list.php','','ListKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_list','$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167184,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',110,'/knowledgemanagement/knowledgerecord_card.php?action=create','','NewKnowledgeRecord','','knowledgemanagement',NULL,'knowledgemanagement_new','$user->rights->knowledgemanagement->knowledgerecord->write','$conf->knowledgemanagement->enabled',2,'2022-02-07 13:39:27'),(167185,'all',1,'knowledgemanagement','left','ticket',-1,'knowledgemanagement_knowledgerecord','ticket',112,'/categories/index.php?type=13','','Categories','','knowledgemanagement',NULL,NULL,'$user->rights->knowledgemanagement->knowledgerecord->read','$conf->knowledgemanagement->enabled',0,'2022-02-07 13:39:27'),(167283,'all',1,'agenda','top','agenda',0,NULL,NULL,86,'/comm/action/index.php','','TMenuAgenda','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read || $user->rights->resource->read','$conf->agenda->enabled || $conf->resource->enabled',2,'2022-07-05 08:07:11'),(167284,'all',1,'agenda','left','agenda',167283,NULL,NULL,100,'/comm/action/index.php?mainmenu=agenda&leftmenu=agenda','','Actions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167285,'all',1,'agenda','left','agenda',167284,NULL,NULL,101,'/comm/action/card.php?mainmenu=agenda&leftmenu=agenda&action=create','','NewAction','','commercial',NULL,NULL,'($user->rights->agenda->myactions->create||$user->rights->agenda->allactions->create)','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167286,'all',1,'agenda','left','agenda',167284,NULL,NULL,140,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda','','Calendar','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167287,'all',1,'agenda','left','agenda',167286,NULL,NULL,141,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167288,'all',1,'agenda','left','agenda',167286,NULL,NULL,142,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167289,'all',1,'agenda','left','agenda',167286,NULL,NULL,143,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1','','MenuToDoActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-07-05 08:07:11'),(167290,'all',1,'agenda','left','agenda',167286,NULL,NULL,144,'/comm/action/index.php?action=default&mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1','','MenuDoneActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-07-05 08:07:11'),(167291,'all',1,'agenda','left','agenda',167284,NULL,NULL,110,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda','','List','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167292,'all',1,'agenda','left','agenda',167291,NULL,NULL,111,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=todo&filter=mine','','MenuToDoMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167293,'all',1,'agenda','left','agenda',167291,NULL,NULL,112,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=done&filter=mine','','MenuDoneMyActions','','agenda',NULL,NULL,'$user->rights->agenda->myactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167294,'all',1,'agenda','left','agenda',167291,NULL,NULL,113,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=todo&filtert=-1','','MenuToDoActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-07-05 08:07:11'),(167295,'all',1,'agenda','left','agenda',167291,NULL,NULL,114,'/comm/action/list.php?mode=show_list&mainmenu=agenda&leftmenu=agenda&status=done&filtert=-1','','MenuDoneActions','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$user->rights->agenda->allactions->read',2,'2022-07-05 08:07:11'),(167296,'all',1,'agenda','left','agenda',167284,NULL,NULL,160,'/comm/action/rapport/index.php?mainmenu=agenda&leftmenu=agenda','','Reportings','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->agenda->enabled',2,'2022-07-05 08:07:11'),(167297,'all',1,'agenda','left','agenda',167284,NULL,NULL,170,'/categories/index.php?mainmenu=agenda&leftmenu=agenda&type=10','','Categories','','agenda',NULL,NULL,'$user->rights->agenda->allactions->read','$conf->categorie->enabled',2,'2022-07-05 08:07:11'),(167298,'all',1,'barcode','left','tools',-1,NULL,'tools',200,'/barcode/printsheet.php?mainmenu=tools&leftmenu=barcodeprint','','BarCodePrintsheet','','products',NULL,'barcodeprint','($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->lire_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled',0,'2022-07-05 08:07:11'),(167299,'all',1,'barcode','left','home',-1,'admintools','home',300,'/barcode/codeinit.php?mainmenu=home&leftmenu=admintools','','MassBarcodeInit','','products',NULL,NULL,'($conf->global->MAIN_USE_ADVANCED_PERMS && $user->rights->barcode->creer_advance) || (! $conf->global->MAIN_USE_ADVANCED_PERMS)','$conf->barcode->enabled && preg_match(\'/^(admintools|all)/\',$leftmenu)',0,'2022-07-05 08:07:11'),(167300,'all',1,'cron','left','home',-1,'admintools','home',200,'/cron/list.php?leftmenu=admintools','','CronList','','cron',NULL,NULL,'$user->rights->cron->read','$conf->cron->enabled && preg_match(\'/^(admintools|all)/\', $leftmenu)',2,'2022-07-05 08:07:11'),(167301,'all',1,'blockedlog','left','tools',-1,NULL,'tools',200,'/blockedlog/admin/blockedlog_list.php?mainmenu=tools&leftmenu=blockedlogbrowser','','BrowseBlockedLog','','blockedlog',NULL,'blockedlogbrowser','$user->rights->blockedlog->read','$conf->blockedlog->enabled',2,'2022-07-05 08:07:11'),(167302,'all',1,'ecm','top','ecm',0,NULL,NULL,82,'/ecm/index.php','','MenuECM','','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload || $user->rights->ecm->setup','$conf->ecm->enabled',2,'2022-07-05 08:07:11'),(167303,'all',1,'ecm','left','ecm',-1,NULL,'ecm',101,'/ecm/index.php?mainmenu=ecm&leftmenu=ecm','','ECMArea','','ecm',NULL,'ecm','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2022-07-05 08:07:11'),(167304,'all',1,'ecm','left','ecm',-1,'ecm','ecm',102,'/ecm/index.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsManual','','ecm',NULL,'ecm_manual','$user->rights->ecm->read || $user->rights->ecm->upload','$user->rights->ecm->read || $user->rights->ecm->upload',2,'2022-07-05 08:07:11'),(167305,'all',1,'ecm','left','ecm',-1,'ecm','ecm',103,'/ecm/index_auto.php?action=file_manager&mainmenu=ecm&leftmenu=ecm','','ECMSectionsAuto','','ecm',NULL,NULL,'$user->rights->ecm->read || $user->rights->ecm->upload','($user->rights->ecm->read || $user->rights->ecm->upload) && ! empty($conf->global->ECM_AUTO_TREE_ENABLED)',2,'2022-07-05 08:07:11'),(167306,'all',1,'margins','left','billing',-1,NULL,'billing',100,'/margin/index.php','','Margins','','margins',NULL,'margins','$user->rights->margins->liretous','$conf->margin->enabled',2,'2022-07-05 08:07:11'),(167307,'all',1,'opensurvey','left','tools',-1,NULL,'tools',200,'/opensurvey/index.php?mainmenu=tools&leftmenu=opensurvey','','Survey','','opensurvey',NULL,'opensurvey','$user->rights->opensurvey->read','$conf->opensurvey->enabled',0,'2022-07-05 08:07:12'),(167308,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',210,'/opensurvey/wizard/index.php','','NewSurvey','','opensurvey',NULL,'opensurvey_new','$user->rights->opensurvey->write','$conf->opensurvey->enabled',0,'2022-07-05 08:07:12'),(167309,'all',1,'opensurvey','left','tools',-1,'opensurvey','tools',220,'/opensurvey/list.php','','List','','opensurvey',NULL,'opensurvey_list','$user->rights->opensurvey->read','$conf->opensurvey->enabled',0,'2022-07-05 08:07:12'),(167310,'all',1,'printing','left','home',-1,'admintools','home',300,'/printing/index.php?mainmenu=home&leftmenu=admintools','','MenuDirectPrinting','','printing',NULL,NULL,'$user->rights->printing->read','$conf->printing->enabled && preg_match(\'/^(admintools|all)/\', $leftmenu)',0,'2022-07-05 08:07:12'),(167311,'all',1,'recruitment','left','hrm',-1,NULL,'hrm',1001,'/recruitment/recruitmentindex.php','','Recruitment','','recruitment',NULL,'recruitmentjobposition','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-07-05 08:07:12'),(167312,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1002,'/recruitment/recruitmentjobposition_card.php?action=create','','NewPositionToBeFilled','','recruitment',NULL,'recruitment_recruitmentjobposition_new','$user->rights->recruitment->recruitmentjobposition->write','$conf->recruitment->enabled',2,'2022-07-05 08:07:12'),(167313,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1003,'/recruitment/recruitmentjobposition_list.php','','ListOfPositionsToBeFilled','','recruitment',NULL,'recruitment_recruitmentjobposition_list','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-07-05 08:07:12'),(167314,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1004,'/recruitment/recruitmentcandidature_card.php?action=create','','NewCandidature','','recruitment',NULL,'recruitment_recruitmentcandidature_new','$user->rights->recruitment->recruitmentjobposition->write','$conf->recruitment->enabled',2,'2022-07-05 08:07:12'),(167315,'all',1,'recruitment','left','hrm',-1,'recruitmentjobposition','hrm',1005,'/recruitment/recruitmentcandidature_list.php','','ListOfCandidatures','','recruitment',NULL,'recruitment_recruitmentcandidature_list','$user->rights->recruitment->recruitmentjobposition->read','$conf->recruitment->enabled',2,'2022-07-05 08:07:12'),(167316,'all',1,'resource','left','agenda',-1,NULL,'agenda',100,'/resource/list.php','','MenuResourceIndex','','resource',NULL,'resource','$user->rights->resource->read','1',0,'2022-07-05 08:07:12'),(167317,'all',1,'resource','left','agenda',-1,'resource','agenda',101,'/resource/card.php?action=create','','MenuResourceAdd','','resource',NULL,'resource_add','$user->rights->resource->write','1',0,'2022-07-05 08:07:12'),(167318,'all',1,'resource','left','agenda',-1,'resource','agenda',102,'/resource/list.php','','List','','resource',NULL,'resource_list','$user->rights->resource->read','1',0,'2022-07-05 08:07:12'),(167319,'all',1,'stripe','left','bank',-1,NULL,'bank',100,'','','StripeAccount','','stripe',NULL,'stripe','$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-07-05 08:07:12'),(167320,'all',1,'stripe','left','bank',-1,'stripe','bank',102,'/stripe/charge.php','','StripeChargeList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-07-05 08:07:12'),(167321,'all',1,'stripe','left','bank',-1,'stripe','bank',102,'/stripe/transaction.php','','StripeTransactionList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-07-05 08:07:12'),(167322,'all',1,'stripe','left','bank',-1,'stripe','bank',103,'/stripe/payout.php','','StripePayoutList','','stripe',NULL,NULL,'$user->rights->banque->lire','$conf->stripe->enabled && $conf->banque->enabled && $conf->global->MAIN_FEATURES_LEVEL >= 1',0,'2022-07-05 08:07:12'),(167323,'all',1,'ticket','left','ticket',-1,NULL,'ticket',101,'/ticket/index.php','','Ticket','','ticket',NULL,'ticket','$user->rights->ticket->read','$conf->ticket->enabled',2,'2022-07-05 08:07:12'),(167324,'all',1,'ticket','left','ticket',-1,'ticket','ticket',102,'/ticket/card.php?action=create','','NewTicket','','ticket',NULL,NULL,'$user->rights->ticket->write','$conf->ticket->enabled',2,'2022-07-05 08:07:12'),(167325,'all',1,'ticket','left','ticket',-1,'ticket','ticket',103,'/ticket/list.php?search_fk_status=non_closed','','List','','ticket',NULL,'ticketlist','$user->rights->ticket->read','$conf->ticket->enabled',2,'2022-07-05 08:07:12'),(167326,'all',1,'ticket','left','ticket',-1,'ticket','ticket',105,'/ticket/list.php?mode=mine&search_fk_status=non_closed','','MenuTicketMyAssign','','ticket',NULL,'ticketmy','$user->rights->ticket->read','$conf->ticket->enabled',0,'2022-07-05 08:07:12'),(167327,'all',1,'ticket','left','ticket',-1,'ticket','ticket',107,'/ticket/stats/index.php','','Statistics','','ticket',NULL,NULL,'$user->rights->ticket->read','$conf->ticket->enabled',0,'2022-07-05 08:07:12'),(167328,'all',1,'ticket','left','ticket',-1,'ticket','ticket',107,'/categories/index.php?type=12','','Categories','','ticket',NULL,NULL,'$user->rights->ticket->read','$conf->categorie->enabled',0,'2022-07-05 08:07:12'),(167329,'all',1,'takepos','top','takepos',0,NULL,NULL,1001,'/takepos/index.php','takepos','PointOfSaleShort','','cashdesk',NULL,NULL,'$user->rights->takepos->run','$conf->takepos->enabled',2,'2022-07-05 08:07:12'),(167330,'all',1,'website','top','website',0,NULL,NULL,100,'/website/index.php','','WebSites','','website',NULL,NULL,'$user->rights->website->read','$conf->website->enabled',2,'2022-07-05 08:07:13'); /*!40000 ALTER TABLE `llx_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -8364,20 +8891,20 @@ DROP TABLE IF EXISTS `llx_mrp_mo`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_mrp_mo` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '(PROV)', + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '(PROV)', `entity` int(11) NOT NULL DEFAULT 1, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double NOT NULL, `fk_warehouse` int(11) DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, `fk_product` int(11) NOT NULL, `date_start_planned` datetime DEFAULT NULL, @@ -8386,8 +8913,9 @@ CREATE TABLE `llx_mrp_mo` ( `fk_project` int(11) DEFAULT NULL, `date_valid` datetime DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `mrptype` int(11) DEFAULT 0, + `fk_parent_line` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_mrp_mo_ref` (`ref`), KEY `idx_mrp_mo_entity` (`entity`), @@ -8400,7 +8928,7 @@ CREATE TABLE `llx_mrp_mo` ( KEY `idx_mrp_mo_fk_bom` (`fk_bom`), KEY `idx_mrp_mo_fk_project` (`fk_project`), CONSTRAINT `fk_mrp_mo_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8409,7 +8937,7 @@ CREATE TABLE `llx_mrp_mo` ( LOCK TABLES `llx_mrp_mo` WRITE; /*!40000 ALTER TABLE `llx_mrp_mo` DISABLE KEYS */; -INSERT INTO `llx_mrp_mo` VALUES (5,'MO1912-0002',1,'Build 2 apple pies for CIO birthday',3,2,10,NULL,NULL,'2019-12-20 16:42:08','2020-01-13 11:29:30',12,12,NULL,NULL,3,4,NULL,NULL,6,7,'2019-12-20 20:32:09',12,NULL,0),(8,'MO1912-0001',1,NULL,1,NULL,NULL,NULL,NULL,'2019-12-20 17:01:21','2019-12-20 13:25:47',12,NULL,NULL,NULL,1,3,NULL,NULL,6,NULL,'2019-12-20 17:25:47',12,NULL,0),(14,'MO2001-0003',1,NULL,10,NULL,NULL,NULL,'Production very dangerous','2020-01-02 23:46:54','2020-01-06 02:48:22',12,12,NULL,NULL,2,4,NULL,NULL,6,NULL,'2020-01-02 23:57:42',12,NULL,0),(18,'MO2001-0004',1,NULL,2,2,NULL,NULL,NULL,'2020-01-03 13:34:34','2020-01-03 10:10:41',12,12,NULL,NULL,1,4,NULL,NULL,6,NULL,'2020-01-03 14:10:41',12,NULL,0),(22,'(PROV22)',1,'label',1,NULL,26,NULL,NULL,'2020-01-08 19:42:15','2020-01-08 15:42:15',12,NULL,NULL,NULL,0,4,'2020-01-08 16:41:00','2020-01-08 17:41:00',6,6,NULL,NULL,NULL,0),(23,'(PROV23)',1,NULL,1,NULL,26,NULL,NULL,'2020-01-08 19:45:04','2020-01-08 15:45:04',12,NULL,NULL,NULL,0,4,'2020-01-08 16:42:00','2020-01-08 17:42:00',6,6,NULL,NULL,NULL,0),(24,'MO2001-0006',1,NULL,1,NULL,26,NULL,NULL,'2020-01-08 19:46:41','2020-01-13 11:13:19',12,NULL,NULL,NULL,2,4,NULL,NULL,6,6,'2020-01-13 15:11:54',12,NULL,0),(26,'(PROV26)',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 19:49:22','2020-01-08 15:49:22',12,NULL,NULL,NULL,0,4,NULL,NULL,6,NULL,NULL,NULL,NULL,0),(27,'(PROV27)',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 19:49:50','2020-01-08 15:49:50',12,NULL,NULL,NULL,0,4,NULL,NULL,6,NULL,NULL,NULL,NULL,0),(28,'MO2001-0005',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 20:09:40','2020-01-08 16:21:22',12,NULL,NULL,NULL,2,4,NULL,NULL,6,NULL,'2020-01-08 20:12:55',12,NULL,0),(29,'(PROV29)',1,NULL,3,NULL,NULL,NULL,NULL,'2020-01-08 21:00:55','2020-01-08 17:00:55',12,NULL,NULL,NULL,0,4,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0); +INSERT INTO `llx_mrp_mo` VALUES (5,'MO1912-0002',1,'Build 2 apple pies for CIO birthday',3,2,10,NULL,NULL,'2019-12-20 16:42:08','2020-01-13 11:29:30',12,12,NULL,NULL,3,4,NULL,NULL,6,7,'2019-12-20 20:32:09',12,NULL,0,NULL),(8,'MO1912-0001',1,NULL,1,NULL,NULL,NULL,NULL,'2019-12-20 17:01:21','2019-12-20 13:25:47',12,NULL,NULL,NULL,1,3,NULL,NULL,6,NULL,'2019-12-20 17:25:47',12,NULL,0,NULL),(14,'MO2001-0003',1,NULL,10,NULL,NULL,NULL,'Production very dangerous','2020-01-02 23:46:54','2020-01-06 02:48:22',12,12,NULL,NULL,2,4,NULL,NULL,6,NULL,'2020-01-02 23:57:42',12,NULL,0,NULL),(18,'MO2001-0004',1,NULL,2,2,NULL,NULL,NULL,'2020-01-03 13:34:34','2020-01-03 10:10:41',12,12,NULL,NULL,1,4,NULL,NULL,6,NULL,'2020-01-03 14:10:41',12,NULL,0,NULL),(22,'(PROV22)',1,'label',1,NULL,26,NULL,NULL,'2020-01-08 19:42:15','2020-01-08 15:42:15',12,NULL,NULL,NULL,0,4,'2020-01-08 16:41:00','2020-01-08 17:41:00',6,6,NULL,NULL,NULL,0,NULL),(23,'(PROV23)',1,NULL,1,NULL,26,NULL,NULL,'2020-01-08 19:45:04','2020-01-08 15:45:04',12,NULL,NULL,NULL,0,4,'2020-01-08 16:42:00','2020-01-08 17:42:00',6,6,NULL,NULL,NULL,0,NULL),(24,'MO2001-0006',1,NULL,1,NULL,26,NULL,NULL,'2020-01-08 19:46:41','2020-01-13 11:13:19',12,NULL,NULL,NULL,2,4,NULL,NULL,6,6,'2020-01-13 15:11:54',12,NULL,0,NULL),(26,'(PROV26)',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 19:49:22','2020-01-08 15:49:22',12,NULL,NULL,NULL,0,4,NULL,NULL,6,NULL,NULL,NULL,NULL,0,NULL),(27,'(PROV27)',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 19:49:50','2020-01-08 15:49:50',12,NULL,NULL,NULL,0,4,NULL,NULL,6,NULL,NULL,NULL,NULL,0,NULL),(28,'MO2001-0005',1,NULL,1,NULL,NULL,NULL,NULL,'2020-01-08 20:09:40','2020-01-08 16:21:22',12,NULL,NULL,NULL,2,4,NULL,NULL,6,NULL,'2020-01-08 20:12:55',12,NULL,0,NULL),(29,'(PROV29)',1,NULL,3,NULL,NULL,NULL,NULL,'2020-01-08 21:00:55','2020-01-08 17:00:55',12,NULL,NULL,NULL,0,4,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL); /*!40000 ALTER TABLE `llx_mrp_mo` ENABLE KEYS */; UNLOCK TABLES; @@ -8424,10 +8952,10 @@ CREATE TABLE `llx_mrp_mo_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_mrp_mo_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8450,20 +8978,20 @@ CREATE TABLE `llx_mrp_production` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_mo` int(11) NOT NULL, `origin_id` int(11) DEFAULT NULL, - `origin_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `origin_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) NOT NULL DEFAULT 0, `fk_product` int(11) NOT NULL, `fk_warehouse` int(11) DEFAULT NULL, `qty` double NOT NULL DEFAULT 1, - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `role` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `role` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_mrp_production` int(11) DEFAULT NULL, `fk_stock_movement` int(11) DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty_frozen` smallint(6) DEFAULT 0, `disable_stock_change` smallint(6) DEFAULT 0, PRIMARY KEY (`rowid`), @@ -8473,7 +9001,7 @@ CREATE TABLE `llx_mrp_production` ( CONSTRAINT `fk_mrp_production_mo` FOREIGN KEY (`fk_mo`) REFERENCES `llx_mrp_mo` (`rowid`), CONSTRAINT `fk_mrp_production_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`), CONSTRAINT `fk_mrp_production_stock_movement` FOREIGN KEY (`fk_stock_movement`) REFERENCES `llx_stock_mouvement` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=214 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8496,12 +9024,12 @@ DROP TABLE IF EXISTS `llx_multicurrency`; CREATE TABLE `llx_multicurrency` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `date_create` datetime DEFAULT NULL, - `code` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `code` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT 1, `fk_user` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8528,7 +9056,7 @@ CREATE TABLE `llx_multicurrency_rate` ( `fk_multicurrency` int(11) NOT NULL, `entity` int(11) DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8556,13 +9084,13 @@ CREATE TABLE `llx_notify` ( `fk_soc` int(11) DEFAULT NULL, `fk_contact` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, - `objet_type` varchar(24) COLLATE utf8_unicode_ci NOT NULL, + `objet_type` varchar(24) COLLATE utf8mb3_unicode_ci NOT NULL, `objet_id` int(11) NOT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'email', - `type_target` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'email', + `type_target` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8589,9 +9117,9 @@ CREATE TABLE `llx_notify_def` ( `fk_soc` int(11) DEFAULT NULL, `fk_contact` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, - `type` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'email', + `type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'email', PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8613,14 +9141,14 @@ DROP TABLE IF EXISTS `llx_notify_def_object`; CREATE TABLE `llx_notify_def_object` ( `id` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `objet_type` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `objet_type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `objet_id` int(11) NOT NULL, - `type_notif` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'browser', + `type_notif` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'browser', `date_notif` datetime DEFAULT NULL, `user_id` int(11) DEFAULT NULL, - `moreparam` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `moreparam` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8641,13 +9169,13 @@ DROP TABLE IF EXISTS `llx_oauth_state`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_oauth_state` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `service` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL, - `state` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `service` varchar(36) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `state` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `fk_adherent` int(11) DEFAULT NULL, `entity` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8668,18 +9196,18 @@ DROP TABLE IF EXISTS `llx_oauth_token`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_oauth_token` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `service` varchar(36) COLLATE utf8_unicode_ci DEFAULT NULL, - `token` text COLLATE utf8_unicode_ci DEFAULT NULL, + `service` varchar(36) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `token` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `fk_adherent` int(11) DEFAULT NULL, `entity` int(11) DEFAULT NULL, - `tokenstring` text COLLATE utf8_unicode_ci DEFAULT NULL, - `restricted_ips` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, + `tokenstring` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `restricted_ips` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8701,14 +9229,14 @@ DROP TABLE IF EXISTS `llx_object_lang`; CREATE TABLE `llx_object_lang` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_object` int(11) NOT NULL DEFAULT 0, - `type_object` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `property` varchar(32) COLLATE utf8_unicode_ci NOT NULL, - `lang` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `value` text COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `type_object` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `property` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `value` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_object_lang` (`fk_object`,`type_object`,`property`,`lang`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8730,15 +9258,15 @@ DROP TABLE IF EXISTS `llx_onlinesignature`; CREATE TABLE `llx_onlinesignature` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `object_type` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `object_type` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `object_id` int(11) NOT NULL, `datec` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `ip` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `pathoffile` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `ip` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pathoffile` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8759,13 +9287,13 @@ DROP TABLE IF EXISTS `llx_opensurvey_comments`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_opensurvey_comments` ( `id_comment` int(10) unsigned NOT NULL AUTO_INCREMENT, - `id_sondage` char(16) COLLATE utf8_unicode_ci NOT NULL, - `comment` text COLLATE utf8_unicode_ci NOT NULL, - `usercomment` text COLLATE utf8_unicode_ci DEFAULT NULL, + `id_sondage` char(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `comment` text COLLATE utf8mb3_unicode_ci NOT NULL, + `usercomment` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id_comment`), KEY `idx_id_comment` (`id_comment`), KEY `idx_id_sondage` (`id_sondage`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8787,11 +9315,11 @@ DROP TABLE IF EXISTS `llx_opensurvey_formquestions`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_opensurvey_formquestions` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `id_sondage` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `question` text COLLATE utf8_unicode_ci DEFAULT NULL, - `available_answers` text COLLATE utf8_unicode_ci DEFAULT NULL, + `id_sondage` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `question` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `available_answers` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8811,24 +9339,24 @@ DROP TABLE IF EXISTS `llx_opensurvey_sondage`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_opensurvey_sondage` ( - `id_sondage` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `commentaires` text COLLATE utf8_unicode_ci DEFAULT NULL, - `mail_admin` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `nom_admin` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `id_sondage` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `commentaires` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `mail_admin` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `nom_admin` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) NOT NULL, - `titre` text COLLATE utf8_unicode_ci NOT NULL, + `titre` text COLLATE utf8mb3_unicode_ci NOT NULL, `date_fin` datetime DEFAULT NULL, `status` int(11) DEFAULT 1, - `format` varchar(2) COLLATE utf8_unicode_ci NOT NULL, + `format` varchar(2) COLLATE utf8mb3_unicode_ci NOT NULL, `mailsonde` tinyint(4) NOT NULL DEFAULT 0, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `entity` int(11) NOT NULL DEFAULT 1, `allow_comments` tinyint(4) NOT NULL DEFAULT 1, `allow_spy` tinyint(4) NOT NULL DEFAULT 1, - `sujet` text COLLATE utf8_unicode_ci DEFAULT NULL, + `sujet` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`id_sondage`), KEY `idx_date_fin` (`date_fin`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8851,8 +9379,8 @@ DROP TABLE IF EXISTS `llx_opensurvey_user_formanswers`; CREATE TABLE `llx_opensurvey_user_formanswers` ( `fk_user_survey` int(11) NOT NULL, `fk_question` int(11) NOT NULL, - `reponses` text COLLATE utf8_unicode_ci DEFAULT NULL -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + `reponses` text COLLATE utf8mb3_unicode_ci DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8873,9 +9401,9 @@ DROP TABLE IF EXISTS `llx_opensurvey_user_studs`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_opensurvey_user_studs` ( `id_users` int(11) NOT NULL AUTO_INCREMENT, - `nom` varchar(64) COLLATE utf8_unicode_ci NOT NULL, - `id_sondage` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `reponses` varchar(100) COLLATE utf8_unicode_ci NOT NULL, + `nom` varchar(64) COLLATE utf8mb3_unicode_ci NOT NULL, + `id_sondage` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `reponses` varchar(100) COLLATE utf8mb3_unicode_ci NOT NULL, PRIMARY KEY (`id_users`), KEY `idx_id_users` (`id_users`), KEY `idx_nom` (`nom`), @@ -8883,7 +9411,7 @@ CREATE TABLE `llx_opensurvey_user_studs` ( KEY `idx_opensurvey_user_studs_id_users` (`id_users`), KEY `idx_opensurvey_user_studs_nom` (`nom`), KEY `idx_opensurvey_user_studs_id_sondage` (`id_sondage`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8906,12 +9434,12 @@ DROP TABLE IF EXISTS `llx_overwrite_trans`; CREATE TABLE `llx_overwrite_trans` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `lang` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `transkey` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `transvalue` text COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `transkey` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `transvalue` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_overwrite_trans` (`lang`,`transkey`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8934,9 +9462,9 @@ CREATE TABLE `llx_packages_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8957,16 +9485,16 @@ DROP TABLE IF EXISTS `llx_paiement`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_paiement` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '', + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datep` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `fk_paiement` int(11) NOT NULL, - `num_paiement` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_paiement` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL DEFAULT 0, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, @@ -8974,10 +9502,10 @@ CREATE TABLE `llx_paiement` ( `fk_export_compta` int(11) NOT NULL DEFAULT 0, `pos_change` double(24,8) DEFAULT 0.00000000, `multicurrency_amount` double(24,8) DEFAULT 0.00000000, - `ext_payment_id` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ext_payment_site` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `ext_payment_id` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ext_payment_site` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=44 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -8986,7 +9514,7 @@ CREATE TABLE `llx_paiement` ( LOCK TABLES `llx_paiement` WRITE; /*!40000 ALTER TABLE `llx_paiement` DISABLE KEYS */; -INSERT INTO `llx_paiement` VALUES (3,'',NULL,1,'2013-07-18 20:50:47','2021-07-11 17:49:28','2021-07-08 12:00:00',10.00000000,4,'','',6,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(5,'',NULL,1,'2013-08-01 03:34:11','2022-02-07 13:37:54','2021-08-01 03:34:11',5.63000000,6,'','Payment Invoice FA1108-0003',8,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(6,'',NULL,1,'2013-08-06 20:33:54','2022-02-07 13:37:54','2021-08-06 20:33:53',5.98000000,4,'','Payment Invoice FA1108-0004',13,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(8,'',NULL,1,'2013-08-08 02:53:40','2022-02-07 13:37:54','2021-08-08 12:00:00',26.10000000,4,'','',14,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(9,'',NULL,1,'2013-08-08 02:55:58','2022-02-07 13:37:54','2021-08-08 12:00:00',26.96000000,1,'','',15,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(17,'',NULL,1,'2014-12-09 15:28:44','2022-02-07 13:37:54','2021-12-09 12:00:00',2.00000000,4,'','',16,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(18,'',NULL,1,'2014-12-09 15:28:53','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',17,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(19,'',NULL,1,'2014-12-09 17:35:55','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',18,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(20,'',NULL,1,'2014-12-09 17:37:02','2022-02-07 13:37:54','2021-12-09 12:00:00',2.00000000,4,'','',19,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(21,'',NULL,1,'2014-12-09 18:35:07','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',20,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(23,'',NULL,1,'2014-12-12 18:54:33','2022-02-07 13:37:54','2021-12-12 12:00:00',1.00000000,1,'','',21,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(24,'',NULL,1,'2015-03-06 16:48:16','2021-04-15 10:22:31','2021-03-06 00:00:00',20.00000000,4,'','Adhésion/cotisation 2016',22,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(25,'',NULL,1,'2015-03-20 14:30:11','2021-04-15 10:22:31','2021-03-20 00:00:00',10.00000000,2,'','Adhésion/cotisation 2011',23,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(26,'',NULL,1,'2016-03-02 19:57:58','2021-07-11 17:49:28','2021-07-09 12:00:00',605.00000000,2,'','',24,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(29,'',NULL,1,'2016-03-02 20:01:39','2021-04-15 10:22:31','2021-03-19 12:00:00',500.00000000,4,'','',26,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(30,'',NULL,1,'2016-03-02 20:02:06','2021-04-15 10:22:31','2021-03-21 12:00:00',400.00000000,2,'','',27,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(32,'',NULL,1,'2016-03-03 19:22:32','2022-02-07 13:37:54','2021-10-03 12:00:00',-400.00000000,4,'','',28,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(33,'',NULL,1,'2016-03-03 19:23:16','2021-04-15 10:22:31','2021-03-10 12:00:00',-300.00000000,4,'','',29,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(34,'PAY1603-0001',NULL,1,'2017-02-06 08:10:24','2021-04-15 10:22:31','2021-03-22 12:00:00',150.00000000,7,'','',33,12,NULL,0,0,0.00000000,150.00000000,NULL,NULL),(35,'PAY1603-0002',NULL,1,'2017-02-06 08:10:50','2021-04-15 10:22:31','2021-03-25 12:00:00',140.00000000,3,'','',34,12,NULL,0,0,0.00000000,140.00000000,NULL,NULL),(36,'PAY1702-0003',NULL,1,'2017-02-21 16:07:43','2021-04-15 10:22:31','2021-02-21 12:00:00',50.00000000,3,'T170201','',37,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(38,'PAY1803-0004',NULL,1,'2018-03-16 13:59:31','2021-04-15 10:22:31','2021-03-16 12:00:00',10.00000000,7,'','',39,12,NULL,0,0,0.00000000,10.00000000,NULL,NULL),(39,'PAY1801-0005',NULL,1,'2019-10-04 10:28:14','2022-02-07 13:37:54','2022-01-19 12:00:00',5.63000000,4,'','',41,12,NULL,0,0,0.00000000,5.63000000,NULL,NULL),(40,'PAY2001-0006',NULL,1,'2020-01-16 02:36:48','2022-02-07 13:37:54','2022-01-16 12:00:00',20.50000000,2,'','',50,12,NULL,0,0,0.00000000,20.50000000,NULL,NULL),(41,'PAY2001-0007',NULL,1,'2020-01-21 10:23:17','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,7,'','Subscription 2017',53,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(42,'PAY2001-0008',NULL,1,'2020-01-21 10:23:28','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,7,'','Subscription 2018',54,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(43,'PAY2001-0009',NULL,1,'2020-01-21 10:23:49','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,6,'','Subscription 2019',55,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL); +INSERT INTO `llx_paiement` VALUES (3,'',NULL,1,'2013-07-18 20:50:47','2021-07-11 17:49:28','2021-07-08 12:00:00',10.00000000,4,'','',6,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(5,'',NULL,1,'2013-08-01 03:34:11','2022-02-07 13:37:54','2021-08-01 03:34:11',5.63000000,6,'','Payment Invoice FA1108-0003',8,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(6,'',NULL,1,'2013-08-06 20:33:54','2022-02-07 13:37:54','2021-08-06 20:33:53',5.98000000,4,'','Payment Invoice FA1108-0004',13,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(8,'',NULL,1,'2013-08-08 02:53:40','2022-02-07 13:37:54','2021-08-08 12:00:00',26.10000000,4,'','',14,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(9,'',NULL,1,'2013-08-08 02:55:58','2022-02-07 13:37:54','2021-08-08 12:00:00',26.96000000,1,'','',15,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(17,'',NULL,1,'2014-12-09 15:28:44','2022-02-07 13:37:54','2021-12-09 12:00:00',2.00000000,4,'','',16,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(18,'',NULL,1,'2014-12-09 15:28:53','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',17,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(19,'',NULL,1,'2014-12-09 17:35:55','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',18,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(20,'',NULL,1,'2014-12-09 17:37:02','2022-02-07 13:37:54','2021-12-09 12:00:00',2.00000000,4,'','',19,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(21,'',NULL,1,'2014-12-09 18:35:07','2022-02-07 13:37:54','2021-12-09 12:00:00',-2.00000000,4,'','',20,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(23,'',NULL,1,'2014-12-12 18:54:33','2022-02-07 13:37:54','2021-12-12 12:00:00',1.00000000,1,'','',21,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(24,'',NULL,1,'2015-03-06 16:48:16','2022-07-04 01:11:35','2022-03-06 00:00:00',20.00000000,4,'','Adhésion/cotisation 2016',22,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(25,'',NULL,1,'2015-03-20 14:30:11','2022-07-04 01:11:35','2022-03-20 00:00:00',10.00000000,2,'','Adhésion/cotisation 2011',23,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(26,'',NULL,1,'2016-03-02 19:57:58','2021-07-11 17:49:28','2021-07-09 12:00:00',605.00000000,2,'','',24,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(29,'',NULL,1,'2016-03-02 20:01:39','2022-07-04 01:11:35','2022-03-19 12:00:00',500.00000000,4,'','',26,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(30,'',NULL,1,'2016-03-02 20:02:06','2022-07-04 01:11:35','2022-03-21 12:00:00',400.00000000,2,'','',27,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(32,'',NULL,1,'2016-03-03 19:22:32','2022-02-07 13:37:54','2021-10-03 12:00:00',-400.00000000,4,'','',28,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(33,'',NULL,1,'2016-03-03 19:23:16','2022-07-04 01:11:35','2022-03-10 12:00:00',-300.00000000,4,'','',29,1,NULL,0,0,0.00000000,0.00000000,NULL,NULL),(34,'PAY1603-0001',NULL,1,'2017-02-06 08:10:24','2022-07-04 01:11:35','2022-03-22 12:00:00',150.00000000,7,'','',33,12,NULL,0,0,0.00000000,150.00000000,NULL,NULL),(35,'PAY1603-0002',NULL,1,'2017-02-06 08:10:50','2022-07-04 01:11:35','2022-03-25 12:00:00',140.00000000,3,'','',34,12,NULL,0,0,0.00000000,140.00000000,NULL,NULL),(36,'PAY1702-0003',NULL,1,'2017-02-21 16:07:43','2022-07-04 01:11:35','2022-02-21 12:00:00',50.00000000,3,'T170201','',37,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(38,'PAY1803-0004',NULL,1,'2018-03-16 13:59:31','2022-07-04 01:11:35','2022-03-16 12:00:00',10.00000000,7,'','',39,12,NULL,0,0,0.00000000,10.00000000,NULL,NULL),(39,'PAY1801-0005',NULL,1,'2019-10-04 10:28:14','2022-02-07 13:37:54','2022-01-19 12:00:00',5.63000000,4,'','',41,12,NULL,0,0,0.00000000,5.63000000,NULL,NULL),(40,'PAY2001-0006',NULL,1,'2020-01-16 02:36:48','2022-02-07 13:37:54','2022-01-16 12:00:00',20.50000000,2,'','',50,12,NULL,0,0,0.00000000,20.50000000,NULL,NULL),(41,'PAY2001-0007',NULL,1,'2020-01-21 10:23:17','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,7,'','Subscription 2017',53,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(42,'PAY2001-0008',NULL,1,'2020-01-21 10:23:28','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,7,'','Subscription 2018',54,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL),(43,'PAY2001-0009',NULL,1,'2020-01-21 10:23:49','2022-02-07 13:37:54','2022-01-21 00:00:00',50.00000000,6,'','Subscription 2019',55,12,NULL,0,0,0.00000000,50.00000000,NULL,NULL); /*!40000 ALTER TABLE `llx_paiement` ENABLE KEYS */; UNLOCK TABLES; @@ -9003,7 +9531,7 @@ CREATE TABLE `llx_paiement_facture` ( `fk_facture` int(11) DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `multicurrency_amount` double(24,8) DEFAULT 0.00000000, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_paiement_facture` (`fk_paiement`,`fk_facture`), @@ -9011,7 +9539,7 @@ CREATE TABLE `llx_paiement_facture` ( KEY `idx_paiement_facture_fk_paiement` (`fk_paiement`), CONSTRAINT `fk_paiement_facture_fk_facture` FOREIGN KEY (`fk_facture`) REFERENCES `llx_facture` (`rowid`), CONSTRAINT `fk_paiement_facture_fk_paiement` FOREIGN KEY (`fk_paiement`) REFERENCES `llx_paiement` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9039,13 +9567,13 @@ CREATE TABLE `llx_paiementcharge` ( `datep` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `fk_typepaiement` int(11) NOT NULL, - `num_paiement` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_paiement` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9067,7 +9595,7 @@ DROP TABLE IF EXISTS `llx_paiementfourn`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_paiementfourn` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, @@ -9076,14 +9604,14 @@ CREATE TABLE `llx_paiementfourn` ( `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_paiement` int(11) NOT NULL, - `num_paiement` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_paiement` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `statut` smallint(6) NOT NULL DEFAULT 0, `multicurrency_amount` double(24,8) DEFAULT 0.00000000, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9109,13 +9637,13 @@ CREATE TABLE `llx_paiementfourn_facturefourn` ( `fk_facturefourn` int(11) DEFAULT NULL, `amount` double DEFAULT 0, `multicurrency_amount` double(24,8) DEFAULT 0.00000000, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_paiementfourn_facturefourn` (`fk_paiementfourn`,`fk_facturefourn`), KEY `idx_paiementfourn_facturefourn_fk_facture` (`fk_facturefourn`), KEY `idx_paiementfourn_facturefourn_fk_paiement` (`fk_paiementfourn`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9137,27 +9665,30 @@ DROP TABLE IF EXISTS `llx_partnership`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_partnership` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '(PROV)', + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '(PROV)', `status` smallint(6) NOT NULL DEFAULT 0, `fk_soc` int(11) DEFAULT NULL, `fk_member` int(11) DEFAULT NULL, `date_partnership_start` date NOT NULL, `date_partnership_end` date DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `reason_decline_or_cancel` text COLLATE utf8_unicode_ci DEFAULT NULL, + `reason_decline_or_cancel` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `fk_user_creat` int(11) NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_modif` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `count_last_url_check_error` int(11) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `last_check_backlink` datetime DEFAULT NULL, `fk_type` int(11) NOT NULL DEFAULT 0, + `url_to_check` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), + UNIQUE KEY `uk_fk_type_fk_soc` (`fk_type`,`fk_soc`,`date_partnership_start`), + UNIQUE KEY `uk_fk_type_fk_member` (`fk_type`,`fk_member`,`date_partnership_start`), KEY `idx_partnership_rowid` (`rowid`), KEY `idx_partnership_ref` (`ref`), KEY `idx_partnership_fk_soc` (`fk_soc`), @@ -9165,7 +9696,7 @@ CREATE TABLE `llx_partnership` ( KEY `idx_partnership_status` (`status`), KEY `idx_partnership_fk_member` (`fk_member`), CONSTRAINT `llx_partnership_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9188,10 +9719,10 @@ CREATE TABLE `llx_partnership_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_partnership_fk_object` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9218,15 +9749,15 @@ CREATE TABLE `llx_payment_donation` ( `datep` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `ext_payment_id` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ext_payment_site` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ext_payment_id` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ext_payment_site` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9254,13 +9785,13 @@ CREATE TABLE `llx_payment_expensereport` ( `datep` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9290,14 +9821,14 @@ CREATE TABLE `llx_payment_loan` ( `amount_insurance` double(24,8) DEFAULT NULL, `amount_interest` double(24,8) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9318,7 +9849,7 @@ DROP TABLE IF EXISTS `llx_payment_salary`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_payment_salary` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, @@ -9328,12 +9859,12 @@ CREATE TABLE `llx_payment_salary` ( `amount` double(24,8) DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datesp` date DEFAULT NULL, `dateep` date DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, @@ -9345,7 +9876,7 @@ CREATE TABLE `llx_payment_salary` ( KEY `idx_payment_salary_datesp` (`datesp`), KEY `idx_payment_salary_dateep` (`dateep`), CONSTRAINT `fk_payment_salary_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9369,10 +9900,10 @@ CREATE TABLE `llx_payment_salary_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_payment_salary_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9393,7 +9924,7 @@ DROP TABLE IF EXISTS `llx_payment_various`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_payment_various` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, `datep` date DEFAULT NULL, @@ -9401,18 +9932,18 @@ CREATE TABLE `llx_payment_various` ( `sens` smallint(6) NOT NULL DEFAULT 0, `amount` double(24,8) NOT NULL DEFAULT 0.00000000, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `subledger_account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `subledger_account` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9440,13 +9971,13 @@ CREATE TABLE `llx_payment_vat` ( `datep` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT 0.00000000, `fk_typepaiement` int(11) NOT NULL, - `num_paiement` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `num_paiement` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) NOT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9468,8 +9999,8 @@ DROP TABLE IF EXISTS `llx_pos_cash_fence`; CREATE TABLE `llx_pos_cash_fence` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `opening` double(24,8) DEFAULT 0.00000000, `cash` double(24,8) DEFAULT 0.00000000, `card` double(24,8) DEFAULT 0.00000000, @@ -9480,14 +10011,14 @@ CREATE TABLE `llx_pos_cash_fence` ( `day_close` int(11) DEFAULT NULL, `month_close` int(11) DEFAULT NULL, `year_close` int(11) DEFAULT NULL, - `posmodule` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `posnumber` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `posmodule` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `posnumber` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9509,22 +10040,22 @@ DROP TABLE IF EXISTS `llx_prelevement_bons`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_prelevement_bons` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, `statut` smallint(6) DEFAULT 0, `credite` smallint(6) DEFAULT 0, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_trans` datetime DEFAULT NULL, `method_trans` smallint(6) DEFAULT NULL, `fk_user_trans` int(11) DEFAULT NULL, `date_credit` datetime DEFAULT NULL, `fk_user_credit` int(11) DEFAULT NULL, - `type` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'debit-order', + `type` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'debit-order', PRIMARY KEY (`rowid`), UNIQUE KEY `uk_prelevement_bons_ref` (`ref`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9552,7 +10083,7 @@ CREATE TABLE `llx_prelevement_facture` ( PRIMARY KEY (`rowid`), KEY `idx_prelevement_facture_fk_prelevement_lignes` (`fk_prelevement_lignes`), CONSTRAINT `fk_prelevement_facture_fk_prelevement_lignes` FOREIGN KEY (`fk_prelevement_lignes`) REFERENCES `llx_prelevement_lignes` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9581,19 +10112,19 @@ CREATE TABLE `llx_prelevement_facture_demande` ( `date_traite` datetime DEFAULT NULL, `fk_prelevement_bons` int(11) DEFAULT NULL, `fk_user_demande` int(11) NOT NULL, - `code_banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_guichet` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_rib` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `code_banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_guichet` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_rib` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT NULL, - `sourcetype` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `ext_payment_id` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ext_payment_site` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `sourcetype` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ext_payment_id` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ext_payment_site` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_facture_fourn` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_prelevement_facture_demande_fk_facture` (`fk_facture`), KEY `idx_prelevement_facture_demande_fk_facture_fourn` (`fk_facture_fourn`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9618,17 +10149,17 @@ CREATE TABLE `llx_prelevement_lignes` ( `fk_prelevement_bons` int(11) DEFAULT NULL, `fk_soc` int(11) NOT NULL, `statut` smallint(6) DEFAULT 0, - `client_nom` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `client_nom` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, - `code_banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_guichet` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_rib` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `code_banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_guichet` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_rib` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_prelevement_lignes_fk_prelevement_bons` (`fk_prelevement_bons`), CONSTRAINT `fk_prelevement_lignes_fk_prelevement_bons` FOREIGN KEY (`fk_prelevement_bons`) REFERENCES `llx_prelevement_bons` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9655,11 +10186,11 @@ CREATE TABLE `llx_prelevement_rejet` ( `motif` int(11) DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `fk_user_creation` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `afacturer` tinyint(4) DEFAULT 0, `fk_facture` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9682,15 +10213,15 @@ CREATE TABLE `llx_printing` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, - `printer_name` text COLLATE utf8_unicode_ci NOT NULL, - `printer_location` text COLLATE utf8_unicode_ci NOT NULL, - `printer_id` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `printer_name` text COLLATE utf8mb3_unicode_ci NOT NULL, + `printer_location` text COLLATE utf8mb3_unicode_ci NOT NULL, + `printer_id` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `copy` int(11) NOT NULL DEFAULT 1, - `module` varchar(16) COLLATE utf8_unicode_ci NOT NULL, - `driver` varchar(16) COLLATE utf8_unicode_ci NOT NULL, + `module` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, + `driver` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL, `userid` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9715,25 +10246,25 @@ CREATE TABLE `llx_product` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `virtual` tinyint(4) NOT NULL DEFAULT 0, `fk_parent` int(11) DEFAULT 0, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `customcode` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `customcode` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_country` int(11) DEFAULT NULL, `price` double(24,8) DEFAULT 0.00000000, `price_ttc` double(24,8) DEFAULT 0.00000000, `price_min` double(24,8) DEFAULT 0.00000000, `price_min_ttc` double(24,8) DEFAULT 0.00000000, - `price_base_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'HT', + `price_base_type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'HT', `tva_tx` double(6,3) DEFAULT NULL, `recuperableonly` int(11) NOT NULL DEFAULT 0, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `tosell` tinyint(4) DEFAULT 1, @@ -9741,18 +10272,18 @@ CREATE TABLE `llx_product` ( `onportal` smallint(6) DEFAULT 0, `tobatch` tinyint(4) NOT NULL DEFAULT 0, `fk_product_type` int(11) DEFAULT 0, - `duration` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `duration` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `seuil_stock_alerte` float DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `barcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `barcode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT NULL, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell_intra` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell_export` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy_intra` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy_export` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `partnumber` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell_intra` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell_export` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy_intra` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy_export` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `partnumber` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `weight` float DEFAULT NULL, `weight_units` tinyint(4) DEFAULT NULL, `length` float DEFAULT NULL, @@ -9765,18 +10296,18 @@ CREATE TABLE `llx_product` ( `pmp` double(24,8) NOT NULL DEFAULT 0.00000000, `fifo` double(24,8) DEFAULT NULL, `lifo` double(24,8) DEFAULT NULL, - `canvas` varchar(32) COLLATE utf8_unicode_ci DEFAULT 'default@product', + `canvas` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT 'default@product', `finished` tinyint(4) DEFAULT NULL, `hidden` tinyint(4) DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `desiredstock` float DEFAULT NULL, `fk_price_expression` int(11) DEFAULT NULL, `fk_unit` int(11) DEFAULT NULL, `cost_price` double(24,8) DEFAULT NULL, - `default_vat_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_vat_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `price_autogen` smallint(6) DEFAULT 0, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT '', + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT '', `width` float DEFAULT NULL, `width_units` tinyint(4) DEFAULT NULL, `height` float DEFAULT NULL, @@ -9786,7 +10317,7 @@ CREATE TABLE `llx_product` ( `net_measure` float DEFAULT NULL, `net_measure_units` tinyint(4) DEFAULT NULL, `fk_state` int(11) DEFAULT NULL, - `batch_mask` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch_mask` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `lifetime` int(11) DEFAULT NULL, `qc_frequency` int(11) DEFAULT NULL, `mandatory_period` tinyint(4) DEFAULT 0, @@ -9810,7 +10341,7 @@ CREATE TABLE `llx_product` ( CONSTRAINT `fk_product_finished` FOREIGN KEY (`finished`) REFERENCES `llx_c_product_nature` (`code`), CONSTRAINT `fk_product_fk_country` FOREIGN KEY (`fk_country`) REFERENCES `llx_c_country` (`rowid`), CONSTRAINT `fk_product_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9841,7 +10372,7 @@ CREATE TABLE `llx_product_association` ( UNIQUE KEY `uk_product_association` (`fk_product_pere`,`fk_product_fils`), KEY `idx_product_association` (`fk_product_fils`), KEY `idx_product_association_fils` (`fk_product_fils`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9863,15 +10394,15 @@ DROP TABLE IF EXISTS `llx_product_attribute`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_product_attribute` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `rang` int(11) NOT NULL DEFAULT 0, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `position` int(11) NOT NULL DEFAULT 0, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_attribute_ref` (`ref`), UNIQUE KEY `unique_ref` (`ref`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9898,12 +10429,12 @@ CREATE TABLE `llx_product_attribute_combination` ( `variation_price` float NOT NULL, `variation_price_percentage` int(11) DEFAULT NULL, `variation_weight` float NOT NULL, - `variation_ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `variation_ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), KEY `idx_product_att_com_product_parent` (`fk_product_parent`), KEY `idx_product_att_com_product_child` (`fk_product_child`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -9928,7 +10459,7 @@ CREATE TABLE `llx_product_attribute_combination2val` ( `fk_prod_attr` int(11) NOT NULL, `fk_prod_attr_val` int(11) NOT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10003,7 +10534,7 @@ CREATE TABLE `llx_product_attribute_combination_price_level` ( UNIQUE KEY `fk_product_attribute_combinati_47` (`fk_product_attribute_combination`,`fk_price_level`), UNIQUE KEY `fk_product_attribute_combinati_48` (`fk_product_attribute_combination`,`fk_price_level`), UNIQUE KEY `fk_product_attribute_combinati_49` (`fk_product_attribute_combination`,`fk_price_level`) -) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10026,12 +10557,13 @@ DROP TABLE IF EXISTS `llx_product_attribute_value`; CREATE TABLE `llx_product_attribute_value` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_product_attribute` int(11) NOT NULL, - `ref` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(180) COLLATE utf8mb3_unicode_ci NOT NULL, + `value` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, + `position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_attribute_value` (`fk_product_attribute`,`ref`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10040,7 +10572,7 @@ CREATE TABLE `llx_product_attribute_value` ( LOCK TABLES `llx_product_attribute_value` WRITE; /*!40000 ALTER TABLE `llx_product_attribute_value` DISABLE KEYS */; -INSERT INTO `llx_product_attribute_value` VALUES (1,1,'BLUE','Blue',1),(2,1,'RED','Red',1),(3,2,'L','Size L',1),(4,2,'XL','Size XL',1),(5,2,'S','Size S',1); +INSERT INTO `llx_product_attribute_value` VALUES (1,1,'BLUE','Blue',1,0),(2,1,'RED','Red',1,0),(3,2,'L','Size L',1,0),(4,2,'XL','Size XL',1,0),(5,2,'S','Size S',1,0); /*!40000 ALTER TABLE `llx_product_attribute_value` ENABLE KEYS */; UNLOCK TABLES; @@ -10057,15 +10589,15 @@ CREATE TABLE `llx_product_batch` ( `fk_product_stock` int(11) NOT NULL, `eatby` datetime DEFAULT NULL, `sellby` datetime DEFAULT NULL, - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double NOT NULL DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_batch` (`fk_product_stock`,`batch`), KEY `idx_fk_product_stock` (`fk_product_stock`), KEY `idx_batch` (`batch`), CONSTRAINT `fk_product_batch_fk_product_stock` FOREIGN KEY (`fk_product_stock`) REFERENCES `llx_product_stock` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10096,17 +10628,17 @@ CREATE TABLE `llx_product_customer_price` ( `price_ttc` double(24,8) DEFAULT 0.00000000, `price_min` double(24,8) DEFAULT 0.00000000, `price_min_ttc` double(24,8) DEFAULT 0.00000000, - `price_base_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'HT', + `price_base_type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'HT', `tva_tx` double(6,3) DEFAULT NULL, - `default_vat_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_vat_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `recuperableonly` int(11) NOT NULL DEFAULT 0, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `fk_user` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_customer` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_customer` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_customer_price_fk_product_fk_soc` (`fk_product`,`fk_soc`), KEY `idx_product_customer_price_fk_user` (`fk_user`), @@ -10117,7 +10649,7 @@ CREATE TABLE `llx_product_customer_price` ( CONSTRAINT `fk_product_customer_price_fk_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`), CONSTRAINT `fk_product_customer_price_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_product_customer_price_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10147,19 +10679,19 @@ CREATE TABLE `llx_product_customer_price_log` ( `price_ttc` double(24,8) DEFAULT 0.00000000, `price_min` double(24,8) DEFAULT 0.00000000, `price_min_ttc` double(24,8) DEFAULT 0.00000000, - `price_base_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'HT', + `price_base_type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'HT', `tva_tx` double(6,3) DEFAULT NULL, `recuperableonly` int(11) NOT NULL DEFAULT 0, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `fk_user` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `default_vat_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_customer` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `default_vat_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_customer` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10182,10 +10714,10 @@ CREATE TABLE `llx_product_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_product_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10210,8 +10742,8 @@ CREATE TABLE `llx_product_fournisseur_price` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_product` int(11) DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, - `ref_fourn` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `desc_fourn` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_fourn` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `desc_fourn` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_availability` int(11) DEFAULT NULL, `price` double(24,8) DEFAULT 0.00000000, `quantity` double DEFAULT NULL, @@ -10220,27 +10752,27 @@ CREATE TABLE `llx_product_fournisseur_price` ( `unitprice` double(24,8) DEFAULT 0.00000000, `charges` double(24,8) DEFAULT 0.00000000, `tva_tx` double(6,3) NOT NULL DEFAULT 0.000, - `default_vat_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_vat_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `info_bits` int(11) NOT NULL DEFAULT 0, `fk_user` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_supplier_price_expression` int(11) DEFAULT NULL, `fk_price_expression` int(11) DEFAULT NULL, `delivery_time_days` int(11) DEFAULT NULL, - `supplier_reputation` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `supplier_reputation` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_unitprice` double(24,8) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_price` double(24,8) DEFAULT NULL, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `barcode` varchar(180) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `barcode` varchar(180) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT NULL, - `packaging` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `packaging` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_fournisseur_price_ref` (`ref_fourn`,`fk_soc`,`quantity`,`entity`), UNIQUE KEY `uk_product_barcode` (`barcode`,`fk_barcode_type`,`entity`), @@ -10252,7 +10784,7 @@ CREATE TABLE `llx_product_fournisseur_price` ( CONSTRAINT `fk_product_fournisseur_price_barcode_type` FOREIGN KEY (`fk_barcode_type`) REFERENCES `llx_c_barcode_type` (`rowid`), CONSTRAINT `fk_product_fournisseur_price_fk_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`), CONSTRAINT `fk_product_fournisseur_price_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10276,10 +10808,10 @@ CREATE TABLE `llx_product_fournisseur_price_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_product_fournisseur_price_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10307,12 +10839,12 @@ CREATE TABLE `llx_product_fournisseur_price_log` ( `quantity` double DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_price` double(24,8) DEFAULT NULL, `multicurrency_unitprice` double(24,8) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10335,15 +10867,15 @@ DROP TABLE IF EXISTS `llx_product_lang`; CREATE TABLE `llx_product_lang` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_product` int(11) NOT NULL DEFAULT 0, - `lang` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_lang` (`fk_product`,`lang`), CONSTRAINT `fk_product_lang_fk_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10367,7 +10899,7 @@ CREATE TABLE `llx_product_lot` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, `fk_product` int(11) NOT NULL, - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `eatby` date DEFAULT NULL, `sellby` date DEFAULT NULL, `datec` datetime DEFAULT NULL, @@ -10378,11 +10910,11 @@ CREATE TABLE `llx_product_lot` ( `eol_date` datetime DEFAULT NULL, `manufacturing_date` datetime DEFAULT NULL, `scrapping_date` datetime DEFAULT NULL, - `barcode` varchar(180) COLLATE utf8_unicode_ci DEFAULT NULL, + `barcode` varchar(180) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_lot` (`fk_product`,`batch`) -) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10406,10 +10938,10 @@ CREATE TABLE `llx_product_lot_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_product_lot_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10432,16 +10964,16 @@ CREATE TABLE `llx_product_perentity` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_product` int(11) DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell_intra` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell_export` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy_intra` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy_export` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell_intra` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell_export` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy_intra` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy_export` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_perentity` (`fk_product`,`entity`), KEY `idx_product_perentity_fk_product` (`fk_product`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10471,21 +11003,21 @@ CREATE TABLE `llx_product_price` ( `price_ttc` double(24,8) DEFAULT NULL, `price_min` double(24,8) DEFAULT NULL, `price_min_ttc` double(24,8) DEFAULT NULL, - `price_base_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'HT', + `price_base_type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'HT', `tva_tx` double(6,3) NOT NULL DEFAULT 0.000, - `default_vat_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_vat_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `recuperableonly` int(11) NOT NULL DEFAULT 0, `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `fk_user_author` int(11) DEFAULT NULL, `tosell` tinyint(4) DEFAULT 1, `price_by_qty` int(11) NOT NULL DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_price_expression` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_price` double(24,8) DEFAULT 0.00000000, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_price_ttc` double(24,8) DEFAULT NULL, @@ -10494,7 +11026,7 @@ CREATE TABLE `llx_product_price` ( KEY `idx_product_price_fk_product` (`fk_product`), CONSTRAINT `fk_product_price_product` FOREIGN KEY (`fk_product`) REFERENCES `llx_product` (`rowid`), CONSTRAINT `fk_product_price_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=42 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10525,12 +11057,12 @@ CREATE TABLE `llx_product_price_by_qty` ( `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `quantity` double DEFAULT NULL, `unitprice` double(24,8) DEFAULT 0.00000000, - `price_base_type` varchar(3) COLLATE utf8_unicode_ci DEFAULT 'HT', + `price_base_type` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT 'HT', `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_price` double(24,8) DEFAULT NULL, `multicurrency_price_ttc` double(24,8) DEFAULT NULL, @@ -10538,7 +11070,7 @@ CREATE TABLE `llx_product_price_by_qty` ( UNIQUE KEY `uk_product_price_by_qty_level` (`fk_product_price`,`quantity`), KEY `idx_product_price_by_qty_fk_product_price` (`fk_product_price`), CONSTRAINT `fk_product_price_by_qty_fk_product_price` FOREIGN KEY (`fk_product_price`) REFERENCES `llx_product_price` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10565,7 +11097,7 @@ CREATE TABLE `llx_product_pricerules` ( `var_min_percent` float NOT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `unique_level` (`level`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10590,12 +11122,12 @@ CREATE TABLE `llx_product_stock` ( `fk_product` int(11) NOT NULL, `fk_entrepot` int(11) NOT NULL, `reel` double DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_product_stock` (`fk_product`,`fk_entrepot`), KEY `idx_product_stock_fk_product` (`fk_product`), KEY `idx_product_stock_fk_entrepot` (`fk_entrepot`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10622,9 +11154,9 @@ CREATE TABLE `llx_product_warehouse_properties` ( `fk_entrepot` int(11) NOT NULL, `seuil_stock_alerte` float DEFAULT 0, `desiredstock` float DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10650,30 +11182,30 @@ CREATE TABLE `llx_projet` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `dateo` date DEFAULT NULL, `datee` date DEFAULT NULL, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) NOT NULL, `public` int(11) DEFAULT NULL, `fk_statut` smallint(6) NOT NULL DEFAULT 0, `fk_opp_status` int(11) DEFAULT NULL, `opp_percent` double(5,2) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `budget_amount` double(24,8) DEFAULT NULL, `date_close` datetime DEFAULT NULL, `fk_user_close` int(11) DEFAULT NULL, `opp_amount` double(24,8) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `usage_bill_time` int(11) DEFAULT 0, `usage_opportunity` int(11) DEFAULT 0, `usage_task` int(11) DEFAULT 1, `usage_organize_event` int(11) DEFAULT 0, - `email_msgid` varchar(175) COLLATE utf8_unicode_ci DEFAULT NULL, + `email_msgid` varchar(175) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_opp_status_end` int(11) DEFAULT NULL, `accept_conference_suggestions` int(11) DEFAULT 0, `accept_booth_suggestions` int(11) DEFAULT 0, @@ -10684,7 +11216,7 @@ CREATE TABLE `llx_projet` ( UNIQUE KEY `uk_projet_ref` (`ref`,`entity`), KEY `idx_projet_fk_soc` (`fk_soc`), CONSTRAINT `fk_projet_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10708,11 +11240,11 @@ CREATE TABLE `llx_projet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `priority` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `priority` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_projet_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10734,7 +11266,7 @@ DROP TABLE IF EXISTS `llx_projet_task`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_projet_task` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_projet` int(11) NOT NULL, `fk_task_parent` int(11) NOT NULL DEFAULT 0, @@ -10743,8 +11275,8 @@ CREATE TABLE `llx_projet_task` ( `dateo` datetime DEFAULT NULL, `datee` datetime DEFAULT NULL, `datev` datetime DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `duration_effective` double DEFAULT 0, `planned_workload` double DEFAULT 0, `progress` int(11) DEFAULT 0, @@ -10753,11 +11285,12 @@ CREATE TABLE `llx_projet_task` ( `fk_user_creat` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, `fk_statut` smallint(6) NOT NULL DEFAULT 0, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `rang` int(11) DEFAULT 0, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `status` int(11) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_projet_task_ref` (`ref`,`entity`), KEY `idx_projet_task_fk_projet` (`fk_projet`), @@ -10766,7 +11299,7 @@ CREATE TABLE `llx_projet_task` ( CONSTRAINT `fk_projet_task_fk_projet` FOREIGN KEY (`fk_projet`) REFERENCES `llx_projet` (`rowid`), CONSTRAINT `fk_projet_task_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_projet_task_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10775,7 +11308,7 @@ CREATE TABLE `llx_projet_task` ( LOCK TABLES `llx_projet_task` WRITE; /*!40000 ALTER TABLE `llx_projet_task` DISABLE KEYS */; -INSERT INTO `llx_projet_task` VALUES (2,'2',1,5,0,'2012-07-11 16:23:53','2015-09-08 23:06:14','2012-07-11 12:00:00','2013-07-14 12:00:00',NULL,'Heberger site RMLL','',0,0,0,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL),(3,'TK1007-0001',1,1,0,'2016-12-21 13:52:41','2018-07-30 11:35:40','2016-12-21 16:52:00',NULL,NULL,'Analyze','',9000,36000,0,0,NULL,1,NULL,0,NULL,'gdfgdfgdf',0,NULL,NULL),(4,'TK1007-0002',1,1,0,'2016-12-21 13:55:39','2020-06-12 17:13:30','2016-12-21 16:55:00',NULL,NULL,'Specification','',10800,18000,25,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL),(5,'TK1007-0003',1,1,0,'2016-12-21 14:16:58','2018-07-30 11:35:59','2016-12-21 17:16:00',NULL,NULL,'Development','',0,0,0,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL),(6,'TK1607-0004',1,6,0,'2018-07-30 15:33:27','2018-07-30 11:34:47','2018-07-30 02:00:00',NULL,NULL,'Project preparation phase A','',75600,720000,10,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL),(7,'TK1607-0005',1,6,0,'2018-07-30 15:33:39','2017-01-30 11:23:39','2018-07-30 02:00:00',NULL,NULL,'Project preparation phase B','',40260,1080000,5,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL),(8,'TK1607-0006',1,6,0,'2018-07-30 15:33:53','2018-07-30 11:33:53','2018-07-30 02:00:00',NULL,NULL,'Project execution phase A','',0,162000,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL),(9,'TK1607-0007',1,6,0,'2018-07-30 15:34:09','2018-07-30 11:34:09','2018-10-27 02:00:00',NULL,NULL,'Project execution phase B','',0,2160000,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL),(10,'TK1007-0008',1,1,0,'2018-07-30 15:36:31','2018-07-30 11:36:31','2018-07-30 02:00:00',NULL,NULL,'Tests','',0,316800,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL); +INSERT INTO `llx_projet_task` VALUES (2,'2',1,5,0,'2012-07-11 16:23:53','2015-09-08 23:06:14','2012-07-11 12:00:00','2013-07-14 12:00:00',NULL,'Heberger site RMLL','',0,0,0,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL,1),(3,'TK1007-0001',1,1,0,'2016-12-21 13:52:41','2018-07-30 11:35:40','2016-12-21 16:52:00',NULL,NULL,'Analyze','',9000,36000,0,0,NULL,1,NULL,0,NULL,'gdfgdfgdf',0,NULL,NULL,1),(4,'TK1007-0002',1,1,0,'2016-12-21 13:55:39','2020-06-12 17:13:30','2016-12-21 16:55:00',NULL,NULL,'Specification','',10800,18000,25,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL,1),(5,'TK1007-0003',1,1,0,'2016-12-21 14:16:58','2018-07-30 11:35:59','2016-12-21 17:16:00',NULL,NULL,'Development','',0,0,0,0,NULL,1,NULL,0,NULL,NULL,0,NULL,NULL,1),(6,'TK1607-0004',1,6,0,'2018-07-30 15:33:27','2018-07-30 11:34:47','2018-07-30 02:00:00',NULL,NULL,'Project preparation phase A','',75600,720000,10,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL,1),(7,'TK1607-0005',1,6,0,'2018-07-30 15:33:39','2017-01-30 11:23:39','2018-07-30 02:00:00',NULL,NULL,'Project preparation phase B','',40260,1080000,5,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL,1),(8,'TK1607-0006',1,6,0,'2018-07-30 15:33:53','2018-07-30 11:33:53','2018-07-30 02:00:00',NULL,NULL,'Project execution phase A','',0,162000,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL,1),(9,'TK1607-0007',1,6,0,'2018-07-30 15:34:09','2018-07-30 11:34:09','2018-10-27 02:00:00',NULL,NULL,'Project execution phase B','',0,2160000,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL,1),(10,'TK1007-0008',1,1,0,'2018-07-30 15:36:31','2018-07-30 11:36:31','2018-07-30 02:00:00',NULL,NULL,'Tests','',0,316800,0,0,NULL,12,NULL,0,NULL,NULL,0,NULL,NULL,1); /*!40000 ALTER TABLE `llx_projet_task` ENABLE KEYS */; UNLOCK TABLES; @@ -10790,10 +11323,10 @@ CREATE TABLE `llx_projet_task_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_projet_task_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10821,17 +11354,20 @@ CREATE TABLE `llx_projet_task_time` ( `task_duration` double DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `thm` double(24,8) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `invoice_id` int(11) DEFAULT NULL, `invoice_line_id` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `intervention_id` int(11) DEFAULT NULL, + `intervention_line_id` int(11) DEFAULT NULL, + `fk_product` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_projet_task_time_task` (`fk_task`), KEY `idx_projet_task_time_date` (`task_date`), KEY `idx_projet_task_time_datehour` (`task_datehour`) -) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10840,7 +11376,7 @@ CREATE TABLE `llx_projet_task_time` ( LOCK TABLES `llx_projet_task_time` WRITE; /*!40000 ALTER TABLE `llx_projet_task_time` DISABLE KEYS */; -INSERT INTO `llx_projet_task_time` VALUES (2,4,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,'',NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(3,4,'2016-12-18','2016-12-18 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(4,3,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(5,3,'2016-12-21','2016-12-21 12:00:00',0,1800,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(6,3,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(7,6,'2018-07-25','2018-07-25 00:00:00',0,18000,12,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(8,6,'2018-07-26','2018-07-26 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(9,6,'2018-07-27','2018-07-27 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(10,6,'2018-07-29','2018-07-29 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(11,6,'2018-07-31','2018-07-31 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(12,7,'2018-07-25','2018-07-25 00:00:00',0,10800,12,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(13,7,'2018-07-26','2018-07-26 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(14,7,'2018-07-27','2018-07-27 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54'),(15,7,'2017-01-30','2017-01-30 10:00:00',1,660,12,NULL,'',NULL,NULL,NULL,NULL,'2020-12-10 12:24:40'),(16,4,'2020-06-13','2020-06-13 00:00:00',0,3600,12,NULL,'',NULL,NULL,NULL,NULL,'2020-06-12 17:13:30'); +INSERT INTO `llx_projet_task_time` VALUES (2,4,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,'',NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(3,4,'2016-12-18','2016-12-18 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(4,3,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(5,3,'2016-12-21','2016-12-21 12:00:00',0,1800,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(6,3,'2016-12-21','2016-12-21 12:00:00',0,3600,1,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(7,6,'2018-07-25','2018-07-25 00:00:00',0,18000,12,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(8,6,'2018-07-26','2018-07-26 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(9,6,'2018-07-27','2018-07-27 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(10,6,'2018-07-29','2018-07-29 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(11,6,'2018-07-31','2018-07-31 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(12,7,'2018-07-25','2018-07-25 00:00:00',0,10800,12,NULL,NULL,NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(13,7,'2018-07-26','2018-07-26 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(14,7,'2018-07-27','2018-07-27 00:00:00',0,14400,12,NULL,NULL,NULL,NULL,NULL,NULL,'2018-03-16 10:00:54',NULL,NULL,NULL),(15,7,'2017-01-30','2017-01-30 10:00:00',1,660,12,NULL,'',NULL,NULL,NULL,NULL,'2020-12-10 12:24:40',NULL,NULL,NULL),(16,4,'2020-06-13','2020-06-13 00:00:00',0,3600,12,NULL,'',NULL,NULL,NULL,NULL,'2020-06-12 17:13:30',NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_projet_task_time` ENABLE KEYS */; UNLOCK TABLES; @@ -10856,11 +11392,11 @@ CREATE TABLE `llx_propal` ( `fk_soc` int(11) DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_client` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_client` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datec` datetime DEFAULT NULL, `datep` date DEFAULT NULL, `fin_validite` datetime DEFAULT NULL, @@ -10883,31 +11419,32 @@ CREATE TABLE `llx_propal` ( `localtax2` double(24,8) DEFAULT 0.00000000, `total_ttc` double(24,8) DEFAULT 0.00000000, `fk_account` int(11) DEFAULT NULL, - `fk_currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_currency` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_cond_reglement` int(11) DEFAULT NULL, + `deposit_percent` varchar(63) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_mode_reglement` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_livraison` date DEFAULT NULL, `fk_shipping_method` int(11) DEFAULT NULL, `fk_warehouse` int(11) DEFAULT NULL, `fk_availability` int(11) DEFAULT NULL, `fk_delivery_address` int(11) DEFAULT NULL, `fk_input_reason` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `online_sign_ip` varchar(48) COLLATE utf8_unicode_ci DEFAULT NULL, - `online_sign_name` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `online_sign_ip` varchar(48) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `online_sign_name` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_propal_ref` (`ref`,`entity`), KEY `idx_propal_fk_soc` (`fk_soc`), @@ -10925,7 +11462,7 @@ CREATE TABLE `llx_propal` ( CONSTRAINT `fk_propal_fk_user_cloture` FOREIGN KEY (`fk_user_cloture`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_propal_fk_user_signature` FOREIGN KEY (`fk_user_signature`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_propal_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=39 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10934,7 +11471,7 @@ CREATE TABLE `llx_propal` ( LOCK TABLES `llx_propal` WRITE; /*!40000 ALTER TABLE `llx_propal` DISABLE KEYS */; -INSERT INTO `llx_propal` VALUES (1,2,NULL,'2021-07-11 17:49:28','PR1007-0001',1,NULL,NULL,'','2012-07-09 01:33:49','2021-07-09','2020-07-24 12:00:00','2020-08-08 14:24:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,30.00000000,3.84000000,0.00000000,0.00000000,33.84000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(2,1,NULL,'2021-07-11 17:49:28','PR1007-0002',1,NULL,NULL,'','2012-07-10 02:11:44','2021-07-10','2020-07-25 12:00:00','2021-07-10 02:12:55','2020-07-20 15:23:12','2020-07-20 15:23:12',1,NULL,1,1,1,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,1,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(3,4,NULL,'2022-02-07 13:37:54','PR1007-0003',1,NULL,NULL,'','2012-07-18 11:35:11','2021-07-18','2021-08-02 12:00:00','2021-07-18 11:36:18','2020-07-20 15:21:15','2021-07-20 15:21:15',1,NULL,1,1,1,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(5,19,NULL,'2021-04-15 10:22:31','PR1302-0005',1,NULL,NULL,'','2015-02-17 15:39:56','2021-02-17','2021-03-04 12:00:00','2020-11-15 23:27:10',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,10.00000000,2.00000000,0.00000000,0.00000000,12.00000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(6,19,NULL,'2021-04-15 10:22:31','PR1302-0006',1,NULL,NULL,'','2015-02-17 15:40:12','2021-02-17','2021-03-04 12:00:00',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(7,19,NULL,'2021-04-15 10:22:31','PR1302-0007',1,NULL,NULL,'','2015-02-17 15:41:15','2021-02-17','2021-03-04 12:00:00','2020-01-29 21:49:33',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,400.00000000,0.00000000,0.00000000,0.00000000,400.00000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,400.00000000,0.00000000,400.00000000,NULL,NULL,NULL),(8,19,NULL,'2021-04-15 10:22:31','PR1302-0008',1,NULL,NULL,'','2015-02-17 15:43:39','2021-02-17','2021-03-04 12:00:00',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,1,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(10,7,4,'2022-02-07 13:37:54','PR1909-0031',1,NULL,NULL,'','2017-11-15 23:37:08','2021-11-15','2021-11-30 12:00:00','2022-09-27 16:54:30',NULL,NULL,12,NULL,12,NULL,NULL,1,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,3,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',NULL,NULL,1.00000000,10.00000000,0.00000000,10.00000000,'propale/PR1909-0031/PR1909-0031.pdf',NULL,NULL),(11,1,NULL,'2021-07-11 17:49:28','PR1702-0009',1,NULL,NULL,'','2017-02-16 01:44:58','2021-05-13','2021-05-28 12:00:00','2021-02-16 01:44:58',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,60.00000000,0.00000000,0.00000000,0.00000000,60.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,60.00000000,0.00000000,60.00000000,NULL,NULL,NULL),(12,7,NULL,'2021-07-11 17:49:28','PR1702-0010',1,NULL,NULL,'','2017-02-16 01:45:44','2021-06-24','2021-07-09 12:00:00','2021-02-16 01:45:44',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,832.00000000,0.00000000,0.00000000,0.00000000,832.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,832.00000000,0.00000000,832.00000000,NULL,NULL,NULL),(13,26,NULL,'2021-04-15 10:22:31','PR1702-0011',1,NULL,NULL,'','2017-02-16 01:46:15','2021-04-03','2020-04-18 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,242.00000000,0.00000000,0.00000000,0.00000000,242.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,242.00000000,0.00000000,242.00000000,NULL,NULL,NULL),(14,3,NULL,'2021-07-11 17:49:28','PR1702-0012',1,NULL,NULL,'','2017-02-16 01:46:15','2021-06-19','2021-07-04 12:00:00','2021-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,245.00000000,0.00000000,0.00000000,0.00000000,245.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,245.00000000,0.00000000,245.00000000,NULL,NULL,NULL),(15,26,NULL,'2021-07-11 17:49:28','PR1702-0013',1,NULL,NULL,'','2017-02-16 01:46:15','2021-05-01','2021-05-16 12:00:00','2020-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,940.00000000,0.00000000,0.00000000,0.00000000,940.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,940.00000000,0.00000000,940.00000000,NULL,NULL,NULL),(16,1,NULL,'2021-07-11 17:49:28','PR1702-0014',1,NULL,NULL,'','2017-02-16 01:46:15','2021-05-13','2021-05-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,125.00000000,0.00000000,0.00000000,0.00000000,125.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,125.00000000,0.00000000,125.00000000,NULL,NULL,NULL),(17,1,NULL,'2022-02-07 13:37:54','PR1702-0015',1,NULL,NULL,'','2017-02-16 01:46:15','2021-07-23','2021-08-07 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,163.00000000,0.00000000,0.00000000,0.00000000,163.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,163.00000000,0.00000000,163.00000000,NULL,NULL,NULL),(18,26,NULL,'2021-04-15 10:22:31','PR1702-0016',1,NULL,NULL,'','2017-02-16 01:46:15','2021-02-13','2021-02-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,900.00000000,0.00000000,0.00000000,0.00000000,900.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,900.00000000,0.00000000,900.00000000,NULL,NULL,NULL),(19,12,NULL,'2021-04-15 10:22:31','PR1702-0017',1,NULL,NULL,'','2017-02-16 01:46:15','2021-03-30','2021-04-14 12:00:00','2021-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,200.00000000,0.00000000,0.00000000,0.00000000,200.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,200.00000000,0.00000000,200.00000000,NULL,NULL,NULL),(20,26,NULL,'2022-02-07 13:37:54','PR1702-0018',1,NULL,NULL,'','2017-02-16 01:46:15','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,830.00000000,0.00000000,0.00000000,0.00000000,830.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,830.00000000,0.00000000,830.00000000,NULL,NULL,NULL),(21,1,NULL,'2022-02-07 13:37:54','PR1702-0019',1,NULL,NULL,'','2017-02-16 01:46:15','2021-09-23','2021-10-08 12:00:00','2021-02-16 04:47:09',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,89.00000000,0.00000000,0.00000000,0.00000000,89.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,89.00000000,0.00000000,89.00000000,NULL,NULL,NULL),(22,26,NULL,'2022-02-07 13:37:54','PR1702-0020',1,NULL,NULL,'','2017-02-16 01:46:15','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,0,0,NULL,NULL,0,70.00000000,0.00000000,0.00000000,0.00000000,70.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,70.00000000,0.00000000,70.00000000,'propale/PR1702-0020/PR1702-0020.pdf',NULL,NULL),(23,12,NULL,'2021-04-15 10:22:31','PR1702-0021',1,NULL,NULL,'','2017-02-16 01:46:17','2021-04-03','2020-04-18 12:00:00','2020-02-17 16:07:18',NULL,NULL,2,NULL,12,NULL,NULL,1,0,NULL,NULL,0,715.00000000,0.00000000,0.00000000,0.00000000,715.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,715.00000000,0.00000000,715.00000000,NULL,NULL,NULL),(24,7,NULL,'2022-02-07 13:37:54','PR1702-0022',1,NULL,NULL,'','2017-02-16 01:46:17','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:17',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,250.00000000,0.00000000,0.00000000,0.00000000,250.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,250.00000000,0.00000000,250.00000000,NULL,NULL,NULL),(25,3,NULL,'2021-07-11 17:49:28','PR1702-0023',1,NULL,NULL,'','2017-02-16 01:46:17','2021-07-09','2020-07-24 12:00:00','2021-02-16 01:46:17','2020-02-16 04:47:29','2021-02-16 04:47:29',1,NULL,1,12,12,4,0,NULL,NULL,0,1018.00000000,0.00000000,0.00000000,0.00000000,1018.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1018.00000000,0.00000000,1018.00000000,NULL,NULL,NULL),(26,1,NULL,'2021-04-15 10:22:31','PR1702-0024',1,NULL,NULL,'','2017-02-16 01:46:17','2021-04-03','2020-04-18 12:00:00','2020-02-16 01:46:18',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,710.00000000,0.00000000,0.00000000,0.00000000,710.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,710.00000000,0.00000000,710.00000000,NULL,NULL,NULL),(27,6,NULL,'2022-02-07 13:37:54','PR1702-0025',1,NULL,NULL,'','2017-02-16 01:46:18','2021-11-12','2021-11-27 12:00:00','2021-02-16 01:46:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,300.00000000,0.00000000,0.00000000,0.00000000,300.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,300.00000000,0.00000000,300.00000000,NULL,NULL,NULL),(28,19,NULL,'2022-02-07 13:37:54','PR1702-0026',1,NULL,NULL,'','2017-02-16 01:46:18','2021-07-30','2021-08-14 12:00:00','2021-02-16 01:46:18','2020-02-16 04:46:31','2021-02-16 04:46:31',2,NULL,2,12,12,2,0,NULL,NULL,0,440.00000000,0.00000000,0.00000000,0.00000000,440.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,440.00000000,0.00000000,440.00000000,NULL,NULL,NULL),(29,1,NULL,'2022-02-07 13:37:54','PR1702-0027',1,NULL,NULL,'','2017-02-16 01:46:18','2021-07-23','2021-08-07 12:00:00','2021-02-16 01:46:18','2021-12-20 20:50:23','2022-12-20 20:50:23',2,NULL,2,12,12,2,0,NULL,NULL,0,1000.00000000,0.00000000,0.00000000,0.00000000,1000.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,'propale/PR1702-0027/PR1702-0027.pdf',NULL,NULL),(30,1,NULL,'2021-07-11 17:49:28','PR1702-0028',1,NULL,NULL,'','2017-02-16 01:46:18','2021-05-01','2021-05-16 12:00:00','2020-02-16 01:46:18','2019-02-16 04:46:42','2020-02-16 04:46:42',2,NULL,2,12,12,3,0,NULL,NULL,0,1200.00000000,0.00000000,0.00000000,0.00000000,1200.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1200.00000000,0.00000000,1200.00000000,NULL,NULL,NULL),(31,11,NULL,'2021-07-11 17:49:28','PR1702-0029',1,NULL,NULL,'','2017-02-16 01:46:18','2021-06-24','2021-07-09 12:00:00','2021-02-16 01:46:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,720.00000000,0.00000000,0.00000000,0.00000000,720.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,720.00000000,0.00000000,720.00000000,NULL,NULL,NULL),(32,19,NULL,'2022-02-07 13:37:54','PR1702-0030',1,NULL,NULL,'','2017-02-16 01:46:18','2021-11-12','2021-11-27 12:00:00','2021-02-16 01:46:18',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,608.00000000,0.00000000,0.00000000,0.00000000,608.00000000,NULL,NULL,3,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,608.00000000,0.00000000,608.00000000,NULL,NULL,NULL),(33,10,6,'2022-02-07 13:37:54','PR1909-0032',1,NULL,NULL,'','2019-09-27 17:07:40','2021-09-27','2021-10-12 12:00:00','2021-09-27 17:08:59',NULL,NULL,12,12,12,NULL,NULL,1,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,'This is a private note','This is a public note','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'propale/PR1909-0032/PR1909-0032.pdf',NULL,NULL),(34,10,6,'2022-02-07 13:37:54','PR1909-0033',1,NULL,NULL,'','2019-09-27 17:11:21','2021-09-27','2021-10-12 12:00:00','2021-09-27 17:13:13','2020-01-07 23:43:06','2022-01-07 23:43:06',12,12,12,12,12,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,NULL,NULL,NULL,'a & a
\r\nb < r','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,'propale/PR1909-0033/PR1909-0033.pdf',NULL,NULL),(35,10,NULL,'2022-02-07 13:37:54','(PROV35)',1,NULL,NULL,'','2019-09-27 17:53:44','2021-09-27','2021-10-12 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,5.00000000,0.00000000,0.00000000,0.00000000,5.00000000,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,5.00000000,0.00000000,5.00000000,'propale/(PROV35)/(PROV35).pdf',NULL,NULL),(36,1,NULL,'2022-02-07 13:37:54','PR2001-0034',1,NULL,NULL,'','2020-01-01 23:55:35','2022-01-01','2022-01-16 12:00:00','2022-01-19 14:24:22','2021-01-19 14:24:27','2022-01-19 14:24:27',12,NULL,12,12,12,2,0,NULL,NULL,0,4.00000000,0.24000000,0.00000000,0.00000000,4.24000000,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,4.00000000,0.24000000,4.24000000,'propale/PR2001-0034/PR2001-0034.pdf',NULL,NULL),(37,10,NULL,'2022-02-07 13:37:54','(PROV37)',1,NULL,NULL,'','2020-01-06 00:44:16','2022-01-05','2022-01-20 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,'propale/(PROV37)/(PROV37).pdf',NULL,NULL),(38,30,NULL,'2022-02-07 13:37:54','(PROV38)',1,NULL,NULL,'','2020-01-13 17:25:28','2022-01-13','2022-01-28 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'propale/(PROV38)/(PROV38).pdf',NULL,NULL); +INSERT INTO `llx_propal` VALUES (1,2,NULL,'2021-07-11 17:49:28','PR1007-0001',1,NULL,NULL,'','2012-07-09 01:33:49','2021-07-09','2020-07-24 12:00:00','2020-08-08 14:24:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,30.00000000,3.84000000,0.00000000,0.00000000,33.84000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(2,1,NULL,'2021-07-11 17:49:28','PR1007-0002',1,NULL,NULL,'','2012-07-10 02:11:44','2021-07-10','2020-07-25 12:00:00','2021-07-10 02:12:55','2020-07-20 15:23:12','2020-07-20 15:23:12',1,NULL,1,1,1,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,NULL,1,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(3,4,NULL,'2022-02-07 13:37:54','PR1007-0003',1,NULL,NULL,'','2012-07-18 11:35:11','2021-07-18','2021-08-02 12:00:00','2021-07-18 11:36:18','2020-07-20 15:21:15','2021-07-20 15:21:15',1,NULL,1,1,1,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(5,19,NULL,'2022-07-04 01:11:35','PR1302-0005',1,NULL,NULL,'','2015-02-17 15:39:56','2022-02-17','2022-03-04 12:00:00','2021-11-15 23:27:10',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,10.00000000,2.00000000,0.00000000,0.00000000,12.00000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(6,19,NULL,'2022-07-04 01:11:35','PR1302-0006',1,NULL,NULL,'','2015-02-17 15:40:12','2022-02-17','2022-03-04 12:00:00',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(7,19,NULL,'2022-07-04 01:11:35','PR1302-0007',1,NULL,NULL,'','2015-02-17 15:41:15','2022-02-17','2022-03-04 12:00:00','2021-01-29 21:49:33',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,400.00000000,0.00000000,0.00000000,0.00000000,400.00000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,400.00000000,0.00000000,400.00000000,NULL,NULL,NULL),(8,19,NULL,'2022-07-04 01:11:35','PR1302-0008',1,NULL,NULL,'','2015-02-17 15:43:39','2022-02-17','2022-03-04 12:00:00',NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,1,NULL,0,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,1.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL),(10,7,4,'2022-02-07 13:37:54','PR1909-0031',1,NULL,NULL,'','2017-11-15 23:37:08','2021-11-15','2021-11-30 12:00:00','2022-09-27 16:54:30',NULL,NULL,12,NULL,12,NULL,NULL,1,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,1,NULL,3,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',NULL,NULL,1.00000000,10.00000000,0.00000000,10.00000000,'propale/PR1909-0031/PR1909-0031.pdf',NULL,NULL),(11,1,NULL,'2022-07-04 01:11:35','PR1702-0009',1,NULL,NULL,'','2017-02-16 01:44:58','2022-05-13','2022-05-28 12:00:00','2022-02-16 01:44:58',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,60.00000000,0.00000000,0.00000000,0.00000000,60.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,60.00000000,0.00000000,60.00000000,NULL,NULL,NULL),(12,7,NULL,'2022-07-04 01:11:35','PR1702-0010',1,NULL,NULL,'','2017-02-16 01:45:44','2022-06-24','2021-07-09 12:00:00','2022-02-16 01:45:44',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,832.00000000,0.00000000,0.00000000,0.00000000,832.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,832.00000000,0.00000000,832.00000000,NULL,NULL,NULL),(13,26,NULL,'2022-07-04 01:11:35','PR1702-0011',1,NULL,NULL,'','2017-02-16 01:46:15','2022-04-03','2021-04-18 12:00:00','2022-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,242.00000000,0.00000000,0.00000000,0.00000000,242.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,242.00000000,0.00000000,242.00000000,NULL,NULL,NULL),(14,3,NULL,'2022-07-04 01:11:35','PR1702-0012',1,NULL,NULL,'','2017-02-16 01:46:15','2022-06-19','2021-07-04 12:00:00','2022-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,245.00000000,0.00000000,0.00000000,0.00000000,245.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,245.00000000,0.00000000,245.00000000,NULL,NULL,NULL),(15,26,NULL,'2022-07-04 01:11:35','PR1702-0013',1,NULL,NULL,'','2017-02-16 01:46:15','2022-05-01','2022-05-16 12:00:00','2021-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,940.00000000,0.00000000,0.00000000,0.00000000,940.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,940.00000000,0.00000000,940.00000000,NULL,NULL,NULL),(16,1,NULL,'2022-07-04 01:11:35','PR1702-0014',1,NULL,NULL,'','2017-02-16 01:46:15','2022-05-13','2022-05-28 12:00:00','2022-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,125.00000000,0.00000000,0.00000000,0.00000000,125.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,125.00000000,0.00000000,125.00000000,NULL,NULL,NULL),(17,1,NULL,'2022-02-07 13:37:54','PR1702-0015',1,NULL,NULL,'','2017-02-16 01:46:15','2021-07-23','2021-08-07 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,163.00000000,0.00000000,0.00000000,0.00000000,163.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,163.00000000,0.00000000,163.00000000,NULL,NULL,NULL),(18,26,NULL,'2022-07-04 01:11:35','PR1702-0016',1,NULL,NULL,'','2017-02-16 01:46:15','2022-02-13','2022-02-28 12:00:00','2022-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,900.00000000,0.00000000,0.00000000,0.00000000,900.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,900.00000000,0.00000000,900.00000000,NULL,NULL,NULL),(19,12,NULL,'2022-07-04 01:11:35','PR1702-0017',1,NULL,NULL,'','2017-02-16 01:46:15','2022-03-30','2022-04-14 12:00:00','2022-02-16 01:46:15',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,200.00000000,0.00000000,0.00000000,0.00000000,200.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,200.00000000,0.00000000,200.00000000,NULL,NULL,NULL),(20,26,NULL,'2022-02-07 13:37:54','PR1702-0018',1,NULL,NULL,'','2017-02-16 01:46:15','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,830.00000000,0.00000000,0.00000000,0.00000000,830.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,830.00000000,0.00000000,830.00000000,NULL,NULL,NULL),(21,1,NULL,'2022-02-07 13:37:54','PR1702-0019',1,NULL,NULL,'','2017-02-16 01:46:15','2021-09-23','2021-10-08 12:00:00','2021-02-16 04:47:09',NULL,NULL,1,NULL,12,NULL,NULL,1,0,NULL,NULL,0,89.00000000,0.00000000,0.00000000,0.00000000,89.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,89.00000000,0.00000000,89.00000000,NULL,NULL,NULL),(22,26,NULL,'2022-02-07 13:37:54','PR1702-0020',1,NULL,NULL,'','2017-02-16 01:46:15','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:15',NULL,NULL,1,NULL,1,NULL,NULL,0,0,NULL,NULL,0,70.00000000,0.00000000,0.00000000,0.00000000,70.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,70.00000000,0.00000000,70.00000000,'propale/PR1702-0020/PR1702-0020.pdf',NULL,NULL),(23,12,NULL,'2022-07-04 01:11:35','PR1702-0021',1,NULL,NULL,'','2017-02-16 01:46:17','2022-04-03','2021-04-18 12:00:00','2021-02-17 16:07:18',NULL,NULL,2,NULL,12,NULL,NULL,1,0,NULL,NULL,0,715.00000000,0.00000000,0.00000000,0.00000000,715.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,715.00000000,0.00000000,715.00000000,NULL,NULL,NULL),(24,7,NULL,'2022-02-07 13:37:54','PR1702-0022',1,NULL,NULL,'','2017-02-16 01:46:17','2021-11-13','2021-11-28 12:00:00','2021-02-16 01:46:17',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,250.00000000,0.00000000,0.00000000,0.00000000,250.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,250.00000000,0.00000000,250.00000000,NULL,NULL,NULL),(25,3,NULL,'2021-07-11 17:49:28','PR1702-0023',1,NULL,NULL,'','2017-02-16 01:46:17','2021-07-09','2020-07-24 12:00:00','2021-02-16 01:46:17','2020-02-16 04:47:29','2021-02-16 04:47:29',1,NULL,1,12,12,4,0,NULL,NULL,0,1018.00000000,0.00000000,0.00000000,0.00000000,1018.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1018.00000000,0.00000000,1018.00000000,NULL,NULL,NULL),(26,1,NULL,'2022-07-04 01:11:35','PR1702-0024',1,NULL,NULL,'','2017-02-16 01:46:17','2022-04-03','2021-04-18 12:00:00','2021-02-16 01:46:18',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,710.00000000,0.00000000,0.00000000,0.00000000,710.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,710.00000000,0.00000000,710.00000000,NULL,NULL,NULL),(27,6,NULL,'2022-02-07 13:37:54','PR1702-0025',1,NULL,NULL,'','2017-02-16 01:46:18','2021-11-12','2021-11-27 12:00:00','2021-02-16 01:46:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,300.00000000,0.00000000,0.00000000,0.00000000,300.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,300.00000000,0.00000000,300.00000000,NULL,NULL,NULL),(28,19,NULL,'2022-02-07 13:37:54','PR1702-0026',1,NULL,NULL,'','2017-02-16 01:46:18','2021-07-30','2021-08-14 12:00:00','2021-02-16 01:46:18','2020-02-16 04:46:31','2021-02-16 04:46:31',2,NULL,2,12,12,2,0,NULL,NULL,0,440.00000000,0.00000000,0.00000000,0.00000000,440.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,440.00000000,0.00000000,440.00000000,NULL,NULL,NULL),(29,1,NULL,'2022-02-07 13:37:54','PR1702-0027',1,NULL,NULL,'','2017-02-16 01:46:18','2021-07-23','2021-08-07 12:00:00','2021-02-16 01:46:18','2021-12-20 20:50:23','2022-12-20 20:50:23',2,NULL,2,12,12,2,0,NULL,NULL,0,1000.00000000,0.00000000,0.00000000,0.00000000,1000.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1000.00000000,0.00000000,1000.00000000,'propale/PR1702-0027/PR1702-0027.pdf',NULL,NULL),(30,1,NULL,'2022-07-04 01:11:35','PR1702-0028',1,NULL,NULL,'','2017-02-16 01:46:18','2022-05-01','2022-05-16 12:00:00','2021-02-16 01:46:18','2019-02-16 04:46:42','2021-02-16 04:46:42',2,NULL,2,12,12,3,0,NULL,NULL,0,1200.00000000,0.00000000,0.00000000,0.00000000,1200.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,1200.00000000,0.00000000,1200.00000000,NULL,NULL,NULL),(31,11,NULL,'2022-07-04 01:11:35','PR1702-0029',1,NULL,NULL,'','2017-02-16 01:46:18','2022-06-24','2021-07-09 12:00:00','2022-02-16 01:46:18',NULL,NULL,1,NULL,1,NULL,NULL,1,0,NULL,NULL,0,720.00000000,0.00000000,0.00000000,0.00000000,720.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,720.00000000,0.00000000,720.00000000,NULL,NULL,NULL),(32,19,NULL,'2022-02-07 13:37:54','PR1702-0030',1,NULL,NULL,'','2017-02-16 01:46:18','2021-11-12','2021-11-27 12:00:00','2021-02-16 01:46:18',NULL,NULL,2,NULL,2,NULL,NULL,1,0,NULL,NULL,0,608.00000000,0.00000000,0.00000000,0.00000000,608.00000000,NULL,NULL,3,NULL,3,'','','',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',0,'EUR',1.00000000,608.00000000,0.00000000,608.00000000,NULL,NULL,NULL),(33,10,6,'2022-02-07 13:37:54','PR1909-0032',1,NULL,NULL,'','2019-09-27 17:07:40','2021-09-27','2021-10-12 12:00:00','2021-09-27 17:08:59',NULL,NULL,12,12,12,NULL,NULL,1,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,NULL,'This is a private note','This is a public note','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'propale/PR1909-0032/PR1909-0032.pdf',NULL,NULL),(34,10,6,'2022-02-07 13:37:54','PR1909-0033',1,NULL,NULL,'','2019-09-27 17:11:21','2021-09-27','2021-10-12 12:00:00','2021-09-27 17:13:13','2020-01-07 23:43:06','2022-01-07 23:43:06',12,12,12,12,12,2,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,NULL,NULL,NULL,NULL,'a & a
\r\nb < r','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,'propale/PR1909-0033/PR1909-0033.pdf',NULL,NULL),(35,10,NULL,'2022-02-07 13:37:54','(PROV35)',1,NULL,NULL,'','2019-09-27 17:53:44','2021-09-27','2021-10-12 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,5.00000000,0.00000000,0.00000000,0.00000000,5.00000000,NULL,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,5.00000000,0.00000000,5.00000000,'propale/(PROV35)/(PROV35).pdf',NULL,NULL),(36,1,NULL,'2022-02-07 13:37:54','PR2001-0034',1,NULL,NULL,'','2020-01-01 23:55:35','2022-01-01','2022-01-16 12:00:00','2022-01-19 14:24:22','2021-01-19 14:24:27','2022-01-19 14:24:27',12,NULL,12,12,12,2,0,NULL,NULL,0,4.00000000,0.24000000,0.00000000,0.00000000,4.24000000,NULL,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,4.00000000,0.24000000,4.24000000,'propale/PR2001-0034/PR2001-0034.pdf',NULL,NULL),(37,10,NULL,'2022-02-07 13:37:54','(PROV37)',1,NULL,NULL,'','2020-01-06 00:44:16','2022-01-05','2022-01-20 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,10.00000000,0.00000000,0.00000000,0.00000000,10.00000000,NULL,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,10.00000000,0.00000000,10.00000000,'propale/(PROV37)/(PROV37).pdf',NULL,NULL),(38,30,NULL,'2022-02-07 13:37:54','(PROV38)',1,NULL,NULL,'','2020-01-13 17:25:28','2022-01-13','2022-01-28 12:00:00',NULL,NULL,NULL,12,NULL,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,NULL,'','','azur',NULL,NULL,NULL,0,NULL,0,NULL,NULL,0,'',1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,'propale/(PROV38)/(PROV38).pdf',NULL,NULL); /*!40000 ALTER TABLE `llx_propal` ENABLE KEYS */; UNLOCK TABLES; @@ -10949,10 +11486,10 @@ CREATE TABLE `llx_propal_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_propal_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -10974,15 +11511,15 @@ DROP TABLE IF EXISTS `llx_propal_merge_pdf_product`; CREATE TABLE `llx_propal_merge_pdf_product` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_product` int(11) NOT NULL, - `file_name` varchar(200) COLLATE utf8_unicode_ci NOT NULL, - `lang` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `file_name` varchar(200) COLLATE utf8mb3_unicode_ci NOT NULL, + `lang` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_mod` int(11) NOT NULL, `datec` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11006,15 +11543,15 @@ CREATE TABLE `llx_propaldet` ( `fk_propal` int(11) DEFAULT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_remise_except` int(11) DEFAULT NULL, `tva_tx` double(6,3) DEFAULT 0.000, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0', + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '0', `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -11035,7 +11572,7 @@ CREATE TABLE `llx_propaldet` ( `rang` int(11) DEFAULT 0, `fk_unit` int(11) DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -11046,7 +11583,7 @@ CREATE TABLE `llx_propaldet` ( KEY `fk_propaldet_fk_unit` (`fk_unit`), CONSTRAINT `fk_propaldet_fk_propal` FOREIGN KEY (`fk_propal`) REFERENCES `llx_propal` (`rowid`), CONSTRAINT `fk_propaldet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11070,10 +11607,10 @@ CREATE TABLE `llx_propaldet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_propaldet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11095,13 +11632,13 @@ DROP TABLE IF EXISTS `llx_reception`; CREATE TABLE `llx_reception` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `fk_soc` int(11) NOT NULL, `fk_projet` int(11) DEFAULT NULL, - `ref_ext` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_supplier` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_supplier` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, @@ -11110,7 +11647,7 @@ CREATE TABLE `llx_reception` ( `date_delivery` datetime DEFAULT NULL, `date_reception` datetime DEFAULT NULL, `fk_shipping_method` int(11) DEFAULT NULL, - `tracking_number` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `tracking_number` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_statut` smallint(6) DEFAULT 0, `billed` smallint(6) DEFAULT 0, `height` float DEFAULT NULL, @@ -11119,13 +11656,13 @@ CREATE TABLE `llx_reception` ( `size` float DEFAULT NULL, `weight_units` int(11) DEFAULT NULL, `weight` float DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_reception_uk_ref` (`ref`,`entity`), KEY `idx_reception_fk_soc` (`fk_soc`), @@ -11136,7 +11673,7 @@ CREATE TABLE `llx_reception` ( CONSTRAINT `fk_reception_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_reception_fk_user_author` FOREIGN KEY (`fk_user_author`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_reception_fk_user_valid` FOREIGN KEY (`fk_user_valid`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11160,10 +11697,10 @@ CREATE TABLE `llx_reception_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_reception_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11203,7 +11740,7 @@ CREATE TABLE `llx_recruitment_recruitmentcandidature` ( `remuneration_requested` int(11) DEFAULT NULL, `remuneration_proposed` int(11) DEFAULT NULL, `fk_recruitment_origin` int(11) DEFAULT NULL, - `email_msgid` varchar(175) COLLATE utf8_unicode_ci DEFAULT NULL, + `email_msgid` varchar(175) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, `date_birth` date DEFAULT NULL, PRIMARY KEY (`rowid`), @@ -11213,7 +11750,7 @@ CREATE TABLE `llx_recruitment_recruitmentcandidature` ( KEY `llx_recruitment_recruitmentcandidature_fk_user_creat` (`fk_user_creat`), KEY `idx_recruitment_recruitmentcandidature_status` (`status`), CONSTRAINT `llx_recruitment_recruitmentcandidature_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11242,7 +11779,7 @@ CREATE TABLE `llx_recruitment_recruitmentcandidature_extrafields` ( PRIMARY KEY (`rowid`), KEY `idx_fk_object` (`fk_object`), KEY `idx_recruitmentcandidature_fk_object` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11302,7 +11839,7 @@ CREATE TABLE `llx_recruitment_recruitmentjobposition` ( CONSTRAINT `llx_recruitment_recruitmentjobposition_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `llx_recruitment_recruitmentjobposition_fk_user_recruiter` FOREIGN KEY (`fk_user_recruiter`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `llx_recruitment_recruitmentjobposition_fk_user_supervisor` FOREIGN KEY (`fk_user_supervisor`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11331,7 +11868,7 @@ CREATE TABLE `llx_recruitment_recruitmentjobposition_extrafields` ( PRIMARY KEY (`rowid`), KEY `idx_fk_object` (`fk_object`), KEY `idx_recruitmentjobposition_fk_object` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11354,12 +11891,12 @@ DROP TABLE IF EXISTS `llx_resource`; CREATE TABLE `llx_resource` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `asset_number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_code_type_resource` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `asset_number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_code_type_resource` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, `date_valid` datetime DEFAULT NULL, @@ -11367,15 +11904,15 @@ CREATE TABLE `llx_resource` ( `fk_user_modif` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, `fk_statut` smallint(6) NOT NULL DEFAULT 0, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_country` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_resource_ref` (`ref`,`entity`), KEY `fk_code_type_resource_idx` (`fk_code_type_resource`), KEY `idx_resource_fk_country` (`fk_country`), CONSTRAINT `fk_resource_fk_country` FOREIGN KEY (`fk_country`) REFERENCES `llx_c_country` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11399,10 +11936,10 @@ CREATE TABLE `llx_resource_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_resource_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11423,17 +11960,17 @@ DROP TABLE IF EXISTS `llx_rights_def`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_rights_def` ( `id` int(11) NOT NULL DEFAULT 0, - `libelle` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `module` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `libelle` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `perms` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `subperms` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` varchar(1) COLLATE utf8_unicode_ci DEFAULT NULL, + `perms` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `subperms` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type` varchar(1) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `bydefault` tinyint(4) DEFAULT 0, `module_position` int(11) NOT NULL DEFAULT 0, `family_position` int(11) NOT NULL DEFAULT 0, PRIMARY KEY (`id`,`entity`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11442,7 +11979,7 @@ CREATE TABLE `llx_rights_def` ( LOCK TABLES `llx_rights_def` WRITE; /*!40000 ALTER TABLE `llx_rights_def` DISABLE KEYS */; -INSERT INTO `llx_rights_def` VALUES (11,'Read invoices','facture',1,'lire',NULL,'a',0,11,0),(11,'Lire les factures','facture',2,'lire',NULL,'a',1,10,0),(12,'Create and update invoices','facture',1,'creer',NULL,'a',0,11,0),(12,'Creer/modifier les factures','facture',2,'creer',NULL,'a',0,10,0),(13,'Devalidate invoices','facture',1,'invoice_advance','unvalidate','a',0,11,0),(13,'Dévalider les factures','facture',2,'invoice_advance','unvalidate','a',0,10,0),(14,'Validate invoices','facture',1,'invoice_advance','validate','a',0,11,0),(14,'Valider les factures','facture',2,'valider',NULL,'a',0,10,0),(15,'Send invoices by email','facture',1,'invoice_advance','send','a',0,11,0),(15,'Envoyer les factures par mail','facture',2,'invoice_advance','send','a',0,10,0),(16,'Issue payments on invoices','facture',1,'paiement',NULL,'a',0,11,0),(16,'Emettre des paiements sur les factures','facture',2,'paiement',NULL,'a',0,10,0),(19,'Delete invoices','facture',1,'supprimer',NULL,'a',0,11,0),(19,'Supprimer les factures','facture',2,'supprimer',NULL,'a',0,10,0),(21,'Lire les propositions commerciales','propale',1,'lire',NULL,'r',1,22,0),(21,'Lire les propositions commerciales','propale',2,'lire',NULL,'r',1,22,0),(22,'Creer/modifier les propositions commerciales','propale',1,'creer',NULL,'w',0,22,0),(22,'Creer/modifier les propositions commerciales','propale',2,'creer',NULL,'w',0,22,0),(24,'Valider les propositions commerciales','propale',1,'propal_advance','validate','d',0,22,0),(24,'Valider les propositions commerciales','propale',2,'valider',NULL,'d',0,22,0),(25,'Envoyer les propositions commerciales aux clients','propale',1,'propal_advance','send','d',0,22,0),(25,'Envoyer les propositions commerciales aux clients','propale',2,'propal_advance','send','d',0,22,0),(26,'Cloturer les propositions commerciales','propale',1,'propal_advance','close','d',0,22,0),(26,'Cloturer les propositions commerciales','propale',2,'propal_advance','close','d',0,22,0),(27,'Supprimer les propositions commerciales','propale',1,'supprimer',NULL,'d',0,22,0),(27,'Supprimer les propositions commerciales','propale',2,'supprimer',NULL,'d',0,22,0),(28,'Exporter les propositions commerciales et attributs','propale',1,'export',NULL,'r',0,22,0),(28,'Exporter les propositions commerciales et attributs','propale',2,'export',NULL,'r',0,22,0),(31,'Lire les produits','produit',1,'lire',NULL,'r',1,25,0),(31,'Lire les produits','produit',2,'lire',NULL,'r',1,25,0),(32,'Creer/modifier les produits','produit',1,'creer',NULL,'w',0,25,0),(32,'Creer/modifier les produits','produit',2,'creer',NULL,'w',0,25,0),(34,'Supprimer les produits','produit',1,'supprimer',NULL,'d',0,25,0),(34,'Supprimer les produits','produit',2,'supprimer',NULL,'d',0,25,0),(38,'Exporter les produits','produit',1,'export',NULL,'r',0,25,0),(38,'Exporter les produits','produit',2,'export',NULL,'r',0,25,0),(39,'Ignore minimum price','produit',1,'ignore_price_min_advance',NULL,'r',0,25,0),(41,'Read projects and tasks (shared projects or projects I am contact for). Can also enter time consumed on assigned tasks (timesheet)','projet',1,'lire',NULL,'r',1,14,0),(42,'Create/modify projects and tasks (shared projects or projects I am contact for)','projet',1,'creer',NULL,'w',0,14,0),(44,'Delete project and tasks (shared projects or projects I am contact for)','projet',1,'supprimer',NULL,'d',0,14,0),(45,'Export projects','projet',1,'export',NULL,'d',0,14,0),(61,'Lire les fiches d\'intervention','ficheinter',1,'lire',NULL,'r',1,41,0),(62,'Creer/modifier les fiches d\'intervention','ficheinter',1,'creer',NULL,'w',0,41,0),(64,'Supprimer les fiches d\'intervention','ficheinter',1,'supprimer',NULL,'d',0,41,0),(67,'Exporter les fiches interventions','ficheinter',1,'export',NULL,'r',0,41,0),(68,'Envoyer les fiches d\'intervention par courriel','ficheinter',1,'ficheinter_advance','send','r',0,41,0),(69,'Valider les fiches d\'intervention ','ficheinter',1,'ficheinter_advance','validate','a',0,41,0),(70,'Dévalider les fiches d\'intervention','ficheinter',1,'ficheinter_advance','unvalidate','a',0,41,0),(71,'Read members\' card','adherent',1,'lire',NULL,'r',0,55,0),(72,'Create/modify members (need also user module permissions if member linked to a user)','adherent',1,'creer',NULL,'w',0,55,0),(74,'Remove members','adherent',1,'supprimer',NULL,'d',0,55,0),(75,'Setup types of membership','adherent',1,'configurer',NULL,'w',0,55,0),(76,'Export members','adherent',1,'export',NULL,'r',0,55,0),(78,'Read subscriptions','adherent',1,'cotisation','lire','r',0,55,0),(79,'Create/modify/remove subscriptions','adherent',1,'cotisation','creer','w',0,55,0),(81,'Read sales orders','commande',1,'lire',NULL,'r',0,11,0),(82,'Creeat/modify sales orders','commande',1,'creer',NULL,'w',0,11,0),(84,'Validate sales orders','commande',1,'order_advance','validate','d',0,11,0),(86,'Send sale orders by email','commande',1,'order_advance','send','d',0,11,0),(87,'Close sale orders','commande',1,'order_advance','close','d',0,11,0),(88,'Cancel sale orders','commande',1,'order_advance','annuler','d',0,11,0),(89,'Delete sales orders','commande',1,'supprimer',NULL,'d',0,11,0),(91,'Lire les charges','tax',1,'charges','lire','r',0,50,0),(91,'Lire les charges','tax',2,'charges','lire','r',1,50,0),(92,'Creer/modifier les charges','tax',1,'charges','creer','w',0,50,0),(92,'Creer/modifier les charges','tax',2,'charges','creer','w',0,50,0),(93,'Supprimer les charges','tax',1,'charges','supprimer','d',0,50,0),(93,'Supprimer les charges','tax',2,'charges','supprimer','d',0,50,0),(94,'Exporter les charges','tax',1,'charges','export','r',0,50,0),(94,'Exporter les charges','tax',2,'charges','export','r',0,50,0),(101,'Lire les expeditions','expedition',1,'lire',NULL,'r',0,40,0),(102,'Creer modifier les expeditions','expedition',1,'creer',NULL,'w',0,40,0),(104,'Valider les expeditions','expedition',1,'shipping_advance','validate','d',0,40,0),(105,'Envoyer les expeditions aux clients','expedition',1,'shipping_advance','send','d',0,40,0),(106,'Exporter les expeditions','expedition',1,'shipment','export','r',0,40,0),(109,'Supprimer les expeditions','expedition',1,'supprimer',NULL,'d',0,40,0),(111,'Read bank account and transactions','banque',1,'lire',NULL,'r',0,51,0),(111,'Lire les comptes bancaires','banque',2,'lire',NULL,'r',1,51,0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',1,'modifier',NULL,'w',0,51,0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',2,'modifier',NULL,'w',0,51,0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',1,'configurer',NULL,'a',0,51,0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',2,'configurer',NULL,'a',0,51,0),(114,'Rapprocher les ecritures bancaires','banque',1,'consolidate',NULL,'w',0,51,0),(114,'Rapprocher les ecritures bancaires','banque',2,'consolidate',NULL,'w',0,51,0),(115,'Exporter transactions et releves','banque',1,'export',NULL,'r',0,51,0),(115,'Exporter transactions et releves','banque',2,'export',NULL,'r',0,51,0),(116,'Virements entre comptes','banque',1,'transfer',NULL,'w',0,51,0),(116,'Virements entre comptes','banque',2,'transfer',NULL,'w',0,51,0),(117,'Gerer les envois de cheques','banque',1,'cheque',NULL,'w',0,51,0),(117,'Gerer les envois de cheques','banque',2,'cheque',NULL,'w',0,51,0),(121,'Read third parties','societe',1,'lire',NULL,'r',0,9,0),(121,'Lire les societes','societe',2,'lire',NULL,'r',1,9,0),(122,'Create and update third parties','societe',1,'creer',NULL,'w',0,9,0),(122,'Creer modifier les societes','societe',2,'creer',NULL,'w',0,9,0),(125,'Delete third parties','societe',1,'supprimer',NULL,'d',0,9,0),(125,'Supprimer les societes','societe',2,'supprimer',NULL,'d',0,9,0),(126,'Export third parties','societe',1,'export',NULL,'r',0,9,0),(126,'Exporter les societes','societe',2,'export',NULL,'r',0,9,0),(130,'Modify thirdparty information payment','societe',1,'thirdparty_paymentinformation_advance','write','w',0,9,0),(141,'Read all projects and tasks (also private projects I am not contact for)','projet',1,'all','lire','r',0,14,0),(142,'Create/modify all projects and tasks (also private projects I am not contact for)','projet',1,'all','creer','w',0,14,0),(144,'Delete all projects and tasks (also private projects I am not contact for)','projet',1,'all','supprimer','d',0,14,0),(151,'Read withdrawals','prelevement',1,'bons','lire','r',1,52,0),(152,'Create/modify a withdrawals','prelevement',1,'bons','creer','w',0,52,0),(153,'Send withdrawals to bank','prelevement',1,'bons','send','a',0,52,0),(154,'credit/refuse withdrawals','prelevement',1,'bons','credit','a',0,52,0),(161,'Lire les contrats','contrat',1,'lire',NULL,'r',1,35,0),(162,'Creer / modifier les contrats','contrat',1,'creer',NULL,'w',0,35,0),(163,'Activer un service d\'un contrat','contrat',1,'activer',NULL,'w',0,35,0),(164,'Desactiver un service d\'un contrat','contrat',1,'desactiver',NULL,'w',0,35,0),(165,'Supprimer un contrat','contrat',1,'supprimer',NULL,'d',0,35,0),(167,'Export contracts','contrat',1,'export',NULL,'r',0,35,0),(221,'Consulter les mailings','mailing',1,'lire',NULL,'r',1,11,0),(221,'Consulter les mailings','mailing',2,'lire',NULL,'r',1,11,0),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',1,'creer',NULL,'w',0,11,0),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',2,'creer',NULL,'w',0,11,0),(223,'Valider les mailings (permet leur envoi)','mailing',1,'valider',NULL,'w',0,11,0),(223,'Valider les mailings (permet leur envoi)','mailing',2,'valider',NULL,'w',0,11,0),(229,'Supprimer les mailings','mailing',1,'supprimer',NULL,'d',0,11,0),(229,'Supprimer les mailings','mailing',2,'supprimer',NULL,'d',0,11,0),(237,'View recipients and info','mailing',1,'mailing_advance','recipient','r',0,11,0),(237,'View recipients and info','mailing',2,'mailing_advance','recipient','r',0,11,0),(238,'Manually send mailings','mailing',1,'mailing_advance','send','w',0,11,0),(238,'Manually send mailings','mailing',2,'mailing_advance','send','w',0,11,0),(239,'Delete mailings after validation and/or sent','mailing',1,'mailing_advance','delete','d',0,11,0),(239,'Delete mailings after validation and/or sent','mailing',2,'mailing_advance','delete','d',0,11,0),(241,'Lire les categories','categorie',1,'lire',NULL,'r',1,20,0),(242,'Creer/modifier les categories','categorie',1,'creer',NULL,'w',0,20,0),(243,'Supprimer les categories','categorie',1,'supprimer',NULL,'d',0,20,0),(251,'Read information of other users, groups and permissions','user',1,'user','lire','r',0,5,0),(252,'Read permissions of other users','user',1,'user_advance','readperms','r',0,5,0),(253,'Create/modify internal and external users, groups and permissions','user',1,'user','creer','w',0,5,0),(254,'Create/modify external users only','user',1,'user_advance','write','w',0,5,0),(255,'Modify the password of other users','user',1,'user','password','w',0,5,0),(256,'Delete or disable other users','user',1,'user','supprimer','d',0,5,0),(262,'Read all third parties (and their objects) by internal users (otherwise only if commercial contact). Not effective for external users (limited to themselves).','societe',1,'client','voir','r',0,9,0),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',2,'client','voir','r',1,9,0),(281,'Read contacts','societe',1,'contact','lire','r',0,9,0),(281,'Lire les contacts','societe',2,'contact','lire','r',1,9,0),(282,'Create and update contact','societe',1,'contact','creer','w',0,9,0),(282,'Creer modifier les contacts','societe',2,'contact','creer','w',0,9,0),(283,'Delete contacts','societe',1,'contact','supprimer','d',0,9,0),(283,'Supprimer les contacts','societe',2,'contact','supprimer','d',0,9,0),(286,'Export contacts','societe',1,'contact','export','d',0,9,0),(286,'Exporter les contacts','societe',2,'contact','export','d',0,9,0),(301,'Read barcodes','barcode',1,'lire_advance',NULL,'r',1,50,0),(302,'Create/modify barcodes','barcode',1,'creer_advance',NULL,'w',0,50,0),(331,'Lire les bookmarks','bookmark',1,'lire',NULL,'r',0,50,0),(332,'Creer/modifier les bookmarks','bookmark',1,'creer',NULL,'r',0,50,0),(333,'Supprimer les bookmarks','bookmark',1,'supprimer',NULL,'r',0,50,0),(341,'Read its own permissions','user',1,'self_advance','readperms','r',0,5,0),(342,'Create/modify of its own user','user',1,'self','creer','w',0,5,0),(343,'Modify its own password','user',1,'self','password','w',0,5,0),(344,'Modify its own permissions','user',1,'self_advance','writeperms','w',0,5,0),(351,'Read groups','user',1,'group_advance','read','r',0,5,0),(352,'Read permissions of groups','user',1,'group_advance','readperms','r',0,5,0),(353,'Create/modify groups and permissions','user',1,'group_advance','write','w',0,5,0),(354,'Delete groups','user',1,'group_advance','delete','d',0,5,0),(358,'Export all users','user',1,'user','export','r',0,5,0),(511,'Read employee salaries and payments (yours and your subordinates)','salaries',1,'read',NULL,'r',0,50,0),(512,'Create/modify payments of empoyee salaries','salaries',1,'write',NULL,'w',0,50,0),(514,'Delete payments of employee salary','salaries',1,'delete',NULL,'d',0,50,0),(517,'Read salaries and payments of all employees','salaries',1,'readall',NULL,'r',0,50,0),(519,'Export payments of employee salaries','salaries',1,'export',NULL,'r',0,50,0),(520,'Read loans','loan',1,'read',NULL,'r',0,50,0),(521,'Read loans','loan',1,'read',NULL,'r',0,50,0),(522,'Create/modify loans','loan',1,'write',NULL,'w',0,50,0),(524,'Delete loans','loan',1,'delete',NULL,'d',0,50,0),(525,'Access loan calculator','loan',1,'calc',NULL,'r',0,50,0),(527,'Export loans','loan',1,'export',NULL,'r',0,50,0),(531,'Read services','service',1,'lire',NULL,'r',0,29,0),(532,'Create/modify services','service',1,'creer',NULL,'w',0,29,0),(534,'Delete les services','service',1,'supprimer',NULL,'d',0,29,0),(538,'Export services','service',1,'export',NULL,'r',0,29,0),(561,'Read bank transfer payment orders','paymentbybanktransfer',1,'read',NULL,'r',0,52,0),(562,'Create/modify a bank transfer payment order','paymentbybanktransfer',1,'create',NULL,'w',0,52,0),(563,'Send/Transmit bank transfer payment order','paymentbybanktransfer',1,'send',NULL,'a',0,52,0),(564,'Record Debits/Rejects of bank transfer payment order','paymentbybanktransfer',1,'debit',NULL,'a',0,52,0),(651,'Read bom of Bom','bom',1,'read',NULL,'w',0,65,0),(652,'Create/Update bom of Bom','bom',1,'write',NULL,'w',0,65,0),(653,'Delete bom of Bom','bom',1,'delete',NULL,'w',0,65,0),(661,'Read Manufacturing Order','mrp',1,'read',NULL,'w',0,66,0),(662,'Create/Update Manufacturing Order','mrp',1,'write',NULL,'w',0,66,0),(663,'Delete Manufacturing Order','mrp',1,'delete',NULL,'w',0,66,0),(701,'Lire les dons','don',1,'lire',NULL,'r',1,50,0),(701,'Lire les dons','don',2,'lire',NULL,'r',1,50,0),(702,'Creer/modifier les dons','don',1,'creer',NULL,'w',0,50,0),(702,'Creer/modifier les dons','don',2,'creer',NULL,'w',0,50,0),(703,'Supprimer les dons','don',1,'supprimer',NULL,'d',0,50,0),(703,'Supprimer les dons','don',2,'supprimer',NULL,'d',0,50,0),(750,'Read job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','read','w',0,44,0),(751,'Create/Update job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','write','w',0,44,0),(752,'Delete Job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','delete','w',0,44,0),(771,'Read expense reports (yours and your subordinates)','expensereport',1,'lire',NULL,'r',0,42,0),(772,'Create/modify expense reports','expensereport',1,'creer',NULL,'w',0,42,0),(773,'Delete expense reports','expensereport',1,'supprimer',NULL,'d',0,42,0),(775,'Approve expense reports','expensereport',1,'approve',NULL,'w',0,42,0),(776,'Pay expense reports','expensereport',1,'to_paid',NULL,'w',0,42,0),(777,'Read expense reports of everybody','expensereport',1,'readall',NULL,'r',0,42,0),(778,'Create expense reports for everybody','expensereport',1,'writeall_advance',NULL,'w',0,42,0),(779,'Export expense reports','expensereport',1,'export',NULL,'r',0,42,0),(1001,'Lire les stocks','stock',1,'lire',NULL,'r',1,40,0),(1002,'Creer/Modifier les stocks','stock',1,'creer',NULL,'w',0,40,0),(1003,'Supprimer les stocks','stock',1,'supprimer',NULL,'d',0,40,0),(1004,'Lire mouvements de stocks','stock',1,'mouvement','lire','r',1,40,0),(1005,'Creer/modifier mouvements de stocks','stock',1,'mouvement','creer','w',0,40,0),(1011,'inventoryReadPermission','stock',1,'inventory_advance','read','w',0,39,0),(1012,'inventoryCreatePermission','stock',1,'inventory_advance','write','w',0,39,0),(1101,'Read delivery receipts','expedition',1,'delivery','lire','r',0,40,0),(1102,'Create/modify delivery receipts','expedition',1,'delivery','creer','w',0,40,0),(1104,'Validate delivery receipts','expedition',1,'delivery_advance','validate','d',0,40,0),(1109,'Delete delivery receipts','expedition',1,'delivery','supprimer','d',0,40,0),(1121,'Read supplier proposals','supplier_proposal',1,'lire',NULL,'w',0,35,0),(1122,'Create/modify supplier proposals','supplier_proposal',1,'creer',NULL,'w',0,35,0),(1123,'Validate supplier proposals','supplier_proposal',1,'validate_advance',NULL,'w',0,35,0),(1124,'Envoyer les demandes fournisseurs','supplier_proposal',1,'send_advance',NULL,'w',0,35,0),(1125,'Delete supplier proposals','supplier_proposal',1,'supprimer',NULL,'w',0,35,0),(1126,'Close supplier price requests','supplier_proposal',1,'cloturer',NULL,'w',0,35,0),(1181,'Consulter les fournisseurs','fournisseur',1,'lire',NULL,'r',0,12,0),(1182,'Consulter les commandes fournisseur','fournisseur',1,'commande','lire','r',0,12,0),(1183,'Creer une commande fournisseur','fournisseur',1,'commande','creer','w',0,12,0),(1184,'Valider une commande fournisseur','fournisseur',1,'supplier_order_advance','validate','w',0,12,0),(1185,'Approuver une commande fournisseur','fournisseur',1,'commande','approuver','w',0,12,0),(1186,'Commander une commande fournisseur','fournisseur',1,'commande','commander','w',0,12,0),(1187,'Receptionner une commande fournisseur','fournisseur',1,'commande','receptionner','d',0,12,0),(1188,'Supprimer une commande fournisseur','fournisseur',1,'commande','supprimer','d',0,12,0),(1189,'Check/Uncheck a supplier order reception','fournisseur',1,'commande_advance','check','w',0,12,0),(1191,'Exporter les commande fournisseurs, attributs','fournisseur',1,'commande','export','r',0,12,0),(1201,'Lire les exports','export',1,'lire',NULL,'r',1,72,0),(1202,'Creer/modifier un export','export',1,'creer',NULL,'w',0,72,0),(1231,'Consulter les factures fournisseur','fournisseur',1,'facture','lire','r',0,12,0),(1232,'Creer une facture fournisseur','fournisseur',1,'facture','creer','w',0,12,0),(1233,'Valider une facture fournisseur','fournisseur',1,'supplier_invoice_advance','validate','w',0,12,0),(1234,'Supprimer une facture fournisseur','fournisseur',1,'facture','supprimer','d',0,12,0),(1235,'Envoyer les factures par mail','fournisseur',1,'supplier_invoice_advance','send','a',0,12,0),(1236,'Exporter les factures fournisseurs, attributs et reglements','fournisseur',1,'facture','export','r',0,12,0),(1251,'Run mass imports of external data (data load)','import',1,'run',NULL,'r',0,70,0),(1321,'Export customer invoices, attributes and payments','facture',1,'facture','export','r',0,11,0),(1321,'Exporter les factures clients, attributs et reglements','facture',2,'facture','export','r',0,10,0),(1322,'Re-open a fully paid invoice','facture',1,'invoice_advance','reopen','r',0,11,0),(1421,'Export sales orders and attributes','commande',1,'commande','export','r',0,11,0),(2401,'Read actions/tasks linked to his account','agenda',1,'myactions','read','r',0,15,0),(2401,'Read actions/tasks linked to his account','agenda',2,'myactions','read','r',1,15,0),(2402,'Create/modify actions/tasks linked to his account','agenda',1,'myactions','create','w',0,15,0),(2402,'Create/modify actions/tasks linked to his account','agenda',2,'myactions','create','w',0,15,0),(2403,'Delete actions/tasks linked to his account','agenda',1,'myactions','delete','w',0,15,0),(2403,'Delete actions/tasks linked to his account','agenda',2,'myactions','delete','w',0,15,0),(2411,'Read actions/tasks of others','agenda',1,'allactions','read','r',0,15,0),(2411,'Read actions/tasks of others','agenda',2,'allactions','read','r',0,15,0),(2412,'Create/modify actions/tasks of others','agenda',1,'allactions','create','w',0,15,0),(2412,'Create/modify actions/tasks of others','agenda',2,'allactions','create','w',0,15,0),(2413,'Delete actions/tasks of others','agenda',1,'allactions','delete','w',0,15,0),(2413,'Delete actions/tasks of others','agenda',2,'allactions','delete','w',0,15,0),(2414,'Export actions/tasks of others','agenda',1,'export',NULL,'w',0,15,0),(2501,'Read or download documents','ecm',1,'read',NULL,'r',0,10,0),(2503,'Upload a document','ecm',1,'upload',NULL,'w',0,10,0),(2515,'Administer directories of documents','ecm',1,'setup',NULL,'w',0,10,0),(2610,'Générer / modifier la clé API des utilisateurs','api',1,'apikey','generate','w',0,24,0),(3201,'Read archived events and fingerprints','blockedlog',1,'read',NULL,'w',0,76,0),(10001,'Read website content','website',1,'read',NULL,'w',0,50,0),(10002,'Create/modify website content (html and javascript content)','website',1,'write',NULL,'w',0,50,0),(10003,'Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers.','website',1,'writephp',NULL,'w',0,50,0),(10005,'Delete website content','website',1,'delete',NULL,'w',0,50,0),(10008,'Export website content','website',1,'export',NULL,'w',0,50,0),(20001,'Read leave requests (yours and your subordinates)','holiday',1,'read',NULL,'w',0,42,0),(20001,'Créer / Modifier / Lire ses demandes de congés payés','holiday',2,'write',NULL,'w',1,42,0),(20002,'Create/modify leave requests','holiday',1,'write',NULL,'w',0,42,0),(20003,'Delete leave requests','holiday',1,'delete',NULL,'w',0,42,0),(20003,'Supprimer des demandes de congés payés','holiday',2,'delete',NULL,'w',0,42,0),(20004,'Read leave requests for everybody','holiday',1,'readall',NULL,'w',0,42,0),(20004,'Définir les congés payés des utilisateurs','holiday',2,'define_holiday',NULL,'w',0,42,0),(20005,'Create/modify leave requests for everybody','holiday',1,'writeall',NULL,'w',0,42,0),(20005,'Voir les logs de modification des congés payés','holiday',2,'view_log',NULL,'w',0,42,0),(20006,'Setup leave requests of users (setup and update balance)','holiday',1,'define_holiday',NULL,'w',0,42,0),(20006,'Accéder au rapport mensuel des congés payés','holiday',2,'month_report',NULL,'w',0,42,0),(20007,'Approve leave requests','holiday',1,'approve',NULL,'w',0,42,0),(23001,'Read cron jobs','cron',1,'read',NULL,'w',0,50,0),(23002,'Create cron Jobs','cron',1,'create',NULL,'w',0,50,0),(23003,'Delete cron Jobs','cron',1,'delete',NULL,'w',0,50,0),(23004,'Execute cron Jobs','cron',1,'execute',NULL,'w',0,50,0),(50151,'Use Point Of Sale (record a sale, add products, record payment)','takepos',1,'run',NULL,'a',0,60,0),(50152,'Can modify added sales lines (prices, discount)','takepos',1,'editlines',NULL,'a',0,60,0),(50153,'Edit ordered sales lines (useful only when option \"Order printers\" has been enabled). Allow to edit sales lines even after the order has been printed','takepos',1,'editorderedlines',NULL,'a',0,60,0),(50401,'Bind products and invoices with accounting accounts','accounting',1,'bind','write','r',0,61,0),(50411,'Read operations in General Ledger','accounting',1,'mouvements','lire','r',0,61,0),(50412,'Write/Edit operations in General Ledger','accounting',1,'mouvements','creer','w',0,61,0),(50414,'Delete operations in Ledger','accounting',1,'mouvements','supprimer','d',0,61,0),(50415,'Delete all operations by year and journal in Ledger','accounting',1,'mouvements','supprimer_tous','d',0,61,0),(50418,'Export operations of the Ledger','accounting',1,'mouvements','export','r',0,61,0),(50420,'Report and export reports (turnover, balance, journals, general ledger)','accounting',1,'comptarapport','lire','r',0,61,0),(50430,'Define and close a fiscal year','accounting',1,'fiscalyear','write','r',0,61,0),(50440,'Manage chart of accounts, setup of accountancy','accounting',1,'chartofaccount',NULL,'r',0,61,0),(55001,'Read surveys','opensurvey',1,'read',NULL,'r',0,40,0),(55002,'Create/modify surveys','opensurvey',1,'write',NULL,'w',0,40,0),(56001,'Read ticket','ticket',1,'read',NULL,'r',0,60,0),(56002,'Create les tickets','ticket',1,'write',NULL,'w',0,60,0),(56003,'Delete les tickets','ticket',1,'delete',NULL,'d',0,60,0),(56004,'Manage tickets','ticket',1,'manage',NULL,'w',0,60,0),(57001,'Read articles','knowledgemanagement',1,'knowledgerecord','read','w',0,90,0),(57002,'Create/Update articles','knowledgemanagement',1,'knowledgerecord','write','w',0,90,0),(57003,'Delete articles','knowledgemanagement',1,'knowledgerecord','delete','w',0,90,0),(59001,'Visualiser les marges','margins',1,'liretous',NULL,'r',0,55,0),(59002,'Définir les marges','margins',1,'creer',NULL,'w',0,55,0),(59003,'Read every user margin','margins',1,'read','all','r',0,55,0),(63001,'Read resources','resource',1,'read',NULL,'w',0,16,0),(63002,'Create/Modify resources','resource',1,'write',NULL,'w',0,16,0),(63003,'Delete resources','resource',1,'delete',NULL,'w',0,16,0),(63004,'Link resources to agenda events','resource',1,'link',NULL,'w',0,16,0),(64001,'DirectPrint','printing',1,'read',NULL,'r',0,52,0),(101250,'Read surveys','opensurvey',2,'survey','read','r',0,40,0),(101251,'Create/modify surveys','opensurvey',2,'survey','write','w',0,40,0),(941601,'Lire les receptions','reception',1,'lire',NULL,'r',0,40,0),(941602,'Creer modifier les receptions','reception',1,'creer',NULL,'w',0,40,0),(941603,'Valider les receptions','reception',1,'reception_advance','validate','d',0,40,0),(941604,'Envoyer les receptions aux clients','reception',1,'reception_advance','send','d',0,40,0),(941605,'Exporter les receptions','reception',1,'reception','export','r',0,40,0),(941606,'Supprimer les receptions','reception',1,'supprimer',NULL,'d',0,40,0); +INSERT INTO `llx_rights_def` VALUES (11,'Read invoices','facture',1,'lire',NULL,'a',0,0,0),(11,'Lire les factures','facture',2,'lire',NULL,'a',1,10,0),(12,'Create and update invoices','facture',1,'creer',NULL,'a',0,0,0),(12,'Creer/modifier les factures','facture',2,'creer',NULL,'a',0,10,0),(13,'Devalidate invoices','facture',1,'invoice_advance','unvalidate','a',0,0,0),(13,'Dévalider les factures','facture',2,'invoice_advance','unvalidate','a',0,10,0),(14,'Validate invoices','facture',1,'invoice_advance','validate','a',0,0,0),(14,'Valider les factures','facture',2,'valider',NULL,'a',0,10,0),(15,'Send invoices by email','facture',1,'invoice_advance','send','a',0,0,0),(15,'Envoyer les factures par mail','facture',2,'invoice_advance','send','a',0,10,0),(16,'Issue payments on invoices','facture',1,'paiement',NULL,'a',0,0,0),(16,'Emettre des paiements sur les factures','facture',2,'paiement',NULL,'a',0,10,0),(19,'Delete invoices','facture',1,'supprimer',NULL,'a',0,0,0),(19,'Supprimer les factures','facture',2,'supprimer',NULL,'a',0,10,0),(21,'Lire les propositions commerciales','propale',1,'lire',NULL,'r',1,22,0),(21,'Lire les propositions commerciales','propale',2,'lire',NULL,'r',1,22,0),(22,'Creer/modifier les propositions commerciales','propale',1,'creer',NULL,'w',0,22,0),(22,'Creer/modifier les propositions commerciales','propale',2,'creer',NULL,'w',0,22,0),(24,'Valider les propositions commerciales','propale',1,'propal_advance','validate','d',0,22,0),(24,'Valider les propositions commerciales','propale',2,'valider',NULL,'d',0,22,0),(25,'Envoyer les propositions commerciales aux clients','propale',1,'propal_advance','send','d',0,22,0),(25,'Envoyer les propositions commerciales aux clients','propale',2,'propal_advance','send','d',0,22,0),(26,'Cloturer les propositions commerciales','propale',1,'propal_advance','close','d',0,22,0),(26,'Cloturer les propositions commerciales','propale',2,'propal_advance','close','d',0,22,0),(27,'Supprimer les propositions commerciales','propale',1,'supprimer',NULL,'d',0,22,0),(27,'Supprimer les propositions commerciales','propale',2,'supprimer',NULL,'d',0,22,0),(28,'Exporter les propositions commerciales et attributs','propale',1,'export',NULL,'r',0,22,0),(28,'Exporter les propositions commerciales et attributs','propale',2,'export',NULL,'r',0,22,0),(31,'Lire les produits','produit',1,'lire',NULL,'r',1,25,0),(31,'Lire les produits','produit',2,'lire',NULL,'r',1,25,0),(32,'Creer/modifier les produits','produit',1,'creer',NULL,'w',0,25,0),(32,'Creer/modifier les produits','produit',2,'creer',NULL,'w',0,25,0),(34,'Supprimer les produits','produit',1,'supprimer',NULL,'d',0,25,0),(34,'Supprimer les produits','produit',2,'supprimer',NULL,'d',0,25,0),(38,'Exporter les produits','produit',1,'export',NULL,'r',0,25,0),(38,'Exporter les produits','produit',2,'export',NULL,'r',0,25,0),(39,'Ignore minimum price','produit',1,'ignore_price_min_advance',NULL,'r',0,25,0),(41,'Read projects and tasks (shared projects or projects I am contact for). Can also enter time consumed on assigned tasks (timesheet)','projet',1,'lire',NULL,'r',1,14,0),(42,'Create/modify projects and tasks (shared projects or projects I am contact for)','projet',1,'creer',NULL,'w',0,14,0),(44,'Delete project and tasks (shared projects or projects I am contact for)','projet',1,'supprimer',NULL,'d',0,14,0),(45,'Export projects','projet',1,'export',NULL,'d',0,14,0),(61,'Lire les fiches d\'intervention','ficheinter',1,'lire',NULL,'r',1,41,0),(62,'Creer/modifier les fiches d\'intervention','ficheinter',1,'creer',NULL,'w',0,41,0),(64,'Supprimer les fiches d\'intervention','ficheinter',1,'supprimer',NULL,'d',0,41,0),(67,'Exporter les fiches interventions','ficheinter',1,'export',NULL,'r',0,41,0),(68,'Envoyer les fiches d\'intervention par courriel','ficheinter',1,'ficheinter_advance','send','r',0,41,0),(69,'Valider les fiches d\'intervention ','ficheinter',1,'ficheinter_advance','validate','a',0,41,0),(70,'Dévalider les fiches d\'intervention','ficheinter',1,'ficheinter_advance','unvalidate','a',0,41,0),(71,'Read members\' card','adherent',1,'lire',NULL,'r',0,55,0),(72,'Create/modify members (need also user module permissions if member linked to a user)','adherent',1,'creer',NULL,'w',0,55,0),(74,'Remove members','adherent',1,'supprimer',NULL,'d',0,55,0),(75,'Setup types of membership','adherent',1,'configurer',NULL,'w',0,55,0),(76,'Export members','adherent',1,'export',NULL,'r',0,55,0),(78,'Read subscriptions','adherent',1,'cotisation','lire','r',0,55,0),(79,'Create/modify/remove subscriptions','adherent',1,'cotisation','creer','w',0,55,0),(81,'Read sales orders','commande',1,'lire',NULL,'r',0,0,0),(82,'Creeat/modify sales orders','commande',1,'creer',NULL,'w',0,0,0),(84,'Validate sales orders','commande',1,'order_advance','validate','d',0,0,0),(86,'Send sale orders by email','commande',1,'order_advance','send','d',0,0,0),(87,'Close sale orders','commande',1,'order_advance','close','d',0,0,0),(88,'Cancel sale orders','commande',1,'order_advance','annuler','d',0,0,0),(89,'Delete sales orders','commande',1,'supprimer',NULL,'d',0,0,0),(91,'Lire les charges','tax',1,'charges','lire','r',0,50,0),(91,'Lire les charges','tax',2,'charges','lire','r',1,50,0),(92,'Creer/modifier les charges','tax',1,'charges','creer','w',0,50,0),(92,'Creer/modifier les charges','tax',2,'charges','creer','w',0,50,0),(93,'Supprimer les charges','tax',1,'charges','supprimer','d',0,50,0),(93,'Supprimer les charges','tax',2,'charges','supprimer','d',0,50,0),(94,'Exporter les charges','tax',1,'charges','export','r',0,50,0),(94,'Exporter les charges','tax',2,'charges','export','r',0,50,0),(101,'Lire les expeditions','expedition',1,'lire',NULL,'r',0,40,0),(102,'Creer modifier les expeditions','expedition',1,'creer',NULL,'w',0,40,0),(104,'Valider les expeditions','expedition',1,'shipping_advance','validate','d',0,40,0),(105,'Envoyer les expeditions aux clients','expedition',1,'shipping_advance','send','d',0,40,0),(106,'Exporter les expeditions','expedition',1,'shipment','export','r',0,40,0),(109,'Supprimer les expeditions','expedition',1,'supprimer',NULL,'d',0,40,0),(111,'Read bank account and transactions','banque',1,'lire',NULL,'r',0,0,0),(111,'Lire les comptes bancaires','banque',2,'lire',NULL,'r',1,51,0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',1,'modifier',NULL,'w',0,0,0),(112,'Creer/modifier montant/supprimer ecriture bancaire','banque',2,'modifier',NULL,'w',0,51,0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',1,'configurer',NULL,'a',0,0,0),(113,'Configurer les comptes bancaires (creer, gerer categories)','banque',2,'configurer',NULL,'a',0,51,0),(114,'Rapprocher les ecritures bancaires','banque',1,'consolidate',NULL,'w',0,0,0),(114,'Rapprocher les ecritures bancaires','banque',2,'consolidate',NULL,'w',0,51,0),(115,'Exporter transactions et releves','banque',1,'export',NULL,'r',0,0,0),(115,'Exporter transactions et releves','banque',2,'export',NULL,'r',0,51,0),(116,'Virements entre comptes','banque',1,'transfer',NULL,'w',0,0,0),(116,'Virements entre comptes','banque',2,'transfer',NULL,'w',0,51,0),(117,'Gerer les envois de cheques','banque',1,'cheque',NULL,'w',0,0,0),(117,'Gerer les envois de cheques','banque',2,'cheque',NULL,'w',0,51,0),(121,'Read third parties','societe',1,'lire',NULL,'r',0,0,0),(121,'Lire les societes','societe',2,'lire',NULL,'r',1,9,0),(122,'Create and update third parties','societe',1,'creer',NULL,'w',0,0,0),(122,'Creer modifier les societes','societe',2,'creer',NULL,'w',0,9,0),(125,'Delete third parties','societe',1,'supprimer',NULL,'d',0,0,0),(125,'Supprimer les societes','societe',2,'supprimer',NULL,'d',0,9,0),(126,'Export third parties','societe',1,'export',NULL,'r',0,0,0),(126,'Exporter les societes','societe',2,'export',NULL,'r',0,9,0),(130,'Modify thirdparty information payment','societe',1,'thirdparty_paymentinformation_advance','write','w',0,0,0),(141,'Read all projects and tasks (also private projects I am not contact for)','projet',1,'all','lire','r',0,14,0),(142,'Create/modify all projects and tasks (also private projects I am not contact for)','projet',1,'all','creer','w',0,14,0),(144,'Delete all projects and tasks (also private projects I am not contact for)','projet',1,'all','supprimer','d',0,14,0),(151,'Read withdrawals','prelevement',1,'bons','lire','r',1,52,0),(152,'Create/modify a withdrawals','prelevement',1,'bons','creer','w',0,52,0),(153,'Send withdrawals to bank','prelevement',1,'bons','send','a',0,52,0),(154,'credit/refuse withdrawals','prelevement',1,'bons','credit','a',0,52,0),(161,'Lire les contrats','contrat',1,'lire',NULL,'r',1,35,0),(162,'Creer / modifier les contrats','contrat',1,'creer',NULL,'w',0,35,0),(163,'Activer un service d\'un contrat','contrat',1,'activer',NULL,'w',0,35,0),(164,'Desactiver un service d\'un contrat','contrat',1,'desactiver',NULL,'w',0,35,0),(165,'Supprimer un contrat','contrat',1,'supprimer',NULL,'d',0,35,0),(167,'Export contracts','contrat',1,'export',NULL,'r',0,35,0),(221,'Consulter les mailings','mailing',1,'lire',NULL,'r',1,11,0),(221,'Consulter les mailings','mailing',2,'lire',NULL,'r',1,11,0),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',1,'creer',NULL,'w',0,11,0),(222,'Creer/modifier les mailings (sujet, destinataires...)','mailing',2,'creer',NULL,'w',0,11,0),(223,'Valider les mailings (permet leur envoi)','mailing',1,'valider',NULL,'w',0,11,0),(223,'Valider les mailings (permet leur envoi)','mailing',2,'valider',NULL,'w',0,11,0),(229,'Supprimer les mailings','mailing',1,'supprimer',NULL,'d',0,11,0),(229,'Supprimer les mailings','mailing',2,'supprimer',NULL,'d',0,11,0),(237,'View recipients and info','mailing',1,'mailing_advance','recipient','r',0,11,0),(237,'View recipients and info','mailing',2,'mailing_advance','recipient','r',0,11,0),(238,'Manually send mailings','mailing',1,'mailing_advance','send','w',0,11,0),(238,'Manually send mailings','mailing',2,'mailing_advance','send','w',0,11,0),(239,'Delete mailings after validation and/or sent','mailing',1,'mailing_advance','delete','d',0,11,0),(239,'Delete mailings after validation and/or sent','mailing',2,'mailing_advance','delete','d',0,11,0),(241,'Lire les categories','categorie',1,'lire',NULL,'r',1,20,0),(242,'Creer/modifier les categories','categorie',1,'creer',NULL,'w',0,20,0),(243,'Supprimer les categories','categorie',1,'supprimer',NULL,'d',0,20,0),(251,'Read information of other users, groups and permissions','user',1,'user','lire','r',0,0,0),(252,'Read permissions of other users','user',1,'user_advance','readperms','r',0,0,0),(253,'Create/modify internal and external users, groups and permissions','user',1,'user','creer','w',0,0,0),(254,'Create/modify external users only','user',1,'user_advance','write','w',0,0,0),(255,'Modify the password of other users','user',1,'user','password','w',0,0,0),(256,'Delete or disable other users','user',1,'user','supprimer','d',0,0,0),(262,'Read all third parties (and their objects) by internal users (otherwise only if commercial contact). Not effective for external users (limited to themselves).','societe',1,'client','voir','r',0,0,0),(262,'Consulter tous les tiers par utilisateurs internes (sinon uniquement si contact commercial). Non effectif pour utilisateurs externes (tjs limités à eux-meme).','societe',2,'client','voir','r',1,9,0),(281,'Read contacts','societe',1,'contact','lire','r',0,0,0),(281,'Lire les contacts','societe',2,'contact','lire','r',1,9,0),(282,'Create and update contact','societe',1,'contact','creer','w',0,0,0),(282,'Creer modifier les contacts','societe',2,'contact','creer','w',0,9,0),(283,'Delete contacts','societe',1,'contact','supprimer','d',0,0,0),(283,'Supprimer les contacts','societe',2,'contact','supprimer','d',0,9,0),(286,'Export contacts','societe',1,'contact','export','d',0,0,0),(286,'Exporter les contacts','societe',2,'contact','export','d',0,9,0),(301,'Read barcodes','barcode',1,'lire_advance',NULL,'r',1,0,0),(302,'Create/modify barcodes','barcode',1,'creer_advance',NULL,'w',0,0,0),(331,'Lire les bookmarks','bookmark',1,'lire',NULL,'r',0,50,0),(332,'Creer/modifier les bookmarks','bookmark',1,'creer',NULL,'r',0,50,0),(333,'Supprimer les bookmarks','bookmark',1,'supprimer',NULL,'r',0,50,0),(341,'Read its own permissions','user',1,'self_advance','readperms','r',0,0,0),(342,'Create/modify of its own user','user',1,'self','creer','w',0,0,0),(343,'Modify its own password','user',1,'self','password','w',0,0,0),(344,'Modify its own permissions','user',1,'self_advance','writeperms','w',0,0,0),(351,'Read groups','user',1,'group_advance','read','r',0,0,0),(352,'Read permissions of groups','user',1,'group_advance','readperms','r',0,0,0),(353,'Create/modify groups and permissions','user',1,'group_advance','write','w',0,0,0),(354,'Delete groups','user',1,'group_advance','delete','d',0,0,0),(358,'Export all users','user',1,'user','export','r',0,0,0),(511,'Read employee salaries and payments (yours and your subordinates)','salaries',1,'read',NULL,'r',0,0,0),(512,'Create/modify payments of empoyee salaries','salaries',1,'write',NULL,'w',0,0,0),(514,'Delete payments of employee salary','salaries',1,'delete',NULL,'d',0,0,0),(517,'Read salaries and payments of all employees','salaries',1,'readall',NULL,'r',0,0,0),(519,'Export payments of employee salaries','salaries',1,'export',NULL,'r',0,0,0),(520,'Read loans','loan',1,'read',NULL,'r',0,50,0),(521,'Read loans','loan',1,'read',NULL,'r',0,50,0),(522,'Create/modify loans','loan',1,'write',NULL,'w',0,50,0),(524,'Delete loans','loan',1,'delete',NULL,'d',0,50,0),(525,'Access loan calculator','loan',1,'calc',NULL,'r',0,50,0),(527,'Export loans','loan',1,'export',NULL,'r',0,50,0),(531,'Read services','service',1,'lire',NULL,'r',0,0,0),(532,'Create/modify services','service',1,'creer',NULL,'w',0,0,0),(534,'Delete les services','service',1,'supprimer',NULL,'d',0,0,0),(538,'Export services','service',1,'export',NULL,'r',0,0,0),(561,'Read bank transfer payment orders','paymentbybanktransfer',1,'read',NULL,'r',0,52,0),(562,'Create/modify a bank transfer payment order','paymentbybanktransfer',1,'create',NULL,'w',0,52,0),(563,'Send/Transmit bank transfer payment order','paymentbybanktransfer',1,'send',NULL,'a',0,52,0),(564,'Record Debits/Rejects of bank transfer payment order','paymentbybanktransfer',1,'debit',NULL,'a',0,52,0),(610,'Read attributes of variants','variants',1,'read',NULL,'w',0,0,0),(611,'Create/Update attributes of variants','variants',1,'write',NULL,'w',0,0,0),(612,'Delete attributes of variants','variants',1,'delete',NULL,'w',0,0,0),(651,'Read bom of Bom','bom',1,'read',NULL,'w',0,0,0),(652,'Create/Update bom of Bom','bom',1,'write',NULL,'w',0,0,0),(653,'Delete bom of Bom','bom',1,'delete',NULL,'w',0,0,0),(661,'Read Manufacturing Order','mrp',1,'read',NULL,'w',0,0,0),(662,'Create/Update Manufacturing Order','mrp',1,'write',NULL,'w',0,0,0),(663,'Delete Manufacturing Order','mrp',1,'delete',NULL,'w',0,0,0),(701,'Lire les dons','don',1,'lire',NULL,'r',1,50,0),(701,'Lire les dons','don',2,'lire',NULL,'r',1,50,0),(702,'Creer/modifier les dons','don',1,'creer',NULL,'w',0,50,0),(702,'Creer/modifier les dons','don',2,'creer',NULL,'w',0,50,0),(703,'Supprimer les dons','don',1,'supprimer',NULL,'d',0,50,0),(703,'Supprimer les dons','don',2,'supprimer',NULL,'d',0,50,0),(750,'Read job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','read','w',0,0,0),(751,'Create/Update job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','write','w',0,0,0),(752,'Delete Job positions to fill and candidatures','recruitment',1,'recruitmentjobposition','delete','w',0,0,0),(771,'Read expense reports (yours and your subordinates)','expensereport',1,'lire',NULL,'r',0,0,0),(772,'Create/modify expense reports','expensereport',1,'creer',NULL,'w',0,0,0),(773,'Delete expense reports','expensereport',1,'supprimer',NULL,'d',0,0,0),(775,'Approve expense reports','expensereport',1,'approve',NULL,'w',0,0,0),(776,'Pay expense reports','expensereport',1,'to_paid',NULL,'w',0,0,0),(777,'Read expense reports of everybody','expensereport',1,'readall',NULL,'r',0,0,0),(778,'Create expense reports for everybody','expensereport',1,'writeall_advance',NULL,'w',0,0,0),(779,'Export expense reports','expensereport',1,'export',NULL,'r',0,0,0),(1001,'Lire les stocks','stock',1,'lire',NULL,'r',1,40,0),(1002,'Creer/Modifier les stocks','stock',1,'creer',NULL,'w',0,40,0),(1003,'Supprimer les stocks','stock',1,'supprimer',NULL,'d',0,40,0),(1004,'Lire mouvements de stocks','stock',1,'mouvement','lire','r',1,40,0),(1005,'Creer/modifier mouvements de stocks','stock',1,'mouvement','creer','w',0,40,0),(1011,'inventoryReadPermission','stock',1,'inventory_advance','read','w',0,39,0),(1012,'inventoryCreatePermission','stock',1,'inventory_advance','write','w',0,39,0),(1101,'Read delivery receipts','expedition',1,'delivery','lire','r',0,40,0),(1102,'Create/modify delivery receipts','expedition',1,'delivery','creer','w',0,40,0),(1104,'Validate delivery receipts','expedition',1,'delivery_advance','validate','d',0,40,0),(1109,'Delete delivery receipts','expedition',1,'delivery','supprimer','d',0,40,0),(1121,'Read supplier proposals','supplier_proposal',1,'lire',NULL,'w',0,35,0),(1122,'Create/modify supplier proposals','supplier_proposal',1,'creer',NULL,'w',0,35,0),(1123,'Validate supplier proposals','supplier_proposal',1,'validate_advance',NULL,'w',0,35,0),(1124,'Envoyer les demandes fournisseurs','supplier_proposal',1,'send_advance',NULL,'w',0,35,0),(1125,'Delete supplier proposals','supplier_proposal',1,'supprimer',NULL,'w',0,35,0),(1126,'Close supplier price requests','supplier_proposal',1,'cloturer',NULL,'w',0,35,0),(1181,'Consulter les fournisseurs','fournisseur',1,'lire',NULL,'r',0,0,0),(1182,'Consulter les commandes fournisseur','fournisseur',1,'commande','lire','r',0,0,0),(1183,'Creer une commande fournisseur','fournisseur',1,'commande','creer','w',0,0,0),(1184,'Valider une commande fournisseur','fournisseur',1,'supplier_order_advance','validate','w',0,0,0),(1185,'Approuver une commande fournisseur','fournisseur',1,'commande','approuver','w',0,0,0),(1186,'Commander une commande fournisseur','fournisseur',1,'commande','commander','w',0,0,0),(1187,'Receptionner une commande fournisseur','fournisseur',1,'commande','receptionner','d',0,0,0),(1188,'Supprimer une commande fournisseur','fournisseur',1,'commande','supprimer','d',0,0,0),(1189,'Check/Uncheck a supplier order reception','fournisseur',1,'commande_advance','check','w',0,0,0),(1191,'Exporter les commande fournisseurs, attributs','fournisseur',1,'commande','export','r',0,0,0),(1201,'Lire les exports','export',1,'lire',NULL,'r',1,72,0),(1202,'Creer/modifier un export','export',1,'creer',NULL,'w',0,72,0),(1231,'Consulter les factures fournisseur','fournisseur',1,'facture','lire','r',0,0,0),(1232,'Creer une facture fournisseur','fournisseur',1,'facture','creer','w',0,0,0),(1233,'Valider une facture fournisseur','fournisseur',1,'supplier_invoice_advance','validate','w',0,0,0),(1234,'Supprimer une facture fournisseur','fournisseur',1,'facture','supprimer','d',0,0,0),(1235,'Envoyer les factures par mail','fournisseur',1,'supplier_invoice_advance','send','a',0,0,0),(1236,'Exporter les factures fournisseurs, attributs et reglements','fournisseur',1,'facture','export','r',0,0,0),(1251,'Run mass imports of external data (data load)','import',1,'run',NULL,'r',0,70,0),(1321,'Export customer invoices, attributes and payments','facture',1,'facture','export','r',0,0,0),(1321,'Exporter les factures clients, attributs et reglements','facture',2,'facture','export','r',0,10,0),(1322,'Re-open a fully paid invoice','facture',1,'invoice_advance','reopen','r',0,0,0),(1421,'Export sales orders and attributes','commande',1,'commande','export','r',0,0,0),(2401,'Read actions/tasks linked to his account','agenda',1,'myactions','read','r',0,0,0),(2401,'Read actions/tasks linked to his account','agenda',2,'myactions','read','r',1,15,0),(2402,'Create/modify actions/tasks linked to his account','agenda',1,'myactions','create','w',0,0,0),(2402,'Create/modify actions/tasks linked to his account','agenda',2,'myactions','create','w',0,15,0),(2403,'Delete actions/tasks linked to his account','agenda',1,'myactions','delete','w',0,0,0),(2403,'Delete actions/tasks linked to his account','agenda',2,'myactions','delete','w',0,15,0),(2411,'Read actions/tasks of others','agenda',1,'allactions','read','r',0,0,0),(2411,'Read actions/tasks of others','agenda',2,'allactions','read','r',0,15,0),(2412,'Create/modify actions/tasks of others','agenda',1,'allactions','create','w',0,0,0),(2412,'Create/modify actions/tasks of others','agenda',2,'allactions','create','w',0,15,0),(2413,'Delete actions/tasks of others','agenda',1,'allactions','delete','w',0,0,0),(2413,'Delete actions/tasks of others','agenda',2,'allactions','delete','w',0,15,0),(2414,'Export actions/tasks of others','agenda',1,'export',NULL,'w',0,0,0),(2501,'Read or download documents','ecm',1,'read',NULL,'r',0,0,0),(2503,'Upload a document','ecm',1,'upload',NULL,'w',0,0,0),(2515,'Administer directories of documents','ecm',1,'setup',NULL,'w',0,0,0),(2610,'Générer / modifier la clé API des utilisateurs','api',1,'apikey','generate','w',0,24,0),(3201,'Read archived events and fingerprints','blockedlog',1,'read',NULL,'w',0,76,0),(10001,'Read website content','website',1,'read',NULL,'w',0,0,0),(10002,'Create/modify website content (html and javascript content)','website',1,'write',NULL,'w',0,0,0),(10003,'Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers.','website',1,'writephp',NULL,'w',0,0,0),(10005,'Delete website content','website',1,'delete',NULL,'w',0,0,0),(10008,'Export website content','website',1,'export',NULL,'w',0,0,0),(20001,'Read leave requests (yours and your subordinates)','holiday',1,'read',NULL,'w',0,0,0),(20001,'Créer / Modifier / Lire ses demandes de congés payés','holiday',2,'write',NULL,'w',1,42,0),(20002,'Create/modify leave requests','holiday',1,'write',NULL,'w',0,0,0),(20003,'Delete leave requests','holiday',1,'delete',NULL,'w',0,0,0),(20003,'Supprimer des demandes de congés payés','holiday',2,'delete',NULL,'w',0,42,0),(20004,'Read leave requests for everybody','holiday',1,'readall',NULL,'w',0,0,0),(20004,'Définir les congés payés des utilisateurs','holiday',2,'define_holiday',NULL,'w',0,42,0),(20005,'Create/modify leave requests for everybody','holiday',1,'writeall',NULL,'w',0,0,0),(20005,'Voir les logs de modification des congés payés','holiday',2,'view_log',NULL,'w',0,42,0),(20006,'Setup leave requests of users (setup and update balance)','holiday',1,'define_holiday',NULL,'w',0,0,0),(20006,'Accéder au rapport mensuel des congés payés','holiday',2,'month_report',NULL,'w',0,42,0),(20007,'Approve leave requests','holiday',1,'approve',NULL,'w',0,0,0),(23001,'Read cron jobs','cron',1,'read',NULL,'w',0,0,0),(23002,'Create cron Jobs','cron',1,'create',NULL,'w',0,0,0),(23003,'Delete cron Jobs','cron',1,'delete',NULL,'w',0,0,0),(23004,'Execute cron Jobs','cron',1,'execute',NULL,'w',0,0,0),(50151,'Use Point Of Sale (record a sale, add products, record payment)','takepos',1,'run',NULL,'a',0,0,0),(50152,'Can modify added sales lines (prices, discount)','takepos',1,'editlines',NULL,'a',0,0,0),(50153,'Edit ordered sales lines (useful only when option \"Order printers\" has been enabled). Allow to edit sales lines even after the order has been printed','takepos',1,'editorderedlines',NULL,'a',0,0,0),(50401,'Bind products and invoices with accounting accounts','accounting',1,'bind','write','r',0,61,0),(50411,'Read operations in General Ledger','accounting',1,'mouvements','lire','r',0,61,0),(50412,'Write/Edit operations in General Ledger','accounting',1,'mouvements','creer','w',0,61,0),(50414,'Delete operations in Ledger','accounting',1,'mouvements','supprimer','d',0,61,0),(50415,'Delete all operations by year and journal in Ledger','accounting',1,'mouvements','supprimer_tous','d',0,61,0),(50418,'Export operations of the Ledger','accounting',1,'mouvements','export','r',0,61,0),(50420,'Report and export reports (turnover, balance, journals, general ledger)','accounting',1,'comptarapport','lire','r',0,61,0),(50430,'Define and close a fiscal year','accounting',1,'fiscalyear','write','r',0,61,0),(50440,'Manage chart of accounts, setup of accountancy','accounting',1,'chartofaccount',NULL,'r',0,61,0),(55001,'Read surveys','opensurvey',1,'read',NULL,'r',0,0,0),(55002,'Create/modify surveys','opensurvey',1,'write',NULL,'w',0,0,0),(56001,'Read ticket','ticket',1,'read',NULL,'r',0,0,0),(56002,'Create les tickets','ticket',1,'write',NULL,'w',0,0,0),(56003,'Delete les tickets','ticket',1,'delete',NULL,'d',0,0,0),(56004,'Manage tickets','ticket',1,'manage',NULL,'w',0,0,0),(57001,'Read articles','knowledgemanagement',1,'knowledgerecord','read','w',0,90,0),(57002,'Create/Update articles','knowledgemanagement',1,'knowledgerecord','write','w',0,90,0),(57003,'Delete articles','knowledgemanagement',1,'knowledgerecord','delete','w',0,90,0),(59001,'Visualiser les marges','margins',1,'liretous',NULL,'r',0,55,0),(59002,'Définir les marges','margins',1,'creer',NULL,'w',0,55,0),(59003,'Read every user margin','margins',1,'read','all','r',0,55,0),(63001,'Read resources','resource',1,'read',NULL,'w',0,16,0),(63002,'Create/Modify resources','resource',1,'write',NULL,'w',0,16,0),(63003,'Delete resources','resource',1,'delete',NULL,'w',0,16,0),(63004,'Link resources to agenda events','resource',1,'link',NULL,'w',0,16,0),(64001,'DirectPrint','printing',1,'read',NULL,'r',0,52,0),(101250,'Read surveys','opensurvey',2,'survey','read','r',0,40,0),(101251,'Create/modify surveys','opensurvey',2,'survey','write','w',0,40,0),(941601,'Lire les receptions','reception',1,'lire',NULL,'r',0,40,0),(941602,'Creer modifier les receptions','reception',1,'creer',NULL,'w',0,40,0),(941603,'Valider les receptions','reception',1,'reception_advance','validate','d',0,40,0),(941604,'Envoyer les receptions aux clients','reception',1,'reception_advance','send','d',0,40,0),(941605,'Exporter les receptions','reception',1,'reception','export','r',0,40,0),(941606,'Supprimer les receptions','reception',1,'supprimer',NULL,'d',0,40,0); /*!40000 ALTER TABLE `llx_rights_def` ENABLE KEYS */; UNLOCK TABLES; @@ -11455,7 +11992,7 @@ DROP TABLE IF EXISTS `llx_salary`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_salary` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, `fk_user` int(11) NOT NULL, @@ -11465,19 +12002,19 @@ CREATE TABLE `llx_salary` ( `amount` double(24,8) NOT NULL DEFAULT 0.00000000, `fk_projet` int(11) DEFAULT NULL, `fk_typepayment` int(11) NOT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datesp` date DEFAULT NULL, `dateep` date DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, `paye` smallint(6) NOT NULL DEFAULT 0, `fk_account` int(11) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11501,10 +12038,10 @@ CREATE TABLE `llx_salary_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_salary_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11516,6 +12053,146 @@ LOCK TABLES `llx_salary_extrafields` WRITE; /*!40000 ALTER TABLE `llx_salary_extrafields` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_sellyoursaas_blacklistcontent` +-- + +DROP TABLE IF EXISTS `llx_sellyoursaas_blacklistcontent`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_sellyoursaas_blacklistcontent` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `content` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `date_creation` datetime NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `status` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + KEY `idx_sellyoursaas_blacklistcontent_date_creation` (`date_creation`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_sellyoursaas_blacklistcontent` +-- + +LOCK TABLES `llx_sellyoursaas_blacklistcontent` WRITE; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistcontent` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistcontent` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_sellyoursaas_blacklistfrom` +-- + +DROP TABLE IF EXISTS `llx_sellyoursaas_blacklistfrom`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_sellyoursaas_blacklistfrom` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `content` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `date_creation` datetime NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `status` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + KEY `idx_sellyoursaas_blacklistfrom_content` (`content`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_sellyoursaas_blacklistfrom` +-- + +LOCK TABLES `llx_sellyoursaas_blacklistfrom` WRITE; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistfrom` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistfrom` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_sellyoursaas_blacklistip` +-- + +DROP TABLE IF EXISTS `llx_sellyoursaas_blacklistip`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_sellyoursaas_blacklistip` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `content` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `date_creation` datetime NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `status` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + KEY `idx_sellyoursaas_blacklistip_content` (`content`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_sellyoursaas_blacklistip` +-- + +LOCK TABLES `llx_sellyoursaas_blacklistip` WRITE; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistip` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistip` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_sellyoursaas_blacklistmail` +-- + +DROP TABLE IF EXISTS `llx_sellyoursaas_blacklistmail`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_sellyoursaas_blacklistmail` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `content` text COLLATE utf8mb3_unicode_ci NOT NULL, + `date_creation` datetime NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `status` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + KEY `idx_sellyoursaas_blacklistmail_date_creation` (`date_creation`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_sellyoursaas_blacklistmail` +-- + +LOCK TABLES `llx_sellyoursaas_blacklistmail` WRITE; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistmail` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistmail` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `llx_sellyoursaas_blacklistto` +-- + +DROP TABLE IF EXISTS `llx_sellyoursaas_blacklistto`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_sellyoursaas_blacklistto` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `entity` int(11) NOT NULL DEFAULT 1, + `content` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `date_creation` datetime NOT NULL, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `status` int(11) NOT NULL DEFAULT 1, + PRIMARY KEY (`rowid`), + KEY `idx_sellyoursaas_blacklistto_content` (`content`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_sellyoursaas_blacklistto` +-- + +LOCK TABLES `llx_sellyoursaas_blacklistto` WRITE; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistto` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_sellyoursaas_blacklistto` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_session` -- @@ -11529,9 +12206,9 @@ CREATE TABLE `llx_session` ( `last_accessed` datetime NOT NULL, `fk_user` int(11) NOT NULL, `remote_ip` varchar(64) CHARACTER SET utf8mb4 DEFAULT NULL, - `user_agent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `user_agent` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`session_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11556,42 +12233,42 @@ CREATE TABLE `llx_societe` ( `parent` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `datec` datetime DEFAULT NULL, - `nom` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `nom` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_client` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_fournisseur` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_compta` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_compta_fournisseur` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_client` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_fournisseur` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_compta` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_compta_fournisseur` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_departement` int(11) DEFAULT 0, `fk_pays` int(11) DEFAULT 0, - `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `fax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `socialnetworks` text COLLATE utf8_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fax` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `socialnetworks` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_effectif` int(11) DEFAULT 0, `fk_typent` int(11) DEFAULT NULL, `fk_forme_juridique` int(11) DEFAULT 0, - `fk_currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, - `siren` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `siret` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `ape` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof4` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `tva_intra` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_currency` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `siren` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `siret` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ape` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof4` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `tva_intra` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `capital` double(24,8) DEFAULT NULL, `fk_stcomm` int(11) NOT NULL DEFAULT 0, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `prefix_comm` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `prefix_comm` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `client` tinyint(4) DEFAULT 0, `fournisseur` tinyint(4) DEFAULT 0, - `supplier_account` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_prospectlevel` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `supplier_account` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_prospectlevel` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `customer_bad` tinyint(4) DEFAULT 0, `customer_rate` double DEFAULT 0, `supplier_rate` double DEFAULT 0, @@ -11601,6 +12278,7 @@ CREATE TABLE `llx_societe` ( `remise_supplier` double DEFAULT 0, `mode_reglement` tinyint(4) DEFAULT NULL, `cond_reglement` tinyint(4) DEFAULT NULL, + `deposit_percent` varchar(63) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `transport_mode` tinyint(4) DEFAULT NULL, `mode_reglement_supplier` int(11) DEFAULT NULL, `outstanding_limit` double(24,8) DEFAULT NULL, @@ -11614,29 +12292,29 @@ CREATE TABLE `llx_societe` ( `localtax1_value` double(6,3) DEFAULT NULL, `localtax2_assuj` tinyint(4) DEFAULT 0, `localtax2_value` double(6,3) DEFAULT NULL, - `barcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `barcode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `price_level` int(11) DEFAULT NULL, - `default_lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `canvas` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `default_lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `canvas` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` tinyint(4) DEFAULT 1, - `logo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof5` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idprof6` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `logo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof5` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idprof6` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT 0, - `webservices_url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `webservices_key` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `name_alias` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `webservices_url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `webservices_key` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `name_alias` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_incoterms` int(11) DEFAULT NULL, - `location_incoterms` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `location_incoterms` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_account` int(11) DEFAULT NULL, `fk_warehouse` int(11) DEFAULT NULL, - `logo_squarred` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `logo_squarred` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_prefix_comm` (`prefix_comm`,`entity`), UNIQUE KEY `uk_societe_code_client` (`code_client`,`entity`), @@ -11646,7 +12324,7 @@ CREATE TABLE `llx_societe` ( KEY `idx_societe_user_modif` (`fk_user_modif`), KEY `idx_societe_barcode` (`barcode`), KEY `idx_societe_warehouse` (`fk_warehouse`) -) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11655,7 +12333,7 @@ CREATE TABLE `llx_societe` ( LOCK TABLES `llx_societe` WRITE; /*!40000 ALTER TABLE `llx_societe` DISABLE KEYS */; -INSERT INTO `llx_societe` VALUES (1,0,NULL,'2018-01-16 15:21:09','2012-07-08 14:21:44','Indian SAS',1,NULL,NULL,'CU1212-0007','SU1212-0005','7050','6050','1 alalah road',NULL,'Delhi',0,117,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,'0','','','','','',5000.00000000,1,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'en_IN',NULL,NULL,1,'indiancompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(2,0,NULL,'2018-07-30 11:45:49','2012-07-08 14:23:48','Teclib',1,NULL,NULL,'CU1108-0001','SU1108-0001','411CU11080001','401SU11080001','',NULL,'Paris',0,1,NULL,NULL,'www.teclib.com',NULL,NULL,4,3,57,'0','123456789','','ACE14','','',400000.00000000,0,NULL,NULL,NULL,3,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,'fr_FR',NULL,NULL,1,'teclibcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(3,0,NULL,'2017-02-16 00:47:25','2012-07-08 22:42:12','Spanish Comp',1,NULL,NULL,'SPANISHCOMP','SU1601-0009',NULL,NULL,'1 via mallere',NULL,'Madrid',123,4,NULL,NULL,NULL,NULL,NULL,3,4,408,'0','','','','','',10000.00000000,0,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'es_AR',NULL,NULL,1,'spanishcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(4,0,NULL,'2018-01-22 17:24:53','2012-07-08 22:48:18','Prospector Vaalen',1,NULL,NULL,'CU1303-0014',NULL,NULL,NULL,'',NULL,'Bruxelles',103,2,NULL,NULL,NULL,NULL,NULL,3,4,201,'0','12345678','','','','',0.00000000,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'valeencompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(5,0,NULL,'2017-02-21 11:01:17','2012-07-08 23:22:57','NoCountry GmBh',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,0,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'nocountrycomp.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(6,0,NULL,'2018-01-16 15:35:56','2012-07-09 00:15:09','Swiss Touch',1,NULL,NULL,'CU1601-0018','SU1601-0010',NULL,NULL,'',NULL,'Genevia',0,6,NULL,NULL,NULL,'swisstouch@example.ch',NULL,2,2,601,'0','','','','','',56000.00000000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'swisstouch.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(7,0,NULL,'2018-01-16 15:38:32','2012-07-09 01:24:26','Generic customer',1,NULL,NULL,'CU1302-0011',NULL,NULL,NULL,'',NULL,NULL,0,7,NULL,NULL,NULL,'ttt@ttt.com',NULL,NULL,8,NULL,'0','','','','','',0.00000000,0,'Generic customer to use for Point Of Sale module.
',NULL,NULL,1,0,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'genericcustomer.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(10,0,NULL,'2020-01-13 12:57:02','2012-07-10 15:13:08','NLTechno',1,NULL,NULL,'CU1212-0005','SU1601-0011','411CU12120005','401SU16010011','',NULL,NULL,0,102,NULL,NULL,NULL,'vsmith@email.com',NULL,1,4,54,'0','493861496','49386149600039','6209Z','22-01-2007','FR123456789',10000.00000000,0,NULL,'aa < aa
\r\ndddd',NULL,1,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,'123456789012',NULL,'fr_FR',NULL,NULL,1,'logo_nltechno_94x100.png','','',0,NULL,NULL,NULL,NULL,'The OpenSource company',0,NULL,'generic_odt:/home/ldestailleur/git/dolibarr_11.0/documents/doctemplates/thirdparties/template_thirdparty.ods',0,'',NULL,0,NULL),(11,0,NULL,'2019-11-28 11:52:58','2012-07-10 18:35:57','Company Corp 1',1,NULL,NULL,'CU1510-0017',NULL,'7051',NULL,'21 Green Hill street','75500','Los Angeles',0,11,'444123456',NULL,'companycorp1.com','companycorp1@example.com','{\"skype\":\"corp1\"}',1,1,NULL,'0','AB1234567','','','','USABS123',10000.00000000,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,'en_US',NULL,NULL,1,'comapnycorp1company.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(12,0,NULL,'2019-09-26 11:38:11','2012-07-11 16:18:08','Dupont Alain',1,NULL,NULL,'CU1601-0019',NULL,'411CU16010019',NULL,'',NULL,NULL,0,0,NULL,NULL,NULL,'pcurie@example.com',NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,1,0,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'pierrecurie.jpg','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(13,0,NULL,'2019-10-08 09:57:51','2012-07-11 17:13:20','Company Corp 2',1,NULL,NULL,'CU1910-00021','SU1510-0008','411CU191000021','401SU15100008','',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,3,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'companycorp2company.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(17,0,NULL,'2019-11-28 15:02:49','2013-08-01 02:41:26','Book Keeping Company',1,NULL,NULL,'CU1108-0004','SU1108-0004',NULL,'401SU11080004','The French Company',NULL,'Paris',0,1,NULL,NULL,NULL,NULL,'[]',1,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(19,0,NULL,'2019-09-26 12:03:13','2015-01-12 12:23:05','Magic Food Store',1,NULL,NULL,'CU1301-0008',NULL,NULL,NULL,'65 holdywood boulevard','123456','BigTown',0,4,NULL,'0101',NULL,'myemail@domain.com',NULL,NULL,NULL,NULL,'0','','','10/10/2010','','',0.00000000,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,0.000,NULL,0.000,NULL,NULL,'en_US',NULL,NULL,1,'magicfoodstore.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,'sepamandate',NULL,NULL,NULL,0,NULL),(25,0,NULL,'2018-01-22 17:21:17','2015-03-10 15:47:37','Print Company',1,NULL,NULL,'CU1303-0016','SU1303-0007',NULL,NULL,'21 Gutenberg street','45600','Berlin',0,5,NULL,NULL,NULL,'printcompany@example.com',NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'de_DE',NULL,NULL,1,'printcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(26,0,NULL,'2019-09-26 12:06:05','2017-02-12 23:17:04','Calculation Power',1,NULL,NULL,'CU1702-0020',NULL,'411CU17020020',NULL,'',NULL,'Calgary',0,14,NULL,NULL,NULL,'calculationpower@example.com',NULL,NULL,NULL,NULL,NULL,'','','','','',NULL,0,NULL,NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0.000,0,0.000,NULL,NULL,'en_US',NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(29,0,NULL,'2020-01-13 12:56:22','2020-01-06 00:39:58','Patient',1,NULL,NULL,'CU2001-00022',NULL,'411CU200100022',NULL,'',NULL,NULL,0,117,'01','02',NULL,NULL,'null',NULL,NULL,NULL,NULL,'','','','','',NULL,0,'aa < ddd',NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0.000,NULL,0.000,NULL,NULL,NULL,'patient@cabinetmed',NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(30,0,NULL,'2020-01-17 14:21:26','2020-01-13 17:19:24','Italo',1,NULL,NULL,'CU2001-00023',NULL,'411CU200100023',NULL,'12 Alagio','123','Milano',777,3,NULL,NULL,NULL,NULL,'[]',NULL,NULL,NULL,NULL,'','','','','',NULL,0,NULL,NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,0,0.000,NULL,4,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL); +INSERT INTO `llx_societe` VALUES (1,0,NULL,'2018-01-16 15:21:09','2012-07-08 14:21:44','Indian SAS',1,NULL,NULL,'CU1212-0007','SU1212-0005','7050','6050','1 alalah road',NULL,'Delhi',0,117,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,'0','','','','','',5000.00000000,1,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'en_IN',NULL,NULL,1,'indiancompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(2,0,NULL,'2018-07-30 11:45:49','2012-07-08 14:23:48','Teclib',1,NULL,NULL,'CU1108-0001','SU1108-0001','411CU11080001','401SU11080001','',NULL,'Paris',0,1,NULL,NULL,'www.teclib.com',NULL,NULL,4,3,57,'0','123456789','','ACE14','','',400000.00000000,0,NULL,NULL,NULL,3,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,'fr_FR',NULL,NULL,1,'teclibcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(3,0,NULL,'2017-02-16 00:47:25','2012-07-08 22:42:12','Spanish Comp',1,NULL,NULL,'SPANISHCOMP','SU1601-0009',NULL,NULL,'1 via mallere',NULL,'Madrid',123,4,NULL,NULL,NULL,NULL,NULL,3,4,408,'0','','','','','',10000.00000000,0,NULL,NULL,NULL,1,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'es_AR',NULL,NULL,1,'spanishcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(4,0,NULL,'2018-01-22 17:24:53','2012-07-08 22:48:18','Prospector Vaalen',1,NULL,NULL,'CU1303-0014',NULL,NULL,NULL,'',NULL,'Bruxelles',103,2,NULL,NULL,NULL,NULL,NULL,3,4,201,'0','12345678','','','','',0.00000000,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'valeencompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(5,0,NULL,'2017-02-21 11:01:17','2012-07-08 23:22:57','NoCountry GmBh',1,NULL,NULL,NULL,NULL,NULL,NULL,'',NULL,NULL,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,0,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'nocountrycomp.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(6,0,NULL,'2018-01-16 15:35:56','2012-07-09 00:15:09','Swiss Touch',1,NULL,NULL,'CU1601-0018','SU1601-0010',NULL,NULL,'',NULL,'Genevia',0,6,NULL,NULL,NULL,'swisstouch@example.ch',NULL,2,2,601,'0','','','','','',56000.00000000,0,NULL,NULL,NULL,3,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'swisstouch.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(7,0,NULL,'2018-01-16 15:38:32','2012-07-09 01:24:26','Generic customer',1,NULL,NULL,'CU1302-0011',NULL,NULL,NULL,'',NULL,NULL,0,7,NULL,NULL,NULL,'ttt@ttt.com',NULL,NULL,8,NULL,'0','','','','','',0.00000000,0,'Generic customer to use for Point Of Sale module.
',NULL,NULL,1,0,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'genericcustomer.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(10,0,NULL,'2020-01-13 12:57:02','2012-07-10 15:13:08','NLTechno',1,NULL,NULL,'CU1212-0005','SU1601-0011','411CU12120005','401SU16010011','',NULL,NULL,0,102,NULL,NULL,NULL,'vsmith@email.com',NULL,1,4,54,'0','493861496','49386149600039','6209Z','22-01-2007','FR123456789',10000.00000000,0,NULL,'aa < aa
\r\ndddd',NULL,1,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,'123456789012',NULL,'fr_FR',NULL,NULL,1,'logo_nltechno_94x100.png','','',0,NULL,NULL,NULL,NULL,'The OpenSource company',0,NULL,'generic_odt:/home/ldestailleur/git/dolibarr_11.0/documents/doctemplates/thirdparties/template_thirdparty.ods',0,'',NULL,0,NULL),(11,0,NULL,'2019-11-28 11:52:58','2012-07-10 18:35:57','Company Corp 1',1,NULL,NULL,'CU1510-0017',NULL,'7051',NULL,'21 Green Hill street','75500','Los Angeles',0,11,'444123456',NULL,'companycorp1.com','companycorp1@example.com','{\"skype\":\"corp1\"}',1,1,NULL,'0','AB1234567','','','','USABS123',10000.00000000,0,NULL,NULL,NULL,3,0,NULL,'PL_LOW',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,NULL,0.000,NULL,NULL,'en_US',NULL,NULL,1,'comapnycorp1company.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(12,0,NULL,'2019-09-26 11:38:11','2012-07-11 16:18:08','Dupont Alain',1,NULL,NULL,'CU1601-0019',NULL,'411CU16010019',NULL,'',NULL,NULL,0,0,NULL,NULL,NULL,'pcurie@example.com',NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,1,0,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'pierrecurie.jpg','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(13,0,NULL,'2019-10-08 09:57:51','2012-07-11 17:13:20','Company Corp 2',1,NULL,NULL,'CU1910-00021','SU1510-0008','411CU191000021','401SU15100008','',NULL,NULL,0,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,3,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'companycorp2company.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(17,0,NULL,'2019-11-28 15:02:49','2013-08-01 02:41:26','Book Keeping Company',1,NULL,NULL,'CU1108-0004','SU1108-0004',NULL,'401SU11080004','The French Company',NULL,'Paris',0,1,NULL,NULL,NULL,NULL,'[]',1,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,1,NULL,'',0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,NULL,NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(19,0,NULL,'2019-09-26 12:03:13','2015-01-12 12:23:05','Magic Food Store',1,NULL,NULL,'CU1301-0008',NULL,NULL,NULL,'65 holdywood boulevard','123456','BigTown',0,4,NULL,'0101',NULL,'myemail@domain.com',NULL,NULL,NULL,NULL,'0','','','10/10/2010','','',0.00000000,0,NULL,NULL,NULL,1,0,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,0.000,NULL,0.000,NULL,NULL,'en_US',NULL,NULL,1,'magicfoodstore.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,'sepamandate',NULL,NULL,NULL,0,NULL),(25,0,NULL,'2018-01-22 17:21:17','2015-03-10 15:47:37','Print Company',1,NULL,NULL,'CU1303-0016','SU1303-0007',NULL,NULL,'21 Gutenberg street','45600','Berlin',0,5,NULL,NULL,NULL,'printcompany@example.com',NULL,NULL,NULL,NULL,'0','','','','','',0.00000000,0,NULL,NULL,NULL,0,1,NULL,NULL,0,0,0,1,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,0.000,NULL,0.000,NULL,NULL,'de_DE',NULL,NULL,1,'printcompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,NULL,NULL,NULL,0,NULL),(26,0,NULL,'2019-09-26 12:06:05','2017-02-12 23:17:04','Calculation Power',1,NULL,NULL,'CU1702-0020',NULL,'411CU17020020',NULL,'',NULL,'Calgary',0,14,NULL,NULL,NULL,'calculationpower@example.com',NULL,NULL,NULL,NULL,NULL,'','','','','',NULL,0,NULL,NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0.000,0,0.000,NULL,NULL,'en_US',NULL,NULL,1,'bookkeepercompany.png','','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL),(29,0,NULL,'2020-01-13 12:56:22','2020-01-06 00:39:58','Patient',1,NULL,NULL,'CU2001-00022',NULL,'411CU200100022',NULL,'',NULL,NULL,0,117,'01','02',NULL,NULL,'null',NULL,NULL,NULL,NULL,'','','','','',NULL,0,'aa < ddd',NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0.000,NULL,0.000,NULL,NULL,NULL,'patient@cabinetmed',NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,0,'',NULL,0,NULL),(30,0,NULL,'2020-01-17 14:21:26','2020-01-13 17:19:24','Italo',1,NULL,NULL,'CU2001-00023',NULL,'411CU200100023',NULL,'12 Alagio','123','Milano',777,3,NULL,NULL,NULL,NULL,'[]',NULL,NULL,NULL,NULL,'','','','','',NULL,0,NULL,NULL,NULL,3,0,NULL,'',0,0,0,12,12,0,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,0,0.000,0,0.000,NULL,4,NULL,NULL,NULL,1,NULL,'','',0,NULL,NULL,NULL,NULL,'',0,NULL,NULL,1,'EUR',NULL,0,NULL); /*!40000 ALTER TABLE `llx_societe` ENABLE KEYS */; UNLOCK TABLES; @@ -11669,24 +12347,24 @@ DROP TABLE IF EXISTS `llx_societe_account`; CREATE TABLE `llx_societe_account` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `login` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `pass_encoding` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass_crypted` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass_temp` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `login` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `pass_encoding` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass_crypted` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass_temp` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, - `site` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `site` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_website` int(11) DEFAULT NULL, - `note_private` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_last_login` datetime DEFAULT NULL, `date_previous_login` datetime DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT NULL, - `key_account` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `site_account` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `key_account` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `site_account` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_account_login_website_soc` (`entity`,`fk_soc`,`login`,`site`,`fk_website`), UNIQUE KEY `uk_societe_account_key_account_soc` (`entity`,`fk_soc`,`key_account`,`site`,`fk_website`), @@ -11695,9 +12373,8 @@ CREATE TABLE `llx_societe_account` ( KEY `idx_societe_account_status` (`status`), KEY `idx_societe_account_fk_website` (`fk_website`), KEY `idx_societe_account_fk_soc` (`fk_soc`), - CONSTRAINT `llx_societe_account_fk_societe` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), - CONSTRAINT `llx_societe_account_fk_website` FOREIGN KEY (`fk_website`) REFERENCES `llx_website` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + CONSTRAINT `llx_societe_account_fk_societe` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`) +) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11721,20 +12398,20 @@ CREATE TABLE `llx_societe_address` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT 0, - `name` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `name` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_pays` int(11) DEFAULT 0, - `phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `fax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fax` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11757,10 +12434,10 @@ CREATE TABLE `llx_societe_commerciaux` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_soc` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_commerciaux` (`fk_soc`,`fk_user`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11788,7 +12465,7 @@ CREATE TABLE `llx_societe_contacts` ( `fk_c_type_contact` int(11) NOT NULL, `fk_socpeople` int(11) NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `idx_societe_contacts_idx1` (`entity`,`fk_soc`,`fk_c_type_contact`,`fk_socpeople`), KEY `fk_societe_contacts_fk_c_type_contact` (`fk_c_type_contact`), @@ -11797,7 +12474,7 @@ CREATE TABLE `llx_societe_contacts` ( CONSTRAINT `fk_societe_contacts_fk_c_type_contact` FOREIGN KEY (`fk_c_type_contact`) REFERENCES `llx_c_type_contact` (`rowid`), CONSTRAINT `fk_societe_contacts_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_societe_contacts_fk_socpeople` FOREIGN KEY (`fk_socpeople`) REFERENCES `llx_socpeople` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11820,14 +12497,14 @@ CREATE TABLE `llx_societe_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `height` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `weight` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `prof` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `height` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `weight` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `prof` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `birthdate` date DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_extrafields` (`fk_object`) -) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=103 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11851,14 +12528,14 @@ CREATE TABLE `llx_societe_perentity` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_soc` int(11) DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `accountancy_code_customer` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_supplier` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_sell` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code_buy` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `accountancy_code_customer` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_supplier` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_sell` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code_buy` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_societe_perentity` (`fk_soc`,`entity`), KEY `idx_societe_perentity_fk_soc` (`fk_soc`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11885,7 +12562,7 @@ CREATE TABLE `llx_societe_prices` ( `fk_user_author` int(11) DEFAULT NULL, `price_level` tinyint(4) DEFAULT 1, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11913,9 +12590,9 @@ CREATE TABLE `llx_societe_remise` ( `datec` datetime DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `remise_client` double(6,3) NOT NULL DEFAULT 0.000, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -11948,14 +12625,14 @@ CREATE TABLE `llx_societe_remise_except` ( `fk_facture_line` int(11) DEFAULT NULL, `fk_facture` int(11) DEFAULT NULL, `fk_facture_source` int(11) DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci NOT NULL, + `description` text COLLATE utf8mb3_unicode_ci NOT NULL, `multicurrency_amount_ht` double(24,8) NOT NULL DEFAULT 0.00000000, `multicurrency_amount_tva` double(24,8) NOT NULL DEFAULT 0.00000000, `multicurrency_amount_ttc` double(24,8) NOT NULL DEFAULT 0.00000000, `fk_invoice_supplier_line` int(11) DEFAULT NULL, `fk_invoice_supplier` int(11) DEFAULT NULL, `fk_invoice_supplier_source` int(11) DEFAULT NULL, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', PRIMARY KEY (`rowid`), KEY `idx_societe_remise_except_fk_user` (`fk_user`), KEY `idx_societe_remise_except_fk_soc` (`fk_soc`), @@ -11975,7 +12652,7 @@ CREATE TABLE `llx_societe_remise_except` ( CONSTRAINT `fk_societe_remise_fk_invoice_supplier_source` FOREIGN KEY (`fk_invoice_supplier`) REFERENCES `llx_facture_fourn` (`rowid`), CONSTRAINT `fk_societe_remise_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_societe_remise_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12003,9 +12680,9 @@ CREATE TABLE `llx_societe_remise_supplier` ( `datec` datetime DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, `remise_supplier` double(6,3) NOT NULL DEFAULT 0.000, - `note` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `note` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12027,46 +12704,46 @@ DROP TABLE IF EXISTS `llx_societe_rib`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_societe_rib` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `type` varchar(32) COLLATE utf8_unicode_ci NOT NULL, + `type` varchar(32) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_soc` int(11) NOT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL, - `bank` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_guichet` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_rib` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `bic` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `iban_prefix` varchar(34) COLLATE utf8_unicode_ci DEFAULT NULL, - `domiciliation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `proprio` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `owner_address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(200) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bank` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_guichet` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_rib` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bic` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `iban_prefix` varchar(34) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `domiciliation` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `proprio` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `owner_address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `default_rib` smallint(6) NOT NULL DEFAULT 0, - `rum` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `rum` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_rum` date DEFAULT NULL, - `frstrecur` varchar(16) COLLATE utf8_unicode_ci DEFAULT 'FRST', - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `last_four` varchar(4) COLLATE utf8_unicode_ci DEFAULT NULL, - `card_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cvn` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `frstrecur` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT 'FRST', + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `last_four` varchar(4) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `card_type` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cvn` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `exp_date_month` int(11) DEFAULT NULL, `exp_date_year` int(11) DEFAULT NULL, - `country_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `country_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `approved` int(11) DEFAULT 0, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `ending_date` date DEFAULT NULL, `max_total_amount_of_all_payments` double(24,8) DEFAULT NULL, - `preapproval_key` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `preapproval_key` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `starting_date` date DEFAULT NULL, `total_amount_of_all_payments` double(24,8) DEFAULT NULL, - `stripe_card_ref` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `stripe_card_ref` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL DEFAULT 1, - `comment` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ipaddress` varchar(68) COLLATE utf8_unicode_ci DEFAULT NULL, - `stripe_account` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `comment` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ipaddress` varchar(68) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `stripe_account` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12092,42 +12769,42 @@ CREATE TABLE `llx_socpeople` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_soc` int(11) DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `civility` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `civility` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `firstname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_departement` int(11) DEFAULT NULL, `fk_pays` int(11) DEFAULT 0, `birthday` date DEFAULT NULL, - `poste` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone_perso` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `phone_mobile` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `fax` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `socialnetworks` text COLLATE utf8_unicode_ci DEFAULT NULL, - `photo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `poste` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone_perso` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `phone_mobile` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fax` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `socialnetworks` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `photo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `priv` smallint(6) NOT NULL DEFAULT 0, - `fk_prospectcontactlevel` varchar(12) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_prospectcontactlevel` varchar(12) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_stcommcontact` int(11) NOT NULL DEFAULT 0, `no_email` smallint(6) NOT NULL DEFAULT 0, `fk_user_creat` int(11) DEFAULT 0, `fk_user_modif` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `default_lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `canvas` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `default_lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `canvas` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` tinyint(4) NOT NULL DEFAULT 1, PRIMARY KEY (`rowid`), KEY `idx_socpeople_fk_soc` (`fk_soc`), KEY `idx_socpeople_fk_user_creat` (`fk_user_creat`), CONSTRAINT `fk_socpeople_fk_soc` FOREIGN KEY (`fk_soc`) REFERENCES `llx_societe` (`rowid`), CONSTRAINT `fk_socpeople_user_creat_user_rowid` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12151,10 +12828,10 @@ CREATE TABLE `llx_socpeople_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_socpeople_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12183,20 +12860,20 @@ CREATE TABLE `llx_stock_mouvement` ( `price` double(24,8) DEFAULT 0.00000000, `type_mouvement` smallint(6) DEFAULT NULL, `fk_user_author` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_origin` int(11) DEFAULT NULL, - `origintype` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `origintype` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_projet` int(11) NOT NULL DEFAULT 0, - `inventorycode` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `batch` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `inventorycode` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `batch` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `eatby` date DEFAULT NULL, `sellby` date DEFAULT NULL, `fk_project` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_stock_mouvement_fk_product` (`fk_product`), KEY `idx_stock_mouvement_fk_entrepot` (`fk_entrepot`) -) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12209,6 +12886,32 @@ INSERT INTO `llx_stock_mouvement` VALUES (1,'2012-07-08 22:43:51','2012-07-09 00 /*!40000 ALTER TABLE `llx_stock_mouvement` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for table `llx_stock_mouvement_extrafields` +-- + +DROP TABLE IF EXISTS `llx_stock_mouvement_extrafields`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `llx_stock_mouvement_extrafields` ( + `rowid` int(11) NOT NULL AUTO_INCREMENT, + `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fk_object` int(11) NOT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + PRIMARY KEY (`rowid`), + KEY `idx_stock_mouvement_extrafields` (`fk_object`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `llx_stock_mouvement_extrafields` +-- + +LOCK TABLES `llx_stock_mouvement_extrafields` WRITE; +/*!40000 ALTER TABLE `llx_stock_mouvement_extrafields` DISABLE KEYS */; +/*!40000 ALTER TABLE `llx_stock_mouvement_extrafields` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `llx_subscription` -- @@ -12225,13 +12928,13 @@ CREATE TABLE `llx_subscription` ( `datef` datetime DEFAULT NULL, `subscription` double(24,8) DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_type` int(11) DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_valid` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_subscription` (`fk_adherent`,`dateadh`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12253,10 +12956,10 @@ DROP TABLE IF EXISTS `llx_supplier_proposal`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_supplier_proposal` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(30) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(30) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `ref_ext` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_ext` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_int` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_soc` int(11) DEFAULT NULL, `fk_projet` int(11) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), @@ -12278,25 +12981,25 @@ CREATE TABLE `llx_supplier_proposal` ( `localtax2` double(24,8) DEFAULT 0.00000000, `total_ttc` double(24,8) DEFAULT 0.00000000, `fk_account` int(11) DEFAULT NULL, - `fk_currency` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `fk_currency` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_cond_reglement` int(11) DEFAULT NULL, `fk_mode_reglement` int(11) DEFAULT NULL, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_livraison` date DEFAULT NULL, `fk_shipping_method` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `extraparams` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `extraparams` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_tx` double(24,8) DEFAULT 1.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ttc` double(24,8) DEFAULT 0.00000000, - `last_main_doc` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `last_main_doc` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12305,7 +13008,7 @@ CREATE TABLE `llx_supplier_proposal` ( LOCK TABLES `llx_supplier_proposal` WRITE; /*!40000 ALTER TABLE `llx_supplier_proposal` DISABLE KEYS */; -INSERT INTO `llx_supplier_proposal` VALUES (2,'(PROV2)',1,NULL,NULL,10,NULL,'2021-04-15 10:22:31','2021-02-17 04:40:14',NULL,NULL,12,12,NULL,NULL,0,0,NULL,NULL,0,290.00000000,0.00000000,0.00000000,0.00000000,290.00000000,NULL,NULL,2,7,'Private note','Public note','aurore','2017-02-17',1,NULL,NULL,1,'EUR',1.00000000,290.00000000,0.00000000,290.00000000,NULL),(3,'(PROV3)',1,NULL,NULL,1,NULL,'2022-02-07 13:37:54','2022-01-20 12:06:39',NULL,NULL,12,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,'','','aurore',NULL,NULL,NULL,NULL,1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL),(4,'(PROV4)',1,NULL,NULL,17,NULL,'2022-02-07 13:37:54','2022-01-20 12:23:22',NULL,NULL,12,NULL,NULL,NULL,0,0,NULL,NULL,0,195.00000000,0.00000000,0.00000000,0.00000000,195.00000000,NULL,NULL,NULL,NULL,'','','aurore',NULL,NULL,NULL,NULL,1,'EUR',1.00000000,195.00000000,0.00000000,195.00000000,NULL); +INSERT INTO `llx_supplier_proposal` VALUES (2,'(PROV2)',1,NULL,NULL,10,NULL,'2022-07-04 01:11:35','2022-02-17 04:40:14',NULL,NULL,12,12,NULL,NULL,0,0,NULL,NULL,0,290.00000000,0.00000000,0.00000000,0.00000000,290.00000000,NULL,NULL,2,7,'Private note','Public note','aurore','2017-02-17',1,NULL,NULL,1,'EUR',1.00000000,290.00000000,0.00000000,290.00000000,NULL),(3,'(PROV3)',1,NULL,NULL,1,NULL,'2022-02-07 13:37:54','2022-01-20 12:06:39',NULL,NULL,12,NULL,NULL,NULL,0,0,NULL,NULL,0,0.00000000,0.00000000,0.00000000,0.00000000,0.00000000,NULL,NULL,NULL,NULL,'','','aurore',NULL,NULL,NULL,NULL,1,'EUR',1.00000000,0.00000000,0.00000000,0.00000000,NULL),(4,'(PROV4)',1,NULL,NULL,17,NULL,'2022-02-07 13:37:54','2022-01-20 12:23:22',NULL,NULL,12,NULL,NULL,NULL,0,0,NULL,NULL,0,195.00000000,0.00000000,0.00000000,0.00000000,195.00000000,NULL,NULL,NULL,NULL,'','','aurore',NULL,NULL,NULL,NULL,1,'EUR',1.00000000,195.00000000,0.00000000,195.00000000,NULL); /*!40000 ALTER TABLE `llx_supplier_proposal` ENABLE KEYS */; UNLOCK TABLES; @@ -12320,10 +13023,10 @@ CREATE TABLE `llx_supplier_proposal_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_supplier_proposal_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12347,15 +13050,15 @@ CREATE TABLE `llx_supplier_proposaldet` ( `fk_supplier_proposal` int(11) NOT NULL, `fk_parent_line` int(11) DEFAULT NULL, `fk_product` int(11) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` text COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_remise_except` int(11) DEFAULT NULL, `tva_tx` double(6,3) DEFAULT 0.000, - `vat_src_code` varchar(10) COLLATE utf8_unicode_ci DEFAULT '', + `vat_src_code` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT '', `localtax1_tx` double(6,3) DEFAULT 0.000, - `localtax1_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax1_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `localtax2_tx` double(6,3) DEFAULT 0.000, - `localtax2_type` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, + `localtax2_type` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `qty` double DEFAULT NULL, `remise_percent` double DEFAULT 0, `remise` double DEFAULT 0, @@ -12372,9 +13075,9 @@ CREATE TABLE `llx_supplier_proposaldet` ( `fk_product_fournisseur_price` int(11) DEFAULT NULL, `special_code` int(11) DEFAULT 0, `rang` int(11) DEFAULT 0, - `ref_fourn` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_fourn` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_multicurrency` int(11) DEFAULT NULL, - `multicurrency_code` varchar(3) COLLATE utf8_unicode_ci DEFAULT NULL, + `multicurrency_code` varchar(3) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `multicurrency_subprice` double(24,8) DEFAULT 0.00000000, `multicurrency_total_ht` double(24,8) DEFAULT 0.00000000, `multicurrency_total_tva` double(24,8) DEFAULT 0.00000000, @@ -12388,7 +13091,7 @@ CREATE TABLE `llx_supplier_proposaldet` ( KEY `fk_supplier_proposaldet_fk_unit` (`fk_unit`), CONSTRAINT `fk_supplier_proposaldet_fk_supplier_proposal` FOREIGN KEY (`fk_supplier_proposal`) REFERENCES `llx_supplier_proposal` (`rowid`), CONSTRAINT `fk_supplier_proposaldet_fk_unit` FOREIGN KEY (`fk_unit`) REFERENCES `llx_c_units` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12412,10 +13115,10 @@ CREATE TABLE `llx_supplier_proposaldet_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_supplier_proposaldet_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12437,12 +13140,16 @@ DROP TABLE IF EXISTS `llx_takepos_floor_tables`; CREATE TABLE `llx_takepos_floor_tables` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `leftpos` float DEFAULT NULL, `toppos` float DEFAULT NULL, `floor` int(3) DEFAULT NULL, - PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; + PRIMARY KEY (`rowid`), + UNIQUE KEY `entity` (`entity`,`label`), + UNIQUE KEY `entity_2` (`entity`,`label`), + UNIQUE KEY `entity_3` (`entity`,`label`), + UNIQUE KEY `entity_4` (`entity`,`label`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12464,29 +13171,30 @@ DROP TABLE IF EXISTS `llx_ticket`; CREATE TABLE `llx_ticket` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) DEFAULT 1, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL, - `track_id` varchar(128) COLLATE utf8_unicode_ci NOT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, + `track_id` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL, `fk_soc` int(11) DEFAULT 0, `fk_project` int(11) DEFAULT 0, - `origin_email` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `origin_email` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user_create` int(11) DEFAULT NULL, `fk_user_assign` int(11) DEFAULT NULL, - `subject` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `message` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `subject` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `message` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_statut` int(11) DEFAULT NULL, `resolution` int(11) DEFAULT NULL, `progress` int(11) DEFAULT NULL, - `timing` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `type_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `category_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `severity_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, + `timing` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `category_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `severity_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datec` datetime DEFAULT NULL, `date_read` datetime DEFAULT NULL, + `date_last_msg_sent` datetime DEFAULT NULL, `date_close` datetime DEFAULT NULL, `notify_tiers_at_create` tinyint(4) DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `email_msgid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email_msgid` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_ticket_track_id` (`track_id`), UNIQUE KEY `uk_ticket_ref` (`ref`,`entity`), @@ -12495,7 +13203,7 @@ CREATE TABLE `llx_ticket` ( KEY `idx_ticket_fk_user_assign` (`fk_user_assign`), KEY `idx_ticket_fk_project` (`fk_project`), KEY `idx_ticket_fk_statut` (`fk_statut`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12504,7 +13212,7 @@ CREATE TABLE `llx_ticket` ( LOCK TABLES `llx_ticket` WRITE; /*!40000 ALTER TABLE `llx_ticket` DISABLE KEYS */; -INSERT INTO `llx_ticket` VALUES (2,1,'TS1909-0001','15ff11cay39skiaa',NULL,6,NULL,12,12,'Increase memory on server','Pleae increase the memory of server to 164GB',3,NULL,0,NULL,'REQUEST','OTHER','NORMAL','2021-09-26 14:08:46',NULL,NULL,0,'2022-02-07 13:37:54',NULL,NULL),(3,1,'TS1909-0002','r5ya6gdi9f39dcjt',1,NULL,NULL,12,14,'Problem with customer','Please recontact customer.
\r\nNeed someone speaking chinese...',0,NULL,100,NULL,'ISSUE','OTHER','NORMAL','2021-09-26 14:10:31',NULL,'2021-10-04 13:05:55',0,'2022-02-07 13:37:54',NULL,NULL),(4,1,'TS1910-0003','fdv9wrzcte7b3c8b',NULL,NULL,NULL,12,NULL,'test','test',2,NULL,0,NULL,'COM','OTHER','NORMAL','2021-10-04 12:58:04',NULL,NULL,0,'2022-02-07 13:37:54',NULL,NULL),(6,1,'TS1911-0004','5gvo9bsjri55zef9',NULL,4,NULL,12,16,'What is the price for Dolibarr ERP CRM ?','I need to use it for 10 users.',3,NULL,0,NULL,'COM','OTHER','NORMAL','2021-11-29 12:46:29','2021-11-29 12:46:34',NULL,0,'2022-02-07 13:37:54',NULL,NULL),(7,1,'TS1911-0005','d51wjy4nym7wltg7',NULL,NULL,'customer@customercompany.com',NULL,16,'What is the price for Dolibarr ERP CRM ?','I need it for 10 people...',8,NULL,100,NULL,'COM','OTHER','NORMAL','2021-11-29 12:50:45','2021-11-29 12:52:32','2021-11-29 12:55:48',1,'2022-02-07 13:37:54',NULL,NULL); +INSERT INTO `llx_ticket` VALUES (2,1,'TS1909-0001','15ff11cay39skiaa',NULL,6,NULL,12,12,'Increase memory on server','Pleae increase the memory of server to 164GB',3,NULL,0,NULL,'REQUEST','OTHER','NORMAL','2021-09-26 14:08:46',NULL,NULL,NULL,0,'2022-02-07 13:37:54',NULL,NULL),(3,1,'TS1909-0002','r5ya6gdi9f39dcjt',1,NULL,NULL,12,14,'Problem with customer','Please recontact customer.
\r\nNeed someone speaking chinese...',0,NULL,100,NULL,'ISSUE','OTHER','NORMAL','2021-09-26 14:10:31',NULL,NULL,'2021-10-04 13:05:55',0,'2022-02-07 13:37:54',NULL,NULL),(4,1,'TS1910-0003','fdv9wrzcte7b3c8b',NULL,NULL,NULL,12,NULL,'test','test',2,NULL,0,NULL,'COM','OTHER','NORMAL','2021-10-04 12:58:04',NULL,NULL,NULL,0,'2022-02-07 13:37:54',NULL,NULL),(6,1,'TS1911-0004','5gvo9bsjri55zef9',NULL,4,NULL,12,16,'What is the price for Dolibarr ERP CRM ?','I need to use it for 10 users.',3,NULL,0,NULL,'COM','OTHER','NORMAL','2021-11-29 12:46:29','2021-11-29 12:46:34',NULL,NULL,0,'2022-02-07 13:37:54',NULL,NULL),(7,1,'TS1911-0005','d51wjy4nym7wltg7',NULL,NULL,'customer@customercompany.com',NULL,16,'What is the price for Dolibarr ERP CRM ?','I need it for 10 people...',8,NULL,100,NULL,'COM','OTHER','NORMAL','2021-11-29 12:50:45','2021-11-29 12:52:32',NULL,'2021-11-29 12:55:48',1,'2022-02-07 13:37:54',NULL,NULL); /*!40000 ALTER TABLE `llx_ticket` ENABLE KEYS */; UNLOCK TABLES; @@ -12519,11 +13227,11 @@ CREATE TABLE `llx_ticket_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `aaa` int(10) DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_ticket_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12549,19 +13257,19 @@ CREATE TABLE `llx_tva` ( `datep` date DEFAULT NULL, `datev` date DEFAULT NULL, `amount` double(24,8) DEFAULT NULL, - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_bank` int(11) DEFAULT NULL, `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, `fk_typepayment` int(11) DEFAULT NULL, - `num_payment` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `num_payment` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `paye` smallint(6) NOT NULL DEFAULT 0, `fk_account` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12586,81 +13294,79 @@ CREATE TABLE `llx_user` ( `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `login` varchar(50) COLLATE utf8_unicode_ci NOT NULL, + `login` varchar(50) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `civility` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_int` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref_employee` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `civility` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `employee` smallint(6) DEFAULT 1, `fk_establishment` int(11) DEFAULT 0, - `pass` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass_crypted` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass_temp` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `api_key` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `lastname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `firstname` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `job` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `office_phone` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `office_fax` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `user_mobile` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `personal_mobile` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, - `email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `personal_email` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `socialnetworks` text COLLATE utf8_unicode_ci DEFAULT NULL, - `signature` text COLLATE utf8_unicode_ci DEFAULT NULL, + `pass` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass_crypted` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass_temp` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `api_key` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lastname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `firstname` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `job` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `office_phone` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `office_fax` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `user_mobile` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `personal_mobile` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `personal_email` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `socialnetworks` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `signature` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `admin` smallint(6) DEFAULT 0, - `webcal_login` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `module_comm` smallint(6) DEFAULT 1, - `module_compta` smallint(6) DEFAULT 1, `fk_soc` int(11) DEFAULT NULL, `fk_socpeople` int(11) DEFAULT NULL, `fk_member` int(11) DEFAULT NULL, - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datelastlogin` datetime DEFAULT NULL, `datepreviouslogin` datetime DEFAULT NULL, `egroupware_id` int(11) DEFAULT NULL, - `ldap_sid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ldap_sid` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `statut` tinyint(4) DEFAULT 1, - `photo` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `openid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `photo` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `openid` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `fk_user_expense_validator` int(11) DEFAULT NULL, `fk_user_holiday_validator` int(11) DEFAULT NULL, `thm` double(24,8) DEFAULT NULL, - `address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `zip` varchar(25) COLLATE utf8_unicode_ci DEFAULT NULL, - `town` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `zip` varchar(25) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `town` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_state` int(11) DEFAULT 0, `fk_country` int(11) DEFAULT 0, - `color` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `accountancy_code` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `barcode` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `color` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `accountancy_code` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `barcode` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_barcode_type` int(11) DEFAULT 0, `nb_holiday` int(11) DEFAULT 0, `salary` double(24,8) DEFAULT NULL, `tjm` double(24,8) DEFAULT NULL, `salaryextra` double(24,8) DEFAULT NULL, `weeklyhours` double(16,8) DEFAULT NULL, - `gender` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `gender` varchar(10) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `dateemployment` datetime DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `birth` date DEFAULT NULL, - `pass_encoding` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL, + `pass_encoding` varchar(24) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `default_range` int(11) DEFAULT NULL, `default_c_exp_tax_cat` int(11) DEFAULT NULL, `dateemploymentend` date DEFAULT NULL, `fk_warehouse` int(11) DEFAULT NULL, - `iplastlogin` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, - `ippreviouslogin` varchar(250) COLLATE utf8_unicode_ci DEFAULT NULL, + `iplastlogin` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ippreviouslogin` varchar(250) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `datelastpassvalidation` datetime DEFAULT NULL, `datestartvalidity` datetime DEFAULT NULL, `dateendvalidity` datetime DEFAULT NULL, - `idpers1` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idpers2` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `idpers3` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `idpers1` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idpers2` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `idpers3` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `national_registration_number` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_user_login` (`login`,`entity`), UNIQUE KEY `uk_user_fk_socpeople` (`fk_socpeople`), @@ -12668,7 +13374,7 @@ CREATE TABLE `llx_user` ( UNIQUE KEY `uk_user_api_key` (`api_key`), KEY `idx_user_api_key` (`api_key`), KEY `idx_user_fk_societe` (`fk_soc`) -) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12677,7 +13383,7 @@ CREATE TABLE `llx_user` ( LOCK TABLES `llx_user` WRITE; /*!40000 ALTER TABLE `llx_user` DISABLE KEYS */; -INSERT INTO `llx_user` VALUES (1,'2012-07-08 13:20:11','2021-04-15 10:42:13',NULL,NULL,'aeinstein',0,'',NULL,NULL,1,0,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,NULL,'Einstein','Albert','','123456789','','','','aeinstein@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,'',1,1,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'2012-07-08 13:54:48','2021-04-15 10:41:35',NULL,NULL,'demo',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Doe','David','Trainee','09123123','','','','daviddoe@example.com','','[]','',0,'',1,1,NULL,NULL,NULL,'','2018-07-30 23:10:54','2018-07-30 23:04:17',NULL,'',1,'person9.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,35.00000000,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,'2012-07-11 16:18:59','2021-04-15 10:41:35',NULL,NULL,'pcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','','[]','',0,'',1,1,NULL,NULL,2,'','2014-12-21 17:38:55',NULL,NULL,'',1,'pierrecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,'2015-01-23 17:52:27','2021-04-15 10:41:35',NULL,NULL,'bbookkeeper',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','bbookkeeper@example.com','','{\"skype\":\"skypebbookkeeper\"}','',0,'',1,1,17,6,NULL,'','2015-02-25 10:18:41','2015-01-23 17:53:20',NULL,'',1,'person8.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,16.00000000,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(10,'2017-10-03 11:47:41','2021-04-15 10:41:35',NULL,NULL,'mcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'t3mnkbhs','Curie','Marie','','','','','','mcurie@example.com','','[]','',0,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,0,NULL,NULL,NULL,44.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(11,'2017-10-05 09:07:52','2021-04-15 10:40:22',NULL,NULL,'zzeceo',1,'',NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'cq78nf9m','Zeceo','Zack','President - CEO','','','','','zzeceo@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,1,1,NULL,NULL,NULL,'','2017-10-05 22:48:08','2017-10-05 21:18:46',NULL,'',1,'person4.jpeg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,NULL,'','2019-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,'2017-10-05 09:09:46','2021-04-15 10:38:52',NULL,NULL,'admin',0,'',NULL,NULL,1,0,NULL,'$2y$10$5qk/U.aOy.7uBSNxpwiqkOfBlCUop9c2wKWuFZ/wZ2hAC9lriGqnG',NULL,'nd6hgbcr','Adminson','Alice','Admin Technical','','','','','aadminson@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','Alice - 123',1,NULL,1,1,NULL,NULL,NULL,'','2021-04-15 07:59:04','2021-04-15 07:56:17',NULL,'',1,'person6.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,'2017-10-05 21:29:35','2021-04-15 10:41:51',NULL,NULL,'ccommercy',1,'',NULL,NULL,1,0,NULL,'$2y$10$KTaKE0NyYyJSCogsxtwR.eADst17XYMrOWlsFfVLR60IbjANIVLHK',NULL,'y451ksdv','Commercy','Coraly','Commercial leader','','','','','ccommercy@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person7.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,1890.00000000,NULL,NULL,25.00000000,'woman','','2018-09-11 00:00:00',NULL,NULL,'1998-12-08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,'2017-10-05 21:33:33','2021-04-15 10:41:35',NULL,NULL,'sscientol',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'s2hp8bxd','Scientol','Sam','Scientist leader','','','','','sscientol@example.com','','[]','',0,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person3.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,3500.00000000,NULL,NULL,39.00000000,NULL,NULL,'2018-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'2017-10-05 22:47:52','2021-04-15 10:41:35',NULL,NULL,'ccommerson',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'cx9y1dk0','Charle1','Commerson','Sale representative','','','','','ccommerson@example.com','','[]','',0,NULL,1,1,NULL,NULL,NULL,'','2017-10-05 23:46:24','2017-10-05 23:37:31',NULL,'',1,'person1.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,2900.00000000,NULL,NULL,39.00000000,NULL,NULL,'2019-09-01 00:00:00',NULL,NULL,'1976-02-05',NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'2017-10-05 22:48:39','2021-04-15 10:41:35',NULL,NULL,'aleerfok',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'gw8cb7xj','Leerfok','Amanda','Sale representative','','','','','aleerfok@example.com','','[]','',0,NULL,1,1,NULL,NULL,NULL,'','2017-10-05 23:16:06',NULL,NULL,'',0,'person5.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,'2018-01-22 17:27:02','2021-04-15 10:41:35',NULL,NULL,'ldestailleur',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'87g06wbx','Destailleur','Laurent','Project leader of Dolibarr ERP CRM','','','','','ldestailleur@example.com','','[]','
Laurent DESTAILLEUR
\r\n\r\n
\r\n
Project Director
\r\nldestailleur@example.com
\r\n\r\n
 
\r\n\r\n\r\n
',0,NULL,1,1,10,10,NULL,'More information on http://www.mydomain.com','2019-10-04 10:06:40','2017-09-06 11:55:30',NULL,'',1,'ldestailleur_200x200.jpg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'007f7f','',NULL,0,0,NULL,NULL,NULL,NULL,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'2017-02-02 03:55:44','2021-04-15 10:41:35',NULL,NULL,'aboston',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Boston','Alex','','','','','','aboston@example.com','','[]','Alex Boston
\r\nAdmin support service - 555 01 02 03 04',0,NULL,1,1,NULL,NULL,NULL,'',NULL,NULL,NULL,'',0,'person2.jpeg',NULL,NULL,12,NULL,NULL,25.00000000,'','','',NULL,NULL,'ff00ff','',NULL,0,0,2700.00000000,NULL,NULL,32.00000000,NULL,NULL,'2016-11-04 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `llx_user` VALUES (1,'2012-07-08 13:20:11','2021-04-15 10:42:13',NULL,NULL,'aeinstein',0,NULL,'',NULL,1,0,NULL,'$2y$10$lIvMb5RJjxqmd6OxnZLqvuLZGOXj3gxIQhZQUqcY8fQTyh0cTtUpa',NULL,NULL,'Einstein','Albert','','123456789','','','','aeinstein@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'','2017-10-05 08:32:44','2017-10-03 11:43:50',NULL,'',1,'alberteinstein.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'aaaaff','',NULL,0,0,NULL,NULL,NULL,44.00000000,'man','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(2,'2012-07-08 13:54:48','2021-04-15 10:41:35',NULL,NULL,'demo',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Doe','David','Trainee','09123123','','','','daviddoe@example.com','','[]','',0,NULL,NULL,NULL,'','2018-07-30 23:10:54','2018-07-30 23:04:17',NULL,'',1,'person9.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,35.00000000,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(3,'2012-07-11 16:18:59','2021-04-15 10:41:35',NULL,NULL,'pcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Curie','Pierre','','','','','','pcurie@example.com','','[]','',0,NULL,NULL,2,'','2014-12-21 17:38:55',NULL,NULL,'',1,'pierrecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(4,'2015-01-23 17:52:27','2021-04-15 10:41:35',NULL,NULL,'bbookkeeper',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Bookkeeper','Bob','Bookkeeper','','','','','bbookkeeper@example.com','','{\"skype\":\"skypebbookkeeper\"}','',0,17,6,NULL,'','2015-02-25 10:18:41','2015-01-23 17:53:20',NULL,'',1,'person8.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,16.00000000,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(10,'2017-10-03 11:47:41','2021-04-15 10:41:35',NULL,NULL,'mcurie',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'t3mnkbhs','Curie','Marie','','','','','','mcurie@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'mariecurie.jpg',NULL,NULL,14,NULL,NULL,NULL,'','','',NULL,NULL,'ffaaff','',NULL,0,0,NULL,NULL,NULL,44.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(11,'2017-10-05 09:07:52','2021-04-15 10:40:22',NULL,NULL,'zzeceo',1,NULL,'',NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'cq78nf9m','Zeceo','Zack','President - CEO','','','','','zzeceo@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'','2017-10-05 22:48:08','2017-10-05 21:18:46',NULL,'',1,'person4.jpeg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,NULL,'','2019-06-10 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(12,'2017-10-05 09:09:46','2021-04-15 10:38:52',NULL,NULL,'admin',0,NULL,'',NULL,1,0,NULL,'$2y$10$5qk/U.aOy.7uBSNxpwiqkOfBlCUop9c2wKWuFZ/wZ2hAC9lriGqnG',NULL,'nd6hgbcr','Adminson','Alice','Admin Technical','','','','','aadminson@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','Alice - 123',1,NULL,NULL,NULL,'','2022-07-05 07:56:33','2021-04-15 07:59:04',NULL,'',1,'person6.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,2700.00000000,NULL,NULL,39.00000000,'woman','',NULL,NULL,'generic_user_odt','1985-09-15',NULL,NULL,NULL,NULL,NULL,'192.168.0.254',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(13,'2017-10-05 21:29:35','2021-04-15 10:41:51',NULL,NULL,'ccommercy',1,NULL,'',NULL,1,0,NULL,'$2y$10$KTaKE0NyYyJSCogsxtwR.eADst17XYMrOWlsFfVLR60IbjANIVLHK',NULL,'y451ksdv','Commercy','Coraly','Commercial leader','','','','','ccommercy@example.com','','{\"facebook\":\"\",\"skype\":\"\",\"twitter\":\"\",\"linkedin\":\"\",\"instagram\":\"\",\"snapchat\":\"\",\"googleplus\":\"\",\"youtube\":\"\",\"whatsapp\":\"\",\"tumblr\":\"\",\"vero\":\"\",\"viadeo\":\"\",\"slack\":\"\",\"xing\":\"\",\"meetup\":\"\",\"pinterest\":\"\",\"flickr\":\"\",\"500px\":\"\",\"giphy\":\"\",\"gifycat\":\"\",\"dailymotion\":\"\",\"vimeo\":\"\",\"periscope\":\"\",\"twitch\":\"\",\"discord\":\"\",\"wikipedia\":\"\",\"reddit\":\"\",\"quora\":\"\",\"tripadvisor\":\"\",\"mastodon\":\"\",\"diaspora\":\"\",\"viber\":\"\",\"github\":\"\"}','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person7.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,1890.00000000,NULL,NULL,25.00000000,'woman','','2018-09-11 00:00:00',NULL,NULL,'1998-12-08',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(14,'2017-10-05 21:33:33','2021-04-15 10:41:35',NULL,NULL,'sscientol',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'s2hp8bxd','Scientol','Sam','Scientist leader','','','','','sscientol@example.com','','[]','',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',1,'person3.jpeg',NULL,NULL,11,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,3500.00000000,NULL,NULL,39.00000000,NULL,NULL,'2018-07-03 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(16,'2017-10-05 22:47:52','2021-04-15 10:41:35',NULL,NULL,'ccommerson',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'cx9y1dk0','Charle1','Commerson','Sale representative','','','','','ccommerson@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 23:46:24','2017-10-05 23:37:31',NULL,'',1,'person1.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,2900.00000000,NULL,NULL,39.00000000,NULL,NULL,'2019-09-01 00:00:00',NULL,NULL,'1976-02-05',NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(17,'2017-10-05 22:48:39','2021-04-15 10:41:35',NULL,NULL,'aleerfok',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'gw8cb7xj','Leerfok','Amanda','Sale representative','','','','','aleerfok@example.com','','[]','',0,NULL,NULL,NULL,'','2017-10-05 23:16:06',NULL,NULL,'',0,'person5.jpeg',NULL,NULL,13,NULL,NULL,NULL,'','','',NULL,NULL,'','',NULL,0,0,NULL,NULL,NULL,39.00000000,'woman',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(18,'2018-01-22 17:27:02','2021-04-15 10:41:35',NULL,NULL,'ldestailleur',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,'87g06wbx','Destailleur','Laurent','Project leader of Dolibarr ERP CRM','','','','','ldestailleur@example.com','','[]','
Laurent DESTAILLEUR
\r\n\r\n
\r\n
Project Director
\r\nldestailleur@example.com
\r\n\r\n
 
\r\n\r\n\r\n
',0,10,10,NULL,'More information on http://www.mydomain.com','2019-10-04 10:06:40','2017-09-06 11:55:30',NULL,'',1,'ldestailleur_200x200.jpg',NULL,NULL,NULL,NULL,NULL,NULL,'','','',NULL,NULL,'007f7f','',NULL,0,0,NULL,NULL,NULL,NULL,'man',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(19,'2017-02-02 03:55:44','2021-04-15 10:41:35',NULL,NULL,'aboston',1,NULL,NULL,NULL,1,0,NULL,'$2y$10$Hgawd0DFS2bgBiM6rJuAZ.ff250vlm111HVWBJQvRzRq5hNijLxam',NULL,NULL,'Boston','Alex','','','','','','aboston@example.com','','[]','Alex Boston
\r\nAdmin support service - 555 01 02 03 04',0,NULL,NULL,NULL,'',NULL,NULL,NULL,'',0,'person2.jpeg',NULL,NULL,12,NULL,NULL,25.00000000,'','','',NULL,NULL,'ff00ff','',NULL,0,0,2700.00000000,NULL,NULL,32.00000000,NULL,NULL,'2016-11-04 00:00:00',NULL,NULL,NULL,NULL,NULL,NULL,NULL,-1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `llx_user` ENABLE KEYS */; UNLOCK TABLES; @@ -12694,7 +13400,7 @@ CREATE TABLE `llx_user_alert` ( `fk_contact` int(11) DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12716,12 +13422,12 @@ DROP TABLE IF EXISTS `llx_user_clicktodial`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_user_clicktodial` ( `fk_user` int(11) NOT NULL, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `login` varchar(32) COLLATE utf8_unicode_ci DEFAULT NULL, - `pass` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, - `poste` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `login` varchar(32) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `pass` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `poste` varchar(20) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`fk_user`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12743,14 +13449,14 @@ DROP TABLE IF EXISTS `llx_user_employment`; CREATE TABLE `llx_user_employment` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, - `ref_ext` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `ref_ext` varchar(50) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_user` int(11) DEFAULT NULL, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `job` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `job` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) NOT NULL, `salary` double(24,8) DEFAULT NULL, `salaryextra` double(24,8) DEFAULT NULL, @@ -12761,7 +13467,7 @@ CREATE TABLE `llx_user_employment` ( UNIQUE KEY `uk_user_employment` (`ref`,`entity`), KEY `fk_user_employment_fk_user` (`fk_user`), CONSTRAINT `fk_user_employment_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12784,10 +13490,10 @@ CREATE TABLE `llx_user_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_user_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12809,10 +13515,10 @@ DROP TABLE IF EXISTS `llx_user_param`; CREATE TABLE `llx_user_param` ( `fk_user` int(11) NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, - `param` varchar(255) COLLATE utf8_unicode_ci NOT NULL, - `value` text COLLATE utf8_unicode_ci NOT NULL, + `param` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, + `value` text COLLATE utf8mb3_unicode_ci NOT NULL, UNIQUE KEY `uk_user_param` (`fk_user`,`param`,`entity`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12838,19 +13544,19 @@ CREATE TABLE `llx_user_rib` ( `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `label` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL, - `bank` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_banque` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `code_guichet` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, - `number` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `cle_rib` varchar(5) COLLATE utf8_unicode_ci DEFAULT NULL, - `bic` varchar(11) COLLATE utf8_unicode_ci DEFAULT NULL, - `iban_prefix` varchar(34) COLLATE utf8_unicode_ci DEFAULT NULL, - `domiciliation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `proprio` varchar(60) COLLATE utf8_unicode_ci DEFAULT NULL, - `owner_address` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `label` varchar(30) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bank` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_banque` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `code_guichet` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `number` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `cle_rib` varchar(5) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `bic` varchar(11) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `iban_prefix` varchar(34) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `domiciliation` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `proprio` varchar(60) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `owner_address` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12878,7 +13584,7 @@ CREATE TABLE `llx_user_rights` ( UNIQUE KEY `uk_user_rights` (`entity`,`fk_user`,`fk_id`), KEY `fk_user_rights_fk_user_user` (`fk_user`), CONSTRAINT `fk_user_rights_fk_user_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=20841 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=21555 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12887,7 +13593,7 @@ CREATE TABLE `llx_user_rights` ( LOCK TABLES `llx_user_rights` WRITE; /*!40000 ALTER TABLE `llx_user_rights` DISABLE KEYS */; -INSERT INTO `llx_user_rights` VALUES (12402,1,1,11),(12380,1,1,12),(12385,1,1,13),(12389,1,1,14),(12393,1,1,15),(12398,1,1,16),(12404,1,1,19),(9726,1,1,21),(9700,1,1,22),(9706,1,1,24),(9711,1,1,25),(9716,1,1,26),(9722,1,1,27),(9728,1,1,28),(9978,1,1,31),(9968,1,1,32),(9974,1,1,34),(1910,1,1,36),(9980,1,1,38),(11573,1,1,41),(11574,1,1,42),(11575,1,1,44),(11576,1,1,45),(7184,1,1,61),(7181,1,1,62),(7183,1,1,64),(7185,1,1,67),(7186,1,1,68),(1678,1,1,71),(1673,1,1,72),(1675,1,1,74),(1679,1,1,75),(1677,1,1,76),(1681,1,1,78),(1682,1,1,79),(12322,1,1,81),(12309,1,1,82),(12312,1,1,84),(12314,1,1,86),(12317,1,1,87),(12320,1,1,88),(12323,1,1,89),(11580,1,1,91),(11581,1,1,92),(11582,1,1,93),(11583,1,1,94),(10097,1,1,95),(10099,1,1,96),(10103,1,1,97),(10104,1,1,98),(7139,1,1,101),(7134,1,1,102),(7136,1,1,104),(7137,1,1,105),(7138,1,1,106),(7140,1,1,109),(10229,1,1,111),(10201,1,1,112),(10207,1,1,113),(10213,1,1,114),(10219,1,1,115),(10225,1,1,116),(10231,1,1,117),(12518,1,1,121),(12508,1,1,122),(12514,1,1,125),(12520,1,1,126),(11577,1,1,141),(11578,1,1,142),(11579,1,1,144),(2307,1,1,151),(2304,1,1,152),(2306,1,1,153),(2308,1,1,154),(10092,1,1,161),(10093,1,1,162),(10094,1,1,163),(10095,1,1,164),(10096,1,1,165),(1585,1,1,170),(12342,1,1,171),(12331,1,1,172),(12335,1,1,173),(12339,1,1,174),(12343,1,1,178),(10000,1,1,221),(9990,1,1,222),(9996,1,1,223),(10002,1,1,229),(10007,1,1,237),(10011,1,1,238),(10015,1,1,239),(1686,1,1,241),(1685,1,1,242),(1687,1,1,243),(12604,1,1,251),(12566,1,1,252),(12569,1,1,253),(12572,1,1,254),(12575,1,1,255),(12579,1,1,256),(1617,1,1,258),(12525,1,1,262),(12544,1,1,281),(12534,1,1,282),(12540,1,1,283),(12546,1,1,286),(12288,1,1,300),(12290,1,1,301),(11591,1,1,302),(1763,1,1,331),(1762,1,1,332),(1764,1,1,333),(12582,1,1,341),(12584,1,1,342),(12586,1,1,343),(12588,1,1,344),(12600,1,1,351),(12593,1,1,352),(12597,1,1,353),(12601,1,1,354),(12605,1,1,358),(12560,1,1,531),(12553,1,1,532),(12557,1,1,534),(1625,1,1,536),(12561,1,1,538),(12358,1,1,700),(12348,1,1,701),(12354,1,1,702),(12360,1,1,703),(1755,1,1,1001),(1754,1,1,1002),(1756,1,1,1003),(1758,1,1,1004),(1759,1,1,1005),(7146,1,1,1101),(7143,1,1,1102),(7145,1,1,1104),(7147,1,1,1109),(12412,1,1,1181),(12458,1,1,1182),(12417,1,1,1183),(12420,1,1,1184),(12423,1,1,1185),(12427,1,1,1186),(12431,1,1,1187),(12437,1,1,1188),(12434,1,1,1189),(1578,1,1,1201),(1579,1,1,1202),(12454,1,1,1231),(12443,1,1,1232),(12446,1,1,1233),(12449,1,1,1234),(12452,1,1,1235),(12455,1,1,1236),(12459,1,1,1237),(1736,1,1,1251),(12409,1,1,1321),(12326,1,1,1421),(8190,1,1,1791),(8187,1,1,1792),(8191,1,1,1793),(12264,1,1,2401),(12260,1,1,2402),(12266,1,1,2403),(12280,1,1,2411),(12276,1,1,2412),(12282,1,1,2413),(12286,1,1,2414),(1618,1,1,2500),(12370,1,1,2501),(12367,1,1,2503),(12371,1,1,2515),(9610,1,1,5001),(9611,1,1,5002),(12490,1,1,20001),(12474,1,1,20003),(12480,1,1,20004),(12486,1,1,20005),(12492,1,1,20006),(12302,1,1,23001),(12295,1,1,23002),(12299,1,1,23003),(12303,1,1,23004),(7701,1,1,50101),(4984,1,1,50401),(4983,1,1,50402),(4985,1,1,50403),(4987,1,1,50411),(4988,1,1,50412),(4989,1,1,50415),(12498,1,1,55001),(12499,1,1,55002),(3564,1,1,100700),(3565,1,1,100701),(9596,1,1,101051),(9598,1,1,101052),(9600,1,1,101053),(9604,1,1,101060),(9605,1,1,101061),(7177,1,1,101201),(7178,1,1,101202),(10353,1,1,101250),(10355,1,1,101251),(8980,1,1,101261),(8981,1,1,101262),(7616,1,1,101331),(10030,1,1,101701),(10031,1,1,101702),(3582,1,1,102000),(3583,1,1,102001),(9819,1,1,400051),(9823,1,1,400052),(9827,1,1,400053),(9831,1,1,400055),(132,1,2,11),(133,1,2,12),(134,1,2,13),(135,1,2,14),(136,1,2,16),(137,1,2,19),(138,1,2,21),(139,1,2,22),(140,1,2,24),(141,1,2,25),(142,1,2,26),(143,1,2,27),(10359,1,2,31),(145,1,2,32),(10361,1,2,34),(146,1,2,36),(147,1,2,41),(148,1,2,42),(149,1,2,44),(150,1,2,61),(151,1,2,62),(152,1,2,64),(153,1,2,71),(154,1,2,72),(155,1,2,74),(156,1,2,75),(157,1,2,78),(158,1,2,79),(159,1,2,81),(160,1,2,82),(161,1,2,84),(162,1,2,86),(163,1,2,87),(164,1,2,88),(165,1,2,89),(166,1,2,91),(167,1,2,92),(168,1,2,93),(2475,1,2,95),(2476,1,2,96),(2477,1,2,97),(2478,1,2,98),(169,1,2,101),(170,1,2,102),(171,1,2,104),(172,1,2,109),(173,1,2,111),(174,1,2,112),(175,1,2,113),(176,1,2,114),(177,1,2,116),(178,1,2,117),(179,1,2,121),(180,1,2,122),(181,1,2,125),(182,1,2,141),(183,1,2,142),(184,1,2,144),(2479,1,2,151),(2480,1,2,152),(2481,1,2,153),(2482,1,2,154),(185,1,2,161),(186,1,2,162),(187,1,2,163),(188,1,2,164),(189,1,2,165),(190,1,2,170),(2471,1,2,171),(192,1,2,172),(2472,1,2,173),(193,1,2,221),(194,1,2,222),(195,1,2,229),(196,1,2,241),(197,1,2,242),(198,1,2,243),(199,1,2,251),(201,1,2,262),(202,1,2,281),(203,1,2,282),(204,1,2,283),(205,1,2,331),(15072,1,2,510),(2483,1,2,531),(207,1,2,532),(2484,1,2,534),(208,1,2,536),(2473,1,2,700),(210,1,2,701),(211,1,2,702),(2474,1,2,703),(15064,1,2,771),(15057,1,2,772),(15059,1,2,773),(15061,1,2,774),(15063,1,2,775),(15065,1,2,776),(212,1,2,1001),(213,1,2,1002),(214,1,2,1003),(215,1,2,1004),(216,1,2,1005),(217,1,2,1101),(218,1,2,1102),(219,1,2,1104),(220,1,2,1109),(15073,1,2,1121),(15074,1,2,1122),(15075,1,2,1123),(15076,1,2,1124),(15077,1,2,1125),(15078,1,2,1126),(221,1,2,1181),(222,1,2,1182),(223,1,2,1183),(224,1,2,1184),(225,1,2,1185),(226,1,2,1186),(227,1,2,1187),(228,1,2,1188),(229,1,2,1201),(230,1,2,1202),(231,1,2,1231),(232,1,2,1232),(233,1,2,1233),(234,1,2,1234),(235,1,2,1421),(236,1,2,2401),(237,1,2,2402),(238,1,2,2403),(239,1,2,2411),(240,1,2,2412),(241,1,2,2413),(242,1,2,2500),(2470,1,2,2501),(243,1,2,2515),(10363,1,2,20001),(10365,1,2,20003),(10366,1,2,20004),(10367,1,2,20005),(10368,1,2,20006),(15054,1,2,23001),(10362,1,2,50101),(15067,1,2,55001),(15066,1,2,59001),(15068,1,2,63001),(15069,1,2,63002),(15070,1,2,63003),(15071,1,2,63004),(10372,1,2,101250),(1807,1,3,11),(1808,1,3,31),(1809,1,3,36),(1810,1,3,41),(1811,1,3,61),(1812,1,3,71),(1813,1,3,72),(1814,1,3,74),(1815,1,3,75),(1816,1,3,78),(1817,1,3,79),(1818,1,3,91),(1819,1,3,95),(1820,1,3,97),(1821,1,3,111),(1822,1,3,121),(1823,1,3,122),(1824,1,3,125),(1825,1,3,161),(1826,1,3,170),(1827,1,3,171),(1828,1,3,172),(1829,1,3,221),(1830,1,3,222),(1831,1,3,229),(1832,1,3,241),(1833,1,3,242),(1834,1,3,243),(1835,1,3,251),(1836,1,3,255),(1837,1,3,256),(1838,1,3,262),(1839,1,3,281),(1840,1,3,282),(1841,1,3,283),(1842,1,3,331),(1843,1,3,531),(1844,1,3,536),(1845,1,3,700),(1846,1,3,1001),(1847,1,3,1002),(1848,1,3,1003),(1849,1,3,1004),(1850,1,3,1005),(1851,1,3,1181),(1852,1,3,1182),(1853,1,3,1201),(1854,1,3,1202),(1855,1,3,1231),(1856,1,3,2401),(1857,1,3,2402),(1858,1,3,2403),(1859,1,3,2411),(1860,1,3,2412),(1861,1,3,2413),(1862,1,3,2500),(1863,1,3,2515),(8026,1,4,11),(8027,1,4,21),(8028,1,4,31),(8029,1,4,41),(8030,1,4,61),(8031,1,4,71),(8032,1,4,72),(8033,1,4,74),(8034,1,4,75),(8035,1,4,78),(8036,1,4,79),(8037,1,4,81),(8038,1,4,91),(8039,1,4,95),(8040,1,4,97),(8041,1,4,101),(8042,1,4,111),(8043,1,4,121),(8044,1,4,151),(8045,1,4,161),(8046,1,4,171),(8047,1,4,221),(8048,1,4,222),(8049,1,4,229),(8050,1,4,241),(8051,1,4,242),(8052,1,4,243),(8146,1,4,251),(8147,1,4,253),(8053,1,4,262),(8054,1,4,281),(8055,1,4,331),(8056,1,4,341),(8057,1,4,342),(8058,1,4,343),(8059,1,4,344),(8060,1,4,531),(8061,1,4,700),(8062,1,4,1001),(8063,1,4,1002),(8064,1,4,1003),(8065,1,4,1004),(8066,1,4,1005),(8067,1,4,1101),(8068,1,4,1181),(8069,1,4,1182),(8070,1,4,1201),(8071,1,4,1202),(8072,1,4,1231),(8073,1,4,2401),(8074,1,4,2501),(8075,1,4,2503),(8076,1,4,2515),(8077,1,4,20001),(8078,1,4,50101),(8079,1,4,101201),(8080,1,4,101261),(8081,1,4,102000),(8082,1,4,400051),(8083,1,4,400052),(8084,1,4,400053),(8085,1,4,400055),(12608,1,10,11),(12609,1,10,21),(12610,1,10,31),(12611,1,10,41),(12612,1,10,61),(12613,1,10,71),(12614,1,10,72),(12615,1,10,74),(12616,1,10,75),(12617,1,10,78),(12618,1,10,79),(12619,1,10,81),(12620,1,10,91),(12621,1,10,95),(12622,1,10,97),(12623,1,10,101),(12624,1,10,111),(12625,1,10,121),(12626,1,10,151),(12627,1,10,161),(12628,1,10,171),(12629,1,10,221),(12630,1,10,222),(12631,1,10,229),(12632,1,10,241),(12633,1,10,242),(12634,1,10,243),(12635,1,10,262),(12636,1,10,281),(12637,1,10,300),(12638,1,10,331),(12639,1,10,341),(12640,1,10,342),(12641,1,10,343),(12642,1,10,344),(12643,1,10,531),(12644,1,10,700),(12645,1,10,1001),(12646,1,10,1002),(12647,1,10,1003),(12648,1,10,1004),(12649,1,10,1005),(12650,1,10,1101),(12651,1,10,1181),(12652,1,10,1182),(12653,1,10,1201),(12654,1,10,1202),(12655,1,10,1231),(12656,1,10,2401),(12657,1,10,2501),(12658,1,10,2503),(12659,1,10,2515),(12660,1,10,20001),(12662,1,10,23001),(12663,1,10,50101),(12664,1,11,11),(12665,1,11,21),(12666,1,11,31),(12667,1,11,41),(12668,1,11,61),(12669,1,11,71),(12670,1,11,72),(12671,1,11,74),(12672,1,11,75),(12673,1,11,78),(12674,1,11,79),(12675,1,11,81),(12676,1,11,91),(12677,1,11,95),(12678,1,11,97),(12679,1,11,101),(12680,1,11,111),(12681,1,11,121),(12682,1,11,151),(12683,1,11,161),(12684,1,11,171),(12685,1,11,221),(12686,1,11,222),(12687,1,11,229),(12688,1,11,241),(12689,1,11,242),(12690,1,11,243),(12691,1,11,262),(12692,1,11,281),(12693,1,11,300),(12694,1,11,331),(12695,1,11,341),(12696,1,11,342),(12697,1,11,343),(12698,1,11,344),(12699,1,11,531),(12700,1,11,700),(12701,1,11,1001),(12702,1,11,1002),(12703,1,11,1003),(12704,1,11,1004),(12705,1,11,1005),(12706,1,11,1101),(12707,1,11,1181),(12708,1,11,1182),(12709,1,11,1201),(12710,1,11,1202),(12711,1,11,1231),(12712,1,11,2401),(12713,1,11,2501),(12714,1,11,2503),(12715,1,11,2515),(12716,1,11,20001),(12718,1,11,23001),(12719,1,11,50101),(20696,1,12,11),(20690,1,12,12),(20691,1,12,13),(20692,1,12,14),(20693,1,12,15),(20695,1,12,16),(20697,1,12,19),(14146,1,12,21),(14135,1,12,22),(14137,1,12,24),(14139,1,12,25),(14142,1,12,26),(14145,1,12,27),(14148,1,12,28),(14930,1,12,31),(14926,1,12,32),(14929,1,12,34),(14932,1,12,38),(13816,1,12,41),(13813,1,12,42),(13815,1,12,44),(13817,1,12,45),(14094,1,12,61),(14091,1,12,62),(14093,1,12,64),(14095,1,12,67),(14096,1,12,68),(16203,1,12,71),(16198,1,12,72),(16200,1,12,74),(16204,1,12,75),(16202,1,12,76),(16206,1,12,78),(16207,1,12,79),(20660,1,12,81),(20655,1,12,82),(20656,1,12,84),(20657,1,12,86),(20658,1,12,87),(20659,1,12,88),(20661,1,12,89),(15401,1,12,91),(15397,1,12,92),(15400,1,12,93),(15403,1,12,94),(13990,1,12,95),(12734,1,12,97),(19241,1,12,101),(19237,1,12,102),(19238,1,12,104),(19239,1,12,105),(19240,1,12,106),(19242,1,12,109),(20642,1,12,111),(20633,1,12,112),(20635,1,12,113),(20637,1,12,114),(20639,1,12,115),(20641,1,12,116),(20643,1,12,117),(20783,1,12,121),(20780,1,12,122),(20782,1,12,125),(20784,1,12,126),(20785,1,12,130),(13821,1,12,141),(13820,1,12,142),(13822,1,12,144),(13912,1,12,151),(13909,1,12,152),(13911,1,12,153),(13913,1,12,154),(14063,1,12,161),(14056,1,12,162),(14058,1,12,163),(14060,1,12,164),(14062,1,12,165),(14064,1,12,167),(13350,1,12,171),(13345,1,12,172),(13347,1,12,173),(13349,1,12,174),(13351,1,12,178),(13838,1,12,221),(13834,1,12,222),(13837,1,12,223),(13840,1,12,229),(13842,1,12,237),(13844,1,12,238),(13846,1,12,239),(13516,1,12,241),(13515,1,12,242),(13517,1,12,243),(20824,1,12,251),(20805,1,12,252),(20807,1,12,253),(20808,1,12,254),(20810,1,12,255),(20812,1,12,256),(20786,1,12,262),(20792,1,12,281),(20789,1,12,282),(20791,1,12,283),(20793,1,12,286),(19877,1,12,300),(20644,1,12,301),(20645,1,12,302),(16194,1,12,331),(16193,1,12,332),(16195,1,12,333),(20813,1,12,341),(20814,1,12,342),(20815,1,12,343),(20816,1,12,344),(20822,1,12,351),(20819,1,12,352),(20821,1,12,353),(20823,1,12,354),(20825,1,12,358),(19249,1,12,430),(16384,1,12,501),(16378,1,12,502),(13865,1,12,510),(20769,1,12,511),(20764,1,12,512),(20766,1,12,514),(20768,1,12,517),(20770,1,12,519),(15291,1,12,520),(15286,1,12,522),(15288,1,12,524),(15290,1,12,525),(15292,1,12,527),(20776,1,12,531),(20773,1,12,532),(20775,1,12,534),(20777,1,12,538),(20076,1,12,561),(20073,1,12,562),(20075,1,12,563),(20077,1,12,564),(16932,1,12,650),(20629,1,12,651),(20628,1,12,652),(20630,1,12,653),(17124,1,12,660),(20744,1,12,661),(20743,1,12,662),(20745,1,12,663),(13358,1,12,700),(20666,1,12,701),(20665,1,12,702),(20667,1,12,703),(20753,1,12,750),(20752,1,12,751),(20754,1,12,752),(20686,1,12,771),(20675,1,12,772),(20677,1,12,773),(15085,1,12,774),(20679,1,12,775),(20681,1,12,776),(20683,1,12,777),(20685,1,12,778),(20687,1,12,779),(14917,1,12,1001),(14916,1,12,1002),(14918,1,12,1003),(14920,1,12,1004),(14921,1,12,1005),(19247,1,12,1101),(19245,1,12,1102),(19246,1,12,1104),(19248,1,12,1109),(19233,1,12,1121),(19226,1,12,1122),(19228,1,12,1123),(19230,1,12,1124),(19232,1,12,1125),(19234,1,12,1126),(20700,1,12,1181),(20714,1,12,1182),(20703,1,12,1183),(20704,1,12,1184),(20706,1,12,1185),(20708,1,12,1186),(20710,1,12,1187),(20713,1,12,1188),(20711,1,12,1189),(20715,1,12,1191),(13827,1,12,1201),(13828,1,12,1202),(20723,1,12,1231),(20718,1,12,1232),(20719,1,12,1233),(20721,1,12,1234),(20722,1,12,1235),(20724,1,12,1236),(16302,1,12,1237),(13829,1,12,1251),(20698,1,12,1321),(20699,1,12,1322),(20662,1,12,1421),(20618,1,12,2401),(20617,1,12,2402),(20619,1,12,2403),(20623,1,12,2411),(20622,1,12,2412),(20624,1,12,2413),(20625,1,12,2414),(20671,1,12,2501),(20670,1,12,2503),(20672,1,12,2515),(20082,1,12,3200),(20840,1,12,3201),(20341,1,12,3301),(15435,1,12,5001),(15436,1,12,5002),(20833,1,12,10001),(20828,1,12,10002),(20830,1,12,10003),(20832,1,12,10005),(20834,1,12,10008),(20736,1,12,20001),(20727,1,12,20002),(20729,1,12,20003),(20733,1,12,20004),(20735,1,12,20005),(20737,1,12,20006),(20731,1,12,20007),(20651,1,12,23001),(20648,1,12,23002),(20650,1,12,23003),(20652,1,12,23004),(19019,1,12,50101),(20801,1,12,50151),(20802,1,12,50152),(20803,1,12,50153),(20603,1,12,50401),(20611,1,12,50411),(20606,1,12,50412),(20608,1,12,50414),(20610,1,12,50415),(20612,1,12,50418),(20613,1,12,50420),(20614,1,12,50430),(20602,1,12,50440),(20747,1,12,55001),(20748,1,12,55002),(20799,1,12,56001),(20796,1,12,56002),(20798,1,12,56003),(20800,1,12,56004),(16742,1,12,56005),(20838,1,12,57001),(20837,1,12,57002),(20839,1,12,57003),(20738,1,12,59001),(20739,1,12,59002),(20740,1,12,59003),(20760,1,12,63001),(20757,1,12,63002),(20759,1,12,63003),(20761,1,12,63004),(20749,1,12,64001),(17328,1,12,101130),(17327,1,12,101131),(17329,1,12,101132),(16009,1,12,101331),(16010,1,12,101332),(16011,1,12,101333),(19208,1,12,101701),(19209,1,12,101702),(20069,1,12,941601),(20065,1,12,941602),(20066,1,12,941603),(20067,1,12,941604),(20068,1,12,941605),(20070,1,12,941606),(12776,1,13,11),(12777,1,13,21),(12778,1,13,31),(12779,1,13,41),(12780,1,13,61),(12781,1,13,71),(12782,1,13,72),(12783,1,13,74),(12784,1,13,75),(12785,1,13,78),(12786,1,13,79),(12787,1,13,81),(12788,1,13,91),(12789,1,13,95),(12790,1,13,97),(12791,1,13,101),(12792,1,13,111),(12793,1,13,121),(12794,1,13,151),(12795,1,13,161),(12796,1,13,171),(12797,1,13,221),(12798,1,13,222),(12799,1,13,229),(12800,1,13,241),(12801,1,13,242),(12802,1,13,243),(12803,1,13,262),(12804,1,13,281),(12805,1,13,300),(12806,1,13,331),(12807,1,13,341),(12808,1,13,342),(12809,1,13,343),(12810,1,13,344),(12811,1,13,531),(12812,1,13,700),(12813,1,13,1001),(12814,1,13,1002),(12815,1,13,1003),(12816,1,13,1004),(12817,1,13,1005),(12818,1,13,1101),(12819,1,13,1181),(12820,1,13,1182),(12821,1,13,1201),(12822,1,13,1202),(12823,1,13,1231),(12824,1,13,2401),(12825,1,13,2501),(12826,1,13,2503),(12827,1,13,2515),(12828,1,13,20001),(12830,1,13,23001),(12831,1,13,50101),(12832,1,14,11),(12833,1,14,21),(12834,1,14,31),(12835,1,14,41),(12836,1,14,61),(12837,1,14,71),(12838,1,14,72),(12839,1,14,74),(12840,1,14,75),(12841,1,14,78),(12842,1,14,79),(12843,1,14,81),(12844,1,14,91),(12845,1,14,95),(12846,1,14,97),(12847,1,14,101),(12848,1,14,111),(12849,1,14,121),(12850,1,14,151),(12851,1,14,161),(12852,1,14,171),(12853,1,14,221),(12854,1,14,222),(12855,1,14,229),(12856,1,14,241),(12857,1,14,242),(12858,1,14,243),(12859,1,14,262),(12860,1,14,281),(12861,1,14,300),(12862,1,14,331),(12863,1,14,341),(12864,1,14,342),(12865,1,14,343),(12866,1,14,344),(12867,1,14,531),(12868,1,14,700),(12869,1,14,1001),(12870,1,14,1002),(12871,1,14,1003),(12872,1,14,1004),(12873,1,14,1005),(12874,1,14,1101),(12875,1,14,1181),(12876,1,14,1182),(12877,1,14,1201),(12878,1,14,1202),(12879,1,14,1231),(12880,1,14,2401),(12881,1,14,2501),(12882,1,14,2503),(12883,1,14,2515),(12884,1,14,20001),(12886,1,14,23001),(12887,1,14,50101),(12944,1,16,11),(12945,1,16,21),(12946,1,16,31),(13056,1,16,41),(13057,1,16,42),(13058,1,16,44),(13059,1,16,45),(12948,1,16,61),(12949,1,16,71),(12950,1,16,72),(12951,1,16,74),(12952,1,16,75),(12953,1,16,78),(12954,1,16,79),(12955,1,16,81),(12956,1,16,91),(12957,1,16,95),(12958,1,16,97),(12959,1,16,101),(12960,1,16,111),(12961,1,16,121),(13060,1,16,141),(13061,1,16,142),(13062,1,16,144),(12962,1,16,151),(12963,1,16,161),(12964,1,16,171),(12965,1,16,221),(12966,1,16,222),(12967,1,16,229),(12968,1,16,241),(12969,1,16,242),(12970,1,16,243),(13128,1,16,251),(13064,1,16,262),(12972,1,16,281),(12973,1,16,300),(12974,1,16,331),(12975,1,16,341),(12976,1,16,342),(12977,1,16,343),(12978,1,16,344),(12979,1,16,531),(12980,1,16,700),(12981,1,16,1001),(12982,1,16,1002),(12983,1,16,1003),(12984,1,16,1004),(12985,1,16,1005),(12986,1,16,1101),(12987,1,16,1181),(12988,1,16,1182),(12989,1,16,1201),(12990,1,16,1202),(12991,1,16,1231),(12992,1,16,2401),(12993,1,16,2501),(12994,1,16,2503),(12995,1,16,2515),(12996,1,16,20001),(12998,1,16,23001),(12999,1,16,50101),(13000,1,17,11),(13001,1,17,21),(13002,1,17,31),(13065,1,17,41),(13066,1,17,42),(13067,1,17,44),(13068,1,17,45),(13004,1,17,61),(13005,1,17,71),(13006,1,17,72),(13007,1,17,74),(13008,1,17,75),(13009,1,17,78),(13010,1,17,79),(13011,1,17,81),(13012,1,17,91),(13013,1,17,95),(13014,1,17,97),(13015,1,17,101),(13016,1,17,111),(13017,1,17,121),(13069,1,17,141),(13070,1,17,142),(13071,1,17,144),(13018,1,17,151),(13019,1,17,161),(13020,1,17,171),(13021,1,17,221),(13022,1,17,222),(13023,1,17,229),(13024,1,17,241),(13025,1,17,242),(13026,1,17,243),(13028,1,17,281),(13029,1,17,300),(13030,1,17,331),(13031,1,17,341),(13032,1,17,342),(13033,1,17,343),(13034,1,17,344),(13035,1,17,531),(13036,1,17,700),(13037,1,17,1001),(13038,1,17,1002),(13039,1,17,1003),(13040,1,17,1004),(13041,1,17,1005),(13042,1,17,1101),(13043,1,17,1181),(13044,1,17,1182),(13045,1,17,1201),(13046,1,17,1202),(13047,1,17,1231),(13048,1,17,2401),(13049,1,17,2501),(13050,1,17,2503),(13051,1,17,2515),(13052,1,17,20001),(13054,1,17,23001),(13055,1,17,50101),(14504,1,18,11),(14505,1,18,21),(14506,1,18,31),(14507,1,18,41),(14508,1,18,61),(14509,1,18,71),(14510,1,18,78),(14511,1,18,81),(14512,1,18,91),(14513,1,18,95),(14514,1,18,101),(14515,1,18,111),(14516,1,18,121),(14517,1,18,151),(14518,1,18,161),(14519,1,18,221),(14520,1,18,241),(14521,1,18,262),(14522,1,18,281),(14523,1,18,300),(14524,1,18,331),(14525,1,18,332),(14526,1,18,333),(14527,1,18,341),(14528,1,18,342),(14529,1,18,343),(14530,1,18,344),(14531,1,18,531),(14532,1,18,701),(14533,1,18,771),(14534,1,18,774),(14535,1,18,1001),(14536,1,18,1004),(14537,1,18,1101),(14538,1,18,1181),(14539,1,18,1182),(14540,1,18,1201),(14541,1,18,1231),(14542,1,18,2401),(14543,1,18,2501),(14544,1,18,2503),(14545,1,18,2515),(14546,1,18,20001),(14548,1,18,50101),(14549,1,18,59001),(15242,1,19,21),(15243,1,19,31),(15244,1,19,41),(15245,1,19,61),(15246,1,19,71),(15247,1,19,78),(15248,1,19,81),(15249,1,19,101),(15250,1,19,121),(15251,1,19,151),(15252,1,19,161),(15253,1,19,221),(15254,1,19,241),(15255,1,19,262),(15256,1,19,281),(15257,1,19,300),(15258,1,19,331),(15259,1,19,332),(15260,1,19,341),(15261,1,19,342),(15262,1,19,343),(15263,1,19,344),(15264,1,19,531),(15265,1,19,701),(15266,1,19,771),(15267,1,19,774),(15268,1,19,777),(15269,1,19,1001),(15270,1,19,1004),(15271,1,19,1101),(15272,1,19,1121),(15273,1,19,1181),(15274,1,19,1182),(15275,1,19,1201),(15276,1,19,1231),(15277,1,19,2401),(15278,1,19,2501),(15279,1,19,20001),(15281,1,19,50101),(15282,1,19,59001),(15283,1,19,63001); +INSERT INTO `llx_user_rights` VALUES (12402,1,1,11),(12380,1,1,12),(12385,1,1,13),(12389,1,1,14),(12393,1,1,15),(12398,1,1,16),(12404,1,1,19),(9726,1,1,21),(9700,1,1,22),(9706,1,1,24),(9711,1,1,25),(9716,1,1,26),(9722,1,1,27),(9728,1,1,28),(9978,1,1,31),(9968,1,1,32),(9974,1,1,34),(1910,1,1,36),(9980,1,1,38),(11573,1,1,41),(11574,1,1,42),(11575,1,1,44),(11576,1,1,45),(7184,1,1,61),(7181,1,1,62),(7183,1,1,64),(7185,1,1,67),(7186,1,1,68),(1678,1,1,71),(1673,1,1,72),(1675,1,1,74),(1679,1,1,75),(1677,1,1,76),(1681,1,1,78),(1682,1,1,79),(12322,1,1,81),(12309,1,1,82),(12312,1,1,84),(12314,1,1,86),(12317,1,1,87),(12320,1,1,88),(12323,1,1,89),(11580,1,1,91),(11581,1,1,92),(11582,1,1,93),(11583,1,1,94),(10097,1,1,95),(10099,1,1,96),(10103,1,1,97),(10104,1,1,98),(7139,1,1,101),(7134,1,1,102),(7136,1,1,104),(7137,1,1,105),(7138,1,1,106),(7140,1,1,109),(10229,1,1,111),(10201,1,1,112),(10207,1,1,113),(10213,1,1,114),(10219,1,1,115),(10225,1,1,116),(10231,1,1,117),(12518,1,1,121),(12508,1,1,122),(12514,1,1,125),(12520,1,1,126),(11577,1,1,141),(11578,1,1,142),(11579,1,1,144),(2307,1,1,151),(2304,1,1,152),(2306,1,1,153),(2308,1,1,154),(10092,1,1,161),(10093,1,1,162),(10094,1,1,163),(10095,1,1,164),(10096,1,1,165),(1585,1,1,170),(12342,1,1,171),(12331,1,1,172),(12335,1,1,173),(12339,1,1,174),(12343,1,1,178),(10000,1,1,221),(9990,1,1,222),(9996,1,1,223),(10002,1,1,229),(10007,1,1,237),(10011,1,1,238),(10015,1,1,239),(1686,1,1,241),(1685,1,1,242),(1687,1,1,243),(12604,1,1,251),(12566,1,1,252),(12569,1,1,253),(12572,1,1,254),(12575,1,1,255),(12579,1,1,256),(1617,1,1,258),(12525,1,1,262),(12544,1,1,281),(12534,1,1,282),(12540,1,1,283),(12546,1,1,286),(12288,1,1,300),(12290,1,1,301),(11591,1,1,302),(1763,1,1,331),(1762,1,1,332),(1764,1,1,333),(12582,1,1,341),(12584,1,1,342),(12586,1,1,343),(12588,1,1,344),(12600,1,1,351),(12593,1,1,352),(12597,1,1,353),(12601,1,1,354),(12605,1,1,358),(12560,1,1,531),(12553,1,1,532),(12557,1,1,534),(1625,1,1,536),(12561,1,1,538),(12358,1,1,700),(12348,1,1,701),(12354,1,1,702),(12360,1,1,703),(1755,1,1,1001),(1754,1,1,1002),(1756,1,1,1003),(1758,1,1,1004),(1759,1,1,1005),(7146,1,1,1101),(7143,1,1,1102),(7145,1,1,1104),(7147,1,1,1109),(12412,1,1,1181),(12458,1,1,1182),(12417,1,1,1183),(12420,1,1,1184),(12423,1,1,1185),(12427,1,1,1186),(12431,1,1,1187),(12437,1,1,1188),(12434,1,1,1189),(1578,1,1,1201),(1579,1,1,1202),(12454,1,1,1231),(12443,1,1,1232),(12446,1,1,1233),(12449,1,1,1234),(12452,1,1,1235),(12455,1,1,1236),(12459,1,1,1237),(1736,1,1,1251),(12409,1,1,1321),(12326,1,1,1421),(8190,1,1,1791),(8187,1,1,1792),(8191,1,1,1793),(12264,1,1,2401),(12260,1,1,2402),(12266,1,1,2403),(12280,1,1,2411),(12276,1,1,2412),(12282,1,1,2413),(12286,1,1,2414),(1618,1,1,2500),(12370,1,1,2501),(12367,1,1,2503),(12371,1,1,2515),(9610,1,1,5001),(9611,1,1,5002),(12490,1,1,20001),(12474,1,1,20003),(12480,1,1,20004),(12486,1,1,20005),(12492,1,1,20006),(12302,1,1,23001),(12295,1,1,23002),(12299,1,1,23003),(12303,1,1,23004),(7701,1,1,50101),(4984,1,1,50401),(4983,1,1,50402),(4985,1,1,50403),(4987,1,1,50411),(4988,1,1,50412),(4989,1,1,50415),(12498,1,1,55001),(12499,1,1,55002),(3564,1,1,100700),(3565,1,1,100701),(9596,1,1,101051),(9598,1,1,101052),(9600,1,1,101053),(9604,1,1,101060),(9605,1,1,101061),(7177,1,1,101201),(7178,1,1,101202),(10353,1,1,101250),(10355,1,1,101251),(8980,1,1,101261),(8981,1,1,101262),(7616,1,1,101331),(10030,1,1,101701),(10031,1,1,101702),(3582,1,1,102000),(3583,1,1,102001),(9819,1,1,400051),(9823,1,1,400052),(9827,1,1,400053),(9831,1,1,400055),(132,1,2,11),(133,1,2,12),(134,1,2,13),(135,1,2,14),(136,1,2,16),(137,1,2,19),(138,1,2,21),(139,1,2,22),(140,1,2,24),(141,1,2,25),(142,1,2,26),(143,1,2,27),(10359,1,2,31),(145,1,2,32),(10361,1,2,34),(146,1,2,36),(147,1,2,41),(148,1,2,42),(149,1,2,44),(150,1,2,61),(151,1,2,62),(152,1,2,64),(153,1,2,71),(154,1,2,72),(155,1,2,74),(156,1,2,75),(157,1,2,78),(158,1,2,79),(159,1,2,81),(160,1,2,82),(161,1,2,84),(162,1,2,86),(163,1,2,87),(164,1,2,88),(165,1,2,89),(166,1,2,91),(167,1,2,92),(168,1,2,93),(2475,1,2,95),(2476,1,2,96),(2477,1,2,97),(2478,1,2,98),(169,1,2,101),(170,1,2,102),(171,1,2,104),(172,1,2,109),(173,1,2,111),(174,1,2,112),(175,1,2,113),(176,1,2,114),(177,1,2,116),(178,1,2,117),(179,1,2,121),(180,1,2,122),(181,1,2,125),(182,1,2,141),(183,1,2,142),(184,1,2,144),(2479,1,2,151),(2480,1,2,152),(2481,1,2,153),(2482,1,2,154),(185,1,2,161),(186,1,2,162),(187,1,2,163),(188,1,2,164),(189,1,2,165),(190,1,2,170),(2471,1,2,171),(192,1,2,172),(2472,1,2,173),(193,1,2,221),(194,1,2,222),(195,1,2,229),(196,1,2,241),(197,1,2,242),(198,1,2,243),(199,1,2,251),(201,1,2,262),(202,1,2,281),(203,1,2,282),(204,1,2,283),(205,1,2,331),(15072,1,2,510),(2483,1,2,531),(207,1,2,532),(2484,1,2,534),(208,1,2,536),(2473,1,2,700),(210,1,2,701),(211,1,2,702),(2474,1,2,703),(15064,1,2,771),(15057,1,2,772),(15059,1,2,773),(15061,1,2,774),(15063,1,2,775),(15065,1,2,776),(212,1,2,1001),(213,1,2,1002),(214,1,2,1003),(215,1,2,1004),(216,1,2,1005),(217,1,2,1101),(218,1,2,1102),(219,1,2,1104),(220,1,2,1109),(15073,1,2,1121),(15074,1,2,1122),(15075,1,2,1123),(15076,1,2,1124),(15077,1,2,1125),(15078,1,2,1126),(221,1,2,1181),(222,1,2,1182),(223,1,2,1183),(224,1,2,1184),(225,1,2,1185),(226,1,2,1186),(227,1,2,1187),(228,1,2,1188),(229,1,2,1201),(230,1,2,1202),(231,1,2,1231),(232,1,2,1232),(233,1,2,1233),(234,1,2,1234),(235,1,2,1421),(236,1,2,2401),(237,1,2,2402),(238,1,2,2403),(239,1,2,2411),(240,1,2,2412),(241,1,2,2413),(242,1,2,2500),(2470,1,2,2501),(243,1,2,2515),(10363,1,2,20001),(10365,1,2,20003),(10366,1,2,20004),(10367,1,2,20005),(10368,1,2,20006),(15054,1,2,23001),(10362,1,2,50101),(15067,1,2,55001),(15066,1,2,59001),(15068,1,2,63001),(15069,1,2,63002),(15070,1,2,63003),(15071,1,2,63004),(10372,1,2,101250),(1807,1,3,11),(1808,1,3,31),(1809,1,3,36),(1810,1,3,41),(1811,1,3,61),(1812,1,3,71),(1813,1,3,72),(1814,1,3,74),(1815,1,3,75),(1816,1,3,78),(1817,1,3,79),(1818,1,3,91),(1819,1,3,95),(1820,1,3,97),(1821,1,3,111),(1822,1,3,121),(1823,1,3,122),(1824,1,3,125),(1825,1,3,161),(1826,1,3,170),(1827,1,3,171),(1828,1,3,172),(1829,1,3,221),(1830,1,3,222),(1831,1,3,229),(1832,1,3,241),(1833,1,3,242),(1834,1,3,243),(1835,1,3,251),(1836,1,3,255),(1837,1,3,256),(1838,1,3,262),(1839,1,3,281),(1840,1,3,282),(1841,1,3,283),(1842,1,3,331),(1843,1,3,531),(1844,1,3,536),(1845,1,3,700),(1846,1,3,1001),(1847,1,3,1002),(1848,1,3,1003),(1849,1,3,1004),(1850,1,3,1005),(1851,1,3,1181),(1852,1,3,1182),(1853,1,3,1201),(1854,1,3,1202),(1855,1,3,1231),(1856,1,3,2401),(1857,1,3,2402),(1858,1,3,2403),(1859,1,3,2411),(1860,1,3,2412),(1861,1,3,2413),(1862,1,3,2500),(1863,1,3,2515),(8026,1,4,11),(8027,1,4,21),(8028,1,4,31),(8029,1,4,41),(8030,1,4,61),(8031,1,4,71),(8032,1,4,72),(8033,1,4,74),(8034,1,4,75),(8035,1,4,78),(8036,1,4,79),(8037,1,4,81),(8038,1,4,91),(8039,1,4,95),(8040,1,4,97),(8041,1,4,101),(8042,1,4,111),(8043,1,4,121),(8044,1,4,151),(8045,1,4,161),(8046,1,4,171),(8047,1,4,221),(8048,1,4,222),(8049,1,4,229),(8050,1,4,241),(8051,1,4,242),(8052,1,4,243),(8146,1,4,251),(8147,1,4,253),(8053,1,4,262),(8054,1,4,281),(8055,1,4,331),(8056,1,4,341),(8057,1,4,342),(8058,1,4,343),(8059,1,4,344),(8060,1,4,531),(8061,1,4,700),(8062,1,4,1001),(8063,1,4,1002),(8064,1,4,1003),(8065,1,4,1004),(8066,1,4,1005),(8067,1,4,1101),(8068,1,4,1181),(8069,1,4,1182),(8070,1,4,1201),(8071,1,4,1202),(8072,1,4,1231),(8073,1,4,2401),(8074,1,4,2501),(8075,1,4,2503),(8076,1,4,2515),(8077,1,4,20001),(8078,1,4,50101),(8079,1,4,101201),(8080,1,4,101261),(8081,1,4,102000),(8082,1,4,400051),(8083,1,4,400052),(8084,1,4,400053),(8085,1,4,400055),(12608,1,10,11),(12609,1,10,21),(12610,1,10,31),(12611,1,10,41),(12612,1,10,61),(12613,1,10,71),(12614,1,10,72),(12615,1,10,74),(12616,1,10,75),(12617,1,10,78),(12618,1,10,79),(12619,1,10,81),(12620,1,10,91),(12621,1,10,95),(12622,1,10,97),(12623,1,10,101),(12624,1,10,111),(12625,1,10,121),(12626,1,10,151),(12627,1,10,161),(12628,1,10,171),(12629,1,10,221),(12630,1,10,222),(12631,1,10,229),(12632,1,10,241),(12633,1,10,242),(12634,1,10,243),(12635,1,10,262),(12636,1,10,281),(12637,1,10,300),(12638,1,10,331),(12639,1,10,341),(12640,1,10,342),(12641,1,10,343),(12642,1,10,344),(12643,1,10,531),(12644,1,10,700),(12645,1,10,1001),(12646,1,10,1002),(12647,1,10,1003),(12648,1,10,1004),(12649,1,10,1005),(12650,1,10,1101),(12651,1,10,1181),(12652,1,10,1182),(12653,1,10,1201),(12654,1,10,1202),(12655,1,10,1231),(12656,1,10,2401),(12657,1,10,2501),(12658,1,10,2503),(12659,1,10,2515),(12660,1,10,20001),(12662,1,10,23001),(12663,1,10,50101),(12664,1,11,11),(12665,1,11,21),(12666,1,11,31),(12667,1,11,41),(12668,1,11,61),(12669,1,11,71),(12670,1,11,72),(12671,1,11,74),(12672,1,11,75),(12673,1,11,78),(12674,1,11,79),(12675,1,11,81),(12676,1,11,91),(12677,1,11,95),(12678,1,11,97),(12679,1,11,101),(12680,1,11,111),(12681,1,11,121),(12682,1,11,151),(12683,1,11,161),(12684,1,11,171),(12685,1,11,221),(12686,1,11,222),(12687,1,11,229),(12688,1,11,241),(12689,1,11,242),(12690,1,11,243),(12691,1,11,262),(12692,1,11,281),(12693,1,11,300),(12694,1,11,331),(12695,1,11,341),(12696,1,11,342),(12697,1,11,343),(12698,1,11,344),(12699,1,11,531),(12700,1,11,700),(12701,1,11,1001),(12702,1,11,1002),(12703,1,11,1003),(12704,1,11,1004),(12705,1,11,1005),(12706,1,11,1101),(12707,1,11,1181),(12708,1,11,1182),(12709,1,11,1201),(12710,1,11,1202),(12711,1,11,1231),(12712,1,11,2401),(12713,1,11,2501),(12714,1,11,2503),(12715,1,11,2515),(12716,1,11,20001),(12718,1,11,23001),(12719,1,11,50101),(21411,1,12,11),(21405,1,12,12),(21406,1,12,13),(21407,1,12,14),(21408,1,12,15),(21410,1,12,16),(21412,1,12,19),(14146,1,12,21),(14135,1,12,22),(14137,1,12,24),(14139,1,12,25),(14142,1,12,26),(14145,1,12,27),(14148,1,12,28),(14930,1,12,31),(14926,1,12,32),(14929,1,12,34),(14932,1,12,38),(13816,1,12,41),(13813,1,12,42),(13815,1,12,44),(13817,1,12,45),(14094,1,12,61),(14091,1,12,62),(14093,1,12,64),(14095,1,12,67),(14096,1,12,68),(16203,1,12,71),(16198,1,12,72),(16200,1,12,74),(16204,1,12,75),(16202,1,12,76),(16206,1,12,78),(16207,1,12,79),(21375,1,12,81),(21370,1,12,82),(21371,1,12,84),(21372,1,12,86),(21373,1,12,87),(21374,1,12,88),(21376,1,12,89),(15401,1,12,91),(15397,1,12,92),(15400,1,12,93),(15403,1,12,94),(13990,1,12,95),(12734,1,12,97),(19241,1,12,101),(19237,1,12,102),(19238,1,12,104),(19239,1,12,105),(19240,1,12,106),(19242,1,12,109),(21357,1,12,111),(21348,1,12,112),(21350,1,12,113),(21352,1,12,114),(21354,1,12,115),(21356,1,12,116),(21358,1,12,117),(21498,1,12,121),(21495,1,12,122),(21497,1,12,125),(21499,1,12,126),(21500,1,12,130),(13821,1,12,141),(13820,1,12,142),(13822,1,12,144),(13912,1,12,151),(13909,1,12,152),(13911,1,12,153),(13913,1,12,154),(14063,1,12,161),(14056,1,12,162),(14058,1,12,163),(14060,1,12,164),(14062,1,12,165),(14064,1,12,167),(13350,1,12,171),(13345,1,12,172),(13347,1,12,173),(13349,1,12,174),(13351,1,12,178),(13838,1,12,221),(13834,1,12,222),(13837,1,12,223),(13840,1,12,229),(13842,1,12,237),(13844,1,12,238),(13846,1,12,239),(13516,1,12,241),(13515,1,12,242),(13517,1,12,243),(21539,1,12,251),(21520,1,12,252),(21522,1,12,253),(21523,1,12,254),(21525,1,12,255),(21527,1,12,256),(21501,1,12,262),(21507,1,12,281),(21504,1,12,282),(21506,1,12,283),(21508,1,12,286),(19877,1,12,300),(21359,1,12,301),(21360,1,12,302),(16194,1,12,331),(16193,1,12,332),(16195,1,12,333),(21528,1,12,341),(21529,1,12,342),(21530,1,12,343),(21531,1,12,344),(21537,1,12,351),(21534,1,12,352),(21536,1,12,353),(21538,1,12,354),(21540,1,12,358),(19249,1,12,430),(16384,1,12,501),(16378,1,12,502),(13865,1,12,510),(21484,1,12,511),(21479,1,12,512),(21481,1,12,514),(21483,1,12,517),(21485,1,12,519),(15291,1,12,520),(15286,1,12,522),(15288,1,12,524),(15290,1,12,525),(15292,1,12,527),(21491,1,12,531),(21488,1,12,532),(21490,1,12,534),(21492,1,12,538),(20076,1,12,561),(20073,1,12,562),(20075,1,12,563),(20077,1,12,564),(21544,1,12,610),(21543,1,12,611),(21545,1,12,612),(16932,1,12,650),(21344,1,12,651),(21343,1,12,652),(21345,1,12,653),(17124,1,12,660),(21459,1,12,661),(21458,1,12,662),(21460,1,12,663),(13358,1,12,700),(21381,1,12,701),(21380,1,12,702),(21382,1,12,703),(21468,1,12,750),(21467,1,12,751),(21469,1,12,752),(21401,1,12,771),(21390,1,12,772),(21392,1,12,773),(15085,1,12,774),(21394,1,12,775),(21396,1,12,776),(21398,1,12,777),(21400,1,12,778),(21402,1,12,779),(14917,1,12,1001),(14916,1,12,1002),(14918,1,12,1003),(14920,1,12,1004),(14921,1,12,1005),(19247,1,12,1101),(19245,1,12,1102),(19246,1,12,1104),(19248,1,12,1109),(19233,1,12,1121),(19226,1,12,1122),(19228,1,12,1123),(19230,1,12,1124),(19232,1,12,1125),(19234,1,12,1126),(21415,1,12,1181),(21429,1,12,1182),(21418,1,12,1183),(21419,1,12,1184),(21421,1,12,1185),(21423,1,12,1186),(21425,1,12,1187),(21428,1,12,1188),(21426,1,12,1189),(21430,1,12,1191),(13827,1,12,1201),(13828,1,12,1202),(21438,1,12,1231),(21433,1,12,1232),(21434,1,12,1233),(21436,1,12,1234),(21437,1,12,1235),(21439,1,12,1236),(16302,1,12,1237),(13829,1,12,1251),(21413,1,12,1321),(21414,1,12,1322),(21377,1,12,1421),(21333,1,12,2401),(21332,1,12,2402),(21334,1,12,2403),(21338,1,12,2411),(21337,1,12,2412),(21339,1,12,2413),(21340,1,12,2414),(21386,1,12,2501),(21385,1,12,2503),(21387,1,12,2515),(20082,1,12,3200),(20840,1,12,3201),(20341,1,12,3301),(15435,1,12,5001),(15436,1,12,5002),(21553,1,12,10001),(21548,1,12,10002),(21550,1,12,10003),(21552,1,12,10005),(21554,1,12,10008),(21451,1,12,20001),(21442,1,12,20002),(21444,1,12,20003),(21448,1,12,20004),(21450,1,12,20005),(21452,1,12,20006),(21446,1,12,20007),(21366,1,12,23001),(21363,1,12,23002),(21365,1,12,23003),(21367,1,12,23004),(19019,1,12,50101),(21516,1,12,50151),(21517,1,12,50152),(21518,1,12,50153),(21318,1,12,50401),(21326,1,12,50411),(21321,1,12,50412),(21323,1,12,50414),(21325,1,12,50415),(21327,1,12,50418),(21328,1,12,50420),(21329,1,12,50430),(21317,1,12,50440),(21462,1,12,55001),(21463,1,12,55002),(21514,1,12,56001),(21511,1,12,56002),(21513,1,12,56003),(21515,1,12,56004),(16742,1,12,56005),(20838,1,12,57001),(20837,1,12,57002),(20839,1,12,57003),(21453,1,12,59001),(21454,1,12,59002),(21455,1,12,59003),(21475,1,12,63001),(21472,1,12,63002),(21474,1,12,63003),(21476,1,12,63004),(21464,1,12,64001),(17328,1,12,101130),(17327,1,12,101131),(17329,1,12,101132),(16009,1,12,101331),(16010,1,12,101332),(16011,1,12,101333),(19208,1,12,101701),(19209,1,12,101702),(20069,1,12,941601),(20065,1,12,941602),(20066,1,12,941603),(20067,1,12,941604),(20068,1,12,941605),(20070,1,12,941606),(12776,1,13,11),(12777,1,13,21),(12778,1,13,31),(12779,1,13,41),(12780,1,13,61),(12781,1,13,71),(12782,1,13,72),(12783,1,13,74),(12784,1,13,75),(12785,1,13,78),(12786,1,13,79),(12787,1,13,81),(12788,1,13,91),(12789,1,13,95),(12790,1,13,97),(12791,1,13,101),(12792,1,13,111),(12793,1,13,121),(12794,1,13,151),(12795,1,13,161),(12796,1,13,171),(12797,1,13,221),(12798,1,13,222),(12799,1,13,229),(12800,1,13,241),(12801,1,13,242),(12802,1,13,243),(12803,1,13,262),(12804,1,13,281),(12805,1,13,300),(12806,1,13,331),(12807,1,13,341),(12808,1,13,342),(12809,1,13,343),(12810,1,13,344),(12811,1,13,531),(12812,1,13,700),(12813,1,13,1001),(12814,1,13,1002),(12815,1,13,1003),(12816,1,13,1004),(12817,1,13,1005),(12818,1,13,1101),(12819,1,13,1181),(12820,1,13,1182),(12821,1,13,1201),(12822,1,13,1202),(12823,1,13,1231),(12824,1,13,2401),(12825,1,13,2501),(12826,1,13,2503),(12827,1,13,2515),(12828,1,13,20001),(12830,1,13,23001),(12831,1,13,50101),(12832,1,14,11),(12833,1,14,21),(12834,1,14,31),(12835,1,14,41),(12836,1,14,61),(12837,1,14,71),(12838,1,14,72),(12839,1,14,74),(12840,1,14,75),(12841,1,14,78),(12842,1,14,79),(12843,1,14,81),(12844,1,14,91),(12845,1,14,95),(12846,1,14,97),(12847,1,14,101),(12848,1,14,111),(12849,1,14,121),(12850,1,14,151),(12851,1,14,161),(12852,1,14,171),(12853,1,14,221),(12854,1,14,222),(12855,1,14,229),(12856,1,14,241),(12857,1,14,242),(12858,1,14,243),(12859,1,14,262),(12860,1,14,281),(12861,1,14,300),(12862,1,14,331),(12863,1,14,341),(12864,1,14,342),(12865,1,14,343),(12866,1,14,344),(12867,1,14,531),(12868,1,14,700),(12869,1,14,1001),(12870,1,14,1002),(12871,1,14,1003),(12872,1,14,1004),(12873,1,14,1005),(12874,1,14,1101),(12875,1,14,1181),(12876,1,14,1182),(12877,1,14,1201),(12878,1,14,1202),(12879,1,14,1231),(12880,1,14,2401),(12881,1,14,2501),(12882,1,14,2503),(12883,1,14,2515),(12884,1,14,20001),(12886,1,14,23001),(12887,1,14,50101),(12944,1,16,11),(12945,1,16,21),(12946,1,16,31),(13056,1,16,41),(13057,1,16,42),(13058,1,16,44),(13059,1,16,45),(12948,1,16,61),(12949,1,16,71),(12950,1,16,72),(12951,1,16,74),(12952,1,16,75),(12953,1,16,78),(12954,1,16,79),(12955,1,16,81),(12956,1,16,91),(12957,1,16,95),(12958,1,16,97),(12959,1,16,101),(12960,1,16,111),(12961,1,16,121),(13060,1,16,141),(13061,1,16,142),(13062,1,16,144),(12962,1,16,151),(12963,1,16,161),(12964,1,16,171),(12965,1,16,221),(12966,1,16,222),(12967,1,16,229),(12968,1,16,241),(12969,1,16,242),(12970,1,16,243),(13128,1,16,251),(13064,1,16,262),(12972,1,16,281),(12973,1,16,300),(12974,1,16,331),(12975,1,16,341),(12976,1,16,342),(12977,1,16,343),(12978,1,16,344),(12979,1,16,531),(12980,1,16,700),(12981,1,16,1001),(12982,1,16,1002),(12983,1,16,1003),(12984,1,16,1004),(12985,1,16,1005),(12986,1,16,1101),(12987,1,16,1181),(12988,1,16,1182),(12989,1,16,1201),(12990,1,16,1202),(12991,1,16,1231),(12992,1,16,2401),(12993,1,16,2501),(12994,1,16,2503),(12995,1,16,2515),(12996,1,16,20001),(12998,1,16,23001),(12999,1,16,50101),(13000,1,17,11),(13001,1,17,21),(13002,1,17,31),(13065,1,17,41),(13066,1,17,42),(13067,1,17,44),(13068,1,17,45),(13004,1,17,61),(13005,1,17,71),(13006,1,17,72),(13007,1,17,74),(13008,1,17,75),(13009,1,17,78),(13010,1,17,79),(13011,1,17,81),(13012,1,17,91),(13013,1,17,95),(13014,1,17,97),(13015,1,17,101),(13016,1,17,111),(13017,1,17,121),(13069,1,17,141),(13070,1,17,142),(13071,1,17,144),(13018,1,17,151),(13019,1,17,161),(13020,1,17,171),(13021,1,17,221),(13022,1,17,222),(13023,1,17,229),(13024,1,17,241),(13025,1,17,242),(13026,1,17,243),(13028,1,17,281),(13029,1,17,300),(13030,1,17,331),(13031,1,17,341),(13032,1,17,342),(13033,1,17,343),(13034,1,17,344),(13035,1,17,531),(13036,1,17,700),(13037,1,17,1001),(13038,1,17,1002),(13039,1,17,1003),(13040,1,17,1004),(13041,1,17,1005),(13042,1,17,1101),(13043,1,17,1181),(13044,1,17,1182),(13045,1,17,1201),(13046,1,17,1202),(13047,1,17,1231),(13048,1,17,2401),(13049,1,17,2501),(13050,1,17,2503),(13051,1,17,2515),(13052,1,17,20001),(13054,1,17,23001),(13055,1,17,50101),(14504,1,18,11),(14505,1,18,21),(14506,1,18,31),(14507,1,18,41),(14508,1,18,61),(14509,1,18,71),(14510,1,18,78),(14511,1,18,81),(14512,1,18,91),(14513,1,18,95),(14514,1,18,101),(14515,1,18,111),(14516,1,18,121),(14517,1,18,151),(14518,1,18,161),(14519,1,18,221),(14520,1,18,241),(14521,1,18,262),(14522,1,18,281),(14523,1,18,300),(14524,1,18,331),(14525,1,18,332),(14526,1,18,333),(14527,1,18,341),(14528,1,18,342),(14529,1,18,343),(14530,1,18,344),(14531,1,18,531),(14532,1,18,701),(14533,1,18,771),(14534,1,18,774),(14535,1,18,1001),(14536,1,18,1004),(14537,1,18,1101),(14538,1,18,1181),(14539,1,18,1182),(14540,1,18,1201),(14541,1,18,1231),(14542,1,18,2401),(14543,1,18,2501),(14544,1,18,2503),(14545,1,18,2515),(14546,1,18,20001),(14548,1,18,50101),(14549,1,18,59001),(15242,1,19,21),(15243,1,19,31),(15244,1,19,41),(15245,1,19,61),(15246,1,19,71),(15247,1,19,78),(15248,1,19,81),(15249,1,19,101),(15250,1,19,121),(15251,1,19,151),(15252,1,19,161),(15253,1,19,221),(15254,1,19,241),(15255,1,19,262),(15256,1,19,281),(15257,1,19,300),(15258,1,19,331),(15259,1,19,332),(15260,1,19,341),(15261,1,19,342),(15262,1,19,343),(15263,1,19,344),(15264,1,19,531),(15265,1,19,701),(15266,1,19,771),(15267,1,19,774),(15268,1,19,777),(15269,1,19,1001),(15270,1,19,1004),(15271,1,19,1101),(15272,1,19,1121),(15273,1,19,1181),(15274,1,19,1182),(15275,1,19,1201),(15276,1,19,1231),(15277,1,19,2401),(15278,1,19,2501),(15279,1,19,20001),(15281,1,19,50101),(15282,1,19,59001),(15283,1,19,63001); /*!40000 ALTER TABLE `llx_user_rights` ENABLE KEYS */; UNLOCK TABLES; @@ -12900,15 +13606,15 @@ DROP TABLE IF EXISTS `llx_usergroup`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_usergroup` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `nom` varchar(255) COLLATE utf8_unicode_ci NOT NULL, + `nom` varchar(255) COLLATE utf8mb3_unicode_ci NOT NULL, `entity` int(11) NOT NULL DEFAULT 1, `datec` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `note` text COLLATE utf8_unicode_ci DEFAULT NULL, - `model_pdf` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `note` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `model_pdf` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_usergroup_name` (`nom`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12932,10 +13638,10 @@ CREATE TABLE `llx_usergroup_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_usergroup_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12963,7 +13669,7 @@ CREATE TABLE `llx_usergroup_rights` ( UNIQUE KEY `uk_usergroup_rights` (`entity`,`fk_usergroup`,`fk_id`), KEY `fk_usergroup_rights_fk_usergroup` (`fk_usergroup`), CONSTRAINT `fk_usergroup_rights_fk_usergroup` FOREIGN KEY (`fk_usergroup`) REFERENCES `llx_usergroup` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=200 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -12994,7 +13700,7 @@ CREATE TABLE `llx_usergroup_user` ( KEY `fk_usergroup_user_fk_usergroup` (`fk_usergroup`), CONSTRAINT `fk_usergroup_user_fk_user` FOREIGN KEY (`fk_user`) REFERENCES `llx_user` (`rowid`), CONSTRAINT `fk_usergroup_user_fk_usergroup` FOREIGN KEY (`fk_usergroup`) REFERENCES `llx_usergroup` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13017,29 +13723,29 @@ DROP TABLE IF EXISTS `llx_website`; CREATE TABLE `llx_website` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `ref` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT NULL, `fk_default_home` int(11) DEFAULT NULL, - `virtualhost` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `virtualhost` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime DEFAULT NULL, `date_modification` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `maincolor` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, - `maincolorbis` varchar(16) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `maincolor` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `maincolorbis` varchar(16) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `use_manifest` int(11) DEFAULT NULL, - `lang` varchar(8) COLLATE utf8_unicode_ci DEFAULT NULL, - `otherlang` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `lang` varchar(8) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `otherlang` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `position` int(11) DEFAULT 0, `lastaccess` datetime DEFAULT NULL, `pageviews_month` bigint(20) unsigned DEFAULT 0, `pageviews_total` bigint(20) unsigned DEFAULT 0, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_website_ref` (`ref`,`entity`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13063,10 +13769,10 @@ CREATE TABLE `llx_website_extrafields` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_object` int(11) NOT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), KEY `idx_website_extrafields` (`fk_object`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13088,33 +13794,33 @@ DROP TABLE IF EXISTS `llx_website_page`; CREATE TABLE `llx_website_page` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `fk_website` int(11) NOT NULL, - `pageurl` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `aliasalt` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `description` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `keywords` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `content` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, + `pageurl` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `aliasalt` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `title` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `description` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `keywords` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `content` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT 1, `date_creation` datetime DEFAULT NULL, `date_modification` datetime DEFAULT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) DEFAULT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `type_container` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'page', - `lang` varchar(6) COLLATE utf8_unicode_ci DEFAULT NULL, + `type_container` varchar(16) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT 'page', + `lang` varchar(6) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `fk_page` int(11) DEFAULT NULL, - `grabbed_from` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `htmlheader` mediumtext COLLATE utf8_unicode_ci DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, - `image` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `author_alias` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL, + `grabbed_from` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `htmlheader` mediumtext COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `image` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `author_alias` varchar(64) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `allowed_in_frames` int(11) DEFAULT 0, - `object_type` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `fk_object` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, + `object_type` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `fk_object` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`), UNIQUE KEY `uk_website_page_url` (`fk_website`,`pageurl`), CONSTRAINT `fk_website_page_website` FOREIGN KEY (`fk_website`) REFERENCES `llx_website` (`rowid`) -) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13136,17 +13842,17 @@ DROP TABLE IF EXISTS `llx_workstation_workstation`; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `llx_workstation_workstation` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, - `ref` varchar(128) COLLATE utf8_unicode_ci NOT NULL DEFAULT '(PROV)', - `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `type` varchar(7) COLLATE utf8_unicode_ci DEFAULT NULL, - `note_public` text COLLATE utf8_unicode_ci DEFAULT NULL, + `ref` varchar(128) COLLATE utf8mb3_unicode_ci NOT NULL DEFAULT '(PROV)', + `label` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `type` varchar(7) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `note_public` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `entity` int(11) DEFAULT 1, - `note_private` text COLLATE utf8_unicode_ci DEFAULT NULL, + `note_private` text COLLATE utf8mb3_unicode_ci DEFAULT NULL, `date_creation` datetime NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `fk_user_creat` int(11) NOT NULL, `fk_user_modif` int(11) DEFAULT NULL, - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` smallint(6) NOT NULL, `nb_operators_required` int(11) DEFAULT NULL, `thm_operator_estimated` double DEFAULT NULL, @@ -13157,7 +13863,7 @@ CREATE TABLE `llx_workstation_workstation` ( KEY `fk_workstation_workstation_fk_user_creat` (`fk_user_creat`), KEY `idx_workstation_workstation_status` (`status`), CONSTRAINT `fk_workstation_workstation_fk_user_creat` FOREIGN KEY (`fk_user_creat`) REFERENCES `llx_user` (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13182,7 +13888,7 @@ CREATE TABLE `llx_workstation_workstation_resource` ( `fk_resource` int(11) DEFAULT NULL, `fk_workstation` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13207,7 +13913,7 @@ CREATE TABLE `llx_workstation_workstation_usergroup` ( `fk_usergroup` int(11) DEFAULT NULL, `fk_workstation` int(11) DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13229,17 +13935,17 @@ DROP TABLE IF EXISTS `llx_zapier_hook`; CREATE TABLE `llx_zapier_hook` ( `rowid` int(11) NOT NULL AUTO_INCREMENT, `entity` int(11) NOT NULL DEFAULT 1, - `url` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `event` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, - `module` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, - `action` varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + `url` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `event` varchar(255) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `module` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, + `action` varchar(128) COLLATE utf8mb3_unicode_ci DEFAULT NULL, `status` int(11) DEFAULT NULL, `date_creation` datetime NOT NULL, `fk_user` int(11) NOT NULL, `tms` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), - `import_key` varchar(14) COLLATE utf8_unicode_ci DEFAULT NULL, + `import_key` varchar(14) COLLATE utf8mb3_unicode_ci DEFAULT NULL, PRIMARY KEY (`rowid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -13260,4 +13966,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2022-02-07 15:44:10 +-- Dump completed on 2022-07-05 10:09:14 diff --git a/dev/resources/iso-normes/banking/iban_registry_0.pdf b/dev/resources/iso-normes/banking/iban_registry_0.pdf new file mode 100644 index 00000000000..4c56961c2c5 Binary files /dev/null and b/dev/resources/iso-normes/banking/iban_registry_0.pdf differ diff --git a/dev/resources/iso-normes/vat_number_names.txt b/dev/resources/iso-normes/tax/vat_number_names.txt similarity index 71% rename from dev/resources/iso-normes/vat_number_names.txt rename to dev/resources/iso-normes/tax/vat_number_names.txt index b1e8d469ec8..77adda72e0d 100644 --- a/dev/resources/iso-normes/vat_number_names.txt +++ b/dev/resources/iso-normes/tax/vat_number_names.txt @@ -4,4 +4,5 @@ terms (en) VAT = Value Added Tax (fr) TVA = Taxe sur la Valeur Ajouté (es) NIF / CIF -(de) USt / MwSt +(de) USt / MwSt = UmsatzSteuer / Mehrwertsteuer +(it) IVA diff --git a/dev/resources/iso-normes/tax/world_tax_rates.txt b/dev/resources/iso-normes/tax/world_tax_rates.txt new file mode 100644 index 00000000000..0b3bc3f41e5 --- /dev/null +++ b/dev/resources/iso-normes/tax/world_tax_rates.txt @@ -0,0 +1,10 @@ +VAT Rates +--------- + +https://www.taxrates.cc/index.html +https://en.wikipedia.org/wiki/List_of_countries_by_tax_rates + +For India: VAT=IGST / CGST=Localtax1 / SGST=Localtax2 +see: + https://cleartax.in/s/what-is-sgst-cgst-igst + https://www.mastersindia.co/blog/what-is-cgst-sgst-igst-and-ugst/ diff --git a/dev/resources/iso-normes/world_tax_rates.txt b/dev/resources/iso-normes/world_tax_rates.txt deleted file mode 100644 index 508446b618a..00000000000 --- a/dev/resources/iso-normes/world_tax_rates.txt +++ /dev/null @@ -1,8 +0,0 @@ -VAT Rates ---------- - -http://www.taxrates.cc/index.html -https://en.wikipedia.org/wiki/List_of_countries_by_tax_rates - -For India: VAT=IGST/CGST=Localtax1/SGST=Localtax2: https://cleartax.in/s/what-is-sgst-cgst-igst - diff --git a/dev/setup/codesniffer/ruleset.xml b/dev/setup/codesniffer/ruleset.xml index e78438d8791..752a9271e59 100644 --- a/dev/setup/codesniffer/ruleset.xml +++ b/dev/setup/codesniffer/ruleset.xml @@ -135,7 +135,7 @@ - + diff --git a/dev/tools/detectnotabfiles.sh b/dev/tools/detectnotabfiles.sh index c89b999b03d..ed4df5e50d8 100755 --- a/dev/tools/detectnotabfiles.sh +++ b/dev/tools/detectnotabfiles.sh @@ -10,6 +10,7 @@ # Syntax if [ "x$1" != "xlist" -a "x$1" != "xfix" ] then + echo "Detect .sh and .spec files that does not contains any tab inside" echo "Usage: fixnotabfiles.sh [list|fix]" fi diff --git a/dev/tools/fixdosfiles.sh b/dev/tools/fixdosfiles.sh index 4be867aea98..e5e5d97b554 100755 --- a/dev/tools/fixdosfiles.sh +++ b/dev/tools/fixdosfiles.sh @@ -17,14 +17,14 @@ fi # To detec if [ "x$1" = "xlist" ] then - find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF -# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep -v 'htdocs\/includes' | grep CRLF + find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v "CRLF" | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF +# find . \( -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" \) -exec file "{}" + | grep -v "CRLF" | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep -v 'htdocs\/includes' | grep CRLF fi # To convert if [ "x$1" = "xfix" ] then - for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF | awk -F':' '{ print $1 }' ` + for fic in `find . \( -iname "functions" -o -iname "*.md" -o -iname "*.html" -o -iname "*.htm" -o -iname "*.php" -o -iname "*.sh" -o -iname "*.cml" -o -iname "*.css" -o -iname "*.js" -o -iname "*.lang" -o -iname "*.pl" -o -iname "*.sql" -o -iname "*.txt" -o -iname "*.xml" -o -iname "*.pml" \) -exec file "{}" + | grep -v "CRLF" | grep -v 'custom\/' | grep -v 'documents\/website' | grep -v 'documents\/medias' | grep -v 'documents\/sellyoursaas' | grep CRLF | awk -F':' '{ print $1 }' ` do echo "Fix file $fic" dos2unix "$fic" diff --git a/dev/tools/optimize_images.sh b/dev/tools/optimize_images.sh index dd538c5e1aa..89717063006 100755 --- a/dev/tools/optimize_images.sh +++ b/dev/tools/optimize_images.sh @@ -39,13 +39,14 @@ optimize_image() max_input_size=$(expr $max_input_size + $input_file_size) if [ "${1##*.}" = "png" ]; then - #optipng -o1 -clobber -quiet $1 -out $2.firstpass - optipng -o1 -quiet $1 -out $2.firstpass - pngcrush -q -rem alla -reduce $2.firstpass $2 >/dev/null - rm -fr $2.firstpass + #optipng -o1 -clobber -quiet "$1" -out "$2.firstpass" + echo optipng -o1 -quiet "$1" -out "$2.firstpass" + optipng -o1 -quiet "$1" -out "$2.firstpass" + pngcrush -q -rem alla -reduce "$2.firstpass" "$2" >/dev/null + rm -fr "$2.firstpass" fi if [ "${1##*.}" = "jpg" -o "${1##*.}" = "jpeg" ]; then - jpegtran -copy none -progressive $1 > $2 + jpegtran -copy none -progressive "$1" > $2 fi output_file_size=$(stat -c%s "$2") @@ -120,8 +121,8 @@ main() # Search of all jpg/jpeg/png in $INPUT # We remove images from $OUTPUT if $OUTPUT is a subdirectory of $INPUT - echo "Scan $INPUT to find images" - IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v $OUTPUT) + echo "Scan $INPUT to find images with find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v '/gource/' | grep -v '/includes/' | grep -v '/custom/' | grep -v $OUTPUT" + IMAGES=$(find $INPUT -regextype posix-extended -regex '.*\.(jpg|jpeg|png)' | grep -v '/gource/' | grep -v '/includes/' | grep -v '/custom/' | grep -v '/documents/' | grep -v $OUTPUT) if [ "$QUIET" == "0" ]; then echo --- Optimizing $INPUT --- @@ -135,11 +136,11 @@ main() printf '%*.*s' 0 $((linelength - ${#filename} - ${#sDone} )) "$pad" fi - optimize_image $CURRENT_IMAGE $OUTPUT/$filename + optimize_image "$CURRENT_IMAGE" "$OUTPUT/$filename" # Replace file if [[ "$INPLACE" == "1" ]]; then - mv $OUTPUT/$filename $CURRENT_IMAGE + mv "$OUTPUT/$filename" "$CURRENT_IMAGE" fi if [ "$QUIET" == "0" ]; then diff --git a/htdocs/accountancy/admin/account.php b/htdocs/accountancy/admin/account.php index 4d74237e2e4..d26afd31331 100644 --- a/htdocs/accountancy/admin/account.php +++ b/htdocs/accountancy/admin/account.php @@ -30,7 +30,7 @@ require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; // Load translation files required by the page -$langs->loadLangs(array("compta", "bills", "admin", "accountancy", "salaries")); +$langs->loadLangs(array('accountancy', 'admin', 'bills', 'compta', 'salaries')); $mesg = ''; $action = GETPOST('action', 'aZ09'); @@ -52,8 +52,8 @@ $confirm = GETPOST('confirm', 'alpha'); $chartofaccounts = GETPOST('chartofaccounts', 'int'); -$permissiontoadd = !empty($user->rights->accounting->chartofaccount); -$permissiontodelete = !empty($user->rights->accounting->chartofaccount); +$permissiontoadd = $user->hasRight('accounting', 'chartofaccount'); +$permissiontodelete = $user->hasRight('accounting', 'chartofaccount'); // Security check if ($user->socid > 0) { @@ -294,7 +294,7 @@ if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { } // List of mass actions available -if ($user->rights->accounting->chartofaccount) { +if ($user->hasRight('accounting', 'chartofaccount')) { $arrayofmassactions['predelete'] = ''.$langs->trans("Delete"); } if (in_array($massaction, array('presend', 'predelete', 'closed'))) { @@ -590,7 +590,7 @@ if ($resql) { // Action print ''; - if ($user->rights->accounting->chartofaccount) { + if ($user->hasRight('accounting', 'chartofaccount')) { print ''; print img_edit(); print ''; diff --git a/htdocs/accountancy/admin/accountmodel.php b/htdocs/accountancy/admin/accountmodel.php index fd0ff2e72da..c1bc435145f 100644 --- a/htdocs/accountancy/admin/accountmodel.php +++ b/htdocs/accountancy/admin/accountmodel.php @@ -39,12 +39,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php'; -if (!empty($conf->accounting->enabled)) { +if (isModEnabled('accounting')) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; } // Load translation files required by the page -$langs->loadLangs(array("errors", "admin", "companies", "resource", "holiday", "compta", "accountancy", "hrm")); +$langs->loadLangs(array('accountancy', 'admin', 'companies', 'compta', 'errors', 'holiday', 'hrm', 'resource')); $action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; $confirm = GETPOST('confirm', 'alpha'); @@ -126,7 +126,7 @@ $tabrowid[31] = ""; // Condition to show dictionary in setup page $tabcond = array(); -$tabcond[31] = !empty($conf->accounting->enabled); +$tabcond[31] = isModEnabled('accounting'); // List of help for fields $tabhelp = array(); @@ -674,7 +674,7 @@ if ($id) { // Can an entry be erased or disabled ? $iserasable = 1; $canbedisabled = 1; $canbemodified = 1; // true by default - $url = $_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ?urlencode($obj->code) : ''); + $url = $_SERVER["PHP_SELF"].'?token='.newToken().($page ? '&page='.$page : '').'&sortfield='.$sortfield.'&sortorder='.$sortorder.'&rowid='.(!empty($obj->rowid) ? $obj->rowid : (!empty($obj->code) ? $obj->code : '')).'&code='.(!empty($obj->code) ?urlencode($obj->code) : ''); if ($param) { $url .= '&'.$param; } diff --git a/htdocs/accountancy/admin/card.php b/htdocs/accountancy/admin/card.php index 02b95cfd043..7876712fe51 100644 --- a/htdocs/accountancy/admin/card.php +++ b/htdocs/accountancy/admin/card.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; $error = 0; // Load translation files required by the page -$langs->loadLangs(array("bills", "accountancy", "compta")); +$langs->loadLangs(array('accountancy', 'bills', 'compta')); $action = GETPOST('action', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); @@ -66,7 +66,7 @@ if (GETPOST('cancel', 'alpha')) { exit; } -if ($action == 'add' && $user->rights->accounting->chartofaccount) { +if ($action == 'add' && $user->hasRight('accounting', 'chartofaccount')) { if (!$cancel) { if (!$account_number) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors'); @@ -127,7 +127,7 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount) { } } } -} elseif ($action == 'edit' && $user->rights->accounting->chartofaccount) { +} elseif ($action == 'edit' && $user->hasRight('accounting', 'chartofaccount')) { if (!$cancel) { if (!$account_number) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountNumber")), null, 'errors'); @@ -184,7 +184,7 @@ if ($action == 'add' && $user->rights->accounting->chartofaccount) { header("Location: ".$urltogo); exit(); } -} elseif ($action == 'delete' && $user->rights->accounting->chartofaccount) { +} elseif ($action == 'delete' && $user->hasRight('accounting', 'chartofaccount')) { $result = $object->fetch($id); if (!empty($object->id)) { @@ -419,13 +419,13 @@ if ($action == 'create') { */ print '
'; - if (!empty($user->rights->accounting->chartofaccount)) { + if ($user->hasRight('accounting', 'chartofaccount')) { print 'id.'">'.$langs->trans('Modify').''; } else { print ''.$langs->trans('Modify').''; } - if (!empty($user->rights->accounting->chartofaccount)) { + if ($user->hasRight('accounting', 'chartofaccount')) { print 'id.'">'.$langs->trans('Delete').''; } else { print ''.$langs->trans('Delete').''; diff --git a/htdocs/accountancy/admin/categories_list.php b/htdocs/accountancy/admin/categories_list.php index c0439445261..ea613ea38cd 100644 --- a/htdocs/accountancy/admin/categories_list.php +++ b/htdocs/accountancy/admin/categories_list.php @@ -111,7 +111,7 @@ $tabrowid[32] = ""; // Condition to show dictionary in setup page $tabcond = array(); -$tabcond[32] = !empty($conf->accounting->enabled); +$tabcond[32] = isModEnabled('accounting'); // List of help for fields $tabhelp = array(); @@ -875,7 +875,7 @@ function fieldListAccountingCategories($fieldlist, $obj = '', $tabname = '', $co $formadmin = new FormAdmin($db); $formcompany = new FormCompany($db); - if (!empty($conf->accounting->enabled)) { + if (isModEnabled('accounting')) { $formaccounting = new FormAccounting($db); } diff --git a/htdocs/accountancy/admin/defaultaccounts.php b/htdocs/accountancy/admin/defaultaccounts.php index 895437ab58b..bfc1fd29316 100644 --- a/htdocs/accountancy/admin/defaultaccounts.php +++ b/htdocs/accountancy/admin/defaultaccounts.php @@ -81,22 +81,22 @@ $list_account[] = '---Others---'; $list_account[] = 'ACCOUNTING_VAT_BUY_ACCOUNT'; $list_account[] = 'ACCOUNTING_VAT_SOLD_ACCOUNT'; $list_account[] = 'ACCOUNTING_VAT_PAY_ACCOUNT'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled('banque')) { $list_account[] = 'ACCOUNTING_ACCOUNT_TRANSFER_CASH'; } -if (!empty($conf->don->enabled)) { +if (isModEnabled('don')) { $list_account[] = 'DONATION_ACCOUNTINGACCOUNT'; } -if (!empty($conf->adherent->enabled)) { +if (isModEnabled('adherent')) { $list_account[] = 'ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT'; } -if (!empty($conf->loan->enabled)) { +if (isModEnabled('loan')) { $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_CAPITAL'; $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INTEREST'; $list_account[] = 'LOAN_ACCOUNTING_ACCOUNT_INSURANCE'; } $list_account[] = 'ACCOUNTING_ACCOUNT_SUSPENSE'; -if (!empty($conf->societe->enabled)) { +if (isModEnabled('societe')) { $list_account[] = '---Deposits---'; } @@ -133,6 +133,12 @@ if ($action == 'update') { $error++; } + $constname = 'ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'; + $constvalue = GETPOST($constname, 'int'); + if (!dolibarr_set_const($db, $constname, $constvalue, 'chaine', 0, '', $conf->entity)) { + $error++; + } + if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); @@ -155,6 +161,20 @@ if ($action == 'setACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT') { } } +if ($action == 'setACCOUNTING_ACCOUNT_SUPPLIER_USE_AUXILIARY_ON_DEPOSIT') { + $setDisableAuxiliaryAccountOnSupplierDeposit = GETPOST('value', 'int'); + $res = dolibarr_set_const($db, "ACCOUNTING_ACCOUNT_SUPPLIER_USE_AUXILIARY_ON_DEPOSIT", $setDisableAuxiliaryAccountOnSupplierDeposit, 'yesno', 0, '', $conf->entity); + if (!($res > 0)) { + $error++; + } + + if (!$error) { + setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); + } else { + setEventMessages($langs->trans("Error"), null, 'mesgs'); + } +} + /* * View @@ -266,7 +286,7 @@ print $formaccounting->select_account(getDolGlobalString('ACCOUNTING_ACCOUNT_CUS print ''; print ''; -if (!empty($conf->societe->enabled) && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') != '-1') { +if (isModEnabled('societe') && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') && getDolGlobalString('ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT') != '-1') { print ''; print '' . img_picto('', 'bill', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnCustomerDeposit") . ''; if (getDolGlobalInt('ACCOUNTING_ACCOUNT_CUSTOMER_USE_AUXILIARY_ON_DEPOSIT')) { @@ -281,6 +301,33 @@ if (!empty($conf->societe->enabled) && getDolGlobalString('ACCOUNTING_ACCOUNT_CU print ''; } +// Supplier deposit account +print ''; +// Param +print ''; +print img_picto('', 'supplier_invoice', 'class="pictofixedwidth"') . $langs->trans('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'); +print ''; +// Value +print ''; // Do not force class=right, or it align also the content of the select box +print $formaccounting->select_account(getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT'), 'ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT', 1, '', 1, 1, 'minwidth100 maxwidth300 maxwidthonsmartphone', 'accounts'); +print ''; +print ''; + +if (isModEnabled('societe') && getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT') && getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT') != '-1') { + print ''; + print '' . img_picto('', 'supplier_invoice', 'class="pictofixedwidth"') . $langs->trans("UseAuxiliaryAccountOnSupplierDeposit") . ''; + if (getDolGlobalInt('ACCOUNTING_ACCOUNT_SUPPLIER_USE_AUXILIARY_ON_DEPOSIT')) { + print ''; + print img_picto($langs->trans("Activated"), 'switch_on', '', false, 0, 0, '', 'warning'); + print ''; + } else { + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print ''; + } + print ''; +} + print "\n"; print "
\n"; diff --git a/htdocs/accountancy/admin/fiscalyear.php b/htdocs/accountancy/admin/fiscalyear.php index 2eb77815b60..6a6135dad40 100644 --- a/htdocs/accountancy/admin/fiscalyear.php +++ b/htdocs/accountancy/admin/fiscalyear.php @@ -121,7 +121,7 @@ if ($result) { $i = 0; - $addbutton .= dolGetButtonTitle($langs->trans('NewFiscalYear'), '', 'fa fa-plus-circle', 'fiscalyear_card.php?action=create', '', $user->rights->accounting->fiscalyear->write); + $addbutton .= dolGetButtonTitle($langs->trans('NewFiscalYear'), '', 'fa fa-plus-circle', 'fiscalyear_card.php?action=create', '', $user->hasRight('accounting', 'fiscalyear', 'write')); $title = $langs->trans('AccountingPeriods'); diff --git a/htdocs/accountancy/admin/fiscalyear_card.php b/htdocs/accountancy/admin/fiscalyear_card.php index 2aa33f21645..f6e765caf13 100644 --- a/htdocs/accountancy/admin/fiscalyear_card.php +++ b/htdocs/accountancy/admin/fiscalyear_card.php @@ -299,7 +299,7 @@ if ($action == 'create') { /* * Action bar */ - if (!empty($user->rights->accounting->fiscalyear->write)) { + if ($user->hasRight('accounting', 'fiscalyear', 'write')) { print '
'; print ''.$langs->trans('Modify').''; diff --git a/htdocs/accountancy/admin/journals_list.php b/htdocs/accountancy/admin/journals_list.php index 39300579d5f..3ea90e283ce 100644 --- a/htdocs/accountancy/admin/journals_list.php +++ b/htdocs/accountancy/admin/journals_list.php @@ -123,7 +123,7 @@ $tabrowid[35] = ""; // Condition to show dictionary in setup page $tabcond = array(); -$tabcond[35] = !empty($conf->accounting->enabled); +$tabcond[35] = isModEnabled('accounting'); // List of help for fields $tabhelp = array(); diff --git a/htdocs/accountancy/admin/productaccount.php b/htdocs/accountancy/admin/productaccount.php index c8cb62cd7e0..9f86922aa5c 100644 --- a/htdocs/accountancy/admin/productaccount.php +++ b/htdocs/accountancy/admin/productaccount.php @@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; -if (!empty($conf->categorie->enabled)) { +if (isModEnabled('categorie')) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; } @@ -42,7 +42,7 @@ if (!empty($conf->categorie->enabled)) { $langs->loadLangs(array("companies", "compta", "accountancy", "products")); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if (empty($user->rights->accounting->bind->write)) { @@ -522,7 +522,7 @@ if ($resql) { // Filter on categories $moreforfilter = ''; - if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { + if (isModEnabled('categorie') && $user->hasRight('categorie', 'lire')) { $moreforfilter .= '
'; $moreforfilter .= img_picto($langs->trans('Categories'), 'category', 'class="pictofixedwidth"'); $categoriesProductArr = $form->select_all_categories(Categorie::TYPE_PRODUCT, '', '', 64, 0, 1); @@ -533,7 +533,7 @@ if ($resql) { } //Show/hide child products. Hidden by default - if (!empty($conf->variants->enabled) && !empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD)) { + if (isModEnabled('variants') && !empty($conf->global->PRODUIT_ATTRIBUTES_HIDECHILD)) { $moreforfilter .= '
'; $moreforfilter .= ''; $moreforfilter .= ' '; diff --git a/htdocs/accountancy/bookkeeping/balance.php b/htdocs/accountancy/bookkeeping/balance.php index 7a65fa0ffaa..324c9c767b4 100644 --- a/htdocs/accountancy/bookkeeping/balance.php +++ b/htdocs/accountancy/bookkeeping/balance.php @@ -1,7 +1,7 @@ * Copyright (C) 2016 Florian Henry - * Copyright (C) 2016-2021 Alexandre Spangaro + * Copyright (C) 2016-2022 Alexandre Spangaro * Copyright (C) 2018 Frédéric France * * This program is free software; you can redistribute it and/or modify @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; $langs->loadLangs(array("accountancy", "compta")); $action = GETPOST('action', 'aZ09'); +$optioncss = GETPOST('optioncss', 'alpha'); $contextpage = GETPOST('contextpage', 'aZ09'); // Load variable for pagination @@ -142,7 +143,7 @@ if (!empty($search_ledger_code)) { } } -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -158,7 +159,8 @@ if (empty($user->rights->accounting->mouvements->lire)) { * Action */ -$parameters = array('socid'=>$socid); +$parameters = array(); +$arrayfields = 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'); diff --git a/htdocs/accountancy/bookkeeping/card.php b/htdocs/accountancy/bookkeeping/card.php index 7c8c0dca547..c2071e76cea 100644 --- a/htdocs/accountancy/bookkeeping/card.php +++ b/htdocs/accountancy/bookkeeping/card.php @@ -79,7 +79,7 @@ if (!empty($update)) { $object = new BookKeeping($db); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index 4bc6d50de89..aa5e8dfc257 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -197,7 +197,7 @@ $arrayfields = array( 't.date_creation'=>array('label'=>$langs->trans("DateCreation"), 'checked'=>0), 't.tms'=>array('label'=>$langs->trans("DateModification"), 'checked'=>0), 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1), - 't.date_validated'=>array('label'=>$langs->trans("DateValidationAndLock"), 'checked'=>1), + 't.date_validated'=>array('label'=>$langs->trans("DateValidationAndLock"), 'checked'=>1, 'enabled'=>!getDolGlobalString("ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")), 't.import_key'=>array('label'=>$langs->trans("ImportId"), 'checked'=>0, 'position'=>1100), ); @@ -214,7 +214,7 @@ if (empty($listofformat[$formatexportset])) { $error = 0; -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -769,16 +769,18 @@ if ($action == 'export_file') { $form_question['separator'] = array('name'=>'separator', 'type'=>'separator'); - // If 0 or not set, we NOT check by default. - $checked = (isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE) || !empty($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE)); - $form_question['notifiedvalidationdate'] = array( - 'name' => 'notifiedvalidationdate', - 'type' => 'checkbox', - 'label' => $langs->trans('NotifiedValidationDate'), - 'value' => $checked, - ); + if (!getDolGlobalString("ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")) { + // If 0 or not set, we NOT check by default. + $checked = (isset($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE) || !empty($conf->global->ACCOUNTING_DEFAULT_NOT_NOTIFIED_VALIDATION_DATE)); + $form_question['notifiedvalidationdate'] = array( + 'name' => 'notifiedvalidationdate', + 'type' => 'checkbox', + 'label' => $langs->trans('NotifiedValidationDate', $langs->transnoentitiesnoconv("MenuAccountancyClosure")), + 'value' => $checked, + ); - $form_question['separator2'] = array('name'=>'separator2', 'type'=>'separator'); + $form_question['separator2'] = array('name'=>'separator2', 'type'=>'separator'); + } $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").' ('.$listofformat[$formatexportset].')', $langs->trans('ConfirmExportFile'), 'export_fileconfirm', $form_question, '', 1, 300, 600); } @@ -1131,6 +1133,10 @@ $line = new BookKeepingLine(); // -------------------------------------------------------------------- $i = 0; $totalarray = array(); +$totalarray['nbfield'] = 0; +$total_debit = 0; +$total_credit = 0; + while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); if (empty($obj)) { diff --git a/htdocs/accountancy/bookkeeping/listbyaccount.php b/htdocs/accountancy/bookkeeping/listbyaccount.php index d638a7c0c84..0bd1c06aab8 100644 --- a/htdocs/accountancy/bookkeeping/listbyaccount.php +++ b/htdocs/accountancy/bookkeeping/listbyaccount.php @@ -166,7 +166,7 @@ $arrayfields = array( 't.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1), 't.lettering_code'=>array('label'=>$langs->trans("LetteringCode"), 'checked'=>1), 't.date_export'=>array('label'=>$langs->trans("DateExport"), 'checked'=>1), - 't.date_validated'=>array('label'=>$langs->trans("DateValidation"), 'checked'=>1), + 't.date_validated'=>array('label'=>$langs->trans("DateValidation"), 'checked'=>1, 'enabled'=>!getDolGlobalString("ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")), 't.import_key'=>array('label'=>$langs->trans("ImportId"), 'checked'=>0, 'position'=>1100), ); @@ -187,7 +187,7 @@ if ($search_date_end && empty($search_date_endyear)) { $search_date_endday = $tmparray['mday']; } -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/class/accountingaccount.class.php b/htdocs/accountancy/class/accountingaccount.class.php index 710443c9bad..bf487d47c2c 100644 --- a/htdocs/accountancy/class/accountingaccount.class.php +++ b/htdocs/accountancy/class/accountingaccount.class.php @@ -863,14 +863,18 @@ class AccountingAccount extends CommonObject if (!empty($buyer->code_compta_product)) { $code_t = $buyer->code_compta_product; $suggestedid = $accountingAccount['thirdparty']; - $suggestedaccountingaccountfor = 'thridparty'; + $suggestedaccountingaccountfor = 'thirdparty'; } } // Manage Deposit if ($factureDet->desc == "(DEPOSIT)" || $facture->type == $facture::TYPE_DEPOSIT) { $accountdeposittoventilated = new self($this->db); - $result = $accountdeposittoventilated->fetch('', $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT, 1); + if ($type=='customer') { + $result = $accountdeposittoventilated->fetch('', $conf->global->ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT, 1); + } elseif ($type=='supplier') { + $result = $accountdeposittoventilated->fetch('', $conf->global->ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT, 1); + } if ($result < 0) { return -1; } diff --git a/htdocs/accountancy/class/accountingjournal.class.php b/htdocs/accountancy/class/accountingjournal.class.php index d805838566f..9720399fb5e 100644 --- a/htdocs/accountancy/class/accountingjournal.class.php +++ b/htdocs/accountancy/class/accountingjournal.class.php @@ -281,7 +281,7 @@ class AccountingJournal extends CommonObject } $label_link = $this->code; - if ($withlabel) { + if ($withlabel && !empty($this->label)) { $label_link .= ' - '.($nourl ? '' : '').$langs->transnoentities($this->label).($nourl ? '' : ''); } @@ -429,7 +429,7 @@ class AccountingJournal extends CommonObject { global $conf, $langs; - if (empty($conf->asset->enabled)) { + if (!isModEnabled('asset')) { return array(); } @@ -867,7 +867,7 @@ class AccountingJournal extends CommonObject } } // - // if (!$error_for_line && !empty($conf->asset->enabled) && $this->nature == 1 && $bookkeeping->fk_doc > 0) { + // if (!$error_for_line && isModEnabled('asset') && $this->nature == 1 && $bookkeeping->fk_doc > 0) { // // Set last cumulative depreciation // require_once DOL_DOCUMENT_ROOT . '/asset/class/asset.class.php'; // $asset = new Asset($this->db); diff --git a/htdocs/accountancy/closure/index.php b/htdocs/accountancy/closure/index.php index f02eda61bf6..c4b5540fcc8 100644 --- a/htdocs/accountancy/closure/index.php +++ b/htdocs/accountancy/closure/index.php @@ -57,7 +57,7 @@ $search_date_end = dol_get_last_day($year_end, $month_end); $year_current = $year_start; // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -75,7 +75,7 @@ if (empty($user->rights->accounting->fiscalyear->write)) { $now = dol_now(); -if ($action == 'validate_movements_confirm' && !empty($user->rights->accounting->fiscalyear->write)) { +if ($action == 'validate_movements_confirm' && $user->hasRight('accounting', 'fiscalyear', 'write')) { $date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth', 'int'), GETPOST('date_startday', 'int'), GETPOST('date_startyear', 'int')); $date_end = dol_mktime(23, 59, 59, GETPOST('date_endmonth', 'int'), GETPOST('date_endday', 'int'), GETPOST('date_endyear', 'int')); @@ -112,6 +112,7 @@ if ($action == 'validate_movements_confirm' && !empty($user->rights->accounting- } } + /* * View */ @@ -178,20 +179,40 @@ for ($i = 1; $i <= 12; $i++) { } print ''.$langs->trans("Total").''; -$sql = "SELECT COUNT(b.rowid) as detail,"; -for ($i = 1; $i <= 12; $i++) { - $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1; - if ($j > 12) { - $j -= 12; +if (getDolGlobalString("ACCOUNTANCY_DISABLE_CLOSURE_LINE_BY_LINE")) { + // TODO Analyse is done by finding record not into a closed period + $sql = "SELECT COUNT(b.rowid) as detail,"; + for ($i = 1; $i <= 12; $i++) { + $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1; + if ($j > 12) { + $j -= 12; + } + $sql .= " SUM(".$db->ifsql("MONTH(b.doc_date)=".$j, "1", "0").") AS month".str_pad($j, 2, "0", STR_PAD_LEFT).","; } - $sql .= " SUM(".$db->ifsql("MONTH(b.doc_date)=".$j, "1", "0").") AS month".str_pad($j, 2, "0", STR_PAD_LEFT).","; + $sql .= " COUNT(b.rowid) as total"; + $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b"; + $sql .= " WHERE b.doc_date >= '".$db->idate($search_date_start)."'"; + $sql .= " AND b.doc_date <= '".$db->idate($search_date_end)."'"; + $sql .= " AND b.entity IN (".getEntity('bookkeeping', 0).")"; // We don't share object for accountancy + // Loop on each closed period + $sql .= " AND b.doc_date BETWEEN 0 AND 0"; +} else { + // Analyse closed record using the unitary flag/date on each record + $sql = "SELECT COUNT(b.rowid) as detail,"; + for ($i = 1; $i <= 12; $i++) { + $j = $i + ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1) - 1; + if ($j > 12) { + $j -= 12; + } + $sql .= " SUM(".$db->ifsql("MONTH(b.doc_date)=".$j, "1", "0").") AS month".str_pad($j, 2, "0", STR_PAD_LEFT).","; + } + $sql .= " COUNT(b.rowid) as total"; + $sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b"; + $sql .= " WHERE b.doc_date >= '".$db->idate($search_date_start)."'"; + $sql .= " AND b.doc_date <= '".$db->idate($search_date_end)."'"; + $sql .= " AND b.entity IN (".getEntity('bookkeeping', 0).")"; // We don't share object for accountancy + $sql .= " AND date_validated IS NULL"; } -$sql .= " COUNT(b.rowid) as total"; -$sql .= " FROM ".MAIN_DB_PREFIX."accounting_bookkeeping as b"; -$sql .= " WHERE b.doc_date >= '".$db->idate($search_date_start)."'"; -$sql .= " AND b.doc_date <= '".$db->idate($search_date_end)."'"; -$sql .= " AND b.entity IN (".getEntity('bookkeeping', 0).")"; // We don't share object for accountancy -$sql .= " AND date_validated IS NULL"; dol_syslog('htdocs/accountancy/closure/index.php', LOG_DEBUG); $resql = $db->query($sql); diff --git a/htdocs/accountancy/customer/card.php b/htdocs/accountancy/customer/card.php index 296d6729301..0b3435ecb92 100644 --- a/htdocs/accountancy/customer/card.php +++ b/htdocs/accountancy/customer/card.php @@ -38,7 +38,7 @@ $codeventil = GETPOST('codeventil', 'int'); $id = GETPOST('id', 'int'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/customer/index.php b/htdocs/accountancy/customer/index.php index 0eca61c72c1..06db5cedd0e 100644 --- a/htdocs/accountancy/customer/index.php +++ b/htdocs/accountancy/customer/index.php @@ -40,7 +40,7 @@ $validatemonth = GETPOST('validatemonth', 'int'); $validateyear = GETPOST('validateyear', 'int'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -77,7 +77,7 @@ $action = GETPOST('action', 'aZ09'); $chartaccountcode = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -622,7 +622,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL > 0) { // This part of code looks strange print '
'; - if (!empty($conf->margin->enabled)) { + if (isModEnabled('margin')) { print "
\n"; print '
'; print ''; diff --git a/htdocs/accountancy/customer/lines.php b/htdocs/accountancy/customer/lines.php index 4a8080ab8b4..469f29ad3c7 100644 --- a/htdocs/accountancy/customer/lines.php +++ b/htdocs/accountancy/customer/lines.php @@ -85,7 +85,7 @@ if (!$sortorder) { } // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/customer/list.php b/htdocs/accountancy/customer/list.php index b2a127e86a4..4038bb4b5bc 100644 --- a/htdocs/accountancy/customer/list.php +++ b/htdocs/accountancy/customer/list.php @@ -104,7 +104,7 @@ $accountingAccount = new AccountingAccount($db); $chartaccountcode = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/expensereport/card.php b/htdocs/accountancy/expensereport/card.php index 7c2310ccce4..0255e019138 100644 --- a/htdocs/accountancy/expensereport/card.php +++ b/htdocs/accountancy/expensereport/card.php @@ -42,7 +42,7 @@ $codeventil = GETPOST('codeventil', 'int'); $id = GETPOST('id', 'int'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/expensereport/index.php b/htdocs/accountancy/expensereport/index.php index 08657fe7a62..d0b25bdffd2 100644 --- a/htdocs/accountancy/expensereport/index.php +++ b/htdocs/accountancy/expensereport/index.php @@ -58,7 +58,7 @@ $year_current = $year_start; $action = GETPOST('action', 'aZ09'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/expensereport/lines.php b/htdocs/accountancy/expensereport/lines.php index 005783ed7a8..926d03f9235 100644 --- a/htdocs/accountancy/expensereport/lines.php +++ b/htdocs/accountancy/expensereport/lines.php @@ -79,7 +79,7 @@ if (!$sortorder) { } // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/expensereport/list.php b/htdocs/accountancy/expensereport/list.php index 880af769183..7a02d0b4564 100644 --- a/htdocs/accountancy/expensereport/list.php +++ b/htdocs/accountancy/expensereport/list.php @@ -97,7 +97,7 @@ $accounting = new AccountingAccount($db); $chartaccountcode = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/index.php b/htdocs/accountancy/index.php index 99ae0bd845b..911197994c1 100644 --- a/htdocs/accountancy/index.php +++ b/htdocs/accountancy/index.php @@ -39,17 +39,17 @@ if ($user->socid > 0) { accessforbidden(); } /* -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if (empty($user->rights->accounting->mouvements->lire)) { accessforbidden(); } */ -if (empty($conf->comptabilite->enabled) && empty($conf->accounting->enabled) && empty($conf->asset->enabled) && empty($conf->intracommreport->enabled)) { +if (!isModEnabled('comptabilite') && !isModEnabled('accounting') && !isModEnabled('asset') && !isModEnabled('intracommreport')) { accessforbidden(); } -if (empty($user->rights->compta->resultat->lire) && empty($user->rights->accounting->comptarapport->lire) && empty($user->rights->accounting->mouvements->lire) && empty($user->rights->asset->read) && empty($user->rights->intracommreport->read)) { +if (!$user->hasRight('compta', 'resultat', 'lire') && !$user->hasRight('accounting', 'comptarapport', 'lire') && !$user->hasRight('accounting', 'mouvements', 'lire') && !$user->hasRight('asset', 'read') && !$user->hasRight('intracommreport', 'read')) { accessforbidden(); } @@ -86,7 +86,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print ''.$langs->trans("SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices")."\n"; print "
"; -} elseif (!empty($conf->accounting->enabled)) { +} elseif (isModEnabled('accounting')) { $step = 0; $resultboxes = FormOther::getBoxesArea($user, "27"); // Load $resultboxes (selectboxlist + boxactivated + boxlista + boxlistb) @@ -117,7 +117,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print '
'; // hideobject is to start hidden print "
\n"; print ''.$langs->trans("AccountancyAreaDescIntro")."
\n"; - if (!empty($user->rights->accounting->chartofaccount)) { + if ($user->hasRight('accounting', 'chartofaccount')) { print "
\n"; print "
\n"; print load_fiche_titre(' '.$langs->trans("AccountancyAreaDescActionOnce"), '', '')."\n"; @@ -165,7 +165,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print $s; print "
\n"; - if (!empty($conf->tax->enabled)) { + if (isModEnabled('tax')) { $textlink = ''.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuTaxAccounts").''; $step++; $s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescContrib", $step, '{s}'); @@ -173,7 +173,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print $s; print "
\n"; } - if (!empty($conf->expensereport->enabled)) { // TODO Move this in the default account page because this is only one accounting account per purpose, not several. + if (isModEnabled('expensereport')) { // TODO Move this in the default account page because this is only one accounting account per purpose, not several. $step++; $s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescExpenseReport", $step, '{s}'); $s = str_replace('{s}', ''.$langs->transnoentitiesnoconv("Setup").' - '.$langs->transnoentitiesnoconv("MenuExpenseReportAccounts").'', $s); @@ -212,7 +212,7 @@ if (!empty($conf->global->INVOICE_USE_SITUATION) && $conf->global->INVOICE_USE_S print $s; print "
\n"; - if (!empty($conf->expensereport->enabled) || !empty($conf->deplacement->enabled)) { + if (isModEnabled('expensereport') || isModEnabled('deplacement')) { $step++; $s = img_picto('', 'puce').' '.$langs->trans("AccountancyAreaDescBind", chr(64 + $step), $langs->transnoentitiesnoconv("ExpenseReports"), '{s}')."\n"; $s = str_replace('{s}', ''.$langs->transnoentitiesnoconv("TransferInAccounting").' - '.$langs->transnoentitiesnoconv("ExpenseReportsVentilation").'', $s); diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 27ffb681ae0..f3049206389 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -83,7 +83,7 @@ $now = dol_now(); $action = GETPOST('action', 'aZ09'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/journal/expensereportsjournal.php b/htdocs/accountancy/journal/expensereportsjournal.php index c80586fa3d0..d38e49c390e 100644 --- a/htdocs/accountancy/journal/expensereportsjournal.php +++ b/htdocs/accountancy/journal/expensereportsjournal.php @@ -58,7 +58,7 @@ if ($in_bookkeeping == '') { $now = dol_now(); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -328,7 +328,7 @@ if ($action == 'writebookkeeping') { foreach ($arrayofvat[$key] as $k => $mt) { if ($mt) { - $accountingaccount->fetch($k, null, true); // TODO Use a cache for label + $accountingaccount->fetch(null, $k, true); // TODO Use a cache for label $account_label = $accountingaccount->label; // get compte id and label diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index 7c0a8b90f7d..34faba7e27c 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -61,7 +61,7 @@ $hookmanager->initHooks(array('purchasesjournal')); $parameters = array(); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -405,8 +405,18 @@ if ($action == 'writebookkeeping') { $bookkeeping->fk_docdet = 0; // Useless, can be several lines that are source of this record to add $bookkeeping->thirdparty_code = $companystatic->code_fournisseur; - $bookkeeping->subledger_account = ''; - $bookkeeping->subledger_label = ''; + if (!empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER_USE_AUXILIARY_ON_DEPOSIT)) { + if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT')) { + $bookkeeping->subledger_account = $tabcompany[$key]['code_compta']; + $bookkeeping->subledger_label = $tabcompany[$key]['name']; + } else { + $bookkeeping->subledger_account = ''; + $bookkeeping->subledger_label = ''; + } + } else { + $bookkeeping->subledger_account = ''; + $bookkeeping->subledger_label = ''; + } $bookkeeping->numero_compte = $k; $bookkeeping->label_compte = $label_account; @@ -457,7 +467,7 @@ if ($action == 'writebookkeeping') { foreach ($arrayofvat[$key] as $k => $mt) { if ($mt) { - $accountingaccount->fetch($k, null, true); // TODO Use a cache for label + $accountingaccount->fetch(null, $k, true); // TODO Use a cache for label $label_account = $accountingaccount->label; $bookkeeping = new BookKeeping($db); @@ -952,6 +962,13 @@ if (empty($action) || $action == 'view') { print ""; // Subledger account print "
'; $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 426bc6d7795..107dda05f4a 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -63,7 +63,7 @@ $hookmanager->initHooks(array('sellsjournal')); $parameters = array(); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -479,7 +479,7 @@ if ($action == 'writebookkeeping') { foreach ($arrayofvat[$key] as $k => $mt) { if ($mt) { - $accountingaccount->fetch($k, null, true); // TODO Use a cache for label + $accountingaccount->fetch(null, $k, true); // TODO Use a cache for label $label_account = $accountingaccount->label; $bookkeeping = new BookKeeping($db); diff --git a/htdocs/accountancy/journal/variousjournal.php b/htdocs/accountancy/journal/variousjournal.php index 49b4fc2c98c..d737925f2c3 100644 --- a/htdocs/accountancy/journal/variousjournal.php +++ b/htdocs/accountancy/journal/variousjournal.php @@ -83,7 +83,7 @@ if (!is_array($journal_data)) { } // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { @@ -236,7 +236,7 @@ if ($some_mandatory_steps_of_setup_were_not_done) { print ' : ' . $langs->trans("AccountancyAreaDescMisc", 4, '' . $langs->transnoentitiesnoconv("MenuAccountancy") . '-' . $langs->transnoentitiesnoconv("Setup") . "-" . $langs->transnoentitiesnoconv("MenuDefaultAccounts") . ''); print ''; } -print '
'; +print '
'; if (!empty($conf->global->ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL) && $in_bookkeeping == 'notyet') { print ''; } diff --git a/htdocs/accountancy/supplier/card.php b/htdocs/accountancy/supplier/card.php index 05d32d0cec5..306b88d11ea 100644 --- a/htdocs/accountancy/supplier/card.php +++ b/htdocs/accountancy/supplier/card.php @@ -42,7 +42,7 @@ $codeventil = GETPOST('codeventil', 'int'); $id = GETPOST('id', 'int'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/supplier/lines.php b/htdocs/accountancy/supplier/lines.php index c142361155d..1edbe83eefb 100644 --- a/htdocs/accountancy/supplier/lines.php +++ b/htdocs/accountancy/supplier/lines.php @@ -89,7 +89,7 @@ if (!$sortorder) { $formaccounting = new FormAccounting($db); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/accountancy/supplier/list.php b/htdocs/accountancy/supplier/list.php index f274a5432dc..d14beb84cc2 100644 --- a/htdocs/accountancy/supplier/list.php +++ b/htdocs/accountancy/supplier/list.php @@ -106,7 +106,7 @@ $accountingAccount = new AccountingAccount($db); $chartaccountcode = dol_getIdFromCode($db, $conf->global->CHARTOFACCOUNTS, 'accounting_system', 'rowid', 'pcg_version'); // Security check -if (empty($conf->accounting->enabled)) { +if (!isModEnabled('accounting')) { accessforbidden(); } if ($user->socid > 0) { diff --git a/htdocs/adherents/admin/member.php b/htdocs/adherents/admin/member.php index 80092ea96a5..2ffed8b8d97 100644 --- a/htdocs/adherents/admin/member.php +++ b/htdocs/adherents/admin/member.php @@ -111,7 +111,7 @@ if ($action == 'set_default') { if (isModEnabled('facture')) { $res4 = dolibarr_set_const($db, 'ADHERENT_VAT_FOR_SUBSCRIPTIONS', GETPOST('ADHERENT_VAT_FOR_SUBSCRIPTIONS', 'alpha'), 'chaine', 0, '', $conf->entity); $res5 = dolibarr_set_const($db, 'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', GETPOST('ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $res6 = dolibarr_set_const($db, 'ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', GETPOST('ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS', 'alpha'), 'chaine', 0, '', $conf->entity); } } @@ -238,13 +238,13 @@ print "
\n"; // Insert subscription into bank account print ''; $arraychoices = array('0'=>$langs->trans("None")); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { $arraychoices['bankdirect'] = $langs->trans("MoreActionBankDirect"); } -if (!empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { +if (isModEnabled("banque") && isModEnabled("societe") && isModEnabled('facture')) { $arraychoices['invoiceonly'] = $langs->trans("MoreActionInvoiceOnly"); } -if (!empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { +if (isModEnabled("banque") && isModEnabled("societe") && isModEnabled('facture')) { $arraychoices['bankviainvoice'] = $langs->trans("MoreActionBankViaInvoice"); } print '\n"; // Use vat for invoice creation if (isModEnabled('facture')) { print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; @@ -269,7 +269,7 @@ if (isModEnabled('facture')) { } print "\n"; - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { print ''; print ''; print ''; - print ''; + print ''; print "\n"; // Force Type $adht = new AdherentType($db); print '\n"; @@ -205,21 +205,21 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) { // Amount print '\n"; // Can edit print '\n"; // Jump to an online payment page print ''; print ''; - if (!empty($conf->socialnetworks->enabled)) { + if (isModEnabled('socialnetworks')) { foreach ($socialnetworks as $key => $value) { if (!$value['active']) { break; @@ -1122,7 +1110,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print "\n"; // Categories - if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + if (isModEnabled('categorie') && !empty($user->rights->categorie->lire)) { print ''; } - // Morphy - $morphys["phy"] = $langs->trans("Physical"); - $morphys["mor"] = $langs->trans("Moral"); - print '"; // Type print '"; + // Morphy + $morphys["phy"] = $langs->trans("Physical"); + $morphys["mor"] = $langs->trans("Moral"); + print '"; + // Company print ''; @@ -1342,7 +1331,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''; print ''; - if (!empty($conf->socialnetworks->enabled)) { + if (isModEnabled('socialnetworks')) { foreach ($socialnetworks as $key => $value) { if (!$value['active']) { break; @@ -1356,13 +1345,21 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print $form->selectDate(($object->birth ? $object->birth : -1), 'birth', '', '', 1, 'formsoc'); print "\n"; + // Default language + if (!empty($conf->global->MAIN_MULTILANGS)) { + print ''; + print ''; + } + // Public profil print "\n"; // Categories - if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + if (isModEnabled('categorie') && !empty($user->rights->categorie->lire)) { print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print '\n\n"; $found++; -if (!empty($conf->reception->enabled)) { +if (isModEnabled("reception")) { print ''; print ''; print ''; print ''; print '\n"; } -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { print ''; print ''; print ''."\n"; print ''; print ''; print '"; print "\n"; diff --git a/htdocs/admin/stocktransfer.php b/htdocs/admin/stocktransfer.php index 0e504ec26f1..099312ef491 100644 --- a/htdocs/admin/stocktransfer.php +++ b/htdocs/admin/stocktransfer.php @@ -78,9 +78,10 @@ if ($action == 'updateMask') { $maskconststocktransfer = GETPOST('maskconststocktransfer', 'alpha'); $maskstocktransfer = GETPOST('maskStockTransfer', 'alpha'); - if ($maskconststocktransfer) $res = dolibarr_set_const($db, $maskconststocktransfer, $maskstocktransfer, 'chaine', 0, '', $conf->entity); - - if (!$res > 0) $error++; + if ($maskconststocktransfer) { + $res = dolibarr_set_const($db, $maskconststocktransfer, $maskstocktransfer, 'chaine', 0, '', $conf->entity); + if ($res <= 0) $error++; + } if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); diff --git a/htdocs/admin/supplier_proposal.php b/htdocs/admin/supplier_proposal.php index bb0617c6700..593ad13ff82 100644 --- a/htdocs/admin/supplier_proposal.php +++ b/htdocs/admin/supplier_proposal.php @@ -492,13 +492,13 @@ print "\n"; print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled('banque')) { print ''; -if (!empty($conf->loghandlers['mod_syslog_file']) && !empty($conf->cron->enabled)) { +if (!empty($conf->loghandlers['mod_syslog_file']) && isModEnabled('cron')) { print ''; - print ''; } diff --git a/htdocs/admin/system/constall.php b/htdocs/admin/system/constall.php index 96cb98809ef..9a27feb3d7a 100644 --- a/htdocs/admin/system/constall.php +++ b/htdocs/admin/system/constall.php @@ -89,6 +89,7 @@ $configfileparameters = array( 'separator', '?dolibarr_mailing_limit_sendbyweb', '?dolibarr_mailing_limit_sendbycli', + '?dolibarr_mailing_limit_sendbyday', '?dolibarr_strict_mode' ); $configfilelib = array( diff --git a/htdocs/admin/system/database-tables.php b/htdocs/admin/system/database-tables.php index 72e8db6bb4e..457d71d98d9 100644 --- a/htdocs/admin/system/database-tables.php +++ b/htdocs/admin/system/database-tables.php @@ -106,6 +106,14 @@ if (!$base) { print ''; print "\n"; + $arrayoffilesrich = dol_dir_list(DOL_DOCUMENT_ROOT.'/install/mysql/tables/', 'files', 0, '\.sql$'); + $arrayoffiles = array(); + foreach ($arrayoffilesrich as $value) { + //print $shortsqlfilename.' '; + $shortsqlfilename = preg_replace('/\-[a-z]+\./', '.', $value['name']); + $arrayoffiles[] = $shortsqlfilename; + } + $sql = "SHOW TABLE STATUS"; $resql = $db->query($sql); @@ -119,7 +127,8 @@ if (!$base) { print ''; print ''; print ''; -if (! empty($conf->product->enabled)) { +if (isModEnabled('product')) { print ''; print ''; print ''; -print '
"; + if (!empty($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER_USE_AUXILIARY_ON_DEPOSIT)) { + if ($k == getDolGlobalString('ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT')) { + print length_accounta($tabcompany[$key]['code_compta']); + } + } elseif (($accountoshow == "") || $accountoshow == 'NotDefined') { + print '' . $langs->trans("ThirdpartyAccountNotDefined") . ''; + } print '
'.$langs->trans("MoreActionsOnSubscription").''; @@ -258,7 +258,7 @@ print "
'.$langs->trans("VATToUseForSubscriptions").''; print $form->selectarray('ADHERENT_VAT_FOR_SUBSCRIPTIONS', array('0'=>$langs->trans("NoVatOnSubscription"), 'defaultforfoundationcountry'=>$langs->trans("Default")), (empty($conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS) ? '0' : $conf->global->ADHERENT_VAT_FOR_SUBSCRIPTIONS), 0); print '
'.$langs->trans("ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS").''; $selected = (empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) ? '' : $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS); diff --git a/htdocs/adherents/admin/website.php b/htdocs/adherents/admin/website.php index 6199991f29c..884c6e67be2 100644 --- a/htdocs/adherents/admin/website.php +++ b/htdocs/adherents/admin/website.php @@ -178,14 +178,14 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) { print '
'.$langs->trans("Parameter").''.$langs->trans("Value").''.$langs->trans("Value").'
'; print $langs->trans("ForceMemberType"); - print ''; + print ''; $listofval = array(); $listofval += $adht->liste_array(1); $forcetype = empty($conf->global->MEMBER_NEWFORM_FORCETYPE) ? -1 : $conf->global->MEMBER_NEWFORM_FORCETYPE; @@ -197,7 +197,7 @@ if (!empty($conf->global->MEMBER_ENABLE_PUBLIC)) { $morphys["mor"] = $langs->trans("Moral"); print '
'; print $langs->trans("ForceMemberNature"); - print ''; + print ''; $forcenature = empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY) ? 0 : $conf->global->MEMBER_NEWFORM_FORCEMORPHY; print $form->selectarray("MEMBER_NEWFORM_FORCEMORPHY", $morphys, $forcenature, 1); print "
'; print $langs->trans("DefaultAmount"); - print ''; - print ''; + print ''; + print ''; print "
'; print $langs->trans("CanEditAmount"); - print ''; + print ''; print $form->selectyesno("MEMBER_NEWFORM_EDITAMOUNT", (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) ? $conf->global->MEMBER_NEWFORM_EDITAMOUNT : 0), 1); print "
'; print $langs->trans("MEMBER_NEWFORM_PAYONLINE"); - print ''; + print ''; $listofval = array(); $listofval['-1'] = $langs->trans('No'); $listofval['all'] = $langs->trans('Yes').' ('.$langs->trans("VisitorCanChooseItsPaymentMode").')'; diff --git a/htdocs/adherents/agenda.php b/htdocs/adherents/agenda.php index 5aeb3a281cf..204ba1b8f20 100644 --- a/htdocs/adherents/agenda.php +++ b/htdocs/adherents/agenda.php @@ -130,7 +130,7 @@ if ($object->id > 0) { llxHeader("", $title, $help_url); - if (!empty($conf->notification->enabled)) { + if (isModEnabled('notification')) { $langs->load("mails"); } $head = member_prepare_head($object); diff --git a/htdocs/adherents/canvas/actions_adherentcard_common.class.php b/htdocs/adherents/canvas/actions_adherentcard_common.class.php index 265931c0265..502249907e8 100644 --- a/htdocs/adherents/canvas/actions_adherentcard_common.class.php +++ b/htdocs/adherents/canvas/actions_adherentcard_common.class.php @@ -179,7 +179,7 @@ abstract class ActionsAdherentCardCommon if ($action == 'view' || $action == 'edit' || $action == 'delete') { // Emailing - if (!empty($conf->mailing->enabled)) { + if (isModEnabled('mailing')) { $langs->load("mails"); $this->tpl['nb_emailing'] = $this->object->getNbOfEMailings(); } diff --git a/htdocs/adherents/card.php b/htdocs/adherents/card.php index 0096ba9a285..63527452fe1 100644 --- a/htdocs/adherents/card.php +++ b/htdocs/adherents/card.php @@ -40,6 +40,7 @@ require_once DOL_DOCUMENT_ROOT.'/adherents/class/subscription.class.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; @@ -57,7 +58,7 @@ $userid = GETPOST('userid', 'int'); $socid = GETPOST('socid', 'int'); $ref = GETPOST('ref', 'alpha'); -if (!empty($conf->mailmanspip->enabled)) { +if (isModEnabled('mailmanspip')) { include_once DOL_DOCUMENT_ROOT.'/mailmanspip/class/mailmanspip.class.php'; $langs->load('mailmanspip'); @@ -277,7 +278,7 @@ if (empty($reshook)) { } // Create new object if ($result > 0 && !$error) { - $object->oldcopy = clone $object; + $object->oldcopy = dol_clone($object); // Change values $object->civility_id = trim(GETPOST("civility_id", 'alphanohtml')); @@ -311,8 +312,8 @@ if (empty($reshook)) { //$object->twitter = trim(GETPOST("twitter", 'alpha')); //$object->facebook = trim(GETPOST("facebook", 'alpha')); //$object->linkedin = trim(GETPOST("linkedin", 'alpha')); - $object->birth = $birthdate; - + $object->birth = $birthdate; + $object->default_lang = GETPOST('default_lang', 'alpha'); $object->typeid = GETPOST("typeid", 'int'); //$object->note = trim(GETPOST("comment","alpha")); $object->morphy = GETPOST("morphy", 'alpha'); @@ -457,6 +458,7 @@ if (empty($reshook)) { $userid = GETPOST("userid", 'int'); $socid = GETPOST("socid", 'int'); + $default_lang = GETPOST('default_lang', 'alpha'); $object->civility_id = $civility_id; $object->firstname = $firstname; @@ -473,7 +475,7 @@ if (empty($reshook)) { $object->phone_perso = $phone_perso; $object->phone_mobile = $phone_mobile; $object->socialnetworks = array(); - if (!empty($conf->socialnetworks->enabled)) { + if (isModEnabled('socialnetworks')) { foreach ($socialnetworks as $key => $value) { if (GETPOSTISSET($key) && GETPOST($key, 'alphanohtml') != '') { $object->socialnetworks[$key] = GETPOST("member_".$key, 'alphanohtml'); @@ -498,7 +500,7 @@ if (empty($reshook)) { $object->user_id = $userid; $object->socid = $socid; $object->public = $public; - + $object->default_lang = $default_lang; // Fill array 'array_options' with data from add form $ret = $extrafields->setOptionalsFromPost(null, $object); if ($ret < 0) { @@ -580,36 +582,15 @@ if (empty($reshook)) { $id = $object->id; } else { $db->rollback(); - - if ($object->error) { - setEventMessages($object->error, $object->errors, 'errors'); - } else { - setEventMessages($object->error, $object->errors, 'errors'); - } + setEventMessages($object->error, $object->errors, 'errors'); } + // Auto-create thirdparty on member creation if (!empty($conf->global->ADHERENT_DEFAULT_CREATE_THIRDPARTY)) { if ($result > 0) { - // User creation + // Create third party out of a member $company = new Societe($db); - - $companyalias = ''; - $fullname = $object->getFullName($langs); - - if ($object->morphy == 'mor') { - $companyname = $object->company; - if (!empty($fullname)) { - $companyalias = $fullname; - } - } else { - $companyname = $fullname; - if (!empty($object->company)) { - $companyalias = $object->company; - } - } - - $result = $company->create_from_member($object, $companyname, $companyalias); - + $result = $company->create_from_member($object); if ($result < 0) { $langs->load("errors"); setEventMessages($langs->trans($company->error), null, 'errors'); @@ -621,6 +602,11 @@ if (empty($reshook)) { } } $action = ($result < 0 || !$error) ? '' : 'create'; + + if (!$error && $backtopage) { + header("Location: ".$backtopage); + exit; + } } if ($user->rights->adherent->supprimer && $action == 'confirm_delete' && $confirm == 'yes') { @@ -677,7 +663,8 @@ if (empty($reshook)) { if (empty($labeltouse) || (int) $labeltouse === -1) { //fallback on the old configuration. - setEventMessages('WarningMandatorySetupNotComplete', null, 'errors'); + $langs->load("errors"); + setEventMessages(''.$langs->trans('WarningMandatorySetupNotComplete').'', null, 'errors'); $error++; } else { $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object); @@ -893,6 +880,7 @@ if (empty($reshook)) { $form = new Form($db); $formfile = new FormFile($db); +$formadmin = new FormAdmin($db); $formcompany = new FormCompany($db); $title = $langs->trans("Member")." - ".$langs->trans("Card"); @@ -1101,7 +1089,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print '
'.$langs->trans("PhoneMobile").''.img_picto('', 'object_phoning_mobile', 'class="pictofixedwidth"').'
'.$form->editfieldkey("Categories", 'memcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_MEMBER, null, 'parent', null, null, 1); print img_picto('', 'category').$form->multiselectarray('memcats', $cate_arbo, GETPOST('memcats', 'array'), null, null, 'quatrevingtpercent widthcentpercentminusx', 0, 0); @@ -1226,12 +1214,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { print '
'.$langs->trans("Password").'pass).'">
'.$langs->trans("MemberNature").''; - print $form->selectarray("morphy", $morphys, (GETPOSTISSET("morphy") ? GETPOST("morphy", 'alpha') : $object->morphy), 0, 0, 0, '', 0, 0, 0, '', '', 1); - print "
'.$langs->trans("Type").''; @@ -1243,6 +1225,13 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } print "
'.$langs->trans("MemberNature").''; + print $form->selectarray("morphy", $morphys, (GETPOSTISSET("morphy") ? GETPOST("morphy", 'alpha') : $object->morphy), 0, 0, 0, '', 0, 0, 0, '', '', 1); + print "
'.$langs->trans("Company").'company).'">
'.$langs->trans("PhoneMobile").''.img_picto('', 'object_phoning_mobile', 'class="pictofixedwidth"').'phone_mobile).'">
'.$form->editfieldkey('DefaultLang', 'default_lang', '', $object, 0).''."\n"; + print img_picto('', 'language').$formadmin->select_language($object->default_lang, 'default_lang', 0, 0, 1); + print '
".$langs->trans("Public")."\n"; print $form->selectyesno("public", (GETPOSTISSET("public") ? GETPOST("public", 'alphanohtml', 2) : $object->public), 1); print "
'.$form->editfieldkey("Categories", 'memcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_MEMBER, null, null, null, null, 1); @@ -1379,7 +1376,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Third party Dolibarr - if (!empty($conf->societe->enabled)) { + if (isModEnabled('societe')) { print '
'.$langs->trans("LinkedToDolibarrThirdParty").''; if ($object->socid) { $company = new Societe($db); @@ -1452,12 +1449,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $formquestion = array( array('label' => $langs->trans("LoginToCreate"), 'type' => 'text', 'name' => 'login', 'value' => $login) ); - if (!empty($conf->societe->enabled) && $object->socid > 0) { + if (isModEnabled('societe') && $object->socid > 0) { $object->fetch_thirdparty(); $formquestion[] = array('label' => $langs->trans("UserWillBe"), 'type' => 'radio', 'name' => 'internalorexternal', 'default'=>'external', 'values' => array('external'=>$langs->trans("External").' - '.$langs->trans("LinkedToDolibarrThirdParty").' '.$object->thirdparty->getNomUrl(1, '', 0, 1), 'internal'=>$langs->trans("Internal"))); } $text = ''; - if (!empty($conf->societe->enabled) && $object->socid <= 0) { + if (isModEnabled('societe') && $object->socid <= 0) { $text .= $langs->trans("UserWillBeInternalUser").'
'; } $text .= $langs->trans("ConfirmCreateLogin"); @@ -1510,7 +1507,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $outputlangs->loadLangs(array("main", "members", "companies", "install", "other")); // Get email content from template $arraydefaultmessage = null; - $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION; + $labeltouse = getDolGlobalString("ADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION"); if (!empty($labeltouse)) { $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); @@ -1542,12 +1539,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Create form popup $formquestion = array(); if ($object->email) { - $formquestion[] = array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => ($conf->global->ADHERENT_DEFAULT_SENDINFOBYMAIL ?true:false)); + $formquestion[] = array('type' => 'checkbox', 'name' => 'send_mail', 'label' => $label, 'value' => (getDolGlobalString('ADHERENT_DEFAULT_SENDINFOBYMAIL') ? true : false)); } - if (!empty($conf->mailman->enabled) && !empty($conf->global->ADHERENT_USE_MAILMAN)) { + if (isModEnabled('mailman') && !empty($conf->global->ADHERENT_USE_MAILMAN)) { $formquestion[] = array('type'=>'other', 'label'=>$langs->transnoentitiesnoconv("SynchroMailManEnabled"), 'value'=>''); } - if (!empty($conf->mailman->enabled) && !empty($conf->global->ADHERENT_USE_SPIP)) { + if (isModEnabled('mailman') && !empty($conf->global->ADHERENT_USE_SPIP)) { $formquestion[] = array('type'=>'other', 'label'=>$langs->transnoentitiesnoconv("SynchroSpipEnabled"), 'value'=>''); } print $form->formconfirm("card.php?rowid=".$id, $langs->trans("ValidateMember"), $langs->trans("ConfirmValidateMember"), "confirm_valid", $formquestion, 'yes', 1, 220); @@ -1573,7 +1570,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $outputlangs->loadLangs(array("main", "members")); // Get email content from template $arraydefaultmessage = null; - $labeltouse = $conf->global->ADHERENT_EMAIL_TEMPLATE_CANCELATION; + $labeltouse = getDolGlobalString('ADHERENT_EMAIL_TEMPLATE_CANCELATION'); if (!empty($labeltouse)) { $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); @@ -1695,7 +1692,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { $rowspan++; } - if (!empty($conf->societe->enabled)) { + if (isModEnabled('societe')) { $rowspan++; } @@ -1786,7 +1783,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''; // Tags / Categories - if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + if (isModEnabled('categorie') && !empty($user->rights->categorie->lire)) { print ''; print ''; + // Default language + if (!empty($conf->global->MAIN_MULTILANGS)) { + require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + print ''; + } + // Public print ''; @@ -1803,7 +1813,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php'; // Third party Dolibarr - if (!empty($conf->societe->enabled)) { + if (isModEnabled('societe')) { print ''; print ''; print ''; @@ -138,7 +138,7 @@ print ''; print ''; print ''; diff --git a/htdocs/admin/security_other.php b/htdocs/admin/security_other.php index a3d54e2a132..090e2254541 100644 --- a/htdocs/admin/security_other.php +++ b/htdocs/admin/security_other.php @@ -61,9 +61,17 @@ if (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) { dol_print_error($db); } } elseif ($action == 'updateform') { - $res1 = dolibarr_set_const($db, "MAIN_APPLICATION_TITLE", GETPOST("MAIN_APPLICATION_TITLE", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - $res2 = dolibarr_set_const($db, "MAIN_SESSION_TIMEOUT", GETPOST("MAIN_SESSION_TIMEOUT", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - if ($res1 && $res2) { + $res1 = 1; $res2 = 1; $res3 = 1; + if (GETPOSTISSET('MAIN_APPLICATION_TITLE')) { + $res1 = dolibarr_set_const($db, "MAIN_APPLICATION_TITLE", GETPOST("MAIN_APPLICATION_TITLE", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + } + if (GETPOSTISSET('MAIN_SESSION_TIMEOUT')) { + $res2 = dolibarr_set_const($db, "MAIN_SESSION_TIMEOUT", GETPOST("MAIN_SESSION_TIMEOUT", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + } + if (GETPOSTISSET('MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT')) { + $res3 = dolibarr_set_const($db, "MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT", GETPOST("MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT", 'alphanohtml'), 'int', 0, '', $conf->entity); + } + if ($res1 && $res2 && $res3) { setEventMessages($langs->trans("RecordModifiedSuccessfully"), null, 'mesgs'); } } @@ -165,11 +173,19 @@ if (ini_get("session.gc_probability") == 0) { } print ''; print ''; print ''; +print ''; +print ''; +print ''; +print ''; +/* if (empty($conf->global->MAIN_APPLICATION_TITLE)) { $conf->global->MAIN_APPLICATION_TITLE = ""; } @@ -177,9 +193,10 @@ print ''; print ''; print ''; print ''; +*/ print '
'.$langs->trans("Categories").''; print $form->showCategories($object->id, Categorie::TYPE_MEMBER, 1); @@ -1796,6 +1793,19 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Birth Date print '
'.$langs->trans("DateOfBirth").''.dol_print_date($object->birth, 'day').'
'.$langs->trans("DefaultLang").''; + //$s=picto_from_langcode($object->default_lang); + //print ($s?$s.' ':''); + $langs->load("languages"); + $labellang = ($object->default_lang ? $langs->trans('Language_'.$object->default_lang) : ''); + print picto_from_langcode($object->default_lang, 'class="paddingrightonly saturatemedium opacitylow"'); + print $labellang; + print '
'.$langs->trans("Public").''.yn($object->public).'
'; $editenable = $user->rights->adherent->creer; print $form->editfieldkey('LinkedToDolibarrThirdParty', 'thirdparty', '', $object, $editenable); @@ -1941,7 +1951,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Create third party - if (!empty($conf->societe->enabled) && !$object->socid) { + if (isModEnabled('societe') && !$object->socid) { if ($user->rights->societe->creer) { if (Adherent::STATUS_DRAFT != $object->statut) { print ''.$langs->trans("CreateDolibarrThirdParty").''."\n"; @@ -1967,7 +1977,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Action SPIP - if (!empty($conf->mailmanspip->enabled) && !empty($conf->global->ADHERENT_USE_SPIP)) { + if (isModEnabled('mailmanspip') && !empty($conf->global->ADHERENT_USE_SPIP)) { $isinspip = $mailmanspip->is_in_spip($object); if ($isinspip == 1) { @@ -2024,13 +2034,18 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { */ // Show online payment link - $useonlinepayment = (!empty($conf->paypal->enabled) || !empty($conf->stripe->enabled) || !empty($conf->paybox->enabled)); + $useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox')); if ($useonlinepayment) { print '
'; - + if (empty($amount)) { // Take the maximum amount among what the member is supposed to pay / has paid in the past + $amount = price(max($adht->amount, $object->first_subscription_amount, $object->last_subscription_amount)); + } + if (empty($amount)) { + $amount = 0; + } require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; - print showOnlinePaymentUrl('membersubscription', $object->ref); + print showOnlinePaymentUrl('membersubscription', $object->ref, $amount); } print '
'; diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php index c860a19d588..5ecf5069915 100644 --- a/htdocs/adherents/class/adherent.class.php +++ b/htdocs/adherents/class/adherent.class.php @@ -215,6 +215,12 @@ class Adherent extends CommonObject */ public $public; + /** + * Default language code of member (en_US, ...) + * @var string + */ + public $default_lang; + /** * @var string photo of member */ @@ -328,6 +334,7 @@ class Adherent extends CommonObject 'photo' => array('type' => 'varchar(255)', 'label' => 'Photo', 'enabled' => 1, 'visible' => -1, 'position' => 135), 'public' => array('type' => 'smallint(6)', 'label' => 'Public', 'enabled' => 1, 'visible' => -1, 'notnull' => 1, 'position' => 145), 'datefin' => array('type' => 'datetime', 'label' => 'DateEnd', 'enabled' => 1, 'visible' => -1, 'position' => 150), + 'default_lang' =>array('type'=>'varchar(6)', 'label'=>'Default lang', 'enabled'=>1, 'visible'=>-1, 'position'=> 153), 'note_private' => array('type' => 'text', 'label' => 'NotePublic', 'enabled' => 1, 'visible' => 0, 'position' => 155), 'note_public' => array('type' => 'text', 'label' => 'NotePrivate', 'enabled' => 1, 'visible' => 0, 'position' => 160), 'datevalid' => array('type' => 'datetime', 'label' => 'DateValidation', 'enabled' => 1, 'visible' => -1, 'position' => 165), @@ -670,11 +677,10 @@ class Adherent extends CommonObject $this->town = ($this->town ? $this->town : $this->town); $this->country_id = ($this->country_id > 0 ? $this->country_id : $this->country_id); $this->state_id = ($this->state_id > 0 ? $this->state_id : $this->state_id); - $this->setUpperOrLowerCase(); $this->note_public = ($this->note_public ? $this->note_public : $this->note_public); $this->note_private = ($this->note_private ? $this->note_private : $this->note_private); $this->url = $this->url ?clean_url($this->url, 0) : ''; - + $this->setUpperOrLowerCase(); // Check parameters if (!empty($conf->global->ADHERENT_MAIL_REQUIRED) && !isValidEMail($this->email)) { $langs->load("errors"); @@ -711,9 +717,11 @@ class Adherent extends CommonObject $sql .= ", photo = ".($this->photo ? "'".$this->db->escape($this->photo)."'" : "null"); $sql .= ", public = '".$this->db->escape($this->public)."'"; $sql .= ", statut = ".$this->db->escape($this->statut); + $sql .= ", default_lang = ".(!empty($this->default_lang) ? "'".$this->db->escape($this->default_lang)."'" : "null"); $sql .= ", fk_adherent_type = ".$this->db->escape($this->typeid); $sql .= ", morphy = '".$this->db->escape($this->morphy)."'"; $sql .= ", birth = ".($this->birth ? "'".$this->db->idate($this->birth)."'" : "null"); + if ($this->datefin) { $sql .= ", datefin = '".$this->db->idate($this->datefin)."'"; // Must be modified only when deleting a subscription } @@ -834,6 +842,8 @@ class Adherent extends CommonObject $luser->office_phone = $this->phone; $luser->user_mobile = $this->phone_mobile; + $luser->lang = $this->default_lang; + $luser->fk_member = $this->id; $result = $luser->update($user, 0, 1, 1); // Use nosync to 1 to avoid cyclic updates @@ -869,6 +879,7 @@ class Adherent extends CommonObject $lthirdparty->state_id = $this->state_id; $lthirdparty->country_id = $this->country_id; //$lthirdparty->phone_mobile=$this->phone_mobile; + $lthirdparty->default_lang = $this->default_lang; $result = $lthirdparty->update($this->fk_soc, $user, 0, 1, 1, 'update'); // Use sync to 0 to avoid cyclic updates @@ -961,10 +972,10 @@ class Adherent extends CommonObject } /** - * Fonction qui supprime l'adherent et les donnees associees + * Fonction to delete a member and its data * * @param int $rowid Id of member to delete - * @param User $user User object + * @param User $user User object * @param int $notrigger 1=Does not execute triggers, 0= execute triggers * @return int <0 if KO, 0=nothing to do, >0 if OK */ @@ -1315,7 +1326,7 @@ class Adherent extends CommonObject $sql .= " d.photo, d.fk_adherent_type, d.morphy, d.entity,"; $sql .= " d.datec as datec,"; $sql .= " d.tms as datem,"; - $sql .= " d.datefin as datefin,"; + $sql .= " d.datefin as datefin, d.default_lang,"; $sql .= " d.birth as birthday,"; $sql .= " d.datevalid as datev,"; $sql .= " d.country,"; @@ -1408,6 +1419,8 @@ class Adherent extends CommonObject $this->date_validation = $this->db->jdate($obj->datev); $this->birth = $this->db->jdate($obj->birthday); + $this->default_lang = $obj->default_lang; + $this->note_private = $obj->note_private; $this->note_public = $obj->note_public; $this->morphy = $obj->morphy; @@ -1760,7 +1773,7 @@ class Adherent extends CommonObject if (!$error) { // Add line to draft invoice $idprodsubscription = 0; - if (!empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (!empty($conf->product->enabled) || !empty($conf->service->enabled))) { + if (!empty($conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS) && (isModEnabled("product") || isModEnabled("service"))) { $idprodsubscription = $conf->global->ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS; } @@ -1813,7 +1826,7 @@ class Adherent extends CommonObject if (!$error) { // Create payment line for invoice $paiement_id = $paiement->create($user); - if (!$paiement_id > 0) { + if (!($paiement_id > 0)) { $this->error = $paiement->error; $this->errors = $paiement->errors; $error++; @@ -1852,10 +1865,10 @@ class Adherent extends CommonObject $outputlangs = $langs; $newlang = ''; $lang_id = GETPOST('lang_id'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && !empty($lang_id)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && !empty($lang_id)) { $newlang = $lang_id; } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $customer->default_lang; } if (!empty($newlang)) { @@ -2557,6 +2570,7 @@ class Adherent extends CommonObject $this->datefin = $now; $this->datevalid = $now; + $this->default_lang = ''; $this->typeid = 1; // Id type adherent $this->type = 'Type adherent'; // Libelle type adherent diff --git a/htdocs/adherents/class/adherent_type.class.php b/htdocs/adherents/class/adherent_type.class.php index 3f857ce827b..12735e70211 100644 --- a/htdocs/adherents/class/adherent_type.class.php +++ b/htdocs/adherents/class/adherent_type.class.php @@ -94,6 +94,11 @@ class AdherentType extends CommonObject */ public $amount; + /** + * @var int Amount can be choosen by the visitor during subscription (0 or 1) + */ + public $caneditamount; + /** * @var string Public note * @deprecated @@ -380,6 +385,7 @@ class AdherentType extends CommonObject $sql .= "morphy = '".$this->db->escape($this->morphy)."',"; $sql .= "subscription = '".$this->db->escape($this->subscription)."',"; $sql .= "amount = ".((empty($this->amount) && $this->amount == '') ? 'null' : ((float) $this->amount)).","; + $sql .= "caneditamount = ".((int) $this->caneditamount).","; $sql .= "duration = '".$this->db->escape($this->duration_value.$this->duration_unit)."',"; $sql .= "note = '".$this->db->escape($this->note_public)."',"; $sql .= "vote = ".(integer) $this->db->escape($this->vote).","; @@ -434,6 +440,7 @@ class AdherentType extends CommonObject /** * Function to delete the member's status + * TODO Add param "User $user" * * @return int > 0 if OK, 0 if not found, < 0 if KO */ @@ -474,7 +481,7 @@ class AdherentType extends CommonObject { global $langs, $conf; - $sql = "SELECT d.rowid, d.libelle as label, d.morphy, d.statut as status, d.duration, d.subscription, d.amount, d.mail_valid, d.note as note_public, d.vote"; + $sql = "SELECT d.rowid, d.libelle as label, d.morphy, d.statut as status, d.duration, d.subscription, d.amount, d.caneditamount, d.mail_valid, d.note as note_public, d.vote"; $sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; $sql .= " WHERE d.rowid = ".(int) $rowid; @@ -495,6 +502,7 @@ class AdherentType extends CommonObject $this->duration_unit = substr($obj->duration, -1); $this->subscription = $obj->subscription; $this->amount = $obj->amount; + $this->caneditamount = $obj->caneditamount; $this->mail_valid = $obj->mail_valid; $this->note = $obj->note_public; // deprecated $this->note_public = $obj->note_public; @@ -850,6 +858,7 @@ class AdherentType extends CommonObject $this->note_public = 'This is a public note'; $this->mail_valid = 'This is welcome email'; $this->subscription = 1; + $this->caneditamount = 0; $this->vote = 0; $this->status = 1; diff --git a/htdocs/adherents/document.php b/htdocs/adherents/document.php index 3dcab7a9c4c..c8282179fe5 100644 --- a/htdocs/adherents/document.php +++ b/htdocs/adherents/document.php @@ -128,7 +128,7 @@ if ($id > 0) { $totalsize += $file['size']; } - if (!empty($conf->notification->enabled)) { + if (isModEnabled('notification')) { $langs->load("mails"); } diff --git a/htdocs/adherents/htpasswd.php b/htdocs/adherents/htpasswd.php index 60639193295..0a7073f96b0 100644 --- a/htdocs/adherents/htpasswd.php +++ b/htdocs/adherents/htpasswd.php @@ -33,7 +33,7 @@ $sortfield = GETPOST('sortfield', 'alphanohtml'); $sortorder = GETPOST('sortorder', 'aZ09'); // Security check -if (empty($conf->adherent->enabled)) { +if (!isModEnabled('adherent')) { accessforbidden(); } if (empty($user->rights->adherent->export)) { diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php index 8bf7f7af6a6..f9208daf70d 100644 --- a/htdocs/adherents/list.php +++ b/htdocs/adherents/list.php @@ -63,6 +63,7 @@ $search_email = GETPOST("search_email", 'alpha'); $search_categ = GETPOST("search_categ", 'int'); $search_filter = GETPOST("search_filter", 'alpha'); $search_status = GETPOST("search_status", 'intcomma'); +$search_morphy = GETPOST("search_morphy", 'alpha'); $search_import_key = trim(GETPOST("search_import_key", "alpha")); $catid = GETPOST("catid", 'int'); $optioncss = GETPOST('optioncss', 'alpha'); @@ -382,6 +383,9 @@ if ($search_status != '') { // Peut valoir un nombre ou liste de nombre separes par virgules $sql .= " AND d.statut in (".$db->sanitize($db->escape($search_status)).")"; } +if ($search_morphy != '') { + $sql .= natural_search("d.morphy", $search_morphy); +} if ($search_ref) { $sql .= natural_search("d.ref", $search_ref); } @@ -655,7 +659,7 @@ if ($sall) { // Filter on categories $moreforfilter = ''; -if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { +if (isModEnabled('categorie') && $user->rights->categorie->lire) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $moreforfilter .= '
'; $moreforfilter .= img_picto($langs->trans('Categories'), 'category', 'class="pictofixedlength"').$formother->select_categories(Categorie::TYPE_MEMBER, $search_categ, 'search_categ', 1); @@ -675,7 +679,7 @@ if (!empty($moreforfilter)) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields if ($massactionbutton) { $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); } @@ -685,7 +689,13 @@ print ''; - +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} // Line numbering if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) { print ''; @@ -725,6 +735,11 @@ if (!empty($arrayfields['d.login']['checked'])) { } if (!empty($arrayfields['d.morphy']['checked'])) { print ''; +} +if (!empty($arrayfields['t.libelle']['checked'])) { print ''; } if (!empty($arrayfields['t.libelle']['checked'])) { @@ -962,6 +977,19 @@ while ($i < min($num, $limit)) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } + if (!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)) { print ''; if (!$i) { diff --git a/htdocs/adherents/partnership.php b/htdocs/adherents/partnership.php index a01e7d28ed2..805a3137226 100644 --- a/htdocs/adherents/partnership.php +++ b/htdocs/adherents/partnership.php @@ -88,7 +88,7 @@ $upload_dir = $conf->partnership->multidir_output[isset($object->entity) ? $o if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR') != 'member') { accessforbidden('Partnership module is not activated for members'); } -if (empty($conf->partnership->enabled)) { +if (!isModEnabled('partnership')) { accessforbidden(); } if (empty($permissiontoread)) { @@ -151,7 +151,7 @@ if ($id > 0) { $object = new Adherent($db); $result = $object->fetch($id); - if (!empty($conf->notification->enabled)) { + if (isModEnabled('notification')) { $langs->load("mails"); } diff --git a/htdocs/adherents/subscription.php b/htdocs/adherents/subscription.php index cf0ad445c92..5779fe036d9 100644 --- a/htdocs/adherents/subscription.php +++ b/htdocs/adherents/subscription.php @@ -271,7 +271,7 @@ if ($user->rights->adherent->cotisation->creer && $action == 'subscription' && ! $action = 'addsubscription'; } else { // If an amount has been provided, we check also fields that becomes mandatory when amount is not null. - if (!empty($conf->banque->enabled) && GETPOST("paymentsave") != 'none') { + if (isModEnabled('banque') && GETPOST("paymentsave") != 'none') { if (GETPOST("subscription")) { if (!GETPOST("label")) { $errmsg = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")); @@ -475,7 +475,7 @@ if ($rowid > 0) { if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { $rowspan++; } - if (!empty($conf->societe->enabled)) { + if (isModEnabled('societe')) { $rowspan++; } @@ -571,7 +571,7 @@ if ($rowid > 0) { print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ' '; + $arraymorphy = array('mor'=>$langs->trans("Moral"), 'phy'=>$langs->trans("Physical")); + print $form->selectarray('search_morphy', $arraymorphy, $search_morphy, 1); + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''.$obj->rowid.'
'; // Tags / Categories - if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + if (isModEnabled('categorie') && !empty($user->rights->categorie->lire)) { print ''; print ''; print ""; print "\n"; diff --git a/htdocs/admin/company.php b/htdocs/admin/company.php index c72976f829e..af44c18bee6 100644 --- a/htdocs/admin/company.php +++ b/htdocs/admin/company.php @@ -466,7 +466,7 @@ print ''."\n"; // Barcode -if (!empty($conf->barcode->enabled)) { +if (isModEnabled('barcode')) { print ''."\n"; print ''."\n"; -if (!empty($conf->project->enabled)) { +if (isModEnabled('project')) { print '\n"; print ''; print ""; print "'; -print '\n"; diff --git a/htdocs/admin/fckeditor.php b/htdocs/admin/fckeditor.php index 3ea92bb48ad..04048ac83db 100644 --- a/htdocs/admin/fckeditor.php +++ b/htdocs/admin/fckeditor.php @@ -62,11 +62,11 @@ $conditions = array( 'NOTE_PUBLIC' => 1, 'NOTE_PRIVATE' => 1, 'SOCIETE' => 1, - 'PRODUCTDESC' => (!empty($conf->product->enabled) || !empty($conf->service->enabled)), - 'DETAILS' => (isModEnabled('facture') || !empty($conf->propal->enabled) || !empty($conf->commande->enabled) || !empty($conf->supplier_proposal->enabled) || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)), + 'PRODUCTDESC' => (isModEnabled("product") || isModEnabled("service")), + 'DETAILS' => (isModEnabled('facture') || isModEnabled("propal") || !empty($conf->commande->enabled) || !empty($conf->supplier_proposal->enabled) || (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")), 'USERSIGN' => 1, 'MAILING' => !empty($conf->mailing->enabled), - 'MAIL' => (isModEnabled('facture') || !empty($conf->propal->enabled) || !empty($conf->commande->enabled)), + 'MAIL' => (isModEnabled('facture') || isModEnabled("propal") || !empty($conf->commande->enabled)), 'TICKET' => !empty($conf->ticket->enabled), ); // Picto diff --git a/htdocs/admin/fichinter.php b/htdocs/admin/fichinter.php index 36a55be9a95..79896d0ed74 100644 --- a/htdocs/admin/fichinter.php +++ b/htdocs/admin/fichinter.php @@ -525,7 +525,7 @@ print "\n"; diff --git a/htdocs/admin/geoipmaxmind.php b/htdocs/admin/geoipmaxmind.php index e662c0576a2..c002c9059d7 100644 --- a/htdocs/admin/geoipmaxmind.php +++ b/htdocs/admin/geoipmaxmind.php @@ -59,12 +59,12 @@ if ($action == 'set') { if (!$error) { $res1 = dolibarr_set_const($db, "GEOIP_VERSION", GETPOST('geoipversion', 'aZ09'), 'chaine', 0, '', $conf->entity); - if (!$res1 > 0) { + if (!($res1 > 0)) { $error++; } $res2 = dolibarr_set_const($db, "GEOIPMAXMIND_COUNTRY_DATAFILE", $gimcdf, 'chaine', 0, '', $conf->entity); - if (!$res2 > 0) { + if (!($res2 > 0)) { $error++; } diff --git a/htdocs/admin/holiday.php b/htdocs/admin/holiday.php index f208e2a658a..5902402674d 100644 --- a/htdocs/admin/holiday.php +++ b/htdocs/admin/holiday.php @@ -141,7 +141,7 @@ if ($action == 'updateMask') { $draft = GETPOST('HOLIDAY_DRAFT_WATERMARK', 'alpha'); $res2 = dolibarr_set_const($db, "HOLIDAY_DRAFT_WATERMARK", trim($draft), 'chaine', 0, '', $conf->entity); - if (!$res1 > 0 || !$res2 > 0) { + if (!($res1 > 0) || !($res2 > 0)) { $error++; } @@ -551,7 +551,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { print ''."\n"; } diff --git a/htdocs/admin/hrm.php b/htdocs/admin/hrm.php index f5bbb5c648f..c568e6de39c 100644 --- a/htdocs/admin/hrm.php +++ b/htdocs/admin/hrm.php @@ -57,7 +57,7 @@ $type = 'myobject'; $arrayofparameters = array( 'HRM_MAXRANK'=>array('type'=>'integer','enabled'=>1), - 'HRM_DEFAULT_SKILL_DESCRIPTION'=>array('type'=>'textarea','enabled'=>1), + 'HRM_DEFAULT_SKILL_DESCRIPTION'=>array('type'=>'varchar','enabled'=>1), ); $error = 0; @@ -492,14 +492,14 @@ if ($action == 'edit') { print ''; } diff --git a/htdocs/admin/ihm.php b/htdocs/admin/ihm.php index 959d881041d..baf35de9a35 100644 --- a/htdocs/admin/ihm.php +++ b/htdocs/admin/ihm.php @@ -104,6 +104,16 @@ if ($action == 'update') { dolibarr_set_const($db, "MAIN_THEME", GETPOST("main_theme", 'aZ09'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_IHM_PARAMS_REV", getDolGlobalInt('MAIN_IHM_PARAMS_REV') + 1, 'chaine', 0, '', $conf->entity); + if (GETPOSTISSET('THEME_DARKMODEENABLED')) { + $val = GETPOST('THEME_DARKMODEENABLED'); + if (!$val) { + dolibarr_del_const($db, "THEME_DARKMODEENABLED", $conf->entity); + } + if ($val) { + dolibarr_set_const($db, "THEME_DARKMODEENABLED", $val, 'chaine', 0, '', $conf->entity); + } + } + if (GETPOSTISSET('THEME_TOPMENU_DISABLE_IMAGE')) { $val=GETPOST('THEME_TOPMENU_DISABLE_IMAGE'); if (!$val) { @@ -646,7 +656,7 @@ if ($mode == 'login') { print '(' . $langs->trans("DisabledByOptionADD_UNSPLASH_LOGIN_BACKGROUND") . ') '; } if (!empty($conf->global->MAIN_LOGIN_BACKGROUND)) { - print '' . img_delete($langs->trans("Delete")) . ''; + print '' . img_delete($langs->trans("Delete")) . ''; if (file_exists($conf->mycompany->dir_output . '/logos/' . $conf->global->MAIN_LOGIN_BACKGROUND)) { print '   '; print ''; diff --git a/htdocs/admin/knowledgemanagement.php b/htdocs/admin/knowledgemanagement.php index 041216014b0..b1710a53839 100644 --- a/htdocs/admin/knowledgemanagement.php +++ b/htdocs/admin/knowledgemanagement.php @@ -208,12 +208,12 @@ if ($action == 'edit') { print ''; // Synchro contact active -if (!empty($conf->societe->enabled)) { +if (isModEnabled('societe')) { print ''; + print ''; } // Synchro member active -if (!empty($conf->adherent->enabled)) { - print ''; + print ''; } // Synchro member type active -if (!empty($conf->adherent->enabled)) { - print ''; + print ''; } // Fields from hook diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php index 1209f41c48e..d644f2bd2f6 100644 --- a/htdocs/admin/limits.php +++ b/htdocs/admin/limits.php @@ -36,7 +36,7 @@ if (!$user->admin) { $action = GETPOST('action', 'aZ09'); $currencycode = GETPOST('currencycode', 'alpha'); -if (!empty($conf->multicurrency->enabled) && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { +if (isModEnabled('multicompany') && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { // When MULTICURRENCY_USE_LIMIT_BY_CURRENCY is on, we use always a defined currency code instead of '' even for default. $currencycode = (!empty($currencycode) ? $currencycode : $conf->currency); } @@ -105,12 +105,12 @@ print load_fiche_titre($title, '', 'title_setup'); $aCurrencies = array($conf->currency); // Default currency always first position -if (!empty($conf->multicurrency->enabled) && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { - require_once DOL_DOCUMENT_ROOT.'/core/lib/multicurrency.lib.php'; +if (isModEnabled('multicompany') && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { + require_once DOL_DOCUMENT_ROOT . '/core/lib/multicurrency.lib.php'; - $sql = "SELECT rowid, code FROM ".MAIN_DB_PREFIX."multicurrency"; - $sql .= " WHERE entity = ".((int) $conf->entity); - $sql .= " AND code <> '".$db->escape($conf->currency)."'"; // Default currency always first position + $sql = "SELECT rowid, code FROM " . MAIN_DB_PREFIX . "multicurrency"; + $sql .= " WHERE entity = " . ((int) $conf->entity); + $sql .= " AND code <> '" . $db->escape($conf->currency) . "'"; // Default currency always first position $resql = $db->query($sql); if ($resql) { while ($obj = $db->fetch_object($resql)) { @@ -129,11 +129,11 @@ print ''.$langs->trans("LimitsDesc")."
\n" print "
\n"; if ($action == 'edit') { - print ''; - print ''; + print ''; + print ''; print ''; - if (!empty($conf->multicurrency->enabled) && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { - print ''; + if (isModEnabled('multicompany') && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { + print ''; } clearstatcache(); @@ -194,7 +194,7 @@ if ($action == 'edit') { print ''; } -if (!empty($conf->multicurrency->enabled) && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { +if (isModEnabled('multicompany') && !empty($conf->global->MULTICURRENCY_USE_LIMIT_BY_CURRENCY)) { if (!empty($aCurrencies) && count($aCurrencies) > 1) { print dol_get_fiche_end(); } diff --git a/htdocs/admin/loan.php b/htdocs/admin/loan.php index 72b2a15d678..3c777e1f187 100644 --- a/htdocs/admin/loan.php +++ b/htdocs/admin/loan.php @@ -26,7 +26,7 @@ require '../main.inc.php'; // Class require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -if (!empty($conf->accounting->enabled)) { +if (isModEnabled('accounting')) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php'; } @@ -76,7 +76,7 @@ if ($action == 'update') { llxHeader(); $form = new Form($db); -if (!empty($conf->accounting->enabled)) { +if (isModEnabled('accounting')) { $formaccounting = new FormAccounting($db); } @@ -100,14 +100,14 @@ foreach ($list as $key) { // Param $label = $langs->trans($key); - print ''; + print ''; // Value print ''; } diff --git a/htdocs/admin/mailing.php b/htdocs/admin/mailing.php index 37735a43ed3..da2df89b21a 100644 --- a/htdocs/admin/mailing.php +++ b/htdocs/admin/mailing.php @@ -107,21 +107,11 @@ llxHeader('', $langs->trans("MailingSetup")); $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("MailingSetup"), $linkback, 'title_setup'); -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} +$constname = 'MAILING_EMAIL_UNSUBSCRIBE_KEY'; + +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword($constname); print '
'; print ''; diff --git a/htdocs/admin/mailman.php b/htdocs/admin/mailman.php index 8b003ce2d4e..eca17ea8e76 100644 --- a/htdocs/admin/mailman.php +++ b/htdocs/admin/mailman.php @@ -158,7 +158,7 @@ if (!empty($conf->global->ADHERENT_USE_MAILMAN)) { $link .= ''; // Edition des varibales globales $constantes = array( - 'ADHERENT_MAILMAN_ADMINPW', + 'ADHERENT_MAILMAN_ADMIN_PASSWORD', 'ADHERENT_MAILMAN_URL', 'ADHERENT_MAILMAN_UNSUB_URL', 'ADHERENT_MAILMAN_LISTS' diff --git a/htdocs/admin/mails.php b/htdocs/admin/mails.php index f065760f62d..0504315075d 100644 --- a/htdocs/admin/mails.php +++ b/htdocs/admin/mails.php @@ -88,7 +88,15 @@ if ($action == 'update' && !$cancel) { dolibarr_set_const($db, "MAIN_MAIL_SMTP_PORT", GETPOST("MAIN_MAIL_SMTP_PORT", 'int'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_SMTP_SERVER", GETPOST("MAIN_MAIL_SMTP_SERVER", 'alphanohtml'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_SMTPS_ID", GETPOST("MAIN_MAIL_SMTPS_ID", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW", 'none'), 'chaine', 0, '', $conf->entity); + if (GETPOSTISSET("MAIN_MAIL_SMTPS_PW")) { + dolibarr_set_const($db, "MAIN_MAIL_SMTPS_PW", GETPOST("MAIN_MAIL_SMTPS_PW", 'none'), 'chaine', 0, '', $conf->entity); + } + if (GETPOSTISSET("MAIN_MAIL_SMTPS_AUTH_TYPE")) { + dolibarr_set_const($db, "MAIN_MAIL_SMTPS_AUTH_TYPE", GETPOST("MAIN_MAIL_SMTPS_AUTH_TYPE", 'chaine'), 'chaine', 0, '', $conf->entity); + } + if (GETPOSTISSET("MAIN_MAIL_SMTPS_OAUTH_SERVICE")) { + dolibarr_set_const($db, "MAIN_MAIL_SMTPS_OAUTH_SERVICE", GETPOST("MAIN_MAIL_SMTPS_OAUTH_SERVICE", 'chaine'), 'chaine', 0, '', $conf->entity); + } dolibarr_set_const($db, "MAIN_MAIL_EMAIL_TLS", GETPOST("MAIN_MAIL_EMAIL_TLS", 'int'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_EMAIL_STARTTLS", GETPOST("MAIN_MAIL_EMAIL_STARTTLS", 'int'), 'chaine', 0, '', $conf->entity); dolibarr_set_const($db, "MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED", GETPOST("MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED", 'int'), 'chaine', 0, '', $conf->entity); @@ -171,6 +179,24 @@ if (version_compare(phpversion(), '7.0', '>=')) { $listofmethods['swiftmailer'] = 'Swift Mailer socket library'; } +// List of oauth services +$oauthservices = array(); + +foreach ($conf->global as $key => $val) { + if (!empty($val) && preg_match('/^OAUTH_.*_ID$/', $key)) { + $key = preg_replace('/^OAUTH_/', '', $key); + $key = preg_replace('/_ID$/', '', $key); + if (preg_match('/^.*-/', $key)) { + $name = preg_replace('/^.*-/', '', $key); + } else { + $name = $langs->trans("NoName"); + } + $provider = preg_replace('/-.*$/', '', $key); + $provider = ucfirst(strtolower($provider)); + + $oauthservices[$key] = $name." (".$provider.")"; + } +} if ($action == 'edit') { if ($conf->use_javascript_ajax) { @@ -195,6 +221,7 @@ if ($action == 'edit') { jQuery("#MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY").prop("disabled", true); jQuery(".smtp_method").hide(); jQuery(".dkim").hide(); + jQuery(".smtp_auth_method").hide(); '; if ($linuxlike) { print ' @@ -237,6 +264,7 @@ if ($action == 'edit') { jQuery("#smtp_port_mess").hide(); jQuery(".smtp_method").show(); jQuery(".dkim").hide(); + jQuery(".smtp_auth_method").show(); } if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\') { @@ -264,12 +292,34 @@ if ($action == 'edit') { jQuery("#smtp_port_mess").hide(); jQuery(".smtp_method").show(); jQuery(".dkim").show(); + jQuery(".smtp_auth_method").show(); } } + function change_smtp_auth_method() { + console.log(jQuery("#radio_pw").prop("checked")); + if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'smtps\' && jQuery("#radio_oauth").prop("checked")) { + jQuery(".smtp_oauth_service").show(); + jQuery(".smtp_pw").hide(); + } else if (jQuery("#MAIN_MAIL_SENDMODE").val()==\'swiftmailer\' && jQuery("#radio_oauth").prop("checked")) { + jQuery(".smtp_oauth_service").show(); + jQuery(".smtp_pw").hide(); + } else if(jQuery("#MAIN_MAIL_SENDMODE").val()==\'mail\'){ + jQuery(".smtp_oauth_service").hide(); + jQuery(".smtp_pw").hide(); + } else { + jQuery(".smtp_oauth_service").hide(); + jQuery(".smtp_pw").show(); + } + } initfields(); + change_smtp_auth_method(); jQuery("#MAIN_MAIL_SENDMODE").change(function() { initfields(); + change_smtp_auth_method(); }); + jQuery("#radio_pw, #radio_oauth").change(function() { + change_smtp_auth_method(); + }); jQuery("#MAIN_MAIL_EMAIL_TLS").change(function() { if (jQuery("#MAIN_MAIL_EMAIL_TLS").val() == 1) jQuery("#MAIN_MAIL_EMAIL_STARTTLS").val(0); @@ -413,10 +463,29 @@ if ($action == 'edit') { print ''; } + + // OAUTH + if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { + print ''; + } + // PW if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { $mainsmtppw = (!empty($conf->global->MAIN_MAIL_SMTPS_PW) ? $conf->global->MAIN_MAIL_SMTPS_PW : ''); - print ''; } + // OAUTH service provider + if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { + print ''; + } // TLS print ''; // Host server - if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'mail')) { + if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE') == 'mail')) { print ''; } else { print ''; } + // Port - if ($linuxlike && (isset($conf->global->MAIN_MAIL_SENDMODE) && $conf->global->MAIN_MAIL_SENDMODE == 'mail')) { + if ($linuxlike && (getDolGlobalString('MAIN_MAIL_SENDMODE') == 'mail')) { print ''; } else { print ''; } // SMTPS ID - if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { + if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE'), array('smtps', 'swiftmailer'))) { print ''; } + // AUTH method + if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE'), array('smtps', 'swiftmailer'))) { + $authtype = getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE', 'LOGIN'); + $text = ($authtype === "LOGIN") ? $langs->trans("UsePassword") : ($authtype === "XOAUTH2" ? $langs->trans("UseOauth") : '') ; + print ''; + } + // SMTPS PW - if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { + if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE'), array('smtps', 'swiftmailer')) && getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE') != "XOAUTH2") { print ''; } + // SMTPS oauth service + if (in_array(getDolGlobalString('MAIN_MAIL_SENDMODE'), array('smtps', 'swiftmailer')) && getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE') === "XOAUTH2") { + $text = $oauthservices[$conf->global->MAIN_MAIL_SMTPS_OAUTH_SERVICE]; + if (empty($text)) { + $text = $langs->trans("Undefined").img_warning(); + } + print ''; + } + // TLS print ''; } @@ -326,15 +326,15 @@ if ($action == 'edit') { } print ''; @@ -342,14 +342,14 @@ if ($action == 'edit') { // ID if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) { $mainstmpid = (!empty($conf->global->MAIN_MAIL_SMTPS_ID_EMAILING) ? $conf->global->MAIN_MAIL_SMTPS_ID_EMAILING : ''); - print ''; } @@ -357,14 +357,14 @@ if ($action == 'edit') { // PW if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && in_array($conf->global->MAIN_MAIL_SENDMODE_EMAILING, array('smtps', 'swiftmailer')))) { $mainsmtppw = (!empty($conf->global->MAIN_MAIL_SMTPS_PW_EMAILING) ? $conf->global->MAIN_MAIL_SMTPS_PW_EMAILING : ''); - print ''; } @@ -427,11 +427,15 @@ if ($action == 'edit') { // Method print ''; if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') { @@ -529,16 +533,16 @@ if ($action == 'edit') { if (!empty($conf->global->MAIN_MAIL_SENDMODE_EMAILING) && $conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'default') { if ($conf->global->MAIN_MAIL_SENDMODE_EMAILING != 'mail' || !$linuxlike) { if (function_exists('fsockopen') && $port && $server) { - print ''.$langs->trans("DoTestServerAvailability").''; + print '' . $langs->trans("DoTestServerAvailability") . ''; } } else { - print ''.$langs->trans("DoTestServerAvailability").''; + print '' . $langs->trans("DoTestServerAvailability") . ''; } - print ''.$langs->trans("DoTestSend").''; + print '' . $langs->trans("DoTestSend") . ''; - if (!empty($conf->fckeditor->enabled)) { - print ''.$langs->trans("DoTestSendHTML").''; + if (isModEnabled('fckeditor')) { + print '' . $langs->trans("DoTestSendHTML") . ''; } } diff --git a/htdocs/admin/mails_senderprofile_list.php b/htdocs/admin/mails_senderprofile_list.php index 8e31d0e6d62..db92c33a7fb 100644 --- a/htdocs/admin/mails_senderprofile_list.php +++ b/htdocs/admin/mails_senderprofile_list.php @@ -557,6 +557,7 @@ if (!empty($extrafields->attributes[$object->table_element]['computed']) && is_a // -------------------------------------------------------------------- $i = 0; $totalarray = array(); +$totalarray['nbfield'] = 0; while ($i < ($limit ? min($num, $limit) : $num)) { $obj = $db->fetch_object($resql); if (empty($obj)) { diff --git a/htdocs/admin/mails_templates.php b/htdocs/admin/mails_templates.php index e01c3142cc0..7f60b2260d7 100644 --- a/htdocs/admin/mails_templates.php +++ b/htdocs/admin/mails_templates.php @@ -54,10 +54,12 @@ if (!empty($conf->eventorganization->enabled)) { $langs->loadLangs($langsArray); +$toselect = GETPOST('toselect', 'array'); $action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; $massaction = GETPOST('massaction', 'alpha'); $confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation $mode = GETPOST('mode', 'aZ09'); +$optioncss = GETPOST('optioncss', 'alpha'); $id = GETPOST('id', 'int'); $rowid = GETPOST('rowid', 'alpha'); @@ -77,6 +79,7 @@ $actl[1] = img_picto($langs->trans("Activated"), 'switch_on', 'class="size15x"') $listoffset = GETPOST('listoffset', 'alpha'); $listlimit = GETPOST('listlimit', 'alpha') > 0 ?GETPOST('listlimit', 'alpha') : 1000; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); @@ -175,63 +178,63 @@ $elementList = array(); $elementList['all'] = '-- '.dol_escape_htmltag($langs->trans("All")).' --'; $elementList['none'] = '-- '.dol_escape_htmltag($langs->trans("None")).' --'; -$elementList['user'] = img_picto('', 'user', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToUser')); +$elementList['user'] = img_picto('', 'user', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToUser')); if (!empty($conf->adherent->enabled) && !empty($user->rights->adherent->lire)) { - $elementList['member'] = img_picto('', 'object_member', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToMember')); + $elementList['member'] = img_picto('', 'object_member', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToMember')); } if (!empty($conf->recruitment->enabled) && !empty($user->rights->recruitment->recruitmentjobposition->read)) { - $elementList['recruitmentcandidature_send'] = img_picto('', 'recruitmentcandidature', 'class="paddingright"').dol_escape_htmltag($langs->trans('RecruitmentCandidatures')); + $elementList['recruitmentcandidature_send'] = img_picto('', 'recruitmentcandidature', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('RecruitmentCandidatures')); } -if (!empty($conf->societe->enabled) && !empty($user->rights->societe->lire)) { - $elementList['thirdparty'] = img_picto('', 'company', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToThirdparty')); +if (isModEnabled("societe") && !empty($user->rights->societe->lire)) { + $elementList['thirdparty'] = img_picto('', 'company', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToThirdparty')); } if (!empty($conf->project->enabled)) { - $elementList['project'] = img_picto('', 'project', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToProject')); + $elementList['project'] = img_picto('', 'project', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToProject')); } -if (!empty($conf->propal->enabled) && !empty($user->rights->propal->lire)) { - $elementList['propal_send'] = img_picto('', 'propal', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendProposal')); +if (isModEnabled("propal") && !empty($user->rights->propal->lire)) { + $elementList['propal_send'] = img_picto('', 'propal', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendProposal')); } if (!empty($conf->commande->enabled) && !empty($user->rights->commande->lire)) { - $elementList['order_send'] = img_picto('', 'order', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendOrder')); + $elementList['order_send'] = img_picto('', 'order', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendOrder')); } if (isModEnabled('facture') && !empty($user->rights->facture->lire)) { - $elementList['facture_send'] = img_picto('', 'bill', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendInvoice')); + $elementList['facture_send'] = img_picto('', 'bill', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendInvoice')); } -if (!empty($conf->expedition->enabled)) { - $elementList['shipping_send'] = img_picto('', 'dolly', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendShipment')); +if (isModEnabled("expedition")) { + $elementList['shipping_send'] = img_picto('', 'dolly', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendShipment')); } -if (!empty($conf->reception->enabled)) { - $elementList['reception_send'] = img_picto('', 'dollyrevert', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendReception')); +if (isModEnabled("reception")) { + $elementList['reception_send'] = img_picto('', 'dollyrevert', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendReception')); } if (!empty($conf->ficheinter->enabled)) { - $elementList['fichinter_send'] = img_picto('', 'intervention', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendIntervention')); + $elementList['fichinter_send'] = img_picto('', 'intervention', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendIntervention')); } if (!empty($conf->supplier_proposal->enabled)) { - $elementList['supplier_proposal_send'] = img_picto('', 'propal', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendSupplierRequestForQuotation')); + $elementList['supplier_proposal_send'] = img_picto('', 'propal', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendSupplierRequestForQuotation')); } -if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->commande->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire))) { - $elementList['order_supplier_send'] = img_picto('', 'order', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendSupplierOrder')); +if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->commande->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire))) { + $elementList['order_supplier_send'] = img_picto('', 'order', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendSupplierOrder')); } -if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->facture->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) { - $elementList['invoice_supplier_send'] = img_picto('', 'bill', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendSupplierInvoice')); +if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->facture->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) { + $elementList['invoice_supplier_send'] = img_picto('', 'bill', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendSupplierInvoice')); } if (!empty($conf->contrat->enabled) && !empty($user->rights->contrat->lire)) { - $elementList['contract'] = img_picto('', 'contract', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendContract')); + $elementList['contract'] = img_picto('', 'contract', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendContract')); } if (!empty($conf->ticket->enabled) && !empty($user->rights->ticket->read)) { - $elementList['ticket_send'] = img_picto('', 'ticket', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToTicket')); + $elementList['ticket_send'] = img_picto('', 'ticket', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToTicket')); } if (!empty($conf->expensereport->enabled) && !empty($user->rights->expensereport->lire)) { - $elementList['expensereport_send'] = img_picto('', 'trip', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToTExpenseReport')); + $elementList['expensereport_send'] = img_picto('', 'trip', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToExpenseReport')); } if (isModEnabled('agenda')) { - $elementList['actioncomm_send'] = img_picto('', 'action', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendEventPush')); + $elementList['actioncomm_send'] = img_picto('', 'action', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendEventPush')); } if (!empty($conf->eventorganization->enabled) && !empty($user->rights->eventorganization->read)) { - $elementList['conferenceorbooth'] = img_picto('', 'action', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToSendEventOrganization')); + $elementList['conferenceorbooth'] = img_picto('', 'action', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToSendEventOrganization')); } if (!empty($conf->partnership->enabled) && !empty($user->rights->partnership->read)) { - $elementList['partnership_send'] = img_picto('', 'partnership', 'class="paddingright"').dol_escape_htmltag($langs->trans('MailToPartnership')); + $elementList['partnership_send'] = img_picto('', 'partnership', 'class="pictofixedwidth"').dol_escape_htmltag($langs->trans('MailToPartnership')); } $parameters = array('elementList'=>$elementList); diff --git a/htdocs/admin/mails_ticket.php b/htdocs/admin/mails_ticket.php index 481fcad212c..a439bdabcf0 100644 --- a/htdocs/admin/mails_ticket.php +++ b/htdocs/admin/mails_ticket.php @@ -394,11 +394,15 @@ if ($action == 'edit') { // Method print ''; if (!empty($conf->global->MAIN_MAIL_SENDMODE_TICKET) && $conf->global->MAIN_MAIL_SENDMODE_TICKET != 'default') { diff --git a/htdocs/admin/menus/edit.php b/htdocs/admin/menus/edit.php index bf4ac3f8979..9378fc28bbe 100644 --- a/htdocs/admin/menus/edit.php +++ b/htdocs/admin/menus/edit.php @@ -172,12 +172,12 @@ if ($action == 'add') { $action = 'create'; $error++; } - if (!$error && GETPOST('menuId') && GETPOST('type') == 'top') { + if (!$error && GETPOST('menuId', 'alphanohtml', 3) && GETPOST('type') == 'top') { setEventMessages($langs->trans("ErrorTopMenuMustHaveAParentWithId0"), null, 'errors'); $action = 'create'; $error++; } - if (!$error && !GETPOST('menuId') && GETPOST('type') == 'left') { + if (!$error && !GETPOST('menuId', 'alphanohtml', 3) && GETPOST('type') == 'left') { setEventMessages($langs->trans("ErrorLeftMenuMustHaveAParentId"), null, 'errors'); $action = 'create'; $error++; diff --git a/htdocs/admin/modulehelp.php b/htdocs/admin/modulehelp.php index 0c53bebfc52..16500c62d59 100644 --- a/htdocs/admin/modulehelp.php +++ b/htdocs/admin/modulehelp.php @@ -1,6 +1,7 @@ * Copyright (C) 2017 Regis Houssin + * Copyright (C) 2022 Charlene Benke * * 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 @@ -505,7 +506,7 @@ if ($mode == 'feature') { $text .= '
'; $text .= '
'.$langs->trans("AddHooks").': '; - if (isset($objMod->module_parts) && is_array($objMod->module_parts['hooks']) && count($objMod->module_parts['hooks'])) { + if (isset($objMod->module_parts) && isset($objMod->module_parts['hooks']) && is_array($objMod->module_parts['hooks']) && count($objMod->module_parts['hooks'])) { $i = 0; foreach ($objMod->module_parts['hooks'] as $key => $val) { if ($key === 'entity') { diff --git a/htdocs/admin/modules.php b/htdocs/admin/modules.php index 286ccc424e8..d04039aefdf 100644 --- a/htdocs/admin/modules.php +++ b/htdocs/admin/modules.php @@ -43,10 +43,15 @@ require_once DOL_DOCUMENT_ROOT.'/admin/dolistore/class/dolistore.class.php'; // Load translation files required by the page $langs->loadLangs(array("errors", "admin", "modulebuilder")); -$mode = GETPOSTISSET('mode') ? GETPOST('mode', 'alpha') : (empty($conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT) ? 'commonkanban' : 'common'); -if (empty($mode)) { - $mode = 'common'; +// if we set another view list mode, we keep it (till we change one more time) +if (GETPOSTISSET('mode')) { + $mode = GETPOST('mode', 'alpha'); + if ($mode =='common' || $mode =='commonkanban') + dolibarr_set_const($db, "MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT", $mode, 'chaine', 0, '', $conf->entity); +} else { + $mode = (empty($conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT) ? 'commonkanban' : $conf->global->MAIN_MODULE_SETUP_ON_LIST_BY_DEFAULT); } + $action = GETPOST('action', 'aZ09'); $value = GETPOST('value', 'alpha'); $page_y = GETPOST('page_y', 'int'); diff --git a/htdocs/admin/mrp.php b/htdocs/admin/mrp.php index f4283373b95..2d543cb1faa 100644 --- a/htdocs/admin/mrp.php +++ b/htdocs/admin/mrp.php @@ -465,7 +465,7 @@ print "
\n"; diff --git a/htdocs/admin/multicurrency.php b/htdocs/admin/multicurrency.php index d6487093e41..1cf838c08cb 100644 --- a/htdocs/admin/multicurrency.php +++ b/htdocs/admin/multicurrency.php @@ -33,7 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/multicurrency/class/multicurrency.class.php'; $langs->loadLangs(array('admin', 'multicurrency')); // Access control -if (!$user->admin || empty($conf->multicurrency->enabled)) { +if (!$user->admin || !isModEnabled('multicurrency')) { accessforbidden(); } diff --git a/htdocs/admin/notification.php b/htdocs/admin/notification.php index 38245b5e204..44b5c104813 100644 --- a/htdocs/admin/notification.php +++ b/htdocs/admin/notification.php @@ -177,7 +177,7 @@ print load_fiche_titre($langs->trans("NotificationSetup"), $linkback, 'title_set print ''; print $langs->trans("NotificationsDesc").'
'; print $langs->trans("NotificationsDescUser").'
'; -if (!empty($conf->societe->enabled)) { +if (isModEnabled("societe")) { print $langs->trans("NotificationsDescContact").'
'; } print $langs->trans("NotificationsDescGlobal").'
'; @@ -188,6 +188,7 @@ print ''; print ''; print ''; +print '
'; print '
'.$langs->trans("Categories").''; print $form->showCategories($object->id, Categorie::TYPE_MEMBER, 1); @@ -589,7 +589,7 @@ if ($rowid > 0) { include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php'; // Third party Dolibarr - if (!empty($conf->societe->enabled)) { + if (isModEnabled('societe')) { print '
'; print '\n"; @@ -753,7 +753,7 @@ if ($rowid > 0) { print '\n"; print '\n"; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled('banque')) { print ''; @@ -797,7 +797,7 @@ if ($rowid > 0) { if (($action != 'addsubscription' && $action != 'create_thirdparty')) { // Shon online payment link - $useonlinepayment = (!empty($conf->paypal->enabled) || !empty($conf->stripe->enabled) || !empty($conf->paybox->enabled)); + $useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox')); if ($useonlinepayment) { print '
'; @@ -831,11 +831,11 @@ if ($rowid > 0) { $bankviainvoice = 1; } } else { - if (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankviainvoice' && !empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { + if (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankviainvoice' && isModEnabled('banque') && isModEnabled('societe') && isModEnabled('facture')) { $bankviainvoice = 1; - } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankdirect' && !empty($conf->banque->enabled)) { + } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankdirect' && isModEnabled('banque')) { $bankdirect = 1; - } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'invoiceonly' && !empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { + } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'invoiceonly' && isModEnabled('banque') && isModEnabled('societe') && isModEnabled('facture')) { $invoiceonly = 1; } } @@ -982,7 +982,7 @@ if ($rowid > 0) { print '">'; // Complementary action - if ((!empty($conf->banque->enabled) || isModEnabled('facture')) && empty($conf->global->ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS)) { + if ((isModEnabled('banque') || isModEnabled('facture')) && empty($conf->global->ADHERENT_SUBSCRIPTION_HIDECOMPLEMENTARYACTIONS)) { $company = new Societe($db); if ($object->fk_soc) { $result = $company->fetch($object->fk_soc); @@ -998,12 +998,12 @@ if ($rowid > 0) { print ''; print '
'; // Add entry into bank accoun - if (!empty($conf->banque->enabled)) { + if (isModEnabled('banque')) { print '
'; } // Add invoice with no payments - if (!empty($conf->societe->enabled) && isModEnabled('facture')) { + if (isModEnabled('societe') && isModEnabled('facture')) { print 'fk_soc)) print ' disabled'; print '>
'; } // Add invoice with payments - if (!empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { + if (isModEnabled('banque') && isModEnabled('societe') && isModEnabled('facture')) { print 'fk_soc)) print ' disabled'; print '>'; // Bank line - if (!empty($conf->banque->enabled) && ($conf->global->ADHERENT_BANK_USE || $object->fk_bank)) { + if (isModEnabled("banque") && (!empty($conf->global->ADHERENT_BANK_USE) || $object->fk_bank)) { print ''; print ''; print ''; + print ''; print ''; print ''; print ''; @@ -292,6 +297,7 @@ if (!$rowid && $action != 'create' && $action != 'edit') { $membertype->status = $objp->status; $membertype->subscription = $objp->subscription; $membertype->amount = $objp->amount; + $membertype->caneditamount = $objp->caneditamount; print ''; print ''; print ''; print ''; + print ''; print ''; print ''; if ($user->rights->adherent->configurer) { @@ -380,6 +387,10 @@ if ($action == 'create') { print ''; print ''; + print ''; + print ''; @@ -438,7 +449,7 @@ if ($rowid > 0) { print '
'; print '
'; - print '
'; print $langs->trans("LinkedToDolibarrThirdParty"); @@ -718,7 +718,7 @@ if ($rowid > 0) { print_liste_field_titre('DateStart', $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre('DateEnd', $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre('Amount', $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); - if (!empty($conf->banque->enabled)) { + if (isModEnabled('banque')) { print_liste_field_titre('Account', $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'right '); } print "
'.dol_print_date($db->jdate($objp->dateh), 'day')."'.dol_print_date($db->jdate($objp->datef), 'day')."'.price($objp->subscription).''; if ($objp->bid) { $accountstatic->label = $objp->label; @@ -762,7 +762,7 @@ if ($rowid > 0) { $accountstatic->account_number = $objp->account_number; $accountstatic->currency_code = $objp->currency_code; - if (!empty($conf->accounting->enabled) && $objp->fk_accountancy_journal > 0) { + if (isModEnabled('accounting') && $objp->fk_accountancy_journal > 0) { $accountingjournal = new AccountingJournal($db); $accountingjournal->fetch($objp->fk_accountancy_journal); @@ -782,7 +782,7 @@ if ($rowid > 0) { if (empty($num)) { $colspan = 6; - if (!empty($conf->banque->enabled)) { + if (isModEnabled('banque')) { $colspan++; } print '
'.$langs->trans("None").'
'.$langs->trans("BankTransactionLine").''; if ($object->fk_bank) { $bankline = new AccountLine($db); @@ -270,7 +270,7 @@ if ($rowid && $action != 'edit') { //$formquestion=array(); //$formquestion['text']=''.$langs->trans("ThisWillAlsoDeleteBankRecord").''; $text = $langs->trans("ConfirmDeleteSubscription"); - if (!empty($conf->banque->enabled) && !empty($conf->global->ADHERENT_BANK_USE)) { + if (isModEnabled("banque") && !empty($conf->global->ADHERENT_BANK_USE)) { $text .= '
'.img_warning().' '.$langs->trans("ThisWillAlsoDeleteBankRecord"); } print $form->formconfirm($_SERVER["PHP_SELF"]."?rowid=".$object->id, $langs->trans("DeleteSubscription"), $text, "confirm_delete", $formquestion, 0, 1); @@ -325,7 +325,7 @@ if ($rowid && $action != 'edit') { print '
'.$langs->trans("Label").''.$object->note.'
'.$langs->trans("BankTransactionLine").''; if ($object->fk_bank) { $bankline = new AccountLine($db); diff --git a/htdocs/adherents/subscription/list.php b/htdocs/adherents/subscription/list.php index 6056e1320f0..c19fa40c2bc 100644 --- a/htdocs/adherents/subscription/list.php +++ b/htdocs/adherents/subscription/list.php @@ -89,7 +89,7 @@ $arrayfields = array( 'd.firstname'=>array('label'=>"Firstname", 'checked'=>1), 'd.login'=>array('label'=>"Login", 'checked'=>1), 't.libelle'=>array('label'=>"Label", 'checked'=>1), - 'd.bank'=>array('label'=>"BankAccount", 'checked'=>1, 'enabled'=>(!empty($conf->banque->enabled))), + 'd.bank'=>array('label'=>"BankAccount", 'checked'=>1, 'enabled'=>(isModEnabled('banque'))), /*'d.note_public'=>array('label'=>"NotePublic", 'checked'=>0), 'd.note_private'=>array('label'=>"NotePrivate", 'checked'=>0),*/ 'c.dateadh'=>array('label'=>"DateSubscription", 'checked'=>1, 'position'=>100), @@ -598,7 +598,11 @@ while ($i < min($num, $limit)) { if (!$i) { $totalarray['pos'][$totalarray['nbfield']] = 'd.amount'; } - $totalarray['val']['d.amount'] += $obj->subscription; + if (empty($totalarray['val']['d.amount'])) { + $totalarray['val']['d.amount'] = $obj->subscription; + } else { + $totalarray['val']['d.amount'] += $obj->subscription; + } } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php index bcd6c99afbf..b40d7772e99 100644 --- a/htdocs/adherents/type.php +++ b/htdocs/adherents/type.php @@ -5,7 +5,7 @@ * Copyright (C) 2005-2017 Regis Houssin * Copyright (C) 2013 Florian Henry * Copyright (C) 2015 Alexandre Spangaro - * Copyright (C) 2019 Thibault Foucart + * Copyright (C) 2019-2022 Thibault Foucart * Copyright (C) 2020 Josep Lluís Amador * Copyright (C) 2021 Waël Almoman * @@ -41,6 +41,7 @@ $langs->load("members"); $rowid = GETPOST('rowid', 'int'); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'alpha'); +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); $sall = GETPOST("sall", "alpha"); @@ -122,6 +123,7 @@ if ($action == 'add' && $user->rights->adherent->configurer) { $object->status = (int) $status; $object->subscription = (int) $subscription; $object->amount = ($amount == '' ? '' : price2num($amount, 'MT')); + $object->caneditamount = GETPOSTINT("caneditamount"); $object->duration_value = $duration_value; $object->duration_unit = $duration_unit; $object->note = trim($comment); @@ -140,6 +142,7 @@ if ($action == 'add' && $user->rights->adherent->configurer) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Label")), null, 'errors'); } else { $sql = "SELECT libelle FROM ".MAIN_DB_PREFIX."adherent_type WHERE libelle='".$db->escape($object->label)."'"; + $sql .= " WHERE entity IN (".getEntity('member_type').")"; $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); @@ -168,7 +171,8 @@ if ($action == 'add' && $user->rights->adherent->configurer) { if ($action == 'update' && $user->rights->adherent->configurer) { $object->fetch($rowid); - $object->oldcopy = clone $object; + $object->oldcopy = dol_clone($object); + $object->label= trim($label); $object->morphy = trim($morphy); $object->status = (int) $status; @@ -199,7 +203,7 @@ if ($action == 'update' && $user->rights->adherent->configurer) { exit; } -if ($action == 'confirm_delete' && $user->rights->adherent->configurer) { +if ($action == 'confirm_delete' && !empty($user->rights->adherent->configurer)) { $object->fetch($rowid); $res = $object->delete(); @@ -229,7 +233,7 @@ llxHeader('', $langs->trans("MembersTypeSetup"), $help_url); if (!$rowid && $action != 'create' && $action != 'edit') { //print dol_get_fiche_head(''); - $sql = "SELECT d.rowid, d.libelle as label, d.subscription, d.amount, d.vote, d.statut as status, d.morphy"; + $sql = "SELECT d.rowid, d.libelle as label, d.subscription, d.amount, d.caneditamount, d.vote, d.statut as status, d.morphy"; $sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; $sql .= " WHERE d.entity IN (".getEntity('member_type').")"; @@ -276,6 +280,7 @@ if (!$rowid && $action != 'create' && $action != 'edit') { print ''.$langs->trans("MembersNature").''.$langs->trans("SubscriptionRequired").''.$langs->trans("Amount").''.$langs->trans("CanEditAmountShort").''.$langs->trans("VoteAllowed").''.$langs->trans("Status").' 
'; @@ -310,6 +316,7 @@ if (!$rowid && $action != 'create' && $action != 'edit') { print ''.yn($objp->subscription).''.(is_null($objp->amount) || $objp->amount === '' ? '' : price($objp->amount)).''.yn($objp->caneditamount).''.yn($objp->vote).''.$membertype->getLibStatut(5).'
'.$langs->trans("CanEditAmount").''; + print $form->selectyesno("caneditamount", 0, 1); + print '
'.$langs->trans("VoteAllowed").''; print $form->selectyesno("vote", GETPOSTISSET("vote") ? GETPOST('vote', 'aZ09') : 1, 1); print '
'; + print '
'; // Morphy print ''; @@ -453,6 +464,10 @@ if ($rowid > 0) { print ((is_null($object->amount) || $object->amount === '') ? '' : ''.price($object->amount).''); print ''; + print ''; + print ''; @@ -668,20 +683,23 @@ if ($rowid > 0) { print_liste_field_titre("Action", $_SERVER["PHP_SELF"], "", $param, "", 'width="60" align="center"', $sortfield, $sortorder); print "\n"; - while ($i < $num && $i < $conf->liste_limit) { + $adh = new Adherent($db); + + $imaxinloop = ($limit ? min($num, $limit) : $num); + while ($i < $imaxinloop) { $objp = $db->fetch_object($resql); $datefin = $db->jdate($objp->datefin); - $adh = new Adherent($db); $adh->lastname = $objp->lastname; $adh->firstname = $objp->firstname; $adh->datefin = $datefin; $adh->need_subscription = $objp->subscription; $adh->statut = $objp->status; - // Lastname print ''; + + // Lastname if ($objp->company != '') { print ''."\n"; } else { @@ -689,7 +707,7 @@ if ($rowid > 0) { } // Login - print "\n"; + print "\n"; // Type /*print ''; + } + print "
'.$langs->trans("MembersNature").''.$object->getmorphylib($object->morphy).'
'.$form->textwithpicto($langs->trans("CanEditAmountShort"), $langs->transnoentities("CanEditAmount")).''; + print yn($object->caneditamount); + print '
'.$langs->trans("VoteAllowed").''; print yn($object->vote); print '
'.img_object($langs->trans("ShowMember"), "user", 'class="paddingright"').$adh->getFullName($langs, 0, -1, 20).' / '.dol_trunc($objp->company, 12).'".$objp->login."".dol_escape_htmltag($objp->login)."'; @@ -746,11 +764,15 @@ if ($rowid > 0) { $i++; } + if ($i == 0) { + print '
'.$langs->trans("None").'
\n"; print ''; print ''; - if ($num > $conf->liste_limit) { + if ($num > $limit) { print_barre_liste('', $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', $num, $nbtotalofrecords, ''); } } else { diff --git a/htdocs/adherents/type_translation.php b/htdocs/adherents/type_translation.php index 72976d4e65f..d7d062a1e5f 100644 --- a/htdocs/adherents/type_translation.php +++ b/htdocs/adherents/type_translation.php @@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; // Load translation files required by the page $langs->loadLangs(array('members', 'languages')); -$id = GETPOST('rowid', 'int'); +$id = GETPOST('rowid', 'int') ? GETPOST('rowid', 'int') : GETPOST('id', 'int'); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'alpha'); $ref = GETPOST('ref', 'alphanohtml'); @@ -61,7 +61,12 @@ if ($cancel == $langs->trans("Cancel")) { if ($action == 'delete' && GETPOST('langtodelete', 'alpha')) { $object = new AdherentType($db); $object->fetch($id); - $object->delMultiLangs(GETPOST('langtodelete', 'alpha'), $user); + $result = $object->delMultiLangs(GETPOST('langtodelete', 'alpha'), $user); + if ($result > 0) { + setEventMessages($langs->trans("RecordDeleted"), null, 'mesgs'); + header("Location: ".$_SERVER["PHP_SELF"].'?id='.$id); + exit; + } } // Add translation diff --git a/htdocs/admin/accountant.php b/htdocs/admin/accountant.php index c6d321707dc..e48ce5f2382 100644 --- a/htdocs/admin/accountant.php +++ b/htdocs/admin/accountant.php @@ -46,26 +46,26 @@ $error = 0; */ $parameters = array(); -$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); } if (($action == 'update' && !GETPOST("cancel", 'alpha')) || ($action == 'updateedit')) { - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NAME", GETPOST("nom", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ADDRESS", GETPOST("address", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_TOWN", GETPOST("town", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ZIP", GETPOST("zipcode", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_STATE", GETPOST("state_id", 'int'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_REGION", GETPOST("region_code", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_COUNTRY", GETPOST('country_id', 'int'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_PHONE", GETPOST("tel", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_FAX", GETPOST("fax", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_MAIL", GETPOST("mail", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_WEB", GETPOST("web", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_CODE", GETPOST("code", 'alphanohtml'), 'chaine', 0, '', $conf->entity); - dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NOTE", GETPOST("note", 'restricthtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NAME", GETPOST("nom", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ADDRESS", GETPOST("address", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_TOWN", GETPOST("town", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_ZIP", GETPOST("zipcode", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_STATE", GETPOST("state_id", 'int'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_REGION", GETPOST("region_code", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_COUNTRY", GETPOST('country_id', 'int'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_PHONE", GETPOST("tel", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_FAX", GETPOST("fax", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_MAIL", GETPOST("mail", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_WEB", GETPOST("web", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_CODE", GETPOST("code", 'alphanohtml'), 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, "MAIN_INFO_ACCOUNTANT_NOTE", GETPOST("note", 'restricthtml'), 'chaine', 0, '', $conf->entity); if ($action != 'updateedit' && !$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); @@ -74,6 +74,7 @@ if (($action == 'update' && !GETPOST("cancel", 'alpha')) } } + /* * View */ @@ -117,7 +118,7 @@ print ''; print ''; print ''."\n"; -// Name +// Name of Accountant Company print ''."\n"; @@ -125,9 +126,11 @@ print ''."\n"; +// ZIP print ''."\n"; +// Town/City print ''."\n"; @@ -140,21 +143,25 @@ if ($user->admin) { } print ''."\n"; +// State print ''."\n"; +// Telephone print ''; print ''."\n"; +// Fax print ''; print ''."\n"; +// eMail print ''; diff --git a/htdocs/admin/agenda.php b/htdocs/admin/agenda.php index 52926cf1b19..3221738bcd3 100644 --- a/htdocs/admin/agenda.php +++ b/htdocs/admin/agenda.php @@ -184,7 +184,7 @@ if (!empty($triggers)) { } //print 'module='.$module.' code='.$trigger['code'].'
'; - if (!empty($conf->$module->enabled)) { + if (isModEnabled('module')) { // Discard special case: If option FICHINTER_CLASSIFY_BILLED is not set, we discard both trigger FICHINTER_CLASSIFY_BILLED and FICHINTER_CLASSIFY_UNBILLED if ($trigger['code'] == 'FICHINTER_CLASSIFY_BILLED' && empty($conf->global->FICHINTER_CLASSIFY_BILLED)) { continue; diff --git a/htdocs/admin/agenda_extsites.php b/htdocs/admin/agenda_extsites.php index 5567e741272..6e0a6e9085f 100644 --- a/htdocs/admin/agenda_extsites.php +++ b/htdocs/admin/agenda_extsites.php @@ -66,7 +66,7 @@ if (preg_match('/set_(.*)/', $action, $reg)) { $value = (GETPOST($code) ? GETPOST($code) : 1); $res = dolibarr_set_const($db, $code, $value, 'chaine', 0, '', $conf->entity); - if (!$res > 0) { + if (!($res > 0)) { $error++; $errors[] = $db->lasterror(); } @@ -86,7 +86,7 @@ if (preg_match('/set_(.*)/', $action, $reg)) { $code = $reg[1]; $res = dolibarr_del_const($db, $code, $conf->entity); - if (!$res > 0) { + if (!($res > 0)) { $error++; $errors[] = $db->lasterror(); } diff --git a/htdocs/admin/agenda_reminder.php b/htdocs/admin/agenda_reminder.php index 79aa081ddef..166c24f2188 100644 --- a/htdocs/admin/agenda_reminder.php +++ b/htdocs/admin/agenda_reminder.php @@ -206,7 +206,7 @@ $job->fetch(0, 'ActionComm', 'sendEmailsReminder'); // AGENDA REMINDER EMAIL print ''."\n"; print ''."\n"; print ''."\n"; print ''; @@ -369,7 +439,7 @@ if (!isset($_SERVER['WINDIR'])) { print ''; print ''; print ''; print ''; print ''; print ''; print '\n"; diff --git a/htdocs/admin/bom_extrafields.php b/htdocs/admin/bom_extrafields.php index c8ebafd4be8..0691f91b592 100644 --- a/htdocs/admin/bom_extrafields.php +++ b/htdocs/admin/bom_extrafields.php @@ -64,7 +64,7 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; * View */ - +$help_url = ''; llxHeader('', $langs->trans("BOMsSetup"), $help_url); diff --git a/htdocs/admin/clicktodial.php b/htdocs/admin/clicktodial.php index 326e7028bbf..8f98b4d25e9 100644 --- a/htdocs/admin/clicktodial.php +++ b/htdocs/admin/clicktodial.php @@ -47,8 +47,9 @@ if (!in_array('clicktodial', $conf->modules)) { if ($action == 'setvalue' && $user->admin) { $result1 = dolibarr_set_const($db, "CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", GETPOST("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS"), 'chaine', 0, '', $conf->entity); $result2 = dolibarr_set_const($db, "CLICKTODIAL_URL", GETPOST("CLICKTODIAL_URL"), 'chaine', 0, '', $conf->entity); + $result3 = dolibarr_set_const($db, "CLICKTODIAL_KEY_FOR_CIDLOOKUP", GETPOST("CLICKTODIAL_KEY_FOR_CIDLOOKUP"), 'chaine', 0, '', $conf->entity); - if ($result1 >= 0 && $result2 >= 0) { + if ($result1 >= 0 && $result2 >= 0 && $result3 >= 0) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); } else { setEventMessages($langs->trans("Error"), null, 'errors'); @@ -80,7 +81,7 @@ print ''; print '
'; print '
'.$langs->trans("CompanyInfo").''.$langs->trans("Value").'
'; print 'global->MAIN_INFO_ACCOUNTANT_NAME) ? ' autofocus="autofocus"' : '').'>
'; print '
'; print '
'; print '
'; print img_picto('', 'state', 'class="pictofixedwidth"'); print $formcompany->select_state((GETPOSTISSET('state_id') ? GETPOST('state_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_STATE) ? $conf->global->MAIN_INFO_ACCOUNTANT_STATE : '')), (GETPOSTISSET('country_id') ? GETPOST('country_id', 'int') : (!empty($conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY) ? $conf->global->MAIN_INFO_ACCOUNTANT_COUNTRY : '')), 'state_id'); print '
'; print img_picto('', 'object_phoning', '', false, 0, 0, '', 'pictofixedwidth'); print '
'; print img_picto('', 'object_phoning_fax', '', false, 0, 0, '', 'pictofixedwidth'); print '
'; print img_picto('', 'object_email', '', false, 0, 0, '', 'pictofixedwidth'); print '
'.$langs->trans('AGENDA_REMINDER_EMAIL', $langs->transnoentities("Module2300Name")); -if (!empty($conf->cron->enabled)) { +if (isModEnabled('cron')) { if (!empty($conf->global->AGENDA_REMINDER_EMAIL)) { if ($job->id > 0) { if ($job->status == $job::STATUS_ENABLED) { @@ -219,7 +219,7 @@ print ' '."\n"; -if (empty($conf->cron->enabled)) { +if (!isModEnabled('cron')) { print ''.$langs->trans("WarningModuleNotActive", $langs->transnoentitiesnoconv("Module2300Name")).''; } else { if (empty($conf->global->AGENDA_REMINDER_EMAIL)) { diff --git a/htdocs/admin/agenda_xcal.php b/htdocs/admin/agenda_xcal.php index ce36d97d06a..e3f2c7307f7 100644 --- a/htdocs/admin/agenda_xcal.php +++ b/htdocs/admin/agenda_xcal.php @@ -207,21 +207,11 @@ $message .= $langs->trans("AgendaUrlOptionsIncludeHolidays", '1', '1').'
'; print info_admin($message); -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} +$constname = 'MAIN_AGENDA_XCAL_EXPORTKEY'; + +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword($constname); // End of page llxFooter(); diff --git a/htdocs/admin/barcode.php b/htdocs/admin/barcode.php index ee0fcd5d130..4957d5fb513 100644 --- a/htdocs/admin/barcode.php +++ b/htdocs/admin/barcode.php @@ -55,6 +55,16 @@ if ($action == 'setbarcodeproducton') { $res = dolibarr_del_const($db, "BARCODE_PRODUCT_ADDON_NUM", $conf->entity); } +if ($action == 'setbarcodethirdpartyon') { + $barcodenumberingmodule = GETPOST('value', 'alpha'); + $res = dolibarr_set_const($db, "BARCODE_THIRDPARTY_ADDON_NUM", $barcodenumberingmodule, 'chaine', 0, '', $conf->entity); + if ($barcodenumberingmodule == 'mod_barcode_thirdparty_standard' && empty($conf->global->BARCODE_STANDARD_THIRDPARTY_MASK)) { + $res = dolibarr_set_const($db, "BARCODE_STANDARD_THIRDPARTY_MASK", '020{000000000}', 'chaine', 0, '', $conf->entity); + } +} elseif ($action == 'setbarcodethirdpartyoff') { + $res = dolibarr_del_const($db, "BARCODE_THIRDPARTY_ADDON_NUM", $conf->entity); +} + if ($action == 'setcoder') { $coder = GETPOST('coder', 'alpha'); $code_id = GETPOST('code_id', 'int'); @@ -180,7 +190,7 @@ foreach ($dirbarcode as $reldir) { // Select barcode numbering module -if ($conf->product->enabled) { +if (isModEnabled('product')) { print load_fiche_titre($langs->trans("BarCodeNumberManager")." (".$langs->trans("Product").")", '', ''); print '
'; @@ -241,6 +251,66 @@ if ($conf->product->enabled) { print '
'; } +// Select barcode numbering module +if (isModEnabled('societe')) { + print load_fiche_titre($langs->trans("BarCodeNumberManager")." (".$langs->trans("ThirdParty").")", '', ''); + + print '
'; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $dirbarcodenum = array_merge(array('/core/modules/barcode/'), $conf->modules_parts['barcode']); + + foreach ($dirbarcodenum as $dirroot) { + $dir = dol_buildpath($dirroot, 0); + + $handle = @opendir($dir); + if (is_resource($handle)) { + while (($file = readdir($handle)) !== false) { + if (preg_match('/^mod_barcode_thirdparty_.*php$/', $file)) { + $file = substr($file, 0, dol_strlen($file) - 4); + + try { + dol_include_once($dirroot.$file.'.php'); + } catch (Exception $e) { + dol_syslog($e->getMessage(), LOG_ERR); + } + + $modBarCode = new $file(); + print ''; + print ''; + print '\n"; + + if (!empty($conf->global->BARCODE_THIRDPARTY_ADDON_NUM) && $conf->global->BARCODE_THIRDPARTY_ADDON_NUM == "$file") { + print ''; + } else { + print ''; + } + print ''; + print "\n"; + } + } + closedir($handle); + } + } + print "
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("Status").''.$langs->trans("ShortInfo").'
'.(isset($modBarCode->name) ? $modBarCode->name : $modBarCode->nom)."\n"; + print $modBarCode->info($langs); + print ''.$modBarCode->getExample($langs)."'; + print img_picto($langs->trans("Activated"), 'switch_on'); + print ''; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print ''; + $s = $modBarCode->getToolTip($langs, null, -1); + print $form->textwithpicto('', $s, 1); + print '
\n"; + print '
'; +} /* * CHOIX ENCODAGE @@ -326,7 +396,7 @@ if ($resql) { } } } else { - print $langs->trans("ChooseABarCode"); + print ''.$langs->trans("ChooseABarCode").''; } print '
'.$langs->trans("GenbarcodeLocation").''; - print ''; + print ''; if (!empty($conf->global->GENBARCODE_LOCATION) && !@file_exists($conf->global->GENBARCODE_LOCATION)) { $langs->load("errors"); print '
'.$langs->trans("ErrorFileNotFound", $conf->global->GENBARCODE_LOCATION).''; @@ -380,7 +450,7 @@ if (!isset($_SERVER['WINDIR'])) { } // Module products -if (!empty($conf->product->enabled)) { +if (isModEnabled('product')) { print '
'.$langs->trans("SetDefaultBarcodeTypeProducts").''; @@ -391,7 +461,7 @@ if (!empty($conf->product->enabled)) { } // Module thirdparty -if (!empty($conf->societe->enabled)) { +if (isModEnabled('societe')) { print '
'.$langs->trans("SetDefaultBarcodeTypeThirdParties").''; diff --git a/htdocs/admin/bom.php b/htdocs/admin/bom.php index 459d9c47227..b19db5a3d5e 100644 --- a/htdocs/admin/bom.php +++ b/htdocs/admin/bom.php @@ -466,13 +466,13 @@ print ''; //Use draft Watermark -print "
"; +print ''; print ''; -print ""; +print ''; print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftBOMs"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print ''; -print ''; +print ''; print ''; print "\n"; @@ -89,21 +90,21 @@ print ''; print ''; +print ''; +print ''; +print ''; +print ''; + print '
'.$langs->trans("Name").''.$langs->trans("Name").''.$langs->trans("Value").'
'; print $langs->trans("ClickToDialUseTelLink").''; print $form->selectyesno("CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS", $conf->global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS, 1).'
'; print '
'; -print $langs->trans("ClickToDialUseTelLinkDesc"); +print ''.$langs->trans("ClickToDialUseTelLinkDesc").''; print '
'; print $langs->trans("DefaultLink").''; -print 'global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS ? ' disabled="disabled"' : '').' value="'.$conf->global->CLICKTODIAL_URL.'">
'; +print '
'; print ajax_autoselect('CLICKTODIAL_URL'); print '
'; print $langs->trans("ClickToDialUrlDesc").'
'; print '
'; print ''; print $langs->trans("Examples").':
'; -print 'https://myphoneserver/mypage?login=__LOGIN__&password=__PASS__&caller=__PHONEFROM__&called=__PHONETO__
'; -print 'sip:__PHONETO__@my.sip.server'; +print '* https://myphoneserver/phoneurl?login=__LOGIN__&password=__PASS__&caller=__PHONEFROM__&called=__PHONETO__
'; +print '* sip:__PHONETO__@my.sip.server'; print '
'; //if (! empty($user->clicktodial_url)) @@ -114,6 +115,37 @@ print ''; print '
'.$langs->trans("SecurityKey").''; + +global $dolibarr_main_url_root; + +// 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 + +// Url for CIDLookup +//print '
'; +//print $langs->trans("URLToLaunchCronJobs").':
'; +$url = $urlwithroot.'/public/clicktodial/cidlookup.php?securitykey='.getDolGlobalString('CLICKTODIAL_KEY_FOR_CIDLOOKUP', 'ValueToDefine').'&phone=...'; +//print img_picto('', 'globe').' '.$url."
\n"; +//print '
'; +//print '
'; + + +print ''.$langs->trans("CIDLookupURL").''; +print '
'.$url; +print '
'; +print '
'; +print ''; +if (!empty($conf->use_javascript_ajax)) { + print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token" class="linkobject"'); +} +print '
'; print ''; @@ -156,6 +188,11 @@ if (!empty($conf->global->CLICKTODIAL_URL)) { } } +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword('CLICKTODIAL_KEY_FOR_CIDLOOKUP'); + + // End of page llxFooter(); $db->close(); diff --git a/htdocs/admin/commande.php b/htdocs/admin/commande.php index 1369c5667a8..eec8bb16417 100644 --- a/htdocs/admin/commande.php +++ b/htdocs/admin/commande.php @@ -507,7 +507,7 @@ print '
".$langs->trans("SuggestPaymentByRIBOnAccount").""; if (empty($conf->facture->enabled)) { - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql = "SELECT rowid, label"; $sql .= " FROM ".MAIN_DB_PREFIX."bank_account"; $sql .= " WHERE clos = 0"; @@ -625,13 +625,13 @@ print ''; //Use draft Watermark -print "
"; +print ''; print ''; -print ""; +print ''; print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftOrders"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print ''; print ''; diff --git a/htdocs/admin/confexped.php b/htdocs/admin/confexped.php index c2ca271e5ea..6eaeb0bf233 100644 --- a/htdocs/admin/confexped.php +++ b/htdocs/admin/confexped.php @@ -44,7 +44,7 @@ $action = GETPOST('action', 'aZ09'); */ // Shipment note -if (!empty($conf->expedition->enabled) && empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { +if (isModEnabled('expedition') && empty($conf->global->MAIN_SUBMODULE_EXPEDITION)) { // This option should always be set to on when module is on. dolibarr_set_const($db, "MAIN_SUBMODULE_EXPEDITION", "1", 'chaine', 0, '', $conf->entity); } diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index 1426c323c01..1354f418967 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -26,6 +26,7 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; // Load translation files required by the page $langs->load("admin"); @@ -185,12 +186,12 @@ print ''; print '
'; print ''; print ''; -print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '')."\n"; +print getTitleFieldOfList('Name', 0, $_SERVER['PHP_SELF'], 'name', '', $param, '', $sortfield, $sortorder, '') . "\n"; print getTitleFieldOfList("Value", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder); print getTitleFieldOfList("Comment", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder); -print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n"; -if (!empty($conf->multicompany->enabled) && !$user->entity) { - print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ')."\n"; +print getTitleFieldOfList('DateModificationShort', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ') . "\n"; +if (isModEnabled('multicompany') && !$user->entity) { + print getTitleFieldOfList('Entity', 0, $_SERVER['PHP_SELF'], 'tms', '', $param, '', $sortfield, $sortorder, 'center ') . "\n"; } print getTitleFieldOfList("", 0, $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder, 'center '); print "\n"; @@ -211,16 +212,16 @@ print ''; print ''; // Limit to superadmin -if (!empty($conf->multicompany->enabled) && !$user->entity) { +if (isModEnabled('multicompany') && !$user->entity) { print ''; print '\n"; print ''; @@ -255,16 +256,18 @@ if ($result) { while ($i < $num) { $obj = $db->fetch_object($result); + $value = dolDecrypt($obj->value); + print "\n"; - print ''."\n"; + print ''."\n"; // Value print ''; // Note @@ -273,19 +276,19 @@ if ($result) { print ''; // Date last change - print ''; // Entity limit to superadmin - if (!empty($conf->multicompany->enabled) && !$user->entity) { + if (isModEnabled('multicompany') && !$user->entity) { print ''; print ''."\n"; print ''."\n"; print ''; diff --git a/htdocs/admin/dav.php b/htdocs/admin/dav.php index 698bb187d67..d9825ad6886 100644 --- a/htdocs/admin/dav.php +++ b/htdocs/admin/dav.php @@ -185,13 +185,13 @@ $message .= ajax_autoselect('webdavpublicurl'); $message .= '
'; if (!empty($conf->global->DAV_ALLOW_PUBLIC_DIR)) { - $urlEntity = (!empty($conf->multicompany->enabled) ? '?entity='.$conf->entity : ''); - $url = ''.$urlwithroot.'/dav/fileserver.php/public/'.$urlEntity.''; + $urlEntity = (isModEnabled('multicompany') ? '?entity=' . $conf->entity : ''); + $url = '' . $urlwithroot . '/dav/fileserver.php/public/' . $urlEntity . ''; - $message .= img_picto('', 'globe').' '.str_replace('{url}', $url, $langs->trans("WebDavServer", 'WebDAV public', '')); - $message .= '
'; print ''; - print ''; + print ''; print ''; } else { print ''; - print ''; + print ''; } -print ''; +print ''; print "
'.$obj->name.'
'.dol_escape_htmltag($obj->name).''; print ''; print ''; print ''; - print ''; + print ''; print ''; + print ''; print dol_print_date($db->jdate($obj->tms), 'dayhour'); print ''; - print ''; + print ''; print ''; } else { print ''; - print ''; + print ''; } if ($conf->use_javascript_ajax) { diff --git a/htdocs/admin/contract.php b/htdocs/admin/contract.php index e8a1fc85790..31d0776da6b 100644 --- a/htdocs/admin/contract.php +++ b/htdocs/admin/contract.php @@ -142,7 +142,7 @@ if ($action == 'updateMask') { $value = GETPOST('activate_hideClosedServiceByDefault', 'alpha'); $res3 = dolibarr_set_const($db, "CONTRACT_HIDE_CLOSED_SERVICES_BY_DEFAULT", $value, 'chaine', 0, '', $conf->entity); - if (!$res1 > 0 || !$res2 > 0 || !$res3 > 0) { + if (!($res1 > 0) || !($res2 > 0) || !($res3 > 0)) { $error++; } @@ -458,7 +458,7 @@ print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print '
'; print ''; print ''; -print ''; +print ''; print "\n"; print ''; print ''; diff --git a/htdocs/admin/defaultvalues.php b/htdocs/admin/defaultvalues.php index 088c84de3f0..f83b77e67a6 100644 --- a/htdocs/admin/defaultvalues.php +++ b/htdocs/admin/defaultvalues.php @@ -306,7 +306,7 @@ if ($mode != 'focus' && $mode != 'mandatory') { print_liste_field_titre($textvalue, $_SERVER["PHP_SELF"], 'value', '', $param, '', $sortfield, $sortorder); } // Entity -if (!empty($conf->multicompany->enabled) && !$user->entity) { +if (isModEnabled('multicompany') && !$user->entity) { print_liste_field_titre("Entity", $_SERVER["PHP_SELF"], 'entity,page', '', $param, '', $sortfield, $sortorder); } else { print_liste_field_titre("", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder); @@ -335,13 +335,13 @@ if ($mode != 'focus' && $mode != 'mandatory') { print ''; } // Limit to superadmin -if (!empty($conf->multicompany->enabled) && !$user->entity) { +if (isModEnabled('multicompany') && !$user->entity) { print ''; } else { print ''; } print ''; foreach ($modules as $module => $delays) { - if (!empty($conf->$module->enabled)) { + if (isModEnabled('module')) { foreach ($delays as $delay) { - $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0); + $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']} : 0); print ''; - print ''; - print ''; + print ''; + print ''; } } } @@ -260,13 +260,13 @@ if ($action == 'edit') { print ''; foreach ($modules as $module => $delays) { - if (!empty($conf->$module->enabled)) { + if (isModEnabled('module')) { foreach ($delays as $delay) { - $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']}:0); + $value = (!empty($conf->global->{$delay['code']}) ? $conf->global->{$delay['code']} : 0); print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; } } } diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 6453210e596..05f692be526 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -483,33 +483,33 @@ $tabrowid[44] = "rowid"; // Condition to show dictionary in setup page $tabcond = array(); -$tabcond[1] = (!empty($conf->societe->enabled)); +$tabcond[1] = (isModEnabled("societe")); $tabcond[2] = true; $tabcond[3] = true; $tabcond[4] = true; -$tabcond[5] = (!empty($conf->societe->enabled) || !empty($conf->adherent->enabled)); +$tabcond[5] = (isModEnabled("societe") || !empty($conf->adherent->enabled)); $tabcond[6] = isModEnabled('agenda'); $tabcond[7] = !empty($conf->tax->enabled); -$tabcond[8] = !empty($conf->societe->enabled); +$tabcond[8] = isModEnabled("societe"); $tabcond[9] = true; $tabcond[10] = true; -$tabcond[11] = (!empty($conf->societe->enabled)); -$tabcond[12] = (!empty($conf->commande->enabled) || !empty($conf->propal->enabled) || isModEnabled('facture') || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled) || !empty($conf->supplier_order->enabled)); -$tabcond[13] = (!empty($conf->commande->enabled) || !empty($conf->propal->enabled) || isModEnabled('facture') || (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled) || !empty($conf->supplier_order->enabled)); -$tabcond[14] = (!empty($conf->product->enabled) && (!empty($conf->ecotax->enabled) || !empty($conf->global->MAIN_SHOW_ECOTAX_DICTIONNARY))); +$tabcond[11] = (isModEnabled("societe")); +$tabcond[12] = (!empty($conf->commande->enabled) || isModEnabled("propal") || isModEnabled('facture') || (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice") || isModEnabled("supplier_order")); +$tabcond[13] = (!empty($conf->commande->enabled) || isModEnabled("propal") || isModEnabled('facture') || (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice") || isModEnabled("supplier_order")); +$tabcond[14] = (isModEnabled("product") && (!empty($conf->ecotax->enabled) || !empty($conf->global->MAIN_SHOW_ECOTAX_DICTIONNARY))); $tabcond[15] = true; -$tabcond[16] = (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)); +$tabcond[16] = (isModEnabled("societe") && empty($conf->global->SOCIETE_DISABLE_PROSPECTS)); $tabcond[17] = (!empty($conf->deplacement->enabled) || !empty($conf->expensereport->enabled)); -$tabcond[18] = !empty($conf->expedition->enabled) || !empty($conf->reception->enabled); -$tabcond[19] = !empty($conf->societe->enabled); -$tabcond[20] = (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled); -$tabcond[21] = !empty($conf->propal->enabled); -$tabcond[22] = (!empty($conf->commande->enabled) || !empty($conf->propal->enabled)); +$tabcond[18] = isModEnabled("expedition") || isModEnabled("reception"); +$tabcond[19] = isModEnabled("societe"); +$tabcond[20] = (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order"); +$tabcond[21] = isModEnabled("propal"); +$tabcond[22] = (!empty($conf->commande->enabled) || isModEnabled("propal")); $tabcond[23] = true; $tabcond[24] = !empty($conf->resource->enabled); $tabcond[25] = !empty($conf->website->enabled); -//$tabcond[26]= !empty($conf->product->enabled); -$tabcond[27] = !empty($conf->societe->enabled); +//$tabcond[26]= isModEnabled("product"); +$tabcond[27] = isModEnabled("societe"); $tabcond[28] = !empty($conf->holiday->enabled); $tabcond[29] = !empty($conf->project->enabled); $tabcond[30] = !empty($conf->label->enabled); @@ -519,13 +519,13 @@ $tabcond[33] = !empty($conf->hrm->enabled); $tabcond[34] = !empty($conf->hrm->enabled); $tabcond[35] = !empty($conf->expensereport->enabled) && !empty($conf->global->MAIN_USE_EXPENSE_IK); $tabcond[36] = !empty($conf->expensereport->enabled) && !empty($conf->global->MAIN_USE_EXPENSE_IK); -$tabcond[37] = !empty($conf->product->enabled); +$tabcond[37] = isModEnabled("product"); $tabcond[38] = !empty($conf->socialnetworks->enabled); -$tabcond[39] = (!empty($conf->societe->enabled) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES)); -$tabcond[40] = (!empty($conf->societe->enabled) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES)); +$tabcond[39] = (isModEnabled("societe") && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES)); +$tabcond[40] = (isModEnabled("societe") && !empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES)); $tabcond[41] = !empty($conf->intracommreport->enabled); -$tabcond[42] = !empty($conf->product->enabled); -$tabcond[43] = !empty($conf->product->enabled) && !empty($conf->productbatch->enabled) && $conf->global->MAIN_FEATURES_LEVEL >= 2; +$tabcond[42] = isModEnabled("product"); +$tabcond[43] = isModEnabled("product") && !empty($conf->productbatch->enabled) && $conf->global->MAIN_FEATURES_LEVEL >= 2; $tabcond[44] = !empty($conf->asset->enabled); // List of help for fields (no more used, help is defined into tabcomplete) @@ -622,34 +622,33 @@ $sourceList = array(); if ($id == 11) { $elementList = array( '' => '', - 'societe' => $langs->trans('ThirdParty'), + 'agenda' => img_picto('', 'action', 'class="pictofixedwidth"').$langs->trans('Agenda'), + 'dolresource' => img_picto('', 'resource', 'class="pictofixedwidth"').$langs->trans('Resource'), + 'societe' => img_picto('', 'company', 'class="pictofixedwidth"').$langs->trans('ThirdParty'), // 'proposal' => $langs->trans('Proposal'), // 'order' => $langs->trans('Order'), // 'invoice' => $langs->trans('Bill'), - 'supplier_proposal' => $langs->trans('SupplierProposal'), - 'order_supplier' => $langs->trans('SupplierOrder'), - 'invoice_supplier' => $langs->trans('SupplierBill'), // 'intervention' => $langs->trans('InterventionCard'), // 'contract' => $langs->trans('Contract'), - 'project' => $langs->trans('Project'), - 'project_task' => $langs->trans('Task'), - 'ticket' => $langs->trans('Ticket'), - 'agenda' => $langs->trans('Agenda'), - 'dolresource' => $langs->trans('Resource'), - // old deprecated - 'propal' => $langs->trans('Proposal'), - 'commande' => $langs->trans('Order'), - 'facture' => $langs->trans('Bill'), - 'fichinter' => $langs->trans('InterventionCard'), - 'contrat' => $langs->trans('Contract'), + 'project' => img_picto('', 'project', 'class="pictofixedwidth"').$langs->trans('Project'), + 'project_task' => img_picto('', 'projecttask', 'class="pictofixedwidth"').$langs->trans('Task'), + 'propal' => img_picto('', 'propal', 'class="pictofixedwidth"').$langs->trans('Proposal'), + 'commande' => img_picto('', 'order', 'class="pictofixedwidth"').$langs->trans('Order'), + 'facture' => img_picto('', 'bill', 'class="pictofixedwidth"').$langs->trans('Bill'), + 'fichinter' => img_picto('', 'intervention', 'class="pictofixedwidth"').$langs->trans('InterventionCard'), + 'contrat' => img_picto('', 'contract', 'class="pictofixedwidth"').$langs->trans('Contract'), + 'ticket' => img_picto('', 'ticket', 'class="pictofixedwidth"').$langs->trans('Ticket'), + 'supplier_proposal' => img_picto('', 'supplier_proposal', 'class="pictofixedwidth"').$langs->trans('SupplierProposal'), + 'order_supplier' => img_picto('', 'supplier_order', 'class="pictofixedwidth"').$langs->trans('SupplierOrder'), + 'invoice_supplier' => img_picto('', 'supplier_invoice', 'class="pictofixedwidth"').$langs->trans('SupplierBill'), ); - if (!empty($conf->global->MAIN_SUPPORT_SHARED_CONTACT_BETWEEN_THIRDPARTIES)) { - $elementList["societe"] = $langs->trans('ThirdParty'); + if (!empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2) { + $elementList['conferenceorbooth'] = img_picto('', 'eventorganization', 'class="pictofixedwidth"').$langs->trans('ConferenceOrBooth'); } complete_elementList_with_modules($elementList); - asort($elementList); + //asort($elementList); $sourceList = array( 'internal' => $langs->trans('Internal'), 'external' => $langs->trans('External') @@ -1202,7 +1201,6 @@ if (GETPOST('from')) { if ($action == 'delete') { print $form->formconfirm($_SERVER["PHP_SELF"].'?'.($page ? 'page='.$page.'&' : '').'rowid='.urlencode($rowid).'&code='.urlencode($code).$paramwithsearch, $langs->trans('DeleteLine'), $langs->trans('ConfirmDeleteLine'), 'confirm_delete', '', 0, 1); } -//var_dump($elementList); /* @@ -1222,14 +1220,16 @@ if ($id > 0) { $sql .= natural_search("code_iso", $search_code); } elseif ($search_code != '' && $id == 28) { $sql .= natural_search("h.code", $search_code); - } elseif ($search_code != '' && $id == 32) { + } elseif ($search_code != '' && ($id == 7 || $id == 32)) { $sql .= natural_search("a.code", $search_code); } elseif ($search_code != '' && $id == 3) { $sql .= natural_search("r.code_region", $search_code); - } elseif ($search_code != '' && $id == 7) { - $sql .= natural_search("a.code", $search_code); - } elseif ($search_code != '' && $id == 10) { + } elseif ($search_code != '' && ($id == 8 || $id == 10)) { $sql .= natural_search("t.code", $search_code); + } elseif ($search_code != '' && $id == 1) { + $sql .= natural_search("f.code", $search_code); + } elseif ($search_code != '' && $id == 2) { + $sql .= natural_search("d.code_departement", $search_code); } elseif ($search_code != '' && $id != 9) { $sql .= natural_search("code", $search_code); } @@ -1960,7 +1960,7 @@ if ($id > 0) { $valuetoshow = price($valuetoshow); } if ($value == 'private') { - $valuetoshow = yn($elementList[$valuetoshow]); + $valuetoshow = yn($valuetoshow); } elseif ($value == 'libelle_facture') { $langs->load("bills"); $key = $langs->trans("PaymentCondition".strtoupper($obj->code)); @@ -2090,6 +2090,8 @@ if ($id > 0) { $valuetoshow = $langs->trans($obj->{$value}); } elseif ($value == 'block_if_negative') { $valuetoshow = yn($obj->{$value}); + } elseif ($value == 'icon') { + $valuetoshow = $obj->{$value}." ".img_picto("", $obj->{$value}); } elseif ($value == 'type_duration') { $TDurationTypes = array('y'=>$langs->trans('Years'), 'm'=>$langs->trans('Month'), 'w'=>$langs->trans('Weeks'), 'd'=>$langs->trans('Days'), 'h'=>$langs->trans('Hours'), 'i'=>$langs->trans('Minutes')); $valuetoshow =$TDurationTypes[$obj->{$value}]; @@ -2373,9 +2375,15 @@ function fieldList($fieldlist, $obj = '', $tabname = '', $context = '') print ''; - } elseif (in_array($value, array('element', 'source'))) { //Example: the type and source of the element (for contact types) + } elseif (in_array($value, array('element', 'source'))) { // Example: the type and source of the element (for contact types) + $tmparray = array(); + if ($value == 'element') { + $tmparray = $elementList; + } else { + $tmparray = $sourceList; + } print ''; } elseif (in_array($value, array('public', 'use_default'))) { // Fields 0/1 with a combo select Yes/No diff --git a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php index 521a24f490d..de6210ba531 100644 --- a/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php +++ b/htdocs/admin/dolistore/class/PSWebServiceLibrary.class.php @@ -206,7 +206,7 @@ class PrestaShopWebservice */ public function printDebug($title, $content) { - echo '
'.$title.'
'.htmlentities($content).'
'; + echo '
'.dol_escape_htmltag($title).'
'.dol_escape_htmltag($content).'
'; } /** diff --git a/htdocs/admin/emailcollector_card.php b/htdocs/admin/emailcollector_card.php index ab4f0c7def0..e41777da9d9 100644 --- a/htdocs/admin/emailcollector_card.php +++ b/htdocs/admin/emailcollector_card.php @@ -37,7 +37,7 @@ include_once DOL_DOCUMENT_ROOT.'/emailcollector/lib/emailcollector.lib.php'; if (!$user->admin) { accessforbidden(); } -if (empty($conf->emailcollector->enabled)) { +if (!isModEnabled('emailcollector')) { accessforbidden(); } @@ -91,9 +91,9 @@ include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be includ //$isdraft = (($object->statut == MyObject::STATUS_DRAFT) ? 1 : 0); //$result = restrictedArea($user, 'mymodule', $object->id, '', '', 'fk_soc', 'rowid', $isdraft); -$permissionnote = $user->rights->emailcollector->write; // Used by the include of actions_setnotes.inc.php -$permissiondellink = $user->rights->emailcollector->write; // Used by the include of actions_dellink.inc.php -$permissiontoadd = $user->rights->emailcollector->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php +$permissionnote = $user->admin; // Used by the include of actions_setnotes.inc.php +$permissiondellink = $user->admin; // Used by the include of actions_dellink.inc.php +$permissiontoadd = $user->admin; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php $debuginfo = ''; @@ -192,7 +192,7 @@ if ($action == 'updateoperation') { $emailcollectoroperation = new EmailCollectorAction($db); $emailcollectoroperation->fetch(GETPOST('rowidoperation2', 'int')); - $emailcollectoroperation->actionparam = GETPOST('operationparam2', 'restricthtml'); + $emailcollectoroperation->actionparam = GETPOST('operationparam2', 'alphawithlgt'); if (in_array($emailcollectoroperation->type, array('loadthirdparty', 'loadandcreatethirdparty')) && empty($emailcollectoroperation->actionparam)) { @@ -337,14 +337,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Confirmation of action process if ($action == 'collect') { - $formquestion = array( - 'text' => $langs->trans("EmailCollectorConfirmCollect"), - ); - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('EmailCollectorConfirmCollectTitle'), $text, 'confirm_collect', $formquestion, 0, 1, 220); + $formquestion = array(); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('EmailCollectorConfirmCollectTitle'), $langs->trans('EmailCollectorConfirmCollect'), 'confirm_collect', $formquestion, 0, 1, 220); } // Call Hook formConfirm - $parameters = array('formConfirm' => $formconfirm, 'lineid' => $lineid); + $parameters = array('formConfirm' => $formconfirm); $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if (empty($reshook)) { $formconfirm .= $hookmanager->resPrint; @@ -378,33 +376,54 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $connectstringserver = $object->getConnectStringIMAP($usessl); - try { - if ($sourcedir) { - //$connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); - $connectstringsource = $connectstringserver.$object->getEncodedUtf7($sourcedir); - } - if ($targetdir) { - //$connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); - $connectstringtarget = $connectstringserver.$object->getEncodedUtf7($targetdir); + if ($action == 'scan') { + try { + if ($sourcedir) { + //$connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); + $connectstringsource = $connectstringserver.$object->getEncodedUtf7($sourcedir); + } + if ($targetdir) { + //$connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); + $connectstringtarget = $connectstringserver.$object->getEncodedUtf7($targetdir); + } + + $timeoutconnect = empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT; + $timeoutread = empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 20 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT; + + dol_syslog("imap_open connectstring=".$connectstringsource." login=".$object->login." password=".$object->password." timeoutconnect=".$timeoutconnect." timeoutread=".$timeoutread); + + $result1 = imap_timeout(IMAP_OPENTIMEOUT, $timeoutconnect); // timeout seems ignored with ssl connect + $result2 = imap_timeout(IMAP_READTIMEOUT, $timeoutread); + $result3 = imap_timeout(IMAP_WRITETIMEOUT, 5); + $result4 = imap_timeout(IMAP_CLOSETIMEOUT, 5); + + dol_syslog("result1=".$result1." result2=".$result2." result3=".$result3." result4=".$result4); + + $connection = imap_open($connectstringsource, $object->login, $object->password); + + //dol_syslog("end imap_open connection=".var_export($connection, true)); + } catch (Exception $e) { + print $e->getMessage(); } - $timeoutconnect = empty($conf->global->MAIN_USE_CONNECT_TIMEOUT) ? 5 : $conf->global->MAIN_USE_CONNECT_TIMEOUT; - $timeoutread = empty($conf->global->MAIN_USE_RESPONSE_TIMEOUT) ? 20 : $conf->global->MAIN_USE_RESPONSE_TIMEOUT; + if (!$connection) { + $morehtml .= 'Failed to open IMAP connection '.$connectstringsource; + if (function_exists('imap_last_error')) { + $morehtml .= '
'.imap_last_error(); + } + dol_syslog("Error ".$morehtml, LOG_WARNING); + //var_dump(imap_errors()) + } else { + dol_syslog("Imap connected. Now we call imap_num_msg()"); + $morehtml .= imap_num_msg($connection); + } - dol_syslog("imap_open connectstring=".$connectstringsource." login=".$object->login." password=".$object->password." timeoutconnect=".$timeoutconnect." timeoutread=".$timeoutread); - - $result1 = imap_timeout(IMAP_OPENTIMEOUT, $timeoutconnect); // timeout seems ignored with ssl connect - $result2 = imap_timeout(IMAP_READTIMEOUT, $timeoutread); - $result3 = imap_timeout(IMAP_WRITETIMEOUT, 5); - $result4 = imap_timeout(IMAP_CLOSETIMEOUT, 5); - - dol_syslog("result1=".$result1." result2=".$result2." result3=".$result3." result4=".$result4); - - $connection = imap_open($connectstringsource, $object->login, $object->password); - - //dol_syslog("end imap_open connection=".var_export($connection, true)); - } catch (Exception $e) { - print $e->getMessage(); + if ($connection) { + dol_syslog("Imap close"); + imap_close($connection); + } + } else { + $morehtml .= ''.img_picto('', 'refresh', 'class="paddingrightonly"').$langs->trans("Refresh").''; } $morehtml .= $form->textwithpicto('', 'connect string '.$connectstringserver); @@ -412,23 +431,6 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $morehtml .= 'IMAP functions not available on your PHP. '; } - if (!$connection) { - $morehtml .= 'Failed to open IMAP connection '.$connectstringsource; - if (function_exists('imap_last_error')) { - $morehtml .= '
'.imap_last_error(); - } - dol_syslog("Error ".$morehtml, LOG_WARNING); - //var_dump(imap_errors()) - } else { - dol_syslog("Imap connected. Now we call imap_num_msg()"); - $morehtml .= imap_num_msg($connection); - } - - if ($connection) { - dol_syslog("Imap close"); - imap_close($connection); - } - dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref.'
'.$morehtml.'
', '', 0, '', '', 0, ''); print '
'; @@ -545,20 +547,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '
'; $arrayoftypes = array( - 'loadthirdparty'=>$langs->trans('LoadThirdPartyFromName', $langs->transnoentities("ThirdPartyName")), - 'loadandcreatethirdparty'=>$langs->trans('LoadThirdPartyFromNameOrCreate', $langs->transnoentities("ThirdPartyName")), - 'recordjoinpiece'=>'AttachJoinedDocumentsToObject', - 'recordevent'=>'RecordEvent'); + 'loadthirdparty' => $langs->trans('LoadThirdPartyFromName', $langs->transnoentities("ThirdPartyName")), + 'loadandcreatethirdparty' => $langs->trans('LoadThirdPartyFromNameOrCreate', $langs->transnoentities("ThirdPartyName")), + 'recordjoinpiece' => 'AttachJoinedDocumentsToObject', + 'recordevent' => 'RecordEvent' + ); $arrayoftypesnocondition = $arrayoftypes; - if (!empty($conf->project->enabled)) { + if (isModEnabled('project')) { $arrayoftypes['project'] = 'CreateLeadAndThirdParty'; } $arrayoftypesnocondition['project'] = 'CreateLeadAndThirdParty'; - if (!empty($conf->ticket->enabled)) { + if (isModEnabled('ticket')) { $arrayoftypes['ticket'] = 'CreateTicketAndThirdParty'; } $arrayoftypesnocondition['ticket'] = 'CreateTicketAndThirdParty'; - if (!empty($conf->recruitment->enabled)) { + if (isModEnabled('recruitment')) { $arrayoftypes['candidature'] = 'CreateCandidature'; } $arrayoftypesnocondition['candidature'] = 'CreateCandidature'; @@ -580,11 +583,11 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; print ''; print ''; @@ -616,12 +619,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; // Move up/down @@ -675,7 +678,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; // Clone - print ''; + print ''; // Collect now if (count($object->actions) > 0) { diff --git a/htdocs/admin/emailcollector_list.php b/htdocs/admin/emailcollector_list.php index 6a980642c5f..a41e57266aa 100644 --- a/htdocs/admin/emailcollector_list.php +++ b/htdocs/admin/emailcollector_list.php @@ -142,7 +142,7 @@ $permissiontodelete = $user->admin; if (!$user->admin) { accessforbidden(); } -if (empty($conf->emailcollector->enabled)) { +if (!isModEnabled('emailcollector')) { accessforbidden('Module not enabled'); } diff --git a/htdocs/admin/eventorganization.php b/htdocs/admin/eventorganization.php index ee6c2ae6b52..40c86d79e13 100644 --- a/htdocs/admin/eventorganization.php +++ b/htdocs/admin/eventorganization.php @@ -228,14 +228,14 @@ if ($action == 'edit') { if ($val['type'] == 'textarea') { print '\n"; } elseif ($val['type']== 'html') { require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; - $doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%'); + $doleditor = new DolEditor($constname, getDolGlobalString($constname), '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%'); $doleditor->Create(); } elseif ($val['type'] == 'yesno') { - print $form->selectyesno($constname, $conf->global->{$constname}, 1); + print $form->selectyesno($constname, getDolGlobalString($constname), 1); } elseif (preg_match('/emailtemplate:/', $val['type'])) { include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; $formmail = new FormMail($db); @@ -255,7 +255,7 @@ if ($action == 'edit') { $arrayofmessagename[$modelmail->id] = $langs->trans(preg_replace('/\(|\)/', '', $modelmail->label)) . $moreonlabel; } } - print $form->selectarray($constname, $arrayofmessagename, $conf->global->{$constname}, 'None', 0, 0, '', 0, 0, 0, '', '', 1); + print $form->selectarray($constname, $arrayofmessagename, getDolGlobalString($constname), 'None', 0, 0, '', 0, 0, 0, '', '', 1); } elseif (preg_match('/category:/', $val['type'])) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; @@ -263,38 +263,27 @@ if ($action == 'edit') { $tmp = explode(':', $val['type']); print img_picto('', 'category', 'class="pictofixedwidth"'); - print $formother->select_categories($tmp[1], $conf->global->{$constname}, $constname, 0, $langs->trans('CustomersProspectsCategoriesShort')); + print $formother->select_categories($tmp[1], getDolGlobalString($constname), $constname, 0, $langs->trans('CustomersProspectsCategoriesShort')); } elseif (preg_match('/thirdparty_type/', $val['type'])) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; $formcompany = new FormCompany($db); - print $formcompany->selectProspectCustomerType($conf->global->{$constname}, $constname, 'customerorprospect', 'form', '', 1); + print $formcompany->selectProspectCustomerType(getDolGlobalString($constname), $constname, 'customerorprospect', 'form', '', 1); } elseif ($val['type'] == 'securekey') { - print ''; + print ''; if (!empty($conf->use_javascript_ajax)) { print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token'.$constname.'" class="linkobject"'); } - if (!empty($conf->use_javascript_ajax)) { - print "\n".''; - } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + print dolJSToSetRandomPassword($constname, 'generate_token'.$constname); } elseif ($val['type'] == 'product') { - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname); $form->select_produits($selected, $constname, '', 0); } } else { - print ''; + print ''; } print ''; } @@ -320,28 +309,28 @@ if ($action == 'edit') { print ''; } diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index cb49404a8b9..0a9009889f8 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -451,7 +451,7 @@ print "\n"; print '\n"; print '
'.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("DEBUGBAR_USE_LOG_FILE").''; -print $form->selectyesno('DEBUGBAR_USE_LOG_FILE', $conf->global->DEBUGBAR_USE_LOG_FILE, 1); +print $form->selectyesno('DEBUGBAR_USE_LOG_FILE', !empty($conf->global->DEBUGBAR_USE_LOG_FILE), 1); print ''; print ' '.$langs->trans("UsingLogFileShowAllRecordOfSubrequestButIsSlower").''; print '
'; - print ''; // We see environment, but to change it we must switch on other entity + print ''; // We see environment, but to change it we must switch on other entity print ''; - print ''; + print ''; print ''; diff --git a/htdocs/admin/delais.php b/htdocs/admin/delais.php index 2ae77b03d07..af8fed1c197 100644 --- a/htdocs/admin/delais.php +++ b/htdocs/admin/delais.php @@ -172,7 +172,7 @@ if (!isset($conf->global->MAIN_DELAY_ORDERS_TO_PROCESS)) { if ($action == 'update') { foreach ($modules as $module => $delays) { - if (!empty($conf->$module->enabled)) { + if (isModEnabled('module')) { foreach ($delays as $delay) { if (GETPOST($delay['code']) != '') { dolibarr_set_const($db, $delay['code'], GETPOST($delay['code']), 'chaine', 0, '', $conf->entity); @@ -226,13 +226,13 @@ if ($action == 'edit') { print ''.$langs->trans("LateWarningAfter").'
'.img_object('', $delay['img']).''.$langs->trans('Delays_'.$delay['code']).''; - print ' '.$langs->trans("days").'
' . img_object('', $delay['img']) . '' . $langs->trans('Delays_' . $delay['code']) . ''; + print ' ' . $langs->trans("days") . '
'.$langs->trans("DelaysOfToleranceBeforeWarning").''.$langs->trans("Value").'
'.img_object('', $delay['img']).''.$langs->trans('Delays_'.$delay['code']).''.$value.' '.$langs->trans("days").'
' . img_object('', $delay['img']) . '' . $langs->trans('Delays_' . $delay['code']) . '' . $value . ' ' . $langs->trans("days") . '
'; print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT, 'lang'); print ''; - print $form->selectarray($value, $elementList, (!empty($obj->{$value}) ? $obj->{$value}:'')); + print $form->selectarray($value, $tmparray, (!empty($obj->{$value}) ? $obj->{$value}:''), 0, 0, 0, '', 0, 0, 0, '', 'maxwidth250'); print '
'; print $form->selectarray('operationtype', $arrayoftypes, '', 1, 0, 0, '', 1, 0, 0, '', 'maxwidth300', 1); print ''; - print ''; + //print ''; + $htmltext = $langs->transnoentitiesnoconv("OperationParamDesc"); + print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'operationparamtt'); print ''; - $htmltext = $langs->transnoentitiesnoconv("OperationParamDesc"); - print $form->textwithpicto('', $htmltext, 1, 'help', '', 0, 2, 'operationparamtt'); print '
'; if ($action == 'editoperation' && $ruleaction['id'] == $operationid) { - print '
'; + print '
'; print ''; print ''; print ''; } else { - print $ruleaction['actionparam']; + print dol_escape_htmltag($ruleaction['actionparam']); } print '
'; if ($val['type'] == 'textarea') { - print dol_nl2br($conf->global->{$constname}); + print dol_nl2br(getDolGlobalString($constname)); } elseif ($val['type']== 'html') { - print $conf->global->{$constname}; + print getDolGlobalString($constname); } elseif ($val['type'] == 'yesno') { print ajax_constantonoff($constname); } elseif (preg_match('/emailtemplate:/', $val['type'])) { - if (!empty($conf->global->{$constname})) { + if (getDolGlobalString($constname)) { include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; $formmail = new FormMail($db); $tmp = explode(':', $val['type']); - $template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, $conf->global->{$constname}); + $template = $formmail->getEMailTemplate($db, $tmp[1], $user, $langs, getDolGlobalString($constname)); if ($template < 0) { setEventMessages(null, $formmail->errors, 'errors'); } print $langs->trans($template->label); } } elseif (preg_match('/category:/', $val['type'])) { - if (!empty($conf->global->{$constname})) { + if (getDolGlobalString($constname)) { $c = new Categorie($db); - $result = $c->fetch($conf->global->{$constname}); + $result = $c->fetch(getDolGlobalString($constname)); if ($result < 0) { setEventMessages(null, $c->errors, 'errors'); } @@ -353,25 +342,25 @@ if ($action == 'edit') { print '
    ' . implode(' ', $toprint) . '
'; } } elseif (preg_match('/thirdparty_type/', $val['type'])) { - if ($conf->global->{$constname}==2) { + if (getDolGlobalString($constname)==2) { print $langs->trans("Prospect"); - } elseif ($conf->global->{$constname}==3) { + } elseif (getDolGlobalString($constname)==3) { print $langs->trans("ProspectCustomer"); - } elseif ($conf->global->{$constname}==1) { + } elseif (getDolGlobalString($constname)==1) { print $langs->trans("Customer"); - } elseif ($conf->global->{$constname}==0) { + } elseif (getDolGlobalString($constname)==0) { print $langs->trans("NorProspectNorCustomer"); } } elseif ($val['type'] == 'product') { $product = new Product($db); - $resprod = $product->fetch($conf->global->{$constname}); + $resprod = $product->fetch(getDolGlobalString($constname)); if ($resprod > 0) { print $product->getNomUrl(1); } elseif ($resprod < 0) { - setEventMessages(null, $object->errors, "errors"); + setEventMessages($product->error, $product->errors, "errors"); } } else { - print $conf->global->{$constname}; + print getDolGlobalString($constname); } print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; -print ''; +print ''; print "
'; diff --git a/htdocs/admin/expensereport.php b/htdocs/admin/expensereport.php index 0c54eade6da..2418ec3e26c 100644 --- a/htdocs/admin/expensereport.php +++ b/htdocs/admin/expensereport.php @@ -6,7 +6,7 @@ * Copyright (C) 2005-2014 Regis Houssin * Copyright (C) 2008 Raphael Bertrand (Resultic) * Copyright (C) 2011-2013 Juanjo Menent - * Copyright (C) 2011-2018 Philippe Grand + * Copyright (C) 2011-2022 Philippe Grand * * 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 @@ -148,7 +148,7 @@ if ($action == 'updateMask') { $res2 = dolibarr_set_const($db, "EXPENSEREPORT_DRAFT_WATERMARK", trim($draft), 'chaine', 0, '', $conf->entity); $res3 = 0; - if (!empty($conf->project->enabled) && GETPOSTISSET('EXPENSEREPORT_PROJECT_IS_REQUIRED')) { // Option may not be provided + if (isModEnabled('project') && GETPOSTISSET('EXPENSEREPORT_PROJECT_IS_REQUIRED')) { // Option may not be provided $res3 = dolibarr_set_const($db, 'EXPENSEREPORT_PROJECT_IS_REQUIRED', GETPOST('EXPENSEREPORT_PROJECT_IS_REQUIRED', 'int'), 'chaine', 0, '', $conf->entity); } @@ -468,10 +468,10 @@ print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftExpenseReports"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; -print ''; +print ''; print '
'; print $langs->trans('ProjectIsRequiredOnExpenseReports'); print ''; diff --git a/htdocs/admin/facture.php b/htdocs/admin/facture.php index accb3d850a0..4a8e54589e9 100644 --- a/htdocs/admin/facture.php +++ b/htdocs/admin/facture.php @@ -637,7 +637,7 @@ print "
".$langs->trans("SuggestPaymentByRIBOnAccount").""; -if (!empty($conf->banque->enabled)) { +if (isModEnabled('banque')) { $sql = "SELECT rowid, label"; $sql .= " FROM ".MAIN_DB_PREFIX."bank_account"; $sql .= " WHERE clos = 0"; @@ -761,7 +761,7 @@ print ' print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftBill"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; +print ''; print ''; print ''; print "
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftInterventionCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftHolidayCards"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; - print ''; + print ''; print '
'; if ($val['type'] == 'textarea') { - print '\n"; - } elseif ($val['type']== 'integer') { - print '' . "\n"; - } elseif ($val['type']== 'html') { + } elseif ($val['type'] == 'integer') { + print '' . "\n"; + } elseif ($val['type'] == 'html') { require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; - $doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%'); + $doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%'); $doleditor->Create(); } elseif ($val['type'] == 'yesno') { print $form->selectyesno($constname, $conf->global->{$constname}, 1); @@ -532,36 +532,25 @@ if ($action == 'edit') { print img_picto('', 'category', 'class="pictofixedwidth"'); print $formother->select_categories($tmp[1], $conf->global->{$constname}, $constname, 0, $langs->trans('CustomersProspectsCategoriesShort')); } elseif (preg_match('/thirdparty_type/', $val['type'])) { - require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; + require_once DOL_DOCUMENT_ROOT . '/core/class/html.formcompany.class.php'; $formcompany = new FormCompany($db); print $formcompany->selectProspectCustomerType($conf->global->{$constname}, $constname); } elseif ($val['type'] == 'securekey') { - print ''; + print ''; if (!empty($conf->use_javascript_ajax)) { - print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token'.$constname.'" class="linkobject"'); - } - if (!empty($conf->use_javascript_ajax)) { - print "\n".''; + print ' ' . img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token' . $constname . '" class="linkobject"'); } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT . '/core/lib/security2.lib.php'; + print dolJSToSetRandomPassword($constname, 'generate_token' . $constname); } elseif ($val['type'] == 'product') { - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled('product') || isModEnabled('service')) { $selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname); $form->select_produits($selected, $constname, '', 0); } } else { - print ''; + print ''; } print '
'; if ($val['type'] == 'textarea') { - print '\n"; - } elseif ($val['type']== 'html') { + } elseif ($val['type'] == 'html') { require_once DOL_DOCUMENT_ROOT . '/core/class/doleditor.class.php'; - $doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, $conf->fckeditor->enabled, ROWS_5, '90%'); + $doleditor = new DolEditor($constname, $conf->global->{$constname}, '', 160, 'dolibarr_notes', '', false, false, isModEnabled('fckeditor'), ROWS_5, '90%'); $doleditor->Create(); } elseif ($val['type'] == 'yesno') { print $form->selectyesno($constname, $conf->global->{$constname}, 1); diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php index ef488943a4b..568664b92b7 100644 --- a/htdocs/admin/ldap.php +++ b/htdocs/admin/ldap.php @@ -158,24 +158,24 @@ if (!empty($conf->global->LDAP_SYNCHRO_ACTIVE) && empty($conf->global->LDAP_USER print '
'.$langs->trans("LDAPDnContactActive").''; print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_CONTACT_ACTIVE'), 'activecontact', array(Ldap::SYNCHRO_LDAP_TO_DOLIBARR)); - print ''.$langs->trans("LDAPDnContactActiveExample").'
' . $langs->trans("LDAPDnContactActiveExample") . '
'.$langs->trans("LDAPDnMemberActive").''; +if (isModEnabled('adherent')) { + print '
' . $langs->trans("LDAPDnMemberActive") . ''; print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_ACTIVE'), 'activemembers', array(), 2); - print ''.$langs->trans("LDAPDnMemberActiveExample").'
' . $langs->trans("LDAPDnMemberActiveExample") . '
'.$langs->trans("LDAPDnMemberTypeActive").''; +if (isModEnabled('adherent')) { + print '
' . $langs->trans("LDAPDnMemberTypeActive") . ''; print $formldap->selectLdapDnSynchroActive(getDolGlobalInt('LDAP_MEMBER_TYPE_ACTIVE'), 'activememberstypes', array(), 2); - print ''.$langs->trans("LDAPDnMemberTypeActiveExample").'
' . $langs->trans("LDAPDnMemberTypeActiveExample") . '
'; - if (!empty($conf->accounting->enabled)) { + if (isModEnabled('accounting')) { print $formaccounting->select_account(getDolGlobalString($key), $key, 1, '', 1, 1); } else { - print ''; + print ''; } print '
'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").''; + if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) { + print ' '; + print ''; + print '            '; + print ' '; + print ''; + } else { + $value = getDolGlobalString('MAIN_MAIL_SMTPS_AUTH_TYPE', 'LOGIN'); + $htmltext = $langs->trans("ContactSuperAdminForChange"); + print $form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE"), $htmltext, 1, 'superadmin'); + print ''; + } + print '
'; + print '
'; print $form->textwithpicto($langs->trans("MAIN_MAIL_SMTPS_PW"), $langs->trans("WithGMailYouCanCreateADedicatedPassword")); print ''; // SuperAdministrator access only @@ -430,6 +499,24 @@ if ($action == 'edit') { print '
'.$langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE").''; + + // SuperAdministrator access only + if ((empty($conf->global->MAIN_MODULE_MULTICOMPANY)) || ($user->admin && !$user->entity)) { + print $form->selectarray('MAIN_MAIL_SMTPS_OAUTH_SERVICE', $oauthservices, $conf->global->MAIN_MAIL_SMTPS_OAUTH_SERVICE); + } else { + $text = $oauthservices[$conf->global->MAIN_MAIL_SMTPS_OAUTH_SERVICE]; + if (empty($text)) { + $text = $langs->trans("Undefined"); + } + $htmltext = $langs->trans("ContactSuperAdminForChange"); + print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); + print ''; + } + print '
'.$langs->trans("MAIN_MAIL_EMAIL_TLS").''; if (!empty($conf->use_javascript_ajax) || (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer')))) { @@ -595,29 +682,46 @@ if ($action == 'edit') { print '
'.$langs->trans("MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_SERVER", ini_get('SMTP') ?ini_get('SMTP') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_SERVER) ? $conf->global->MAIN_MAIL_SMTP_SERVER : '').'
'.$langs->trans("MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike").''.$langs->trans("SeeLocalSendMailSetup").'
'.$langs->trans("MAIN_MAIL_SMTP_PORT", ini_get('smtp_port') ?ini_get('smtp_port') : $langs->transnoentities("Undefined")).''.(!empty($conf->global->MAIN_MAIL_SMTP_PORT) ? $conf->global->MAIN_MAIL_SMTP_PORT : '').'
'.$langs->trans("MAIN_MAIL_SMTPS_ID").''.$conf->global->MAIN_MAIL_SMTPS_ID.'
'.$langs->trans("MAIN_MAIL_SMTPS_AUTH_TYPE").''.$text.'
'.$langs->trans("MAIN_MAIL_SMTPS_PW").''.preg_replace('/./', '*', $conf->global->MAIN_MAIL_SMTPS_PW).'
'.$langs->trans("MAIN_MAIL_SMTPS_OAUTH_SERVICE").''.$text.'
'.$langs->trans("MAIN_MAIL_EMAIL_TLS").''; if (isset($conf->global->MAIN_MAIL_SENDMODE) && in_array($conf->global->MAIN_MAIL_SENDMODE, array('smtps', 'swiftmailer'))) { @@ -870,7 +974,7 @@ if ($action == 'edit') { if (!empty($dnsinfo) && is_array($dnsinfo)) { foreach ($dnsinfo as $info) { if (strpos($info['txt'], 'v=spf') !== false) { - $text .= ($text ? '

' : '').$langs->trans("ActualMailSPFRecordFound", $info['txt']); + $text .= ($text ? '

' : '').$langs->trans("ActualMailSPFRecordFound", $companyemail, $info['txt']); } } } diff --git a/htdocs/admin/mails_emailing.php b/htdocs/admin/mails_emailing.php index 40af4c4ae2a..f7203d88474 100644 --- a/htdocs/admin/mails_emailing.php +++ b/htdocs/admin/mails_emailing.php @@ -294,16 +294,16 @@ if ($action == 'edit') { } print '
'; // SuperAdministrator access only - if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) { - print ''; - print ''; - print ''.$langs->trans("SeeLocalSendMailSetup").''; - print ' '.$langs->trans("SeeLinkToOnlineDocumentation").''; + if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) { + print ''; + print ''; + print '' . $langs->trans("SeeLocalSendMailSetup") . ''; + print ' ' . $langs->trans("SeeLinkToOnlineDocumentation") . ''; } else { $text = !empty($mainserver) ? $mainserver : $smtpserver; $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); - print ''; + print ''; } print ''; // SuperAdministrator access only - if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) { - print ''; - print ''; - print ''.$langs->trans("SeeLocalSendMailSetup").''; + if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) { + print ''; + print ''; + print '' . $langs->trans("SeeLocalSendMailSetup") . ''; } else { $text = (!empty($mainport) ? $mainport : $smtpport); $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($text, $htmltext, 1, 'superadmin'); - print ''; + print ''; } } print '
'.$langs->trans("MAIN_MAIL_SMTPS_ID").''; + print '
' . $langs->trans("MAIN_MAIL_SMTPS_ID") . ''; // SuperAdministrator access only - if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) { - print ''; + if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) { + print ''; } else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_ID_EMAILING, $htmltext, 1, 'superadmin'); - print ''; + print ''; } print '
'.$langs->trans("MAIN_MAIL_SMTPS_PW").''; + print '
' . $langs->trans("MAIN_MAIL_SMTPS_PW") . ''; // SuperAdministrator access only - if (empty($conf->multicompany->enabled) || ($user->admin && !$user->entity)) { - print ''; + if (!isModEnabled('multicompany') || ($user->admin && !$user->entity)) { + print ''; } else { $htmltext = $langs->trans("ContactSuperAdminForChange"); print $form->textwithpicto($conf->global->MAIN_MAIL_SMTPS_PW_EMAILING, $htmltext, 1, 'superadmin'); - print ''; + print ''; } print '
'.$langs->trans("MAIN_MAIL_SENDMODE").''; - $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_EMAILING]; + $text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE_EMAILING')]; if (empty($text)) { $text = $langs->trans("Undefined").img_warning(); } - print $text; + if (getDolGlobalString('MAIN_MAIL_SENDMODE_EMAILING') == 'default') { + print ''.$text.''; + } else { + print $text; + } print '
'.$langs->trans("MAIN_MAIL_SENDMODE").''; - $text = $listofmethods[$conf->global->MAIN_MAIL_SENDMODE_TICKET]; + $text = $listofmethods[getDolGlobalString('MAIN_MAIL_SENDMODE_TICKET')]; if (empty($text)) { $text = $langs->trans("Undefined").img_warning(); } - print $text; + if (getDolGlobalString('MAIN_MAIL_SENDMODE_TICKET') == 'default') { + print ''.$text.''; + } else { + print $text; + } print '
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftMOs"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print ''; print ''; @@ -198,7 +199,7 @@ print ''; print ''; print ''; @@ -224,7 +225,7 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_USER'); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_USER", $arrval, $conf->global->NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_USER); + print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_USER", $arrval, getDolGlobalString('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_USER')); } print ''; print ''; @@ -236,11 +237,12 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_FIX'); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_FIX", $arrval, $conf->global->NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_FIX); + print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_FIX", $arrval, getDolGlobalString('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_FIX')); } print ''; print ''; print '
'.$langs->trans("Parameter").'
'; print $langs->trans("NotificationEMailFrom").''; print img_picto('', 'email', 'class="pictofixedwidth"'); -print ''; +print ''; if (!empty($conf->global->NOTIFICATION_EMAIL_FROM) && !isValidEmail($conf->global->NOTIFICATION_EMAIL_FROM)) { print ' '.img_warning($langs->trans("ErrorBadEMail")); } @@ -212,7 +213,7 @@ if ($conf->use_javascript_ajax) { print ajax_constantonoff('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_CONTACT'); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_CONTACT", $arrval, $conf->global->NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_CONTACT); + print $form->selectarray("NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_CONTACT", $arrval, getDolGlobalString('NOTIFICATION_EMAIL_DISABLE_CONFIRM_MESSAGE_CONTACT')); } print '
'; +print '
'; print $form->buttonsSaveCancel("Save", ''); @@ -359,7 +361,7 @@ print $form->buttonsSaveCancel("Save", ''); print '
'; print '* '.$langs->trans("GoOntoUserCardToAddMore").'
'; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { print '** '.$langs->trans("GoOntoContactCardToAddMore").'
'; } print '
'; @@ -382,11 +384,12 @@ print load_fiche_titre($langs->trans("ListOfFixedNotifications"), '', 'email'); print '
'; print $langs->trans("Note").':
'; print '* '.$langs->trans("GoOntoUserCardToAddMore").'
'; -if (!empty($conf->societe->enabled)) { +if (isModEnabled("societe")) { print '** '.$langs->trans("GoOntoContactCardToAddMore").'
'; } print '
'; +print '
'; print ''; print ''; print ''; @@ -449,7 +452,7 @@ foreach ($listofnotifiedevents as $notifiedevent) { $param = 'NOTIFICATION_FIXEDEMAIL_'.$notifiedevent['code'].'_THRESHOLD_HIGHER_'.$reg[1]; $value = GETPOST('NOTIF_'.$notifiedevent['code'].'_old_'.$reg[1].'_key') ?GETPOST('NOTIF_'.$notifiedevent['code'].'_old_'.$reg[1].'_key', 'alpha') : $conf->global->$param; - $s = ''; // Do not use type="email" here, we must be able to enter a list of email with , separator. + $s = ''; // Do not use type="email" here, we must be able to enter a list of email with , separator. $arrayemail = explode(',', $value); $showwarning = 0; foreach ($arrayemail as $keydet => $valuedet) { @@ -468,7 +471,7 @@ foreach ($listofnotifiedevents as $notifiedevent) { } // New entry input fields if (empty($inputfieldalreadyshown) || !$codehasnotrigger) { - $s = ''; // Do not use type="email" here, we must be able to enter a list of email with , separator. + $s = ''; // Do not use type="email" here, we must be able to enter a list of email with , separator. print $form->textwithpicto($s, $langs->trans("YouCanUseCommaSeparatorForSeveralRecipients").'
'.$langs->trans("YouCanAlsoUseSupervisorKeyword"), 1, 'help', '', 0, 2); } print ''; @@ -501,6 +504,7 @@ foreach ($listofnotifiedevents as $notifiedevent) { print ''; } print '
'.$langs->trans("Module").'
'; +print '
'; print $form->buttonsSaveCancel("Save", ''); diff --git a/htdocs/admin/oauth.php b/htdocs/admin/oauth.php index 772055f0809..ade561c4ef1 100644 --- a/htdocs/admin/oauth.php +++ b/htdocs/admin/oauth.php @@ -62,7 +62,7 @@ if ($action == 'add') { // $provider is OAUTH_XXX setEventMessages($langs->trans("AOAuthEntryForThisProviderAndLabelAlreadyHasAKey"), null, 'errors'); $error++; } else { - dolibarr_set_const($db, $constname, 'ToComplete', 'chaine', 0, '', $conf->entity); + dolibarr_set_const($db, $constname, $langs->trans('ToComplete'), 'chaine', 0, '', $conf->entity); setEventMessages($langs->trans("OAuthProviderAdded"), null); } } @@ -78,6 +78,16 @@ if ($action == 'update') { if (!dolibarr_set_const($db, $constvalue.'_SECRET', GETPOST($constvalue.'_ID') ? GETPOST($constvalue.'_SECRET') : '', 'chaine', 0, '', $conf->entity)) { $error++; } + if (GETPOSTISSET($constvalue.'_URLAUTHORIZE')) { + if (!dolibarr_set_const($db, $constvalue.'_URLAUTHORIZE', GETPOST($constvalue.'_URLAUTHORIZE'), 'chaine', 0, '', $conf->entity)) { + $error++; + } + } + if (GETPOSTISSET($constvalue.'_SCOPE')) { + if (!dolibarr_set_const($db, $constvalue.'_SCOPE', GETPOST($constvalue.'_SCOPE'), 'chaine', 0, '', $conf->entity)) { + $error++; + } + } } } @@ -147,11 +157,17 @@ print ''; $i = 0; -//var_dump($list); +// Define $listinsetup foreach ($conf->global as $key => $val) { if (!empty($val) && preg_match('/^OAUTH_.*_ID$/', $key)) { $provider = preg_replace('/_ID$/', '', $key); - $listinsetup[] = array($provider.'_NAME', $provider.'_ID', $provider.'_SECRET', 'OAUTH Provider '.str_replace('OAUTH_', '', $provider)); + $listinsetup[] = array( + $provider.'_NAME', + $provider.'_ID', + $provider.'_SECRET', + $provider.'_URLAUTHORIZE', // For custom oauth links + $provider.'_SCOPE' // For custom oauth links + ); } } @@ -178,12 +194,16 @@ foreach ($listinsetup as $key) { $i++; - print ''; // Api Name $label = $langs->trans($keyforsupportedoauth2array); + print ''; print ''; print ''; - print ''; + + if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') { + print ''; + print ''; + print ''; + } } else { print ''; print ''; @@ -213,14 +240,32 @@ foreach ($listinsetup as $key) { // Api Id print ''; print ''; - print ''; // Api Secret print ''; print ''; - print ''; + + // TODO Move this into token generation + if ($supported) { + if ($keyforsupportedoauth2array == 'OAUTH_OTHER_NAME') { + print ''; + print ''; + print ''; + } else { + print ''; + print ''; + print ''; + } + } } print '
'; print img_picto('', $supportedoauth2array[$keyforsupportedoauth2array]['picto'], 'class="pictofixedwidth"'); - print $label; + if ($label == $keyforsupportedoauth2array) { + print $supportedoauth2array[$keyforsupportedoauth2array]['name']; + } else { + print $label; + } if ($keyforprovider) { print ' ('.$keyforprovider.')'; } else { @@ -201,8 +221,15 @@ foreach ($listinsetup as $key) { $redirect_uri = $urlwithroot.'/core/modules/oauth/'.$supportedoauth2array[$keyforsupportedoauth2array]['callbackfile'].'_oauthcallback.php'; print '
'.$langs->trans("UseTheFollowingUrlAsRedirectURI").''; + print ''; print '
'.$langs->trans("URLOfServiceForAuthorization").''; + print '
'.$langs->trans("UseTheFollowingUrlAsRedirectURI").'
'; + print ''; print '
'; + print ''; print '
'.$langs->trans("Scopes").''; + print ''; + print '
'.$langs->trans("Scopes").''; + //print ''; + print $supportedoauth2array[$keyforsupportedoauth2array]['defaultscope']; + print '
'."\n"; diff --git a/htdocs/admin/oauthlogintokens.php b/htdocs/admin/oauthlogintokens.php index b2830f95743..7de4e146595 100644 --- a/htdocs/admin/oauthlogintokens.php +++ b/htdocs/admin/oauthlogintokens.php @@ -77,7 +77,7 @@ if ($action == 'setconst' && $user->admin) { $constnote = dol_escape_htmltag($setupconst['note']); $result = dolibarr_set_const($db, $constname, $constvalue, $consttype, 0, $constnote, $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } } @@ -96,7 +96,7 @@ if ($action == 'setvalue' && $user->admin) { $db->begin(); $result = dolibarr_set_const($db, $varname, $value, 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } @@ -138,11 +138,17 @@ if (GETPOST('error')) { if ($mode == 'setup' && $user->admin) { print ''.$langs->trans("OAuthSetupForLogin")."

\n"; - //var_dump($list); + // Define $listinsetup foreach ($conf->global as $key => $val) { if (!empty($val) && preg_match('/^OAUTH_.*_ID$/', $key)) { $provider = preg_replace('/_ID$/', '', $key); - $listinsetup[] = array($provider.'_NAME', $provider.'_ID', $provider.'_SECRET', 'OAUTH Provider '.str_replace('OAUTH_', '', $provider)); + $listinsetup[] = array( + $provider.'_NAME', + $provider.'_ID', + $provider.'_SECRET', + $provider.'_URLAUTHORIZE', // For custom oauth links + $provider.'_SCOPE' // For custom oauth links + ); } } @@ -165,46 +171,39 @@ if ($mode == 'setup' && $user->admin) { $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); - // Define $shortscope, $urltorenew, $urltodelete, $urltocheckperms + $shortscope = $supportedoauth2array[$keyforsupportedoauth2array]['defaultscope']; + if (getDolGlobalString($key[4])) { + $shortscope = getDolGlobalString($key[4]); + } + $state = $shortscope; // TODO USe a better state + + // Define $urltorenew, $urltodelete, $urltocheckperms // TODO Use array $supportedoauth2array if ($keyforsupportedoauth2array == 'OAUTH_GITHUB_NAME') { // List of keys that will be converted into scopes (from constants 'SCOPE_state_in_uppercase' in file of service). // We pass this param list in to 'state' because we need it before and after the redirect. - $shortscope = 'user,public_repo'; - // Note: github does not accept csrf key inside the state parameter (only know values) - $urltorenew = $urlwithroot.'/core/modules/oauth/github_oauthcallback.php?shortscope='.$shortscope.'&state='.$shortscope.'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); + // Note: github does not accept csrf key inside the state parameter (only known values) + $urltorenew = $urlwithroot.'/core/modules/oauth/github_oauthcallback.php?shortscope='.urlencode($shortscope).'&state='.$shortscope.'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltodelete = $urlwithroot.'/core/modules/oauth/github_oauthcallback.php?action=delete&token='.newToken().'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltocheckperms = 'https://github.com/settings/applications/'; } elseif ($keyforsupportedoauth2array == 'OAUTH_GOOGLE_NAME') { // List of keys that will be converted into scopes (from constants 'SCOPE_state_in_uppercase' in file of service). // List of scopes for Google are here: https://developers.google.com/identity/protocols/oauth2/scopes // We pass this key list into the param 'state' because we need it before and after the redirect. - $shortscope = 'userinfo_email,userinfo_profile'; - $shortscope .= ',openid,email,profile'; // For openid connect - if (!empty($conf->printing->enabled)) { - $shortscope .= ',cloud_print'; - } - if (!empty($conf->global->OAUTH_GOOGLE_GSUITE)) { - $shortscope .= ',admin_directory_user'; - } - if (!empty($conf->global->OAUTH_GOOGLE_GMAIL)) { - $shortscope.=',gmail_full'; - } - - $urltorenew = $urlwithroot.'/core/modules/oauth/google_oauthcallback.php?shortscope='.$shortscope.'&state='.$shortscope.'-'.$oauthstateanticsrf.'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); + $urltorenew = $urlwithroot.'/core/modules/oauth/google_oauthcallback.php?shortscope='.urlencode($shortscope).'&state='.urlencode($state).'-'.$oauthstateanticsrf.'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltodelete = $urlwithroot.'/core/modules/oauth/google_oauthcallback.php?action=delete&token='.newToken().'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltocheckperms = 'https://security.google.com/settings/security/permissions'; } elseif ($keyforsupportedoauth2array == 'OAUTH_STRIPE_TEST_NAME') { - $shortscope = 'none'; - - $urltorenew = $urlwithroot.'/core/modules/oauth/stripetest_oauthcallback.php?backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); + $urltorenew = $urlwithroot.'/core/modules/oauth/stripetest_oauthcallback.php?shortscope='.urlencode($shortscope).'&state='.urlencode($state).'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltodelete = ''; $urltocheckperms = ''; } elseif ($keyforsupportedoauth2array == 'OAUTH_STRIPE_LIVE_NAME') { - $shortscope = 'none'; - - $urltorenew = $urlwithroot.'/core/modules/oauth/stripelive_oauthcallback.php?backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); + $urltorenew = $urlwithroot.'/core/modules/oauth/stripelive_oauthcallback.php?shortscope='.urlencode($shortscope).'&state='.urlencode($state).'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); + $urltodelete = ''; + $urltocheckperms = ''; + } elseif ($keyforsupportedoauth2array = 'OAUTH_OTHER_NAME') { + $urltorenew = $urlwithroot.'/core/modules/oauth/generic_oauthcallback.php?shortscope='.urlencode($shortscope).'&state='.urlencode($state).'&backtourl='.urlencode(DOL_URL_ROOT.'/admin/oauthlogintokens.php'); $urltodelete = ''; $urltocheckperms = ''; } else { @@ -212,13 +211,13 @@ if ($mode == 'setup' && $user->admin) { $urltodelete = ''; $urltocheckperms = ''; } - $urltorenew .= '&keyforprovider='.$keyforprovider; + + $urltorenew .= '&keyforprovider='.urlencode($keyforprovider); // Show value of token $tokenobj = null; // Token require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; - require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; // Dolibarr storage $storage = new DoliStorage($db, $conf); try { @@ -246,7 +245,7 @@ if ($mode == 'setup' && $user->admin) { } elseif ($endoflife == $tokenobj::EOL_UNKNOWN) { $expiredat = $langs->trans("Unknown"); } else { - $expiredat = dol_print_date($endoflife, "dayhour"); + $expiredat = dol_print_date($endoflife, "dayhour", 'tzuserrel'); } } } @@ -260,10 +259,16 @@ if ($mode == 'setup' && $user->admin) { print '
'; print ''."\n"; + // Api Name + $label = $langs->trans($keyforsupportedoauth2array); print ''; print '\n"; print ''; - print ''; + print ''; //var_dump($key); print $langs->trans("OAuthIDSecret").''; print ''."\n"; print ''; - print ''; + print ''; //var_dump($key); print $langs->trans("IsTokenGenerated"); print ''; print ''; print ''; - print ''; + print ''; //var_dump($key); print $langs->trans("Token").''; print ''; - print ''; + print ''; //var_dump($key); print $langs->trans("TOKEN_EXPIRED"); print ''; @@ -359,7 +366,7 @@ if ($mode == 'setup' && $user->admin) { // Token expired at print ''; - print ''; + print ''; //var_dump($key); print $langs->trans("TOKEN_EXPIRE_AT"); print ''; @@ -378,8 +385,8 @@ if ($mode == 'setup' && $user->admin) { } } - print ''; + print '
'; } } diff --git a/htdocs/admin/pdf.php b/htdocs/admin/pdf.php index b95f73a399f..41215f98402 100644 --- a/htdocs/admin/pdf.php +++ b/htdocs/admin/pdf.php @@ -166,6 +166,10 @@ if ($action == 'update') { dolibarr_set_const($db, "PDF_SHOW_LINK_TO_ONLINE_PAYMENT", GETPOST('PDF_SHOW_LINK_TO_ONLINE_PAYMENT', 'alpha'), 'chaine', 0, '', $conf->entity); } + if (GETPOSTISSET('DOC_SHOW_FIRST_SALES_REP')) { + dolibarr_set_const($db, "DOC_SHOW_FIRST_SALES_REP", GETPOST('DOC_SHOW_FIRST_SALES_REP', 'alpha'), 'chaine', 0, '', $conf->entity); + } + if (GETPOSTISSET('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME')) { dolibarr_set_const($db, "PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME", GETPOST('PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME', 'alpha'), 'chaine', 0, '', $conf->entity); } @@ -568,6 +572,18 @@ print '
selectarray('MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS', $arraydetailsforpdffoot, (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? $conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS : 0)); print ''; +// Show the first sales representative + +print ''; print ""; print "\n"; diff --git a/htdocs/admin/receiptprinter.php b/htdocs/admin/receiptprinter.php index ac136af0c61..53f0cd9f7f0 100644 --- a/htdocs/admin/receiptprinter.php +++ b/htdocs/admin/receiptprinter.php @@ -183,8 +183,8 @@ if ($action == 'testtemplate' && $user->admin) { // test require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $object = new Facture($db); - //$object->initAsSpecimen(); - $object->fetch(18); + $object->initAsSpecimen(); + //$object->fetch(18); //var_dump($object->lines); $ret = $printer->sendToPrinter($object, $templateid, 1); if ($ret == 0) { diff --git a/htdocs/admin/reception_setup.php b/htdocs/admin/reception_setup.php index 1ca874c69b5..a06760b9da4 100644 --- a/htdocs/admin/reception_setup.php +++ b/htdocs/admin/reception_setup.php @@ -47,7 +47,7 @@ $type = 'reception'; * Actions */ -if (!empty($conf->reception->enabled) && empty($conf->global->MAIN_SUBMODULE_RECEPTION)) { +if (isModEnabled('reception') && empty($conf->global->MAIN_SUBMODULE_RECEPTION)) { // This option should always be set to on when module is on. dolibarr_set_const($db, "MAIN_SUBMODULE_RECEPTION", "1", 'chaine', 0, '', $conf->entity); } @@ -467,7 +467,7 @@ print "\n"; print '\n"; */ print '
'; print img_picto('', $supportedoauth2array[$keyforsupportedoauth2array]['picto'], 'class="pictofixedwidth"'); - print $langs->trans($keyforsupportedoauth2array); + if ($label == $keyforsupportedoauth2array) { + print $supportedoauth2array[$keyforsupportedoauth2array]['name']; + } else { + print $label; + } if ($keyforprovider) { print ' ('.$keyforprovider.')'; } else { @@ -275,7 +280,7 @@ if ($mode == 'setup' && $user->admin) { print "
'; @@ -286,13 +291,13 @@ if ($mode == 'setup' && $user->admin) { print '
'; if (is_object($tokenobj)) { - print $langs->trans("HasAccessToken"); + print $form->textwithpicto(yn(1), $langs->trans("HasAccessToken").' : '.dol_print_date($storage->date_modification, 'dayhour').' state='.dol_escape_htmltag($storage->state)); } else { print ''.$langs->trans("NoAccessToken").''; } @@ -305,7 +310,9 @@ if ($mode == 'setup' && $user->admin) { } // Request remote token if ($urltorenew) { - print ''.$langs->trans('RequestAccess').'
'; + print ''.$langs->trans('GetAccess').''; + print $form->textwithpicto('', $langs->trans('RequestAccess')); + print '
'; } // Check remote access if ($urltocheckperms) { @@ -315,7 +322,7 @@ if ($mode == 'setup' && $user->admin) { print '
'; @@ -323,7 +330,7 @@ if ($mode == 'setup' && $user->admin) { if (is_object($tokenobj)) { //var_dump($tokenobj); $tokentoshow = $tokenobj->getAccessToken(); - print ''.showValueWithClipboardCPButton($tokentoshow, 1, dol_trunc($tokentoshow, 32)).'
'; + print ''.showValueWithClipboardCPButton($tokentoshow, 1, dol_trunc($tokentoshow, 32)).'
'; //print 'Refresh: '.$tokenobj->getRefreshToken().'
'; //print 'EndOfLife: '.$tokenobj->getEndOfLife().'
'; //var_dump($tokenobj->getExtraParams()); @@ -348,7 +355,7 @@ if ($mode == 'setup' && $user->admin) { // Token expired print '
'.$langs->trans("ShowDetailsInPDFPageFoot").'
'.$langs->trans("DOC_SHOW_FIRST_SALES_REP"); +print ' ('.$langs->trans("SalesRepresentativeInfo").')'; +print ''; +if ($conf->use_javascript_ajax) { + print ajax_constantonoff('DOC_SHOW_FIRST_SALES_REP'); +} else { + $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); + print $form->selectarray("DOC_SHOW_FIRST_SALES_REP", $arrval, $conf->global->DOC_SHOW_FIRST_SALES_REP); +} + // Show alias in thirdparty name /* Disabled because not yet completely implemented (does not work when we force a contact on object) diff --git a/htdocs/admin/pdf_other.php b/htdocs/admin/pdf_other.php index b064cbb8cd8..979edb47de4 100644 --- a/htdocs/admin/pdf_other.php +++ b/htdocs/admin/pdf_other.php @@ -102,7 +102,7 @@ print '
'; print ''; print ''; -if (!empty($conf->propal->enabled)) { +if (isModEnabled('propal')) { print load_fiche_titre($langs->trans("Proposal"), '', ''); print '
'; diff --git a/htdocs/admin/propal.php b/htdocs/admin/propal.php index fe8db9818f7..a83e08ba4cf 100644 --- a/htdocs/admin/propal.php +++ b/htdocs/admin/propal.php @@ -525,7 +525,7 @@ print '
".$langs->trans("SuggestPaymentByRIBOnAccount").""; if (empty($conf->facture->enabled)) { - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql = "SELECT rowid, label"; $sql .= " FROM ".MAIN_DB_PREFIX."bank_account"; $sql .= " WHERE clos = 0"; @@ -693,7 +693,7 @@ print "'; print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftContractCards"), $htmltext).'
'; -print ''; +print ''; print "
'; diff --git a/htdocs/admin/security_file.php b/htdocs/admin/security_file.php index 67c6914f1cf..62b91ad55b3 100644 --- a/htdocs/admin/security_file.php +++ b/htdocs/admin/security_file.php @@ -128,7 +128,7 @@ if (isset($max)) { } print '
'; -print ' '.$langs->trans("Kb"); +print ' '.$langs->trans("Kb"); print '
'.$langs->trans("UMask").''; print $form->textwithpicto('', $langs->trans("UMaskExplanation")); print ''; -print ''; +print ''; print '
'; -print ' '.strtolower($langs->trans("Seconds")); +print ' '.strtolower($langs->trans("Seconds")); print '
'.$langs->trans("MaxNumberOfImagesInGetPost").''; +print ''; +print ' '.strtolower($langs->trans("Images")); +print '
'.$langs->trans("MAIN_APPLICATION_TITLE").''; print ''; -print ' '; +print ' '; print '
'; diff --git a/htdocs/admin/stock.php b/htdocs/admin/stock.php index a23f3127ca8..ade62c29081 100644 --- a/htdocs/admin/stock.php +++ b/htdocs/admin/stock.php @@ -245,7 +245,7 @@ $found++; print '
'.$langs->trans("DeStockOnShipment").''; -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { if ($conf->use_javascript_ajax) { print ajax_constantonoff('STOCK_CALCULATE_ON_SHIPMENT', array(), null, 0, 0, 0, 2, 1); } else { @@ -262,7 +262,7 @@ $found++; print '
'.$langs->trans("DeStockOnShipmentOnClosing").''; -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { if ($conf->use_javascript_ajax) { print ajax_constantonoff('STOCK_CALCULATE_ON_SHIPMENT_CLOSE', array(), null, 0, 0, 0, 2, 1); } else { @@ -293,7 +293,7 @@ $found = 0; print '
'.$langs->trans("ReStockOnBill").''; -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { if ($conf->use_javascript_ajax) { print ajax_constantonoff('STOCK_CALCULATE_ON_SUPPLIER_BILL', array(), null, 0, 0, 0, 2, 1); } else { @@ -311,7 +311,7 @@ $found++; print '
'.$langs->trans("ReStockOnValidateOrder").''; -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { if ($conf->use_javascript_ajax) { print ajax_constantonoff('STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER', array(), null, 0, 0, 0, 2, 1); } else { @@ -324,7 +324,7 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU print "
'.$langs->trans("StockOnReception").''; @@ -356,7 +356,7 @@ if (!empty($conf->reception->enabled)) { print '
'.$langs->trans("ReStockOnDispatchOrder").''; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { if ($conf->use_javascript_ajax) { print ajax_constantonoff('STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER', array(), null, 0, 0, 0, 2, 1); } else { @@ -422,7 +422,7 @@ if (!empty($conf->order->enabled)) { print "
'.$langs->trans("StockMustBeEnoughForShipment").''; @@ -643,7 +643,7 @@ print '
'.$langs->trans("MainDefaultWarehouse").''; -print $formproduct->selectWarehouses($conf->global->MAIN_DEFAULT_WAREHOUSE, 'default_warehouse', '', 1, 0, 0, '', 0, 0, array(), 'left reposition'); +print $formproduct->selectWarehouses(!empty($conf->global->MAIN_DEFAULT_WAREHOUSE) ? $conf->global->MAIN_DEFAULT_WAREHOUSE : -1, 'default_warehouse', '', 1, 0, 0, '', 0, 0, array(), 'left reposition'); print ''; print "
'; print $form->textwithpicto($langs->trans("WatermarkOnDraftProposal"), $htmltext, 1, 'help', '', 0, 2, 'watermarktooltip').'
'; print '
'; -print ''; +print ''; print ''; print ''; print "
'; print $langs->trans("BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL").' '; if (!empty($conf->use_javascript_ajax)) { diff --git a/htdocs/admin/syslog.php b/htdocs/admin/syslog.php index 2f272cd986f..875d024fd65 100644 --- a/htdocs/admin/syslog.php +++ b/htdocs/admin/syslog.php @@ -293,9 +293,9 @@ print '
'.$langs->trans("SyslogFileNumberOfSaves").''; + print ''; print ' ('.$langs->trans('ConfigureCleaningCronjobToSetFrequencyOfSaves').')
Collation
'.($i+1).''.$obj->Name.''; $tablename = preg_replace('/^'.MAIN_DB_PREFIX.'/', 'llx_', $obj->Name); - if (dol_is_file(DOL_DOCUMENT_ROOT.'/install/mysql/tables/'.$tablename.'.sql')) { + + if (in_array($tablename.'.sql', $arrayoffiles)) { $img = "info"; //print img_picto($langs->trans("ExternalModule"), $img); } else { diff --git a/htdocs/admin/system/dolibarr.php b/htdocs/admin/system/dolibarr.php index e58cf45dd7e..8a982f6e0bd 100644 --- a/htdocs/admin/system/dolibarr.php +++ b/htdocs/admin/system/dolibarr.php @@ -360,6 +360,7 @@ $configfileparameters = array( 'dolibarr_main_restrict_ip' => 'Restrict access to some IPs only', '?dolibarr_mailing_limit_sendbyweb' => 'Limit nb of email sent by page', '?dolibarr_mailing_limit_sendbycli' => 'Limit nb of email sent by cli', + '?dolibarr_mailing_limit_sendbyday' => 'Limit nb of email sent per day', '?dolibarr_strict_mode' => 'Strict mode is on/off', '?dolibarr_nocsrfcheck' => 'Disable CSRF security checks' ); diff --git a/htdocs/admin/system/perf.php b/htdocs/admin/system/perf.php index 0bdb442863d..f43bc3bf49a 100644 --- a/htdocs/admin/system/perf.php +++ b/htdocs/admin/system/perf.php @@ -51,6 +51,9 @@ print load_fiche_titre($langs->trans("PerfDolibarr"), '', 'title_setup'); print ''.$langs->trans("YouMayFindPerfAdviceHere", 'https://wiki.dolibarr.org/index.php/FAQ_Increase_Performance').' ('.$langs->trans("Reload").')
'; +print '
'; +print '
'; + // Recupere la version de PHP $phpversion = version_php(); print "
PHP - ".$langs->trans("Version").": ".$phpversion."
\n"; diff --git a/htdocs/admin/system/security.php b/htdocs/admin/system/security.php index 8a480ea49ca..ad4befadad6 100644 --- a/htdocs/admin/system/security.php +++ b/htdocs/admin/system/security.php @@ -418,6 +418,11 @@ print '
'; print load_fiche_titre($langs->trans("OtherSetup"), '', 'folder'); +print 'MAIN_ALLOW_SVG_FILES_AS_IMAGES = '.(empty($conf->global->MAIN_ALLOW_SVG_FILES_AS_IMAGES) ? '0' : $conf->global->MAIN_ALLOW_SVG_FILES_AS_IMAGES).'   ('.$langs->trans("Recommended").': 0)
'; +print '
'; + +print 'MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE = '.(empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE).'   ('.$langs->trans("Recommended").': 1)
'; +print '
'; //print ''.$langs->trans("PasswordEncryption").': '; print 'MAIN_SECURITY_HASH_ALGO = '.(empty($conf->global->MAIN_SECURITY_HASH_ALGO) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_HASH_ALGO)."   "; @@ -443,13 +448,7 @@ print '
'; print 'MAIN_SECURITY_ANTI_SSRF_SERVER_IP = '.(empty($conf->global->MAIN_SECURITY_ANTI_SSRF_SERVER_IP) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': List of static IPs of server separated with coma - '.$langs->trans("Note").': common loopback ip like 127.*.*.*, [::1] are already added)' : $conf->global->MAIN_SECURITY_ANTI_SSRF_SERVER_IP)."
"; print '
'; -print 'MAIN_ALLOW_SVG_FILES_AS_IMAGES = '.(empty($conf->global->MAIN_ALLOW_SVG_FILES_AS_IMAGES) ? '0' : $conf->global->MAIN_ALLOW_SVG_FILES_AS_IMAGES).'   ('.$langs->trans("Recommended").': 0)
'; -print '
'; - -print 'MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE = '.(empty($conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_ALWAYS_CREATE_LOCK_AFTER_LAST_UPGRADE).'   ('.$langs->trans("Recommended").': 1)
'; -print '
'; - -print 'MAIN_SECURITY_CSRF_WITH_TOKEN = '.(empty($conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN).'   ('.$langs->trans("Recommended").': 2)'."
"; +print 'MAIN_SECURITY_CSRF_WITH_TOKEN = '.(empty($conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_CSRF_WITH_TOKEN).'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 2)'."
"; print '
'; print '
'; @@ -458,15 +457,6 @@ print '
'; print load_fiche_titre($langs->trans("OtherSetup").' ('.$langs->trans("Experimental").')', '', 'folder'); -print 'MAIN_RESTRICTHTML_ONLY_VALID_HTML = '.(empty($conf->global->MAIN_RESTRICTHTML_ONLY_VALID_HTML) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': 1)' : $conf->global->MAIN_RESTRICTHTML_ONLY_VALID_HTML)."
"; -print '
'; - -print 'MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES = '.(empty($conf->global->MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': 1)' : $conf->global->MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES)."
"; -print '
'; - -print 'MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL = '.(empty($conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)' : $conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL)."
"; -print '
'; - print 'MAIN_EXEC_USE_POPEN = '; if (empty($conf->global->MAIN_EXEC_USE_POPEN)) { print ''.$langs->trans("Undefined").''; @@ -483,7 +473,36 @@ if ($execmethod == 2) { print '   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 1)'; print ''; } -print "
"; +print '
'; +print '
'; + +print 'MAIN_RESTRICTHTML_ONLY_VALID_HTML = '.(empty($conf->global->MAIN_RESTRICTHTML_ONLY_VALID_HTML) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': 1)' : $conf->global->MAIN_RESTRICTHTML_ONLY_VALID_HTML)."
"; +print '
'; + +print 'MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES = '.(empty($conf->global->MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': 1)' : $conf->global->MAIN_RESTRICTHTML_REMOVE_ALSO_BAD_ATTRIBUTES)."
"; +print '
'; + +print 'MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL = '.(empty($conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL) ? ''.$langs->trans("Undefined").'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or").' 0)' : $conf->global->MAIN_SECURITY_CSRF_TOKEN_RENEWAL_ON_EACH_CALL)."
"; +print '
'; + +print 'MAIN_SECURITY_FORCECSP = '.(empty($conf->global->MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"default-src 'self'; img-src *;\")
"; +print '
'; + +print 'WEBSITE_MAIN_SECURITY_FORCECSP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCECSP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCECSP).'   ('.$langs->trans("Example").": \"default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *;\")
"; +print '
'; + +print 'MAIN_SECURITY_FORCERP = '.(empty($conf->global->MAIN_SECURITY_FORCERP) ? ''.$langs->trans("Undefined").'' : $conf->global->MAIN_SECURITY_FORCERP).'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"same-origin\")
"; +print '
'; + +print 'WEBSITE_MAIN_SECURITY_FORCERP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCERP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCERP).'   ('.$langs->trans("Recommended").': '.$langs->trans("Undefined").' '.$langs->trans("or")." \"strict-origin-when-cross-origin\")
"; +print '
'; + +print 'WEBSITE_MAIN_SECURITY_FORCESTS = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCESTS) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCESTS).'   ('.$langs->trans("Example").": \"max-age=31536000; includeSubDomains\")
"; +print '
'; + +print 'WEBSITE_MAIN_SECURITY_FORCEPP = '.(empty($conf->global->WEBSITE_MAIN_SECURITY_FORCEPP) ? ''.$langs->trans("Undefined").'' : $conf->global->WEBSITE_MAIN_SECURITY_FORCEPP).'   ('.$langs->trans("Example").": \"camera: 'none'; microphone: 'none';\")
"; +print '
'; + print '
'; diff --git a/htdocs/admin/ticket.php b/htdocs/admin/ticket.php index 99d1b34749f..f1fbba03840 100644 --- a/htdocs/admin/ticket.php +++ b/htdocs/admin/ticket.php @@ -539,7 +539,7 @@ print $formcategory->textwithpicto('', $langs->trans("TicketsAutoNotifyCloseHelp print '
'.$langs->trans("TicketChooseProductCategory").''; $formcategory->selectProductCategory($conf->global->TICKET_PRODUCT_CATEGORY, 'product_category_id'); diff --git a/htdocs/admin/ticket_public.php b/htdocs/admin/ticket_public.php index 0fd654b5d28..fdb3117423b 100644 --- a/htdocs/admin/ticket_public.php +++ b/htdocs/admin/ticket_public.php @@ -183,7 +183,8 @@ if ($action == 'setTICKET_ENABLE_PUBLIC_INTERFACE') { } // enable captcha by default - $res = dolibarr_set_const($db, 'MAIN_SECURITY_ENABLECAPTCHA', 1, 'chaine', 0, '', $conf->entity); + // TODO Add a visible option in this setup page for this + $res = dolibarr_set_const($db, 'MAIN_SECURITY_ENABLECAPTCHA_TICKET', 1, 'chaine', 0, '', $conf->entity); if (!($res > 0)) { $error++; $errors[] = $db->lasterror(); diff --git a/htdocs/admin/tools/dolibarr_export.php b/htdocs/admin/tools/dolibarr_export.php index 7d02aea0e73..588cc5ed866 100644 --- a/htdocs/admin/tools/dolibarr_export.php +++ b/htdocs/admin/tools/dolibarr_export.php @@ -168,11 +168,12 @@ print ''; print $langs->trans("DatabaseName").' : '.$dolibarr_main_db_name.'
'; print '
'; +print '
'; print ''; + print ''; -print ''; -print ''; +print ''; +print ''; diff --git a/htdocs/admin/translation.php b/htdocs/admin/translation.php index 4968e75989a..1e667e7abb4 100644 --- a/htdocs/admin/translation.php +++ b/htdocs/admin/translation.php @@ -554,7 +554,7 @@ if ($mode == 'searchkey') { break; } print ''; } else { print '"; } // Defaut print ''; + // Desc $desc = (GETPOST('desc-'.$key) ? GETPOST('desc-'.$key) : $object->multilangs[$key]['description']); print '"; } @@ -523,7 +521,8 @@ if ($type == Categorie::TYPE_PRODUCT) { print ''; print '
'; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; $newcardbutton = ''; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; + $newcardbutton = dolGetButtonTitle($langs->trans("AddProduct"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/product/card.php?action=create&categories[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->rights->societe->creer); print_barre_liste($langs->trans("ProductsAndServices"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'products', 0, $newcardbutton, '', $limit); @@ -546,7 +545,7 @@ if ($type == Categorie::TYPE_PRODUCT) { // Link to delete from category print '
'; +print ''; print '
'; print '
'.$langs->trans("ExportMethod").''; @@ -195,10 +196,31 @@ print '
'; print '
'; print '
'; +print '
'; -print '
'; +print ''; + +print ''; + +print '
'; $htmltext = ''.$langs->trans("UserAgent").': '.($obj->user_agent ? dol_string_nohtmltag($obj->user_agent) : $langs->trans("Unknown")); - $htmltext .= '
'.$langs->trans("PrefixSession").': '.($obj->prefix_session ? dol_string_nohtmltag($obj->prefix_session) : $langs->trans("Unknown")); + $htmltext .= '
'.$langs->trans("SuffixSessionName").' (DOLSESSID_...): '.($obj->prefix_session ? dol_string_nohtmltag($obj->prefix_session) : $langs->trans("Unknown")); print $form->textwithpicto('', $htmltext); print '
'.$langcode.''.$key.''; - $titleforvalue = $langs->trans("Translation").' en_US for key '.$key.':
'.($langsenfileonly->tab_translate[$key] ? $langsenfileonly->trans($key) : ''.$langs->trans("None").''); + $titleforvalue = $langs->trans("Translation").' en_US for key '.$key.':
'.(!empty($langsenfileonly->tab_translate[$key]) ? $langsenfileonly->trans($key) : ''.$langs->trans("None").''); print ''; print dol_escape_htmltag($val); print ''; diff --git a/htdocs/admin/user.php b/htdocs/admin/user.php index 53de8fe2502..6f1012d1af4 100644 --- a/htdocs/admin/user.php +++ b/htdocs/admin/user.php @@ -35,9 +35,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; // Load translation files required by the page $langs->loadLangs(array('admin', 'members', 'users')); -if (!$user->admin) { - accessforbidden(); -} $extrafields = new ExtraFields($db); @@ -51,6 +48,10 @@ $label = GETPOST('label', 'alpha'); $scandir = GETPOST('scandir', 'alpha'); $type = 'user'; +if (empty($user->admin)) { + accessforbidden(); +} + /* * Action @@ -58,6 +59,8 @@ $type = 'user'; include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; +$reg = array(); + if ($action == 'set_default') { $ret = addDocumentModel($value, $type, $label, $scandir); $res = true; @@ -83,6 +86,9 @@ if ($action == 'set_default') { $ret = addDocumentModel($value, $type, $label, $scandir); } $res = true; +} elseif ($action == 'unsetdoc') { + // We disable the template + dolibarr_del_const($db, "USER_ADDON_PDF_ODT", $conf->entity); } elseif (preg_match('/set_([a-z0-9_\-]+)/i', $action, $reg)) { $code = $reg[1]; if (dolibarr_set_const($db, $code, 1, 'chaine', 0, '', $conf->entity) > 0) { @@ -118,6 +124,9 @@ if ($action == 'set_default') { $form = new Form($db); +dol_mkdir(DOL_DATA_ROOT.'/doctemplates/users'); +dol_mkdir(DOL_DATA_ROOT.'/doctemplates/usergroups'); + $help_url = 'EN:Module_Users|FR:Module_Utilisateurs|ES:Módulo_Usuarios'; llxHeader('', $langs->trans("UsersSetup"), $help_url); @@ -264,14 +273,17 @@ foreach ($dirmodels as $reldir) { print '
'."\n"; - print 'scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; + print 'scandir).'&label='.urlencode($module->name).'">'; + print img_picto($langs->trans("Disabled"), 'switch_off'); + print ''; print "'; if (getDolGlobalString('USER_ADDON_PDF_ODT') == $name) { - print img_picto($langs->trans("Default"), 'on'); + //print img_picto($langs->trans("Default"), 'on'); + print 'scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Default"), 'on').''; } else { print 'scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; } diff --git a/htdocs/admin/usergroup.php b/htdocs/admin/usergroup.php index 709b60068f7..b23a35442ef 100644 --- a/htdocs/admin/usergroup.php +++ b/htdocs/admin/usergroup.php @@ -58,7 +58,7 @@ if ($action == 'set_default') { } elseif ($action == 'del_default') { $ret = delDocumentModel($value, $type); if ($ret > 0) { - if ($conf->global->USERGROUP_ADDON_PDF_ODT == "$value") { + if (getDolGlobalString('USERGROUP_ADDON_PDF_ODT') == "$value") { dolibarr_del_const($db, 'USERGROUP_ADDON_PDF_ODT', $conf->entity); } } @@ -202,7 +202,7 @@ foreach ($dirmodels as $reldir) { // Defaut print ''; - if ($conf->global->USERGROUP_ADDON_PDF == $name) { + if (getDolGlobalString('USERGROUP_ADDON_PDF') == $name) { print img_picto($langs->trans("Default"), 'on'); } else { print 'scandir).'&label='.urlencode($module->name).'" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"), 'off').''; diff --git a/htdocs/admin/webhook.php b/htdocs/admin/webhook.php index 963b76c238a..b589eac4079 100644 --- a/htdocs/admin/webhook.php +++ b/htdocs/admin/webhook.php @@ -338,23 +338,12 @@ if ($action == 'edit') { if (!empty($conf->use_javascript_ajax)) { print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token'.$constname.'" class="linkobject"'); } - if (!empty($conf->use_javascript_ajax)) { - print "\n".''; - } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + print dolJSToSetRandomPassword($constname, 'generate_token'.$constname); } elseif ($val['type'] == 'product') { - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname); $form->select_produits($selected, $constname, '', 0); } diff --git a/htdocs/admin/website.php b/htdocs/admin/website.php index 5f51bccb240..80e806b6595 100644 --- a/htdocs/admin/website.php +++ b/htdocs/admin/website.php @@ -109,7 +109,7 @@ $tabrowid[1] = ""; // Condition to show dictionary in setup page $tabcond = array(); -$tabcond[1] = (!empty($conf->website->enabled)); +$tabcond[1] = (isModEnabled('website')); // List of help for fields $tabhelp = array(); diff --git a/htdocs/admin/workflow.php b/htdocs/admin/workflow.php index 47e6e87a244..e1899b35a56 100644 --- a/htdocs/admin/workflow.php +++ b/htdocs/admin/workflow.php @@ -62,7 +62,7 @@ $workflowcodes = array( 'WORKFLOW_PROPAL_AUTOCREATE_ORDER'=>array( 'family'=>'create', 'position'=>10, - 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), + 'enabled'=>(isModEnabled("propal") && !empty($conf->commande->enabled)), 'picto'=>'order' ), 'WORKFLOW_ORDER_AUTOCREATE_INVOICE'=>array( @@ -84,14 +84,14 @@ $workflowcodes = array( 'WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL'=>array( 'family'=>'classify_proposal', 'position'=>30, - 'enabled'=>(!empty($conf->propal->enabled) && !empty($conf->commande->enabled)), + 'enabled'=>(isModEnabled("propal") && !empty($conf->commande->enabled)), 'picto'=>'propal', 'warning'=>'' ), 'WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL'=>array( 'family'=>'classify_proposal', 'position'=>31, - 'enabled'=>(!empty($conf->propal->enabled) && isModEnabled('facture')), + 'enabled'=>(isModEnabled("propal") && isModEnabled('facture')), 'picto'=>'propal', 'warning'=>'' ), @@ -100,13 +100,13 @@ $workflowcodes = array( 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING'=>array( // when shipping validated 'family'=>'classify_order', 'position'=>40, - 'enabled'=>(!empty($conf->expedition->enabled) && !empty($conf->commande->enabled)), + 'enabled'=>(isModEnabled("expedition") && !empty($conf->commande->enabled)), 'picto'=>'order' ), 'WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED'=>array( // when shipping closed 'family'=>'classify_order', 'position'=>41, - 'enabled'=>(!empty($conf->expedition->enabled) && !empty($conf->commande->enabled)), + 'enabled'=>(isModEnabled("expedition") && !empty($conf->commande->enabled)), 'picto'=>'order' ), 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER'=>array( @@ -123,7 +123,7 @@ $workflowcodes = array( 'WORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL'=>array( 'family'=>'classify_supplier_proposal', 'position'=>60, - 'enabled'=>(!empty($conf->supplier_proposal->enabled) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), + 'enabled'=>(!empty($conf->supplier_proposal->enabled) && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))), 'picto'=>'supplier_proposal', 'warning'=>'' ), @@ -132,7 +132,7 @@ $workflowcodes = array( 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION'=>array( 'family'=>'classify_supplier_order', 'position'=>63, - 'enabled'=>(!empty($conf->global->MAIN_FEATURES_LEVEL) && (!empty($conf->reception->enabled)) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || empty($conf->supplier_order->enabled))), + 'enabled'=>(!empty($conf->global->MAIN_FEATURES_LEVEL) && (isModEnabled("reception")) && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || empty($conf->supplier_order->enabled))), 'picto'=>'supplier_order', 'warning'=>'' ), @@ -140,7 +140,7 @@ $workflowcodes = array( 'WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED'=>array( 'family'=>'classify_supplier_order', 'position'=>64, - 'enabled'=>(!empty($conf->global->MAIN_FEATURES_LEVEL) && (!empty($conf->reception->enabled)) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || empty($conf->supplier_order->enabled))), + 'enabled'=>(!empty($conf->global->MAIN_FEATURES_LEVEL) && (isModEnabled("reception")) && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || empty($conf->supplier_order->enabled))), 'picto'=>'supplier_order', 'warning'=>'' ), @@ -148,7 +148,7 @@ $workflowcodes = array( 'WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER'=>array( 'family'=>'classify_supplier_order', 'position'=>65, - 'enabled'=>((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)), + 'enabled'=>((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")), 'picto'=>'supplier_order', 'warning'=>'' ), @@ -157,7 +157,7 @@ $workflowcodes = array( 'WORKFLOW_BILL_ON_RECEPTION'=>array( 'family'=>'classify_reception', 'position'=>80, - 'enabled'=>(!empty($conf->reception->enabled) && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), + 'enabled'=>(isModEnabled("reception") && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))), 'picto'=>'reception' ), @@ -165,7 +165,7 @@ $workflowcodes = array( 'WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE' => array( 'family' => 'classify_shipping', 'position' => 90, - 'enabled' => !empty($conf->expedition->enabled) && !empty($conf->facture->enabled), + 'enabled' => isModEnabled("expedition") && isModEnabled("facture"), 'picto' => 'shipment' ), diff --git a/htdocs/api/class/api.class.php b/htdocs/api/class/api.class.php index 32d691400d6..a1aa77f2e6e 100644 --- a/htdocs/api/class/api.class.php +++ b/htdocs/api/class/api.class.php @@ -160,8 +160,8 @@ class DolibarrApi unset($object->statuts_short); unset($object->statuts_logo); unset($object->statuts_long); - unset($object->labelStatus); - unset($object->labelStatusShort); + //unset($object->labelStatus); + //unset($object->labelStatusShort); unset($object->stats_propale); unset($object->stats_commande); diff --git a/htdocs/api/index.php b/htdocs/api/index.php index afb0289aa32..8543e284533 100644 --- a/htdocs/api/index.php +++ b/htdocs/api/index.php @@ -257,6 +257,8 @@ if (!empty($reg[1]) && $reg[1] == 'explorer' && ($reg[2] == '/swagger.json' || $ continue; } + //dol_syslog("We scan to search api file with into ".$dir_part.$file_searched); + $regapi = array(); if (is_readable($dir_part.$file_searched) && preg_match("/^api_(.*)\.class\.php$/i", $file_searched, $regapi)) { $classname = ucwords($regapi[1]); diff --git a/htdocs/asset/admin/setup.php b/htdocs/asset/admin/setup.php index 29ee4b074fb..4f8f06ca160 100644 --- a/htdocs/asset/admin/setup.php +++ b/htdocs/asset/admin/setup.php @@ -519,23 +519,12 @@ if ($action == 'edit') { if (!empty($conf->use_javascript_ajax)) { print ' '.img_picto($langs->trans('Generate'), 'refresh', 'id="generate_token'.$constname.'" class="linkobject"'); } - if (!empty($conf->use_javascript_ajax)) { - print "\n".''; - } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + print dolJSToSetRandomPassword($constname, 'generate_token'.$constname); } elseif ($val['type'] == 'product') { - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $selected = (empty($conf->global->$constname) ? '' : $conf->global->$constname); $form->select_produits($selected, $constname, '', 0); } diff --git a/htdocs/asset/class/asset.class.php b/htdocs/asset/class/asset.class.php index d144d95819b..16306e73441 100644 --- a/htdocs/asset/class/asset.class.php +++ b/htdocs/asset/class/asset.class.php @@ -1171,10 +1171,10 @@ class Asset extends CommonObject global $hidedetails, $hidedesc, $hideref; $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $this->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1234,10 +1234,10 @@ class Asset extends CommonObject global $hidedetails, $hidedesc, $hideref; $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $this->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/barcode/codeinit.php b/htdocs/barcode/codeinit.php index b4e365fe018..fe8ff50cf96 100644 --- a/htdocs/barcode/codeinit.php +++ b/htdocs/barcode/codeinit.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2014-2022 Laurent Destailleur * Copyright (C) 2018 Ferran Marcet * * This program is free software; you can redistribute it and/or modify @@ -21,6 +21,7 @@ * \ingroup member * \brief Page to make mass init of barcode */ + require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; @@ -35,7 +36,8 @@ $month = dol_print_date($now, '%m'); $day = dol_print_date($now, '%d'); $forbarcode = GETPOST('forbarcode'); $fk_barcode_type = GETPOST('fk_barcode_type'); -$eraseallbarcode = GETPOST('eraseallbarcode'); +$eraseallproductbarcode = GETPOST('eraseallproductbarcode'); +$eraseallthirdpartybarcode = GETPOST('eraseallthirdpartybarcode'); $action = GETPOST('action', 'aZ09'); @@ -43,6 +45,7 @@ $producttmp = new Product($db); $thirdpartytmp = new Societe($db); $modBarCodeProduct = ''; +$modBarCodeThirdparty = ''; $maxperinit = 1000; @@ -51,6 +54,106 @@ $maxperinit = 1000; * Actions */ +// Define barcode template for third-party +if (!empty($conf->global->BARCODE_THIRDPARTY_ADDON_NUM)) { + $dirbarcodenum = array_merge(array('/core/modules/barcode/'), $conf->modules_parts['barcode']); + + foreach ($dirbarcodenum as $dirroot) { + $dir = dol_buildpath($dirroot, 0); + + $handle = @opendir($dir); + if (is_resource($handle)) { + while (($file = readdir($handle)) !== false) { + if (preg_match('/^mod_barcode_thirdparty_.*php$/', $file)) { + $file = substr($file, 0, dol_strlen($file) - 4); + + try { + dol_include_once($dirroot.$file.'.php'); + } catch (Exception $e) { + dol_syslog($e->getMessage(), LOG_ERR); + } + + $modBarCodeThirdparty = new $file(); + break; + } + } + closedir($handle); + } + } +} + +if ($action == 'initbarcodethirdparties') { + if (!is_object($modBarCodeThirdparty)) { + $error++; + setEventMessages($langs->trans("NoBarcodeNumberingTemplateDefined"), null, 'errors'); + } + + if (!$error) { + $thirdpartystatic = new Societe($db); + + $db->begin(); + + $nbok = 0; + if (!empty($eraseallthirdpartybarcode)) { + $sql = "UPDATE ".MAIN_DB_PREFIX."societe"; + $sql .= " SET barcode = NULL"; + $resql = $db->query($sql); + if ($resql) { + setEventMessages($langs->trans("AllBarcodeReset"), null, 'mesgs'); + } else { + $error++; + dol_print_error($db); + } + } else { + $sql = "SELECT rowid"; + $sql .= " FROM ".MAIN_DB_PREFIX."societe"; + $sql .= " WHERE barcode IS NULL or barcode = ''"; + $sql .= $db->order("datec", "ASC"); + $sql .= $db->plimit($maxperinit); + + dol_syslog("codeinit", LOG_DEBUG); + $resql = $db->query($sql); + if ($resql) { + $num = $db->num_rows($resql); + + $i = 0; $nbok = $nbtry = 0; + while ($i < min($num, $maxperinit)) { + $obj = $db->fetch_object($resql); + if ($obj) { + $thirdpartystatic->id = $obj->rowid; + $nextvalue = $modBarCodeThirdparty->getNextValue($thirdpartystatic, ''); + + $result = $thirdpartystatic->setValueFrom('barcode', $nextvalue, '', '', 'text', '', $user, 'THIRDPARTY_MODIFY'); + + $nbtry++; + if ($result > 0) { + $nbok++; + } + } + + $i++; + } + } else { + $error++; + dol_print_error($db); + } + + if (!$error) { + setEventMessages($langs->trans("RecordsModified", $nbok), null, 'mesgs'); + } + } + + if (!$error) { + //$db->rollback(); + $db->commit(); + } else { + $db->rollback(); + } + } + + $action = ''; +} + // Define barcode template for products if (!empty($conf->global->BARCODE_PRODUCT_ADDON_NUM)) { $dirbarcodenum = array_merge(array('/core/modules/barcode/'), $conf->modules_parts['barcode']); @@ -91,7 +194,7 @@ if ($action == 'initbarcodeproducts') { $db->begin(); $nbok = 0; - if (!empty($eraseallbarcode)) { + if (!empty($eraseallproductbarcode)) { $sql = "UPDATE ".MAIN_DB_PREFIX."product"; $sql .= " SET barcode = NULL"; $resql = $db->query($sql); @@ -155,7 +258,6 @@ if ($action == 'initbarcodeproducts') { } - /* * View */ @@ -180,16 +282,25 @@ print '
'; //print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").'
'; //print '
'; -print ''; -print ''; -print ''; -print ''; - print '
'; + + +// Example 1 : Adding jquery code +print ''; + + // For thirdparty if (isModEnabled('societe')) { - $nbno = $nbtotal = 0; + print ''; + print ''; + print ''; + print ''; + $nbthirdpartyno = $nbthirdpartytotal = 0; print load_fiche_titre($langs->trans("BarcodeInitForThirdparties"), '', 'company'); @@ -198,7 +309,7 @@ if (isModEnabled('societe')) { $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); - $nbno = $obj->nb; + $nbthirdpartyno = $obj->nb; } else { dol_print_error($db); } @@ -207,30 +318,50 @@ if (isModEnabled('societe')) { $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); - $nbtotal = $obj->nb; + $nbthirdpartytotal = $obj->nb; } else { dol_print_error($db); } - print $langs->trans("CurrentlyNWithoutBarCode", $nbno, $nbtotal, $langs->transnoentitiesnoconv("ThirdParties")).'
'."\n"; + print $langs->trans("CurrentlyNWithoutBarCode", $nbthirdpartyno, $nbthirdpartytotal, $langs->transnoentitiesnoconv("ThirdParties"))."\n"; - print '
'; + $disabledthirdparty = $disabledthirdparty1 = 0; + + if (is_object($modBarCodeThirdparty)) { + print '
'.$langs->trans("BarCodeNumberManager").": "; + $objthirdparty = new Societe($db); + print ''.(isset($modBarCodeThirdparty->name) ? $modBarCodeThirdparty->name : $modBarCodeThirdparty->nom).' - '.$langs->trans("NextValue").': '.$modBarCodeThirdparty->getNextValue($objthirdparty).'
'; + $disabledthirdparty = 0; + print '
'; + } else { + $disabledthirdparty = 1; + $titleno = $langs->trans("NoBarcodeNumberingTemplateDefined"); + print '
'.$langs->trans("NoBarcodeNumberingTemplateDefined"); + print '
'.$langs->trans("ToGenerateCodeDefineAutomaticRuleFirst").''; + print '
'; + } + if (empty($nbthirdpartyno)) { + $disabledthirdparty1 = 1; + } + + $moretagsthirdparty1 = (($disabledthirdparty || $disabledthirdparty1) ? ' disabled title="'.dol_escape_htmltag($titleno).'"' : ''); + print '
'; + $moretagsthirdparty2 = (($nbthirdpartyno == $nbthirdpartytotal) ? ' disabled' : ''); + print '   '; + print ''; print '



'; + print ''; } // For products -if ($conf->product->enabled || $conf->product->service) { - // Example 1 : Adding jquery code - print ''; +if (isModEnabled('product') || isModEnabled('service')) { + print '
'; + print ''; + print ''; + print ''; - $nbno = $nbtotal = 0; + $nbproductno = $nbproducttotal = 0; print load_fiche_titre($langs->trans("BarcodeInitForProductsOrServices"), '', 'product'); print '
'."\n"; @@ -247,7 +378,7 @@ if ($conf->product->enabled || $conf->product->service) { $i = 0; while ($i < $num) { $obj = $db->fetch_object($resql); - $nbno += $obj->nb; + $nbproductno += $obj->nb; $i++; } @@ -259,35 +390,40 @@ if ($conf->product->enabled || $conf->product->service) { $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); - $nbtotal = $obj->nb; + $nbproducttotal = $obj->nb; } else { dol_print_error($db); } - print $langs->trans("CurrentlyNWithoutBarCode", $nbno, $nbtotal, $langs->transnoentitiesnoconv("ProductsOrServices")).'
'."\n"; + print $langs->trans("CurrentlyNWithoutBarCode", $nbproductno, $nbproducttotal, $langs->transnoentitiesnoconv("ProductsOrServices"))."\n"; + + $disabledproduct = $disabledproduct1 = 0; if (is_object($modBarCodeProduct)) { - print $langs->trans("BarCodeNumberManager").": "; + print '
'.$langs->trans("BarCodeNumberManager").": "; $objproduct = new Product($db); print ''.(isset($modBarCodeProduct->name) ? $modBarCodeProduct->name : $modBarCodeProduct->nom).' - '.$langs->trans("NextValue").': '.$modBarCodeProduct->getNextValue($objproduct).'
'; - $disabled = 0; + $disabledproduct = 0; + print '
'; } else { - $disabled = 1; + $disabledproduct = 1; $titleno = $langs->trans("NoBarcodeNumberingTemplateDefined"); - print ''.$langs->trans("NoBarcodeNumberingTemplateDefined").' ('.$langs->trans("ToGenerateCodeDefineAutomaticRuleFirst").')
'; + print '
'.$langs->trans("NoBarcodeNumberingTemplateDefined"); + print '
'.$langs->trans("ToGenerateCodeDefineAutomaticRuleFirst").''; + print '
'; } - if (empty($nbno)) { - $disabled1 = 1; + if (empty($nbproductno)) { + $disabledproduct1 = 1; } - print '
'; //print ' '.$langs->trans("ResetBarcodeForAllRecords").'
'; - $moretags1 = (($disabled || $disabled1) ? ' disabled title="'.dol_escape_htmltag($titleno).'"' : ''); - print ''; - $moretags2 = (($nbno == $nbtotal) ? ' disabled' : ''); + $moretagsproduct1 = (($disabledproduct || $disabledproduct1) ? ' disabled title="'.dol_escape_htmltag($titleno).'"' : ''); + print ''; + $moretagsproduct2 = (($nbproductno == $nbproducttotal) ? ' disabled' : ''); print '   '; - print ''; + print ''; print '



'; + print '
'; } @@ -297,7 +433,6 @@ print $langs->trans("ClickHereToGoTo").' : trans("ErrorRecordNotFound"); } @@ -240,7 +245,7 @@ if ($action == 'builddoc') { } } - if ($result <= 0 || $mesg) { + if ($result <= 0 || $mesg || $error) { if (empty($mesg)) { $mesg = 'Error '.$result; } @@ -272,8 +277,6 @@ print '
'; print ''.$langs->trans("PageToGenerateBarCodeSheets", $langs->transnoentitiesnoconv("BuildPageToPrint")).'
'; print '
'; -dol_htmloutput_errors($mesg); - //print img_picto('','puce').' '.$langs->trans("PrintsheetForOneBarCode").'
'; //print '
'; diff --git a/htdocs/blockedlog/class/blockedlog.class.php b/htdocs/blockedlog/class/blockedlog.class.php index ea5069cb840..3ab2b63ad3f 100644 --- a/htdocs/blockedlog/class/blockedlog.class.php +++ b/htdocs/blockedlog/class/blockedlog.class.php @@ -151,7 +151,7 @@ class BlockedLog } /* Supplier - if (!empty($conf->fournisseur->enabled)) { + if (isModEnabled("fournisseur")) { $this->trackedevents['BILL_SUPPLIER_VALIDATE']='BlockedLogSupplierBillValidate'; $this->trackedevents['BILL_SUPPLIER_DELETE']='BlockedLogSupplierBillDelete'; $this->trackedevents['BILL_SUPPLIER_SENTBYMAIL']='BlockedLogSupplierBillSentByEmail'; // Trigger key does not exists, we want just into array to list it as done @@ -184,7 +184,7 @@ class BlockedLog $this->trackedevents['MEMBER_SUBSCRIPTION_MODIFY'] = 'logMEMBER_SUBSCRIPTION_MODIFY'; $this->trackedevents['MEMBER_SUBSCRIPTION_DELETE'] = 'logMEMBER_SUBSCRIPTION_DELETE'; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $this->trackedevents['PAYMENT_VARIOUS_CREATE'] = 'logPAYMENT_VARIOUS_CREATE'; $this->trackedevents['PAYMENT_VARIOUS_MODIFY'] = 'logPAYMENT_VARIOUS_MODIFY'; $this->trackedevents['PAYMENT_VARIOUS_DELETE'] = 'logPAYMENT_VARIOUS_DELETE'; @@ -361,11 +361,11 @@ class BlockedLog $this->amounts = $amounts; // date if ($object->element == 'payment' || $object->element == 'payment_supplier') { - $this->date_object = $object->datepaye; + $this->date_object = empty($object->datepaye) ? $object->date : $object->datepaye; } elseif ($object->element == 'payment_salary') { $this->date_object = $object->datev; } elseif ($object->element == 'payment_donation' || $object->element == 'payment_various') { - $this->date_object = $object->datepaid ? $object->datepaid : $object->datep; + $this->date_object = empty($object->datepaid) ? $object->datep : $object->datepaid; } elseif ($object->element == 'subscription') { $this->date_object = $object->dateh; } elseif ($object->element == 'cashcontrol') { @@ -527,7 +527,7 @@ class BlockedLog $totalamount = 0; - // Loop on each invoice payment amount + // Loop on each invoice payment amount (payment_part) if (is_array($object->amounts) && !empty($object->amounts)) { $paymentpartnumber = 0; foreach ($object->amounts as $objid => $amount) { diff --git a/htdocs/bom/bom_card.php b/htdocs/bom/bom_card.php index ee619a589e3..f088ae34050 100644 --- a/htdocs/bom/bom_card.php +++ b/htdocs/bom/bom_card.php @@ -181,24 +181,10 @@ if (empty($reshook)) { } if (!$error) { - $bomline = new BOMLine($db); - $bomline->fk_bom = $id; - $bomline->fk_product = $idprod; - $bomline->fk_bom_child = $bom_child_id; - $bomline->qty = $qty; - $bomline->qty_frozen = (int) $qty_frozen; - $bomline->disable_stock_change = (int) $disable_stock_change; - $bomline->efficiency = $efficiency; + $result = $object->addLine($idprod, $qty, $qty_frozen, $disable_stock_change, $efficiency, -1, $bom_child_id, null); - // Rang to use - $rangmax = $object->line_max(0); - $ranktouse = $rangmax + 1; - - $bomline->position = ($ranktouse + 1); - - $result = $bomline->create($user); if ($result <= 0) { - setEventMessages($bomline->error, $bomline->errors, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); $action = ''; } else { unset($_POST['idprod']); @@ -207,13 +193,11 @@ if (empty($reshook)) { unset($_POST['disable_stock_change']); $object->fetchLines(); - - $object->calculateCosts(); } } } - // Add line + // Update line if ($action == 'updateline' && $user->rights->bom->write) { $langs->load('errors'); $error = 0; @@ -229,26 +213,23 @@ if (empty($reshook)) { $error++; } - $bomline = new BOMLine($db); - $bomline->fetch($lineid); - $bomline->qty = $qty; - $bomline->qty_frozen = (int) $qty_frozen; - $bomline->disable_stock_change = (int) $disable_stock_change; - $bomline->efficiency = $efficiency; + if (!$error) { + $bomline = new BOMLine($db); + $bomline->fetch($lineid); - $result = $bomline->update($user); - if ($result <= 0) { - setEventMessages($bomline->error, $bomline->errors, 'errors'); - $action = ''; - } else { - unset($_POST['idprod']); - unset($_POST['qty']); - unset($_POST['qty_frozen']); - unset($_POST['disable_stock_change']); + $result = $object->updateLine($lineid, $qty, (int) $qty_frozen, (int) $disable_stock_change, $efficiency, $bomline->position, $bomline->import_key); - $object->fetchLines(); + if ($result <= 0) { + setEventMessages($object->error, $object->errors, 'errors'); + $action = ''; + } else { + unset($_POST['idprod']); + unset($_POST['qty']); + unset($_POST['qty_frozen']); + unset($_POST['disable_stock_change']); - $object->calculateCosts(); + $object->fetchLines(); + } } } } diff --git a/htdocs/bom/class/api_boms.class.php b/htdocs/bom/class/api_boms.class.php index 91af888ffd8..fb7d175a229 100644 --- a/htdocs/bom/class/api_boms.class.php +++ b/htdocs/bom/class/api_boms.class.php @@ -2,6 +2,7 @@ /* Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2019 Maxime Kohlhaas * Copyright (C) 2020 Frédéric France + * Copyright (C) 2022 Christian Humpel * * 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 @@ -279,6 +280,177 @@ class Boms extends DolibarrApi ); } + /** + * Get lines of an BOM + * + * @param int $id Id of BOM + * + * @url GET {id}/lines + * + * @return array + */ + public function getLines($id) + { + if (!DolibarrApiAccess::$user->rights->bom->read) { + throw new RestException(401); + } + + $result = $this->bom->fetch($id); + if (!$result) { + throw new RestException(404, 'BOM not found'); + } + + if (!DolibarrApi::_checkAccessToResource('bom_bom', $this->bom->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->bom->getLinesArray(); + $result = array(); + foreach ($this->bom->lines as $line) { + array_push($result, $this->_cleanObjectDatas($line)); + } + return $result; + } + + /** + * Add a line to given BOM + * + * @param int $id Id of BOM to update + * @param array $request_data BOMLine data + * + * @url POST {id}/lines + * + * @return int + */ + public function postLine($id, $request_data = null) + { + if (!DolibarrApiAccess::$user->rights->bom->write) { + throw new RestException(401); + } + + $result = $this->bom->fetch($id); + if (!$result) { + throw new RestException(404, 'BOM not found'); + } + + if (!DolibarrApi::_checkAccessToResource('bom_bom', $this->bom->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $request_data = (object) $request_data; + + $updateRes = $this->bom->addLine( + $request_data->fk_product, + $request_data->qty, + $request_data->qty_frozen, + $request_data->disable_stock_change, + $request_data->efficiency, + $request_data->position, + $request_data->fk_bom_child, + $request_data->import_key + ); + + if ($updateRes > 0) { + return $updateRes; + } else { + throw new RestException(400, $this->bom->error); + } + } + + /** + * Update a line to given BOM + * + * @param int $id Id of BOM to update + * @param int $lineid Id of line to update + * @param array $request_data BOMLine data + * + * @url PUT {id}/lines/{lineid} + * + * @return array|bool + */ + public function putLine($id, $lineid, $request_data = null) + { + if (!DolibarrApiAccess::$user->rights->bom->write) { + throw new RestException(401); + } + + $result = $this->bom->fetch($id); + if (!$result) { + throw new RestException(404, 'BOM not found'); + } + + if (!DolibarrApi::_checkAccessToResource('bom_bom', $this->bom->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $request_data = (object) $request_data; + + $updateRes = $this->bom->updateLine( + $lineid, + $request_data->qty, + $request_data->qty_frozen, + $request_data->disable_stock_change, + $request_data->efficiency, + $request_data->position, + $request_data->import_key + ); + + if ($updateRes > 0) { + $result = $this->get($id); + unset($result->line); + return $this->_cleanObjectDatas($result); + } + return false; + } + + /** + * Delete a line to given BOM + * + * + * @param int $id Id of BOM to update + * @param int $lineid Id of line to delete + * + * @url DELETE {id}/lines/{lineid} + * + * @return int + * + * @throws RestException 401 + * @throws RestException 404 + * @throws RestException 500 + */ + public function deleteLine($id, $lineid) + { + if (!DolibarrApiAccess::$user->rights->bom->write) { + throw new RestException(401); + } + + $result = $this->bom->fetch($id); + if (!$result) { + throw new RestException(404, 'BOM not found'); + } + + if (!DolibarrApi::_checkAccessToResource('bom_bom', $this->bom->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + //Check the rowid is a line of current bom object + $lineIdIsFromObject = false; + foreach ($this->bom->lines as $bl) { + if ($bl->id == $lineid) { + $lineIdIsFromObject = true; + break; + } + } + if (!$lineIdIsFromObject) { + throw new RestException(500, 'Line to delete (rowid: '.$lineid.') is not a line of BOM (id: '.$this->bom->id.')'); + } + + $updateRes = $this->bom->deleteline(DolibarrApiAccess::$user, $lineid); + if ($updateRes > 0) { + return $this->get($id); + } else { + throw new RestException(405, $this->bom->error); + } + } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** diff --git a/htdocs/bom/class/bom.class.php b/htdocs/bom/class/bom.class.php index 655af8b0a1f..50d97150d6a 100644 --- a/htdocs/bom/class/bom.class.php +++ b/htdocs/bom/class/bom.class.php @@ -96,7 +96,7 @@ class BOM extends CommonObject public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=> 1, 'default'=>1, 'index'=>1, 'position'=>5), - 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1',), + 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'noteditable'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of BOM", 'showoncombobox'=>'1', 'csslist'=>'nowraponall'), 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'notnull'=>1, 'searchall'=>1, 'showoncombobox'=>'2', 'autofocusoncreate'=>1, 'css'=>'minwidth300 maxwidth400', 'csslist'=>'tdoverflowmax200'), 'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>33, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth175', 'csslist'=>'minwidth175 center'), //'bomtype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>-1, 'position'=>32, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing')), @@ -502,6 +502,207 @@ class BOM extends CommonObject //return $this->deleteCommon($user, $notrigger, 1); } + /** + * Add an BOM line into database (linked to BOM) + * + * @param int $fk_product Id of product + * @param float $qty Quantity + * @param int $qty_frozen Frozen quantity + * @param int $disable_stock_change Disable stock change on using in MO + * @param float $efficiency Efficiency in MO + * @param int $position Position of BOM-Line in BOM-Lines + * @param int $fk_bom_child Id of BOM Child + * @param string $import_key Import Key + * @return int <0 if KO, Id of created object if OK + */ + public function addLine($fk_product, $qty, $qty_frozen = 0, $disable_stock_change = 0, $efficiency = 1.0, $position = -1, $fk_bom_child = null, $import_key = null) + { + global $mysoc, $conf, $langs, $user; + + $logtext = "::addLine bomid=$this->id, qty=$qty, fk_product=$fk_product, qty_frozen=$qty_frozen, disable_stock_change=$disable_stock_change, efficiency=$efficiency"; + $logtext .= ", fk_bom_child=$fk_bom_child, import_key=$import_key"; + dol_syslog(get_class($this).$logtext, LOG_DEBUG); + + if ($this->statut == self::STATUS_DRAFT) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + + // Clean parameters + if (empty($qty)) { + $qty = 0; + } + if (empty($qty_frozen)) { + $qty_frozen = 0; + } + if (empty($disable_stock_change)) { + $disable_stock_change = 0; + } + if (empty($efficiency)) { + $efficiency = 1.0; + } + if (empty($fk_bom_child)) { + $fk_bom_child = null; + } + if (empty($import_key)) { + $import_key = null; + } + if (empty($position)) { + $position = -1; + } + + $qty = price2num($qty); + $efficiency = price2num($efficiency); + $position = price2num($position); + + $this->db->begin(); + + // Rank to use + $rangMax = $this->line_max(); + $rankToUse = $position; + if ($rankToUse <= 0 or $rankToUse > $rangMax) { // New line after existing lines + $rankToUse = $rangMax + 1; + } else { // New line between the existing lines + foreach ($this->lines as $bl) { + if ($bl->position >= $rankToUse) { + $bl->position++; + $bl->update($user); + } + } + } + + // Insert line + $this->line = new BOMLine($this->db); + + $this->line->context = $this->context; + + $this->line->fk_bom = $this->id; + $this->line->fk_product = $fk_product; + $this->line->qty = $qty; + $this->line->qty_frozen = $qty_frozen; + $this->line->disable_stock_change = $disable_stock_change; + $this->line->efficiency = $efficiency; + $this->line->fk_bom_child = $fk_bom_child; + $this->line->import_key = $import_key; + $this->line->position = $rankToUse; + + $result = $this->line->create($user); + + if ($result > 0) { + $this->calculateCosts(); + $this->db->commit(); + return $result; + } else { + $this->error = $this->line->error; + dol_syslog(get_class($this)."::addLine error=".$this->error, LOG_ERR); + $this->db->rollback(); + return -2; + } + } else { + dol_syslog(get_class($this)."::addLine status of BOM must be Draft to allow use of ->addLine()", LOG_ERR); + return -3; + } + } + + /** + * Update an BOM line into database + * + * @param int $rowid Id of line to update + * @param float $qty Quantity + * @param int $qty_frozen Frozen quantity + * @param int $disable_stock_change Disable stock change on using in MO + * @param float $efficiency Efficiency in MO + * @param int $position Position of BOM-Line in BOM-Lines + * @param string $import_key Import Key + * @return int <0 if KO, Id of updated BOM-Line if OK + */ + public function updateLine($rowid, $qty, $qty_frozen = 0, $disable_stock_change = 0, $efficiency = 1.0, $position = -1, $import_key = null) + { + global $mysoc, $conf, $langs, $user; + + $logtext = "::updateLine bomid=$this->id, qty=$qty, qty_frozen=$qty_frozen, disable_stock_change=$disable_stock_change, efficiency=$efficiency"; + $logtext .= ", import_key=$import_key"; + dol_syslog(get_class($this).$logtext, LOG_DEBUG); + + if ($this->statut == self::STATUS_DRAFT) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; + + // Clean parameters + if (empty($qty)) { + $qty = 0; + } + if (empty($qty_frozen)) { + $qty_frozen = 0; + } + if (empty($disable_stock_change)) { + $disable_stock_change = 0; + } + if (empty($efficiency)) { + $efficiency = 1.0; + } + if (empty($import_key)) { + $import_key = null; + } + if (empty($position)) { + $position = -1; + } + + $qty = price2num($qty); + $efficiency = price2num($efficiency); + $position = price2num($position); + + $this->db->begin(); + + //Fetch current line from the database and then clone the object and set it in $oldline property + $line = new BOMLine($this->db); + $line->fetch($rowid); + $line->fetch_optionals(); + + $staticLine = clone $line; + $line->oldcopy = $staticLine; + $this->line = $line; + $this->line->context = $this->context; + + // Rank to use + $rankToUse = (int) $position; + if ($rankToUse != $line->oldcopy->position) { // check if position have a new value + foreach ($this->lines as $bl) { + if ($bl->position >= $rankToUse AND $bl->position < ($line->oldcopy->position + 1)) { // move rank up + $bl->position++; + $bl->update($user); + } + if ($bl->position <= $rankToUse AND $bl->position > ($line->oldcopy->position)) { // move rank down + $bl->position--; + $bl->update($user); + } + } + } + + + $this->line->fk_bom = $this->id; + $this->line->qty = $qty; + $this->line->qty_frozen = $qty_frozen; + $this->line->disable_stock_change = $disable_stock_change; + $this->line->efficiency = $efficiency; + $this->line->import_key = $import_key; + $this->line->position = $rankToUse; + + $result = $this->line->update($user); + + if ($result > 0) { + $this->calculateCosts(); + $this->db->commit(); + return $result; + } else { + $this->error = $this->line->error; + dol_syslog(get_class($this)."::addLine error=".$this->error, LOG_ERR); + $this->db->rollback(); + return -2; + } + } else { + dol_syslog(get_class($this)."::addLine status of BOM must be Draft to allow use of ->addLine()", LOG_ERR); + return -3; + } + } + /** * Delete a line of object in database * @@ -517,7 +718,38 @@ class BOM extends CommonObject return -2; } - return $this->deleteLineCommon($user, $idline, $notrigger); + $this->db->begin(); + + //Fetch current line from the database and then clone the object and set it in $oldline property + $line = new BOMLine($this->db); + $line->fetch($idline); + $line->fetch_optionals(); + + $staticLine = clone $line; + $line->oldcopy = $staticLine; + $this->line = $line; + $this->line->context = $this->context; + + $result = $this->line->delete($user, $notrigger); + + //Positions (rank) reordering + foreach ($this->lines as $bl) { + if ($bl->position > ($line->oldcopy->position)) { // move rank down + $bl->position--; + $bl->update($user); + } + } + + if ($result > 0) { + $this->calculateCosts(); + $this->db->commit(); + return $result; + } else { + $this->error = $this->line->error; + dol_syslog(get_class($this)."::addLine error=".$this->error, LOG_ERR); + $this->db->rollback(); + return -2; + } } /** diff --git a/htdocs/bom/tpl/objectline_create.tpl.php b/htdocs/bom/tpl/objectline_create.tpl.php index 0a3a3b34e7a..e895d534fac 100644 --- a/htdocs/bom/tpl/objectline_create.tpl.php +++ b/htdocs/bom/tpl/objectline_create.tpl.php @@ -87,7 +87,7 @@ $coldisplay++; print '
'; // Predefined product/service -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { if (!empty($conf->global->BOM_SUB_BOM)) { print $langs->trans("Product"); } diff --git a/htdocs/categories/admin/categorie.php b/htdocs/categories/admin/categorie.php index 02e6892b571..f7022477d97 100644 --- a/htdocs/categories/admin/categorie.php +++ b/htdocs/categories/admin/categorie.php @@ -67,7 +67,7 @@ if (preg_match('/del_([a-z0-9_\-]+)/i', $action, $reg)) { * View */ -$help_url = 'EN:Module Categories|FR:Module Catégories|ES:Módulo Categorías'; +$help_url = 'EN:Module Categories|FR:Module Catégories|ES:Módulo Categorías|DE:Modul_Kategorien'; $linkback = ''.$langs->trans("BackToModuleList").''; llxHeader('', $langs->trans("Categories"), $help_url); diff --git a/htdocs/categories/admin/categorie_extrafields.php b/htdocs/categories/admin/categorie_extrafields.php index 7dbf31835ca..2a1879135d6 100644 --- a/htdocs/categories/admin/categorie_extrafields.php +++ b/htdocs/categories/admin/categorie_extrafields.php @@ -63,7 +63,7 @@ require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php'; $textobject = $langs->transnoentitiesnoconv("Categories"); -$help_url = 'EN:Module Categories|FR:Module Catégories|ES:Módulo Categorías'; +$help_url = 'EN:Module Categories|FR:Module Catégories|ES:Módulo Categorías|DE:Modul_Kategorien'; llxHeader('', $langs->trans("Categories"), $help_url); diff --git a/htdocs/categories/class/api_categories.class.php b/htdocs/categories/class/api_categories.class.php index fcac14f1337..0a618974024 100644 --- a/htdocs/categories/class/api_categories.class.php +++ b/htdocs/categories/class/api_categories.class.php @@ -305,7 +305,8 @@ class Categories extends DolibarrApi Categorie::TYPE_CUSTOMER, Categorie::TYPE_SUPPLIER, Categorie::TYPE_MEMBER, - Categorie::TYPE_PROJECT + Categorie::TYPE_PROJECT, + Categorie::TYPE_KNOWLEDGEMANAGEMENT ])) { throw new RestException(401); } @@ -322,6 +323,8 @@ class Categories extends DolibarrApi throw new RestException(401); } elseif ($type == Categorie::TYPE_PROJECT && !DolibarrApiAccess::$user->rights->projet->lire) { throw new RestException(401); + } elseif ($type == Categorie::TYPE_KNOWLEDGEMANAGEMENT && !DolibarrApiAccess::$user->rights->knowledgemanagement->knowledgerecord->read) { + throw new RestException(401); } $categories = $this->category->getListForItem($id, $type, $sortfield, $sortorder, $limit, $page); diff --git a/htdocs/categories/class/categorie.class.php b/htdocs/categories/class/categorie.class.php index dad25199566..b222f70110a 100644 --- a/htdocs/categories/class/categorie.class.php +++ b/htdocs/categories/class/categorie.class.php @@ -332,6 +332,7 @@ class Categorie extends CommonObject // Check parameters if (empty($id) && empty($label) && empty($ref_ext)) { + $this->error = "No category to search for"; return -1; } if (!is_null($type) && !is_numeric($type)) { @@ -389,6 +390,7 @@ class Categorie extends CommonObject return 1; } else { + $this->error = "No category found"; return 0; } } else { @@ -701,13 +703,14 @@ class Categorie extends CommonObject $type = $obj->element; } + dol_syslog(get_class($this).'::add_type', LOG_DEBUG); + $this->db->begin(); $sql = "INSERT INTO ".MAIN_DB_PREFIX."categorie_".(empty($this->MAP_CAT_TABLE[$type]) ? $type : $this->MAP_CAT_TABLE[$type]); $sql .= " (fk_categorie, fk_".(empty($this->MAP_CAT_FK[$type]) ? $type : $this->MAP_CAT_FK[$type]).")"; $sql .= " VALUES (".((int) $this->id).", ".((int) $obj->id).")"; - dol_syslog(get_class($this).'::add_type', LOG_DEBUG); if ($this->db->query($sql)) { if (!empty($conf->global->CATEGORIE_RECURSIV_ADD)) { $sql = 'SELECT fk_parent FROM '.MAIN_DB_PREFIX.'categorie'; @@ -827,7 +830,7 @@ class Categorie extends CommonObject /** * Return list of fetched instance of elements having this category * - * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member', 'knowledge_management' ...) + * @param string $type Type of category ('customer', 'supplier', 'contact', 'product', 'member', 'knowledge_management', ...) * @param int $onlyids Return only ids of objects (consume less memory) * @param int $limit Limit * @param int $offset Offset @@ -1215,9 +1218,10 @@ class Categorie extends CommonObject while ((empty($protection) || $i < $protection) && !empty($this->motherof[$cursor_categ])) { //print '  cursor_categ='.$cursor_categ.' i='.$i.' '.$this->motherof[$cursor_categ].'
'."\n"; $this->cats[$id_categ]['fullpath'] = '_'.$this->motherof[$cursor_categ].$this->cats[$id_categ]['fullpath']; - $this->cats[$id_categ]['fulllabel'] = $this->cats[$this->motherof[$cursor_categ]]['label'].' >> '.$this->cats[$id_categ]['fulllabel']; + $this->cats[$id_categ]['fulllabel'] = (empty($this->cats[$this->motherof[$cursor_categ]]) ? 'NotFound' : $this->cats[$this->motherof[$cursor_categ]]['label']).' >> '.$this->cats[$id_categ]['fulllabel']; //print '  Result for id_categ='.$id_categ.' : '.$this->cats[$id_categ]['fullpath'].' '.$this->cats[$id_categ]['fulllabel'].'
'."\n"; - $i++; $cursor_categ = $this->motherof[$cursor_categ]; + $i++; + $cursor_categ = $this->motherof[$cursor_categ]; } //print 'Result for id_categ='.$id_categ.' : '.$this->cats[$id_categ]['fullpath'].'
'."\n"; diff --git a/htdocs/categories/traduction.php b/htdocs/categories/traduction.php index 512f25a67e2..69a27c5cff5 100644 --- a/htdocs/categories/traduction.php +++ b/htdocs/categories/traduction.php @@ -20,9 +20,9 @@ */ /** - * \file htdocs/product/traduction.php - * \ingroup product - * \brief Page of translation of products + * \file htdocs/categories/traduction.php + * \ingroup categories + * \brief Page of translation of categories */ require '../main.inc.php'; @@ -35,8 +35,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php'; // Load translation files required by the page $langs->loadLangs(array('categories', 'languages')); -$id = GETPOST('id', 'int'); -$label = GETPOST('label', 'alpha'); +$id = GETPOST('id', 'int'); +$label = GETPOST('label', 'alpha'); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'alpha'); @@ -56,21 +56,23 @@ if ($result <= 0) { $type = $object->type; if (is_numeric($type)) { - $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility + $type = Categorie::$MAP_ID_TO_CODE[$type]; // For backward compatibility } + /* * Actions */ + $error = 0; -// retour a l'affichage des traduction si annulation +// return to translation view if cancelled if ($cancel == $langs->trans("Cancel")) { $action = ''; } -// Validation de l'ajout +// validation of addition if ($action == 'vadd' && $cancel != $langs->trans("Cancel") && ($user->rights->categorie->creer)) { @@ -94,7 +96,7 @@ $cancel != $langs->trans("Cancel") && } if (!$error) { - // update de l'objet + // update the object if ($forcelangprod == $current_lang) { $object->label = $libelle; $object->description = dol_htmlcleanlastbr($desc); @@ -103,7 +105,7 @@ $cancel != $langs->trans("Cancel") && $object->multilangs[$forcelangprod]["description"] = dol_htmlcleanlastbr($desc); } - // sauvegarde en base + // save in base / sauvegarde en base $res = $object->setMultiLangs($user); if ($res < 0) { $error++; @@ -119,14 +121,14 @@ $cancel != $langs->trans("Cancel") && } } -// Validation de l'edition +// validation of the edition if ($action == 'vedit' && $cancel != $langs->trans("Cancel") && ($user->rights->categorie->creer)) { $object->fetch($id); $current_lang = $langs->getDefaultLang(); - foreach ($object->multilangs as $key => $value) { // enregistrement des nouvelles valeurs dans l'objet + foreach ($object->multilangs as $key => $value) { // recording of new values in the object $libelle = GETPOST('libelle-'.$key, 'alpha'); $desc = GETPOST('desc-'.$key); @@ -164,7 +166,7 @@ $cancel != $langs->trans("Cancel") && * View */ -$form = new Form($db); +$form = new Form($db); $formadmin = new FormAdmin($db); $formother = new FormOther($db); @@ -223,10 +225,10 @@ print dol_get_fiche_end(); - /* * Action bar */ + print "\n
\n"; if ($action == '') { @@ -243,7 +245,7 @@ print "\n
\n"; if ($action == 'edit') { - //WYSIWYG Editor + // WYSIWYG Editor require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; print '
'; @@ -260,6 +262,7 @@ if ($action == 'edit') { // Label $libelle = (GETPOST('libelle-'.$key, 'alpha') ? GETPOST('libelle-'.$key, 'alpha') : $object->multilangs[$key]['label']); print '
'.$langs->trans('Label').'
'.$langs->trans('Description').''; diff --git a/htdocs/categories/viewcat.php b/htdocs/categories/viewcat.php index 7d12f571c06..5405b33d994 100644 --- a/htdocs/categories/viewcat.php +++ b/htdocs/categories/viewcat.php @@ -103,7 +103,7 @@ if ($confirm == 'no') { $parameters = array(); $reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks // Remove element from category -if ($id > 0 && $removeelem > 0) { +if ($id > 0 && $removeelem > 0 && $action == 'unlink') { if ($type == Categorie::TYPE_PRODUCT && ($user->rights->produit->creer || $user->rights->service->creer)) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $tmpobject = new Product($db); @@ -381,7 +381,7 @@ if ($cats < 0) { $fulltree = $categstatic->get_full_arbo($type, $object->id, 1); // Load possible missing includes - if ($conf->global->CATEGORY_SHOW_COUNTS) { + if (getDolGlobalString('CATEGORY_SHOW_COUNTS')) { if ($type == Categorie::TYPE_MEMBER) { require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; } @@ -407,11 +407,9 @@ if ($cats < 0) { $desc = dol_htmlcleanlastbr($val['description']); $counter = ''; - if ($conf->global->CATEGORY_SHOW_COUNTS) { + if (getDolGlobalString('CATEGORY_SHOW_COUNTS')) { // we need only a count of the elements, so it is enough to consume only the id's from the database - $elements = $type == Categorie::TYPE_ACCOUNT - ? $categstatic->getObjectsInCateg("account", 1) // Categorie::TYPE_ACCOUNT is "bank_account" instead of "account" - : $categstatic->getObjectsInCateg($type, 1); + $elements = $categstatic->getObjectsInCateg($type, 1); $counter = "".(is_array($elements) ? count($elements) : '0')."'; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -599,7 +598,8 @@ if ($type == Categorie::TYPE_CUSTOMER) { print ''; print '
'; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; $newcardbutton = ''; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; + $newcardbutton = dolGetButtonTitle($langs->trans("AddThirdParty"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/societe/card.php?action=create&client=3&custcats[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->rights->societe->creer); print_barre_liste($langs->trans("Customers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit); print ''."\n"; @@ -620,7 +620,7 @@ if ($type == Categorie::TYPE_CUSTOMER) { // Link to delete from category print '
'; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -673,7 +673,8 @@ if ($type == Categorie::TYPE_SUPPLIER) { print ''; print '
'; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; $newcardbutton = ''; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($socs); $nbtotalofrecords = ''; + $newcardbutton = dolGetButtonTitle($langs->trans("AddSupplier"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/societe/card.php?action=create&fournisseur=1&suppcats[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->rights->societe->creer); print_barre_liste($langs->trans("Suppliers"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'companies', 0, $newcardbutton, '', $limit); print ''."\n"; @@ -694,7 +695,7 @@ if ($type == Categorie::TYPE_SUPPLIER) { // Link to delete from category print '
'; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -750,7 +751,8 @@ if ($type == Categorie::TYPE_MEMBER) { print ''; print '
'; - $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; $newcardbutton = ''; + $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($prods); $nbtotalofrecords = ''; + $newcardbutton = dolGetButtonTitle($langs->trans("AddMember"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/adherents/card.php?action=create&memcats[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->rights->adherent->creer); print_barre_liste($langs->trans("Member"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'members', 0, $newcardbutton, '', $limit); print "\n"; @@ -774,7 +776,7 @@ if ($type == Categorie::TYPE_MEMBER) { // Link to delete from category print '
'; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -790,7 +792,7 @@ if ($type == Categorie::TYPE_MEMBER) { } } -// Categorie contact +// List of contacts if ($type == Categorie::TYPE_CONTACT) { $permission = $user->rights->societe->creer; @@ -810,7 +812,7 @@ if ($type == Categorie::TYPE_CONTACT) { print ''; print ''; print ''; print ''; @@ -828,7 +830,7 @@ if ($type == Categorie::TYPE_CONTACT) { $param = '&limit='.$limit.'&id='.$id.'&type='.$type; $num = count($contacts); $nbtotalofrecords = ''; - $newcardbutton = ''; + $newcardbutton = dolGetButtonTitle($langs->trans("AddContact"), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/contact/card.php?action=create&contcats[]='.$object->id.'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id), '', $user->rights->societe->creer); $objsoc = new Societe($db); print_barre_liste($langs->trans("Contact"), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'contact', 0, $newcardbutton, '', $limit); @@ -855,7 +857,7 @@ if ($type == Categorie::TYPE_CONTACT) { // Link to delete from category print '
'; - print $langs->trans("AddContactIntoCategory").'  '; + print $langs->trans("AssignCategoryTo").'  '; print $form->selectContacts('', '', 'elemid'); print '
'; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -933,7 +935,7 @@ if ($type == Categorie::TYPE_ACCOUNT) { // Link to delete from category print ''; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -1011,7 +1013,7 @@ if ($type == Categorie::TYPE_PROJECT) { // Link to delete from category print ''; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -1028,7 +1030,7 @@ if ($type == Categorie::TYPE_PROJECT) { } // List of users -if ($type == Categorie::TYPE_USER) { +if ($type == Categorie::TYPE_USER && $user->hasRight("user", "user", "read")) { require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php'; $users = $object->getObjectsInCateg($type); @@ -1047,7 +1049,7 @@ if ($type == Categorie::TYPE_USER) { print ''; print ''; print ''; print ''; @@ -1083,7 +1085,7 @@ if ($type == Categorie::TYPE_USER) { // Link to delete from category print ''; } @@ -1201,7 +1378,7 @@ if ($action == 'create') { print '
'; - print $langs->trans("AddProjectIntoCategory").'  '; + print $langs->trans("AddObjectIntoCategory").'  '; print $form->select_dolusers('', 'elemid'); print '
'; if ($user->rights->user->user->creer) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -1097,6 +1099,9 @@ if ($type == Categorie::TYPE_USER) { print ''."\n"; } +} else { + print_barre_liste($langs->trans("Users"), null, $_SERVER["PHP_SELF"], '', '', '', '', '', '', 'user'); + accessforbidden($langs->trans("NotEnoughPermissions"), 0, 0); } @@ -1142,7 +1147,7 @@ if ($type == Categorie::TYPE_WAREHOUSE) { // Link to delete from category print ''; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; @@ -1158,6 +1163,7 @@ if ($type == Categorie::TYPE_WAREHOUSE) { } } +// List of tickets if ($type == Categorie::TYPE_TICKET) { $permission = ($user->rights->categorie->creer || $user->rights->categorie->creer); @@ -1214,7 +1220,7 @@ if ($type == Categorie::TYPE_TICKET) { // Link to delete from category print ''; if ($permission) { - print ""; + print "id."'>"; print $langs->trans("DeleteFromCat"); print img_picto($langs->trans("DeleteFromCat"), 'unlink', '', false, 0, 0, '', 'paddingleft'); print ""; diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php index 351ab9212bc..ed963ddd7f2 100644 --- a/htdocs/comm/action/card.php +++ b/htdocs/comm/action/card.php @@ -409,9 +409,13 @@ if (empty($reshook) && $action == 'add') { $error++; } + + if (!$error) { $db->begin(); + + // Creation of action/event $idaction = $object->create($user); @@ -474,15 +478,15 @@ if (empty($reshook) && $action == 'add') { $db->commit(); } - if (!empty($backtopage)) { - dol_syslog("Back to ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); - header("Location: ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); - } elseif ($idaction) { - header("Location: ".DOL_URL_ROOT.'/comm/action/card.php?id='.$idaction.($moreparam ? '&'.$moreparam : '')); - } else { - header("Location: ".DOL_URL_ROOT.'/comm/action/index.php'.($moreparam ? '?'.$moreparam : '')); - } - exit; + // if (!empty($backtopage)) { + // dol_syslog("Back to ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); + // header("Location: ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); + // } elseif ($idaction) { + // header("Location: ".DOL_URL_ROOT.'/comm/action/card.php?id='.$idaction.($moreparam ? '&'.$moreparam : '')); + // } else { + // header("Location: ".DOL_URL_ROOT.'/comm/action/index.php'.($moreparam ? '?'.$moreparam : '')); + // } + // exit; } else { // If error $db->rollback(); @@ -496,6 +500,151 @@ if (empty($reshook) && $action == 'add') { setEventMessages($object->error, $object->errors, 'errors'); $action = 'create'; $donotclearsession = 1; } + + $selectedrecurrulefreq = 'no'; + $selectedrecurrulebymonthday = ''; + $selectedrecurrulebyday = ''; + $object->recurrule = GETPOSTISSET('recurrulefreq') ? "FREQ=".GETPOST('recurrulefreq', 'alpha') : ""; + $object->recurrule .= GETPOSTISSET('BYMONTHDAY') ? "_BYMONTHDAY".GETPOST('BYMONTHDAY', 'alpha') : ""; + $object->recurrule .= GETPOSTISSET('BYDAY') ? "_BYDAY".GETPOST('BYDAY', 'alpha') : ""; + + if ($object->recurrule && preg_match('/FREQ=([A-Z]+)/i', $object->recurrule, $reg1)) { + $selectedrecurrulefreq = $reg1[1]; + } + if ($object->recurrule && preg_match('/FREQ=MONTHLY.*BYMONTHDAY(\d+)/i', $object->recurrule, $reg2)) { + $selectedrecurrulebymonthday = $reg2[1]; + } + if ($object->recurrule && preg_match('/FREQ=WEEKLY.*BYDAY(\d+)/i', $object->recurrule, $reg3)) { + $selectedrecurrulebyday = $reg3[1]; + } + + // If event is recurrent + $userepeatevent = ($conf->global->MAIN_FEATURES_LEVEL == 2 ? 1 : 0); + if ($userepeatevent && !empty($selectedrecurrulefreq) && $selectedrecurrulefreq != 'no') { + // We set first date of recurrence and offsets + if ($selectedrecurrulefreq == 'WEEKLY' && !empty($selectedrecurrulebyday)) { + $firstdatearray = dol_get_first_day_week(GETPOST("apday", 'int'), GETPOST("apmonth", 'int'), GETPOST("apyear", 'int')); + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), $firstdatearray['month'], $firstdatearray['first_day'], $firstdatearray['year'], $tzforfullday ? $tzforfullday : 'tzuser'); + $datep = dol_time_plus_duree($datep, $selectedrecurrulebyday + 6, 'd');//We begin the week after + $dayoffset = 7; + $monthoffset = 0; + } elseif ($selectedrecurrulefreq == 'MONTHLY' && !empty($selectedrecurrulebymonthday)) { + $firstday = $selectedrecurrulebymonthday; + $firstmonth = GETPOST("apday") > $selectedrecurrulebymonthday ? GETPOST("apmonth", 'int') + 1 : GETPOST("apmonth", 'int');//We begin the week after + $datep = dol_mktime($fulldayevent ? '00' : GETPOST("aphour", 'int'), $fulldayevent ? '00' : GETPOST("apmin", 'int'), $fulldayevent ? '00' : GETPOST("apsec", 'int'), $firstmonth, $firstday, GETPOST("apyear", 'int'), $tzforfullday ? $tzforfullday : 'tzuser'); + $dayoffset = 0; + $monthoffset = 1; + } else { + $error++; + } + // End date + $repeateventlimitdate = dol_mktime(23, 59, 59, GETPOSTISSET("limitmonth") ? GETPOST("limitmonth", 'int') : 1, GETPOSTISSET("limitday") ? GETPOST("limitday", 'int') : 1, GETPOSTISSET("limityear") && GETPOST("limityear", 'int') < 2100 ? GETPOST("limityear", 'int') : 2100, $tzforfullday ? $tzforfullday : 'tzuser'); + // Set date of end of event + $deltatime = num_between_day($object->datep, $datep); + $datef = dol_time_plus_duree($datef, $deltatime, 'd'); + + while ($datep <= $repeateventlimitdate && !$error) { + $finalobject = clone $object; + + + $finalobject->datep = $datep; + $finalobject->datef = $datef; + // Creation of action/event + $idaction = $finalobject->create($user); + + if ($idaction > 0) { + if (!$finalobject->error) { + // Category association + $categories = GETPOST('categories', 'array'); + $finalobject->setCategories($categories); + + unset($_SESSION['assignedtouser']); + + $moreparam = ''; + if ($user->id != $finalobject->userownerid) { + $moreparam = "filtert=-1"; // We force to remove filter so created record is visible when going back to per user view. + } + + // Create reminders + if ($addreminder == 'on') { + $actionCommReminder = new ActionCommReminder($db); + + $dateremind = dol_time_plus_duree($datep, -$offsetvalue, $offsetunit); + + $actionCommReminder->dateremind = $dateremind; + $actionCommReminder->typeremind = $remindertype; + $actionCommReminder->offsetunit = $offsetunit; + $actionCommReminder->offsetvalue = $offsetvalue; + $actionCommReminder->status = $actionCommReminder::STATUS_TODO; + $actionCommReminder->fk_actioncomm = $finalobject->id; + if ($remindertype == 'email') { + $actionCommReminder->fk_email_template = $modelmail; + } + + // the notification must be created for every user assigned to the event + foreach ($finalobject->userassigned as $userassigned) { + $actionCommReminder->fk_user = $userassigned['id']; + $res = $actionCommReminder->create($user); + + if ($res <= 0) { + // If error + $db->rollback(); + $langs->load("errors"); + $error = $langs->trans('ErrorReminderActionCommCreation'); + setEventMessages($error, null, 'errors'); + $action = 'create'; $donotclearsession = 1; + break; + } + } + } + + // Modify $moreparam so we are sure to see the event we have just created, whatever are the default value of filter on next page. + /*$moreparam .= ($moreparam ? '&' : '').'search_actioncode=0'; + $moreparam .= ($moreparam ? '&' : '').'search_status=-1'; + $moreparam .= ($moreparam ? '&' : '').'search_filtert='.$object->userownerid; + */ + $moreparam .= ($moreparam ? '&' : '').'disabledefaultvalues=1'; + + if ($error) { + $db->rollback(); + } else { + $db->commit(); + } + } else { + // If error + $db->rollback(); + $langs->load("errors"); + $error = $langs->trans($finalobject->error); + setEventMessages($error, null, 'errors'); + $action = 'create'; $donotclearsession = 1; + } + } else { + $db->rollback(); + setEventMessages($finalobject->error, $finalobject->errors, 'errors'); + $action = 'create'; $donotclearsession = 1; + } + + // If event is not recurrent, we stop here + if (!($userepeatevent && GETPOSTISSET('recurrulefreq') && GETPOST('recurrulefreq') != 'no' && GETPOSTISSET("limityear") && GETPOSTISSET("limitmonth") && GETPOSTISSET("limitday"))) { + break; + } + + // increment date for recurrent events + $datep = dol_time_plus_duree($datep, $dayoffset, 'd'); + $datep = dol_time_plus_duree($datep, $monthoffset, 'm'); + $datef = dol_time_plus_duree($datef, $dayoffset, 'd'); + $datef = dol_time_plus_duree($datef, $monthoffset, 'm'); + } + } + if (!empty($backtopage) && !$error) { + dol_syslog("Back to ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); + header("Location: ".$backtopage.($moreparam ? (preg_match('/\?/', $backtopage) ? '&'.$moreparam : '?'.$moreparam) : '')); + } elseif ($idaction) { + header("Location: ".DOL_URL_ROOT.'/comm/action/card.php?id='.$idaction.($moreparam ? '&'.$moreparam : '')); + } else { + header("Location: ".DOL_URL_ROOT.'/comm/action/index.php'.($moreparam ? '?'.$moreparam : '')); + } + exit; } } @@ -528,7 +677,7 @@ if (empty($reshook) && $action == 'update') { $object->fetch($id); $object->fetch_optionals(); $object->fetch_userassigned(); - $object->oldcopy = clone $object; + $object->oldcopy = dol_clone($object); // Clean parameters if ($fulldayevent) { @@ -778,7 +927,7 @@ if (empty($reshook) && $action == 'confirm_delete' && GETPOST("confirm") == 'yes $object->fetch($id); $object->fetch_optionals(); $object->fetch_userassigned(); - $object->oldcopy = clone $object; + $object->oldcopy = dol_clone($object); if ($user->rights->agenda->myactions->delete || $user->rights->agenda->allactions->delete) { @@ -916,10 +1065,11 @@ $formproject = new FormProjets($db); $arrayrecurrulefreq = array( 'no'=>$langs->trans("OnceOnly"), 'MONTHLY'=>$langs->trans("EveryMonth"), - 'WEEKLY'=>$langs->trans("EveryWeek"), - //'DAYLY'=>$langs->trans("EveryDay") + 'WEEKLY'=>$langs->trans("EveryWeek") + // 'DAILY'=>$langs->trans("EveryDay") ); + $help_url = 'EN:Module_Agenda_En|FR:Module_Agenda|ES:M&omodulodulo_Agenda'; llxHeader('', $langs->trans("Agenda"), $help_url); @@ -1036,20 +1186,32 @@ if ($action == 'create') { //print '
'; print '        
'; print img_picto($langs->trans("Recurrence"), 'recurring', 'class="paddingright2"'); - print ''; + print ''; + $selectedrecurrulefreq = 'no'; $selectedrecurrulebymonthday = ''; $selectedrecurrulebyday = ''; + $object->recurrule = GETPOSTISSET('recurrulefreq') ? "FREQ=".GETPOST('recurrulefreq', 'alpha') : ""; + $object->recurrule .= GETPOSTISSET('BYMONTHDAY') ? "_BYMONTHDAY".GETPOST('BYMONTHDAY', 'alpha') : ""; + $object->recurrule .= GETPOSTISSET('BYDAY') ? "_BYDAY".GETPOST('BYDAY', 'alpha') : ""; + + + $reg = array(); if ($object->recurrule && preg_match('/FREQ=([A-Z]+)/i', $object->recurrule, $reg)) { $selectedrecurrulefreq = $reg[1]; } - if ($object->recurrule && preg_match('/FREQ=MONTHLY.*BYMONTHDAY=(\d+)/i', $object->recurrule, $reg)) { + if ($object->recurrule && preg_match('/FREQ=MONTHLY.*BYMONTHDAY(\d+)/i', $object->recurrule, $reg)) { $selectedrecurrulebymonthday = $reg[1]; } if ($object->recurrule && preg_match('/FREQ=WEEKLY.*BYDAY(\d+)/i', $object->recurrule, $reg)) { $selectedrecurrulebyday = $reg[1]; } + print $form->selectarray('recurrulefreq', $arrayrecurrulefreq, $selectedrecurrulefreq, 0, 0, 0, '', 0, 0, 0, '', 'marginrightonly'); + // print ''; + // For recursive event + + // If recurrulefreq is MONTHLY print ''; //print '
'; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { // Related company print ''; - } + // // Recurring event + // $userepeatevent = ($conf->global->MAIN_FEATURES_LEVEL == 2 ? 1 : 0); + // if ($userepeatevent) { + // // Repeat + // //print ''; + // } print ''; // Date start - end @@ -1714,7 +1891,7 @@ if ($id > 0) { print '
'.$langs->trans("ActionOnCompany").''; if (GETPOST('socid', 'int') > 0) { @@ -1544,64 +1721,64 @@ if ($id > 0) { print '
'.$langs->trans("Date").'fulldayevent ? ' checked' : '').'>'; print ''; - // Recurring event - $userepeatevent = ($conf->global->MAIN_FEATURES_LEVEL == 2 ? 1 : 0); - if ($userepeatevent) { - // Repeat - //print '
'; - print '        
'; - print img_picto($langs->trans("Recurrence"), 'recurring', 'class="paddingright2"'); - print ''; - $selectedrecurrulefreq = 'no'; - $selectedrecurrulebymonthday = ''; - $selectedrecurrulebyday = ''; - if ($object->recurrule && preg_match('/FREQ=([A-Z]+)/i', $object->recurrule, $reg)) { - $selectedrecurrulefreq = $reg[1]; - } - if ($object->recurrule && preg_match('/FREQ=MONTHLY.*BYMONTHDAY=(\d+)/i', $object->recurrule, $reg)) { - $selectedrecurrulebymonthday = $reg[1]; - } - if ($object->recurrule && preg_match('/FREQ=WEEKLY.*BYDAY(\d+)/i', $object->recurrule, $reg)) { - $selectedrecurrulebyday = $reg[1]; - } - print $form->selectarray('recurrulefreq', $arrayrecurrulefreq, $selectedrecurrulefreq, 0, 0, 0, '', 0, 0, 0, '', 'marginrightonly'); - // If recurrulefreq is MONTHLY - print ''; - // If recurrulefreq is WEEKLY - print ''; - print ''; - print '
'; - //print '
'; + // print '        
'; + // print img_picto($langs->trans("Recurrence"), 'recurring', 'class="paddingright2"'); + // print ''; + // $selectedrecurrulefreq = 'no'; + // $selectedrecurrulebymonthday = ''; + // $selectedrecurrulebyday = ''; + // if ($object->recurrule && preg_match('/FREQ=([A-Z]+)/i', $object->recurrule, $reg)) { + // $selectedrecurrulefreq = $reg[1]; + // } + // if ($object->recurrule && preg_match('/FREQ=MONTHLY.*BYMONTHDAY=(\d+)/i', $object->recurrule, $reg)) { + // $selectedrecurrulebymonthday = $reg[1]; + // } + // if ($object->recurrule && preg_match('/FREQ=WEEKLY.*BYDAY(\d+)/i', $object->recurrule, $reg)) { + // $selectedrecurrulebyday = $reg[1]; + // } + // print $form->selectarray('recurrulefreq', $arrayrecurrulefreq, $selectedrecurrulefreq, 0, 0, 0, '', 0, 0, 0, '', 'marginrightonly'); + // // If recurrulefreq is MONTHLY + // print ''; + // // If recurrulefreq is WEEKLY + // print ''; + // print ''; + // print '
'; + // //print '
'; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { // Related company print ''; print '
'.$langs->trans("ActionOnCompany").''; @@ -1902,13 +2079,22 @@ if ($id > 0) { } else { print dol_get_fiche_head($head, 'card', $langs->trans("Action"), -1, 'action'); + $formconfirm = ''; + // Clone event if ($action == 'clone') { - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.GETPOST('id'), $langs->trans('ToClone'), $langs->trans('ConfirmCloneEvent', $object->label), 'confirm_clone', $formquestion, 'yes', 1); - - print $formconfirm; + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?id='.GETPOST('id'), $langs->trans('ToClone'), $langs->trans('ConfirmCloneEvent', $object->label), 'confirm_clone', array(), 'yes', 1); } + // Call Hook formConfirm + $parameters = array(); + $reshook = $hookmanager->executeHooks('formConfirm', $parameters, $object, $action); // Note that $action and $object may have been modified by hook + if (empty($reshook)) $formconfirm.=$hookmanager->resPrint; + elseif ($reshook > 0) $formconfirm=$hookmanager->resPrint; + + // Print form confirm + print $formconfirm; + $linkback = ''; // Link to other agenda views $linkback .= ''; @@ -2114,7 +2300,7 @@ if ($id > 0) { print '
'; print ''; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { // Related company print '"; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Compte bancaire par défaut print '
'.$langs->trans("ActionOnCompany").''.($object->thirdparty->id ? $object->thirdparty->getNomUrl(1) : (''.$langs->trans("None").'')); if (is_object($object->thirdparty) && $object->thirdparty->id > 0 && $object->type_code == 'AC_TEL') { diff --git a/htdocs/comm/action/class/actioncomm.class.php b/htdocs/comm/action/class/actioncomm.class.php index 7d03def1464..9a7114a6113 100644 --- a/htdocs/comm/action/class/actioncomm.class.php +++ b/htdocs/comm/action/class/actioncomm.class.php @@ -285,17 +285,17 @@ class ActionComm extends CommonObject // Properties for links to other objects /** - * @var int Id of linked object + * @var int Id of linked object */ public $fk_element; // Id of record /** - * @var int Id of record alternative for API + * @var int Id of record alternative for API */ public $elementid; /** - * @var string Type of record. This if property ->element of object linked to. + * @var string Type of record. This if property ->element of object linked to. */ public $elementtype; @@ -373,6 +373,16 @@ class ActionComm extends CommonObject */ public $status; + /** + * Properties to manage the recurring events + */ + public $recurid; + public $recurrule; + public $recurdateend; + + public $calling_duration; + + /** * Typical value for a event that is in a todo state */ @@ -1548,13 +1558,13 @@ class ActionComm extends CommonObject } $canread = 0; - if ($user->rights->agenda->myactions->read && $this->authorid == $user->id) { + if (!empty($user->rights->agenda->myactions->read) && $this->authorid == $user->id) { $canread = 1; // Can read my event } - if ($user->rights->agenda->myactions->read && array_key_exists($user->id, $this->userassigned)) { + if (!empty($user->rights->agenda->myactions->read) && array_key_exists($user->id, $this->userassigned)) { $canread = 1; // Can read my event i am assigned } - if ($user->rights->agenda->allactions->read) { + if (!empty($user->rights->agenda->allactions->read)) { $canread = 1; // Can read all event of other } if (!$canread) { @@ -2083,8 +2093,8 @@ class ActionComm extends CommonObject } if (!empty($conf->global->AGENDA_EXPORT_FIX_TZ)) { - $timestampStart = - ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600); - $timestampEnd = - ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600); + $timestampStart = $timestampStart - ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600); + $timestampEnd = $timestampEnd - ($conf->global->AGENDA_EXPORT_FIX_TZ * 3600); } $urlwithouturlroot = preg_replace('/'.preg_quote(DOL_URL_ROOT, '/').'$/i', '', trim($dolibarr_main_url_root)); diff --git a/htdocs/comm/action/class/api_agendaevents.class.php b/htdocs/comm/action/class/api_agendaevents.class.php index 2d868e9bfaa..e7745f1d5fd 100644 --- a/htdocs/comm/action/class/api_agendaevents.class.php +++ b/htdocs/comm/action/class/api_agendaevents.class.php @@ -129,19 +129,19 @@ class AgendaEvents extends DolibarrApi } $sql = "SELECT t.id as rowid"; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) } } $sql .= " FROM ".MAIN_DB_PREFIX."actioncomm as t"; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale } } $sql .= ' WHERE t.entity IN ('.getEntity('agenda').')'; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { if ((!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { $sql .= " AND t.fk_soc = sc.fk_soc"; } diff --git a/htdocs/comm/action/class/cactioncomm.class.php b/htdocs/comm/action/class/cactioncomm.class.php index d2b089491a7..db9f28c7763 100644 --- a/htdocs/comm/action/class/cactioncomm.class.php +++ b/htdocs/comm/action/class/cactioncomm.class.php @@ -204,16 +204,21 @@ class CActionComm if ($obj->module == 'order' && !empty($conf->commande->enabled) && empty($user->rights->commande->lire)) { $qualified = 1; } - if ($obj->module == 'propal' && !empty($conf->propal->enabled) && !empty($user->rights->propale->lire)) { + if ($obj->module == 'propal' && isModEnabled("propal") && !empty($user->rights->propale->lire)) { $qualified = 1; } - if ($obj->module == 'invoice_supplier' && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && !empty($user->rights->fournisseur->facture->lire)) || (!empty($conf->rights->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire)))) { + if ($obj->module == 'invoice_supplier' && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && !empty($user->rights->fournisseur->facture->lire)) || (!empty($conf->rights->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire)))) { $qualified = 1; } - if ($obj->module == 'order_supplier' && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && !empty($user->rights->fournisseur->commande->lire)) || (empty($conf->rights->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)))) { + if ($obj->module == 'order_supplier' && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && !empty($user->rights->fournisseur->commande->lire)) || (empty($conf->rights->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)))) { $qualified = 1; } - if ($obj->module == 'shipping' && !empty($conf->expedition->enabled) && !empty($user->rights->expedition->lire)) { + if ($obj->module == 'shipping' && isModEnabled("expedition") && !empty($user->rights->expedition->lire)) { + $qualified = 1; + } + // For case module = 'myobject@eventorganization' + $tmparray = preg_split("/@/", $obj->module, -1); + if (count($tmparray) > 1 && $tmparray[1] == 'eventorganization' && !empty($conf->eventorganization->enabled)) { $qualified = 1; } // For the generic case with type = 'module...' and module = 'myobject@mymodule' diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php index 9fcb8375193..7fb2f0f129e 100644 --- a/htdocs/comm/action/index.php +++ b/htdocs/comm/action/index.php @@ -111,7 +111,7 @@ $month = GETPOST("month", "int") ?GETPOST("month", "int") : date("m"); $week = GETPOST("week", "int") ?GETPOST("week", "int") : date("W"); $day = GETPOST("day", "int") ?GETPOST("day", "int") : date("d"); $pid = GETPOST("search_projectid", "int", 3) ? GETPOST("search_projectid", "int", 3) : GETPOST("projectid", "int", 3); -$status = GETPOSTISSET("search_status") ? GETPOST("search_status", 'aZ09') : GETPOST("status", 'aZ09'); // status may be 0, 50, 100, 'todo' +$status = GETPOSTISSET("search_status") ? GETPOST("search_status", 'aZ09') : GETPOST("status", 'aZ09'); // status may be 0, 50, 100, 'todo', 'na' or -1 $type = GETPOSTISSET("search_type") ? GETPOST("search_type", 'aZ09') : GETPOST("type", 'aZ09'); $maxprint = GETPOSTISSET("maxprint") ? GETPOST("maxprint", 'int') : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW; $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') @@ -212,7 +212,7 @@ if (GETPOST("viewperuser", 'alpha') || $mode == 'show_peruser') { $event->fetch($actionid); $event->fetch_optionals(); $event->fetch_userassigned(); - $event->oldcopy = clone $event; + $event->oldcopy = dol_clone($event); $result = $event->delete(); } @@ -757,14 +757,17 @@ if ($type) { $sql .= " AND ca.id = ".((int) $type); } if ($status == '0') { + // To do (not started) $sql .= " AND a.percent = 0"; } -if ($status == '-1') { +if ($status == 'na') { + // Not applicable $sql .= " AND a.percent = -1"; -} // Not applicable +} if ($status == '50') { + // Running already started $sql .= " AND (a.percent > 0 AND a.percent < 100)"; -} // Running already started +} if ($status == 'done' || $status == '100') { $sql .= " AND (a.percent = 100)"; } diff --git a/htdocs/comm/action/pertype.php b/htdocs/comm/action/pertype.php index 85eb355f2b6..d21b20bbfaf 100644 --- a/htdocs/comm/action/pertype.php +++ b/htdocs/comm/action/pertype.php @@ -189,7 +189,7 @@ if ($action == 'delete_action' && $user->rights->agenda->delete) { $event->fetch($actionid); $event->fetch_optionals(); $event->fetch_userassigned(); - $event->oldcopy = clone $event; + $event->oldcopy = dol_clone($event); $result = $event->delete(); } diff --git a/htdocs/comm/action/peruser.php b/htdocs/comm/action/peruser.php index 18f62872630..b30ef8f7ba9 100644 --- a/htdocs/comm/action/peruser.php +++ b/htdocs/comm/action/peruser.php @@ -101,7 +101,7 @@ $month = GETPOST("month", "int") ?GETPOST("month", "int") : date("m"); $week = GETPOST("week", "int") ?GETPOST("week", "int") : date("W"); $day = GETPOST("day", "int") ?GETPOST("day", "int") : date("d"); $pid = GETPOSTISSET("search_projectid") ? GETPOST("search_projectid", "int", 3) : GETPOST("projectid", "int", 3); -$status = GETPOSTISSET("search_status") ? GETPOST("search_status", 'aZ09') : GETPOST("status", 'aZ09'); // status may be 0, 50, 100, 'todo' +$status = GETPOSTISSET("search_status") ? GETPOST("search_status", 'aZ09') : GETPOST("status", 'aZ09'); // status may be 0, 50, 100, 'todo', 'na' or -1 $type = GETPOSTISSET("search_type") ? GETPOST("search_type", 'alpha') : GETPOST("type", 'alpha'); $maxprint = ((GETPOST("maxprint", 'int') != '') ?GETPOST("maxprint", 'int') : $conf->global->AGENDA_MAX_EVENTS_DAY_VIEW); $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') @@ -196,7 +196,7 @@ if ($action == 'delete_action' && $user->rights->agenda->delete) { $event->fetch($actionid); $event->fetch_optionals(); $event->fetch_userassigned(); - $event->oldcopy = clone $event; + $event->oldcopy = dol_clone($event); $result = $event->delete(); } @@ -627,12 +627,14 @@ if ($type) { if ($status == '0') { $sql .= " AND a.percent = 0"; } -if ($status == '-1') { +if ($status == '-1' || $status == 'na') { + // Not applicable $sql .= " AND a.percent = -1"; -} // Not applicable +} if ($status == '50') { + // Running already started $sql .= " AND (a.percent > 0 AND a.percent < 100)"; -} // Running already started +} if ($status == 'done' || $status == '100') { $sql .= " AND (a.percent = 100)"; } diff --git a/htdocs/comm/card.php b/htdocs/comm/card.php index 1c63189db0e..ec8ebdd67e6 100644 --- a/htdocs/comm/card.php +++ b/htdocs/comm/card.php @@ -44,13 +44,13 @@ if (isModEnabled('facture')) { require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture-rec.class.php'; } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->commande->enabled)) { require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; } -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; } if (!empty($conf->contrat->enabled)) { @@ -72,7 +72,7 @@ if (!empty($conf->contrat->enabled)) { if (!empty($conf->commande->enabled)) { $langs->load("orders"); } -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { $langs->load("sendings"); } if (isModEnabled('facture')) { @@ -438,7 +438,7 @@ if ($object->id > 0) { print "
'; print '
'; @@ -697,7 +697,7 @@ if ($object->id > 0) { $boxstat .= ''; $boxstat .= ''; print ''; // Title - print ''; + print ''; // Date creation print '
'; - if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (isModEnabled("propal") && $user->rights->propal->lire) { // Box proposals $tmp = $object->getOutstandingProposals(); $outstandingOpened = $tmp['opened']; @@ -818,7 +818,7 @@ if ($object->id > 0) { /* * Latest proposals */ - if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (isModEnabled("propal") && $user->rights->propal->lire) { $langs->load("propal"); $sql = "SELECT s.nom, s.rowid, p.rowid as propalid, p.fk_statut, p.total_ht"; @@ -914,8 +914,10 @@ if ($object->id > 0) { * Latest orders */ if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { + $param =""; + $sql = "SELECT s.nom, s.rowid"; - $sql .= ", c.rowid as cid, c.total_ht"; + $sql .= ", c.rowid as cid, c.entity, c.total_ht"; $sql .= ", c.total_tva"; $sql .= ", c.total_ttc"; $sql .= ", c.ref, c.ref_client, c.fk_statut, c.facture"; @@ -1022,9 +1024,9 @@ if ($object->id > 0) { /* * Latest shipments */ - if (!empty($conf->expedition->enabled) && $user->rights->expedition->lire) { + if (isModEnabled("expedition") && $user->rights->expedition->lire) { $sql = 'SELECT e.rowid as id'; - $sql .= ', e.ref'; + $sql .= ', e.ref, e.entity'; $sql .= ', e.date_creation'; $sql .= ', e.fk_statut as statut'; $sql .= ', s.nom'; @@ -1033,7 +1035,7 @@ if ($object->id > 0) { $sql .= " WHERE e.fk_soc = s.rowid AND s.rowid = ".((int) $object->id); $sql .= " AND e.entity IN (".getEntity('expedition').")"; $sql .= ' GROUP BY e.rowid'; - $sql .= ', e.ref'; + $sql .= ', e.ref, e.entity'; $sql .= ', e.date_creation'; $sql .= ', e.fk_statut'; $sql .= ', s.nom'; @@ -1121,7 +1123,8 @@ if ($object->id > 0) { * Latest contracts */ if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire) { - $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut as contract_status, c.datec as dc, c.date_contrat as dcon, c.ref_customer as refcus, c.ref_supplier as refsup, c.entity"; + $sql = "SELECT s.nom, s.rowid, c.rowid as id, c.ref as ref, c.statut as contract_status, c.datec as dc, c.date_contrat as dcon, c.ref_customer as refcus, c.ref_supplier as refsup, c.entity,"; + $sql .= " c.last_main_doc, c.model_pdf"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."contrat as c"; $sql .= " WHERE c.fk_soc = s.rowid "; $sql .= " AND s.rowid = ".((int) $object->id); @@ -1154,6 +1157,8 @@ if ($object->id > 0) { $contrat->ref_customer = $objp->refcus; $contrat->ref_supplier = $objp->refsup; $contrat->statut = $objp->contract_status; + $contrat->last_main_doc = $objp->last_main_doc; + $contrat->model_pdf = $objp->model_pdf; $contrat->fetch_lines(); $late = ''; @@ -1168,30 +1173,32 @@ if ($object->id > 0) { print '
'; print $contrat->getNomUrl(1, 12); - // Preview - $filedir = $conf->contrat->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref); - $file_list = null; - if (!empty($filedir)) { - $file_list = dol_dir_list($filedir, 'files', 0, '', '(\.meta|_preview.*.*\.png)$', 'date', SORT_DESC); - } - if (is_array($file_list)) { - // Defined relative dir to DOL_DATA_ROOT - $relativedir = ''; - if ($filedir) { - $relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $filedir); - $relativedir = preg_replace('/^[\\/]/', '', $relativedir); + if (!empty($contrat->model_pdf)) { + // Preview + $filedir = $conf->contrat->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref); + $file_list = null; + if (!empty($filedir)) { + $file_list = dol_dir_list($filedir, 'files', 0, '', '(\.meta|_preview.*.*\.png)$', 'date', SORT_DESC); } - // Get list of files stored into database for same relative directory - if ($relativedir) { - completeFileArrayWithDatabaseInfo($file_list, $relativedir); - - //var_dump($sortfield.' - '.$sortorder); - if (!empty($sortfield) && !empty($sortorder)) { // If $sortfield is for example 'position_name', we will sort on the property 'position_name' (that is concat of position+name) - $file_list = dol_sort_array($file_list, $sortfield, $sortorder); + if (is_array($file_list)) { + // Defined relative dir to DOL_DATA_ROOT + $relativedir = ''; + if ($filedir) { + $relativedir = preg_replace('/^'.preg_quote(DOL_DATA_ROOT, '/').'/', '', $filedir); + $relativedir = preg_replace('/^[\\/]/', '', $relativedir); } + // Get list of files stored into database for same relative directory + if ($relativedir) { + completeFileArrayWithDatabaseInfo($file_list, $relativedir); + + //var_dump($sortfield.' - '.$sortorder); + if (!empty($sortfield) && !empty($sortorder)) { // If $sortfield is for example 'position_name', we will sort on the property 'position_name' (that is concat of position+name) + $file_list = dol_sort_array($file_list, $sortfield, $sortorder); + } + } + $relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf'; + print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0); } - $relativepath = dol_sanitizeFileName($objp->ref).'/'.dol_sanitizeFileName($objp->ref).'.pdf'; - print $formfile->showPreview($file_list, $contrat->element, $relativepath, 0); } // $filename = dol_sanitizeFileName($objp->ref); // $filedir = $conf->contrat->multidir_output[$objp->entity].'/'.dol_sanitizeFileName($objp->ref); @@ -1541,7 +1548,7 @@ if ($object->id > 0) { print ''; } - if (!empty($conf->propal->enabled) && $user->rights->propal->creer && $object->status == 1) { + if (isModEnabled("propal") && $user->rights->propal->creer && $object->status == 1) { $langs->load("propal"); print ''; } diff --git a/htdocs/comm/index.php b/htdocs/comm/index.php index c63ece66cd2..6f9cfac40a5 100644 --- a/htdocs/comm/index.php +++ b/htdocs/comm/index.php @@ -90,7 +90,7 @@ $maxofloop = (empty($conf->global->MAIN_MAXLIST_OVERLOAD) ? 500 : $conf->global- $form = new Form($db); $formfile = new FormFile($db); $companystatic = new Societe($db); -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { $propalstatic = new Propal($db); } if (!empty($conf->supplier_proposal->enabled)) { @@ -99,7 +99,7 @@ if (!empty($conf->supplier_proposal->enabled)) { if (!empty($conf->commande->enabled)) { $orderstatic = new Commande($db); } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { $supplierorderstatic = new CommandeFournisseur($db); } @@ -127,7 +127,8 @@ if ($tmp) { /* * Draft customer proposals */ -if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + +if (isModEnabled("propal") && $user->rights->propal->lire) { $sql = "SELECT p.rowid, p.ref, p.ref_client, p.total_ht, p.total_tva, p.total_ttc, p.fk_statut as status"; $sql .= ", s.rowid as socid, s.nom as name, s.name_alias"; $sql .= ", s.code_client, s.code_compta, s.client"; @@ -224,6 +225,7 @@ if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { /* * Draft supplier proposals */ + if (!empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire) { $sql = "SELECT p.rowid, p.ref, p.total_ht, p.total_tva, p.total_ttc, p.fk_statut as status"; $sql .= ", s.rowid as socid, s.nom as name, s.name_alias"; @@ -320,6 +322,7 @@ if (!empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposa /* * Draft customer orders */ + if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { $sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ht, c.total_tva, c.total_ttc, c.fk_statut as status"; $sql .= ", s.rowid as socid, s.nom as name, s.name_alias"; @@ -404,7 +407,7 @@ if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { } } - addSummaryTableLine(3, $num, $nbofloop, $total, "NoProposal"); + addSummaryTableLine(3, $num, $nbofloop, $total, "NoOrder"); finishSimpleTable(true); $db->free($resql); @@ -417,7 +420,8 @@ if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { /* * Draft purchase orders */ -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire)) { + +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire)) { $sql = "SELECT cf.rowid, cf.ref, cf.ref_supplier, cf.total_ht, cf.total_tva, cf.total_ttc, cf.fk_statut as status"; $sql .= ", s.rowid as socid, s.nom as name, s.name_alias"; $sql .= ", s.code_client, s.code_compta, s.client"; @@ -501,7 +505,7 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU } } - addSummaryTableLine(3, $num, $nbofloop, $total, "NoProposal"); + addSummaryTableLine(3, $num, $nbofloop, $total, "NoOrder"); finishSimpleTable(true); $db->free($resql); @@ -588,7 +592,7 @@ print '
'; /* * Last modified customers or prospects */ -if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { +if (isModEnabled("societe") && $user->rights->societe->lire) { $sql = "SELECT s.rowid as socid, s.nom as name, s.name_alias"; $sql .= ", s.code_client, s.code_compta, s.client"; $sql .= ", s.code_fournisseur, s.code_compta_fournisseur, s.fournisseur"; @@ -663,7 +667,7 @@ if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { $s .= ''.dol_substr($langs->trans("Customer"), 0, 1).''; } /* - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $obj->fournisseur) + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $obj->fournisseur) { $s .= ''.dol_substr($langs->trans("Supplier"), 0, 1).''; }*/ @@ -694,7 +698,7 @@ if (!empty($conf->societe->enabled) && $user->rights->societe->lire) { /* * Last suppliers */ -if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->societe->lire) { +if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $user->rights->societe->lire) { $sql = "SELECT s.rowid as socid, s.nom as name, s.name_alias"; $sql .= ", s.code_client, s.code_compta, s.client"; $sql .= ", s.code_fournisseur, s.code_compta_fournisseur, s.fournisseur"; @@ -759,7 +763,7 @@ if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_S { $s .= ''.dol_substr($langs->trans("Customer"), 0, 1).''; }*/ - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $obj->fournisseur) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $obj->fournisseur) { $s .= ''.dol_substr($langs->trans("Supplier"), 0, 1).''; } print $s; @@ -883,7 +887,7 @@ if (!empty($conf->contrat->enabled) && $user->rights->contrat->lire && 0) { // T /* * Opened (validated) proposals */ -if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { +if (isModEnabled("propal") && $user->rights->propal->lire) { $sql = "SELECT p.rowid as propalid, p.entity, p.total_ttc, p.total_ht, p.total_tva, p.ref, p.ref_client, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; $sql .= ", s.rowid as socid, s.nom as name, s.name_alias"; $sql .= ", s.code_client, s.code_compta, s.client"; diff --git a/htdocs/comm/mailing/card.php b/htdocs/comm/mailing/card.php index d46a02132a1..748c5fabf10 100644 --- a/htdocs/comm/mailing/card.php +++ b/htdocs/comm/mailing/card.php @@ -801,13 +801,20 @@ if ($action == 'create') { // MAILING_NO_USING_PHPMAIL may be defined or not. // MAILING_LIMIT_SENDBYWEB is always defined to something != 0 (-1=forbidden). // MAILING_LIMIT_SENDBYCLI may be defined ot not (-1=forbidden, 0 or undefined=no limit). + // MAILING_LIMIT_SENDBYDAY may be defined ot not (0 or undefined=no limit). if (!empty($conf->global->MAILING_NO_USING_PHPMAIL) && $sendingmode == 'mail') { // EMailing feature may be a spam problem, so when you host several users/instance, having this option may force each user to use their own SMTP agent. // You ensure that every user is using its own SMTP server when using the mass emailing module. $linktoadminemailbefore = ''; $linktoadminemailend = ''; setEventMessages($langs->trans("MailSendSetupIs", $listofmethods[$sendingmode]), null, 'warnings'); - setEventMessages($langs->trans("MailSendSetupIs2", $linktoadminemailbefore, $linktoadminemailend, $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $listofmethods['smtps']), null, 'warnings'); + $messagetoshow = $langs->trans("MailSendSetupIs2", '{s1}', '{s2}', '{s3}', '{s4}'); + $messagetoshow = str_replace('{s1}', $linktoadminemailbefore, $messagetoshow); + $messagetoshow = str_replace('{s2}', $linktoadminemailend, $messagetoshow); + $messagetoshow = str_replace('{s3}', $langs->transnoentitiesnoconv("MAIN_MAIL_SENDMODE"), $messagetoshow); + $messagetoshow = str_replace('{s4}', $listofmethods['smtps'], $messagetoshow); + setEventMessages($messagetoshow, null, 'warnings'); + if (!empty($conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS)) { setEventMessages($langs->trans("MailSendSetupIs3", $conf->global->MAILING_SMTP_SETUP_EMAILS_FOR_QUESTIONS), null, 'warnings'); } @@ -836,14 +843,21 @@ if ($action == 'create') { } $text = ''; - if (!isset($conf->global->MAILING_LIMIT_SENDBYCLI) || $conf->global->MAILING_LIMIT_SENDBYCLI >= 0) { - $text .= $langs->trans("MailingNeedCommand"); - $text .= '
'; + + if (isset($conf->global->MAILING_LIMIT_SENDBYDAY) && $conf->global->MAILING_LIMIT_SENDBYDAY >= 0) { + $text .= $langs->trans('WarningLimitSendByDay', $conf->global->MAILING_LIMIT_SENDBYDAY); $text .= '

'; } $text .= $langs->trans('ConfirmSendingEmailing').'
'; $text .= $langs->trans('LimitSendingEmailing', $conf->global->MAILING_LIMIT_SENDBYWEB); - print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 330, 600); + + if (!isset($conf->global->MAILING_LIMIT_SENDBYCLI) || $conf->global->MAILING_LIMIT_SENDBYCLI >= 0) { + $text .= '

'; + $text .= $langs->trans("MailingNeedCommand"); + $text .= '
'; + } + + print $form->formconfirm($_SERVER['PHP_SELF'].'?id='.$object->id, $langs->trans('SendMailing'), $text, 'sendallconfirmed', '', '', 1, 330, 600, 0, $langs->trans("Confirm"), $langs->trans("Cancel")); } } diff --git a/htdocs/comm/mailing/class/advtargetemailing.class.php b/htdocs/comm/mailing/class/advtargetemailing.class.php index 62dd24aaaf7..ea6ec241b16 100644 --- a/htdocs/comm/mailing/class/advtargetemailing.class.php +++ b/htdocs/comm/mailing/class/advtargetemailing.class.php @@ -41,7 +41,7 @@ class AdvanceTargetingMailing extends CommonObject /** * @var string Name of table without prefix where object is stored */ - public $table_element = 'advtargetemailing'; + public $table_element = 'mailing_advtarget'; /** * @var int ID @@ -159,7 +159,7 @@ class AdvanceTargetingMailing extends CommonObject // Put here code to add control on parameters values // Insert request - $sql = "INSERT INTO ".MAIN_DB_PREFIX."advtargetemailing("; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_advtarget("; $sql .= "name,"; $sql .= "entity,"; $sql .= "fk_element,"; @@ -188,7 +188,7 @@ class AdvanceTargetingMailing extends CommonObject } if (!$error) { - $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."advtargetemailing"); + $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."mailing_advtarget"); } // Commit or rollback @@ -227,7 +227,7 @@ class AdvanceTargetingMailing extends CommonObject $sql .= " t.fk_user_mod,"; $sql .= " t.tms"; - $sql .= " FROM ".MAIN_DB_PREFIX."advtargetemailing as t"; + $sql .= " FROM ".MAIN_DB_PREFIX."mailing_advtarget as t"; $sql .= " WHERE t.rowid = ".((int) $id); dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -282,7 +282,7 @@ class AdvanceTargetingMailing extends CommonObject $sql .= " t.fk_user_mod,"; $sql .= " t.tms"; - $sql .= " FROM ".MAIN_DB_PREFIX."advtargetemailing as t"; + $sql .= " FROM ".MAIN_DB_PREFIX."mailing_advtarget as t"; if (!empty($id)) { $sql .= " WHERE t.fk_element = ".((int) $id)." AND type_element = 'mailing'"; } else { @@ -345,7 +345,7 @@ class AdvanceTargetingMailing extends CommonObject $sql .= " t.fk_user_mod,"; $sql .= " t.tms"; - $sql .= " FROM ".MAIN_DB_PREFIX."advtargetemailing as t"; + $sql .= " FROM ".MAIN_DB_PREFIX."mailing_advtarget as t"; if (!empty($id)) { $sql .= " WHERE t.fk_element = ".((int) $id)." AND type_element = '".$this->db->escape($type_element)."'"; } else { @@ -410,7 +410,7 @@ class AdvanceTargetingMailing extends CommonObject // Put here code to add a control on parameters values // Update request - $sql = "UPDATE ".MAIN_DB_PREFIX."advtargetemailing SET"; + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_advtarget SET"; $sql .= " name=".(isset($this->name) ? "'".$this->db->escape($this->name)."'" : "''").","; $sql .= " entity=".$conf->entity.","; @@ -458,7 +458,7 @@ class AdvanceTargetingMailing extends CommonObject $this->db->begin(); if (!$error) { - $sql = "DELETE FROM ".MAIN_DB_PREFIX."advtargetemailing"; + $sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing_advtarget"; $sql .= " WHERE rowid=".((int) $this->id); dol_syslog(get_class($this)."::delete sql=".$sql); diff --git a/htdocs/comm/mailing/list.php b/htdocs/comm/mailing/list.php index ecde836c428..757b6373f3f 100644 --- a/htdocs/comm/mailing/list.php +++ b/htdocs/comm/mailing/list.php @@ -277,7 +277,7 @@ if ($resql) { print '
'.$obj->title.''.dol_escape_htmltag($obj->title).''; @@ -286,7 +286,7 @@ if ($resql) { // Nb of email if (!$filteremail) { - print ''; + print ''; $nbemail = $obj->nbemail; /*if ($obj->statut != 3 && !empty($conf->global->MAILING_LIMIT_SENDBYWEB) && $conf->global->MAILING_LIMIT_SENDBYWEB < $nbemail) { diff --git a/htdocs/comm/multiprix.php b/htdocs/comm/multiprix.php index 8da9a17ebb2..0e582946df9 100644 --- a/htdocs/comm/multiprix.php +++ b/htdocs/comm/multiprix.php @@ -75,7 +75,7 @@ if ($_socid > 0) { // We load data of thirdparty $objsoc = new Societe($db); $objsoc->id = $_socid; - $objsoc->fetch($_socid, $to); + $objsoc->fetch($_socid); $head = societe_prepare_head($objsoc); @@ -141,7 +141,6 @@ if ($_socid > 0) { $resql = $db->query($sql); if ($resql) { print ''; - $tag = !$tag; print ''; print ''; print ''; diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php index b8b46a0c8d9..226e9ef6389 100644 --- a/htdocs/comm/propal/card.php +++ b/htdocs/comm/propal/card.php @@ -1,6 +1,6 @@ - * Copyright (C) 2004-2014 Laurent Destailleur +/* Copyright (C) 2001-2007 Rodolphe Quiedeville + * Copyright (C) 2004-2022 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005 Marc Barilley / Ocebo * Copyright (C) 2005-2012 Regis Houssin @@ -9,12 +9,12 @@ * Copyright (C) 2010-2021 Philippe Grand * Copyright (C) 2012-2013 Christophe Battarel * Copyright (C) 2012 Cedric Salvador - * Copyright (C) 2013-2014 Florian Henry - * Copyright (C) 2014 Ferran Marcet - * Copyright (C) 2016 Marcos García - * Copyright (C) 2018-2021 Frédéric France - * Copyright (C) 2020 Nicolas ZABOURI - * Copyright (C) 2022 Gauthier VERDOL + * Copyright (C) 2013-2014 Florian Henry + * Copyright (C) 2014 Ferran Marcet + * Copyright (C) 2016 Marcos García + * Copyright (C) 2018-2021 Frédéric France + * Copyright (C) 2020 Nicolas ZABOURI + * Copyright (C) 2022 Gauthier VERDOL * * 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 @@ -88,9 +88,6 @@ $hidedetails = (GETPOST('hidedetails', 'int') ? GETPOST('hidedetails', 'int') : $hidedesc = (GETPOST('hidedesc', 'int') ? GETPOST('hidedesc', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0)); $hideref = (GETPOST('hideref', 'int') ? GETPOST('hideref', 'int') : (!empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0)); -// Nombre de ligne pour choix de produit/service predefinis -$NBLINES = 4; - $object = new Propal($db); $extrafields = new ExtraFields($db); @@ -112,17 +109,18 @@ if ($id > 0 || !empty($ref)) { // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('propalcard', 'globalcard')); -$usercanread = $user->rights->propal->lire; -$usercancreate = $user->rights->propal->creer; -$usercandelete = $user->rights->propal->supprimer; +$usercanread = $user->hasRight("propal", "lire"); +$usercancreate = $user->hasRight("propal", "creer"); +$usercandelete = $user->hasRight("propal", "supprimer"); $usercanclose = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->propal->propal_advance->close))); $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->propal->propal_advance->validate))); $usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->propal->propal_advance->send))); -$usercancreateorder = $user->rights->commande->creer; -$usercancreateinvoice = $user->rights->facture->creer; -$usercancreatecontract = $user->rights->contrat->creer; +$usermustrespectpricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); +$usercancreateorder = $user->hasRight('commande', 'creer'); +$usercancreateinvoice = $user->hasRight('facture', 'creer'); +$usercancreatecontract = $user->hasRight('contrat', 'creer'); $usercancreateintervention = $user->hasRight('ficheinter', 'creer'); $usercancreatepurchaseorder = ($user->hasRight('fournisseur', 'commande', 'creer') || $user->hasRight('supplier_order', 'creer')); @@ -326,8 +324,8 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang = $object->thirdparty->default_lang; if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -626,10 +624,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -898,6 +896,9 @@ if (empty($reshook)) { $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : ''); $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU', 2); + $price_ttc = price2num(GETPOST('price_ttc'), 'MU', 2); + $price_ttc_devise = price2num(GETPOST('multicurrency_price_ttc'), 'CU', 2); + $prod_entry_mode = GETPOST('prod_entry_mode'); if ($prod_entry_mode == 'free') { $idprod = 0; @@ -956,6 +957,7 @@ if (empty($reshook)) { $pu_ht = 0; $pu_ttc = 0; $price_min = 0; + $price_min_ttc = 0; $price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT'); $db->begin(); @@ -983,6 +985,7 @@ if (empty($reshook)) { $pu_ht = $prod->price; $pu_ttc = $prod->price_ttc; $price_min = $prod->price_min; + $price_min_ttc = $prod->price_min_ttc; $price_base_type = $prod->price_base_type; // If price per segment @@ -990,6 +993,7 @@ if (empty($reshook)) { $pu_ht = $prod->multiprices[$object->thirdparty->price_level]; $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level]; $price_min = $prod->multiprices_min[$object->thirdparty->price_level]; + $price_min_ttc = $prod->multiprices_min_ttc[$object->thirdparty->price_level]; $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level]; if (!empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) { // using this option is a bug. kept for backward compatibility if (isset($prod->multiprices_tva_tx[$object->thirdparty->price_level])) { @@ -1014,6 +1018,7 @@ if (empty($reshook)) { $pu_ht = price($prodcustprice->lines[0]->price); $pu_ttc = price($prodcustprice->lines[0]->price_ttc); $price_min = price($prodcustprice->lines[0]->price_min); + $price_min_ttc = price($prodcustprice->lines[0]->price_min_ttc); $price_base_type = $prodcustprice->lines[0]->price_base_type; $tva_tx = ($prodcustprice->lines[0]->default_vat_code ? $prodcustprice->lines[0]->tva_tx.' ('.$prodcustprice->lines[0]->default_vat_code.' )' : $prodcustprice->lines[0]->tva_tx); if ($prodcustprice->lines[0]->default_vat_code && !preg_match('/\(.*\)/', $tva_tx)) { @@ -1119,18 +1124,6 @@ if (empty($reshook)) { $desc = dol_concatdesc($desc, $product_desc, '', !empty($conf->global->MAIN_CHANGE_ORDER_CONCAT_DESCRIPTION)); } - // Add dimensions into product description - /*if (empty($conf->global->MAIN_PRODUCT_DISABLE_AUTOADD_DIM)) - { - $text=''; - if ($prod->weight) $text.=($text?"\n":"").$outputlangs->trans("Weight").': '.$prod->weight.' '.$prod->weight_units; - if ($prod->length) $text.=($text?"\n":"").$outputlangs->trans("Length").': '.$prod->length.' '.$prod->length_units; - if ($prod->surface) $text.=($text?"\n":"").$outputlangs->trans("Surface").': '.$prod->surface.' '.$prod->surface_units; - if ($prod->volume) $text.=($text?"\n":"").$outputlangs->trans("Volume").': '.$prod->volume.' '.$prod->volume_units; - - $desc = dol_concatdesc($desc, $text); - }*/ - // Add custom code and origin country into description if (empty($conf->global->MAIN_PRODUCT_DISABLE_CUSTOMCOUNTRYCODE) && (!empty($prod->customcode) || !empty($prod->country_code))) { $tmptxt = '('; @@ -1186,6 +1179,7 @@ if (empty($reshook)) { $fk_unit = GETPOST('units', 'alpha'); $pu_ht_devise = price2num($price_ht_devise, 'MU'); + $pu_ttc_devise = price2num($price_ttc_devise, 'MU'); } // Margin @@ -1204,10 +1198,22 @@ if (empty($reshook)) { $info_bits |= 0x01; } - if (((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)) && (!empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min)))) { - $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); - setEventMessages($mesg, null, 'errors'); - } else { + //var_dump(price2num($price_min)); var_dump(price2num($pu_ht)); var_dump($remise_percent); + //var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit; + + if ($usermustrespectpricemin) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } + } + + if (!$error) { // Insert line $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $price_base_type, $pu_ttc, $info_bits, $type, min($rank, count($object->lines) + 1), 0, GETPOST('fk_parent_line'), $fournprice, $buyingprice, $label, $date_start, $date_end, $array_options, $fk_unit, '', 0, $pu_ht_devise); @@ -1285,12 +1291,14 @@ if (empty($reshook)) { $localtax1_rate = get_localtax($vat_rate, 1, $object->thirdparty, $mysoc); $localtax2_rate = get_localtax($vat_rate, 2, $object->thirdparty, $mysoc); $pu_ht = price2num(GETPOST('price_ht'), '', 2); + $pu_ttc = price2num(GETPOST('price_ttc'), '', 2); // Add buying price $fournprice = price2num(GETPOST('fournprice') ? GETPOST('fournprice') : ''); $buyingprice = price2num(GETPOST('buying_price') != '' ? GETPOST('buying_price') : ''); // If buying_price is '0', we muste keep this value $pu_ht_devise = price2num(GETPOST('multicurrency_subprice'), '', 2); + //$pu_ttc_devise = price2num(GETPOST('multicurrency_subprice_ttc'), '', 2); $date_start = dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); $date_end = dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); @@ -1321,16 +1329,32 @@ if (empty($reshook)) { $res = $product->fetch($productid); $type = $product->type; + $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label') : ''); $price_min = $product->price_min; if (!empty($conf->global->PRODUIT_MULTIPRICES) && !empty($object->thirdparty->price_level)) { - $price_min = $product->multiprices_min [$object->thirdparty->price_level]; + $price_min = $product->multiprices_min[$object->thirdparty->price_level]; + } + $price_min_ttc = $product->price_min_ttc; + if (!empty($conf->global->PRODUIT_MULTIPRICES) && !empty($object->thirdparty->price_level)) { + $price_min_ttc = $product->multiprices_min_ttc[$object->thirdparty->price_level]; } - $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label') : ''); - if (((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)) && ($price_min && (price2num($pu_ht) * (1 - $remise_percent / 100) < price2num($price_min)))) { - setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors'); - $error++; + //var_dump(price2num($price_min)); var_dump(price2num($pu_ht)); var_dump($remise_percent); + //var_dump(price2num($price_min_ttc)); var_dump(price2num($pu_ttc)); var_dump($remise_percent);exit; + + if ($usermustrespectpricemin) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } } } else { $type = GETPOST('type'); @@ -1526,8 +1550,12 @@ if (!empty($conf->project->enabled)) { $formproject = new FormProjets($db); } -$title = $langs->trans('Proposal')." - ".$langs->trans('Card'); +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewPropal"); +} $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos|DE:Modul_Angebote'; + llxHeader('', $title, $help_url); $now = dol_now(); @@ -1722,7 +1750,7 @@ if ($action == 'create') { print ''; // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && isModEnabled("banque")) { print ''; @@ -1745,7 +1773,7 @@ if ($action == 'create') { print ''; // Shipping Method - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { if (!empty($conf->global->SOCIETE_ASK_FOR_SHIPPING_METHOD) && !empty($soc->shipping_method_id)) { $shipping_method_id = $soc->shipping_method_id; } @@ -1847,7 +1875,7 @@ if ($action == 'create') { // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva $objectsrc->remise_absolue = $remise_absolue; // deprecated $objectsrc->remise_percent = $remise_percent; - $objectsrc->update_price(1, - 1, 1); + $objectsrc->update_price(1, 'auto', 1); } print "\n"; @@ -2406,7 +2434,7 @@ if ($action == 'create') { print ''; // Shipping Method - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { print '
'.$langs->trans("Date").''.$langs->trans("PriceLevel").'
'; print ''; } - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && isModEnabled("banque")) { // Bank Account print '
'; print $langs->trans('SendingMethod'); @@ -2524,7 +2552,7 @@ if ($action == 'create') { print '
'; print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print '
'; @@ -2671,6 +2699,11 @@ if ($action == 'create') { // Show object lines $result = $object->getLinesArray(); + // Add products/services form + //$forceall = 1; + global $inputalsopricewithtax; + $inputalsopricewithtax = 1; + print '
@@ -2695,8 +2728,6 @@ if ($action == 'create') { // Form to add new line if ($object->statut == Propal::STATUS_DRAFT && $usercancreate && $action != 'selectlines') { if ($action != 'editline') { - // Add products/services form - $parameters = array(); $reshook = $hookmanager->executeHooks('formAddObjectLine', $parameters, $object, $action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -2775,7 +2806,7 @@ if ($action == 'create') { // Create a purchase order if (!empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_PROPOSAL)) { - if ($object->statut == Propal::STATUS_SIGNED && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) { + if ($object->statut == Propal::STATUS_SIGNED && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order"))) { if ($usercancreatepurchaseorder) { print ''.$langs->trans("AddPurchaseOrder").''; } @@ -2783,7 +2814,7 @@ if ($action == 'create') { } // Create an intervention - if (!empty($conf->service->enabled) && !empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) { + if (isModEnabled("service") && !empty($conf->ficheinter->enabled) && $object->statut == Propal::STATUS_SIGNED) { if ($usercancreateintervention) { $langs->load("interventions"); print ''.$langs->trans("AddIntervention").''; diff --git a/htdocs/comm/propal/class/api_proposals.class.php b/htdocs/comm/propal/class/api_proposals.class.php index d28b5718c2f..cf675e01b62 100644 --- a/htdocs/comm/propal/class/api_proposals.class.php +++ b/htdocs/comm/propal/class/api_proposals.class.php @@ -496,8 +496,12 @@ class Proposals extends DolibarrApi $request_data = (object) $request_data; - $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); - $request_data->label = sanitizeVal($request_data->label); + if (isset($request_data->desc)) { + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + } + if (isset($request_data->label)) { + $request_data->label = sanitizeVal($request_data->label); + } $propalline = new PropaleLigne($this->db); $result = $propalline->fetch($lineid); diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index cafca0d05a9..9831c6d7772 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1444,7 +1444,7 @@ class Propal extends CommonObject // Clear fields $object->user_author = $user->id; - $object->user_valid = ''; + $object->user_valid = 0; $object->date = $now; $object->datep = $now; // deprecated $object->fin_validite = $object->date + ($object->duree_validite * 24 * 3600); @@ -1507,12 +1507,13 @@ class Propal extends CommonObject /** * Load a proposal from database. Get also lines. * - * @param int $rowid id of object to load - * @param string $ref Ref of proposal - * @param string $ref_ext Ref ext of proposal - * @return int >0 if OK, <0 if KO + * @param int $rowid Id of object to load + * @param string $ref Ref of proposal + * @param string $ref_ext Ref ext of proposal + * @param int $forceentity Entity id to force when searching on ref or ref_ext + * @return int >0 if OK, <0 if KO */ - public function fetch($rowid, $ref = '', $ref_ext = '') + public function fetch($rowid, $ref = '', $ref_ext = '', $forceentity = 0) { $sql = "SELECT p.rowid, p.ref, p.entity, p.remise, p.remise_percent, p.remise_absolue, p.fk_soc"; $sql .= ", p.total_ttc, p.total_tva, p.localtax1, p.localtax2, p.total_ht"; @@ -1551,10 +1552,15 @@ class Propal extends CommonObject $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_input_reason as dr ON p.fk_input_reason = dr.rowid'; $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_incoterms as i ON p.fk_incoterms = i.rowid'; - if ($ref) { - $sql .= " WHERE p.entity IN (".getEntity('propal').")"; // Dont't use entity if you use rowid + if (!empty($ref)) { + if (!empty($forceentity)) { + $sql .= " WHERE p.entity = ".(int) $forceentity; // Check only the current entity because we may have the same reference in several entities + } else { + $sql .= " WHERE p.entity IN (".getEntity('propal').")"; + } $sql .= " AND p.ref='".$this->db->escape($ref)."'"; } else { + // Dont't use entity if you use rowid $sql .= " WHERE p.rowid = ".((int) $rowid); } @@ -2614,8 +2620,22 @@ class Propal extends CommonObject $newprivatenote = dol_concatdesc($this->note_private, $note); + if (empty($conf->global->PROPALE_KEEP_OLD_SIGNATURE_INFO)) { + $date_signature = $now; + $fk_user_signature = $user->id; + } else { + $this->info($this->id); + if (!isset($this->date_signature) || $this->date_signature == '') { + $date_signature = $now; + $fk_user_signature = $user->id; + } else { + $date_signature = $this->date_signature; + $fk_user_signature = $this->user_signature->id; + } + } + $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; - $sql .= " SET fk_statut = ".((int) $status).", note_private = '".$this->db->escape($newprivatenote)."', date_signature='".$this->db->idate($now)."', fk_user_signature=".$user->id; + $sql .= " SET fk_statut = ".((int) $status).", note_private = '".$this->db->escape($newprivatenote)."', date_signature='".$this->db->idate($date_signature)."', fk_user_signature=".$fk_user_signature; $sql .= " WHERE rowid = ".((int) $this->id); $resql = $this->db->query($sql); @@ -2662,7 +2682,7 @@ class Propal extends CommonObject $this->oldcopy= clone $this; $this->statut = $status; $this->status = $status; - $this->date_signature = $now; + $this->date_signature = $date_signature; $this->note_private = $newprivatenote; } @@ -3798,7 +3818,7 @@ class Propal extends CommonObject * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description * @param int $hideref Hide ref - * @param null|array $moreparams Array to provide more information + * @param null|array $moreparams Array to provide more information * @return int 0 if KO, 1 if OK */ public function generateDocument($modele, $outputlangs, $hidedetails = 0, $hidedesc = 0, $hideref = 0, $moreparams = null) diff --git a/htdocs/comm/propal/contact.php b/htdocs/comm/propal/contact.php index d9942e9153c..52318684f42 100644 --- a/htdocs/comm/propal/contact.php +++ b/htdocs/comm/propal/contact.php @@ -112,8 +112,9 @@ if ($action == 'addcontact' && $user->rights->propale->creer) { /* * View */ -$title = $langs->trans('Proposal')." - ".$langs->trans('ContactsAddresses'); +$title = $object->ref." - ".$langs->trans('ContactsAddresses'); $help_url = "EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos"; + llxHeader('', $title, $help_url); $form = new Form($db); diff --git a/htdocs/comm/propal/document.php b/htdocs/comm/propal/document.php index 31cf2c18f42..35ab2e28b49 100644 --- a/htdocs/comm/propal/document.php +++ b/htdocs/comm/propal/document.php @@ -104,7 +104,7 @@ if ($object->id > 0) { /* * View */ -$title = $langs->trans('Proposal')." - ".$langs->trans('Documents'); +$title = $object->ref." - ".$langs->trans('Documents'); $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; llxHeader('', $title, $help_url); diff --git a/htdocs/comm/propal/index.php b/htdocs/comm/propal/index.php index 9f020bc1613..c03cdf4fdcc 100644 --- a/htdocs/comm/propal/index.php +++ b/htdocs/comm/propal/index.php @@ -76,7 +76,7 @@ if ($tmp) { /* * Draft proposals */ -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { $sql = "SELECT p.rowid, p.ref, p.ref_client, p.total_ht, p.total_tva, p.total_ttc"; $sql .= ", s.rowid as socid, s.nom as name, s.client, s.canvas, s.code_client, s.email, s.entity, s.code_compta"; $sql .= " FROM ".MAIN_DB_PREFIX."propal as p"; @@ -226,7 +226,7 @@ if ($resql) { /* * Open (validated) proposals */ -if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { +if (isModEnabled("propal") && $user->rights->propale->lire) { $sql = "SELECT s.nom as socname, s.rowid as socid, s.canvas, s.client, s.email, s.code_compta"; $sql .= ", p.rowid as propalid, p.entity, p.total_ttc, p.total_ht, p.ref, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; diff --git a/htdocs/comm/propal/info.php b/htdocs/comm/propal/info.php index 65ff9c19e2b..92285183cf2 100644 --- a/htdocs/comm/propal/info.php +++ b/htdocs/comm/propal/info.php @@ -59,7 +59,7 @@ restrictedArea($user, 'propal', $object->id); $form = new Form($db); -$title = $langs->trans('Proposal')." - ".$langs->trans('Info'); +$title = $object->ref." - ".$langs->trans('Info'); $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; llxHeader('', $title, $help_url); diff --git a/htdocs/comm/propal/list.php b/htdocs/comm/propal/list.php index e490a5ca7ac..6b717d3ea6f 100644 --- a/htdocs/comm/propal/list.php +++ b/htdocs/comm/propal/list.php @@ -52,7 +52,7 @@ require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; // Load translation files required by the page $langs->loadLangs(array('companies', 'propal', 'compta', 'bills', 'orders', 'products', 'deliveries', 'categories')); -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { $langs->loadLangs(array('sendings')); } @@ -218,7 +218,7 @@ $arrayfields = array( 'p.date_livraison'=>array('label'=>"DeliveryDate", 'checked'=>0), 'p.date_signature'=>array('label'=>"DateSigning", 'checked'=>0), 'ava.rowid'=>array('label'=>"AvailabilityPeriod", 'checked'=>0), - 'p.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>0, 'enabled'=>!empty($conf->expedition->enabled)), + 'p.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>0, 'enabled'=>isModEnabled("expedition")), 'p.fk_input_reason'=>array('label'=>"Origin", 'checked'=>0, 'enabled'=>1), 'p.fk_cond_reglement'=>array('label'=>"PaymentConditionsShort", 'checked'=>0), 'p.fk_mode_reglement'=>array('label'=>"PaymentMode", 'checked'=>0), @@ -520,8 +520,9 @@ $companystatic = new Societe($db); $projectstatic = new Project($db); $formcompany = new FormCompany($db); +$title = $langs->trans('ListOfProposals'); $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; -//llxHeader('',$langs->trans('Proposal'),$help_url); +llxHeader('', $title, $help_url); $sql = 'SELECT'; if ($sall || $search_product_category > 0 || $search_user > 0) { @@ -786,8 +787,6 @@ if ($resql) { exit; } - llxHeader('', $langs->trans('Proposal'), $help_url); - $param = '&search_status='.urlencode($search_status); if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); @@ -1096,13 +1095,22 @@ if ($resql) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; - $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); print '
'; print ''."\n"; print ''; + + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } + if (!empty($arrayfields['p.ref']['checked'])) { print ''; } // Action column - print ''; - + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } print "\n"; // Fields title print ''; + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + } if (!empty($arrayfields['p.ref']['checked'])) { print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], 'p.ref', '', $param, '', $sortfield, $sortorder); } @@ -1527,7 +1539,9 @@ if ($resql) { if (!empty($arrayfields['p.fk_statut']['checked'])) { print_liste_field_titre($arrayfields['p.fk_statut']['label'], $_SERVER["PHP_SELF"], "p.fk_statut", "", $param, 'class="right"', $sortfield, $sortorder); } - print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + } print ''."\n"; $now = dol_now(); @@ -1608,6 +1622,19 @@ if ($resql) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } + if (!empty($arrayfields['p.ref']['checked'])) { print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/comm/propal/note.php b/htdocs/comm/propal/note.php index 7e40552fefb..28819123cb0 100644 --- a/htdocs/comm/propal/note.php +++ b/htdocs/comm/propal/note.php @@ -81,8 +81,9 @@ if (empty($reshook)) { $form = new Form($db); -$title = $langs->trans('Proposal')." - ".$langs->trans('Notes'); +$title = $object->ref." - ".$langs->trans('Notes'); $help_url = 'EN:Commercial_Proposals|FR:Proposition_commerciale|ES:Presupuestos'; + llxHeader('', $title, $help_url); if ($object->id > 0) { diff --git a/htdocs/comm/prospect/index.php b/htdocs/comm/prospect/index.php index e63aee6f240..bda09507ed0 100644 --- a/htdocs/comm/prospect/index.php +++ b/htdocs/comm/prospect/index.php @@ -59,7 +59,7 @@ print load_fiche_titre($langs->trans("ProspectionArea")); print '
'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { $var = false; print ''; print ''; @@ -118,7 +118,7 @@ if ($resql) { /* * Liste des propal brouillons */ -if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { +if (isModEnabled("propal") && $user->rights->propale->lire) { $sql = "SELECT p.rowid, p.ref, p.price, s.nom as sname"; $sql .= " FROM ".MAIN_DB_PREFIX."propal as p"; $sql .= ", ".MAIN_DB_PREFIX."societe as s"; @@ -176,7 +176,7 @@ if (isModEnabled('agenda')) { /* * Dernieres propales ouvertes */ -if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { +if (isModEnabled("propal") && $user->rights->propale->lire) { $sql = "SELECT s.nom as name, s.rowid as socid, s.client, s.canvas,"; $sql .= " p.rowid as propalid, p.total_ttc, p.ref, p.datep as dp, c.label as statut, c.id as statutid"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s"; diff --git a/htdocs/comm/remx.php b/htdocs/comm/remx.php index f36b4bb0b9e..db1cc06c504 100644 --- a/htdocs/comm/remx.php +++ b/htdocs/comm/remx.php @@ -425,12 +425,12 @@ if ($socid > 0) { print '
'; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; @@ -563,12 +563,12 @@ if ($socid > 0) { print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; @@ -736,12 +736,12 @@ if ($socid > 0) { print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; @@ -897,12 +897,12 @@ if ($socid > 0) { print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; if (!empty($conf->multicurrency->enabled)) { - print ''; + print ''; } print ''; print ''; diff --git a/htdocs/commande/card.php b/htdocs/commande/card.php index 22505f6b921..b6e859689ec 100644 --- a/htdocs/commande/card.php +++ b/htdocs/commande/card.php @@ -45,7 +45,7 @@ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/order.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->project->enabled)) { @@ -108,16 +108,19 @@ $extrafields->fetch_name_optionals_label($object->table_element); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once -$usercanread = $user->rights->commande->lire; -$usercancreate = $user->rights->commande->creer; -$usercandelete = $user->rights->commande->supprimer; +$usercanread = $user->hasRight("commande", "lire"); +$usercancreate = $user->hasRight("commande", "creer"); +$usercandelete = $user->hasRight("commande", "supprimer"); // Advanced permissions -$usercanclose = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->creer)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->order_advance->close))); -$usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->order_advance->validate))); -$usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->commande->order_advance->annuler))); -$usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->rights->commande->order_advance->send); -$usercancreatepurchaseorder = ($user->rights->fournisseur->commande->creer || $user->rights->supplier_order->creer); +$usercanclose = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($usercancreate)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->hasRight('commande', 'order_advance', 'close'))); +$usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->hasRight('commande', 'order_advance', 'validate'))); +$usercancancel = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $user->hasRight('commande', 'order_advance', 'annuler'))); +$usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->hasRight('commande', 'order_advance', 'send')); +$usercangeneretedoc = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || $user->hasRight('commande', 'order_advance', 'generetedoc')); + +$usermustrespectpricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); +$usercancreatepurchaseorder = ($user->hasRight('fournisseur', 'commande', 'creer') || $user->hasRight('supplier_order', 'creer')); $permissionnote = $usercancreate; // Used by the include of actions_setnotes.inc.php $permissiondellink = $usercancreate; // Used by the include of actions_dellink.inc.php @@ -217,10 +220,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -580,7 +583,7 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = GETPOST('lang_id', 'alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -645,6 +648,9 @@ if (empty($reshook)) { $product_desc = (GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : ''); $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU', 2); + $price_ttc = price2num(GETPOST('price_ttc'), 'MU', 2); + $price_ttc_devise = price2num(GETPOST('multicurrency_price_ttc'), 'CU', 2); + $prod_entry_mode = GETPOST('prod_entry_mode'); if ($prod_entry_mode == 'free') { $idprod = 0; @@ -737,6 +743,7 @@ if (empty($reshook)) { $pu_ht = $prod->price; $pu_ttc = $prod->price_ttc; $price_min = $prod->price_min; + $price_min_ttc = $prod->price_min_ttc; $price_base_type = $prod->price_base_type; // If price per segment @@ -744,6 +751,7 @@ if (empty($reshook)) { $pu_ht = $prod->multiprices[$object->thirdparty->price_level]; $pu_ttc = $prod->multiprices_ttc[$object->thirdparty->price_level]; $price_min = $prod->multiprices_min[$object->thirdparty->price_level]; + $price_min_ttc = $prod->multiprices_min_ttc[$object->thirdparty->price_level]; $price_base_type = $prod->multiprices_base_type[$object->thirdparty->price_level]; if (!empty($conf->global->PRODUIT_MULTIPRICES_USE_VAT_PER_LEVEL)) { // using this option is a bug. kept for backward compatibility if (isset($prod->multiprices_tva_tx[$object->thirdparty->price_level])) { @@ -767,6 +775,7 @@ if (empty($reshook)) { $pu_ht = price($prodcustprice->lines[0]->price); $pu_ttc = price($prodcustprice->lines[0]->price_ttc); $price_min = price($prodcustprice->lines[0]->price_min); + $price_min_ttc = price($prodcustprice->lines[0]->price_min_ttc); $price_base_type = $prodcustprice->lines[0]->price_base_type; $tva_tx = $prodcustprice->lines[0]->tva_tx; if ($prodcustprice->lines[0]->default_vat_code && !preg_match('/\(.*\)/', $tva_tx)) { @@ -944,10 +953,19 @@ if (empty($reshook)) { $info_bits |= 0x01; } - if (((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)) && (!empty($price_min) && (price2num($pu_ht) * (1 - price2num($remise_percent) / 100) < price2num($price_min)))) { - $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); - setEventMessages($mesg, null, 'errors'); - } else { + if ($usermustrespectpricemin) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } + } + + if (!$error) { // Insert line $result = $object->addline($desc, $pu_ht, $qty, $tva_tx, $localtax1_tx, $localtax2_tx, $idprod, $remise_percent, $info_bits, 0, $price_base_type, $pu_ttc, $date_start, $date_end, $type, min($rank, count($object->lines) + 1), 0, GETPOST('fk_parent_line'), $fournprice, $buyingprice, $label, $array_options, $fk_unit, '', 0, $pu_ht_devise); @@ -1015,9 +1033,12 @@ if (empty($reshook)) { $date_start = dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); $date_end = dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $description = dol_htmlcleanlastbr(GETPOST('product_desc', 'restricthtml')); - $pu_ht = price2num(GETPOST('price_ht'), '', 2); $vat_rate = (GETPOST('tva_tx') ? GETPOST('tva_tx', 'alpha') : 0); + $vat_rate = str_replace('*', '', $vat_rate); + $pu_ht = price2num(GETPOST('price_ht'), '', 2); + $pu_ttc = price2num(GETPOST('price_ttc'), '', 2); $pu_ht_devise = price2num(GETPOST('multicurrency_subprice'), '', 2); + //$pu_ttc_devise = price2num(GETPOST('multicurrency_subprice_ttc'), '', 2); $qty = price2num(GETPOST('qty'), 'MS'); @@ -1066,13 +1087,25 @@ if (empty($reshook)) { if ((!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) && !empty($object->thirdparty->price_level)) { $price_min = $product->multiprices_min[$object->thirdparty->price_level]; } + $price_min_ttc = $product->price_min_ttc; + if ((!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) && !empty($object->thirdparty->price_level)) { + $price_min_ttc = $product->multiprices_min_ttc[$object->thirdparty->price_level]; + } $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label') : ''); - if (((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)) && ($price_min && (price2num($pu_ht) * (1 - $remise_percent / 100) < price2num($price_min)))) { - setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors'); - $error++; - $action = 'editline'; + if ($usermustrespectpricemin) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } } } else { $type = GETPOST('type'); @@ -1109,10 +1142,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1277,10 +1310,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1484,8 +1517,12 @@ if (empty($reshook)) { * View */ -$title = $langs->trans('Order')." - ".$langs->trans('Card'); +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewOrder"); +} $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; + llxHeader('', $title, $help_url); $form = new Form($db); @@ -1609,7 +1646,7 @@ if ($action == 'create' && $usercancreate) { $fk_account = $soc->fk_account; $availability_id = 0; $shipping_method_id = $soc->shipping_method_id; - $warehouse_id = $soc->warehouse_id; + $warehouse_id = $soc->fk_warehouse; $demand_reason_id = $soc->demand_reason_id; $remise_percent = $soc->remise_percent; $remise_absolue = 0; @@ -1698,7 +1735,7 @@ if ($action == 'create' && $usercancreate) { // Contacts (ask contact only if thirdparty already defined). print "'; // Ligne info remises tiers @@ -1722,7 +1759,7 @@ if ($action == 'create' && $usercancreate) { // Date delivery planned print ''; print '\n"; print ''; @@ -1746,7 +1783,7 @@ if ($action == 'create' && $usercancreate) { print ''; // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && isModEnabled("banque")) { print ''; @@ -1803,7 +1840,12 @@ if ($action == 'create' && $usercancreate) { } // Other attributes - $parameters = array('objectsrc' => $objectsrc, 'socid'=>$socid); + $parameters = array(); + if (!empty($origin) && !empty($originid) && is_object($objectsrc)) { + $parameters['objectsrc'] = $objectsrc; + } + $parameters['socid'] = $socid; + // Note that $action and $object may be modified by hook $reshook = $hookmanager->executeHooks('formObjectOptions', $parameters, $object, $action); print $hookmanager->resPrint; @@ -2539,7 +2581,7 @@ if ($action == 'create' && $usercancreate) { } // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_ORDER) && isModEnabled("banque")) { print ''; print ''; } else { print ''; + print ''.$langs->trans('Failed to init the object with the new '.$tabobj.'($db)').''; } } catch (Exception $e) { print $e->getMessage(); diff --git a/htdocs/modulebuilder/template/class/myobject.class.php b/htdocs/modulebuilder/template/class/myobject.class.php index d0e6acf70e3..f3538d65cfa 100644 --- a/htdocs/modulebuilder/template/class/myobject.class.php +++ b/htdocs/modulebuilder/template/class/myobject.class.php @@ -70,8 +70,18 @@ class MyObject extends CommonObject /** - * 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password') - * Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)" + * 'type' field format: + * 'integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter[:Sortfield]]]', + * 'select' (list of values are in 'options'), + * 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter[:Sortfield]]]]', + * 'chkbxlst:...', + * 'varchar(x)', + * 'text', 'text:none', 'html', + * 'double(24,8)', 'real', 'price', + * 'date', 'datetime', 'timestamp', 'duration', + * 'boolean', 'checkbox', 'radio', 'array', + * 'mail', 'phone', 'url', 'password', 'ip' + * Note: Filter can be a string like "(t.ref:like:'SO-%') or (t.date_creation:<:'20160101') or (t.nature:is:NULL)" * 'label' the translation key. * 'picto' is code of a picto to show before value in forms * 'enabled' is a condition when the field must be managed (Example: 1 or '$conf->global->MY_SETUP_PARAM' or '!empty($conf->multicurrency->enabled)' ...) @@ -108,7 +118,7 @@ class MyObject extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>1, 'position'=>30, 'searchall'=>1, 'css'=>'minwidth300', 'cssview'=>'wordbreak', 'help'=>'Help text', 'showoncombobox'=>2, 'validate'=>1), 'amount' => array('type'=>'price', 'label'=>'Amount', 'enabled'=>1, 'visible'=>1, 'default'=>'null', 'position'=>40, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for amount', 'validate'=>1), 'qty' => array('type'=>'real', 'label'=>'Qty', 'enabled'=>1, 'visible'=>1, 'default'=>'0', 'position'=>45, 'searchall'=>0, 'isameasure'=>1, 'help'=>'Help text for quantity', 'css'=>'maxwidth75imp', 'validate'=>1), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'picto'=>'company', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'LinkToThirparty', 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx'), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'picto'=>'company', 'label'=>'ThirdParty', 'visible'=> 1, 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'index'=>1, 'help'=>'OrganizationEventLinkToThirdParty', 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'picto'=>'project', 'enabled'=>'$conf->project->enabled', 'visible'=>-1, 'position'=>52, 'notnull'=>-1, 'index'=>1, 'validate'=>1, 'css'=>'maxwidth500 widthcentpercentminusxx'), 'description' => array('type'=>'text', 'label'=>'Description', 'enabled'=>1, 'visible'=>3, 'position'=>60, 'validate'=>1), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>1, 'visible'=>0, 'position'=>61, 'validate'=>1, 'cssview'=>'wordbreak'), @@ -240,7 +250,7 @@ class MyObject extends CommonObject $this->db = $db; - if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) { + if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid']) && !empty($this->fields['ref'])) { $this->fields['rowid']['visible'] = 0; } if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) { @@ -514,7 +524,7 @@ class MyObject extends CommonObject * Delete object in database * * @param User $user User that deletes - * @param bool $notrigger false=launch triggers after, true=disable triggers + * @param bool $notrigger false=launch triggers, true=disable triggers * @return int <0 if KO, >0 if OK */ public function delete(User $user, $notrigger = false) diff --git a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php index 8ea8a575eca..edf0c7647de 100644 --- a/htdocs/modulebuilder/template/core/modules/modMyModule.class.php +++ b/htdocs/modulebuilder/template/core/modules/modMyModule.class.php @@ -221,9 +221,9 @@ class modMyModule extends DolibarrModules // Name of columns with primary key (try to always name it 'rowid') 'tabrowid'=>array("rowid", "rowid", "rowid"), // Condition to show each dictionary - 'tabcond'=>array($conf->mymodule->enabled, $conf->mymodule->enabled, $conf->mymodule->enabled) - // Help tooltip for each fields of the dictionary - 'tabhelp'=>array(array('code'=>$langs->trans('CodeTooltipHelp'))) + 'tabcond'=>array($conf->mymodule->enabled, $conf->mymodule->enabled, $conf->mymodule->enabled), + // Tooltip for every fields of dictionaries: DO NOT PUT AN EMPTY ARRAY + 'tabhelp'=>array(array('code'=>$langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip'), array('code'=>$langs->trans('CodeTooltipHelp'), 'field2' => 'field2tooltip'), ...), ); */ diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php index 4338c2b7d6a..3011c932171 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/doc/doc_generic_myobject_odt.modules.php @@ -282,7 +282,7 @@ class doc_generic_myobject_odt extends ModelePDFMyObject $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -291,11 +291,11 @@ class doc_generic_myobject_odt extends ModelePDFMyObject if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -303,8 +303,8 @@ class doc_generic_myobject_odt extends ModelePDFMyObject dol_mkdir($conf->mymodule->dir_temp); if (!is_writable($conf->mymodule->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->mymodule->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->mymodule->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php b/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php index 561a705dc4b..561c09f88d6 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/doc/pdf_standard_myobject.modules.php @@ -898,8 +898,8 @@ class pdf_standard_myobject extends ModelePDFMyObject pdf_pagehead($pdf, $outputlangs, $this->page_hauteur); // Show Draft Watermark - if ($object->statut == $object::STATUS_DRAFT && (!empty($conf->global->FACTURE_DRAFT_WATERMARK))) { - pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', $conf->global->FACTURE_DRAFT_WATERMARK); + if ($object->statut == $object::STATUS_DRAFT && getDolGlobalString('MYMODULE_DRAFT_WATERMARK')) { + pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', dol_escape_htmltag(getDolGlobalString('MYMODULE_DRAFT_WATERMARK'))); } $pdf->SetTextColor(0, 0, 60); diff --git a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php index 0573edc6b2a..61186a3b4f3 100644 --- a/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php +++ b/htdocs/modulebuilder/template/core/modules/mymodule/mod_myobject_advanced.php @@ -79,7 +79,7 @@ class mod_myobject_advanced extends ModeleNumRefMyObject // Parametrage du prefix $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= ''; @@ -130,7 +130,7 @@ class mod_myobject_advanced extends ModeleNumRefMyObject require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->MYMODULE_MYOBJECT_ADVANCED_MASK; + $mask = getDolGlobalString('MYMODULE_MYOBJECT_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang index ca8aa250748..cc518391c33 100644 --- a/htdocs/modulebuilder/template/langs/en_US/mymodule.lang +++ b/htdocs/modulebuilder/template/langs/en_US/mymodule.lang @@ -44,6 +44,7 @@ MyModuleAboutPage = MyModule about page # # Sample page # +MyModuleArea = Home MyModule MyPageName = My page name # diff --git a/htdocs/modulebuilder/template/myobject_agenda.php b/htdocs/modulebuilder/template/myobject_agenda.php index 6b6f60bf8c6..b37da30f229 100644 --- a/htdocs/modulebuilder/template/myobject_agenda.php +++ b/htdocs/modulebuilder/template/myobject_agenda.php @@ -39,7 +39,7 @@ //if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value //if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler //if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification @@ -290,7 +290,7 @@ if ($object->id > 0) { print ''; if (isModEnabled('agenda') && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) { - $param = '&id='.$object->id.'&socid='.$socid; + $param = '&id='.$object->id.(!empty($socid) ? '&socid='.$socid : ''); if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); } diff --git a/htdocs/modulebuilder/template/myobject_card.php b/htdocs/modulebuilder/template/myobject_card.php index 7702aa6699b..0e1815fade1 100644 --- a/htdocs/modulebuilder/template/myobject_card.php +++ b/htdocs/modulebuilder/template/myobject_card.php @@ -39,7 +39,7 @@ //if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value //if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler //if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification //if (! defined('NOSESSION')) define('NOSESSION', '1'); // Disable session @@ -92,7 +92,7 @@ $lineid = GETPOST('lineid', 'int'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'myobjectcard'; // To manage different context of search +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); $dol_openinpopup = GETPOST('dol_openinpopup', 'aZ09'); diff --git a/htdocs/modulebuilder/template/myobject_document.php b/htdocs/modulebuilder/template/myobject_document.php index df201c2653b..78d20a1863a 100644 --- a/htdocs/modulebuilder/template/myobject_document.php +++ b/htdocs/modulebuilder/template/myobject_document.php @@ -39,7 +39,7 @@ //if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value //if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler //if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification diff --git a/htdocs/modulebuilder/template/myobject_list.php b/htdocs/modulebuilder/template/myobject_list.php index c71d7abc4be..d9af4add8ce 100644 --- a/htdocs/modulebuilder/template/myobject_list.php +++ b/htdocs/modulebuilder/template/myobject_list.php @@ -39,7 +39,7 @@ //if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value //if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler //if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification //if (! defined('NOSESSION')) define('NOSESSION', '1'); // On CLI mode, no need to use web sessions @@ -53,7 +53,8 @@ if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { // Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME $tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; + $i--; + $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; @@ -88,20 +89,20 @@ require_once __DIR__.'/class/myobject.class.php'; // Load translation files required by the page $langs->loadLangs(array("mymodule@mymodule", "other")); -$id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); - $action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ... $massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists) $show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk actions ? $confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', __FILE__); // To manage different context of search +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') $mode = GETPOST('mode', 'aZ'); +$id = GETPOST('id', 'int'); +$ref = GETPOST('ref', 'alpha'); + // Load variable for pagination $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -570,7 +571,7 @@ foreach ($object->fields as $key => $val) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } elseif (in_array($val['type'], array('timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { + } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { $cssforfield .= ($cssforfield ? ' ' : '').'right'; } if (!empty($arrayfields['t.'.$key]['checked'])) { @@ -632,7 +633,7 @@ foreach ($object->fields as $key => $val) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } elseif (in_array($val['type'], array('timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { + } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { $cssforfield .= ($cssforfield ? ' ' : '').'right'; } $cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label diff --git a/htdocs/modulebuilder/template/myobject_note.php b/htdocs/modulebuilder/template/myobject_note.php index 368803a78a5..fb5a773be81 100644 --- a/htdocs/modulebuilder/template/myobject_note.php +++ b/htdocs/modulebuilder/template/myobject_note.php @@ -39,7 +39,7 @@ //if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value //if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler //if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies +//if (! defined("MAIN_SECURITY_FORCECSP")) define('MAIN_SECURITY_FORCECSP', 'none'); // Disable all Content Security Policies //if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET //if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification diff --git a/htdocs/modulebuilder/template/scripts/mymodule.php b/htdocs/modulebuilder/template/scripts/mymodule.php index 3f117a51094..860c3a54bec 100644 --- a/htdocs/modulebuilder/template/scripts/mymodule.php +++ b/htdocs/modulebuilder/template/scripts/mymodule.php @@ -99,7 +99,7 @@ $langs->load("main"); // To load language file for default language // Load user and its permissions $result = $user->fetch('', 'admin'); // Load user for login 'admin'. Comment line to run as anonymous user. -if (!$result > 0) { +if (!($result > 0)) { dol_print_error('', $user->error); exit; } $user->getrights(); diff --git a/htdocs/mrp/class/mo.class.php b/htdocs/mrp/class/mo.class.php index 09f4ad8d268..d186c6e533b 100644 --- a/htdocs/mrp/class/mo.class.php +++ b/htdocs/mrp/class/mo.class.php @@ -25,6 +25,7 @@ // Put here all includes required by your class file require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/commonobjectline.class.php'; //require_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php'; //require_once DOL_DOCUMENT_ROOT . '/product/class/product.class.php'; @@ -100,7 +101,7 @@ class Mo extends CommonObject 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>1, 'visible'=>-2, 'position'=>1, 'notnull'=>1, 'index'=>1, 'comment'=>"Id",), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'position'=>5, 'notnull'=>1, 'default'=>'1', 'index'=>1), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>4, 'position'=>10, 'notnull'=>1, 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'comment'=>"Reference of object", 'showoncombobox'=>'1', 'noteditable'=>1), - 'fk_bom' => array('type'=>'integer:Bom:bom/class/bom.class.php:0:t.status=1', 'filter'=>'active=1', 'label'=>'BOM', 'enabled'=>'$conf->bom->enabled', 'visible'=>1, 'position'=>33, 'notnull'=>-1, 'index'=>1, 'comment'=>"Original BOM", 'css'=>'minwidth100 maxwidth300', 'csslist'=>'nowraponall'), + 'fk_bom' => array('type'=>'integer:Bom:bom/class/bom.class.php:0:t.status=1', 'filter'=>'active=1', 'label'=>'BOM', 'enabled'=>'$conf->bom->enabled', 'visible'=>1, 'position'=>33, 'notnull'=>-1, 'index'=>1, 'comment'=>"Original BOM", 'css'=>'minwidth100 maxwidth300', 'csslist'=>'nowraponall', 'picto'=>'bom'), 'mrptype' => array('type'=>'integer', 'label'=>'Type', 'enabled'=>1, 'visible'=>1, 'position'=>34, 'notnull'=>1, 'default'=>'0', 'arrayofkeyval'=>array(0=>'Manufacturing', 1=>'Disassemble'), 'css'=>'minwidth150', 'csslist'=>'minwidth150 center'), 'fk_product' => array('type'=>'integer:Product:product/class/product.class.php:0', 'label'=>'Product', 'enabled'=>'$conf->product->enabled', 'visible'=>1, 'position'=>35, 'notnull'=>1, 'index'=>1, 'comment'=>"Product to produce", 'css'=>'maxwidth300', 'csslist'=>'tdoverflowmax100', 'picto'=>'product'), 'qty' => array('type'=>'real', 'label'=>'QtyToProduce', 'enabled'=>1, 'visible'=>1, 'position'=>40, 'notnull'=>1, 'comment'=>"Qty to produce", 'css'=>'width75', 'default'=>1, 'isameasure'=>1), @@ -1374,13 +1375,13 @@ class Mo extends CommonObject print ''; // Product or sub-bom - print ''; - print ''; + // Qty print ''; print ''; //print ''; - // print ''; + //print ''; print ''; $i = 0; diff --git a/htdocs/mrp/js/lib_dispatch.js.php b/htdocs/mrp/js/lib_dispatch.js.php index e8ca84d7a4e..8470716ce8f 100644 --- a/htdocs/mrp/js/lib_dispatch.js.php +++ b/htdocs/mrp/js/lib_dispatch.js.php @@ -70,7 +70,7 @@ function addDispatchLine(index, type, mode) mode = mode || 'qtymissing' console.log("fourn/js/lib_dispatch.js.php Split line type="+type+" index="+index+" mode="+mode); - if(mode == 'qtymissingconsume') { + if(mode == 'qtymissingconsume' || mode == 'allmissingconsume') { var inputId = 'qtytoconsume'; var warehouseId = 'idwarehouse'; } @@ -94,16 +94,70 @@ function addDispatchLine(index, type, mode) console.log($("#qty_dispatched_"+index).val()); // If user did not reduced the qty to dispatch on old line, we keep only 1 on old line and the rest on new line if (qtyDispatched == qtyOrdered && qtyDispatched > 1) { - qtyDispatched = parseFloat($("#qty_dispatched_"+index).val()) + 1; - mode = 'lessone'; + qtyDispatched = parseFloat($("#qty_dispatched_" + index).val()) + 1; + + } + if(mode == 'allmissingconsume' || mode == 'alltoproduce') { + var qtymax = parseFloat($($row).data('max-qty')); + if(qtymax === 'undefined') qtymax = 1; } } - console.log("qtyDispatched="+qtyDispatched+" qtyOrdered="+qtyOrdered); + + if(mode == 'allmissingconsume' || mode == 'alltoproduce') { + var count = 0; + var qtyalreadyused = 0; + var error = 0; + + while (qtyalreadyused < qty) { + //If remaining qty needed is inferior to qty asked, qtymax = qty asked - qty already used + if ((qtyalreadyused + qtymax) > qty) qtymax = qty - qtyalreadyused; + //If first line, we replace value, not add line + if(count === 0){ + $("#"+inputId+"-"+index+"-"+nbrTrs).val(qtymax); + } else { + var res = addDispatchTR(qtyOrdered, qtyDispatched, index, nbrTrs, warehouseId, inputId, type, qtymax, mode, $row); + if(res === -1){ + error = 1; + break; + } + nbrTrs++; + } + qtyalreadyused = qtyalreadyused + qtymax; + count++; + $row = $("tr[name='" + type + '_' + index + "_1']").clone(true); + } + + if(error === 0) { + addDispatchTR(qtyOrdered, qtyDispatched, index, nbrTrs, warehouseId, inputId, type, '', mode, $row); + } + } + else addDispatchTR(qtyOrdered, qtyDispatched, index, nbrTrs, warehouseId, inputId, type, qty, mode, $row) + +} + +/** + * addDispatchTR + * Adds new table row for dispatching to multiple stock locations or multiple lot/serial + * + * @param qtyOrdered double + * @param qtyDispatched double + * @param index int + * @param nbrTrs int + * @param warehouseId int + * @param inputId int + * @param type string + * @param qty double + * @param mode string + * @param $row object + */ +function addDispatchTR(qtyOrdered, qtyDispatched, index, nbrTrs, warehouseId, inputId, type, qty, mode, $row) { if (qtyOrdered <= 1) { window.alert("Quantity can't be split"); + return -1; } else if (qtyDispatched >= qtyOrdered) { window.alert("No remain qty to dispatch"); + return -1; } else if (qtyDispatched < qtyOrdered) { //replace tr suffix nbr var re1 = new RegExp('_'+index+'_1', 'g'); @@ -128,24 +182,27 @@ function addDispatchLine(index, type, mode) /* Suffix of lines are: index _ trs.length */ $("#"+inputId+"-"+index+"-"+(nbrTrs+1)).focus(); if ($("#"+inputId+"-"+index+"-"+(nbrTrs)).val() == 0) { - $("#"+inputId+"-"+index+"-"+(nbrTrs)).val(1); + if(mode == 'allmissingconsume' || mode == 'alltoproduce') $("#"+inputId+"-"+index+"-"+(nbrTrs)).val(qty); + else $("#"+inputId+"-"+index+"-"+(nbrTrs)).val(1); } var totalonallines = 0; for (let i = 1; i <= nbrTrs; i++) { console.log(i+" = "+parseFloat($("#"+inputId+"-"+index+"-"+i).val())); totalonallines = totalonallines + parseFloat($("#"+inputId+"-"+index+"-"+i).val()); } - console.log("totalonallines="+totalonallines); - if (totalonallines == qtyOrdered && qtyOrdered > 1) { - var prevouslineqty = $("#"+inputId+"-"+index+"-"+nbrTrs).val(); - $("#"+inputId+"-"+index+"-"+(nbrTrs)).val(1); - $("#"+inputId+"-"+index+"-"+(nbrTrs+1)).val(prevouslineqty - 1); + + if(mode != 'allmissingconsume' && mode != 'alltoproduce') { + if (totalonallines == qtyOrdered && qtyOrdered > 1) { + var prevouslineqty = $("#" + inputId + "-" + index + "-" + nbrTrs).val(); + $("#" + inputId + "-" + index + "-" + (nbrTrs)).val(1); + $("#" + inputId + "-" + index + "-" + (nbrTrs + 1)).val(prevouslineqty - 1); + } } $("#qty_dispatched_"+index).val(qtyDispatched); //hide all buttons then show only the last one - $("tr[name^='"+type+"_'][name$='_"+index+"'] .splitbutton").hide(); - $("tr[name^='"+type+"_'][name$='_"+index+"']:last .splitbutton").show(); + $("tr[name^='"+type+"_"+index+"_'] .splitbutton").hide(); + $("tr[name^='"+type+"_"+index+"_']:last .splitbutton").show(); if (mode === 'lessone') { @@ -156,6 +213,10 @@ function addDispatchLine(index, type, mode) $("#"+inputId+"-"+index+(nbrTrs)).data('qty', qty); $("#"+inputId+"-"+index+(nbrTrs)).data('type', type); $("#"+inputId+"-"+index+(nbrTrs)).data('index', index); + if(mode == 'allmissingconsume' || mode == 'alltoproduce') { + let currentQtyDispatched = qtyDispatched+qty; + $row.find("input[id^='"+inputId+"']").val(qty); + } } } diff --git a/htdocs/mrp/mo_agenda.php b/htdocs/mrp/mo_agenda.php index 2e8b6691c0f..60ac81e20cd 100644 --- a/htdocs/mrp/mo_agenda.php +++ b/htdocs/mrp/mo_agenda.php @@ -209,7 +209,7 @@ if ($object->id > 0) { if (get_class($objthirdparty) == 'Societe') { $out .= '&socid='.$objthirdparty->id; } - $out .= (!empty($objcon->id) ? '&contactid='.$objcon->id : '').'&backtopage=1&percentage=-1'; + $out .= (!empty($objcon->id) ? '&contactid='.$objcon->id : '').'&backtopage='.urlencode($_SERVER["PHP_SELF"].'?id='.$object->id).'&percentage=-1'; //$out.=$langs->trans("AddAnAction").' '; //$out.=img_picto($langs->trans("AddAnAction"),'filenew'); //$out.=""; diff --git a/htdocs/mrp/mo_card.php b/htdocs/mrp/mo_card.php index 2c333ff616e..032f9a7961c 100644 --- a/htdocs/mrp/mo_card.php +++ b/htdocs/mrp/mo_card.php @@ -202,10 +202,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/mrp/mo_movements.php b/htdocs/mrp/mo_movements.php index f9496224a77..1384852ace8 100644 --- a/htdocs/mrp/mo_movements.php +++ b/htdocs/mrp/mo_movements.php @@ -122,7 +122,7 @@ $arrayfields = array( 'm.batch'=>array('label'=>"BatchNumberShort", 'checked'=>1, 'position'=>8, 'enabled'=>(!empty($conf->productbatch->enabled))), 'pl.eatby'=>array('label'=>"EatByDate", 'checked'=>0, 'position'=>9, 'enabled'=>(!empty($conf->productbatch->enabled))), 'pl.sellby'=>array('label'=>"SellByDate", 'checked'=>0, 'position'=>10, 'enabled'=>(!empty($conf->productbatch->enabled))), - 'e.ref'=>array('label'=>"Warehouse", 'checked'=>1, 'position'=>100, 'enabled'=>(!$id > 0)), // If we are on specific warehouse, we hide it + 'e.ref'=>array('label'=>"Warehouse", 'checked'=>1, 'position'=>100, 'enabled'=>(!($id > 0))), // If we are on specific warehouse, we hide it 'm.fk_user_author'=>array('label'=>"Author", 'checked'=>0, 'position'=>120), 'm.inventorycode'=>array('label'=>"InventoryCodeShort", 'checked'=>1, 'position'=>130), 'm.label'=>array('label'=>"MovementLabel", 'checked'=>1, 'position'=>140), diff --git a/htdocs/mrp/mo_production.php b/htdocs/mrp/mo_production.php index f6aba7f2597..0f734df6ae9 100644 --- a/htdocs/mrp/mo_production.php +++ b/htdocs/mrp/mo_production.php @@ -174,6 +174,8 @@ if (empty($reshook)) { } $action = ''; + // Redirect to refresh the tab information + header("Location: ".$_SERVER["PHP_SELF"].'?id='.$object->id); } if (in_array($action, array('confirm_consumeorproduce', 'confirm_consumeandproduceall')) && $permissiontoproduce) { @@ -257,6 +259,7 @@ if (empty($reshook)) { // Process line to produce $pos = 0; + foreach ($object->lines as $line) { if ($line->role == 'toproduce') { $tmpproduct = new Product($db); @@ -393,10 +396,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -430,6 +433,8 @@ $tmpstockmovement = new MouvementStock($db); $help_url = 'EN:Module_Manufacturing_Orders|FR:Module_Ordres_de_Fabrication'; llxHeader('', $langs->trans('Mo'), $help_url, '', 0, 0, array('/mrp/js/lib_dispatch.js.php')); +$newToken = newToken(); + // Part to show record if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'create'))) { $res = $object->fetch_thirdparty(); @@ -588,7 +593,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($object->status == $object::STATUS_DRAFT) { if ($permissiontoadd) { if (empty($object->table_element_line) || (is_array($object->lines) && count($object->lines) > 0)) { - print ''.$langs->trans("Validate").''; + print ''.$langs->trans("Validate").''; } else { $langs->load("errors"); print ''.$langs->trans("Validate").''; @@ -599,7 +604,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // Consume or produce if ($object->status == Mo::STATUS_VALIDATED || $object->status == Mo::STATUS_INPROGRESS) { if ($permissiontoproduce) { - print ''.$langs->trans('ConsumeOrProduce').''; + print ''.$langs->trans('ConsumeOrProduce').''; } else { print ''.$langs->trans('ConsumeOrProduce').''; } @@ -610,7 +615,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // ConsumeAndProduceAll if ($object->status == Mo::STATUS_VALIDATED || $object->status == Mo::STATUS_INPROGRESS) { if ($permissiontoproduce) { - print ''.$langs->trans('ConsumeAndProduceAll').''; + print ''.$langs->trans('ConsumeAndProduceAll').''; } else { print ''.$langs->trans('ConsumeAndProduceAll').''; } @@ -627,21 +632,21 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $nbProduced += $lineproduced['qty']; } if ($nbProduced > 0) { // If production has started, we can close it - print ''.$langs->trans("Close").''."\n"; + print ''.$langs->trans("Close").''."\n"; } else { print 'transnoentitiesnoconv("Production")).'">'.$langs->trans("Close").''."\n"; } - print ''.$langs->trans("Cancel").''."\n"; + print ''.$langs->trans("Cancel").''."\n"; } if ($object->status == $object::STATUS_CANCELED) { - print ''.$langs->trans("Re-Open").''."\n"; + print ''.$langs->trans("Re-Open").''."\n"; } if ($object->status == $object::STATUS_PRODUCED) { if ($permissiontoproduce) { - print ''.$langs->trans('ReOpen').''; + print ''.$langs->trans('ReOpen').''; } else { print ''.$langs->trans('ReOpen').''; } @@ -708,7 +713,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print '
'; $url = $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=addconsumeline&token='.newToken(); - $permissiontoaddaconsumeline = $object->status != $object::STATUS_PRODUCED && $object->status != $object::STATUS_CANCELED && $action != 'consumeorproduce' && $action != 'consumeandproduceall'; + $permissiontoaddaconsumeline = $object->status != $object::STATUS_PRODUCED && $object->status != $object::STATUS_CANCELED; $parameters = array('morecss'=>'reposition'); $newcardbutton = ''; @@ -767,6 +772,13 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if ($permissiontodelete) { print ''; } + + // Split + print ''; + + // SplitAll + print ''; + print ''; if ($action == 'addconsumeline') { @@ -850,7 +862,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; - print ''; + print ''; // Product print ''; } + + // Split + print ''; + + // Split All + print ''; + print ''; // Show detailed of already consumed with js code to collapse @@ -995,7 +1014,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea if (in_array($action, array('consumeorproduce', 'consumeandproduceall'))) { $i = 1; print ''."\n"; - print ''; + $maxQty = 1; + print ''; + // Ref print ''; $preselected = (GETPOSTISSET('qty-'.$line->id.'-'.$i) ? GETPOST('qty-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyconsumed)); if ($action == 'consumeorproduce' && !GETPOSTISSET('qty-'.$line->id.'-'.$i)) { @@ -1044,12 +1065,14 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $preselected = (GETPOSTISSET('batch-'.$line->id.'-'.$i) ? GETPOST('batch-'.$line->id.'-'.$i) : ''); print ''; print $formproduct->selectLotDataList('batch-'.$line->id.'-'.$i, 0, $line->fk_product, '', ''); - } - print ''; - print ''; + print ''; } print ''; } @@ -1094,10 +1117,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $newcardbutton = ''; $url = $_SERVER["PHP_SELF"].'?id='.$object->id.'&action=addproduceline&token='.newToken(); - $permissiontoaddaproductline = $object->status != $object::STATUS_PRODUCED && $object->status != $object::STATUS_CANCELED && $action != 'consumeorproduce' && $action != 'consumeandproduceall'; + $permissiontoaddaproductline = $object->status != $object::STATUS_PRODUCED && $object->status != $object::STATUS_CANCELED; $parameters = array('morecss'=>'reposition'); - if ($nblinetoproduce == 0 || $object->mrptype == 1) { - $newcardbutton = dolGetButtonTitle($langs->trans('AddNewProduceLines'), '', 'fa fa-plus-circle size15x', $url, '', $permissiontoaddaproductline, $parameters); + if ($action != 'consumeorproduce' && $action != 'consumeandproduceall') { + if ($nblinetoproduce == 0 || $object->mrptype == 1) { + $newcardbutton = dolGetButtonTitle($langs->trans('AddNewProduceLines'), '', 'fa fa-plus-circle size15x', $url, '', $permissiontoaddaproductline, $parameters); + } } print load_fiche_titre($langs->trans('Production'), $newcardbutton, '', 0, '', ''); @@ -1125,6 +1150,12 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; + + // Split All + print ''; } print ''; print ''; @@ -1196,12 +1227,15 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; if ($permissiontoupdatecost) { // Defined $manufacturingcost - $manufacturingcost = $bomcost; - if (empty($manufacturingcost)) { - $manufacturingcost = price2num($tmpproduct->cost_price, 'MU'); - } - if (empty($manufacturingcost)) { - $manufacturingcost = price2num($tmpproduct->pmp, 'MU'); + $manufacturingcost = 0; + if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble" + $manufacturingcost = $bomcost; + if (empty($manufacturingcost)) { + $manufacturingcost = price2num($tmpproduct->cost_price, 'MU'); + } + if (empty($manufacturingcost)) { + $manufacturingcost = price2num($tmpproduct->pmp, 'MU'); + } } print ''; print ''; + + // Split + print ''; + + // Split All + print ''; } print ''; } if (in_array($action, array('consumeorproduce', 'consumeandproduceall'))) { print ''."\n"; - print ''; + $maxQty = 1; + print ''; print ''; $preselected = (GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i) ? GETPOST('qtytoproduce-'.$line->id.'-'.$i) : max(0, $line->qty - $alreadyproduced)); if ($action == 'consumeorproduce' && !GETPOSTISSET('qtytoproduce-'.$line->id.'-'.$i)) { @@ -1300,19 +1341,22 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; if ($permissiontoupdatecost) { // Defined $manufacturingcost - $manufacturingcost = $bomcost; - if (empty($manufacturingcost)) { - $manufacturingcost = price2num($tmpproduct->cost_price, 'MU'); - } - if (empty($manufacturingcost)) { - $manufacturingcost = price2num($tmpproduct->pmp, 'MU'); + $manufacturingcost = 0; + if ($object->mrptype == 0) { // If MO is a "Manufacture" type (and not "Disassemble" + $manufacturingcost = $bomcost; + if (empty($manufacturingcost)) { + $manufacturingcost = price2num($tmpproduct->cost_price, 'MU'); + } + if (empty($manufacturingcost)) { + $manufacturingcost = price2num($tmpproduct->pmp, 'MU'); + } } if ($tmpproduct->type == Product::TYPE_PRODUCT || !empty($conf->global->STOCK_SUPPORTS_SERVICES)) { - $preselected = (GETPOSTISSET('pricetoproduce-'.$line->id.'-'.$i) ? GETPOST('pricetoproduce-'.$line->id.'-'.$i) : price($manufacturingcost)); + $preselected = (GETPOSTISSET('pricetoproduce-'.$line->id.'-'.$i) ? GETPOST('pricetoproduce-'.$line->id.'-'.$i) : ($manufacturingcost ? price($manufacturingcost) : '')); print ''; } else { - print ''; + print ''; } } print ''; @@ -1335,7 +1379,13 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; + + print ''; } print ''; } diff --git a/htdocs/mrp/tpl/originproductline.tpl.php b/htdocs/mrp/tpl/originproductline.tpl.php index e641bd142fc..7e0468119bd 100644 --- a/htdocs/mrp/tpl/originproductline.tpl.php +++ b/htdocs/mrp/tpl/originproductline.tpl.php @@ -44,6 +44,7 @@ $res = $tmpbom->fetch($line->fk_bom_child); tpl['strike']) ? '' : ' strikefordisabled').'">'; +// Ref or label print ''; -//print ''; +// Qty print ''; print ''; -if ($tmpbom->id) { +if ($tmpbom->id > 0) { print ''; } else { - print ''; + print ''; } +//print ''; + print ''."\n"; // Select of all the sub-BOM lines diff --git a/htdocs/opensurvey/results.php b/htdocs/opensurvey/results.php index d726152eaa4..610d690944b 100644 --- a/htdocs/opensurvey/results.php +++ b/htdocs/opensurvey/results.php @@ -471,7 +471,7 @@ print ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -132,7 +132,7 @@ class mod_partnership_advanced extends ModeleNumRefPartnership require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->PARTNERSHIP_ADVANCED_MASK; + $mask = getDolGlobalString('PARTNERSHIP_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/partnership/partnership_card.php b/htdocs/partnership/partnership_card.php index 08164421f60..fb826efcd91 100644 --- a/htdocs/partnership/partnership_card.php +++ b/htdocs/partnership/partnership_card.php @@ -83,8 +83,8 @@ $managedfor = getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty'); if (empty($conf->partnership->enabled)) accessforbidden(); if (empty($permissiontoread)) accessforbidden(); -if ($object->id > 0 && $object->fk_member > 0 && $managedfor != 'member') accessforbidden(); -if ($object->id > 0 && $object->fk_soc > 0 && $managedfor != 'thirdparty') accessforbidden(); +if ($object->id > 0 && !($object->fk_member > 0) && $managedfor == 'member') accessforbidden(); +if ($object->id > 0 && !($object->fk_soc > 0) && $managedfor == 'thirdparty') accessforbidden(); /* @@ -129,10 +129,10 @@ if (empty($reshook)) { if (method_exists($object, 'generateDocument')) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -161,10 +161,10 @@ if (empty($reshook)) { if (method_exists($object, 'generateDocument')) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/partnership/partnership_document.php b/htdocs/partnership/partnership_document.php index 3e7f78e5118..f9ea6559979 100644 --- a/htdocs/partnership/partnership_document.php +++ b/htdocs/partnership/partnership_document.php @@ -49,7 +49,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/partnership/partnership_list.php b/htdocs/partnership/partnership_list.php index 014d576f5d6..12c63b2f5bd 100644 --- a/htdocs/partnership/partnership_list.php +++ b/htdocs/partnership/partnership_list.php @@ -43,9 +43,10 @@ $show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk $confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list -$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'partnershiplist'; // To manage different context of search +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page -$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$mode = GETPOST('mode', 'aZ'); $id = GETPOST('id', 'int'); @@ -55,8 +56,9 @@ $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('button_removefilter', 'alpha')) { + // If $page is not defined, or '' or -1 or if we click on clear filters $page = 0; -} // If $page is not defined, or '' or -1 or if we click on clear filters +} $offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; @@ -88,7 +90,7 @@ if (!$sortorder) { } // Initialize array of search criterias -$search_all = GETPOST('search_all', 'alphanohtml') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml'); +$search_all = GETPOST('search_all', 'alphanohtml'); $search = array(); foreach ($object->fields as $key => $val) { if (GETPOST('search_'.$key, 'alpha') !== '') { @@ -118,11 +120,11 @@ $arrayfields = array(); foreach ($object->fields as $key => $val) { // If $val['visible']==0, then we never show the field if (!empty($val['visible'])) { - $visible = (int) dol_eval($val['visible'], 1, 1, '1'); + $visible = (int) dol_eval($val['visible'], 1); $arrayfields['t.'.$key] = array( 'label'=>$val['label'], 'checked'=>(($visible < 0) ? 0 : 1), - 'enabled'=>($visible != 3 && dol_eval($val['enabled'], 1, 1, '1')), + 'enabled'=>(abs($visible) != 3 && dol_eval($val['enabled'], 1)), 'position'=>$val['position'], 'help'=> isset($val['help']) ? $val['help'] : '' ); @@ -150,14 +152,13 @@ if ($user->socid > 0) { // Protection if external user //$result = restrictedArea($user, 'partnership'); //if (!$permissiontoread) accessforbidden(); +$error = 0; /* * Actions */ -$error = 0; - if (GETPOST('cancel', 'alpha')) { $action = 'list'; $massaction = ''; @@ -187,7 +188,6 @@ if (empty($reshook)) { } $toselect = array(); $search_array_options = array(); - $search_filter = ""; } if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x', 'alpha') || GETPOST('button_removefilter', 'alpha') || GETPOST('button_search_x', 'alpha') || GETPOST('button_search.x', 'alpha') || GETPOST('button_search', 'alpha')) { @@ -285,7 +285,7 @@ $now = dol_now(); //$help_url="EN:Module_Partnership|FR:Module_Partnership_FR|ES:Módulo_Partnership"; $help_url = ''; -$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("Partnerships")); +$title = $langs->trans("Partnerships"); $morejs = array(); $morecss = array(); @@ -341,17 +341,17 @@ foreach ($search as $key => $val) { $mode_search = 2; } if ($search[$key] != '') { - $sql .= natural_search($key, $search[$key], (($key == 'status') ? 2 : $mode_search)); + $sql .= natural_search("t.".$db->escape($key), $search[$key], (($key == 'status') ? 2 : $mode_search)); } } else { if (preg_match('/(_dtstart|_dtend)$/', $key) && $search[$key] != '') { $columnName = preg_replace('/(_dtstart|_dtend)$/', '', $key); if (preg_match('/^(date|timestamp|datetime)/', $object->fields[$columnName]['type'])) { if (preg_match('/_dtstart$/', $key)) { - $sql .= " AND t.".$columnName." >= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->escape($columnName)." >= '".$db->idate($search[$key])."'"; } if (preg_match('/_dtend$/', $key)) { - $sql .= " AND t.".$columnName." <= '".$db->idate($search[$key])."'"; + $sql .= " AND t.".$db->escape($columnName)." <= '".$db->idate($search[$key])."'"; } } } @@ -382,11 +382,13 @@ $sql .= $hookmanager->resPrint; /* If a group by is required $sql.= " GROUP BY "; foreach($object->fields as $key => $val) { - $sql .= "t.".$key.", "; + $sql .= "t.".$db->escape($key).", "; } // Add fields from extrafields if (! empty($extrafields->attributes[$object->table_element]['label'])) { - foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) $sql.=($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); + foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { + $sql .= ($extrafields->attributes[$object->table_element]['type'][$key] != 'separate' ? "ef.".$key.', ' : ''); + } } // Add where from hooks $parameters=array(); @@ -395,35 +397,41 @@ $sql.=$hookmanager->resPrint; $sql=preg_replace('/,\s*$/','', $sql); */ -$sql .= $db->order($sortfield, $sortorder); - // Count total nb of records $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { - $resql = $db->query($sql); - $nbtotalofrecords = $db->num_rows($resql); + /* The fast and low memory method to get and count full list converts the sql into a sql count */ + $sqlforcount = preg_replace('/^SELECT[a-zA-Z0-9\._\s\(\),=<>\:\-\']+\sFROM/', 'SELECT COUNT(*) as nbtotalofrecords FROM', $sql); + $resql = $db->query($sqlforcount); + if ($resql) { + $objforcount = $db->fetch_object($resql); + $nbtotalofrecords = $objforcount->nbtotalofrecords; + } else { + dol_print_error($db); + } + if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0 $page = 0; $offset = 0; } + $db->free($resql); } -// if total of record found is smaller than limit, no need to do paging and to restart another select with limits set. -if (is_numeric($nbtotalofrecords) && ($limit > $nbtotalofrecords || empty($limit))) { - $num = $nbtotalofrecords; -} else { - if ($limit) { - $sql .= $db->plimit($limit + 1, $offset); - } - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - exit; - } - - $num = $db->num_rows($resql); +// Complete request and execute it with limit +$sql .= $db->order($sortfield, $sortorder); +if ($limit) { + $sql .= $db->plimit($limit + 1, $offset); } +$resql = $db->query($sql); +if (!$resql) { + dol_print_error($db); + exit; +} + +$num = $db->num_rows($resql); + + // Direct jump if only one record found if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $search_all && !$page) { $obj = $db->fetch_object($resql); @@ -451,9 +459,11 @@ if ($limit > 0 && $limit != $conf->liste_limit) { foreach ($search as $key => $val) { if (is_array($search[$key]) && count($search[$key])) { foreach ($search[$key] as $skey) { - $param .= '&search_'.$key.'[]='.urlencode($skey); + if ($skey != '') { + $param .= '&search_'.$key.'[]='.urlencode($skey); + } } - } else { + } elseif ($search[$key] != '') { $param .= '&search_'.$key.'='.urlencode($search[$key]); } } @@ -496,9 +506,12 @@ print ''; print ''; print ''; +print ''; print ''; +print ''; -$newcardbutton = dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/partnership/partnership_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); +$newcardbutton = ''; +$newcardbutton .= dolGetButtonTitle($langs->trans('New'), '', 'fa fa-plus-circle', dol_buildpath('/partnership/partnership_card.php', 1).'?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'object_'.$object->picto, 0, $newcardbutton, '', $limit, 0, 0, 1); @@ -510,10 +523,13 @@ $trackid = 'pship'.$object->id; include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php'; if ($search_all) { + $setupstring = ''; foreach ($fieldstosearchall as $key => $val) { $fieldstosearchall[$key] = $langs->trans($val); + $setupstring .= $key."=".$val.";"; } - print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'; + print ''."\n"; + print '
'.$langs->trans("FilterOnInto", $search_all).join(', ', $fieldstosearchall).'
'."\n"; } $moreforfilter = ''; @@ -536,7 +552,7 @@ if (!empty($moreforfilter)) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table @@ -551,25 +567,31 @@ if ($managedfor == 'member') { // Fields title search // -------------------------------------------------------------------- print '
'; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['css']) ? '' : $val['css']); + $searchkey = empty($search[$key]) ? '' : $search[$key]; + $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); if ($key == 'status') { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } elseif (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } elseif (in_array($val['type'], array('timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') { + } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { $cssforfield .= ($cssforfield ? ' ' : '').'right'; } if (!empty($arrayfields['t.'.$key]['checked'])) { print ''; } @@ -596,16 +624,23 @@ $parameters = array('arrayfields'=>$arrayfields); $reshook = $hookmanager->executeHooks('printFieldListOption', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column -print ''; +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print ''."\n"; +$totalarray = array(); +$totalarray['nbfield'] = 0; // Fields title label // -------------------------------------------------------------------- print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +} foreach ($object->fields as $key => $val) { $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); if ($key == 'status') { @@ -614,11 +649,13 @@ foreach ($object->fields as $key => $val) { $cssforfield .= ($cssforfield ? ' ' : '').'center'; } elseif (in_array($val['type'], array('timestamp'))) { $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $val['label'] != 'TechnicalID') { + } elseif (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && $key != 'rowid' && $val['label'] != 'TechnicalID' && empty($val['arrayofkeyval'])) { $cssforfield .= ($cssforfield ? ' ' : '').'right'; } + $cssforfield = preg_replace('/small\s*/', '', $cssforfield); // the 'small' css must not be used for the title label if (!empty($arrayfields['t.'.$key]['checked'])) { print getTitleFieldOfList($arrayfields['t.'.$key]['label'], 0, $_SERVER['PHP_SELF'], 't.'.$key, '', $param, ($cssforfield ? 'class="'.$cssforfield.'"' : ''), $sortfield, $sortorder, ($cssforfield ? $cssforfield.' ' : ''))."\n"; + $totalarray['nbfield']++; } } // End of subscription date @@ -630,11 +667,14 @@ if ($managedfor == 'member') { // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; // Hook fields -$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); +$parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder, 'totalarray'=>&$totalarray); $reshook = $hookmanager->executeHooks('printFieldListTitle', $parameters, $object); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; // Action column -print getTitleFieldOfList($selectedfields, 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print getTitleFieldOfList(($mode != 'kanban' ? $selectedfields : ''), 0, $_SERVER["PHP_SELF"], '', '', '', '', $sortfield, $sortorder, 'center maxwidthsearch ')."\n"; +} +$totalarray['nbfield']++; print ''."\n"; @@ -652,8 +692,11 @@ if (isset($extrafields->attributes[$object->table_element]['computed']) && is_ar // Loop on record // -------------------------------------------------------------------- $i = 0; +$savnbfield = $totalarray['nbfield']; $totalarray = array(); -while ($i < ($limit ? min($num, $limit) : $num)) { +$totalarray['nbfield'] = 0; +$imaxinloop = ($limit ? min($num, $limit) : $num); +while ($i < $imaxinloop) { $obj = $db->fetch_object($resql); if (empty($obj)) { break; // Should not happen @@ -662,98 +705,132 @@ while ($i < ($limit ? min($num, $limit) : $num)) { // Store properties in $object $object->setVarsFromFetchObj($obj); - // Show here line of result - print ''; - foreach ($object->fields as $key => $val) { - $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); - if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; - } elseif ($key == 'status') { - $cssforfield .= ($cssforfield ? ' ' : '').'center'; + if ($mode == 'kanban') { + if ($i == 0) { + print ''; } - - if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'right'; - } - //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; - - if (!empty($arrayfields['t.'.$key]['checked'])) { - print ''; - if ($key == 'status') { - print $object->getLibStatut(5); - } else { - print $object->showOutputField($val, $key, $object->$key, ''); + } else { + // Show here line of result + $j = 0; + print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; - if (!$i) { - $totalarray['nbfield']++; + } + foreach ($object->fields as $key => $val) { + $cssforfield = (empty($val['csslist']) ? (empty($val['css']) ? '' : $val['css']) : $val['csslist']); + if (in_array($val['type'], array('date', 'datetime', 'timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; + } elseif ($key == 'status') { + $cssforfield .= ($cssforfield ? ' ' : '').'center'; } - if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + + if (in_array($val['type'], array('timestamp'))) { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + } elseif ($key == 'ref') { + $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + } + + if (in_array($val['type'], array('double(24,8)', 'double(6,3)', 'integer', 'real', 'price')) && !in_array($key, array('rowid', 'status')) && empty($val['arrayofkeyval'])) { + $cssforfield .= ($cssforfield ? ' ' : '').'right'; + } + //if (in_array($key, array('fk_soc', 'fk_user', 'fk_warehouse'))) $cssforfield = 'tdoverflowmax100'; + + if (!empty($arrayfields['t.'.$key]['checked'])) { + print ''; + if ($key == 'status') { + print $object->getLibStatut(5); + } elseif ($key == 'rowid') { + print $object->showOutputField($val, $key, $object->id, ''); + } else { + print $object->showOutputField($val, $key, $object->$key, ''); + } + print ''; if (!$i) { - $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + $totalarray['nbfield']++; } - if (!isset($totalarray['val'])) { - $totalarray['val'] = array(); + if (!empty($val['isameasure']) && $val['isameasure'] == 1) { + if (!$i) { + $totalarray['pos'][$totalarray['nbfield']] = 't.'.$key; + } + if (!isset($totalarray['val'])) { + $totalarray['val'] = array(); + } + if (!isset($totalarray['val']['t.'.$key])) { + $totalarray['val']['t.'.$key] = 0; + } + $totalarray['val']['t.'.$key] += $object->$key; } - if (!isset($totalarray['val']['t.'.$key])) { - $totalarray['val']['t.'.$key] = 0; - } - $totalarray['val']['t.'.$key] += $object->$key; } } - } - // End of subscription date - if ($managedfor == 'member') { - print ''; } - print ''; - } - // Extra fields - include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; - // Fields from hook - $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); - $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook - print $hookmanager->resPrint; - // Action column - print ''; + } + if (!$i) { + $totalarray['nbfield']++; } - print ''; - } - print ''; - if (!$i) { - $totalarray['nbfield']++; - } - print ''."\n"; + print ''."\n"; + } $i++; } @@ -771,14 +848,14 @@ if ($num == 0) { } } if ($managedfor != 'member') $colspan++; // End of subscription date - print ''; + print ''; } $db->free($resql); $parameters = array('arrayfields'=>$arrayfields, 'sql'=>$sql); -$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object); // Note that $action and $object may have been modified by hook +$reshook = $hookmanager->executeHooks('printFieldListFooter', $parameters, $object, $action); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; print ''; @@ -1365,16 +1373,20 @@ if ($resql) { print ''; - $searchpicto = $form->showFilterButtons(); - print $searchpicto; - print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -2120,15 +2147,17 @@ if ($resql) { } } // Action column - print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print ''.$langs->trans("ConsumedBy").''.$langs->trans("AmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("VATRate").''.$langs->trans("AmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("DiscountOfferedBy").' '.$langs->trans("ConsumedBy").''.$langs->trans("AmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("VATRate").''.$langs->trans("AmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("DiscountOfferedBy").' '.$langs->trans("ConsumedBy").''.$langs->trans("AmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("VATRate").''.$langs->trans("AmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("Author").' '.$langs->trans("ConsumedBy").''.$langs->trans("AmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("MulticurrencyAmountHT").''.$langs->trans("VATRate").''.$langs->trans("AmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("MulticurrencyAmountTTC").''.$langs->trans("Author").' 
".$langs->trans("DefaultContact").''; print img_picto('', 'contact', 'class="pictofixedwidth"'); - print $form->selectcontacts($soc->id, $contactid, 'contactid', 1, $srccontactslist, '', 1, 'maxwidth200 widthcentpercentminusx'); + print $form->selectcontacts($soc->id, $contactid, 'contactid', 1, !empty($srccontactslist)?$srccontactslist:"", '', 1, 'maxwidth200 widthcentpercentminusx'); print '
'.$langs->trans("DateDeliveryPlanned").''; - $date_delivery = ($date_delivery ? $date_delivery : $object->date_delivery); + $date_delivery = ($date_delivery ? $date_delivery : $object->delivery_date); print $form->selectDate($date_delivery ? $date_delivery : -1, 'liv_', 1, 1, 1); print "
'.$langs->trans('BankAccount').''; print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes($fk_account, 'fk_account', 0, '', 1, '', 0, 'maxwidth200 widthcentpercentminusx', 1); print '
'; $editenable = $usercancreate; print $form->editfieldkey("BankAccount", 'bankaccount', '', $object, $editenable); @@ -2726,7 +2768,7 @@ if ($action == 'create' && $usercancreate) { // Create a purchase order if (!empty($conf->global->WORKFLOW_CAN_CREATE_PURCHASE_ORDER_FROM_SALE_ORDER)) { - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && $object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && $object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) { if ($usercancreatepurchaseorder) { print dolGetButtonAction('', $langs->trans('AddPurchaseOrder'), 'default', DOL_URL_ROOT.'/fourn/commande/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid, ''); } @@ -2738,7 +2780,7 @@ if ($action == 'create' && $usercancreate) { $langs->load("interventions"); if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && $object->getNbOfServicesLines() > 0) { - if ($user->rights->ficheinter->creer) { + if ($user->hasRight('ficheinter', 'creer')) { print dolGetButtonAction('', $langs->trans('AddIntervention'), 'default', DOL_URL_ROOT.'/fichinter/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid, ''); } else { print dolGetButtonAction($langs->trans('NotAllowed'), $langs->trans('AddIntervention'), 'default', $_SERVER['PHP_SELF']. '#', '', false); @@ -2750,7 +2792,7 @@ if ($action == 'create' && $usercancreate) { if (!empty($conf->contrat->enabled) && ($object->statut == Commande::STATUS_VALIDATED || $object->statut == Commande::STATUS_SHIPMENTONPROCESS || $object->statut == Commande::STATUS_CLOSED)) { $langs->load("contracts"); - if ($user->rights->contrat->creer) { + if ($user->hasRight('contrat', 'creer')) { print dolGetButtonAction('', $langs->trans('AddContract'), 'default', DOL_URL_ROOT.'/contrat/card.php?action=create&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid, ''); } } @@ -2762,7 +2804,7 @@ if ($action == 'create' && $usercancreate) { if ($object->statut > Commande::STATUS_DRAFT && $object->statut < Commande::STATUS_CLOSED && ($object->getNbOfProductsLines() > 0 || !empty($conf->global->STOCK_SUPPORTS_SERVICES))) { if ((isModEnabled('expedition_bon') && $user->rights->expedition->creer) || ($conf->delivery_note->enabled && $user->rights->expedition->delivery->creer)) { - if ($user->rights->expedition->creer) { + if ($user->hasRight('expedition', 'creer')) { print dolGetButtonAction('', $langs->trans('CreateShipment'), 'default', DOL_URL_ROOT.'/expedition/shipment.php?id='.$object->id, ''); } else { print dolGetButtonAction($langs->trans('NotAllowed'), $langs->trans('CreateShipment'), 'default', $_SERVER['PHP_SELF']. '#', '', false); @@ -2781,7 +2823,7 @@ if ($action == 'create' && $usercancreate) { // Create bill and Classify billed // Note: Even if module invoice is not enabled, we should be able to use button "Classified billed" if ($object->statut > Commande::STATUS_DRAFT && !$object->billed && $object->total_ttc >= 0) { - if (isModEnabled('facture') && $user->rights->facture->creer && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { + if (isModEnabled('facture') && $user->hasRight('facture', 'creer') && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { print dolGetButtonAction('', $langs->trans('CreateBill'), 'default', DOL_URL_ROOT.'/compta/facture/card.php?action=create&token='.newToken().'&origin='.$object->element.'&originid='.$object->id.'&socid='.$object->socid, ''); } if ($usercancreate && $object->statut >= Commande::STATUS_VALIDATED && empty($conf->global->WORKFLOW_DISABLE_CLASSIFY_BILLED_FROM_ORDER) && empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)) { diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php index d75b64c8dab..9a9f1d78df0 100644 --- a/htdocs/commande/class/commande.class.php +++ b/htdocs/commande/class/commande.class.php @@ -507,7 +507,7 @@ class Commande extends CommonOrder $sql .= " SET ref = '".$this->db->escape($num)."',"; $sql .= " fk_statut = ".self::STATUS_VALIDATED.","; $sql .= " date_valid='".$this->db->idate($now)."',"; - $sql .= " fk_user_valid = ".((int) $user->id).","; + $sql .= " fk_user_valid = ".($user->id > 0 ? (int) $user->id : "null").","; $sql .= " fk_user_modif = ".((int) $user->id); $sql .= " WHERE rowid = ".((int) $this->id); @@ -1234,7 +1234,8 @@ class Commande extends CommonOrder // Clear fields $this->user_author_id = $user->id; - $this->user_valid = ''; + $this->user_valid = 0; // deprecated + $this->user_validation_id = 0; $this->date = dol_now(); $this->date_commande = dol_now(); $this->date_creation = ''; @@ -1884,7 +1885,7 @@ class Commande extends CommonOrder $this->user_author_id = $obj->fk_user_author; $this->user_creation_id = $obj->fk_user_author; $this->user_validation_id = $obj->fk_user_valid; - $this->user_valid = $obj->fk_user_valid; + $this->user_valid = $obj->fk_user_valid; // deprecated $this->user_modification_id = $obj->fk_user_modif; $this->user_modification = $obj->fk_user_modif; $this->total_ht = $obj->total_ht; @@ -3351,7 +3352,7 @@ class Commande extends CommonOrder $sql .= " total_ttc=".(isset($this->total_ttc) ? $this->total_ttc : "null").","; $sql .= " fk_statut=".(isset($this->statut) ? $this->statut : "null").","; $sql .= " fk_user_author=".(isset($this->user_author_id) ? $this->user_author_id : "null").","; - $sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").","; + $sql .= " fk_user_valid=".((isset($this->user_valid) && $this->user_valid > 0) ? $this->user_valid : "null").","; $sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").","; $sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").","; $sql .= " deposit_percent=".(! empty($this->deposit_percent) ? strval($this->deposit_percent) : "null").","; @@ -3709,7 +3710,7 @@ class Commande extends CommonOrder $result = ''; - if (!empty($conf->expedition->enabled) && ($option == '1' || $option == '2')) { + if (isModEnabled("expedition") && ($option == '1' || $option == '2')) { $url = DOL_URL_ROOT.'/expedition/shipment.php?id='.$this->id; } else { $url = DOL_URL_ROOT.'/commande/card.php?id='.$this->id; @@ -3840,21 +3841,13 @@ class Commande extends CommonOrder $obj = $this->db->fetch_object($result); $this->id = $obj->rowid; if ($obj->fk_user_author) { - $cuser = new User($this->db); - $cuser->fetch($obj->fk_user_author); - $this->user_creation = $cuser; + $this->user_creation_id = $obj->fk_user_author; } - if ($obj->fk_user_valid) { - $vuser = new User($this->db); - $vuser->fetch($obj->fk_user_valid); - $this->user_validation = $vuser; + $this->user_validation_id = $obj->fk_user_valid; } - if ($obj->fk_user_cloture) { - $cluser = new User($this->db); - $cluser->fetch($obj->fk_user_cloture); - $this->user_cloture = $cluser; + $this->user_closing_id = $obj->fk_user_cloture; } $this->date_creation = $this->db->jdate($obj->datec); diff --git a/htdocs/commande/contact.php b/htdocs/commande/contact.php index 5f4de8b59a0..c9ef518d1d0 100644 --- a/htdocs/commande/contact.php +++ b/htdocs/commande/contact.php @@ -96,10 +96,6 @@ if ($action == 'addcontact' && $user->rights->commande->creer) { /* * View */ -$title = $langs->trans('Order')." - ".$langs->trans('ContactsAddresses'); -$help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; -llxHeader('', $title, $help_url); - $form = new Form($db); $formcompany = new FormCompany($db); $formother = new FormOther($db); @@ -117,6 +113,10 @@ if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref) > 0) { $object->fetch_thirdparty(); + $title = $object->ref." - ".$langs->trans('ContactsAddresses'); + $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; + llxHeader('', $title, $help_url); + $head = commande_prepare_head($object); print dol_get_fiche_head($head, 'contact', $langs->trans("CustomerOrder"), -1, 'order'); diff --git a/htdocs/commande/document.php b/htdocs/commande/document.php index d85400243e7..af04389b8d9 100644 --- a/htdocs/commande/document.php +++ b/htdocs/commande/document.php @@ -96,7 +96,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; /* * View */ -$title = $langs->trans('Order')." - ".$langs->trans('Documents'); +$title = $object->ref." - ".$langs->trans('Documents'); $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; llxHeader('', $title, $help_url); diff --git a/htdocs/commande/list.php b/htdocs/commande/list.php index 264613ac597..b92140efa03 100644 --- a/htdocs/commande/list.php +++ b/htdocs/commande/list.php @@ -49,7 +49,7 @@ require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; // Load translation files required by the page -$langs->loadLangs(array("orders", 'sendings', 'deliveries', 'companies', 'compta', 'bills', 'stocks', 'products')); +$langs->loadLangs(array('orders', 'sendings', 'deliveries', 'companies', 'compta', 'bills', 'stocks', 'products')); $action = GETPOST('action', 'aZ09'); $massaction = GETPOST('massaction', 'alpha'); @@ -70,6 +70,7 @@ $search_dateorder_start = dol_mktime(0, 0, 0, GETPOST('search_dateorder_start_mo $search_dateorder_end = dol_mktime(23, 59, 59, GETPOST('search_dateorder_end_month', 'int'), GETPOST('search_dateorder_end_day', 'int'), GETPOST('search_dateorder_end_year', 'int')); $search_datedelivery_start = dol_mktime(0, 0, 0, GETPOST('search_datedelivery_start_month', 'int'), GETPOST('search_datedelivery_start_day', 'int'), GETPOST('search_datedelivery_start_year', 'int')); $search_datedelivery_end = dol_mktime(23, 59, 59, GETPOST('search_datedelivery_end_month', 'int'), GETPOST('search_datedelivery_end_day', 'int'), GETPOST('search_datedelivery_end_year', 'int')); + $search_product_category = GETPOST('search_product_category', 'int'); $search_ref = GETPOST('search_ref', 'alpha') != '' ?GETPOST('search_ref', 'alpha') : GETPOST('sref', 'alpha'); $search_ref_customer = GETPOST('search_ref_customer', 'alpha'); @@ -77,22 +78,25 @@ $search_company = GETPOST('search_company', 'alpha'); $search_company_alias = GETPOST('search_company_alias', 'alpha'); $search_town = GETPOST('search_town', 'alpha'); $search_zip = GETPOST('search_zip', 'alpha'); -$search_state = GETPOST("search_state", 'alpha'); -$search_country = GETPOST("search_country", 'int'); -$search_type_thirdparty = GETPOST("search_type_thirdparty", 'int'); +$search_state = GETPOST('search_state', 'alpha'); +$search_country = GETPOST('search_country', 'int'); +$search_type_thirdparty = GETPOST('search_type_thirdparty', 'int'); $sall = trim((GETPOST('search_all', 'alphanohtml') != '') ? GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); $socid = GETPOST('socid', 'int'); $search_user = GETPOST('search_user', 'int'); $search_sale = GETPOST('search_sale', 'int'); + $search_total_ht = GETPOST('search_total_ht', 'alpha'); $search_total_vat = GETPOST('search_total_vat', 'alpha'); $search_total_ttc = GETPOST('search_total_ttc', 'alpha'); $search_warehouse = GETPOST('search_warehouse', 'int'); + $search_multicurrency_code = GETPOST('search_multicurrency_code', 'alpha'); $search_multicurrency_tx = GETPOST('search_multicurrency_tx', 'alpha'); -$search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha'); +$search_multicurrency_montant_ht = GETPOST('search_multicurrency_montant_ht', 'alpha'); $search_multicurrency_montant_vat = GETPOST('search_multicurrency_montant_vat', 'alpha'); $search_multicurrency_montant_ttc = GETPOST('search_multicurrency_montant_ttc', 'alpha'); + $search_login = GETPOST('search_login', 'alpha'); $search_categ_cus = GETPOST("search_categ_cus", 'int'); $optioncss = GETPOST('optioncss', 'alpha'); @@ -103,10 +107,11 @@ $search_remove_btn = GETPOST('button_removefilter', 'alpha'); $search_project_ref = GETPOST('search_project_ref', 'alpha'); $search_project = GETPOST('search_project', 'alpha'); $search_shippable = GETPOST('search_shippable', 'aZ09'); -$search_fk_cond_reglement = GETPOST("search_fk_cond_reglement", 'int'); -$search_fk_shipping_method = GETPOST("search_fk_shipping_method", 'int'); -$search_fk_mode_reglement = GETPOST("search_fk_mode_reglement", 'int'); -$search_fk_input_reason = GETPOST("search_fk_input_reason", 'int'); + +$search_fk_cond_reglement = GETPOST('search_fk_cond_reglement', 'int'); +$search_fk_shipping_method = GETPOST('search_fk_shipping_method', 'int'); +$search_fk_mode_reglement = GETPOST('search_fk_mode_reglement', 'int'); +$search_fk_input_reason = GETPOST('search_fk_input_reason', 'int'); // Security check $id = (GETPOST('orderid') ?GETPOST('orderid', 'int') : GETPOST('id', 'int')); @@ -176,7 +181,7 @@ $arrayfields = array( 'typent.code'=>array('label'=>"ThirdPartyType", 'checked'=>$checkedtypetiers, 'position'=>55), 'c.date_commande'=>array('label'=>"OrderDateShort", 'checked'=>1, 'position'=>60), 'c.date_delivery'=>array('label'=>"DateDeliveryPlanned", 'checked'=>1, 'enabled'=>empty($conf->global->ORDER_DISABLE_DELIVERY_DATE), 'position'=>65), - 'c.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>-1, 'position'=>66 , 'enabled'=>!empty($conf->expedition->enabled)), + 'c.fk_shipping_method'=>array('label'=>"SendingMethod", 'checked'=>-1, 'position'=>66 , 'enabled'=>isModEnabled("expedition")), 'c.fk_cond_reglement'=>array('label'=>"PaymentConditionsShort", 'checked'=>-1, 'position'=>67), 'c.fk_mode_reglement'=>array('label'=>"PaymentMode", 'checked'=>-1, 'position'=>68), 'c.fk_input_reason'=>array('label'=>"Channel", 'checked'=>-1, 'position'=>69), @@ -199,7 +204,7 @@ $arrayfields = array( 'c.date_cloture'=>array('label'=>"DateClosing", 'checked'=>0, 'position'=>130), 'c.note_public'=>array('label'=>'NotePublic', 'checked'=>0, 'enabled'=>(empty($conf->global->MAIN_LIST_ALLOW_PUBLIC_NOTES)), 'position'=>135), 'c.note_private'=>array('label'=>'NotePrivate', 'checked'=>0, 'enabled'=>(empty($conf->global->MAIN_LIST_ALLOW_PRIVATE_NOTES)), 'position'=>140), - 'shippable'=>array('label'=>"Shippable", 'checked'=>1,'enabled'=>(!empty($conf->expedition->enabled)), 'position'=>990), + 'shippable'=>array('label'=>"Shippable", 'checked'=>1,'enabled'=>(isModEnabled("expedition")), 'position'=>990), 'c.facture'=>array('label'=>"Billed", 'checked'=>1, 'enabled'=>(empty($conf->global->WORKFLOW_BILL_ON_SHIPMENT)), 'position'=>995), 'c.import_key' =>array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>1, 'visible'=>-2, 'position'=>999), 'c.fk_statut'=>array('label'=>"Status", 'checked'=>1, 'position'=>1000) @@ -320,6 +325,8 @@ if (empty($reshook)) { $db->begin(); + $nbOrders = is_array($orders) ? count($orders) : 1; + foreach ($orders as $id_order) { $cmd = new Commande($db); if ($cmd->fetch($id_order) <= 0) { @@ -455,10 +462,11 @@ if (empty($reshook)) { $objecttmp->context['createfromclone']; - $rang = $lines[$i]->rang; + $rang = ($nbOrders > 1) ? -1 : $lines[$i]->rang; //there may already be rows from previous orders - if (!empty($createbills_onebythird)) + if (!empty($createbills_onebythird)) { $rang = $TFactThirdNbLines[$cmd->socid]; + } $result = $objecttmp->addline( $desc, @@ -1214,7 +1222,7 @@ if ($resql) { if ($permissiontocancel) { $arrayofmassactions['cancelorders'] = img_picto('', 'close_title', 'class="pictofixedwidth"').$langs->trans("Cancel"); } - if ($user->rights->facture->creer) { + if (!empty($conf->invoice->enabled) && $user->rights->facture->creer) { $arrayofmassactions['createbills'] = img_picto('', 'bill', 'class="pictofixedwidth"').$langs->trans("CreateInvoiceForThisCustomer"); } if ($permissiontoclose) { @@ -1374,7 +1382,7 @@ if ($resql) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; - $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); if (GETPOST('autoselectall', 'int')) { @@ -1391,6 +1399,14 @@ if ($resql) { print ''."\n"; print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } + // Ref if (!empty($arrayfields['c.ref']['checked'])) { print ''; } // Action column - print ''; - + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } print "\n"; // Fields title print ''; + + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'maxwidthsearch center '); + } if (!empty($arrayfields['c.ref']['checked'])) { print_liste_field_titre($arrayfields['c.ref']['label'], $_SERVER["PHP_SELF"], 'c.ref', '', $param, '', $sortfield, $sortorder); } @@ -1794,7 +1815,9 @@ if ($resql) { if (!empty($arrayfields['c.fk_statut']['checked'])) { print_liste_field_titre($arrayfields['c.fk_statut']['label'], $_SERVER["PHP_SELF"], "c.fk_statut", "", $param, '', $sortfield, $sortorder, 'center '); } - print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'maxwidthsearch center '); + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', $param, '', $sortfield, $sortorder, 'maxwidthsearch center '); + } print ''."\n"; $total = 0; @@ -1875,6 +1898,18 @@ if ($resql) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; if (!$i) { diff --git a/htdocs/commande/note.php b/htdocs/commande/note.php index 75d8e587ccb..934299377e5 100644 --- a/htdocs/commande/note.php +++ b/htdocs/commande/note.php @@ -77,7 +77,7 @@ if (empty($reshook)) { /* * View */ -$title = $langs->trans('Order')." - ".$langs->trans('Notes'); +$title = $object->ref." - ".$langs->trans('Notes'); $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; llxHeader('', $title, $help_url); diff --git a/htdocs/compta/accounting-files.php b/htdocs/compta/accounting-files.php index 996ad22fbce..5e6ef3bbedf 100644 --- a/htdocs/compta/accounting-files.php +++ b/htdocs/compta/accounting-files.php @@ -1,9 +1,10 @@ - * Copyright (C) 2004-2019 Laurent Destailleur - * Copyright (C) 2017 Pierre-Henry Favre - * Copyright (C) 2020 Maxime DEMAREST - * Copyright (C) 2021 Gauthier VERDOL +/* Copyright (C) 2001-2006 Rodolphe Quiedeville + * Copyright (C) 2004-2019 Laurent Destailleur + * Copyright (C) 2017 Pierre-Henry Favre + * Copyright (C) 2020 Maxime DEMAREST + * Copyright (C) 2021 Gauthier VERDOL + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,6 +48,11 @@ require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; +if (!empty($conf->project->enabled)) { + require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; +} + // Constant to define payment sens const PAY_DEBIT = 0; const PAY_CREDIT = 1; @@ -64,6 +70,7 @@ $date_stopMonth = GETPOST('date_stopmonth', 'int'); $date_stopYear = GETPOST('date_stopyear', 'int'); $date_stop = dol_mktime(23, 59, 59, $date_stopMonth, $date_stopDay, $date_stopYear, 'tzuserrel'); $action = GETPOST('action', 'aZ09'); +$projectid = (GETPOST('projectid', 'int') ? GETPOST('projectid', 'int') : 0); // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('comptafileslist', 'globallist')); @@ -128,12 +135,12 @@ $error = 0; $listofchoices = array( 'selectinvoices'=>array('label'=>'Invoices', 'lang'=>'bills', 'enabled' => isModEnabled('facture'), 'perms' => !empty($user->rights->facture->lire)), - 'selectsupplierinvoices'=>array('label'=>'BillsSuppliers', 'lang'=>'bills', 'enabled' => !empty($conf->supplier_invoice->enabled), 'perms' => !empty($user->rights->fournisseur->facture->lire)), + 'selectsupplierinvoices'=>array('label'=>'BillsSuppliers', 'lang'=>'bills', 'enabled' => isModEnabled("supplier_invoice"), 'perms' => !empty($user->rights->fournisseur->facture->lire)), 'selectexpensereports'=>array('label'=>'ExpenseReports', 'lang'=>'trips', 'enabled' => !empty($conf->expensereport->enabled), 'perms' => !empty($user->rights->expensereport->lire)), 'selectdonations'=>array('label'=>'Donations', 'lang'=>'donation', 'enabled' => !empty($conf->don->enabled), 'perms' => !empty($user->rights->don->lire)), 'selectsocialcontributions'=>array('label'=>'SocialContributions', 'enabled' => !empty($conf->tax->enabled), 'perms' => !empty($user->rights->tax->charges->lire)), 'selectpaymentsofsalaries'=>array('label'=>'SalariesPayments', 'lang'=>'salaries', 'enabled' => !empty($conf->salaries->enabled), 'perms' => !empty($user->rights->salaries->read)), - 'selectvariouspayment'=>array('label'=>'VariousPayment', 'enabled' => !empty($conf->banque->enabled), 'perms' => !empty($user->rights->banque->lire)), + 'selectvariouspayment'=>array('label'=>'VariousPayment', 'enabled' => isModEnabled("banque"), 'perms' => !empty($user->rights->banque->lire)), 'selectloanspayment'=>array('label'=>'PaymentLoan', 'enabled' => !empty($conf->loan->enabled), 'perms' => !empty($user->rights->loan->read)), ); @@ -175,6 +182,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE datef between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; $sql .= " AND t.fk_statut <> ".Facture::STATUS_DRAFT; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Vendor invoices if (GETPOST('selectsupplierinvoices') && !empty($listofchoices['selectsupplierinvoices']['perms'])) { @@ -186,9 +194,10 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE datef between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; $sql .= " AND t.fk_statut <> ".FactureFournisseur::STATUS_DRAFT; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Expense reports - if (GETPOST('selectexpensereports') && !empty($listofchoices['selectexpensereports']['perms'])) { + if (GETPOST('selectexpensereports') && !empty($listofchoices['selectexpensereports']['perms']) && empty($projectid)) { if (!empty($sql)) { $sql .= " UNION ALL"; } @@ -208,6 +217,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE datedon between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; $sql .= " AND t.fk_statut <> ".Don::STATUS_DRAFT; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Payments of salaries if (GETPOST('selectpaymentsofsalaries') && !empty($listofchoices['selectpaymentsofsalaries']['perms'])) { @@ -219,6 +229,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; //$sql.=" AND fk_statut <> ".PaymentSalary::STATUS_DRAFT; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Social contributions if (GETPOST('selectsocialcontributions') && !empty($listofchoices['selectsocialcontributions']['perms'])) { @@ -230,6 +241,7 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " WHERE t.date_ech between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; //$sql.=" AND fk_statut <> ".ChargeSociales::STATUS_DRAFT; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Various payments if (GETPOST('selectvariouspayment') && !empty($listofchoices['selectvariouspayment']['perms'])) { @@ -240,9 +252,10 @@ if (($action == 'searchfiles' || $action == 'dl')) { $sql .= " FROM ".MAIN_DB_PREFIX."payment_various as t"; $sql .= " WHERE datep between ".$wheretail; $sql .= " AND t.entity IN (".$db->sanitize($entity == 1 ? '0,1' : $entity).')'; + if (!empty($projectid)) $sql .= " AND fk_projet = ".((int) $projectid); } // Loan payments - if (GETPOST('selectloanspayment') && !empty($listofchoices['selectloanspayment']['perms'])) { + if (GETPOST('selectloanspayment') && !empty($listofchoices['selectloanspayment']['perms']) && empty($projectid)) { if (!empty($sql)) { $sql .= " UNION ALL"; } @@ -460,7 +473,15 @@ if ($result && $action == "dl" && !$error) { $log .= ','.$langs->transnoentitiesnoconv("Country"); $log .= ','.$langs->transnoentitiesnoconv("VATIntra"); $log .= ','.$langs->transnoentitiesnoconv("Sens")."\n"; - $zipname = $dirfortmpfile.'/'.dol_print_date($date_start, 'dayrfc', 'tzuserrel')."-".dol_print_date($date_stop, 'dayrfc', 'tzuserrel').'_export.zip'; + $zipname = $dirfortmpfile.'/'.dol_print_date($date_start, 'dayrfc', 'tzuserrel')."-".dol_print_date($date_stop, 'dayrfc', 'tzuserrel'); + if (!empty($projectid)) { + $project = new Project($db); + $project->fetch($projectid); + if ($project->ref) { + $zipname .= '_'.$project->ref; + } + } + $zipname .='_export.zip'; dol_delete_file($zipname); @@ -561,11 +582,13 @@ print $form->selectDate($date_stop, 'date_stop', 0, 0, 0, "", 1, 1, 0, '', '', ' print "\n"; // Export is for current company only +$socid = 0; if (!empty($conf->multicompany->enabled) && is_object($mc)) { $mc->getInfo($conf->entity); print '('.$langs->trans("Entity").' : '; print "'; - print ''.$langs->trans("AccountancyCode").''; + print ''.$langs->trans("AccountancyCode").''; print ''; } - if (!empty(isModEnabled('paymentbybanktransfer'))) { + if (isModEnabled('paymentbybanktransfer')) { print ''; print ''; diff --git a/htdocs/compta/bank/class/account.class.php b/htdocs/compta/bank/class/account.class.php index 13fdffcb3c9..b42ef184c8f 100644 --- a/htdocs/compta/bank/class/account.class.php +++ b/htdocs/compta/bank/class/account.class.php @@ -618,7 +618,7 @@ class Account extends CommonObject $this->error = $this->db->lasterror(); $this->db->rollback(); - return -3; + return -4; } } @@ -630,7 +630,7 @@ class Account extends CommonObject $this->errors = $accline->errors; $this->db->rollback(); - return -2; + return -5; } } @@ -1381,6 +1381,7 @@ class Account extends CommonObject public function getNomUrl($withpicto = 0, $mode = '', $option = '', $save_lastsearch_value = -1, $notooltip = 0) { global $conf, $langs, $user; + include_once DOL_DOCUMENT_ROOT.'/core/lib/bank.lib.php'; $result = ''; $label = img_picto('', $this->picto).' '.$langs->trans("BankAccount").''; @@ -1389,7 +1390,7 @@ class Account extends CommonObject } $label .= '
'.$langs->trans('Label').': '.$this->label; $label .= '
'.$langs->trans('AccountNumber').': '.$this->number; - $label .= '
'.$langs->trans('IBAN').': '.$this->iban; + $label .= '
'.$langs->trans('IBAN').': '.getIbanHumanReadable($this); $label .= '
'.$langs->trans('BIC').': '.$this->bic; $label .= '
'.$langs->trans("AccountCurrency").': '.$this->currency_code; @@ -1707,19 +1708,20 @@ class Account extends CommonObject */ public function initAsSpecimen() { + // Example of IBAN FR7630001007941234567890185 $this->specimen = 1; $this->ref = 'MBA'; $this->label = 'My Big Company Bank account'; $this->bank = 'MyBank'; $this->courant = Account::TYPE_CURRENT; $this->clos = Account::STATUS_OPEN; - $this->code_banque = '123'; - $this->code_guichet = '456'; - $this->number = 'ABC12345'; - $this->cle_rib = '50'; + $this->code_banque = '30001'; + $this->code_guichet = '00794'; + $this->number = '12345678901'; + $this->cle_rib = '85'; $this->bic = 'AA12'; - $this->iban = 'FR999999999'; - $this->domiciliation = 'My bank address'; + $this->iban = 'FR7630001007941234567890185'; + $this->domiciliation = 'Banque de France'; $this->proprio = 'Owner'; $this->owner_address = 'Owner address'; $this->country_id = 1; @@ -2389,7 +2391,7 @@ class AccountLine extends CommonObject $result = ''; - $label = img_picto('', $this->picto).' '.$langs->trans("Transaction").':
'; + $label = img_picto('', $this->picto).' '.$langs->trans("BankTransactionLine").':
'; $label .= ''.$langs->trans("Ref").': '.$this->ref; $linkstart = ''; diff --git a/htdocs/compta/bank/class/paymentvarious.class.php b/htdocs/compta/bank/class/paymentvarious.class.php index 8bad5dbebd0..3d07c280559 100644 --- a/htdocs/compta/bank/class/paymentvarious.class.php +++ b/htdocs/compta/bank/class/paymentvarious.class.php @@ -423,11 +423,11 @@ class PaymentVarious extends CommonObject $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -5; } - if (!empty($conf->banque->enabled) && (empty($this->fk_account) || $this->fk_account <= 0)) { + if (isModEnabled("banque") && (empty($this->fk_account) || $this->fk_account <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("BankAccount")); return -6; } - if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) { + if (isModEnabled("banque") && (empty($this->type_payment) || $this->type_payment <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); return -7; } @@ -481,7 +481,7 @@ class PaymentVarious extends CommonObject $this->ref = $this->id; if ($this->id > 0) { - if (!empty($conf->banque->enabled) && !empty($this->amount)) { + if (isModEnabled("banque") && !empty($this->amount)) { // Insert into llx_bank require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; @@ -606,45 +606,20 @@ class PaymentVarious extends CommonObject public function LibStatut($status, $mode = 0) { // phpcs:enable - global $langs; - - if ($mode == 0) { - return $langs->trans($this->statuts[$status]); - } elseif ($mode == 1) { - return $langs->trans($this->statuts_short[$status]); - } elseif ($mode == 2) { - if ($status == 0) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); - } elseif ($status == 1) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); - } elseif ($status == 2) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); - } - } elseif ($mode == 3) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } - } elseif ($mode == 4) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); - } - } elseif ($mode == 5) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } + if (empty($this->labelStatus) || empty($this->labelStatusShort)) { + global $langs; + //$langs->load("mymodule@mymodule"); + /*$this->labelStatus[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); + $this->labelStatus[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); + $this->labelStatus[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled'); + $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv('Draft'); + $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv('Enabled'); + $this->labelStatusShort[self::STATUS_CANCELED] = $langs->transnoentitiesnoconv('Disabled');*/ } + + $statusType = 'status'.$status; + + return dolGetStatus($this->labelStatus[$status], $this->labelStatusShort[$status], '', $statusType, $mode); } diff --git a/htdocs/compta/bank/document.php b/htdocs/compta/bank/document.php index 78d45beadf3..91f514948a6 100644 --- a/htdocs/compta/bank/document.php +++ b/htdocs/compta/bank/document.php @@ -93,8 +93,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; * View */ -$title = $langs->trans("FinancialAccount").' - '.$langs->trans("Documents"); - +$title = $object->ref.' - '.$langs->trans("Documents"); $help_url = "EN:Module_Banks_and_Cash|FR:Module_Banques_et_Caisses"; llxHeader("", $title, $help_url); diff --git a/htdocs/compta/bank/graph.php b/htdocs/compta/bank/graph.php index 459134dc68a..c9bc7c649b3 100644 --- a/htdocs/compta/bank/graph.php +++ b/htdocs/compta/bank/graph.php @@ -55,11 +55,6 @@ $error = 0; /* * View */ - -$title = $langs->trans("FinancialAccount").' - '.$langs->trans("Graph"); -$helpurl = ""; -llxHeader('', $title, $helpurl); - $form = new Form($db); $datetime = dol_now(); @@ -83,6 +78,10 @@ if (GETPOST("ref")) { $account = $object->id; } +$title = $object->ref.' - '.$langs->trans("Graph"); +$helpurl = ""; +llxHeader('', $title, $helpurl); + $result = dol_mkdir($conf->bank->dir_temp); if ($result < 0) { $langs->load("errors"); diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index d424a3a8fef..c08336841e2 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -197,11 +197,6 @@ if ($action == 'confirm_editbankreceipt' && !empty($oldbankreceipt) && !empty($n /* * View */ - -$title = $langs->trans("FinancialAccount").' - '.$langs->trans("AccountStatements"); -$helpurl = ""; -llxHeader('', $title, $helpurl); - $form = new Form($db); $societestatic = new Societe($db); $chargestatic = new ChargeSociales($db); @@ -253,6 +248,10 @@ if (empty($numref)) { $numrows = $db->num_rows($result); $i = 0; + $title = $object->ref.' - '.$langs->trans("AccountStatements"); + $helpurl = ""; + llxHeader('', $title, $helpurl); + // Onglets $head = bank_prepare_head($object); print dol_get_fiche_head($head, 'statement', $langs->trans("FinancialAccount"), 0, 'account'); @@ -388,6 +387,10 @@ if (empty($numref)) { * Show list of record into a bank statement */ + $title = $langs->trans("FinancialAccount").' - '.$langs->trans("AccountStatements"); + $helpurl = ""; + llxHeader('', $title, $helpurl); + // Onglets $head = account_statement_prepare_head($object, $numref); print dol_get_fiche_head($head, 'statement', $langs->trans("AccountStatement"), -1, 'account'); diff --git a/htdocs/compta/bank/treso.php b/htdocs/compta/bank/treso.php index 71e5cf37c87..0d76b40a3e2 100644 --- a/htdocs/compta/bank/treso.php +++ b/htdocs/compta/bank/treso.php @@ -57,11 +57,6 @@ $hookmanager->initHooks(array('banktreso', 'globalcard')); /* * View */ - -$title = $langs->trans("FinancialAccount").' - '.$langs->trans("PlannedTransactions"); -$helpurl = ""; -llxHeader('', $title, $helpurl); - $societestatic = new Societe($db); $facturestatic = new Facture($db); $facturefournstatic = new FactureFournisseur($db); @@ -85,6 +80,9 @@ if (GETPOST("account") || GETPOST("ref")) { $_GET["account"] = $object->id; } + $title = $object->ref.' - '.$langs->trans("PlannedTransactions"); + $helpurl = ""; + llxHeader('', $title, $helpurl); // Onglets $head = bank_prepare_head($object); diff --git a/htdocs/compta/bank/various_payment/card.php b/htdocs/compta/bank/various_payment/card.php index 95d5ffa0e9e..23621157e5a 100644 --- a/htdocs/compta/bank/various_payment/card.php +++ b/htdocs/compta/bank/various_payment/card.php @@ -139,7 +139,7 @@ if (empty($reshook)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors'); $error++; } - if (!empty($conf->banque->enabled) && !$object->accountid > 0) { + if (isModEnabled("banque") && !$object->accountid > 0) { $langs->load('errors'); setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BankAccount")), null, 'errors'); $error++; @@ -304,9 +304,6 @@ if ($action == 'confirm_clone' && $confirm == 'yes' && ($user->rights->banque->m /* * View */ - -llxHeader("", $langs->trans("VariousPayment")); - $form = new Form($db); if (!empty($conf->accounting->enabled)) { $formaccounting = new FormAccounting($db); @@ -324,6 +321,13 @@ if ($id) { } } +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewVariousPayment"); +} +$help_url = 'EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores|DE:Modul_Lieferantenrechnungen'; +llxHeader('', $title, $help_url); + $options = array(); // Load bank groups @@ -409,7 +413,7 @@ if ($action == 'create') { print ''; // Bank - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; // Number - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; @@ -584,6 +588,8 @@ if ($id) { $morehtmlref .= ''; $linkback = ''.$langs->trans("BackToList").''; + $morehtmlright = ''; + dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref, '', 0, '', $morehtmlright); print '
'; @@ -613,7 +619,7 @@ if ($id) { } print '
'; - print ''; + print ''; // Accountancy code print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($object->fk_account > 0) { $bankline = new AccountLine($db); $bankline->fetch($object->fk_bank); diff --git a/htdocs/compta/bank/various_payment/list.php b/htdocs/compta/bank/various_payment/list.php index f75ce6d4471..aa65ac8d2a3 100644 --- a/htdocs/compta/bank/various_payment/list.php +++ b/htdocs/compta/bank/various_payment/list.php @@ -152,8 +152,8 @@ $arrayfields = array( 'datev' =>array('label'=>"DateValue", 'checked'=>-1, 'position'=>130), 'type' =>array('label'=>"PaymentMode", 'checked'=>1, 'position'=>140), 'project' =>array('label'=>"Project", 'checked'=>1, 'position'=>200, "enabled"=>!empty($conf->project->enabled)), - 'bank' =>array('label'=>"BankAccount", 'checked'=>1, 'position'=>300, "enabled"=>!empty($conf->banque->enabled)), - 'entry' =>array('label'=>"BankTransactionLine", 'checked'=>1, 'position'=>310, "enabled"=>!empty($conf->banque->enabled)), + 'bank' =>array('label'=>"BankAccount", 'checked'=>1, 'position'=>300, "enabled"=>isModEnabled("banque")), + 'entry' =>array('label'=>"BankTransactionLine", 'checked'=>1, 'position'=>310, "enabled"=>isModEnabled("banque")), 'account' =>array('label'=>"AccountAccountingShort", 'checked'=>1, 'position'=>400, "enabled"=>!empty($conf->accounting->enabled)), 'subledger' =>array('label'=>"SubledgerAccount", 'checked'=>1, 'position'=>410, "enabled"=>!empty($conf->accounting->enabled)), 'debit' =>array('label'=>"Debit", 'checked'=>1, 'position'=>500), @@ -284,7 +284,7 @@ if ($resql) { } // must be place behind the last "header(...)" call - llxHeader(); + llxHeader('', $langs->trans("VariousPayments")); $i = 0; $total = 0; @@ -537,6 +537,8 @@ if ($resql) { $totalarray = array(); $totalarray['nbfield'] = 0; $totalarray['val']['total_cred'] = 0; + $totalarray['val']['total_deb'] = 0; + while ($i < min($num, $limit)) { $obj = $db->fetch_object($resql); diff --git a/htdocs/compta/cashcontrol/cashcontrol_card.php b/htdocs/compta/cashcontrol/cashcontrol_card.php index 2b6b027d7ce..0130cfe10f0 100644 --- a/htdocs/compta/cashcontrol/cashcontrol_card.php +++ b/htdocs/compta/cashcontrol/cashcontrol_card.php @@ -128,7 +128,7 @@ if (GETPOST('cancel', 'alpha')) { if ($action == "reopen") { $result = $object->setStatut($object::STATUS_DRAFT, null, '', 'CASHFENCE_REOPEN'); if ($result < 0) { - setEventMessages($object->error, $object->error, 'errors'); + setEventMessages($object->error, $object->errors, 'errors'); } $action = 'view'; diff --git a/htdocs/compta/charges/index.php b/htdocs/compta/charges/index.php index 169666477f4..a80916cdc0d 100644 --- a/htdocs/compta/charges/index.php +++ b/htdocs/compta/charges/index.php @@ -146,7 +146,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print_liste_field_titre("RefPayment", $_SERVER["PHP_SELF"], "pc.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "pc.datep", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); } print_liste_field_titre("PayedByThisPayment", $_SERVER["PHP_SELF"], "pc.amount", "", $param, 'class="right"', $sortfield, $sortorder); @@ -220,7 +220,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { } print $obj->num_payment.''; // Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print '"; @@ -304,7 +304,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print_liste_field_titre("RefPayment", $_SERVER["PHP_SELF"], "ptva.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "ptva.datep", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("Type", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); } print_liste_field_titre("PayedByThisPayment", $_SERVER["PHP_SELF"], "ptva.amount", "", $param, 'class="right"', $sortfield, $sortorder); @@ -341,7 +341,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print $obj->num_payment.''; // Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; // Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -132,7 +132,7 @@ class mod_knowledgerecord_advanced extends ModeleNumRefKnowledgeRecord require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->KNOWLEDGEMANAGEMENT_KNOWLEDGERECORD_ADVANCED_MASK; + $mask = getDolGlobalString('KNOWLEDGEMANAGEMENT_KNOWLEDGERECORD_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/knowledgemanagement/knowledgerecord_agenda.php b/htdocs/knowledgemanagement/knowledgerecord_agenda.php index 37c6b9a6e3c..cbf8ccf0895 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_agenda.php +++ b/htdocs/knowledgemanagement/knowledgerecord_agenda.php @@ -41,6 +41,7 @@ $ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $cancel = GETPOST('cancel', 'aZ09'); $backtopage = GETPOST('backtopage', 'alpha'); +$socid = GETPOST('socid', 'int'); if (GETPOST('actioncode', 'array')) { $actioncode = GETPOST('actioncode', 'array', 3); @@ -80,7 +81,7 @@ $extrafields->fetch_name_optionals_label($object->table_element); // Load object include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once // Must be include, not include_once. Include fetch and fetch_thirdparty but not fetch_optionals if ($id > 0 || !empty($ref)) { - $upload_dir = $conf->knowledgemanagement->multidir_output[$object->entity]."/".$object->id; + $upload_dir = (!empty($conf->knowledgemanagement->multidir_output[$object->entity]) ? $conf->knowledgemanagement->multidir_output[$object->entity] : $conf->knowledgemanagement->dir_output)."/".$object->id; } // Security check - Protection if external user diff --git a/htdocs/knowledgemanagement/knowledgerecord_card.php b/htdocs/knowledgemanagement/knowledgerecord_card.php index baddd9e29a5..66b7b0ca160 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_card.php +++ b/htdocs/knowledgemanagement/knowledgerecord_card.php @@ -44,7 +44,7 @@ $cancel = GETPOST('cancel', 'aZ09'); $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'knowledgerecordcard'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); $backtopageforcancel = GETPOST('backtopageforcancel', 'alpha'); -//$lineid = GETPOST('lineid', 'int'); +$lineid = GETPOST('lineid', 'int'); // Initialize technical objects $object = new KnowledgeRecord($db); diff --git a/htdocs/knowledgemanagement/knowledgerecord_document.php b/htdocs/knowledgemanagement/knowledgerecord_document.php index ec88c33d882..ce185c9b8cf 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_document.php +++ b/htdocs/knowledgemanagement/knowledgerecord_document.php @@ -49,7 +49,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/knowledgemanagement/knowledgerecord_list.php b/htdocs/knowledgemanagement/knowledgerecord_list.php index b903ab83acc..18ec0d67738 100644 --- a/htdocs/knowledgemanagement/knowledgerecord_list.php +++ b/htdocs/knowledgemanagement/knowledgerecord_list.php @@ -51,6 +51,7 @@ $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected $contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : 'knowledgerecordlist'; // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$mode = GETPOST('mode', 'aZ09'); $id = GETPOST('id', 'int'); @@ -98,13 +99,12 @@ if (!$sortorder) { $search_all = GETPOST('search_all', 'alphanohtml'); $search = array(); foreach ($object->fields as $key => $val) { - if (GETPOST('search_'.$key, 'alpha') !== '') { - if ($key == "lang") { - $search[$key] = GETPOST('search_'.$key, 'alpha')!='0' ? GETPOST('search_'.$key, 'alpha') : ''; - } else { - $search[$key] = GETPOST('search_'.$key, 'alpha'); - } + if ($key == "lang") { + $search[$key] = GETPOST('search_'.$key, 'alpha')!='0' ? GETPOST('search_'.$key, 'alpha') : ''; + } else { + $search[$key] = GETPOST('search_'.$key, 'alpha'); } + if (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { $search[$key.'_dtstart'] = dol_mktime(0, 0, 0, GETPOST('search_'.$key.'_dtstartmonth', 'int'), GETPOST('search_'.$key.'_dtstartday', 'int'), GETPOST('search_'.$key.'_dtstartyear', 'int')); $search[$key.'_dtend'] = dol_mktime(23, 59, 59, GETPOST('search_'.$key.'_dtendmonth', 'int'), GETPOST('search_'.$key.'_dtendday', 'int'), GETPOST('search_'.$key.'_dtendyear', 'int')); diff --git a/htdocs/langs/am_ET/errors.lang b/htdocs/langs/am_ET/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/am_ET/errors.lang +++ b/htdocs/langs/am_ET/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/am_ET/externalsite.lang b/htdocs/langs/am_ET/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/am_ET/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/am_ET/ftp.lang b/htdocs/langs/am_ET/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/am_ET/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ar_DZ/errors.lang b/htdocs/langs/ar_DZ/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/ar_DZ/errors.lang +++ b/htdocs/langs/ar_DZ/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ar_DZ/externalsite.lang b/htdocs/langs/ar_DZ/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ar_DZ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ar_DZ/ftp.lang b/htdocs/langs/ar_DZ/ftp.lang deleted file mode 100644 index 254a2a698ce..00000000000 --- a/htdocs/langs/ar_DZ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP or SFTP Client module setup -NewFTPClient=New FTP/FTPS connection setup -FTPArea=FTP/FTPS Area -FTPAreaDesc=This screen shows a view of an FTP et SFTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions -FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ar_EG/accountancy.lang b/htdocs/langs/ar_EG/accountancy.lang index f860205b216..84a3c7e398f 100644 --- a/htdocs/langs/ar_EG/accountancy.lang +++ b/htdocs/langs/ar_EG/accountancy.lang @@ -1,2 +1,5 @@ # Dolibarr language file - Source file is en_US - accountancy -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s | Credit = %s +Selectformat=حدد حجم الملف +ACCOUNTING_EXPORT_FORMAT=حدد حجم الملف +BackToChartofaccounts=مخطط إرجاع الحسابات +CountriesNotInEEC=بلدان غير أعضاء في المجموعة اﻹقتصادية أﻷوروبية diff --git a/htdocs/langs/ar_IQ/projects.lang b/htdocs/langs/ar_IQ/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/ar_IQ/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/ar_JO/errors.lang b/htdocs/langs/ar_JO/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/ar_JO/errors.lang +++ b/htdocs/langs/ar_JO/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ar_JO/externalsite.lang b/htdocs/langs/ar_JO/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ar_JO/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ar_JO/ftp.lang b/htdocs/langs/ar_JO/ftp.lang deleted file mode 100644 index 254a2a698ce..00000000000 --- a/htdocs/langs/ar_JO/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP or SFTP Client module setup -NewFTPClient=New FTP/FTPS connection setup -FTPArea=FTP/FTPS Area -FTPAreaDesc=This screen shows a view of an FTP et SFTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions -FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ar_SA/accountancy.lang b/htdocs/langs/ar_SA/accountancy.lang index 64cbf0a1651..913349b4bb8 100644 --- a/htdocs/langs/ar_SA/accountancy.lang +++ b/htdocs/langs/ar_SA/accountancy.lang @@ -37,8 +37,8 @@ OtherInfo=معلومات اخرى DeleteCptCategory=إزالة حساب المحاسبة من المجموعة ConfirmDeleteCptCategory=هل أنت متأكد أنك تريد إزالة هذا الحساب المحاسبي من مجموعة حسابات المحاسبة؟ JournalizationInLedgerStatus=حالة اليوميات -AlreadyInGeneralLedger=Already transferred to accounting journals and ledger -NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger +AlreadyInGeneralLedger=تم نقلها بالفعل إلى دفاتر اليومية المحاسبية ودفتر الأستاذ +NotYetInGeneralLedger=لم يتم نقلها بعد إلى المجلات ودفتر الأستاذ GroupIsEmptyCheckSetup=المجموعة فارغة ، تحقق من إعداد مجموعة المحاسبة المخصصة DetailByAccount=إظهار التفاصيل حسب الحساب AccountWithNonZeroValues=الحسابات ذات القيم غير الصفرية @@ -62,24 +62,24 @@ MainAccountForSubscriptionPaymentNotDefined=حساب المحاسبة الرئي AccountancyArea=منطقة المحاسبة AccountancyAreaDescIntro=استخدام وحدة المحاسبة تم في عدة خطوات: AccountancyAreaDescActionOnce=عادة ما يتم تنفيذ الإجراءات التالية مرة واحدة فقط ، أو مرة واحدة في السنة. -AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you automaticaly the correct default accounting account when transferring data in accounting +AccountancyAreaDescActionOnceBis=يجب القيام بالخطوات التالية لتوفير الوقت في المستقبل من خلال اقتراح حساب المحاسبة الافتراضي الصحيح تلقائيًا عند نقل البيانات في المحاسبة AccountancyAreaDescActionFreq=يتم تنفيذ الإجراءات التالية عادةً كل شهر أو أسبوع أو كل يوم للشركات الكبيرة جدًا . -AccountancyAreaDescJournalSetup=STEP %s: Check content of your journal list from menu %s +AccountancyAreaDescJournalSetup=الخطوة %s: تحقق من محتوى قائمة مجلاتك من القائمة %s AccountancyAreaDescChartModel=الخطوة %s: تحقق من وجود نموذج لمخطط الحساب أو قم بإنشاء نموذج من القائمة %s AccountancyAreaDescChart=الخطوة %s : حدد و / أو أكمل مخطط حسابك من القائمة %s AccountancyAreaDescVat=الخطوة %s: تحديد حسابات المحاسبة لكل معدلات ضريبة القيمة المضافة. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescDefault=الخطوة %s: تحديد حسابات المحاسبة الافتراضية. لهذا ، استخدم إدخال القائمة %s. -AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of Expense report. For this, use the menu entry %s. +AccountancyAreaDescExpenseReport=الخطوة %s: تحديد حسابات المحاسبة الافتراضية لكل نوع من أنواع تقرير المصاريف. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescSal=الخطوة %s: تحديد حسابات المحاسبة الافتراضية لدفع الرواتب. لهذا ، استخدم إدخال القائمة %s. -AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for Taxes (special expenses). For this, use the menu entry %s. +AccountancyAreaDescContrib=الخطوة %s: تحديد حسابات المحاسبة الافتراضية للضرائب (نفقات خاصة). لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescDonation=الخطوة %s: تحديد حسابات المحاسبة الافتراضية للتبرع. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescSubscription=الخطوة %s: تحديد حسابات المحاسبة الافتراضية لاشتراك الأعضاء. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescMisc=الخطوة %s: تحديد الحساب الافتراضي الإلزامي وحسابات المحاسبة الافتراضية للمعاملات المتنوعة. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescLoan=الخطوة %s: تحديد حسابات المحاسبة الافتراضية للقروض. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescBank=الخطوة %s: تحديد الحسابات المحاسبية ورمز دفتر اليومية لكل حساب بنكي والحسابات المالية. لهذا ، استخدم إدخال القائمة %s. -AccountancyAreaDescProd=STEP %s: Define accounting accounts on your Products/Services. For this, use the menu entry %s. +AccountancyAreaDescProd=الخطوة %s: تحديد حسابات المحاسبة لمنتجاتك / خدماتك. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescBind=الخطوة %s: تحقق من الربط بين سطور %s الحالية وحساب المحاسبة ، لتمكين التطبيق من تسجيل المعاملات في دفتر الأستاذ بنقرة واحدة. إكمال الارتباطات المفقودة. لهذا ، استخدم إدخال القائمة %s. AccountancyAreaDescWriteRecords=الخطوة %s: اكتب المعاملات في دفتر الأستاذ. لهذا ، انتقل إلى القائمة %s ، وانقر فوق الزر %s . @@ -112,7 +112,7 @@ MenuAccountancyClosure=اغلاق MenuAccountancyValidationMovements=اعتماد الحركات ProductsBinding=حسابات المنتجات TransferInAccounting=التحويل في المحاسبة -RegistrationInAccounting=Recording in accounting +RegistrationInAccounting=التسجيل في المحاسبة Binding=ربط للحسابات CustomersVentilation=ربط فاتورة العميل SuppliersVentilation=ربط فاتورة المورد @@ -120,7 +120,7 @@ ExpenseReportsVentilation=ربط تقرير المصاريف CreateMvts=إنشاء معاملة جديدة UpdateMvts=تعديل معاملة ValidTransaction=اعتماد المعاملة -WriteBookKeeping=Record transactions in accounting +WriteBookKeeping=تسجيل المعاملات في المحاسبة Bookkeeping=دفتر حسابات BookkeepingSubAccount=حساب استاذ فرعي AccountBalance=رصيد الحساب @@ -132,7 +132,7 @@ InvoiceLinesDone=بنود الفواتير المقيدة ExpenseReportLines=بنود تقارير المصاريف المراد ربطها ExpenseReportLinesDone=البنود المقيدة لتقارير المصروفات IntoAccount=ربط البند مع حساب المحاسبة -TotalForAccount=Total accounting account +TotalForAccount=حساب المحاسبة الإجمالي Ventilate=ربط @@ -156,12 +156,12 @@ ACCOUNTING_LENGTH_DESCRIPTION=اقتطاع وصف المنتج والخدمات ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=اقتطاع نموذج وصف حساب المنتجات والخدمات في القوائم بعد حرف x (الأفضل = 50) ACCOUNTING_LENGTH_GACCOUNT=طول حسابات المحاسبة العامة (إذا قمت بتعيين القيمة إلى 6 هنا ، فسيظهر الحساب "706" مثل "706000" على الشاشة) ACCOUNTING_LENGTH_AACCOUNT=طول حسابات الطرف الثالث المحاسبية (إذا قمت بتعيين القيمة إلى 6 هنا ، فسيظهر الحساب "401" مثل "401000" على الشاشة) -ACCOUNTING_MANAGE_ZERO=السماح بإدارة عدد مختلف من الأصفار في نهاية الحساب المحاسبي. تحتاجه بعض الدول (مثل سويسرا). إذا تم الضبط على إيقاف (افتراضي) ، يمكنك تعيين المعاملين التاليتين لتطلب من التطبيق إضافة أصفار افتراضية. +ACCOUNTING_MANAGE_ZERO=السماح بإدارة عدد مختلف من الأصفار في نهاية الحساب المحاسبي. تحتاجه بعض الدول (مثل سويسرا). إذا تم الضبط على إيقاف (افتراضي) ، يمكنك برمجة اﻹعدادين التاليين لتطلب من التطبيق إضافة أصفار افتراضية. BANK_DISABLE_DIRECT_INPUT=تعطيل التسجيل المباشر للمعاملة في الحساب المصرفي -ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=تفعيل تصدير المسودة الى دفتر اليومية -ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value) +ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=إتاحة تصدير المسودة الى الدفتر اليومي\n +ACCOUNTANCY_COMBO_FOR_AUX=تمكين قائمة التحرير والسرد للحساب الفرعي (قد يكون بطيئًا إذا كان لديك الكثير من الأطراف الثالثة ، أو كسر القدرة على البحث عن جزء من القيمة) ACCOUNTING_DATE_START_BINDING=تحديد موعد لبدء الربط والتحويل في المحاسبة. بعد هذا التاريخ ، لن يتم تحويل المعاملات إلى المحاسبة. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=في نقل المحاسبة ، حدد فترة العرض بشكل افتراضي +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=في تحويل المحاسبة ، ما هي الفترة المحددة افتراضيا ACCOUNTING_SELL_JOURNAL=دفتر البيع اليومي ACCOUNTING_PURCHASE_JOURNAL=دفتر الشراء اليومي @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=حساب تسجيل التبرعات ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=حساب تسجيل الاشتراكات ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=حساب افتراضي لتسجيل إيداع العميل -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=تخزين حساب العميل كحساب فردي في دفتر الأستاذ الفرعي لخطوط الدفعات المقدمة (إذا تم تعطيله ، فسيظل الحساب الفردي لبنود الدَفعة المقدمة فارغًا) ACCOUNTING_PRODUCT_BUY_ACCOUNT=حساب افتراضي للمنتجات المشتراة (يستخدم إذا لم يتم تحديده في ورقة المنتج) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=حساب افتراضي للمنتجات المشتراة في الاتحاد الاوروبي (يستخدم إذا لم يتم تحديده في ورقة المنتج) @@ -193,7 +193,7 @@ ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=حساب افتراضي للمنتجات ACCOUNTING_SERVICE_BUY_ACCOUNT=حساب افتراضي للخدمات المشتراة (يُستخدم إذا لم يتم تحديده في ورقة الخدمة) ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=حساب افتراضي للخدمات المشتراة في الاتحاد الاوروبي (يستخدم إذا لم يتم تحديده في ورقة الخدمة) -ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=حساب افتراضي للخدمات المشتراة والمستوردة من الاتحاد الاوروبي (تُستخدم إذا لم يتم تحديدها في ورقة الخدمة) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=حساب افتراضي للخدمات المشتراة والمستوردة من المجموعة اﻹقتصادية اﻷوروبية(تُستخدم إذا لم يتم تحديدها في ورقة الخدمة) ACCOUNTING_SERVICE_SOLD_ACCOUNT=حساب افتراضي للخدمات المباعة (يُستخدم إذا لم يتم تحديده في ورقة الخدمة) ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=حساب افتراضي للخدمات المباعة في الاتحاد الاوروبي (يُستخدم إذا لم يتم تحديده في ورقة الخدمة) ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=حساب افتراضي للخدمات المباعة والمصدرة من الاتحاد الاوروبي (تُستخدم إذا لم يتم تحديدها في ورقة الخدمة) @@ -203,29 +203,29 @@ Docdate=التاريخ Docref=مرجع LabelAccount=Label account LabelOperation=Label operation -Sens=الاتجاه -AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received
For an accounting account of a supplier, use Debit to record a payment you made +Sens=الادارة +AccountingDirectionHelp=بالنسبة لحساب محاسبي لعميل ، استخدم الائتمان لتسجيل دفعة تلقيتها
بالنسبة لحساب محاسبي لمورد ، استخدم الخصم لتسجيل دفعة قمت بها LetteringCode=Lettering code Lettering=Lettering Codejournal=دفتر اليومية JournalLabel=اسم دفتر اليومية -NumPiece=Piece number +NumPiece=رقم القطعة TransactionNumShort=رقم. العملية -AccountingCategory=Custom group +AccountingCategory=مجموعة مخصصة GroupByAccountAccounting=تجميع حسب حساب دفتر الأستاذ العام GroupBySubAccountAccounting=تجميع حسب حساب دفتر الأستاذ الفرعي AccountingAccountGroupsDesc=يمكنك هنا تحديد بعض مجموعات الحساب. سيتم استخدامها لتقارير المحاسبة الشخصية. ByAccounts=حسب الحسابات ByPredefinedAccountGroups=من خلال مجموعات محددة مسبقًا ByPersonalizedAccountGroups=بواسطة مجموعات شخصية -ByYear=بحلول العام +ByYear=سنويا NotMatch=Not Set -DeleteMvt=Delete some lines from accounting +DeleteMvt=حذف بعض البنود من المحاسبة DelMonth=شهر للحذف DelYear=السنة للحذف DelJournal=دفتر يومية للحذف -ConfirmDeleteMvt=This will delete all lines in accountancy for the year/month and/or for a specific journal (At least one criterion is required). You will have to reuse the feature '%s' to have the deleted record back in the ledger. -ConfirmDeleteMvtPartial=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) +ConfirmDeleteMvt=سيؤدي هذا إلى حذف جميع سطور المحاسبة للسنة / الشهر و / أو لمجلة معينة (مطلوب معيار واحد على الأقل). سيتعين عليك إعادة استخدام الميزة "%s" لإعادة السجل المحذوف إلى دفتر الأستاذ. +ConfirmDeleteMvtPartial=سيؤدي هذا إلى حذف المعاملة من المحاسبة (سيتم حذف جميع الأسطر المتعلقة بنفس المعاملة) FinanceJournal=دفتر المالية اليومي ExpenseReportsJournal=دفتر تقارير المصاريف DescFinanceJournal=دفتر المالية اليومي المتضمن لجميع الدفعات عن طريق الحساب المصرفي @@ -247,9 +247,9 @@ DescThirdPartyReport=راجع هنا قائمة العملاء والموردي ListAccounts=قائمة الحسابات المحاسبية UnknownAccountForThirdparty=حساب طرف ثالث غير معروف. سوف نستخدم %s UnknownAccountForThirdpartyBlocking=حساب طرف ثالث غير معروف. خطأ في المنع -ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Subledger account not defined or third party or user unknown. We will use %s +ThirdpartyAccountNotDefinedOrThirdPartyUnknown=حساب دفتر الأستاذ الفرعي غير محدد أو الطرف الثالث أو المستخدم غير معروف. سوف نستخدم %s ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=طرف ثالث غير معروف ودفتر الأستاذ الفرعي غير محدد في الدفعة. سنبقي قيمة حساب دفتر الأستاذ الفرعي فارغة. -ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Subledger account not defined or third party or user unknown. Blocking error. +ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=حساب دفتر الأستاذ الفرعي غير محدد أو الطرف الثالث أو المستخدم غير معروف. خطأ في المنع. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=حساب طرف ثالث وحساب قيد الانتظار غير معرّفين. خطأ في المنع PaymentsNotLinkedToProduct=الدفع غير مرتبط بأي منتج / خدمة OpeningBalance=الرصيد الافتتاحي @@ -279,31 +279,31 @@ DescVentilExpenseReportMore=إذا قمت بإعداد حساب على نوع ب DescVentilDoneExpenseReport=راجع هنا قائمة بنود تقارير المصروفات وحساب رسومها Closure=الإغلاق السنوي -DescClosure=Consult here the number of movements by month who are not yet validated & locked -OverviewOfMovementsNotValidated=Overview of movements not validated and locked -AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked -ValidateMovements=Validate and lock record... +DescClosure=Consult here the number of movements by month not yet validated & locked +OverviewOfMovementsNotValidated=نظرة عامة على الحركات التي لم يتم التحقق من صحتها وإغلاقها +AllMovementsWereRecordedAsValidated=تم تسجيل جميع الحركات على أنها محققة ومغلقة +NotAllMovementsCouldBeRecordedAsValidated=لا يمكن تسجيل جميع الحركات على أنها تم التحقق من صحتها وقفلها +ValidateMovements=التحقق من صحة السجل وقفله ... DescValidateMovements=سيتم حظر أي تعديل أو حذف للكتابة والحروف. يجب اعتماد جميع الإدخالات الخاصة بالتمرين وإلا فلن يكون الإغلاق ممكنًا ValidateHistory=ربط تلقائي -AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) +AutomaticBindingDone=تم إجراء عمليات ربط تلقائية (%s) - الربط التلقائي غير ممكن لبعض السجلات (%s) ErrorAccountancyCodeIsAlreadyUse=خطأ، لا يمكنك حذف هذا الحساب المحاسبي لأنه مستخدم -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +MvtNotCorrectlyBalanced=الحركة غير متوازنة بشكل صحيح. الخصم = %s والائتمان = %s Balancing=موازنة FicheVentilation=بطاقة مرتبطة GeneralLedgerIsWritten=المعاملات مكتوبة في دفتر الأستاذ GeneralLedgerSomeRecordWasNotRecorded=لا يمكن تسجيل بعض المعاملات. إذا لم تكن هناك رسالة خطأ أخرى ، فربما يكون ذلك بسبب تسجيلها في دفتر اليومية بالفعل. -NoNewRecordSaved=No more record to transfer +NoNewRecordSaved=لا يوجد المزيد من السجلات لنقلها ListOfProductsWithoutAccountingAccount=قائمة المنتجات غير مرتبطة بأي حساب ChangeBinding=تغيير الربط Accounted=حسب في دفتر الأستاذ -NotYetAccounted=Not yet transferred to accounting +NotYetAccounted=لم يتم تحويلها بعد إلى المحاسبة ShowTutorial=عرض البرنامج التعليمي NotReconciled=لم يتم تسويتة -WarningRecordWithoutSubledgerAreExcluded=Warning, all lines without subledger account defined are filtered and excluded from this view -AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts +WarningRecordWithoutSubledgerAreExcluded=تحذير ، كل الأسطر التي لم يتم تحديد حساب دفتر الأستاذ الفرعي تتم تصفيتها واستبعادها من طريقة العرض هذه +AccountRemovedFromCurrentChartOfAccount=حساب محاسبي غير موجود في مخطط الحسابات الحالي ## Admin BindingOptions=خيارات الربط @@ -320,7 +320,7 @@ AccountingJournalType2=مبيعات AccountingJournalType3=مشتريات AccountingJournalType4=بنك AccountingJournalType5=تقرير مصروفات -AccountingJournalType8=المخزون +AccountingJournalType8=الجرد AccountingJournalType9=Has-new ErrorAccountingJournalIsAlreadyUse=هذه الدفتر مستخدم بالفعل AccountingAccountForSalesTaxAreDefinedInto=ملاحظة: تم تعريف حساب ضريبة المبيعات في القائمة %s - %s @@ -331,10 +331,10 @@ ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=تعطيل الربط والتحويل ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=تعطيل الربط والتحويل في المحاسبة على تقارير المصروفات (لن يتم أخذ تقارير المصروفات في الاعتبار في المحاسبة) ## Export -NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) +NotifiedExportDate=ضع علامة على الخطوط المصدرة كـ (لتعديل سطر ، ستحتاج إلى حذف المعاملة بالكامل وإعادة تحويلها إلى المحاسبة) NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) -DateValidationAndLock=Date validation and lock -ConfirmExportFile=Confirmation of the generation of the accounting export file ? +DateValidationAndLock=التحقق من صحة التاريخ والقفل +ConfirmExportFile=تأكيد إنشاء ملف محاسبي تصدير؟ ExportDraftJournal=تصدير مسودة دفتر اليومية Modelcsv=نموذج التصدير Selectmodelcsv=تحديد نموذج للتصدير @@ -342,11 +342,11 @@ Modelcsv_normal=تصدير كلاسيكي Modelcsv_CEGID=Export for CEGID Expert Comptabilité Modelcsv_COALA=Export for Sage Coala Modelcsv_bob50=Export for Sage BOB 50 -Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT) +Modelcsv_ciel=تصدير لـ Sage50 أو Ciel Compta أو Compta Evo. (تنسيق XIMPORT) Modelcsv_quadratus=Export for Quadratus QuadraCompta Modelcsv_ebp=Export for EBP Modelcsv_cogilog=Export for Cogilog -Modelcsv_agiris=Export for Agiris Isacompta +Modelcsv_agiris=تصدير إلى Agiris Isacompta Modelcsv_LDCompta=Export for LD Compta (v9) (Test) Modelcsv_LDCompta10=Export for LD Compta (v10 & higher) Modelcsv_openconcerto=Export for OpenConcerto (Test) @@ -354,10 +354,10 @@ Modelcsv_configurable=Export CSV Configurable Modelcsv_FEC=Export FEC Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed) Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland -Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta +Modelcsv_winfic=تصدير لـ Winfic - eWinfic - WinSis Compta Modelcsv_Gestinumv3=Export for Gestinum (v3) -Modelcsv_Gestinumv5=Export for Gestinum (v5) -Modelcsv_charlemagne=Export for Aplim Charlemagne +Modelcsv_Gestinumv5=تصدير لـ Gestinum (v5) +Modelcsv_charlemagne=تصدير لأبليم شارلمان ChartofaccountsId=معرف دليل الحسابات ## Tools - Init accounting account on product / service @@ -390,27 +390,27 @@ SaleExport=بيع تصدير SaleEEC=بيع في الاتحاد الاوروبي SaleEECWithVAT=البيع في EEC مع ضريبة القيمة المضافة ليست فارغة ، لذلك نفترض أن هذا ليس بيعًا داخل الاتحاد والحساب المقترح هو حساب المنتج القياسي. SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed. -ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. -ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +ForbiddenTransactionAlreadyExported=ممنوع: تم التحقق من صحة المعاملة و / أو تصديرها. +ForbiddenTransactionAlreadyValidated=ممنوع: تم التحقق من صحة المعاملة. ## Dictionary Range=نطاق الحساب Calculated=تم حسابه Formula=معادلة ## Reconcile -Unlettering=Unreconcile -AccountancyNoLetteringModified=No reconcile modified -AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified -AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified -AccountancyNoUnletteringModified=No unreconcile modified -AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified -AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified +Unlettering=غير قابل للتوفيق +AccountancyNoLetteringModified=لم يتم تعديل تسوية +AccountancyOneLetteringModifiedSuccessfully=تم تعديل أحد التوفيق بنجاح +AccountancyLetteringModifiedSuccessfully=تعديل %s بنجاح +AccountancyNoUnletteringModified=لم يتم تعديل عدم التوفيق بينها +AccountancyOneUnletteringModifiedSuccessfully=تم تعديل أحد ملفات التوفيق بنجاح +AccountancyUnletteringModifiedSuccessfully=تم تعديل %s بنجاح ## Confirm box -ConfirmMassUnlettering=Bulk Unreconcile confirmation -ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassUnlettering=تأكيد مجمّع غير قابل للتسوية +ConfirmMassUnletteringQuestion=هل أنت متأكد من أنك تريد إلغاء التوفيق بين التسجيلة (السجلات) المحددة %s؟ ConfirmMassDeleteBookkeepingWriting=تأكيد الحذف الضخم -ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? +ConfirmMassDeleteBookkeepingWritingQuestion=سيؤدي هذا إلى حذف المعاملة من المحاسبة (سيتم حذف جميع الأسطر المتعلقة بنفس المعاملة) هل أنت متأكد من أنك تريد حذف السجل (السجلات) المحددة %s؟ ## Error SomeMandatoryStepsOfSetupWereNotDone=لم يتم تنفيذ بعض خطوات الإعداد الإلزامية ، يرجى إكمالها @@ -423,32 +423,33 @@ NoJournalDefined=لم يتم تحديد دفتر Binded=البنود مرتبطة ToBind=بنود للربط UseMenuToSetBindindManualy=البنود غير مرتبطة بعد ، استخدم القائمة %s لإجراء الربط يدويًا -SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry this module is not compatible with the experimental feature of situation invoices -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code -AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 -AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=عذرًا ، هذه الوحدة غير متوافقة مع الميزة التجريبية لفواتير الحالة +AccountancyErrorMismatchLetterCode=عدم تطابق في التوفيق بين الكود +AccountancyErrorMismatchBalanceAmount=الرصيد (%s) لا يساوي 0 +AccountancyErrorLetteringBookkeeping=حدثت أخطاء بخصوص المعاملات: %s +ErrorAccountNumberAlreadyExists=رقم المحاسبة %s موجود بالفعل ## Import ImportAccountingEntries=مداخيل حسابية -ImportAccountingEntriesFECFormat=Accounting entries - FEC format -FECFormatJournalCode=Code journal (JournalCode) -FECFormatJournalLabel=Label journal (JournalLib) -FECFormatEntryNum=Piece number (EcritureNum) -FECFormatEntryDate=Piece date (EcritureDate) -FECFormatGeneralAccountNumber=General account number (CompteNum) -FECFormatGeneralAccountLabel=General account label (CompteLib) -FECFormatSubledgerAccountNumber=Subledger account number (CompAuxNum) -FECFormatSubledgerAccountLabel=Subledger account number (CompAuxLib) -FECFormatPieceRef=Piece ref (PieceRef) -FECFormatPieceDate=Piece date creation (PieceDate) -FECFormatLabelOperation=Label operation (EcritureLib) +ImportAccountingEntriesFECFormat=قيود المحاسبة - شكل FEC +FECFormatJournalCode=مجلة الكود (JournalCode) +FECFormatJournalLabel=مجلة التسمية (JournalLib) +FECFormatEntryNum=رقم القطعة (EcritureNum) +FECFormatEntryDate=تاريخ القطعة (EcritureDate) +FECFormatGeneralAccountNumber=رقم الحساب العام (CompteNum) +FECFormatGeneralAccountLabel=تصنيف الحساب العام (CompteLib) +FECFormatSubledgerAccountNumber=رقم حساب دفتر الأستاذ الفرعي (CompAuxNum) +FECFormatSubledgerAccountLabel=رقم حساب دفتر الأستاذ الفرعي (CompAuxLib) +FECFormatPieceRef=مرجع القطعة (PieceRef) +FECFormatPieceDate=إنشاء تاريخ القطعة (تاريخ القطعة) +FECFormatLabelOperation=عملية التسمية (EcritureLib) FECFormatDebit=مدين (مدين) FECFormatCredit=دائن (دائن) -FECFormatReconcilableCode=Reconcilable code (EcritureLet) -FECFormatReconcilableDate=Reconcilable date (DateLet) -FECFormatValidateDate=Piece date validated (ValidDate) -FECFormatMulticurrencyAmount=Multicurrency amount (Montantdevise) -FECFormatMulticurrencyCode=Multicurrency code (Idevise) +FECFormatReconcilableCode=كود قابل للتوفيق (EcritureLet) +FECFormatReconcilableDate=تاريخ قابل للتسوية (DateLet) +FECFormatValidateDate=تم التحقق من تاريخ القطعة (ValidDate) +FECFormatMulticurrencyAmount=مبلغ متعدد العملات (Montantdevise) +FECFormatMulticurrencyCode=كود متعدد العملات (ايديفيز) DateExport=تاريخ التصدير WarningReportNotReliable=تحذير ، هذا التقرير لا يستند إلى دفتر الأستاذ ، لذلك لا يحتوي على معاملة تم تعديلها يدويًا في دفتر الأستاذ. إذا كان تسجيل دفتر اليومية الخاص بك محدثًا ، فسيكون عرض مسك الدفاتر أكثر دقة. diff --git a/htdocs/langs/ar_SA/admin.lang b/htdocs/langs/ar_SA/admin.lang index d29f515b81c..6db0f18e637 100644 --- a/htdocs/langs/ar_SA/admin.lang +++ b/htdocs/langs/ar_SA/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin -BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF -BoldLabelOnPDF=Print label of product item in Bold in PDF +BoldRefAndPeriodOnPDF=طباعة مرجع وفترة عنصر المنتج في PDF +BoldLabelOnPDF=طباعة الملصق الخاص بمنتج المنتج بالخط العريض في ملف PDF Foundation=أساس Version=الإصدار Publisher=الناشر @@ -64,7 +64,7 @@ ModuleMustBeEnabled=يجب أن يكون النموذج / التطبيق %s%s تم تفعيله IfModuleEnabled=ملاحظة : نعم فعالة فقط في حال كان النموذج %s مفعل RemoveLock=حذف/إعادة تسمية الملف %sإذا كان موجود , للسماح باستخدام أداة الرفع/التثبيت . -RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. +RestoreLock=قم باستعادة الملف %s ، بإذن القراءة فقط ، لتعطيل أي استخدام آخر لأداة التحديث / التثبيت. SecuritySetup=الإعداد الأمني PHPSetup=إعدادت PHP OSSetup=إعدادات نظام التشغيل @@ -77,17 +77,17 @@ Dictionary=قواميس ErrorReservedTypeSystemSystemAuto=القيمة 'system' و 'systemauto' لهذا النوع محفوظ. يمكنك إستخدام 'user' كقيمة لإضافة السجل الخاص بك ErrorCodeCantContainZero=الكود لا يمكن أن يحتوي على القيمة 0 DisableJavascript=تعطيل عمليات الجافا و الأجاكس -DisableJavascriptNote=Note: For test or debug purpose only. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user +DisableJavascriptNote=ملاحظة: لغرض الاختبار أو التصحيح فقط. لتحسين أداء الشخص المكفوف أو المتصفحات النصية ، قد تفضل استخدام الإعداد في ملف تعريف المستخدم UseSearchToSelectCompanyTooltip=أيضا إذا كان لديك عدد كبير من الأحزاب الثالثة (> 100 000)، يمكنك زيادة السرعة عن طريق وضع COMPANY_DONOTSEARCH_ANYWHERE ثابت إلى 1 في الإعداد، <أخرى. وبعد ذلك البحث أن يقتصر على بداية السلسلة. UseSearchToSelectContactTooltip=أيضا إذا كان لديك عدد كبير من الأحزاب الثالثة (> 100 000)، يمكنك زيادة السرعة عن طريق وضع CONTACT_DONOTSEARCH_ANYWHERE ثابت إلى 1 في الإعداد، <أخرى. وبعد ذلك البحث أن يقتصر على بداية السلسلة. DelaiedFullListToSelectCompany=انتظر حتى يتم الضغط على مفتاح قبل تحميل محتوى قائمة التحرير والسرد الخاصة بالأطراف الثالثة ،
قد يؤدي ذلك إلى زيادة الأداء إذا كان لديك عدد كبير من الأطراف الثالثة ، ولكنه أقل ملاءمة. -DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.
This may increase performance if you have a large number of contacts, but it is less convenient. -NumberOfKeyToSearch=Number of characters to trigger search: %s -NumberOfBytes=Number of Bytes -SearchString=Search string +DelaiedFullListToSelectContact=انتظر حتى يتم الضغط على مفتاح قبل تحميل محتوى قائمة التحرير والسرد جهات الاتصال.
قد يؤدي هذا إلى زيادة الأداء إذا كان لديك عدد كبير من جهات الاتصال ، ولكنه أقل ملاءمة. +NumberOfKeyToSearch=عدد الأحرف لبدء البحث: %s +NumberOfBytes=عدد البايت +SearchString=دالة البحث NotAvailableWhenAjaxDisabled=غير متوفر عندما يكون أجاكس معطلاً -AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a project linked to another third party -TimesheetPreventAfterFollowingMonths=Prevent recording time spent after the following number of months +AllowToSelectProjectFromOtherCompany=في مستند تابع لطرف ثالث ، يمكن اختيار مشروع مرتبط بجهة خارجية أخرى +TimesheetPreventAfterFollowingMonths=منع وقت التسجيل المستغرق بعد عدد الأشهر التالية JavascriptDisabled=الجافا سكربت معطل UsePreviewTabs=إستخدم زر المعاينة ShowPreview=آظهر المعاينة @@ -109,7 +109,7 @@ NextValueForReplacements=القيمة التالية (استبدال) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=ملاحظة : لم يتم وضح حد في إعدادات الـ PHP الخاص بك MaxSizeForUploadedFiles=الحجم الأقصى لتحميل الملفات (0 لمنع أي تحميل) -UseCaptchaCode=إستخدم الرسوم كرمز (كابتشا) في صفحة الدخول +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=المسار الكامل لبرنامج مكافحة الفيروسات AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= المزيد من الصلاحيات بإستخدام command line @@ -120,7 +120,7 @@ MultiCurrencySetup=إعدادات تعدد العملات MenuLimits=الحدود و الدقة MenuIdParent=رمز القائمة العليا DetailMenuIdParent=رمز القائمة العليا (فراغ للقائمة العليا) -ParentID=Parent ID +ParentID=معرف الوالدين DetailPosition=رتب الرقم لتعريف موقع القائمة AllMenus=الكل NotConfigured=الوحدة النمطية | التطبيق غير مهيأ @@ -160,38 +160,38 @@ SystemToolsArea=منظقة أدوات نظام SystemToolsAreaDesc=هذه المنطقة توفر مميزات إدارية. استخدام القائمة لاختيار الخصائص التي تبحث عنها. Purge=أحذف PurgeAreaDesc=تسمح لك هذه الصفحة بحذف كل الملفات التي بنيت أو تم تخزينها بواسطة دوليبار (الملفات المؤقتة ، أو كافة الملفات في المجلد %s) استخدام هذه الميزة ليست ضرورية. هذه الخدمة مقدمة للمستخدمين الذين يستخدمون برنامج دوليبار على خادم لا يوفر لهم صلاحيات حذف الملفات التي أنشئت من قبل خادم الويب. -PurgeDeleteLogFile=Delete log files, including %s defined for Syslog module (no risk of losing data) -PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Parameter can be 'tempfilesold', 'logfiles' or both 'tempfilesold+logfiles'. Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago. -PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data) -PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: %s.
This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files. +PurgeDeleteLogFile=حذف ملفات السجل ، بما في ذلك %s المحددة لوحدة Syslog (لا يوجد خطر فقدان البيانات) +PurgeDeleteTemporaryFiles=احذف جميع ملفات السجل والملفات المؤقتة (لا يوجد خطر من فقدان البيانات). يمكن أن تكون المعلمة "tempfilesold" أو "logfiles" أو كلاهما "tempfilesold + logfiles". ملاحظة: يتم حذف الملفات المؤقتة فقط إذا تم إنشاء الدليل المؤقت منذ أكثر من 24 ساعة. +PurgeDeleteTemporaryFilesShort=حذف السجلات والملفات المؤقتة (لا يوجد خطر من فقدان البيانات) +PurgeDeleteAllFilesInDocumentsDir=احذف جميع الملفات في الدليل: %s .
سيؤدي هذا إلى حذف جميع المستندات التي تم إنشاؤها المتعلقة بالعناصر (الأطراف الثالثة والفواتير وما إلى ذلك ...) والملفات التي تم تحميلها في وحدة ECM وتفريغ النسخ الاحتياطي لقاعدة البيانات والملفات المؤقتة. PurgeRunNow=إحذف الآن -PurgeNothingToDelete=No directory or files to delete. +PurgeNothingToDelete=لا دليل أو ملفات لحذفها. PurgeNDirectoriesDeleted=%s ملفات او مجلدات حذفت -PurgeNDirectoriesFailed=Failed to delete %s files or directories. +PurgeNDirectoriesFailed=فشل حذف ملفات أو أدلة %s . PurgeAuditEvents=احذف جميع الأحداث المتعلقة بالأمان -ConfirmPurgeAuditEvents=Are you sure you want to purge all security events? All security logs will be deleted, no other data will be removed. +ConfirmPurgeAuditEvents=هل أنت متأكد أنك تريد تطهير كافة الأحداث الأمنية؟ سيتم حذف جميع سجلات الأمان ، ولن تتم إزالة أي بيانات أخرى. GenerateBackup=قم بإنشاء نسخة احتياطية Backup=نسخة احتياطية Restore=استعادة RunCommandSummary=تم إطلاق عملية النسخة الإحتياطية بالأمر التالي BackupResult=نتيجة للنسخة الإحتياطية BackupFileSuccessfullyCreated=تم إنشاء ملف النسخة الاحتياطية بنجاح -YouCanDownloadBackupFile=The generated file can now be downloaded +YouCanDownloadBackupFile=يمكن الآن تنزيل الملف الذي تم إنشاؤه NoBackupFileAvailable=لا يوجد ملفات احتياطية. ExportMethod=طريقة التصدير ImportMethod=طريقة الاستيراد ToBuildBackupFileClickHere=لعمل نسخة إحتياطية, اضغط هنا. -ImportMySqlDesc=To import a MySQL backup file, you may use phpMyAdmin via your hosting or use the mysql command from the Command line.
For example: +ImportMySqlDesc=لاستيراد ملف نسخ احتياطي MySQL ، يمكنك استخدام phpMyAdmin عبر الاستضافة أو استخدام الأمر mysql من سطر الأوامر.
على سبيل المثال: ImportPostgreSqlDesc=لاستيراد ملف النسخة الاحتياطية ، يجب استخدام pg_restore من نافذة الأوامر للدوز او اللاينكس : ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql -FileNameToGenerate=Filename for backup: +FileNameToGenerate=اسم ملف للنسخ الاحتياطي: Compression=ضغط الملف CommandsToDisableForeignKeysForImport=الأمر المستخدم لتعطيل المفتاح الخارجي في حالة الإستيراد CommandsToDisableForeignKeysForImportWarning=إجباري في حال اردت إسترجاع نسخة قاعدة البيانات الإحتياطية ExportCompatibility=توفق الملف المصدر -ExportUseMySQLQuickParameter=Use the --quick parameter -ExportUseMySQLQuickParameterHelp=The '--quick' parameter helps limit RAM consumption for large tables. +ExportUseMySQLQuickParameter=استخدم المعامل --quick +ExportUseMySQLQuickParameterHelp=تساعد المعلمة "--quick" في الحد من استهلاك ذاكرة الوصول العشوائي للجداول الكبيرة. MySqlExportParameters=تصدير قيم قاعدة البيانات MySql PostgreSqlExportParameters= تصدير قيم قاعدة البيانات PostgreSQL UseTransactionnalMode=إستخدم صيغة المعاملات @@ -205,50 +205,50 @@ ExtendedInsert=الإضافة الممددة NoLockBeforeInsert=لا يوجد أوامر قفل حول الإضافة DelayedInsert=إضافة متأخرة EncodeBinariesInHexa=ترميز البيانات الأحادية لستة عشرية -IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE) +IgnoreDuplicateRecords=تجاهل أخطاء السجل المكرر (INSERT IGNORE) AutoDetectLang=اكتشاف تلقائي (لغة المتصفح) FeatureDisabledInDemo=الميزة معلطة في العرض التجريبي -FeatureAvailableOnlyOnStable=Feature only available on official stable versions +FeatureAvailableOnlyOnStable=الميزة متوفرة فقط في الإصدارات الرسمية المستقرة BoxesDesc=البريمجات هي المكونات البرمجية التي تُظهر بعض المعلومات في بعض الصفحات. يمكنك اختيار إظهار أو إخفائها بإختيار الصفحات المطلوبة و الضغط على 'تنشيط', او بالضغط على الزر الآخر لتعطيلها. OnlyActiveElementsAreShown=فقط العناصر من النماذج المفعلة سوف تظهر. -ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button %s of each module to enable or disable a module/application. -ModulesDesc2=Click the wheel button %s to configure the module/application. -ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet... -ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. -ModulesMarketPlaces=Find external app/modules -ModulesDevelopYourModule=Develop your own app/modules -ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you. -DOLISTOREdescriptionLong=Instead of switching on www.dolistore.com web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)... -NewModule=New module -FreeModule=Free -CompatibleUpTo=Compatible with version %s -NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). -CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). -SeeInMarkerPlace=See in Market place +ModulesDesc=تحدد الوحدات / التطبيقات الميزات المتوفرة في البرنامج. تتطلب بعض الوحدات النمطية منح أذونات للمستخدمين بعد تنشيط الوحدة. انقر فوق زر التشغيل / الإيقاف %s لكل وحدة لتمكين أو تعطيل وحدة / تطبيق. +ModulesDesc2=انقر فوق زر العجلة %s لتكوين الوحدة / التطبيق. +ModulesMarketPlaceDesc=يمكنك العثور على المزيد من الوحدات النمطية للتنزيل على مواقع الويب الخارجية على الإنترنت ... +ModulesDeployDesc=إذا كانت الأذونات على نظام الملفات الخاص بك تسمح بذلك ، يمكنك استخدام هذه الأداة لنشر وحدة خارجية. ستكون الوحدة مرئية بعد ذلك في علامة التبويب %s . +ModulesMarketPlaces=ابحث عن تطبيقات / وحدات خارجية +ModulesDevelopYourModule=تطوير التطبيق / الوحدات الخاصة بك +ModulesDevelopDesc=يمكنك أيضًا تطوير الوحدة النمطية الخاصة بك أو العثور على شريك لتطوير وحدة من أجلك. +DOLISTOREdescriptionLong=بدلاً من التبديل إلى موقع ويب www.dolistore.com للعثور على وحدة خارجية ، يمكنك استخدام هذه الأداة المضمنة التي ستقوم بإجراء البحث في السوق الخارجية نيابةً عنك (قد يكون بطيئًا ، وتحتاج إلى الوصول إلى الإنترنت) ... +NewModule=وحدة جديدة +FreeModule=حر +CompatibleUpTo=متوافق مع الإصدار %s +NotCompatible=لا تبدو هذه الوحدة متوافقة مع Dolibarr %s (Min %s - Max %s). +CompatibleAfterUpdate=تتطلب هذه الوحدة تحديثًا لـ Dolibarr %s (Min %s - Max %s). +SeeInMarkerPlace=انظر في السوق SeeSetupOfModule=انظر إعداد وحدة٪ الصورة -SetOptionTo=Set option %s to %s -Updated=Updated -AchatTelechargement=Buy / Download -GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %s. +SetOptionTo=اضبط الخيار %s على %s +Updated=محدث +AchatTelechargement=شراء / تنزيل +GoModuleSetupArea=لنشر / تثبيت وحدة نمطية جديدة ، انتقل إلى منطقة إعداد الوحدة النمطية: %s . DoliStoreDesc=DoliStore ، في السوق الرسمي لتخطيط موارد المؤسسات وحدات Dolibarr / خارجي إدارة علاقات العملاء -DoliPartnersDesc=List of companies providing custom-developed modules or features.
Note: since Dolibarr is an open source application, anyone experienced in PHP programming should be able to develop a module. -WebSiteDesc=External websites for more add-on (non-core) modules... -DevelopYourModuleDesc=Some solutions to develop your own module... +DoliPartnersDesc=قائمة الشركات التي تقدم وحدات أو ميزات مطورة حسب الطلب.
ملاحظة: نظرًا لأن Dolibarr هو تطبيق مفتوح المصدر ، فإن أي شخص لديه خبرة في برمجة PHP يجب أن يكون قادرًا على تطوير وحدة نمطية. +WebSiteDesc=مواقع الويب الخارجية لمزيد من الوحدات الإضافية (غير الأساسية) ... +DevelopYourModuleDesc=بعض الحلول لتطوير الوحدة الخاصة بك ... URL=العنوان -RelativeURL=Relative URL +RelativeURL=URL نسبي BoxesAvailable=بريمجات متاحة BoxesActivated=بريمجات مفعلة ActivateOn=على تفعيل ActiveOn=على تفعيلها -ActivatableOn=Activatable on +ActivatableOn=Activatable على SourceFile=ملف المصدر AvailableOnlyIfJavascriptAndAjaxNotDisabled=متاحا إلا إذا كان جافا سكريبت غير المعوقين Required=مطلوب UsedOnlyWithTypeOption=المستخدمة من قبل بعض خيار جدول فقط Security=الأمن Passwords=كلمة السر -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. -MainDbPasswordFileConfEncrypted=Encrypt database password stored in conf.php. It is strongly recommended to activate this option. +DoNotStoreClearPassword=تشفير كلمات المرور المخزنة في قاعدة البيانات (وليس كنص عادي). يوصى بشدة بتنشيط هذا الخيار. +MainDbPasswordFileConfEncrypted=تشفير كلمة مرور قاعدة البيانات المخزنة في ملف conf.php. يوصى بشدة بتنشيط هذا الخيار. InstrucToEncodePass=لديك كلمة السر المشفرة في ملف conf.php، استبدال الخط
$ dolibarr_main_db_pass = "..."؛
بواسطة
$ dolibarr_main_db_pass = "crypted:٪ ليالي". InstrucToClearPass=لديك كلمة مرور فك الشفرة (واضح) في ملف conf.php، استبدال الخط
$ dolibarr_main_db_pass = "crypted: ...".
بواسطة
$ dolibarr_main_db_pass = "%s". ProtectAndEncryptPdfFiles=حماية صيغة المستندات المتنقلة . غير منصوح به لانه يوقف التوليد الكمي للملفات بصيغة المستندات المتنقلة @@ -256,75 +256,75 @@ ProtectAndEncryptPdfFilesDesc=حماية الملفات بصيغة المستن Feature=ميزة DolibarrLicense=الترخيص Developpers=مطوري / المساهمين -OfficialWebSite=Dolibarr official web site +OfficialWebSite=موقع الويب الرسمي Dolibarr OfficialWebSiteLocal=موقع على شبكة الإنترنت المحلي (٪ ق) -OfficialWiki=Dolibarr documentation / Wiki +OfficialWiki=وثائق Dolibarr / Wiki OfficialDemo=Dolibarr الانترنت التجريبي OfficialMarketPlace=المسؤول عن وحدات السوق الخارجية / أدونس OfficialWebHostingService=المشار خدمات استضافة المواقع (سحابة استضافة) ReferencedPreferredPartners=الشركاء المفضلين -OtherResources=Other resources -ExternalResources=External Resources -SocialNetworks=Social Networks -SocialNetworkId=Social Network ID -ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s -ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s -HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. -HelpCenterDesc2=Some of these resources are only available in english. +OtherResources=مصادر أخرى +ExternalResources=موارد خارجية +SocialNetworks=الشبكات الاجتماعية +SocialNetworkId=معرف الشبكة الاجتماعية +ForDocumentationSeeWiki=لوثائق المستخدم أو المطور (Doc ، FAQs ...) ،
ألق نظرة على Dolibarr Wiki:
%s 39 +ForAnswersSeeForum=لأية أسئلة / مساعدة أخرى ، يمكنك استخدام منتدى Dolibarr:
%s +HelpCenterDesc1=فيما يلي بعض الموارد للحصول على المساعدة والدعم مع Dolibarr. +HelpCenterDesc2=بعض هذه الموارد متاحة فقط في english . CurrentMenuHandler=الحالية القائمة معالج MeasuringUnit=وحدة قياس -LeftMargin=Left margin -TopMargin=Top margin -PaperSize=Paper type -Orientation=Orientation -SpaceX=Space X -SpaceY=Space Y -FontSize=Font size -Content=Content -ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) +LeftMargin=الهامش الأيسر +TopMargin=الهامش العلوي +PaperSize=نوع الورق +Orientation=توجيه +SpaceX=الفضاء X +SpaceY=الفضاء Y +FontSize=حجم الخط +Content=محتوى +ContentForLines=المحتوى المراد عرضه لكل منتج أو خدمة (من متغير __LINES__ من المحتوى) NoticePeriod=فترة إشعار -NewByMonth=New by month +NewByMonth=جديد حسب الشهر Emails=رسائل البريد الإلكترونية EMailsSetup=إعدادات رسائل البريد الإلكترونية -EMailsDesc=This page allows you to set parameters or options for email sending. +EMailsDesc=تسمح لك هذه الصفحة بتعيين معلمات أو خيارات لإرسال البريد الإلكتروني. EmailSenderProfiles=ملفات تعريف مرسلي رسائل البريد الإلكترونية EMailsSenderProfileDesc=يمكنك ان تبقي هذا القسم فارغاً. اذا ادخلت عناوين بريد إلكتروني هنا سيتم اضافتهم الى قائمة المرسلين المحتملين كخيار عندما تنشئ رسائل بريد إلكترونية جديدة -MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: %s) -MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) +MAIN_MAIL_SMTP_PORT=منفذ SMTP / SMTPS (القيمة الافتراضية في php.ini: %s ) +MAIN_MAIL_SMTP_SERVER=مضيف SMTP / SMTPS (القيمة الافتراضية في php.ini: %s ) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=منفذ SMTP / SMTPS (غير معرّف في PHP على أنظمة شبيهة بنظام Unix) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=مضيف SMTP / SMTPS (غير معرّف في PHP على أنظمة شبيهة بنظام Unix) MAIN_MAIL_EMAIL_FROM=عنوان بريد المرسل لرسائل البريد الإلكترونية التلقائية (القيمة الاولية في ملف اعدادات لغة بي اتش بي %s ) MAIN_MAIL_ERRORS_TO=عنوان رسائل البريد الإلكترونية المرجعي لأخطاء الارسال (الحقل "الاخطاء إلى" ) في البريد المرسل MAIN_MAIL_AUTOCOPY_TO= نسخ (نسخة كربونية) كل رسائل البريد الإلكترونية المرسلة الى -MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) +MAIN_DISABLE_ALL_MAILS=تعطيل جميع عمليات إرسال البريد الإلكتروني (لأغراض الاختبار أو العروض التوضيحية) MAIN_MAIL_FORCE_SENDTO=إرسال جميع رسائل البريد الإلكترونية الى (بدلا عن المستلم الحقيقي لاغراض التطوير والتجربة) MAIN_MAIL_ENABLED_USER_DEST_SELECT=اقتراح عناوين بريد الموظفين الإلكتروني (إذا كان موجودا) في حقل المستلمين عند ارنشاء رسالة بريد جديدة -MAIN_MAIL_SENDMODE=Email sending method -MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication) -MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication) -MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption -MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption -MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorise les certificats auto-signés -MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature -MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim -MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector -MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing +MAIN_MAIL_SENDMODE=طريقة إرسال البريد الإلكتروني +MAIN_MAIL_SMTPS_ID=معرف SMTP (إذا كان خادم الإرسال يتطلب مصادقة) +MAIN_MAIL_SMTPS_PW=كلمة مرور SMTP (إذا كان خادم الإرسال يتطلب مصادقة) +MAIN_MAIL_EMAIL_TLS=استخدم تشفير TLS (SSL) +MAIN_MAIL_EMAIL_STARTTLS=استخدم تشفير TLS (STARTTLS) +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=تفويض التوقيع التلقائي للشهادات +MAIN_MAIL_EMAIL_DKIM_ENABLED=استخدم DKIM لإنشاء توقيع البريد الإلكتروني +MAIN_MAIL_EMAIL_DKIM_DOMAIN=مجال البريد الإلكتروني للاستخدام مع dkim +MAIN_MAIL_EMAIL_DKIM_SELECTOR=اسم محدد dkim +MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=المفتاح الخاص لتوقيع dkim MAIN_DISABLE_ALL_SMS=تعطيل كافة الرسائل النصية القصيرة (لأغراض التجربة و التطوير) MAIN_SMS_SENDMODE=طريقة إرسال الرسائل النصية القصيرة MAIN_MAIL_SMS_FROM=رقم هاتف المرسل الاولي لارسال الرسائل النصية القصيرة -MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) -UserEmail=User email -CompanyEmail=Company Email +MAIN_MAIL_DEFAULT_FROMTYPE=البريد الإلكتروني المرسل الافتراضي للإرسال اليدوي (البريد الإلكتروني للمستخدم أو البريد الإلكتروني للشركة) +UserEmail=البريد الالكتروني للمستخدم +CompanyEmail=البريد الإلكتروني للشركة FeatureNotAvailableOnLinux=ميزة لا تتوفر على مثل أنظمة يونكس. sendmail برنامج الاختبار الخاص بك محليا. -FixOnTransifex=Fix the translation on the online translation platform of project -SubmitTranslation=If the translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ -SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or, if you are a developer, with a PR on github.com/Dolibarr/dolibarr +FixOnTransifex=إصلاح الترجمة على منصة الترجمة عبر الإنترنت للمشروع +SubmitTranslation=إذا لم تكتمل الترجمة لهذه اللغة أو وجدت أخطاءً ، فيمكنك تصحيح ذلك عن طريق تحرير الملفات في الدليل langs / %s وإرسال التغيير إلى www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslationENUS=إذا لم تكتمل الترجمة لهذه اللغة أو وجدت أخطاء ، فيمكنك تصحيح ذلك عن طريق تحرير الملفات في الدليل langs / %s وإرسال الملفات المعدلة على dolibarr.org/forum أو ، إذا كنت مطورًا ، باستخدام العلاقات العامة على github .com / Dolibarr / dolibarr ModuleSetup=إعداد وحدة -ModulesSetup=Modules/Application setup +ModulesSetup=الوحدات النمطية / إعداد التطبيق ModuleFamilyBase=نظام -ModuleFamilyCrm=Customer Relationship Management (CRM) -ModuleFamilySrm=Vendor Relationship Management (VRM) -ModuleFamilyProducts=Product Management (PM) +ModuleFamilyCrm=إدارة علاقات العملاء (CRM) +ModuleFamilySrm=إدارة علاقات البائعين (VRM) +ModuleFamilyProducts=إدارة المنتج (PM) ModuleFamilyHr=إدارة الموارد البشرية (HR) ModuleFamilyProjects=مشاريع / العمل التعاوني ModuleFamilyOther=أخرى @@ -332,40 +332,40 @@ ModuleFamilyTechnic=أدوات وحدات متعددة ModuleFamilyExperimental=نماذج تجريبية ModuleFamilyFinancial=الوحدات المالية (المحاسبة / الخزانة) ModuleFamilyECM=إدارة المحتوى في المؤسسة -ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyPortal=مواقع الويب والتطبيقات الأمامية الأخرى ModuleFamilyInterface=واجهات مع الأنظمة الخارجية MenuHandlers=قائمة مناولي MenuAdmin=قائمة تحرير DoNotUseInProduction=لا تستخدمها مع المنتج -ThisIsProcessToFollow=Upgrade procedure: -ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: +ThisIsProcessToFollow=إجراء الترقية: +ThisIsAlternativeProcessToFollow=هذا إعداد بديل للمعالجة يدويًا: StepNb=الخطوة %s -FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). -DownloadPackageFromWebSite=Download package (for example from the official web site %s). -UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s -UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s -SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. -NotExistsDirect=The alternative root directory is not defined to an existing directory.
-InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
-InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
If these lines are commented with "#", to enable them, just uncomment by removing the "#" character. -YouCanSubmitFile=You can upload the .zip file of module package from here: +FindPackageFromWebSite=ابحث عن حزمة توفر الميزات التي تحتاجها (على سبيل المثال على موقع الويب الرسمي %s). +DownloadPackageFromWebSite=قم بتنزيل الحزمة (على سبيل المثال من موقع الويب الرسمي %s). +UnpackPackageInDolibarrRoot=فك ضغط / فك ضغط الملفات المحزمة في دليل خادم Dolibarr الخاص بك: %s +UnpackPackageInModulesRoot=لنشر / تثبيت وحدة خارجية ، يجب فك ضغط / فك ضغط ملف الأرشيف في دليل الخادم المخصص للوحدات الخارجية:
%s +SetupIsReadyForUse=تم الانتهاء من نشر الوحدة. ومع ذلك ، يجب عليك تمكين الوحدة وإعدادها في التطبيق الخاص بك من خلال الانتقال إلى وحدات إعداد الصفحة: %s . +NotExistsDirect=لم يتم تعريف الدليل الجذر البديل لدليل موجود.
+InfDirAlt=منذ الإصدار 3 ، من الممكن تحديد دليل جذر بديل. يتيح لك ذلك تخزين المكونات الإضافية والقوالب المخصصة في دليل مخصص.
فقط قم بإنشاء دليل في جذر Dolibarr (على سبيل المثال: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
If these lines are commented with "#", to enable them ، فقط قم بإلغاء التعليق عن طريق إزالة الحرف "#". +YouCanSubmitFile=يمكنك تحميل ملف .zip الخاص بحزمة الوحدة من هنا: CurrentVersion=Dolibarr النسخة الحالية -CallUpdatePage=Browse to the page that updates the database structure and data: %s. -LastStableVersion=Latest stable version -LastActivationDate=Latest activation date -LastActivationAuthor=Latest activation author -LastActivationIP=Latest activation IP -LastActivationVersion=Latest activation version +CallUpdatePage=استعرض للوصول إلى الصفحة التي تقوم بتحديث بنية قاعدة البيانات والبيانات: %s. +LastStableVersion=أحدث نسخة مستقرة +LastActivationDate=آخر تاريخ تفعيل +LastActivationAuthor=أحدث مؤلف التنشيط +LastActivationIP=أحدث IP تفعيل +LastActivationVersion=أحدث نسخة تفعيل UpdateServerOffline=خادم التحديث متواجد حاليا -WithCounter=Manage a counter -GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags can be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as the previous one but an offset corresponding to the number to the right of the + sign is applied starting on the first %s.
{000000@x} same as the previous one but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then the sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
-GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated to the customer. This counter dedicated to customer is reset at same time as the global counter.
{tttt} The code of third party type on n characters (see menu Home - Setup - Dictionary - Types of third parties). If you add this tag, the counter will be different for each type of third party.
+WithCounter=إدارة العداد +GenericMaskCodes=يمكنك إدخال أي قناع ترقيم. في هذا القناع ، يمكن استخدام العلامات التالية:
{000000} يتوافق مع رقم سيتم زيادته في كل %s. أدخل أكبر عدد من الأصفار مثل الطول المطلوب للعداد. سيتم إكمال العداد بالأصفار من اليسار للحصول على أكبر عدد من الأصفار مثل القناع.
{000000 + 000} مثل الرقم السابق ولكن يتم تطبيق الإزاحة المقابلة للرقم الموجود على يمين علامة + بدءًا من أول %s.
{000000 @ x} مثل السابق ولكن تتم إعادة تعيين العداد إلى الصفر عند الوصول إلى الشهر x (x بين 1 و 12 ، أو 0 لاستخدام الأشهر الأولى من السنة المالية المحددة في التكوين الخاص بك ، أو 99 إلى إعادة تعيين إلى الصفر كل شهر). إذا تم استخدام هذا الخيار وكانت قيمة x 2 أو أعلى ، فسيكون التسلسل {yy} {mm} أو {yyyy} {mm} مطلوبًا أيضًا.
{dd} يوم (من 01 إلى 31).
{mm} شهر (من 01 إلى 12).
{yy} ، {yyyy} أو {y7 a039.
+GenericMaskCodes2= {cccc} رمز العميل على أحرف n
{cccc000} a09a4b739 هو الرمز المخصص للعميل a09a4b739 متبوعًا برمز العميل a09a4b739. يتم إعادة تعيين هذا العداد المخصص للعميل في نفس الوقت مع العداد العالمي.
{tttt} رمز نوع الطرف الثالث على أحرف n (انظر القائمة الصفحة الرئيسية - الإعداد - القاموس - أنواع الأطراف الثالثة). إذا أضفت هذه العلامة ، فسيكون العداد مختلفًا لكل نوع من أنواع الجهات الخارجية.
GenericMaskCodes3=جميع الشخصيات الاخرى في قناع سوف تظل سليمة.
المساحات غير مسموح بها.
-GenericMaskCodes3EAN=All other characters in the mask will remain intact (except * or ? in 13th position in EAN13).
Spaces are not allowed.
In EAN13, the last character after the last } in 13th position should be * or ? . It will be replaced by the calculated key.
-GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany, with date 2007-01-31:
+GenericMaskCodes3EAN=ستبقى جميع الأحرف الأخرى في القناع سليمة (باستثناء * أو؟ في المركز الثالث عشر في EAN13).
غير مسموح بالمسافات.
في EAN13 ، يجب أن يكون الحرف الأخير بعد الأخير} في الموضع الثالث عشر * أو؟ . سيتم استبداله بالمفتاح المحسوب.
+GenericMaskCodes4a= مثال على رقم 99 %s للطرف الثالث TheCompany ، بتاريخ 2007-01-31:
GenericMaskCodes4b=ومثال على طرف ثالث على إنشاء 2007-03-01 :
GenericMaskCodes4c=Example on product created on 2007-03-01:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} will give IN0701-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' +GenericMaskCodes5= ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
في {yy} {mm} - {0000} - {t} ستعطي IN0701-0099-A إذا كان نوع الشركة هو "Responsable Inscripto" A0 GenericNumRefModelDesc=العودة للتخصيص وفقا لعدد محدد القناع. ServerAvailableOnIPOrPort=الخدمة متاحة في معالجة ٪ ق %s على الميناء ServerNotAvailableOnIPOrPort=الخدمة غير متاحة في التصدي ٪ ق %s على الميناء @@ -376,29 +376,29 @@ ErrorCantUseRazIfNoYearInMask=خطأ، لا يمكن استخدام الخيار ErrorCantUseRazInStartedYearIfNoYearMonthInMask=خطأ ، لا يمكن للمستخدم الخيار في حال تسلسل @ (ذ ذ م م)) ((سنة أو ملم)) (لا تخفي. UMask=معلمة جديدة UMask صورة يونيكس / لينكس / بي إس دي نظام الملفات. UMaskExplanation=تسمح لك هذه المعلمة لتحديد الاذونات التي حددها تقصير من الملفات التي أنشأتها Dolibarr على الخادم (خلال تحميلها على سبيل المثال).
يجب أن يكون ثمانية القيمة (على سبيل المثال ، 0666 وسائل القراءة والكتابة للجميع).
م شمال شرق paramètre سرت sous الامم المتحدة لتقييم الأداء ويندوز serveur. -SeeWikiForAllTeam=Take a look at the Wiki page for a list of contributors and their organization +SeeWikiForAllTeam=قم بإلقاء نظرة على صفحة Wiki للحصول على قائمة بالمساهمين ومنظمتهم UseACacheDelay= التخزين المؤقت للتأخير في الرد على الصادرات ثانية (0 فارغة أو لا مخبأ) -DisableLinkToHelpCenter=Hide the link "Need help or support" on the login page -DisableLinkToHelp=Hide the link to the online help "%s" -AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed. -ConfirmPurge=Are you sure you want to execute this purge?
This will permanently delete all your data files with no way to restore them (ECM files, attached files...). +DisableLinkToHelpCenter=إخفاء الارتباط " بحاجة إلى مساعدة أو دعم " في صفحة تسجيل الدخول +DisableLinkToHelp=إخفاء الارتباط الخاص بالمساعدة عبر الإنترنت " %s " +AddCRIfTooLong=لا يوجد التفاف تلقائي للنص ، ولن يتم عرض النص الطويل جدًا في المستندات. الرجاء إضافة أحرف إرجاع في منطقة النص إذا لزم الأمر. +ConfirmPurge=هل أنت متأكد أنك تريد تنفيذ هذا التطهير؟
سيؤدي هذا إلى حذف جميع ملفات البيانات بشكل دائم دون أي وسيلة لاستعادتها (ملفات ECM ، الملفات المرفقة ...). MinLength=الحد الأدني لمدة LanguageFilesCachedIntoShmopSharedMemory=لانغ لتحميل الملفات. في الذاكرة المشتركة -LanguageFile=Language file -ExamplesWithCurrentSetup=Examples with current configuration +LanguageFile=ملف اللغة +ExamplesWithCurrentSetup=أمثلة مع التكوين الحالي ListOfDirectories=قائمة الدلائل المفتوحة قوالب ListOfDirectoriesForModelGenODT=قائمة الدلائل التي تحتوي على قوالب ملفات مع شكل المفتوحة.

ضع هنا المسار الكامل من الدلائل.
إضافة إرجاع بين الدليل ايه.
لإضافة دليل وحدة GED، أضيف هنا DOL_DATA_ROOT / ECM / yourdirectoryname.

الملفات في هذه الدلائل يجب أن ينتهي .odt أو .ods. -NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories -ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir +NumberOfModelFilesFound=عدد ملفات قوالب ODT / ODS الموجودة في هذه الدلائل +ExampleOfDirectoriesForModelGen=أمثلة على بناء الجملة:
c: \\ myapp \\ mydocumentdir \\ mysubdir
/ home / myapp / mydocumentdir / mysubdir
DOL_DATA_ROOT / ecm / ecmdir FollowingSubstitutionKeysCanBeUsed=
لمعرفة كيفية إنشاء قوالب المستند ODT، قبل تخزينها في تلك الدلائل، وقراءة وثائق ويكي: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template FirstnameNamePosition=موقف الإسم / اسم DescWeather=الصور التالية سيتم عرضها على لوحة المعلومات عندما يصل عدد الاجرائات المتأخرة للقيم التالية: KeyForWebServicesAccess=مفتاح لاستخدام خدمات الشبكة العالمية (المعلمة "dolibarrkey" في webservices) TestSubmitForm=اختبار شكل مساهمة -ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever the user choice. Also this menu manager specialized for smartphones does not work on all smartphone. Use another menu manager if you experience problems with yours. +ThisForceAlsoTheme=سيؤدي استخدام مدير القائمة هذا أيضًا إلى استخدام السمة الخاصة به مهما كان اختيار المستخدم. كما أن مدير القائمة المخصص للهواتف الذكية لا يعمل على جميع الهواتف الذكية. استخدم مدير قائمة آخر إذا واجهت مشاكل مع مديرك. ThemeDir=جلود دليل -ConnectionTimeout=Connection timeout +ConnectionTimeout=انتهى وقت محاولة الاتصال ResponseTimeout=استجابة مهلة SmsTestMessage=رسالة اختبار من __PHONEFROM__ إلى __PHONETO__ ModuleMustBeEnabledFirst=يجب تمكين وحدة%s أولا إذا كنت تحتاج هذه الميزة. @@ -406,301 +406,301 @@ SecurityToken=المفتاح لعناوين المواقع الآمنة NoSmsEngine=لايوجد مدير إرسال الرسائل النصية القصيرة . مدير إرسال الرسائل النصية القصيرة غير مثبت بصورة اولية لانه يعتمد على مورد خارجي ، لكن يمكنك ايجاد واحد هنا %s PDF=صيغة المستندات المتنقلة PDFDesc=الخيارات العامة لتوليد ملفات صيغة المستندات المتنقلة -PDFOtherDesc=PDF Option specific to some modules -PDFAddressForging=Rules for address section -HideAnyVATInformationOnPDF=Hide all information related to Sales Tax / VAT -PDFRulesForSalesTax=Rules for Sales Tax / VAT -PDFLocaltax=Rules for %s -HideLocalTaxOnPDF=Hide %s rate in column Sale Tax / VAT -HideDescOnPDF=Hide products description -HideRefOnPDF=Hide products ref. -HideDetailsOnPDF=Hide product lines details -PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position +PDFOtherDesc=خيار PDF خاص ببعض الوحدات +PDFAddressForging=قواعد قسم العنوان +HideAnyVATInformationOnPDF=إخفاء جميع المعلومات المتعلقة بضريبة المبيعات / ضريبة القيمة المضافة +PDFRulesForSalesTax=قواعد ضريبة المبيعات / ضريبة القيمة المضافة +PDFLocaltax=قواعد %s +HideLocalTaxOnPDF=إخفاء معدل %s في العمود ضريبة البيع / ضريبة القيمة المضافة +HideDescOnPDF=إخفاء وصف المنتجات +HideRefOnPDF=إخفاء المنتجات المرجع. +HideDetailsOnPDF=إخفاء تفاصيل خطوط الإنتاج +PlaceCustomerAddressToIsoLocation=استخدم الوضع القياسي الفرنسي (La Poste) لموقف عنوان العميل Library=المكتبة UrlGenerationParameters=المعلمات لتأمين عناوين المواقع SecurityTokenIsUnique=استخدام معلمة securekey فريدة لكل URL EnterRefToBuildUrl=أدخل مرجع لكائن %s GetSecuredUrl=الحصول على عنوان محسوب -ButtonHideUnauthorized=Hide unauthorized action buttons also for internal users (just greyed otherwise) +ButtonHideUnauthorized=إخفاء أزرار الإجراءات غير المصرح بها أيضًا للمستخدمين الداخليين (فقط باللون الرمادي بخلاف ذلك) OldVATRates=معدل ضريبة القيمة المضافة القديم NewVATRates=معدل ضريبة القيمة المضافة الجديد PriceBaseTypeToChange=تعديل على الأسعار مع القيمة المرجعية قاعدة المعرفة على -MassConvert=Launch bulk conversion -PriceFormatInCurrentLanguage=Price Format In Current Language +MassConvert=إطلاق التحويل بالجملة +PriceFormatInCurrentLanguage=تنسيق السعر في اللغة الحالية String=سلسلة -String1Line=String (1 line) +String1Line=سلسلة (سطر واحد) TextLong=نص طويل -TextLongNLines=Long text (n lines) -HtmlText=Html text +TextLongNLines=نص طويل (سطور) +HtmlText=نص Html Int=عدد صحيح Float=Float DateAndTime=Date and hour Unique=Unique -Boolean=Boolean (one checkbox) +Boolean=منطقي (مربع اختيار واحد) ExtrafieldPhone = هاتف ExtrafieldPrice = الأسعار ExtrafieldMail = Email -ExtrafieldUrl = Url +ExtrafieldUrl = عنوان Url ExtrafieldSelect = Select list ExtrafieldSelectList = Select from table -ExtrafieldSeparator=Separator (not a field) +ExtrafieldSeparator=فاصل (ليس حقلاً) ExtrafieldPassword=الرمز السري -ExtrafieldRadio=Radio buttons (one choice only) -ExtrafieldCheckBox=Checkboxes -ExtrafieldCheckBoxFromList=Checkboxes from table +ExtrafieldRadio=أزرار اختيار (خيار واحد فقط) +ExtrafieldCheckBox=مربعات الاختيار +ExtrafieldCheckBoxFromList=مربعات الاختيار من الجدول ExtrafieldLink=رابط إلى كائن -ComputedFormula=Computed field -ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: $db, $conf, $langs, $mysoc, $user, $object.
WARNING: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.
Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.

Example of formula:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Other example of formula to force load of object and its parent object:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' -Computedpersistent=Store computed field -ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! -ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).
Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) -ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
code3,value3
...

In order to have the list depending on another complementary attribute list:
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

In order to have the list depending on another list:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarly a primary int key
- filtersql is a SQL condition. It can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter which is the current id of current object
To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter -ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath -ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) +ComputedFormula=المجال المحسوب +ComputedFormulaDesc=يمكنك هنا إدخال صيغة باستخدام خصائص أخرى للكائن أو أي ترميز PHP للحصول على قيمة محسوبة ديناميكية. يمكنك استخدام أي صيغ متوافقة مع PHP بما في ذلك "؟" عامل الشرط ، والعنصر العام التالي: $ db ، $ conf ، $ langs ، $ mysoc ، $ user ، $ object .
تحذير : قد تتوفر بعض خصائص $ object فقط. إذا كنت بحاجة إلى خصائص غير محملة ، فما عليك سوى إحضار الكائن إلى الصيغة الخاصة بك كما في المثال الثاني.
يعني استخدام حقل محسوب أنه لا يمكنك إدخال أي قيمة لنفسك من الواجهة. أيضًا ، إذا كان هناك خطأ في بناء الجملة ، فقد لا ترجع الصيغة شيئًا.

مثال على الصيغة:
$ object-> id < 10 ? round($object-> id / 2، 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc- 2> zip، 1 )

مثال لإعادة تحميل الكائن
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id؟ $ obj-> id؟ > rowid: $ object-> id))> 0))؟ $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

مثال آخر للصيغة لفرض تحميل الكائن وكائنه الأصلي:
(($ reloadedobj = $ dbj = )) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = مشروع جديد ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0))؟ $ secondloadedobj-> ref: "المشروع الرئيسي غير موجود" +Computedpersistent=تخزين المجال المحسوب +ComputedpersistentDesc=سيتم تخزين الحقول الإضافية المحسوبة في قاعدة البيانات ، ومع ذلك ، سيتم إعادة حساب القيمة فقط عند تغيير كائن هذا الحقل. إذا كان الحقل المحسوب يعتمد على كائنات أخرى أو بيانات عالمية ، فقد تكون هذه القيمة خاطئة !! +ExtrafieldParamHelpPassword=يعني ترك هذا الحقل فارغًا أنه سيتم تخزين هذه القيمة بدون تشفير (يجب إخفاء الحقل فقط بنجمة على الشاشة).
اضبط "تلقائي" لاستخدام قاعدة التشفير الافتراضية لحفظ كلمة المرور في قاعدة البيانات (عندئذٍ ستكون القيمة المقروءة هي التجزئة فقط ، ولا توجد طريقة لاسترداد القيمة الأصلية) +ExtrafieldParamHelpselect=يجب أن تكون قائمة القيم أسطرًا بها مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح "0")

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda019b code3f list depending on another complementary attribute list:
1,value1|options_ parent_list_code :parent_key
2,value2|options_ parent_list_code :parent_key

In order to have the list depending on another list:
1,value1| parent_list_code : parent_key
2 ، value2 | parent_list_code : parent_key +ExtrafieldParamHelpcheckbox=يجب أن تكون قائمة القيم أسطرًا تحتوي على مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح "0")

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda19b342 ... +ExtrafieldParamHelpradio=يجب أن تكون قائمة القيم أسطرًا تحتوي على مفتاح تنسيق ، القيمة (حيث لا يمكن أن يكون المفتاح '0')

على سبيل المثال:
1 ، value1
2 ، value2 a0342fccfda19bda19b342 ... +ExtrafieldParamHelpsellist=قائمة القيم تأتي من جدول
التركيب: table_name: label_field: id_field :: Filtersql
مثال: c_typent: libelle: id :: Filtersql

-
19 يمكن أن يكون اختبارًا بسيطًا (على سبيل المثال active = 1) لعرض القيمة النشطة فقط
يمكنك أيضًا استخدام مرشح $ ID $ in وهو المعرف الحالي للكائن الحالي
لاستخدام SELECT في الفلتر ، استخدم الكلمة الأساسية $ SEL $ to تجاوز الحماية المضادة للحقن.
إذا كنت تريد التصفية على الحقول الإضافية ، استخدم بناء الجملة extra.fieldcode = ... (حيث يكون رمز الحقل هو رمز الحقل الإضافي)

من أجل الحصول على القائمة اعتمادًا على قائمة السمات التكميلية الأخرى: parent_list_code | parent_column: filter

من أجل الحصول على القائمة اعتمادًا على قائمة أخرى: a0342fccfda1958bz0 c_typent: libelle: a08 +ExtrafieldParamHelpchkbxlst=قائمة القيم تأتي من جدول
التركيب: table_name: label_field: id_field :: Filtersql
مثال: c_typent: libelle: id :: Filtersql

filter يمكن أن يكون عامل التصفية النشط a034b
فقط يمكن أيضًا استخدام $ ID $ in filter witch هو المعرف الحالي للكائن الحالي
للقيام بتحديد في عامل التصفية ، استخدم $ SEL $
إذا كنت تريد التصفية على الحقول الإضافية ، استخدم بناء الجملة extra.fieldcode = ... (حيث يكون رمز الحقل هو code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_ parent_list_code |parent_column:filter

In order to have the list depending on another list:
c_typent: libelle: id: parent_list_code | parent_column: مرشح +ExtrafieldParamHelplink=يجب أن تكون المعلمات ObjectName: Classpath
البنية: اسم الكائن: Classpath +ExtrafieldParamHelpSeparator=احتفظ به فارغًا لفاصل بسيط
اضبط هذا على 1 لفاصل مطوي (يفتح افتراضيًا للجلسة الجديدة ، ثم يتم الاحتفاظ بالحالة لكل جلسة مستخدم)
اضبط هذا على 2 لفاصل مطوي (مطوي افتراضيًا لجلسة جديدة ، ثم يتم الاحتفاظ بالحالة قبل كل جلسة مستخدم) LibraryToBuildPDF=المكتبة المستخدمة لتوليد ملفات صيغة المستندات المتنقلة -LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:
1: local tax apply on products and services without vat (localtax is calculated on amount without tax)
2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3: local tax apply on products without vat (localtax is calculated on amount without tax)
4: local tax apply on products including vat (localtax is calculated on amount + main vat)
5: local tax apply on services without vat (localtax is calculated on amount without tax)
6: local tax apply on services including vat (localtax is calculated on amount + tax) +LocalTaxDesc=قد تفرض بعض البلدان ضريبتين أو ثلاث ضرائب على كل سطر فاتورة. إذا كانت هذه هي الحالة ، فاختر نوع الضريبة الثانية والثالثة ومعدلها. النوع المحتمل هو:
1: يتم تطبيق الضريبة المحلية على المنتجات والخدمات بدون ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ بدون ضريبة)
2: تطبق الضريبة المحلية على المنتجات والخدمات بما في ذلك ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ + الضريبة الرئيسية)
3: يتم تطبيق الضريبة المحلية على المنتجات بدون ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ بدون ضريبة)
4: يتم تطبيق الضريبة المحلية على المنتجات بما في ذلك ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ + ضريبة القيمة المضافة الرئيسية)
5: يتم تطبيق الضريبة المحلية على الخدمات بدون ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ بدون ضريبة)
6: يتم تطبيق الضريبة المحلية على الخدمات بما في ذلك ضريبة القيمة المضافة (يتم احتساب الضريبة المحلية على المبلغ + الضريبة) SMS=الرسائل النصية القصيرة LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s RefreshPhoneLink=Refresh link LinkToTest=Clickable link generated for user %s (click phone number to test) KeepEmptyToUseDefault=Keep empty to use default value -KeepThisEmptyInMostCases=In most cases, you can keep this field empy. +KeepThisEmptyInMostCases=في معظم الحالات ، يمكنك الاحتفاظ بهذا المجال. DefaultLink=Default link -SetAsDefault=Set as default +SetAsDefault=تعيين كافتراضي ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) -ExternalModule=External module -InstalledInto=Installed into directory %s -BarcodeInitForThirdparties=Mass barcode init for third-parties +ExternalModule=الوحدة الخارجية +InstalledInto=مثبت في الدليل %s +BarcodeInitForThirdparties=تهيئة الباركود الجماعي للأطراف الثالثة BarcodeInitForProductsOrServices=الحرف الأول الباركود الشامل أو إعادة للمنتجات أو الخدمات -CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. +CurrentlyNWithoutBarCode=حاليًا ، لديك سجل %s على %s %s بدون barcodef49fz0 InitEmptyBarCode=قيمة الحرف الأول للسجلات فارغة الصورة٪ المقبلة EraseAllCurrentBarCode=محو كل القيم الباركود الحالية -ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values? +ConfirmEraseAllCurrentBarCode=هل أنت متأكد أنك تريد مسح كافة قيم الباركود الحالية؟ AllBarcodeReset=وقد أزيلت كل القيم الباركود -NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the Barcode module setup. -EnableFileCache=Enable file cache -ShowDetailsInPDFPageFoot=Add more details into footer, such as company address or manager names (in addition to professional ids, company capital and VAT number). -NoDetails=No additional details in footer -DisplayCompanyInfo=Display company address -DisplayCompanyManagers=Display manager names -DisplayCompanyInfoAndManagers=Display company address and manager names -EnableAndSetupModuleCron=If you want to have this recurring invoice generated automatically, module *%s* must be enabled and correctly setup. Otherwise, generation of invoices must be done manually from this template using the *Create* button. Note that even if you enabled automatic generation, you can still safely launch manual generation. Generation of duplicates for the same period is not possible. -ModuleCompanyCodeCustomerAquarium=%s followed by customer code for a customer accounting code -ModuleCompanyCodeSupplierAquarium=%s followed by vendor code for a vendor accounting code -ModuleCompanyCodePanicum=Return an empty accounting code. -ModuleCompanyCodeDigitaria=Returns a compound accounting code according to the name of the third party. The code consists of a prefix that can be defined in the first position followed by the number of characters defined in the third party code. -ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by the number of characters: %s for the customer accounting code. -ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code. -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).
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... -WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. It is often better to setup outgoing emails to use the email server of your Email Service Provider instead of the default setup for several reasons: -WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM -WarningPHPMailB=- Some Email Service Providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted for delivery (be careful also of your email provider's sending quota). -WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. -WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. -WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. -WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s -ClickToShowDescription=Click to show description -DependsOn=This module needs the module(s) -RequiredBy=This module is required by module(s) -TheKeyIsTheNameOfHtmlField=This is the name of the HTML field. Technical knowledge is required to read the content of the HTML page to get the key name of a field. -PageUrlForDefaultValues=You must enter the relative path of the page URL. If you include parameters in URL, the default values will be effective if all parameters are set to same value. -PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third party, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
If you want default value only if url has some parameter, you can use %s -PageUrlForDefaultValuesList=
Example:
For the page that lists third parties, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/" so use a path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
If you want default value only if url has some parameter, you can use %s -AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) -EnableDefaultValues=Enable customization of default values -EnableOverwriteTranslation=Enable usage of overwritten translation -GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. -WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. +NoBarcodeNumberingTemplateDefined=لم يتم تمكين قالب الباركود للترقيم في إعداد وحدة الباركود. +EnableFileCache=تفعيل ذاكرة التخزين المؤقت للملف +ShowDetailsInPDFPageFoot=أضف المزيد من التفاصيل في التذييل ، مثل عنوان الشركة أو أسماء المديرين (بالإضافة إلى المعرفات المهنية ورأس مال الشركة ورقم ضريبة القيمة المضافة). +NoDetails=لا توجد تفاصيل إضافية في التذييل +DisplayCompanyInfo=عرض عنوان الشركة +DisplayCompanyManagers=عرض أسماء المديرين +DisplayCompanyInfoAndManagers=عرض عنوان الشركة وأسماء المديرين +EnableAndSetupModuleCron=إذا كنت تريد إنشاء هذه الفاتورة المتكررة تلقائيًا ، فيجب تمكين الوحدة النمطية * %s * وإعدادها بشكل صحيح. بخلاف ذلك ، يجب أن يتم إنشاء الفواتير يدويًا من هذا النموذج باستخدام الزر * إنشاء *. لاحظ أنه حتى إذا قمت بتمكين الإنشاء التلقائي ، فلا يزال بإمكانك تشغيل الإنشاء اليدوي بأمان. لا يمكن إنشاء نسخ مكررة لنفس الفترة. +ModuleCompanyCodeCustomerAquarium=%s متبوعًا بكود العميل لكود محاسبة العميل +ModuleCompanyCodeSupplierAquarium=%s متبوعًا بكود البائع لكود محاسبة البائع +ModuleCompanyCodePanicum=قم بإرجاع رمز محاسبة فارغ. +ModuleCompanyCodeDigitaria=إرجاع رمز محاسبة مركب وفقًا لاسم الطرف الثالث. يتكون الرمز من بادئة يمكن تحديدها في الموضع الأول متبوعًا بعدد الأحرف المحددة في رمز الجهة الخارجية. +ModuleCompanyCodeCustomerDigitaria=%s متبوعًا باسم العميل المقطوع بعدد الأحرف: %s لكود محاسبة العميل. +ModuleCompanyCodeSupplierDigitaria=%s متبوعًا باسم المورد المقطوع بعدد الأحرف: %s لكود محاسبة المورد. +Use3StepsApproval=بشكل افتراضي ، يجب إنشاء أوامر الشراء والموافقة عليها من قبل مستخدمين مختلفين (خطوة واحدة / مستخدم للإنشاء وخطوة واحدة / مستخدم للموافقة. لاحظ أنه إذا كان لدى المستخدم إذن للإنشاء والموافقة ، فستكون خطوة واحدة / مستخدم كافية) . يمكنك أن تطلب من خلال هذا الخيار تقديم خطوة ثالثة / موافقة مستخدم ، إذا كان المبلغ أعلى من قيمة مخصصة (لذلك ستكون 3 خطوات ضرورية: 1 = التحقق من الصحة ، 2 = الموافقة الأولى و 3 = الموافقة الثانية إذا كان المبلغ كافياً).
اضبط هذا على فارغ إذا كانت موافقة واحدة (خطوتان) كافية ، اضبطه على قيمة منخفضة جدًا (0.1) إذا كانت الموافقة الثانية (3 خطوات) مطلوبة دائمًا. +UseDoubleApproval=استخدم موافقة من 3 خطوات عندما يكون المبلغ (بدون ضريبة) أعلى من ... +WarningPHPMail=تحذير: يستخدم الإعداد لإرسال رسائل البريد الإلكتروني من التطبيق الإعداد العام الافتراضي. غالبًا ما يكون من الأفضل إعداد رسائل البريد الإلكتروني الصادرة لاستخدام خادم البريد الإلكتروني لموفر خدمة البريد الإلكتروني بدلاً من الإعداد الافتراضي لعدة أسباب: +WarningPHPMailA=- يزيد استخدام خادم مزود خدمة البريد الإلكتروني من مصداقية بريدك الإلكتروني ، لذا فهو يزيد من إمكانية التسليم دون أن يتم وضع علامة عليه كرسائل اقتحامية +WarningPHPMailB=- لا يسمح لك بعض مزودي خدمة البريد الإلكتروني (مثل Yahoo) بإرسال بريد إلكتروني من خادم آخر غير الخادم الخاص بهم. يستخدم الإعداد الحالي الخاص بك خادم التطبيق لإرسال بريد إلكتروني وليس خادم مزود البريد الإلكتروني الخاص بك ، لذلك سيطلب بعض المستلمين (المتوافق مع بروتوكول DMARC المقيد) ، مزود البريد الإلكتروني الخاص بك ما إذا كان بإمكانهم قبول بريدك الإلكتروني وبعض موفري البريد الإلكتروني (مثل Yahoo) قد تستجيب بـ "لا" لأن الخادم ليس خادمهم ، لذلك قد لا يتم قبول عدد قليل من رسائل البريد الإلكتروني المرسلة للتسليم (كن حذرًا أيضًا من حصة الإرسال لمزود البريد الإلكتروني الخاص بك). +WarningPHPMailC=- يعد استخدام خادم SMTP الخاص بموفر خدمة البريد الإلكتروني الخاص بك لإرسال رسائل البريد الإلكتروني أمرًا مثيرًا للاهتمام أيضًا ، لذا سيتم أيضًا حفظ جميع رسائل البريد الإلكتروني المرسلة من التطبيق في دليل "البريد المرسل" الخاص بصندوق البريد الخاص بك. +WarningPHPMailD=كذلك ، يوصى بتغيير طريقة إرسال رسائل البريد الإلكتروني إلى القيمة "SMTP". إذا كنت تريد حقًا الاحتفاظ بالطريقة الافتراضية "PHP" لإرسال رسائل البريد الإلكتروني ، فما عليك سوى تجاهل هذا التحذير أو إزالته عن طريق ضبط MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ثابتًا على 1 في Home - Setup - Other. +WarningPHPMail2=إذا كان موفر البريد الإلكتروني SMTP بحاجة إلى تقييد عميل البريد الإلكتروني لبعض عناوين IP (نادر جدًا) ، فهذا هو عنوان IP الخاص بوكيل مستخدم البريد (MUA) لتطبيق ERP CRM الخاص بك: %s . +WarningPHPMailSPF=إذا كان اسم المجال في عنوان البريد الإلكتروني الخاص بالمرسل محميًا بسجل SPF (اسأل مسجل اسم المجال الخاص بك) ، يجب عليك إضافة عناوين IP التالية في سجل SPF الخاص بـ DNS لمجالك: %s . +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s +ClickToShowDescription=انقر لإظهار الوصف +DependsOn=تحتاج هذه الوحدة إلى الوحدة (الوحدات) +RequiredBy=هذه الوحدة مطلوبة من قبل الوحدة (الوحدات) +TheKeyIsTheNameOfHtmlField=هذا هو اسم حقل HTML. المعرفة التقنية مطلوبة لقراءة محتوى صفحة HTML للحصول على اسم المفتاح للحقل. +PageUrlForDefaultValues=يجب عليك إدخال المسار النسبي لعنوان URL للصفحة. إذا قمت بتضمين معلمات في عنوان URL ، فستكون القيم الافتراضية فعالة إذا تم تعيين جميع المعلمات على نفس القيمة. +PageUrlForDefaultValuesCreate=
مثال:
لكي يقوم النموذج بإنشاء طرف ثالث جديد ، يكون %s .
بالنسبة لعنوان URL للوحدات الخارجية المثبتة في الدليل المخصص ، لا تقم بتضمين "custom /" ، لذا استخدم المسار مثل mymodule / mypage.php وليس custom / mymodule / mypage.php.
إذا كنت تريد القيمة الافتراضية فقط إذا كان عنوان url يحتوي على بعض المعلمات ، فيمكنك استخدام %s +PageUrlForDefaultValuesList=
مثال:
بالنسبة للصفحة التي تسرد جهات خارجية ، فهي %s .
بالنسبة لعنوان URL للوحدات الخارجية المثبتة في الدليل المخصص ، لا تقم بتضمين "custom /" لذا استخدم مسارًا مثل mymodule / mypagelist.php وليس custom / mymodule / mypagelist.php.
إذا كنت تريد القيمة الافتراضية فقط إذا كان عنوان url يحتوي على بعض المعلمات ، فيمكنك استخدام %s +AlsoDefaultValuesAreEffectiveForActionCreate=لاحظ أيضًا أن الكتابة فوق القيم الافتراضية لإنشاء النموذج تعمل فقط للصفحات التي تم تصميمها بشكل صحيح (لذلك مع إجراء المعلمة = إنشاء أو تقديم ...) +EnableDefaultValues=تفعيل تخصيص القيم الافتراضية +EnableOverwriteTranslation=تفعيل استخدام الترجمة المكتوبة +GoIntoTranslationMenuToChangeThis=تم العثور على ترجمة للمفتاح بهذا الرمز. لتغيير هذه القيمة ، يجب عليك تحريرها من Home-Setup-translation. +WarningSettingSortOrder=تحذير ، قد يؤدي تعيين ترتيب فرز افتراضي إلى حدوث خطأ تقني عند الانتقال إلى صفحة القائمة إذا كان الحقل حقلاً غير معروف. إذا واجهت مثل هذا الخطأ ، فارجع إلى هذه الصفحة لإزالة ترتيب الفرز الافتراضي واستعادة السلوك الافتراضي. Field=حقل -ProductDocumentTemplates=Document templates to generate product document -FreeLegalTextOnExpenseReports=Free legal text on expense reports -WatermarkOnDraftExpenseReports=Watermark on draft expense reports -ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report -PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes -AttachMainDocByDefault=Set this to 1 if you want to attach main document to email by default (if applicable) -FilesAttachedToEmail=Attach file -SendEmailsReminders=Send agenda reminders by emails -davDescription=Setup a WebDAV server -DAVSetup=Setup of module DAV -DAV_ALLOW_PRIVATE_DIR=Enable the generic private directory (WebDAV dedicated directory named "private" - login required) -DAV_ALLOW_PRIVATE_DIRTooltip=The generic private directory is a WebDAV directory anybody can access with its application login/pass. -DAV_ALLOW_PUBLIC_DIR=Enable the generic public directory (WebDAV dedicated directory named "public" - no login required) -DAV_ALLOW_PUBLIC_DIRTooltip=The generic public directory is a WebDAV directory anybody can access (in read and write mode), with no authorization required (login/password account). -DAV_ALLOW_ECM_DIR=Enable the DMS/ECM private directory (root directory of the DMS/ECM module - login required) -DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploaded when using the DMS/ECM module. Similarly as access from the web interface, you will need a valid login/password with adecuate permissions to access it. +ProductDocumentTemplates=قوالب المستندات لإنشاء مستند المنتج +FreeLegalTextOnExpenseReports=نص قانوني مجاني على تقارير النفقات +WatermarkOnDraftExpenseReports=علامة مائية على مسودة تقارير المصروفات +ProjectIsRequiredOnExpenseReports=المشروع إلزامي لإدخال تقرير المصاريف +PrefillExpenseReportDatesWithCurrentMonth=قم بملء تاريخي البدء والانتهاء لتقرير المصاريف الجديد مسبقًا بتواريخ البدء والانتهاء للشهر الحالي +ForceExpenseReportsLineAmountsIncludingTaxesOnly=فرض إدخال مبالغ تقرير المصاريف دائمًا مع الضرائب +AttachMainDocByDefault=اضبط هذا على 1 إذا كنت تريد إرفاق المستند الأساسي بالبريد الإلكتروني افتراضيًا (إن أمكن) +FilesAttachedToEmail=أرفق ملف +SendEmailsReminders=إرسال تذكير جدول الأعمال عن طريق رسائل البريد الإلكتروني +davDescription=قم بإعداد خادم WebDAV +DAVSetup=إعداد وحدة DAV +DAV_ALLOW_PRIVATE_DIR=تمكين الدليل العام الخاص (دليل WebDAV المخصص المسمى "خاص" - يلزم تسجيل الدخول) +DAV_ALLOW_PRIVATE_DIRTooltip=الدليل الخاص العام هو دليل WebDAV يمكن لأي شخص الوصول إليه من خلال تسجيل الدخول / المرور للتطبيق الخاص به. +DAV_ALLOW_PUBLIC_DIR=تمكين الدليل العام العام (يسمى دليل WebDAV المخصص باسم "عام" - لا يلزم تسجيل الدخول) +DAV_ALLOW_PUBLIC_DIRTooltip=الدليل العام العام هو دليل WebDAV يمكن لأي شخص الوصول إليه (في وضع القراءة والكتابة) ، بدون إذن مطلوب (حساب تسجيل الدخول / كلمة المرور). +DAV_ALLOW_ECM_DIR=تمكين الدليل الخاص DMS / ECM (الدليل الجذر لوحدة DMS / ECM - يلزم تسجيل الدخول) +DAV_ALLOW_ECM_DIRTooltip=الدليل الجذر حيث يتم تحميل جميع الملفات يدويًا عند استخدام وحدة DMS / ECM. مثل الوصول من واجهة الويب ، ستحتاج إلى تسجيل دخول / كلمة مرور صالحة مع أذونات مخصصة للوصول إليها. # Modules Module0Name=مجموعات المستخدمين -Module0Desc=Users / Employees and Groups management -Module1Name=Third Parties -Module1Desc=Companies and contacts management (customers, prospects...) +Module0Desc=المستخدمون / الموظفون وإدارة المجموعات +Module1Name=الأطراف الثالثة +Module1Desc=إدارة الشركات وجهات الاتصال (العملاء ، الآفاق ...) Module2Name=التجارية Module2Desc=الإدارة التجارية -Module10Name=Accounting (simplified) -Module10Desc=Simple accounting reports (journals, turnover) based on database content. Does not use any ledger table. +Module10Name=محاسبة (مبسطة) +Module10Desc=تقارير محاسبية بسيطة (مجلات ، معدل دوران) بناءً على محتوى قاعدة البيانات. لا يستخدم أي جدول دفتر الأستاذ. Module20Name=مقترحات Module20Desc=مقترحات تجارية إدارة -Module22Name=Mass Emailings -Module22Desc=Manage bulk emailing +Module22Name=رسائل البريد الإلكتروني الجماعية +Module22Desc=إدارة البريد الإلكتروني الجماعي Module23Name=طاقة Module23Desc=مراقبة استهلاك الطاقة Module25Name=اوامر البيع -Module25Desc=Sales order management +Module25Desc=إدارة أوامر المبيعات Module30Name=فواتير -Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers +Module30Desc=إدارة الفواتير وسندات الائتمان للعملاء. إدارة الفواتير والمذكرات الدائنة للموردين Module40Name=الموردين -Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices) -Module42Name=Debug Logs -Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes. -Module43Name=Debug Bar -Module43Desc=A tool for developper adding a debug bar in your browser. +Module40Desc=إدارة البائعين والمشتريات (أوامر الشراء وفواتير الموردين) +Module42Name=سجلات التصحيح +Module42Desc=تسهيلات التسجيل (ملف ، سجل نظام ، ...). هذه السجلات لأغراض فنية / تصحيح الأخطاء. +Module43Name=شريط التصحيح +Module43Desc=أداة للمطورين تضيف شريط تصحيح الأخطاء في متصفحك. Module49Name=المحررين Module49Desc=المحررين إدارة Module50Name=المنتجات -Module50Desc=Management of Products +Module50Desc=إدارة المنتجات Module51Name=الرسائل الجماعية Module51Desc=الدمار ورقة الرسائل الإدارية Module52Name=الاسهم -Module52Desc=Stock management +Module52Desc=إدارة المخزون Module53Name=الخدمات -Module53Desc=Management of Services +Module53Desc=إدارة الخدمات Module54Name=Contracts/Subscriptions -Module54Desc=Management of contracts (services or recurring subscriptions) +Module54Desc=إدارة العقود (الخدمات أو الاشتراكات المتكررة) Module55Name=Barcodes -Module55Desc=Barcode or QR code management +Module55Desc=إدارة الباركود أو رمز الاستجابة السريعة Module56Name=الدفع عن طريق تحويل من الرصيد -Module56Desc=Management of payment of suppliers by Credit Transfer orders. It includes generation of SEPA file for European countries. -Module57Name=Payments by Direct Debit -Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries. +Module56Desc=إدارة مدفوعات الموردين بأوامر تحويل دائنة. يتضمن إنشاء ملف SEPA للدول الأوروبية. +Module57Name=المدفوعات عن طريق الخصم المباشر +Module57Desc=إدارة أوامر الخصم المباشر. يتضمن إنشاء ملف SEPA للدول الأوروبية. Module58Name=انقر للاتصال Module58Desc=ClickToDial التكامل -Module60Name=Stickers -Module60Desc=Management of stickers +Module60Name=ملصقات +Module60Desc=إدارة الملصقات Module70Name=المداخلات Module70Desc=التدخلات الإدارية Module75Name=ويلاحظ نفقات رحلات Module75Desc=ونفقات الرحلات تلاحظ إدارة Module80Name=الإرسال -Module80Desc=Shipments and delivery note management -Module85Name=Banks & Cash +Module80Desc=إدارة الشحنات وسندات التسليم +Module85Name=البنوك والنقد Module85Desc=إدارة حسابات مصرفية أو نقدا -Module100Name=External Site -Module100Desc=Add a link to an external website as a main menu icon. Website is shown in a frame under the top menu. +Module100Name=موقع خارجي +Module100Desc=أضف ارتباطًا إلى موقع ويب خارجي كرمز قائمة رئيسية. يظهر موقع الويب في إطار أسفل القائمة العلوية. Module105Name=ساعي البريد ورشفة Module105Desc=ساعي البريد أو SPIP واجهة وحدة عضو Module200Name=LDAP -Module200Desc=LDAP directory synchronization +Module200Desc=مزامنة دليل LDAP Module210Name=PostNuke Module210Desc=PostNuke التكامل Module240Name=بيانات الصادرات -Module240Desc=Tool to export Dolibarr data (with assistance) +Module240Desc=أداة لتصدير بيانات Dolibarr (بمساعدة) Module250Name=بيانات الاستيراد -Module250Desc=Tool to import data into Dolibarr (with assistance) +Module250Desc=أداة لاستيراد البيانات إلى Dolibarr (مع المساعدة) Module310Name=أعضاء Module310Desc=أعضاء إدارة المؤسسة Module320Name=تغذية RSS -Module320Desc=Add a RSS feed to Dolibarr pages -Module330Name=Bookmarks & Shortcuts -Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access -Module400Name=Projects or Leads -Module400Desc=Management of projects, leads/opportunities and/or tasks. You can also assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module320Desc=أضف موجز RSS إلى صفحات Dolibarr +Module330Name=الإشارات المرجعية والاختصارات +Module330Desc=قم بإنشاء اختصارات ، يمكن الوصول إليها دائمًا ، للصفحات الداخلية أو الخارجية التي تصل إليها بشكل متكرر +Module400Name=المشاريع أو العملاء المتوقعون +Module400Desc=إدارة المشاريع ، والعملاء المتوقعون / الفرص و / أو المهام. يمكنك أيضًا تعيين أي عنصر (فاتورة ، أمر ، اقتراح ، تدخل ، ...) لمشروع والحصول على عرض مستعرض من عرض المشروع. Module410Name=Webcalendar Module410Desc=التكامل Webcalendar -Module500Name=Taxes & Special Expenses -Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...) +Module500Name=الضرائب والنفقات الخاصة +Module500Desc=إدارة المصاريف الأخرى (ضرائب المبيعات ، الضرائب الاجتماعية أو المالية ، أرباح الأسهم ، ...) Module510Name=الرواتب -Module510Desc=Record and track employee payments +Module510Desc=سجل وتتبع مدفوعات الموظفين Module520Name=القروض Module520Desc=إدارة القروض -Module600Name=Notifications on business event -Module600Desc=Send email notifications triggered by a business event: per user (setup defined on each user), per third-party contacts (setup defined on each third party) or by specific emails -Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders for agenda events, go into the setup of module Agenda. -Module610Name=Product Variants -Module610Desc=Creation of product variants (color, size etc.) +Module600Name=الإخطارات في حدث العمل +Module600Desc=إرسال إشعارات البريد الإلكتروني التي تم تشغيلها بواسطة حدث عمل: لكل مستخدم (الإعداد محدد لكل مستخدم) ، لكل جهات اتصال تابعة لجهة خارجية (الإعداد محدد في كل طرف ثالث) أو بواسطة رسائل بريد إلكتروني محددة +Module600Long=لاحظ أن هذه الوحدة ترسل رسائل بريد إلكتروني في الوقت الفعلي عند حدوث حدث عمل معين. إذا كنت تبحث عن ميزة لإرسال تذكيرات بالبريد الإلكتروني لأحداث جدول الأعمال ، فانتقل إلى إعداد جدول أعمال الوحدة. +Module610Name=متغيرات المنتج +Module610Desc=إنشاء متغيرات المنتج (اللون والحجم وما إلى ذلك) Module700Name=التبرعات Module700Desc=التبرعات إدارة -Module770Name=Expense Reports -Module770Desc=Manage expense reports claims (transportation, meal, ...) -Module1120Name=Vendor Commercial Proposals -Module1120Desc=Request vendor commercial proposal and prices +Module770Name=تقارير النفقات +Module770Desc=إدارة مطالبات تقارير المصروفات (النقل ، الوجبة ، ...) +Module1120Name=عروض البائع التجارية +Module1120Desc=طلب عرض البائع التجاري والأسعار Module1200Name=فرس النبي Module1200Desc=فرس النبي التكامل Module1520Name=الجيل ثيقة -Module1520Desc=Mass email document generation +Module1520Desc=إنشاء مستند البريد الإلكتروني الشامل Module1780Name=الكلمات / فئات Module1780Desc=إنشاء العلامات / فئة (المنتجات والعملاء والموردين والاتصالات أو أفراد) Module2000Name=WYSIWYG المحرر -Module2000Desc=Allow text fields to be edited/formatted using CKEditor (html) +Module2000Desc=السماح بتحرير / تنسيق الحقول النصية باستخدام CKEditor (html) Module2200Name=الأسعار الديناميكية -Module2200Desc=Use maths expressions for auto-generation of prices +Module2200Desc=استخدم التعبيرات الرياضية للتوليد التلقائي للأسعار Module2300Name=المهام المجدولة -Module2300Desc=Scheduled jobs management (alias cron or chrono table) -Module2400Name=Events/Agenda -Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2300Desc=إدارة الوظائف المجدولة (الاسم المستعار كرون أو جدول كرونو) +Module2400Name=الأحداث / الأجندة +Module2400Desc=تتبع الأحداث. سجل الأحداث التلقائية لأغراض التتبع أو سجل الأحداث أو الاجتماعات اليدوية. هذه هي الوحدة الرئيسية للإدارة الجيدة لعلاقات العملاء أو البائعين. Module2500Name=DMS / ECM -Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need. +Module2500Desc=نظام إدارة الوثائق / إدارة المحتوى الإلكتروني. التنظيم التلقائي للمستندات التي تم إنشاؤها أو تخزينها. شاركهم عند الحاجة. Module2600Name=خدمات API / ويب (خادم SOAP) Module2600Desc=تمكين الخدمات API Dolibarr الخادم SOAP توفير Module2610Name=خدمات API / ويب (خادم REST) Module2610Desc=تمكين الخادم تقديم الخدمات API Dolibarr REST Module2660Name=WebServices الدعوة (العميل SOAP) -Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) +Module2660Desc=تمكين عميل خدمات الويب Dolibarr (يمكن استخدامه لإرسال البيانات / الطلبات إلى خوادم خارجية. يتم دعم أوامر الشراء فقط حاليًا.) Module2700Name=غرفتر -Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access +Module2700Desc=استخدم خدمة Gravatar عبر الإنترنت (www.gravatar.com) لعرض صور المستخدمين / الأعضاء (الموجودة في رسائل البريد الإلكتروني الخاصة بهم). يحتاج الوصول إلى الإنترنت Module2800Desc=عميل FTP Module2900Name=GeoIPMaxmind Module2900Desc=GeoIP التحويلات Maxmind القدرات -Module3200Name=Unalterable Archives -Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. -Module3400Name=Social Networks -Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). +Module3200Name=المحفوظات غير القابلة للتغيير +Module3200Desc=تمكين سجل غير قابل للتغيير لأحداث العمل. يتم أرشفة الأحداث في الوقت الحقيقي. السجل هو جدول للقراءة فقط للأحداث المتسلسلة التي يمكن تصديرها. قد تكون هذه الوحدة إلزامية لبعض البلدان. +Module3400Name=الشبكات الاجتماعية +Module3400Desc=قم بتمكين حقول الشبكات الاجتماعية في عناوين وعناوين الأطراف الثالثة (سكايب ، تويتر ، فيسبوك ، ...). Module4000Name=HRM -Module4000Desc=Human resources management (management of department, employee contracts and feelings) +Module4000Desc=إدارة الموارد البشرية (إدارة القسم ، عقود الموظفين ومشاعرهم) Module5000Name=شركة متعددة Module5000Desc=يسمح لك لإدارة الشركات المتعددة -Module6000Name=Inter-modules Workflow -Module6000Desc=Workflow management between different modules (automatic creation of object and/or automatic status change) +Module6000Name=سير العمل بين الوحدات +Module6000Desc=إدارة سير العمل بين الوحدات النمطية المختلفة (الإنشاء التلقائي للكائن و / أو تغيير الحالة تلقائيًا) Module10000Name=مواقع الويب -Module10000Desc=Create websites (public) with a WYSIWYG editor. This is a webmaster or developer oriented CMS (it is better to know HTML and CSS language). Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the internet with your own domain name. -Module20000Name=Leave Request Management -Module20000Desc=Define and track employee leave requests -Module39000Name=Product Lots -Module39000Desc=Lots, serial numbers, eat-by/sell-by date management for products -Module40000Name=Multicurrency -Module40000Desc=Use alternative currencies in prices and documents +Module10000Desc=أنشئ مواقع ويب (عامة) باستخدام محرر WYSIWYG. هذا هو مدير موقع أو CMS موجه للمطورين (من الأفضل معرفة لغة HTML و CSS). ما عليك سوى إعداد خادم الويب (Apache ، Nginx ، ...) للإشارة إلى دليل Dolibarr المخصص لجعله متصلًا بالإنترنت باستخدام اسم المجال الخاص بك. +Module20000Name=إدارة طلب الإجازة +Module20000Desc=تحديد وتتبع طلبات إجازة الموظفين +Module39000Name=الكثير من المنتجات +Module39000Desc=الكثير ، والأرقام التسلسلية ، وإدارة تاريخ الأكل / البيع للمنتجات +Module40000Name=متعدد العملات +Module40000Desc=استخدم العملات البديلة في الأسعار والمستندات Module50000Name=PayBox -Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50000Desc=قدم للعملاء صفحة دفع عبر الإنترنت لـ PayBox (بطاقات الائتمان / الخصم). يمكن استخدام هذا للسماح لعملائك بإجراء مدفوعات مخصصة أو مدفوعات تتعلق بكائن Dolibarr معين (فاتورة ، طلب ، إلخ ...) Module50100Name=POS SimplePOS -Module50100Desc=Point of Sale module SimplePOS (simple POS). -Module50150Name=POS TakePOS -Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50100Desc=وحدة نقاط البيع SimplePOS (نقطة بيع بسيطة). +Module50150Name=نقاط البيع TakePOS +Module50150Desc=وحدة نقطة البيع TakePOS (شاشة تعمل باللمس ، للمحلات التجارية والحانات والمطاعم). Module50200Name=باي بال -Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) -Module50300Name=Stripe -Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) -Module50400Name=Accounting (double entry) -Module50400Desc=Accounting management (double entries, support General and Subsidiary Ledgers). Export the ledger in several other accounting software formats. +Module50200Desc=قدم للعملاء صفحة دفع عبر الإنترنت من PayPal (حساب PayPal أو بطاقات ائتمان / خصم). يمكن استخدام هذا للسماح لعملائك بإجراء مدفوعات مخصصة أو مدفوعات تتعلق بكائن Dolibarr معين (فاتورة ، طلب ، إلخ ...) +Module50300Name=شريط +Module50300Desc=قدم للعملاء صفحة دفع عبر الإنترنت لـ Stripe (بطاقات الائتمان / الخصم). يمكن استخدام هذا للسماح لعملائك بإجراء مدفوعات مخصصة أو مدفوعات تتعلق بكائن Dolibarr معين (فاتورة ، طلب ، إلخ ...) +Module50400Name=المحاسبة (القيد المزدوج) +Module50400Desc=إدارة المحاسبة (إدخالات مزدوجة ، ودعم دفاتر الأستاذ العامة والفرعية). تصدير دفتر الأستاذ في العديد من تنسيقات برامج المحاسبة الأخرى. Module54000Name=PrintIPP -Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server). +Module54000Desc=الطباعة المباشرة (بدون فتح المستندات) باستخدام واجهة Cups IPP (يجب أن تكون الطابعة مرئية من الخادم ، ويجب تثبيت CUPS على الخادم). Module55000Name=استطلاع للرأي، أو مسح التصويت -Module55000Desc=Create online polls, surveys or votes (like Doodle, Studs, RDVz etc...) +Module55000Desc=إنشاء استطلاعات الرأي أو الاستطلاعات أو الأصوات عبر الإنترنت (مثل Doodle و Studs و RDVz وما إلى ذلك ...) Module59000Name=هوامش -Module59000Desc=Module to follow margins +Module59000Desc=وحدة لمتابعة الهوامش Module60000Name=العمولات Module60000Desc=وحدة لإدارة اللجان Module62000Name=شروط التجارة الدولية -Module62000Desc=Add features to manage Incoterms +Module62000Desc=إضافة ميزات لإدارة Incoterms Module63000Name=مصادر -Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events +Module63000Desc=إدارة الموارد (طابعات ، سيارات ، غرف ، ...) لتخصيصها للمناسبات Permission11=قراءة الفواتير Permission12=إنشاء / تعديل فواتير العملاء -Permission13=Invalidate customer invoices +Permission13=إبطال فواتير العميل Permission14=التحقق من صحة الفواتير Permission15=ارسال الفواتير عن طريق البريد الإلكتروني Permission16=إنشاء مدفوعات الفواتير العملاء @@ -717,23 +717,23 @@ Permission32=إنشاء / تعديل المنتجات Permission34=حذف المنتجات Permission36=انظر / إدارة المنتجات المخفية Permission38=منتجات التصدير -Permission39=Ignore minimum price -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) -Permission45=Export projects +Permission39=تجاهل الحد الأدنى للسعر +Permission41=اقرأ المشاريع والمهام (المشاريع المشتركة والمشاريع التي أنا جهة اتصال بها). +Permission42=إنشاء / تعديل المشاريع (المشاريع المشتركة والمشاريع التي أنا على اتصال بها). يمكن أيضًا تعيين المستخدمين للمشاريع والمهام +Permission44=حذف المشاريع (المشاريع المشتركة والمشاريع التي أنا جهة اتصال بها) +Permission45=مشاريع التصدير Permission61=قراءة التدخلات Permission62=إنشاء / تعديل التدخلات Permission64=حذف التدخلات Permission67=تصدير التدخلات -Permission68=Send interventions by email -Permission69=Validate interventions -Permission70=Invalidate interventions +Permission68=إرسال المداخلات عبر البريد الإلكتروني +Permission69=تحقق من صحة التدخلات +Permission70=تدخلات غير صالحة Permission71=قراءة الأعضاء Permission72=إنشاء / تعديل أعضاء Permission74=حذف أعضاء Permission75=أنواع الإعداد للعضوية -Permission76=Export data +Permission76=تصدير البيانات Permission78=قراءة الاشتراكات Permission79=إنشاء / تعديل والاشتراكات Permission81=قراءة أوامر العملاء @@ -751,54 +751,54 @@ Permission95=قراءة تقارير Permission101=قراءة الإرسال Permission102=إنشاء / تعديل الإرسال Permission104=صحة الإرسال -Permission105=Send sendings by email +Permission105=إرسال الرسائل عن طريق البريد الإلكتروني Permission106=sendings التصدير Permission109=حذف الإرسال Permission111=قراءة الحسابات المالية Permission112=إنشاء / تعديل أو حذف ، وقارن المعاملات -Permission113=Setup financial accounts (create, manage categories of bank transactions) -Permission114=Reconcile transactions +Permission113=إعداد الحسابات المالية (إنشاء وإدارة فئات المعاملات المصرفية) +Permission114=التوفيق بين المعاملات Permission115=صفقات التصدير وكشوفات الحساب Permission116=التحويلات بين الحسابات -Permission117=Manage checks dispatching +Permission117=إدارة إرسال الشيكات Permission121=قراءة الغير مرتبطة المستخدم Permission122=إنشاء / تغيير الغير مرتبطة المستخدم Permission125=حذف الغير مرتبطة المستخدم Permission126=الصادرات الغير -Permission130=Create/modify third parties payment information -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission130=إنشاء / تعديل معلومات الدفع الخاصة بأطراف ثالثة +Permission141=اقرأ جميع المشاريع والمهام (بالإضافة إلى المشاريع الخاصة التي لست على اتصال بها) +Permission142=إنشاء / تعديل جميع المشاريع والمهام (بالإضافة إلى المشاريع الخاصة التي لست على اتصال بها) +Permission144=حذف جميع المشاريع والمهام (بالإضافة إلى المشاريع الخاصة التي لست جهة اتصال) +Permission145=يمكن إدخال الوقت المستغرق ، بالنسبة لي أو التسلسل الهرمي الخاص بي ، في المهام المعينة (سجل الدوام) Permission146=قراءة موفري Permission147=قراءة احصائيات -Permission151=Read direct debit payment orders -Permission152=Create/modify a direct debit payment orders -Permission153=Send/Transmit direct debit payment orders -Permission154=Record Credits/Rejections of direct debit payment orders +Permission151=قراءة أوامر الدفع بالخصم المباشر +Permission152=إنشاء / تعديل أوامر الدفع بالخصم المباشر +Permission153=إرسال / تحويل أوامر الدفع بالخصم المباشر +Permission154=تسجيل الاعتمادات / الرفض لأوامر الدفع بالخصم المباشر Permission161=قراءة العقود / الاشتراكات Permission162=إنشاء / تعديل العقود / الاشتراكات Permission163=تفعيل خدمة / الاشتراك عقد Permission164=تعطيل خدمة / الاشتراك عقد Permission165=حذف العقود / الاشتراكات -Permission167=Export contracts +Permission167=عقود التصدير Permission171=قراءة الرحلات والنفقات (لك والمرؤوسين لديك) Permission172=إنشاء / تعديل الرحلات والمصاريف Permission173=حذف الرحلات والمصاريف Permission174=قراءة جميع الرحلات والمصاريف Permission178=رحلات ونفقات التصدير Permission180=قراءة الموردين -Permission181=Read purchase orders -Permission182=Create/modify purchase orders -Permission183=Validate purchase orders -Permission184=Approve purchase orders -Permission185=Order or cancel purchase orders -Permission186=Receive purchase orders -Permission187=Close purchase orders -Permission188=Cancel purchase orders +Permission181=اقرأ أوامر الشراء +Permission182=إنشاء / تعديل أوامر الشراء +Permission183=التحقق من صحة أوامر الشراء +Permission184=الموافقة على أوامر الشراء +Permission185=طلب أو إلغاء أوامر الشراء +Permission186=استلام أوامر الشراء +Permission187=إغلاق أوامر الشراء +Permission188=إلغاء أوامر الشراء Permission192=إنشاء خطوط Permission193=إلغاء خطوط -Permission194=Read the bandwidth lines +Permission194=اقرأ خطوط النطاق الترددي Permission202=إنشاء خط المشترك الرقمي غير المتماثل وصلات Permission203=وصلات من أجل أوامر Permission204=من أجل وصلات @@ -823,13 +823,13 @@ Permission244=انظر محتويات الخفية الفئات Permission251=قراءة أخرى للمستخدمين والمجموعات PermissionAdvanced251=قراءة المستخدمين الآخرين Permission252=قراءة أذونات المستخدمين الآخرين -Permission253=Create/modify other users, groups and permissions +Permission253=إنشاء / تعديل مستخدمين آخرين ومجموعات وأذونات PermissionAdvanced253=إنشاء / تعديل المستخدمين خارجي / داخلي وأذونات Permission254=حذف أو تعطيل المستخدمين الآخرين Permission255=إنشاء / تعديل بلده معلومات المستخدم Permission256=تعديل بنفسه كلمة المرور -Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). -Permission263=Extend access to all third parties WITHOUT their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission262=توسيع الوصول إلى جميع الأطراف الثالثة والأشياء الخاصة بهم (ليس فقط الأطراف الثالثة التي يكون المستخدم ممثل بيع لها).
غير فعال للمستخدمين الخارجيين (يقتصر الأمر دائمًا على أنفسهم فيما يتعلق بالعروض والأوامر والفواتير والعقود وما إلى ذلك).
غير فعال للمشاريع (فقط القواعد المتعلقة بأذونات المشروع والرؤية ومسائل التعيين). +Permission263=قم بتوسيع الوصول إلى جميع الأطراف الثالثة بدون كائناتهم (ليس فقط الأطراف الثالثة التي يكون المستخدم ممثل بيع لها).
غير فعال للمستخدمين الخارجيين (يقتصر الأمر دائمًا على أنفسهم فيما يتعلق بالعروض والأوامر والفواتير والعقود وما إلى ذلك).
غير فعال للمشاريع (فقط القواعد المتعلقة بأذونات المشروع والرؤية ومسائل التعيين). Permission271=قراءة في كاليفورنيا Permission272=قراءة الفواتير Permission273=قضية الفواتير @@ -839,10 +839,10 @@ Permission283=حذف اتصالات Permission286=تصدير اتصالات Permission291=قراءة التعريفات Permission292=مجموعة أذونات على التعريفات -Permission293=Modify customer's tariffs -Permission300=Read barcodes -Permission301=Create/modify barcodes -Permission302=Delete barcodes +Permission293=تعديل تعريفات العميل +Permission300=قراءة الباركود +Permission301=إنشاء / تعديل الباركود +Permission302=حذف الباركود Permission311=قراءة الخدمات Permission312=تعيين خدمة / الاشتراك في التعاقد Permission331=قراءة العناوين @@ -861,11 +861,11 @@ Permission401=قراءة خصومات Permission402=إنشاء / تعديل الخصومات Permission403=تحقق من الخصومات Permission404=حذف خصومات -Permission430=Use Debug Bar -Permission511=Read salaries and payments (yours and subordinates) -Permission512=Create/modify salaries and payments -Permission514=Delete salaries and payments -Permission517=Read salaries and payments everybody +Permission430=استخدم شريط التصحيح +Permission511=اقرأ الرواتب والمدفوعات (لك ومرؤوسيك) +Permission512=إنشاء / تعديل الرواتب والمدفوعات +Permission514=حذف الرواتب والمدفوعات +Permission517=اقرأ الرواتب والمدفوعات للجميع Permission519=رواتب التصدير Permission520=قراءة القروض Permission522=إنشاء / تعديل القروض @@ -877,243 +877,243 @@ Permission532=إنشاء / تعديل الخدمات Permission534=حذف خدمات Permission536=انظر / إدارة الخدمات الخفية Permission538=تصدير الخدمات -Permission561=Read payment orders by credit transfer -Permission562=Create/modify payment order by credit transfer -Permission563=Send/Transmit payment order by credit transfer -Permission564=Record Debits/Rejections of credit transfer -Permission601=Read stickers -Permission602=Create/modify stickers -Permission609=Delete stickers -Permission611=Read attributes of variants -Permission612=Create/Update attributes of variants -Permission613=Delete attributes of variants -Permission650=Read Bills of Materials -Permission651=Create/Update Bills of Materials -Permission652=Delete Bills of Materials -Permission660=Read Manufacturing Order (MO) -Permission661=Create/Update Manufacturing Order (MO) -Permission662=Delete Manufacturing Order (MO) +Permission561=قراءة أوامر الدفع عن طريق تحويل الرصيد +Permission562=إنشاء / تعديل أمر الدفع عن طريق تحويل الرصيد +Permission563=إرسال / تحويل أمر الدفع عن طريق تحويل الرصيد +Permission564=سجل عمليات الخصم / رفض تحويل الائتمان +Permission601=اقرأ الملصقات +Permission602=إنشاء / تعديل الملصقات +Permission609=احذف الملصقات +Permission611=اقرأ سمات المتغيرات +Permission612=إنشاء / تحديث سمات المتغيرات +Permission613=حذف سمات المتغيرات +Permission650=اقرأ فواتير المواد +Permission651=إنشاء / تحديث فواتير المواد +Permission652=حذف فواتير المواد +Permission660=قراءة أمر التصنيع (MO) +Permission661=إنشاء / تحديث أمر التصنيع (MO) +Permission662=حذف أمر التصنيع (MO) Permission701=قراءة التبرعات Permission702=إنشاء / تعديل والهبات Permission703=حذف التبرعات Permission771=قراءة التقارير حساب (لك والمرؤوسين لديك) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=إنشاء / تعديل تقارير المصاريف (لك ولمرؤوسيك) Permission773=حذف تقارير المصاريف Permission775=الموافقة على التقارير حساب Permission776=دفع نفقة تقارير -Permission777=Read all expense reports (even those of user not subordinates) -Permission778=Create/modify expense reports of everybody +Permission777=قراءة جميع تقارير المصاريف (حتى تلك الخاصة بالمستخدم وليس المرؤوسين) +Permission778=إنشاء / تعديل تقارير المصروفات للجميع Permission779=تقارير حساب التصدير Permission1001=قراءة مخزونات Permission1002=إنشاء / تعديل المستودعات Permission1003=حذف المستودعات Permission1004=قراءة تحركات الأسهم Permission1005=إنشاء / تعديل تحركات الأسهم -Permission1011=View inventories -Permission1012=Create new inventory -Permission1014=Validate inventory -Permission1015=Allow to change PMP value for a product -Permission1016=Delete inventory -Permission1101=Read delivery receipts -Permission1102=Create/modify delivery receipts -Permission1104=Validate delivery receipts -Permission1109=Delete delivery receipts -Permission1121=Read supplier proposals -Permission1122=Create/modify supplier proposals -Permission1123=Validate supplier proposals -Permission1124=Send supplier proposals -Permission1125=Delete supplier proposals -Permission1126=Close supplier price requests +Permission1011=عرض قوائم الجرد +Permission1012=إنشاء مخزون جديد +Permission1014=التحقق من صحة المخزون +Permission1015=السماح بتغيير قيمة PMP للمنتج +Permission1016=حذف المخزون +Permission1101=قراءة إيصالات التسليم +Permission1102=إنشاء / تعديل إيصالات التسليم +Permission1104=تحقق من صحة إيصالات التسليم +Permission1109=حذف إيصالات التسليم +Permission1121=اقرأ عروض الموردين +Permission1122=إنشاء / تعديل عروض الموردين +Permission1123=التحقق من صحة مقترحات الموردين +Permission1124=إرسال عروض الموردين +Permission1125=حذف عروض الموردين +Permission1126=إغلاق طلبات سعر المورد Permission1181=قراءة الموردين -Permission1182=Read purchase orders -Permission1183=Create/modify purchase orders -Permission1184=Validate purchase orders -Permission1185=Approve purchase orders -Permission1186=Order purchase orders -Permission1187=Acknowledge receipt of purchase orders -Permission1188=Delete purchase orders -Permission1189=Check/Uncheck a purchase order reception -Permission1190=Approve (second approval) purchase orders -Permission1191=Export supplier orders and their attributes +Permission1182=اقرأ أوامر الشراء +Permission1183=إنشاء / تعديل أوامر الشراء +Permission1184=التحقق من صحة أوامر الشراء +Permission1185=الموافقة على أوامر الشراء +Permission1186=أوامر الشراء +Permission1187=الإقرار باستلام أوامر الشراء +Permission1188=حذف أوامر الشراء +Permission1189=حدد / قم بإلغاء تحديد استلام أمر الشراء +Permission1190=الموافقة على (الموافقة الثانية) أوامر الشراء +Permission1191=أوامر تصدير الموردين وخصائصها Permission1201=ونتيجة للحصول على التصدير Permission1202=إنشاء / تعديل للتصدير -Permission1231=Read vendor invoices -Permission1232=Create/modify vendor invoices -Permission1233=Validate vendor invoices -Permission1234=Delete vendor invoices -Permission1235=Send vendor invoices by email -Permission1236=Export vendor invoices, attributes and payments -Permission1237=Export purchase orders and their details +Permission1231=اقرأ فواتير البائع +Permission1232=إنشاء / تعديل فواتير البائعين +Permission1233=التحقق من صحة فواتير البائع +Permission1234=احذف فواتير البائع +Permission1235=إرسال فواتير البائع عبر البريد الإلكتروني +Permission1236=تصدير فواتير البائع والسمات والمدفوعات +Permission1237=أوامر الشراء للتصدير وتفاصيلها Permission1251=ادارة الدمار الواردات الخارجية البيانات في قاعدة البيانات (بيانات تحميل) Permission1321=تصدير العملاء والفواتير والمدفوعات والصفات -Permission1322=Reopen a paid bill -Permission1421=Export sales orders and attributes -Permission1521=Read documents -Permission1522=Delete documents -Permission2401=Read actions (events or tasks) linked to his user account (if owner of event or just assigned to) -Permission2402=Create/modify actions (events or tasks) linked to his user account (if owner of event) -Permission2403=Delete actions (events or tasks) linked to his user account (if owner of event) +Permission1322=إعادة فتح فاتورة مدفوعة +Permission1421=تصدير أوامر البيع والسمات +Permission1521=اقرأ المستندات +Permission1522=احذف المستندات +Permission2401=قراءة الإجراءات (الأحداث أو المهام) المرتبطة بحساب المستخدم الخاص به (إذا كان صاحب الحدث أو تم تعيينه للتو) +Permission2402=إنشاء / تعديل الإجراءات (الأحداث أو المهام) المرتبطة بحساب المستخدم الخاص به (إذا كان صاحب الحدث) +Permission2403=حذف الإجراءات (الأحداث أو المهام) المرتبطة بحساب المستخدم الخاص به (إذا كان صاحب الحدث) Permission2411=الإجراءات قراءة (أحداث أو المهام) للاخرين Permission2412=إنشاء / تعديل الإجراءات (أحداث أو المهام) للاخرين Permission2413=حذف الإجراءات (أحداث أو المهام) للاخرين -Permission2414=Export actions/tasks of others +Permission2414=تصدير إجراءات / مهام الآخرين Permission2501=قراءة وثائق Permission2502=تقديم وثائق أو حذف Permission2503=تقديم وثائق أو حذف Permission2515=إعداد وثائق وأدلة Permission2801=استخدام عميل FTP في وضع القراءة (تصفح وتحميل فقط) Permission2802=العميل استخدام بروتوكول نقل الملفات في وضع الكتابة (حذف أو تحميل الملفات) -Permission3200=Read archived events and fingerprints -Permission3301=Generate new modules -Permission4001=Read skill/job/position -Permission4002=Create/modify skill/job/position -Permission4003=Delete skill/job/position -Permission4020=Read evaluations -Permission4021=Create/modify your evaluation -Permission4022=Validate evaluation -Permission4023=Delete evaluation -Permission4030=See comparison menu -Permission4031=Read personal information -Permission4032=Write personal information -Permission10001=Read website content -Permission10002=Create/modify website content (html and javascript content) -Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. -Permission10005=Delete website content -Permission20001=Read leave requests (your leave and those of your subordinates) -Permission20002=Create/modify your leave requests (your leave and those of your subordinates) +Permission3200=قراءة الأحداث المؤرشفة وبصمات الأصابع +Permission3301=إنشاء وحدات جديدة +Permission4001=اقرأ المهارة / الوظيفة / المنصب +Permission4002=إنشاء / تعديل المهارة / الوظيفة / المنصب +Permission4003=حذف المهارة / الوظيفة / المنصب +Permission4020=اقرأ التقييمات +Permission4021=إنشاء / تعديل التقييم الخاص بك +Permission4022=التحقق من صحة التقييم +Permission4023=حذف التقييم +Permission4030=انظر قائمة المقارنة +Permission4031=اقرأ المعلومات الشخصية +Permission4032=اكتب معلومات شخصية +Permission10001=اقرأ محتوى الموقع +Permission10002=إنشاء / تعديل محتوى موقع الويب (محتوى html و javascript) +Permission10003=إنشاء / تعديل محتوى الموقع (كود php الديناميكي). خطير ، يجب أن يكون محجوزًا للمطورين المقيدين. +Permission10005=حذف محتوى الموقع +Permission20001=اقرأ طلبات الإجازات (إجازتك وتلك الخاصة بمرؤوسيك) +Permission20002=إنشاء / تعديل طلبات الإجازة الخاصة بك (إجازتك وتلك الخاصة بمرؤوسيك) Permission20003=حذف طلبات الإجازة -Permission20004=Read all leave requests (even those of user not subordinates) -Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) -Permission20006=Administer leave requests (setup and update balance) -Permission20007=Approve leave requests +Permission20004=قراءة جميع طلبات الإجازة (حتى تلك الخاصة بالمستخدم وليس المرؤوسين) +Permission20005=إنشاء / تعديل طلبات الإجازة للجميع (حتى تلك الخاصة بالمستخدم وليس المرؤوسين) +Permission20006=إدارة طلبات الإجازة (إعداد وتحديث الرصيد) +Permission20007=الموافقة على طلبات الإجازة Permission23001=قراءة مهمة مجدولة Permission23002=إنشاء / تحديث المجدولة وظيفة Permission23003=حذف مهمة مجدولة Permission23004=تنفيذ مهمة مجدولة -Permission50101=Use Point of Sale (SimplePOS) -Permission50151=Use Point of Sale (TakePOS) -Permission50152=Edit sales lines -Permission50153=Edit ordered sales lines +Permission50101=استخدام نقطة البيع (SimplePOS) +Permission50151=استخدام نقطة البيع (TakePOS) +Permission50152=تحرير بنود المبيعات +Permission50153=تحرير سطور المبيعات المطلوبة Permission50201=قراءة المعاملات Permission50202=استيراد المعاملات -Permission50330=Read objects of Zapier -Permission50331=Create/Update objects of Zapier -Permission50332=Delete objects of Zapier -Permission50401=Bind products and invoices with accounting accounts -Permission50411=Read operations in ledger -Permission50412=Write/Edit operations in ledger -Permission50414=Delete operations in ledger -Permission50415=Delete all operations by year and journal in ledger -Permission50418=Export operations of the ledger -Permission50420=Report and export reports (turnover, balance, journals, ledger) -Permission50430=Define fiscal periods. Validate transactions and close fiscal periods. -Permission50440=Manage chart of accounts, setup of accountancy -Permission51001=Read assets -Permission51002=Create/Update assets -Permission51003=Delete assets -Permission51005=Setup types of asset +Permission50330=اقرأ كائنات زابير +Permission50331=إنشاء / تحديث كائنات Zapier +Permission50332=حذف كائنات زابير +Permission50401=ربط المنتجات والفواتير بحسابات محاسبية +Permission50411=قراءة العمليات في دفتر الأستاذ +Permission50412=كتابة / تحرير العمليات في دفتر الأستاذ +Permission50414=حذف العمليات في دفتر الأستاذ +Permission50415=احذف جميع العمليات حسب السنة ودفتر الأستاذ +Permission50418=عمليات تصدير دفتر الأستاذ +Permission50420=تقرير وتصدير التقارير (دوران ، رصيد ، دفاتر اليومية ، دفتر الأستاذ) +Permission50430=تحديد الفترات المالية. التحقق من صحة المعاملات وإغلاق الفترات المالية. +Permission50440=إدارة دليل الحسابات وإعداد المحاسبة +Permission51001=اقرأ الأصول +Permission51002=إنشاء / تحديث الأصول +Permission51003=حذف الأصول +Permission51005=إعداد أنواع الأصول Permission54001=طباعة Permission55001=قراءة استطلاعات الرأي Permission55002=إنشاء / تعديل استطلاعات الرأي Permission59001=قراءة الهوامش التجارية Permission59002=تحديد هوامش التجارية Permission59003=قراءة كل الهامش المستخدم -Permission63001=Read resources -Permission63002=Create/modify resources -Permission63003=Delete resources -Permission63004=Link resources to agenda events -Permission64001=Allow direct printing -Permission67000=Allow printing of receipts -Permission68001=Read intracomm report -Permission68002=Create/modify intracomm report -Permission68004=Delete intracomm report -Permission941601=Read receipts -Permission941602=Create and modify receipts -Permission941603=Validate receipts -Permission941604=Send receipts by email -Permission941605=Export receipts -Permission941606=Delete receipts -DictionaryCompanyType=Third-party types -DictionaryCompanyJuridicalType=Third-party legal entities -DictionaryProspectLevel=Prospect potential level for companies -DictionaryProspectContactLevel=Prospect potential level for contacts -DictionaryCanton=States/Provinces +Permission63001=اقرأ الموارد +Permission63002=إنشاء / تعديل الموارد +Permission63003=حذف الموارد +Permission63004=ربط الموارد بأحداث جدول الأعمال +Permission64001=السماح بالطباعة المباشرة +Permission67000=السماح بطباعة الإيصالات +Permission68001=قراءة تقرير intracomm +Permission68002=إنشاء / تعديل تقرير intracomm +Permission68004=حذف تقرير intracomm +Permission941601=قراءة الإيصالات +Permission941602=إنشاء وتعديل الإيصالات +Permission941603=تحقق من صحة الإيصالات +Permission941604=إرسال الإيصالات عن طريق البريد الإلكتروني +Permission941605=إيصالات التصدير +Permission941606=حذف الإيصالات +DictionaryCompanyType=أنواع الجهات الخارجية +DictionaryCompanyJuridicalType=الكيانات القانونية الخارجية +DictionaryProspectLevel=المستوى المحتمل المحتمل للشركات +DictionaryProspectContactLevel=احتمالية المستوى المحتمل لجهات الاتصال +DictionaryCanton=الولايات / المقاطعات DictionaryRegion=المناطق DictionaryCountry=الدول DictionaryCurrency=العملات -DictionaryCivility=Honorific titles -DictionaryActions=Types of agenda events -DictionarySocialContributions=Types of social or fiscal taxes +DictionaryCivility=ألقاب شرفية +DictionaryActions=أنواع أحداث جدول الأعمال +DictionarySocialContributions=أنواع الضرائب الاجتماعية أو المالية DictionaryVAT=أسعار الضريبة على القيمة المضافة أو ضريبة المبيعات الاسعار -DictionaryRevenueStamp=Amount of tax stamps +DictionaryRevenueStamp=مقدار الطوابع الضريبية DictionaryPaymentConditions=شروط السداد -DictionaryPaymentModes=Payment Modes +DictionaryPaymentModes=طرق الدفع DictionaryTypeContact=الاتصال / أنواع العناوين -DictionaryTypeOfContainer=Website - Type of website pages/containers +DictionaryTypeOfContainer=موقع الويب - نوع صفحات / حاويات موقع الويب DictionaryEcotaxe=ضرائب بيئية (WEEE) DictionaryPaperFormat=تنسيقات ورقة -DictionaryFormatCards=Card formats -DictionaryFees=Expense report - Types of expense report lines +DictionaryFormatCards=تنسيقات البطاقة +DictionaryFees=تقرير المصاريف - أنواع بنود تقرير المصاريف DictionarySendingMethods=وسائل النقل البحري -DictionaryStaff=Number of Employees +DictionaryStaff=عدد الموظفين DictionaryAvailability=تأخير تسليم -DictionaryOrderMethods=Order methods +DictionaryOrderMethods=طرق الطلب DictionarySource=أصل مقترحات / أوامر -DictionaryAccountancyCategory=Personalized groups for reports +DictionaryAccountancyCategory=مجموعات مخصصة للتقارير DictionaryAccountancysystem=نماذج للتخطيط للحسابات DictionaryAccountancyJournal=Accounting journals -DictionaryEMailTemplates=Email Templates +DictionaryEMailTemplates=قوالب البريد الإلكتروني DictionaryUnits=الوحدات -DictionaryMeasuringUnits=Measuring Units -DictionarySocialNetworks=Social Networks -DictionaryProspectStatus=Prospect status for companies -DictionaryProspectContactStatus=Prospect status for contacts -DictionaryHolidayTypes=Leave - Types of leave -DictionaryOpportunityStatus=Lead status for project/lead -DictionaryExpenseTaxCat=Expense report - Transportation categories -DictionaryExpenseTaxRange=Expense report - Range by transportation category -DictionaryTransportMode=Intracomm report - Transport mode -DictionaryBatchStatus=Product lot/serial Quality Control status -DictionaryAssetDisposalType=Type of disposal of assets -TypeOfUnit=Type of unit +DictionaryMeasuringUnits=وحدات القياس +DictionarySocialNetworks=الشبكات الاجتماعية +DictionaryProspectStatus=حالة الاحتمال للشركات +DictionaryProspectContactStatus=حالة البحث عن جهات الاتصال +DictionaryHolidayTypes=الإجازة - أنواع الإجازة +DictionaryOpportunityStatus=حالة الرصاص للمشروع / العميل المحتمل +DictionaryExpenseTaxCat=تقرير المصاريف - فئات النقل +DictionaryExpenseTaxRange=تقرير المصاريف - النطاق حسب فئة النقل +DictionaryTransportMode=تقرير Intracomm - وضع النقل +DictionaryBatchStatus=حالة مراقبة الجودة / دفعة المنتج +DictionaryAssetDisposalType=نوع التصرف في الأصول +TypeOfUnit=نوع الوحدة SetupSaved=تم حفظ الإعدادات SetupNotSaved=الإعدادات لم تحفظ -BackToModuleList=Back to Module list -BackToDictionaryList=Back to Dictionaries list -TypeOfRevenueStamp=Type of tax stamp -VATManagement=Sales Tax Management -VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sales Tax rate follows the active standard rule:
If the seller is not subject to Sales tax, then Sales tax defaults to 0. End of rule.
If the (seller's country = buyer's country), then the Sales tax by default equals the Sales tax of the product in the seller's country. End of rule.
If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default VAT is 0. This rule is dependant on the seller's country - please consult with your accountant. The VAT should be paid by the buyer to the customs office in their country and not to the seller. End of rule.
If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community VAT number) then the VAT defaults to the VAT rate of the seller's country. End of rule.
If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community VAT number), then the VAT is 0 by default. End of rule.
In any other case the proposed default is Sales tax=0. End of rule. -VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for cases like associations, individuals or small companies. -VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. -VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. +BackToModuleList=العودة إلى قائمة الوحدات +BackToDictionaryList=رجوع إلى قائمة القواميس +TypeOfRevenueStamp=نوع الطابع الضريبي +VATManagement=إدارة ضريبة المبيعات +VATIsUsedDesc=بشكل افتراضي عند إنشاء العملاء المحتملين والفواتير والأوامر وما إلى ذلك ، يتبع معدل ضريبة المبيعات القاعدة القياسية النشطة:
إذا لم يكن البائع خاضعًا لضريبة المبيعات ، فستكون ضريبة المبيعات الافتراضية هي 0. نهاية القاعدة.
إذا كانت (دولة البائع = بلد المشتري) ، فإن ضريبة المبيعات بشكل افتراضي تساوي ضريبة المبيعات للمنتج في بلد البائع. نهاية الحكم.
إذا كان البائع والمشتري في الاتحاد الأوروبي وكانت البضائع منتجات مرتبطة بالنقل (النقل والشحن والطيران) ، فإن ضريبة القيمة المضافة الافتراضية هي 0. تعتمد هذه القاعدة على بلد البائع - يرجى استشارة المحاسب الخاص بك. يجب أن يدفع المشتري ضريبة القيمة المضافة لمكتب الجمارك في بلده وليس للبائع. نهاية الحكم.
إذا كان البائع والمشتري في الاتحاد الأوروبي والمشتري ليس شركة (برقم ضريبة قيمة مضافة داخل المجتمع) ، فإن ضريبة القيمة المضافة تتخلف عن معدل ضريبة القيمة المضافة لبلد البائع. نهاية الحكم.
إذا كان البائع والمشتري في المجتمع الأوروبي والمشتري هو شركة (برقم ضريبة القيمة المضافة داخل المجتمع المسجل) ، فإن ضريبة القيمة المضافة تكون 0 افتراضيًا. نهاية الحكم.
في أي حالة أخرى ، الافتراضي المقترح هو ضريبة المبيعات = 0. نهاية الحكم. +VATIsNotUsedDesc=بشكل افتراضي ، تكون ضريبة المبيعات المقترحة هي 0 والتي يمكن استخدامها في حالات مثل الجمعيات أو الأفراد أو الشركات الصغيرة. +VATIsUsedExampleFR=في فرنسا ، يعني ذلك الشركات أو المؤسسات التي لديها نظام مالي حقيقي (حقيقي مبسط أو عادي حقيقي). نظام يتم فيه إعلان ضريبة القيمة المضافة. +VATIsNotUsedExampleFR=في فرنسا ، يُقصد به الجمعيات غير المصرح بها عن ضريبة المبيعات أو الشركات أو المنظمات أو المهن الحرة التي اختارت النظام المالي للمؤسسات الصغيرة (ضريبة المبيعات في الامتياز) ودفعت ضريبة مبيعات الامتياز بدون أي إقرار بضريبة المبيعات. سيعرض هذا الاختيار المرجع "ضريبة المبيعات غير القابلة للتطبيق - المادة 293B من CGI" على الفواتير. ##### Local Taxes ##### -TypeOfSaleTaxes=Type of sales tax +TypeOfSaleTaxes=نوع ضريبة المبيعات LTRate=معدل LocalTax1IsNotUsed=لا تستخدم الضريبة الثانية -LocalTax1IsUsedDesc=Use a second type of tax (other than first one) -LocalTax1IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax1IsUsedDesc=استخدم نوعًا ثانيًا من الضرائب (بخلاف النوع الأول) +LocalTax1IsNotUsedDesc=لا تستخدم نوعًا آخر من الضرائب (بخلاف الضريبة الأولى) LocalTax1Management=النوع الثاني من الضرائب LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= LocalTax2IsNotUsed=لا تستخدم الضرائب الثالثة -LocalTax2IsUsedDesc=Use a third type of tax (other than first one) -LocalTax2IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax2IsUsedDesc=استخدم نوعًا ثالثًا من الضرائب (بخلاف النوع الأول) +LocalTax2IsNotUsedDesc=لا تستخدم نوعًا آخر من الضرائب (بخلاف الضريبة الأولى) LocalTax2Management=النوع الثالث من الضريبة LocalTax2IsUsedExample= LocalTax2IsNotUsedExample= LocalTax1ManagementES=إدارة الطاقة المتجددة -LocalTax1IsUsedDescES=The RE rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
If the buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsUsedDescES=معدل RE افتراضيًا عند إنشاء التوقعات والفواتير والأوامر وما إلى ذلك ، يتبع القاعدة القياسية النشطة:
إذا لم يكن المشتري خاضعًا لـ RE ، RE افتراضيًا = 0. نهاية الحكم.
إذا تعرض المشتري لـ RE ، فإن RE بشكل افتراضي. نهاية الحكم.
LocalTax1IsNotUsedDescES=افتراضيا الطاقة المتجددة المقترحة هي 0. نهاية الحكم. LocalTax1IsUsedExampleES=في اسبانيا هم من المهنيين تخضع لبعض المقاطع المحددة للشركة التعليم الصوتي التفاعلي الاسبانية. LocalTax1IsNotUsedExampleES=في اسبانيا هم المهنية والجمعيات وتخضع لقطاعات معينة من شركة التعليم الصوتي التفاعلي الاسبانية. LocalTax2ManagementES=IRPF الإدارة -LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsUsedDescES=يتبع معدل IRPF افتراضيًا عند إنشاء التوقعات والفواتير والأوامر وما إلى ذلك القاعدة القياسية النشطة:
إذا لم يكن البائع خاضعًا لـ IRPF ، فإن IRPF افتراضيًا = 0. نهاية الحكم.
إذا تعرض البائع لـ IRPF فإن IRPF افتراضيًا. نهاية الحكم.
LocalTax2IsNotUsedDescES=افتراضيا IRPF المقترحة هي 0. نهاية الحكم. LocalTax2IsUsedExampleES=في اسبانيا ، لحسابهم الخاص والمهنيين المستقلين الذين يقدمون الخدمات والشركات الذين اختاروا النظام الضريبي من وحدات. -LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. -RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps does not provide any reporting. Only few countries uses this type of tax. -UseRevenueStamp=Use a tax stamp -UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) +LocalTax2IsNotUsedExampleES=في إسبانيا هم شركات لا تخضع لنظام ضريبي للوحدات. +RevenueStampDesc="الطابع الضريبي" أو "طابع الإيرادات" هو ضريبة ثابتة تحددها لكل فاتورة (لا تعتمد على مبلغ الفاتورة). يمكن أن تكون أيضًا ضريبة بالنسبة المئوية ولكن استخدام النوع الثاني أو الثالث من الضريبة أفضل بالنسبة للضرائب المئوية لأن الطوابع الضريبية لا تقدم أي تقارير. يستخدم عدد قليل فقط من البلدان هذا النوع من الضرائب. +UseRevenueStamp=استخدم طابعًا ضريبيًا +UseRevenueStampExample=يتم تحديد قيمة الطابع الضريبي افتراضيًا في إعداد القواميس (%s - %s - %s) CalcLocaltax=تقارير عن الضرائب المحلية CalcLocaltax1=مبيعات - مشتريات CalcLocaltax1Desc=وتحسب تقارير الضرائب المحلية مع الفرق بين localtaxes المبيعات والمشتريات localtaxes @@ -1121,20 +1121,20 @@ CalcLocaltax2=مشتريات CalcLocaltax2Desc=تقارير الضرائب المحلية هي مجموعه localtaxes المشتريات CalcLocaltax3=مبيعات CalcLocaltax3Desc=تقارير الضرائب المحلية هي مجموعه localtaxes المبيعات -NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax +NoLocalTaxXForThisCountry=وفقًا لإعداد الضرائب (انظر %s - %s - %s) ، لا يحتاج بلدك إلى استخدام مثل هذا النوع من الضرائب LabelUsedByDefault=العلامة التي يستخدمها التقصير إذا لم يمكن العثور على ترجمة للقانون LabelOnDocuments=علامة على وثائق -LabelOrTranslationKey=Label or translation key -ValueOfConstantKey=Value of a configuration constant -ConstantIsOn=Option %s is on -NbOfDays=No. of days +LabelOrTranslationKey=التسمية أو مفتاح الترجمة +ValueOfConstantKey=قيمة ثابت التكوين +ConstantIsOn=الخيار %s قيد التشغيل +NbOfDays=لا أيام AtEndOfMonth=في نهاية الشهر -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=ويقابل AlwaysActive=حركة دائمة Upgrade=ترقية MenuUpgrade=ترقية / توسيع -AddExtensionThemeModuleOrOther=Deploy/install external app/module +AddExtensionThemeModuleOrOther=نشر / تثبيت التطبيق / الوحدة الخارجية WebServer=خادم الويب DocumentRootServer=خادم الويب 'sالدليل الرئيسي DataRootServer=دليل ملفات البيانات @@ -1152,7 +1152,7 @@ DatabaseUser=قاعدة بيانات المستخدم DatabasePassword=قاعدة بيانات كلمة السر Tables=الجداول TableName=اسم الجدول -NbOfRecord=No. of records +NbOfRecord=عدد السجلات Host=الخادم DriverType=سائق نوع SummarySystem=نظام معلومات موجزة @@ -1164,17 +1164,17 @@ Skin=موضوع الجلد DefaultSkin=موضوع التقصير الجلد MaxSizeList=الحد الأقصى لطول قائمة DefaultMaxSizeList=افتراضي الطول الاقصى للقوائم -DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +DefaultMaxSizeShortList=الطول الأقصى الافتراضي للقوائم القصيرة (أي في بطاقة العميل) MessageOfDay=رسالة اليوم MessageLogin=ادخل صفحة الرسالة -LoginPage=Login page -BackgroundImageLogin=Background image +LoginPage=صفحة تسجيل الدخول +BackgroundImageLogin=الصورة الخلفية PermanentLeftSearchForm=دائم البحث عن شكل القائمة اليمنى -DefaultLanguage=Default language -EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships -EnableShowLogo=Show the company logo in the menu +DefaultLanguage=اللغة الافتراضية +EnableMultilangInterface=قم بتمكين دعم متعدد اللغات للعلاقات مع العملاء أو البائعين +EnableShowLogo=إظهار شعار الشركة في القائمة CompanyInfo=الشركة | المؤسسة -CompanyIds=Company/Organization identities +CompanyIds=هويات الشركة / المنظمة CompanyName=اسم CompanyAddress=عنوان CompanyZip=الرمز البريدي @@ -1182,50 +1182,50 @@ CompanyTown=مدينة CompanyCountry=قطر CompanyCurrency=العملة الرئيسية CompanyObject=وجوه من الشركة -IDCountry=ID country +IDCountry=بلد الهوية Logo=شعار LogoDesc=الشعار الرئيسي للشركة . سوف يستخدم في الملفات المولدة (صيغة المستندات المتنقلة ....) -LogoSquarred=Logo (squarred) -LogoSquarredDesc=Must be a squarred icon (width = height). This logo will be used as the favorite icon or other need like for the top menu bar (if not disabled into display setup). +LogoSquarred=الشعار (مربّع) +LogoSquarredDesc=يجب أن تكون أيقونة مربعة الشكل (العرض = الارتفاع). سيتم استخدام هذا الشعار كرمز مفضل أو حاجة أخرى مثل شريط القائمة العلوي (إذا لم يتم تعطيله في إعداد العرض). DoNotSuggestPaymentMode=لا توحي NoActiveBankAccountDefined=لا يعرف في حساب مصرفي نشط OwnerOfBankAccount=صاحب الحساب المصرفي %s BankModuleNotActive=الحسابات المصرفية وحدة لا يمكن -ShowBugTrackLink=Show the link "%s" -ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' +ShowBugTrackLink=أظهر الارتباط " %s " +ShowBugTrackLinkDesc=اتركه فارغًا لعدم عرض هذا الرابط ، استخدم القيمة 'github' للرابط إلى مشروع Dolibarr أو حدد عنوان url مباشرةً 'https: // ...' Alerts=تنبيهات -DelaysOfToleranceBeforeWarning=Displaying a warning alert for... -DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. -Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed -Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time -Delays_MAIN_DELAY_TASKS_TODO=Planned task (project tasks) not completed -Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Order not processed -Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Purchase order not processed -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Proposal not closed -Delays_MAIN_DELAY_PROPALS_TO_BILL=Proposal not billed -Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Service to activate -Delays_MAIN_DELAY_RUNNING_SERVICES=Expired service -Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Unpaid vendor invoice -Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Unpaid customer invoice -Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Pending bank reconciliation -Delays_MAIN_DELAY_MEMBERS=Delayed membership fee -Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Check deposit not done -Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve -Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve -SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. +DelaysOfToleranceBeforeWarning=يتم الآن عرض تنبيه تحذيري لـ ... +DelaysOfToleranceDesc=اضبط التأخير قبل ظهور رمز التنبيه %s على الشاشة للعنصر المتأخر. +Delays_MAIN_DELAY_ACTIONS_TODO=الأحداث المخطط لها (أحداث جدول الأعمال) لم تكتمل +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=المشروع لم يغلق في الوقت المناسب +Delays_MAIN_DELAY_TASKS_TODO=المهمة المخططة (مهام المشروع) لم تكتمل +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=الطلب لم تتم معالجته +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=لم تتم معالجة طلب الشراء +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=الاقتراح غير مغلق +Delays_MAIN_DELAY_PROPALS_TO_BILL=الاقتراح غير مفوتر +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=الخدمة للتفعيل +Delays_MAIN_DELAY_RUNNING_SERVICES=خدمة منتهية الصلاحية +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=فاتورة بائع غير مدفوعة +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=فاتورة العميل غير مدفوعة +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=في انتظار تسوية البنك +Delays_MAIN_DELAY_MEMBERS=رسوم العضوية المؤجلة +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=إيداع الشيكات لم يتم +Delays_MAIN_DELAY_EXPENSEREPORTS=تقرير المصروفات للموافقة عليه +Delays_MAIN_DELAY_HOLIDAYS=طلبات الإجازة للموافقة +SetupDescription1=قبل البدء في استخدام Dolibarr ، يجب تحديد بعض المعلمات الأولية وتمكين / تكوين الوحدات النمطية. SetupDescription2=القسمان التاليان إلزاميان (المدخلان الأولان في قائمة الإعداد): SetupDescription3= %s -> %s

تُستخدم المعطيات الأساسية لتخصيص السلوك الافتراضي لتطبيقك (على سبيل المثال للميزات المتعلقة بالبلد). SetupDescription4= %s -> %s

هذا البرنامج عبارة عن مجموعة من العديد من الوحدات | التطبيقات. يجب تمكين وتكوين الوحدات النمطية التى تحتاجها. ستظهر فى القائمة بعد تمكين هذه الوحدات. SetupDescription5=قائمة الإعدادات الأخرى تقوم بإدارة المعطيات الاختيارية. -SetupDescriptionLink=%s - %s -SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). -SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. -AuditedSecurityEvents=Security events that are audited -NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s -Audit=Security events +SetupDescriptionLink= %s - %s +SetupDescription3b=المعلمات الأساسية المستخدمة لتخصيص السلوك الافتراضي لتطبيقك (مثل الميزات المتعلقة بالبلد). +SetupDescription4b=هذا البرنامج عبارة عن مجموعة من العديد من الوحدات / التطبيقات. يجب تمكين الوحدات النمطية المتعلقة باحتياجاتك وتكوينها. ستظهر إدخالات القائمة مع تنشيط هذه الوحدات. +AuditedSecurityEvents=الأحداث الأمنية التي يتم تدقيقها +NoSecurityEventsAreAduited=لم يتم تدقيق أي أحداث أمنية. يمكنك تمكينهم من القائمة %s +Audit=أحداث أمنية InfoDolibarr=حول دوليبار InfoBrowser=حول المتصفح -InfoOS=About OS +InfoOS=حول OS InfoWebServer=حول خادم الويب InfoDatabase=حول قاعدة البيانات InfoPHP=حول PHP @@ -1240,201 +1240,201 @@ AreaForAdminOnly=يمكن تعيين معطيات الإعدادات بواسط SystemInfoDesc=معلومات النظام هي معلومات فنية متنوعة تحصل عليها في وضع القراءة فقط وتكون مرئية للمسؤولين فقط. SystemAreaForAdminOnly=هذه المنطقة متاحة للمستخدمين المسؤولين فقط. لا يمكن لأذونات مستخدم دوليبار تغيير هذا التقييد. CompanyFundationDesc=قم بتحرير معلومات شركتك | مؤسستك. ثم انقر فوق الزر "%s" في أسفل الصفحة عند الانتهاء. -AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. -AccountantFileNumber=Accountant code -DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. -AvailableModules=Available app/modules +AccountantDesc=إذا كان لديك محاسب / محاسب خارجي ، يمكنك هنا تعديل المعلومات الخاصة به. +AccountantFileNumber=كود المحاسب +DisplayDesc=يمكن هنا تعديل المعلمات التي تؤثر على شكل التطبيق وطريقة عرضه. +AvailableModules=التطبيق / الوحدات المتاحة ToActivateModule=لتنشيط الوحدات ، انتقل إلى منطقة الإعدادات (الصفحة الرئيسية-> الإعدادات-> الوحدات النمطية). SessionTimeOut=نفذ وقت الجلسة -SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every %s/%s access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is. -SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every %s seconds (= value of parameter session.gc_maxlifetime), so changing the value here has no effect. You must ask the server administrator to change session delay. +SessionExplanation=يضمن هذا الرقم أن الجلسة لن تنتهي أبدًا قبل هذا التأخير ، إذا تم إجراء منظف الجلسة بواسطة منظف جلسة PHP الداخلي (ولا شيء آخر). لا يضمن منظف جلسة PHP الداخلي انتهاء صلاحية الجلسة بعد هذا التأخير. ستنتهي صلاحيته ، بعد هذا التأخير ، وعندما يتم تشغيل منظف الجلسة ، لذلك كل %s / %s ، ولكن فقط أثناء الوصول الذي تم بواسطة جلسات أخرى (إذا كانت القيمة 0 ، فهذا يعني أن مسح الجلسة الخارجية يتم فقط عن طريق معالجة).
ملاحظة: في بعض الخوادم المزودة بآلية تنظيف جلسة خارجية (cron under debian ، ubuntu ...) ، يمكن إتلاف الجلسات بعد فترة محددة بواسطة إعداد خارجي ، بغض النظر عن القيمة المدخلة هنا. +SessionsPurgedByExternalSystem=يبدو أنه تم تنظيف الجلسات على هذا الخادم بواسطة آلية خارجية (cron تحت debian ، ubuntu ...) ، ربما كل %s ثواني (= قيمة المعلمة جلسة. يجب أن تطلب من مسؤول الخادم تغيير تأخير الجلسة. TriggersAvailable=محفزات متاحة -TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggersDesc=المشغلات هي ملفات من شأنها تعديل سلوك سير عمل Dolibarr بمجرد نسخها في الدليل htdocs / core / triggers . إنهم يدركون إجراءات جديدة ، يتم تنشيطها في أحداث Dolibarr (إنشاء شركة جديدة ، والتحقق من صحة الفاتورة ، ...). TriggerDisabledByName=يتم تعطيل المشغلات الموجودة في هذا الملف بواسطة اللاحقة -NORUN في أسمائها. TriggerDisabledAsModuleDisabled=المشغلات في هذا الملف معطلة لأن الوحدة النمطية %s معطلة. TriggerAlwaysActive=المشغلات في هذا الملف نشطة دائمًا ، مهما كانت وحدات دوليبار النشطة. TriggerActiveAsModuleActive=المشغلات في هذا الملف نشطة حيث تم تمكين الوحدة النمطية %s . GeneratedPasswordDesc=اختر الطريقة التي سيتم استخدامها لكلمات المرور التي يتم إنشاؤها تلقائيًا. -DictionaryDesc=Insert all reference data. You can add your values to the default. -ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. -MiscellaneousDesc=All other security related parameters are defined here. +DictionaryDesc=أدخل جميع البيانات المرجعية. يمكنك إضافة القيم الخاصة بك إلى الافتراضي. +ConstDesc=تتيح لك هذه الصفحة تحرير (تجاوز) المعلمات غير المتوفرة في الصفحات الأخرى. هذه معلمات محجوزة في الغالب للمطورين / استكشاف الأخطاء وإصلاحها المتقدمة فقط. +MiscellaneousDesc=يتم تعريف جميع المعلمات الأخرى المتعلقة بالأمان هنا. LimitsSetup=حدود / الدقيقة الإعداد -LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here -MAIN_MAX_DECIMALS_UNIT=Max. decimals for unit prices -MAIN_MAX_DECIMALS_TOT=Max. decimals for total prices -MAIN_MAX_DECIMALS_SHOWN=Max. decimals for prices shown on screen. Add an ellipsis ... after this parameter (e.g. "2...") if you want to see "..." suffixed to the truncated price. -MAIN_ROUNDING_RULE_TOT=Step of rounding range (for countries where rounding is done on something other than base 10. For example, put 0.05 if rounding is done by 0.05 steps) +LimitsDesc=يمكنك تحديد الحدود والدقة والتحسينات التي تستخدمها Dolibarr هنا +MAIN_MAX_DECIMALS_UNIT=الأعلى. الكسور العشرية لأسعار الوحدات +MAIN_MAX_DECIMALS_TOT=الأعلى. الكسور العشرية لإجمالي الأسعار +MAIN_MAX_DECIMALS_SHOWN=الأعلى. الكسور العشرية للأسعار تظهر على الشاشة . أضف علامة حذف ... بعد هذه المعلمة (على سبيل المثال "2 ...") إذا كنت تريد مشاهدة " ... " ملحقًا بالسعر المقتطع. +MAIN_ROUNDING_RULE_TOT=خطوة نطاق التقريب (للبلدان التي يتم فيها التقريب على شيء آخر غير الأساس 10. على سبيل المثال ، ضع 0.05 إذا تم التقريب بمقدار 0.05 خطوة) UnitPriceOfProduct=صافي سعر وحدة من المنتج -TotalPriceAfterRounding=Total price (excl/vat/incl tax) after rounding +TotalPriceAfterRounding=السعر الإجمالي (غير شامل / ضريبة القيمة المضافة / شامل الضريبة) بعد التقريب ParameterActiveForNextInputOnly=معلمة فعالة للمساهمة المقبل فقط -NoEventOrNoAuditSetup=No security event has been logged. This is normal if Audit has not been enabled in the "Setup - Security - Events" page. -NoEventFoundWithCriteria=No security event has been found for this search criteria. +NoEventOrNoAuditSetup=لم يتم تسجيل أي حدث أمان. يعد هذا أمرًا طبيعيًا إذا لم يتم تمكين التدقيق في صفحة "الإعداد - الأمان - الأحداث". +NoEventFoundWithCriteria=لم يتم العثور على حدث أمان لمعايير البحث هذه. SeeLocalSendMailSetup=انظر الى إرسال البريد الإعداد المحلي -BackupDesc=A complete backup of a Dolibarr installation requires two steps. -BackupDesc2=Backup the contents of the "documents" directory (%s) containing all uploaded and generated files. This will also include all the dump files generated in Step 1. This operation may last several minutes. -BackupDesc3=Backup the structure and contents of your database (%s) into a dump file. For this, you can use the following assistant. -BackupDescX=The archived directory should be stored in a secure place. +BackupDesc=يتطلب استكمال تثبيت Dolibarr خطوتين. +BackupDesc2=قم بعمل نسخة احتياطية من محتويات دليل "الوثائق" ( %s ) الذي يحتوي على كل الملفات التي تم تحميلها وتوليدها. سيشمل هذا أيضًا جميع ملفات التفريغ التي تم إنشاؤها في الخطوة 1. قد تستغرق هذه العملية عدة دقائق. +BackupDesc3=قم بعمل نسخة احتياطية من بنية قاعدة البيانات ومحتوياتها ( %s ) في ملف تفريغ. لهذا ، يمكنك استخدام المساعد التالي. +BackupDescX=يجب تخزين الدليل المؤرشف في مكان آمن. BackupDescY=وقد ولدت وينبغي التخلص من الملفات المخزنة في مكان آمن. -BackupPHPWarning=Backup cannot be guaranteed with this method. Previous one recommended. -RestoreDesc=To restore a Dolibarr backup, two steps are required. -RestoreDesc2=Restore the backup file (zip file for example) of the "documents" directory to a new Dolibarr installation or into this current documents directory (%s). -RestoreDesc3=Restore the database structure and data from a backup dump file into the database of the new Dolibarr installation or into the database of this current installation (%s). Warning, once the restore is complete, you must use a login/password, that existed from the backup time/installation to connect again.
To restore a backup database into this current installation, you can follow this assistant. +BackupPHPWarning=لا يمكن ضمان النسخ الاحتياطي بهذه الطريقة. أوصت واحدة سابقة. +RestoreDesc=لاستعادة نسخة احتياطية Dolibarr ، يلزم إجراء خطوتين. +RestoreDesc2=قم باستعادة ملف النسخ الاحتياطي (ملف مضغوط على سبيل المثال) لدليل "المستندات" إلى تثبيت Dolibarr جديد أو في دليل المستندات الحالي هذا ( %s ). +RestoreDesc3=قم باستعادة بنية قاعدة البيانات والبيانات من ملف تفريغ النسخ الاحتياطي إلى قاعدة بيانات تثبيت Dolibarr الجديد أو في قاعدة البيانات الخاصة بهذا التثبيت الحالي ( %s ). تحذير ، بمجرد اكتمال الاستعادة ، يجب عليك استخدام تسجيل الدخول / كلمة المرور ، التي كانت موجودة من وقت / تثبيت النسخ الاحتياطي للاتصال مرة أخرى.
لاستعادة قاعدة بيانات نسخة احتياطية في التثبيت الحالي ، يمكنك اتباع هذا المساعد. RestoreMySQL=استيراد MySQL ForcedToByAModule=هذه القاعدة %s الى جانب تفعيل وحدة -ValueIsForcedBySystem=This value is forced by the system. You can't change it. -PreviousDumpFiles=Existing backup files -PreviousArchiveFiles=Existing archive files -WeekStartOnDay=First day of the week -RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Program version %s differs from Database version %s) +ValueIsForcedBySystem=هذه القيمة مفروضة من قبل النظام. لا يمكنك تغييره. +PreviousDumpFiles=ملفات النسخ الاحتياطي الموجودة +PreviousArchiveFiles=ملفات الأرشيف الموجودة +WeekStartOnDay=اول يوم من الاسبوع +RunningUpdateProcessMayBeRequired=يبدو أن تشغيل عملية الترقية مطلوب (إصدار البرنامج %s يختلف عن إصدار قاعدة البيانات %s) YouMustRunCommandFromCommandLineAfterLoginToUser=يجب تشغيل هذا الأمر من سطر الأوامر بعد تسجيل الدخول إلى قذيفة مع المستخدم %s أو يجب عليك إضافة خيار -w في نهاية سطر الأوامر لتوفير %s كلمة المرور. YourPHPDoesNotHaveSSLSupport=وظائف خدمة تصميم المواقع لا تتوفر في بي الخاص بك DownloadMoreSkins=مزيد من جلود بتحميل -SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset -SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset -ShowProfIdInAddress=Show professional ID with addresses -ShowVATIntaInAddress=Hide intra-Community VAT number +SimpleNumRefModelDesc=لعرض الرقم المرجعي بالتنسيق %syymm-nnnn حيث yy السنة و mm الشهر و nnnn هو رقم متسلسل يتزايد تلقائيًا بدون إعادة تعيين +SimpleNumRefNoDateModelDesc=إرجاع الرقم المرجعي بالتنسيق %s-nnnn حيث nnnn عبارة عن رقم تزايد تلقائي متسلسل بدون إعادة تعيين +ShowProfIdInAddress=إظهار الهوية المهنية مع العناوين +ShowVATIntaInAddress=إخفاء رقم ضريبة القيمة المضافة داخل المجتمع TranslationUncomplete=ترجمة جزئية -MAIN_DISABLE_METEO=Disable weather thumb -MeteoStdMod=Standard mode -MeteoStdModEnabled=Standard mode enabled -MeteoPercentageMod=Percentage mode -MeteoPercentageModEnabled=Percentage mode enabled -MeteoUseMod=Click to use %s +MAIN_DISABLE_METEO=تعطيل الإبهام الطقس +MeteoStdMod=الوضع القياسي +MeteoStdModEnabled=تم تمكين الوضع القياسي +MeteoPercentageMod=وضع النسبة المئوية +MeteoPercentageModEnabled=تم تفعيل وضع النسبة المئوية +MeteoUseMod=انقر لاستخدام %s TestLoginToAPI=اختبار الدخول إلى API -ProxyDesc=Some features of Dolibarr require internet access. Define here the internet connection parameters such as access through a proxy server if necessary. -ExternalAccess=External/Internet Access -MAIN_PROXY_USE=Use a proxy server (otherwise access is direct to the internet) -MAIN_PROXY_HOST=Proxy server: Name/Address -MAIN_PROXY_PORT=Proxy server: Port -MAIN_PROXY_USER=Proxy server: Login/User -MAIN_PROXY_PASS=Proxy server: Password -DefineHereComplementaryAttributes=Define any additional / custom attributes that must be added to: %s +ProxyDesc=تتطلب بعض ميزات Dolibarr الوصول إلى الإنترنت. حدد هنا معلمات الاتصال بالإنترنت مثل الوصول من خلال خادم وكيل إذا لزم الأمر. +ExternalAccess=الوصول الخارجي / الإنترنت +MAIN_PROXY_USE=استخدم خادمًا وكيلاً (وإلا فسيكون الوصول مباشرًا إلى الإنترنت) +MAIN_PROXY_HOST=الخادم الوكيل: الاسم / العنوان +MAIN_PROXY_PORT=الخادم الوكيل: المنفذ +MAIN_PROXY_USER=الخادم الوكيل: تسجيل الدخول / المستخدم +MAIN_PROXY_PASS=الخادم الوكيل: كلمة المرور +DefineHereComplementaryAttributes=حدد أي سمات إضافية / مخصصة يجب إضافتها إلى: %s ExtraFields=تكميلية سمات ExtraFieldsLines=سمات التكميلية (خطوط) -ExtraFieldsLinesRec=Complementary attributes (templates invoices lines) +ExtraFieldsLinesRec=السمات التكميلية (قوالب سطور الفواتير) ExtraFieldsSupplierOrdersLines=سمات التكميلية (خطوط النظام) ExtraFieldsSupplierInvoicesLines=سمات التكميلية (خطوط الفاتورة) -ExtraFieldsThirdParties=Complementary attributes (third party) -ExtraFieldsContacts=Complementary attributes (contacts/address) +ExtraFieldsThirdParties=السمات التكميلية (طرف ثالث) +ExtraFieldsContacts=السمات التكميلية (جهات الاتصال / العنوان) ExtraFieldsMember=سمات التكميلية (عضو) ExtraFieldsMemberType=سمات التكميلية (النوع الأعضاء) ExtraFieldsCustomerInvoices=سمات التكميلية (الفواتير) -ExtraFieldsCustomerInvoicesRec=Complementary attributes (templates invoices) +ExtraFieldsCustomerInvoicesRec=السمات التكميلية (قوالب الفواتير) ExtraFieldsSupplierOrders=سمات التكميلية (أوامر) ExtraFieldsSupplierInvoices=سمات التكميلية (الفواتير) ExtraFieldsProject=سمات التكميلية (مشاريع) ExtraFieldsProjectTask=سمات التكميلية (المهام) -ExtraFieldsSalaries=Complementary attributes (salaries) +ExtraFieldsSalaries=سمات تكميلية (رواتب) ExtraFieldHasWrongValue=السمة %s له قيمة خاطئة. AlphaNumOnlyLowerCharsAndNoSpace=alphanumericals فقط وشخصيات الحالة الأدنى دون الفضاء SendmailOptionNotComplete=تحذير، في بعض أنظمة لينكس، لإرسال البريد الإلكتروني من البريد الإلكتروني الخاص بك، يجب أن تنسخ الإعداد تنفيذ conatins الخيار، على درجة البكالوريوس (mail.force_extra_parameters المعلمة في ملف php.ini الخاص بك). إذا كان بعض المستفيدين لم تلقي رسائل البريد الإلكتروني، في محاولة لتعديل هذه المعلمة PHP مع mail.force_extra_parameters =-BA). PathToDocuments=الطريق إلى وثائق PathDirectory=دليل -SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might not be parsed correctly by some receiving mail servers. The result is that some mails can't be read by people hosted by those bugged platforms. This is the case for some Internet providers (Ex: Orange in France). This is not a problem with Dolibarr or PHP but with the receiving mail server. You can however add an option MAIN_FIX_FOR_BUGGED_MTA to 1 in Setup - Other to modify Dolibarr to avoid this. However, you may experience problems with other servers that strictly use the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" which has no disadvantages. -TranslationSetup=Setup of translation -TranslationKeySearch=Search a translation key or string -TranslationOverwriteKey=Overwrite a translation string -TranslationDesc=How to set the display language:
* Default/Systemwide: menu Home -> Setup -> Display
* Per user: Click on the username at the top of the screen and modify the User Display Setup tab on the user card. -TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" -TranslationOverwriteDesc2=You can use the other tab to help you know which translation key to use -TranslationString=Translation string -CurrentTranslationString=Current translation string -WarningAtLeastKeyOrTranslationRequired=A search criteria is required at least for key or translation string -NewTranslationStringToShow=New translation string to show -OriginalValueWas=The original translation is overwritten. Original value was:

%s -TransKeyWithoutOriginalValue=You forced a new translation for the translation key '%s' that does not exist in any language files -TitleNumberOfActivatedModules=Activated modules -TotalNumberOfActivatedModules=Activated modules: %s / %s +SendmailOptionMayHurtBuggedMTA=ستؤدي ميزة إرسال رسائل البريد باستخدام الطريقة "PHP mail Direct" إلى إنشاء رسالة بريد قد لا يتم تحليلها بشكل صحيح بواسطة بعض خوادم البريد المستقبلة. والنتيجة هي أن بعض الرسائل لا يمكن قراءتها من قبل الأشخاص الذين تستضيفهم تلك المنصات التي تم التنصت عليها. هذا هو الحال بالنسبة لبعض مزودي خدمة الإنترنت (على سبيل المثال: Orange في فرنسا). هذه ليست مشكلة في Dolibarr أو PHP ولكن مع خادم البريد المستلم. ومع ذلك ، يمكنك إضافة خيار MAIN_FIX_FOR_BUGGED_MTA إلى 1 في الإعداد - أخرى لتعديل Dolibarr لتجنب ذلك. ومع ذلك ، قد تواجه مشكلات مع الخوادم الأخرى التي تستخدم معيار SMTP بدقة. الحل الآخر (موصى به) هو استخدام طريقة "SMTP socket library" التي ليس لها عيوب. +TranslationSetup=إعداد الترجمة +TranslationKeySearch=ابحث عن مفتاح ترجمة أو سلسلة +TranslationOverwriteKey=الكتابة فوق سلسلة الترجمة +TranslationDesc=كيفية ضبط لغة العرض:
* الافتراضي / على مستوى النظام: القائمة الصفحة الرئيسية -> الإعداد -> عرض
* لكل مستخدم: انقر فوق اسم المستخدم في الجزء العلوي من الشاشة وقم بتعديل علامة التبويب a0eb7843947 المستخدم بطاقة. +TranslationOverwriteDesc=يمكنك أيضًا تجاوز السلاسل التي تملأ الجدول التالي. اختر لغتك من القائمة المنسدلة "%s" ، أدخل سلسلة مفتاح الترجمة في "%s" وترجمتك الجديدة إلى "%s" +TranslationOverwriteDesc2=يمكنك استخدام علامة التبويب الأخرى لمساعدتك في معرفة مفتاح الترجمة الذي يجب استخدامه +TranslationString=سلسلة الترجمة +CurrentTranslationString=سلسلة الترجمة الحالية +WarningAtLeastKeyOrTranslationRequired=مطلوب معايير بحث على الأقل للمفتاح أو سلسلة الترجمة +NewTranslationStringToShow=سلسلة ترجمة جديدة للعرض +OriginalValueWas=تمت الكتابة فوق الترجمة الأصلية. كانت القيمة الأصلية:

%s +TransKeyWithoutOriginalValue=لقد فرضت ترجمة جديدة لمفتاح الترجمة ' %s ' غير موجود في أي ملفات لغة +TitleNumberOfActivatedModules=الوحدات المفعلة +TotalNumberOfActivatedModules=الوحدات المنشطة: %s / %s YouMustEnableOneModule=يجب على الأقل تمكين 1 وحدة -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation -ClassNotFoundIntoPathWarning=Class %s not found in PHP path +YouMustEnableTranslationOverwriteBefore=يجب عليك أولاً تمكين الكتابة فوق الترجمة للسماح لك باستبدال الترجمة +ClassNotFoundIntoPathWarning=الفئة %s غير موجودة في مسار PHP YesInSummer=نعم في الصيف -OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
+OnlyFollowingModulesAreOpenedToExternalUsers=لاحظ أن الوحدات النمطية التالية فقط متاحة للمستخدمين الخارجيين (بغض النظر عن أذونات هؤلاء المستخدمين) وفقط في حالة منح الأذونات:
SuhosinSessionEncrypt=تخزين جلسة المشفرة بواسطة Suhosin ConditionIsCurrently=الشرط هو حاليا %s -YouUseBestDriver=You use driver %s which is the best driver currently available. -YouDoNotUseBestDriver=You use driver %s but driver %s is recommended. -NbOfObjectIsLowerThanNoPb=You have only %s %s in the database. This does not require any particular optimization. -ComboListOptim=Combo list loading optimization +YouUseBestDriver=أنت تستخدم برنامج التشغيل %s وهو أفضل برنامج تشغيل متوفر حاليًا. +YouDoNotUseBestDriver=يمكنك استخدام برنامج التشغيل %s ولكن يوصى باستخدام برنامج التشغيل %s. +NbOfObjectIsLowerThanNoPb=لديك فقط %s %s في قاعدة البيانات. هذا لا يتطلب أي تحسين معين. +ComboListOptim=التحسين تحميل قائمة التحرير والسرد SearchOptim=البحث الأمثل -YouHaveXObjectUseComboOptim=You have %s %s in the database. You can go into setup of module to enable loading of combo list on key pressed event. -YouHaveXObjectUseSearchOptim=You have %s %s in the database. You can add the constant %s to 1 in Home-Setup-Other. -YouHaveXObjectUseSearchOptimDesc=This limits the search to the beginning of strings which makes it possible for the database to use indexes and you should get an immediate response. -YouHaveXObjectAndSearchOptimOn=You have %s %s in the database and constant %s is set to %s in Home-Setup-Other. -BrowserIsOK=You are using the %s web browser. This browser is ok for security and performance. -BrowserIsKO=You are using the %s web browser. This browser is known to be a bad choice for security, performance and reliability. We recommend using Firefox, Chrome, Opera or Safari. -PHPModuleLoaded=PHP component %s is loaded -PreloadOPCode=Preloaded OPCode is used -AddRefInList=Display Customer/Vendor ref. into combo lists.
Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". -AddVatInList=Display Customer/Vendor VAT number into combo lists. -AddAdressInList=Display Customer/Vendor adress into combo lists.
Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". -AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town info list (select list or combobox)
Contacts will appear with a name format of "Dupond Durand - dupond.durand@email.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand". -AskForPreferredShippingMethod=Ask for preferred shipping method for Third Parties. +YouHaveXObjectUseComboOptim=لديك %s %s في قاعدة البيانات. يمكنك الانتقال إلى إعداد الوحدة لتمكين تحميل قائمة التحرير والسرد عند الضغط على مفتاح الحدث. +YouHaveXObjectUseSearchOptim=لديك %s %s في قاعدة البيانات. يمكنك إضافة الثابت %s إلى 1 في Home-Setup-Other. +YouHaveXObjectUseSearchOptimDesc=هذا يقصر البحث على بداية السلاسل مما يجعل من الممكن لقاعدة البيانات استخدام الفهارس ويجب أن تحصل على استجابة فورية. +YouHaveXObjectAndSearchOptimOn=لديك %s %s في قاعدة البيانات ويتم تعيين ثابت %s على %s في Home-Setup-Other. +BrowserIsOK=أنت تستخدم متصفح الويب %s. هذا المتصفح مناسب للأمان والأداء. +BrowserIsKO=أنت تستخدم متصفح الويب %s. يُعرف هذا المتصفح بأنه اختيار سيئ للأمان والأداء والموثوقية. نوصي باستخدام Firefox أو Chrome أو Opera أو Safari. +PHPModuleLoaded=تم تحميل مكون PHP %s +PreloadOPCode=يتم استخدام OPCode مسبقة التحميل +AddRefInList=عرض مرجع العميل / البائع. في قوائم التحرير والسرد.
ستظهر الجهات الخارجية بتنسيق اسم "CC12345 - SC45678 - The Big Company corp." بدلاً من "The Big Company Corp". +AddVatInList=عرض رقم ضريبة القيمة المضافة للعميل / البائع في قوائم التحرير والسرد. +AddAdressInList=عرض عنوان العميل / البائع في قوائم التحرير والسرد.
ستظهر الجهات الخارجية بتنسيق اسم "The Big Company corp. - 21 jump street 123456 Big town - USA" بدلاً من "The Big Company corp". +AddEmailPhoneTownInContactList=عرض البريد الإلكتروني لجهة الاتصال (أو الهواتف إذا لم يتم تحديدها) وقائمة معلومات المدينة (قائمة محددة أو مربع تحرير وسرد)
ستظهر جهات الاتصال بتنسيق اسم "Dupond Durand - dupond.durand@email.com - Paris" أو "Dupond Durand - 06 07 59 65 66 - باريس بدلاً من "دوبوند دوراند". +AskForPreferredShippingMethod=اسأل عن طريقة الشحن المفضلة للأطراف الثالثة. FieldEdition=طبعة من ميدان%s FillThisOnlyIfRequired=مثال: +2 (ملء إلا إذا تعوض توقيت المشاكل من ذوي الخبرة) GetBarCode=الحصول على الباركود -NumberingModules=Numbering models -DocumentModules=Document models +NumberingModules=نماذج الترقيم +DocumentModules=نماذج الوثائق ##### Module password generation -PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. -PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. +PasswordGenerationStandard=قم بإرجاع كلمة المرور التي تم إنشاؤها وفقًا لخوارزمية Dolibarr الداخلية: %s أحرف تحتوي على أرقام وأحرف مشتركة بأحرف صغيرة. +PasswordGenerationNone=لا تقترح كلمة مرور تم إنشاؤها. يجب كتابة كلمة المرور يدويًا. PasswordGenerationPerso=ترجع كلمة المرور الخاصة بك وفقا لتكوين المعرفة شخصيا. SetupPerso=وفقا لتكوين الخاصة بك PasswordPatternDesc=وصف نمط كلمة المرور ##### Users setup ##### -RuleForGeneratedPasswords=Rules to generate and validate passwords -DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page +RuleForGeneratedPasswords=قواعد لتوليد والتحقق من صحة كلمات المرور +DisableForgetPasswordLinkOnLogonPage=لا تعرض رابط "نسيت كلمة المرور" في صفحة تسجيل الدخول UsersSetup=شاهد الإعداد وحدة -UserMailRequired=Email required to create a new user -UserHideInactive=Hide inactive users from all combo lists of users (Not recommended: this may means you won't be able to filter or search on old users on some pages) -UsersDocModules=Document templates for documents generated from user record -GroupsDocModules=Document templates for documents generated from a group record +UserMailRequired=البريد الإلكتروني مطلوب لإنشاء مستخدم جديد +UserHideInactive=إخفاء المستخدمين غير النشطين من جميع قوائم التحرير والسرد للمستخدمين (غير مستحسن: قد يعني هذا أنك لن تتمكن من التصفية أو البحث عن المستخدمين القدامى في بعض الصفحات) +UsersDocModules=قوالب المستندات للمستندات التي تم إنشاؤها من سجل المستخدم +GroupsDocModules=قوالب المستندات للمستندات التي تم إنشاؤها من سجل المجموعة ##### HRM setup ##### HRMSetup=HRM وحدة الإعداد ##### Company setup ##### CompanySetup=وحدة الإعداد للشركات -CompanyCodeChecker=Options for automatic generation of customer/vendor codes -AccountCodeManager=Options for automatic generation of customer/vendor accounting codes -NotificationsDesc=Email notifications can be sent automatically for some Dolibarr events.
Recipients of notifications can be defined: -NotificationsDescUser=* per user, one user at a time. -NotificationsDescContact=* per third-party contacts (customers or vendors), one contact at a time. -NotificationsDescGlobal=* or by setting global email addresses in the setup page of the module. -ModelModules=Document Templates -DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) +CompanyCodeChecker=خيارات الإنشاء التلقائي لرموز العملاء / البائعين +AccountCodeManager=خيارات الإنشاء التلقائي لأكواد محاسبة العملاء / البائعين +NotificationsDesc=يمكن إرسال إشعارات البريد الإلكتروني تلقائيًا لبعض أحداث Dolibarr.
يمكن تحديد مستلمي الإخطارات: +NotificationsDescUser=* لكل مستخدم ، مستخدم واحد في كل مرة. +NotificationsDescContact=* لكل جهات اتصال خارجية (عملاء أو بائعين) ، جهة اتصال واحدة في كل مرة. +NotificationsDescGlobal=* أو عن طريق تعيين عناوين البريد الإلكتروني العمومية في صفحة الإعداد للوحدة. +ModelModules=قوالب المستندات +DocumentModelOdt=إنشاء المستندات من قوالب OpenDocument (ملفات .ODT / .ODS من LibreOffice ، OpenOffice ، KOffice ، TextEdit ، ...) WatermarkOnDraft=علامة مائية على مشروع الوثيقة JSOnPaimentBill=ميزة تفعيل لتدوين كلمات خطوط المبلغ على شكل دفع -CompanyIdProfChecker=Rules for Professional IDs -MustBeUnique=Must be unique? -MustBeMandatory=Mandatory to create third parties (if VAT number or type of company defined) ? -MustBeInvoiceMandatory=Mandatory to validate invoices? -TechnicalServicesProvided=Technical services provided +CompanyIdProfChecker=قواعد معرفات المحترفين +MustBeUnique=هل يجب أن تكون فريدة من نوعها؟ +MustBeMandatory=إلزامي لإنشاء أطراف ثالثة (إذا تم تحديد رقم ضريبة القيمة المضافة أو نوع الشركة)؟ +MustBeInvoiceMandatory=إلزامي للتحقق من صحة الفواتير؟ +TechnicalServicesProvided=الخدمات الفنية المقدمة #####DAV ##### -WebDAVSetupDesc=This is the link to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory access allowed) and a "private" directory that needs an existing login account/password for access. -WebDavServer=Root URL of %s server: %s +WebDAVSetupDesc=هذا هو الرابط للوصول إلى دليل WebDAV. يحتوي على dir "عام" مفتوح لأي مستخدم يعرف عنوان URL (إذا كان الوصول إلى الدليل العام مسموحًا به) ودليل "خاص" يحتاج إلى حساب تسجيل دخول موجود / كلمة مرور للوصول. +WebDavServer=عنوان URL الجذر لخادم %s: %s ##### Webcal setup ##### WebCalUrlForVCalExport=تصدير صلة %s شكل متاح على الوصلة التالية : %s ##### Invoices ##### BillsSetup=وحدة إعداد الفواتير BillsNumberingModule=الفواتير والقروض وتلاحظ وحدة الترقيم BillsPDFModules=فاتورة نماذج الوثائق -BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type -PaymentsPDFModules=Payment documents models +BillsPDFModulesAccordindToInvoiceType=نماذج مستندات الفاتورة حسب نوع الفاتورة +PaymentsPDFModules=نماذج مستندات الدفع ForceInvoiceDate=قوة تاريخ الفاتورة تاريخ المصادقة على -SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice -SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account -SuggestPaymentByChequeToAddress=Suggest payment by check to +SuggestedPaymentModesIfNotDefinedInInvoice=وضع المدفوعات المقترح على الفاتورة بشكل افتراضي إذا لم يتم تحديده في الفاتورة +SuggestPaymentByRIBOnAccount=اقترح الدفع عن طريق السحب على الحساب +SuggestPaymentByChequeToAddress=اقترح الدفع بشيك ل FreeLegalTextOnInvoices=نص حر على الفواتير WatermarkOnDraftInvoices=العلامة المائية على مشروع الفواتير (أي إذا فارغ) PaymentsNumberingModule=المدفوعات نموذج الترقيم SuppliersPayment=مدفوعات الموردين -SupplierPaymentSetup=Vendor payments setup -InvoiceCheckPosteriorDate=Check facture date before validation -InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +SupplierPaymentSetup=إعداد مدفوعات البائعين +InvoiceCheckPosteriorDate=تحقق من تاريخ التجهيز قبل المصادقة +InvoiceCheckPosteriorDateHelp=يُمنع التحقق من صحة الفاتورة إذا كان تاريخها سابقًا لتاريخ آخر فاتورة من نفس النوع. ##### Proposals ##### PropalSetup=وحدة إعداد مقترحات تجارية ProposalsNumberingModules=اقتراح نماذج تجارية الترقيم ProposalsPDFModules=اقتراح نماذج الوثائق التجارية -SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal +SuggestedPaymentModesIfNotDefinedInProposal=وضع المدفوعات المقترح عند الاقتراح بشكل افتراضي إذا لم يتم تحديده في الاقتراح FreeLegalTextOnProposal=نص تجارية حرة على مقترحات WatermarkOnDraftProposal=العلامة المائية على مشاريع المقترحات التجارية (أي إذا فارغ) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=اسأل عن وجهة الحساب المصرفي للاقتراح @@ -1447,10 +1447,10 @@ WatermarkOnDraftSupplierProposal=العلامة المائية على مشروع BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=اسأل عن وجهة الحساب المصرفي للطلب السعر WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=طلب مستودع المصدر لأمر ##### Suppliers Orders ##### -BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=اسأل عن وجهة الحساب المصرفي لأمر الشراء ##### Orders ##### -SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sales order by default if not defined on the order -OrdersSetup=Sales Orders management setup +SuggestedPaymentModesIfNotDefinedInOrder=وضع المدفوعات المقترح في أمر المبيعات بشكل افتراضي إذا لم يتم تحديده في الأمر +OrdersSetup=إعداد إدارة أوامر المبيعات OrdersNumberingModules=أوامر الترقيم نمائط OrdersModelModule=وثائق من أجل النماذج FreeLegalTextOnOrders=بناء على أوامر النص الحر @@ -1473,12 +1473,12 @@ WatermarkOnDraftContractCards=العلامة المائية على مسودات MembersSetup=أعضاء وحدة الإعداد MemberMainOptions=الخيارات الرئيسية AdherentLoginRequired= إدارة تسجيل الدخول لكل عضو -AdherentMailRequired=Email required to create a new member +AdherentMailRequired=البريد الإلكتروني مطلوب لإنشاء عضو جديد MemberSendInformationByMailByDefault=مربع لإرسال الرسائل للأعضاء تأكيدا على افتراضي -MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated -VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes -MEMBER_REMINDER_EMAIL=Enable automatic reminder by email of expired subscriptions. Note: Module %s must be enabled and correctly setup to send reminders. -MembersDocModules=Document templates for documents generated from member record +MemberCreateAnExternalUserForSubscriptionValidated=قم بإنشاء تسجيل دخول مستخدم خارجي لكل اشتراك عضو جديد تم التحقق من صحته +VisitorCanChooseItsPaymentMode=يمكن للزائر الاختيار من بين طرق الدفع المتاحة +MEMBER_REMINDER_EMAIL=قم بتمكين التذكير التلقائي عبر البريد الإلكتروني بالاشتراكات منتهية الصلاحية. ملاحظة: يجب تمكين الوحدة النمطية %s وإعدادها بشكل صحيح لإرسال التذكيرات. +MembersDocModules=قوالب المستندات للوثائق التي تم إنشاؤها من سجل الأعضاء ##### LDAP setup ##### LDAPSetup=LDAP الإعداد LDAPGlobalParameters=المعايير العالمية @@ -1496,17 +1496,17 @@ LDAPSynchronizeUsers=تزامن Dolibarr المستخدمين LDAP LDAPSynchronizeGroups=تزامن مع Dolibarr مجموعات LDAP LDAPSynchronizeContacts=تزامن Dolibarr اتصالات مع LDAP LDAPSynchronizeMembers=التزامن بين أعضاء المؤسسة وحدة Dolibarr مع LDAP -LDAPSynchronizeMembersTypes=Organization of foundation's members types in LDAP +LDAPSynchronizeMembersTypes=تنظيم أنواع أعضاء المؤسسة في LDAP LDAPPrimaryServer=الخادم الرئيسي LDAPSecondaryServer=ثانوية الخادم LDAPServerPort=خادم الميناء -LDAPServerPortExample=Standard or StartTLS: 389, LDAPs: 636 +LDAPServerPortExample=قياسي أو StartTLS: 389 ، LDAPs: 636 LDAPServerProtocolVersion=بروتوكول النسخة LDAPServerUseTLS=استخدام TLS -LDAPServerUseTLSExample=Your LDAP server use StartTLS +LDAPServerUseTLSExample=يستخدم خادم LDAP الخاص بك StartTLS LDAPServerDn=خادم DN LDAPAdminDn=مدير DN -LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com or cn=Administrator,cn=Users,dc=example,dc=com for active directory) +LDAPAdminDnExample=DN الكامل (على سبيل المثال: cn = admin ، dc = example ، dc = com أو cn = Administrator ، cn = Users ، dc = example ، dc = com للدليل النشط) LDAPPassword=مدير البرنامج كلمة السر LDAPUserDn=المستخدمين DN LDAPUserDnExample=Complete DN (ex: ou=users,dc=society,dc=DN الكامل (مثلا : où= المستخدمين ، العاصمة= المجتمع ، العاصمة= كوم) @@ -1520,7 +1520,7 @@ LDAPDnContactActive=اتصالات تزامن LDAPDnContactActiveExample=تنشيط / تعطيل التزامن LDAPDnMemberActive=أعضاء تزامن LDAPDnMemberActiveExample=تنشيط / تعطيل التزامن -LDAPDnMemberTypeActive=Members types' synchronization +LDAPDnMemberTypeActive=مزامنة أنواع الأعضاء LDAPDnMemberTypeActiveExample=تنشيط / تعطيل التزامن LDAPContactDn=Dolibarr اتصالات 'DN LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=DN الكامل (مثلا : où= اتصالات العاصمة= المجتمع ، العاصمة= كوم) @@ -1528,8 +1528,8 @@ LDAPMemberDn=Dolibarr الأعضاء DN LDAPMemberDnExample=Complete DN (ex: ou=members,dc=society,dc=DN الكامل (مثلا : où= أعضاء العاصمة= المجتمع ، العاصمة= كوم) LDAPMemberObjectClassList=قائمة objectClass LDAPMemberObjectClassListExample=قائمة objectClass سجل تحديد السمات (مثلا : قمة inetOrgPerson أو أعلى ، لالنشط دليل المستخدم) -LDAPMemberTypeDn=Dolibarr members types DN -LDAPMemberTypepDnExample=Complete DN (ex: ou=memberstypes,dc=example,dc=com) +LDAPMemberTypeDn=أنواع أعضاء Dolibarr DN +LDAPMemberTypepDnExample=DN الكامل (على سبيل المثال: ou = أنواع الأعضاء ، dc = مثال ، dc = com) LDAPMemberTypeObjectClassList=قائمة objectClass LDAPMemberTypeObjectClassListExample=قائمة objectClass سجل تحديد السمات (مثلا : قمة groupOfUniqueNames) LDAPUserObjectClassList=قائمة objectClass @@ -1543,125 +1543,125 @@ LDAPTestSynchroContact=اختبار الاتصال 'sالتزامن LDAPTestSynchroUser=تجربة المستخدم التزامن LDAPTestSynchroGroup=اختبار المجموعة التزامن LDAPTestSynchroMember=اختبار العضو التزامن -LDAPTestSynchroMemberType=Test member type synchronization +LDAPTestSynchroMemberType=اختبار مزامنة نوع العضو LDAPTestSearch= اختبار البحث LDAP LDAPSynchroOK=تزامن اختبار ناجح LDAPSynchroKO=فشل تزامن الاختبار -LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that the connection to the server is correctly configured and allows LDAP updates +LDAPSynchroKOMayBePermissions=فشل اختبار المزامنة. تحقق من تكوين الاتصال بالخادم بشكل صحيح ويسمح بتحديثات LDAP LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP ناجحة (٪ ق= خادم بورت= ٪) LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=ربط برنامج التعاون الفني لخادم LDAP فشل (خادم ق= ٪ بورت= ٪) -LDAPBindOK=Connect/Authenticate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) -LDAPBindKO=Connect/Authenticate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindOK=نجح الاتصال / المصادقة على خادم LDAP (الخادم = %s ، المنفذ = %s ، المسؤول = %s ، كلمة المرور = %s) +LDAPBindKO=فشل الاتصال / المصادقة بخادم LDAP (الخادم = %s ، المنفذ = %s ، المسؤول = %s ، كلمة المرور = %s) LDAPSetupForVersion3=خادم LDAP تهيئتها للنسخة 3 LDAPSetupForVersion2=خادم LDAP لتكوين نسخة 2 LDAPDolibarrMapping=Dolibarr رسم الخرائط LDAPLdapMapping=LDAP الخرائط LDAPFieldLoginUnix=ادخل (يونكس) -LDAPFieldLoginExample=Example: uid +LDAPFieldLoginExample=مثال: uid LDAPFilterConnection=البحث عن مرشح -LDAPFilterConnectionExample=Example: &(objectClass=inetOrgPerson) -LDAPGroupFilterExample=Example: &(objectClass=groupOfUsers) +LDAPFilterConnectionExample=مثال: & (objectClass = inetOrgPerson) +LDAPGroupFilterExample=مثال: & (objectClass = groupOfUsers) LDAPFieldLoginSamba=ادخل (سامبا ، activedirectory) -LDAPFieldLoginSambaExample=Example: samaccountname +LDAPFieldLoginSambaExample=مثال: samaccountname LDAPFieldFullname=الاسم الكامل -LDAPFieldFullnameExample=Example: cn -LDAPFieldPasswordNotCrypted=Password not encrypted -LDAPFieldPasswordCrypted=Password encrypted -LDAPFieldPasswordExample=Example: userPassword -LDAPFieldCommonNameExample=Example: cn +LDAPFieldFullnameExample=مثال: cn +LDAPFieldPasswordNotCrypted=كلمة المرور غير مشفرة +LDAPFieldPasswordCrypted=تشفير كلمة المرور +LDAPFieldPasswordExample=مثال: userPassword +LDAPFieldCommonNameExample=مثال: cn LDAPFieldName=اسم -LDAPFieldNameExample=Example: sn +LDAPFieldNameExample=مثال: sn LDAPFieldFirstName=الاسم الأول -LDAPFieldFirstNameExample=Example: givenName +LDAPFieldFirstNameExample=مثال: الاسم المعطى LDAPFieldMail=عنوان البريد الإلكتروني -LDAPFieldMailExample=Example: mail +LDAPFieldMailExample=مثال: mail LDAPFieldPhone=رقم الهاتف المهني -LDAPFieldPhoneExample=Example: telephonenumber +LDAPFieldPhoneExample=مثال: رقم الهاتف LDAPFieldHomePhone=رقم الهاتف الشخصي -LDAPFieldHomePhoneExample=Example: homephone +LDAPFieldHomePhoneExample=مثال: هاتف منزلي LDAPFieldMobile=الهاتف الخليوي -LDAPFieldMobileExample=Example: mobile +LDAPFieldMobileExample=مثال: جوّال LDAPFieldFax=رقم الفاكس -LDAPFieldFaxExample=Example: facsimiletelephonenumber +LDAPFieldFaxExample=مثال: facsimiletelephonenumber LDAPFieldAddress=الشارع -LDAPFieldAddressExample=Example: street +LDAPFieldAddressExample=مثال: شارع LDAPFieldZip=الرمز البريدي -LDAPFieldZipExample=Example: postalcode +LDAPFieldZipExample=مثال: الرمز البريدي LDAPFieldTown=بلدة -LDAPFieldTownExample=Example: l +LDAPFieldTownExample=مثال: ل LDAPFieldCountry=قطر LDAPFieldDescription=وصف -LDAPFieldDescriptionExample=Example: description +LDAPFieldDescriptionExample=مثال: الوصف LDAPFieldNotePublic=ملاحظة عامة -LDAPFieldNotePublicExample=Example: publicnote +LDAPFieldNotePublicExample=مثال: publicnote LDAPFieldGroupMembers= أعضاء الفريق -LDAPFieldGroupMembersExample= Example: uniqueMember +LDAPFieldGroupMembersExample= مثال: فريد عضو LDAPFieldBirthdate=تاريخ الميلاد LDAPFieldCompany=شركة -LDAPFieldCompanyExample=Example: o +LDAPFieldCompanyExample=مثال: o LDAPFieldSid=سيد -LDAPFieldSidExample=Example: objectsid +LDAPFieldSidExample=على سبيل المثال: objectid LDAPFieldEndLastSubscription=تاريخ انتهاء الاكتتاب LDAPFieldTitle=الوظيفه LDAPFieldTitleExample=مثال: اللقب -LDAPFieldGroupid=Group id -LDAPFieldGroupidExample=Exemple : gidnumber -LDAPFieldUserid=User id -LDAPFieldUseridExample=Exemple : uidnumber -LDAPFieldHomedirectory=Home directory -LDAPFieldHomedirectoryExample=Exemple : homedirectory -LDAPFieldHomedirectoryprefix=Home directory prefix +LDAPFieldGroupid=معرف مجموعة +LDAPFieldGroupidExample=مثال: gidnumber +LDAPFieldUserid=معرف المستخدم +LDAPFieldUseridExample=مثال: uidnumber +LDAPFieldHomedirectory=الدليل الرئيسي +LDAPFieldHomedirectoryExample=مثال: دليل منزلي +LDAPFieldHomedirectoryprefix=بادئة الدليل الرئيسي LDAPSetupNotComplete=LDAP الإعداد غير كاملة (على آخرين علامات التبويب) LDAPNoUserOrPasswordProvidedAccessIsReadOnly=أي مدير أو كلمة السر. LDAP الوصول مجهولة وسيكون في قراءة فقط. LDAPDescContact=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr الاتصالات. LDAPDescUsers=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr المستخدمين. LDAPDescGroups=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr. LDAPDescMembers=تسمح لك هذه الصفحة لتحديد اسم LDAP الصفات LDAP شجرة في كل البيانات التي وجدت على Dolibarr أعضاء الوحدة. -LDAPDescMembersTypes=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members types. +LDAPDescMembersTypes=تسمح لك هذه الصفحة بتعريف اسم سمات LDAP في شجرة LDAP لكل بيانات موجودة في أنواع أعضاء Dolibarr. LDAPDescValues=مثال قيم تهدف لOpenLDAP مع مخططات بعد تحميلها : core.schema ، cosine.schema ، inetorgperson.schema). إذا كنت تستخدم thoose القيم وOpenLDAP تعديل LDAP الخاص بك ملف slapd.conf لجميع مخططات thoose تحميله. ForANonAnonymousAccess=لصحتها accès (لكتابة الحصول على سبيل المثال) PerfDolibarr=الإعداد أداء / تحسين تقرير -YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. -NotInstalled=Not installed. -NotSlowedDownByThis=Not slowed down by this. -NotRiskOfLeakWithThis=Not risk of leak with this. +YouMayFindPerfAdviceHere=تقدم هذه الصفحة بعض الفحوصات أو النصائح المتعلقة بالأداء. +NotInstalled=غير مثبت. +NotSlowedDownByThis=لا تبطئ من قبل هذا. +NotRiskOfLeakWithThis=لا يوجد خطر تسرب مع هذا. ApplicativeCache=مخبأ تطبيقي MemcachedNotAvailable=لم يتم العثور على مخبأ تطبيقي. يمكنك تحسين الأداء عن طريق تثبيت أعطها مخبأ خادم وحدة قادرة على استخدام هذا الخادم ذاكرة التخزين المؤقت.
مزيد من المعلومات هنا http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
لاحظ أن الكثير من مزود استضافة المواقع لا توفر مثل هذا الخادم ذاكرة التخزين المؤقت. MemcachedModuleAvailableButNotSetup=وحدة أعطها لمخبأ تطبيقي وجدت ولكن الإعداد من وحدة ليست كاملة. MemcachedAvailableAndSetup=يتم تمكين أعطها حدة مخصصة لاستخدام الخادم أعطها. OPCodeCache=مخبأ شفرة التشغيل -NoOPCodeCacheFound=No OPCode cache found. Maybe you are using an OPCode cache other than XCache or eAccelerator (good), or maybe you don't have OPCode cache (very bad). +NoOPCodeCacheFound=لم يتم العثور على مخبأ OPCode. ربما تستخدم ذاكرة تخزين مؤقت OPCode بخلاف XCache أو eAccelerator (جيد) ، أو ربما ليس لديك ذاكرة تخزين مؤقت OPCode (سيئة للغاية). HTTPCacheStaticResources=مخبأ HTTP للموارد ثابتة (المغلق، IMG، وجافا سكريبت) FilesOfTypeCached=يتم التخزين المؤقت الملفات من نوع%s من قبل خادم HTTP FilesOfTypeNotCached=لا يتم التخزين المؤقت الملفات من نوع %s من قبل خادم HTTP FilesOfTypeCompressed=يتم ضغط الملفات من نوع %s من قبل خادم HTTP FilesOfTypeNotCompressed=لا يتم ضغط الملفات من نوع %s من قبل خادم HTTP CacheByServer=ذاكرة التخزين المؤقت من قبل خادم -CacheByServerDesc=For example using the Apache directive "ExpiresByType image/gif A2592000" +CacheByServerDesc=على سبيل المثال ، باستخدام توجيه Apache "ExpiresByType image / gif A2592000" CacheByClient=الذاكرة المخبئية من خلال متصفح CompressionOfResources=ضغط الردود HTTP -CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" +CompressionOfResourcesDesc=على سبيل المثال باستخدام توجيه Apache "AddOutputFilterByType DEFLATE" TestNotPossibleWithCurrentBrowsers=مثل هذا الكشف التلقائي غير ممكن مع المتصفحات الحالية -DefaultValuesDesc=Here you may define the default value you wish to use when creating a new record, and/or default filters or the sort order when you list records. -DefaultCreateForm=Default values (to use on forms) -DefaultSearchFilters=Default search filters -DefaultSortOrder=Default sort orders -DefaultFocus=Default focus fields -DefaultMandatory=Mandatory form fields +DefaultValuesDesc=هنا يمكنك تحديد القيمة الافتراضية التي ترغب في استخدامها عند إنشاء سجل جديد ، و / أو عوامل التصفية الافتراضية أو ترتيب الفرز عند إدراج السجلات. +DefaultCreateForm=القيم الافتراضية (لاستخدامها في النماذج) +DefaultSearchFilters=مرشحات البحث الافتراضية +DefaultSortOrder=أوامر الفرز الافتراضية +DefaultFocus=حقول التركيز الافتراضية +DefaultMandatory=حقول النموذج الإلزامية ##### Products ##### ProductSetup=المنتجات وحدة الإعداد ServiceSetup=خدمات وحدة الإعداد ProductServiceSetup=منتجات وخدمات إعداد وحدات -NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit) -ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup) -OnProductSelectAddProductDesc=How to use the description of the products when adding a product as a line of a document -AutoFillFormFieldBeforeSubmit=Auto fill the description input field with the description of product -DoNotAutofillButAutoConcat=Do not autofill the input field with description of product. Description of the product will be concatenated to the entered description automatically. -DoNotUseDescriptionOfProdut=Description of the product will never be included into the description of lines of documents +NumberOfProductShowInSelect=الحد الأقصى لعدد المنتجات التي سيتم عرضها في قوائم الاختيار المختلط (0 = بلا حدود) +ViewProductDescInFormAbility=عرض أوصاف المنتج في سطور العناصر (وإلا اعرض الوصف في نافذة منبثقة تلميح) +OnProductSelectAddProductDesc=كيفية استخدام وصف المنتجات عند إضافة منتج كسطر من المستند +AutoFillFormFieldBeforeSubmit=تعبئة تلقائية لحقل إدخال الوصف مع وصف المنتج +DoNotAutofillButAutoConcat=لا تملأ حقل الإدخال تلقائيًا بوصف المنتج. سيتم ربط وصف المنتج بالوصف المُدخل تلقائيًا. +DoNotUseDescriptionOfProdut=لن يتم تضمين وصف المنتج مطلقًا في وصف سطور المستندات MergePropalProductCard=في تنشيط المنتج / الخدمة المرفقة التبويب ملفات خيار دمج المستند المنتج PDF إلى اقتراح PDF دازور إذا كان المنتج / الخدمة في الاقتراح -ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in forms in the language of the third party (otherwise in the language of the user) -UseSearchToSelectProductTooltip=Also if you have a large number of products (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. -UseSearchToSelectProduct=Wait until you press a key before loading content of product combo list (This may increase performance if you have a large number of products, but it is less convenient) +ViewProductDescInThirdpartyLanguageAbility=عرض أوصاف المنتجات في نماذج بلغة الطرف الثالث (بخلاف ذلك بلغة المستخدم) +UseSearchToSelectProductTooltip=أيضًا إذا كان لديك عدد كبير من المنتجات (> 100000) ، فيمكنك زيادة السرعة عن طريق تعيين PRODUCT_DONOTSEARCH_ANYWHERE ثابتًا إلى 1 في الإعداد-> أخرى. سيقتصر البحث بعد ذلك على بداية السلسلة. +UseSearchToSelectProduct=انتظر حتى تضغط على مفتاح قبل تحميل محتوى قائمة التحرير والسرد للمنتج (قد يؤدي ذلك إلى زيادة الأداء إذا كان لديك عدد كبير من المنتجات ، ولكنه أقل ملاءمة) SetDefaultBarcodeTypeProducts=النوع الافتراضي لاستخدام الباركود للمنتجات SetDefaultBarcodeTypeThirdParties=النوع الافتراضي لاستخدام الباركود لأطراف ثالثة UseUnits=تحديد وحدة قياس لكمية خلال النظام، الطبعة اقتراح أو فاتورة خطوط @@ -1676,10 +1676,10 @@ SyslogLevel=المستوى SyslogFilename=اسم الملف ومسار YouCanUseDOL_DATA_ROOT=يمكنك استخدام DOL_DATA_ROOT / dolibarr.log لملف الدخول في Dolibarr "وثائق" دليل. يمكنك أن تحدد مسارا مختلفا لتخزين هذا الملف. ErrorUnknownSyslogConstant=ثابت %s ليس ثابت سيسلوغ معروفة -OnlyWindowsLOG_USER=On Windows, only the LOG_USER facility will be supported -CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug) -SyslogFileNumberOfSaves=Number of backup logs to keep -ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency +OnlyWindowsLOG_USER=في نظام التشغيل Windows ، لن يتم دعم سوى منشأة LOG_USER +CompressSyslogs=ضغط ملفات سجل التصحيح ونسخها احتياطيًا (تم إنشاؤه بواسطة سجل الوحدة النمطية للتصحيح) +SyslogFileNumberOfSaves=عدد سجلات النسخ الاحتياطي المطلوب الاحتفاظ بها +ConfigureCleaningCronjobToSetFrequencyOfSaves=قم بتكوين مهمة التنظيف المجدولة لتعيين تردد النسخ الاحتياطي للسجل ##### Donations ##### DonationsSetup=وحدة الإعداد للتبرع DonationsReceiptModel=قالب من استلام التبرع @@ -1702,7 +1702,7 @@ GenbarcodeLocation=شريط أدوات سطر الأوامر رمز جيل (ال BarcodeInternalEngine=Internal engine BarCodeNumberManager=مدير لصناعة السيارات تحديد أرقام الباركود ##### Prelevements ##### -WithdrawalsSetup=Setup of module Direct Debit payments +WithdrawalsSetup=إعداد مدفوعات الخصم المباشر للوحدة ##### ExternalRSS ##### ExternalRSSSetup=RSS الواردات الخارجية الإعداد NewRSS=الجديد تغذية RSS @@ -1710,22 +1710,22 @@ RSSUrl=RSS URL RSSUrlExample=An interesting RSS feed ##### Mailing ##### MailingSetup=إعداد وحدة الارسال بالبريد الالكتروني -MailingEMailFrom=Sender email (From) for emails sent by emailing module -MailingEMailError=Return Email (Errors-to) for emails with errors +MailingEMailFrom=البريد الإلكتروني المرسل (من) لرسائل البريد الإلكتروني المرسلة عن طريق وحدة البريد الإلكتروني +MailingEMailError=إرجاع البريد الإلكتروني (Errors-to) لرسائل البريد الإلكتروني التي تحتوي على أخطاء MailingDelay=ثواني الانتظار بعد إرسال الرسالة التالية ##### Notification ##### -NotificationSetup=Email Notification module setup -NotificationEMailFrom=Sender email (From) for emails sent by the Notifications module +NotificationSetup=إعداد وحدة إعلام البريد الإلكتروني +NotificationEMailFrom=البريد الإلكتروني المرسل (من) لرسائل البريد الإلكتروني المرسلة بواسطة وحدة التنبيهات FixedEmailTarget=مستلم -NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message -NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message -NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +NotificationDisableConfirmMessageContact=إخفاء قائمة المستلمين (المشتركين كجهة اتصال) للإخطارات في رسالة التأكيد +NotificationDisableConfirmMessageUser=إخفاء قائمة المستلمين (المشتركين كمستخدم) للإخطارات في رسالة التأكيد +NotificationDisableConfirmMessageFix=إخفاء قائمة المستلمين (المشتركين كبريد إلكتروني عالمي) للإخطارات في رسالة التأكيد ##### Sendings ##### -SendingsSetup=Shipping module setup +SendingsSetup=إعداد وحدة الشحن SendingsReceiptModel=ارسال استلام نموذج SendingsNumberingModules=Sendings ترقيم الوحدات SendingsAbility=أوراق دعم الشحن للشحنات العملاء -NoNeedForDeliveryReceipts=In most cases, shipping sheets are used both as sheets for customer deliveries (list of products to send) and sheets that are received and signed by customer. Hence the product deliveries receipt is a duplicated feature and is rarely activated. +NoNeedForDeliveryReceipts=في معظم الحالات ، يتم استخدام أوراق الشحن كأوراق لتسليمات العملاء (قائمة المنتجات المراد إرسالها) والأوراق التي تم استلامها وتوقيعها من قبل العميل. ومن ثم فإن إيصال تسليم المنتجات يعد ميزة مكررة ونادرًا ما يتم تنشيطه. FreeLegalTextOnShippings=النص الحر على الشحنات ##### Deliveries ##### DeliveryOrderNumberingModules=تلقي شحنات المنتجات الترقيم وحدة @@ -1735,28 +1735,28 @@ FreeLegalTextOnDeliveryReceipts=النص الحر على إيصالات التس ##### FCKeditor ##### AdvancedEditor=محرر متقدم ActivateFCKeditor=تفعيل محرر متقدم ل: -FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements -FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements -FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) -FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/services +FCKeditorForNotePublic=إنشاء / إصدار WYSIWIG لعناصر الحقل "الملاحظات العامة" +FCKeditorForNotePrivate=إنشاء / إصدار WYSIWIG للحقل "ملاحظات خاصة" للعناصر +FCKeditorForCompany=إنشاء / إصدار WYSIWIG للوصف الميداني للعناصر (باستثناء المنتجات / الخدمات) +FCKeditorForProduct=إنشاء / إصدار WYSIWIG للوصف الميداني للمنتجات / الخدمات FCKeditorForProductDetails=إنشاء \\ تعديل تفاصيل المنتجات على طريقة الطباعة "ما تراه ستحصل عليه" لجميع المستندات (المقترحات،الاوامر،الفواتير،...) تحذير: إستخدام هذه الخاصية غير منصوح به بشدة بسبب مشاكل المحارف الخاصة وتنسيق الصفحات وذلك عند توليد ملفات بصيغة المستندات المتنقلة . FCKeditorForMailing= WYSIWIG إنشاء / الطبعة بالبريد FCKeditorForUserSignature=إنشاء WYSIWIG / طبعة التوقيع المستعمل -FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) -FCKeditorForTicket=WYSIWIG creation/edition for tickets +FCKeditorForMail=إنشاء / إصدار WYSIWIG لجميع البريد (باستثناء الأدوات-> البريد الإلكتروني) +FCKeditorForTicket=إنشاء / إصدار WYSIWIG للتذاكر ##### Stock ##### -StockSetup=Stock module setup -IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup. +StockSetup=إعداد وحدة المخزون +IfYouUsePointOfSaleCheckModule=إذا كنت تستخدم وحدة نقطة البيع (POS) التي يتم توفيرها افتراضيًا أو وحدة خارجية ، فقد يتم تجاهل هذا الإعداد بواسطة وحدة نقطة البيع الخاصة بك. تم تصميم معظم وحدات نقاط البيع بشكل افتراضي لإنشاء فاتورة على الفور وتقليل المخزون بغض النظر عن الخيارات هنا. لذلك إذا كنت بحاجة إلى انخفاض في المخزون أم لا عند تسجيل عملية بيع من نقاط البيع الخاصة بك ، فتحقق أيضًا من إعداد وحدة نقاط البيع الخاصة بك. ##### Menu ##### MenuDeleted=حذف من القائمة -Menu=Menu +Menu=قائمة الطعام Menus=القوائم TreeMenuPersonalized=شخصي قوائم -NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry +NotTopTreeMenuPersonalized=القوائم المخصصة غير مرتبطة بإدخال القائمة العلوية NewMenu=قائمة جديدة MenuHandler=قائمة مناول MenuModule=مصدر في وحدة -HideUnauthorizedMenu=Hide unauthorized menus also for internal users (just greyed otherwise) +HideUnauthorizedMenu=إخفاء القوائم غير المصرح بها أيضًا للمستخدمين الداخليين (فقط باللون الرمادي بخلاف ذلك) DetailId=معرف القائمة DetailMenuHandler=قائمة المعالج حيث تظهر قائمة جديدة DetailMenuModule=اسم وحدة قائمة في حال الدخول من وحدة @@ -1768,22 +1768,22 @@ DetailRight=حالة رمادية غير مصرح بها للعرض القوائ DetailLangs=لانغ لتسمية اسم ملف الترجمة مدونة DetailUser=المتدرب / خارجي / الكل Target=الهدف -DetailTarget=Target for links (_blank top opens a new window) +DetailTarget=الهدف للروابط (_ blank top يفتح نافذة جديدة) DetailLevel=المستوى (-1 : الأعلى ، 0 : رأس القائمة ،> 0 القائمة والقائمة الفرعية) ModifMenu=قائمة التغيير DeleteMenu=حذف من القائمة الدخول -ConfirmDeleteMenu=Are you sure you want to delete menu entry %s? +ConfirmDeleteMenu=هل أنت متأكد من أنك تريد حذف إدخال القائمة %s ؟ FailedToInitializeMenu=فشل في تهيئة القائمة ##### Tax ##### TaxSetup=الضرائب، الضرائب الاجتماعية أو المالية وتوزيعات الأرباح الإعداد حدة OptionVatMode=ضريبة القيمة المضافة المستحقة -OptionVATDefault=Standard basis +OptionVATDefault=أساس قياسي OptionVATDebitOption=أساس الاستحقاق -OptionVatDefaultDesc=VAT is due:
- on delivery of goods (based on invoice date)
- on payments for services -OptionVatDebitOptionDesc=VAT is due:
- on delivery of goods (based on invoice date)
- on invoice (debit) for services -OptionPaymentForProductAndServices=Cash basis for products and services -OptionPaymentForProductAndServicesDesc=VAT is due:
- on payment for goods
- on payments for services -SummaryOfVatExigibilityUsedByDefault=Time of VAT eligibility by default according to chosen option: +OptionVatDefaultDesc=ضريبة القيمة المضافة مستحقة:
- عند تسليم البضائع (بناءً على تاريخ الفاتورة)
- على مدفوعات الخدمات +OptionVatDebitOptionDesc=ضريبة القيمة المضافة مستحقة:
- عند تسليم البضائع (بناءً على تاريخ الفاتورة)
- على الفاتورة (الخصم) للخدمات +OptionPaymentForProductAndServices=الأساس النقدي للمنتجات والخدمات +OptionPaymentForProductAndServicesDesc=ضريبة القيمة المضافة مستحقة:
- عند الدفع مقابل البضائع
- على مدفوعات الخدمات +SummaryOfVatExigibilityUsedByDefault=وقت الأهلية لضريبة القيمة المضافة بشكل افتراضي وفقًا للخيار المختار: OnDelivery=التسليم OnPayment=عن الدفع OnInvoice=على فاتورة @@ -1792,86 +1792,86 @@ SupposedToBeInvoiceDate=فاتورة تاريخ المستخدمة Buy=يشتري Sell=يبيع InvoiceDateUsed=فاتورة تاريخ المستخدمة -YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Organization), so there is no VAT options to setup. -AccountancyCode=Accounting Code +YourCompanyDoesNotUseVAT=تم تعريف شركتك على أنها لا تستخدم ضريبة القيمة المضافة (المنزل - الإعداد - الشركة / المنظمة) ، لذلك لا توجد خيارات ضريبة القيمة المضافة للإعداد. +AccountancyCode=كود المحاسبة AccountancyCodeSell=حساب بيع. رمز AccountancyCodeBuy=شراء الحساب. رمز -CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Keep the checkbox “Automatically create the payment” empty by default when creating a new tax +CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=اترك مربع الاختيار "إنشاء الدفع تلقائيًا" فارغًا بشكل افتراضي عند إنشاء ضريبة جديدة ##### Agenda ##### AgendaSetup=جدول الأعمال وحدة الإعداد PasswordTogetVCalExport=مفتاح ربط تصدير تأذن -SecurityKey = Security Key +SecurityKey = مفتاح الامان PastDelayVCalExport=لا تصدر الحدث الأكبر من -AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> Type of agenda events) -AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of event in event create form -AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view -AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view -AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda -AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). -AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification -AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). -AGENDA_REMINDER_EMAIL_NOTE=Note: The frequency of the scheduled job %s must be enough to be sure that the remind are sent at the correct moment. -AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view +AGENDA_USE_EVENT_TYPE=استخدام أنواع الأحداث (المُدارة في إعداد القائمة -> القواميس -> نوع أحداث جدول الأعمال) +AGENDA_USE_EVENT_TYPE_DEFAULT=قم بتعيين هذه القيمة الافتراضية تلقائيًا لنوع الحدث في نموذج إنشاء الحدث +AGENDA_DEFAULT_FILTER_TYPE=عيِّن هذا النوع من الأحداث تلقائيًا في فلتر البحث لطريقة عرض الأجندة +AGENDA_DEFAULT_FILTER_STATUS=عيّن هذه الحالة تلقائيًا للأحداث في فلتر البحث لعرض جدول الأعمال +AGENDA_DEFAULT_VIEW=أي طريقة عرض تريد فتحها بشكل افتراضي عند تحديد جدول أعمال القائمة +AGENDA_REMINDER_BROWSER=قم بتمكين تذكير الحدث على متصفح المستخدم (عند الوصول إلى تاريخ التذكير ، تظهر نافذة منبثقة بواسطة المتصفح. يمكن لكل مستخدم تعطيل هذه الإشعارات من إعداد إعلام المتصفح الخاص به). +AGENDA_REMINDER_BROWSER_SOUND=تمكين الإعلام الصوتي +AGENDA_REMINDER_EMAIL=تمكين تذكير الحدث عن طريق رسائل البريد الإلكتروني (يمكن تحديد خيار التذكير / التأخير في كل حدث). +AGENDA_REMINDER_EMAIL_NOTE=ملاحظة: يجب أن يكون تكرار المهمة المجدولة %s كافيًا للتأكد من إرسال التذكير في اللحظة الصحيحة. +AGENDA_SHOW_LINKED_OBJECT=إظهار الكائن المرتبط في عرض جدول الأعمال ##### Clicktodial ##### ClickToDialSetup=انقر لإعداد وحدة الاتصال الهاتفي -ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial login (defined on user card)
__PASS__ that will be replaced with clicktodial password (defined on user card). -ClickToDialDesc=This module change phone numbers, when using a desktop computer, into clickable links. A click will call the number. This can be used to start the phone call when using a soft phone on your desktop or when using a CTI system based on SIP protocol for example. Note: When using a smartphone, phone numbers are always clickable. +ClickToDialUrlDesc=يتم استدعاء عنوان Url عند النقر على الصورة على الهاتف. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial تسجيل الدخول (معرف على بطاقة المستخدم)
__PASS__ التي سيتم استبدالها بكلمة مرور clicktodial (محددة في بطاقة المستخدم). +ClickToDialDesc=تقوم هذه الوحدة بتغيير أرقام الهواتف ، عند استخدام جهاز كمبيوتر سطح المكتب ، إلى روابط قابلة للنقر. نقرة سوف تتصل بالرقم. يمكن استخدام هذا لبدء المكالمة الهاتفية عند استخدام هاتف ناعم على سطح المكتب أو عند استخدام نظام CTI القائم على بروتوكول SIP على سبيل المثال. ملاحظة: عند استخدام هاتف ذكي ، تكون أرقام الهواتف قابلة للنقر دائمًا. ClickToDialUseTelLink=مجرد استخدام الرابط "الهاتف:" على أرقام الهواتف -ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface, installed on the same computer as the browser, and called when you click on a link starting with "tel:" in your browser. If you need a link that start with "sip:" or a full server solution (no need of local software installation), you must set this to "No" and fill the next field. +ClickToDialUseTelLinkDesc=استخدم هذه الطريقة إذا كان المستخدمون لديهم هاتف softphone أو واجهة برمجية ، مثبتة على نفس جهاز الكمبيوتر مثل المتصفح ، ويتم الاتصال بها عند النقر فوق ارتباط يبدأ بـ "tel:" في متصفحك. إذا كنت بحاجة إلى ارتباط يبدأ بـ "sip:" أو حل خادم كامل (لا حاجة إلى تثبيت برنامج محلي) ، يجب عليك تعيين هذا على "لا" وملء الحقل التالي. ##### Point Of Sale (CashDesk) ##### -CashDesk=Point of Sale -CashDeskSetup=Point of Sales module setup -CashDeskThirdPartyForSell=Default generic third party to use for sales +CashDesk=نقطة البيع +CashDeskSetup=إعداد وحدة نقاط البيع +CashDeskThirdPartyForSell=طرف ثالث عام افتراضي لاستخدامه في المبيعات CashDeskBankAccountForSell=الحساب النقدي لاستخدامها لتبيع -CashDeskBankAccountForCheque=Default account to use to receive payments by check +CashDeskBankAccountForCheque=الحساب الافتراضي المراد استخدامه لتلقي المدفوعات بشيك CashDeskBankAccountForCB=حساب لاستخدام لاستلام المبالغ النقدية عن طريق بطاقات الائتمان -CashDeskBankAccountForSumup=Default bank account to use to receive payments by SumUp -CashDeskDoNotDecreaseStock=Disable stock decrease when a sale is done from Point of Sale (if "no", stock decrease is done for each sale done from POS, irrespective of the option set in module Stock). +CashDeskBankAccountForSumup=حساب مصرفي افتراضي لاستخدامه لتلقي المدفوعات عن طريق SumUp +CashDeskDoNotDecreaseStock=قم بتعطيل انخفاض المخزون عند إجراء عملية بيع من نقطة البيع (إذا كانت الإجابة "لا" ، يتم تخفيض المخزون لكل عملية بيع تتم من نقطة البيع ، بغض النظر عن الخيار المحدد في مخزون الوحدة النمطية). CashDeskIdWareHouse=قوة وتحد من مستودع لاستخدامها لانخفاض الأسهم -StockDecreaseForPointOfSaleDisabled=Stock decrease from Point of Sale disabled -StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with module Serial/Lot management (currently active) so stock decrease is disabled. -CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. -CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. -CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. -CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +StockDecreaseForPointOfSaleDisabled=انخفاض المخزون من نقطة البيع المعطلة +StockDecreaseForPointOfSaleDisabledbyBatch=انخفاض المخزون في نقاط البيع غير متوافق مع إدارة المسلسل / اللوتية للوحدة النمطية (نشطة حاليًا) لذلك يتم تعطيل خفض المخزون. +CashDeskYouDidNotDisableStockDecease=لم تقم بتعطيل خفض المخزون عند إجراء عملية بيع من نقطة البيع. ومن ثم مطلوب مستودع. +CashDeskForceDecreaseStockLabel=تم فرض انخفاض مخزون المنتجات الدفعية. +CashDeskForceDecreaseStockDesc=التقليل أولاً من خلال أقدم تواريخ الأكل والبيع. +CashDeskReaderKeyCodeForEnter=رمز المفتاح لـ "Enter" المحدد في قارئ الرمز الشريطي (مثال: 13) ##### Bookmark ##### BookmarkSetup=إعداد وحدة المرجعية -BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or external web sites on your left menu. +BookmarkDesc=تسمح لك هذه الوحدة بإدارة الإشارات المرجعية. يمكنك أيضًا إضافة اختصارات إلى أي صفحات Dolibarr أو مواقع ويب خارجية في القائمة اليسرى. NbOfBoomarkToShow=أكبر عدد ممكن من العناوين تظهر في القائمة اليمنى ##### WebServices ##### WebServicesSetup=إعداد وحدة خدمات الويب WebServicesDesc=من خلال تمكين هذه الوحدة ، Dolibarr تصبح خدمة الإنترنت لتوفير خدمات الإنترنت وخدمات متنوعة. WSDLCanBeDownloadedHere=اختصار الواصفة ملف قدمت serviceses هنا يمكن التحميل -EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at URL +EndPointIs=يجب على عملاء SOAP إرسال طلباتهم إلى نقطة نهاية Dolibarr المتوفرة على URL ##### API #### ApiSetup=API وحدة الإعداد ApiDesc=من خلال تمكين هذه الوحدة، Dolibarr يصبح الخادم REST لتوفير خدمات الإنترنت المتنوعة. -ApiProductionMode=Enable production mode (this will activate use of a cache for services management) -ApiExporerIs=You can explore and test the APIs at URL +ApiProductionMode=تفعيل وضع الإنتاج (سيؤدي ذلك إلى تنشيط استخدام ذاكرة التخزين المؤقت لإدارة الخدمات) +ApiExporerIs=يمكنك استكشاف واختبار واجهات برمجة التطبيقات على URL OnlyActiveElementsAreExposed=ويتعرض عناصر فقط من وحدات تمكين ApiKey=مفتاح API -WarningAPIExplorerDisabled=The API explorer has been disabled. API explorer is not required to provide API services. It is a tool for developer to find/test REST APIs. If you need this tool, go into setup of module API REST to activate it. +WarningAPIExplorerDisabled=تم تعطيل مستكشف API. مستكشف API غير مطلوب لتقديم خدمات API. إنها أداة للمطور للعثور على / اختبار واجهات برمجة تطبيقات REST. إذا كنت بحاجة إلى هذه الأداة ، فانتقل إلى إعداد الوحدة النمطية API REST لتنشيطها. ##### Bank ##### BankSetupModule=إعداد وحدة مصرفية -FreeLegalTextOnChequeReceipts=Free text on check receipts +FreeLegalTextOnChequeReceipts=نص مجاني على إيصالات الشيكات BankOrderShow=عرض النظام من الحسابات المصرفية لبلدان باستخدام "عدد البنوك مفصل" BankOrderGlobal=عام BankOrderGlobalDesc=عرض عام النظام BankOrderES=الأسبانية BankOrderESDesc=الأسبانية عرض النظام -ChequeReceiptsNumberingModule=Check Receipts Numbering Module +ChequeReceiptsNumberingModule=وحدة ترقيم إيصالات التحقق ##### Multicompany ##### MultiCompanySetup=نموذج متعدد شركة الإعداد ##### Suppliers ##### -SuppliersSetup=Vendor module setup -SuppliersCommandModel=Complete template of Purchase Order -SuppliersCommandModelMuscadet=Complete template of Purchase Order (old implementation of cornas template) -SuppliersInvoiceModel=Complete template of Vendor Invoice -SuppliersInvoiceNumberingModel=Vendor invoices numbering models -IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval +SuppliersSetup=إعداد وحدة البائع +SuppliersCommandModel=نموذج كامل لأمر الشراء +SuppliersCommandModelMuscadet=نموذج كامل لأمر الشراء (التنفيذ القديم لقالب كورناس) +SuppliersInvoiceModel=نموذج كامل لفاتورة البائع +SuppliersInvoiceNumberingModel=نماذج ترقيم فواتير البائعين +IfSetToYesDontForgetPermission=في حالة التعيين على قيمة غير فارغة ، لا تنس منح الأذونات للمجموعات أو المستخدمين المسموح لهم بالموافقة الثانية ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=GeoIP Maxmind الإعداد وحدة -PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +PathToGeoIPMaxmindCountryDataFile=مسار الملف الذي يحتوي على Maxmind ip لترجمة الدولة.
أمثلة:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat a0342fccfda19bzeo /usr/Ghare/Lite2IP/ NoteOnPathLocation=لاحظ أن الملكية الفكرية الخاصة بك على البيانات القطرية الملف يجب أن تكون داخل الدليل الخاص بي يمكن قراءة (راجع الإعداد open_basedir بى وأذونات نظام الملفات). YouCanDownloadFreeDatFileTo=يمكنك تحميل نسخة تجريبية مجانية من GeoIP ملف Maxmind البلاد في ٪ s. YouCanDownloadAdvancedDatFileTo=كما يمكنك تحميل نسخة كاملة أكثر من ذلك ، مع التحديثات ، من GeoIP ملف Maxmind البلاد في ٪ s. @@ -1882,17 +1882,17 @@ ProjectsSetup=مشروع إعداد وحدة ProjectsModelModule=المشروع نموذج التقرير وثيقة TasksNumberingModules=مهام ترقيم وحدة TaskModelModule=تقارير المهام ثيقة نموذجية -UseSearchToSelectProject=Wait until a key is pressed before loading content of Project combo list.
This may improve performance if you have a large number of projects, but it is less convenient. +UseSearchToSelectProject=انتظر حتى يتم الضغط على مفتاح قبل تحميل محتوى قائمة التحرير والسرد للمشروع.
قد يؤدي ذلك إلى تحسين الأداء إذا كان لديك عدد كبير من المشاريع ، ولكنه أقل ملاءمة. ##### ECM (GED) ##### ##### Fiscal Year ##### -AccountingPeriods=Accounting periods +AccountingPeriods=الفترات المحاسبية AccountingPeriodCard=Accounting period -NewFiscalYear=New accounting period -OpenFiscalYear=Open accounting period -CloseFiscalYear=Close accounting period -DeleteFiscalYear=Delete accounting period -ConfirmDeleteFiscalYear=Are you sure to delete this accounting period? -ShowFiscalYear=Show accounting period +NewFiscalYear=فترة محاسبية جديدة +OpenFiscalYear=فترة محاسبية مفتوحة +CloseFiscalYear=فترة محاسبية قريبة +DeleteFiscalYear=حذف فترة المحاسبة +ConfirmDeleteFiscalYear=هل أنت متأكد من حذف هذه الفترة المحاسبية؟ +ShowFiscalYear=عرض فترة المحاسبة AlwaysEditable=يمكن دائما أن تعدل MAIN_APPLICATION_TITLE=إجبار اسم المرئي من التطبيق (تحذير: وضع اسمك هنا قد كسر ميزة تسجيل الدخول التدوين الآلي عند استخدام تطبيقات الهاتف المتحرك DoliDroid) NbMajMin=الحد الأدنى لعدد الأحرف الكبيرة @@ -1903,363 +1903,379 @@ NoAmbiCaracAutoGeneration=لا تستخدم الأحرف الغامضة ("1"، " SalariesSetup=الإعداد للرواتب وحدة SortOrder=ترتيب Format=شكل -TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers and suppliers payment type +TypePaymentDesc=0: نوع الدفع للعميل ، 1: نوع الدفع للبائع ، 2: نوع الدفع للعملاء والموردين IncludePath=يشمل المسار (المحدد في متغير%s) ExpenseReportsSetup=إعداد تقارير المصروفات وحدة TemplatePDFExpenseReports=قوالب المستند لتوليد حساب ثيقة تقرير -ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules -ExpenseReportNumberingModules=Expense reports numbering module +ExpenseReportsRulesSetup=إعداد تقارير نفقات الوحدة - القواعد +ExpenseReportNumberingModules=وحدة ترقيم تقارير المصاريف NoModueToManageStockIncrease=تم تفعيل أي وحدة قادرة على إدارة زيادة المخزون التلقائي. وسوف يتم زيادة الأسهم على الإدخال اليدوي فقط. -YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for email notifications by enabling and configuring the module "Notification". -TemplatesForNotifications=Templates for notifications -ListOfNotificationsPerUser=List of automatic notifications per user* -ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact** -ListOfFixedNotifications=List of automatic fixed notifications -GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users -GoOntoContactCardToAddMore=Go to the tab "Notifications" of a third party to add or remove notifications for contacts/addresses +YouMayFindNotificationsFeaturesIntoModuleNotification=قد تجد خيارات لإشعارات البريد الإلكتروني عن طريق تمكين وتكوين وحدة "الإعلام". +TemplatesForNotifications=قوالب للإخطارات +ListOfNotificationsPerUser=قائمة الإخطارات التلقائية لكل مستخدم * +ListOfNotificationsPerUserOrContact=قائمة الإخطارات التلقائية الممكنة (في حدث العمل) المتاحة لكل مستخدم * أو لكل جهة اتصال ** +ListOfFixedNotifications=قائمة الإخطارات الثابتة التلقائية +GoOntoUserCardToAddMore=انتقل إلى علامة التبويب "التنبيهات" للمستخدم لإضافة أو إزالة الإشعارات للمستخدمين +GoOntoContactCardToAddMore=انتقل إلى علامة التبويب "التنبيهات" الخاصة بطرف ثالث لإضافة أو إزالة إشعارات جهات الاتصال / العناوين Threshold=عتبة -BackupDumpWizard=Wizard to build the database dump file -BackupZipWizard=Wizard to build the archive of documents directory +BackupDumpWizard=معالج لإنشاء ملف تفريغ قاعدة البيانات +BackupZipWizard=معالج لبناء أرشيف دليل المستندات SomethingMakeInstallFromWebNotPossible=تركيب وحدة خارجية غير ممكن من واجهة ويب للسبب التالي: -SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. +SomethingMakeInstallFromWebNotPossible2=لهذا السبب ، فإن عملية الترقية الموضحة هنا هي عملية يدوية لا يجوز إلا لمستخدم ذي امتيازات القيام بها. InstallModuleFromWebHasBeenDisabledByFile=تثبيت وحدة خارجية من التطبيق قد تم تعطيلها من قبل المسؤول. يجب أن يطلب منه إزالة الملف٪ s للسماح هذه الميزة. -ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to add the 2 directive lines:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; +ConfFileMustContainCustom=يحتاج تثبيت أو بناء وحدة خارجية من التطبيق إلى حفظ ملفات الوحدة النمطية في الدليل %s . لكي تتم معالجة هذا الدليل بواسطة Dolibarr ، يجب عليك إعداد conf / conf.php لإضافة سطري التوجيه:
$ dolibarr_main_url_root_alt = '/root_alt؛
$ dolibarr_main_document_root_alt = '%s / مخصص' ؛ HighlightLinesOnMouseHover=تسليط الضوء على خطوط الجدول عندما يمر تحرك الماوس فوق -HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) -HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) -UseBorderOnTable=Show left-right borders on tables -BtnActionColor=Color of the action button -TextBtnActionColor=Text color of the action button -TextTitleColor=Text color of Page title +HighlightLinesColor=قم بتمييز لون الخط عندما يمر الماوس فوقه (استخدم "ffffff" لعدم التمييز) +HighlightLinesChecked=قم بتمييز لون الخط عند تحديده (استخدم "ffffff" لعدم التمييز) +UseBorderOnTable=إظهار الحدود اليسرى واليمنى على الجداول +BtnActionColor=لون زر الإجراء +TextBtnActionColor=لون نص زر الإجراء +TextTitleColor=لون نص عنوان الصفحة LinkColor=لون الروابط -PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective -NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes +PressF5AfterChangingThis=اضغط على CTRL + F5 على لوحة المفاتيح أو امسح ذاكرة التخزين المؤقت للمتصفح بعد تغيير هذه القيمة لتصبح فعالة +NotSupportedByAllThemes=سوف يعمل مع الموضوعات الأساسية ، قد لا تدعمه الموضوعات الخارجية BackgroundColor=لون الخلفية TopMenuBackgroundColor=لون الخلفية لقائمة الأعلى -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=رمز أو نص في القائمة العلوية LeftMenuBackgroundColor=لون الخلفية القائمة اليمنى BackgroundTableTitleColor=لون الخلفية لخط عنوان الجدول -BackgroundTableTitleTextColor=Text color for Table title line -BackgroundTableTitleTextlinkColor=Text color for Table title link line +BackgroundTableTitleTextColor=لون نص سطر عنوان الجدول +BackgroundTableTitleTextlinkColor=لون النص لخط ارتباط عنوان الجدول BackgroundTableLineOddColor=لون الخلفية لخطوط الجدول غريبة BackgroundTableLineEvenColor=لون الخلفية حتى خطوط الجدول MinimumNoticePeriod=الحد الأدنى لمدة إشعار (يجب أن يتم طلب إجازة قبل هذا التأخير) NbAddedAutomatically=عدد الأيام تضاف إلى العدادات من المستخدمين (تلقائيا) كل شهر -EnterAnyCode=This field contains a reference to identify the line. Enter any value of your choice, but without special characters. -Enter0or1=Enter 0 or 1 -UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] -ColorFormat=The RGB color is in HEX format, eg: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +EnterAnyCode=يحتوي هذا الحقل على مرجع لتعريف الخط. أدخل أي قيمة من اختيارك ، ولكن بدون أحرف خاصة. +Enter0or1=أدخل 0 أو 1 +UnicodeCurrency=أدخل هنا بين الأقواس ، قائمة رقم البايت الذي يمثل رمز العملة. على سبيل المثال: بالنسبة إلى $ ، أدخل [36] - للبرازيل ريال R $ [82،36] - لـ € ، أدخل [8364] +ColorFormat=لون RGB بصيغة HEX ، على سبيل المثال: FF0000 +PictoHelp=اسم الرمز بالتنسيق:
- image.png لملف صورة في دليل السمة الحالي
- image.png@module إذا كان الملف في الدليل / img / للوحدة النمطية
- fa-xxx للخط fa-xxx picto
- fonwtawesome_xxx_fa_color_size ل FontAwesome fa-xxx picto (مع البادئة واللون ومجموعة الحجم) PositionIntoComboList=موقف خط في قوائم السرد -SellTaxRate=Sales tax rate -RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. -UrlTrackingDesc=If the provider or transport service offers a page or web site to check the status of your shipments, you may enter it here. You can use the key {TRACKID} in the URL parameters so the system will replace it with the tracking number the user entered into the shipment card. -OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of the lead, this amount may be multiplied by this rate to evaluate a total amount all your leads may generate. Value is a percentage (between 0 and 100). -TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object. +SellTaxRate=معدل ضريبة المبيعات +RecuperableOnly=نعم لضريبة القيمة المضافة "غير متصورة ولكن قابلة للاسترداد" المخصصة لبعض الولايات في فرنسا. احتفظ بقيمة "لا" في جميع الحالات الأخرى. +UrlTrackingDesc=إذا كان الموفر أو خدمة النقل يقدم صفحة أو موقع ويب للتحقق من حالة الشحنات الخاصة بك ، فيمكنك إدخاله هنا. يمكنك استخدام المفتاح {TRACKID} في معلمات عنوان URL حتى يستبدله النظام برقم التتبع الذي أدخله المستخدم في بطاقة الشحن. +OpportunityPercent=عند إنشاء عميل متوقع ، ستقوم بتحديد المقدار المقدر للمشروع / العميل المتوقع. وفقًا لحالة العميل المتوقع ، يمكن مضاعفة هذا المبلغ في هذا المعدل لتقييم المبلغ الإجمالي الذي قد يولده جميع العملاء المتوقعين. القيمة هي نسبة مئوية (بين 0 و 100). +TemplateForElement=ما هو نوع الكائن؟ يتوفر نموذج بريد إلكتروني فقط عند استخدام زر "إرسال بريد إلكتروني" من الكائن ذي الصلة. TypeOfTemplate=نوع القالب -TemplateIsVisibleByOwnerOnly=Template is visible to owner only -VisibleEverywhere=Visible everywhere -VisibleNowhere=Visible nowhere +TemplateIsVisibleByOwnerOnly=النموذج مرئي للمالك فقط +VisibleEverywhere=مرئي في كل مكان +VisibleNowhere=مرئي في أي مكان FixTZ=الإصلاح والوقت FillFixTZOnlyIfRequired=مثال: +2 (ملء فقط إذا كانت المشكلة من ذوي الخبرة) ExpectedChecksum=اختباري المتوقع CurrentChecksum=اختباري الحالي -ExpectedSize=Expected size -CurrentSize=Current size -ForcedConstants=Required constant values +ExpectedSize=الحجم المتوقع +CurrentSize=الحجم الحالي +ForcedConstants=القيم الثابتة المطلوبة MailToSendProposal=مقترحات العملاء MailToSendOrder=اوامر المبيعات MailToSendInvoice=فواتير العملاء MailToSendShipment=شحنات MailToSendIntervention=التدخلات -MailToSendSupplierRequestForQuotation=Quotation request +MailToSendSupplierRequestForQuotation=طلب اقتباس MailToSendSupplierOrder=اوامر الشراء MailToSendSupplierInvoice=فواتير الموردين MailToSendContract=عقود -MailToSendReception=Receptions +MailToSendReception=حفلات الاستقبال MailToThirdparty=أطراف ثالثة MailToMember=أعضاء MailToUser=المستخدمين MailToProject=مشاريع MailToTicket=تذاكر ByDefaultInList=تظهر بشكل افتراضي على عرض القائمة -YouUseLastStableVersion=You use the latest stable version +YouUseLastStableVersion=أنت تستخدم أحدث إصدار ثابت TitleExampleForMajorRelease=مثال على رسالة يمكنك استخدامها ليعلن هذا الإصدار الرئيسي (لا تتردد في استخدامها على مواقع الويب الخاص بك) TitleExampleForMaintenanceRelease=مثال على الرسالة التي يمكن استخدامها ليعلن هذا البيان الصيانة (لا تتردد في استخدامها على مواقع الويب الخاص بك) -ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. -ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so contains only bug fixes. We recommend all users to upgrade to this version. A maintenance release does not introduce new features or changes to the database. You may download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read the ChangeLog for complete list of changes. -MultiPriceRuleDesc=When option "Several levels of prices per product/service" is enabled, you can define different prices (one per price level) for each product. To save you time, here you may enter a rule to autocalculate a price for each level based on the price of the first level, so you will have to only enter a price for the first level for each product. This page is designed to save you time but is useful only if your prices for each level are relative to first level. You can ignore this page in most cases. -ModelModulesProduct=Templates for product documents -WarehouseModelModules=Templates for documents of warehouses -ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate codes automatically, you must first define a manager to auto-define the barcode number. -SeeSubstitutionVars=See * note for list of possible substitution variables -SeeChangeLog=See ChangeLog file (english only) -AllPublishers=All publishers -UnknownPublishers=Unknown publishers -AddRemoveTabs=Add or remove tabs -AddDataTables=Add object tables -AddDictionaries=Add dictionaries tables -AddData=Add objects or dictionaries data +ExampleOfNewsMessageForMajorRelease=يتوفر Dolibarr ERP & CRM %s. يعد الإصدار %s إصدارًا رئيسيًا يحتوي على الكثير من الميزات الجديدة لكل من المستخدمين والمطورين. يمكنك تنزيله من منطقة التنزيل في بوابة https://www.dolibarr.org (إصدارات الدليل الفرعي المستقرة). يمكنك قراءة سجل التغيير للحصول على قائمة كاملة بالتغييرات. +ExampleOfNewsMessageForMaintenanceRelease=يتوفر Dolibarr ERP & CRM %s. الإصدار %s هو إصدار صيانة ، لذلك يحتوي فقط على إصلاحات الأخطاء. نوصي جميع المستخدمين بالترقية إلى هذا الإصدار. لا يقدم إصدار الصيانة ميزات جديدة أو تغييرات في قاعدة البيانات. يمكنك تنزيله من منطقة التنزيل في بوابة https://www.dolibarr.org (إصدارات الدليل الفرعي المستقرة). يمكنك قراءة سجل التغيير للحصول على قائمة كاملة بالتغييرات. +MultiPriceRuleDesc=عند تمكين الخيار "عدة مستويات من الأسعار لكل منتج / خدمة" ، يمكنك تحديد أسعار مختلفة (مستوى لكل مستوى سعر) لكل منتج. لتوفير الوقت ، يمكنك هنا إدخال قاعدة لحساب سعر كل مستوى تلقائيًا بناءً على سعر المستوى الأول ، لذلك سيتعين عليك فقط إدخال سعر للمستوى الأول لكل منتج. تم تصميم هذه الصفحة لتوفير الوقت ولكنها مفيدة فقط إذا كانت أسعارك لكل مستوى متعلقة بالمستوى الأول. يمكنك تجاهل هذه الصفحة في معظم الحالات. +ModelModulesProduct=قوالب لوثائق المنتج +WarehouseModelModules=نماذج لوثائق المستودعات +ToGenerateCodeDefineAutomaticRuleFirst=لتتمكن من إنشاء الرموز تلقائيًا ، يجب عليك أولاً تحديد مدير لتحديد رقم الرمز الشريطي تلقائيًا. +SeeSubstitutionVars=انظر * ملاحظة للحصول على قائمة متغيرات الاستبدال الممكنة +SeeChangeLog=انظر ملف سجل التغيير (الإنجليزية فقط) +AllPublishers=كل الناشرين +UnknownPublishers=ناشرون غير معروفين +AddRemoveTabs=إضافة أو إزالة علامات التبويب +AddDataTables=أضف جداول الكائنات +AddDictionaries=أضف جداول القواميس +AddData=إضافة بيانات كائنات أو قواميس AddBoxes=إضافة بريمجات -AddSheduledJobs=Add scheduled jobs -AddHooks=Add hooks -AddTriggers=Add triggers -AddMenus=Add menus -AddPermissions=Add permissions -AddExportProfiles=Add export profiles -AddImportProfiles=Add import profiles -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 in 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 correctly. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise -CommandIsNotInsideAllowedCommands=The command you are trying to run is not in the list of allowed commands defined in parameter $dolibarr_main_restrict_os_commands in the conf.php file. -LandingPage=Landing page -SamePriceAlsoForSharedCompanies=If you use a multicompany module, with the choice "Single price", the price will also be the same for all companies if products are shared between environments -ModuleEnabledAdminMustCheckRights=Module has been activated. Permissions for activated module(s) were given to admin users only. You may need to grant permissions to other users or groups manually if necessary. -UserHasNoPermissions=This user has no permissions defined -TypeCdr=Use "None" if the date of payment term is date of invoice plus a delta in days (delta is field "%s")
Use "At end of month", if, after delta, the date must be increased to reach the end of month (+ an optional "%s" in days)
Use "Current/Next" to have payment term date being the first Nth of the month after delta (delta is field "%s", N is stored into field "%s") -BaseCurrency=Reference currency of the company (go into setup of company to change this) -WarningNoteModuleInvoiceForFrenchLaw=This module %s is compliant with French laws (Loi Finance 2016). -WarningNoteModulePOSForFrenchLaw=This module %s is compliant with French laws (Loi Finance 2016) because module Non Reversible Logs is automatically activated. -WarningInstallationMayBecomeNotCompliantWithLaw=You are trying to install module %s that is an external module. Activating an external module means you trust the publisher of that module and that you are sure that this module does not adversely impact the behavior of your application, and is compliant with laws of your country (%s). If the module introduces an illegal feature, you become responsible for the use of illegal software. +AddSheduledJobs=أضف الوظائف المجدولة +AddHooks=أضف الخطافات +AddTriggers=أضف المشغلات +AddMenus=أضف القوائم +AddPermissions=أضف أذونات +AddExportProfiles=إضافة ملفات تعريف التصدير +AddImportProfiles=إضافة ملفات تعريف الاستيراد +AddOtherPagesOrServices=أضف صفحات أو خدمات أخرى +AddModels=إضافة وثيقة أو قوالب ترقيم +AddSubstitutions=أضف بدائل المفاتيح +DetectionNotPossible=الكشف غير ممكن +UrlToGetKeyToUseAPIs=عنوان URL للحصول على رمز مميز لاستخدام واجهة برمجة التطبيقات (بمجرد استلام الرمز المميز ، يتم حفظه في جدول مستخدم قاعدة البيانات ويجب توفيره في كل استدعاء لواجهة برمجة التطبيقات) +ListOfAvailableAPIs=قائمة واجهات برمجة التطبيقات المتاحة +activateModuleDependNotSatisfied=الوحدة النمطية "%s" تعتمد على الوحدة النمطية "%s" ، وهي مفقودة ، لذا قد لا تعمل الوحدة النمطية "%1$s" بشكل صحيح. الرجاء تثبيت الوحدة النمطية "%2$s" أو تعطيل الوحدة النمطية "%1$s" إذا كنت تريد أن تكون في مأمن من أي مفاجأة +CommandIsNotInsideAllowedCommands=الأمر الذي تحاول تشغيله غير موجود في قائمة الأوامر المسموح بها المحددة في المعلمة $ dolibarr_main_restrict_os_commands في ملف conf.php . +LandingPage=الصفحة المقصودة +SamePriceAlsoForSharedCompanies=إذا كنت تستخدم وحدة متعددة الشركات ، مع اختيار "سعر واحد" ، فسيكون السعر هو نفسه أيضًا لجميع الشركات إذا كانت المنتجات مشتركة بين البيئات +ModuleEnabledAdminMustCheckRights=تم تفعيل الوحدة. تم منح أذونات الوحدة (الوحدات) المنشطة لمستخدمي الإدارة فقط. قد تحتاج إلى منح أذونات للمستخدمين أو المجموعات الأخرى يدويًا إذا لزم الأمر. +UserHasNoPermissions=هذا المستخدم ليس لديه أذونات محددة +TypeCdr=استخدم "بلا" إذا كان تاريخ الدفع هو تاريخ الفاتورة بالإضافة إلى دلتا بالأيام (دلتا هي الحقل "%s")
استخدم "في نهاية الشهر" ، إذا كان يجب زيادة التاريخ للوصول إلى النهاية بعد دلتا من الشهر (+ "%s" اختياري بالأيام)
استخدم "Current / Next" ليكون تاريخ فترة السداد هو أول N من الشهر بعد دلتا (دلتا هي الحقل "%s" ، يتم تخزين N في الحقل "%s") +BaseCurrency=العملة المرجعية للشركة (انتقل إلى إعداد الشركة لتغيير هذا) +WarningNoteModuleInvoiceForFrenchLaw=هذه الوحدة %s متوافقة مع القوانين الفرنسية (Loi Finance 2016). +WarningNoteModulePOSForFrenchLaw=تتوافق هذه الوحدة %s مع القوانين الفرنسية (Loi Finance 2016) لأنه يتم تنشيط الوحدة النمطية السجلات غير القابلة للعكس تلقائيًا. +WarningInstallationMayBecomeNotCompliantWithLaw=أنت تحاول تثبيت الوحدة النمطية %s وهي وحدة خارجية. يعني تنشيط وحدة خارجية أنك تثق في ناشر هذه الوحدة وأنك متأكد من أن هذه الوحدة لا تؤثر سلبًا على سلوك التطبيق الخاص بك ، وأنها متوافقة مع قوانين بلدك (%s). إذا قدمت الوحدة ميزة غير قانونية ، فإنك تصبح مسؤولاً عن استخدام البرامج غير القانونية. MAIN_PDF_MARGIN_LEFT=الهامش الايسر على ملفات صيغة المستندات المتنقلة MAIN_PDF_MARGIN_RIGHT=الهامش الايمن لملفات صيغة المستندات المتنقلة MAIN_PDF_MARGIN_TOP=الهامش العلوي لصيغة المستندات المتنقلة MAIN_PDF_MARGIN_BOTTOM=الهامش العلوي لصيغة المستندات المتنقلة MAIN_DOCUMENTS_LOGO_HEIGHT=ارتفاع الشعار على صيغة المستندات المتنقلة -MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines -MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines -MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame -MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame -MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code -MAIN_PDF_HIDE_SENDER_NAME=Hide sender/company name in address block -PROPOSAL_PDF_HIDE_PAYMENTTERM=Hide payments conditions -PROPOSAL_PDF_HIDE_PAYMENTMODE=Hide payment mode -MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add electronic sign in PDF -NothingToSetup=There is no specific setup required for this module. -SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups -EnterCalculationRuleIfPreviousFieldIsYes=Enter calculation rule if previous field was set to Yes.
For example:
CODEGRP1+CODEGRP2 -SeveralLangugeVariatFound=Several language variants found -RemoveSpecialChars=Remove special characters -COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) -COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) -COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed -GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here -HelpOnTooltip=Help text to show on tooltip -HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form -YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s -ChartLoaded=Chart of account loaded -SocialNetworkSetup=Setup of module Social Networks -EnableFeatureFor=Enable features for %s -VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to Off in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=أضف عمودًا للصورة في سطور الاقتراح +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=عرض العمود إذا تم إضافة صورة على الخطوط +MAIN_PDF_NO_SENDER_FRAME=إخفاء الحدود في إطار عنوان المرسل +MAIN_PDF_NO_RECIPENT_FRAME=إخفاء الحدود على إطار عنوان المستلم +MAIN_PDF_HIDE_CUSTOMER_CODE=إخفاء رمز العميل +MAIN_PDF_HIDE_SENDER_NAME=إخفاء اسم المرسل / الشركة في كتلة العنوان +PROPOSAL_PDF_HIDE_PAYMENTTERM=إخفاء شروط المدفوعات +PROPOSAL_PDF_HIDE_PAYMENTMODE=إخفاء وضع الدفع +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=أضف تسجيلًا إلكترونيًا بتنسيق PDF +NothingToSetup=لا يوجد إعداد محدد مطلوب لهذه الوحدة. +SetToYesIfGroupIsComputationOfOtherGroups=اضبط هذا على نعم إذا كانت هذه المجموعة عبارة عن حساب لمجموعات أخرى +EnterCalculationRuleIfPreviousFieldIsYes=أدخل قاعدة الحساب إذا تم تعيين الحقل السابق على "نعم".
على سبيل المثال:
CODEGRP1 + CODEGRP2 +SeveralLangugeVariatFound=تم العثور على العديد من المتغيرات اللغوية +RemoveSpecialChars=إزالة الأحرف الخاصة +COMPANY_AQUARIUM_CLEAN_REGEX=مرشح Regex لتنظيف القيمة (COMPANY_AQUARIUM_CLEAN_REGEX) +COMPANY_DIGITARIA_CLEAN_REGEX=مرشح Regex لتنظيف القيمة (COMPANY_DIGITARIA_CLEAN_REGEX) +COMPANY_DIGITARIA_UNIQUE_CODE=مكرر غير مسموح به +GDPRContact=مسؤول حماية البيانات (DPO أو خصوصية البيانات أو جهة اتصال GDPR) +GDPRContactDesc=إذا قمت بتخزين البيانات الشخصية في نظام المعلومات الخاص بك ، فيمكنك تسمية جهة الاتصال المسؤولة عن اللائحة العامة لحماية البيانات هنا +HelpOnTooltip=نص المساعدة للظهور في تلميح الأداة +HelpOnTooltipDesc=ضع نصًا أو مفتاح ترجمة هنا حتى يظهر النص في تلميح عندما يظهر هذا الحقل في نموذج +YouCanDeleteFileOnServerWith=يمكنك حذف هذا الملف على الخادم باستخدام سطر الأوامر:
%s +ChartLoaded=تحميل الرسم البياني للحساب +SocialNetworkSetup=إعداد وحدة الشبكات الاجتماعية +EnableFeatureFor=تمكين الميزات لـ %s +VATIsUsedIsOff=ملاحظة: تم تعيين خيار استخدام ضريبة المبيعات أو ضريبة القيمة المضافة على إيقاف في القائمة %s - %s ، لذلك ستكون ضريبة المبيعات أو ضريبة القيمة المضافة المستخدمة دائمًا صفرًا للمبيعات. SwapSenderAndRecipientOnPDF=إبدال مكان عنوان المرسل والمستقبل على ملفات صيغة المستندات المتنقلة -FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. -EmailCollector=Email collector -EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). -NewEmailCollector=New Email Collector -EMailHost=Host of email IMAP server -MailboxSourceDirectory=Mailbox source directory -MailboxTargetDirectory=Mailbox target directory -EmailcollectorOperations=Operations to do by collector -EmailcollectorOperationsDesc=Operations are executed from top to bottom order -MaxEmailCollectPerCollect=Max number of emails collected per collect -CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? -DateLastCollectResult=Date of latest collect try -DateLastcollectResultOk=Date of latest collect success -LastResult=Latest result -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. -EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail -NoNewEmailToProcess=No new email (matching filters) to process -NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) -RecordEvent=Record an event in agenda (with type Email sent or received) -CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +FeatureSupportedOnTextFieldsOnly=تحذير ، الميزة مدعومة في الحقول النصية وقوائم التحرير والسرد فقط. أيضًا إجراء معلمة URL = إنشاء أو إجراء = يجب تعيين تعديل أو يجب أن ينتهي اسم الصفحة بـ "new.php" لتشغيل هذه الميزة. +EmailCollector=جامع البريد الإلكتروني +EmailCollectors=جامعي البريد الإلكتروني +EmailCollectorDescription=أضف وظيفة مجدولة وصفحة إعداد لمسح صناديق البريد الإلكتروني بانتظام (باستخدام بروتوكول IMAP) وتسجيل رسائل البريد الإلكتروني المستلمة في التطبيق الخاص بك ، في المكان الصحيح و / أو إنشاء بعض السجلات تلقائيًا (مثل العملاء المتوقعين). +NewEmailCollector=جامع البريد الإلكتروني الجديد +EMailHost=مضيف خادم IMAP للبريد الإلكتروني +MailboxSourceDirectory=دليل مصدر صندوق البريد +MailboxTargetDirectory=دليل الهدف صندوق البريد +EmailcollectorOperations=العمليات التي يقوم بها المجمع +EmailcollectorOperationsDesc=يتم تنفيذ العمليات من أعلى إلى أسفل الترتيب +MaxEmailCollectPerCollect=أقصى عدد من رسائل البريد الإلكتروني التي تم جمعها لكل مجموعة +CollectNow=اجمع الآن +ConfirmCloneEmailCollector=هل تريد بالتأكيد استنساخ مُجمع البريد الإلكتروني %s؟ +DateLastCollectResult=تاريخ آخر جمع حاول +DateLastcollectResultOk=تاريخ آخر جمع النجاح +LastResult=أحدث نتيجة +EmailCollectorHideMailHeaders=لا تقم بتضمين محتوى رأس البريد الإلكتروني في المحتوى المحفوظ لرسائل البريد الإلكتروني المجمعة +EmailCollectorHideMailHeadersHelp=عند التمكين ، لا تتم إضافة رؤوس البريد الإلكتروني في نهاية محتوى البريد الإلكتروني الذي تم حفظه كحدث جدول أعمال. +EmailCollectorConfirmCollectTitle=تأكيد جمع البريد الإلكتروني +EmailCollectorConfirmCollect=هل تريد تشغيل هذا المجمع الآن؟ +EmailCollectorExampleToCollectTicketRequestsDesc=اجمع رسائل البريد الإلكتروني التي تطابق بعض القواعد وأنشئ تذكرة تلقائيًا (يجب تمكين Module Ticket) باستخدام معلومات البريد الإلكتروني. يمكنك استخدام هذا المجمع إذا قدمت بعض الدعم عبر البريد الإلكتروني ، لذلك سيتم إنشاء طلب التذكرة تلقائيًا. قم أيضًا بتنشيط Collect_Responses لتجميع إجابات عميلك مباشرةً على عرض التذكرة (يجب عليك الرد من Dolibarr). +EmailCollectorExampleToCollectTicketRequests=مثال على جمع طلب التذكرة (الرسالة الأولى فقط) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=امسح دليل صندوق البريد "المرسل" للعثور على رسائل البريد الإلكتروني التي تم إرسالها كإجابة على بريد إلكتروني آخر مباشرةً من برنامج البريد الإلكتروني الخاص بك وليس من Dolibarr. إذا تم العثور على مثل هذا البريد الإلكتروني ، يتم تسجيل حدث الإجابة في Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=مثال على جمع إجابات البريد الإلكتروني المرسلة من برنامج بريد إلكتروني خارجي +EmailCollectorExampleToCollectDolibarrAnswersDesc=اجمع كل رسائل البريد الإلكتروني التي تمثل إجابة على رسالة بريد إلكتروني مرسلة من تطبيقك. سيتم تسجيل حدث (يجب تمكين جدول أعمال الوحدة النمطية) مع استجابة البريد الإلكتروني في مكان جيد. على سبيل المثال ، إذا أرسلت عرضًا تجاريًا أو طلبًا أو فاتورة أو رسالة لتذكرة عبر البريد الإلكتروني من التطبيق ، وقام المستلم بالرد على بريدك الإلكتروني ، فسيقوم النظام تلقائيًا بالتقاط الإجابة وإضافتها إلى نظام تخطيط موارد المؤسسات الخاص بك. +EmailCollectorExampleToCollectDolibarrAnswers=مثال على جمع جميع الرسائل الداخلية التي تكون إجابات على الرسائل المرسلة من Dolibarr ' +EmailCollectorExampleToCollectLeadsDesc=جمع رسائل البريد الإلكتروني التي تتطابق مع بعض القواعد وإنشاء عميل متوقع تلقائيًا (يجب تمكين مشروع الوحدة النمطية) باستخدام معلومات البريد الإلكتروني. يمكنك استخدام أداة التجميع هذه إذا كنت تريد متابعة زمام المبادرة باستخدام مشروع الوحدة النمطية (عميل متوقع واحد = مشروع واحد) ، لذلك سيتم إنشاء العملاء المتوقعين تلقائيًا. إذا تم أيضًا تمكين Collect_Responses للمجمع ، فعند إرسال بريد إلكتروني من العملاء المتوقعين أو المقترحات أو أي كائن آخر ، قد ترى أيضًا إجابات لعملائك أو شركائك مباشرةً في التطبيق.
ملاحظة: باستخدام هذا المثال الأولي ، يتم إنشاء عنوان العميل المتوقع متضمنًا البريد الإلكتروني. إذا تعذر العثور على الطرف الثالث في قاعدة البيانات (عميل جديد) ، فسيتم إرفاق العميل المتوقع بالطرف الثالث بمعرف 1. +EmailCollectorExampleToCollectLeads=مثال على جمع العملاء المحتملين +EmailCollectorExampleToCollectJobCandidaturesDesc=اجمع رسائل البريد الإلكتروني التي تتقدم إلى عروض العمل (يجب تمكين Module Recruitment). يمكنك إكمال هذا المجمع إذا كنت تريد إنشاء ترشيح تلقائيًا لطلب وظيفة. ملاحظة: مع هذا المثال الأولي ، يتم إنشاء عنوان الترشيح بما في ذلك البريد الإلكتروني. +EmailCollectorExampleToCollectJobCandidatures=مثال على جمع ترشيحات الوظائف الواردة عن طريق البريد الإلكتروني +NoNewEmailToProcess=لا يوجد بريد إلكتروني جديد (فلاتر مطابقة) للمعالجة +NothingProcessed=لم يتم عمل شيء +XEmailsDoneYActionsDone=رسائل البريد الإلكتروني %s المؤهلة مسبقًا ، تمت معالجة رسائل البريد الإلكتروني %s بنجاح (لسجل / إجراءات %s) +RecordEvent=تسجيل حدث في جدول الأعمال (مع نوع البريد الإلكتروني المرسل أو المستلم) +CreateLeadAndThirdParty=قم بإنشاء عميل محتمل (وطرف ثالث إذا لزم الأمر) +CreateTicketAndThirdParty=إنشاء تذكرة (مرتبطة بطرف ثالث إذا تم تحميل الطرف الثالث من خلال عملية سابقة أو تم تخمينه من متعقب في رأس البريد الإلكتروني ، دون طرف ثالث بخلاف ذلك) CodeLastResult=Latest result code -NbOfEmailsInInbox=Number of emails in source directory -LoadThirdPartyFromName=Load third party searching on %s (load only) -LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) -AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. -WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr -WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr -WithDolTrackingIDInMsgId=Message sent from Dolibarr -WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr -CreateCandidature=Create job application +NbOfEmailsInInbox=عدد رسائل البريد الإلكتروني في دليل المصدر +LoadThirdPartyFromName=تحميل بحث الطرف الثالث على %s (تحميل فقط) +LoadThirdPartyFromNameOrCreate=قم بتحميل بحث الطرف الثالث على %s (أنشئ إذا لم يتم العثور عليه) +AttachJoinedDocumentsToObject=احفظ الملفات المرفقة في مستندات الكائن إذا تم العثور على مرجع لكائن في موضوع البريد الإلكتروني. +WithDolTrackingID=رسالة من محادثة بدأت بأول بريد إلكتروني مرسل من Dolibarr +WithoutDolTrackingID=رسالة من محادثة بدأها أول بريد إلكتروني لم يتم إرساله من Dolibarr +WithDolTrackingIDInMsgId=تم إرسال الرسالة من Dolibarr +WithoutDolTrackingIDInMsgId=لم يتم إرسال الرسالة من Dolibarr +CreateCandidature=إنشاء طلب وظيفة FormatZip=الرمز البريدي -MainMenuCode=Menu entry code (mainmenu) -ECMAutoTree=Show automatic ECM tree +MainMenuCode=رمز دخول القائمة (mainmenu) +ECMAutoTree=عرض شجرة ECM التلقائية OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=ساعات الافتتاح OpeningHoursDesc=ادخل هنا ساعات الافتتاح لشركتك -ResourceSetup=Configuration of Resource module -UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). -DisabledResourceLinkUser=Disable feature to link a resource to users -DisabledResourceLinkContact=Disable feature to link a resource to contacts -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda -ConfirmUnactivation=Confirm module reset -OnMobileOnly=On small screen (smartphone) only -DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) -MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person -MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links. -MAIN_OPTIMIZEFORCOLORBLIND=Change interface's color for color blind person -MAIN_OPTIMIZEFORCOLORBLINDDesc=Enable this option if you are a color blind person, in some case interface will change color setup to increase contrast. -Protanopia=Protanopia -Deuteranopes=Deuteranopes -Tritanopes=Tritanopes -ThisValueCanOverwrittenOnUserLevel=This value can be overwritten by each user from its user page - tab '%s' -DefaultCustomerType=Default thirdparty type for "New customer" creation form -ABankAccountMustBeDefinedOnPaymentModeSetup=Note: The bank account must be defined on the module of each payment mode (Paypal, Stripe, ...) to have this feature working. -RootCategoryForProductsToSell=Root category of products to sell -RootCategoryForProductsToSellDesc=If defined, only products inside this category or childs of this category will be available in the Point Of Sale -DebugBar=Debug Bar -DebugBarDesc=Toolbar that comes with a plenty of tools to simplify debugging -DebugBarSetup=DebugBar Setup -GeneralOptions=General Options -LogsLinesNumber=Number of lines to show on logs tab -UseDebugBar=Use the debug bar -DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console -WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output -ModuleActivated=Module %s is activated and slows the interface -ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security) -ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose) -IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s. -AntivirusEnabledOnUpload=Antivirus enabled on uploaded files -SomeFilesOrDirInRootAreWritable=Some files or directories are not in a read-only mode -EXPORTS_SHARE_MODELS=Export models are share with everybody -ExportSetup=Setup of module Export -ImportSetup=Setup of module Import -InstanceUniqueID=Unique ID of the instance -SmallerThan=Smaller than -LargerThan=Larger than -IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email aready collected and linked to an object, the created event will be automatically linked to the known related object. -WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/. -EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account. -EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
-EndPointFor=End point for %s : %s -DeleteEmailCollector=Delete email collector -ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? -RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value -AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. -IPListExample=127.0.0.1 192.168.0.2 [::1] -BaseOnSabeDavVersion=Based on the library SabreDAV version -NotAPublicIp=Not a public IP -MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server (done 1 time only after installation) to allow the foundation to count the number of Dolibarr installation. -FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled -EmailTemplate=Template for email -EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax -PDF_SHOW_PROJECT=Show project on document -ShowProjectLabel=Project Label +ResourceSetup=تكوين وحدة الموارد +UseSearchToSelectResource=استخدم نموذج بحث لاختيار مورد (بدلاً من قائمة منسدلة). +DisabledResourceLinkUser=تعطيل ميزة لربط مورد للمستخدمين +DisabledResourceLinkContact=تعطيل ميزة لربط مورد بجهات الاتصال +EnableResourceUsedInEventCheck=يحظر استخدام نفس المورد في نفس الوقت في جدول الأعمال +ConfirmUnactivation=تأكيد إعادة تعيين الوحدة +OnMobileOnly=على الشاشة الصغيرة (الهاتف الذكي) فقط +DisableProspectCustomerType=تعطيل نوع الطرف الثالث "عميل محتمل + عميل" (لذلك يجب أن يكون الطرف الثالث "محتمل" أو "عميل" ، ولكن لا يمكن أن يكون كلاهما) +MAIN_OPTIMIZEFORTEXTBROWSER=تبسيط الواجهة للمكفوفين +MAIN_OPTIMIZEFORTEXTBROWSERDesc=قم بتمكين هذا الخيار إذا كنت شخصًا كفيفًا ، أو إذا كنت تستخدم التطبيق من مستعرض نصي مثل Lynx أو Links. +MAIN_OPTIMIZEFORCOLORBLIND=تغيير لون الواجهة للأشخاص المكفوفين بالألوان +MAIN_OPTIMIZEFORCOLORBLINDDesc=قم بتمكين هذا الخيار إذا كنت شخصًا مصابًا بعمى الألوان ، ففي بعض الحالات ستغير الواجهة إعداد اللون لزيادة التباين. +Protanopia=بروتوبيا +Deuteranopes=الثنائيات +Tritanopes=تريتانوبس +ThisValueCanOverwrittenOnUserLevel=يمكن لكل مستخدم الكتابة فوق هذه القيمة من صفحة المستخدم الخاصة به - علامة التبويب "%s" +DefaultCustomerType=نوع الطرف الثالث الافتراضي لنموذج إنشاء "عميل جديد" +ABankAccountMustBeDefinedOnPaymentModeSetup=ملاحظة: يجب تحديد الحساب المصرفي في الوحدة النمطية لكل وضع دفع (Paypal ، Stripe ، ...) حتى تعمل هذه الميزة. +RootCategoryForProductsToSell=فئة جذر المنتجات للبيع +RootCategoryForProductsToSellDesc=إذا تم تحديدها ، فستتوفر فقط المنتجات الموجودة داخل هذه الفئة أو الأطفال من هذه الفئة في نقطة البيع +DebugBar=شريط التصحيح +DebugBarDesc=شريط أدوات مزود بالعديد من الأدوات لتبسيط تصحيح الأخطاء +DebugBarSetup=إعداد DebugBar +GeneralOptions=خيارات عامة +LogsLinesNumber=عدد الأسطر المراد إظهارها في علامة تبويب السجلات +UseDebugBar=استخدم شريط التصحيح +DEBUGBAR_LOGS_LINES_NUMBER=عدد أسطر السجل الأخيرة التي يجب الاحتفاظ بها في وحدة التحكم +WarningValueHigherSlowsDramaticalyOutput=تحذير ، القيم الأعلى تبطئ الإخراج الدرامي +ModuleActivated=يتم تنشيط الوحدة النمطية %s وتبطئ الواجهة +ModuleActivatedWithTooHighLogLevel=يتم تنشيط الوحدة النمطية %s بمستوى تسجيل مرتفع جدًا (حاول استخدام مستوى أقل للحصول على أداء وأمان أفضل) +ModuleSyslogActivatedButLevelNotTooVerbose=تم تنشيط الوحدة النمطية %s ومستوى السجل (%s) صحيح (ليس مطولًا جدًا) +IfYouAreOnAProductionSetThis=إذا كنت تعمل في بيئة إنتاج ، فيجب عليك تعيين هذه الخاصية على %s. +AntivirusEnabledOnUpload=تم تمكين مكافحة الفيروسات على الملفات التي تم تحميلها +SomeFilesOrDirInRootAreWritable=بعض الملفات أو الدلائل ليست في وضع القراءة فقط +EXPORTS_SHARE_MODELS=يتم مشاركة نماذج التصدير مع الجميع +ExportSetup=إعداد تصدير الوحدة النمطية +ImportSetup=إعداد استيراد الوحدة +InstanceUniqueID=المعرف الفريد للمثيل +SmallerThan=اصغر من +LargerThan=أكبر من +IfTrackingIDFoundEventWillBeLinked=لاحظ أنه إذا تم العثور على معرف تتبع لعنصر ما في البريد الإلكتروني ، أو إذا كان البريد الإلكتروني عبارة عن إجابة على بريد إلكتروني تم تجميعه مسبقًا ومرتبط بكائن ، فسيتم ربط الحدث الذي تم إنشاؤه تلقائيًا بالعنصر ذي الصلة المعروف. +WithGMailYouCanCreateADedicatedPassword=باستخدام حساب GMail ، إذا قمت بتمكين التحقق بخطوتين ، فمن المستحسن إنشاء كلمة مرور ثانية مخصصة للتطبيق بدلاً من استخدام رمز مرور حسابك من https://myaccount.google.com/. +EmailCollectorTargetDir=قد يكون من السلوك المرغوب فيه نقل البريد الإلكتروني إلى علامة / دليل آخر عند معالجته بنجاح. ما عليك سوى تعيين اسم الدليل هنا لاستخدام هذه الميزة (لا تستخدم أحرفًا خاصة في الاسم). لاحظ أنه يجب عليك أيضًا استخدام حساب تسجيل دخول للقراءة / الكتابة. +EmailCollectorLoadThirdPartyHelp=يمكنك استخدام هذا الإجراء لاستخدام محتوى البريد الإلكتروني للعثور على طرف ثالث موجود وتحميله في قاعدة البيانات الخاصة بك. سيتم استخدام الطرف الثالث الذي تم العثور عليه (أو الذي تم إنشاؤه) في الإجراءات التالية التي تحتاج إليه.
على سبيل المثال ، إذا كنت تريد إنشاء طرف ثالث باسم مستخرج من سلسلة 'Name: name to find' موجودة في النص ، استخدم البريد الإلكتروني للمرسل كبريد إلكتروني ، يمكنك تعيين حقل المعلمة مثل هذا:
'email = HEADER: ^ From: (. *)؛ name = EXTRACT: BODY: Name: \\ s ([^ \\ s] *)؛ client = SET: 2؛ '
+EndPointFor=نقطة النهاية لـ %s: %s +DeleteEmailCollector=حذف مُجمع البريد الإلكتروني +ConfirmDeleteEmailCollector=هل أنت متأكد أنك تريد حذف جامع البريد الإلكتروني هذا؟ +RecipientEmailsWillBeReplacedWithThisValue=سيتم دائمًا استبدال رسائل البريد الإلكتروني المستلم بهذه القيمة +AtLeastOneDefaultBankAccountMandatory=يجب تحديد حساب مصرفي افتراضي واحد على الأقل +RESTRICT_ON_IP=السماح بوصول واجهة برمجة التطبيقات إلى عناوين IP معينة للعميل فقط (غير مسموح باستخدام حرف البدل ، استخدم مسافة بين القيم). فارغ يعني أن كل عميل يمكنه الوصول. +IPListExample=127.0.0.1 192.168.0.2 [:: 1] +BaseOnSabeDavVersion=بناء على نسخة مكتبة SabreDAV +NotAPublicIp=ليس IP عام +MakeAnonymousPing=قم بعمل Ping مجهول "+1" لخادم مؤسسة Dolibarr (يتم إجراؤه مرة واحدة فقط بعد التثبيت) للسماح للمؤسسة بحساب عدد تثبيت Dolibarr. +FeatureNotAvailableWithReceptionModule=الميزة غير متاحة عند تمكين استقبال الوحدة +EmailTemplate=نموذج للبريد الإلكتروني +EMailsWillHaveMessageID=ستحتوي رسائل البريد الإلكتروني على علامة "مراجع" تطابق بناء الجملة هذا +PDF_SHOW_PROJECT=عرض المشروع في المستند +ShowProjectLabel=تسمية المشروع +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=تضمين الاسم المستعار في اسم الطرف الثالث +THIRDPARTY_ALIAS=اسم الطرف الثالث - الاسم المستعار الطرف الثالث +ALIAS_THIRDPARTY=الاسم المستعار للطرف الثالث - اسم الطرف الثالث PDF_USE_ALSO_LANGUAGE_CODE=اذا كنت ترغب في تكرار بعض النصوص بلغتين مختلفتين في ملفاتك المولدة بصيغة المستندات المتنقلة . يجب عليك ان ان تحدد اللغة الثانية هنا حتى يتسنى للملفات المولدة ان تحتوي على لغتين في نفس الصفحة . اللغة المختارة اثناء توليد المستند واللغة المختارة هنا (فقط بعض قوالب صيغة المستندات المتنقلة تدعم هذه الميزة) . ابق الخيار فارغاً للتوليد بلغة واحدة -PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF -FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +PDF_USE_A=إنشاء مستندات PDF بتنسيق PDF / A بدلاً من تنسيق PDF الافتراضي +FafaIconSocialNetworksDesc=أدخل هنا رمز رمز FontAwesome. إذا كنت لا تعرف ما هو FontAwesome ، فيمكنك استخدام القيمة العامة fa-address-book. RssNote=ملاحظة: كل تعريف لمصدر اخبار مختصرة يوفر بريمج يجب تفعيله ليكون متاحا في لوحة المعلومات JumpToBoxes=اذهب الى الاعدادت -> البريمجات -MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time" -MeasuringScaleDesc=The scale is the number of places you have to move the decimal part to match the default reference unit. For "time" unit type, it is the number of seconds. Values between 80 and 99 are reserved values. -TemplateAdded=Template added -TemplateUpdated=Template updated -TemplateDeleted=Template deleted -MailToSendEventPush=Event reminder email -SwitchThisForABetterSecurity=Switching this value to %s is recommended for more security -DictionaryProductNature= Nature of product -CountryIfSpecificToOneCountry=Country (if specific to a given country) -YouMayFindSecurityAdviceHere=You may find security advisory here -ModuleActivatedMayExposeInformation=This PHP extension may expose sensitive data. If you don't need it, disable it. -ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment. -CombinationsSeparator=Separator character for product combinations -SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples +MeasuringUnitTypeDesc=استخدم هنا قيمة مثل "الحجم" ، "السطح" ، "الحجم" ، "الوزن" ، "الوقت" +MeasuringScaleDesc=المقياس هو عدد الأماكن التي يجب عليك نقل الجزء العشري منها لمطابقة الوحدة المرجعية الافتراضية. بالنسبة لنوع وحدة "الوقت" ، فهو عدد الثواني. القيم بين 80 و 99 هي قيم محجوزة. +TemplateAdded=تمت إضافة القالب +TemplateUpdated=تم تحديث النموذج +TemplateDeleted=تم حذف النموذج +MailToSendEventPush=البريد الإلكتروني لتذكير الحدث +SwitchThisForABetterSecurity=يوصى بتبديل هذه القيمة إلى %s لمزيد من الأمان +DictionaryProductNature= طبيعة المنتج +CountryIfSpecificToOneCountry=البلد (إذا كانت محددة لبلد معين) +YouMayFindSecurityAdviceHere=قد تجد نصائح أمنية هنا +ModuleActivatedMayExposeInformation=قد يؤدي امتداد PHP هذا إلى كشف بيانات حساسة. إذا لم تكن بحاجة إليه ، فقم بتعطيله. +ModuleActivatedDoNotUseInProduction=تم تمكين وحدة مصممة للتطوير. لا تقم بتمكينه في بيئة الإنتاج. +CombinationsSeparator=حرف فاصل لتركيبات المنتج +SeeLinkToOnlineDocumentation=انظر الارتباط إلى التوثيق عبر الإنترنت في القائمة العلوية للحصول على أمثلة SHOW_SUBPRODUCT_REF_IN_PDF=اذا كانت الميزة "%s" من الوحدة %s مستخدمة ، اظهر التفاصيل للمنتجات الفرعية في الملفات بصيغة المستندات المتنقلة -AskThisIDToYourBank=Contact your bank to get this ID -AdvancedModeOnly=Permision available in Advanced permission mode only -ConfFileIsReadableOrWritableByAnyUsers=The conf file is readable or writable by any users. Give permission to web server user and group only. -MailToSendEventOrganization=Event Organization -MailToPartnership=Partnership -AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form -YouShouldDisablePHPFunctions=You should disable PHP functions -IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions -PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions -NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) -RecommendedValueIs=Recommended: %s +AskThisIDToYourBank=اتصل بالمصرف الذي تتعامل معه للحصول على هذا المعرف +AdvancedModeOnly=الإذن متاح في وضع الإذن المتقدم فقط +ConfFileIsReadableOrWritableByAnyUsers=ملف conf يمكن قراءته أو الكتابة عليه من قبل أي مستخدم. إعطاء الإذن لمستخدم خادم الويب والمجموعة فقط. +MailToSendEventOrganization=تنظيم الأحداث +MailToPartnership=شراكة +AGENDA_EVENT_DEFAULT_STATUS=حالة الحدث الافتراضية عند إنشاء حدث من النموذج +YouShouldDisablePHPFunctions=يجب عليك تعطيل وظائف PHP +IfCLINotRequiredYouShouldDisablePHPFunctions=باستثناء إذا كنت بحاجة إلى تشغيل أوامر النظام في رمز مخصص ، يجب عليك تعطيل وظائف PHP +PHPFunctionsRequiredForCLI=لغرض الصدفة (مثل النسخ الاحتياطي للوظيفة المجدولة أو تشغيل برنامج منشط) ، يجب أن تحتفظ بوظائف PHP +NoWritableFilesFoundIntoRootDir=لم يتم العثور على ملفات أو أدلة قابلة للكتابة للبرامج الشائعة في الدليل الجذر الخاص بك (جيد) +RecommendedValueIs=موصى به: %s Recommended=موصى بها -NotRecommended=Not recommended -ARestrictedPath=Some restricted path -CheckForModuleUpdate=Check for external modules updates -CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. -ModuleUpdateAvailable=An update is available -NoExternalModuleWithUpdate=No updates found for external modules -SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) -YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. -RandomlySelectedIfSeveral=Randomly selected if several pictures are available -DatabasePasswordObfuscated=Database password is obfuscated in conf file -DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file -APIsAreNotEnabled=APIs modules are not enabled -YouShouldSetThisToOff=You should set this to 0 or off -InstallAndUpgradeLockedBy=Install and upgrades are locked by the file %s -OldImplementation=Old implementation -PDF_SHOW_LINK_TO_ONLINE_PAYMENT=If some online payment modules are enabled (Paypal, Stripe, ...), add a link on the PDF to make the online payment -DashboardDisableGlobal=Disable globally all the thumbs of open objects -BoxstatsDisableGlobal=Disable totally box statistics -DashboardDisableBlocks=Thumbs of open objects (to process or late) on main dashboard -DashboardDisableBlockAgenda=Disable the thumb for agenda -DashboardDisableBlockProject=Disable the thumb for projects -DashboardDisableBlockCustomer=Disable the thumb for customers -DashboardDisableBlockSupplier=Disable the thumb for suppliers -DashboardDisableBlockContract=Disable the thumb for contracts -DashboardDisableBlockTicket=Disable the thumb for tickets -DashboardDisableBlockBank=Disable the thumb for banks -DashboardDisableBlockAdherent=Disable the thumb for memberships -DashboardDisableBlockExpenseReport=Disable the thumb for expense reports -DashboardDisableBlockHoliday=Disable the thumb for leaves -EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax -LanguageAndPresentation=Language and presentation -SkinAndColors=Skin and colors -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax -PDF_USE_1A=Generate PDF with PDF/A-1b format -MissingTranslationForConfKey = Missing translation for %s -NativeModules=Native modules -NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria -API_DISABLE_COMPRESSION=Disable compression of API responses -EachTerminalHasItsOwnCounter=Each terminal use its own counter. -FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first -PreviousHash=Previous hash -LateWarningAfter="Late" warning after -TemplateforBusinessCards=Template for a business card in different size -InventorySetup= Inventory Setup -ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. -ShowQuickAddLink=Show a button to quickly add an element in top right menu -HashForPing=Hash used for ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +NotRecommended=لا ينصح +ARestrictedPath=بعض المسار المقيد +CheckForModuleUpdate=تحقق من وجود تحديثات الوحدات الخارجية +CheckForModuleUpdateHelp=سيتصل هذا الإجراء بمحرري الوحدات الخارجية للتحقق من توفر إصدار جديد. +ModuleUpdateAvailable=تحديث متاح +NoExternalModuleWithUpdate=لم يتم العثور على تحديثات للوحدات الخارجية +SwaggerDescriptionFile=ملف وصف Swagger API (للاستخدام مع redoc على سبيل المثال) +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=لقد قمت بتمكين WS API الموقوف. يجب عليك استخدام REST API بدلاً من ذلك. +RandomlySelectedIfSeveral=يتم اختياره عشوائيًا في حالة توفر عدة صور +DatabasePasswordObfuscated=كلمة مرور قاعدة البيانات مشوشة في ملف conf +DatabasePasswordNotObfuscated=لم يتم إخفاء كلمة مرور قاعدة البيانات في ملف conf +APIsAreNotEnabled=لم يتم تمكين الوحدات النمطية لواجهات برمجة التطبيقات +YouShouldSetThisToOff=يجب عليك ضبط هذا على 0 أو إيقاف تشغيله +InstallAndUpgradeLockedBy=التثبيت والترقيات مقفلة بالملف %s +OldImplementation=التنفيذ القديم +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=إذا تم تمكين بعض وحدات الدفع عبر الإنترنت (Paypal ، Stripe ، ...) ، فأضف رابطًا في ملف PDF لإجراء الدفع عبر الإنترنت +DashboardDisableGlobal=قم بتعطيل جميع إبهام الكائنات المفتوحة بشكل عام +BoxstatsDisableGlobal=تعطيل إحصائيات الصندوق تمامًا +DashboardDisableBlocks=إبهام الكائنات المفتوحة (للمعالجة أو المتأخرة) على لوحة القيادة الرئيسية +DashboardDisableBlockAgenda=تعطيل الإبهام لجدول الأعمال +DashboardDisableBlockProject=تعطيل الإبهام للمشاريع +DashboardDisableBlockCustomer=تعطيل الإبهام للعملاء +DashboardDisableBlockSupplier=تعطيل الإبهام للموردين +DashboardDisableBlockContract=تعطيل الإبهام للعقود +DashboardDisableBlockTicket=تعطيل الإبهام للتذاكر +DashboardDisableBlockBank=تعطيل الإبهام للبنوك +DashboardDisableBlockAdherent=تعطيل الإبهام للعضويات +DashboardDisableBlockExpenseReport=تعطيل الإبهام لتقارير المصروفات +DashboardDisableBlockHoliday=تعطيل الإبهام للأوراق +EnabledCondition=شرط تمكين الحقل (إذا لم يتم تمكينه ، فستظل الرؤية متوقفة دائمًا) +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=إذا كنت تريد استخدام ضريبة ثانية ، فيجب عليك أيضًا تمكين ضريبة المبيعات الأولى +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=إذا كنت تريد استخدام ضريبة ثالثة ، فيجب عليك أيضًا تمكين ضريبة المبيعات الأولى +LanguageAndPresentation=اللغة والعرض +SkinAndColors=الجلد والألوان +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=إذا كنت تريد استخدام ضريبة ثانية ، فيجب عليك أيضًا تمكين ضريبة المبيعات الأولى +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=إذا كنت تريد استخدام ضريبة ثالثة ، فيجب عليك أيضًا تمكين ضريبة المبيعات الأولى +PDF_USE_1A=قم بإنشاء ملف PDF بتنسيق PDF / A-1b +MissingTranslationForConfKey = ترجمة مفقودة لـ %s +NativeModules=الوحدات الأصلية +NoDeployedModulesFoundWithThisSearchCriteria=لم يتم العثور على وحدات لمعايير البحث هذه +API_DISABLE_COMPRESSION=تعطيل ضغط استجابات API +EachTerminalHasItsOwnCounter=كل محطة تستخدم العداد الخاص بها. +FillAndSaveAccountIdAndSecret=قم بتعبئة وحفظ معرف الحساب والسرية أولاً +PreviousHash=التجزئة السابقة +LateWarningAfter=تحذير "متأخر" بعد +TemplateforBusinessCards=قالب لبطاقة عمل بحجم مختلف +InventorySetup= إعداد الجرد +ExportUseLowMemoryMode=استخدم وضع ذاكرة منخفضة +ExportUseLowMemoryModeHelp=استخدم وضع الذاكرة المنخفضة لتنفيذ تنفيذ التفريغ (يتم الضغط من خلال أنبوب بدلاً من ذاكرة PHP). لا تسمح هذه الطريقة بالتحقق من اكتمال الملف ولا يمكن الإبلاغ عن رسالة الخطأ إذا فشلت. + +ModuleWebhookName = الويب هوك +ModuleWebhookDesc = واجهة للقبض على مشغلات dolibarr وإرسالها إلى عنوان URL +WebhookSetup = إعداد Webhook +Settings = الإعدادات +WebhookSetupPage = صفحة إعداد Webhook +ShowQuickAddLink=أظهر زرًا لإضافة عنصر بسرعة في القائمة العلوية اليمنى + +HashForPing=تجزئة تستخدم لأداة ping +ReadOnlyMode=هو المثال في وضع "للقراءة فقط" +DEBUGBAR_USE_LOG_FILE=استخدم ملف dolibarr.log لتعويض السجلات +UsingLogFileShowAllRecordOfSubrequestButIsSlower=استخدم ملف dolibarr.log لتعويض السجلات بدلاً من اصطياد الذاكرة الحية. يسمح لك بالتقاط جميع السجلات بدلاً من تسجيل العملية الحالية فقط (لذلك بما في ذلك واحدة من صفحات طلبات ajax الفرعية) ولكنه سيجعل مثيلك بطيئًا جدًا. لا ينصح. +FixedOrPercent=ثابت (استخدام الكلمة الرئيسية "ثابت") أو النسبة المئوية (استخدام الكلمة الرئيسية "النسبة المئوية") +DefaultOpportunityStatus=حالة الفرصة الافتراضية (الحالة الأولى عند إنشاء العميل المتوقع) + +IconAndText=الرمز والنص +TextOnly=نص فقط +IconOnlyAllTextsOnHover=رمز فقط - تظهر جميع النصوص أسفل رمز في شريط قوائم التمرير بالماوس +IconOnlyTextOnHover=رمز فقط - يظهر نص الرمز أسفل رمز على الماوس ، قم بتمرير الماوس فوق الرمز +IconOnly=رمز فقط - نص على تلميح الأداة فقط +INVOICE_ADD_ZATCA_QR_CODE=إظهار رمز الاستجابة السريعة ZATCA على الفواتير +INVOICE_ADD_ZATCA_QR_CODEMore=تحتاج بعض الدول العربية إلى رمز الاستجابة السريعة هذا على فواتيرها +INVOICE_ADD_SWISS_QR_CODE=أظهر رمز QR-Bill السويسري على الفواتير +UrlSocialNetworksDesc=رابط URL للشبكة الاجتماعية. استخدم {socialid} للجزء المتغير الذي يحتوي على معرف الشبكة الاجتماعية. +IfThisCategoryIsChildOfAnother=إذا كانت هذه الفئة تابعة لفئة أخرى +NoName=بدون اسم +CIDLookupURL=تجلب الوحدة عنوان URL يمكن استخدامه بواسطة أداة خارجية للحصول على اسم طرف ثالث أو جهة اتصال من رقم هاتفه. URL المطلوب استخدامه هو: diff --git a/htdocs/langs/ar_SA/agenda.lang b/htdocs/langs/ar_SA/agenda.lang index 4d1be2df328..233df54d68a 100644 --- a/htdocs/langs/ar_SA/agenda.lang +++ b/htdocs/langs/ar_SA/agenda.lang @@ -31,20 +31,21 @@ ViewWeek=عرض اسبوعي ViewPerUser=لكل وجهة نظر المستخدم ViewPerType=العرض حسب النوع AutoActions= إكمال تلقائي -AgendaAutoActionDesc= Here you may define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. -AgendaSetupOtherDesc= This page provides options to allow the export of your Dolibarr events into an external calendar (Thunderbird, Google Calendar etc...) +AgendaAutoActionDesc= هنا يمكنك تحديد الأحداث التي تريد أن ينشئها Dolibarr تلقائيًا في الأجندة. إذا لم يتم تحديد أي شيء ، فسيتم تضمين الإجراءات اليدوية فقط في السجلات وعرضها في الأجندة. لن يتم حفظ التتبع التلقائي لإجراءات العمل التي تتم على الكائنات (التحقق من الصحة ، تغيير الحالة). +AgendaSetupOtherDesc= توفر هذه الصفحة خيارات للسماح بتصدير أحداث Dolibarr إلى تقويم خارجي (Thunderbird وتقويم Google وما إلى ذلك ...) AgendaExtSitesDesc=تسمح هذه الصفحة بالإعلان عن المصادر الخارجية للتقويمات لرؤية أحداثها في جدول أعمال Dolibarr. ActionsEvents=الأحداث التي سيقوم دوليبار بإنشاء أعمال في جدول الأعمال بشكل تلقائي -EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup. +EventRemindersByEmailNotEnabled=لم يتم تمكين تذكيرات الأحداث عبر البريد الإلكتروني في إعداد الوحدة النمطية %s. ##### Agenda event labels ##### NewCompanyToDolibarr=تم إنشاء الطرف الثالث %s -COMPANY_MODIFYInDolibarr=Third party %s modified -COMPANY_DELETEInDolibarr=Third party %s deleted +COMPANY_MODIFYInDolibarr=الطرف الثالث %s تم تعديله +COMPANY_DELETEInDolibarr=تم حذف %s الخاص بالطرف الثالث ContractValidatedInDolibarr=العقد%s تم التأكد من صلاحيته -CONTRACT_DELETEInDolibarr=Contract %s deleted +CONTRACT_DELETEInDolibarr=تم حذف العقد %s PropalClosedSignedInDolibarr=الإقتراح%sتم توقعية PropalClosedRefusedInDolibarr=الإقتراح%s تم رفضة PropalValidatedInDolibarr=اقتراح %s التحقق من صحة +PropalBackToDraftInDolibarr=الاقتراح %s يعود إلى حالة المسودة PropalClassifiedBilledInDolibarr=الإقتراح%s تصنف تم دفعة InvoiceValidatedInDolibarr=تم التحقق من صحة الفاتورة %s InvoiceValidatedInDolibarrFromPos=الفاتورة%s تم التأكد من صلاحيتها من نقاط البيع @@ -56,16 +57,17 @@ MemberValidatedInDolibarr=العضو%s التأكد من صلاحيته MemberModifiedInDolibarr=العضو %sتم تعديلة MemberResiliatedInDolibarr=العضو %sتم إنهاؤه MemberDeletedInDolibarr=العضو %s تم حذفة -MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added -MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified -MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted +MemberSubscriptionAddedInDolibarr=تمت إضافة اشتراك %s للعضو %s +MemberSubscriptionModifiedInDolibarr=اشتراك %s للعضو %s معدّل +MemberSubscriptionDeletedInDolibarr=تم حذف الاشتراك %s للعضو %s ShipmentValidatedInDolibarr=شحنة%s التأكد من صلاحيتها ShipmentClassifyClosedInDolibarr=الشحنة %sتم تصنيفها مدفوعة -ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open -ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status +ShipmentUnClassifyCloseddInDolibarr=إعادة فتح الشحنة %s المصنفة +ShipmentBackToDraftInDolibarr=تعود الشحنة %s إلى حالة المسودة ShipmentDeletedInDolibarr=الشحنة%sتم حذفها -ShipmentCanceledInDolibarr=Shipment %s canceled -ReceptionValidatedInDolibarr=Reception %s validated +ShipmentCanceledInDolibarr=تم إلغاء الشحنة %s +ReceptionValidatedInDolibarr=تم التحقق من صحة الاستقبال %s +ReceptionClassifyClosedInDolibarr=الاستقبال %s مصنف مغلق OrderCreatedInDolibarr=الطلب %s تم إنشاؤة OrderValidatedInDolibarr=الطلب %s تم التحقق منه OrderDeliveredInDolibarr=الطلب %s مصنف تم التوصيل @@ -74,31 +76,31 @@ OrderBilledInDolibarr=الطلب%s مصنف تم الدفع OrderApprovedInDolibarr=الطلب %s تم الموافقة علية OrderRefusedInDolibarr=الطلب %s تم رفضه OrderBackToDraftInDolibarr=الطلب %s تم إرجاعة إلى حالة المسودة -ProposalSentByEMail=Commercial proposal %s sent by email -ContractSentByEMail=Contract %s sent by email -OrderSentByEMail=Sales order %s sent by email -InvoiceSentByEMail=Customer invoice %s sent by email -SupplierOrderSentByEMail=Purchase order %s sent by email -ORDER_SUPPLIER_DELETEInDolibarr=Purchase order %s deleted -SupplierInvoiceSentByEMail=Vendor invoice %s sent by email -ShippingSentByEMail=Shipment %s sent by email +ProposalSentByEMail=تم إرسال الاقتراح التجاري %s عبر البريد الإلكتروني +ContractSentByEMail=تم إرسال العقد %s عن طريق البريد الإلكتروني +OrderSentByEMail=تم إرسال أمر المبيعات %s عبر البريد الإلكتروني +InvoiceSentByEMail=فاتورة العميل رقم %s مُرسلة عبر البريد الإلكتروني +SupplierOrderSentByEMail=تم إرسال أمر الشراء %s عبر البريد الإلكتروني +ORDER_SUPPLIER_DELETEInDolibarr=تم حذف أمر الشراء %s +SupplierInvoiceSentByEMail=فاتورة البائع %s مُرسلة عبر البريد الإلكتروني +ShippingSentByEMail=شحنة %s أرسلت عن طريق البريد الإلكتروني ShippingValidated= الشحنة %s تم التأكد من صلاحيتها -InterventionSentByEMail=Intervention %s sent by email +InterventionSentByEMail=تم إرسال التدخل %s عبر البريد الإلكتروني ProposalDeleted=تم حذف العرض OrderDeleted=تم حذف الطلب InvoiceDeleted=تم حذف الفاتورة -DraftInvoiceDeleted=Draft invoice deleted -CONTACT_CREATEInDolibarr=Contact %s created -CONTACT_MODIFYInDolibarr=Contact %s modified -CONTACT_DELETEInDolibarr=Contact %s deleted +DraftInvoiceDeleted=تم حذف مسودة الفاتورة +CONTACT_CREATEInDolibarr=تم إنشاء جهة الاتصال %s +CONTACT_MODIFYInDolibarr=تعديل الاتصال %s +CONTACT_DELETEInDolibarr=تم حذف جهة الاتصال %s PRODUCT_CREATEInDolibarr=المنتج %s تم انشاؤه PRODUCT_MODIFYInDolibarr=المنتج %sتم تعديلة PRODUCT_DELETEInDolibarr=المنتج%s تم حذفة -HOLIDAY_CREATEInDolibarr=Request for leave %s created -HOLIDAY_MODIFYInDolibarr=Request for leave %s modified -HOLIDAY_APPROVEInDolibarr=Request for leave %s approved -HOLIDAY_VALIDATEInDolibarr=Request for leave %s validated -HOLIDAY_DELETEInDolibarr=Request for leave %s deleted +HOLIDAY_CREATEInDolibarr=تم إنشاء طلب إجازة %s +HOLIDAY_MODIFYInDolibarr=طلب إجازة تعديل %s +HOLIDAY_APPROVEInDolibarr=طلب إجازة تمت الموافقة على %s +HOLIDAY_VALIDATEInDolibarr=تم التحقق من صحة طلب المغادرة %s +HOLIDAY_DELETEInDolibarr=طلب إجازة %s محذوف EXPENSE_REPORT_CREATEInDolibarr=تقرير المصروفات %sتم إنشاؤة EXPENSE_REPORT_VALIDATEInDolibarr=تقرير المصروفات %s تم التحقق من صحتة EXPENSE_REPORT_APPROVEInDolibarr=تقرير المصروفات %s تم الموافقة عليه @@ -107,22 +109,22 @@ EXPENSE_REPORT_REFUSEDInDolibarr=تقرير المصروفات%s تم رفضة PROJECT_CREATEInDolibarr=مشروع٪ الصورة التي تم إنشاؤها PROJECT_MODIFYInDolibarr=المشروع %s تم تعديلة PROJECT_DELETEInDolibarr=المشروع %s تم حذفة -TICKET_CREATEInDolibarr=Ticket %s created -TICKET_MODIFYInDolibarr=Ticket %s modified -TICKET_ASSIGNEDInDolibarr=Ticket %s assigned -TICKET_CLOSEInDolibarr=Ticket %s closed -TICKET_DELETEInDolibarr=Ticket %s deleted -BOM_VALIDATEInDolibarr=BOM validated -BOM_UNVALIDATEInDolibarr=BOM unvalidated -BOM_CLOSEInDolibarr=BOM disabled -BOM_REOPENInDolibarr=BOM reopen -BOM_DELETEInDolibarr=BOM deleted -MRP_MO_VALIDATEInDolibarr=MO validated -MRP_MO_UNVALIDATEInDolibarr=MO set to draft status -MRP_MO_PRODUCEDInDolibarr=MO produced -MRP_MO_DELETEInDolibarr=MO deleted -MRP_MO_CANCELInDolibarr=MO canceled -PAIDInDolibarr=%s paid +TICKET_CREATEInDolibarr=تم إنشاء التذكرة %s +TICKET_MODIFYInDolibarr=تم تعديل التذكرة %s +TICKET_ASSIGNEDInDolibarr=تم تعيين التذكرة %s +TICKET_CLOSEInDolibarr=تم إغلاق التذكرة %s +TICKET_DELETEInDolibarr=تم حذف التذكرة %s +BOM_VALIDATEInDolibarr=تم التحقق من صحة BOM +BOM_UNVALIDATEInDolibarr=لم يتم التحقق من BOM +BOM_CLOSEInDolibarr=تم تعطيل BOM +BOM_REOPENInDolibarr=إعادة فتح BOM +BOM_DELETEInDolibarr=تم حذف BOM +MRP_MO_VALIDATEInDolibarr=تم التحقق من صحة MO +MRP_MO_UNVALIDATEInDolibarr=تم تعيين MO على وضع المسودة +MRP_MO_PRODUCEDInDolibarr=أنتجت MO +MRP_MO_DELETEInDolibarr=تم حذف MO +MRP_MO_CANCELInDolibarr=تم إلغاء MO +PAIDInDolibarr=%s المدفوعة ##### End agenda events ##### AgendaModelModule=نماذج المستندات للحدث DateActionStart=تاريخ البدء @@ -131,10 +133,10 @@ AgendaUrlOptions1=يمكنك أيضا إضافة المعايير التالية AgendaUrlOptions3=وجينا =%sإلى تقييد الإخراج إلى الإجراءات التي يملكها المستخدم%s. AgendaUrlOptionsNotAdmin=لوجينا=!%s لمنع اخراج الجراءات التى لا يمتلكها المستخدم %s. AgendaUrlOptions4=لوجينت =%s لتقييد الإخراج على الإجراءات المعينة للمستخدم %s (المالك والآخرين). -AgendaUrlOptionsProject=project=__PROJECT_ID__ to restrict output to actions linked to project __PROJECT_ID__. -AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto to exclude automatic events. -AgendaUrlOptionsIncludeHolidays=includeholidays=1 to include events of holidays. -AgendaShowBirthdayEvents=Birthdays of contacts +AgendaUrlOptionsProject= مشروع = __ PROJECT_ID__ لتقييد الإخراج بالإجراءات المرتبطة بالمشروع __PROJECT_ID__ . +AgendaUrlOptionsNotAutoEvent= notactiontype = systemauto لاستبعاد الأحداث التلقائية. +AgendaUrlOptionsIncludeHolidays= تشمل الإجازات = 1 لتضمين أحداث الأعياد. +AgendaShowBirthdayEvents=أعياد ميلاد جهات الاتصال AgendaHideBirthdayEvents=إخفاء تواريخ ميلاد جهات الإتصال Busy=مشغول ExportDataset_event1=قائمة الأحداث في جدول الأعمال @@ -143,9 +145,9 @@ DefaultWorkingHours=افتراضي ساعات العمل في اليوم (على # External Sites ical ExportCal=تصدير التقويم ExtSites=استيراد التقويمات الخارجية -ExtSitesEnableThisTool=Show external calendars (defined in global setup) in Agenda. Does not affect external calendars defined by users. +ExtSitesEnableThisTool=إظهار التقويمات الخارجية (المحددة في الإعداد العام) في الأجندة. لا يؤثر على التقويمات الخارجية التي حددها المستخدمون. ExtSitesNbOfAgenda=عدد التقويمات -AgendaExtNb=Calendar no. %s +AgendaExtNb=التقويم لا. %s ExtSiteUrlAgenda=عنوان المتصفح للدخول لملف .ical ExtSiteNoLabel=لا يوجد وصف VisibleTimeRange=نطاق زمني مرئي @@ -156,19 +158,19 @@ ActionType=نوع الحدث DateActionBegin=تاريخ البدء الحدث ConfirmCloneEvent=هل انت متأكد انك ترغب في استنساخ الحدث %s ؟ RepeatEvent=تكرار الحدث -OnceOnly=Once only +OnceOnly=مرة واحدة فقط EveryWeek=كل اسبوع EveryMonth=كل شهر DayOfMonth=يوم من الشهر DayOfWeek=يوم من الأسبوع DateStartPlusOne=تاريخ بدء + 1 ساعة -SetAllEventsToTodo=Set all events to todo -SetAllEventsToInProgress=Set all events to in progress -SetAllEventsToFinished=Set all events to finished -ReminderTime=Reminder period before the event -TimeType=Duration type -ReminderType=Callback type -AddReminder=Create an automatic reminder notification for this event -ErrorReminderActionCommCreation=Error creating the reminder notification for this event -BrowserPush=Browser Popup Notification -ActiveByDefault=Enabled by default +SetAllEventsToTodo=اضبط كل الأحداث على ما يجب فعله +SetAllEventsToInProgress=اضبط كل الأحداث على قيد التقدم +SetAllEventsToFinished=اضبط جميع الأحداث على الانتهاء +ReminderTime=فترة تذكير قبل الحدث +TimeType=نوع المدة +ReminderType=نوع رد الاتصال +AddReminder=إنشاء إشعار تذكير تلقائي لهذا الحدث +ErrorReminderActionCommCreation=خطأ في إنشاء إشعار التذكير لهذا الحدث +BrowserPush=إعلام المتصفح المنبثق +ActiveByDefault=يتم التمكين افتراضيًا diff --git a/htdocs/langs/ar_SA/boxes.lang b/htdocs/langs/ar_SA/boxes.lang index bd8f4e9266b..0813de12591 100644 --- a/htdocs/langs/ar_SA/boxes.lang +++ b/htdocs/langs/ar_SA/boxes.lang @@ -18,13 +18,13 @@ BoxLastActions=أحدث الإجراءات BoxLastContracts=أحدث العقود BoxLastContacts=أحدث الاتصالات | العناوين BoxLastMembers=أحدث الأعضاء -BoxLastModifiedMembers=Latest modified members -BoxLastMembersSubscriptions=Latest member subscriptions +BoxLastModifiedMembers=أحدث الأعضاء المعدلين +BoxLastMembersSubscriptions=أحدث اشتراكات الأعضاء BoxFicheInter=أحدث التدخلات BoxCurrentAccounts=ميزان الحسابات المفتوحة BoxTitleMemberNextBirthdays=أعياد الميلاد لهذا الشهر (الأعضاء) -BoxTitleMembersByType=Members by type -BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year +BoxTitleMembersByType=الأعضاء حسب النوع والحالة +BoxTitleMembersSubscriptionsByYear=اشتراكات الأعضاء حسب السنة BoxTitleLastRssInfos=آخر أخبار %s من %s BoxTitleLastProducts=المنتجات | الخدمات: آخر %s معدل BoxTitleProductsAlertStock=المنتجات: تنبيه المخزون @@ -46,11 +46,11 @@ BoxMyLastBookmarks=الإشارات المرجعية: أحدث %s BoxOldestExpiredServices=أقدم الخدمات النشطة منتهية الصلاحية BoxLastExpiredServices=أحدث %s أقدم جهات اتصال مع خدمات منتهية الصلاحية نشطة BoxTitleLastActionsToDo=أحدث إجراءات %s للقيام بها -BoxTitleLastContracts=Latest %s contracts which were modified -BoxTitleLastModifiedDonations=Latest %s donations which were modified -BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified -BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified -BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified +BoxTitleLastContracts=أحدث عقود %s التي تم تعديلها +BoxTitleLastModifiedDonations=آخر التبرعات %s التي تم تعديلها +BoxTitleLastModifiedExpenses=أحدث تقارير المصروفات %s التي تم تعديلها +BoxTitleLatestModifiedBoms=أحدث %s BOMs التي تم تعديلها +BoxTitleLatestModifiedMos=أحدث أوامر التصنيع %s التي تم تعديلها BoxTitleLastOutstandingBillReached=العملاء الذين تجاوزا الحد الاقصى BoxGlobalActivity=النشاط العام (الفواتير ، العروض ، الطلبات) BoxGoodCustomers=عملاء جيدون @@ -91,8 +91,8 @@ BoxTitleLatestModifiedSupplierOrders=أوامر الموردين: آخر %s تع BoxTitleLastModifiedCustomerBills=فواتير العميل: آخر %s تعديل BoxTitleLastModifiedCustomerOrders=أوامر المبيعات: آخر %s تعديل BoxTitleLastModifiedPropals=أحدث %s العروض المعدلة -BoxTitleLatestModifiedJobPositions=Latest %s modified job positions -BoxTitleLatestModifiedCandidatures=Latest %s modified job applications +BoxTitleLatestModifiedJobPositions=أحدث وظائف %s المعدلة +BoxTitleLatestModifiedCandidatures=أحدث %s تطبيقات العمل المعدلة ForCustomersInvoices=فواتير العملاء ForCustomersOrders=أوامر العملاء ForProposals=عروض @@ -112,9 +112,9 @@ BoxTitleLastCustomerShipments=أحدث %s شحنات العملاء NoRecordedShipments=لا توجد شحنة مسجلة للعملاء BoxCustomersOutstandingBillReached=العملاء الذين بلغوا الحد الأقصى المسموح به # Pages -UsersHome=Home users and groups -MembersHome=Home Membership -ThirdpartiesHome=Home Thirdparties -TicketsHome=Home Tickets -AccountancyHome=Home Accountancy +UsersHome=المستخدمون والمجموعات الرئيسية +MembersHome=عضوية المنزل +ThirdpartiesHome=الصفحة الرئيسية الأطراف الثالثة +TicketsHome=تذاكر المنزل +AccountancyHome=محاسبة المنزل ValidatedProjects=المشاريع المعتمدة diff --git a/htdocs/langs/ar_SA/cashdesk.lang b/htdocs/langs/ar_SA/cashdesk.lang index 86a0fe1f6f8..a5ebba52283 100644 --- a/htdocs/langs/ar_SA/cashdesk.lang +++ b/htdocs/langs/ar_SA/cashdesk.lang @@ -16,7 +16,7 @@ AddThisArticle=إضافة هذا العنصر RestartSelling=التراجع عن بيع SellFinished=اكتمل البيع PrintTicket=طباعة التذكرة -SendTicket=Send ticket +SendTicket=أرسل التذكرة NoProductFound=لم يتم العثور على عناصر ProductFound=تم العثور على المنتج NoArticle=لا يوجد عناصر @@ -31,106 +31,109 @@ ShowCompany=عرض الشركة ShowStock=عرض المستودع DeleteArticle=انقر لإزالة هذا العنصر FilterRefOrLabelOrBC=بحث (المرجع / الملصق) -UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that uses POS needs to have permission to edit stock. +UserNeedPermissionToEditStockToUsePos=أنت تطلب تقليل المخزون عند إنشاء الفاتورة ، لذلك يحتاج المستخدم الذي يستخدم نقاط البيع إلى الحصول على إذن لتحرير المخزون. DolibarrReceiptPrinter=طابعة إيصال دوليبار -PointOfSale=Point of Sale -PointOfSaleShort=POS -CloseBill=Close Bill -Floors=Floors -Floor=Floor -AddTable=Add table -Place=Place -TakeposConnectorNecesary='TakePOS Connector' required -OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen) -NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser -SearchProduct=Search product +PointOfSale=نقطة البيع +PointOfSaleShort=نقاط البيع +CloseBill=أغلق بيل +Floors=طوابق +Floor=أرضية +AddTable=أضف الجدول +Place=مكان +TakeposConnectorNecesary=مطلوب "موصل TakePOS" +OrderPrinters=أضف زرًا لإرسال الطلب إلى بعض الطابعات المحددة ، دون دفع (على سبيل المثال لإرسال طلب إلى مطبخ) +NotAvailableWithBrowserPrinter=غير متاح عندما تكون الطابعة للإيصال مضبوطة على المتصفح +SearchProduct=البحث عن المنتج Receipt=ورود -Header=Header -Footer=Footer -AmountAtEndOfPeriod=Amount at end of period (day, month or year) -TheoricalAmount=Theorical amount -RealAmount=Real amount -CashFence=Cash desk closing -CashFenceDone=Cash desk closing done for the period +Header=رأس +Footer=تذييل +AmountAtEndOfPeriod=المبلغ في نهاية الفترة (اليوم أو الشهر أو السنة) +TheoricalAmount=المبلغ النظري +RealAmount=المبلغ الحقيقي +CashFence=إغلاق صندوق النقد +CashFenceDone=تم إغلاق الصندوق النقدي للفترة NbOfInvoices=ملاحظة : من الفواتير -Paymentnumpad=Type of Pad to enter payment -Numberspad=Numbers Pad -BillsCoinsPad=Coins and banknotes Pad -DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr -TakeposNeedsCategories=TakePOS needs at least one product categorie to work -TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category %s to work -OrderNotes=Can add some notes to each ordered items -CashDeskBankAccountFor=Default account to use for payments in -NoPaimementModesDefined=No paiment mode defined in TakePOS configuration -TicketVatGrouped=Group VAT by rate in tickets|receipts -AutoPrintTickets=Automatically print tickets|receipts -PrintCustomerOnReceipts=Print customer on tickets|receipts -EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant -ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? -ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? +Paymentnumpad=نوع الوسادة للدفع +Numberspad=لوحة الأرقام +BillsCoinsPad=وسادة عملات وأوراق نقدية +DolistorePosCategory=وحدات TakePOS وحلول نقاط البيع الأخرى لـ Dolibarr +TakeposNeedsCategories=يحتاج TakePOS إلى فئة منتج واحدة على الأقل للعمل +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=يحتاج TakePOS إلى فئة منتج واحدة على الأقل ضمن الفئة %s للعمل +OrderNotes=يمكن إضافة بعض الملاحظات على كل العناصر المطلوبة +CashDeskBankAccountFor=الحساب الافتراضي لاستخدامه في عمليات الدفع +NoPaimementModesDefined=لم يتم تحديد وضع paiment في تكوين TakePOS +TicketVatGrouped=تجميع ضريبة القيمة المضافة حسب معدل التذاكر | الإيصالات +AutoPrintTickets=طباعة التذاكر | الإيصالات تلقائيًا +PrintCustomerOnReceipts=طباعة العميل على التذاكر | الإيصالات +EnableBarOrRestaurantFeatures=تمكين ميزات للبار أو المطعم +ConfirmDeletionOfThisPOSSale=هل تؤكد حذف هذا البيع الحالي؟ +ConfirmDiscardOfThisPOSSale=هل تريد تجاهل هذا البيع الحالي؟ History=التاريخ -ValidateAndClose=Validate and close -Terminal=Terminal -NumberOfTerminals=Number of Terminals -TerminalSelect=Select terminal you want to use: -POSTicket=POS Ticket -POSTerminal=POS Terminal -POSModule=POS Module -BasicPhoneLayout=Use basic layout for phones -SetupOfTerminalNotComplete=Setup of terminal %s is not complete -DirectPayment=Direct payment -DirectPaymentButton=Add a "Direct cash payment" button -InvoiceIsAlreadyValidated=Invoice is already validated -NoLinesToBill=No lines to bill -CustomReceipt=Custom Receipt -ReceiptName=Receipt Name -ProductSupplements=Manage supplements of products -SupplementCategory=Supplement category -ColorTheme=Color theme -Colorful=Colorful -HeadBar=Head Bar -SortProductField=Field for sorting products +ValidateAndClose=التحقق من صحة وإغلاق +Terminal=صالة +NumberOfTerminals=عدد المحطات +TerminalSelect=حدد المحطة التي تريد استخدامها: +POSTicket=تذكرة نقاط البيع +POSTerminal=محطة نقاط البيع +POSModule=وحدة نقاط البيع +BasicPhoneLayout=استخدم التخطيط الأساسي للهواتف +SetupOfTerminalNotComplete=لم يكتمل إعداد الجهاز %s +DirectPayment=دفع مباشر +DirectPaymentButton=أضف زر "دفع نقدي مباشر" +InvoiceIsAlreadyValidated=تم التحقق من صحة الفاتورة بالفعل +NoLinesToBill=لا خطوط للفوترة +CustomReceipt=إيصال مخصص +ReceiptName=اسم الإيصال +ProductSupplements=إدارة مكملات المنتجات +SupplementCategory=فئة الملحق +ColorTheme=موضوع اللون +Colorful=زاهى الألوان +HeadBar=رئيس بار +SortProductField=مجال لفرز المنتجات Browser=المتصفح -BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. -TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. -PrintMethod=Print method -ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network). -ByTerminal=By terminal -TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad -CashDeskRefNumberingModules=Numbering module for POS sales -CashDeskGenericMaskCodes6 =
{TN} tag is used to add the terminal number -TakeposGroupSameProduct=Group same products lines -StartAParallelSale=Start a new parallel sale -SaleStartedAt=Sale started at %s -ControlCashOpening=Open the "Control cash" popup when opening the POS -CloseCashFence=Close cash desk control -CashReport=Cash report -MainPrinterToUse=Main printer to use -OrderPrinterToUse=Order printer to use -MainTemplateToUse=Main template to use -OrderTemplateToUse=Order template to use -BarRestaurant=Bar Restaurant -AutoOrder=Order by the customer himself -RestaurantMenu=Menu -CustomerMenu=Customer menu -ScanToMenu=Scan QR code to see the menu -ScanToOrder=Scan QR code to order -Appearance=Appearance -HideCategoryImages=Hide Category Images -HideProductImages=Hide Product Images -NumberOfLinesToShow=Number of lines of images to show -DefineTablePlan=Define tables plan -GiftReceiptButton=Add a "Gift receipt" button -GiftReceipt=Gift receipt -ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first -AllowDelayedPayment=Allow delayed payment -PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts -WeighingScale=Weighing scale -ShowPriceHT = Display the column with the price excluding tax (on screen) -ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt) -CustomerDisplay=Customer display -SplitSale=Split sale -PrintWithoutDetailsButton=Add "Print without details" button -PrintWithoutDetailsLabelDefault=Line label by default on printing without details -PrintWithoutDetails=Print without details -YearNotDefined=Year is not defined +BrowserMethodDescription=طباعة إيصالات بسيطة وسهلة. فقط عدد قليل من المعلمات لتكوين الإيصال. اطبع عبر المتصفح. +TakeposConnectorMethodDescription=وحدة خارجية مع ميزات إضافية. إمكانية الطباعة من السحابة. +PrintMethod=طريقة الطباعة +ReceiptPrinterMethodDescription=طريقة قوية مع الكثير من المعلمات. قابل للتخصيص بالكامل مع القوالب. لا يمكن أن يكون الخادم الذي يستضيف التطبيق في السحابة (يجب أن يكون قادرًا على الوصول إلى الطابعات في شبكتك). +ByTerminal=عن طريق المحطة +TakeposNumpadUsePaymentIcon=استخدم الرمز بدلاً من النص الموجود على أزرار الدفع الخاصة بلوحة الأرقام +CashDeskRefNumberingModules=وحدة الترقيم لمبيعات نقاط البيع +CashDeskGenericMaskCodes6 =
{TN} تُستخدم علامة لإضافة رقم المحطة +TakeposGroupSameProduct=تجميع نفس خطوط المنتجات +StartAParallelSale=ابدأ بيعًا موازيًا جديدًا +SaleStartedAt=بدأ البيع في %s +ControlCashOpening=افتح النافذة المنبثقة "Control cash box" عند فتح POS +CloseCashFence=إغلاق التحكم في صندوق النقد +CashReport=تقرير النقدية +MainPrinterToUse=الطابعة الرئيسية لاستخدامها +OrderPrinterToUse=طلب الطابعة لاستخدامها +MainTemplateToUse=النموذج الرئيسي المراد استخدامه +OrderTemplateToUse=طلب نموذج للاستخدام +BarRestaurant=مطعم بار +AutoOrder=طلب من قبل الزبون نفسه +RestaurantMenu=قائمة الطعام +CustomerMenu=قائمة العملاء +ScanToMenu=امسح رمز الاستجابة السريعة لرؤية القائمة +ScanToOrder=امسح رمز الاستجابة السريعة للطلب +Appearance=مظهر +HideCategoryImages=إخفاء صور الفئة +HideProductImages=إخفاء صور المنتج +NumberOfLinesToShow=عدد سطور الصور المراد عرضها +DefineTablePlan=تحديد خطة الجداول +GiftReceiptButton=أضف زر "إيصال الهدية" +GiftReceipt=استلام هدية +ModuleReceiptPrinterMustBeEnabled=يجب تمكين طابعة استلام الوحدة أولاً +AllowDelayedPayment=السماح بالدفع المتأخر +PrintPaymentMethodOnReceipts=طباعة طريقة الدفع على التذاكر | الإيصالات +WeighingScale=جهاز قياس الوزن +ShowPriceHT = عرض العمود بالسعر غير شامل الضريبة (على الشاشة) +ShowPriceHTOnReceipt = اعرض العمود بالسعر غير شامل الضريبة (على الإيصال) +CustomerDisplay=عرض العملاء +SplitSale=بيع سبليت +PrintWithoutDetailsButton=أضف زر "طباعة بدون تفاصيل" +PrintWithoutDetailsLabelDefault=تسمية الخط بشكل افتراضي عند الطباعة بدون تفاصيل +PrintWithoutDetails=اطبع بدون تفاصيل +YearNotDefined=لم يتم تحديد السنة +TakeposBarcodeRuleToInsertProduct=قاعدة الباركود لإدخال المنتج +TakeposBarcodeRuleToInsertProductDesc=قاعدة لاستخراج مرجع المنتج + كمية من الباركود الممسوح ضوئيًا.
إذا كان فارغًا (القيمة الافتراضية) ، سيستخدم التطبيق الباركود الكامل الممسوح ضوئيًا للعثور على المنتج.

If defined, syntax must be:
ref:NB+qu:NB+qd:NB+other:NB
where NB is the number of characters to use to extract data from the scanned barcode with:
  • ref : product reference
  • qu : quantity to set when inserting item (units)
  • qd : quantity to set when inserting item (decimals)
  • other : others characters
+AlreadyPrinted=طبعت بالفعل diff --git a/htdocs/langs/ar_SA/companies.lang b/htdocs/langs/ar_SA/companies.lang index f083a6caafa..aa88cd5a24b 100644 --- a/htdocs/langs/ar_SA/companies.lang +++ b/htdocs/langs/ar_SA/companies.lang @@ -2,9 +2,9 @@ ErrorCompanyNameAlreadyExists=اسم الشركة %s موجود بالفعل. اختر واحد اخر. ErrorSetACountryFirst=اضبط البلد أولاً SelectThirdParty=حدد طرفًا ثالثًا -ConfirmDeleteCompany=Are you sure you want to delete this company and all related information? +ConfirmDeleteCompany=هل أنت متأكد أنك تريد حذف هذه الشركة وجميع المعلومات ذات الصلة؟ DeleteContact=حذف جهة اتصال | عنوان -ConfirmDeleteContact=Are you sure you want to delete this contact and all related information? +ConfirmDeleteContact=هل أنت متأكد أنك تريد حذف جهة الاتصال هذه وجميع المعلومات ذات الصلة؟ MenuNewThirdParty=طرف ثالث جديد MenuNewCustomer=عميل جديد MenuNewProspect=فرصة جديدة @@ -19,7 +19,7 @@ ProspectionArea=منطقة الفرص IdThirdParty=معرف الطرف الثالث IdCompany=معرف الشركة IdContact=معرف جهة الاتصال -ThirdPartyAddress=Third-party address +ThirdPartyAddress=عنوان الطرف الثالث ThirdPartyContacts=جهات اتصال الطرف الثالث ThirdPartyContact=جهة اتصال | عنوان الطرف الثالث Company=شركة @@ -52,27 +52,28 @@ CivilityCode=قواعد السلوك RegisteredOffice=مكتب مسجل Lastname=اللقب Firstname=الاسم الاول -RefEmployee=Employee reference -NationalRegistrationNumber=National registration number +RefEmployee=مرجع الموظف +NationalRegistrationNumber=رقم التسجيل الوطني PostOrFunction=الوظيفه UserTitle=العنوان NatureOfThirdParty=طبيعة الطرف الثالث NatureOfContact=طبيعة الاتصال Address=عنوان State=الولاية / المقاطعة +StateId=معرف الدولة StateCode=رمز الولاية / المقاطعة StateShort=الولاية Region=المنطقة Region-State=المنطقة - الولاية Country=الدولة CountryCode=رمز البلد -CountryId=معرف البلد +CountryId=معرف الدولة Phone=الهاتف PhoneShort=الهاتف Skype=سكايب Call=مكالمة Chat=دردشة -PhonePro=Bus. phone +PhonePro=أوتوبيس. هاتف PhonePerso=الهاتف الشخصي PhoneMobile=الجوال No_Email=رفض الرسائل الإلكترونية الجماعية @@ -81,9 +82,9 @@ Zip=الرمز البريدي Town=مدينة Web=الويب Poste= المنصب -DefaultLang=Default language +DefaultLang=اللغة الافتراضية VATIsUsed=تطبق ضريبة المبيعات -VATIsUsedWhenSelling=This defines if this third party includes a sales tax or not when it makes an invoice to its own customers +VATIsUsedWhenSelling=يحدد هذا ما إذا كان هذا الطرف الثالث يتضمن ضريبة مبيعات أم لا عندما يُصدر فاتورة لعملائه VATIsNotUsed=لا تطبق ضريبة المبيعات CopyAddressFromSoc=نسخ العنوان من تفاصيل الطرف الثالث ThirdpartyNotCustomerNotSupplierSoNoRef=لا عميل ولا مورد، ولا توجد كائنات مرجعية متاحة @@ -105,7 +106,7 @@ WrongSupplierCode=كود المورد غير صالح CustomerCodeModel=العميل رمز النموذج SupplierCodeModel=نموذج كود المورد Gencod=الباركود -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=الباركود السعر المرجع ##### Professional ID ##### ProfId1Short=هوية مهنية 1 ProfId2Short=هوية مهنية 2 @@ -161,16 +162,16 @@ ProfId3CL=- ProfId4CL=- ProfId5CL=- ProfId6CL=- -ProfId1CM=Id. prof. 1 (Trade Register) -ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId1CM=هوية شخصية. الأستاذ. 1 (السجل التجاري) +ProfId2CM=هوية شخصية. الأستاذ. 2 (رقم دافع الضرائب) +ProfId3CM=هوية شخصية. الأستاذ. 3 (رقم مرسوم الانشاء) +ProfId4CM=هوية شخصية. الأستاذ. 4 (رقم شهادة الإيداع) +ProfId5CM=هوية شخصية. الأستاذ. 5 (أخرى) ProfId6CM=- -ProfId1ShortCM=Trade Register -ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId1ShortCM=السجل التجاري +ProfId2ShortCM=رقم دافع الضرائب +ProfId3ShortCM=رقم مرسوم الانشاء +ProfId4ShortCM=شهادة الايداع رقم ProfId5ShortCM=آخرون ProfId6ShortCM=- ProfId1CO=الهوية المهنية 1 (R.U.T.) @@ -189,17 +190,17 @@ ProfId1ES=الهوية المهنية 1 (CIF / NIF) ProfId2ES=الهوية المهنية 2 (رقم الضمان الاجتماعي) ProfId3ES=الهوية المهنية 3 (CNAE) ProfId4ES=(عدد الجماعية) -ProfId5ES=Prof Id 5 (EORI number) +ProfId5ES=معرف الأستاذ 5 (رقم EORI) ProfId6ES=- ProfId1FR=الأستاذ عيد 1 (صفارة إنذار) ProfId2FR=الأستاذ عيد 2 (SIRET) ProfId3FR=الأستاذ عيد 3 (NAF ، البالغ من العمر قرد) ProfId4FR=الأستاذ عيد 4 (نظام المنسقين المقيمين / لجمهورية مقدونيا) -ProfId5FR=Prof Id 5 (numéro EORI) +ProfId5FR=معرف الأستاذ 5 (رقم EORI) ProfId6FR=- -ProfId1ShortFR=SIREN -ProfId2ShortFR=SIRET -ProfId3ShortFR=NAF +ProfId1ShortFR=صفارة إنذار +ProfId2ShortFR=سيريت +ProfId3ShortFR=ناف ProfId4ShortFR=RCS ProfId5ShortFR=EORI ProfId6ShortFR=- @@ -255,7 +256,7 @@ ProfId1PT=الأستاذ عيد 1 (NIPC) ProfId2PT=الأستاذ عيد 2 (رقم الضمان الاجتماعي) ProfId3PT=الأستاذ عيد 3 (رقم السجل التجاري) ProfId4PT=الأستاذ عيد 4 (يضم) -ProfId5PT=Prof Id 5 (EORI number) +ProfId5PT=معرف الأستاذ 5 (رقم EORI) ProfId6PT=- ProfId1SN=RC ProfId2SN=NINEA @@ -279,7 +280,7 @@ ProfId1RO=Prof Id 1 (CUI) ProfId2RO=Prof Id 2 (Nr. Înmatriculare) ProfId3RO=Prof Id 3 (CAEN) ProfId4RO=Prof Id 5 (EUID) -ProfId5RO=Prof Id 5 (EORI number) +ProfId5RO=معرف الأستاذ 5 (رقم EORI) ProfId6RO=- ProfId1RU=الأستاذ رقم 1 (OGRN) ProfId2RU=الأستاذ رقم 2 (INN) @@ -287,12 +288,12 @@ ProfId3RU=Prof Id 3 (KPP) ProfId4RU=Prof Id 4 (OKPO) ProfId5RU=- ProfId6RU=- -ProfId1UA=Prof Id 1 (EDRPOU) -ProfId2UA=Prof Id 2 (DRFO) -ProfId3UA=Prof Id 3 (INN) -ProfId4UA=Prof Id 4 (Certificate) -ProfId5UA=Prof Id 5 (RNOKPP) -ProfId6UA=Prof Id 6 (TRDPAU) +ProfId1UA=معرف الأستاذ 1 (EDRPOU) +ProfId2UA=معرف الأستاذ 2 (DRFO) +ProfId3UA=معرف الأستاذ 3 (INN) +ProfId4UA=معرف الأستاذ 4 (شهادة) +ProfId5UA=معرف الأستاذ 5 (RNOKPP) +ProfId6UA=معرف الأستاذ 6 (TRDPAU) ProfId1DZ=RC ProfId2DZ=Art. ProfId3DZ=NIF @@ -353,7 +354,7 @@ CustomerCodeDesc=كود العميل فريد لجميع العملاء SupplierCodeDesc=كود المورد ، فريد لجميع الموردين RequiredIfCustomer=مطلوب ، إذا كان الطرف الثالث عميلاً أو فرصة RequiredIfSupplier=مطلوب إذا كان الطرف الثالث موردا -ValidityControledByModule=Validity controlled by the module +ValidityControledByModule=يتم التحكم في الصلاحية بواسطة الوحدة ThisIsModuleRules=قواعد هذه الوحدة ProspectToContact=فرصة للاتصال CompanyDeleted=تم حذف شركة "%s" من قاعدة البيانات. @@ -363,7 +364,7 @@ ListOfThirdParties=قائمة الأطراف الثالثة ShowCompany=طرف ثالث ShowContact=عنوان الإتصال ContactsAllShort=الكل (بدون فلتر) -ContactType=Contact role +ContactType=دور الاتصال ContactForOrders=جهة اتصال الامر ContactForOrdersOrShipments=جهة اتصال الامر أو الشحنة ContactForProposals=جهة اتصال العروض @@ -385,7 +386,7 @@ VATIntraCheck=فحص VATIntraCheckDesc=The VAT ID must include the country prefix. The link %s uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do VATIntraCheckableOnEUSite=تحقق من معرف ضريبة القيمة المضافة داخل الاتجاد على موقع المفوضية الأوروبية -VATIntraManualCheck=You can also check manually on the European Commission website %s +VATIntraManualCheck=يمكنك أيضًا التحقق يدويًا على موقع المفوضية الأوروبية %s ErrorVATCheckMS_UNAVAILABLE=تحقق غير ممكن. لا يتم توفير خدمة التحقق من قبل الدولة العضو (%s). NorProspectNorCustomer=ليس فرصة، ولا عميل JuridicalStatus=نوع الكيان التجاري @@ -461,12 +462,12 @@ ListSuppliersShort=قائمة الموردين ListProspectsShort=قائمة الفرص ListCustomersShort=قائمة العملاء ThirdPartiesArea=الأطراف الثالثة | جهات الاتصال -LastModifiedThirdParties=Latest %s Third Parties which were modified -UniqueThirdParties=Total number of Third Parties +LastModifiedThirdParties=أحدث %s الأطراف الثالثة التي تم تعديلها +UniqueThirdParties=إجمالي عدد الأطراف الثالثة InActivity=فتح ActivityCeased=مغلق ThirdPartyIsClosed=الطرف الثالث مغلق -ProductsIntoElements=List of products/services mapped to %s +ProductsIntoElements=قائمة المنتجات / الخدمات المعيّنة لـ %s CurrentOutstandingBill=فاتورة مستحقة حاليا OutstandingBill=الأعلى للفاتورة المستحقة OutstandingBillReached=الأعلى لفاتورة مستحقة وصلت @@ -476,7 +477,7 @@ LeopardNumRefModelDesc=الكود مجاني. يمكن تعديل هذا الك ManagingDirectors=اسم المدير (المديرون) (الرئيس التنفيذي ، المدير ، الرئيس) MergeOriginThirdparty=طرف ثالث مكرر (الطرف الثالث الذي تريد حذفه) MergeThirdparties=دمج أطراف ثالثة -ConfirmMergeThirdparties=Are you sure you want to merge the chosen third party with the current one? All linked objects (invoices, orders, ...) will be moved to the current third party, after which the chosen third party will be deleted. +ConfirmMergeThirdparties=هل أنت متأكد أنك تريد دمج الطرف الثالث المختار مع الطرف الحالي؟ سيتم نقل جميع العناصر المرتبطة (الفواتير ، الطلبات ، ...) إلى الطرف الثالث الحالي ، وبعد ذلك سيتم حذف الطرف الثالث المختار. ThirdpartiesMergeSuccess=تم دمج الأطراف الثالثة SaleRepresentativeLogin=تسجيل دخول مندوب مبيعات SaleRepresentativeFirstname=الاسم الأول لمندوب المبيعات diff --git a/htdocs/langs/ar_SA/errors.lang b/htdocs/langs/ar_SA/errors.lang index 0b94eabbb83..f251d252aaa 100644 --- a/htdocs/langs/ar_SA/errors.lang +++ b/htdocs/langs/ar_SA/errors.lang @@ -4,14 +4,15 @@ NoErrorCommitIsDone=أي خطأ، ونحن نلزم # Errors ErrorButCommitIsDone=تم العثور على أخطاء لكننا تحقق على الرغم من هذا -ErrorBadEMail=Email %s is incorrect -ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) -ErrorBadUrl=Url %s is incorrect +ErrorBadEMail=البريد الإلكتروني %s غير صحيح +ErrorBadMXDomain=يبدو البريد الإلكتروني %s غير صحيح (المجال لا يحتوي على سجل MX صالح) +ErrorBadUrl=عنوان Url %s غير صحيح ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. -ErrorRefAlreadyExists=Reference %s already exists. +ErrorRefAlreadyExists=المرجع %s موجود بالفعل. +ErrorTitleAlreadyExists=العنوان %s موجود بالفعل. ErrorLoginAlreadyExists=ادخل ٪ ق موجود بالفعل. ErrorGroupAlreadyExists=المجموعة ٪ ق موجود بالفعل. -ErrorEmailAlreadyExists=Email %s already exists. +ErrorEmailAlreadyExists=البريد الإلكتروني %s موجود بالفعل. ErrorRecordNotFound=لم يتم العثور على السجل. ErrorFailToCopyFile=فشل في نسخ الملف '%s' إلى '%s ". ErrorFailToCopyDir=Failed to copy directory '%s' into '%s'. @@ -26,34 +27,34 @@ ErrorFailToGenerateFile=Failed to generate file '%s'. ErrorThisContactIsAlreadyDefinedAsThisType=هذا الاتصال هو اتصال بالفعل تعريف لهذا النوع. ErrorCashAccountAcceptsOnlyCashMoney=هذا الحساب المصرفي هو الحساب النقدي ، وذلك ما وافق على نوع من المدفوعات النقدية فقط. ErrorFromToAccountsMustDiffers=المصدر والأهداف يجب أن تكون الحسابات المصرفية المختلفة. -ErrorBadThirdPartyName=Bad value for third-party name -ForbiddenBySetupRules=Forbidden by setup rules +ErrorBadThirdPartyName=قيمة سيئة لاسم الجهة الخارجية +ForbiddenBySetupRules=ممنوع بواسطة قواعد الإعداد ErrorProdIdIsMandatory=و٪ s غير إلزامي -ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=كود المحاسبة الخاص بالعميل %s إلزامي ErrorBadCustomerCodeSyntax=سوء تركيب الزبون مدونة -ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorBadBarCodeSyntax=بناء جملة غير صالح للرمز الشريطي. قد تكون قد قمت بتعيين نوع رمز شريطي سيئ أو أنك حددت قناع رمز شريطي للترقيم لا يتطابق مع القيمة الممسوحة ضوئيًا. ErrorCustomerCodeRequired=رمز العميل المطلوبة -ErrorBarCodeRequired=Barcode required +ErrorBarCodeRequired=الرمز الشريطي مطلوب ErrorCustomerCodeAlreadyUsed=الشفرة المستخدمة بالفعل العملاء -ErrorBarCodeAlreadyUsed=Barcode already used +ErrorBarCodeAlreadyUsed=الباركود مستخدم بالفعل ErrorPrefixRequired=المطلوب ببادئة -ErrorBadSupplierCodeSyntax=Bad syntax for vendor code -ErrorSupplierCodeRequired=Vendor code required -ErrorSupplierCodeAlreadyUsed=Vendor code already used +ErrorBadSupplierCodeSyntax=بناء جملة غير صالح لرمز البائع +ErrorSupplierCodeRequired=كود البائع مطلوب +ErrorSupplierCodeAlreadyUsed=كود البائع مستخدم بالفعل ErrorBadParameters=بارامترات سيئة -ErrorWrongParameters=Wrong or missing parameters +ErrorWrongParameters=معلمات خاطئة أو مفقودة ErrorBadValueForParameter=Wrong value '%s' for parameter '%s' ErrorBadImageFormat=ملف الصورة لم تنسيق معتمد (PHP لديك لا يدعم وظائف لتحويل الصور من هذا الشكل) ErrorBadDateFormat='%s' قيمة له خاطئ تنسيق التاريخ ErrorWrongDate=تاريخ غير صحيح! ErrorFailedToWriteInDir=لم يكتب في دليل ٪ ق ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=العثور على بريد إلكتروني صحيح لتركيب خطوط ق ٪ في ملف (على سبيل المثال خط ٪ ق= ٪ مع البريد الإلكتروني) -ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities. -ErrorFieldsRequired=Some required fields have been left blank. -ErrorSubjectIsRequired=The email subject is required +ErrorUserCannotBeDelete=لا يمكن حذف المستخدم. ربما يرتبط بكيانات Dolibarr. +ErrorFieldsRequired=تم ترك بعض الحقول المطلوبة فارغة. +ErrorSubjectIsRequired=موضوع البريد الإلكتروني مطلوب ErrorFailedToCreateDir=فشل إنشاء دليل. تأكد من أن خادم الويب المستخدم أذونات لكتابة وثائق Dolibarr في الدليل. إذا تم تمكين المعلم safe_mode على هذا PHP ، تحقق من أن ملفات Dolibarr php تملك لخدمة الويب المستخدم (أو مجموعة). ErrorNoMailDefinedForThisUser=البريد لا يعرف لهذا المستخدم -ErrorSetupOfEmailsNotComplete=Setup of emails is not complete +ErrorSetupOfEmailsNotComplete=لم يكتمل إعداد رسائل البريد الإلكتروني ErrorFeatureNeedJavascript=هذه الميزة تحتاج إلى تفعيل جافا سكريبت في العمل. هذا التغيير في البنية -- عرض. ErrorTopMenuMustHaveAParentWithId0=وهناك قائمة من نوع 'توب' لا يمكن أن يكون أحد الوالدين القائمة. 0 وضعت في القائمة أو الأم في اختيار قائمة من نوع 'اليسار'. ErrorLeftMenuMustHaveAParentId=وهناك قائمة من نوع 'اليسار' يجب أن يكون لها هوية الوالد. @@ -62,74 +63,75 @@ ErrorDirNotFound=لم يتم العثور على دليل %s (مسار غ ErrorFunctionNotAvailableInPHP=ق ٪ وظيفة مطلوبة لهذه الميزة ولكن لا تتوافر في هذه النسخة / الإعداد للPHP. ErrorDirAlreadyExists=دليل بهذا الاسم بالفعل. ErrorFileAlreadyExists=ملف بهذا الاسم موجود مسبقا. -ErrorDestinationAlreadyExists=Another file with the name %s already exists. +ErrorDestinationAlreadyExists=ملف آخر يحمل الاسم %s موجود بالفعل. ErrorPartialFile=الملف لم تتلق تماما بواسطة الخادم. ErrorNoTmpDir=%s directy مؤقتة لا وجود. ErrorUploadBlockedByAddon=حظر حمل من قبل البرنامج المساعد بى اباتشي /. -ErrorFileSizeTooLarge=حجم الملف كبير جدا. -ErrorFieldTooLong=Field %s is too long. +ErrorFileSizeTooLarge=حجم الملف كبير جدًا أو لم يتم توفير الملف. +ErrorFieldTooLong=الحقل %s طويل جدًا. ErrorSizeTooLongForIntType=طويل جدا بالنسبة نوع INT (%s أرقام كحد أقصى) حجم ErrorSizeTooLongForVarcharType=وقتا طويلا لنوع السلسلة (%s حرف كحد أقصى) حجم ErrorNoValueForSelectType=يرجى ملء قيمة لقائمة مختارة ErrorNoValueForCheckBoxType=يرجى ملء قيمة لقائمة مربع ErrorNoValueForRadioType=يرجى ملء قيمة لقائمة الراديو ErrorBadFormatValueList=قيمة القائمة لا يمكن أن يكون أكثر من واحد فاصلة:٪ الصورة، ولكن تحتاج إلى واحد على الأقل: مفتاح، قيمة -ErrorFieldCanNotContainSpecialCharacters=The field %s must not contains special characters. -ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters and cannot contain only numbers. -ErrorFieldMustHaveXChar=The field %s must have at least %s characters. +ErrorFieldCanNotContainSpecialCharacters=يجب ألا يحتوي الحقل %s على أحرف خاصة. +ErrorFieldCanNotContainSpecialNorUpperCharacters=يجب ألا يحتوي الحقل %s على أحرف خاصة ولا أحرف كبيرة ولا يمكن أن يحتوي على أرقام فقط. +ErrorFieldMustHaveXChar=يجب أن يحتوي الحقل %s على أحرف %s على الأقل. ErrorNoAccountancyModuleLoaded=أي وحدة المحاسبة وتفعيل ErrorExportDuplicateProfil=هذا الاسم الشخصي موجود مسبقا لهذه المجموعة التصدير. ErrorLDAPSetupNotComplete=Dolibarr - LDAP المطابقة وليس كاملا. ErrorLDAPMakeManualTest=ألف. ldif الملف قد ولدت في الدليل ٪ s. انها محاولة لتحميل يدويا من سطر في الحصول على مزيد من المعلومات عن الأخطاء. -ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled. -ErrorRefAlreadyExists=Reference %s already exists. -ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD) -ErrorRecordHasChildren=Failed to delete record since it has some child records. -ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s -ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another object. +ErrorCantSaveADoneUserWithZeroPercentage=لا يمكن حفظ إجراء مع "الحالة لم تبدأ" إذا تم ملء الحقل "تم بواسطة" أيضًا. +ErrorRefAlreadyExists=المرجع %s موجود بالفعل. +ErrorPleaseTypeBankTransactionReportName=الرجاء إدخال اسم كشف الحساب المصرفي حيث يجب الإبلاغ عن الإدخال (التنسيق YYYYMM أو YYYYMMDD) +ErrorRecordHasChildren=فشل حذف السجل لأنه يحتوي على بعض السجلات التابعة. +ErrorRecordHasAtLeastOneChildOfType=يحتوي الكائن %s على عنصر فرعي واحد على الأقل من النوع %s +ErrorRecordIsUsedCantDelete=لا يمكن حذف السجل. تم استخدامه بالفعل أو تضمينه في كائن آخر. ErrorModuleRequireJavascript=يجب عدم تعطيل جافا سكريبت لجعل هذا العمل الميزة. لتمكين / تعطيل جافا سكريبت ، انتقل إلى القائمة الرئيسية -> الإعداد -> العرض. ErrorPasswordsMustMatch=ويجب على كلا كلمات المرور المكتوبة تطابق بعضها البعض -ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. -ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s -ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s -ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref -ErrorsOnXLines=%s errors found +ErrorContactEMail=حدث خطأ تقني. من فضلك ، اتصل بالمسؤول إلى البريد الإلكتروني التالي %s وقدم رمز الخطأ %s في رسالتك ، أو أضف شاشة. +ErrorWrongValueForField=الحقل %s : ' %s ' لا يتطابق مع قاعدة regexz a0aeez08708f37439 +ErrorHtmlInjectionForField=الحقل %s : تحتوي القيمة ' %s ' على بيانات ضارة غير مسموح بها +ErrorFieldValueNotIn=Field %s : ' %s ' is not a value found in field %s of %s +ErrorFieldRefNotIn=الحقل %s : ' %s ' ليس a0aee833658377fz039 +ErrorsOnXLines=تم العثور على أخطاء %s ErrorFileIsInfectedWithAVirus=وكان برنامج مكافحة الفيروسات غير قادرة على التحقق من صحة الملف (ملف قد يكون مصابا بواسطة فيروس) ErrorSpecialCharNotAllowedForField=غير مسموح الأحرف الخاصة لحقل "%s" ErrorNumRefModel=إشارة إلى وجود قاعدة بيانات (%s) ، وغير متوافق مع هذه القاعدة الترقيم. سجل إزالة أو إعادة تسميته اشارة الى تفعيل هذه الوحدة. -ErrorQtyTooLowForThisSupplier=Quantity too low for this vendor or no price defined on this product for this vendor -ErrorOrdersNotCreatedQtyTooLow=Some orders haven't been created because of too-low quantities -ErrorModuleSetupNotComplete=Setup of module %s looks to be uncomplete. Go on Home - Setup - Modules to complete. +ErrorQtyTooLowForThisSupplier=الكمية منخفضة جدًا لهذا البائع أو لم يتم تحديد سعر لهذا المنتج لهذا البائع +ErrorOrdersNotCreatedQtyTooLow=لم يتم إنشاء بعض الطلبات بسبب الكميات المنخفضة للغاية +ErrorModuleSetupNotComplete=يبدو أن إعداد الوحدة النمطية %s غير كامل. انتقل إلى الصفحة الرئيسية - الإعداد - الوحدات النمطية لإكمالها. ErrorBadMask=خطأ في قناع ErrorBadMaskFailedToLocatePosOfSequence=خطأ، من دون قناع رقم التسلسل ErrorBadMaskBadRazMonth=خطأ، قيمة إعادة سيئة -ErrorMaxNumberReachForThisMask=Maximum number reached for this mask +ErrorMaxNumberReachForThisMask=تم الوصول إلى الحد الأقصى لعدد هذا القناع ErrorCounterMustHaveMoreThan3Digits=يجب أن يكون العداد أكثر من 3 أرقام -ErrorSelectAtLeastOne=Error, select at least one entry. -ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transaction that is conciliated +ErrorSelectAtLeastOne=خطأ ، حدد إدخال واحد على الأقل. +ErrorDeleteNotPossibleLineIsConsolidated=الحذف غير ممكن لأن السجل مرتبط بمعاملة بنكية تمت تسويتها ErrorProdIdAlreadyExist=يتم تعيين ثلث آخر إلى %s ErrorFailedToSendPassword=لم ترسل كلمة السر ErrorFailedToLoadRSSFile=فشل في الحصول على آر إس إس. محاولة إضافة MAIN_SIMPLEXMLLOAD_DEBUG ثابت إذا رسائل الخطأ لا توفر ما يكفي من المعلومات. ErrorForbidden=تم الرفض.
محاولة الوصول إلى صفحة أو منطقة أو ميزة من وحدة نمطية تعطيل أو دون أن تكون في جلسة مصادقة أو الذي لا يسمح له المستخدم الخاص بك. ErrorForbidden2=ويمكن تعريف إذن لهذا الدخول من قبل المسؤول Dolibarr الخاص بك من القائمة %s-> %s. ErrorForbidden3=يبدو أن لا يتم استخدام Dolibarr خلال جلسة المصادقة. نلقي نظرة على وثائق الإعداد Dolibarr لمعرفة كيفية إدارة المصادقة (تاكيس، mod_auth أو غيرها ...). -ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorForbidden4=ملاحظة: امسح ملفات تعريف الارتباط في متصفحك لتدمير الجلسات الحالية لتسجيل الدخول هذا. ErrorNoImagickReadimage=لم يتم العثور على فئة Imagick في هذا PHP. لا يمكن لمعاينة تكون متاحة. يمكن للمسؤولين تعطيل هذا التبويب من إعداد القائمة - عرض. ErrorRecordAlreadyExists=سجل موجود بالفعل -ErrorLabelAlreadyExists=This label already exists +ErrorLabelAlreadyExists=هذه التسمية موجودة بالفعل ErrorCantReadFile=فشل في قراءة الملف '%s' ErrorCantReadDir=فشل في قراءة '%s' الدليل ErrorBadLoginPassword=سيئة قيمة لتسجيل الدخول أو كلمة السر ErrorLoginDisabled=لقد تم تعطيل حسابك -ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server user. Check also the command is not protected on shell level by a security layer like apparmor. +ErrorFailedToRunExternalCommand=فشل تشغيل الأمر الخارجي. تحقق من أنه متاح وقابل للتشغيل بواسطة مستخدم خادم PHP. تحقق أيضًا من أن الأمر غير محمي على مستوى الصدفة بواسطة طبقة أمان مثل apparmor. ErrorFailedToChangePassword=فشل في تغيير كلمة السر ErrorLoginDoesNotExists=لا يستطيع المستخدم الدخول مع %s يمكن العثور عليها. ErrorLoginHasNoEmail=هذا المستخدم ليس لديه عنوان البريد الإلكتروني. إحباط عملية. ErrorBadValueForCode=سيئة قيمة لرمز الحماية. حاول مرة أخرى مع القيمة الجديدة ... ErrorBothFieldCantBeNegative=ويمكن لحقول %s و%s لا تكون سلبية -ErrorFieldCantBeNegativeOnInvoice=Field %s cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice. -ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate %s%%). -ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so. +ErrorFieldCantBeNegativeOnInvoice=لا يمكن أن يكون الحقل %s سالبًا في هذا النوع من الفاتورة. إذا كنت بحاجة إلى إضافة بند خصم ، فما عليك سوى إنشاء الخصم أولاً (من الحقل "%s" في بطاقة الطرف الثالث) وتطبيقه على الفاتورة. +ErrorLinesCantBeNegativeForOneVATRate=لا يمكن أن يكون إجمالي البنود (صافي الضريبة) سالبًا لمعدل ضريبة القيمة المضافة غير الفارغ (تم العثور على إجمالي سلبي لمعدل ضريبة القيمة المضافة %s %%). +ErrorLinesCantBeNegativeOnDeposits=لا يمكن أن تكون الأسطر سالبة في الإيداع. ستواجه مشاكل عندما تحتاج إلى استهلاك الإيداع في الفاتورة النهائية إذا قمت بذلك. ErrorQtyForCustomerInvoiceCantBeNegative=كمية لخط في فواتير العملاء لا يمكن أن يكون سلبيا ErrorWebServerUserHasNotPermission=%s تستخدم حساب مستخدم لتنفيذ خادم الويب لا يوجد لديه إذن لذلك ErrorNoActivatedBarcode=لا يوجد نوع الباركود تفعيلها @@ -142,10 +144,10 @@ ErrorFailedToAddToMailmanList=فشل لاضافة التسجيلة٪ s إلى ق ErrorFailedToRemoveToMailmanList=فشل لإزالة سجل٪ s إلى قائمة ميلمان٪ الصورة أو قاعدة SPIP ErrorNewValueCantMatchOldValue=قيمة جديدة لا يمكن أن يكون مساويا لالقديم ErrorFailedToValidatePasswordReset=فشل في reinit كلمة المرور. قد يكون وقد تم بالفعل reinit (هذا الرابط يمكن استخدامها مرة واحدة فقط). إن لم يكن، في محاولة لاستئناف عملية reinit. -ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check database server is running (for example, with mysql/mariadb, you can launch it from command line with 'sudo service mysql start'). +ErrorToConnectToMysqlCheckInstance=فشل الاتصال بقاعدة البيانات. تحقق من تشغيل خادم قاعدة البيانات (على سبيل المثال ، باستخدام mysql / mariadb ، يمكنك تشغيله من سطر الأوامر باستخدام "sudo service mysql start"). ErrorFailedToAddContact=فشل في إضافة جهة اتصال -ErrorDateMustBeBeforeToday=The date must be lower than today -ErrorDateMustBeInFuture=The date must be greater than today +ErrorDateMustBeBeforeToday=يجب أن يكون التاريخ أقل من اليوم +ErrorDateMustBeInFuture=يجب أن يكون التاريخ أكبر من اليوم ErrorPaymentModeDefinedToWithoutSetup=وتم تشكيل لطريقة الدفع لكتابة٪ الصورة ولكن لم يكتمل الإعداد من وحدة الفاتورة لتحديد المعلومات لاظهار هذه طريقة الدفع. ErrorPHPNeedModule=خطأ، يجب PHP الخاص بتثبيت وحدة٪ s إلى استخدام هذه الميزة. ErrorOpenIDSetupNotComplete=يمكنك إعداد Dolibarr ملف التكوين للسماح بالمصادقة رض، ولكن لم يتم تعريف URL الخدمة رض إلى المستمر٪ الصورة @@ -154,7 +156,7 @@ ErrorBadFormat=شكل سيئة! ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any third party. Link member to an existing third party or create a new third party before creating subscription with invoice. ErrorThereIsSomeDeliveries=خطأ، وهناك بعض الولادات ترتبط هذه الشحنة. رفض الحذف. ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank entry that was reconciled -ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Paid +ErrorCantDeletePaymentSharedWithPayedInvoice=لا يمكن حذف دفعة مشتركة بواسطة فاتورة واحدة على الأقل بالحالة مدفوعة ErrorPriceExpression1=لا يمكن تعيين إلى ثابت '٪ ق' ErrorPriceExpression2=لا يمكن إعادة تعريف المدمج في وظيفة '٪ ق' ErrorPriceExpression3=متغير غير معرف '٪ s' في تعريف الدالة @@ -163,7 +165,7 @@ ErrorPriceExpression5=غير متوقع '٪ ق' ErrorPriceExpression6=عدد خاطئ من الوسائط (٪ ق معين،٪ المتوقعة الصورة) ErrorPriceExpression8=مشغل غير متوقع '٪ ق' ErrorPriceExpression9=حدث خطأ غير متوقع -ErrorPriceExpression10=Operator '%s' lacks operand +ErrorPriceExpression10=عامل التشغيل "%s" يفتقر إلى المعامل ErrorPriceExpression11=تتوقع '٪ ق' ErrorPriceExpression14=القسمة على صفر ErrorPriceExpression17=غير معرف متغير '٪ ق' @@ -171,12 +173,12 @@ ErrorPriceExpression19=التعبير لم يتم العثور على ErrorPriceExpression20=التعبير فارغة ErrorPriceExpression21=نتيجة فارغة '٪ ق' ErrorPriceExpression22=نتيجة سلبية '٪ ق' -ErrorPriceExpression23=Unknown or non set variable '%s' in %s -ErrorPriceExpression24=Variable '%s' exists but has no value +ErrorPriceExpression23=متغير غير معروف أو غير محدد "%s" في %s +ErrorPriceExpression24=المتغير "%s" موجود ولكن ليس له قيمة ErrorPriceExpressionInternal=خطأ داخلي '٪ ق' ErrorPriceExpressionUnknown=خطأ غير معروف '٪ ق' ErrorSrcAndTargetWarehouseMustDiffers=يجب المصدر والهدف يختلف المستودعات -ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on product '%s' requiring lot/serial information +ErrorTryToMakeMoveOnProductRequiringBatchData=خطأ ، أثناء محاولة إجراء حركة مخزون بدون معلومات المجموعة / التسلسل ، على المنتج "%s" الذي يتطلب معلومات المجموعة / التسلسل ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=يجب أولا التحقق من جميع الاستقبالات سجلت (قبول او رفض) قبل أن يسمح لهم القيام بذلك العمل ErrorCantSetReceptionToTotalDoneWithReceptionDenied=يجب أولا التحقق من جميع الاستقبالات سجلت (المعتمد) قبل أن يسمح لهم القيام بذلك العمل ErrorGlobalVariableUpdater0=طلب HTTP فشلت مع الخطأ '٪ ق' @@ -187,14 +189,14 @@ ErrorGlobalVariableUpdater4=العميل SOAP فشلت مع الخطأ '٪ ق' ErrorGlobalVariableUpdater5=لا متغير عمومي مختارة ErrorFieldMustBeANumeric=يجب أن يكون حقل٪ الصورة قيمة رقمية ErrorMandatoryParametersNotProvided=معيار إلزامي (ق) لم تقدم -ErrorOppStatusRequiredIfAmount=You set an estimated amount for this lead. So you must also enter it's status. +ErrorOppStatusRequiredIfAmount=قمت بتعيين مبلغ تقديري لهذا العميل المتوقع. لذلك يجب عليك أيضًا إدخال حالتها. ErrorFailedToLoadModuleDescriptorForXXX=Failed to load module descriptor class for %s ErrorBadDefinitionOfMenuArrayInModuleDescriptor=سيئة تعريف القائمة صفيف في الوحدة واصف (القيمة سيئة لfk_menu مفتاح) -ErrorSavingChanges=An error has occurred when saving the changes +ErrorSavingChanges=حدث خطأ أثناء حفظ التغييرات ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship ErrorFileMustHaveFormat=File must have format %s -ErrorFilenameCantStartWithDot=Filename can't start with a '.' -ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first. +ErrorFilenameCantStartWithDot=لا يمكن أن يبدأ اسم الملف بـ "." +ErrorSupplierCountryIsNotDefined=لم يتم تحديد البلد لهذا البائع. صحح هذا أولاً. ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled. ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order. ErrorStockIsNotEnoughToAddProductOnInvoice=Stock is not enough for product %s to add it into a new invoice. @@ -210,87 +212,99 @@ ErrorPhpMailDelivery=Check that you don't use a too high number of recipients an ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter time consumed. ErrorTaskAlreadyAssigned=Task already assigned to user ErrorModuleFileSeemsToHaveAWrongFormat=The module package seems to have a wrong format. -ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s +ErrorModuleFileSeemsToHaveAWrongFormat2=يجب أن يوجد دليل إلزامي واحد على الأقل في ملف مضغوط للوحدة النمطية: %s أو %s ErrorFilenameDosNotMatchDolibarrPackageRules=The name of the module package (%s) does not match expected name syntax: %s ErrorDuplicateTrigger=Error, duplicate trigger name %s. Already loaded from %s. ErrorNoWarehouseDefined=Error, no warehouses defined. ErrorBadLinkSourceSetButBadValueForRef=The link you use is not valid. A 'source' for payment is defined, but value for 'ref' is not valid. ErrorTooManyErrorsProcessStopped=Too many errors. Process was stopped. -ErrorMassValidationNotAllowedWhenStockIncreaseOnAction=Mass validation is not possible when option to increase/decrease stock is set on this action (you must validate one by one so you can define the warehouse to increase/decrease) -ErrorObjectMustHaveStatusDraftToBeValidated=Object %s must have status 'Draft' to be validated. -ErrorObjectMustHaveLinesToBeValidated=Object %s must have lines to be validated. -ErrorOnlyInvoiceValidatedCanBeSentInMassAction=Only validated invoices can be sent using the "Send by email" mass action. -ErrorChooseBetweenFreeEntryOrPredefinedProduct=You must choose if article is a predefined product or not -ErrorDiscountLargerThanRemainToPaySplitItBefore=The discount you try to apply is larger than remain to pay. Split the discount in 2 smaller discounts before. -ErrorFileNotFoundWithSharedLink=File was not found. May be the share key was modified or file was removed recently. -ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on another product reference. -ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using kits to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number. -ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product -ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use -ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually. -ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s -ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. -ErrorURLMustEndWith=URL %s must end %s -ErrorURLMustStartWithHttp=URL %s must start with http:// or https:// -ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https:// -ErrorNewRefIsAlreadyUsed=Error, the new reference is already used -ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Error, delete payment linked to a closed invoice is not possible. -ErrorSearchCriteriaTooSmall=Search criteria too small. -ErrorObjectMustHaveStatusActiveToBeDisabled=Objects must have status 'Active' to be disabled -ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Objects must have status 'Draft' or 'Disabled' to be enabled -ErrorNoFieldWithAttributeShowoncombobox=No fields has property 'showoncombobox' into definition of object '%s'. No way to show the combolist. -ErrorFieldRequiredForProduct=Field '%s' is required for product %s -ProblemIsInSetupOfTerminal=Problem is in setup of terminal %s. -ErrorAddAtLeastOneLineFirst=Add at least one line first -ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, record is already transferred in accounting, deletion is not possible. -ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Error, language is mandatory if you set the page as a translation of another one. -ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated page is same than this one. -ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". -ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". -ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) -ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than %s) for the field '%s', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? -ErrorReplaceStringEmpty=Error, the string to replace into is empty -ErrorProductNeedBatchNumber=Error, product '%s' need a lot/serial number -ErrorProductDoesNotNeedBatchNumber=Error, product '%s' does not accept a lot/serial number -ErrorFailedToReadObject=Error, failed to read object of type %s -ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php to allow use of Command Line Interface by the internal job scheduler -ErrorLoginDateValidity=Error, this login is outside the validity date range -ErrorValueLength=Length of field '%s' must be higher than '%s' -ErrorReservedKeyword=The word '%s' is a reserved keyword -ErrorNotAvailableWithThisDistribution=Not available with this distribution -ErrorPublicInterfaceNotEnabled=Public interface was not enabled -ErrorLanguageRequiredIfPageIsTranslationOfAnother=The language of new page must be defined if it is set as a translation of another page -ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=The language of new page must not be the source language if it is set as a translation of another page -ErrorAParameterIsRequiredForThisOperation=A parameter is mandatory for this operation -ErrorDateIsInFuture=Error, the date can't be in the future -ErrorAnAmountWithoutTaxIsRequired=Error, amount is mandatory -ErrorAPercentIsRequired=Error, please fill in the percentage correctly -ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of account -ErrorFailedToFindEmailTemplate=Failed to find template with code name %s -ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. -ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary -CheckVersionFail=Version check fail -ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it -ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. -ErrorIsNotADraft=%s is not a draft -ErrorExecIdFailed=Can't execute command "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name -ErrorRequestTooLarge=Error, request too large +ErrorMassValidationNotAllowedWhenStockIncreaseOnAction=لا يمكن التحقق من صحة الكتلة عند تعيين خيار زيادة / تقليل المخزون في هذا الإجراء (يجب التحقق من صحة واحدًا تلو الآخر حتى تتمكن من تحديد المستودع لزيادة / تقليل) +ErrorObjectMustHaveStatusDraftToBeValidated=يجب أن يكون للكائن %s الحالة "مسودة" ليتم التحقق من صحتها. +ErrorObjectMustHaveLinesToBeValidated=يجب أن يحتوي الكائن %s على سطور ليتم التحقق من صحتها. +ErrorOnlyInvoiceValidatedCanBeSentInMassAction=يمكن إرسال الفواتير التي تم التحقق من صحتها فقط باستخدام الإجراء الجماعي "إرسال عبر البريد الإلكتروني". +ErrorChooseBetweenFreeEntryOrPredefinedProduct=يجب أن تختار ما إذا كانت المقالة عبارة عن منتج محدد مسبقًا أم لا +ErrorDiscountLargerThanRemainToPaySplitItBefore=الخصم الذي تحاول تطبيقه أكبر من المبلغ المتبقي لدفعه. قسّم الخصم إلى خصمين أصغر من قبل. +ErrorFileNotFoundWithSharedLink=لم يتم العثور على الملف. قد يكون مفتاح المشاركة قد تم تعديله أو تمت إزالة الملف مؤخرًا. +ErrorProductBarCodeAlreadyExists=الرمز الشريطي للمنتج %s موجود بالفعل في مرجع منتج آخر. +ErrorNoteAlsoThatSubProductCantBeFollowedByLot=لاحظ أيضًا أن استخدام المجموعات لزيادة / تقليل المنتجات الفرعية تلقائيًا غير ممكن عندما يحتاج منتج فرعي واحد على الأقل (أو منتج فرعي من المنتجات الفرعية) إلى رقم تسلسلي / دفعة. +ErrorDescRequiredForFreeProductLines=الوصف إلزامي للخطوط التي تحتوي على منتج مجاني +ErrorAPageWithThisNameOrAliasAlreadyExists=الصفحة / الحاوية %s لها نفس الاسم أو الاسم المستعار البديل الذي تحاول استخدامه +ErrorDuringChartLoad=خطأ عند تحميل مخطط الحسابات. إذا لم يتم تحميل عدد قليل من الحسابات ، فلا يزال بإمكانك إدخالها يدويًا. +ErrorBadSyntaxForParamKeyForContent=بناء جملة غير صحيح لـ param keyforcontent. يجب أن تبدأ القيمة بـ %s أو %s +ErrorVariableKeyForContentMustBeSet=خطأ ، يجب تعيين الثابت الذي يحمل الاسم %s (مع محتوى نصي لإظهاره) أو %s (مع عنوان url خارجي لإظهاره). +ErrorURLMustEndWith=يجب أن ينتهي عنوان URL %s بـ %s +ErrorURLMustStartWithHttp=يجب أن يبدأ عنوان URL %s بـ http: // أو https: // +ErrorHostMustNotStartWithHttp=يجب ألا يبدأ اسم المضيف %s بـ http: // أو https: // +ErrorNewRefIsAlreadyUsed=خطأ ، المرجع الجديد مستخدم بالفعل +ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=خطأ ، لا يمكن حذف الدفعة المرتبطة بفاتورة مغلقة. +ErrorSearchCriteriaTooSmall=معايير البحث صغيرة جدًا. +ErrorObjectMustHaveStatusActiveToBeDisabled=يجب أن تكون الكائنات بحالة "نشطة" ليتم تعطيلها +ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=يجب أن تكون الكائنات بحالة "مسودة" أو "معطلة" ليتم تمكينها +ErrorNoFieldWithAttributeShowoncombobox=لا توجد حقول لها الخاصية "showoncombobox" في تعريف الكائن "%s". لا توجد طريقة لإظهار الاحتكاك. +ErrorFieldRequiredForProduct=الحقل "%s" مطلوب للمنتج %s +ProblemIsInSetupOfTerminal=كانت المشكلة في إعداد المحطة الطرفية %s. +ErrorAddAtLeastOneLineFirst=أضف سطرًا واحدًا على الأقل أولاً +ErrorRecordAlreadyInAccountingDeletionNotPossible=خطأ ، تم نقل السجل بالفعل في المحاسبة ، والحذف غير ممكن. +ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=خطأ ، اللغة إلزامية إذا قمت بتعيين الصفحة على أنها ترجمة لصفحة أخرى. +ErrorLanguageOfTranslatedPageIsSameThanThisPage=خطأ ، لغة الصفحة المترجمة هي نفسها هذه. +ErrorBatchNoFoundForProductInWarehouse=لم يتم العثور على دفعة / مسلسل للمنتج "%s" في المستودع "%s". +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=لا توجد كمية كافية لهذه الكمية / المسلسل للمنتج "%s" في المستودع "%s". +ErrorOnlyOneFieldForGroupByIsPossible=يمكن استخدام حقل واحد فقط لـ "تجميع حسب" (يتم تجاهل الحقول الأخرى) +ErrorTooManyDifferentValueForSelectedGroupBy=تم العثور على قيم مختلفة كثيرة جدًا (أكثر من %s ) للحقل " %s " ، لذلك لا يمكننا استخدامها كمجموعة رسومات ". تمت إزالة الحقل "تجميع حسب". قد ترغب في استخدامه كمحور X؟ +ErrorReplaceStringEmpty=خطأ ، السلسلة المطلوب استبدالها فارغة +ErrorProductNeedBatchNumber=خطأ ، المنتج ' %s ' بحاجة إلى الكثير / الرقم التسلسلي +ErrorProductDoesNotNeedBatchNumber=خطأ ، المنتج " %s " لا يقبل الكثير / الرقم التسلسلي +ErrorFailedToReadObject=خطأ ، فشلت قراءة كائن من النوع %s +ErrorParameterMustBeEnabledToAllwoThisFeature=خطأ ، يجب تمكين المعلمة %s في conf / conf.php للسماح باستخدام واجهة سطر الأوامر بواسطة برنامج جدولة الوظائف الداخلي +ErrorLoginDateValidity=خطأ ، تسجيل الدخول هذا خارج النطاق الزمني للصلاحية +ErrorValueLength=يجب أن يكون طول الحقل " %s " أعلى من " %s " +ErrorReservedKeyword=كلمة " %s " هي كلمة أساسية محجوزة +ErrorNotAvailableWithThisDistribution=غير متوفر مع هذا التوزيع +ErrorPublicInterfaceNotEnabled=لم يتم تمكين الواجهة العامة +ErrorLanguageRequiredIfPageIsTranslationOfAnother=يجب تحديد لغة الصفحة الجديدة إذا تم تعيينها على أنها ترجمة لصفحة أخرى +ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=يجب ألا تكون لغة الصفحة الجديدة هي لغة المصدر إذا تم تعيينها على أنها ترجمة لصفحة أخرى +ErrorAParameterIsRequiredForThisOperation=المعلمة إلزامية لهذه العملية +ErrorDateIsInFuture=خطأ ، لا يمكن أن يكون التاريخ في المستقبل +ErrorAnAmountWithoutTaxIsRequired=خطأ ، المبلغ إلزامي +ErrorAPercentIsRequired=خطأ ، يرجى ملء النسبة بشكل صحيح +ErrorYouMustFirstSetupYourChartOfAccount=يجب عليك أولاً إعداد مخطط الحساب الخاص بك +ErrorFailedToFindEmailTemplate=فشل العثور على قالب بالاسم الرمزي %s +ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=المدة غير محددة في الخدمة. لا توجد طريقة لحساب سعر الساعة. +ErrorActionCommPropertyUserowneridNotDefined=مالك المستخدم مطلوب +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary +CheckVersionFail=فشل التحقق من الإصدار +ErrorWrongFileName=لا يمكن أن يحتوي اسم الملف على __SOMETHING__ فيه +ErrorNotInDictionaryPaymentConditions=ليس في قاموس شروط الدفع ، يرجى التعديل. +ErrorIsNotADraft=%s ليس مسودة +ErrorExecIdFailed=لا يمكن تنفيذ الأمر "id" +ErrorBadCharIntoLoginName=شخصية غير مصرح بها في اسم تسجيل الدخول +ErrorRequestTooLarge=خطأ ، الطلب كبير جدًا +ErrorNotApproverForHoliday=أنت لست المعتمد للمغادرة %s +ErrorAttributeIsUsedIntoProduct=تُستخدم هذه السمة في متغير منتج واحد أو أكثر +ErrorAttributeValueIsUsedIntoProduct=تُستخدم قيمة السمة هذه في متغير منتج واحد أو أكثر +ErrorPaymentInBothCurrency=خطأ ، يجب إدخال جميع المبالغ في نفس العمود +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=تحاول دفع الفواتير بالعملة %s من حساب بالعملة %s +ErrorInvoiceLoadThirdParty=لا يمكن تحميل كائن جهة خارجية للفاتورة "%s" +ErrorInvoiceLoadThirdPartyKey=مفتاح الجهة الخارجية "%s" لم يتم تعيينه للفاتورة "%s" +ErrorDeleteLineNotAllowedByObjectStatus=حذف سطر غير مسموح به من خلال حالة الكائن الحالية +ErrorAjaxRequestFailed=الطلب فشل +ErrorThirpdartyOrMemberidIsMandatory=طرف ثالث أو عضو في الشراكة إلزامي +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings -WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. +WarningParamUploadMaxFileSizeHigherThanPostMaxSize=معلمة PHP upload_max_filesize (%s) أعلى من معلمة PHP post_max_size (%s). هذا ليس إعداد ثابت. WarningPasswordSetWithNoAccount=تم تعيين كلمة مرور لهذا العضو. ومع ذلك، تم إنشاء أي حساب المستخدم. لذلك يتم تخزين كلمة المرور هذه ولكن لا يمكن استخدامها للدخول إلى Dolibarr. ويمكن استخدامه من قبل وحدة / واجهة خارجية ولكن إذا كنت لا تحتاج إلى تعريف أي تسجيل دخول أو كلمة المرور لأحد أفراد، يمكنك تعطيل خيار "إدارة تسجيل دخول لكل عضو" من إعداد وحدة الأعضاء. إذا كنت بحاجة إلى إدارة تسجيل الدخول ولكن لا تحتاج إلى أي كلمة المرور، يمكنك الحفاظ على هذا الحقل فارغا لتجنب هذا التحذير. ملاحظة: يمكن أيضا أن تستخدم البريد الإلكتروني لتسجيل الدخول إذا تم ربط عضو إلى المستخدم. -WarningMandatorySetupNotComplete=Click here to setup mandatory parameters -WarningEnableYourModulesApplications=Click here to enable your modules and applications +WarningMandatorySetupNotComplete=Click here to setup main parameters +WarningEnableYourModulesApplications=انقر هنا لتمكين الوحدات والتطبيقات الخاصة بك WarningSafeModeOnCheckExecDir=انذار ، فب safe_mode الخيار في ذلك تخزين الأمر يجب أن يكون داخل الدليل الذي أعلنته safe_mode_exec_dir المعلمة بي. WarningBookmarkAlreadyExists=المرجعية هذا الكتاب أو هذا الهدف (عنوان) موجود بالفعل. WarningPassIsEmpty=تحذير كلمة سر قاعدة بيانات فارغة. هذه هي ثغرة أمنية. يجب عليك أن تضيف كلمة السر الخاصة بك لقاعدة البيانات وتغيير conf.php ليعكس هذا الملف. WarningConfFileMustBeReadOnly=انذار ، ملف (التكوين htdocs / أسيوط / conf.php) الخاص يمكن أن تكون الكتابة بواسطة خادم الويب. هذه هي ثغرة أمنية خطيرة. أذونات تعديل على ملف ليكون في وضع القراءة فقط لمستخدم نظام التشغيل المستخدمة من قبل ملقم ويب. إذا كنت تستخدم ويندوز وشكل نسبة الدهون لمدة القرص الخاص بك ، فإنك يجب أن نعرف أن هذا النظام لا يسمح ملف لإضافة الأذونات على الملف ، بحيث لا تكون آمنة تماما. WarningsOnXLines=تحذيرات عن مصدر خطوط %s -WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be chosen by default until you check your module setup. -WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable the installation/migration tools by adding a file install.lock into directory %s. Omitting the creation of this file is a grave security risk. -WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other Setup). +WarningNoDocumentModelActivated=لم يتم تنشيط أي نموذج لإنشاء المستندات. سيتم اختيار نموذج افتراضيًا حتى تتحقق من إعداد الوحدة الخاصة بك. +WarningLockFileDoesNotExists=تحذير ، بمجرد الانتهاء من الإعداد ، يجب عليك تعطيل أدوات التثبيت / الترحيل عن طريق إضافة ملف install.lock إلى الدليل %s . يعد حذف إنشاء هذا الملف مخاطرة أمنية كبيرة. +WarningUntilDirRemoved=ستبقى جميع التحذيرات الأمنية (المرئية من قبل المستخدمين المسؤولين فقط) نشطة طالما أن الثغرة الأمنية موجودة (أو أن MAIN_REMOVE_INSTALL_WARNING الثابت مضاف في الإعداد-> الإعداد الآخر). WarningCloseAlways=تحذير، ويتم إغلاق حتى إذا قدر يختلف بين عناصر المصدر والهدف. تمكين هذه الميزة بحذر. WarningUsingThisBoxSlowDown=تحذير، وذلك باستخدام هذا الإطار تبطئ على محمل الجد كل الصفحات التي تظهر مربع. WarningClickToDialUserSetupNotComplete=إعداد المعلومات ClickToDial لالمستخدم الخاص بك ليست كاملة (انظر التبويب ClickToDial على بطاقة المستخدم الخاص بك). @@ -300,35 +314,36 @@ WarningTooManyDataPleaseUseMoreFilters=عدد كبير جدا من البيان WarningSomeLinesWithNullHourlyRate=Some times were recorded by some users while their hourly rate was not defined. A value of 0 %s per hour was used but this may result in wrong valuation of time spent. WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security purpose you will have to login with your new login before next action. WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language -WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to %s when using the mass actions on lists -WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report -WarningProjectDraft=Project is still in draft mode. Don't forget to validate it if you plan to use tasks. -WarningProjectClosed=Project is closed. You must re-open it first. -WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list. -WarningFailedToAddFileIntoDatabaseIndex=Warning, failed to add file entry into ECM database index table -WarningTheHiddenOptionIsOn=Warning, the hidden option %s is on. -WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list -WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. -WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. -WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningNumberOfRecipientIsRestrictedInMassAction=تحذير ، عدد المستلمين المختلفين يقتصر على %s عند استخدام الإجراءات الجماعية في القوائم +WarningDateOfLineMustBeInExpenseReportRange=تحذير ، تاريخ السطر ليس في نطاق تقرير المصاريف +WarningProjectDraft=المشروع لا يزال في وضع المسودة. لا تنس التحقق من صحته إذا كنت تخطط لاستخدام المهام. +WarningProjectClosed=المشروع مغلق. يجب عليك إعادة فتحه أولاً. +WarningSomeBankTransactionByChequeWereRemovedAfter=تمت إزالة بعض المعاملات المصرفية بعد أن تم إنشاء الإيصال بما في ذلك. لذلك قد يختلف عدد الشيكات وإجمالي الإيصالات عن العدد والإجمالي في القائمة. +WarningFailedToAddFileIntoDatabaseIndex=تحذير ، فشل في إضافة إدخال الملف إلى جدول فهرس قاعدة بيانات ECM +WarningTheHiddenOptionIsOn=تحذير ، الخيار المخفي %s قيد التشغيل. +WarningCreateSubAccounts=تحذير ، لا يمكنك إنشاء حساب فرعي مباشرة ، يجب عليك إنشاء طرف ثالث أو مستخدم وتعيين رمز محاسبة لهم للعثور عليهم في هذه القائمة +WarningAvailableOnlyForHTTPSServers=متاح فقط في حالة استخدام اتصال HTTPS آمن. +WarningModuleXDisabledSoYouMayMissEventHere=لم يتم تمكين الوحدة النمطية %s. لذلك قد تفوتك الكثير من الأحداث هنا. +WarningPaypalPaymentNotCompatibleWithStrict=تجعل القيمة "صارمة" ميزات الدفع عبر الإنترنت لا تعمل بشكل صحيح. استخدم "Lax" بدلاً من ذلك. +WarningThemeForcedTo=تحذير ، تم إجبار السمة على %s بواسطة الثابت المخفي MAIN_FORCETHEME # Validate -RequireValidValue = Value not valid -RequireAtLeastXString = Requires at least %s character(s) -RequireXStringMax = Requires %s character(s) max -RequireAtLeastXDigits = Requires at least %s digit(s) -RequireXDigitsMax = Requires %s digit(s) max -RequireValidNumeric = Requires a numeric value -RequireValidEmail = Email address is not valid -RequireMaxLength = Length must be less than %s chars -RequireMinLength = Length must be more than %s char(s) -RequireValidUrl = Require valid URL -RequireValidDate = Require a valid date -RequireANotEmptyValue = Is required -RequireValidDuration = Require a valid duration -RequireValidExistingElement = Require an existing value -RequireValidBool = Require a valid boolean -BadSetupOfField = Error bad setup of field -BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation -BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion -BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class +RequireValidValue = القيمة غير صالحة +RequireAtLeastXString = يتطلب على الأقل %s حرفًا (أحرف) +RequireXStringMax = يتطلب %s حرفًا (أحرف) كحد أقصى +RequireAtLeastXDigits = يتطلب على الأقل %s رقم (أرقام) +RequireXDigitsMax = يتطلب %s رقم (أرقام) كحد أقصى +RequireValidNumeric = يتطلب قيمة عددية +RequireValidEmail = عنوان البريد الإلكتروني غير صالح +RequireMaxLength = يجب أن يكون الطول أقل من %s حرفًا +RequireMinLength = يجب أن يكون الطول أكثر من %s حرفًا (أحرف) +RequireValidUrl = مطلوب URL صالح +RequireValidDate = تتطلب تاريخًا صالحًا +RequireANotEmptyValue = مطلوب +RequireValidDuration = تتطلب مدة صالحة +RequireValidExistingElement = تتطلب قيمة موجودة +RequireValidBool = تتطلب قيمة منطقية صالحة +BadSetupOfField = خطأ في الإعداد السيئ للمجال +BadSetupOfFieldClassNotFoundForValidation = خطأ في إعداد الحقل غير صحيح: الفئة غير موجودة للتحقق من الصحة +BadSetupOfFieldFileNotFound = خطأ في إعداد الحقل غير صحيح: الملف غير موجود للتضمين +BadSetupOfFieldFetchNotCallable = خطأ في إعداد الحقل غير صحيح: الجلب غير قابل للاستدعاء في الفصل الدراسي diff --git a/htdocs/langs/ar_SA/externalsite.lang b/htdocs/langs/ar_SA/externalsite.lang deleted file mode 100644 index ac4d267c40d..00000000000 --- a/htdocs/langs/ar_SA/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=إعداد رابط لموقع خارجي -ExternalSiteURL=رابط موقع خارجي لمحتوى إطار داخلي في لغة توصيف النص التشعبي -ExternalSiteModuleNotComplete=لم يتم تهيئة نموذج الموقع الخارجي بصورة صحيحة. -ExampleMyMenuEntry=مُدخل قائمتي diff --git a/htdocs/langs/ar_SA/ftp.lang b/htdocs/langs/ar_SA/ftp.lang deleted file mode 100644 index 042bbfee564..00000000000 --- a/htdocs/langs/ar_SA/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=إعداد نموذج عميل بروتوكول نقل الملفات -NewFTPClient=إعداد إتصال بروتوكول نقل الملفات جديد -FTPArea=منطقة بروتوكول نقل الملفات -FTPAreaDesc=هذه الشاشة تظهر لك المحتوى محتوى خادم بروتوكول نقل الملفات -SetupOfFTPClientModuleNotComplete=إعداد نموذج عميل بروتوكول نقل الملفات يبدو أنة غير مكتمل -FTPFeatureNotSupportedByYourPHP=بي اتش بي الخاص بك لا يدعم وظائف بروتوكول نقل الملفات -FailedToConnectToFTPServer=فشل الاتصال بخادم بروتوكول نقل الملفات ( الخادم%s ، منفذ%s) -FailedToConnectToFTPServerWithCredentials=فشل في تسجيل الدخول إلى خادم بروتوكول نقل الملفات مع تعريف الدخول / كلمة المرور المحددة -FTPFailedToRemoveFile=فشل لإزالة الملف %s . -FTPFailedToRemoveDir=فشل إزالة المسار %s (راجع الأذونات وهذا المسار فارغ). -FTPPassiveMode=الوضع السلبي -ChooseAFTPEntryIntoMenu=اختيار مدخل بروتوكول نقل البيانات في القائمة ... -FailedToGetFile=فشل في الحصول على الملفات %s diff --git a/htdocs/langs/ar_SA/holiday.lang b/htdocs/langs/ar_SA/holiday.lang index accadd28e1b..aa900247800 100644 --- a/htdocs/langs/ar_SA/holiday.lang +++ b/htdocs/langs/ar_SA/holiday.lang @@ -4,7 +4,7 @@ Holidays=الاجازات CPTitreMenu=الاجازات MenuReportMonth=البيان الشهري MenuAddCP=طلب إجازة جديدة -NotActiveModCP=You must enable the module Leave to view this page. +NotActiveModCP=يجب تمكين وحدة مغادرة لعرض هذه الصفحة. AddCP=تقديم طلب إجازة DateDebCP=تاريخ البدء DateFinCP=نهاية التاريخ @@ -13,21 +13,21 @@ ToReviewCP=انتظر القبول ApprovedCP=وافق CancelCP=ألغيت RefuseCP=رفض -ValidatorCP=Approver -ListeCP=List of leave +ValidatorCP=الموافق +ListeCP=قائمة الإجازة Leave=ترك الطلب -LeaveId=Leave ID +LeaveId=رقم الإجازة ReviewedByCP=سيتم مراجعتها من قبل -UserID=User ID -UserForApprovalID=User for approval ID -UserForApprovalFirstname=First name of approval user -UserForApprovalLastname=Last name of approval user -UserForApprovalLogin=Login of approval user +UserID=معرف المستخدم +UserForApprovalID=مستخدم للحصول على معرّف الموافقة +UserForApprovalFirstname=الاسم الأول لمستخدم الموافقة +UserForApprovalLastname=الاسم الأخير لمستخدم الموافقة +UserForApprovalLogin=تسجيل دخول مستخدم الموافقة DescCP=وصف SendRequestCP=إنشاء طلب إجازة DelayToRequestCP=يجب أن يتم ترك طلبات في اليوم أقل ق٪ (ق) من قبلهم. -MenuConfCP=Balance of leave -SoldeCPUser=Leave balance (in days) %s +MenuConfCP=رصيد الإجازة +SoldeCPUser=رصيد الإجازات (بالأيام) %s ErrorEndDateCP=يجب تحديد تاريخ انتهاء أكبر من تاريخ البدء. ErrorSQLCreateCP=حدث خطأ SQL أثناء إنشاء: ErrorIDFicheCP=حدث خطأ غير موجود على طلب الإجازة. @@ -36,16 +36,16 @@ ErrorUserViewCP=غير مصرح لك قراءة طلب إجازة هذا. InfosWorkflowCP=معلومات سير العمل RequestByCP=طلبت TitreRequestCP=ترك الطلب -TypeOfLeaveId=Type of leave ID -TypeOfLeaveCode=Type of leave code -TypeOfLeaveLabel=Type of leave label -NbUseDaysCP=Number of days of leave used -NbUseDaysCPHelp=The calculation takes into account the non-working days and the holidays defined in the dictionary. -NbUseDaysCPShort=Days of leave -NbUseDaysCPShortInMonth=Days of leave in month -DayIsANonWorkingDay=%s is a non-working day -DateStartInMonth=Start date in month -DateEndInMonth=End date in month +TypeOfLeaveId=نوع معرف الإجازة +TypeOfLeaveCode=نوع رمز الإجازة +TypeOfLeaveLabel=نوع ملصق الإجازة +NbUseDaysCP=عدد أيام الإجازة المستخدمة +NbUseDaysCPHelp=يأخذ الحساب في الاعتبار أيام العطلات والعطلات المحددة في القاموس. +NbUseDaysCPShort=أيام الإجازة +NbUseDaysCPShortInMonth=أيام الإجازة في الشهر +DayIsANonWorkingDay=%s هو يوم عطلة +DateStartInMonth=تاريخ البدء في الشهر +DateEndInMonth=تاريخ الانتهاء في الشهر EditCP=تحرير DeleteCP=حذف ActionRefuseCP=رفض @@ -55,7 +55,7 @@ TitleDeleteCP=حذف طلب إجازة ConfirmDeleteCP=تأكيد حذف طلب إجازة هذا؟ ErrorCantDeleteCP=خطأ لم يكن لديك الحق في حذف طلب إجازة هذا. CantCreateCP=ليس لديك الحق في تقديم طلبات الإجازة. -InvalidValidatorCP=You must choose the approver for your leave request. +InvalidValidatorCP=يجب عليك اختيار المعتمد لطلب الإجازة الخاص بك. NoDateDebut=يجب تحديد تاريخ البدء. NoDateFin=يجب تحديد تاريخ انتهاء. ErrorDureeCP=لا يحتوي طلب إجازة الخاص يوم عمل. @@ -74,20 +74,20 @@ DateRefusCP=تاريخ الرفض DateCancelCP=تاريخ الإلغاء DefineEventUserCP=تعيين إجازة استثنائية لمستخدم addEventToUserCP=تعيين إجازة -NotTheAssignedApprover=You are not the assigned approver +NotTheAssignedApprover=أنت لست الموافق المعين MotifCP=سبب UserCP=مستخدم ErrorAddEventToUserCP=حدث خطأ أثناء إضافة إجازة استثنائية. AddEventToUserOkCP=تم الانتهاء من إضافة إجازة استثنائية. MenuLogCP=وبالنظر إلى سجلات التغيير -LogCP=Log of all updates made to "Balance of Leave" -ActionByCP=Updated by -UserUpdateCP=Updated for +LogCP=سجل بجميع التحديثات التي تم إجراؤها على "رصيد الإجازة" +ActionByCP=تم التحديث بواسطة +UserUpdateCP=تم التحديث لـ PrevSoldeCP=الرصيد السابق NewSoldeCP=توازن جديد alreadyCPexist=وقد تم بالفعل طلب إجازة في هذه الفترة. -FirstDayOfHoliday=Beginning day of leave request -LastDayOfHoliday=Ending day of leave request +FirstDayOfHoliday=بداية يوم طلب الإجازة +LastDayOfHoliday=يوم انتهاء طلب الإجازة BoxTitleLastLeaveRequests=Latest %s modified leave requests HolidaysMonthlyUpdate=تحديث شهري ManualUpdate=التحديث اليدوي @@ -95,17 +95,17 @@ HolidaysCancelation=ترك طلب الإلغاء EmployeeLastname=Employee last name EmployeeFirstname=Employee first name TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed -LastHolidays=Latest %s leave requests -AllHolidays=All leave requests -HalfDay=Half day -NotTheAssignedApprover=You are not the assigned approver -LEAVE_PAID=Paid vacation -LEAVE_SICK=Sick leave -LEAVE_OTHER=Other leave -LEAVE_PAID_FR=Paid vacation +LastHolidays=أحدث طلبات ترك %s +AllHolidays=جميع طلبات الإجازة +HalfDay=نصف يوم +NotTheAssignedApprover=أنت لست الموافق المعين +LEAVE_PAID=اجازه مدفوعة +LEAVE_SICK=أجازة مرضية +LEAVE_OTHER=إجازة أخرى +LEAVE_PAID_FR=اجازه مدفوعة ## Configuration du Module ## -LastUpdateCP=Last automatic update of leave allocation -MonthOfLastMonthlyUpdate=Month of last automatic update of leave allocation +LastUpdateCP=آخر تحديث تلقائي لتخصيص الإجازات +MonthOfLastMonthlyUpdate=شهر آخر تحديث تلقائي لتخصيص الإجازة UpdateConfCPOK=تم التحديث بنجاح. Module27130Name= إدارة طلبات الإجازة Module27130Desc= إدارة طلبات الإجازة @@ -115,25 +115,25 @@ NoticePeriod=فترة إشعار HolidaysToValidate=التحقق من صحة طلبات الإجازة HolidaysToValidateBody=وفيما يلي طلب إجازة للتحقق من صحة HolidaysToValidateDelay=وهذا الطلب إجازة أن تتم في غضون أقل من٪ الصورة أيام. -HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. +HolidaysToValidateAlertSolde=المستخدم الذي قدم طلب الإجازة هذا ليس لديه أيام متاحة كافية. HolidaysValidated=طلبات إجازة التحقق من صحة HolidaysValidatedBody=تم التحقق من صحة طلب إجازة لمدة٪ s إلى٪ s. HolidaysRefused=طلب نفى -HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason: +HolidaysRefusedBody=تم رفض طلب إجازة %s إلى %s للسبب التالي: HolidaysCanceled=إلغاء طلب الأوراق HolidaysCanceledBody=تم إلغاء طلب إجازة لمدة٪ s إلى٪ s. FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter -GoIntoDictionaryHolidayTypes=Go into Home - Setup - Dictionaries - Type of leave to setup the different types of leaves. -HolidaySetup=Setup of module Leave -HolidaysNumberingModules=Numbering models for leave requests -TemplatePDFHolidays=Template for leave requests PDF -FreeLegalTextOnHolidays=Free text on PDF -WatermarkOnDraftHolidayCards=Watermarks on draft leave requests -HolidaysToApprove=Holidays to approve -NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays -HolidayBalanceMonthlyUpdate=Monthly update of holiday balance -XIsAUsualNonWorkingDay=%s is usualy a NON working day -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +GoIntoDictionaryHolidayTypes=انتقل إلى Home - الإعداد - القواميس - نوع الإجازة لإعداد أنواع مختلفة من الأوراق. +HolidaySetup=إعداد إجازة الوحدة +HolidaysNumberingModules=نماذج الترقيم لطلبات الإجازة +TemplatePDFHolidays=قالب طلبات الإجازة PDF +FreeLegalTextOnHolidays=نص مجاني على PDF +WatermarkOnDraftHolidayCards=العلامات المائية على مسودة طلبات الإجازة +HolidaysToApprove=العطل للموافقة +NobodyHasPermissionToValidateHolidays=لا أحد لديه إذن للتحقق من صحة العطلات +HolidayBalanceMonthlyUpdate=التحديث الشهري لرصيد العطلة +XIsAUsualNonWorkingDay=%s هو عادة يوم عمل غير +BlockHolidayIfNegative=كتلة إذا كان الرصيد سلبي +LeaveRequestCreationBlockedBecauseBalanceIsNegative=تم حظر إنشاء طلب الإجازة هذا لأن رصيدك سلبي +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=يجب أن يكون طلب الإجازة %s مسودة أو إلغاء أو رفض حذفه diff --git a/htdocs/langs/ar_SA/hrm.lang b/htdocs/langs/ar_SA/hrm.lang index abe66f93b30..045d3740497 100644 --- a/htdocs/langs/ar_SA/hrm.lang +++ b/htdocs/langs/ar_SA/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=فتح المؤسسة CloseEtablishment=إغلاق المؤسسة # Dictionary DictionaryPublicHolidays=الإجازات - الإجازات عامة -DictionaryDepartment=إدارة الموارد البشرية - قائمة القسم +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=إدارة الموارد البشرية - المسميات الوظيفية # Module Employees=الموظفين @@ -20,13 +20,14 @@ Employee=الموظف NewEmployee=موظف جديد ListOfEmployees=قائمة الموظفين HrmSetup=HRM وحدة الإعداد -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=وظيفة -Jobs=Jobs +JobPosition=وظيفة +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=المنصب -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/ar_SA/install.lang b/htdocs/langs/ar_SA/install.lang index d4fd487c0a1..cbe4aa51b37 100644 --- a/htdocs/langs/ar_SA/install.lang +++ b/htdocs/langs/ar_SA/install.lang @@ -2,34 +2,35 @@ InstallEasy=فقط اتبع التعليمات خطوة بخطوة. MiscellaneousChecks=التحقق من الشروط الأساسية ConfFileExists=ملف الإعداد %s موجود مسبقاً -ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created! +ConfFileDoesNotExistsAndCouldNotBeCreated=ملف التكوين %s غير موجود ولا يمكن إنشاؤه! ConfFileCouldBeCreated=يمكن إنشاء ملف الإعداد %s -ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsNotWritable=ملف التكوين %s غير قابل للكتابة. تحقق من الأذونات. عند التثبيت لأول مرة ، يجب أن يكون خادم الويب الخاص بك قادرًا على الكتابة في هذا الملف أثناء عملية التكوين ("chmod 666" على سبيل المثال في نظام التشغيل Unix مثل نظام التشغيل). ConfFileIsWritable=ملف الإعداد %s قابل للكتابة. -ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. -ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +ConfFileMustBeAFileNotADir=يجب أن يكون ملف التكوين %s ملفًا وليس دليلاً. +ConfFileReload=إعادة تحميل المعلمات من ملف التكوين. +NoReadableConfFileSoStartInstall=ملف التكوين conf / conf.php غير موجود أو غير قابل للقراءة. سنقوم بتشغيل عملية التثبيت لمحاولة تهيئتها. PHPSupportPOSTGETOk=يدعم هذا الـ PHP وظائف POST و GET. -PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. +PHPSupportPOSTGETKo=من المحتمل أن إعداد PHP الخاص بك لا يدعم المتغيرات POST و / أو GET. تحقق من المعامل variables_order في ملف php.ini. PHPSupportSessions=يدعم هذا الـ PHP ميزة الجلسات الزمنية. -PHPSupport=This PHP supports %s functions. +PHPSupport=يدعم PHP وظائف %s. PHPMemoryOK=تم إعداد الجلسة الزمنية للذاكرة في PHP الى %s . من المفترض ان تكون كافية. -PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. -Recheck=Click here for a more detailed test -ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. +PHPMemoryTooLow=تم تعيين ذاكرة جلسة PHP القصوى على %s بايت. هذا منخفض جدًا. قم بتغيير المعلمة php.ini لتعيين memory_limit إلى a0ecb2ec87f498zb7 byt9174. +Recheck=انقر هنا للحصول على اختبار أكثر تفصيلاً +ErrorPHPDoesNotSupportSessions=تثبيت PHP الخاص بك لا يدعم الجلسات. هذه الميزة مطلوبة للسماح لـ Dolibarr بالعمل. تحقق من إعداد PHP وأذونات دليل الجلسات. +ErrorPHPDoesNotSupport=تثبيت PHP الخاص بك لا يدعم وظائف %s. ErrorDirDoesNotExists=دليل ٪ ق لا يوجد. -ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. +ErrorGoBackAndCorrectParameters=ارجع وتحقق من / صحح المعلمات. ErrorWrongValueForParameter=قد تكون لديكم مطبوعة خاطئة قيمة معلمة '٪ ق. ErrorFailedToCreateDatabase=فشل إنشاء قاعدة بيانات '٪ ق. ErrorFailedToConnectToDatabase=فشل في الاتصال بقاعدة البيانات '٪ ق. ErrorDatabaseVersionTooLow=إصدار قاعدة البيانات (s%) قديمة جدا. مطلوب نسخة s% أو أعلى -ErrorPHPVersionTooLow=PHP نسخة قديمة جدا. النسخة ٪ ق هو مطلوب. -ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. +ErrorPHPVersionTooLow=إصدار PHP قديم جدًا. مطلوب إصدار %s أو أعلى. +ErrorPHPVersionTooHigh=إصدار PHP مرتفع جدًا. مطلوب إصدار %s أو أقل. +ErrorConnectedButDatabaseNotFound=الاتصال بالخادم ناجح ولكن قاعدة البيانات "%s" غير موجودة. ErrorDatabaseAlreadyExists=قاعدة البيانات '٪ ق' موجود بالفعل. -IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". +IfDatabaseNotExistsGoBackAndUncheckCreate=إذا كانت قاعدة البيانات غير موجودة ، فارجع وحدد الخيار "إنشاء قاعدة بيانات". IfDatabaseExistsGoBackAndCheckCreate=إذا كانت قاعدة البيانات موجود بالفعل ، من العودة وإلغاء "إنشاء قاعدة بيانات" الخيار. -WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. +WarningBrowserTooOld=إصدار المتصفح قديم جدًا. يوصى بشدة بترقية متصفحك إلى إصدار حديث من Firefox أو Chrome أو Opera. PHPVersion=PHP الإصدار License=الترخيص باستعمال ConfigurationFile=ملفات @@ -42,23 +43,23 @@ DolibarrDatabase=قاعدة بيانات Dolibarr DatabaseType=قاعدة بيانات من نوع DriverType=سائق نوع Server=الخادم -ServerAddressDescription=Name or ip address for the database server. Usually 'localhost' when the database server is hosted on the same server as the web server. +ServerAddressDescription=الاسم أو عنوان IP لخادم قاعدة البيانات. عادة "localhost" عندما يتم استضافة خادم قاعدة البيانات على نفس الخادم مثل خادم الويب. ServerPortDescription=قاعدة بيانات الميناء. تبقي فارغة إذا كانت غير معروفة. DatabaseServer=خادم قاعدة البيانات DatabaseName=اسم قاعدة البيانات -DatabasePrefix=Database table prefix -DatabasePrefixDescription=Database table prefix. If empty, defaults to llx_. -AdminLogin=User account for the Dolibarr database owner. -PasswordAgain=Retype password confirmation +DatabasePrefix=بادئة جدول قاعدة البيانات +DatabasePrefixDescription=بادئة جدول قاعدة البيانات. إذا كانت فارغة ، يتم تعيينها افتراضيًا على llx_. +AdminLogin=حساب المستخدم لمالك قاعدة بيانات Dolibarr. +PasswordAgain=أعد كتابة كلمة المرور AdminPassword=Dolibarr كلمة السر لمدير قاعدة البيانات. تبقي فارغة إذا لم يذكر اسمه في اتصال CreateDatabase=إنشاء قاعدة بيانات -CreateUser=Create user account or grant user account permission on the Dolibarr database +CreateUser=قم بإنشاء حساب مستخدم أو منح إذن حساب المستخدم على قاعدة بيانات Dolibarr DatabaseSuperUserAccess=قاعدة بيانات -- وصول مستخدم الكومبيوتر ذو الصلاحيات العليا -CheckToCreateDatabase=Check the box if the database does not exist yet and so must be created.
In this case, you must also fill in the user name and password for the superuser account at the bottom of this page. -CheckToCreateUser=Check the box if:
the database user account does not yet exist and so must be created, or
if the user account exists but the database does not exist and permissions must be granted.
In this case, you must enter the user account and password and also the superuser account name and password at the bottom of this page. If this box is unchecked, database owner and password must already exist. -DatabaseRootLoginDescription=Superuser account name (to create new databases or new users), mandatory if the database or its owner does not already exist. -KeepEmptyIfNoPassword=Leave empty if superuser has no password (NOT recommended) -SaveConfigurationFile=Saving parameters to +CheckToCreateDatabase=ضع علامة في المربع إذا لم تكن قاعدة البيانات موجودة بعد ويجب إنشاء ذلك.
في هذه الحالة ، يجب عليك أيضًا ملء اسم المستخدم وكلمة المرور لحساب المستخدم المتميز في أسفل هذه الصفحة. +CheckToCreateUser=ضع علامة في المربع إذا:
حساب مستخدم قاعدة البيانات غير موجود بعد ويجب إنشاءه ، أو
إذا كان حساب المستخدم موجودًا ولكن قاعدة البيانات غير موجودة ويجب منح الأذونات.
في هذه الحالة ، يجب عليك إدخال حساب المستخدم وكلمة المرور و أيضًا اسم حساب المستخدم المتميز وكلمة المرور في أسفل هذه الصفحة. إذا لم يتم تحديد هذا المربع ، فيجب أن يكون مالك قاعدة البيانات وكلمة المرور موجودين بالفعل. +DatabaseRootLoginDescription=اسم حساب المستخدم المتميز (لإنشاء قواعد بيانات جديدة أو مستخدمين جدد) ، إلزامي إذا لم تكن قاعدة البيانات أو مالكها موجودًا بالفعل. +KeepEmptyIfNoPassword=اتركه فارغًا إذا لم يكن لدى المستخدم المتميز كلمة مرور (غير مستحسن) +SaveConfigurationFile=حفظ المعلمات في ServerConnection=اتصال الخادم DatabaseCreation=إنشاء قاعدة بيانات CreateDatabaseObjects=إنشاء قاعدة بيانات الأجسام @@ -69,9 +70,9 @@ CreateOtherKeysForTable=إنشاء الخارجية مفاتيح الأرقام OtherKeysCreation=مفاتيح الخارجية وإنشاء الفهارس FunctionsCreation=إنشاء وظائف AdminAccountCreation=مدير ادخل إنشاء -PleaseTypePassword=Please type a password, empty passwords are not allowed! -PleaseTypeALogin=Please type a login! -PasswordsMismatch=Passwords differs, please try again! +PleaseTypePassword=الرجاء كتابة كلمة المرور ، غير مسموح بكلمات المرور الفارغة! +PleaseTypeALogin=الرجاء كتابة تسجيل الدخول! +PasswordsMismatch=تختلف كلمات المرور ، يرجى المحاولة مرة أخرى! SetupEnd=نهاية الإعداد SystemIsInstalled=هذا التثبيت الكامل. SystemIsUpgraded=وقد تم تطوير Dolibarr بنجاح. @@ -79,73 +80,73 @@ YouNeedToPersonalizeSetup=عليك تكوين Dolibarr لتناسب احتياج AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfully. GoToDolibarr=الذهاب إلى Dolibarr GoToSetupArea=الذهاب إلى Dolibarr (مجال الإعداد) -MigrationNotFinished=The database version is not completely up to date: run the upgrade process again. +MigrationNotFinished=إصدار قاعدة البيانات ليس محدثًا بالكامل: قم بتشغيل عملية الترقية مرة أخرى. GoToUpgradePage=الذهاب لتحديث الصفحة مرة أخرى WithNoSlashAtTheEnd=بدون خفض "/" في نهاية -DirectoryRecommendation=IMPORTANT: You must use a directory that is outside of the web pages (so do not use a subdirectory of previous parameter). +DirectoryRecommendation= هام : يجب عليك استخدام دليل خارج صفحات الويب (لذا لا تستخدم دليلًا فرعيًا للمعلمة السابقة). LoginAlreadyExists=موجود بالفعل DolibarrAdminLogin=ادخل Dolibarr مشرف -AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back if you want to create another one. +AdminLoginAlreadyExists=حساب مسؤول Dolibarr ' %s ' موجود بالفعل. ارجع إذا كنت تريد إنشاء واحدة أخرى. FailedToCreateAdminLogin=Failed to create Dolibarr administrator account. -WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, you should add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. -FunctionNotAvailableInThisPHP=Not available in this PHP +WarningRemoveInstallDir=تحذير ، لأسباب أمنية ، بمجرد اكتمال التثبيت أو الترقية ، يجب إضافة ملف يسمى install.lock في دليل مستندات Dolibarr من أجل منع الاستخدام العرضي / الضار لأدوات التثبيت مرة أخرى. +FunctionNotAvailableInThisPHP=غير متوفر في PHP هذا ChoosedMigrateScript=اختار الهجرة سكريبت -DataMigration=Database migration (data) -DatabaseMigration=Database migration (structure + some data) +DataMigration=ترحيل قاعدة البيانات (البيانات) +DatabaseMigration=ترحيل قاعدة البيانات (بنية + بعض البيانات) ProcessMigrateScript=السيناريو تجهيز ChooseYourSetupMode=اختر طريقة الإعداد وانقر على "ابدأ"... FreshInstall=تركيب جديد -FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install. If you want to upgrade your version, choose "Upgrade" mode. +FreshInstallDesc=استخدم هذا الوضع إذا كان هذا هو التثبيت الأول لك. إذا لم يكن الأمر كذلك ، فيمكن لهذا الوضع إصلاح تثبيت سابق غير مكتمل. إذا كنت ترغب في ترقية إصدارك ، اختر وضع "ترقية". Upgrade=ترقية UpgradeDesc=استخدام هذه الطريقة إذا كنت قد حلت محل القديمة Dolibarr الملفات من الملفات مع إصدار أحدث. وهذا من شأنه رفع مستوى قاعدة البيانات والبيانات. Start=يبدأ InstallNotAllowed=الإعداد غير مسموح به conf.php الاذونات YouMustCreateWithPermission=يجب إنشاء ملف ق ٪ ومجموعة الكتابة على أذونات لملقم الويب أثناء عملية التثبيت. -CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload the page. +CorrectProblemAndReloadPage=يرجى إصلاح المشكلة والضغط على F5 لإعادة تحميل الصفحة. AlreadyDone=بالفعل هاجر DatabaseVersion=قاعدة بيانات النسخة ServerVersion=خادم قاعدة البيانات النسخة YouMustCreateItAndAllowServerToWrite=يجب إنشاء هذا الدليل ، والسماح لخادم الويب أن يكتبوا فيه. DBSortingCollation=طابع الفرز بغية -YouAskDatabaseCreationSoDolibarrNeedToConnect=You selected create database %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. -YouAskLoginCreationSoDolibarrNeedToConnect=You selected create database user %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. -BecauseConnectionFailedParametersMayBeWrong=The database connection failed: the host or super user parameters must be wrong. +YouAskDatabaseCreationSoDolibarrNeedToConnect=لقد حددت إنشاء قاعدة بيانات %s ، ولكن لهذا الغرض ، يحتاج Dolibarr إلى الاتصال بالخادم %s a09a4b739f17658372f a0334bec08z07f. +YouAskLoginCreationSoDolibarrNeedToConnect=لقد حددت إنشاء مستخدم قاعدة البيانات %s ، ولكن لهذا الغرض ، يحتاج Dolibarr إلى الاتصال بالخادم %s a09a4b749f17658z07fee. +BecauseConnectionFailedParametersMayBeWrong=فشل اتصال قاعدة البيانات: يجب أن تكون معلمات المضيف أو المستخدم الفائق خاطئة. OrphelinsPaymentsDetectedByMethod=Orphelins من اكتشاف طريقة الدفع ق ٪ RemoveItManuallyAndPressF5ToContinue=إزالته يدويا واضغط F5 للمتابعة. FieldRenamed=تغيير اسم الحقل -IfLoginDoesNotExistsCheckCreateUser=If the user does not exist yet, you must check option "Create user" -ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or the PHP client version may be too old compared to the database version. +IfLoginDoesNotExistsCheckCreateUser=إذا لم يكن المستخدم موجودًا بعد ، فيجب تحديد الخيار "إنشاء مستخدم" +ErrorConnection=Server " %s ", database name " %s ", login " %s ", or database password may be wrong or the PHP client version may be too old compared to the database version. InstallChoiceRecommanded=وأوصت لتثبيت اختيار النسخة ٪ المستندات الخاصة بك من النسخة الحالية ل ٪ InstallChoiceSuggested=اقترح تثبيت اختيار المثبت. -MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions. The install wizard will come back to suggest a further migration once this one is complete. -CheckThatDatabasenameIsCorrect=Check that the database name "%s" is correct. +MigrateIsDoneStepByStep=يحتوي الإصدار المستهدف (%s) على فجوة في عدة إصدارات. سيعود معالج التثبيت ليقترح عملية ترحيل أخرى بمجرد اكتمال هذا. +CheckThatDatabasenameIsCorrect=تحقق من صحة اسم قاعدة البيانات " %s ". IfAlreadyExistsCheckOption=وإذا كان هذا الاسم هو الصحيح وأنه لا وجود قاعدة بيانات حتى الآن ، ويجب التحقق من خيار "إنشاء قاعدة بيانات". OpenBaseDir=بي openbasedir المعلمة -YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide the login/password of superuser (bottom of form). -YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide the login/password of superuser (bottom of form). -NextStepMightLastALongTime=The current step may take several minutes. Please wait until the next screen is shown completely before continuing. -MigrationCustomerOrderShipping=Migrate shipping for sales orders storage +YouAskToCreateDatabaseSoRootRequired=حددت المربع "إنشاء قاعدة بيانات". لهذا ، تحتاج إلى تقديم تسجيل الدخول / كلمة المرور للمستخدم المتميز (أسفل النموذج). +YouAskToCreateDatabaseUserSoRootRequired=حددت المربع "إنشاء مالك قاعدة البيانات". لهذا ، تحتاج إلى تقديم تسجيل الدخول / كلمة المرور للمستخدم المتميز (أسفل النموذج). +NextStepMightLastALongTime=قد تستغرق الخطوة الحالية عدة دقائق. يرجى الانتظار حتى تظهر الشاشة التالية تمامًا قبل المتابعة. +MigrationCustomerOrderShipping=ترحيل الشحن لتخزين أوامر المبيعات MigrationShippingDelivery=ترقية تخزين الشحن MigrationShippingDelivery2=ترقية تخزين الشحن 2 MigrationFinished=الانتهاء من الهجرة -LastStepDesc=Last step: Define here the login and password you wish to use to connect to Dolibarr. Do not lose this as it is the master account to administer all other/additional user accounts. +LastStepDesc= الخطوة الأخيرة : حدد هنا تسجيل الدخول وكلمة المرور اللذين ترغب في استخدامهما للاتصال بـ Dolibarr. لا تفقد هذا لأنه الحساب الرئيسي لإدارة جميع حسابات المستخدمين الأخرى / الإضافية. ActivateModule=تفعيل وحدة %s ShowEditTechnicalParameters=انقر هنا لعرض/تحرير المعلمات المتقدمة (وضع الخبراء) -WarningUpgrade=Warning:\nDid you run a database backup first?\nThis is highly recommended. Loss of data (due to for example bugs in mysql version 5.5.40/41/42/43) may be possible during this process, so it is essential to take a complete dump of your database before starting any migration.\n\nClick OK to start migration process... -ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug, making data loss possible if you make structural changes in your database, such as is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a layer (patched) version (list of known buggy versions: %s) -KeepDefaultValuesWamp=You used the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you are doing. -KeepDefaultValuesDeb=You used the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so the values proposed here are already optimized. Only the password of the database owner to create must be entered. Change other parameters only if you know what you are doing. -KeepDefaultValuesMamp=You used the Dolibarr setup wizard from DoliMamp, so the values proposed here are already optimized. Change them only if you know what you are doing. -KeepDefaultValuesProxmox=You used the Dolibarr setup wizard from a Proxmox virtual appliance, so the values proposed here are already optimized. Change them only if you know what you are doing. -UpgradeExternalModule=Run dedicated upgrade process of external module -SetAtLeastOneOptionAsUrlParameter=Set at least one option as a parameter in URL. For example: '...repair.php?standard=confirmed' -NothingToDelete=Nothing to clean/delete -NothingToDo=Nothing to do +WarningUpgrade=تحذير:\nهل قمت بتشغيل نسخة احتياطية لقاعدة البيانات أولاً؟\nينصح بهذا بشدة. قد يكون فقدان البيانات (بسبب الأخطاء الموجودة في الإصدار 5.5.40 / 41/42/43 من mysql على سبيل المثال) ممكنًا أثناء هذه العملية ، لذلك من الضروري تفريغ قاعدة البيانات بالكامل قبل بدء أي ترحيل.\n\nانقر فوق "موافق" لبدء عملية الترحيل ... +ErrorDatabaseVersionForbiddenForMigration=إصدار قاعدة البيانات لديك هو %s. يحتوي على خطأ فادح ، مما يجعل فقدان البيانات ممكنًا إذا قمت بإجراء تغييرات هيكلية في قاعدة البيانات الخاصة بك ، كما هو مطلوب من خلال عملية الترحيل. لسببه ، لن يُسمح بالترحيل حتى تقوم بترقية قاعدة البيانات الخاصة بك إلى إصدار طبقة (مصححة) (قائمة إصدارات عربات التي تجرها الدواب المعروفة: %s) +KeepDefaultValuesWamp=لقد استخدمت معالج إعداد Dolibarr من DoliWamp ، لذلك تم تحسين القيم المقترحة هنا بالفعل. قم بتغييرها فقط إذا كنت تعرف ما تفعله. +KeepDefaultValuesDeb=لقد استخدمت معالج إعداد Dolibarr من حزمة Linux (Ubuntu و Debian و Fedora ...) ، لذلك تم تحسين القيم المقترحة هنا بالفعل. يجب فقط إدخال كلمة مرور مالك قاعدة البيانات المراد إنشاؤها. قم بتغيير المعلمات الأخرى فقط إذا كنت تعرف ما تفعله. +KeepDefaultValuesMamp=لقد استخدمت معالج إعداد Dolibarr من DoliMamp ، لذلك تم تحسين القيم المقترحة هنا بالفعل. قم بتغييرها فقط إذا كنت تعرف ما تفعله. +KeepDefaultValuesProxmox=لقد استخدمت معالج إعداد Dolibarr من جهاز Proxmox الظاهري ، لذلك تم تحسين القيم المقترحة هنا بالفعل. قم بتغييرها فقط إذا كنت تعرف ما تفعله. +UpgradeExternalModule=قم بتشغيل عملية ترقية مخصصة للوحدة الخارجية +SetAtLeastOneOptionAsUrlParameter=عيِّن خيارًا واحدًا على الأقل كمعامل في URL. على سبيل المثال: "... repair.php؟ standard = Verified" +NothingToDelete=لا شيء للتنظيف / الحذف +NothingToDo=لا شيء لأفعله ######### # upgrade MigrationFixData=إصلاح البيانات الذي لم تتم تسويته MigrationOrder=بيانات الهجرة طلبات الزبائن -MigrationSupplierOrder=Data migration for vendor's orders +MigrationSupplierOrder=ترحيل البيانات لأوامر البائعين MigrationProposal=بيانات الهجرة لأغراض تجارية اقتراحات MigrationInvoice=بيانات الهجرة لعملاء الفواتير MigrationContract=بيانات الهجرة للحصول على عقود @@ -161,9 +162,9 @@ MigrationContractsUpdate=تصحيح بيانات العقد MigrationContractsNumberToUpdate=٪ ق العقد (ق) لتحديث MigrationContractsLineCreation=عقد إنشاء خط لعقد المرجع ق ٪ MigrationContractsNothingToUpdate=لا أكثر مما ينبغي فعله -MigrationContractsFieldDontExist=Field fk_facture does not exist anymore. Nothing to do. +MigrationContractsFieldDontExist=لم يعد الحقل fk_facture موجودًا بعد الآن. لا شيء لأفعله. MigrationContractsEmptyDatesUpdate=عقد فارغ تصحيح التاريخ -MigrationContractsEmptyDatesUpdateSuccess=Contract empty date correction done successfully +MigrationContractsEmptyDatesUpdateSuccess=تم تصحيح تاريخ فارغ للعقد بنجاح MigrationContractsEmptyDatesNothingToUpdate=أي عقد حتى الآن لتصحيح فارغة MigrationContractsEmptyCreationDatesNothingToUpdate=إنشاء أي عقد لتصحيح التاريخ MigrationContractsInvalidDatesUpdate=سوء قيمة العقد تصحيح التاريخ @@ -185,29 +186,29 @@ MigrationDeliveryDetail=تسليم تحديث MigrationStockDetail=تحديث قيمة المخزون من المنتجات MigrationMenusDetail=تحديث القوائم الديناميكية الجداول MigrationDeliveryAddress=تتناول آخر التطورات في تسليم شحنات -MigrationProjectTaskActors=Data migration for table llx_projet_task_actors +MigrationProjectTaskActors=ترحيل البيانات للجدول llx_projet_task_actors MigrationProjectUserResp=بيانات fk_user_resp مجال الهجرة من llx_projet لllx_element_contact MigrationProjectTaskTime=تحديث الوقت الذي يقضيه في ثوان MigrationActioncommElement=تحديث البيانات على الإجراءات -MigrationPaymentMode=Data migration for payment type +MigrationPaymentMode=ترحيل البيانات لنوع الدفع MigrationCategorieAssociation=تحديث الفئات -MigrationEvents=Migration of events to add event owner into assignment table -MigrationEventsContact=Migration of events to add event contact into assignment table +MigrationEvents=ترحيل الأحداث لإضافة مالك الحدث إلى جدول المهام +MigrationEventsContact=ترحيل الأحداث لإضافة جهة اتصال الحدث إلى جدول المهام MigrationRemiseEntity=Update entity field value of llx_societe_remise MigrationRemiseExceptEntity=Update entity field value of llx_societe_remise_except -MigrationUserRightsEntity=Update entity field value of llx_user_rights -MigrationUserGroupRightsEntity=Update entity field value of llx_usergroup_rights -MigrationUserPhotoPath=Migration of photo paths for users -MigrationFieldsSocialNetworks=Migration of users fields social networks (%s) +MigrationUserRightsEntity=تحديث قيمة حقل الكيان لـ llx_user_rights +MigrationUserGroupRightsEntity=تحديث قيمة حقل الكيان لـ llx_usergroup_rights +MigrationUserPhotoPath=ترحيل مسارات الصور للمستخدمين +MigrationFieldsSocialNetworks=هجرة حقول المستخدمين الشبكات الاجتماعية (%s) MigrationReloadModule=إعادة تحديث الوحدات %s -MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm -MigrationImportOrExportProfiles=Migration of import or export profiles (%s) -ShowNotAvailableOptions=Show unavailable options -HideNotAvailableOptions=Hide unavailable options -ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can click here, but the application or some features may not work correctly until the errors are resolved. -YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).
-YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file install.lock in the dolibarr documents directory).
-ClickHereToGoToApp=Click here to go to your application -ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. -Loaded=Loaded -FunctionTest=Function test +MigrationResetBlockedLog=إعادة تعيين الوحدة النمطية BlockedLog لخوارزمية v7 +MigrationImportOrExportProfiles=ترحيل ملفات تعريف الاستيراد أو التصدير (%s) +ShowNotAvailableOptions=إظهار الخيارات غير المتاحة +HideNotAvailableOptions=إخفاء الخيارات غير المتاحة +ErrorFoundDuringMigration=تم الإبلاغ عن خطأ (أخطاء) أثناء عملية الترحيل ، لذا فإن الخطوة التالية غير متاحة. لتجاهل الأخطاء ، يمكنك النقر هنا ، لكن التطبيق أو بعض الميزات قد لا تعمل بشكل صحيح حتى يتم حل الأخطاء. +YouTryInstallDisabledByDirLock=حاول التطبيق الترقية الذاتية ، ولكن تم تعطيل صفحات التثبيت / الترقية للأمان (تمت إعادة تسمية الدليل بلاحقة .lock).
+YouTryInstallDisabledByFileLock=حاول التطبيق الترقية الذاتية ، ولكن تم تعطيل صفحات التثبيت / الترقية للأمان (من خلال وجود ملف قفل install.lock في دليل مستندات dolibarr).
+ClickHereToGoToApp=انقر هنا للذهاب إلى التطبيق الخاص بك +ClickOnLinkOrRemoveManualy=إذا كانت الترقية قيد التقدم ، يرجى الانتظار. إذا لم يكن كذلك ، انقر فوق الارتباط التالي. إذا كنت ترى نفس الصفحة دائمًا ، فيجب عليك إزالة / إعادة تسمية الملف install.lock في دليل المستندات. +Loaded=محمل +FunctionTest=اختبار الوظيفة diff --git a/htdocs/langs/ar_SA/knowledgemanagement.lang b/htdocs/langs/ar_SA/knowledgemanagement.lang index 002cf78ddf2..fa1ada6b601 100644 --- a/htdocs/langs/ar_SA/knowledgemanagement.lang +++ b/htdocs/langs/ar_SA/knowledgemanagement.lang @@ -18,37 +18,37 @@ # # Module label 'ModuleKnowledgeManagementName' -ModuleKnowledgeManagementName = Knowledge Management System +ModuleKnowledgeManagementName = نظام إدارة المعرفة # Module description 'ModuleKnowledgeManagementDesc' -ModuleKnowledgeManagementDesc=Manage a Knowledge Management (KM) or Help-Desk base +ModuleKnowledgeManagementDesc=إدارة إدارة المعرفة (KM) أو قاعدة مكتب المساعدة # # Admin page # -KnowledgeManagementSetup = Knowledge Management System setup +KnowledgeManagementSetup = إعداد نظام إدارة المعرفة Settings = إعدادات -KnowledgeManagementSetupPage = Knowledge Management System setup page +KnowledgeManagementSetupPage = صفحة إعداد نظام إدارة المعرفة # # About page # About = حول -KnowledgeManagementAbout = About Knowledge Management -KnowledgeManagementAboutPage = Knowledge Management about page +KnowledgeManagementAbout = حول إدارة المعرفة +KnowledgeManagementAboutPage = إدارة المعرفة حول الصفحة -KnowledgeManagementArea = Knowledge Management -MenuKnowledgeRecord = Knowledge base -ListKnowledgeRecord = List of articles -NewKnowledgeRecord = New article -ValidateReply = Validate solution -KnowledgeRecords = Articles +KnowledgeManagementArea = إدارة المعرفة +MenuKnowledgeRecord = قاعدة المعرفة +ListKnowledgeRecord = قائمة المقالات +NewKnowledgeRecord = مقال جديد +ValidateReply = تحقق من صحة الحل +KnowledgeRecords = مقالات KnowledgeRecord = عنصر -KnowledgeRecordExtraFields = Extrafields for Article -GroupOfTicket=Group of tickets -YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) -SuggestedForTicketsInGroup=Suggested for tickets when group is +KnowledgeRecordExtraFields = Extrafields للمادة +GroupOfTicket=مجموعة التذاكر +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) +SuggestedForTicketsInGroup=اقترح للتذاكر عندما تكون المجموعة -SetObsolete=Set as obsolete -ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? -ConfirmReopenKM=Do you want to restore this article to status "Validated" ? +SetObsolete=تعيين كما عفا عليها الزمن +ConfirmCloseKM=هل تؤكد أن إغلاق هذا المقال قد عفا عليه الزمن؟ +ConfirmReopenKM=هل تريد استعادة هذه المقالة إلى الحالة "تم التحقق منها"؟ diff --git a/htdocs/langs/ar_SA/loan.lang b/htdocs/langs/ar_SA/loan.lang index 104e03f9ae2..c2caa6426d9 100644 --- a/htdocs/langs/ar_SA/loan.lang +++ b/htdocs/langs/ar_SA/loan.lang @@ -10,7 +10,7 @@ LoanCapital=عاصمة Insurance=تأمين Interest=اهتمام Nbterms=عدد من المصطلحات -Term=Term +Term=شرط LoanAccountancyCapitalCode=Accounting account capital LoanAccountancyInsuranceCode=Accounting account insurance LoanAccountancyInterestCode=Accounting account interest @@ -19,16 +19,16 @@ LoanDeleted=بنجاح قرض محذوفة ConfirmPayLoan=تأكيد صنف دفع هذا القرض LoanPaid=القرض المدفوع ListLoanAssociatedProject=List of loan associated with the project -AddLoan=Create loan -FinancialCommitment=Financial commitment +AddLoan=إنشاء قرض +FinancialCommitment=التزام مالي InterestAmount=اهتمام -CapitalRemain=Capital remain -TermPaidAllreadyPaid = This term is allready paid -CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started -CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule +CapitalRemain=يبقى رأس المال +TermPaidAllreadyPaid = هذا المصطلح مدفوع بالفعل +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started +CantModifyInterestIfScheduleIsUsed = لا يمكنك تعديل الفائدة إذا كنت تستخدم الجدول الزمني # Admin ConfigLoan=التكوين للقرض وحدة LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accounting account interest by default LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accounting account insurance by default -CreateCalcSchedule=Edit financial commitment +CreateCalcSchedule=تحرير الالتزام المالي diff --git a/htdocs/langs/ar_SA/main.lang b/htdocs/langs/ar_SA/main.lang index 274db74a867..5bf59f3f85c 100644 --- a/htdocs/langs/ar_SA/main.lang +++ b/htdocs/langs/ar_SA/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=rtl +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=DejaVuSans FONTSIZEFORPDF=10 SeparatorDecimal=. @@ -67,7 +73,7 @@ ErrorNoVATRateDefinedForSellerCountry=خطأ ، لم يتم تحديد معدل ErrorNoSocialContributionForSellerCountry=خطأ ، لم يتم تحديد نوع الضرائب الاجتماعية | المالية للبلد "%s". ErrorFailedToSaveFile=خطأ، فشل في حفظ الملف. ErrorCannotAddThisParentWarehouse=أنت تحاول إضافة مستودع رئيسي هو بالفعل تابع لمستودع موجود -FieldCannotBeNegative=Field "%s" cannot be negative +FieldCannotBeNegative=لا يمكن أن يكون الحقل "%s" سالبًا MaxNbOfRecordPerPage=عدد السجلات الاعلى في الصفحة الواحدة NotAuthorized=غير مصرح لك ان تفعل ذلك. SetDate=تحديد التاريخ @@ -88,7 +94,7 @@ FileWasNotUploaded=تم تحديد ملف للإرفاق ولكن لم يتم ت NbOfEntries=عدد الإدخالات GoToWikiHelpPage=قراءة التعليمات عبر الإنترنت (يلزم الاتصال بالإنترنت) GoToHelpPage=قراءة المساعدة -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=صفحة مساعدة مخصصة تتعلق بشاشتك الحالية HomePage=الصفحة الرئيسية RecordSaved=تم حفظ سجل RecordDeleted=سجل محذوف @@ -115,7 +121,7 @@ ReturnCodeLastAccessInError=إرجاع الكود لأحدث خطأ في طلب InformationLastAccessInError=معلومات عن خطأ طلب الوصول إلى قاعدة البيانات الأخيرة DolibarrHasDetectedError=Dolibarr اكتشف خطأ تقني YouCanSetOptionDolibarrMainProdToZero=يمكنك قراءة ملف السجل أو تعيين الخيار $ dolibarr_main_prod إلى "0" في (config file) للحصول على مزيد من المعلومات. -InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +InformationToHelpDiagnose=يمكن أن تكون هذه المعلومات مفيدة لأغراض التشخيص (يمكنك تعيين الخيار $ dolibarr_main_prod على "1" لإخفاء المعلومات الحساسة) MoreInformation=المزيد من المعلومات TechnicalInformation=المعلومات التقنية TechnicalID=ID الفني @@ -181,7 +187,7 @@ SaveAndNew=حفظ وجديد TestConnection=اختبار الاتصال ToClone=استنساخ ConfirmCloneAsk=هل أنت متأكد أنك تريد استنساخ الكائن %s ؟ -ConfirmClone=Choose the data you want to clone: +ConfirmClone=اختر البيانات التي تريد نسخها: NoCloneOptionsSpecified=لا توجد بيانات لاستنساخ محددة. Of=من Go=اذهب @@ -212,8 +218,8 @@ User=المستعمل Users=المستخدمين Group=مجموعة Groups=المجموعات -UserGroup=User group -UserGroups=User groups +UserGroup=مجموعة المستخدمين +UserGroups=مجموعات الاعضاء NoUserGroupDefined=لم يتم تحديد مجموعة مستخدمين Password=كلمة المرور PasswordRetype=أعد كتابة كلمة المرور @@ -244,12 +250,13 @@ Designation=الوصف DescriptionOfLine=وصف البند DateOfLine=تاريخ البند DurationOfLine=مدة البند +ParentLine=معرف خط الأصل Model=قالب المستند DefaultModel=قالب المستند الافتراضي Action=حدث About=حول Number=عدد -NumberByMonth=Total reports by month +NumberByMonth=إجمالي التقارير حسب الشهر AmountByMonth=المبلغ بالشهر Numero=عدد Limit=الحد @@ -344,8 +351,8 @@ KiloBytes=كيلو بايت MegaBytes=ميغابايت GigaBytes=غيغا بايت TeraBytes=تيرابايت -UserAuthor=Ceated by -UserModif=Updated by +UserAuthor=تم الإنشاء بواسطة +UserModif=تم التحديث بواسطة b=بايت Kb=كيلوبايت Mb=ميغابايت @@ -433,7 +440,7 @@ LT1IN=CGST LT2IN=SGST LT1GC=Additionnal cents VATRate=معدل الضريبة -RateOfTaxN=Rate of tax %s +RateOfTaxN=معدل الضريبة %s VATCode=كود معدل الضريبة VATNPR=معدل ضريبة NPR DefaultTaxRate=معدل الضريبة الافتراضي @@ -517,6 +524,7 @@ or=أو Other=آخر Others=آخرون OtherInformations=معلومات أخرى +Workflow=سير العمل Quantity=كمية Qty=الكمية ChangedBy=تغيير من قبل @@ -619,6 +627,7 @@ MonthVeryShort11=11 MonthVeryShort12=12 AttachedFiles=الملفات والمستندات المرفقة JoinMainDoc=ضم إلى المستند الرئيسي +JoinMainDocOrLastGenerated=أرسل المستند الرئيسي أو آخر مستند تم إنشاؤه إذا لم يتم العثور عليه DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +718,7 @@ FeatureDisabled=ميزة معطلة MoveBox=نقل البريمج Offered=معروض NotEnoughPermissions=ليس لديك إذن بهذا الإجراء +UserNotInHierachy=هذا الإجراء محجوز لمشرفي هذا المستخدم SessionName=اسم الجلسة Method=الطريقة Receive=استقبال @@ -733,7 +743,7 @@ MenuMembers=أعضاء MenuAgendaGoogle=أجندة غوغل MenuTaxesAndSpecialExpenses=الضرائب | مصاريف خاصة ThisLimitIsDefinedInSetup=حدود دوليبار (Menu home-setup-security): %s كيلوبايت ، حد PHP: %s كيلوبايت -ThisLimitIsDefinedInSetupAt=Dolibarr limit (Menu %s): %s Kb, PHP limit (Param %s): %s Kb +ThisLimitIsDefinedInSetupAt=حد Dolibarr (القائمة %s): %s كيلوبايت ، حد PHP (Param %s): %s كيلوبايت NoFileFound=لم يتم رفع مستند CurrentUserLanguage=اللغة الحالية CurrentTheme=الواجهة الحالية @@ -807,7 +817,7 @@ LinkToSupplierInvoice=ربط مع فاتورة المورد LinkToContract=ربط مع العقد LinkToIntervention=ربط مع التداخل LinkToTicket=ربط مع التذكرة -LinkToMo=Link to Mo +LinkToMo=رابط إلى Mo CreateDraft=إنشاء مسودة SetToDraft=العودة إلى المسودة ClickToEdit=انقر للتحرير @@ -851,7 +861,7 @@ XMoreLines=%s بند (بنود) مخفي ShowMoreLines=عرض المزيد | أقل من البنود PublicUrl=URL العام AddBox=إضافة مربع -SelectElementAndClick=Select an element and click on %s +SelectElementAndClick=حدد عنصرًا وانقر فوق %s PrintFile=طباعة الملف %s ShowTransaction=عرض الإدخال في الحساب المصرفي ShowIntervention=عرض التدخل @@ -862,8 +872,8 @@ Denied=مرفوض ListOf=قائمة %s ListOfTemplates=قائمة القوالب Gender=جنس -Genderman=Male -Genderwoman=Female +Genderman=ذكر +Genderwoman=أنثى Genderother=الآخر ViewList=عرض القائمة ViewGantt=عرض Gantt @@ -909,7 +919,7 @@ ViewFlatList=عرض قائمة مسطحة ViewAccountList=عرض دفتر الأستاذ ViewSubAccountList=عرض دفتر الأستاذ الفرعي RemoveString=Remove string '%s' -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=قد تكون بعض اللغات المعروضة مترجمة جزئيًا فقط أو قد تحتوي على أخطاء. الرجاء المساعدة في تصحيح لغتك بالتسجيل في https://transifex.com/projects/p/dolibarr/ لإضافة تحسيناتك. DirectDownloadLink=رابط التحميل العام PublicDownloadLinkDesc=فقط مطلوب الرابط لتنزيل الملف DirectDownloadInternalLink=رابط التحميل الخاص @@ -1078,7 +1088,7 @@ ValidFrom=صالح من ValidUntil=صالح حتى NoRecordedUsers=لايوجد مستخدمين ToClose=لغلق -ToRefuse=To refuse +ToRefuse=رفض ToProcess=لعملية ToApprove=للموافقة GlobalOpenedElemView=نظرة شاملة @@ -1133,34 +1143,47 @@ UpdateForAllLines=تحديث لجميع البنود OnHold=في الانتظار Civility=Civility AffectTag=Affect Tag -CreateExternalUser=Create external user +CreateExternalUser=إنشاء مستخدم خارجي ConfirmAffectTag=Bulk Tag Affect ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)? CategTypeNotFound=لا يوجد ملصق لنوع السجل CopiedToClipboard=تم النسخ الى الحافظة InformationOnLinkToContract=هذا المبلغ هو مجموع بنود العقد . دون مراعاة قيمة الزمن -ConfirmCancel=Are you sure you want to cancel +ConfirmCancel=هل أنت متأكد أنك تريد إلغاء EmailMsgID=Email MsgID -SetToEnabled=Set to enabled -SetToDisabled=Set to disabled -ConfirmMassEnabling=mass enabling confirmation -ConfirmMassEnablingQuestion=Are you sure you want to enable the %s selected record(s)? -ConfirmMassDisabling=mass disabling confirmation -ConfirmMassDisablingQuestion=Are you sure you want to disable the %s selected record(s)? -RecordsEnabled=%s record(s) enabled -RecordsDisabled=%s record(s) disabled -RecordEnabled=Record enabled -RecordDisabled=Record disabled -Forthcoming=Forthcoming -Currently=Currently -ConfirmMassLeaveApprovalQuestion=Are you sure you want to approve the %s selected record(s)? -ConfirmMassLeaveApproval=Mass leave approval confirmation -RecordAproved=Record approved -RecordsApproved=%s Record(s) approved -Properties=Properties -hasBeenValidated=%s has been validated +SetToEnabled=تعيين على تمكين +SetToDisabled=تعيين إلى معطل +ConfirmMassEnabling=تأكيد التمكين الشامل +ConfirmMassEnablingQuestion=هل أنت متأكد من أنك تريد تمكين السجل (السجلات) المحدد %s؟ +ConfirmMassDisabling=تأكيد التعطيل الشامل +ConfirmMassDisablingQuestion=هل أنت متأكد من أنك تريد تعطيل السجل (السجلات) المحدد %s؟ +RecordsEnabled=تم تمكين سجل (سجلات) %s +RecordsDisabled=سجل (سجلات) %s معطل +RecordEnabled=تم تمكين التسجيل +RecordDisabled=سجل معطل +Forthcoming=قادم، صريح، يظهر +Currently=حالياً +ConfirmMassLeaveApprovalQuestion=هل أنت متأكد من أنك تريد الموافقة على السجل (السجلات) المحددة %s؟ +ConfirmMassLeaveApproval=تأكيد الموافقة على الإجازة الجماعية +RecordAproved=تمت الموافقة على السجل +RecordsApproved=%s تمت الموافقة على السجلات +Properties=الخصائص +hasBeenValidated=تم التحقق من صحة %s ClientTZ=المنطقة الزمنية للعميل (المستخدم) -NotClosedYet=Not yet closed -ClearSignature=Reset signature -CanceledHidden=Canceled hidden -CanceledShown=Canceled shown +NotClosedYet=لم تغلق بعد +ClearSignature=إعادة تعيين التوقيع +CanceledHidden=إلغاء المخفية +CanceledShown=أظهرت ملغاة +Terminate=تعطيل +Terminated=تم إنهاؤه +AddLineOnPosition=أضف سطرًا في الموضع (في النهاية إذا كان فارغًا) +ConfirmAllocateCommercial=تعيين تأكيد مندوب المبيعات +ConfirmAllocateCommercialQuestion=هل أنت متأكد من أنك تريد تعيين السجل (السجلات) المحددة %s؟ +CommercialsAffected=مندوبي المبيعات يتأثرون +CommercialAffected=مندوب المبيعات يتأثر +YourMessage=رسالتك +YourMessageHasBeenReceived=وقد وردت الرسالة. سنقوم بالرد أو الاتصال بك في أقرب وقت ممكن. +UrlToCheck=عنوان Url المراد التحقق منه +Automation=أتمتة +CreatedByEmailCollector=Created by Email collector +CreatedByPublicPortal=Created from Public portal diff --git a/htdocs/langs/ar_SA/members.lang b/htdocs/langs/ar_SA/members.lang index 0470a41fd96..f8764aafc0f 100644 --- a/htdocs/langs/ar_SA/members.lang +++ b/htdocs/langs/ar_SA/members.lang @@ -6,8 +6,8 @@ Member=عضو Members=أعضاء ShowMember=وتظهر بطاقة عضو UserNotLinkedToMember=المستخدم لا ترتبط عضو -ThirdpartyNotLinkedToMember=Third party not linked to a member -MembersTickets=Membership address sheet +ThirdpartyNotLinkedToMember=طرف ثالث غير مرتبط بعضو +MembersTickets=ورقة عنوان العضوية FundationMembers=أعضاء المؤسسة ListOfValidatedPublicMembers=قائمة الأعضاء العامة المصادق ErrorThisMemberIsNotPublic=ليست عضوا في هذا العام @@ -15,27 +15,28 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=عضو آخر (الاسم : ٪ ق< ErrorUserPermissionAllowsToLinksToItselfOnly=لأسباب أمنية ، يجب أن تمنح أذونات لتحرير جميع المستخدمين لتكون قادرة على ربط عضو لمستخدم هذا ليس لك. SetLinkToUser=وصلة إلى مستخدم Dolibarr SetLinkToThirdParty=وصلة إلى طرف ثالث Dolibarr -MembersCards=Generation of cards for members +MembersCards=توليد بطاقات للاعضاء MembersList=قائمة الأعضاء MembersListToValid=قائمة مشاريع أعضاء (ينبغي التأكد من صحة) MembersListValid=قائمة أعضاء صالحة -MembersListUpToDate=List of valid members with up-to-date contribution -MembersListNotUpToDate=List of valid members with out-of-date contribution -MembersListExcluded=List of excluded members -MembersListResiliated=List of terminated members +MembersListUpToDate=قائمة الأعضاء الصالحة مع مساهمات محدثة +MembersListNotUpToDate=قائمة الأعضاء الصالحين مع مساهمة منتهية الصلاحية +MembersListExcluded=قائمة الأعضاء المستبعدين +MembersListResiliated=قائمة الأعضاء المنتهية MembersListQualified=قائمة الأعضاء المؤهلين MenuMembersToValidate=أعضاء مشروع MenuMembersValidated=صادق أعضاء -MenuMembersExcluded=Excluded members -MenuMembersResiliated=Terminated members -MembersWithSubscriptionToReceive=Members with contribution to receive -MembersWithSubscriptionToReceiveShort=Contributions to receive -DateSubscription=Date of membership -DateEndSubscription=End date of membership -EndSubscription=End of membership -SubscriptionId=Contribution ID -WithoutSubscription=Without contribution -MemberId=عضو المعرف +MenuMembersExcluded=الأعضاء المستبعدين +MenuMembersResiliated=الأعضاء المنتهية +MembersWithSubscriptionToReceive=الأعضاء مع المساهمة لتلقي +MembersWithSubscriptionToReceiveShort=المساهمات لتلقي +DateSubscription=تاريخ العضوية +DateEndSubscription=تاريخ انتهاء العضوية +EndSubscription=انتهاء العضوية +SubscriptionId=معرف المساهمة +WithoutSubscription=بدون مساهمة +MemberId=معرف العضو +MemberRef=عضو المرجع NewMember=عضو جديد MemberType=عضو نوع MemberTypeId=عضو نوع معرف @@ -43,110 +44,110 @@ MemberTypeLabel=عضو نوع العلامة MembersTypes=أعضاء أنواع MemberStatusDraft=مشروع (يجب التحقق من صحة) MemberStatusDraftShort=مسودة -MemberStatusActive=Validated (waiting contribution) +MemberStatusActive=التحقق من صحتها (في انتظار المساهمة) MemberStatusActiveShort=التحقق من صحة -MemberStatusActiveLate=Contribution expired +MemberStatusActiveLate=انتهت المساهمة MemberStatusActiveLateShort=انتهى MemberStatusPaid=الاكتتاب حتى الآن MemberStatusPaidShort=حتى الآن -MemberStatusExcluded=Excluded member -MemberStatusExcludedShort=Excluded -MemberStatusResiliated=Terminated member -MemberStatusResiliatedShort=Terminated +MemberStatusExcluded=عضو مستبعد +MemberStatusExcludedShort=مستبعد +MemberStatusResiliated=عضو منتهي +MemberStatusResiliatedShort=تم إنهاؤه MembersStatusToValid=أعضاء مشروع -MembersStatusExcluded=Excluded members -MembersStatusResiliated=Terminated members -MemberStatusNoSubscription=Validated (no contribution required) +MembersStatusExcluded=الأعضاء المستبعدين +MembersStatusResiliated=الأعضاء المنتهية +MemberStatusNoSubscription=مصدق عليه (لا توجد مساهمة مطلوبة) MemberStatusNoSubscriptionShort=التحقق من صحة -SubscriptionNotNeeded=No contribution required +SubscriptionNotNeeded=لا توجد مساهمة مطلوبة NewCotisation=مساهمة جديدة PaymentSubscription=دفع مساهمة جديدة SubscriptionEndDate=تاريخ انتهاء الاكتتاب MembersTypeSetup=أعضاء نوع الإعداد -MemberTypeModified=Member type modified -DeleteAMemberType=Delete a member type -ConfirmDeleteMemberType=Are you sure you want to delete this member type? -MemberTypeDeleted=Member type deleted -MemberTypeCanNotBeDeleted=Member type can not be deleted +MemberTypeModified=تم تعديل نوع العضو +DeleteAMemberType=احذف نوع العضو +ConfirmDeleteMemberType=هل أنت متأكد أنك تريد حذف هذا النوع من الأعضاء؟ +MemberTypeDeleted=تم حذف نوع العضو +MemberTypeCanNotBeDeleted=لا يمكن حذف نوع العضو NewSubscription=مساهمة جديدة NewSubscriptionDesc=هذا النموذج يسمح لك لتسجيل الاشتراك الخاص بك كعضو جديد من الأساس. إذا كنت ترغب في تجديد الاشتراك (إذا كان بالفعل عضوا)، يرجى الاتصال مؤسسة المجلس بدلا من %s البريد الإلكتروني. -Subscription=Contribution -Subscriptions=Contributions +Subscription=إسهام +Subscriptions=مساهمات SubscriptionLate=متأخر -SubscriptionNotReceived=Contribution never received -ListOfSubscriptions=List of contributions -SendCardByMail=Send card by email +SubscriptionNotReceived=المساهمة لم يتم استلامها +ListOfSubscriptions=قائمة المساهمات +SendCardByMail=أرسل البطاقة عبر البريد الإلكتروني AddMember=إنشاء عضو NoTypeDefinedGoToSetup=لا يجوز لأي عضو في أنواع محددة. الذهاب إلى الإعداد -- أنواع الأعضاء NewMemberType=عضو جديد من نوع -WelcomeEMail=Welcome email -SubscriptionRequired=Contribution required +WelcomeEMail=ترحيب البريد الإلكتروني +SubscriptionRequired=المساهمة المطلوبة DeleteType=حذف VoteAllowed=يسمح التصويت -Physical=Individual -Moral=Corporation -MorAndPhy=Corporation and Individual -Reenable=Re-Enable -ExcludeMember=Exclude a member -Exclude=Exclude -ConfirmExcludeMember=Are you sure you want to exclude this member ? -ResiliateMember=Terminate a member -ConfirmResiliateMember=Are you sure you want to terminate this member? +Physical=الفرد +Moral=مؤسَّسة +MorAndPhy=شركة وفرد +Reenable=إعادة التمكين +ExcludeMember=استبعاد عضو +Exclude=استبعاد +ConfirmExcludeMember=هل أنت متأكد أنك تريد استبعاد هذا العضو؟ +ResiliateMember=إنهاء عضو +ConfirmResiliateMember=هل أنت متأكد أنك تريد إنهاء هذا العضو؟ DeleteMember=حذف عضو -ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his contributions)? +ConfirmDeleteMember=هل أنت متأكد أنك تريد حذف هذا العضو (حذف العضو سيؤدي إلى حذف جميع مساهماته)؟ DeleteSubscription=الغاء الاشتراك -ConfirmDeleteSubscription=Are you sure you want to delete this contribution? +ConfirmDeleteSubscription=هل أنت متأكد أنك تريد حذف هذه المساهمة؟ Filehtpasswd=htpasswd الملف ValidateMember=صحة عضوا -ConfirmValidateMember=Are you sure you want to validate this member? -FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database. +ConfirmValidateMember=هل أنت متأكد أنك تريد التحقق من صحة هذا العضو؟ +FollowingLinksArePublic=الروابط التالية هي صفحات مفتوحة غير محمية بأي إذن Dolibarr. وهي ليست صفحات منسقة ، وتقدم كمثال لإظهار كيفية سرد أعضاء قاعدة البيانات. PublicMemberList=عضو في لائحة عامة -BlankSubscriptionForm=Public self-registration form -BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided. -EnablePublicSubscriptionForm=Enable the public website with self-subscription form -ForceMemberType=Force the member type -ExportDataset_member_1=Members and contributions +BlankSubscriptionForm=استمارة التسجيل الذاتي العامة +BlankSubscriptionFormDesc=يمكن أن يوفر لك Dolibarr عنوان URL / موقع ويب عام للسماح للزوار الخارجيين بطلب الاشتراك في المؤسسة. إذا تم تمكين وحدة دفع عبر الإنترنت ، فقد يتم أيضًا تقديم نموذج دفع تلقائيًا. +EnablePublicSubscriptionForm=تمكين الموقع العام من خلال نموذج الاشتراك الذاتي +ForceMemberType=فرض نوع العضو +ExportDataset_member_1=الأعضاء والمساهمات ImportDataset_member_1=أعضاء -LastMembersModified=Latest %s modified members -LastSubscriptionsModified=Latest %s modified contributions +LastMembersModified=آخر %s الأعضاء المعدلة +LastSubscriptionsModified=أحدث مساهمات %s المعدلة String=سلسلة Text=النص Int=Int DateAndTime=التاريخ والوقت PublicMemberCard=عضو بطاقة العامة -SubscriptionNotRecorded=Contribution not recorded -AddSubscription=Create contribution -ShowSubscription=Show contribution +SubscriptionNotRecorded=المساهمة غير مسجلة +AddSubscription=إنشاء مساهمة +ShowSubscription=عرض المساهمة # Label of email templates -SendingAnEMailToMember=Sending information email to member -SendingEmailOnAutoSubscription=Sending email on auto registration -SendingEmailOnMemberValidation=Sending email on new member validation -SendingEmailOnNewSubscription=Sending email on new contribution -SendingReminderForExpiredSubscription=Sending reminder for expired contributions -SendingEmailOnCancelation=Sending email on cancelation -SendingReminderActionComm=Sending reminder for agenda event +SendingAnEMailToMember=إرسال معلومات البريد الإلكتروني إلى العضو +SendingEmailOnAutoSubscription=إرسال بريد إلكتروني عند التسجيل التلقائي +SendingEmailOnMemberValidation=إرسال بريد إلكتروني عند التحقق من العضو الجديد +SendingEmailOnNewSubscription=إرسال بريد إلكتروني على مساهمة جديدة +SendingReminderForExpiredSubscription=إرسال تذكير للمساهمات منتهية الصلاحية +SendingEmailOnCancelation=إرسال بريد إلكتروني عند الإلغاء +SendingReminderActionComm=إرسال تذكير لحدث جدول الأعمال # Topic of email templates -YourMembershipRequestWasReceived=Your membership was received. -YourMembershipWasValidated=Your membership was validated -YourSubscriptionWasRecorded=Your new contribution was recorded -SubscriptionReminderEmail=contribution reminder -YourMembershipWasCanceled=Your membership was canceled +YourMembershipRequestWasReceived=تم استلام عضويتك. +YourMembershipWasValidated=تم التحقق من صحة عضويتك +YourSubscriptionWasRecorded=تم تسجيل مساهمتك الجديدة +SubscriptionReminderEmail=تذكير بالمساهمة +YourMembershipWasCanceled=تم إلغاء عضويتك CardContent=مضمون البطاقة الخاصة بك عضوا # Text of email templates -ThisIsContentOfYourMembershipRequestWasReceived=We want to let you know that your membership request was received.

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

+ThisIsContentOfYourMembershipRequestWasReceived=نريد إخبارك بأنه قد تم استلام طلب العضوية الخاص بك.

+ThisIsContentOfYourMembershipWasValidated=نود إعلامك بأنه تم التحقق من عضويتك بالمعلومات التالية:

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

-ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

-ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

-DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest -DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest -DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member auto-registration -DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation -DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new contribution recording -DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when contribution is about to expire -DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation -DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion -DescADHERENT_MAIL_FROM=Sender Email for automatic emails +ThisIsContentOfSubscriptionReminderEmail=نريد إخبارك بأن اشتراكك على وشك الانتهاء أو انتهى بالفعل (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). نأمل أن تقوم بتجديده.

+ThisIsContentOfYourCard=هذا ملخص للمعلومات التي لدينا عنك. يرجى الاتصال بنا إذا كان أي شيء غير صحيح.

+DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=موضوع إشعار البريد الإلكتروني المستلم في حالة التسجيل التلقائي للضيف +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=محتوى إشعار البريد الإلكتروني المستلم في حالة التسجيل التلقائي للضيف +DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=قالب بريد إلكتروني لاستخدامه لإرسال بريد إلكتروني إلى عضو في التسجيل التلقائي للعضو +DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=قالب بريد إلكتروني لاستخدامه لإرسال بريد إلكتروني إلى عضو عند التحقق من صحة العضو +DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=نموذج بريد إلكتروني لاستخدامه لإرسال بريد إلكتروني إلى عضو في تسجيل مساهمة جديدة +DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=نموذج بريد إلكتروني لاستخدامه لإرسال تذكير بالبريد الإلكتروني عندما توشك المساهمة على الانتهاء +DescADHERENT_EMAIL_TEMPLATE_CANCELATION=قالب بريد إلكتروني لاستخدامه لإرسال بريد إلكتروني إلى عضو عند إلغاء العضو +DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=قالب بريد إلكتروني لاستخدامه لإرسال بريد إلكتروني إلى عضو عند استبعاد الأعضاء +DescADHERENT_MAIL_FROM=البريد الإلكتروني المرسل لرسائل البريد الإلكتروني التلقائية DescADHERENT_ETIQUETTE_TYPE=علامات الشكل DescADHERENT_ETIQUETTE_TEXT=النص المطبوع على أوراق عنوان الأعضاء DescADHERENT_CARD_TYPE=شكل بطاقات صفحة @@ -156,65 +157,67 @@ DescADHERENT_CARD_TEXT_RIGHT=النص المطبوع على بطاقات الأ DescADHERENT_CARD_FOOTER_TEXT=نص مطبوع على أسفل بطاقات الأعضاء ShowTypeCard=وتبين من نوع '٪ ق' HTPasswordExport=الملف htpassword جيل -NoThirdPartyAssociatedToMember=No third party associated with this member -MembersAndSubscriptions=Members and Contributions +NoThirdPartyAssociatedToMember=لا يوجد طرف ثالث مرتبط بهذا العضو +MembersAndSubscriptions=الأعضاء والمساهمات MoreActions=تكميلية العمل على تسجيل -MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution -MoreActionBankDirect=Create a direct entry on bank account -MoreActionBankViaInvoice=Create an invoice, and a payment on bank account +MoreActionsOnSubscription=يُقترح إجراء تكميلي بشكل افتراضي عند تسجيل مساهمة ، ويتم إجراؤه تلقائيًا عند الدفع عبر الإنترنت للمساهمة +MoreActionBankDirect=إنشاء قيد مباشر في الحساب المصرفي +MoreActionBankViaInvoice=قم بإنشاء فاتورة ودفع على حساب بنكي MoreActionInvoiceOnly=إنشاء فاتورة مع دفع أي مبلغ -LinkToGeneratedPages=Generation of business cards or address sheets +LinkToGeneratedPages=توليد بطاقات العمل أو أوراق العناوين LinkToGeneratedPagesDesc=هذه الشاشة تسمح لك لإنشاء ملفات الشعبي مع بطاقات العمل لجميع أعضاء أو عضو معين. DocForAllMembersCards=إنشاء بطاقات العمل لجميع أعضاء (تنسيق الإعداد للإخراج في الواقع : %s) DocForOneMemberCards=إنشاء بطاقات العمل لعضو معين (تنسيق الإعداد للإخراج في الواقع : %s) DocForLabels=أوراق عنوان انتج (تنسيق الإعداد للإخراج فعلا : %s) -SubscriptionPayment=Contribution payment -LastSubscriptionDate=Date of latest contribution payment -LastSubscriptionAmount=Amount of latest contribution -LastMemberType=Last Member type +SubscriptionPayment=دفع الاشتراكات +LastSubscriptionDate=تاريخ آخر دفعة مساهمة +LastSubscriptionAmount=مقدار أحدث مساهمة +LastMemberType=نوع العضو الأخير MembersStatisticsByCountries=أعضاء إحصاءات حسب البلد MembersStatisticsByState=أعضاء إحصاءات الولاية / المقاطعة MembersStatisticsByTown=أعضاء إحصاءات بلدة MembersStatisticsByRegion=إحصائيات الأعضاء حسب المنطقة -NbOfMembers=Total number of members -NbOfActiveMembers=Total number of current active members +NbOfMembers=إجمالي عدد الأعضاء +NbOfActiveMembers=العدد الإجمالي للأعضاء النشطين الحاليين NoValidatedMemberYet=العثور على أي أعضاء التحقق من صحة -MembersByCountryDesc=This screen shows you the statistics of members by countries. Graphs and charts depend on the availability of the Google online graph service as well as on the availability of a working internet connection. -MembersByStateDesc=This screen show you statistics of members by state/provinces/canton. -MembersByTownDesc=This screen show you statistics of members by town. -MembersByNature=This screen show you statistics of members by nature. -MembersByRegion=This screen show you statistics of members by region. +MembersByCountryDesc=تظهر لك هذه الشاشة إحصائيات الأعضاء حسب الدول. تعتمد الرسوم البيانية والمخططات على مدى توفر خدمة الرسم البياني عبر الإنترنت من Google بالإضافة إلى توفر اتصال إنترنت فعال. +MembersByStateDesc=تظهر لك هذه الشاشة إحصائيات الأعضاء حسب الولاية / المقاطعات / الكانتون. +MembersByTownDesc=تظهر لك هذه الشاشة إحصائيات الأعضاء حسب المدينة. +MembersByNature=تظهر لك هذه الشاشة إحصائيات الأعضاء حسب الطبيعة. +MembersByRegion=تظهر لك هذه الشاشة إحصائيات الأعضاء حسب المنطقة. MembersStatisticsDesc=اختيار الإحصاءات التي ترغب في قراءتها ... MenuMembersStats=إحصائيات -LastMemberDate=Latest membership date -LatestSubscriptionDate=Latest contribution date -MemberNature=Nature of the member -MembersNature=Nature of the members -Public=Information is public +LastMemberDate=آخر تاريخ للعضوية +LatestSubscriptionDate=تاريخ آخر مساهمة +MemberNature=طبيعة العضو +MembersNature=طبيعة الأعضاء +Public=المعلومات عامة NewMemberbyWeb=وأضاف عضو جديد. تنتظر الموافقة NewMemberForm=الأعضاء الجدد في شكل -SubscriptionsStatistics=Contributions statistics -NbOfSubscriptions=Number of contributions -AmountOfSubscriptions=Amount collected from contributions +SubscriptionsStatistics=إحصاءات المساهمات +NbOfSubscriptions=عدد المساهمات +AmountOfSubscriptions=المبلغ المحصل من المساهمات TurnoverOrBudget=دوران (لشركة) أو الميزانية (على أساس) -DefaultAmount=Default amount of contribution +DefaultAmount=المبلغ الافتراضي للمساهمة CanEditAmount=Visitor can choose/edit amount of its contribution MEMBER_NEWFORM_PAYONLINE=القفز على صفحة الدفع عبر الانترنت المتكاملة -ByProperties=By nature -MembersStatisticsByProperties=Members statistics by nature -VATToUseForSubscriptions=VAT rate to use for contributionss -NoVatOnSubscription=No VAT for contributions -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s -NameOrCompany=Name or company -SubscriptionRecorded=Contribution recorded -NoEmailSentToMember=No email sent to member -EmailSentToMember=Email sent to member at %s -SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired contributions -SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') -MembershipPaid=Membership paid for current period (until %s) -YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email -XMembersClosed=%s member(s) closed -XExternalUserCreated=%s external user(s) created -ForceMemberNature=Force member nature (Individual or Corporation) -CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. -CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +ByProperties=بالطبيعة +MembersStatisticsByProperties=إحصائيات الأعضاء حسب الطبيعة +VATToUseForSubscriptions=معدل ضريبة القيمة المضافة لاستخدامه في المساهمات +NoVatOnSubscription=لا ضريبة القيمة المضافة للمساهمات +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=المنتج المستخدم لبند المساهمة في الفاتورة: %s +NameOrCompany=الإسم أو الشركة +SubscriptionRecorded=تم تسجيل المساهمة +NoEmailSentToMember=لم يتم إرسال بريد إلكتروني للعضو +EmailSentToMember=تم إرسال البريد الإلكتروني إلى العضو على %s +SendReminderForExpiredSubscriptionTitle=إرسال تذكير عبر البريد الإلكتروني للمساهمات منتهية الصلاحية +SendReminderForExpiredSubscription=أرسل تذكيرًا عبر البريد الإلكتروني إلى الأعضاء عندما توشك المساهمة على الانتهاء (المعلمة هي عدد الأيام قبل نهاية العضوية لإرسال التذكير. يمكن أن تكون قائمة بالأيام مفصولة بفاصلة منقوطة ، على سبيل المثال '10 ؛ 5 ؛ 0 ؛ -5 ") +MembershipPaid=العضوية مدفوعة للفترة الحالية (حتى %s) +YouMayFindYourInvoiceInThisEmail=قد تجد فاتورتك مرفقة بهذا البريد الإلكتروني +XMembersClosed=%s من الأعضاء مغلقين +XExternalUserCreated=تم إنشاء مستخدم (مستخدمين) خارجيين %s +ForceMemberNature=طبيعة عضو القوة (فرد أو شركة) +CreateDolibarrLoginDesc=يسمح إنشاء تسجيل دخول مستخدم للأعضاء بالاتصال بالتطبيق. اعتمادًا على التراخيص الممنوحة ، سيكونون قادرين ، على سبيل المثال ، على الرجوع إلى ملفهم أو تعديله بأنفسهم. +CreateDolibarrThirdPartyDesc=الطرف الثالث هو الكيان القانوني الذي سيتم استخدامه في الفاتورة إذا قررت إنشاء فاتورة لكل مساهمة. ستتمكن من إنشائه لاحقًا أثناء عملية تسجيل المساهمة. +MemberFirstname=الاسم الأول للعضو +MemberLastname=اسم العائلة للعضو diff --git a/htdocs/langs/ar_SA/modulebuilder.lang b/htdocs/langs/ar_SA/modulebuilder.lang index 6c8ca4c75b9..8458e8a5153 100644 --- a/htdocs/langs/ar_SA/modulebuilder.lang +++ b/htdocs/langs/ar_SA/modulebuilder.lang @@ -1,147 +1,156 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=This tool must be used only by experienced users or developers. It provides utilities to build or edit your own module. Documentation for alternative manual development is here. -EnterNameOfModuleDesc=Enter name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s -ModuleBuilderDesc3=Generated/editable modules found: %s -ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory -NewModule=New module -NewObjectInModulebuilder=New object -ModuleKey=Module key -ObjectKey=Object key -ModuleInitialized=Module initialized -FilesForObjectInitialized=Files for new object '%s' initialized -FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) -ModuleBuilderDescdescription=Enter here all general information that describe your module. -ModuleBuilderDescspecifications=You can enter here a detailed description of the specifications of your module that is not already structured into other tabs. So you have within easy reach all the rules to develop. Also this text content will be included into the generated documentation (see last tab). You can use Markdown format, but it is recommended to use Asciidoc format (comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). -ModuleBuilderDescobjects=Define here the objects you want to manage with your module. A CRUD DAO class, SQL files, page to list record of objects, to create/edit/view a record and an API will be generated. -ModuleBuilderDescmenus=This tab is dedicated to define menu entries provided by your module. -ModuleBuilderDescpermissions=This tab is dedicated to define the new permissions you want to provide with your module. -ModuleBuilderDesctriggers=This is the view of triggers provided by your module. To include code executed when a triggered business event is launched, just edit this file. -ModuleBuilderDeschooks=This tab is dedicated to hooks. +ModuleBuilderDesc=يجب استخدام هذه الأداة فقط من قبل المستخدمين أو المطورين ذوي الخبرة. يوفر أدوات مساعدة لبناء أو تعديل الوحدة الخاصة بك. وثائق التطوير اليدوي البديل هنا . +EnterNameOfModuleDesc=أدخل اسم الوحدة / التطبيق لإنشائه بدون مسافات. استخدم الأحرف الكبيرة لفصل الكلمات (على سبيل المثال: MyModule ، EcommerceForShop ، SyncWithMySystem ...) +EnterNameOfObjectDesc=أدخل اسم الكائن المراد إنشاؤه بدون مسافات. استخدم الأحرف الكبيرة لفصل الكلمات (على سبيل المثال: MyObject ، الطالب ، المعلم ...). سيتم إنشاء ملف فئة CRUD ، ولكن أيضًا ملف API ، وصفحات لسرد / إضافة / تحرير / حذف كائن وملفات SQL. +EnterNameOfDictionaryDesc=أدخل اسم القاموس لإنشائه بدون مسافات. استخدم الأحرف الكبيرة لفصل الكلمات (على سبيل المثال: MyDico ...). سيتم إنشاء ملف الفصل ، وكذلك ملف SQL. +ModuleBuilderDesc2=المسار الذي يتم فيه إنشاء / تحرير الوحدات (الدليل الأول للوحدات الخارجية المحددة في %s): %s +ModuleBuilderDesc3=تم العثور على الوحدات النمطية / القابلة للتحرير: %s +ModuleBuilderDesc4=تم اكتشاف وحدة على أنها "قابلة للتحرير" عندما يكون الملف %s موجودًا في جذر دليل الوحدة +NewModule=وحدة جديدة +NewObjectInModulebuilder=كائن جديد +NewDictionary=قاموس جديد +ModuleKey=مفتاح الوحدة +ObjectKey=مفتاح الكائن +DicKey=مفتاح القاموس +ModuleInitialized=الوحدة النمطية مهيأة +FilesForObjectInitialized=تمت تهيئة ملفات الكائن الجديد '%s' +FilesForObjectUpdated=تم تحديث ملفات الكائن '%s' (ملفات .sql وملف .class.php) +ModuleBuilderDescdescription=أدخل هنا جميع المعلومات العامة التي تصف الوحدة الخاصة بك. +ModuleBuilderDescspecifications=يمكنك هنا إدخال وصف تفصيلي لمواصفات وحدتك التي لم يتم تنظيمها بالفعل في علامات تبويب أخرى. لذلك يمكنك الوصول بسهولة إلى جميع القواعد التي يجب تطويرها. سيتم أيضًا تضمين محتوى النص هذا في الوثائق التي تم إنشاؤها (انظر علامة التبويب الأخيرة). يمكنك استخدام تنسيق Markdown ، لكن يوصى باستخدام تنسيق Asciidoc (مقارنة بين .md و .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). +ModuleBuilderDescobjects=حدد هنا العناصر التي تريد إدارتها باستخدام الوحدة النمطية الخاصة بك. فئة CRUD DAO ، ملفات SQL ، صفحة لسرد سجل الكائنات ، لإنشاء / تحرير / عرض سجل وسيتم إنشاء API. +ModuleBuilderDescmenus=علامة التبويب هذه مخصصة لتعريف إدخالات القائمة التي توفرها الوحدة الخاصة بك. +ModuleBuilderDescpermissions=علامة التبويب هذه مخصصة لتحديد الأذونات الجديدة التي تريد توفيرها لوحدتك. +ModuleBuilderDesctriggers=هذه هي وجهة نظر المشغلات التي توفرها الوحدة الخاصة بك. لتضمين التعليمات البرمجية التي تم تنفيذها عند بدء حدث عمل تم تشغيله ، فقط قم بتحرير هذا الملف. +ModuleBuilderDeschooks=علامة التبويب هذه مخصصة للخطافات. ModuleBuilderDescwidgets=علامة التبويب هذه مخصصة لبناء\\إدارة البريمجات -ModuleBuilderDescbuildpackage=You can generate here a "ready to distribute" package file (a normalized .zip file) of your module and a "ready to distribute" documentation file. Just click on button to build the package or documentation file. -EnterNameOfModuleToDeleteDesc=You can delete your module. WARNING: All coding files of module (generated or created manually) AND structured data and documentation will be deleted! -EnterNameOfObjectToDeleteDesc=You can delete an object. WARNING: All coding files (generated or created manually) related to object will be deleted! -DangerZone=Danger zone -BuildPackage=Build package -BuildPackageDesc=You can generate a zip package of your application so your are ready to distribute it on any Dolibarr. You can also distribute it or sell it on marketplace like DoliStore.com. -BuildDocumentation=Build documentation -ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here -ModuleIsLive=This module has been activated. Any change may break a current live feature. -DescriptionLong=Long description -EditorName=Name of editor -EditorUrl=URL of editor -DescriptorFile=Descriptor file of module -ClassFile=File for PHP DAO CRUD class -ApiClassFile=File for PHP API class -PageForList=PHP page for list of record -PageForCreateEditView=PHP page to create/edit/view a record -PageForAgendaTab=PHP page for event tab -PageForDocumentTab=PHP page for document tab -PageForNoteTab=PHP page for note tab -PageForContactTab=PHP page for contact tab -PathToModulePackage=Path to zip of module/application package -PathToModuleDocumentation=Path to file of module/application documentation (%s) -SpaceOrSpecialCharAreNotAllowed=Spaces or special characters are not allowed. -FileNotYetGenerated=File not yet generated -RegenerateClassAndSql=Force update of .class and .sql files -RegenerateMissingFiles=Generate missing files -SpecificationFile=File of documentation -LanguageFile=File for language -ObjectProperties=Object Properties -ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. -NotNull=Not NULL -NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0). -SearchAll=Used for 'search all' -DatabaseIndex=Database index -FileAlreadyExists=File %s already exists -TriggersFile=File for triggers code -HooksFile=File for hooks code -ArrayOfKeyValues=Array of key-val -ArrayOfKeyValuesDesc=Array of keys and values if field is a combo list with fixed values +ModuleBuilderDescbuildpackage=يمكنك هنا إنشاء ملف حزمة "جاهز للتوزيع" (ملف مضغوط. مضغوط) للوحدة النمطية الخاصة بك وملف توثيق "جاهز للتوزيع". ما عليك سوى النقر فوق الزر لإنشاء الحزمة أو ملف التوثيق. +EnterNameOfModuleToDeleteDesc=يمكنك حذف الوحدة الخاصة بك. تحذير: سيتم حذف جميع ملفات الترميز الخاصة بالوحدة النمطية (التي تم إنشاؤها أو إنشاؤها يدويًا) والبيانات المنظمة والوثائق! +EnterNameOfObjectToDeleteDesc=يمكنك حذف كائن. تحذير: سيتم حذف جميع ملفات الترميز (التي تم إنشاؤها أو إنشاؤها يدويًا) المتعلقة بالكائن! +DangerZone=منطقة الخطر +BuildPackage=بناء الحزمة +BuildPackageDesc=يمكنك إنشاء حزمة مضغوطة لتطبيقك حتى تكون جاهزًا لتوزيعها على أي Dolibarr. يمكنك أيضًا توزيعه أو بيعه في السوق مثل DoliStore.com . +BuildDocumentation=بناء الوثائق +ModuleIsNotActive=لم يتم تفعيل هذه الوحدة بعد. انتقل إلى %s لتفعيله أو انقر هنا +ModuleIsLive=تم تفعيل هذه الوحدة. قد يؤدي أي تغيير إلى كسر ميزة حية حالية. +DescriptionLong=وصف طويل +EditorName=اسم المحرر +EditorUrl=عنوان URL للمحرر +DescriptorFile=ملف واصف الوحدة +ClassFile=ملف لفئة PHP DAO CRUD +ApiClassFile=ملف لفئة PHP API +PageForList=صفحة PHP لقائمة التسجيلات +PageForCreateEditView=صفحة PHP لإنشاء / تحرير / عرض سجل +PageForAgendaTab=صفحة PHP لعلامة تبويب الحدث +PageForDocumentTab=صفحة PHP لعلامة تبويب المستند +PageForNoteTab=صفحة PHP لعلامة تبويب الملاحظات +PageForContactTab=صفحة PHP لعلامة تبويب الاتصال +PathToModulePackage=المسار إلى الرمز البريدي لحزمة الوحدة / التطبيق +PathToModuleDocumentation=المسار إلى ملف وثائق الوحدة / التطبيق (%s) +SpaceOrSpecialCharAreNotAllowed=غير مسموح بالمسافات أو الأحرف الخاصة. +FileNotYetGenerated=لم يتم إنشاء الملف بعد +RegenerateClassAndSql=فرض تحديث ملفات .class و. sql +RegenerateMissingFiles=توليد الملفات المفقودة +SpecificationFile=ملف التوثيق +LanguageFile=ملف للغة +ObjectProperties=خصائص الموضوع +ConfirmDeleteProperty=هل تريد بالتأكيد حذف الخاصية %s ؟ سيؤدي هذا إلى تغيير التعليمات البرمجية في فئة PHP ولكن أيضًا إزالة العمود من تعريف الجدول للكائن. +NotNull=غير فارغة +NotNullDesc=1 = تعيين قاعدة البيانات إلى NOT NULL ، 0 = السماح بالقيم الخالية ، -1 = السماح بالقيم الفارغة عن طريق فرض القيمة على NULL إذا كانت فارغة ('' أو 0) +SearchAll=تستخدم لبحث "الكل" +DatabaseIndex=فهرس قاعدة البيانات +FileAlreadyExists=الملف %s موجود بالفعل +TriggersFile=ملف لرمز المشغلات +HooksFile=ملف لرمز هوكس +ArrayOfKeyValues=صفيف مفتاح فال +ArrayOfKeyValuesDesc=صفيف من المفاتيح والقيم إذا كان الحقل عبارة عن قائمة تحرير وسرد بقيم ثابتة WidgetFile=ملف بريمج -CSSFile=CSS file -JSFile=Javascript file -ReadmeFile=Readme file -ChangeLog=ChangeLog file -TestClassFile=File for PHP Unit Test class -SqlFile=Sql file -PageForLib=File for the common PHP library -PageForObjLib=File for the PHP library dedicated to object -SqlFileExtraFields=Sql file for complementary attributes -SqlFileKey=Sql file for keys -SqlFileKeyExtraFields=Sql file for keys of complementary attributes -AnObjectAlreadyExistWithThisNameAndDiffCase=An object already exists with this name and a different case -UseAsciiDocFormat=You can use Markdown format, but it is recommended to use Asciidoc format (omparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) -IsAMeasure=Is a measure -DirScanned=Directory scanned -NoTrigger=No trigger +CSSFile=ملف CSS +JSFile=ملف جافا سكريبت +ReadmeFile=الملف التمهيدي +ChangeLog=ملف سجل التغيير +TestClassFile=ملف لفئة اختبار وحدة PHP +SqlFile=ملف SQL +PageForLib=ملف لمكتبة PHP الشائعة +PageForObjLib=ملف لمكتبة PHP مخصص للكائن +SqlFileExtraFields=ملف SQL للسمات التكميلية +SqlFileKey=ملف SQL للمفاتيح +SqlFileKeyExtraFields=ملف SQL لمفاتيح السمات التكميلية +AnObjectAlreadyExistWithThisNameAndDiffCase=كائن موجود بالفعل بهذا الاسم وحالة مختلفة +UseAsciiDocFormat=يمكنك استخدام تنسيق Markdown ، لكن يوصى باستخدام تنسيق Asciidoc (omparison بين .md و .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +IsAMeasure=هو مقياس +DirScanned=تم مسح الدليل +NoTrigger=لا يوجد مشغل NoWidget=لا يوجد بريمج -GoToApiExplorer=API explorer -ListOfMenusEntries=List of menu entries -ListOfDictionariesEntries=List of dictionaries entries -ListOfPermissionsDefined=List of defined permissions -SeeExamples=See examples here -EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) -VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).

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

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

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

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the description only if not empty -DisplayOnPdf=Display on PDF -IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0) -SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0) -SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. -LanguageDefDesc=Enter in this files, all the key and the translation for each language file. -MenusDefDesc=Define here the menus provided by your module -DictionariesDefDesc=Define here the dictionaries provided by your module -PermissionsDefDesc=Define here the new permissions provided by your module -MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), menus are also visible into the menu editor available to administrator users on %s. -DictionariesDefDescTooltip=The dictionaries provided by your module/application are defined into the array $this->dictionaries into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), dictionaries are also visible into the setup area to administrator users on %s. -PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array $this->rights into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s. -HooksDefDesc=Define in the module_parts['hooks'] property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on 'initHooks(' in core code).
Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on 'executeHooks' in core code). -TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events triggered by other modules). -SeeIDsInUse=See IDs in use in your installation -SeeReservedIDsRangeHere=See range of reserved IDs -ToolkitForDevelopers=Toolkit for Dolibarr developers -TryToUseTheModuleBuilder=If you have knowledge of SQL and PHP, you may use the native module builder wizard.
Enable the module %s and use the wizard by clicking the on the top right menu.
Warning: This is an advanced developer feature, do not experiment on your production site! -SeeTopRightMenu=See on the top right menu -AddLanguageFile=Add language file -YouCanUseTranslationKey=You can use here a key that is the translation key found into language file (see tab "Languages") -DropTableIfEmpty=(Destroy table if empty) -TableDoesNotExists=The table %s does not exists -TableDropped=Table %s deleted -InitStructureFromExistingTable=Build the structure array string of an existing table -UseAboutPage=Disable the about page -UseDocFolder=Disable the documentation folder -UseSpecificReadme=Use a specific ReadMe -ContentOfREADMECustomized=Note: The content of the README.md file has been replaced with the specific value defined into setup of ModuleBuilder. -RealPathOfModule=Real path of module -ContentCantBeEmpty=Content of file can't be empty +GoToApiExplorer=مستكشف API +ListOfMenusEntries=قائمة إدخالات القائمة +ListOfDictionariesEntries=قائمة إدخالات القواميس +ListOfPermissionsDefined=قائمة الأذونات المحددة +SeeExamples=انظر الأمثلة هنا +EnabledDesc=شرط تنشيط هذا الحقل (أمثلة: 1 أو $ conf-> global-> MYMODULE_MYOPTION) +VisibleDesc=هل الحقل مرئي؟ (أمثلة: 0 = غير مرئي أبدًا ، 1 = مرئي في القائمة وإنشاء / تحديث / عرض النماذج ، 2 = مرئي في القائمة فقط ، 3 = مرئي في نموذج الإنشاء / التحديث / العرض فقط (وليس القائمة) ، 4 = مرئي في القائمة و تحديث / عرض النموذج فقط (وليس الإنشاء) ، 5 = مرئي في نموذج عرض نهاية القائمة فقط (ليس إنشاء ، وليس تحديث).

يمكن أن يكون تعبيرًا ، على سبيل المثال:
preg_match ('/ public /'، $ _SERVER ['PHP_SELF'])؟ 0: 1
($ 1-> تعريف الحقوق-> عطلة +DisplayOnPdfDesc=اعرض هذا الحقل على مستندات PDF متوافقة ، يمكنك إدارة الموقع باستخدام حقل "الموضع".
حاليًا ، نماذج PDF المتوافقة المعروفة هي: eratosthene (الأمر) ، espadon (السفينة) ، الإسفنج (الفواتير) ، السماوي (propal / الاقتباس) ، cornas (طلب المورد)

a0e78439047c06daz0 a0e78439047c06dz0 a0e78439019bz0 = display
2 = display only if not empty

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the الوصف فقط إذا لم يكن فارغًا +DisplayOnPdf=عرض على PDF +IsAMeasureDesc=هل يمكن تجميع قيمة الحقل للحصول على الإجمالي في القائمة؟ (أمثلة: 1 أو 0) +SearchAllDesc=هل يستخدم الحقل لإجراء بحث من أداة البحث السريع؟ (أمثلة: 1 أو 0) +SpecDefDesc=أدخل هنا جميع الوثائق التي تريد توفيرها مع الوحدة النمطية الخاصة بك والتي لم يتم تحديدها بالفعل بواسطة علامات تبويب أخرى. يمكنك استخدام .md أو أفضل منه ، الصيغة الغنية .asciidoc. +LanguageDefDesc=أدخل في هذه الملفات ، كل المفتاح والترجمة لكل ملف لغة. +MenusDefDesc=حدد هنا القوائم التي توفرها الوحدة الخاصة بك +DictionariesDefDesc=حدد هنا القواميس التي توفرها الوحدة الخاصة بك +PermissionsDefDesc=حدد هنا الأذونات الجديدة التي توفرها الوحدة الخاصة بك +MenusDefDescTooltip=يتم تحديد القوائم التي توفرها الوحدة النمطية / التطبيق الخاص بك في المصفوفة $ this-> menus في ملف واصف الوحدة النمطية. يمكنك تحرير هذا الملف يدويًا أو استخدام المحرر المضمن.

ملاحظة: بمجرد تحديدها (وإعادة تنشيط الوحدة النمطية) ، تظهر القوائم أيضًا في محرر القائمة المتاح لمستخدمي المسؤولين في %s. +DictionariesDefDescTooltip=يتم تحديد القواميس التي توفرها الوحدة النمطية / التطبيق الخاص بك في المصفوفة $ this-> القواميس في ملف واصف الوحدة. يمكنك تحرير هذا الملف يدويًا أو استخدام المحرر المضمن.

ملاحظة: بمجرد تحديدها (وإعادة تنشيط الوحدة النمطية) ، تظهر القواميس أيضًا في منطقة الإعداد لمستخدمي المسؤولين على %s. +PermissionsDefDescTooltip=يتم تحديد الأذونات التي توفرها الوحدة النمطية / التطبيق الخاص بك في المصفوفة $ this-> rights في ملف واصف الوحدة النمطية. يمكنك تحرير هذا الملف يدويًا أو استخدام المحرر المضمن.

ملاحظة: بمجرد تحديدها (وإعادة تنشيط الوحدة النمطية) ، تظهر الأذونات في إعداد الأذونات الافتراضية %s. +HooksDefDesc=حدد في module_parts ['hooks'] الخاصية ، في واصف الوحدة النمطية ، سياق الخطافات التي تريد إدارتها (يمكن العثور على قائمة السياقات من خلال البحث في " initHooks (a09a4fc039. ملف الخطاف لإضافة رمز وظائف hooked (يمكن العثور على الوظائف القابلة للتوصيل من خلال البحث على ' executeHooks ' في الكود الأساسي). +TriggerDefDesc=حدد في ملف المشغل الكود الذي تريد تنفيذه عند تنفيذ حدث عمل خارج الوحدة النمطية الخاصة بك (الأحداث التي يتم تشغيلها بواسطة وحدات نمطية أخرى). +SeeIDsInUse=انظر المعرفات المستخدمة في التثبيت الخاص بك +SeeReservedIDsRangeHere=انظر مجموعة من المعرفات المحجوزة +ToolkitForDevelopers=مجموعة أدوات لمطوري Dolibarr +TryToUseTheModuleBuilder=إذا كانت لديك معرفة بـ SQL و PHP ، فيمكنك استخدام معالج منشئ الوحدات الأصلية.
قم بتمكين الوحدة النمطية %s واستخدم المعالج بالنقر فوق في أعلى القائمة اليمنى.
تحذير: هذه ميزة مطور متقدمة ، قم بإجراء تجربة وليس على موقع الإنتاج الخاص بك! +SeeTopRightMenu=شاهد في القائمة اليمنى العلوية +AddLanguageFile=أضف ملف اللغة +YouCanUseTranslationKey=يمكنك هنا استخدام مفتاح يمثل مفتاح الترجمة الموجود في ملف اللغة (انظر علامة التبويب "اللغات") +DropTableIfEmpty=(تدمير الجدول إذا كان فارغًا) +TableDoesNotExists=الجدول %s غير موجود +TableDropped=تم حذف الجدول %s +InitStructureFromExistingTable=بناء سلسلة مصفوفة الهيكل لجدول موجود +UseAboutPage=لا تقم بإنشاء صفحة حول +UseDocFolder=قم بتعطيل مجلد الوثائق +UseSpecificReadme=استخدم ReadMe محدد +ContentOfREADMECustomized=ملاحظة: تم استبدال محتوى ملف README.md بالقيمة المحددة المحددة في إعداد ModuleBuilder. +RealPathOfModule=المسار الحقيقي للوحدة +ContentCantBeEmpty=لا يمكن أن يكون محتوى الملف فارغًا WidgetDesc=هنا يمكنك توليد وتعديل البريمجات التي ستضمن مع وحدتك البرمجية -CSSDesc=You can generate and edit here a file with personalized CSS embedded with your module. -JSDesc=You can generate and edit here a file with personalized Javascript embedded with your module. -CLIDesc=You can generate here some command line scripts you want to provide with your module. -CLIFile=CLI File -NoCLIFile=No CLI files -UseSpecificEditorName = Use a specific editor name -UseSpecificEditorURL = Use a specific editor URL -UseSpecificFamily = Use a specific family -UseSpecificAuthor = Use a specific author -UseSpecificVersion = Use a specific initial version -IncludeRefGeneration=The reference of object must be generated automatically -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference -IncludeDocGeneration=I want to generate some documents from the object -IncludeDocGenerationHelp=If you check this, some code will be generated to add a "Generate document" box on the record. -ShowOnCombobox=Show value into combobox -KeyForTooltip=Key for tooltip -CSSClass=CSS for edit/create form -CSSViewClass=CSS for read form -CSSListClass=CSS for list -NotEditable=Not editable -ForeignKey=Foreign key -TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example) -AsciiToHtmlConverter=Ascii to HTML converter -AsciiToPdfConverter=Ascii to PDF converter -TableNotEmptyDropCanceled=Table not empty. Drop has been canceled. -ModuleBuilderNotAllowed=The module builder is available but not allowed to your user. -ImportExportProfiles=Import and export profiles -ValidateModBuilderDesc=Put 1 if this field need to be validated with $this->validateField() or 0 if validation required +CSSDesc=يمكنك إنشاء ملف وتحريره هنا باستخدام CSS مخصص مضمّن في الوحدة النمطية الخاصة بك. +JSDesc=يمكنك إنشاء ملف وتحريره هنا باستخدام Javascript مخصص مضمّن في الوحدة النمطية الخاصة بك. +CLIDesc=يمكنك هنا إنشاء بعض البرامج النصية لسطر الأوامر التي تريد تزويدها بالوحدة النمطية الخاصة بك. +CLIFile=ملف CLI +NoCLIFile=لا توجد ملفات CLI +UseSpecificEditorName = استخدم اسم محرر محدد +UseSpecificEditorURL = استخدم URL محرر محدد +UseSpecificFamily = استخدم عائلة معينة +UseSpecificAuthor = استخدم مؤلفًا محددًا +UseSpecificVersion = استخدم نسخة أولية محددة +IncludeRefGeneration=يجب إنشاء مرجع الكائن تلقائيًا بواسطة قواعد الترقيم المخصصة +IncludeRefGenerationHelp=حدد هذا إذا كنت تريد تضمين رمز لإدارة إنشاء المرجع تلقائيًا باستخدام قواعد الترقيم المخصصة +IncludeDocGeneration=أريد إنشاء بعض المستندات من قوالب للكائن +IncludeDocGenerationHelp=إذا حددت هذا ، فسيتم إنشاء بعض التعليمات البرمجية لإضافة مربع "إنشاء مستند" في السجل. +ShowOnCombobox=إظهار القيمة في مربع التحرير والسرد +KeyForTooltip=مفتاح تلميح الأداة +CSSClass=CSS لتحرير / إنشاء النموذج +CSSViewClass=CSS لقراءة النموذج +CSSListClass=CSS للحصول على قائمة +NotEditable=غير قابل للتحرير +ForeignKey=مفتاح غريب +TypeOfFieldsHelp=نوع الحقول:
varchar (99)، double (24،8)، real، text، html، datetime، timestamp، عدد صحيح ، عدد صحيح: ClassName: relativepath / to / classfile.class.php [: 1 [: filter]] يعني
"1" أننا نضيف زر + بعد التحرير والسرد لإنشاء السجل
"filter" هو شرط sql ، على سبيل المثال: "الحالة = 1 AND fk_user = __ USER_ID__ والكيان IN (__SHARED_ENTITIES__)" +AsciiToHtmlConverter=Ascii لتحويل HTML +AsciiToPdfConverter=Ascii لتحويل PDF +TableNotEmptyDropCanceled=الجدول ليس فارغًا. تم إلغاء الإسقاط. +ModuleBuilderNotAllowed=منشئ الوحدات متاح ولكن غير مسموح به للمستخدم الخاص بك. +ImportExportProfiles=ملفات تعريف الاستيراد والتصدير +ValidateModBuilderDesc=عيّن هذا إلى 1 إذا كنت تريد الحصول على الأسلوب $ this-> validateField () الخاص بالكائن الذي يتم استدعاؤه للتحقق من صحة محتوى الحقل أثناء الإدراج أو التحديث. قم بتعيين 0 إذا لم يكن هناك حاجة للتحقق من الصحة. +WarningDatabaseIsNotUpdated=تحذير: لا يتم تحديث قاعدة البيانات تلقائيًا ، يجب تدمير الجداول وتعطيل الوحدة النمطية لإعادة إنشاء الجداول +LinkToParentMenu=قائمة الوالدين (fk_xxxxmenu) +ListOfTabsEntries=قائمة إدخالات علامة التبويب +TabsDefDesc=حدد هنا علامات التبويب التي توفرها الوحدة الخاصة بك +TabsDefDescTooltip=يتم تحديد علامات التبويب التي توفرها الوحدة النمطية / التطبيق الخاص بك في المصفوفة $ this-> علامات التبويب في ملف واصف الوحدة النمطية. يمكنك تحرير هذا الملف يدويًا أو استخدام المحرر المضمن. +BadValueForType=قيمة غير صالحة للنوع %s diff --git a/htdocs/langs/ar_SA/oauth.lang b/htdocs/langs/ar_SA/oauth.lang index 36daa49e715..45c04f8cbf0 100644 --- a/htdocs/langs/ar_SA/oauth.lang +++ b/htdocs/langs/ar_SA/oauth.lang @@ -1,32 +1,36 @@ # Dolibarr language file - Source file is en_US - oauth -ConfigOAuth=OAuth Configuration -OAuthServices=OAuth Services -ManualTokenGeneration=Manual token generation -TokenManager=Token Manager -IsTokenGenerated=Is token generated ? +ConfigOAuth=تهيئة OAuth +OAuthServices=خدمات OAuth +ManualTokenGeneration=توليد الرمز اليدوي +TokenManager=مدير الرموز +IsTokenGenerated=هل تم إنشاء الرمز المميز؟ NoAccessToken=لا رمز وصول حفظها في قاعدة البيانات المحلية HasAccessToken=تم إنشاء رمز مميز وحفظها في قاعدة البيانات المحلية -NewTokenStored=Token received and saved -ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider +NewTokenStored=تم استلام الرمز وحفظه +ToCheckDeleteTokenOnProvider=انقر هنا للتحقق / حذف التفويض المحفوظ بواسطة موفر %s OAuth TokenDeleted=حذف رمز -RequestAccess=انقر هنا لطلب / تجديد الوصول والحصول على رمز جديد لإنقاذ +RequestAccess=انقر هنا لطلب / تجديد الوصول والحصول على رمز جديد DeleteAccess=انقر هنا لحذف رمز -UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token -SeePreviousTab=See previous tab -OAuthIDSecret=OAuth ID and Secret +UseTheFollowingUrlAsRedirectURI=استخدم عنوان URL التالي باعتباره Redirect URI عند إنشاء بيانات الاعتماد الخاصة بك مع موفر OAuth الخاص بك: +ListOfSupportedOauthProviders=أضف موفري رمز OAuth2 المميز. بعد ذلك ، انتقل إلى صفحة مشرف موفر OAuth لإنشاء / الحصول على معرّف وسر OAuth وحفظهما هنا. بمجرد الانتهاء من ذلك ، قم بتشغيل علامة التبويب الأخرى لإنشاء الرمز المميز الخاص بك. +OAuthSetupForLogin=صفحة لإدارة (إنشاء / حذف) رموز OAuth المميزة +SeePreviousTab=انظر علامة التبويب السابقة +OAuthProvider=مزود OAuth +OAuthIDSecret=معرف وسر OAuth TOKEN_REFRESH=رمزي تحميل الحاضر -TOKEN_EXPIRED=Token expired +TOKEN_EXPIRED=انتهت صلاحية الرمز TOKEN_EXPIRE_AT=رمز تنتهي في TOKEN_DELETE=حذف رمز المحفوظة -OAUTH_GOOGLE_NAME=OAuth Google service -OAUTH_GOOGLE_ID=OAuth Google Id +OAUTH_GOOGLE_NAME=خدمة OAuth Google +OAUTH_GOOGLE_ID=معرف Google OAuth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials -OAUTH_GITHUB_NAME=OAuth GitHub service -OAUTH_GITHUB_ID=OAuth GitHub Id +OAUTH_GITHUB_NAME=خدمة OAuth GitHub +OAUTH_GITHUB_ID=معرف OAuth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials -OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test +OAUTH_URL_FOR_CREDENTIAL=انتقل إلى هذه الصفحة لإنشاء أو الحصول على معرف OAuth والسري +OAUTH_STRIPE_TEST_NAME=اختبار شريط OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=معرف OAuth +OAUTH_SECRET=سر OAuth +OAuthProviderAdded=تمت إضافة موفر OAuth +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=إدخال OAuth لهذا الموفر وهذا التصنيف موجود بالفعل diff --git a/htdocs/langs/ar_SA/other.lang b/htdocs/langs/ar_SA/other.lang index 4ac3dc3cb13..2813110fa69 100644 --- a/htdocs/langs/ar_SA/other.lang +++ b/htdocs/langs/ar_SA/other.lang @@ -1,52 +1,52 @@ # Dolibarr language file - Source file is en_US - other SecurityCode=رمز الحماية -NumberingShort=N° +NumberingShort=رقم Tools=أدوات TMenuTools=أدوات -ToolsDesc=All tools not included in other menu entries are grouped here.
All the tools can be accessed via the left menu. +ToolsDesc=جميع الأدوات غير المدرجة في إدخالات القائمة الأخرى مجمعة هنا.
يمكن الوصول إلى جميع الأدوات عبر القائمة اليسرى. Birthday=عيد ميلاد BirthdayAlertOn=عيد ميلاد النشطة في حالة تأهب BirthdayAlertOff=عيد الميلاد فى حالة تأهب الخاملة -TransKey=Translation of the key TransKey -MonthOfInvoice=Month (number 1-12) of invoice date -TextMonthOfInvoice=Month (text) of invoice date -PreviousMonthOfInvoice=Previous month (number 1-12) of invoice date -TextPreviousMonthOfInvoice=Previous month (text) of invoice date -NextMonthOfInvoice=Following month (number 1-12) of invoice date -TextNextMonthOfInvoice=Following month (text) of invoice date -PreviousMonth=Previous month -CurrentMonth=Current month -ZipFileGeneratedInto=Zip file generated into %s. -DocFileGeneratedInto=Doc file generated into %s. -JumpToLogin=Disconnected. Go to login page... -MessageForm=Message on online payment form -MessageOK=Message on the return page for a validated payment -MessageKO=Message on the return page for a canceled payment -ContentOfDirectoryIsNotEmpty=Content of this directory is not empty. -DeleteAlsoContentRecursively=Check to delete all content recursively -PoweredBy=Powered by -YearOfInvoice=Year of invoice date -PreviousYearOfInvoice=Previous year of invoice date -NextYearOfInvoice=Following year of invoice date -DateNextInvoiceBeforeGen=Date of next invoice (before generation) -DateNextInvoiceAfterGen=Date of next invoice (after generation) -GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mode. The mode 'Lines' was automatically selected instead. -OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. -AtLeastOneMeasureIsRequired=At least 1 field for measure is required -AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required -LatestBlogPosts=Latest Blog Posts -notiftouser=To users -notiftofixedemail=To fixed mail -notiftouserandtofixedemail=To user and fixed mail -Notify_ORDER_VALIDATE=Sales order validated -Notify_ORDER_SENTBYMAIL=Sales order sent by mail -Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email -Notify_ORDER_SUPPLIER_VALIDATE=Purchase order recorded -Notify_ORDER_SUPPLIER_APPROVE=Purchase order approved -Notify_ORDER_SUPPLIER_REFUSE=Purchase order refused +TransKey=ترجمة المفتاح TransKey +MonthOfInvoice=شهر (رقم 1-12) من تاريخ الفاتورة +TextMonthOfInvoice=شهر (نص) من تاريخ الفاتورة +PreviousMonthOfInvoice=الشهر السابق (رقم 1-12) من تاريخ الفاتورة +TextPreviousMonthOfInvoice=الشهر السابق (نص) من تاريخ الفاتورة +NextMonthOfInvoice=الشهر التالي (رقم 1-12) من تاريخ الفاتورة +TextNextMonthOfInvoice=الشهر التالي (نص) من تاريخ الفاتورة +PreviousMonth=الشهر الماضى +CurrentMonth=الشهر الحالي +ZipFileGeneratedInto=تم إنشاء ملف مضغوط في %s . +DocFileGeneratedInto=تم إنشاء ملف doc في %s . +JumpToLogin=انقطع الاتصال. انتقل إلى صفحة تسجيل الدخول ... +MessageForm=رسالة في نموذج الدفع عبر الإنترنت +MessageOK=رسالة على صفحة العودة لعملية دفع تم التحقق من صحتها +MessageKO=رسالة على صفحة الإرجاع بخصوص الدفعة الملغاة +ContentOfDirectoryIsNotEmpty=محتوى هذا الدليل ليس فارغًا. +DeleteAlsoContentRecursively=تحقق لحذف كل المحتوى بشكل متكرر +PoweredBy=مشغل بواسطة +YearOfInvoice=سنة تاريخ الفاتورة +PreviousYearOfInvoice=السنة السابقة لتاريخ الفاتورة +NextYearOfInvoice=السنة التالية لتاريخ الفاتورة +DateNextInvoiceBeforeGen=تاريخ الفاتورة التالية (قبل التوليد) +DateNextInvoiceAfterGen=تاريخ الفاتورة التالية (بعد التوليد) +GraphInBarsAreLimitedToNMeasures=قطع العنب محدودة بمقاييس %s في وضع "أشرطة". تم تحديد الوضع "Lines" تلقائيًا بدلاً من ذلك. +OnlyOneFieldForXAxisIsPossible=حقل واحد فقط ممكن حاليًا كمحور س. تم تحديد الحقل الأول المحدد فقط. +AtLeastOneMeasureIsRequired=مطلوب حقل واحد على الأقل للقياس +AtLeastOneXAxisIsRequired=مطلوب حقل واحد على الأقل للمحور السيني +LatestBlogPosts=أحدث مشاركات المدونة +notiftouser=للمستخدمين +notiftofixedemail=إلى البريد الثابت +notiftouserandtofixedemail=للمستخدم والبريد الثابت +Notify_ORDER_VALIDATE=تم التحقق من صحة أمر المبيعات +Notify_ORDER_SENTBYMAIL=تم إرسال أمر المبيعات بالبريد +Notify_ORDER_SUPPLIER_SENTBYMAIL=تم إرسال طلب الشراء عن طريق البريد الإلكتروني +Notify_ORDER_SUPPLIER_VALIDATE=تم تسجيل أمر الشراء +Notify_ORDER_SUPPLIER_APPROVE=تمت الموافقة على أمر الشراء +Notify_ORDER_SUPPLIER_REFUSE=تم رفض أمر الشراء Notify_PROPAL_VALIDATE=التحقق من صحة اقتراح العملاء -Notify_PROPAL_CLOSE_SIGNED=Customer proposal closed signed -Notify_PROPAL_CLOSE_REFUSED=Customer proposal closed refused +Notify_PROPAL_CLOSE_SIGNED=تم توقيع اقتراح العميل +Notify_PROPAL_CLOSE_REFUSED=تم رفض اقتراح العميل Notify_PROPAL_SENTBYMAIL=اقتراح التجارية المرسلة عن طريق البريد Notify_WITHDRAW_TRANSMIT=انتقال انسحاب Notify_WITHDRAW_CREDIT=انسحاب الائتمان @@ -55,85 +55,85 @@ Notify_COMPANY_CREATE=طرف ثالث إنشاء Notify_COMPANY_SENTBYMAIL=الرسائل المرسلة من بطاقة طرف ثالث Notify_BILL_VALIDATE=فاتورة مصادق Notify_BILL_UNVALIDATE=فاتورة العميل unvalidated -Notify_BILL_PAYED=Customer invoice paid +Notify_BILL_PAYED=فاتورة العميل مدفوعة Notify_BILL_CANCEL=فاتورة الزبون إلغاء Notify_BILL_SENTBYMAIL=فاتورة الزبون إرسالها عن طريق البريد -Notify_BILL_SUPPLIER_VALIDATE=Vendor invoice validated -Notify_BILL_SUPPLIER_PAYED=Vendor invoice paid -Notify_BILL_SUPPLIER_SENTBYMAIL=Vendor invoice sent by mail -Notify_BILL_SUPPLIER_CANCELED=Vendor invoice cancelled +Notify_BILL_SUPPLIER_VALIDATE=التحقق من صحة فاتورة البائع +Notify_BILL_SUPPLIER_PAYED=دفع فاتورة البائع +Notify_BILL_SUPPLIER_SENTBYMAIL=فاتورة البائع المرسلة بالبريد +Notify_BILL_SUPPLIER_CANCELED=تم إلغاء فاتورة البائع Notify_CONTRACT_VALIDATE=التحقق من صحة العقد Notify_FICHINTER_VALIDATE=التحقق من التدخل -Notify_FICHINTER_ADD_CONTACT=Added contact to Intervention +Notify_FICHINTER_ADD_CONTACT=تمت إضافة جهة اتصال إلى التدخل Notify_FICHINTER_SENTBYMAIL=تدخل ترسل عن طريق البريد Notify_SHIPPING_VALIDATE=التحقق من صحة الشحن Notify_SHIPPING_SENTBYMAIL=الشحن ترسل عن طريق البريد Notify_MEMBER_VALIDATE=عضو مصدق Notify_MEMBER_MODIFY=تعديل الأعضاء Notify_MEMBER_SUBSCRIPTION=عضو المكتتب -Notify_MEMBER_RESILIATE=Member terminated +Notify_MEMBER_RESILIATE=تم إنهاء العضو Notify_MEMBER_DELETE=عضو حذف Notify_PROJECT_CREATE=إنشاء مشروع Notify_TASK_CREATE=مهمة إنشاء Notify_TASK_MODIFY=تعديل مهمة Notify_TASK_DELETE=حذف المهمة -Notify_EXPENSE_REPORT_VALIDATE=Expense report validated (approval required) -Notify_EXPENSE_REPORT_APPROVE=Expense report approved -Notify_HOLIDAY_VALIDATE=Leave request validated (approval required) -Notify_HOLIDAY_APPROVE=Leave request approved -Notify_ACTION_CREATE=Added action to Agenda +Notify_EXPENSE_REPORT_VALIDATE=تم التحقق من صحة تقرير المصاريف (الموافقة مطلوبة) +Notify_EXPENSE_REPORT_APPROVE=تمت الموافقة على تقرير المصاريف +Notify_HOLIDAY_VALIDATE=تم التحقق من صحة طلب الإجازة (الموافقة مطلوبة) +Notify_HOLIDAY_APPROVE=تمت الموافقة على طلب الإجازة +Notify_ACTION_CREATE=تمت إضافة الإجراء إلى جدول الأعمال SeeModuleSetup=انظر إعداد وحدة٪ الصورة NbOfAttachedFiles=عدد الملفات المرفقة / وثائق TotalSizeOfAttachedFiles=اجمالى حجم الملفات المرفقة / وثائق MaxSize=الحجم الأقصى AttachANewFile=إرفاق ملف جديد / وثيقة LinkedObject=ربط وجوه -NbOfActiveNotifications=Number of notifications (no. of recipient emails) -PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe lines are separated by a carriage return.\n\n__USER_SIGNATURE__ -PredefinedMailTestHtml=__(Hello)__
This is a test mail sent to __EMAIL__ (the word test must be in bold).
The lines are separated by a carriage return.

__USER_SIGNATURE__ -PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to remind you that the invoice __REF__ seems to have not been paid. A copy of the invoice is attached as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendProposal=__(Hello)__\n\nPlease find commercial proposal __REF__ attached \n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nPlease find price request __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendOrder=__(Hello)__\n\nPlease find order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nPlease find our order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n -PredefinedMailContentGeneric=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ -PredefinedMailContentSendActionComm=Event reminder "__EVENT_LABEL__" on __EVENT_DATE__ at __EVENT_TIME__

This is an automatic message, please do not reply. -DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available. -ChooseYourDemoProfil=Choose the demo profile that best suits your needs... -ChooseYourDemoProfilMore=...or build your own profile
(manual module selection) +NbOfActiveNotifications=عدد الإخطارات (عدد رسائل البريد الإلكتروني للمستلم) +PredefinedMailTest=__(مرحبًا)__\nهذا بريد اختباري تم إرساله إلى __EMAIL__.\nيتم فصل السطور بواسطة حرف إرجاع.\n\n__USER_SIGNATURE__ +PredefinedMailTestHtml=__ (مرحبًا) __
هذا اختبار بريد مرسل إلى __EMAIL__ (يجب أن يكون اختبار الكلمة بالخط العريض).
يتم فصل السطور بواسطة حرف إرجاع.

__USER_SIGNATURE__ +PredefinedMailContentContract=__(مرحبًا)__\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoice=__(مرحبًا)__\n\nمن فضلك تجد الفاتورة __REF__ مرفقة\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(مرحبًا)__\n\nنود أن نذكرك أنه يبدو أن الفاتورة __REF__ لم يتم دفعها. تم إرفاق نسخة من الفاتورة كتذكير.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendProposal=__(مرحبًا)__\n\nالرجاء العثور على الاقتراح التجاري __REF__ مرفقًا\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierProposal=__(مرحبًا)__\n\nيرجى الاطلاع على طلب السعر __REF__ مرفقًا\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendOrder=__(مرحبًا)__\n\nيرجى العثور على الطلب __REF__ مرفقًا\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__(مرحبًا)__\n\nيرجى العثور على طلبنا __REF__ مرفقًا\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__(مرحبًا)__\n\nمن فضلك تجد الفاتورة __REF__ مرفقة\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendShipping=__(مرحبًا)__\n\nيرجى العثور على الشحن __REF__ مرفقًا\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendFichInter=__(مرحبًا)__\n\nيرجى العثور على تدخل __REF__ مرفق\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentLink=يمكنك النقر فوق الارتباط أدناه لإجراء الدفع الخاص بك إذا لم يكن قد تم بالفعل.\n\n%s\n\n +PredefinedMailContentGeneric=__(مرحبًا)__\n\n\n__(بإخلاص)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendActionComm=تذكير الحدث "__EVENT_LABEL__" في __EVENT_DATE__ في __EVENT_TIME__

هذه رسالة تلقائية ، من فضلك لا ترد. +DemoDesc=Dolibarr هو ERP / CRM مدمج يدعم العديد من وحدات الأعمال. العرض التوضيحي الذي يعرض جميع الوحدات لا معنى له لأن هذا السيناريو لا يحدث أبدًا (تتوفر عدة مئات). لذلك ، تتوفر عدة ملفات تعريف تجريبية. +ChooseYourDemoProfil=اختر الملف الشخصي التجريبي الذي يناسب احتياجاتك ... +ChooseYourDemoProfilMore=... أو قم ببناء ملف التعريف الخاص بك
(اختيار وحدة يدوية) DemoFundation=أعضاء في إدارة مؤسسة DemoFundation2=إدارة وأعضاء في الحساب المصرفي للمؤسسة -DemoCompanyServiceOnly=Company or freelance selling service only -DemoCompanyShopWithCashDesk=Manage a shop with a cash box -DemoCompanyProductAndStocks=Shop selling products with Point Of Sales -DemoCompanyManufacturing=Company manufacturing products -DemoCompanyAll=Company with multiple activities (all main modules) +DemoCompanyServiceOnly=شركة أو خدمة بيع لحسابهم الخاص فقط +DemoCompanyShopWithCashDesk=إدارة متجر بصندوق نقدي +DemoCompanyProductAndStocks=متجر بيع المنتجات مع نقاط البيع +DemoCompanyManufacturing=منتجات الشركة المصنعة +DemoCompanyAll=شركة ذات أنشطة متعددة (جميع الوحدات الرئيسية) CreatedBy=أوجدتها ٪ ق ModifiedBy=المعدلة ق ٪ ValidatedBy=يصادق عليها ق ٪ -SignedBy=Signed by %s +SignedBy=بتوقيع %s ClosedBy=أغلقت ٪ ق CreatedById=هوية المستخدم الذي إنشاء -ModifiedById=User id who made latest change +ModifiedById=معرف المستخدم الذي قام بأحدث تغيير ValidatedById=هوية المستخدم الذي التحقق من صحة CanceledById=هوية المستخدم الذي ألغى ClosedById=هوية المستخدم الذي أغلق CreatedByLogin=تسجيل دخول المستخدم الذي إنشاء -ModifiedByLogin=User login who made latest change +ModifiedByLogin=تسجيل دخول المستخدم الذي قام بآخر تغيير ValidatedByLogin=تسجيل دخول المستخدم الذي التحقق من صحة CanceledByLogin=تسجيل دخول المستخدم الذي ألغى ClosedByLogin=تسجيل دخول المستخدم الذي أغلق FileWasRemoved=تم حذف الملف DirWasRemoved=دليل أزيل -FeatureNotYetAvailable=Feature not yet available in the current version -FeatureNotAvailableOnDevicesWithoutMouse=Feature not available on devices without mouse -FeaturesSupported=Supported features +FeatureNotYetAvailable=الميزة غير متوفرة بعد في الإصدار الحالي +FeatureNotAvailableOnDevicesWithoutMouse=الميزة غير متوفرة على الأجهزة التي لا تحتوي على ماوس +FeaturesSupported=الميزات المعتمدة Width=عرض Height=ارتفاع Depth=متعمق @@ -144,7 +144,7 @@ Right=حق CalculatedWeight=يحسب الوزن CalculatedVolume=يحسب حجم Weight=وزن -WeightUnitton=ton +WeightUnitton=طن WeightUnitkg=كجم WeightUnitg=ز WeightUnitmg=مغلم @@ -180,48 +180,48 @@ SizeUnitinch=بوصة SizeUnitfoot=قدم SizeUnitpoint=نقطة BugTracker=علة تعقب -SendNewPasswordDesc=This form allows you to request a new password. It will be sent to your email address.
Change will become effective once you click on the confirmation link in the email.
Check your inbox. +SendNewPasswordDesc=يتيح لك هذا النموذج طلب كلمة مرور جديدة. سيتم إرسالها إلى عنوان بريدك الإلكتروني.
سيصبح التغيير ساريًا بمجرد النقر فوق ارتباط التأكيد في البريد الإلكتروني.
تحقق من صندوق الوارد الخاص بك. BackToLoginPage=عودة إلى صفحة تسجيل الدخول AuthenticationDoesNotAllowSendNewPassword=طريقة التوثيق ٪ ق.
في هذا الوضع ، لا يمكن معرفة Dolibarr أو تغيير كلمة السر الخاصة بك.
اتصل بمسؤول النظام إذا كنت تريد تغيير كلمة السر الخاصة بك. -EnableGDLibraryDesc=Install or enable GD library on your PHP installation to use this option. +EnableGDLibraryDesc=قم بتثبيت أو تمكين مكتبة GD على تثبيت PHP الخاص بك لاستخدام هذا الخيار. ProfIdShortDesc=الأستاذ عيد ٪ ق هي المعلومات التي تعتمد على طرف ثالث.
على سبيل المثال ، لبلد ق ٪ انها رمز ٪ ق. DolibarrDemo=Dolibarr تخطيط موارد المؤسسات وإدارة علاقات العملاء التجريبي -StatsByNumberOfUnits=Statistics for sum of qty of products/services -StatsByNumberOfEntities=Statistics for number of referring entities (no. of invoices, or orders...) -NumberOfProposals=Number of proposals -NumberOfCustomerOrders=Number of sales orders -NumberOfCustomerInvoices=Number of customer invoices -NumberOfSupplierProposals=Number of vendor proposals -NumberOfSupplierOrders=Number of purchase orders -NumberOfSupplierInvoices=Number of vendor invoices -NumberOfContracts=Number of contracts -NumberOfMos=Number of manufacturing orders -NumberOfUnitsProposals=Number of units on proposals -NumberOfUnitsCustomerOrders=Number of units on sales orders -NumberOfUnitsCustomerInvoices=Number of units on customer invoices -NumberOfUnitsSupplierProposals=Number of units on vendor proposals -NumberOfUnitsSupplierOrders=Number of units on purchase orders -NumberOfUnitsSupplierInvoices=Number of units on vendor invoices -NumberOfUnitsContracts=Number of units on contracts -NumberOfUnitsMos=Number of units to produce in manufacturing orders -EMailTextInterventionAddedContact=A new intervention %s has been assigned to you. +StatsByNumberOfUnits=إحصائيات لمجموع كمية المنتجات / الخدمات +StatsByNumberOfEntities=إحصائيات لعدد الكيانات المحيلة (عدد الفواتير أو الطلبات ...) +NumberOfProposals=عدد العروض +NumberOfCustomerOrders=عدد أوامر المبيعات +NumberOfCustomerInvoices=عدد فواتير العميل +NumberOfSupplierProposals=عدد عروض البائعين +NumberOfSupplierOrders=عدد أوامر الشراء +NumberOfSupplierInvoices=عدد فواتير البائعين +NumberOfContracts=عدد العقود +NumberOfMos=عدد أوامر التصنيع +NumberOfUnitsProposals=عدد الوحدات في المقترحات +NumberOfUnitsCustomerOrders=عدد الوحدات في أوامر المبيعات +NumberOfUnitsCustomerInvoices=عدد الوحدات في فواتير العميل +NumberOfUnitsSupplierProposals=عدد الوحدات في عروض البائعين +NumberOfUnitsSupplierOrders=عدد الوحدات في أوامر الشراء +NumberOfUnitsSupplierInvoices=عدد الوحدات في فواتير البائعين +NumberOfUnitsContracts=عدد الوحدات في العقود +NumberOfUnitsMos=عدد الوحدات المطلوب إنتاجها في أوامر التصنيع +EMailTextInterventionAddedContact=تم تعيين تدخل جديد لك %s. EMailTextInterventionValidated=التدخل ٪ ق المصادق -EMailTextInvoiceValidated=Invoice %s has been validated. -EMailTextInvoicePayed=Invoice %s has been paid. -EMailTextProposalValidated=Proposal %s has been validated. -EMailTextProposalClosedSigned=Proposal %s has been closed signed. -EMailTextOrderValidated=Order %s has been validated. -EMailTextOrderApproved=Order %s has been approved. -EMailTextOrderValidatedBy=Order %s has been recorded by %s. -EMailTextOrderApprovedBy=Order %s has been approved by %s. -EMailTextOrderRefused=Order %s has been refused. -EMailTextOrderRefusedBy=Order %s has been refused by %s. -EMailTextExpeditionValidated=Shipping %s has been validated. -EMailTextExpenseReportValidated=Expense report %s has been validated. -EMailTextExpenseReportApproved=Expense report %s has been approved. -EMailTextHolidayValidated=Leave request %s has been validated. -EMailTextHolidayApproved=Leave request %s has been approved. -EMailTextActionAdded=The action %s has been added to the Agenda. +EMailTextInvoiceValidated=تم التحقق من صحة الفاتورة %s. +EMailTextInvoicePayed=تم دفع الفاتورة %s. +EMailTextProposalValidated=تم التحقق من صحة الاقتراح %s. +EMailTextProposalClosedSigned=تم إغلاق الاقتراح %s وتوقيعه. +EMailTextOrderValidated=تم التحقق من صحة الطلب %s. +EMailTextOrderApproved=تمت الموافقة على الطلب %s. +EMailTextOrderValidatedBy=تم تسجيل الطلب %s بواسطة %s. +EMailTextOrderApprovedBy=تمت الموافقة على الطلب %s بواسطة %s. +EMailTextOrderRefused=تم رفض الطلب %s. +EMailTextOrderRefusedBy=تم رفض الطلب %s بواسطة %s. +EMailTextExpeditionValidated=تم التحقق من صحة الشحن %s. +EMailTextExpenseReportValidated=تم التحقق من صحة تقرير المصاريف %s. +EMailTextExpenseReportApproved=تمت الموافقة على تقرير المصاريف %s. +EMailTextHolidayValidated=تم التحقق من صحة طلب الإجازة %s. +EMailTextHolidayApproved=تمت الموافقة على طلب الإجازة %s. +EMailTextActionAdded=تمت إضافة الإجراء %s إلى الأجندة. ImportedWithSet=استيراد مجموعة البيانات DolibarrNotification=إشعار تلقائي ResizeDesc=أدخل عرض جديدة أو ارتفاع جديد. وستبقى نسبة خلال تغيير حجم... @@ -229,7 +229,7 @@ NewLength=عرض جديد NewHeight=ارتفاع جديد NewSizeAfterCropping=حجم جديد بعد الاقتصاص DefineNewAreaToPick=تحديد منطقة جديدة على الصورة لاختيار (اليسار انقر على الصورة ثم اسحب حتى تصل إلى الزاوية المقابلة) -CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is the information on the current edited image +CurrentInformationOnImage=تم تصميم هذه الأداة لمساعدتك على تغيير حجم الصورة أو اقتصاصها. هذه هي المعلومات على الصورة المعدلة الحالية ImageEditor=صورة المحرر YouReceiveMailBecauseOfNotification=تلقيت هذه الرسالة لأنه قد تم إضافة البريد الإلكتروني الخاص بك إلى قائمة الأهداف التي يتعين على علم الأحداث ولا سيما في صناعة البرمجيات من %s %s. YouReceiveMailBecauseOfNotification2=هذا الحدث هو ما يلي : @@ -242,65 +242,86 @@ StartUpload=بدء التحميل CancelUpload=إلغاء التحميل FileIsTooBig=ملفات كبيرة جدا PleaseBePatient=يرجى التحلي بالصبر... -NewPassword=New password -ResetPassword=Reset password -RequestToResetPasswordReceived=A request to change your password has been received. +NewPassword=كلمة السر الجديدة +ResetPassword=إعادة تعيين كلمة المرور +RequestToResetPasswordReceived=تم استلام طلب لتغيير كلمة المرور الخاصة بك. NewKeyIs=هذا هو مفاتيح جديدة لتسجيل الدخول NewKeyWillBe=والمفتاح الجديد الخاص بك للدخول إلى برنامج يكون ClickHereToGoTo=انقر هنا للذهاب إلى٪ s YouMustClickToChange=ولكن يجب النقر فوق لأول مرة على الرابط التالي للتحقق من صحة هذا تغيير كلمة المرور -ConfirmPasswordChange=Confirm password change +ConfirmPasswordChange=تأكيد تغيير كلمة المرور ForgetIfNothing=إذا كنت لم تطلب هذا التغيير، أن ينسوا هذا البريد الإلكتروني. يتم الاحتفاظ بيانات الاعتماد الخاصة بك آمنة. IfAmountHigherThan=إذا قدر أعلى من٪ الصورة SourcesRepository=مستودع للمصادر -Chart=Chart -PassEncoding=Password encoding -PermissionsAdd=Permissions added -PermissionsDelete=Permissions removed -YourPasswordMustHaveAtLeastXChars=Your password must have at least %s chars -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars -YourPasswordHasBeenReset=Your password has been reset successfully -ApplicantIpAddress=IP address of applicant -SMSSentTo=SMS sent to %s -MissingIds=Missing ids -ThirdPartyCreatedByEmailCollector=Third party created by email collector from email MSGID %s -ContactCreatedByEmailCollector=Contact/address created by email collector from email MSGID %s -ProjectCreatedByEmailCollector=Project created by email collector from email MSGID %s -TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s -OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 -SuffixSessionName=Suffix for session name -LoginWith=Login with %s +Chart=جدول +PassEncoding=ترميز كلمة المرور +PermissionsAdd=تمت إضافة الأذونات +PermissionsDelete=تمت إزالة الأذونات +YourPasswordMustHaveAtLeastXChars=يجب أن تحتوي كلمة مرورك على الأقل على %s حرفًا +PasswordNeedAtLeastXUpperCaseChars=كلمة المرور تحتاج على الأقل %s أحرف كبيرة +PasswordNeedAtLeastXDigitChars=كلمة المرور تحتاج على الأقل %s أحرف رقمية +PasswordNeedAtLeastXSpecialChars=تحتاج كلمة المرور إلى أحرف خاصة %s على الأقل +PasswordNeedNoXConsecutiveChars=يجب ألا تحتوي كلمة المرور على %s أحرف متتالية مماثلة +YourPasswordHasBeenReset=تم إعادة تعيين كلمة المرور الخاصة بك بنجاح +ApplicantIpAddress=عنوان IP لمقدم الطلب +SMSSentTo=تم إرسال رسالة نصية قصيرة إلى %s +MissingIds=معرفات مفقودة +ThirdPartyCreatedByEmailCollector=طرف ثالث تم إنشاؤه بواسطة جامع البريد الإلكتروني من البريد الإلكتروني MSGID %s +ContactCreatedByEmailCollector=جهة الاتصال / العنوان الذي تم إنشاؤه بواسطة جامع البريد الإلكتروني من البريد الإلكتروني MSGID %s +ProjectCreatedByEmailCollector=تم إنشاء المشروع بواسطة جامع البريد الإلكتروني من البريد الإلكتروني MSGID %s +TicketCreatedByEmailCollector=تم إنشاء التذكرة بواسطة جامع البريد الإلكتروني من البريد الإلكتروني MSGID %s +OpeningHoursFormatDesc=استخدم - للفصل بين ساعات الفتح والإغلاق.
استخدم مسافة لإدخال نطاقات مختلفة.
مثال: 8-12 14-18 +SuffixSessionName=لاحقة لاسم الجلسة +LoginWith=تسجيل الدخول باستخدام %s ##### Export ##### ExportsArea=صادرات المنطقة AvailableFormats=الأشكال المتاحة LibraryUsed=وتستخدم المكتبة -LibraryVersion=Library version +LibraryVersion=نسخة المكتبة ExportableDatas=تصدير datas NoExportableData=ليس للتصدير البيانات (أي وحدات للتصدير مع تحميل البيانات ، ومفقود أذونات) ##### External sites ##### -WebsiteSetup=Setup of module website -WEBSITE_PAGEURL=URL of page +WebsiteSetup=إعداد موقع الوحدة النمطية +WEBSITE_PAGEURL=عنوان URL للصفحة WEBSITE_TITLE=العنوان WEBSITE_DESCRIPTION=الوصف -WEBSITE_IMAGE=Image -WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). -WEBSITE_KEYWORDS=Keywords -LinesToImport=Lines to import +WEBSITE_IMAGE=صورة +WEBSITE_IMAGEDesc=المسار النسبي لوسائط الصورة. يمكنك الاحتفاظ بهذا فارغًا لأنه نادرًا ما يتم استخدامه (يمكن استخدامه بواسطة المحتوى الديناميكي لإظهار صورة مصغرة في قائمة منشورات المدونة). استخدم __WEBSITE_KEY__ في المسار إذا كان المسار يعتمد على اسم موقع الويب (على سبيل المثال: image / __ WEBSITE_KEY __ / stories / myimage.png). +WEBSITE_KEYWORDS=الكلمات الدالة +LinesToImport=خطوط للاستيراد -MemoryUsage=Memory usage -RequestDuration=Duration of request -ProductsPerPopularity=Products/Services by popularity -PopuProp=Products/Services by popularity in Proposals -PopuCom=Products/Services by popularity in Orders -ProductStatistics=Products/Services Statistics -NbOfQtyInOrders=Qty in orders -SelectTheTypeOfObjectToAnalyze=Select an object to view its statistics... +MemoryUsage=استخدام الذاكرة +RequestDuration=مدة الطلب +ProductsPerPopularity=المنتجات / الخدمات حسب الشعبية +PopuProp=المنتجات / الخدمات حسب الشعبية في العروض +PopuCom=المنتجات / الخدمات حسب الشعبية في الطلبات +ProductStatistics=إحصاءات المنتجات / الخدمات +NbOfQtyInOrders=الكمية بالطلبات +SelectTheTypeOfObjectToAnalyze=حدد كائنًا لعرض الإحصائيات الخاصة به ... -ConfirmBtnCommonContent = Are you sure you want to "%s" ? -ConfirmBtnCommonTitle = Confirm your action +ConfirmBtnCommonContent = هل أنت متأكد أنك تريد "%s"؟ +ConfirmBtnCommonTitle = قم بتأكيد عملك CloseDialog = إغلاق -Autofill = Autofill +Autofill = الملء التلقائي + +# externalsite +ExternalSiteSetup=إعداد رابط لموقع خارجي +ExternalSiteURL=رابط موقع خارجي لمحتوى إطار داخلي في لغة توصيف النص التشعبي +ExternalSiteModuleNotComplete=لم يتم تهيئة نموذج الموقع الخارجي بصورة صحيحة. +ExampleMyMenuEntry=مُدخل قائمتي + +# FTP +FTPClientSetup=إعداد وحدة FTP أو SFTP Client +NewFTPClient=New FTP/FTPS connection setup +FTPArea=FTP/FTPS Area +FTPAreaDesc=تعرض هذه الشاشة طريقة عرض لخادم FTP و SFTP. +SetupOfFTPClientModuleNotComplete=يبدو أن إعداد وحدة عميل FTP أو SFTP غير مكتمل +FTPFeatureNotSupportedByYourPHP=PHP لا يدعم وظائف FTP أو SFTP +FailedToConnectToFTPServer=فشل الاتصال بالخادم (الخادم %s ، المنفذ %s) +FailedToConnectToFTPServerWithCredentials=فشل تسجيل الدخول إلى الخادم باستخدام تسجيل الدخول / كلمة المرور المحددة +FTPFailedToRemoveFile=فشل لإزالة الملف %s . +FTPFailedToRemoveDir=فشل إزالة الدليل %s : تحقق من الأذونات وأن الدليل فارغ. +FTPPassiveMode=الوضع السلبي +ChooseAFTPEntryIntoMenu=اختر موقع FTP / SFTP من القائمة ... +FailedToGetFile=فشل في الحصول على الملفات %s diff --git a/htdocs/langs/ar_SA/paypal.lang b/htdocs/langs/ar_SA/paypal.lang index 351495835aa..4e4699d6eee 100644 --- a/htdocs/langs/ar_SA/paypal.lang +++ b/htdocs/langs/ar_SA/paypal.lang @@ -1,36 +1,36 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=بايبال حدة الإعداد -PaypalDesc=This module allows payment by customers via PayPal. This can be used for a ad-hoc payment or for a payment related to a Dolibarr object (invoice, order, ...) -PaypalOrCBDoPayment=Pay with PayPal (Card or PayPal) -PaypalDoPayment=Pay with PayPal +PaypalDesc=تسمح هذه الوحدة بالدفع من قبل العملاء عبر PayPal . يمكن استخدام هذا للدفع المخصص أو للدفع المتعلق بأحد عناصر Dolibarr (فاتورة ، أمر ، ...) +PaypalOrCBDoPayment=الدفع باستخدام PayPal (البطاقة أو PayPal) +PaypalDoPayment=الدفع بواسط باى بال PAYPAL_API_SANDBOX=وضع الاختبار / رمل PAYPAL_API_USER=API المستخدم PAYPAL_API_PASSWORD=API كلمة السر PAYPAL_API_SIGNATURE=API توقيع -PAYPAL_SSLVERSION=Curl SSL Version -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer "integral" payment (Credit card+PayPal) or "PayPal" only +PAYPAL_SSLVERSION=إصدار Curl SSL +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=عرض الدفع "المتكامل" (بطاقة الائتمان + PayPal) أو "PayPal" فقط PaypalModeIntegral=التكامل PaypalModeOnlyPaypal=باي بال فقط -ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page +ONLINE_PAYMENT_CSS_URL=عنوان URL اختياري لورقة أنماط CSS على صفحة الدفع عبر الإنترنت ThisIsTransactionId=هذا هو معرف من الصفقة: %s -PAYPAL_ADD_PAYMENT_URL=Include the PayPal payment url when you send a document by email -NewOnlinePaymentReceived=New online payment received -NewOnlinePaymentFailed=New online payment tried but failed -ONLINE_PAYMENT_SENDEMAIL=Email address for notifications after each payment attempt (for success and fail) +PAYPAL_ADD_PAYMENT_URL=قم بتضمين عنوان url الخاص بالدفع في PayPal عند إرسال مستند عبر البريد الإلكتروني +NewOnlinePaymentReceived=تم استلام دفعة جديدة عبر الإنترنت +NewOnlinePaymentFailed=تمت محاولة دفع جديد عبر الإنترنت لكنها فشلت +ONLINE_PAYMENT_SENDEMAIL=عنوان البريد الإلكتروني للإشعارات بعد كل محاولة دفع (للنجاح والفشل) ReturnURLAfterPayment=العودة URL بعد دفع -ValidationOfOnlinePaymentFailed=Validation of online payment failed -PaymentSystemConfirmPaymentPageWasCalledButFailed=Payment confirmation page was called by payment system returned an error +ValidationOfOnlinePaymentFailed=فشل التحقق من صحة الدفع عبر الإنترنت +PaymentSystemConfirmPaymentPageWasCalledButFailed=تم استدعاء صفحة تأكيد الدفع بواسطة نظام الدفع وأرجع خطأً SetExpressCheckoutAPICallFailed=فشل استدعاء API SetExpressCheckout. DoExpressCheckoutPaymentAPICallFailed=فشل استدعاء API DoExpressCheckoutPayment. DetailedErrorMessage=رسالة خطأ مفصلة ShortErrorMessage=رسالة خطأ قصيرة ErrorCode=رمز الخطأ ErrorSeverityCode=خطأ خطورة مدونة -OnlinePaymentSystem=Online payment system -PaypalLiveEnabled=PayPal "live" mode enabled (otherwise test/sandbox mode) -PaypalImportPayment=Import PayPal payments -PostActionAfterPayment=Post actions after payments -ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. You must complete post actions manually if they are necessary. -ValidationOfPaymentFailed=Validation of payment has failed -CardOwner=Card holder -PayPalBalance=Paypal credit +OnlinePaymentSystem=نظام الدفع عبر الإنترنت +PaypalLiveEnabled=تم تمكين وضع PayPal "المباشر" (بخلاف ذلك وضع الاختبار / وضع الحماية) +PaypalImportPayment=استيراد مدفوعات PayPal +PostActionAfterPayment=نشر الإجراءات بعد المدفوعات +ARollbackWasPerformedOnPostActions=تم إجراء التراجع عن جميع إجراءات النشر. يجب عليك إكمال إجراءات النشر يدويًا إذا كانت ضرورية. +ValidationOfPaymentFailed=فشل التحقق من الدفع +CardOwner=حامل البطاقة +PayPalBalance=رصيد Paypal diff --git a/htdocs/langs/ar_SA/projects.lang b/htdocs/langs/ar_SA/projects.lang index 17b4277a353..21a8c799261 100644 --- a/htdocs/langs/ar_SA/projects.lang +++ b/htdocs/langs/ar_SA/projects.lang @@ -3,51 +3,51 @@ RefProject=المرجع. مشروع ProjectRef=المرجع المشروع. ProjectId=رقم المشروع ProjectLabel=تسمية المشروع -ProjectsArea=Projects Area +ProjectsArea=منطقة المشاريع ProjectStatus=حالة المشروع SharedProject=مشاريع مشتركة -PrivateProject=Assigned contacts -ProjectsImContactFor=Projects for which I am explicitly a contact -AllAllowedProjects=All project I can read (mine + public) +PrivateProject=جهات الاتصال المعينة +ProjectsImContactFor=المشاريع التي أنا على اتصال صريح بها +AllAllowedProjects=كل مشروع يمكنني قراءته (ملكي + عام) AllProjects=جميع المشاريع -MyProjectsDesc=This view is limited to the projects that you are a contact for +MyProjectsDesc=يقتصر هذا العرض على المشاريع التي تكون جهة اتصال لها ProjectsPublicDesc=هذا الرأي يعرض جميع المشاريع ويسمح لك قراءة. -TasksOnProjectsPublicDesc=This view presents all tasks on projects you are allowed to read. +TasksOnProjectsPublicDesc=تقدم طريقة العرض هذه جميع المهام في المشاريع المسموح لك بقراءتها. ProjectsPublicTaskDesc=يمثل هذا العرض جميع المشاريع والمهام يسمح لك للقراءة. ProjectsDesc=ويعرض هذا الرأي جميع المشاريع (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء). -TasksOnProjectsDesc=This view presents all tasks on all projects (your user permissions grant you permission to view everything). -MyTasksDesc=This view is limited to the projects or tasks that you are a contact for +TasksOnProjectsDesc=تقدم طريقة العرض هذه جميع المهام في جميع المشاريع (تمنحك أذونات المستخدم الخاصة بك الإذن لعرض كل شيء). +MyTasksDesc=طريقة العرض هذه مقصورة على المشاريع أو المهام التي أنت جهة اتصال لها OnlyOpenedProject=المشاريع المفتوحة فقط مرئية (المشاريع في مشروع أو وضع مغلقة غير مرئية). -ClosedProjectsAreHidden=Closed projects are not visible. +ClosedProjectsAreHidden=المشاريع المغلقة غير مرئية. TasksPublicDesc=هذا الرأي يعرض جميع المشاريع والمهام ويسمح لك قراءة. TasksDesc=هذا الرأي يعرض جميع المشاريع والمهام (أذونات المستخدم الخاص أعطى الصلاحية لعرض كل شيء). -AllTaskVisibleButEditIfYouAreAssigned=All tasks for qualified projects are visible, but you can enter time only for task assigned to selected user. Assign task if you need to enter time on it. -OnlyYourTaskAreVisible=Only tasks assigned to you are visible. If you need to enter time on a task and if the task is not visible here, then you need to assign the task to yourself. -ImportDatasetTasks=Tasks of projects -ProjectCategories=Project tags/categories +AllTaskVisibleButEditIfYouAreAssigned=تظهر جميع المهام للمشاريع المؤهلة ، ولكن يمكنك إدخال الوقت فقط للمهمة المعينة للمستخدم المحدد. قم بتعيين مهمة إذا كنت بحاجة إلى إدخال الوقت فيها. +OnlyYourTaskAreVisible=تظهر فقط المهام المعينة لك. إذا كنت بحاجة إلى إدخال الوقت في مهمة وإذا كانت المهمة غير مرئية هنا ، فأنت بحاجة إلى تعيين المهمة لنفسك. +ImportDatasetTasks=مهام المشاريع +ProjectCategories=علامات / فئات المشروع NewProject=مشروع جديد AddProject=إنشاء مشروع DeleteAProject=حذف مشروع DeleteATask=حذف مهمة -ConfirmDeleteAProject=Are you sure you want to delete this project? -ConfirmDeleteATask=Are you sure you want to delete this task? -OpenedProjects=Open projects -OpenedTasks=Open tasks -OpportunitiesStatusForOpenedProjects=Leads amount of open projects by status -OpportunitiesStatusForProjects=Leads amount of projects by status +ConfirmDeleteAProject=هل أنت متأكد أنك تريد حذف هذا المشروع؟ +ConfirmDeleteATask=هل أنت متأكد أنك تريد حذف هذه المهمة؟ +OpenedProjects=فتح المشاريع +OpenedTasks=افتح المهام +OpportunitiesStatusForOpenedProjects=يقود كمية من المشاريع المفتوحة حسب الحالة +OpportunitiesStatusForProjects=يقود كمية من المشاريع حسب الحالة ShowProject=وتبين للمشروع ShowTask=وتظهر هذه المهمة SetProject=وضع المشروع NoProject=لا يعرف أو المملوكة للمشروع -NbOfProjects=Number of projects -NbOfTasks=Number of tasks +NbOfProjects=عدد المشاريع +NbOfTasks=عدد المهام TimeSpent=الوقت الذي تستغرقه TimeSpentByYou=الوقت الذي يقضيه من قبلك TimeSpentByUser=الوقت الذي يقضيه المستخدم TimesSpent=قضى وقتا -TaskId=Task ID -RefTask=Task ref. -LabelTask=Task label +TaskId=معرف المهمة +RefTask=مرجع المهمة. +LabelTask=تسمية المهمة TaskTimeSpent=الوقت المستغرق في المهام TaskTimeUser=المستعمل TaskTimeNote=ملاحظة @@ -56,10 +56,10 @@ TasksOnOpenedProject=المهام على المشاريع المفتوحة WorkloadNotDefined=عبء العمل غير محددة NewTimeSpent=قضى وقتا MyTimeSpent=وقتي قضى -BillTime=Bill the time spent -BillTimeShort=Bill time -TimeToBill=Time not billed -TimeBilled=Time billed +BillTime=فاتورة الوقت الذي يقضيه +BillTimeShort=فاتورة الوقت +TimeToBill=الوقت غير مفوتر +TimeBilled=الوقت المفوتر Tasks=المهام Task=مهمة TaskDateStart=تاريخ بدء العمل @@ -67,80 +67,80 @@ TaskDateEnd=تاريخ انتهاء المهمة TaskDescription=وصف المهمة NewTask=مهمة جديدة AddTask=إنشاء مهمة -AddTimeSpent=Create time spent -AddHereTimeSpentForDay=Add here time spent for this day/task -AddHereTimeSpentForWeek=Add here time spent for this week/task +AddTimeSpent=قضاء الوقت +AddHereTimeSpentForDay=أضف هنا الوقت المنقضي لهذا اليوم / المهمة +AddHereTimeSpentForWeek=أضف هنا الوقت المنقضي لهذا الأسبوع / المهمة Activity=النشاط Activities=المهام والأنشطة MyActivities=بلدي المهام والأنشطة MyProjects=بلدي المشاريع -MyProjectsArea=My projects Area +MyProjectsArea=منطقة مشاريعي DurationEffective=فعالة لمدة -ProgressDeclared=Declared real progress -TaskProgressSummary=Task progress -CurentlyOpenedTasks=Curently open tasks -TheReportedProgressIsLessThanTheCalculatedProgressionByX=The declared real progress is less %s than the progress on consumption -TheReportedProgressIsMoreThanTheCalculatedProgressionByX=The declared real progress is more %s than the progress on consumption -ProgressCalculated=Progress on consumption -WhichIamLinkedTo=which I'm linked to -WhichIamLinkedToProject=which I'm linked to project +ProgressDeclared=أعلن التقدم الحقيقي +TaskProgressSummary=تقدم المهمة +CurentlyOpenedTasks=افتح المهام بهدوء +TheReportedProgressIsLessThanTheCalculatedProgressionByX=التقدم الحقيقي المعلن هو أقل من %s من التقدم في الاستهلاك +TheReportedProgressIsMoreThanTheCalculatedProgressionByX=التقدم الحقيقي المعلن هو أكثر من %s من التقدم في الاستهلاك +ProgressCalculated=التقدم في الاستهلاك +WhichIamLinkedTo=الذي أنا مرتبط به +WhichIamLinkedToProject=الذي أنا مرتبط بالمشروع Time=وقت -TimeConsumed=Consumed -ListOfTasks=List of tasks -GoToListOfTimeConsumed=Go to list of time consumed -GanttView=Gantt View -ListWarehouseAssociatedProject=List of warehouses associated to the project -ListProposalsAssociatedProject=List of the commercial proposals related to the project -ListOrdersAssociatedProject=List of sales orders related to the project -ListInvoicesAssociatedProject=List of customer invoices related to the project -ListPredefinedInvoicesAssociatedProject=List of customer template invoices related to the project -ListSupplierOrdersAssociatedProject=List of purchase orders related to the project -ListSupplierInvoicesAssociatedProject=List of vendor invoices related to the project -ListContractAssociatedProject=List of contracts related to the project -ListShippingAssociatedProject=List of shippings related to the project -ListFichinterAssociatedProject=List of interventions related to the project -ListExpenseReportsAssociatedProject=List of expense reports related to the project -ListDonationsAssociatedProject=List of donations related to the project -ListVariousPaymentsAssociatedProject=List of miscellaneous payments related to the project -ListSalariesAssociatedProject=List of payments of salaries related to the project -ListActionsAssociatedProject=List of events related to the project -ListMOAssociatedProject=List of manufacturing orders related to the project +TimeConsumed=مستهلك +ListOfTasks=قائمة المهام +GoToListOfTimeConsumed=انتقل إلى قائمة الوقت المستغرق +GanttView=عرض جانت +ListWarehouseAssociatedProject=قائمة المستودعات المرتبطة بالمشروع +ListProposalsAssociatedProject=قائمة العروض التجارية المتعلقة بالمشروع +ListOrdersAssociatedProject=قائمة أوامر المبيعات المتعلقة بالمشروع +ListInvoicesAssociatedProject=قائمة بفواتير العملاء المتعلقة بالمشروع +ListPredefinedInvoicesAssociatedProject=قائمة فواتير نموذج العميل المتعلقة بالمشروع +ListSupplierOrdersAssociatedProject=قائمة أوامر الشراء المتعلقة بالمشروع +ListSupplierInvoicesAssociatedProject=قائمة فواتير البائع المتعلقة بالمشروع +ListContractAssociatedProject=قائمة العقود المتعلقة بالمشروع +ListShippingAssociatedProject=قائمة الشحنات المتعلقة بالمشروع +ListFichinterAssociatedProject=قائمة التدخلات المتعلقة بالمشروع +ListExpenseReportsAssociatedProject=قائمة تقارير المصاريف المتعلقة بالمشروع +ListDonationsAssociatedProject=قائمة التبرعات الخاصة بالمشروع +ListVariousPaymentsAssociatedProject=قائمة المدفوعات المتنوعة المتعلقة بالمشروع +ListSalariesAssociatedProject=قائمة مدفوعات الرواتب الخاصة بالمشروع +ListActionsAssociatedProject=قائمة الأحداث المتعلقة بالمشروع +ListMOAssociatedProject=قائمة أوامر التصنيع الخاصة بالمشروع ListTaskTimeUserProject=قائمة الوقت المستهلك في مهام المشروع -ListTaskTimeForTask=List of time consumed on task +ListTaskTimeForTask=قائمة الوقت المستغرق في المهمة ActivityOnProjectToday=النشاط على المشروع اليوم ActivityOnProjectYesterday=النشاط على المشروع أمس ActivityOnProjectThisWeek=نشاط المشروع هذا الاسبوع ActivityOnProjectThisMonth=نشاط المشروع هذا الشهر ActivityOnProjectThisYear=نشاط المشروع هذا العام ChildOfProjectTask=طفل من مشروع / مهمة -ChildOfTask=Child of task -TaskHasChild=Task has child +ChildOfTask=تابع المهمة +TaskHasChild=المهمة لها طفل NotOwnerOfProject=لا صاحب هذا المشروع من القطاع الخاص AffectedTo=إلى المتضررين -CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See tab '%s'. +CantRemoveProject=لا يمكن إزالة هذا المشروع حيث تمت الإشارة إليه بواسطة بعض العناصر الأخرى (فاتورة أو أوامر أو غيرها). انظر علامة التبويب "%s". ValidateProject=تحقق من مشروع غابة -ConfirmValidateProject=Are you sure you want to validate this project? +ConfirmValidateProject=هل أنت متأكد أنك تريد التحقق من صحة هذا المشروع؟ CloseAProject=وثيقة المشروع -ConfirmCloseAProject=Are you sure you want to close this project? -AlsoCloseAProject=Also close project (keep it open if you still need to follow production tasks on it) +ConfirmCloseAProject=هل أنت متأكد أنك تريد إغلاق هذا المشروع؟ +AlsoCloseAProject=أغلق المشروع أيضًا (اتركه مفتوحًا إذا كنت لا تزال بحاجة إلى متابعة مهام الإنتاج عليه) ReOpenAProject=فتح مشروع -ConfirmReOpenAProject=Are you sure you want to re-open this project? +ConfirmReOpenAProject=هل أنت متأكد أنك تريد إعادة فتح هذا المشروع؟ ProjectContact=اتصالات من المشروع -TaskContact=Task contacts +TaskContact=جهات اتصال المهمة ActionsOnProject=الإجراءات على المشروع YouAreNotContactOfProject=كنت لا اتصال لهذا المشروع الخاص -UserIsNotContactOfProject=User is not a contact of this private project +UserIsNotContactOfProject=المستخدم ليس جهة اتصال لهذا المشروع الخاص DeleteATimeSpent=قضى الوقت حذف -ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent? +ConfirmDeleteATimeSpent=هل أنت متأكد أنك تريد حذف هذا الوقت المنقضي؟ DoNotShowMyTasksOnly=انظر أيضا المهام الغير موكلة الي ShowMyTasksOnly=عرض فقط المهام الموكلة الي -TaskRessourceLinks=Contacts of task +TaskRessourceLinks=اتصالات المهمة ProjectsDedicatedToThisThirdParty=مشاريع مخصصة لهذا الطرف الثالث NoTasks=أية مهام لهذا المشروع LinkedToAnotherCompany=ربط طرف ثالث آخر -TaskIsNotAssignedToUser=Task not assigned to user. Use button '%s' to assign task now. +TaskIsNotAssignedToUser=لم يتم تعيين المهمة للمستخدم. استخدم الزر ' %s ' لتعيين المهمة الآن. ErrorTimeSpentIsEmpty=الوقت الذي يقضيه فارغة -TimeRecordingRestrictedToNMonthsBack=Time recording is restricted to %s months back +TimeRecordingRestrictedToNMonthsBack=تسجيل الوقت يقتصر على %s أشهر قبل ThisWillAlsoRemoveTasks=وهذا العمل أيضا حذف كافة مهام المشروع (%s المهام في الوقت الحاضر) وجميع المدخلات من الوقت الذي تستغرقه. IfNeedToUseOtherObjectKeepEmpty=إذا كانت بعض الكائنات (فاتورة، والنظام، ...)، الذين ينتمون إلى طرف ثالث آخر، يجب أن تكون مرتبطة بمشروع لإنشاء، والحفاظ على هذا فارغة لديها مشروع كونها متعددة الأطراف الثالثة. CloneTasks=استنساخ المهام @@ -148,28 +148,28 @@ CloneContacts=الاتصالات استنساخ CloneNotes=ملاحظات استنساخ CloneProjectFiles=انضم مشروع استنساخ ملفات CloneTaskFiles=مهمة استنساخ (ق) انضم الملفات (إن مهمة (ق) المستنسخة) -CloneMoveDate=Update project/tasks dates from now? -ConfirmCloneProject=Are you sure to clone this project? -ProjectReportDate=Change task dates according to new project start date +CloneMoveDate=هل تريد تحديث تواريخ المشروع / المهام من الآن؟ +ConfirmCloneProject=هل أنت متأكد من استنساخ هذا المشروع؟ +ProjectReportDate=قم بتغيير تواريخ المهام وفقًا لتاريخ بدء المشروع الجديد ErrorShiftTaskDate=من المستحيل تحويل التاريخ المهمة وفقا لتاريخ بدء المشروع الجديد ProjectsAndTasksLines=المشاريع والمهام ProjectCreatedInDolibarr=مشروع٪ الصورة التي تم إنشاؤها -ProjectValidatedInDolibarr=Project %s validated +ProjectValidatedInDolibarr=تم التحقق من صحة المشروع %s ProjectModifiedInDolibarr=المشروع %s تم تعديلة TaskCreatedInDolibarr=مهمة٪ الصورة التي تم إنشاؤها TaskModifiedInDolibarr=مهمة٪ الصورة المعدلة TaskDeletedInDolibarr=مهمة٪ الصورة حذف -OpportunityStatus=Lead status -OpportunityStatusShort=Lead status -OpportunityProbability=Lead probability -OpportunityProbabilityShort=Lead probab. -OpportunityAmount=Lead amount -OpportunityAmountShort=Lead amount -OpportunityWeightedAmount=Opportunity weighted amount -OpportunityWeightedAmountShort=Opp. weighted amount -OpportunityAmountAverageShort=Average lead amount -OpportunityAmountWeigthedShort=Weighted lead amount -WonLostExcluded=Won/Lost excluded +OpportunityStatus=حالة الرصاص +OpportunityStatusShort=حالة الرصاص +OpportunityProbability=احتمال الرصاص +OpportunityProbabilityShort=بروباب الرصاص. +OpportunityAmount=كمية الرصاص +OpportunityAmountShort=كمية الرصاص +OpportunityWeightedAmount=المقدار المرجح للفرصة +OpportunityWeightedAmountShort=مقابل. الكمية المرجحة +OpportunityAmountAverageShort=متوسط مبلغ الرصاص +OpportunityAmountWeigthedShort=مبلغ الرصاص المرجح +WonLostExcluded=فاز / خسر مستبعد ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=مشروع زعيم TypeContact_project_external_PROJECTLEADER=مشروع زعيم @@ -183,53 +183,53 @@ SelectElement=حدد العنصر AddElement=تصل إلى العنصر LinkToElementShort=ربط مع او بـ # Documents models -DocumentModelBeluga=Project document template for linked objects overview -DocumentModelBaleine=Project document template for tasks -DocumentModelTimeSpent=Project report template for time spent +DocumentModelBeluga=قالب مستند المشروع لنظرة عامة على الكائنات المرتبطة +DocumentModelBaleine=قالب مستند المشروع للمهام +DocumentModelTimeSpent=قالب تقرير المشروع عن الوقت الذي يقضيه PlannedWorkload=عبء العمل المخطط لها PlannedWorkloadShort=عبء العمل ProjectReferers=الأصناف ذات الصلة ProjectMustBeValidatedFirst=يجب التحقق من صحة المشروع أولا -MustBeValidatedToBeSigned=%s must be validated first to be set to Signed. -FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time +MustBeValidatedToBeSigned=يجب التحقق من صحة %s أولاً لتعيينه على Signed. +FirstAddRessourceToAllocateTime=قم بتعيين مورد مستخدم كجهة اتصال للمشروع لتخصيص الوقت InputPerDay=إدخال يوميا InputPerWeek=مساهمة في الأسبوع -InputPerMonth=Input per month -InputDetail=Input detail -TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s +InputPerMonth=المدخلات شهريا +InputDetail=تفاصيل الإدخال +TimeAlreadyRecorded=هذا هو الوقت المنقضي المسجل بالفعل لهذه المهمة / اليوم والمستخدم %s ProjectsWithThisUserAsContact=مشاريع مع هذا العضو عن الاتصال -ProjectsWithThisContact=Projects with this contact +ProjectsWithThisContact=مشاريع مع جهة الاتصال هذه TasksWithThisUserAsContact=المهام الموكلة إلى هذا المستخدم ResourceNotAssignedToProject=لم يتم تعيين إلى المشروع -ResourceNotAssignedToTheTask=Not assigned to the task -NoUserAssignedToTheProject=No users assigned to this project -TimeSpentBy=Time spent by -TasksAssignedTo=Tasks assigned to -AssignTaskToMe=Assign task to myself -AssignTaskToUser=Assign task to %s -SelectTaskToAssign=Select task to assign... +ResourceNotAssignedToTheTask=لم يتم تعيينه للمهمة +NoUserAssignedToTheProject=لم يتم تعيين مستخدمين لهذا المشروع +TimeSpentBy=الوقت الذي يقضيه +TasksAssignedTo=المهام المعينة إلى +AssignTaskToMe=اسند مهمة لنفسي +AssignTaskToUser=قم بتعيين مهمة إلى %s +SelectTaskToAssign=حدد مهمة لتعيينها ... AssignTask=عين ProjectOverview=نظرة عامة -ManageTasks=Use projects to follow tasks and/or report time spent (timesheets) +ManageTasks=استخدم المشاريع لمتابعة المهام و / أو تقرير الوقت المنقضي (الجداول الزمنية) ManageOpportunitiesStatus=استخدام مشاريع متابعة القرائن / opportinuties -ProjectNbProjectByMonth=No. of created projects by month -ProjectNbTaskByMonth=No. of created tasks by month -ProjectOppAmountOfProjectsByMonth=Amount of leads by month -ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of leads by month -ProjectOpenedProjectByOppStatus=Open project|lead by lead status -ProjectsStatistics=Statistics on projects or leads -TasksStatistics=Statistics on tasks of projects or leads +ProjectNbProjectByMonth=عدد المشاريع التي تم إنشاؤها حسب الشهر +ProjectNbTaskByMonth=عدد المهام التي تم إنشاؤها حسب الشهر +ProjectOppAmountOfProjectsByMonth=كمية العروض حسب الشهر +ProjectWeightedOppAmountOfProjectsByMonth=المقدار المرجح من العملاء المتوقعين حسب الشهر +ProjectOpenedProjectByOppStatus=فتح المشروع | الرصاص حسب حالة العميل المحتمل +ProjectsStatistics=إحصائيات عن المشاريع أو العملاء المتوقعين +TasksStatistics=إحصائيات عن مهام المشاريع أو العملاء المتوقعين TaskAssignedToEnterTime=المهمة الموكلة. يجب دخول الوقت على هذه المهمة يكون ممكنا. IdTaskTime=الوقت مهمة معرف -YouCanCompleteRef=If you want to complete the ref with some suffix, it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-MYSUFFIX -OpenedProjectsByThirdparties=Open projects by third parties -OnlyOpportunitiesShort=Only leads -OpenedOpportunitiesShort=Open leads -NotOpenedOpportunitiesShort=Not an open lead -NotAnOpportunityShort=Not a lead -OpportunityTotalAmount=Total amount of leads -OpportunityPonderatedAmount=Weighted amount of leads -OpportunityPonderatedAmountDesc=Leads amount weighted with probability +YouCanCompleteRef=إذا كنت تريد إكمال المرجع ببعض اللاحقة ، فمن المستحسن إضافة حرف - لفصله ، لذلك سيستمر الترقيم التلقائي بشكل صحيح للمشاريع التالية. على سبيل المثال %s-MYSUFFIX +OpenedProjectsByThirdparties=فتح المشاريع من قبل أطراف ثالثة +OnlyOpportunitiesShort=يؤدي فقط +OpenedOpportunitiesShort=فتح يؤدي +NotOpenedOpportunitiesShort=ليست مقدمة مفتوحة +NotAnOpportunityShort=لا يقود +OpportunityTotalAmount=إجمالي عدد العملاء المتوقعين +OpportunityPonderatedAmount=المقدار المرجح من العملاء المحتملين +OpportunityPonderatedAmountDesc=كمية العملاء المتوقعين مرجحة بالاحتمال OppStatusPROSP=التنقيب OppStatusQUAL=المؤهل العلمى OppStatusPROPO=مقترح @@ -237,60 +237,60 @@ OppStatusNEGO=Negociation OppStatusPENDING=بانتظار OppStatusWON=فاز OppStatusLOST=ضائع -Budget=Budget -AllowToLinkFromOtherCompany=Allow to link project from other company

Supported values:
- Keep empty: Can link any project of the company (default)
- "all": Can link any projects, even projects of other companies
- A list of third-party ids separated by commas: can link all projects of these third partys (Example: 123,4795,53)
-LatestProjects=Latest %s projects -LatestModifiedProjects=Latest %s modified projects -OtherFilteredTasks=Other filtered tasks -NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) -ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. -ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. -ChooseANotYetAssignedTask=Choose a task not yet assigned to you +Budget=ميزانية +AllowToLinkFromOtherCompany=السماح بربط مشروع من شركة أخرى

القيم المدعومة:
- احتفظ به فارغًا: يمكنك ربط أي مشروع من مشاريع الشركة (افتراضي) a0342fccfda019b34 معرفات الجهات الخارجية مفصولة بفواصل: يمكن ربط جميع مشاريع هذه الأطراف الثالثة (مثال: 123،4795،53)
+LatestProjects=أحدث مشاريع %s +LatestModifiedProjects=أحدث مشاريع %s المعدلة +OtherFilteredTasks=مهام أخرى تمت تصفيتها +NoAssignedTasks=لم يتم العثور على مهام معينة (قم بتعيين مشروع / مهام إلى المستخدم الحالي من مربع التحديد العلوي لإدخال الوقت فيه) +ThirdPartyRequiredToGenerateInvoice=يجب تحديد طرف ثالث في المشروع حتى يتمكن من إصدار فاتورة به. +ThirdPartyRequiredToGenerateInvoice=يجب تحديد طرف ثالث في المشروع حتى يتمكن من إصدار فاتورة به. +ChooseANotYetAssignedTask=اختر مهمة لم يتم تعيينها لك بعد # Comments trans -AllowCommentOnTask=Allow user comments on tasks -AllowCommentOnProject=Allow user comments on projects -DontHavePermissionForCloseProject=You do not have permissions to close the project %s -DontHaveTheValidateStatus=The project %s must be open to be closed -RecordsClosed=%s project(s) closed -SendProjectRef=Information project %s -ModuleSalaryToDefineHourlyRateMustBeEnabled=Module 'Salaries' must be enabled to define employee hourly rate to have time spent valorized -NewTaskRefSuggested=Task ref already used, a new task ref is required -TimeSpentInvoiced=Time spent billed +AllowCommentOnTask=السماح بتعليقات المستخدمين على المهام +AllowCommentOnProject=السماح بتعليقات المستخدمين على المشاريع +DontHavePermissionForCloseProject=ليس لديك أذونات لإغلاق المشروع %s +DontHaveTheValidateStatus=يجب أن يكون المشروع %s مفتوحًا ليغلق +RecordsClosed=تم إغلاق مشروع (مشاريع) %s +SendProjectRef=مشروع المعلومات %s +ModuleSalaryToDefineHourlyRateMustBeEnabled=يجب تمكين "رواتب" الوحدة النمطية لتحديد معدل الموظف بالساعة من أجل قضاء الوقت في التثمين +NewTaskRefSuggested=مرجع المهمة مستخدم بالفعل ، مطلوب مرجع مهمة جديد +TimeSpentInvoiced=الوقت المستغرق في الفاتورة TimeSpentForIntervention=قضى وقتا TimeSpentForInvoice=قضى وقتا -OneLinePerUser=One line per user +OneLinePerUser=خط واحد لكل مستخدم ServiceToUseOnLines=Service to use on lines -InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on project -InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project -ProjectBillTimeDescription=Check if you enter timesheet on tasks of project AND you plan to generate invoice(s) from the timesheet to bill the customer of the project (do not check if you plan to create invoice that is not based on entered timesheets). Note: To generate invoice, go on tab 'Time spent' of the project and select lines to include. -ProjectFollowOpportunity=Follow opportunity -ProjectFollowTasks=Follow tasks or time spent -Usage=Usage -UsageOpportunity=Usage: Opportunity -UsageTasks=Usage: Tasks -UsageBillTimeShort=Usage: Bill time -InvoiceToUse=Draft invoice to use -InterToUse=Draft intervention to use +InvoiceGeneratedFromTimeSpent=تم إنشاء الفاتورة %s من الوقت المنقضي في المشروع +InterventionGeneratedFromTimeSpent=تم إنشاء التدخل %s من الوقت الذي يقضيه في المشروع +ProjectBillTimeDescription=تحقق مما إذا كنت قد أدخلت الجدول الزمني لمهام المشروع وكنت تخطط لإنشاء فاتورة (فواتير) من الجدول الزمني لفوترة عميل المشروع (لا تحقق مما إذا كنت تخطط لإنشاء فاتورة لا تستند إلى الجداول الزمنية التي تم إدخالها). ملاحظة: لإنشاء فاتورة ، انتقل إلى علامة التبويب "الوقت المستغرق" في المشروع وحدد سطورًا لتضمينها. +ProjectFollowOpportunity=اتبع الفرصة +ProjectFollowTasks=اتبع المهام أو الوقت الذي تقضيه +Usage=إستعمال +UsageOpportunity=الاستعمال: فرصة +UsageTasks=الاستعمال: المهام +UsageBillTimeShort=الاستعمال: فاتورة الوقت +InvoiceToUse=مسودة فاتورة للاستخدام +InterToUse=مشروع تدخل للاستخدام NewInvoice=فاتورة جديدة NewInter=التدخل الجديدة -OneLinePerTask=One line per task -OneLinePerPeriod=One line per period -OneLinePerTimeSpentLine=One line for each time spent declaration -AddDetailDateAndDuration=With date and duration into line description -RefTaskParent=Ref. Parent Task -ProfitIsCalculatedWith=Profit is calculated using -AddPersonToTask=Add also to tasks -UsageOrganizeEvent=Usage: Event Organization -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classify project as closed when all its tasks are completed (100%% progress) -PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks at 100 %% progress won't be affected: you will have to close them manually. This option only affects open projects. -SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them -ProjectTasksWithoutTimeSpent=Project tasks without time spent -FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. -ProjectsHavingThisContact=Projects having this contact +OneLinePerTask=سطر واحد لكل مهمة +OneLinePerPeriod=سطر واحد لكل فترة +OneLinePerTimeSpentLine=سطر واحد لكل إعلان عن الوقت المستغرق +AddDetailDateAndDuration=مع التاريخ والمدة في وصف السطر +RefTaskParent=المرجع. المهمة الأصل +ProfitIsCalculatedWith=يتم احتساب الربح باستخدام +AddPersonToTask=أضف أيضًا إلى المهام +UsageOrganizeEvent=الاستعمال: تنظيم الحدث +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=تصنيف المشروع على أنه مغلق عند اكتمال جميع مهامه (تقدم 100%%) +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=ملاحظة: المشاريع الحالية مع جميع المهام في 100%% لن يتأثر التقدم: سيكون عليك إغلاقها يدويًا. يؤثر هذا الخيار فقط على المشاريع المفتوحة. +SelectLinesOfTimeSpentToInvoice=حدد سطور الوقت المستغرقة التي لم يتم تحرير فواتير بها ، ثم قم بإجراء جماعي "إنشاء الفاتورة" لفواتيرها +ProjectTasksWithoutTimeSpent=مهام المشروع دون إضاعة الوقت +FormForNewLeadDesc=شكرا لملء النموذج التالي للاتصال بنا. يمكنك أيضًا إرسال بريد إلكتروني إلينا مباشرة إلى %s . +ProjectsHavingThisContact=المشاريع التي لديها هذا الاتصال StartDateCannotBeAfterEndDate=تاريخ نهاية لا يمكن أن يكون قبل تاريخ البدء -ErrorPROJECTLEADERRoleMissingRestoreIt=The "PROJECTLEADER" role is missing or has been de-activited, please restore in the dictionary of contact types -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +ErrorPROJECTLEADERRoleMissingRestoreIt=دور "PROJECTLEADER" مفقود أو تم إلغاء تنشيطه ، يرجى الاستعادة في قاموس أنواع جهات الاتصال +LeadPublicFormDesc=يمكنك هنا تمكين صفحة عامة للسماح لآفاقك بإجراء أول اتصال لك من نموذج عام عبر الإنترنت +EnablePublicLeadForm=قم بتمكين النموذج العام للاتصال +NewLeadbyWeb=تم تسجيل رسالتك أو طلبك. سوف نقوم بالرد أو الاتصال بك قريبا. +NewLeadForm=استمارة اتصال جديدة +LeadFromPublicForm=عميل محتمل عبر الإنترنت من شكل عام diff --git a/htdocs/langs/ar_SA/stocks.lang b/htdocs/langs/ar_SA/stocks.lang index 5d2fbc0d6c9..18ba99173fc 100644 --- a/htdocs/langs/ar_SA/stocks.lang +++ b/htdocs/langs/ar_SA/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=إعادة فتح ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=يبدأ InventoryStartedShort=بدأ ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=الإعدادات +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/ar_SA/suppliers.lang b/htdocs/langs/ar_SA/suppliers.lang index d7496e5b941..4eb63ed057e 100644 --- a/htdocs/langs/ar_SA/suppliers.lang +++ b/htdocs/langs/ar_SA/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=اسم المشتري AllProductServicePrices=جميع أسعار المنتجات | الخدمات AllProductReferencesOfSupplier=جميع مراجع البائع BuyingPriceNumShort=أسعار المورد +RepeatableSupplierInvoice=فاتورة مورد النموذج +RepeatableSupplierInvoices=فواتير المورد النموذج +RepeatableSupplierInvoicesList=فواتير المورد النموذج +RecurringSupplierInvoices=فواتير الموردين المتكررة +ToCreateAPredefinedSupplierInvoice=من أجل إنشاء نموذج فاتورة المورد ، يجب عليك إنشاء فاتورة قياسية ، ثم ، دون التحقق من صحتها ، انقر فوق الزر "%s". +GeneratedFromSupplierTemplate=تم إنشاؤه من نموذج فاتورة المورد %s +SupplierInvoiceGeneratedFromTemplate=فاتورة المورد %s تم إنشاؤها من نموذج فاتورة المورد %s diff --git a/htdocs/langs/ar_SY/errors.lang b/htdocs/langs/ar_SY/errors.lang index 0bac7cf07c8..8097d3a5b6f 100644 --- a/htdocs/langs/ar_SY/errors.lang +++ b/htdocs/langs/ar_SY/errors.lang @@ -270,7 +270,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ar_SY/externalsite.lang b/htdocs/langs/ar_SY/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ar_SY/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ar_SY/ftp.lang b/htdocs/langs/ar_SY/ftp.lang deleted file mode 100644 index 254a2a698ce..00000000000 --- a/htdocs/langs/ar_SY/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP or SFTP Client module setup -NewFTPClient=New FTP/FTPS connection setup -FTPArea=FTP/FTPS Area -FTPAreaDesc=This screen shows a view of an FTP et SFTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions -FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/az_AZ/errors.lang b/htdocs/langs/az_AZ/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/az_AZ/errors.lang +++ b/htdocs/langs/az_AZ/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/az_AZ/externalsite.lang b/htdocs/langs/az_AZ/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/az_AZ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/az_AZ/ftp.lang b/htdocs/langs/az_AZ/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/az_AZ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/bg_BG/admin.lang b/htdocs/langs/bg_BG/admin.lang index 48c6ffc8e5d..8272d0a8165 100644 --- a/htdocs/langs/bg_BG/admin.lang +++ b/htdocs/langs/bg_BG/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Следваща стойност (замествани MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Забележка: Не е зададено ограничение във вашата PHP конфигурация MaxSizeForUploadedFiles=Максимален размер за качени файлове (0 за забрана на качването) -UseCaptchaCode=Използване на графичен код (CAPTCHA) на страницата за вход +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Пълен път към антивирусна команда AntiVirusCommandExample=Пример за ClamAv Daemon (изисква clamav-daemon): /usr/bin/clamdscan
Пример за ClamWin (много забавящ): C:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Още параметри в командния ред @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Ако вашият SMTP доставчик трябва да ограничи имейл клиента до някои IP адреси (много рядко), това е IP адресът на потребителския агент за поща (MUA) за вашето ERP CRM приложение: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Кликнете, за да се покаже описание DependsOn=Този модул се нуждае от модул(и) RequiredBy=Този модул изисква модул(и) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Стойност на конфигурационна конс ConstantIsOn=Option %s is on NbOfDays=Брой дни AtEndOfMonth=В края на месеца -CurrentNext=Текущ/Следващ +CurrentNext=A given day in month Offset=Офсет AlwaysActive=Винаги активна Upgrade=Актуализация @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Натиснете CTRL + F5 на клавиатура NotSupportedByAllThemes=Ще работи с основните теми, но може да не се поддържат външни теми. BackgroundColor=Цвят на фона TopMenuBackgroundColor=Цвят на фона в горното меню -TopMenuDisableImages=Скриване на изображения в горното меню +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Цвят на фона в лявото меню BackgroundTableTitleColor=Цвят на фона в реда със заглавието на таблица BackgroundTableTitleTextColor=Цвят на текста в заглавието на таблиците @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Забележка: Опцията за използване на SwapSenderAndRecipientOnPDF=Размяна на адресите на подателя и получателя в PDF документи FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Имейл колекционер +EmailCollectors=Email collectors EmailCollectorDescription=Добавете планирана задача в страницата за настройка, за да сканирате редовно пощенските кутии (използвайки протокола IMAP) и да записвате получените в приложението имейли на правилното място и / или да създавате автоматично някои записи (например нови възможности). NewEmailCollector=Нов колекционер на имейли EMailHost=Адрес на IMAP сървър @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Последен резултат EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Потвърждение за колекциониране на имейли EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Няма нови имейли (отговарящи на заложените филтри) за обработка NothingProcessed=Нищо не е направено -XEmailsDoneYActionsDone=Открити са %s имейл адреса, %s имейл адреса са успешно обработени (за %s записа / действия) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Шаблон за имейл EMailsWillHaveMessageID=Имейлите ще имат етикет „Референции“, отговарящ на този синтаксис PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Ако искате да имате някои текстове във вашия PDF файл, дублирани на 2 различни езика в един и същ генериран PDF файл, трябва да посочите тук този втори език, така че генерираният PDF файл да съдържа 2 различни езика на една и съща страница, избраният при генериране на PDF и този (само няколко PDF шаблона поддържат това). Запазете празно за един език в PDF файла. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Въведете тук кода за FontAwesome икона. Ако не знаете какво е FontAwesome, може да използвате стандартната стойност fa-address book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Настройка на инвентаризация ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Настройки +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/bg_BG/companies.lang b/htdocs/langs/bg_BG/companies.lang index 3519f6a4fb5..949d19feac9 100644 --- a/htdocs/langs/bg_BG/companies.lang +++ b/htdocs/langs/bg_BG/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Произход на контрагента NatureOfContact=Произход на контакта Address=Адрес State=Област +StateId=State ID StateCode=Код на област StateShort=Област Region=Регион Region-State=Регион - Област Country=Държава CountryCode=Код на държава -CountryId=Идентификатор на държава +CountryId=Country ID Phone=Телефон PhoneShort=Тел. Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Други ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Добавяне на адрес SupplierCategory=Категория на доставчика JuridicalStatus200=Независим DeleteFile=Изтриване на файл -ConfirmDeleteFile=Сигурен ли сте, че искате да изтриете този файл? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Назначен търговски представител Organization=Организация FiscalYearInformation=Фискална година diff --git a/htdocs/langs/bg_BG/errors.lang b/htdocs/langs/bg_BG/errors.lang index ceb6c75ae21..9be2a3b5d80 100644 --- a/htdocs/langs/bg_BG/errors.lang +++ b/htdocs/langs/bg_BG/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Неправилна стойност за вашия параметър. Обикновено се добавя, когато преводът липсва. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Потребител %s вече съществува. ErrorGroupAlreadyExists=Група %s вече съществува. ErrorEmailAlreadyExists=Email %s already exists. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=Файла не е получил изцяло от сървъра. ErrorNoTmpDir=Временно за директно %s не съществува. ErrorUploadBlockedByAddon=Качи блокиран от PHP / Apache плъгин. -ErrorFileSizeTooLarge=Размерът на файла е твърде голям. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Полето %s е твърде дълго ErrorSizeTooLongForIntType=Размер твърде дълго за Вътрешна (%s цифри максимум) ErrorSizeTooLongForVarcharType=Размер твърде дълго за низ тип (%s символа максимум) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript не трябва да бъдат хор ErrorPasswordsMustMatch=Двете машинописни пароли трябва да съвпадат помежду си ErrorContactEMail=Възникна техническа грешка. Моля, свържете се с администратор посредством следния имейл %s като предоставите кода на грешката %s в съобщението си или да добавите снимка на екрана от тази страница. ErrorWrongValueForField=Поле %s: '%s' не съответства на regex правило %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Поле %s: '%s' не е стойност, открита в поле %s на %s ErrorFieldRefNotIn=Поле %s: '%s' не е %s съществуваща референция ErrorsOnXLines=Намерени са %s грешки @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Вашата стойност на PHP параметър upload_max_filesize (%s) е по-голяма от стойността на PHP параметър post_max_size (%s). Това не е последователна настройка. WarningPasswordSetWithNoAccount=За този член бе зададена парола. Въпреки това, не е създаден потребителски акаунт. Така че тази парола е съхранена, но не може да се използва за влизане в Dolibarr. Може да се използва от външен модул/интерфейс, но ако не е необходимо да дефинирате потребителско име или парола за член може да деактивирате опцията "Управление на вход за всеки член" от настройката на модула Членове. Ако трябва да управлявате вход, но не се нуждаете от парола, можете да запазите това поле празно, за да избегнете това предупреждение. Забележка: Имейлът може да се използва и като вход, ако членът е свързан с потребител. -WarningMandatorySetupNotComplete=Кликнете тук, за да настроите задължителните параметри +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Кликнете тук, за да активирате вашите модули и приложения WarningSafeModeOnCheckExecDir=Внимание, PHP опция защитният режим е включен, така че командата трябва да бъдат съхранени в директория, декларирани с параметър PHP safe_mode_exec_dir. WarningBookmarkAlreadyExists=Отметка с настоящия дял, или на тази цел (URL) вече съществува. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/bg_BG/externalsite.lang b/htdocs/langs/bg_BG/externalsite.lang deleted file mode 100644 index 5b2ff52c0f8..00000000000 --- a/htdocs/langs/bg_BG/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Настройка на линк към външен сайт -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Модула Външен сайт не е конфигуриран правилно. -ExampleMyMenuEntry=Мой елемент на меню diff --git a/htdocs/langs/bg_BG/ftp.lang b/htdocs/langs/bg_BG/ftp.lang deleted file mode 100644 index d74dec3de67..00000000000 --- a/htdocs/langs/bg_BG/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Настройка на модул FTP клиент -NewFTPClient=Настройка на нова FTP връзка -FTPArea=Секция с FTP -FTPAreaDesc=Този екран ви показва съдържанието на FTP сървъра -SetupOfFTPClientModuleNotComplete=Настройката на клиентския FTP модул изглежда непълна -FTPFeatureNotSupportedByYourPHP=Вашият PHP не поддържа FTP функции -FailedToConnectToFTPServer=Неуспешно свързване с FTP сървър (сървър %s, порт %s) -FailedToConnectToFTPServerWithCredentials=Неуспешно влизане в FTP сървър с дефинираните потребителско име / парола -FTPFailedToRemoveFile=Неуспешно премахване на файл %s. -FTPFailedToRemoveDir=Неуспешно премахване на директория %s: проверете правата и дали директорията е празна. -FTPPassiveMode=Пасивен режим -ChooseAFTPEntryIntoMenu=Изберете FTP сайт от менюто... -FailedToGetFile=Неуспешно получаване на файлове %s diff --git a/htdocs/langs/bg_BG/hrm.lang b/htdocs/langs/bg_BG/hrm.lang index 48d26235d01..8848dbbfafd 100644 --- a/htdocs/langs/bg_BG/hrm.lang +++ b/htdocs/langs/bg_BG/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Отваряне на обект CloseEtablishment=Затваряне на обект # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=ЧР - Списък с отдели +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=ЧР - Длъжности # Module Employees=Служители @@ -20,13 +20,14 @@ Employee=Служител NewEmployee=Нов служител ListOfEmployees=Списък на служителите HrmSetup=Настройка на модула ЧР -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Задача -Jobs=Jobs +JobPosition=Задача +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Позиция -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/bg_BG/install.lang b/htdocs/langs/bg_BG/install.lang index aa4b3c754b7..d058e9ff73f 100644 --- a/htdocs/langs/bg_BG/install.lang +++ b/htdocs/langs/bg_BG/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Конфигурационният файл %s н ConfFileIsWritable=Конфигурационният файл %s е презаписваем. ConfFileMustBeAFileNotADir=Конфигурационният файл %s трябва да е файл, а не директория. ConfFileReload=Презареждане на параметри от конфигурационен файл. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP поддържа променливи POST и GET. PHPSupportPOSTGETKo=Възможно е вашата настройка на PHP да не поддържа променливи POST и/или GET. Проверете параметъра variables_order в php.ini. PHPSupportSessions=PHP поддържа сесии. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Може да сте въвели грешна ст ErrorFailedToCreateDatabase=Неуспешно създаване на база данни '%s'. ErrorFailedToConnectToDatabase=Неуспешно свързване към базата данни '%s' ErrorDatabaseVersionTooLow=Версията на базата данни (%s) е твърде стара. Изисква се версия %s или по-нова. -ErrorPHPVersionTooLow=Версията на PHP е твърде стара. Изисква се версия %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Връзката със сървъра е успешна, но не е намерена база данни '%s'. ErrorDatabaseAlreadyExists=База данни '%s' вече съществува. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Ако базата данни не съществува, върнете се и проверете опцията "Създаване на база данни". IfDatabaseExistsGoBackAndCheckCreate=Ако базата данни вече съществува, върнете се обратно и махнете отметката на "Създаване на база данни". WarningBrowserTooOld=Версията на браузъра е твърде стара. Препоръчва се надграждане на браузъра ви до текуща версия на Firefox, Chrome или Opera. diff --git a/htdocs/langs/bg_BG/main.lang b/htdocs/langs/bg_BG/main.lang index 1cfcc08a9e9..78822836149 100644 --- a/htdocs/langs/bg_BG/main.lang +++ b/htdocs/langs/bg_BG/main.lang @@ -244,6 +244,7 @@ Designation=Описание DescriptionOfLine=Описание на реда DateOfLine=Дата на реда DurationOfLine=Продължителност на реда +ParentLine=Parent line ID Model=Шаблон за документ DefaultModel=Шаблон на документ по подразбиране Action=Събитие @@ -344,7 +345,7 @@ KiloBytes=Килобайта MegaBytes=Мегабайта GigaBytes=Гигабайта TeraBytes=Терабайта -UserAuthor=Ceated by +UserAuthor=Създаден от UserModif=Updated by b=б. Kb=Кб @@ -517,6 +518,7 @@ or=или Other=Друг Others=Други OtherInformations=Друга информация +Workflow=Работен процес Quantity=Количество Qty=Кол. ChangedBy=Променено от @@ -619,6 +621,7 @@ MonthVeryShort11=Н MonthVeryShort12=Д AttachedFiles=Прикачени файлове и документи JoinMainDoc=Присъединете към основния документ +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=Функцията е изключена MoveBox=Преместване на джаджа Offered=100% NotEnoughPermissions=Вие нямате разрешение за това действие +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Име на сесия Method=Метод Receive=Получаване @@ -798,6 +802,7 @@ URLPhoto=URL адрес на снимка / лого SetLinkToAnotherThirdParty=Връзка към друг контрагент LinkTo=Връзка към LinkToProposal=Връзка към предложение +LinkToExpedition= Link to expedition LinkToOrder=Връзка към поръчка LinkToInvoice=Връзка към фактура LinkToTemplateInvoice=Връзка към шаблонна фактура @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Прекратяване +Terminated=Деактивиран +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/bg_BG/members.lang b/htdocs/langs/bg_BG/members.lang index 0be073a7051..64e685b7522 100644 --- a/htdocs/langs/bg_BG/members.lang +++ b/htdocs/langs/bg_BG/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Идентификатор на член +MemberId=Member Id +MemberRef=Member Ref NewMember=Нов член MemberType=Тип член MemberTypeId=Идентификатор за тип на член @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/bg_BG/oauth.lang b/htdocs/langs/bg_BG/oauth.lang index 45026ee6760..da26c9a8cf9 100644 --- a/htdocs/langs/bg_BG/oauth.lang +++ b/htdocs/langs/bg_BG/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Беше генериран и съхранен токен в л NewTokenStored=Токенът е получен и съхранен ToCheckDeleteTokenOnProvider=Кликнете тук, за да проверите / изтриете разрешение, съхранено от %s OAuth доставчик TokenDeleted=Токенът е изтрит -RequestAccess=Кликнете тук, за да заявите / подновите достъпа и да получите нов токен, който да запазите +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Кликнете тук, за да изтриете токенът UseTheFollowingUrlAsRedirectURI=Използвайте следния URL адрес като URI за пренасочване, когато създавате идентификационни данни през вашият доставчик на OAuth: -ListOfSupportedOauthProviders=Въведете идентификационните данни, предоставени от вашият OAuth2 доставчик. Тук са изброени поддържаните OAuth2 доставчици. Тези услуги могат да бъдат използвани от други модули, които се нуждаят от OAuth2 удостоверяване. -OAuthSetupForLogin=Страница за генериране на OAuth токен +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Вижте предишния раздел +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID и Secret TOKEN_REFRESH=Налично е опресняване на токен TOKEN_EXPIRED=Токенът е изтекъл @@ -23,10 +24,13 @@ TOKEN_DELETE=Изтриване на съхранен токен OAUTH_GOOGLE_NAME=OAuth услуга на Google OAUTH_GOOGLE_ID=OAuth Google идентификатор OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Отидете на тази страница след това 'Удостоверения', за да създадете OAuth удостоверения OAUTH_GITHUB_NAME=OAuth услуга на GitHub OAUTH_GITHUB_ID=OAuth GitHub идентификатор OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Отидете на тази страница след това 'Регистриране на ново приложение', за да създадете OAuth удостоверения +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe тест OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/bg_BG/stocks.lang b/htdocs/langs/bg_BG/stocks.lang index fff80ee9a68..d26b4f76633 100644 --- a/htdocs/langs/bg_BG/stocks.lang +++ b/htdocs/langs/bg_BG/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Минималното количество за п ProductStockWarehouseUpdated=Минималното количество за предупреждение и желаните оптимални наличности са правилно актуализирани ProductStockWarehouseDeleted=Минималното количество за предупреждение и желаните оптимални наличности са правилно изтрити AddNewProductStockWarehouse=Определяне на ново минимално количество за предупреждение и желана оптимална наличност -AddStockLocationLine=Намалете количеството, след което кликнете, за да добавите друг склад за този продукт +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Дата на инвентаризация Inventories=Инвентаризации NewInventory=Нова инвентаризация @@ -254,7 +254,7 @@ ReOpen=Повторно отваряне ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Начало InventoryStartedShort=Започнати ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Настройки +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/bn_BD/errors.lang b/htdocs/langs/bn_BD/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/bn_BD/errors.lang +++ b/htdocs/langs/bn_BD/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/bn_BD/externalsite.lang b/htdocs/langs/bn_BD/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/bn_BD/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/bn_BD/ftp.lang b/htdocs/langs/bn_BD/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/bn_BD/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/bn_BD/install.lang b/htdocs/langs/bn_BD/install.lang index 9d76ad15d43..6aee82bacec 100644 --- a/htdocs/langs/bn_BD/install.lang +++ b/htdocs/langs/bn_BD/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Configuration file %s is writable. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=This PHP supports variables POST and GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=This PHP supports sessions. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. -ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Database '%s' already exists. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/bn_BD/stocks.lang b/htdocs/langs/bn_BD/stocks.lang index 599c9649b18..7137edcf576 100644 --- a/htdocs/langs/bn_BD/stocks.lang +++ b/htdocs/langs/bn_BD/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Started ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/bn_IN/errors.lang b/htdocs/langs/bn_IN/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/bn_IN/errors.lang +++ b/htdocs/langs/bn_IN/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/bn_IN/externalsite.lang b/htdocs/langs/bn_IN/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/bn_IN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/bn_IN/ftp.lang b/htdocs/langs/bn_IN/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/bn_IN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/bs_BA/categories.lang b/htdocs/langs/bs_BA/categories.lang index 9134cd1112d..09651c44c1f 100644 --- a/htdocs/langs/bs_BA/categories.lang +++ b/htdocs/langs/bs_BA/categories.lang @@ -3,7 +3,7 @@ Rubrique=Tag/Category Rubriques=Tags/Categories RubriquesTransactions=Tags/Categories of transactions categories=tags/categories -NoCategoryYet=No tag/category of this type has been created +NoCategoryYet=kreirano In=U AddIn=Dodaj u modify=izmijeniti @@ -42,7 +42,7 @@ MemberHasNoCategory=This member is not in any tags/categories ContactHasNoCategory=This contact is not in any tags/categories ProjectHasNoCategory=This project is not in any tags/categories ClassifyInCategory=Add to tag/category -NotCategorized=Without tag/category +NotCategorized=Bez oznake/kategorije CategoryExistsAtSameLevel=Već postoji kategorija sa ovom referencom ContentsVisibleByAllShort=Sadržaj vidljiv svima ContentsNotVisibleByAllShort=Sadržaj nije vidljiv svima @@ -90,10 +90,12 @@ CategorieRecursivHelp=If option is on, when you add a product into a subcategory AddProductServiceIntoCategory=Add the following product/service AddCustomerIntoCategory=Assign category to customer AddSupplierIntoCategory=Assign category to supplier +AssignCategoryTo=Assign category to ShowCategory=Show tag/category ByDefaultInList=By default in list ChooseCategory=Choose category StocksCategoriesArea=Warehouse Categories +TicketsCategoriesArea=Tickets Categories ActionCommCategoriesArea=Event Categories WebsitePagesCategoriesArea=Page-Container Categories KnowledgemanagementsCategoriesArea=KM article Categories diff --git a/htdocs/langs/bs_BA/companies.lang b/htdocs/langs/bs_BA/companies.lang index 0ab41689512..d97b5328f14 100644 --- a/htdocs/langs/bs_BA/companies.lang +++ b/htdocs/langs/bs_BA/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Vrsta treće strane NatureOfContact=Nature of Contact Address=Adresa State=Država/Provincija +StateId=State ID StateCode=State/Province code StateShort=Pokrajina Region=Region Region-State=Regija - Zemlja Country=Država CountryCode=Šifra države -CountryId=ID države +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skajp @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Drugi ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/bs_BA/errors.lang b/htdocs/langs/bs_BA/errors.lang index 864a09e3e63..25fa336f994 100644 --- a/htdocs/langs/bs_BA/errors.lang +++ b/htdocs/langs/bs_BA/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/bs_BA/externalsite.lang b/htdocs/langs/bs_BA/externalsite.lang deleted file mode 100644 index 54a33f638e8..00000000000 --- a/htdocs/langs/bs_BA/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Podesi link za eksterni web sajt -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul ExternalSite nije konfigurisan kako treba. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/bs_BA/ftp.lang b/htdocs/langs/bs_BA/ftp.lang deleted file mode 100644 index 924bd5389f3..00000000000 --- a/htdocs/langs/bs_BA/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Postavke modula FTP klijent -NewFTPClient=Postavke nove FTP konekcije -FTPArea=Područje za FTP -FTPAreaDesc=Ovaj prozor prikazuje sadržaj FTP servera -SetupOfFTPClientModuleNotComplete=Postavke modula FTP klijent nisu završene -FTPFeatureNotSupportedByYourPHP=Vaš PHP ne podržava FTP funkcije -FailedToConnectToFTPServer=Neuspjelo povezivanje na FTP server (server %s port %s) -FailedToConnectToFTPServerWithCredentials=Neuspio login na FTP server sa definisanim login/šifra -FTPFailedToRemoveFile=Neuspjelo uklanjanje fajla %s. -FTPFailedToRemoveDir=Neuspjelo uklanjanje direktorija %s (Provjerite dozvole i da li je direktorij prazan) -FTPPassiveMode=Pasivni način -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/bs_BA/hrm.lang b/htdocs/langs/bs_BA/hrm.lang index 1e104221bc4..e7fb5192894 100644 --- a/htdocs/langs/bs_BA/hrm.lang +++ b/htdocs/langs/bs_BA/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Open establishment CloseEtablishment=Close establishment # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Department list +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Employees @@ -20,13 +20,14 @@ Employee=Zaposlenik NewEmployee=New employee ListOfEmployees=List of employees HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Pozicija -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/bs_BA/install.lang b/htdocs/langs/bs_BA/install.lang index 42302ea3b5d..ad77b76a54f 100644 --- a/htdocs/langs/bs_BA/install.lang +++ b/htdocs/langs/bs_BA/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Konfiguracijska datoteka %s je slobodna za pisanje. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Ovaj PHP podržava varijable POST i GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Ovaj PHP podržava sesije. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. -ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Database '%s' already exists. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/bs_BA/members.lang b/htdocs/langs/bs_BA/members.lang index dd10392002d..e8ed7ded6de 100644 --- a/htdocs/langs/bs_BA/members.lang +++ b/htdocs/langs/bs_BA/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, logi 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. SetLinkToUser=Link to a Dolibarr user SetLinkToThirdParty=Link to a Dolibarr third party -MembersCards=Business cards for members +MembersCards=Generation of cards for members MembersList=List of members MembersListToValid=List of draft members (to be validated) MembersListValid=List of valid members @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Member id +MemberId=Member Id +MemberRef=Member Ref NewMember=New member MemberType=Member type MemberTypeId=Member type id @@ -159,11 +160,11 @@ HTPasswordExport=htpassword file generation NoThirdPartyAssociatedToMember=No third party associated with this member MembersAndSubscriptions=Members and Contributions MoreActions=Complementary action on recording -MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution +MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution MoreActionBankDirect=Create a direct entry on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionInvoiceOnly=Create an invoice with no payment -LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPages=Generation of business cards or address sheets LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. DocForAllMembersCards=Generate business cards for all members DocForOneMemberCards=Generate business cards for a particular member @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/bs_BA/stocks.lang b/htdocs/langs/bs_BA/stocks.lang index f9911423073..f78217716f8 100644 --- a/htdocs/langs/bs_BA/stocks.lang +++ b/htdocs/langs/bs_BA/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Započeto ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/ca_ES/accountancy.lang b/htdocs/langs/ca_ES/accountancy.lang index 725c5501a4a..006583d8ec0 100644 --- a/htdocs/langs/ca_ES/accountancy.lang +++ b/htdocs/langs/ca_ES/accountancy.lang @@ -50,8 +50,8 @@ CountriesExceptMe=Tots els països, excepte %s AccountantFiles=Exporta documents d'origen ExportAccountingSourceDocHelp=Amb aquesta eina, podeu exportar els esdeveniments d'origen (llista en CSV i PDF) que s'utilitzen per a generar la vostra comptabilitat. ExportAccountingSourceDocHelp2=Per a exportar els vostres diaris, utilitzeu l'entrada de menú %s - %s. -VueByAccountAccounting=Veure per compte comptable -VueBySubAccountAccounting=Veure-ho per subcomptes comptables +VueByAccountAccounting=Visualització per compte comptable +VueBySubAccountAccounting=Visualització per subcompte comptable MainAccountForCustomersNotDefined=Compte comptable per a clients no definida en la configuració MainAccountForSuppliersNotDefined=Compte comptable principal per a proveïdors no definit a la configuració @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Desactiva el registre directe de transaccions al compt ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Habilita l'exportació d'esborrany en el diari ACCOUNTANCY_COMBO_FOR_AUX=Activa la llista combinada per a un compte subsidiari (pot ser lent si tens molts tercers, trenca la capacitat de cerca en una part del valor) ACCOUNTING_DATE_START_BINDING=Definiu una data per a començar la vinculació i transferència a la comptabilitat. Per sota d’aquesta data, les transaccions no es transferiran a la comptabilitat. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En el cas de transferència de comptabilitat, seleccioneu el període a mostrar per defecte +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferència comptable, quin és el període seleccionat per defecte ACCOUNTING_SELL_JOURNAL=Diari de venda ACCOUNTING_PURCHASE_JOURNAL=Diari de compra @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Compte comptable per a registrar les donacions ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Compte comptable per a registrar les donacions ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Compte comptable per defecte per a registrar el dipòsit del client -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Emmagatzema el compte del client com a compte individual al llibre major subsidiari per a les línies de pagament inicial (si està desactivat, el compte individual per a les línies de pagament inicial romandrà buit) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Compte comptable per defecte per als productes comprats (utilitzat si no es defineix en el producte) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Compte de comptabilitat per defecte dels productes comprats a la CEE (utilitzat si no està definit a la taula de productes) @@ -224,7 +224,7 @@ DeleteMvt=Elimina algunes línies de la comptabilitat DelMonth=Mes a eliminar DelYear=Any a eliminar DelJournal=Diari per a suprimir -ConfirmDeleteMvt=Això suprimirà totes les línies de comptabilitat per a l'any/mes i/o per a un diari específic (cal almenys un criteri). Haureu de reutilitzar la característica '%s' per a tornar a tenir el registre suprimit al llibre major. +ConfirmDeleteMvt=Això suprimirà totes les línies de comptabilitat per a l'any/mes i/o per a un diari específic (cal almenys un criteri). Haureu de reutilitzar la característica «%s» per a tornar a tenir el registre suprimit al llibre major. ConfirmDeleteMvtPartial=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció) FinanceJournal=Diari de finances ExpenseReportsJournal=Informe-diari de despeses @@ -279,10 +279,10 @@ DescVentilExpenseReportMore=Si poseu el compte comptable sobre les línies de l' DescVentilDoneExpenseReport=Consulteu aquí la llista de les línies d'informes de despeses i el seu compte comptable de comissions Closure=Tancament anual -DescClosure=Consult here the number of movements by month who are not yet validated & locked -OverviewOfMovementsNotValidated=Overview of movements not validated and locked -AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked +DescClosure=Consulta aquí el nombre de moviments per mes encara no validats i bloquejats +OverviewOfMovementsNotValidated=Visió general dels moviments no validats i bloquejats +AllMovementsWereRecordedAsValidated=Tots els moviments es van registrar com a validats i bloquejats +NotAllMovementsCouldBeRecordedAsValidated=No tots els moviments es van poder registrar com a validats i bloquejats ValidateMovements=Valida i bloqueja el registre... DescValidateMovements=Queda prohibida qualsevol modificació o supressió de registres. Totes les entrades d’un exercici s’han de validar, en cas contrari, el tancament no serà possible @@ -290,7 +290,7 @@ ValidateHistory=Comptabilitza automàticament AutomaticBindingDone=Enllaços automàtics fets (%s): l'enllaç automàtic no és possible per a alguns registres (%s) ErrorAccountancyCodeIsAlreadyUse=Error, no pots eliminar aquest compte comptable perquè està en ús -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +MvtNotCorrectlyBalanced=Moviment no equilibrat correctament. Dèbit = %s i crèdit = %s Balancing=Saldo FicheVentilation=Fitxa de comptabilització GeneralLedgerIsWritten=Els assentaments s'han escrit al Llibre Major @@ -303,7 +303,7 @@ NotYetAccounted=Encara no s'ha traslladat a la comptabilitat ShowTutorial=Mostrar Tutorial NotReconciled=No conciliat WarningRecordWithoutSubledgerAreExcluded=Avís, totes les línies sense un compte de registre secundari definit es filtren i s'exclouen d'aquesta vista -AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts +AccountRemovedFromCurrentChartOfAccount=Compte comptable que no existeix al pla comptable actual ## Admin BindingOptions=Opcions d'enquadernació @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Desactiva la vinculació i transfer ## Export NotifiedExportDate=Marca les línies exportades com a Exportades (per a modificar una línia, hauràs de suprimir tota la transacció i tornar-la a transferir a la comptabilitat) -NotifiedValidationDate=Validar i bloquejar les entrades exportades (el mateix efecte que la funció "Tancament", la modificació i la supressió de les línies DEFINITIVAMENT no seran possibles) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Validació de data i bloqueig ConfirmExportFile=Confirmació de la generació del fitxer d'exportació comptable? ExportDraftJournal=Exporta els esborranys del llibre @@ -398,19 +398,19 @@ Calculated=Calculat Formula=Fórmula ## Reconcile -Unlettering=Unreconcile -AccountancyNoLetteringModified=No reconcile modified -AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified -AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified -AccountancyNoUnletteringModified=No unreconcile modified -AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified -AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified +Unlettering=No reconciliar +AccountancyNoLetteringModified=Cap conciliació modificada +AccountancyOneLetteringModifiedSuccessfully=Una conciliació modificada amb èxit +AccountancyLetteringModifiedSuccessfully=La reconciliació %s s'ha modificat correctament +AccountancyNoUnletteringModified=No s'ha modificat cap desacord +AccountancyOneUnletteringModifiedSuccessfully=S'ha desfet correctament una conciliació +AccountancyUnletteringModifiedSuccessfully=%s conciliació desfeta correctament ## Confirm box -ConfirmMassUnlettering=Bulk Unreconcile confirmation -ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassUnlettering=Confirmació de desfer la conciliació massiva +ConfirmMassUnletteringQuestion=Esteu segur que voleu anul·lar la conciliació dels registres seleccionats %s? ConfirmMassDeleteBookkeepingWriting=Confirmació d'esborrament massiu -ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? +ConfirmMassDeleteBookkeepingWritingQuestion=Això suprimirà la transacció de la comptabilitat (se suprimiran totes les línies relacionades amb la mateixa transacció) Esteu segur que voleu suprimir els registres seleccionats %s? ## Error SomeMandatoryStepsOfSetupWereNotDone=No s'han fet alguns passos obligatoris de configuració, si us plau, completeu-los @@ -424,9 +424,10 @@ Binded=Línies comptabilitzades ToBind=Línies a comptabilitzar UseMenuToSetBindindManualy=Línies encara no enllaçades, utilitzeu el menú %s per a fer l'enllaç manualment SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Ho sentim, aquest mòdul no és compatible amb la funció experimental de les factures de situació -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code -AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 -AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +AccountancyErrorMismatchLetterCode=No coincideix en el codi de conciliació +AccountancyErrorMismatchBalanceAmount=El saldo (%s) no és igual a 0 +AccountancyErrorLetteringBookkeeping=S'han produït errors relacionats amb les transaccions: %s +ErrorAccountNumberAlreadyExists=El número de comptabilitat %s ja existeix ## Import ImportAccountingEntries=Entrades de comptabilitat diff --git a/htdocs/langs/ca_ES/admin.lang b/htdocs/langs/ca_ES/admin.lang index cc0fcafdd4c..135680a2e8f 100644 --- a/htdocs/langs/ca_ES/admin.lang +++ b/htdocs/langs/ca_ES/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Pròxim valor (rectificatives) MustBeLowerThanPHPLimit=Nota: actualment la vostra configuració PHP limita la mida màxima de fitxers per a la pujada a %s %s, independentment del valor d'aquest paràmetre. NoMaxSizeByPHPLimit=Cap limitació interna en el seu servidor PHP MaxSizeForUploadedFiles=Mida màxima per als fitxers a pujar (0 per a no permetre cap pujada) -UseCaptchaCode=Utilitzeu el codi gràfic (CAPTCHA) a la pàgina d'inici de sessió +UseCaptchaCode=Utilitzeu el codi gràfic (CAPTCHA) a la pàgina d'inici de sessió i en algunes pàgines públiques AntiVirusCommand=Ruta completa cap al comandament antivirus AntiVirusCommandExample=Exemple per al dimoni ClamAv (requereix clamav-daemon): /usr/bin/clamdscan
Exemple per a ClamWin (molt molt lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Més paràmetres a la línia d'ordres @@ -251,7 +251,7 @@ DoNotStoreClearPassword=Encripta les contrasenyes emmagatzemades a la base de da MainDbPasswordFileConfEncrypted=Encriptar la contrasenya de la base de dades emmagatzemada a conf.php. Es recomana activar aquesta opció. InstrucToEncodePass=Per a tenir la contrasenya codificada al fitxer conf.php, substituïu la línia
$ dolibarr_main_db_pass="...";
per
$dolibarr_main_db_pass = "xifrat:%s"; InstrucToClearPass=Per a tenir la contrasenya descodificada en el fitxer de configuració conf.php, reemplaça en aquest fitxer la línia
$dolibarr_main_db_pass="crypted:...";
per
$dolibarr_main_db_pass="%s"; -ProtectAndEncryptPdfFiles=Protegeix els fitxers PDF generats. Això NO es recomana ja que trenca la generació massiva de PDF. +ProtectAndEncryptPdfFiles=Protegiu els fitxers PDF generats. Això NO es recomana perquè trenca la generació massiva de PDF. ProtectAndEncryptPdfFilesDesc=La protecció d’un document PDF el manté disponible per a llegir i imprimir amb qualsevol navegador PDF. Tanmateix, ja no és possible editar ni copiar. Tingueu en compte que l'ús d'aquesta funció fa que la creació d'un PDF combinat global no funcioni. Feature=Funció DolibarrLicense=Llicència @@ -309,9 +309,9 @@ MAIN_MAIL_EMAIL_DKIM_ENABLED=Utilitzar DKIM per a generar firma d'email MAIN_MAIL_EMAIL_DKIM_DOMAIN=Domini d'email per a utilitzar amb dkim MAIN_MAIL_EMAIL_DKIM_SELECTOR=Nom del selector dkim MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Clau privada per a la firma dkim -MAIN_DISABLE_ALL_SMS=Desactivar globalment tot enviament de SMS (per mode de proves o demo) -MAIN_SMS_SENDMODE=Mètode d'enviament de SMS -MAIN_MAIL_SMS_FROM=Número de telèfon del remitent predeterminat per a l'enviament de SMS +MAIN_DISABLE_ALL_SMS=Desactiva tots els enviaments d'SMS (per a finalitats de prova o demostracions) +MAIN_SMS_SENDMODE=Mètode a utilitzar per a enviar SMS +MAIN_MAIL_SMS_FROM=Número de telèfon del remitent predeterminat per a l'enviament d'SMS MAIN_MAIL_DEFAULT_FROMTYPE=Remitent per defecte per a correus enviats manualment (adreça de correu d'usuari o d'empresa) UserEmail=Correu electrònic de l'usuari CompanyEmail=Correu electrònic de l'empresa @@ -358,7 +358,7 @@ LastActivationIP=Última IP d'activació LastActivationVersion=Última versió d'activació UpdateServerOffline=Actualitza el servidor fora de línia WithCounter=Gestiona un comptador -GenericMaskCodes=Podeu introduir qualsevol màscara de numeració. En aquesta màscara, es poden utilitzar les etiquetes següents:
{000000} correspon a un número que s'incrementarà a cada %s. Introduïu tants zeros com la longitud desitjada del comptador. El comptador es completarà amb zeros des de l'esquerra per tal de tenir tants zeros com la màscara.
{000000+000} igual que l'anterior però s'aplica un desplaçament corresponent al número a la dreta del signe + a partir del primer %s.
{000000@x} igual que l'anterior, però el comptador es reinicia a zero quan s'arriba al mes x (x entre 1 i 12, o 0 per a utilitzar els primers mesos de l'any fiscal definits a la vostra configuració, o 99 torna a zero cada mes). Si s'utilitza aquesta opció i x és 2 o superior, també es requereix la seqüència {yy} {mm} o {yyyy} {mm}.
{dd} dia (de l'1 al 31).
{mm} mes (de l'1 al 12).
{yy} , {yyyy} o {y} amb l'any sobre 2, 4 o 1 número.
+GenericMaskCodes=Podeu introduir qualsevol màscara de numeració. En aquesta màscara, es poden utilitzar les etiquetes següents:
{000000} correspon a un número que s'incrementarà a cada %s. Introduïu tants zeros com la longitud desitjada del comptador. El comptador es completarà amb zeros des de l'esquerra per tal de tenir tants zeros com la màscara.
{000000+000} igual que l'anterior, però s'aplica un desplaçament corresponent al número a la dreta del signe + a partir del primer %s.
{000000@x} igual que l'anterior, però el comptador es reinicia a zero quan s'arriba al mes x (x entre 1 i 12, o 0 per a utilitzar els primers mesos de l'any fiscal definits a la vostra configuració, o 99 torna a zero cada mes). Si s'utilitza aquesta opció i x és 2 o superior, també es requereix la seqüència {yy} {mm} o {yyyy} {mm}.
{dd} dia (de l'1 al 31).
{mm} mes (de l'1 al 12).
{yy} , {yyyy} o {y} amb l'any sobre 2, 4 o 1 número.
GenericMaskCodes2= {cccc} el codi del client en n caràcters
{cccc000} a09a4b739f17f8z. Aquest comptador dedicat al client es restableix al mateix temps que el comptador global.
{tttt} El codi del tipus de tercers en n caràcters (vegeu el menú Inici - Configuració - Diccionari - Tipus de tercers). Si afegiu aquesta etiqueta, el comptador serà diferent per a cada tipus de tercer.
GenericMaskCodes3=Qualsevol altre caràcter a la màscara es quedarà sense canvis.
No es permeten espais
GenericMaskCodes3EAN=La resta de caràcters de la màscara romandran intactes (excepte * o ? En 13a posició a EAN13).
No es permeten espais.
A EAN13, l'últim caràcter després de l'últim } a la 13a posició hauria de ser * o ? . Se substituirà per la clau calculada.
@@ -390,7 +390,7 @@ ListOfDirectories=Llistat de directoris de plantilles OpenDocument ListOfDirectoriesForModelGenODT=Llista de directoris que contenen fitxers de plantilles amb format OpenDocument.

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

Els fitxers d'aquests directoris han de tenir l'extensió .odt o .ods. NumberOfModelFilesFound=Nombre d'arxius de plantilles ODT/ODS trobats en aquest(s) directori(s) ExampleOfDirectoriesForModelGen=Exemples de sintaxi:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir -FollowingSubstitutionKeysCanBeUsed=Posant les següents etiquetes a la plantilla, obtindrà una substitució amb el valor personalitzat en generar el document: +FollowingSubstitutionKeysCanBeUsed=
Per a saber com crear les teves plantilles de documents odt, abans d'emmagatzemar-les en aquests directoris, llegiu la documentació wiki: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Crear_un_modelo_de_documento_ODT FirstnameNamePosition=Posició del Nom/Cognoms DescWeather=Les imatges següents es mostraran al tauler de control quan el nombre d'accions posteriors arriba als valors següents: @@ -403,7 +403,7 @@ ResponseTimeout=Timeout de resposta SmsTestMessage=Missatge de prova de __PHONEFROM__ per __PHONETO__ ModuleMustBeEnabledFirst=El mòdul "%s" ha d'habilitar-se primer si necessita aquesta funcionalitat. SecurityToken=Clau per a protegir els URL -NoSmsEngine=No hi ha cap gestor d'enviament de SMS. Els gestors d'enviament de SMS no s'instal·len per defecte ja que depenen de cada proveïdor, però pot trobar-los a la plataforma %s +NoSmsEngine=No hi ha cap gestor de remitents d'SMS disponible. Un gestor de remitents d'SMS no està instal·lat amb la distribució predeterminada perquè depenen d'un proveïdor extern, però podeu trobar-ne alguns a %s PDF=PDF PDFDesc=Opcions globals de generació de PDF PDFOtherDesc=Opció PDF específica per a alguns mòduls @@ -458,7 +458,7 @@ ExtrafieldParamHelpselect=La llista de valors ha de ser un conjunt de línies am ExtrafieldParamHelpcheckbox=La llista de valor ha de ser un conjunt de línies del tipus clau,valor (on la clau no pot ser '0')

per exemple:
1,valor1
2,valor2
3,valor3
... ExtrafieldParamHelpradio=La llista de valor ha de ser un conjunt de línies del tipus clau,valor (on la clau no pot ser '0')

per exemple:
1,valor1
2,valor2
3,valor3
... ExtrafieldParamHelpsellist=Llista de valors que provenen d’una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtresql
Exemple: c_typent:libelle:id::filtresql

- id_camp ha de ser necessàriament una clau primària numèrica
- el filtresql és una condició SQL. Pot ser una prova simple (p.ex. active=1) per a mostrar només els valors actius
També pots utilitzar $ID$ al filtre per a representar el ID de l'actual objecte en curs
Per a utilitzar un SELECT al filtre, utilitzeu la paraula clau $SEL$ per a evitar la protecció anti injecció.
Si vols filtrar camps addicionals utilitza la sintaxi extra.nom_camp=... (on nom_camp és el codi del camp addicional)

Per a tenir la llista en funció d’una altra llista d’atributs complementaris:
c_typent:libelle:id:options_codi_llista_mare|parent_column:filtre

Per a tenir la llista en funció d'una altra llista:
c_typent:libelle:id:codi_llista_mare|parent_column:filter -ExtrafieldParamHelpchkbxlst=La llista de valors prové d'una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtre
Exemple: c_typent:libelle:id::filtre

filtre pot ser una comprovació simple (p. ex. active=1) per a mostrar només el valor actiu
També podeu utilitzar $ID$ en el filtre per a representar l'ID actual de l'objecte en curs
Per a fer un SELECT al filtre, utilitzeu $SEL$
si voleu filtrar per camps extra utilitzeu la sintaxi extra.fieldcode=... (on el codi de camp és el codi del extrafield)

Per a tenir la llista depenent d'una altra llista d'atributs complementaris:
c_typent:libelle:id:options_codi_llista_pare|parent_column: filter

Per a tenir la llista depenent d'una altra llista:
c_typent:libelle:id:codi_llista_pare|parent_column:filter +ExtrafieldParamHelpchkbxlst=La llista de valors prové d'una taula
Sintaxi: nom_taula:nom_camp:id_camp::filtre
Exemple: c_typent:libelle:id::filtre

filtre pot ser una comprovació simple (p. ex. active=1) per a mostrar només el valor actiu
També podeu utilitzar $ID$ en el filtre per a representar l'ID actual de l'objecte en curs
Per a fer un SELECT al filtre, utilitzeu $SEL$
si voleu filtrar per camps extra utilitzeu la sintaxi extra.fieldcode=... (on el codi de camp és el codi del camp extra)

Per a tenir la llista depenent d'una altra llista d'atributs complementaris:
c_typent:libelle:id:options_codi_llista_pare|parent_column: filter

Per a tenir la llista depenent d'una altra llista:
c_typent:libelle:id:codi_llista_pare|parent_column:filter ExtrafieldParamHelplink=Els paràmetres han de ser ObjectName:Classpath
Sintaxi: ObjectName:Classpath ExtrafieldParamHelpSeparator=Manteniu-lo buit per un simple separador
Configureu-ho a 1 per a un separador col·lapsador (obert per defecte per a la sessió nova, i es mantindrà l'estat de cada sessió d'usuari)
Configureu-ho a 2 per a un separador col·lapsat (es va desplomar per defecte per a la sessió nova, i es mantindrà l'estat per a cada sessió d'usuari) LibraryToBuildPDF=Llibreria utilitzada per a la generació de PDF @@ -498,20 +498,20 @@ ModuleCompanyCodeSupplierDigitaria=%s seguit pel nom abreujat del proveïdor pel Use3StepsApproval=Per defecte, les comandes de compra necessiten ser creades i aprovades per 2 usuaris diferents (el primer pas/usuari és per a crear i un altre pas/usuari per a aprovar. Noteu que si un usuari té permisos tant per a crear com per a aprovar, un sol pas/usuari serà suficient). Amb aquesta opció, tens la possibilitat d'introduir un tercer pas/usuari per a l'aprovació, si l'import és superior a un determinat valor (d'aquesta manera són necessaris 3 passos: 1=validació, 2=primera aprovació i 3=segona aprovació si l'import és suficient).
Deixa-ho en blanc si només vols un nivell d'aprovació (2 passos); posa un valor encara que sigui molt baix (0,1) si vols una segona aprovació (3 passos). UseDoubleApproval=Utilitza una aprovació en 3 passos quan l'import (sense impostos) sigui més gran que... WarningPHPMail=ADVERTÈNCIA: la configuració per a enviar correus electrònics des de l'aplicació utilitza la configuració genèrica predeterminada. Sovint és millor configurar els correus electrònics de sortida per a utilitzar el servidor de correu electrònic del vostre proveïdor de serveis de correu electrònic en lloc de la configuració predeterminada per diversos motius: -WarningPHPMailA=- L’ús del servidor del proveïdor de serveis de correu electrònic augmenta la confiança del vostre correu electrònic, de manera que augmenta l'enviament sense ser marcat com a SPAM +WarningPHPMailA=- L'ús del servidor del proveïdor de serveis de correu electrònic augmenta la fiabilitat del vostre correu electrònic, de manera que augmenta el lliurament sense ser marcat com a Correu brossa WarningPHPMailB=- Alguns proveïdors de serveis de correu electrònic (com Yahoo) no us permeten enviar un correu electrònic des d'un altre servidor que el seu propi servidor. La configuració actual utilitza el servidor de l’aplicació per a enviar correus electrònics i no el servidor del vostre proveïdor de correu electrònic, de manera que alguns destinataris (el compatible amb el protocol DMARC restrictiu) demanaran al vostre proveïdor de correu electrònic si poden acceptar el vostre correu electrònic i alguns proveïdors de correu electrònic. (com Yahoo) pot respondre "no" perquè el servidor no és seu, de manera que és possible que pocs dels vostres correus electrònics enviats no s'acceptin per al lliurament (tingueu cura també de la quota d'enviament del vostre proveïdor de correu electrònic). WarningPHPMailC=- També és interessant utilitzar el servidor SMTP del vostre proveïdor de serveis de correu electrònic per a enviar correus electrònics, de manera que tots els correus electrònics enviats des de l’aplicació també es guardaran al directori "Enviats" de la vostra bústia de correu. WarningPHPMailD=Així mateix, es recomana canviar el mètode d'enviament de correus electrònics pel valor "SMTP". Si realment voleu mantenir el mètode predeterminat "PHP" per a enviar correus electrònics, només ignoreu aquest advertiment o elimineu-lo establint la constant MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP a 1 a Inici - Configuració - Altres. WarningPHPMail2=Si el vostre proveïdor SMTP necessita restringir al client de correu a una adreça IP (molt estrany), aquesta és la IP de l'agent d'usuari de correu (MUA) per la vostra aplicació ERP CRM: %s. WarningPHPMailSPF=Si el nom de domini de la vostra adreça de correu electrònic del remitent està protegit per un registre SPF (demaneu al registre del vostre nom de domini), heu d'afegir les IP següents al registre SPF del DNS del vostre domini: %s . -ActualMailSPFRecordFound=Registre SPF real trobat: %s +ActualMailSPFRecordFound=Registre SPF real trobat (per al correu electrònic %s): %s ClickToShowDescription=Feu clic per a mostrar la descripció DependsOn=Aquest mòdul necessita els mòduls RequiredBy=Aquest mòdul és requerit pel/s mòdul/s TheKeyIsTheNameOfHtmlField=Aquest és el nom del camp HTML. Es necessiten coneixements tècnics per a llegir el contingut de la pàgina HTML per a obtenir el nom clau d’un camp. PageUrlForDefaultValues=Has d'introduir aquí l'URL relatiu de la pàgina. Si inclous paràmetres a l'URL, els valors predeterminats seran efectius si tots els paràmetres s'estableixen en el mateix valor. PageUrlForDefaultValuesCreate=
Exemple:
Per al formulari per a crear un tercer nou, és %s.
Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no incloeu el "custom/", així que utilitzeu una ruta com mymodule/mypage.php i no custom/mymodule/mypage.php.
Si només voleu un valor per defecte si l'URL té algun paràmetre, podeu utilitzar %s -PageUrlForDefaultValuesList=
Exemple:
Per a la pàgina que llista els tercers, és %s.
Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no incloeu el "custom/", de manera que utilitzeu un ruta com mymodule/mypagelist.php i no custom/mymodule/mypagelist.php.
Si només voleu un valor per defecte si l'URL té algun paràmetre, podeu utilitzar %s +PageUrlForDefaultValuesList=
Exemple:
Per a la pàgina que llista els tercers, és %s.
Per a l'URL dels mòduls externs instal·lats al directori personalitzat, no incloeu el "custom/", de manera que utilitzeu una ruta com mymodule/mypagelist.php i no custom/mymodule/mypagelist.php.
Si només voleu un valor per defecte si l'URL té algun paràmetre, podeu utilitzar %s AlsoDefaultValuesAreEffectiveForActionCreate=També tingueu en compte que sobreescriure valors predeterminats per a la creació de formularis funciona només per a pàgines dissenyades correctament (de manera que amb el paràmetre action = create o presend ...) EnableDefaultValues=Activa la personalització dels valors predeterminats EnableOverwriteTranslation=Habilita l'ús de la traducció sobreescrita @@ -580,8 +580,8 @@ Module57Name=Cobraments per domiciliació bancària Module57Desc=Gestió de comandes de dèbit directe. Inclou la generació de fitxers SEPA per a països europeus. Module58Name=ClickToDial Module58Desc=Integració amb ClickToDial -Module60Name=Enganxines -Module60Desc=Gestió d’enganxines +Module60Name=Adhesius +Module60Desc=Gestió d'adhesius Module70Name=Intervencions Module70Desc=Gestió de la intervenció Module75Name=Notes de despeses i desplaçaments @@ -611,7 +611,7 @@ Module330Desc=Crear marcadors, sempre accessibles, a les pàgines internes o ext Module400Name=Projectes o Oportunitats Module400Desc=Gestió de projectes, oportunitats/leads o tasques. També podeu assignar qualsevol element (factura, comanda, pressupost, intervenció...) a un projecte i obtenir una vista transversal del projecte. Module410Name=Webcalendar -Module410Desc=Interface amb el calendari webcalendar +Module410Desc=Integració del calendari web Module500Name=Impostos i Despeses especials Module500Desc=Gestió d'altres despeses (impostos sobre vendes, impostos socials o fiscals, dividends, ...) Module510Name=Salaris @@ -630,7 +630,7 @@ Module770Desc=Gestiona les reclamacions d'informes de despeses (transport, menja Module1120Name=Pressupostos de proveïdor Module1120Desc=Sol·licitar al venedor cotització i preus Module1200Name=Mantis -Module1200Desc=Interface amb el sistema de seguiment d'incidències Mantis +Module1200Desc=Integració de Mantis Module1520Name=Generar document Module1520Desc=Generació de documents de correu electrònic massiu Module1780Name=Etiquetes @@ -660,7 +660,7 @@ Module3200Name=Arxius inalterables Module3200Desc=Activa el registre d'alguns esdeveniments de negoci en un registre inalterable. Els esdeveniments s'arxiven en temps real. El registre és una taula d'esdeveniments encadenats que només es poden llegir i exportar. Aquest mòdul pot ser obligatori per a alguns països. Module3400Name=Xarxes socials Module3400Desc=Activa els camps de les xarxes socials a tercers i adreces (skype, twitter, facebook...). -Module4000Name=RRHH +Module4000Name=RH Module4000Desc=Gestió de recursos humans (gestionar departaments, empleats, contractes i "feelings") Module5000Name=Multiempresa Module5000Desc=Permet gestionar diverses empreses @@ -718,9 +718,9 @@ Permission34=Elimina productes Permission36=Veure/gestionar els productes ocults Permission38=Exportar productes Permission39=Ignora el preu mínim -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission41=Llegir projectes i tasques (projectes i projectes compartits dels quals sóc contacte). +Permission42=Crear/modificar projectes (projectes compartits i projectes dels quals sóc contacte). També pot assignar usuaris a projectes i tasques +Permission44=Suprimir projectes (projectes compartits i projectes dels quals sóc un contacte) Permission45=Exporta projectes Permission61=Consulta intervencions Permission62=Crea/modifica intervencions @@ -766,10 +766,10 @@ Permission122=Crea/modifica tercers enllaçats a l'usuari Permission125=Elimina tercers enllaçats a l'usuari Permission126=Exporta tercers Permission130=Crear/modificar informació de pagament de tercers -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission141=Llegeix tots els projectes i tasques (així com els projectes privats dels quals no sóc un contacte) +Permission142=Crear/modificar tots els projectes i tasques (així com els projectes privats dels quals no sóc un contacte) +Permission144=Suprimeix tots els projectes i tasques (així com els projectes privats dels quals no sóc un contacte) +Permission145=Pot introduir el temps consumit, per a mi o la meva jerarquia, en les tasques assignades (full de temps) Permission146=Consulta proveïdors Permission147=Consulta estadístiques Permission151=Llegir domiciliacions @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valor d’una constant de configuració ConstantIsOn=L'opció %s està activada NbOfDays=Nombre de dies AtEndOfMonth=A final de mes -CurrentNext=Actual/Següent +CurrentNext=Un dia determinat al mes Offset=Decàleg AlwaysActive=Sempre actiu Upgrade=Actualització @@ -1192,7 +1192,7 @@ NoActiveBankAccountDefined=Cap compte bancari actiu definit OwnerOfBankAccount=Titular del compte %s BankModuleNotActive=Mòdul comptes bancaris no activat ShowBugTrackLink=Mostra l'enllaç " %s " -ShowBugTrackLinkDesc=Mantingueu el buit per no mostrar aquest enllaç, utilitzeu el valor "github" per a l'enllaç al projecte Dolibarr o definiu directament una URL "https: // ..." +ShowBugTrackLinkDesc=Manteniu-lo buit per no mostrar aquest enllaç, utilitzeu el valor 'github' per a l'enllaç al projecte Dolibarr o definiu directament un URL 'https://...' Alerts=Alertes DelaysOfToleranceBeforeWarning=S'està mostrant una alerta d'advertència per... DelaysOfToleranceDesc=Establiu el retard abans que es mostri a la pantalla una icona d'alerta %s per a l'element final. @@ -1251,9 +1251,9 @@ SessionsPurgedByExternalSystem=Sembla que les sessions en aquest servidor són n TriggersAvailable=Triggers disponibles TriggersDesc=Els activadors són fitxers que modificaran el comportament del flux de treball de Dolibarr un cop copiat al directori htdocs/core/triggers. Realitzen accions noves, activades en esdeveniments Dolibarr (creació d'empresa nova, validació de factures...). TriggerDisabledByName=Triggers d'aquest arxiu desactivador pel sufix -NORUN en el nom de l'arxiu. -TriggerDisabledAsModuleDisabled=Triggers d'aquest arxiu desactivats ja que el mòdul %s no està activat. -TriggerAlwaysActive=Triggers d'aquest arxiu sempre actius, ja que els mòduls Dolibarr relacionats estan activats -TriggerActiveAsModuleActive=Triggers d'aquest arxiu actius ja que el mòdul %s està activat +TriggerDisabledAsModuleDisabled=Els activadors d'aquest fitxer estan desactivats, ja que el mòdul %s està desactivat. +TriggerAlwaysActive=Els activadors d'aquest fitxer sempre estan actius, siguin quins siguin els mòduls Dolibarr activats. +TriggerActiveAsModuleActive=Els activadors d'aquest fitxer estan actius, ja que el mòdul %s està habilitat. GeneratedPasswordDesc=Trieu el mètode que s'utilitzarà per a les contrasenyes generades automàticament. DictionaryDesc=Afegeix totes les dades de referència. Pots afegir els teus valors per defecte. ConstDesc=Aquesta pàgina permet editar (anul·lar) paràmetres no disponibles en altres pàgines. Aquests són paràmetres reservats només per a desenvolupadors o solucions avançades de problemes. @@ -1346,7 +1346,7 @@ TransKeyWithoutOriginalValue=Heu obligat una nova traducció de la clau de tradu TitleNumberOfActivatedModules=Mòduls activats TotalNumberOfActivatedModules=Mòduls activats: %s / %s YouMustEnableOneModule=Ha d'activar almenys 1 mòdul. -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +YouMustEnableTranslationOverwriteBefore=Primer heu d'activar la sobreescriptura de traduccions per a poder substituir una traducció ClassNotFoundIntoPathWarning=La classe %s no s'ha trobat a la ruta PHP YesInSummer=Sí a l'estiu OnlyFollowingModulesAreOpenedToExternalUsers=Tingueu en compte que només els següents mòduls estan disponibles per als usuaris externs (independentment dels permisos d'aquests usuaris) i només si es concedeixen permisos:
@@ -1718,7 +1718,7 @@ NotificationSetup=Configuració del mòdul de notificació per correu electròni NotificationEMailFrom=Correu electrònic del remitent (des de) per als correus electrònics enviats pel mòdul de notificacions FixedEmailTarget=Destinatari NotificationDisableConfirmMessageContact=Amaga la llista de destinataris (subscrits com a contacte) de les notificacions al missatge de confirmació -NotificationDisableConfirmMessageUser=Amaga la llista de destinataris (suscrits com a usuari) de les notificacions al missatge de confirmació +NotificationDisableConfirmMessageUser=Amaga la llista de destinataris (subscrits com a usuari) de les notificacions al missatge de confirmació NotificationDisableConfirmMessageFix=Amaga la llista de destinataris (subscrits com a correu electrònic global) de les notificacions al missatge de confirmació ##### Sendings ##### SendingsSetup=Configuració del mòdul d'enviament @@ -1792,14 +1792,14 @@ SupposedToBeInvoiceDate=Data de factura utilitzada Buy=Compra Sell=Venda InvoiceDateUsed=Data utilitzada de factura -YourCompanyDoesNotUseVAT=L'empresa s'ha configurat com a no subjecta a IVA (Inici - Configuració - Empresa/Organització), per tant no hi ha opcions per a configurar l'IVA. +YourCompanyDoesNotUseVAT=La vostra empresa s'ha definit per a no utilitzar l'IVA (Inici - Configuració - Empresa/Organització), de manera que no hi ha opcions d'IVA per a configurar. AccountancyCode=Codi comptable AccountancyCodeSell=Codi comptable vendes AccountancyCodeBuy=Codi comptable compres CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Mantenir buida per defecte la casella “Crea automàticament el pagament” quan es crea un nou impost ##### Agenda ##### AgendaSetup=Mòdul configuració d'accions i agenda -PasswordTogetVCalExport=Clau d'autorització vCal export link +PasswordTogetVCalExport=Clau per a autoritzar l'enllaç d'exportació SecurityKey = Clau de seguretat PastDelayVCalExport=No exportar els esdeveniments de més de AGENDA_USE_EVENT_TYPE=Utilitzeu tipus d'esdeveniments (gestionats en el menú Configuració -> Diccionaris -> Tipus d'esdeveniments d'agenda) @@ -1927,16 +1927,16 @@ ConfFileMustContainCustom=Per a instal·lar o crear un mòdul extern des de l'ap HighlightLinesOnMouseHover=Remarca línies de la taula quan el ratolí passi per sobre HighlightLinesColor=Ressalteu el color de la línia quan el ratolí passa (utilitzeu 'ffffff' per no ressaltar) HighlightLinesChecked=Ressalteu el color de la línia quan està marcada (utilitzeu 'ffffff' per no ressaltar) -UseBorderOnTable=Show left-right borders on tables +UseBorderOnTable=Mostra les vores esquerra-dreta a les taules BtnActionColor=Color del botó d'acció TextBtnActionColor=Color del text del botó d'acció TextTitleColor=Color del text del títol de la pàgina LinkColor=Color dels enllaços -PressF5AfterChangingThis=Prem CTRL+F5 en el teclat o neteja la memòria cau del navegador després de canviar aquest valor per fer-ho efectiu +PressF5AfterChangingThis=Prem CTRL+F5 en el teclat o neteja la memòria cau del navegador després de canviar aquest valor per a fer-ho efectiu NotSupportedByAllThemes=Funcionarà amb els temes del nucli, però pot no estar suportat per temes externs BackgroundColor=Color de fons TopMenuBackgroundColor=Color de fons pel menú superior -TopMenuDisableImages=Oculta les imatges en el menú superior +TopMenuDisableImages=Icona o text al menú superior LeftMenuBackgroundColor=Color de fons pel menú de l'esquerra BackgroundTableTitleColor=Color de fons per línies de títol en taules BackgroundTableTitleTextColor=Color del text per a la línia del títol de la taula @@ -1949,7 +1949,7 @@ EnterAnyCode=Aquest camp conté una referència per a identificar la línia. Int Enter0or1=Introdueix 0 o 1 UnicodeCurrency=Introduïu aquí entre claudàtors, la llista del nombre de bytes que representa el símbol de moneda. Per exemple: per $, introduïu [36] - per al real de Brasil R$ [82,36] - per €, introduïu [8364] ColorFormat=El color RGB es troba en format HEX, per exemple: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Nom de la icona en format:
- image.png per a un fitxer d'imatge al directori del tema actual
- image.png@module si el fitxer es troba al directori /img/ d'un mòdul
- fa-xxx per a una fontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size per a un picto FontAwesome fa-xxx (amb prefix, color i mida conjunta) PositionIntoComboList=Posició de la línia a les llistes desplegables SellTaxRate=Tipus d’impost sobre les vendes RecuperableOnly=Sí per l'IVA "No percebut sinó recuperable" dedicat per a algun estat a França. Manteniu el valor "No" en tots els altres casos. @@ -1986,7 +1986,7 @@ ByDefaultInList=Mostra per defecte en la vista del llistat YouUseLastStableVersion=Estàs utilitzant l'última versió estable TitleExampleForMajorRelease=Exemple de missatge que podeu utilitzar per a anunciar aquesta actualització de versió (no dubteu a utilitzar-lo als vostres llocs web) TitleExampleForMaintenanceRelease=Exemple de missatge que podeu utilitzar per a anunciar aquesta versió de manteniment (no dubteu a utilitzar-lo als vostres llocs web) -ExampleOfNewsMessageForMajorRelease=Disponible ERP/CRM Dolibarr %s. La versió %s és una versió major amb un munt de noves característiques, tant per a usuaris com per a desenvolupadors. Es pot descarregar des de la secció de descàrregues del portal https://www.dolibarr.org (subdirectori versions estables). Podeu llegir ChangeLog per veure la llista completa dels canvis. +ExampleOfNewsMessageForMajorRelease=Disponible ERP/CRM Dolibarr %s. La versió %s és una versió major amb un munt de noves característiques, tant per a usuaris com per a desenvolupadors. Es pot descarregar des de la secció de descàrregues del portal https://www.dolibarr.org (subdirectori versions estables). Podeu llegir ChangeLog per a veure la llista completa dels canvis. ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s està disponible. La versió %s és una versió de manteniment, de manera que només conté correccions d'errors. Us recomanem que tots els usuaris actualitzeu aquesta versió. Un llançament de manteniment no introdueix novetats ni canvis a la base de dades. Podeu descarregar-lo des de l'àrea de descàrrega del portal https://www.dolibarr.org (subdirectori de les versions estables). Podeu llegir el ChangeLog per a obtenir una llista completa dels canvis. MultiPriceRuleDesc=Quan l'opció "Diversos nivells de preus per producte/servei" està activada, podeu definir preus diferents (un preu per nivell) per a cada producte. Per a estalviar-vos temps, aquí podeu introduir una regla per a calcular automàticament un preu per a cada nivell en funció del preu del primer nivell, de manera que només haureu d'introduir un preu per al primer nivell per a cada producte. Aquesta pàgina està dissenyada per a estalviar-vos temps, però només és útil si els preus de cada nivell són relatius al primer nivell. Podeu ignorar aquesta pàgina en la majoria dels casos. ModelModulesProduct=Plantilles per documents de productes @@ -2021,7 +2021,7 @@ SamePriceAlsoForSharedCompanies=Si utilitzeu un mòdul multicompany, amb l'opci ModuleEnabledAdminMustCheckRights=S'ha activat el mòdul. Els permisos per als mòdul(s) activats es donen només als usuaris administradors. Podria ser necessari concedir permisos a altres usuaris o grups de forma manual si és necessari. UserHasNoPermissions=Aquest usuari no té permisos definits TypeCdr=Utilitzeu "Cap" si la data del termini de pagament és la data de la factura més un delta en dies (el delta és el camp "%s")
Utilitzeu "Al final del mes", si, després del delta, s'ha d'augmentar la data per a arribar al final del mes (+ opcional "%s" en dies)
Utilitzeu "Actual/Següent" perquè la data del termini de pagament sigui la primera N del mes després del delta (el delta és el camp "%s", N s'emmagatzema al camp "%s"). -BaseCurrency=Moneda de referència de l'empresa (entra a la configuració de l'empresa per canviar-la) +BaseCurrency=Moneda de referència de l'empresa (anar a la configuració de l'empresa per a canviar-ho) WarningNoteModuleInvoiceForFrenchLaw=Aquest mòdul %s compleix les lleis franceses (Loi Finances 2016). WarningNoteModulePOSForFrenchLaw=Aquest mòdul %s compleix les lleis franceses (Loi Finances 2016) perquè el mòdul Logs no reversibles s'activa automàticament. WarningInstallationMayBecomeNotCompliantWithLaw=Esteu intentant instal·lar el mòdul %s que és un mòdul extern. L'activació d'un mòdul extern significa que confia en l'editor d'aquest mòdul i que està segur que aquest mòdul no afectarà negativament el comportament de la vostra aplicació i compleix les lleis del vostre país (%s). Si el mòdul introdueix una característica il·legal, es fa responsable de l'ús del programari il·legal. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Filtre Regex per a netejar el valor (COMPANY_AQUARI COMPANY_DIGITARIA_CLEAN_REGEX=Filtre Regex al valor net (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=No es permet la duplicació GDPRContact=Oficial de protecció de dades (PDO, privadesa de dades o contacte amb GDPR) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Si emmagatzemeu dades personals al vostre Sistema d'Informació, podeu anomenar aquí el contacte responsable del Reglament General de Protecció de Dades HelpOnTooltip=Ajuda a mostrar el text a la descripció d'informació HelpOnTooltipDesc=Posa text o una tecla de traducció aquí perquè el text es mostri en una descripció emergent quan aquest camp aparegui en un formulari YouCanDeleteFileOnServerWith=Podeu eliminar aquest fitxer al servidor amb la línia de comandaments:
%s @@ -2059,7 +2059,8 @@ VATIsUsedIsOff=Nota: L'opció d'utilitzar l'impost de vendes o l'IVA s'ha establ SwapSenderAndRecipientOnPDF=Intercanvieu la posició de l'adreça del remitent i del destinatari en documents PDF FeatureSupportedOnTextFieldsOnly=Advertiment, funció compatible només amb els camps de text i llistes desplegables. També s'ha d'establir un paràmetre URL action=create o action=edit Ó el nom de la pàgina ha d'acabar amb 'new.php' per a activar aquesta característica. EmailCollector=Col·lector de correu electrònic -EmailCollectorDescription=Afegiu una tasca programada i una pàgina de configuració per escanejar regularment caixes de correu electrònic (utilitzant el protocol IMAP) i registreu els correus electrònics rebuts a la vostra aplicació, al lloc adequat i / o creeu alguns registres automàticament (com a clients potencials). +EmailCollectors=Col·leccionistes de correu electrònic +EmailCollectorDescription=Afegiu una tasca programada i una pàgina de configuració per a escanejar regularment bústies de correu electrònic (mitjançant el protocol IMAP) i enregistreu els correus electrònics rebuts a la vostra aplicació, al lloc correcte i/o creeu alguns registres automàticament (com ara clients potencials). NewEmailCollector=Col·lector nou de correus electrònics EMailHost=Servidor IMAP de correu electrònic MailboxSourceDirectory=Directori d'origen de la bústia @@ -2068,30 +2069,30 @@ EmailcollectorOperations=Operacions a fer per recol·lector EmailcollectorOperationsDesc=Les operacions s’executen de dalt a baix MaxEmailCollectPerCollect=Nombre màxim de correus electrònics recopilats per recollida CollectNow=Recolliu ara -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +ConfirmCloneEmailCollector=Esteu segur que voleu clonar el col·lector de correu electrònic %s? DateLastCollectResult=Data de l'últim intent de recollida DateLastcollectResultOk=Data de la darrera recollida amb èxit LastResult=Últim resultat -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeaders=No inclogueu el contingut de la capçalera del correu electrònic al contingut desat dels correus electrònics recopilats +EmailCollectorHideMailHeadersHelp=Quan està activat, les capçaleres de correu electrònic no s'afegeixen al final del contingut del correu electrònic que es desa com a esdeveniment de l'agenda. EmailCollectorConfirmCollectTitle=Confirmació de recollida de correu electrònic -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +EmailCollectorConfirmCollect=Vols executar aquest col·leccionista ara? +EmailCollectorExampleToCollectTicketRequestsDesc=Recolliu correus electrònics que coincideixen amb algunes regles i creeu automàticament un Tiquet (cal activar el mòdul Ticket) amb la informació del correu electrònic. Podeu utilitzar aquest col·lector si proporcioneu algun suport per correu electrònic, de manera que la vostra sol·licitud de tiquet es generarà automàticament. Activeu també Collect_Responses per a recollir les respostes del vostre client directament a la vista de tiquets (heu de respondre des de Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Exemple de recollida de la sol·licitud de bitllet (només el primer missatge) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Escanegeu el directori "Enviat" de la vostra bústia de correu per a trobar correus electrònics que s'han enviat com a resposta d'un altre correu electrònic directament des del vostre programari de correu electrònic i no des de Dolibarr. Si es troba aquest correu electrònic, l'esdeveniment de resposta es registra a Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Exemple de recollida de respostes de correu electrònic enviades des d'un programari de correu electrònic extern +EmailCollectorExampleToCollectDolibarrAnswersDesc=Recolliu tots els correus electrònics que són una resposta d'un correu electrònic enviat des de la vostra aplicació. S'enregistrarà un esdeveniment (Mòdul Agenda ha d'estar habilitat) amb la resposta del correu electrònic al bon lloc. Per exemple, si envieu una proposta comercial, una comanda, una factura o un missatge d'un bitllet per correu electrònic des de l'aplicació i el destinatari respon al vostre correu electrònic, el sistema captarà automàticament la resposta i l'afegirà al vostre ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Exemple de recollida de tots els missatges entrants com a respostes als missatges enviats des de Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Recolliu correus electrònics que coincideixen amb algunes regles i creeu automàticament un client potencial (el projecte del mòdul ha d'estar habilitat) amb la informació del correu electrònic. Podeu utilitzar aquest col·lector si voleu seguir la vostra oportunitat mitjançant el mòdul Projecte (1 lead = 1 project), de manera que els vostres clients potencials es generaran automàticament. Si el col·lector Collect_Responses també està habilitat, quan envieu un correu electrònic des dels vostres clients potencials, propostes o qualsevol altre objecte, també podreu veure les respostes dels vostres clients o socis directament a l'aplicació.
Nota: amb aquest exemple inicial, es genera el títol del client potencial inclòs el correu electrònic. Si el tercer no es troba a la base de dades (client nou), el client s'adjuntarà al tercer amb l'identificador 1. +EmailCollectorExampleToCollectLeads=Exemple de recollida de clients potencials +EmailCollectorExampleToCollectJobCandidaturesDesc=Recolliu els correus electrònics que sol·liciten ofertes de feina (ha d'activar la contractació de mòduls). Podeu completar aquest col·lector si voleu crear automàticament una candidatura per a una sol·licitud de feina. Nota: Amb aquest exemple inicial, es genera el títol de la candidatura inclòs el correu electrònic. +EmailCollectorExampleToCollectJobCandidatures=Exemple de recollida de candidatures laborals rebudes per correu electrònic NoNewEmailToProcess=No hi ha cap correu electrònic nou (filtres coincidents) per a processar NothingProcessed=No s'ha fet res -XEmailsDoneYActionsDone=%s correus electrònics qualificats, %s correus electrònics processats amb èxit (per %s registre / accions realitzades) +XEmailsDoneYActionsDone=Correus electrònics %s prequalificats, correus electrònics %s processats correctament (per a registres/accions realitzades %s) RecordEvent=Enregistrar un esdeveniment a l'agenda (amb el tipus de correu electrònic enviat o rebut) CreateLeadAndThirdParty=Creeu un client potencial (i un tercer si cal) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +CreateTicketAndThirdParty=Crear un bitllet (enllaçat a un tercer si el tercer s'ha carregat per una operació anterior o s'ha endevinat a partir d'un rastrejador a la capçalera del correu electrònic, sense el contrari) CodeLastResult=Últim codi retornat NbOfEmailsInInbox=Nombre de correus electrònics en el directori font LoadThirdPartyFromName=Carregueu la cerca de tercers al %s (només carrega) @@ -2112,12 +2113,12 @@ ResourceSetup=Configuració del mòdul de recursos UseSearchToSelectResource=Utilitza un formulari de cerca per a seleccionar un recurs (millor que una llista desplegable) DisabledResourceLinkUser=Desactiva la funció per a enllaçar un recurs amb els usuaris DisabledResourceLinkContact=Desactiva la funció per a enllaçar un recurs amb els contactes -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Prohibir l'ús del mateix recurs al mateix temps a l'agenda ConfirmUnactivation=Confirma el restabliment del mòdul OnMobileOnly=Només en pantalla petita (telèfon intel·ligent) DisableProspectCustomerType=Desactiva el tipus de tercer "Potencial + Client" (per tant, el tercer ha de ser "Potencial" o "Client", però no pot ser tots dos) MAIN_OPTIMIZEFORTEXTBROWSER=Simplifica la interfície per a persones cegues -MAIN_OPTIMIZEFORTEXTBROWSERDesc=Activa aquesta opció si ets cec o si fas servir l'aplicació des d'un navegador de text com ara Lynx o Links. +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Activeu aquesta opció si sou una persona cega o si feu servir l'aplicació des d'un navegador de text com Lynx o Links. MAIN_OPTIMIZEFORCOLORBLIND=Canvia el color de la interfície per daltònic MAIN_OPTIMIZEFORCOLORBLINDDesc=Activeu aquesta opció si ets una persona daltònica; en alguns casos, la interfície canviarà la configuració del color per a augmentar el contrast. Protanopia=Protanopia @@ -2137,7 +2138,7 @@ UseDebugBar=Utilitzeu la barra de depuració DEBUGBAR_LOGS_LINES_NUMBER=Nombre d’últimes línies de registre que cal mantenir a la consola WarningValueHigherSlowsDramaticalyOutput=Advertència, els valors més alts frenen molt la producció ModuleActivated=El mòdul %s està activat i alenteix la interfície -ModuleActivatedWithTooHighLogLevel=El mòdul %s s'activa amb un nivell de registre massa alt (intenteu utilitzar un nivell inferior per obtenir millors prestacions i seguretat) +ModuleActivatedWithTooHighLogLevel=El mòdul %s s'activa amb un nivell de registre massa alt (intenta utilitzar un nivell inferior per a millors rendiments i seguretat) ModuleSyslogActivatedButLevelNotTooVerbose=El mòdul %s està activat i el nivell de registre (%s) és correcte (no massa detallat) IfYouAreOnAProductionSetThis=Si esteu en un entorn de producció, s'hauria d'establir aquesta propietat en %s. AntivirusEnabledOnUpload=Antivirus activat als fitxers penjats @@ -2157,7 +2158,7 @@ DeleteEmailCollector=Suprimeix el recollidor de correu electrònic ConfirmDeleteEmailCollector=Esteu segur que voleu suprimir aquest recollidor de correu electrònic? RecipientEmailsWillBeReplacedWithThisValue=Els correus electrònics destinataris sempre se substituiran per aquest valor AtLeastOneDefaultBankAccountMandatory=Cal definir com a mínim un compte bancari per defecte -RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. +RESTRICT_ON_IP=Permet l'accés de l'API només a determinades IP de client (no es permet el comodí, utilitza l'espai entre els valors). Buit significa que tots els clients poden accedir. IPListExample=127.0.0.1 192.168.0.2 [:: 1] BaseOnSabeDavVersion=Basat en la versió de la biblioteca SabreDAV NotAPublicIp=No és una IP pública @@ -2167,6 +2168,9 @@ EmailTemplate=Plantilla per correu electrònic EMailsWillHaveMessageID=Els correus electrònics tindran una etiqueta "Referències" que coincideix amb aquesta sintaxi PDF_SHOW_PROJECT=Mostra el projecte al document ShowProjectLabel=Etiqueta del projecte +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Incloeu l'àlies al nom de tercers +THIRDPARTY_ALIAS=Nom de tercer - Àlies de tercer +ALIAS_THIRDPARTY=Àlies de tercer - Nom de tercer PDF_USE_ALSO_LANGUAGE_CODE=Si voleu que alguns textos del vostre PDF es copiïn en 2 idiomes diferents en el mateix PDF generat, heu d’establir aquí aquest segon idioma perquè el PDF generat contingui 2 idiomes diferents en la mateixa pàgina, l’escollit en generar el PDF i aquesta (només poques plantilles de PDF admeten això). Mantingueu-lo buit per a 1 idioma per PDF. PDF_USE_A=Gerera documents PDF amb el format PDF/A en lloc del format PDF predeterminat FafaIconSocialNetworksDesc=Introduïu aquí el codi de la icona de FontAwesome. Si no sabeu què és FontAwesome, podeu utilitzar el llibre genèric d’adreces. @@ -2182,7 +2186,7 @@ SwitchThisForABetterSecurity=Es recomana canviar aquest valor a %s per a obtenir DictionaryProductNature= Naturalesa del producte CountryIfSpecificToOneCountry=País (si és específic d'un país determinat) YouMayFindSecurityAdviceHere=Podeu trobar assessorament de seguretat aquí -ModuleActivatedMayExposeInformation=Aquesta extensió PHP pot exposar dades sensibles. Si no la necessiteu, desactiveu-la. +ModuleActivatedMayExposeInformation=Aquesta extensió PHP pot exposar dades delicades. Si no la necessiteu, desactiveu-la. ModuleActivatedDoNotUseInProduction=S'ha habilitat un mòdul dissenyat per al desenvolupament. No l'activeu en un entorn de producció. CombinationsSeparator=Caràcter separador per a combinacions de productes SeeLinkToOnlineDocumentation=Vegeu l'enllaç a la documentació en línia al menú superior per a obtenir exemples @@ -2195,14 +2199,14 @@ MailToPartnership=Associació AGENDA_EVENT_DEFAULT_STATUS=Estat de l'esdeveniment per defecte en crear un esdeveniment des del formulari YouShouldDisablePHPFunctions=Hauríeu de desactivar les funcions PHP IfCLINotRequiredYouShouldDisablePHPFunctions=Excepte si heu d'executar ordres del sistema en codi personalitzat, hauríeu de desactivar les funcions PHP -PHPFunctionsRequiredForCLI=Per a propòsits d'intèrpret d'ordres (com fer copies de seguretat programades o executar un programa antivirus), heu de mantenir les funcions PHP +PHPFunctionsRequiredForCLI=Per a propòsits d'intèrpret d'ordres (com ara una còpia de seguretat programada o executar un programa antivirus), heu de mantenir les funcions PHP NoWritableFilesFoundIntoRootDir=No s'ha trobat cap fitxer ni directori d'escriptura dels programes comuns al directori arrel (Bo) RecommendedValueIs=Recomanat: %s Recommended=Recomanada NotRecommended=No es recomana ARestrictedPath=Algun camí restringit CheckForModuleUpdate=Comproveu si hi ha actualitzacions de mòduls externs -CheckForModuleUpdateHelp=Aquesta acció es connectarà als editors de mòduls externs per comprovar si hi ha disponible una nova versió. +CheckForModuleUpdateHelp=Aquesta acció es connectarà amb editors de mòduls externs per a comprovar si hi ha una versió nova disponible. ModuleUpdateAvailable=Hi ha disponible una actualització NoExternalModuleWithUpdate=No s'han trobat actualitzacions per a mòduls externs SwaggerDescriptionFile=Fitxer de descripció de l'API Swagger (per a utilitzar-lo amb redoc, per exemple) @@ -2214,7 +2218,7 @@ APIsAreNotEnabled=Els mòduls API no estan habilitats YouShouldSetThisToOff=Hauríeu d'establir-lo a 0 o desactivar-lo InstallAndUpgradeLockedBy=La instal·lació i les actualitzacions estan bloquejades pel fitxer %s OldImplementation=Implementació antiga -PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Si alguns mòduls de pagament en línia estan habilitats (Paypal, Stripe, ...), afegiu un enllaç al PDF per fer el pagament en línia +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Si alguns mòduls de pagament en línia estan habilitats (Paypal, Stripe, ...), afegiu un enllaç al PDF per a fer el pagament en línia DashboardDisableGlobal=Desactiveu globalment tots els polzes d'objectes oberts BoxstatsDisableGlobal=Desactiva les estadístiques totalment de caixa DashboardDisableBlocks=Polzes d'objectes oberts (a processar o tard) al tauler principal @@ -2228,7 +2232,7 @@ DashboardDisableBlockBank=Desactiveu el polze per als bancs DashboardDisableBlockAdherent=Desactiveu el polze per a les subscripcions DashboardDisableBlockExpenseReport=Desactiveu el polze per als informes de despeses DashboardDisableBlockHoliday=Desactiva el polze per a les fulles -EnabledCondition=Condició per tenir el camp habilitat (si no està activat, la visibilitat sempre estarà desactivada) +EnabledCondition=Condició per a tenir el camp habilitat (si no està activat, la visibilitat sempre estarà desactivada) IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Si voleu utilitzar un segon impost, heu d'habilitar també el primer impost de vendes IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Si voleu utilitzar un tercer impost, heu d'habilitar també el primer impost de vendes LanguageAndPresentation=Llengua i presentació @@ -2248,18 +2252,30 @@ TemplateforBusinessCards=Plantilla per a una targeta de visita de diferents mide InventorySetup= Configuració de l'inventari ExportUseLowMemoryMode=Utilitzeu un mode de memòria baixa ExportUseLowMemoryModeHelp=Utilitzeu el mode de memòria baixa per a executar l'execució de l'abocament (la compressió es fa a través d'una canonada en lloc d'entrar a la memòria PHP). Aquest mètode no permet comprovar que el fitxer s'hagi completat i no es pot informar del missatge d'error si falla. -ShowQuickAddLink=Show a button to quickly add an element in top right menu -HashForPing=Hash used for ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interfície per a capturar activadors de dolibarr i enviar-lo a un URL +WebhookSetup = Configuració del webhook +Settings = Configuració +WebhookSetupPage = Pàgina de configuració del webhook +ShowQuickAddLink=Mostra un botó per a afegir ràpidament un element al menú superior dret + +HashForPing=Hash utilitzat per a fer ping +ReadOnlyMode=És una instància en mode "Només lectura". +DEBUGBAR_USE_LOG_FILE=Utilitzeu el fitxer dolibarr.log per a atrapar els registres +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilitzeu el fitxer dolibarr.log per a atrapar els registres en lloc de capturar la memòria en directe. Permet capturar tots els registres en lloc de només el registre del procés actual (per tant, inclosa la de les pàgines de subsol·licituds ajax), però farà que la vostra instància sigui molt molt lenta. No es recomana. +FixedOrPercent=Fixat (utilitza la paraula clau "fixat") o per cent (utilitza la paraula clau "percentatge") +DefaultOpportunityStatus=Estat d'oportunitat predeterminat (primer estat quan es crea el client potencial) + +IconAndText=Icona i text +TextOnly=Només text +IconOnlyAllTextsOnHover=Només icona: tots els textos apareixen sota la icona de la barra de menú del ratolí +IconOnlyTextOnHover=Només icona: el text de la icona apareix a sota de la icona en passar el cursor sobre la icona +IconOnly=Només icona: només text a la informació sobre eines +INVOICE_ADD_ZATCA_QR_CODE=Mostra el codi QR ZATCA a les factures +INVOICE_ADD_ZATCA_QR_CODEMore=Alguns països àrabs necessiten aquest codi QR a les seves factures +INVOICE_ADD_SWISS_QR_CODE=Mostra el codi QR-Bill suís a les factures +UrlSocialNetworksDesc=Enllaç URL de la xarxa social. Utilitzeu {socialid} per a la part variable que conté l'identificador de la xarxa social. +IfThisCategoryIsChildOfAnother=Si aquesta categoria és fill d'una altra +NoName=Sense nom +CIDLookupURL=El mòdul aporta un URL que pot utilitzar una eina externa per a obtenir el nom d'un tercer o contacte des del seu número de telèfon. L'URL a utilitzar és: diff --git a/htdocs/langs/ca_ES/agenda.lang b/htdocs/langs/ca_ES/agenda.lang index 30bd9cad0b1..9b7319bbd02 100644 --- a/htdocs/langs/ca_ES/agenda.lang +++ b/htdocs/langs/ca_ES/agenda.lang @@ -45,6 +45,7 @@ CONTRACT_DELETEInDolibarr=Contracte %s eliminat PropalClosedSignedInDolibarr=Pressupost %s firmat PropalClosedRefusedInDolibarr=Pressupost %s rebutjat PropalValidatedInDolibarr=Pressupost %s validat +PropalBackToDraftInDolibarr=La proposta %s torna a l'estat d'esborrany PropalClassifiedBilledInDolibarr=Pressupost %s classificat facturat InvoiceValidatedInDolibarr=Factura %s validada InvoiceValidatedInDolibarrFromPos=Factura %s validada al TPV @@ -66,6 +67,7 @@ ShipmentBackToDraftInDolibarr=Enviament %s retornat a l'estat d'esborrany ShipmentDeletedInDolibarr=Expedició %s eliminada ShipmentCanceledInDolibarr=Enviament %s cancel·lat ReceptionValidatedInDolibarr=S'ha validat la recepció %s +ReceptionClassifyClosedInDolibarr=Recepció %s classificada tancada OrderCreatedInDolibarr=Comanda %s creada OrderValidatedInDolibarr=Comanda %s validada OrderDeliveredInDolibarr=Comanda %s classificada com a enviada diff --git a/htdocs/langs/ca_ES/blockedlog.lang b/htdocs/langs/ca_ES/blockedlog.lang index 4092a8f8a1e..f878fc12d5a 100644 --- a/htdocs/langs/ca_ES/blockedlog.lang +++ b/htdocs/langs/ca_ES/blockedlog.lang @@ -42,16 +42,16 @@ BlockedlogInfoDialog=Detalls del registre ListOfTrackedEvents=Llista d'esdeveniments seguits Fingerprint=Empremtes dactilars DownloadLogCSV=Exporta els registres arxivats (CSV) -logDOC_PREVIEW=Vista prèvia d'un document validat per imprimir o descarregar -logDOC_DOWNLOAD=Descarregar un document validat per imprimir o enviar +logDOC_PREVIEW=Vista prèvia d'un document validat per a imprimir o descarregar +logDOC_DOWNLOAD=Descàrrega d'un document validat per a imprimir o enviar DataOfArchivedEvent=Dades completes d'esdeveniments arxivats ImpossibleToReloadObject=Objecte original (tipus %s, identificador %s) no enllaçat (vegeu la columna "Dades completes" per a obtenir dades desades inalterables) BlockedLogAreRequiredByYourCountryLegislation=El mòdul de registres inalterables pot ser requerit per la legislació del vostre país. La desactivació d'aquest mòdul pot fer que qualsevol transacció futura sigui invàlida pel que fa a la llei i l'ús del programari legal, ja que no es pot validar mitjançant una auditoria fiscal. BlockedLogActivatedBecauseRequiredByYourCountryLegislation=El mòdul de registres inalterables s'ha activat a causa de la legislació del vostre país. La desactivació d'aquest mòdul pot fer que qualsevol transacció futura sigui invàlida pel que fa a la llei i l'ús del programari legal, ja que no es pot validar mitjançant una auditoria fiscal. BlockedLogDisableNotAllowedForCountry=Llista de països on l'ús d'aquest mòdul és obligatori (només per impedir que es desactivi el mòdul per error, si el vostre país està en aquesta llista, la desactivació del mòdul no és possible sense editar aquesta llista. Noteu també que habilitar / desactivar aquest mòdul seguiu una pista en el registre inalterable). OnlyNonValid=No vàlid -TooManyRecordToScanRestrictFilters=Hi ha massa registres per escanejar / analitzar. Limiteu la llista amb filtres més restrictius. +TooManyRecordToScanRestrictFilters=Hi ha massa registres per a escanejar/analitzar. Limita la llista amb filtres més restrictius. RestrictYearToExport=Restringeix el mes / any per a exportar -BlockedLogEnabled=S'ha habilitat el sistema per fer el seguiment d'esdeveniments en registres inalterables -BlockedLogDisabled=El sistema per fer un seguiment dels esdeveniments en registres inalterables s'ha desactivat després de fer algunes gravacions. Hem desat una empremta digital especial per fer un seguiment de la cadena com a trencada -BlockedLogDisabledBis=S'ha desactivat el sistema per fer el seguiment d'esdeveniments en registres inalterables. Això és possible perquè encara no s'ha fet cap registre. +BlockedLogEnabled=S'ha habilitat el sistema per a fer el seguiment d'esdeveniments en registres inalterables +BlockedLogDisabled=El sistema per a fer el seguiment d'esdeveniments en registres inalterables s'ha desactivat després de fer algunes gravacions. Hem desat una empremta digital especial per a fer un seguiment de la cadena com a trencada +BlockedLogDisabledBis=S'ha desactivat el sistema per a fer el seguiment d'esdeveniments en registres inalterables. Això és possible perquè encara no s'ha fet cap registre. diff --git a/htdocs/langs/ca_ES/boxes.lang b/htdocs/langs/ca_ES/boxes.lang index e310f84d984..86ca76c2032 100644 --- a/htdocs/langs/ca_ES/boxes.lang +++ b/htdocs/langs/ca_ES/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Últimes subscripcions de membres BoxFicheInter=Últimes intervencions BoxCurrentAccounts=Balanç de comptes oberts BoxTitleMemberNextBirthdays=Aniversaris d'aquest mes (membres) -BoxTitleMembersByType=Socis per tipus +BoxTitleMembersByType=Membres per tipus i estat BoxTitleMembersSubscriptionsByYear=Subscripcions de membres per any BoxTitleLastRssInfos=Últimes %s notícies de %s BoxTitleLastProducts=Productes / Serveis: últims %s modificats diff --git a/htdocs/langs/ca_ES/cashdesk.lang b/htdocs/langs/ca_ES/cashdesk.lang index 0f070a8fbdc..1067b12b9da 100644 --- a/htdocs/langs/ca_ES/cashdesk.lang +++ b/htdocs/langs/ca_ES/cashdesk.lang @@ -50,8 +50,8 @@ Footer=Peu de pàgina AmountAtEndOfPeriod=Import al final del període (dia, mes o any) TheoricalAmount=Import teòric RealAmount=Import real -CashFence=Cash box closing -CashFenceDone=Cash box closing done for the period +CashFence=Tancament de caixa +CashFenceDone=Tancament de caixa fet per al període NbOfInvoices=Nombre de factures Paymentnumpad=Tipus de pad per a introduir el pagament Numberspad=Números Pad @@ -102,8 +102,8 @@ CashDeskGenericMaskCodes6 = L'etiqueta
{TN} s'utilitza per a afegir TakeposGroupSameProduct=Agrupa les mateixes línies de productes StartAParallelSale=Comenceu una venda nova paral·lela SaleStartedAt=La venda va començar a %s -ControlCashOpening=Open the "Control cash box" popup when opening the POS -CloseCashFence=Close cash box control +ControlCashOpening=Obriu la finestra emergent "Control de caixa" quan obriu el TPV +CloseCashFence=Tanca el control de caixa CashReport=Informe d'efectiu MainPrinterToUse=Impressora principal a utilitzar OrderPrinterToUse=Impressora de comandes a utilitzar @@ -113,7 +113,7 @@ BarRestaurant=Bar Restaurant AutoOrder=Comanda del propi client RestaurantMenu=Menú CustomerMenu=Menú de clients -ScanToMenu=Escaneja el codi QR per veure el menú +ScanToMenu=Escaneja el codi QR per a veure el menú ScanToOrder=Escaneja el codi QR per demanar Appearance=Aparença HideCategoryImages=Amaga les imatges de la categoria @@ -136,3 +136,4 @@ PrintWithoutDetails=Imprimeix sense detalls YearNotDefined=L'any no està definit TakeposBarcodeRuleToInsertProduct=Regla de codi de barres per inserir el producte TakeposBarcodeRuleToInsertProductDesc=Regla per a extreure la referència del producte + una quantitat d'un codi de barres escanejat.
Si està buit (valor per defecte), l'aplicació utilitzarà el codi de barres complet escanejat per a trobar el producte.

Si es defineix, sintaxi ha de ser:
ref: NB + Pr: NB + qd: NB + altres: NB
on NB és el nombre de caràcters a utilitzar per a extreure dades del codi de barres escanejat amb:
  • ref : referència del producte
  • qu : quantitat de conjunt a l'inserir elements (unitats)
  • qd : quantitat de conjunt a l'inserir article (decimals)
  • altra : altres caràcters
+AlreadyPrinted=Ja està imprès diff --git a/htdocs/langs/ca_ES/categories.lang b/htdocs/langs/ca_ES/categories.lang index d5c556fd63b..ccfbb202ba0 100644 --- a/htdocs/langs/ca_ES/categories.lang +++ b/htdocs/langs/ca_ES/categories.lang @@ -90,11 +90,14 @@ CategorieRecursivHelp=Si l'opció està activada, quan afegiu un producte a una AddProductServiceIntoCategory=Afegir el següent producte/servei AddCustomerIntoCategory=Assigna la categoria al client AddSupplierIntoCategory=Assigna la categoria al proveïdor +AssignCategoryTo=Assigna una categoria a ShowCategory=Mostra etiqueta ByDefaultInList=Per defecte en el llistat ChooseCategory=Tria la categoria StocksCategoriesArea=Categories de magatzems +TicketsCategoriesArea=Categories d'entrades ActionCommCategoriesArea=Categories d'esdeveniments WebsitePagesCategoriesArea=Categories de Pàgines/Contenidors KnowledgemanagementsCategoriesArea=Categories de l'article KM UseOrOperatorForCategories=Utilitzeu l'operador "O" per a les categories +AddObjectIntoCategory=Afegeix un objecte a la categoria diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index 4d302381ee7..d98fa1ebfe0 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Naturalesa del tercer NatureOfContact=Natura del contacte Address=Adreça State=Província +StateId=ID de l'estat StateCode=Codi Estat/Província StateShort=Estat Region=Regió Region-State=Regió - Estat Country=País CountryCode=Codi del país -CountryId=Id. de país +CountryId=ID del país Phone=Telèfon PhoneShort=Telèfon Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=El codi del proveïdor no és vàlid CustomerCodeModel=Model de codi client SupplierCodeModel=Model de codi de proveïdor Gencod=Codi de barra -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Codi de barres de preu ref ##### Professional ID ##### ProfId1Short=CIF/NIF ProfId2Short=Núm. S.S. @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Registre Mercantil) ProfId2CM=Id. prof. 2 (núm. contribuent) -ProfId3CM=Id. prof. 3 (Decret de creació) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=Id. prof. 3 (núm. decret de creació) +ProfId4CM=Id. prof. 4 (certificat de dipòsit núm.) +ProfId5CM=Id. prof. 5 (altres) ProfId6CM=- ProfId1ShortCM=Registre Mercantil ProfId2ShortCM=Contribuent núm. -ProfId3ShortCM=Decret de creació -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=Nº de decret de creació +ProfId4ShortCM=Certificat de dipòsit núm. ProfId5ShortCM=Altres ProfId6ShortCM=- ProfId1CO=CIF/NIF diff --git a/htdocs/langs/ca_ES/compta.lang b/htdocs/langs/ca_ES/compta.lang index 4ed1ca6991d..e68a0629945 100644 --- a/htdocs/langs/ca_ES/compta.lang +++ b/htdocs/langs/ca_ES/compta.lang @@ -204,8 +204,8 @@ LT1ReportByQuarters=Informe impost 2 per tipus LT2ReportByQuarters=Informe impost 3 per tipus LT1ReportByQuartersES=Informe per taxa de RE LT2ReportByQuartersES=Informe per taxa de IRPF -SeeVATReportInInputOutputMode=Consulteu l'informe %sVAT collection%s per obtenir un càlcul estàndard -SeeVATReportInDueDebtMode=Consulteu l'informe %sVAT a debit%s per obtenir un càlcul amb una opció de facturació. +SeeVATReportInInputOutputMode=Vegeu l'informe %sIVA recaptat%s per a un càlcul estàndard +SeeVATReportInDueDebtMode=Vegeu l'informe %sIVA degut%s per a un càlcul amb opció a la facturació RulesVATInServices=- Per als serveis, l'informe inclou l'IVA dels pagaments realment rebuts o pagats en funció de la data de pagament. RulesVATInProducts=- Per als actius materials, l'informe inclou l'IVA en funció de la data de pagament. RulesVATDueServices=- Per als serveis, l'informe inclou l'IVA de les factures vençudes, pagades o no, en funció de la data de la factura. @@ -300,3 +300,4 @@ InvoiceToPay15Days=Per a pagar (15 a 30 dies) InvoiceToPay30Days=Per a pagar (> 30 dies) ConfirmPreselectAccount=Preseleccioneu el codi comptable ConfirmPreselectAccountQuestion=Esteu segur que voleu preseleccionar les línies seleccionades %s amb aquest codi comptable? +AmountPaidMustMatchAmountOfDownPayment=L'import pagat ha de coincidir amb l'import del pagament inicial diff --git a/htdocs/langs/ca_ES/errors.lang b/htdocs/langs/ca_ES/errors.lang index 26ec96567de..aecba7b6975 100644 --- a/htdocs/langs/ca_ES/errors.lang +++ b/htdocs/langs/ca_ES/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=No s’ha de desactivar Javascript perquè funcioni ErrorPasswordsMustMatch=Les 2 contrasenyes indicades s'han de correspondre ErrorContactEMail=S'ha produït un error tècnic. Si us plau, contacteu amb l'administrador al següent correu electrònic %s i proporcioneu el codi d'error %s al vostre missatge o afegiu una còpia de la pantalla d'aquesta pàgina. ErrorWrongValueForField=Camp %s : ' %s ' no coincideix amb la regla regex %s +ErrorHtmlInjectionForField=Camp %s : el valor ' %s no conté dades malicioses ' ErrorFieldValueNotIn=Camp %s : ' %s ' no és un valor trobat en el camp %s de %s ErrorFieldRefNotIn=Camp %s : ' %s ' no és un %s ref actual ErrorsOnXLines=S'han trobat %s errors @@ -230,7 +231,7 @@ ErrorDescRequiredForFreeProductLines=La descripció és obligatòria per a líni ErrorAPageWithThisNameOrAliasAlreadyExists=La pàgina / contenidor %s té el mateix nom o àlies alternatiu que el que intenta utilitzar ErrorDuringChartLoad=S'ha produït un error en carregar el gràfic de comptes. Si pocs comptes no s'han carregat, podeu introduir-los manualment. ErrorBadSyntaxForParamKeyForContent=Sintaxi incorrecta per a la clau de contingut del paràmetre. Ha de tenir un valor que comenci per %s o %s -ErrorVariableKeyForContentMustBeSet=Error, s’ha d’establir la constant amb el nom %s (amb el contingut de text a mostrar) o %s (amb una URL externa a mostrar). +ErrorVariableKeyForContentMustBeSet=Error, s'ha d'establir la constant amb el nom %s (amb el contingut de text a mostrar) o %s (amb l'URL extern per a mostrar). ErrorURLMustEndWith=L'URL %s ha de finalitzar %s ErrorURLMustStartWithHttp=L'URL %s ha de començar amb http: // o https: // ErrorHostMustNotStartWithHttp=El nom d'amfitrió %s NO ha de començar amb http: // o https: // @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Primer heu de configurar el vostre pla ErrorFailedToFindEmailTemplate=No s'ha pogut trobar la plantilla amb el nom de codi %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durada no definida al servei. No hi ha manera de calcular el preu per hora. ErrorActionCommPropertyUserowneridNotDefined=El propietari de l'usuari és obligatori -ErrorActionCommBadType=El tipus d'esdeveniment seleccionat (identificador: %n, codi: %s) no existeix al diccionari del tipus d'esdeveniment +ErrorActionCommBadType=El tipus d'esdeveniment seleccionat (id: %s, codi: %s) no existeix al diccionari de tipus d'esdeveniment CheckVersionFail=Error de comprovació de versió ErrorWrongFileName=El nom del fitxer no pot contenir __COSA__ ErrorNotInDictionaryPaymentConditions=No es troba al Diccionari de condicions de pagament, modifiqueu-lo. @@ -283,11 +284,18 @@ ErrorAttributeIsUsedIntoProduct=Aquest atribut s'utilitza en una o més variants ErrorAttributeValueIsUsedIntoProduct=Aquest valor d'atribut s'utilitza en una o més variants de producte ErrorPaymentInBothCurrency=Error, tots els imports s'han d'introduir a la mateixa columna ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Intenteu pagar factures en la moneda %s des d'un compte amb la moneda %s +ErrorInvoiceLoadThirdParty=No es pot carregar l'objecte de tercers per a la factura "%s" +ErrorInvoiceLoadThirdPartyKey=La clau de tercers "%s" no s'ha establert per a la factura "%s" +ErrorDeleteLineNotAllowedByObjectStatus=L'estat actual de l'objecte no permet suprimir la línia +ErrorAjaxRequestFailed=La sol·licitud ha fallat +ErrorThirpdartyOrMemberidIsMandatory=És obligatori un tercer o membre de la societat +ErrorFailedToWriteInTempDirectory=No s'ha pogut escriure al directori temporal +ErrorQuantityIsLimitedTo=La quantitat està limitada a %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El paràmetre PHP upload_max_filesize (%s) és superior al paràmetre PHP post_max_size (%s). No es tracta d’una configuració consistent. WarningPasswordSetWithNoAccount=S'ha establert una contrasenya per a aquest soci. Tot i això, no s'ha creat cap compte d'usuari. Per tant, aquesta contrasenya s’emmagatzema però no es pot utilitzar per a iniciar la sessió a Dolibarr. Pot ser utilitzat per un mòdul/interfície extern, però si no necessiteu definir cap inici de sessió ni contrasenya per a un soci, podeu desactivar l'opció "Gestiona un inici de sessió per a cada soci" des de la configuració del mòdul Socis. Si heu de gestionar un inici de sessió però no necessiteu cap contrasenya, podeu mantenir aquest camp buit per a evitar aquesta advertència. Nota: El correu electrònic també es pot utilitzar com a inici de sessió si el soci està enllaçat amb un usuari. -WarningMandatorySetupNotComplete=Feu clic aquí per a configurar els paràmetres obligatoris +WarningMandatorySetupNotComplete=Feu clic aquí per a configurar els paràmetres principals WarningEnableYourModulesApplications=Feu clic aquí per a activar els vostres mòduls i aplicacions WarningSafeModeOnCheckExecDir=Atenció, està activada l'opció PHP safe_mode, la comanda ha d'estar dins d'un directori declarat dins del paràmetre php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Ja existeix un marcador amb aquest títol o aquest URL. @@ -317,6 +325,7 @@ WarningCreateSubAccounts=Atenció, no podeu crear directament un subcompte, heu WarningAvailableOnlyForHTTPSServers=Disponible només si s'utilitza una connexió segura HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=El mòdul %s no s'ha habilitat. Per tant, potser us perdeu molts esdeveniments aquí. WarningPaypalPaymentNotCompatibleWithStrict=El valor "Estricte" fa que les funcions de pagament en línia no funcionin correctament. Utilitzeu "Lax". +WarningThemeForcedTo=Avís, el tema s'ha forçat a %s per la constant oculta MAIN_FORCETHEME # Validate RequireValidValue = El valor no és vàlid diff --git a/htdocs/langs/ca_ES/eventorganization.lang b/htdocs/langs/ca_ES/eventorganization.lang index fb83cd08ad9..8ad5bd64b6c 100644 --- a/htdocs/langs/ca_ES/eventorganization.lang +++ b/htdocs/langs/ca_ES/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Conferència o estand AmountPaid = Quantitat pagada DateOfRegistration = Data de registre ConferenceOrBoothAttendee = Assistent a conferències o estands +ApplicantOrVisitor=Sol·licitant o visitant +Speaker=Conferenciant # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=El vostre pagament pel registr OrganizationEventBulkMailToAttendees=Aquest és un recordatori de la vostra participació a l'esdeveniment com a assistent OrganizationEventBulkMailToSpeakers=Aquest és un recordatori de la vostra participació a l’esdeveniment com a ponent OrganizationEventLinkToThirdParty=Enllaç a tercers (client, proveïdor o soci) +OrganizationEvenLabelName=Nom públic de la conferència o estand NewSuggestionOfBooth=Sol·licitud d'estand NewSuggestionOfConference=Sol·licitud per a una conferència @@ -163,7 +166,7 @@ DeleteConferenceOrBoothAttendee=Elimina l'assistent RegistrationAndPaymentWereAlreadyRecorder=Ja es va registrar un registre i un pagament per al correu electrònic %s EmailAttendee=Correu electrònic de l'assistent EmailCompanyForInvoice=Correu electrònic de l'empresa (per a la factura, si és diferent del correu electrònic dels assistents) -ErrorSeveralCompaniesWithEmailContactUs=S'han trobat diverses empreses amb aquest correu electrònic, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per obtenir una validació manual -ErrorSeveralCompaniesWithNameContactUs=S'han trobat diverses empreses amb aquest nom per la qual cosa no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per obtenir una validació manual +ErrorSeveralCompaniesWithEmailContactUs=S'han trobat diverses empreses amb aquest correu electrònic, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per a una validació manual +ErrorSeveralCompaniesWithNameContactUs=S'han trobat diverses empreses amb aquest nom, de manera que no podem validar automàticament el vostre registre. Si us plau, poseu-vos en contacte amb nosaltres a %s per a obtenir una validació manual NoPublicActionsAllowedForThisEvent=No hi ha cap acció pública oberta al públic per a aquest esdeveniment -MaxNbOfAttendees=Max number of attendees +MaxNbOfAttendees=Nombre màxim d'assistents diff --git a/htdocs/langs/ca_ES/exports.lang b/htdocs/langs/ca_ES/exports.lang index 353dc75c041..cc36d947d53 100644 --- a/htdocs/langs/ca_ES/exports.lang +++ b/htdocs/langs/ca_ES/exports.lang @@ -18,6 +18,7 @@ ExportableFields=Camps exportables ExportedFields=Camps a exportar ImportModelName=Nom del perfil d'importació ImportModelSaved=S'ha desat el perfil d'importació com %s . +ImportProfile=Importa el perfil DatasetToExport=Conjunt de dades a exportar DatasetToImport=Lot de dades a importar ChooseFieldsOrdersAndTitle=Trieu l'ordre dels camps ... @@ -53,8 +54,9 @@ TypeOfLineServiceOrProduct=Tipus de línia (0=producte, 1=servei) FileWithDataToImport=Arxiu que conté les dades a importar FileToImport=Arxiu origen a importar FileMustHaveOneOfFollowingFormat=El fitxer a importar ha de tenir un dels següents formats -DownloadEmptyExample=Download a template file with examples and information on fields you can import -StarAreMandatory=Into the template file, all fields with a * are mandatory fields +DownloadEmptyExampleShort=Descarrega un fitxer de mostra +DownloadEmptyExample=Baixeu un fitxer de plantilla amb exemples i informació sobre camps que podeu importar +StarAreMandatory=Al fitxer de plantilla, tots els camps amb * són camps obligatoris ChooseFormatOfFileToImport=Trieu el format del fitxer que voleu utilitzar com a format de fitxer d'importació fent clic a la icona %s per seleccionar-lo ... ChooseFileToImport=Pengeu un fitxer i feu clic a la icona %s per seleccionar el fitxer com a fitxer d'importació d'origen ... SourceFileFormat=Format de l'arxiu origen @@ -82,7 +84,7 @@ SelectFormat=Seleccioneu aquest format de fitxer d'importació RunImportFile=Importa dades NowClickToRunTheImport=Comproveu els resultats de la simulació d'importació. Corregiu els errors i torneu a provar.
Quan la simulació no informa d'errors, pot procedir a importar les dades a la base de dades. DataLoadedWithId=Les dades importades tindran un camp addicional a cada taula de base de dades amb aquest identificador d'importació: %s , per a permetre que es pugui cercar en el cas d'investigar un problema relacionat amb aquesta importació. -ErrorMissingMandatoryValue=Les dades obligatòries estan buides al fitxer de codi font %s . +ErrorMissingMandatoryValue=Les dades obligatòries estan buides al fitxer font de la columna %s . TooMuchErrors=Encara hi ha 0xaek83365837f %s
altres línies d'origen amb errors, però la producció ha estat limitada. TooMuchWarnings=Encara hi ha %s altres línies d'origen amb advertències, però la producció ha estat limitada. EmptyLine=Línia en blanc @@ -92,9 +94,9 @@ YouCanUseImportIdToFindRecord=Podeu trobar tots els registres importats a la vos NbOfLinesOK=Nombre de línies sense errors ni warnings: %s. NbOfLinesImported=Nombre de línies correctament importades: %s. DataComeFromNoWhere=El valor a inserir no correspon a cap camp de l'arxiu origen. -DataComeFromFileFieldNb=El valor a inserir es correspon al camp nombre <%s de l'arxiu origen. -DataComeFromIdFoundFromRef=El valor que prové del camp numèric %s del fitxer d'origen s'utilitzarà per a trobar l'id de l'objecte pare que s'utilitzarà (de manera que l'objecte %s que té la referència del fitxer d'origen ha d'existir a la base de dades). -DataComeFromIdFoundFromCodeId=El codi que prové del camp numèric %s del fitxer d'origen s'utilitzarà per a trobar l'id de l'objecte pare a utilitzar (pel que el codi del fitxer d'origen ha d'existir al diccionari %s). Tingueu en compte que si coneixeu l'identificador, també podeu utilitzar-lo al fitxer font en lloc del codi. La importació ha de funcionar en ambdós casos. +DataComeFromFileFieldNb=El valor a inserir prové de la columna %s al fitxer font. +DataComeFromIdFoundFromRef=El valor que prové de la columna %s del fitxer font s'utilitzarà per a trobar l'identificador de l'objecte pare que s'utilitzarà (per tant, l'objecte %s que té referència del fitxer font ha d'existir a la base de dades). +DataComeFromIdFoundFromCodeId=El codi que prové de la columna %s del fitxer font s'utilitzarà per a trobar l'identificador de l'objecte principal que cal utilitzar (per tant, el codi del fitxer font ha d'existir al diccionari %s). Tingueu en compte que si coneixeu l'identificador, també podeu utilitzar-lo al fitxer font en lloc del codi. La importació hauria de funcionar en ambdós casos. DataIsInsertedInto=Les dades de l'arxiu d'origen s'inseriran en el següent camp: DataIDSourceIsInsertedInto=L'identificador de l'objecte pare, que s'ha trobat amb les dades del fitxer d'origen, s'inserirà al camp següent: DataCodeIDSourceIsInsertedInto=L'identificador de la línia pare, que s'ha trobat a partir del codi, s'inserirà al camp següent: @@ -135,6 +137,9 @@ NbInsert=Nombre de línies afegides: %s NbUpdate=Nombre de línies actualitzades: %s MultipleRecordFoundWithTheseFilters=S'han trobat múltiples registres amb aquests filtres: %s StocksWithBatch=Estocs i ubicacions (magatzem) de productes amb número de lot/sèrie -WarningFirstImportedLine=The first line(s) will not be imported with the current selection -NotUsedFields=Fields of database not used -SelectImportFieldsSource = Choose the source file fields you want to import and their target field in database by choosing the fields in each select boxes, or select a predefined import profile: +WarningFirstImportedLine=Les primeres línies no s'importaran amb la selecció actual +NotUsedFields=Camps de la base de dades no utilitzats +SelectImportFieldsSource = Trieu els camps del fitxer d'origen que voleu importar i el seu camp de destinació a la base de dades escollint els camps de cada casilla de selecció o seleccioneu un perfil d'importació predefinit: +MandatoryTargetFieldsNotMapped=Alguns camps de destinació obligatoris no estan assignats +AllTargetMandatoryFieldsAreMapped=S'assignen tots els camps de destinació que necessiten un valor obligatori +ResultOfSimulationNoError=Resultat de la simulació: Sense error diff --git a/htdocs/langs/ca_ES/externalsite.lang b/htdocs/langs/ca_ES/externalsite.lang deleted file mode 100644 index 4547f3e3c70..00000000000 --- a/htdocs/langs/ca_ES/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configuració de l'enllaç a la pàgina web externa -ExternalSiteURL=URL del lloc extern del contingut iframe HTML -ExternalSiteModuleNotComplete=El mòdul Lloc web extern no ha estat configurat correctament. -ExampleMyMenuEntry=La meva entrada del menú diff --git a/htdocs/langs/ca_ES/ftp.lang b/htdocs/langs/ca_ES/ftp.lang deleted file mode 100644 index 54903cb63c4..00000000000 --- a/htdocs/langs/ca_ES/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuració del mòdul client FTP -NewFTPClient=Nova connexió client FTP -FTPArea=Àrea FTP -FTPAreaDesc=Aquesta pantalla presenta una vista de servidor FTP -SetupOfFTPClientModuleNotComplete=La configuració del mòdul de client FTP sembla incompleta -FTPFeatureNotSupportedByYourPHP=El seu PHP no suporta les funcions FTP -FailedToConnectToFTPServer=No s'ha pogut connectar amb el servidor FTP (servidor: %s, port %s) -FailedToConnectToFTPServerWithCredentials=No s'ha pogut connectar amb el login/contrasenya FTP configurats -FTPFailedToRemoveFile=No s'ha pogut suprimir el fitxer %s. -FTPFailedToRemoveDir=No s'ha pogut suprimir la carpeta %s (Comproveu els permisos i que el directori està buit). -FTPPassiveMode=Mode passiu -ChooseAFTPEntryIntoMenu=Tria una entrada FTP en el menú... -FailedToGetFile=Error obtenint els fitxers %s diff --git a/htdocs/langs/ca_ES/help.lang b/htdocs/langs/ca_ES/help.lang index 02b26539227..431e2d14223 100644 --- a/htdocs/langs/ca_ES/help.lang +++ b/htdocs/langs/ca_ES/help.lang @@ -20,4 +20,4 @@ BackToHelpCenter=En cas contrari, torna a la pàgina d'inici del C LinkToGoldMember=Pots trucar a un dels formadors preseleccionats per Dolibarr pel teu idioma (%s) fent clic al seu Panell (l'estat i el preu màxim s'actualitzen automàticament): PossibleLanguages=Idiomes disponibles SubscribeToFoundation=Ajuda al projecte Dolibarr, adhereix-te a l'associació -SeeOfficalSupport=Per obtenir suport oficial de Dolibarr en el vostre idioma:
%s +SeeOfficalSupport=Per a obtenir suport oficial de Dolibarr en el vostre idioma:
%s diff --git a/htdocs/langs/ca_ES/holiday.lang b/htdocs/langs/ca_ES/holiday.lang index 845ee3ffe97..3a8eed8851f 100644 --- a/htdocs/langs/ca_ES/holiday.lang +++ b/htdocs/langs/ca_ES/holiday.lang @@ -1,10 +1,10 @@ # Dolibarr language file - Source file is en_US - holiday -HRM=RRHH +HRM=RH Holidays=Dies lliures CPTitreMenu=Dies lliures MenuReportMonth=Estat mensual MenuAddCP=Sol·licitud nova de permís -NotActiveModCP=Ha d'activar el mòdul Dies lliures retribuïts per veure aquesta pàgina +NotActiveModCP=Heu d'habilitar el mòdul Dies lliures per a veure aquesta pàgina. AddCP=Realitzar una petició de dies lliures DateDebCP=Data inici DateFinCP=Data fi diff --git a/htdocs/langs/ca_ES/hrm.lang b/htdocs/langs/ca_ES/hrm.lang index b62f4fc76ca..cfcaaf89534 100644 --- a/htdocs/langs/ca_ES/hrm.lang +++ b/htdocs/langs/ca_ES/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Obre l'establiment CloseEtablishment=Tanca l'establiment # Dictionary DictionaryPublicHolidays=Permís - Dies festius -DictionaryDepartment=HRM - Llistat de departament +DictionaryDepartment=HRM - Unitat organitzativa DictionaryFunction=HRM: llocs de treball # Module Employees=Empleats @@ -70,9 +70,9 @@ RequiredSkills=Competències necessàries per a aquesta feina UserRank=Rank d'usuari SkillList=Llista d'habilitats SaveRank=Guardar rang -knowHow=Saber com -HowToBe=Com ser -knowledge=Coneixement +TypeKnowHow=Saber com +TypeHowToBe=Com ser +TypeKnowledge=Coneixement AbandonmentComment=Comentari d'abandonament DateLastEval=Data darrera avaluació NoEval=No s'ha fet cap avaluació per a aquest empleat @@ -88,3 +88,5 @@ DeleteSkill = S'ha eliminat l'habilitat SkillsExtraFields=Atributs addicionals (Competències) JobsExtraFields=Atributs addicionals (Empleats) EvaluationsExtraFields=Atributs addicionals (avaluacions) +NeedBusinessTravels=Necessites viatges de negocis +NoDescription=Sense descripció diff --git a/htdocs/langs/ca_ES/install.lang b/htdocs/langs/ca_ES/install.lang index 4ce60465f89..e87de98def3 100644 --- a/htdocs/langs/ca_ES/install.lang +++ b/htdocs/langs/ca_ES/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=L'arxiu de configuració %s no és modificable. Com ConfFileIsWritable=L'arxiu %s és modificable. ConfFileMustBeAFileNotADir=El fitxer de configuració %s ha de ser un fitxer, no un directori. ConfFileReload=Actualització dels paràmetres del fitxer de configuració. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=El fitxer de configuració conf/conf.php no existeix o no es pot llegir. Executarem el procés d'instal·lació per intentar inicialitzar-lo. PHPSupportPOSTGETOk=Aquest PHP suporta bé les variables POST i GET. PHPSupportPOSTGETKo=És possible que aquest PHP no suport les variables POST i/o GET. Comproveu el paràmetre variables_order del php.ini. PHPSupportSessions=Aquest PHP suporta sessions @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Ha indicat potser un valor incorrecte per al paràme ErrorFailedToCreateDatabase=Error en crear la base de dades '%s'. ErrorFailedToConnectToDatabase=Error de connexió a la base de dades '%s'. ErrorDatabaseVersionTooLow=La versió de la base de dades (%s) és massa antiga. Cal la versió %s o superior. -ErrorPHPVersionTooLow=Versió del PHP massa antiga. Es requereix versió %s o superior. +ErrorPHPVersionTooLow=La versió de PHP és massa antiga. Es requereix la versió %s o superior. +ErrorPHPVersionTooHigh=La versió de PHP és massa alta. Es requereix la versió %s o inferior. ErrorConnectedButDatabaseNotFound=S'ha trobat una connexió amb el servidor però la base de dades '%s' no s'ha trobat. ErrorDatabaseAlreadyExists=La base de dades '%s' ja existeix. IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de dades no existeix, torneu enrere i marqueu l'opció "Crea una base de dades". @@ -75,7 +76,7 @@ PasswordsMismatch=Les contrasenyes no coincideixen, torni a intentar-ho! SetupEnd=Fi de la configuració SystemIsInstalled=La instal·lació s'ha finalitzat. SystemIsUpgraded=S'ha actualitzat Dolibarr correctament. -YouNeedToPersonalizeSetup=Ara ha de configurar Dolibarr segons les seves necessitats (Elecció de l'aparença, de les funcionalitats, etc). Per això, feu clic en el següent link: +YouNeedToPersonalizeSetup=Heu de configurar Dolibarr segons les vostres necessitats (aspecte, característiques, ...). Per a fer-ho, seguiu el següent enllaç: AdminLoginCreatedSuccessfuly=El codi d'usuari administrador de Dolibar '%s' s'ha creat correctament. GoToDolibarr=Aneu a Dolibarr GoToSetupArea=Aneu a Dolibarr (àrea de configuració) @@ -130,7 +131,7 @@ MigrationShippingDelivery2=Actualització de les dades d'enviaments 2 MigrationFinished=S'ha acabat la migració LastStepDesc= Darrer pas : definiu aquí l'inici de sessió i la contrasenya que voleu utilitzar per connectar-se a Dolibarr. No perdis això, ja que és el compte mestre per administrar tots els altres / comptes d'usuari addicionals. ActivateModule=Activació del mòdul %s -ShowEditTechnicalParameters=Premi aquí per veure/editar els paràmetres tècnics (mode expert) +ShowEditTechnicalParameters=Feu clic aquí per a mostrar/editar els paràmetres avançats (mode expert) WarningUpgrade=Advertència:\nPrimer heu executat una còpia de seguretat de la base de dades?\nAixò és molt recomanable. La pèrdua de dades (a causa, per exemple, d'errors a la versió 5.5.40/41/42/43 de mysql) pot ser possible durant aquest procés, de manera que és essencial fer un buidatge complet de la vostra base de dades abans d'iniciar qualsevol migració.\n\nFeu clic a D'acord per a iniciar el procés de migració... ErrorDatabaseVersionForbiddenForMigration=La versió de la vostra base de dades és %s. Té un error crític, que fa possible la pèrdua de dades si feu canvis estructurals a la base de dades, tals com requereix el procés de migració. Per la seva raó, la migració no es permetrà fins que no actualitzeu la base de dades a una versió actualitzada (llista de versions conegudes amb errors: %s) KeepDefaultValuesWamp=Heu utilitzat l'assistent de configuració Dolibarr de DoliWamp, de manera que els valors proposats aquí ja estan optimitzats. Canvieu-los només si saps el que estàs fent. diff --git a/htdocs/langs/ca_ES/knowledgemanagement.lang b/htdocs/langs/ca_ES/knowledgemanagement.lang index 4bc4ee56f66..df59431ee62 100644 --- a/htdocs/langs/ca_ES/knowledgemanagement.lang +++ b/htdocs/langs/ca_ES/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Articles KnowledgeRecord = Article KnowledgeRecordExtraFields = Camps extra per a l'article GroupOfTicket=Grup de tiquets -YouCanLinkArticleToATicketCategory=Podeu adjuntar un article a un grup de tiquets (per tant, l'article es suggerirà durant la qualificació dels nous tiquets) +YouCanLinkArticleToATicketCategory=Pots enllaçar l'article a un grup de tiquets (de manera que l'article es destacarà a qualsevol tiquet d'aquest grup) SuggestedForTicketsInGroup=Suggerit per a entrades quan el grup està SetObsolete=S'estableix com a obsolet diff --git a/htdocs/langs/ca_ES/loan.lang b/htdocs/langs/ca_ES/loan.lang index ce9fae18c7b..ac2dd4e3c13 100644 --- a/htdocs/langs/ca_ES/loan.lang +++ b/htdocs/langs/ca_ES/loan.lang @@ -1,7 +1,7 @@ # Dolibarr language file - Source file is en_US - loan Loan=Préstec Loans=Préstecs -NewLoan=Nou préstec +NewLoan=Préstec nou ShowLoan=Mostrar préstec PaymentLoan=Pagament del préstec LoanPayment=Pagament del préstec @@ -24,7 +24,7 @@ FinancialCommitment=Compromís financer InterestAmount=Interessos CapitalRemain=Capital restant TermPaidAllreadyPaid = Aquest termini ja està pagat -CantUseScheduleWithLoanStartedToPaid = No es pot utilitzar el planificador per a un préstec amb el pagament iniciat +CantUseScheduleWithLoanStartedToPaid = No es pot generar un calendari per a un préstec amb un pagament iniciat CantModifyInterestIfScheduleIsUsed = No pots modificar l’interès si fas servir la programació # Admin ConfigLoan=Configuració del mòdul de préstecs diff --git a/htdocs/langs/ca_ES/mails.lang b/htdocs/langs/ca_ES/mails.lang index 799c3ed0452..e1b776a6649 100644 --- a/htdocs/langs/ca_ES/mails.lang +++ b/htdocs/langs/ca_ES/mails.lang @@ -47,7 +47,7 @@ MailingStatusReadAndUnsubscribe=Llegeix i dona de baixa ErrorMailRecipientIsEmpty=L'adreça del destinatari és buida WarningNoEMailsAdded=Cap nou e-mail a afegir a la llista destinataris. ConfirmValidMailing=Vols validar aquest E-Mailing? -ConfirmResetMailing=Advertència, reiniciant el correu electrònic %s , permetrà tornar a enviar aquest correu electrònic en un correu a granel. Estàs segur que vols fer això? +ConfirmResetMailing=Avís, en reinicialitzar l'enviament massiu %s , permetreu tornar a enviar aquest correu electrònic en un correu massiu. Estàs segur que vols fer això? ConfirmDeleteMailing=Esteu segur que voleu suprimir aquesta adreça electrònica? NbOfUniqueEMails=Nombre de correus electrònics exclusius NbOfEMails=Nombre de correus electrònics @@ -120,7 +120,7 @@ IdRecord=ID registre DeliveryReceipt=Justificant de recepció. YouCanUseCommaSeparatorForSeveralRecipients=Podeu utilitzar el separador coma per a especificar diversos destinataris. TagCheckMail=Seguiment de l'obertura del email -TagUnsubscribe=Link de Desubscripció +TagUnsubscribe=Enllaç de cancel·lació de la subscripció TagSignature=Signatura de l'usuari remitent EMailRecipient=Correu electrònic del destinatari TagMailtoEmail=Correu electrònic del destinatari (inclòs l'enllaç "mailto:" html) @@ -137,7 +137,7 @@ ListOfNotificationsDone=Llista de totes les notificacions automàtiques enviades MailSendSetupIs=La configuració de l'enviament de correu electrònic s'ha configurat a '%s'. Aquest mode no es pot utilitzar per a enviar correus electrònics massius. MailSendSetupIs2=Primer heu d’anar, amb un compte d’administrador, al menú %sInici - Configuració - Correus electrònics%s per a canviar el paràmetre '%s' per a utilitzar el mode '%s'. Amb aquest mode, podeu introduir la configuració del servidor SMTP proporcionat pel vostre proveïdor de serveis d'Internet i utilitzar la funció de correu electrònic massiu. MailSendSetupIs3=Si teniu cap pregunta sobre com configurar el servidor SMTP, podeu demanar-li a %s. -YouCanAlsoUseSupervisorKeyword=També pot afegir l'etiqueta __SUPERVISOREMAIL__ per tenir un e-mail enviat pel supervisor a l'usuari (només funciona si un e-mail és definit per aquest supervisor) +YouCanAlsoUseSupervisorKeyword=També podeu afegir la paraula clau __SUPERVISOREMAIL__ perquè el correu electrònic s'enviï al supervisor de l'usuari (només funciona si es defineix un correu electrònic per a aquest supervisor) NbOfTargetedContacts=Nombre actual de correus electrònics de contactes destinataris UseFormatFileEmailToTarget=El fitxer importat ha de tenir el format email;nom;cognom;altre UseFormatInputEmailToTarget=Entra una cadena amb el format email;nom;cognom;altre @@ -178,3 +178,4 @@ IsAnAnswer=És la resposta d’un correu electrònic inicial RecordCreatedByEmailCollector=Registre creat pel Receptor de correus electrònics %s des del correu electrònic %s DefaultBlacklistMailingStatus=Valor per defecte del camp '%s' en crear un contacte nou DefaultStatusEmptyMandatory=Buit però obligatori +WarningLimitSendByDay=ADVERTIMENT: la configuració o el contracte de la vostra instància limita el vostre nombre de correus electrònics per dia a %s . Si intenteu enviar-ne més, pot ser que la vostra instància es ralenteixi o se suspengui. Poseu-vos en contacte amb el vostre servei d'assistència si necessiteu una quota més alta. diff --git a/htdocs/langs/ca_ES/main.lang b/htdocs/langs/ca_ES/main.lang index 8db057d02bf..e316bb74b99 100644 --- a/htdocs/langs/ca_ES/main.lang +++ b/htdocs/langs/ca_ES/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -69,7 +75,7 @@ ErrorFailedToSaveFile=Error, el registre del fitxer ha fallat. ErrorCannotAddThisParentWarehouse=Esteu intentant afegir un magatzem primari que ja és fill d'un mag atzem existent FieldCannotBeNegative=El camp "%s" no pot ser negatiu MaxNbOfRecordPerPage=Màx. nombre de registres per pàgina -NotAuthorized=No està autoritzat per fer-ho. +NotAuthorized=No estàs autoritzat per a fer-ho. SetDate=Indica la data SelectDate=Seleccioneu una data SeeAlso=Veure també %s @@ -345,7 +351,7 @@ KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes TeraBytes=Terabytes -UserAuthor=Enganyat per +UserAuthor=Creat per UserModif=Actualitzat per b=b. Kb=Kb @@ -549,8 +555,8 @@ Paid=Pagat Topic=Assumpte ByCompanies=Per empresa ByUsers=Per usuari -Links=Links -Link=Link +Links=Enllaços +Link=Enllaç Rejects=Devolucions Preview=Vista prèvia NextStep=Següent pas @@ -621,7 +627,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Arxius i documents adjunts JoinMainDoc=Unir al document principal -JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found +JoinMainDocOrLastGenerated=Envieu el document principal o l'últim generat si no el trobeu DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -712,6 +718,7 @@ FeatureDisabled=Funció desactivada MoveBox=Mou el panell Offered=Oferta NotEnoughPermissions=No té autorització per aquesta acció +UserNotInHierachy=Aquesta acció està reservada als supervisors d'aquest usuari SessionName=Nom sesió Method=Mètode Receive=Recepció @@ -930,8 +937,8 @@ WebSites=Pàgines web WebSiteAccounts=Comptes de lloc web ExpenseReport=Informe de despeses ExpenseReports=Informes de despeses -HR=RRHH -HRAndBank=RRHH i banc +HR=RH +HRAndBank=RH i Banc AutomaticallyCalculated=Calculat automàticament TitleSetToDraft=Torna a esborrany ConfirmSetToDraft=Estàs segur que vols tornar a l'estat Esborrany? @@ -1174,3 +1181,9 @@ ConfirmAllocateCommercial=Assigna la confirmació del representant de vendes ConfirmAllocateCommercialQuestion=Esteu segur que voleu assignar els registres seleccionats (%s)? CommercialsAffected=Representants comercials afectats CommercialAffected=Representant de vendes afectat +YourMessage=El teu missatge +YourMessageHasBeenReceived=S'ha rebut el teu missatge. Et respondrem o contactarem el més aviat possible. +UrlToCheck=URL per a comprovar +Automation=Automatització +CreatedByEmailCollector=Creat pel recol·lector de correu electrònic +CreatedByPublicPortal=Creat a partir del portal públic diff --git a/htdocs/langs/ca_ES/members.lang b/htdocs/langs/ca_ES/members.lang index cfcdb3e30e9..68bcc3adf9f 100644 --- a/htdocs/langs/ca_ES/members.lang +++ b/htdocs/langs/ca_ES/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Un altre soci (nom: %s, nom d' ErrorUserPermissionAllowsToLinksToItselfOnly=Per motius de seguretat, se us ha de concedir permisos per a editar tots els usuaris per a poder enllaçar un soci a un usuari que no és vostre. SetLinkToUser=Vincular a un usuari Dolibarr SetLinkToThirdParty=Vincular a un tercer Dolibarr -MembersCards=Generation of cards for members +MembersCards=Generació de carnets per a socis MembersList=Llistat de socis MembersListToValid=Llistat de socis esborrany (per a validar) MembersListValid=Llistat de socis validats @@ -35,7 +35,8 @@ DateEndSubscription=Data de finalització de la subscripció EndSubscription=Fi de la pertinença SubscriptionId=Identificador de contribució WithoutSubscription=Sense aportació -MemberId=ID de soci +MemberId=Identificador de membre +MemberRef=Membre Ref NewMember=Soci nou MemberType=Tipus de soci MemberTypeId=ID de tipus de soci @@ -102,7 +103,7 @@ ConfirmValidateMember=Vols validar aquest soci? FollowingLinksArePublic=Els següents enllaços són pàgines obertes que no estan protegides per cap permís de Dolibarr. No són pàgines amb format, són proporcionades com a exemple per a mostrar com llistar la base de dades de socis. PublicMemberList=Llistat públic de socis BlankSubscriptionForm=Formulari públic d’autoregistre -BlankSubscriptionFormDesc=Dolibarr us pot proporcionar una URL/lloc web públic per a permetre que els visitants externs sol·licitin subscriure's a la fundació. Si un mòdul de pagament en línia està habilitat, també es pot proporcionar automàticament un formulari de pagament. +BlankSubscriptionFormDesc=Dolibarr us pot proporcionar un URL/lloc web públic per a permetre que els visitants externs sol·licitin la subscripció a la fundació. Si un mòdul de pagament en línia està habilitat, també es pot proporcionar automàticament un formulari de pagament. EnablePublicSubscriptionForm=Activa el lloc web públic amb el formulari d'auto-subscripció ForceMemberType=Força el tipus de soci ExportDataset_member_1=Membres i contribucions @@ -155,7 +156,7 @@ DescADHERENT_CARD_TEXT=Text a imprimir en el carnet de soci (alineat a l'esquerr DescADHERENT_CARD_TEXT_RIGHT=Text a imprimir en el carnet de soci (alineat a la dreta) DescADHERENT_CARD_FOOTER_TEXT=Text a imprimir a la part inferior del carnet de soci ShowTypeCard=Veure tipus '%s' -HTPasswordExport=Generació fitxer htpassword +HTPasswordExport=Generació del fitxer htpassword NoThirdPartyAssociatedToMember=Cap tercer associat amb aquest membre MembersAndSubscriptions=Membres i contribucions MoreActions=Acció complementària al registre @@ -163,7 +164,7 @@ MoreActionsOnSubscription=Acció complementària suggerida per defecte a l'hora MoreActionBankDirect=Crea una entrada directa al compte bancari MoreActionBankViaInvoice=Crea una factura, i un pagament sobre el compte bancari MoreActionInvoiceOnly=Creació factura sense pagament -LinkToGeneratedPages=Generation of business cards or address sheets +LinkToGeneratedPages=Generació de targetes de visita o fulls d'adreces LinkToGeneratedPagesDesc=Aquesta pantalla li permet generar fitxers PDF amb els carnets de tots els socis o un soci particular. DocForAllMembersCards=Generació de targetes per a tots els socis DocForOneMemberCards=Generació de targetes per a un soci en particular @@ -198,7 +199,7 @@ NbOfSubscriptions=Nombre de contribucions AmountOfSubscriptions=Import recaptat de les contribucions TurnoverOrBudget=Volum de vendes (empresa) o Pressupost (associació o col.lectiu) DefaultAmount=Import per defecte de la contribució -CanEditAmount=El visitant pot triar / editar l'import de la seva contribució +CanEditAmount=Visitor can choose/edit amount of its contribution MEMBER_NEWFORM_PAYONLINE=Anar a la pàgina integrada de pagament en línia ByProperties=Per naturalesa MembersStatisticsByProperties=Estadístiques dels membres per naturalesa @@ -218,3 +219,5 @@ XExternalUserCreated=%s creats (s) usuaris externs ForceMemberNature=Naturalesa del membre de la força (individual o corporació) CreateDolibarrLoginDesc=La creació d'un inici de sessió d'usuari per als membres els permet connectar-se a l'aplicació. En funció de les autoritzacions concedides, podran, per exemple, consultar o modificar el seu fitxer ells mateixos. CreateDolibarrThirdPartyDesc=Un tercer és l'entitat jurídica que s'utilitzarà a la factura si decidiu generar factura per a cada contribució. El podreu crear més endavant durant el procés de gravació de la contribució. +MemberFirstname=Nom del membre +MemberLastname=Cognom del membre diff --git a/htdocs/langs/ca_ES/modulebuilder.lang b/htdocs/langs/ca_ES/modulebuilder.lang index 0bc7541322f..0ca1913650a 100644 --- a/htdocs/langs/ca_ES/modulebuilder.lang +++ b/htdocs/langs/ca_ES/modulebuilder.lang @@ -1,17 +1,17 @@ # Dolibarr language file - Source file is en_US - loan -ModuleBuilderDesc=Aquesta eina només l'han d'utilitzar usuaris o desenvolupadors experimentats. Proporciona utilitats per construir o editar el vostre propi mòdul. La documentació per al desenvolupament manual alternatiu és aquí . -EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +ModuleBuilderDesc=Aquesta eina només l'han d'utilitzar usuaris o desenvolupadors experimentats. Proporciona utilitats per a construir o editar el vostre propi mòdul. La documentació per al desenvolupament manual alternatiu és aquí . +EnterNameOfModuleDesc=Introduïu el nom del mòdul/aplicació que voleu crear sense espais. Utilitzeu majúscules per separar paraules (per exemple: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Introduïu el nom de l'objecte que voleu crear sense espais. Utilitzeu majúscules per separar paraules (per exemple: El meu objecte, Estudiant, Professor...). Es generaran el fitxer de classe CRUD, però també el fitxer API, les pàgines per llistar/afegir/editar/suprimir l'objecte i els fitxers SQL. +EnterNameOfDictionaryDesc=Introduïu el nom del diccionari que voleu crear sense espais. Utilitzeu majúscules per separar paraules (per exemple: MyDico...). Es generarà el fitxer de classe, però també el fitxer SQL. ModuleBuilderDesc2=Camí on es generen / editen els mòduls (primer directori per als mòduls externs definits en %s): %s ModuleBuilderDesc3=S'han trobat mòduls generats/editables: %s ModuleBuilderDesc4=Es detecta un mòdul com "editable" quan el fitxer %s existeix al directori arrel del mòdul NewModule=Mòdul nou NewObjectInModulebuilder=Objecte nou -NewDictionary=New dictionary +NewDictionary=Nou diccionari ModuleKey=Clau del mòdul ObjectKey=Clau de l'objecte -DicKey=Dictionary key +DicKey=Clau del diccionari ModuleInitialized=Mòdul inicialitzat FilesForObjectInitialized=S'han inicialitzat els fitxers per al objecte nou '%s' FilesForObjectUpdated=Fitxers de l'objecte '%s' actualitzat (fitxers .sql i fitxer .class.php) @@ -55,7 +55,7 @@ LanguageFile=Arxiu del llenguatge ObjectProperties=Propietats de l'objecte ConfirmDeleteProperty=Estàs segur que vols eliminar la propietat %s ? Això canviarà el codi a la classe PHP, però també eliminarà la columna de la definició de la taula de l'objecte. NotNull=No és NULL -NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) +NotNullDesc=1=Estableix la base de dades en NOT NULL, 0=Permet valors nuls, -1=Permet valors nuls forçant el valor a NULL si està buit ('' o 0) SearchAll=Utilitzat per a 'cerca tot' DatabaseIndex=Índex de bases de dades FileAlreadyExists=El fitxer %s ja existeix @@ -87,7 +87,7 @@ ListOfDictionariesEntries=Llista d'entrades de diccionaris ListOfPermissionsDefined=Llista de permisos definits SeeExamples=Mira exemples aquí EnabledDesc=Condició per a tenir aquest camp actiu (Exemples: 1 ó $conf->global->MYMODULE_MYOPTION) -VisibleDesc=És visible el camp ? (Exemples: 0=Mai visible, 1=Visible als llistats i als formularis crear/modificar/veure, 2=Visible només als llistats, 3=Visible només als formularis crear/modificar/veure (no als llistats), 4=Visible als llistats i només als formularis modificar/veure (no al de crear), 5=Visible als llistats i només al formulari de veure (però no als formularis de crear i modificar).

Utilitzant un valor negatiu implicarà que el camp no es mostrarà per defecte als llistats però podrà ser escollit per veure's).

pot ser una expressió, per exemple:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) +VisibleDesc=És visible el camp ? (Exemples: 0=Mai visible, 1=Visible als llistats i als formularis crear/modificar/veure, 2=Visible només als llistats, 3=Visible només als formularis crear/modificar/veure (no als llistats), 4=Visible als llistats i només als formularis modificar/veure (no al de crear), 5=Visible als llistats i només al formulari de veure (però no als formularis de crear i modificar).

Utilitzant un valor negatiu implicarà que el camp no es mostrarà per defecte als llistats però podrà ser escollit per a veure's).

pot ser una expressió, per exemple:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) DisplayOnPdfDesc=Mostra aquest camp en documents PDF compatibles, podeu gestionar la posició amb el camp "Posició".
Actualment, els models PDF compatibles coneguts són: eratostene (comanda), espadon (enviament), esponja (factures), cian (propal / pressupost), cornas (comanda del proveïdor)

= display
2 = només si no està buit

Per a les línies de documents:
0 = no es veuen les
1 = mostren en una columna
= 3 = display a la columna de descripció de línia després de la descripció
4 = display a la columna de descripció després de la descripció només si no està buida DisplayOnPdf=Visualització en PDF IsAMeasureDesc=Es pot acumular el valor del camp per a obtenir un total a la llista? (Exemples: 1 o 0) @@ -100,7 +100,7 @@ PermissionsDefDesc=Definiu aquí els nous permisos proporcionats pel vostre mòd MenusDefDescTooltip=Els menús proporcionats pel vostre mòdul/aplicació es defineixen a la matriu $this->menus al fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l'editor incrustat.

Nota: un cop definits (i el mòdul reactivat), els menús també són visibles a l'editor de menús disponible per als usuaris administradors a %s. DictionariesDefDescTooltip=Els diccionaris subministrats pel vostre mòdul/aplicació es defineixen a la matriu $this->dictionaries del fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l’editor incrustat.

Nota: un cop definit (i reactivat el mòdul), els diccionaris també són visibles a la zona de configuració per als usuaris administradors a %s. PermissionsDefDescTooltip=Els permisos proporcionats pel vostre mòdul / aplicació es defineixen a la matriu $ this-> rights al fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l’editor incrustat.

Nota: un cop definits (i el mòdul reactivat), els permisos es visualitzen a la configuració de permisos per defecte %s. -HooksDefDesc=Definiu a la propietat module_parts['hooks'], en el descriptor del mòdul, el context dels "hooks" que voleu gestionar (una llista de contextos es pot trobar si cerqueu 'initHooks' (en el codi del nucli de Dolibarr.
Editeu el fitxer del "hook" per a afegir el codi de les vostres funcions "hookables" (les quals es poden trobar cercant "executeHooks" en el codi del nucli de Dolibarr). +HooksDefDesc=Definiu a la propietat module_parts['hooks'] , al descriptor del mòdul, el context dels "hooks" que voleu gestionar (la llista de contextos es pot trobar mitjançant una cerca a ' initHooks(' en el codi del nucli).
Edita el fitxer "hook" per a afegir codi de les vostres funcions enganxades (les funcions enganxables es poden trobar mitjançant una cerca a ' executeHooks ' al codi del nucli). TriggerDefDesc=Definiu al fitxer disparador el codi que voleu executar quan s'executi un esdeveniment empresarial extern al vostre mòdul (esdeveniments desencadenats per altres mòduls). SeeIDsInUse=Consulteu els identificadors que s’utilitzen a la instal·lació SeeReservedIDsRangeHere=Consultar l'interval d'identificadors reservats @@ -130,9 +130,9 @@ UseSpecificEditorURL = Utilitzeu editor específic URL UseSpecificFamily = Utilitzeu una família específica UseSpecificAuthor = Utilitzeu un autor específic UseSpecificVersion = Utilitzeu una versió inicial específica -IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules -IncludeDocGeneration=I want to generate some documents from templates for the object +IncludeRefGeneration=La referència de l'objecte s'ha de generar automàticament mitjançant regles de numeració personalitzades +IncludeRefGenerationHelp=Marqueu-ho si voleu incloure codi per gestionar automàticament la generació de la referència mitjançant regles de numeració personalitzades +IncludeDocGeneration=Vull generar alguns documents a partir de plantilles per a l'objecte IncludeDocGenerationHelp=Si ho marques, es generarà el codi per a afegir una casella "Generar document" al registre. ShowOnCombobox=Mostra el valor a la llista desplegable KeyForTooltip=Clau per donar més informació @@ -153,3 +153,4 @@ LinkToParentMenu=Menú principal (fk_xxxxmenu) ListOfTabsEntries=Llista d'entrades de pestanyes TabsDefDesc=Definiu aquí les pestanyes proporcionades pel vostre mòdul TabsDefDescTooltip=Les pestanyes proporcionades pel vostre mòdul/aplicació es defineixen a la matriu $this->tabs al fitxer descriptor del mòdul. Podeu editar manualment aquest fitxer o utilitzar l'editor incrustat. +BadValueForType=Valor incorrecte per al tipus %s diff --git a/htdocs/langs/ca_ES/oauth.lang b/htdocs/langs/ca_ES/oauth.lang index d5808930a4f..8c0cc35de63 100644 --- a/htdocs/langs/ca_ES/oauth.lang +++ b/htdocs/langs/ca_ES/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=S'ha generat un token i s'ha desat en la base de dades local NewTokenStored=Token rebut i desat ToCheckDeleteTokenOnProvider=Feu clic aquí per a comprovar/eliminar l'autorització desada pel proveïdor OAuth %s TokenDeleted=Token eliminat -RequestAccess=Feu clic aquí per a sol·licitar/renovar l'accés i rebre un nou testimoni per a desar +RequestAccess=Feu clic aquí per sol·licitar/renovar l'accés i rebre un nou testimoni DeleteAccess=Feu clic aquí per a suprimir el testimoni UseTheFollowingUrlAsRedirectURI=Utilitzeu l'URL següent com a URI de redirecció quan creeu les vostres credencials amb el vostre proveïdor de OAuth: -ListOfSupportedOauthProviders=Introduïu les credencials proporcionades pel vostre proveïdor OAuth2. Només es mostren aquí els proveïdors compatibles OAuth2. Aquests serveis poden ser utilitzats per altres mòduls que necessiten autenticació OAuth2. -OAuthSetupForLogin=Pàgina per a generar un token OAuth +ListOfSupportedOauthProviders=Afegiu els vostres proveïdors de testimoni OAuth2. A continuació, aneu a la pàgina d'administració del vostre proveïdor d'OAuth per crear/obtenir un ID i un secret OAuth i deseu-los aquí. Un cop fet, activeu l'altra pestanya per generar el vostre testimoni. +OAuthSetupForLogin=Pàgina per gestionar (generar/suprimir) fitxes OAuth SeePreviousTab=Veure la pestanya anterior +OAuthProvider=Proveïdor d'OAuth OAuthIDSecret=OAuth ID i Secret TOKEN_REFRESH=Refresc present de token TOKEN_EXPIRED=Token expirat @@ -23,10 +24,13 @@ TOKEN_DELETE=Elimina el token desat OAUTH_GOOGLE_NAME=Servei d'OAuth Google OAUTH_GOOGLE_ID=Identificador de Google OAuth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Aneu a aquesta pàgina i després "Credencials" per a crear credencials OAuth OAUTH_GITHUB_NAME=Servei OAuth GitHub OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Aneu a aquesta pàgina i després "Registreu una aplicació nova" per crear credencials OAuth +OAUTH_URL_FOR_CREDENTIAL=Aneu a aquesta pàgina per crear o obtenir el vostre identificador i secret d'OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=ID OAuth +OAUTH_SECRET=Secret d'OAuth +OAuthProviderAdded=S'ha afegit el proveïdor OAuth +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ja existeix una entrada d'OAuth per a aquest proveïdor i l'etiqueta diff --git a/htdocs/langs/ca_ES/opensurvey.lang b/htdocs/langs/ca_ES/opensurvey.lang index e81e66a4551..a19413eadc3 100644 --- a/htdocs/langs/ca_ES/opensurvey.lang +++ b/htdocs/langs/ca_ES/opensurvey.lang @@ -37,7 +37,7 @@ ExpireDate=Data límit NbOfSurveys=Nombre d'enquestes NbOfVoters=Nombre de votants SurveyResults=Resultats -PollAdminDesc=Està autoritzat per canviar totes les línies de l'enquesta amb el botó "Editar". Pot, també, eliminar una columna o una línia amb %s. També podeu afegir una nova columna amb %s. +PollAdminDesc=Podeu canviar totes les línies de vot d'aquesta enquesta amb el botó "Edita". També podeu eliminar una columna o una línia amb %s. També podeu afegir una columna nova amb %s. 5MoreChoices=5 opcions més Against=En contra YouAreInivitedToVote=Està convidat a votar en aquesta enquesta diff --git a/htdocs/langs/ca_ES/other.lang b/htdocs/langs/ca_ES/other.lang index 280a364d960..25afe2f2f8d 100644 --- a/htdocs/langs/ca_ES/other.lang +++ b/htdocs/langs/ca_ES/other.lang @@ -101,7 +101,7 @@ PredefinedMailContentSendSupplierOrder=__(Hola)__\n\nTrobeu la nostra comanda __ PredefinedMailContentSendSupplierInvoice=__(Hola)__\n\nTrobeu la factura __REF__ adjunta\n\n\n__ (Atentament) __\n\n__USER_SIGNATURE__ PredefinedMailContentSendShipping=__(Hola)__\n\nTrobeu l'enviament __REF__ adjuntat\n\n\n__ (Atentament) __\n\n__USER_SIGNATURE__ PredefinedMailContentSendFichInter=__(Hola)__\n\nTrobeu la intervenció __REF__ adjunta\n\n\n__ (Atentament) __\n\n__USER_SIGNATURE__ -PredefinedMailContentLink=Podeu fer clic a l'enllaç següent per fer el pagament si encara no està fet.\n\n%s\n\n +PredefinedMailContentLink=Podeu fer clic a l'enllaç següent per a fer el vostre pagament si encara no s'ha fet.\n\n%s\n\n PredefinedMailContentGeneric=__(Hello)__\n\n\n__ (Sincerely) __\n\n__USER_SIGNATURE__ PredefinedMailContentSendActionComm=Recordatori d'esdeveniments "__EVENT_LABEL__" el dia __EVENT_DATE__ a les __EVENT_TIME__

Aquest és un missatge automàtic, no respongueu. DemoDesc=Dolibarr és un ERP/CRM compacte que admet diversos mòduls empresarials. Una demostració que mostri tots els mòduls no té cap sentit, ja que aquest escenari no es produeix mai (diversos centenars disponibles). Per tant, hi ha disponibles diversos perfils de demostració. @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=o construeix el teu perfil
(selecció de mòduls man DemoFundation=Gestió de socis d'una entitat DemoFundation2=Gestió de socis i tresoreria d'una entitat DemoCompanyServiceOnly=Empresa o autònom només amb venda de serveis -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Gestionar una botiga amb una caixa de diners DemoCompanyProductAndStocks=Compra venda de productes amb el Punt de Venda DemoCompanyManufacturing=Productes de fabricació de l'empresa DemoCompanyAll=Empresa amb activitats múltiples (tots els mòduls principals) @@ -244,7 +244,7 @@ FileIsTooBig=L'arxiu és massa gran PleaseBePatient=Si us plau sigui pacient... NewPassword=Contrasenya nova ResetPassword=Restablir la contrasenya -RequestToResetPasswordReceived=S'ha rebut una sol·licitud per canviar la teva contrasenya. +RequestToResetPasswordReceived=S'ha rebut una sol·licitud per a canviar la teva contrasenya. NewKeyIs=Aquesta és la nova contrasenya per a iniciar la sessió NewKeyWillBe=La contrasenya nova per a iniciar la sessió al programari serà ClickHereToGoTo=Clica aquí per anar a %s @@ -298,9 +298,30 @@ PopuProp=Productes / Serveis per popularitat als pressupostos PopuCom=Productes / Serveis per popularitat a les comandes ProductStatistics=Productes / Serveis Estadístiques NbOfQtyInOrders=Quantitat en comandes -SelectTheTypeOfObjectToAnalyze=Seleccioneu un objecte per veure'n les estadístiques ... +SelectTheTypeOfObjectToAnalyze=Seleccioneu un objecte per a veure'n les estadístiques... ConfirmBtnCommonContent = Esteu segur que voleu "%s"? ConfirmBtnCommonTitle = Confirmeu la vostra acció CloseDialog = Tancar Autofill = Emplenament automàtic + +# externalsite +ExternalSiteSetup=Configuració de l'enllaç a la pàgina web externa +ExternalSiteURL=URL del lloc extern del contingut iframe HTML +ExternalSiteModuleNotComplete=El mòdul Lloc web extern no ha estat configurat correctament. +ExampleMyMenuEntry=La meva entrada del menú + +# FTP +FTPClientSetup=Configuració del mòdul Client FTP o SFTP +NewFTPClient=Configuració nova de la connexió FTP/FTPS +FTPArea=Àrea FTP/FTPS +FTPAreaDesc=Aquesta pantalla mostra una vista d'un servidor FTP i SFTP. +SetupOfFTPClientModuleNotComplete=La configuració del mòdul Client FTP o SFTP sembla incompleta +FTPFeatureNotSupportedByYourPHP=El vostre PHP no admet funcions FTP o SFTP +FailedToConnectToFTPServer=No s'ha pogut connectar al servidor (servidor %s, port %s) +FailedToConnectToFTPServerWithCredentials=No s'ha pogut iniciar la sessió al servidor amb l'usuari/contrasenya definit +FTPFailedToRemoveFile=No s'ha pogut eliminar el fitxer %s . +FTPFailedToRemoveDir=No s'ha pogut eliminar la carpeta %s : comproveu els permisos i que la carpeta està buida. +FTPPassiveMode=Mode passiu +ChooseAFTPEntryIntoMenu=Tria un lloc FTP/SFTP del menú... +FailedToGetFile=No s'han pogut obtenir els fitxers %s diff --git a/htdocs/langs/ca_ES/partnership.lang b/htdocs/langs/ca_ES/partnership.lang index bd9fe10404f..7254e26fcea 100644 --- a/htdocs/langs/ca_ES/partnership.lang +++ b/htdocs/langs/ca_ES/partnership.lang @@ -38,10 +38,11 @@ PartnershipAbout=Quant a Partnership PartnershipAboutPage=Associació sobre la pàgina partnershipforthirdpartyormember=L'estat de soci s'ha de definir en un "tercer" o un "membre". PARTNERSHIP_IS_MANAGED_FOR=Associació gestionada per -PARTNERSHIP_BACKLINKS_TO_CHECK=Enllaços enrere per comprovar +PARTNERSHIP_BACKLINKS_TO_CHECK=Retroenllaços per a comprovar PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb de dies abans de cancel·lar l'estat d'una associació quan la subscripció ha caducat ReferingWebsiteCheck=Comprovació de referència del lloc web -ReferingWebsiteCheckDesc=Podeu habilitar una funció per comprovar que els vostres socis han afegit un enllaç de retrocés als dominis del vostre lloc web al seu propi lloc web. +ReferingWebsiteCheckDesc=Podeu activar una funció per a comprovar que els vostres socis hagin afegit un retroenllaç als dominis del vostre lloc web al seu propi lloc web. +PublicFormRegistrationPartnerDesc=Dolibarr us pot proporcionar un URL/lloc web públic per a permetre que els visitants externs sol·licitin formar part del programa d'associació. # # Object @@ -59,6 +60,12 @@ BacklinkNotFoundOnPartnerWebsite=Enllaç de retrocés no trobat al lloc web asso ConfirmClosePartnershipAsk=Esteu segur que voleu cancel·lar aquesta associació? PartnershipType=Tipus de col·laboració PartnershipRefApproved=Associació %s aprovada +KeywordToCheckInWebsite=Si voleu comprovar que una paraula clau determinada està present al lloc web de cada soci, definiu aquesta paraula clau aquí +PartnershipDraft=Esborrany +PartnershipAccepted=Acceptat +PartnershipRefused=Rebutjat +PartnershipCanceled=Cancel·lat +PartnershipManagedFor=Els socis ho són # # Template Mail @@ -73,7 +80,7 @@ YourPartnershipRefusedTopic=L'associació es va negar YourPartnershipAcceptedTopic=S'ha acceptat l'associació YourPartnershipCanceledTopic=S'ha cancel·lat l'associació -YourPartnershipWillSoonBeCanceledContent=Us informem que la vostra associació aviat es cancel·larà (no s'ha trobat el backlink) +YourPartnershipWillSoonBeCanceledContent=Us informem que aviat es cancel·larà la vostra associació (no s'ha trobat l'enllaç de retrocés) YourPartnershipRefusedContent=Us informem que la vostra sol·licitud de col·laboració s’ha rebutjat. YourPartnershipAcceptedContent=Us informem que la vostra sol·licitud de col·laboració ha estat acceptada. YourPartnershipCanceledContent=Us informem que la vostra associació s’ha cancel·lat. @@ -82,11 +89,6 @@ CountLastUrlCheckError=Nombre d'errors de l'última comprovació de l'URL LastCheckBacklink=Data de l'última comprovació de l'URL ReasonDeclineOrCancel=Rebutjar la raó -# -# Status -# -PartnershipDraft=Esborrany -PartnershipAccepted=Acceptat -PartnershipRefused=Rebutjat -PartnershipCanceled=Cancel·lat -PartnershipManagedFor=Els socis ho són +NewPartnershipRequest=Nova sol·licitud de col·laboració +NewPartnershipRequestDesc=Aquest formulari us permet sol·licitar formar part d'un dels nostres programes d'associació. Si necessiteu ajuda per omplir aquest formulari, poseu-vos en contacte amb el correu electrònic %s . + diff --git a/htdocs/langs/ca_ES/paypal.lang b/htdocs/langs/ca_ES/paypal.lang index 529fe9c0b28..8273b673a23 100644 --- a/htdocs/langs/ca_ES/paypal.lang +++ b/htdocs/langs/ca_ES/paypal.lang @@ -29,7 +29,7 @@ ErrorSeverityCode=Codi sever d'error OnlinePaymentSystem=Sistema de pagament en línia PaypalLiveEnabled=El mode "en viu" de PayPal habilitat (en cas contrari, el mode prova / sandbox) PaypalImportPayment=Importeu els pagaments de PayPal -PostActionAfterPayment=Accions posteriors desprès dels pagaments +PostActionAfterPayment=Accions després dels pagaments ARollbackWasPerformedOnPostActions=S'ha produït una tornada endarrere en totes les accions "post". Heu de completar les accions "post" manualment si són necessàries. ValidationOfPaymentFailed=La validació del pagament ha fallat CardOwner=Titular de targeta diff --git a/htdocs/langs/ca_ES/printing.lang b/htdocs/langs/ca_ES/printing.lang index 5691216f9a1..020acc6a74d 100644 --- a/htdocs/langs/ca_ES/printing.lang +++ b/htdocs/langs/ca_ES/printing.lang @@ -2,7 +2,7 @@ Module64000Name=Impressió amb un clic Module64000Desc=Activeu el sistema d'impressió d'un clic PrintingSetup=Configuració del sistema d'impressió d'un clic -PrintingDesc=Aquest mòdul afegeix un botó Imprimeix a diversos mòduls per permetre que els documents s'imprimissin directament a una impressora sense necessitat d'obrir el document a una altra aplicació. +PrintingDesc=Aquest mòdul afegeix un botó Imprimeix a diversos mòduls per a permetre que els documents s'imprimissin directament a una impressora sense necessitat d'obrir el document a una altra aplicació. MenuDirectPrinting=Treballs d'impressió amb un clic DirectPrint=Un clic Imprimeix PrintingDriverDesc=Configuració variables pel driver d'impressió @@ -49,6 +49,6 @@ DirectPrintingJobsDesc=En aquesta pàgina es mostren les tasques d’impressió GoogleAuthNotConfigured=Google OAuth no s'ha configurat. Activa el mòdul OAuth i estableix una identificació de Google / Secret. GoogleAuthConfigured=Les credencials OAuth de Google es troben en la configuració del mòdul OAuth. PrintingDriverDescprintgcp=Variables de configuració del driver d'impressió Google Cloud Print. -PrintingDriverDescprintipp=Variables de configuració per imprimir amb el controlador Cups. +PrintingDriverDescprintipp=Variables de configuració per al controlador d'impressió Cups. PrintTestDescprintgcp=Llista d'impressores per Google Cloud Print PrintTestDescprintipp=Llista d'impressores per a Cups. diff --git a/htdocs/langs/ca_ES/products.lang b/htdocs/langs/ca_ES/products.lang index f827970ff92..0db9bb1aec9 100644 --- a/htdocs/langs/ca_ES/products.lang +++ b/htdocs/langs/ca_ES/products.lang @@ -19,7 +19,7 @@ NewProduct=Producte nou NewService=Servei nou ProductVatMassChange=Actualització d'Impostos Global ProductVatMassChangeDesc=Aquesta eina actualitza el tipus d'IVA establert a TOTS els productes i serveis! -MassBarcodeInit=Inicialització massiu de codis de barres +MassBarcodeInit=Inicialització massiva de codis de barres MassBarcodeInitDesc=Aquesta pàgina es pot utilitzar per a inicialitzar un codi de barres en els objectes que no tenen un codi de barres definit. Comproveu abans que la configuració del mòdul de codi de barres està completada. ProductAccountancyBuyCode=Codi comptable (compra) ProductAccountancyBuyIntraCode=Codi comptable (compra intracomunitària) @@ -73,7 +73,7 @@ SellingPrice=Preu de venda SellingPriceHT=Preu de venda (sense IVA) SellingPriceTTC=PVP amb IVA SellingMinPriceTTC=Preu mínim de venda (IVA inclòs) -CostPriceDescription=Aquest camp de preus (sense impostos) es pot utilitzar per capturar l'import mitjà que aquest producte costa a la vostra empresa. Pot ser qualsevol preu que calculeu vosaltres mateixos, per exemple, a partir del preu de compra mitjà més el cost mitjà de producció i distribució. +CostPriceDescription=Aquest camp de preu (sense impostos) es pot utilitzar per a capturar l'import mitjà que costa aquest producte a la vostra empresa. Pot ser qualsevol preu que calculeu vosaltres mateixos, per exemple, a partir del preu mitjà de compra més el cost mitjà de producció i distribució. CostPriceUsage=Aquest valor pot utilitzar-se per al càlcul de marges ManufacturingPrice=Preu de fabricació SoldAmount=Import venut @@ -262,10 +262,10 @@ Quarter1=1º trimestre Quarter2=2º trimestre Quarter3=3º trimestre Quarter4=4º trimestre -BarCodePrintsheet=Imprimeix codi de barres +BarCodePrintsheet=Imprimeix codis de barres PageToGenerateBarCodeSheets=Amb aquesta eina, podeu imprimir fulls adhesius de codis de barres. Trieu el format de la vostra pàgina d'etiqueta, tipus de codi de barres i valor del codi de barres, i feu clic al botó %s . -NumberOfStickers=Nombre d'adhesius per imprimir a la pàgina -PrintsheetForOneBarCode=Imprimir varies etiquetes per codi de barres +NumberOfStickers=Nombre d'adhesius per a imprimir a la pàgina +PrintsheetForOneBarCode=Imprimeix diversos adhesius per a un codi de barres BuildPageToPrint=Generar pàgines a imprimir FillBarCodeTypeAndValueManually=Emplenar tipus i valor del codi de barres manualment FillBarCodeTypeAndValueFromProduct=Emplenar tipus i valor del codi de barres d'un producte @@ -284,7 +284,7 @@ PriceByCustomerLog=Registre de preus de clients anteriors MinimumPriceLimit=El preu mínim no pot ser inferior a %s MinimumRecommendedPrice=El preu mínim recomanat és: %s PriceExpressionEditor=Editor d'expressions de preus -PriceExpressionSelected=Expressió de preus seleccionat +PriceExpressionSelected=Expressió de preu seleccionada PriceExpressionEditorHelp1="price = 2 + 2" o "2 + 2" per a definir el preu. Utilitzeu ; per a separar expressions PriceExpressionEditorHelp2=Pots accedir als atributs complementaris amb variables com #extrafield_myextrafieldkey# i variables globals amb #global_mycode# PriceExpressionEditorHelp3=En productes/serveis i preus de proveïdor, hi ha disponibles les següents variables
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# @@ -307,10 +307,10 @@ GlobalVariables=Variables globals VariableToUpdate=Variable per actualitzar GlobalVariableUpdaters=Actualitzacions externes per a variables GlobalVariableUpdaterType0=Dades JSON -GlobalVariableUpdaterHelp0=Analitza dades JSON des de l'URL especificada, el valor especifica l'ubicació de valor rellevant +GlobalVariableUpdaterHelp0=Analitza les dades JSON de l'URL especificat, VALUE especifica la ubicació del valor rellevant, GlobalVariableUpdaterHelpFormat0=Format per a la sol·licitud {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} GlobalVariableUpdaterType1=Dades WebService -GlobalVariableUpdaterHelp1=Analitza dades WebService de l'URL especificada, NS especifica el namespace, VALUE especifica l'ubicació del valor pertinent, DATA conter les dades a enviar i METHOD és el mètode WS a trucar +GlobalVariableUpdaterHelp1=Analitza les dades del servei web des de l'URL especificat, NS especifica l'espai de noms, VALUE especifica la ubicació del valor rellevant, DATA ha de contenir les dades a enviar i MÈTODE és el mètode WS que crida GlobalVariableUpdaterHelpFormat1=El format per a la sol·licitud és {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data", "to": "send"}} UpdateInterval=Interval d'actualització (minuts) LastUpdated=Última actualització @@ -424,3 +424,6 @@ PMPExpected=PMP esperat ExpectedValuation=Valoració esperada PMPReal=PMP real RealValuation=Valoració real +ConfirmEditExtrafield = Seleccioneu l'extracamp que voleu modificar +ConfirmEditExtrafieldQuestion = Esteu segur que voleu modificar aquest camp extra? +ModifyValueExtrafields = Modificar el valor d'un camp extra diff --git a/htdocs/langs/ca_ES/projects.lang b/htdocs/langs/ca_ES/projects.lang index bfc56d0ed07..cacab31b903 100644 --- a/htdocs/langs/ca_ES/projects.lang +++ b/htdocs/langs/ca_ES/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Etiqueta de projecte ProjectsArea=Àrea de projectes ProjectStatus=Estat el projecte SharedProject=Projecte compartit -PrivateProject=Assigned contacts +PrivateProject=Contactes assignats ProjectsImContactFor=Projectes dels qui en soc explícitament un contacte AllAllowedProjects=Tots els projectes que puc llegir (meu + públic) AllProjects=Tots els projectes @@ -20,7 +20,7 @@ MyTasksDesc=Aquesta visualització es limita als projectes o tasques amb què us OnlyOpenedProject=Només visibles els projectes oberts (els projectes en estat d'esborrany o tancats no són visibles) ClosedProjectsAreHidden=Els projectes tancats no són visibles. TasksPublicDesc=Aquesta vista mostra tots els projectes i tasques en els que vostè té dret a tenir visibilitat. -TasksDesc=Aquesta vista presenta tots els projectes i tasques (els permisos d'usuari us concedeixen permís per veure-ho tot). +TasksDesc=Aquesta vista presenta tots els projectes i tasques (els permisos d'usuari us concedeixen permís per a veure-ho tot). AllTaskVisibleButEditIfYouAreAssigned=Totes les tasques per a projectes qualificats són visibles, però podeu ingressar només el temps per a la tasca assignada a l'usuari seleccionat. Assigneu la tasca si necessiteu introduir-hi el temps. OnlyYourTaskAreVisible=Només són visibles les tasques assignades. Si heu d'introduir el temps en una tasca i si la tasca no és visible aquí, heu d'assignar-la a vosaltres mateixos. ImportDatasetTasks=Tasques de projectes @@ -289,8 +289,8 @@ FormForNewLeadDesc=Gràcies per omplir el següent formulari per contactar amb n ProjectsHavingThisContact=Projectes amb aquest contacte StartDateCannotBeAfterEndDate=La data de fi no pot ser anterior a la d'inici ErrorPROJECTLEADERRoleMissingRestoreIt=Falta la funció "PROJECTLEADER" o s'ha desactivat; restaura-la al diccionari de tipus de contacte -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +LeadPublicFormDesc=Aquí podeu habilitar una pàgina pública per permetre que els vostres clients potencials us facin un primer contacte des d'un formulari públic en línia +EnablePublicLeadForm=Habiliteu el formulari públic de contacte +NewLeadbyWeb=El teu missatge o sol·licitud s'ha enregistrat. Et respondrem o contactarem aviat. +NewLeadForm=Nou formulari de contacte +LeadFromPublicForm=Pista en línia des de forma pública diff --git a/htdocs/langs/ca_ES/sms.lang b/htdocs/langs/ca_ES/sms.lang index 7362e5a94c9..954781b74bc 100644 --- a/htdocs/langs/ca_ES/sms.lang +++ b/htdocs/langs/ca_ES/sms.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - sms Sms=SMS -SmsSetup=Configuració de SMS -SmsDesc=Aquesta pàgina us permet definir opcions globals sobre les funcions SMS +SmsSetup=Configuració d'SMS +SmsDesc=Aquesta pàgina us permet definir opcions globals sobre les funcions d'SMS SmsCard=Fitxa SMS -AllSms=Totes les campanyes de SMS +AllSms=Totes les campanyes d'SMS SmsTargets=Destinataris SmsRecipients=Destinataris SmsRecipient=Destinatari @@ -12,18 +12,18 @@ SmsFrom=Emissor SmsTo=Destinatari(s) SmsTopic=Assumpte del SMS SmsText=Missatge -SmsMessage=Missatge del SMS +SmsMessage=Missatge SMS ShowSms=Mostra SMS -ListOfSms=Llista de campanyes de SMS -NewSms=Nova campanya de SMS +ListOfSms=Llista de campanyes d'SMS +NewSms=Campanya d'SMS nova EditSms=Edita SMS -ResetSms=Nou enviament -DeleteSms=Suprimeix la campanya de SMS -DeleteASms=Suprimeix una campanya de SMS +ResetSms=Enviament nou +DeleteSms=Suprimeix la campanya d'SMS +DeleteASms=Elimina una campanya d'SMS PreviewSms=Previuw SMS PrepareSms=Prepara SMS CreateSms=Crea SMS -SmsResult=Resultat de l'enviament de SMS +SmsResult=Resultat de l'enviament d'SMS TestSms=Proveu SMS ValidSms=Valida SMS ApproveSms=Aprova el SMS @@ -46,6 +46,6 @@ SendSms=Envia SMS SmsInfoCharRemain=Nombre de caràcters restants SmsInfoNumero= (format internacional, és a dir: +33899701761) DelayBeforeSending=Retard abans d'enviar (en minuts) -SmsNoPossibleSenderFound=No hi ha qui envia. Comprova la configuració del proveïdor de SMS. +SmsNoPossibleSenderFound=No hi ha remitent disponible. Comproveu la configuració del vostre proveïdor d'SMS. SmsNoPossibleRecipientFound=No hi ha destinataris. Comproveu la configuració del seu proveïdor d'SMS. DisableStopIfSupported=Desactiveu el missatge STOP (si és compatible) diff --git a/htdocs/langs/ca_ES/stocks.lang b/htdocs/langs/ca_ES/stocks.lang index 0e591c8dd1f..cef3f462b29 100644 --- a/htdocs/langs/ca_ES/stocks.lang +++ b/htdocs/langs/ca_ES/stocks.lang @@ -74,7 +74,7 @@ QtyDispatchedShort=Quant. rebuda QtyToDispatchShort=Quant. a enviar OrderDispatch=Articles rebuts RuleForStockManagementDecrease=Tria la regla per reduir l'estoc automàtic (la disminució manual sempre és possible, fins i tot si s'activa una regla de disminució automàtica) -RuleForStockManagementIncrease=Tria la regla per augmentar l'estoc automàtic (l'augment manual sempre és possible, fins i tot si s'activa una regla d'augment automàtic) +RuleForStockManagementIncrease=Trieu la regla per a l'augment automàtic d'estocs (l'augment manual sempre és possible, fins i tot si una regla d'augment automàtic està activada) DeStockOnBill=Disminueix els estocs real en la validació de la factura/abonament de client DeStockOnValidateOrder=Disminueix els estocs reals en la validació de comandes de client DeStockOnShipment=Disminueix l'estoc real al validar l'enviament @@ -86,7 +86,7 @@ StockOnReception=Augmenteu les existències reals a la validació de la recepci StockOnReceptionOnClosing=Augmenteu les existències reals quan la recepció està tancada OrderStatusNotReadyToDispatch=La comanda encara no està o no té un estat que permeti un desglossament d'estoc. StockDiffPhysicTeoric=Motiu de la diferència entre l'estoc físic i virtual -NoPredefinedProductToDispatch=No hi ha productes predefinits en aquest objecte. Per tant no es pot realitzar un desglossament d'estoc. +NoPredefinedProductToDispatch=No hi ha productes predefinits per a aquest objecte. Per tant, no cal enviar en estoc. DispatchVerb=Desglossar StockLimitShort=Límit per l'alerta StockLimit=Estoc límit per les alertes @@ -151,9 +151,9 @@ RecordMovement=Registre de transferència ReceivingForSameOrder=Recepcions d'aquesta comanda StockMovementRecorded=Moviments d'estoc registrat RuleForStockAvailability=Regles de requeriment d'estoc -StockMustBeEnoughForInvoice=El nivell d'estoc ha de ser suficient per afegir el producte/servei a la factura (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a la factura sigui quina sigui la regla del canvi automàtic d'estoc) -StockMustBeEnoughForOrder=El nivell d'estoc ha de ser suficient per afegir el producte/servei a la comanda (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a la comanda sigui quina sigui la regla del canvi automàtic d'estoc) -StockMustBeEnoughForShipment= El nivell d'estoc ha de ser suficient per afegir el producte/servei a l'enviament (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a l'enviament sigui quina sigui la regla del canvi automàtic d'estoc) +StockMustBeEnoughForInvoice=El nivell d'estoc ha de ser suficient per a afegir el producte/servei a la factura (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a la factura sigui quina sigui la regla del canvi automàtic d'estoc) +StockMustBeEnoughForOrder=El nivell d'estoc ha de ser suficient per a afegir el producte/servei a la comanda (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a la comanda sigui quina sigui la regla del canvi automàtic d'estoc) +StockMustBeEnoughForShipment= El nivell d'estoc ha de ser suficient per a afegir el producte/servei a l'enviament (la comprovació es fa sobre l'estoc real actual quan s'afegeix una línia a l'enviament sigui quina sigui la regla del canvi automàtic d'estoc) MovementLabel=Etiqueta del moviment TypeMovement=Direcció de moviment DateMovement=Data de moviment @@ -171,12 +171,12 @@ ThisSerialAlreadyExistWithDifferentDate=Aquest número de lot/sèrie ( % OpenAnyMovement=Obert (tot moviment) OpenInternal=Obert (només moviment intern) UseDispatchStatus=Utilitzeu un estat d'enviament (aprovació / rebuig) per a les línies de productes en la recepció de l'ordre de compra -OptionMULTIPRICESIsOn=L'opció "diversos preus per segment" està actiu. Això significa que un producte té diversos preus de venda, per tant el preu de venda no pot ser calculat +OptionMULTIPRICESIsOn=L'opció "diversos preus per segment" està activada. Significa que un producte té diversos preus de venda, de manera que no es pot calcular el valor de venda ProductStockWarehouseCreated=Estoc límit per llançar una alerta i estoc òptim desitjat creats correctament ProductStockWarehouseUpdated=Estoc límit per llançar una alerta i estoc òptim desitjat actualitzats correctament ProductStockWarehouseDeleted=S'ha eliminat correctament el límit d'estoc per alerta i l'estoc òptim desitjat. AddNewProductStockWarehouse=Posar nou estoc límit per alertar i nou estoc òptim desitjat -AddStockLocationLine=Decrementa quantitat i a continuació fes clic per afegir un altre magatzem per aquest producte +AddStockLocationLine=Disminuïu la quantitat i feu clic per a dividir la línia InventoryDate=Data d'inventari Inventories=Inventaris NewInventory=Inventari nou @@ -254,7 +254,7 @@ ReOpen=Reobrir ConfirmFinish=Confirmeu el tancament de l'inventari? Això generarà tots els moviments d'estoc per a actualitzar el vostre estoc a la quantitat real que heu introduït a l'inventari. ObjectNotFound=no s'ha trobat %s MakeMovementsAndClose=Generar moviments i tancar -AutofillWithExpected=Substituïu la quantitat real per la quantitat esperada +AutofillWithExpected=Ompliu la quantitat real amb la quantitat esperada ShowAllBatchByDefault=Per defecte, mostreu els detalls del lot a la pestanya "existències" del producte CollapseBatchDetailHelp=Podeu configurar la visualització predeterminada del detall del lot a la configuració del mòdul d'existències ErrorWrongBarcodemode=Mode de codi de barres desconegut @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=El producte amb codi de barres no existeix WarehouseId=Identificador de magatzem WarehouseRef=Magatzem Ref SaveQtyFirst=Deseu primer les quantitats reals inventariades, abans de demanar la creació del moviment d'existències. +ToStart=Comença InventoryStartedShort=Començada ErrorOnElementsInventory=Operació cancel·lada pel motiu següent: ErrorCantFindCodeInInventory=No es pot trobar el codi següent a l'inventari QtyWasAddedToTheScannedBarcode=Èxit!! La quantitat s'ha afegit a tots els codis de barres sol·licitats. Podeu tancar l'eina Escàner. StockChangeDisabled=Canvi d'estoc desactivat NoWarehouseDefinedForTerminal=No s'ha definit cap magatzem per a la terminal +ClearQtys=Netegeu totes les quantitats +ModuleStockTransferName=Transferència d'estocs avançada +ModuleStockTransferDesc=Gestió avançada de Transferència d'Estocs, amb generació de full de transferència +StockTransferNew=Nova transferència d'accions +StockTransferList=Llista de transferències d'accions +ConfirmValidateStockTransfer=Esteu segur que voleu validar aquesta transferència d'estocs amb la referència %s ? +ConfirmDestock=Disminució d'existències amb transferència %s +ConfirmDestockCancel=Cancel·la la disminució d'existències amb transferència %s +DestockAllProduct=Disminució d'existències +DestockAllProductCancel=Cancel·lar la disminució d'existències +ConfirmAddStock=Augmenta les existències amb transferència %s +ConfirmAddStockCancel=Cancel·lar l'augment d'existències amb transferència %s +AddStockAllProduct=Augment d'existències +AddStockAllProductCancel=Cancel·lar l'augment d'existències +DatePrevueDepart=Data prevista de sortida +DateReelleDepart=Data real de sortida +DatePrevueArrivee=Data prevista d'arribada +DateReelleArrivee=Data real d'arribada +HelpWarehouseStockTransferSource=Si s'estableix aquest magatzem, només ell mateix i els seus fills estaran disponibles com a magatzem d'origen +HelpWarehouseStockTransferDestination=Si s'estableix aquest magatzem, només ell mateix i els seus fills estaran disponibles com a magatzem de destinació +LeadTimeForWarning=Temps d'execució abans de l'alerta (en dies) +TypeContact_stocktransfer_internal_STFROM=Remitent de la transferència d'accions +TypeContact_stocktransfer_internal_STDEST=Destinatari de la transferència d'accions +TypeContact_stocktransfer_internal_STRESP=Responsable de la transferència d'estocs +StockTransferSheet=Full de transferència d'existències +StockTransferSheetProforma=Full de transferència d'accions proforma +StockTransferDecrementation=Disminuir els magatzems d'origen +StockTransferIncrementation=Augmentar els magatzems de destinació +StockTransferDecrementationCancel=Cancel·lar la disminució dels magatzems d'origen +StockTransferIncrementationCancel=Anul·lar l'augment de magatzems de destinació +StockStransferDecremented=Els magatzems d'origen van disminuir +StockStransferDecrementedCancel=Disminució dels magatzems d'origen cancel·lada +StockStransferIncremented=Tancat - Accions transferides +StockStransferIncrementedShort=Accions transferides +StockStransferIncrementedShortCancel=Augment de magatzems de destinació cancel·lat +StockTransferNoBatchForProduct=El producte %s no fa servir el lot, esborra el lot en línia i torna-ho a provar +StockTransferSetup = Configuració del mòdul de transferència d'estocs +Settings=Configuració +StockTransferSetupPage = Pàgina de configuració del mòdul de transferència d'accions +StockTransferRightRead=Llegeix les transferències d'accions +StockTransferRightCreateUpdate=Crear/Actualitzar transferències d'accions +StockTransferRightDelete=Eliminar transferències d'accions +BatchNotFound=No s'ha trobat lot / sèrie per a aquest producte diff --git a/htdocs/langs/ca_ES/stripe.lang b/htdocs/langs/ca_ES/stripe.lang index 7d96342c51e..ff4fd2e511b 100644 --- a/htdocs/langs/ca_ES/stripe.lang +++ b/htdocs/langs/ca_ES/stripe.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - stripe StripeSetup=Configuració del mòdul Stripe -StripeDesc=Oferiu als vostres clients una pàgina de pagament en línia per als pagaments amb targetes de crèdit/dèbit mitjançant Stripe . Això es pot utilitzar per permetre als vostres clients fer pagaments ad hoc o per a pagaments relacionats amb un objecte Dolibarr concret (factura, comanda, ...) +StripeDesc=Oferiu als vostres clients una pàgina de pagament en línia per als pagaments amb targetes de crèdit/dèbit mitjançant Stripe . Això es pot utilitzar per a permetre als vostres clients fer pagaments ad hoc o per a pagaments relacionats amb un objecte Dolibarr concret (factura, comanda, ...) StripeOrCBDoPayment=Pagar amb targeta de crèdit o Stripe FollowingUrlAreAvailableToMakePayments=Les següents URL estan disponibles per a permetre a un client fer un cobrament en objectes de Dolibarr PaymentForm=Formulari de pagament @@ -23,7 +23,7 @@ ToOfferALinkForOnlinePaymentOnFreeAmount=URL per oferir una pàgina de pagament ToOfferALinkForOnlinePaymentOnMemberSubscription=URL per oferir una pàgina de pagament en línia %s per a una subscripció per membres ToOfferALinkForOnlinePaymentOnDonation=URL per oferir una pàgina de pagament en línia %s per al pagament d’una donació YouCanAddTagOnUrl=També podeu afegir el paràmetre URL &tag=valor a qualsevol d’aquests URL (obligatori només per al pagament que no estigui vinculat a un objecte) per a afegir la vostra pròpia etiqueta de comentari de pagament.
Per a l'URL de pagaments sense objecte existent, també podeu afegir el paràmetre &noidempotency=1 , de manera que es pot utilitzar el mateix enllaç amb la mateixa etiqueta diverses vegades (alguns modes de pagament poden limitar el pagament a 1 per a cada enllaç diferent sense aquest paràmetre) -SetupStripeToHavePaymentCreatedAutomatically=Configureu el vostre Stripe amb l'URL %s per fer que el pagament es creï automàticament quan es valide mitjançant Stripe. +SetupStripeToHavePaymentCreatedAutomatically=Configureu el vostre Stripe amb l'URL %s perquè el pagament es creï automàticament quan Stripe el validi. AccountParameter=Paràmetres del compte UsageParameter=Paràmetres d'ús InformationToFindParameters=Ajuda per a trobar la vostra informació del compte %s @@ -67,5 +67,6 @@ StripePayoutList=Llista de pagaments de Stripe ToOfferALinkForTestWebhook=Enllaç a la configuració de Stripe WebHook per trucar a l’IPN (mode de prova) ToOfferALinkForLiveWebhook=Enllaç a la configuració de Stripe WebHook per trucar a l’IPN (mode en directe) PaymentWillBeRecordedForNextPeriod=El pagament es registrarà per al període següent. -ClickHereToTryAgain=Feu clic aquí per tornar-ho a provar ... +ClickHereToTryAgain= Feu clic aquí per a tornar-ho a provar... CreationOfPaymentModeMustBeDoneFromStripeInterface=A causa de les fortes regles d'autenticació de clients, la creació d'una fitxa s'ha de fer des del panell de Stripe. Podeu fer clic aquí per a activar el registre de clients de Stripe: %s +TERMINAL_LOCATION=Ubicació (adreça) per a terminals diff --git a/htdocs/langs/ca_ES/suppliers.lang b/htdocs/langs/ca_ES/suppliers.lang index 4eb4f0ea0f5..f92bd144ae3 100644 --- a/htdocs/langs/ca_ES/suppliers.lang +++ b/htdocs/langs/ca_ES/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Nom del comprador AllProductServicePrices=Tots els preus de producte / servei AllProductReferencesOfSupplier=Totes les referències del proveïdor BuyingPriceNumShort=Preus del proveïdor +RepeatableSupplierInvoice=Plantilla de factura del proveïdor +RepeatableSupplierInvoices=Plantilla de factures de proveïdors +RepeatableSupplierInvoicesList=Plantilla de factures de proveïdors +RecurringSupplierInvoices=Factures de proveïdors recurrents +ToCreateAPredefinedSupplierInvoice=Per crear una plantilla de factura de proveïdor, heu de crear una factura estàndard, després, sense validar-la, feu clic al botó "%s". +GeneratedFromSupplierTemplate=Generat a partir de la plantilla de factura del proveïdor %s +SupplierInvoiceGeneratedFromTemplate=Factura del proveïdor %s Generada a partir de la plantilla de factura del proveïdor %s diff --git a/htdocs/langs/ca_ES/ticket.lang b/htdocs/langs/ca_ES/ticket.lang index b0782021e45..7aa1e274dca 100644 --- a/htdocs/langs/ca_ES/ticket.lang +++ b/htdocs/langs/ca_ES/ticket.lang @@ -90,15 +90,17 @@ TicketPublicAccess=Una interfície pública que no necessita identificació est TicketSetupDictionaries=El tipus de tiquet, gravetat i codis analítics es poden configurar des dels diccionaris TicketParamModule=Configuració del mòdul de variables TicketParamMail=Configuració de correu electrònic -TicketEmailNotificationFrom=Sender e-mail for ticket answers -TicketEmailNotificationFromHelp=Sender e-mail for ticket answers sent from Dolibarr -TicketEmailNotificationTo=Notify ticket creation to this e-mail address -TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation +TicketEmailNotificationFrom=Correu electrònic del remitent per a la notificació de les respostes +TicketEmailNotificationFromHelp=Correu electrònic del remitent que s'utilitzarà per enviar el correu electrònic de notificació quan es proporcioni una resposta dins del backoffice. Per exemple noreply@example.com +TicketEmailNotificationTo=Notifiqueu la creació del bitllet a aquesta adreça de correu electrònic +TicketEmailNotificationToHelp=Si està present, aquesta adreça de correu electrònic serà notificada de la creació d'un bitllet TicketNewEmailBodyLabel=Missatge de text enviat després de crear un bitllet TicketNewEmailBodyHelp=El text especificat aquí s'inserirà en el correu electrònic confirmant la creació d'un nou tiquet des de la interfície pública. La informació sobre la consulta del tiquet s'afegeix automàticament. TicketParamPublicInterface=Configuració de la interfície pública TicketsEmailMustExist=Cal crear una adreça de correu electrònic existent per a crear un tiquet TicketsEmailMustExistHelp=A la interfície pública, l'adreça de correu electrònic ja s'hauria d'emplenar a la base de dades per a crear un nou tiquet. +TicketCreateThirdPartyWithContactIfNotExist=Demaneu nom i nom de l'empresa per correus electrònics desconeguts. +TicketCreateThirdPartyWithContactIfNotExistHelp=Comproveu si existeix un tercer o un contacte per al correu electrònic introduït. Si no, demaneu un nom i un nom d'empresa per crear un tercer amb contacte. PublicInterface=Interfície pública TicketUrlPublicInterfaceLabelAdmin=URL alternativa per a la interfície pública TicketUrlPublicInterfaceHelpAdmin=És possible definir un àlies al servidor web i, per tant, posar a disposició la interfície pública amb una altra URL (el servidor ha d'actuar com a proxy en aquest nou URL) @@ -219,12 +221,12 @@ ErrorMailRecipientIsEmptyForSendTicketMessage=El destinatari està buit. Email n TicketGoIntoContactTab=Aneu a la pestanya "Contactes" per seleccionar-los TicketMessageMailIntro=Introducció TicketMessageMailIntroHelp=Aquest text només s'afegeix al principi del correu electrònic i no es desarà. -TicketMessageMailIntroLabelAdmin=Introduction text to all ticket answers -TicketMessageMailIntroText=Hello,
A new answer has been added to a ticket that you follow. Here is the message:
-TicketMessageMailIntroHelpAdmin=This text will be inserted before the answer when replying to a ticket from Dolibarr +TicketMessageMailIntroLabelAdmin=Text d'introducció a totes les respostes dels bitllets +TicketMessageMailIntroText=Hola,
S'ha afegit una resposta nova a un bitllet que seguiu. Aquest és el missatge:
+TicketMessageMailIntroHelpAdmin=Aquest text s'inserirà abans de la resposta en respondre a un bitllet de Dolibarr TicketMessageMailSignature=Signatura TicketMessageMailSignatureHelp=Aquest text només s'afegeix al final del correu electrònic i no es desarà. -TicketMessageMailSignatureText=Message sent by %s via Dolibarr +TicketMessageMailSignatureText=Missatge enviat per %s via Dolibarr TicketMessageMailSignatureLabelAdmin=Signatura del correu electrònic de resposta TicketMessageMailSignatureHelpAdmin=Aquest text s'inserirà després del missatge de resposta. TicketMessageHelp=Només aquest text es guardarà a la llista de missatges de la targeta de tiquet. @@ -240,7 +242,7 @@ TicketAssignedToYou=Tiquet assignat TicketAssignedEmailBody=Se us ha assignat el tiquet # %s per %s MarkMessageAsPrivate=Marcar el missatge com privat TicketMessagePrivateHelp=Aquest missatge no es mostrarà als usuaris externs -TicketEmailOriginIssuer=Emissor a l'origen dels tiquets +TicketEmailOriginIssuer=Emissor en l'origen dels tiquets InitialMessage=Missatge inicial LinkToAContract=Enllaç a un contracte TicketPleaseSelectAContract=Seleccionar un contracte @@ -289,7 +291,7 @@ TicketNewEmailBody=Aquest és un correu electrònic automàtic per confirmar que TicketNewEmailBodyCustomer=Aquest és un correu electrònic automàtic per confirmar que un nou tiquet acaba de ser creat al vostre compte. TicketNewEmailBodyInfosTicket=Informació per al seguiment del tiquet TicketNewEmailBodyInfosTrackId=Número de seguiment de tiquet: %s -TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the following link +TicketNewEmailBodyInfosTrackUrl=Podeu consultar el progrés de l'entrada fent clic al següent enllaç TicketNewEmailBodyInfosTrackUrlCustomer=Podeu veure el progrés del tiquet a la interfície específica fent clic al següent enllaç TicketCloseEmailBodyInfosTrackUrlCustomer=Podeu consultar l'historial d'aquest tiquet fent clic al següent enllaç TicketEmailPleaseDoNotReplyToThisEmail=No respongueu directament a aquest correu electrònic. Utilitzeu l'enllaç per respondre des de la mateixa interfície. diff --git a/htdocs/langs/ca_ES/trips.lang b/htdocs/langs/ca_ES/trips.lang index 75151da5644..96c385f47f4 100644 --- a/htdocs/langs/ca_ES/trips.lang +++ b/htdocs/langs/ca_ES/trips.lang @@ -25,11 +25,11 @@ ExpenseReportWaitingForApprovalMessage=S'ha enviat un nou informe de despeses i ExpenseReportWaitingForReApproval=S'ha generat un informe de despeses per a re-aprovació ExpenseReportWaitingForReApprovalMessage=S'ha enviat un informe de despeses i està a l'espera de la seva aprovació.
%s, es va negar a aprovar l'informe de despeses per aquest motiu: %s.
S'ha proposat una nova versió i espera la seva aprovació.
- Usuari: %s
- Període: %s
Cliqueu aquí per validar: %s ExpenseReportApproved=S'ha aprovat un informe de despeses -ExpenseReportApprovedMessage=S'ha aprovat l'informe de despeses %s.
- Usuari: %s
- Aprovat per: %s
Feu clic aquí per veure l'informe de despeses: %s +ExpenseReportApprovedMessage=S'ha aprovat l'informe de despeses %s.
- Usuari: %s
- Aprovat per: %s
Feu clic aquí per a veure l'informe de despeses: %s ExpenseReportRefused=S'ha rebutjat un informe de despeses ExpenseReportRefusedMessage=L'informe de despeses %s s'ha denegat.
- Usuari: %s
- Rebutjat per: %s
- Motiu de denegació: %s
Cliqueu aquí per a veure l'informe de despeses: %s ExpenseReportCanceled=S'ha cancel·lat un informe de despeses -ExpenseReportCanceledMessage=L'informe de despeses %s s'ha cancel·lat.
- Usuari: %s
- Cancel·lat per: %s
- Motiu de cancel·lació: %s
Cliqueu aquí per veure l'informe de despeses: %s +ExpenseReportCanceledMessage=L'informe de despeses %s s'ha cancel·lat.
- Usuari: %s
- Cancel·lat per: %s
- Motiu de cancel·lació: %s
Cliqueu aquí per a veure l'informe de despeses: %s ExpenseReportPaid=S'ha pagat un informe de despeses ExpenseReportPaidMessage=L'informe de despeses %s s'ha pagat.
- Usuari: %s
- Pagat per: %s
Feu clic aquí per a veure l'informe de despeses: %s TripId=Id d'informe de despeses diff --git a/htdocs/langs/ca_ES/users.lang b/htdocs/langs/ca_ES/users.lang index f35bf70bd98..0fbf167ffb5 100644 --- a/htdocs/langs/ca_ES/users.lang +++ b/htdocs/langs/ca_ES/users.lang @@ -102,7 +102,7 @@ NbOfPermissions=Nombre de permisos DontDowngradeSuperAdmin=Només un superadmin pot degradar un superadmin HierarchicalResponsible=Supervisor HierarchicView=Vista jeràrquica -UseTypeFieldToChange=Modificar el camp Tipus per canviar +UseTypeFieldToChange=Utilitzeu el camp Tipus per a canviar OpenIDURL=URL d'OpenID LoginUsingOpenID=Utilitzeu OpenID per a iniciar la sessió WeeklyHours=Hores treballades (per setmana) @@ -123,8 +123,8 @@ ForceUserHolidayValidator=Forçar validador de sol·licitud d'abandonament ValidatorIsSupervisorByDefault=Per defecte, el validador és el supervisor de l’usuari. Deixar buit per mantenir aquest comportament. UserPersonalEmail=Correu electrònic personal UserPersonalMobile=Telèfon mòbil personal -WarningNotLangOfInterface=Avís, aquest és l'idioma principal que parla l'usuari, no el llenguatge de la interfície que va triar per veure. Per canviar l’idioma de la interfície visible per aquest usuari, aneu a la pestanya %s -DateLastLogin=Date last login -DatePreviousLogin=Date previous login -IPLastLogin=IP last login -IPPreviousLogin=IP previous login +WarningNotLangOfInterface=Advertència, aquest és l'idioma principal que parla l'usuari, no l'idioma de la interfície que va triar veure. Per a canviar l'idioma de la interfície visible per aquest usuari, aneu a la pestanya %s +DateLastLogin=Data darrera sessió +DatePreviousLogin=Data d'inici de sessió anterior +IPLastLogin=IP darrer inici de sessió +IPPreviousLogin=IP d'inici de sessió anterior diff --git a/htdocs/langs/ca_ES/website.lang b/htdocs/langs/ca_ES/website.lang index 118e8e38909..0a7692af62e 100644 --- a/htdocs/langs/ca_ES/website.lang +++ b/htdocs/langs/ca_ES/website.lang @@ -44,7 +44,7 @@ RealURL=URL real ViewWebsiteInProduction=Mostra la pàgina web utilitzant les URLs d'inici SetHereVirtualHost=Utilitzeu amb Apache/NGinx/...
Creeu al vostre servidor web (Apache, Nginx...) un Virtual Host dedicat amb PHP habilitat i un directori arrel a
%s ExampleToUseInApacheVirtualHostConfig=Exemple a utilitzar en la configuració de d'un Virtual Host d'Apache: -YouCanAlsoTestWithPHPS= Utilitzeu-lo amb el servidor incrustat de PHP
Al desenvolupar l'entorn, és possible que preferiu provar el lloc amb el servidor web incrustat de PHP (requereix PHP 5.5) executant
php -S 0.0. 0.0: 8080 -t %s +YouCanAlsoTestWithPHPS= Utilitzeu-lo amb el servidor incrustat de PHP
En desenvolupar l'entorn, és possible que preferiu provar el lloc amb el servidor web incrustat de PHP (requereix PHP 5.5) executant
php -S 0.0. 0.0: 8080 -t %s YouCanAlsoDeployToAnotherWHP= Executeu el vostre lloc web amb un altre proveïdor d'allotjament Dolibarr
Si no teniu un servidor web com Apache o NGinx disponible a Internet, podeu exportar i importar el vostre lloc web a una altra instància d'allotjament Dolibarr proporcionada per una altra instància d'allotjament Dolibarr proporcionada per un altre servidor Dolibar complet. integració amb el mòdul del lloc web. Podeu trobar una llista d'alguns proveïdors d'allotjament de Dolibarr a https://saas.dolibarr.org CheckVirtualHostPerms=Comproveu també que l'usuari del VIRTUAL HOST (per exemple www-data) té permisos %s sobre els fitxers a
%s ReadPerm=Llegit @@ -57,7 +57,7 @@ NoPageYet=Encara sense pàgines YouCanCreatePageOrImportTemplate=Podeu crear una pàgina nova o importar una plantilla completa del lloc web SyntaxHelp=Ajuda sobre consells de sintaxi específics YouCanEditHtmlSourceckeditor=Podeu editar el codi font HTML usant el botó "Codi font" a l'editor. -YouCanEditHtmlSource=
Podeu incloure el codi PHP en aquesta font mitjançant les etiquetes <? php? > a0a65d071f6fc9z Estan disponibles les variables globals següents: $ conf, $ db, $ mysoc, $ user, $ lloc web, $ pàgina web, $ weblangs, $ pagelangs.

També podeu incloure contingut d'una altra pàgina / contenidor amb la següent sintaxi:
a03900dfdf ? >

Vostè pot fer una redirecció a una altra pàgina / Contenidor amb la següent sintaxi (Nota: no emeten cap contingut abans d'una redirecció) :?
< php redirectToContainer ( 'alias_of_container_to_redirect_to'); ? >

Per afegir un vincle a una altra pàgina, utilitzeu la sintaxi:
<a href = "alias_of_page_to_link_to.php" >mylink<a>

Per incloure un enllaç per a descàrrega un arxiu emmagatzemat en els documents un directori , utilitzeu el document document.php embolcall:
Exemple, per a un fitxer a documents / ecm (cal registrar-se)? ] nom de fitxer.ext ">

Per a un fitxer a documents / suports (directori obert per a accés públic), la sintaxi és:
a03900dfre31ecz "/document.php?modulepart=medias&file=[relative_dir/ Alanfilename.ext">
Per a un fitxer compartit amb un enllaç compartit (accés obert mitjançant la tecla hash compartida del fitxer), una sintaxis es0a0z0z0a009 /document.php?hashp=publicsharekeyoffile">


per incloure un
imatge emmagatzemat en els documents directori, utilitzeu el viewimage.php embolcall:
exemple, per a una imatge en documents / arxius multimèdia (obert directori d’accés públic), la sintaxi és:
<img src = "/ viewimage.php? modulepart = medias&file = [relative_dir /] filename.ext" a0129 +YouCanEditHtmlSource=
Podeu incloure el codi PHP en aquesta font mitjançant les etiquetes <?php ?>. Estan disponibles les variables globals següents: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

També podeu incloure contingut d'una altra pàgina/contenidor amb la següent sintaxi:
<?php includeContainer('alias_of_container_to_include'); ?>

Podeu fer una redirecció a una altra pàgina/contenidor amb la següent sintaxi (Nota: no emeten cap contingut abans d'una redirecció) :?
< php redirectToContainer ( 'alias_of_container_to_redirect_to'); ? >

Per a afegir un vincle a una altra pàgina, utilitzeu la sintaxi:
<a href = "alias_of_page_to_link_to.php" >mylink<a>

Per a incloure un enllaç per a descàrrega un arxiu emmagatzemat en els documents un directori , utilitzeu el document document.php embolcall:
Exemple, per a un fitxer a documents / ecm (cal registrar-se)? ] nom de fitxer.ext ">
Per a un fitxer a documents / suports (directori obert per a accés públic), la sintaxi és:
a03900dfre31ecz "/document.php?modulepart=medias&file=[relative_dir/ Alanfilename.ext">
Per a un fitxer compartit amb un enllaç compartit (accés obert mitjançant la tecla hash compartida del fitxer), una sintaxis es0a0z0z0a009 /document.php?hashp=publicsharekeyoffile">


per a incloure un
imatge emmagatzemat en els documents directori, utilitzeu el viewimage.php embolcall:
exemple, per a una imatge en documents / arxius multimèdia (obert directori d’accés públic), la sintaxi és:
<img src = "/ viewimage.php? modulepart = medias&file = [relative_dir /] filename.ext" a0129 #YouCanEditHtmlSource2=
To include a image shared publicaly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource2=Per a una imatge compartida amb un enllaç compartit (accés obert mitjançant la tecla hash compartida del fitxer), la sintaxi és:
<img src = "/ viewimage.php? Hashp = 12345679012 ..." a0012c7dcbe087987 YouCanEditHtmlSourceMore=
Més exemples d'HTML o codi dinàmic disponibles a la documentació wiki
. @@ -69,7 +69,7 @@ PageIsANewTranslation=La pàgina nova és una traducció de la pàgina actual? LanguageMustNotBeSameThanClonedPage=Cloneu una pàgina com a una traducció. L'idioma de la nova pàgina ha de ser diferent del llenguatge de la pàgina d'origen. ParentPageId=ID de la pàgina pare WebsiteId=ID del lloc web -CreateByFetchingExternalPage=Crear una pàgina/contenidor mitjançant l'obtenció del continugt des d'una URL externa ... +CreateByFetchingExternalPage=Crea una pàgina/contenidor obtenint la pàgina d'un URL extern... OrEnterPageInfoManually=O creeu la pàgina des de zero o des d'una plantilla de pàgines... FetchAndCreate=Obtenir i crear ExportSite=Exporta la web @@ -106,8 +106,8 @@ ThisPageIsTranslationOf=Aquesta pàgina/contenidor és una traducció de ThisPageHasTranslationPages=Aquesta pàgina/contenidor té traducció NoWebSiteCreateOneFirst=Encara no s'ha creat cap lloc web. Creeu-ne un primer. GoTo=Aneu a -DynamicPHPCodeContainsAForbiddenInstruction=Afegiu un codi PHP dinàmic que conté la instrucció PHP ' %s ' prohibida per defecte com a contingut dinàmic (vegeu les opcions ocultes WEBSITE_PHP_ALLOW_xxx per augmentar la llista d’ordres permeses). -NotAllowedToAddDynamicContent=No teniu permís per afegir o editar contingut dinàmic de PHP als llocs web. Demana permís o simplement guarda el codi en etiquetes php sense modificar. +DynamicPHPCodeContainsAForbiddenInstruction=Afegiu codi PHP dinàmic que conté la instrucció PHP ' %s ' que està prohibida per defecte com a contingut dinàmic (vegeu les opcions ocultes WEBSITE_PHP_ALLOW_xxx per a augmentar la llista d'ordres permeses). +NotAllowedToAddDynamicContent=No teniu permís per a afegir o editar contingut dinàmic de PHP als llocs web. Demana permís o simplement guarda el codi en etiquetes php sense modificar. ReplaceWebsiteContent=Cerqueu o substitueixi el contingut del lloc web DeleteAlsoJs=Voleu suprimir també tots els fitxers javascript específics d'aquest lloc web? DeleteAlsoMedias=Voleu suprimir també tots els fitxers de mitjans específics d’aquest lloc web? diff --git a/htdocs/langs/ca_ES/withdrawals.lang b/htdocs/langs/ca_ES/withdrawals.lang index b96ddb3a715..9a6743cfa97 100644 --- a/htdocs/langs/ca_ES/withdrawals.lang +++ b/htdocs/langs/ca_ES/withdrawals.lang @@ -91,7 +91,7 @@ CreateBanque=Només banc OrderWaiting=A l'espera de procés NotifyTransmision=Registre la transmissió del fitxer de la comanda NotifyCredit=Registre de crèdit de la comanda -NumeroNationalEmetter=Número Nacional del Emissor +NumeroNationalEmetter=Número Nacional de l'Emissor WithBankUsingRIB=Per als comptes bancaris que utilitzen CCC WithBankUsingBANBIC=Per als comptes bancaris que utilitzen el codi BAN/BIC/SWIFT BankToReceiveWithdraw=Recepció del compte bancari @@ -117,7 +117,7 @@ BankTransferAmount=Import de la petició de transferència bancària: WithdrawRequestErrorNilAmount=No és possible crear una domiciliació sense import SepaMandate=Mandat de domiciliació bancària SEPA SepaMandateShort=Mandat SEPA -PleaseReturnMandate=Si us plau retorna aquest formulari de mandat per correu electrònic a %s o per correu postal a +PleaseReturnMandate=Si us plau, envieu aquest formulari de mandat per correu electrònic a %s o per correu postal a SEPALegalText=En signar aquest formulari de mandat, autoritzeu (A) %s a enviar instruccions al vostre banc per carregar el vostre compte i (B) al vostre banc a domiciliar el vostre compte d'acord amb les instruccions de %s. Com a part dels vostres drets, teniu dret a un reemborsament del vostre banc segons els termes i condicions del vostre acord amb el vostre banc. Els vostres drets respecte al mandat anterior s'expliquen en un comunicat que podeu obtenir al vostre banc. CreditorIdentifier=Identificador del creditor CreditorName=Nom del creditor @@ -128,7 +128,7 @@ SEPAFormYourBIC=Codi identificador del teu banc (BIC) SEPAFrstOrRecur=Tipus de pagament ModeRECUR=Pagament recurrent ModeFRST=Pagament únic -PleaseCheckOne=Si us plau marqui només una +PleaseCheckOne=Si us plau, marqueu només un CreditTransferOrderCreated=S'ha creat una ordre de transferència de crèdit %s DirectDebitOrderCreated=S'ha creat l'ordre de domiciliació bancària %s AmountRequested=Quantitat sol·licitada @@ -137,7 +137,7 @@ SEPAFRST=SEPA FRST ExecutionDate=Data d'execució CreateForSepa=Crea un fitxer de domiciliació bancària ICS=Identificador del creditor - ICS -IDS=Debitor Identifier +IDS=Identificador del deutor END_TO_END=Etiqueta XML "EndToEndId" de SEPA - Id. Única assignada per transacció USTRD=Etiqueta XML de la SEPA "no estructurada" ADDDAYS=Afegiu dies a la data d'execució @@ -156,4 +156,4 @@ ErrorICSmissing=Falta ICS al compte bancari %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=La quantitat total de l'ordre de domiciliació bancària difereix de la suma de línies WarningSomeDirectDebitOrdersAlreadyExists=Avís: ja hi ha algunes comandes de domiciliació bancària pendents (%s) sol·licitades per un import de %s WarningSomeCreditTransferAlreadyExists=Avís: ja hi ha una transferència de crèdit pendent (%s) sol·licitada per un import de %s -UsedFor=Used for %s +UsedFor=S'utilitza per a %s diff --git a/htdocs/langs/ca_ES/zapier.lang b/htdocs/langs/ca_ES/zapier.lang index 8ec34baedaf..65d851a78bd 100644 --- a/htdocs/langs/ca_ES/zapier.lang +++ b/htdocs/langs/ca_ES/zapier.lang @@ -18,4 +18,4 @@ ModuleZapierForDolibarrDesc = Mòdul Zapier per a Dolibarr ZapierForDolibarrSetup=Configuració de Zapier per a Dolibarr ZapierDescription=Interfície amb Zapier ZapierAbout=Quant al mòdul Zapier -ZapierSetupPage=No cal fer cap configuració al costat de Dolibarr per a utilitzar Zapier. Tot i això, heu de generar i publicar un paquet a zapier per a poder utilitzar Zapier amb Dolibarr. Consulteu la documentació aquesta pàgina wiki . +ZapierSetupPage=No cal una configuració de Dolibarr per a utilitzar Zapier. Tanmateix, heu de generar i publicar un paquet a zapier per a poder utilitzar Zapier amb Dolibarr. Vegeu la documentació sobre aquesta pàgina wiki . diff --git a/htdocs/langs/cs_CZ/admin.lang b/htdocs/langs/cs_CZ/admin.lang index bb20cdbc2ae..40b25d2b26e 100644 --- a/htdocs/langs/cs_CZ/admin.lang +++ b/htdocs/langs/cs_CZ/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Další hodnota (náhrady) MustBeLowerThanPHPLimit=Poznámka: Vaše konfigurace PHP v současné době omezuje maximální velikost souboru pro upload na %s %s, bez ohledu na hodnotu tohoto parametru NoMaxSizeByPHPLimit=Poznámka: Ve Vaší PHP konfiguraci není nastaven limit MaxSizeForUploadedFiles=Maximální velikost nahrávaných souborů (0 pro zablokování nahrávání) -UseCaptchaCode=Použít grafický kód (CAPTCHA) na přihlašovací stránce +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Úplná cesta k antivirovému souboru AntiVirusCommandExample=Příklad pro ClamAv Daemon (vyžaduje clamav-daemon): / usr / bin / clamdscan
Příklad pro ClamWin (velmi velmi pomalu): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Další parametry příkazového řádku @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Pokud je váš poskytovatel e-mailových služeb SMTP povinen omezit e-mailový klient na některé adresy IP (velmi vzácné), jedná se o adresu IP agentu uživatele pošty (MUA) pro aplikaci ERP CRM: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Kliknutím zobrazíte popis DependsOn=Tento modul potřebuje modul (y) RequiredBy=Tento modul je vyžadován modulem (moduly) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Hodnota konfigurační konstanty ConstantIsOn=Option %s is on NbOfDays=Počet dní AtEndOfMonth=Na konci měsíce -CurrentNext=Aktuální/Další +CurrentNext=A given day in month Offset=Ofset AlwaysActive=Vždy aktivní Upgrade=Vylepšit @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Stisknutím klávesy CTRL + F5 na klávesnici nebo vyma NotSupportedByAllThemes=Se pracuje s stěžejních témat, nemusí být podporována externími tématy BackgroundColor=Barva pozadí TopMenuBackgroundColor=barva pozadí pro Top nabídky -TopMenuDisableImages=Skrýt obrázky v Top nabídky +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=barva pozadí na levé menu BackgroundTableTitleColor=Barva pozadí pro tabulku názvu linky BackgroundTableTitleTextColor=Barva textu pro název řádku tabulky @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Poznámka: Možnost použít daň z prodeje nebo DPH byla nastave SwapSenderAndRecipientOnPDF=Zaměnit pozici odesílatele a příjemce na dokumentech PDF FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Sběratel e-mailu +EmailCollectors=Email collectors EmailCollectorDescription=Přidejte plánovanou úlohu a stránku s nastavením pro pravidelné skenování poštovních schránek (pomocí protokolu IMAP) a zaznamenávejte e-maily přijaté do vaší aplikace na správném místě a / nebo vytvořte automaticky nějaké záznamy (například potenciální zákazníci). NewEmailCollector=Nový e-mailový sběratel EMailHost=Hostitel poštovního IMAP serveru @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Poslední výsledek EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Potvrzení sběru e-mailu EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Žádné nové e-maily (odpovídající filtry), které chcete zpracovat NothingProcessed=Nic se nestalo -XEmailsDoneYActionsDone=%s e-maily kvalifikovány, %s úspěšně zpracovány emaily (pro %s záznam / akce provedeny) podle sběratele +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Šablona pro e-mail EMailsWillHaveMessageID=E-maily budou mít značku 'Reference' odpovídající této syntaxi PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Pokud chcete mít ve svém PDF duplikované texty ve 2 různých jazycích ve stejném generovaném PDF, musíte zde nastavit tento druhý jazyk, takže vygenerovaný PDF bude obsahovat 2 různé jazyky na stejné stránce, jeden vybraný při generování PDF a tento ( Podporuje to jen několik šablon PDF). Uchovávejte prázdné po dobu 1 jazyka na PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Sem zadejte kód ikony FontAwesome. Pokud nevíte, co je FontAwesome, můžete použít obecnou hodnotu fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Nastavení zásob ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Nastavení +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/cs_CZ/companies.lang b/htdocs/langs/cs_CZ/companies.lang index 97c587ff65e..92768a1b43b 100644 --- a/htdocs/langs/cs_CZ/companies.lang +++ b/htdocs/langs/cs_CZ/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Povaha subjektu NatureOfContact=Povaha kontaktu Address=Adresa State=Stát/Okres +StateId=State ID StateCode=Kód státu / provincie StateShort=Stát Region=Kraj Region-State=Region - stát Country=Země CountryCode=Kód země -CountryId=ID země +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Ostatní ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/cs_CZ/errors.lang b/htdocs/langs/cs_CZ/errors.lang index e530b0dbba3..b802f6b3a92 100644 --- a/htdocs/langs/cs_CZ/errors.lang +++ b/htdocs/langs/cs_CZ/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Špatná hodnota parametru. Připojí se obecně, když chybí překlad. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Přihlášení %s již existuje. ErrorGroupAlreadyExists=Skupina %s již existuje. ErrorEmailAlreadyExists=Email %s already exists. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=Soubor nebyl korektně poslán serverem ErrorNoTmpDir=Dočasný směr %s neexistuje. ErrorUploadBlockedByAddon=Nahrávání blokováno pluginem PHP / Apache. -ErrorFileSizeTooLarge=Soubor je příliš velký. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Pole %s je příliš dlouhé. ErrorSizeTooLongForIntType=Velikost příliš dlouhá pro typ int (%s číslice maximum) ErrorSizeTooLongForVarcharType=Velikost příliš dlouho typu string (%s znaků maximum) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript nesmí být zakázán, aby tato funkce f ErrorPasswordsMustMatch=Obě zadaná hesla se musí navzájem shodovat. Jinak máte smůlu .... ErrorContactEMail=Došlo k technické chybě. Prosím, kontaktujte administrátora na následující e-mail %s a vložte kód chyby %s ve své zprávě nebo přidejte kopii obrazovky této stránky. ErrorWrongValueForField=Pole %s: %s "neodpovídá pravidlu regexu %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Pole %s : %s "není hodnota nalezená v poli %s z %s ErrorFieldRefNotIn=Pole %s: %s "není stávající reflexe %s ErrorsOnXLines=nalezeny chyby %s @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Váš parametr PHP upload_max_filesize (%s) je vyšší než parametr PHP post_max_size (%s). Toto není konzistentní nastavení. WarningPasswordSetWithNoAccount=Pro tohoto člena bylo nastaveno heslo. Nebyl však vytvořen žádný uživatelský účet. Toto heslo je uloženo, ale nemůže být použito pro přihlášení k Dolibarr. Může být použito externím modulem / rozhraním, ale pokud nemáte pro člena definováno žádné přihlašovací jméno ani heslo, můžete vypnout možnost "Správa přihlášení pro každého člena" z nastavení modulu člena. Pokud potřebujete spravovat přihlašovací údaje, ale nepotřebujete žádné heslo, můžete toto pole ponechat prázdné, abyste se tomuto varování vyhnuli. Poznámka: E-mail může být také použit jako přihlašovací jméno, pokud je člen připojen k uživateli. -WarningMandatorySetupNotComplete=Klikněte zde pro nastavení povinných parametrů +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Kliknutím zde povolíte moduly a aplikace WarningSafeModeOnCheckExecDir=Upozornění: volba PHP safe_mode je taková, že příkaz musí být uložen uvnitř adresáře deklarovaného parametrem php safe_mode_exec_dir . WarningBookmarkAlreadyExists=Záložka s tímto názvem, nebo tento cíl (URL) již existuje. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/cs_CZ/externalsite.lang b/htdocs/langs/cs_CZ/externalsite.lang deleted file mode 100644 index 2a75cea4aa9..00000000000 --- a/htdocs/langs/cs_CZ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Nastavení odkazu na externí webové stránky -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul Externí stránky nebyl správně nakonfigurován. -ExampleMyMenuEntry=Moje menu vstup diff --git a/htdocs/langs/cs_CZ/ftp.lang b/htdocs/langs/cs_CZ/ftp.lang deleted file mode 100644 index e2717b25503..00000000000 --- a/htdocs/langs/cs_CZ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Nastavení modulu FTP klienta -NewFTPClient=Nastavit nové FTP připojení -FTPArea=FTP oblast -FTPAreaDesc=Tato obrazovka zobrazí náhled FTP serveru -SetupOfFTPClientModuleNotComplete=Zdá se že nastavení FTP klienta není kompletní -FTPFeatureNotSupportedByYourPHP=Vaše PHP nepodporuje FTP funkce -FailedToConnectToFTPServer=Nepodařilo se připojit k FTP serveru (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Nepodařilo se přihlásit k FTP serveru pod zadaným uživatelským jménem a heslem -FTPFailedToRemoveFile=Nepodařilo se odstranit soubor %s. -FTPFailedToRemoveDir=Nepodařilo se odstranit adresář %s (Zkontrolujte oprávnění a zda adresář je prázdný). -FTPPassiveMode=Pasivní režim -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/cs_CZ/hrm.lang b/htdocs/langs/cs_CZ/hrm.lang index 36ecad205fc..6d03052933b 100644 --- a/htdocs/langs/cs_CZ/hrm.lang +++ b/htdocs/langs/cs_CZ/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Otevřít zařízení CloseEtablishment=Zavřít zařízení # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Seznam oddělení +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Pracovní pozice # Module Employees=Zaměstnanci @@ -20,13 +20,14 @@ Employee=Zaměstnanec NewEmployee=Nový zaměstnanec ListOfEmployees=List of employees HrmSetup=setup HRM Modul -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Práce -Jobs=Jobs +JobPosition=Práce +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Pozice -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/cs_CZ/install.lang b/htdocs/langs/cs_CZ/install.lang index 5dae32075f4..7723af4ffbd 100644 --- a/htdocs/langs/cs_CZ/install.lang +++ b/htdocs/langs/cs_CZ/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurační soubor %s není zapisovatelný. Zk ConfFileIsWritable=Konfigurační soubor %s je zapisovatelný. ConfFileMustBeAFileNotADir=Konfigurační soubor %s musí být soubor, nikoli adresář. ConfFileReload=Znovu načíst parametry z konfiguračního souboru. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Tato PHP instalace podporuje proměnné POST a GET. PHPSupportPOSTGETKo=Je možné, že vaše instalace PHP nepodporuje proměnné POST a/nebo GET. Zkontrolujte parametr variables_order ve Vašem php.ini. PHPSupportSessions=Tato PHP instalace podporuje relace. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Možná jste zadali nesprávnou hodnotu pro parametr ErrorFailedToCreateDatabase=Nepodařilo se vytvořit databázi '%s'. ErrorFailedToConnectToDatabase=Nepodařilo se připojit k databázi '%s'. ErrorDatabaseVersionTooLow=Verze databáze (%s) je příliš stará a vetchá. Je potřeba omladit na verzi databáze alespoň %s. -ErrorPHPVersionTooLow=Tato verze PHP je příliš stará. Verze %s je potřeba. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Připojení k serveru bylo úspěšné, ale databáze '%s' nebyla nalezena. ErrorDatabaseAlreadyExists=Databáze '%s' již existuje. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Pokud databáze neexistuje, vraťte se zpět a zaškrtněte volbu "Vytvořit databázi". IfDatabaseExistsGoBackAndCheckCreate=Pokud databáze již existuje, vraťte se zpět a zrušte zaškrtnutí políčka "Vytvořit databázi". WarningBrowserTooOld=Verze prohlížeče je příliš stará. Aktualizujte prohlížeč na nejnovější verzi. Doporučujeme aplikace Firefox, Chrome nebo Opera. diff --git a/htdocs/langs/cs_CZ/loan.lang b/htdocs/langs/cs_CZ/loan.lang index a4760506519..6811cae63d8 100644 --- a/htdocs/langs/cs_CZ/loan.lang +++ b/htdocs/langs/cs_CZ/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Finanční závazek InterestAmount=Zájem CapitalRemain=Zůstatek kapitálu TermPaidAllreadyPaid = Tento termín je již zaplacen -CantUseScheduleWithLoanStartedToPaid = Nelze použít plánovač pro půjčku se zaplacením +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Pokud používáte plán, nemůžete změnit zájem # Admin ConfigLoan=Konfigurace modulu úvěru diff --git a/htdocs/langs/cs_CZ/main.lang b/htdocs/langs/cs_CZ/main.lang index 6b8b2ce6f07..3c96294a8fa 100644 --- a/htdocs/langs/cs_CZ/main.lang +++ b/htdocs/langs/cs_CZ/main.lang @@ -244,6 +244,7 @@ Designation=Popis DescriptionOfLine=Popis řádku DateOfLine=Datum řádku DurationOfLine=Doba trvání řádku +ParentLine=Parent line ID Model=doc šablona DefaultModel=Výchozí šablona doc Action=Událost @@ -344,7 +345,7 @@ KiloBytes=Kilobajty MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabajtů -UserAuthor=Ceated by +UserAuthor=Vytvořil UserModif=Updated by b=b. Kb=Kb @@ -517,6 +518,7 @@ or=nebo Other=Ostatní Others=Ostatní OtherInformations=Jiná informace +Workflow=Workflow Quantity=Množství Qty=Množství ChangedBy=Změnil @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Přiložené soubory a dokumenty JoinMainDoc=Připojte se k hlavnímu dokumentu +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=Funkce vypnuta MoveBox=Přesun widgetu Offered=Nabízené NotEnoughPermissions=Nemáte oprávnění pro tuto akci +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Název relace Method=Metoda Receive=Přijmout @@ -798,6 +802,7 @@ URLPhoto=URL obrázku/loga SetLinkToAnotherThirdParty=Odkaz na jiný subjekt LinkTo=odkaz na LinkToProposal=Odkaz na návrh +LinkToExpedition= Link to expedition LinkToOrder=Odkaz na objednávku LinkToInvoice=Odkaz na fakturu LinkToTemplateInvoice=Odkaz na fakturu šablony @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=přerušit +Terminated=ukončený +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/cs_CZ/members.lang b/htdocs/langs/cs_CZ/members.lang index fb676cc5c93..80249603e87 100644 --- a/htdocs/langs/cs_CZ/members.lang +++ b/htdocs/langs/cs_CZ/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID člena +MemberId=Member Id +MemberRef=Member Ref NewMember=Nový člen MemberType=Členské typ MemberTypeId=Členské typ id @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/cs_CZ/oauth.lang b/htdocs/langs/cs_CZ/oauth.lang index 5614a4a4139..07ffdd493ac 100644 --- a/htdocs/langs/cs_CZ/oauth.lang +++ b/htdocs/langs/cs_CZ/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token byl generován a uložen do lokální databáze NewTokenStored=Token přijat a uložen ToCheckDeleteTokenOnProvider=Klikněte zde pro kontrolu / odstranění oprávnění uloženého zprostředkovatelem %s OAuth TokenDeleted=Token byl smazán -RequestAccess=Kliknutím sem můžete požádat/obnovit přístup a obdržet nový token, který chcete uložit +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Klikněte zde pro smazání tokenu UseTheFollowingUrlAsRedirectURI=Při vytváření pověření u poskytovatele OAuth použijte následující adresu URL jako URI přesměrování: -ListOfSupportedOauthProviders=Zadejte zde pověření poskytnuté poskytovatelem OAuth2. Zde jsou zobrazena pouze podporovaní poskytovatelé OAuth2. Toto nastavení mohou používat jiné moduly, které potřebují ověření OAuth2. -OAuthSetupForLogin=Page pro vygenerování tokenu OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Viz předchozí tabulka +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID a tajemství TOKEN_REFRESH=Token obnovit přítomnost TOKEN_EXPIRED=Token vypršel @@ -23,10 +24,13 @@ TOKEN_DELETE=Odstranění uloženého tokenu OAUTH_GOOGLE_NAME=O službě Google OAuth OAUTH_GOOGLE_ID=ID Google Oauth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Přejděte na tuto stránku a potom na pověření pro vytvoření pověření OAuth OAUTH_GITHUB_NAME=Služba Oauth GitHub OAUTH_GITHUB_ID=ID Oauth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Přejděte na tuto stránku a pak na "Registrace nové aplikace" pro vytvoření pověření Oauth +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/cs_CZ/stocks.lang b/htdocs/langs/cs_CZ/stocks.lang index a6f36bf31fe..9592bd4fe29 100644 --- a/htdocs/langs/cs_CZ/stocks.lang +++ b/htdocs/langs/cs_CZ/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Limit zásob pro výstrahu a požadovanou optimáln ProductStockWarehouseUpdated=Limit zásob pro výstrahu a požadovanou optimální zásobu byl správně aktualizován ProductStockWarehouseDeleted=Limit zásob pro výstrahu a požadovanou optimální zásobu jsou správně odstraněny AddNewProductStockWarehouse=Nastavit nový limit pro pohotovosti a požadovanou optimální zásoby -AddStockLocationLine=Snižte množství a klikněte na tlačítko Přidat další sklad pro tento produkt +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Datum inventáře Inventories=Zásoby NewInventory=Nový inventář @@ -254,7 +254,7 @@ ReOpen=Znovu otevřeno ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Začínáme ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Nastavení +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/cy_GB/accountancy.lang b/htdocs/langs/cy_GB/accountancy.lang index 9f202fe0a9b..7ee1fd821b4 100644 --- a/htdocs/langs/cy_GB/accountancy.lang +++ b/htdocs/langs/cy_GB/accountancy.lang @@ -48,8 +48,9 @@ CountriesNotInEEC=Gwledydd nad ydynt yn y CEE CountriesInEECExceptMe=Gwledydd yn EEC ac eithrio %s CountriesExceptMe=Pob gwlad ac eithrio %s AccountantFiles=Allforio dogfennau ffynhonnell -ExportAccountingSourceDocHelp=Gyda'r offeryn hwn, gallwch allforio'r digwyddiadau ffynhonnell (rhestr mewn CSV a PDFs) a ddefnyddir i gynhyrchu eich cyfrifyddiaeth. +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). ExportAccountingSourceDocHelp2=I allforio eich dyddlyfrau, defnyddiwch y cofnod dewislen %s - %s. +ExportAccountingProjectHelp=Specify a project if you need an accounting report only for a specific project. Expense reports and loan payments are not included in project reports. VueByAccountAccounting=Gweld yn ôl cyfrif cyfrifeg VueBySubAccountAccounting=Gweld trwy isgyfrif cyfrifo @@ -161,7 +162,7 @@ BANK_DISABLE_DIRECT_INPUT=Analluogi cofnodi trafodion yn uniongyrchol yn y cyfri ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Galluogi allforio drafft ar y dyddlyfr ACCOUNTANCY_COMBO_FOR_AUX=Galluogi rhestr combo ar gyfer cyfrif atodol (gall fod yn araf os oes gennych lawer o drydydd parti, torri'r gallu i chwilio ar ran o werth) ACCOUNTING_DATE_START_BINDING=Diffinio dyddiad i ddechrau rhwymo a throsglwyddo mewn cyfrifyddiaeth. O dan y dyddiad hwn, ni fydd y trafodion yn cael eu trosglwyddo i gyfrifeg. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Wrth drosglwyddo cyfrifyddiaeth, dewiswch y cyfnod dangos yn ddiofyn +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Gwerthu dyddlyfr ACCOUNTING_PURCHASE_JOURNAL=Dyddiadur prynu @@ -182,7 +183,7 @@ DONATION_ACCOUNTINGACCOUNT=Cyfrif cyfrifo i gofrestru rhoddion ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Cyfrif cyfrif i gofrestru tanysgrifiadau ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Cyfrif cyfrifo yn ddiofyn i gofrestru blaendal cwsmer -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Cyfrif cyfrifo yn ddiofyn ar gyfer y cynhyrchion a brynwyd (a ddefnyddir os nad yw wedi'i ddiffinio yn y daflen cynnyrch) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Cyfrif cyfrifo yn ddiofyn ar gyfer y cynhyrchion a brynwyd yn EEC (a ddefnyddir os nad yw wedi'i ddiffinio yn y daflen cynnyrch) @@ -332,7 +333,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Analluogi rhwymo a throsglwyddo cyf ## Export NotifiedExportDate=Baner llinellau wedi'u hallforio fel Allforiwyd (i addasu llinell, bydd angen i chi ddileu'r trafodiad cyfan a'i ail-drosglwyddo i gyfrifeg) -NotifiedValidationDate=Dilysu a chloi'r cofnodion a allforiwyd (yr un effaith â'r nodwedd "Cau", YN BENDERFYNOL ni fydd addasu a dileu'r llinellau yn bosibl) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Dyddiad dilysu a chlo ConfirmExportFile=Cadarnhad o gynhyrchu'r ffeil allforio cyfrifo ? ExportDraftJournal=Allforio cyfnodolyn drafft @@ -427,6 +428,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Mae' AccountancyErrorMismatchLetterCode=Mismatch in reconcile code AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Cofnodion cyfrifeg diff --git a/htdocs/langs/cy_GB/admin.lang b/htdocs/langs/cy_GB/admin.lang index 6cb3ad74653..8fb094542d6 100644 --- a/htdocs/langs/cy_GB/admin.lang +++ b/htdocs/langs/cy_GB/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Gwerth nesaf (amnewidiadau) MustBeLowerThanPHPLimit=Sylwch: ar hyn o bryd mae eich ffurfwedd PHP yn cyfyngu ar uchafswm maint y ffeiliau i'w llwytho i fyny i %s %s, waeth beth fo gwerth y paramedr hwn NoMaxSizeByPHPLimit=Nodyn: Nid oes terfyn wedi'i osod yn eich ffurfwedd PHP MaxSizeForUploadedFiles=Maint mwyaf ar gyfer ffeiliau sydd wedi'u llwytho i fyny (0 i wrthod unrhyw uwchlwythiad) -UseCaptchaCode=Defnyddiwch god graffigol (CAPTCHA) ar y dudalen mewngofnodi +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Llwybr llawn i orchymyn gwrthfeirws AntiVirusCommandExample=Enghraifft ar gyfer ClamAv Daemon (angen clamav-daemon): /usr/bin/clamdscan
Enghraifft ar gyfer ClamWin (araf iawn): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Mwy o baramedrau ar y llinell orchymyn @@ -477,7 +477,7 @@ InstalledInto=Wedi'i osod yn y cyfeiriadur %s BarcodeInitForThirdparties=Init cod bar torfol ar gyfer trydydd parti BarcodeInitForProductsOrServices=Init cod bar torfol neu ailosod ar gyfer cynhyrchion neu wasanaethau CurrentlyNWithoutBarCode=Ar hyn o bryd, mae gennych %s cofnod ar %s a0a65d071f6fc9fz0 barcode diffiniedig. -InitEmptyBarCode=Gwerth cychwynnol ar gyfer cofnodion gwag %s nesaf +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Dileu holl werthoedd cod bar cyfredol ConfirmEraseAllCurrentBarCode=Ydych chi'n siŵr eich bod am ddileu'r holl werthoedd cod bar cyfredol? AllBarcodeReset=Mae holl werthoedd cod bar wedi'u dileu @@ -504,7 +504,7 @@ WarningPHPMailC=- Mae defnyddio gweinydd SMTP eich Darparwr Gwasanaeth E-bost ei WarningPHPMailD=Hefyd, argymhellir felly newid y dull anfon e-byst i'r gwerth "SMTP". Os ydych chi wir eisiau cadw'r dull "PHP" rhagosodedig i anfon e-byst, anwybyddwch y rhybudd hwn, neu gwaredwch ef trwy osod y MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP yn gyson i 1 yn y Cartref - Gosod - Arall. WarningPHPMail2=Os oes angen i'ch darparwr SMTP e-bost gyfyngu cleient e-bost i rai cyfeiriadau IP (prin iawn), dyma gyfeiriad IP yr asiant defnyddiwr post (MUA) ar gyfer eich cais CRM ERP: %s . WarningPHPMailSPF=Os yw'r enw parth yn eich cyfeiriad e-bost anfonwr wedi'i warchod gan gofnod SPF (gofynnwch i'ch cofrestrydd enw parth), rhaid i chi ychwanegu'r IPs canlynol yng nghofnod SPF DNS eich parth: %s . -ActualMailSPFRecordFound=Darganfuwyd cofnod SPF gwirioneddol : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Cliciwch i ddangos disgrifiad DependsOn=Mae angen y modiwl(au) ar y modiwl hwn RequiredBy=Mae angen y modiwl hwn yn ôl modiwl(au) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Gwerth cysonyn cyfluniad ConstantIsOn=Mae opsiwn %s ymlaen NbOfDays=Nifer y dyddiau AtEndOfMonth=Ar ddiwedd y mis -CurrentNext=Cyfredol/Nesaf +CurrentNext=A given day in month Offset=Gwrthbwyso AlwaysActive=Bob amser yn weithgar Upgrade=Uwchraddio @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Pwyswch CTRL+F5 ar fysellfwrdd neu cliriwch storfa eich NotSupportedByAllThemes=Mae Will yn gweithio gyda themâu craidd, efallai na fydd yn cael ei gefnogi gan themâu allanol BackgroundColor=Lliw cefndir TopMenuBackgroundColor=Lliw cefndir ar gyfer y ddewislen Top -TopMenuDisableImages=Cuddio delweddau yn y ddewislen Uchaf +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Lliw cefndir ar gyfer y ddewislen Chwith BackgroundTableTitleColor=Lliw cefndir ar gyfer llinell teitl y Tabl BackgroundTableTitleTextColor=Lliw testun ar gyfer llinell teitl y Tabl @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Nodyn: Mae'r opsiwn i ddefnyddio Treth Gwerthu neu TAW wedi'i oso SwapSenderAndRecipientOnPDF=Cyfnewid safle cyfeiriad anfonwr a derbynnydd ar ddogfennau PDF FeatureSupportedOnTextFieldsOnly=Rhybudd, nodwedd a gefnogir ar feysydd testun a rhestrau combo yn unig. Hefyd rhaid gosod paramedr URL action=creu neu action=golygu NEU rhaid i enw tudalen orffen gyda 'new.php' i gychwyn y nodwedd yma. EmailCollector=Casglwr e-bost +EmailCollectors=Email collectors EmailCollectorDescription=Ychwanegwch swydd wedi'i hamserlennu a thudalen sefydlu i sganio blychau e-bost yn rheolaidd (gan ddefnyddio protocol IMAP) a chofnodi negeseuon e-bost a dderbyniwyd yn eich cais, yn y lle iawn a/neu greu rhai cofnodion yn awtomatig (fel canllawiau). NewEmailCollector=Casglwr E-bost Newydd EMailHost=Gwesteiwr gweinydd IMAP e-bost @@ -2073,14 +2074,14 @@ DateLastCollectResult=Dyddiad y cais casglu diweddaraf DateLastcollectResultOk=Dyddiad llwyddiant y casgliad diweddaraf LastResult=Canlyniad diweddaraf EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Cadarnhad casglu e-bost EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Dim e-bost newydd (cyfateb hidlwyr) i'w prosesu NothingProcessed=Dim byd wedi'i wneud -XEmailsDoneYActionsDone=e-byst %s yn gymwys, e-byst %s wedi'u prosesu'n llwyddiannus (ar gyfer cofnod %s/camau gweithredu wedi'u gwneud) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Cofnodi digwyddiad ar yr agenda (gyda math E-bost wedi'i anfon neu ei dderbyn) CreateLeadAndThirdParty=Creu arweinydd (a thrydydd parti os oes angen) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2105,7 +2106,7 @@ CreateCandidature=Creu cais am swydd FormatZip=Sip MainMenuCode=Cod mynediad dewislen (prif ddewislen) ECMAutoTree=Dangos coeden ECM awtomatig -OperationParamDesc=Diffinio'r rheolau i'w defnyddio i echdynnu neu osod gwerthoedd.
Enghraifft ar gyfer gweithrediadau sydd angen tynnu enw o destun e-bost:
enw=DYFYNIAD:TESTUN:Neges gan y cwmni ([^\n]*)
Enghraifft ar gyfer gweithrediadau sy'n creu gwrthrychau:
objproperty1=SET:y gwerth i osod
objproperty2=SET:gwerth yn cynnwys gwerth __objproperty1__
objproperty1=SET: nid yw'r gwerth i osod
objproperty2=SET:gwerth yn cynnwys gwerth __objproperty1__ a0342fccfda19bzval0342fccfda19bzval0342fccfda19bzval0342fccfda19bzval03142fccfda19bzval0342fccfda19bzval03342fccfda19bzval030 wedi'i ddefnyddio wedi'i ddiffinio'n barod :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:TESTUN:([^\n]*)
object.objproperty5=EXTRACT:CORFF:Fy enw cwmni yw\\s( [^\\s]*)

Defnyddiwch a ; torgoch fel gwahanydd i echdynnu neu osod sawl eiddo. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Oriau agor OpeningHoursDesc=Nodwch yma oriau agor arferol eich cwmni. ResourceSetup=Ffurfweddu modiwl Adnodd @@ -2167,6 +2168,9 @@ EmailTemplate=Templed ar gyfer e-bost EMailsWillHaveMessageID=Bydd gan e-byst dag 'Cyfeiriadau' sy'n cyfateb i'r gystrawen hon PDF_SHOW_PROJECT=Dangos y prosiect ar ddogfen ShowProjectLabel=Label Prosiect +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Os ydych chi am i rai testunau yn eich PDF gael eu dyblygu mewn 2 iaith wahanol yn yr un PDF a gynhyrchir, rhaid i chi osod yma yr ail iaith hon felly bydd PDF a gynhyrchir yn cynnwys 2 iaith wahanol ar yr un dudalen, yr un a ddewisir wrth gynhyrchu PDF a'r un hon ( dim ond ychydig o dempledi PDF sy'n cefnogi hyn). Cadwch yn wag am 1 iaith fesul PDF. PDF_USE_A=Cynhyrchwch ddogfennau PDF gyda fformat PDF/A yn lle fformat PDF defaut FafaIconSocialNetworksDesc=Rhowch god eicon FontAwesome yma. Os nad ydych chi'n gwybod beth yw FontAwesome, gallwch ddefnyddio'r llyfr cyfeiriadau gwerth generig. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Templed ar gyfer cerdyn busnes mewn maint gwahanol InventorySetup= Gosod Rhestr ExportUseLowMemoryMode=Defnyddiwch fodd cof isel ExportUseLowMemoryModeHelp=Defnyddiwch y modd cof isel i weithredu exec y dymp (cywasgu yn cael ei wneud trwy bibell yn hytrach nag i mewn i'r cof PHP). Nid yw'r dull hwn yn caniatáu gwirio bod ffeil wedi'i chwblhau ac ni ellir adrodd neges gwall os yw'n methu. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/cy_GB/companies.lang b/htdocs/langs/cy_GB/companies.lang index dd4567edec4..122154593a4 100644 --- a/htdocs/langs/cy_GB/companies.lang +++ b/htdocs/langs/cy_GB/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Natur Trydydd Parti NatureOfContact=Natur y Cyswllt Address=Cyfeiriad State=Talaith/Talaith +StateId=State ID StateCode=Cod y Wladwriaeth/Talaith StateShort=Cyflwr Region=Rhanbarth Region-State=Rhanbarth - Talaith Country=Gwlad CountryCode=Cod Gwlad -CountryId=ID gwlad +CountryId=Country ID Phone=Ffon PhoneShort=Ffon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Cofrestr Fasnach) ProfId2CM=Id. prof. 2 (Rhif trethdalwr) -ProfId3CM=Id. prof. 3 (Archddyfarniad creu) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Cofrestr Masnach ProfId2ShortCM=Trethdalwr Na. -ProfId3ShortCM=Archddyfarniad y greadigaeth -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Athro Id 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Ychwanegu cyfeiriad SupplierCategory=Categori gwerthwr JuridicalStatus200=Annibynol DeleteFile=Dileu ffeil -ConfirmDeleteFile=Ydych chi'n siŵr eich bod am ddileu'r ffeil hon? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Wedi'i neilltuo i gynrychiolydd gwerthu Organization=Sefydliad FiscalYearInformation=Blwyddyn Gyllidol diff --git a/htdocs/langs/cy_GB/errors.lang b/htdocs/langs/cy_GB/errors.lang index 01244d8d8eb..8e58924da0f 100644 --- a/htdocs/langs/cy_GB/errors.lang +++ b/htdocs/langs/cy_GB/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Rhaid peidio ag analluogi Javascript i gael y nodwe ErrorPasswordsMustMatch=Rhaid i'r ddau gyfrinair wedi'u teipio gydweddu â'i gilydd ErrorContactEMail=Digwyddodd gwall technegol. Os gwelwch yn dda, cysylltwch â'r gweinyddwr i'r e-bost canlynol %s a rhowch y cod gwall %s a09a4b789zf a09a4b7801 sgrin o'ch neges, neu ychwanegu'r sgrin hon o'ch neges. ErrorWrongValueForField=Maes a0aee833365837fz0 %s : ' %s 3e %s 3e ddim yn cyfateb %s 39f %s
309f 309f %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Maes %s : ' %s ' ddim yn werth dod o hyd yn y maes %s o %s ErrorFieldRefNotIn=Maes %s : ' %s ' cyf Nid yw %s presennol ErrorsOnXLines=%s gwallau wedi'u canfod @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Yn gyntaf rhaid i chi osod eich siart c ErrorFailedToFindEmailTemplate=Wedi methu dod o hyd i dempled gydag enw cod %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Hyd heb ei ddiffinio ar y gwasanaeth. Dim ffordd i gyfrifo'r pris fesul awr. ErrorActionCommPropertyUserowneridNotDefined=Mae angen perchennog y defnyddiwr -ErrorActionCommBadType=Nid yw'r math o ddigwyddiad a ddewiswyd (id: %n, cod: %s) yn bodoli mewn geiriadur Math o Ddigwyddiad +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Fersiwn gwirio yn methu ErrorWrongFileName=Ni all enw'r ffeil fod â __SOMETHING__ ynddi ErrorNotInDictionaryPaymentConditions=Ddim yn y Geiriadur Telerau Talu, addaswch. @@ -283,11 +284,18 @@ ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product va ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Mae eich paramedr PHP upload_max_filesize (%s) yn uwch na pharamedr PHP post_max_size (%s). Nid yw hwn yn drefniant cyson. WarningPasswordSetWithNoAccount=Gosodwyd cyfrinair ar gyfer yr aelod hwn. Fodd bynnag, ni chrëwyd unrhyw gyfrif defnyddiwr. Felly mae'r cyfrinair hwn yn cael ei storio ond ni ellir ei ddefnyddio i fewngofnodi i Ddolibarr. Gellir ei ddefnyddio gan fodiwl/rhyngwyneb allanol ond os nad oes angen i chi ddiffinio unrhyw fewngofnodi na chyfrinair ar gyfer aelod, gallwch analluogi opsiwn "Rheoli mewngofnodi ar gyfer pob aelod" o osod modiwl Aelod. Os oes angen i chi reoli mewngofnodi ond nad oes angen unrhyw gyfrinair arnoch, gallwch gadw'r maes hwn yn wag er mwyn osgoi'r rhybudd hwn. Nodyn: Gellir defnyddio e-bost hefyd fel mewngofnodi os yw'r aelod yn gysylltiedig â defnyddiwr. -WarningMandatorySetupNotComplete=Cliciwch yma i osod paramedrau gorfodol +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Cliciwch yma i alluogi eich modiwlau a'ch cymwysiadau WarningSafeModeOnCheckExecDir=Rhybudd, mae opsiwn PHP safe_mode ymlaen felly mae'n rhaid storio'r gorchymyn y tu mewn i gyfeiriadur a ddatganwyd gan baramedr php safe_mode_exec_dir . WarningBookmarkAlreadyExists=Mae nod tudalen gyda'r teitl hwn neu'r targed hwn (URL) eisoes yn bodoli. @@ -317,6 +325,7 @@ WarningCreateSubAccounts=Rhybudd, ni allwch greu is-gyfrif yn uniongyrchol, rhai WarningAvailableOnlyForHTTPSServers=Ar gael dim ond os ydych yn defnyddio cysylltiad sicr HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Nid yw modiwl %s wedi'i alluogi. Felly efallai y byddwch yn colli llawer o ddigwyddiad yma. WarningPaypalPaymentNotCompatibleWithStrict=Mae'r gwerth 'Strict' yn golygu nad yw'r nodweddion talu ar-lein yn gweithio'n gywir. Defnyddiwch 'Lax' yn lle hynny. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Gwerth ddim yn ddilys diff --git a/htdocs/langs/cy_GB/externalsite.lang b/htdocs/langs/cy_GB/externalsite.lang deleted file mode 100644 index 399925afb89..00000000000 --- a/htdocs/langs/cy_GB/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Gosod dolen i wefan allanol -ExternalSiteURL=URL Gwefan Allanol o gynnwys HTML iframe -ExternalSiteModuleNotComplete=Nid oedd Module ExternalSite wedi'i ffurfweddu'n gywir. -ExampleMyMenuEntry=Fy nghofnod ar y ddewislen diff --git a/htdocs/langs/cy_GB/ftp.lang b/htdocs/langs/cy_GB/ftp.lang deleted file mode 100644 index 699368df37b..00000000000 --- a/htdocs/langs/cy_GB/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Gosod modiwl Cleient FTP neu SFTP -NewFTPClient=Gosodiad cysylltiad FTP/FTPS newydd -FTPArea=Ardal FTP/FTPS -FTPAreaDesc=Mae'r sgrin hon yn dangos golwg o weinydd FTP et SFTP. -SetupOfFTPClientModuleNotComplete=Mae'n ymddangos bod gosodiad y modiwl cleient FTP neu SFTP yn anghyflawn -FTPFeatureNotSupportedByYourPHP=Nid yw eich PHP yn cefnogi swyddogaethau FTP neu SFTP -FailedToConnectToFTPServer=Wedi methu cysylltu â'r gweinydd (gweinydd %s, porthladd %s) -FailedToConnectToFTPServerWithCredentials=Wedi methu mewngofnodi i'r gweinydd gyda mewngofnodi/cyfrinair diffiniedig -FTPFailedToRemoveFile=Wedi methu tynnu ffeil %s . -FTPFailedToRemoveDir=Wedi methu dileu cyfeiriadur %s : gwirio caniatadau a bod y cyfeiriadur yn wag. -FTPPassiveMode=Modd goddefol -ChooseAFTPEntryIntoMenu=Dewiswch wefan FTP/SFTP o'r ddewislen... -FailedToGetFile=Wedi methu cael ffeiliau %s diff --git a/htdocs/langs/cy_GB/hrm.lang b/htdocs/langs/cy_GB/hrm.lang index 60bffa170b3..a2119f4a432 100644 --- a/htdocs/langs/cy_GB/hrm.lang +++ b/htdocs/langs/cy_GB/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Sefydliad agored CloseEtablishment=Sefydliad agos # Dictionary DictionaryPublicHolidays=Gadael - Gwyliau cyhoeddus -DictionaryDepartment=HRM - Rhestr adrannau +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=RhAD - Swyddi # Module Employees=Gweithwyr @@ -70,9 +70,9 @@ RequiredSkills=Sgiliau gofynnol ar gyfer y swydd hon UserRank=Safle Defnyddiwr SkillList=Rhestr sgiliau SaveRank=Cadw rheng -knowHow=Gwybod sut -HowToBe=Sut i fod -knowledge=Gwybodaeth +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Sylw gadael DateLastEval=Dyddiad y gwerthusiad diwethaf NoEval=Dim gwerthusiad wedi'i wneud ar gyfer y gweithiwr hwn @@ -88,3 +88,4 @@ DeleteSkill = Skill removed SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/cy_GB/install.lang b/htdocs/langs/cy_GB/install.lang index 1369d751769..d2ad4f7b112 100644 --- a/htdocs/langs/cy_GB/install.lang +++ b/htdocs/langs/cy_GB/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Nid yw ffeil ffurfweddu %s yn ysgrifenadwy. Gwiri ConfFileIsWritable=Mae ffeil ffurfweddu %s yn ysgrifenadwy. ConfFileMustBeAFileNotADir=Rhaid i ffeil ffurfweddu %s fod yn ffeil, nid cyfeiriadur. ConfFileReload=Ail-lwytho paramedrau o ffeil ffurfweddu. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Mae'r PHP hwn yn cefnogi newidynnau POST a GET. PHPSupportPOSTGETKo=Mae'n bosibl nad yw eich gosodiad PHP yn cefnogi newidynnau POST a/neu GET. Gwiriwch y paramedr variables_order yn php.ini. PHPSupportSessions=Mae'r PHP hwn yn cefnogi sesiynau. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Efallai eich bod wedi teipio gwerth anghywir ar gyfe ErrorFailedToCreateDatabase=Wedi methu creu cronfa ddata '%s'. ErrorFailedToConnectToDatabase=Wedi methu cysylltu â chronfa ddata '%s'. ErrorDatabaseVersionTooLow=Fersiwn cronfa ddata (%s) yn rhy hen. Mae angen fersiwn %s neu uwch. -ErrorPHPVersionTooLow=Fersiwn PHP yn rhy hen. Mae angen fersiwn %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Cysylltiad i'r gweinydd yn llwyddiannus ond ni chanfuwyd cronfa ddata '%s'. ErrorDatabaseAlreadyExists=Mae cronfa ddata '%s' eisoes yn bodoli. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Os nad yw'r gronfa ddata yn bodoli, ewch yn ôl a gwiriwch yr opsiwn "Creu cronfa ddata". IfDatabaseExistsGoBackAndCheckCreate=Os oes cronfa ddata eisoes yn bodoli, ewch yn ôl a dad-diciwch yr opsiwn "Creu cronfa ddata". WarningBrowserTooOld=Fersiwn y porwr yn rhy hen. Argymhellir yn gryf eich bod yn uwchraddio'ch porwr i fersiwn diweddar o Firefox, Chrome neu Opera. diff --git a/htdocs/langs/cy_GB/knowledgemanagement.lang b/htdocs/langs/cy_GB/knowledgemanagement.lang index a7aa7f7bbeb..10de67e111d 100644 --- a/htdocs/langs/cy_GB/knowledgemanagement.lang +++ b/htdocs/langs/cy_GB/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Erthyglau KnowledgeRecord = Erthygl KnowledgeRecordExtraFields = Extrafields ar gyfer Erthygl GroupOfTicket=Grŵp o docynnau -YouCanLinkArticleToATicketCategory=Gallwch gysylltu erthygl â grŵp tocynnau (felly bydd yr erthygl yn cael ei hawgrymu yn ystod cyfnod cymhwyso tocynnau newydd) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Argymhellir ar gyfer tocynnau pan fydd grŵp SetObsolete=Gosod fel darfodedig diff --git a/htdocs/langs/cy_GB/loan.lang b/htdocs/langs/cy_GB/loan.lang index c5796d8780d..9905e346b7a 100644 --- a/htdocs/langs/cy_GB/loan.lang +++ b/htdocs/langs/cy_GB/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Ymrwymiad ariannol InterestAmount=Llog CapitalRemain=Cyfalaf yn aros TermPaidAllreadyPaid = Mae'r tymor hwn eisoes wedi'i dalu -CantUseScheduleWithLoanStartedToPaid = Methu â defnyddio'r trefnydd ar gyfer benthyciad gyda'r taliad wedi dechrau +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Ni allwch addasu llog os ydych yn defnyddio amserlen # Admin ConfigLoan=Ffurfwedd y benthyciad modiwl diff --git a/htdocs/langs/cy_GB/main.lang b/htdocs/langs/cy_GB/main.lang index d6c76458644..d1564b719da 100644 --- a/htdocs/langs/cy_GB/main.lang +++ b/htdocs/langs/cy_GB/main.lang @@ -345,7 +345,7 @@ KiloBytes=Cilobytes MegaBytes=Megabeit GigaBytes=Gigabeit TeraBytes=Terabytes -UserAuthor=Wedi ei gado gan +UserAuthor=Created by UserModif=Diweddarwyd gan b=b. Kb=Kb @@ -712,6 +712,7 @@ FeatureDisabled=Nodwedd wedi'i hanalluogi MoveBox=Symud teclyn Offered=Cynigiwyd NotEnoughPermissions=Nid oes gennych ganiatâd ar gyfer y weithred hon +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Enw'r sesiwn Method=Dull Receive=Derbyn @@ -801,6 +802,7 @@ URLPhoto=URL y llun / logo SetLinkToAnotherThirdParty=Cyswllt i drydydd parti arall LinkTo=Dolen i LinkToProposal=Dolen i'r cynnig +LinkToExpedition= Link to expedition LinkToOrder=Dolen i archeb LinkToInvoice=Dolen i'r anfoneb LinkToTemplateInvoice=Dolen i anfoneb templed @@ -1174,3 +1176,7 @@ ConfirmAllocateCommercial=Assign sales representative confirmation ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? CommercialsAffected=Sales representatives affected CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/cy_GB/members.lang b/htdocs/langs/cy_GB/members.lang index 6ab25d88d17..45526b3900a 100644 --- a/htdocs/langs/cy_GB/members.lang +++ b/htdocs/langs/cy_GB/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Dyddiad gorffen aelodaeth EndSubscription=Diwedd aelodaeth SubscriptionId=ID y cyfraniad WithoutSubscription=Heb gyfraniad -MemberId=ID aelod +MemberId=Member Id +MemberRef=Member Ref NewMember=Aelod newydd MemberType=Math o aelod MemberTypeId=ID math aelod @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Ni ellir dileu'r math o aelod NewSubscription=Cyfraniad newydd NewSubscriptionDesc=Mae'r ffurflen hon yn caniatáu ichi gofnodi'ch tanysgrifiad fel aelod newydd o'r sefydliad. Os ydych am adnewyddu eich tanysgrifiad (os ydych eisoes yn aelod), cysylltwch â'r bwrdd sylfaen yn lle hynny trwy e-bost %s. Subscription=Cyfraniad +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Cyfraniadau SubscriptionLate=Hwyr SubscriptionNotReceived=Ni dderbyniwyd cyfraniad erioed @@ -135,7 +142,7 @@ CardContent=Cynnwys eich cerdyn aelod # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Rydym am roi gwybod ichi fod eich cais am aelodaeth wedi’i dderbyn.

ThisIsContentOfYourMembershipWasValidated=Rydym am roi gwybod ichi fod eich aelodaeth wedi'i dilysu gyda'r wybodaeth ganlynol:

-ThisIsContentOfYourSubscriptionWasRecorded=Rydym am roi gwybod ichi fod eich tanysgrifiad newydd wedi'i recordio.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Rydym am roi gwybod i chi fod eich tanysgrifiad ar fin dod i ben neu wedi dod i ben yn barod (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Gobeithiwn y byddwch yn ei adnewyddu.

ThisIsContentOfYourCard=Dyma grynodeb o'r wybodaeth sydd gennym amdanoch chi. Cysylltwch â ni os oes unrhyw beth yn anghywir.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Testun yr e-bost hysbysu a dderbyniwyd rhag ofn y bydd gwestai yn arysgrif yn awtomatig @@ -198,7 +205,8 @@ NbOfSubscriptions=Nifer y cyfraniadau AmountOfSubscriptions=Swm a gasglwyd o gyfraniadau TurnoverOrBudget=Trosiant (ar gyfer cwmni) neu Gyllideb (ar gyfer sylfaen) DefaultAmount=Swm y cyfraniad rhagosodedig -CanEditAmount=Gall yr ymwelydd ddewis/golygu swm ei gyfraniad +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Neidiwch ar dudalen talu ar-lein integredig ByProperties=Wrth natur MembersStatisticsByProperties=Ystadegau aelodau yn ôl natur @@ -218,3 +226,5 @@ XExternalUserCreated=%s defnyddiwr(wyr) allanol wedi'u creu ForceMemberNature=Natur aelod o'r heddlu (Unigol neu Gorfforaeth) CreateDolibarrLoginDesc=Mae creu mewngofnodi defnyddiwr ar gyfer aelodau yn caniatáu iddynt gysylltu â'r rhaglen. Yn dibynnu ar yr awdurdodiadau a roddir, byddant yn gallu, er enghraifft, ymgynghori neu addasu eu ffeil eu hunain. CreateDolibarrThirdPartyDesc=Trydydd parti yw’r endid cyfreithiol a ddefnyddir ar yr anfoneb os penderfynwch gynhyrchu anfoneb ar gyfer pob cyfraniad. Byddwch yn gallu ei greu yn ddiweddarach yn ystod y broses o gofnodi'r cyfraniad. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/cy_GB/oauth.lang b/htdocs/langs/cy_GB/oauth.lang index 710d863daf1..361b2de6c37 100644 --- a/htdocs/langs/cy_GB/oauth.lang +++ b/htdocs/langs/cy_GB/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Cynhyrchwyd tocyn a'i gadw mewn cronfa ddata leol NewTokenStored=Tocyn wedi'i dderbyn a'i gadw ToCheckDeleteTokenOnProvider=Cliciwch yma i wirio/dileu awdurdodiad sydd wedi'i gadw gan ddarparwr %s OAuth TokenDeleted=Tocyn wedi'i ddileu -RequestAccess=Cliciwch yma i ofyn am / adnewyddu mynediad a derbyn tocyn newydd i'w arbed -DeleteAccess=Cliciwch yma i ddileu tocyn +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Defnyddiwch yr URL canlynol fel yr URI Ailgyfeirio wrth greu eich manylion adnabod gyda'ch darparwr OAuth: -ListOfSupportedOauthProviders=Rhowch y manylion adnabod a ddarparwyd gan eich darparwr OAuth2. Dim ond darparwyr OAuth2 a gefnogir sydd wedi'u rhestru yma. Gall y gwasanaethau hyn gael eu defnyddio gan fodiwlau eraill sydd angen eu dilysu OAuth2. -OAuthSetupForLogin=Tudalen i gynhyrchu tocyn OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Gweler y tab blaenorol +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID a Chyfrinach TOKEN_REFRESH=Token Refresh Presennol TOKEN_EXPIRED=Tocyn wedi dod i ben @@ -23,10 +24,13 @@ TOKEN_DELETE=Dileu tocyn sydd wedi'i gadw OAUTH_GOOGLE_NAME=OAuth gwasanaeth Google OAUTH_GOOGLE_ID=ID Google OAuth OAUTH_GOOGLE_SECRET=OAuth Cyfrinach Google -OAUTH_GOOGLE_DESC=Ewch i y dudalen hon yna "Credentials" i greu tystlythyrau OAuth OAUTH_GITHUB_NAME=Gwasanaeth OAuth GitHub OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=Cyfrinach OAuth GitHub -OAUTH_GITHUB_DESC=Ewch i y dudalen hon yna "Cofrestru cais newydd" i greu manylion OAuth +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=Prawf Stripe OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe yn Fyw +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/cy_GB/projects.lang b/htdocs/langs/cy_GB/projects.lang index 5988835ab94..bb35d3425f3 100644 --- a/htdocs/langs/cy_GB/projects.lang +++ b/htdocs/langs/cy_GB/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Amser a dreuliwyd wedi'i bilio TimeSpentForIntervention=Amser a dreulir TimeSpentForInvoice=Amser a dreulir OneLinePerUser=Un llinell i bob defnyddiwr -ServiceToUseOnLines=Gwasanaeth i'w ddefnyddio ar linellau +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Mae anfoneb %s wedi'i chynhyrchu o'r amser a dreuliwyd ar y prosiect InterventionGeneratedFromTimeSpent=Mae ymyrraeth %s wedi'i gynhyrchu o'r amser a dreuliwyd ar y prosiect ProjectBillTimeDescription=Gwiriwch a ydych chi'n nodi taflen amser ar dasgau'r prosiect A'ch bod yn bwriadu cynhyrchu anfoneb(au) o'r daflen amser i filio cwsmer y prosiect (peidiwch â gwirio a ydych yn bwriadu creu anfoneb nad yw'n seiliedig ar daflenni amser a gofnodwyd). Nodyn: I gynhyrchu anfoneb, ewch ar y tab 'Amser a dreuliwyd' o'r prosiect a dewiswch linellau i'w cynnwys. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/da_DK/accountancy.lang b/htdocs/langs/da_DK/accountancy.lang index ece1941f065..b014a283cdf 100644 --- a/htdocs/langs/da_DK/accountancy.lang +++ b/htdocs/langs/da_DK/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Deaktiver direkte registrering af transaktionen på ba ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Aktivér udkast til eksport på Journal ACCOUNTANCY_COMBO_FOR_AUX=Aktivér kombinationsliste for datterselskabskonto (kan være langsom, hvis du har mange tredjeparter, bryder evnen til at søge på en del af værdien) ACCOUNTING_DATE_START_BINDING=Definer en dato for start af binding og overførsel i regnskab. Under denne dato overføres transaktionerne ikke til regnskab. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Ved regnskabsoverførsel skal du vælge periode som standard +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Ved regnskabsoverførsel, hvilken periode er valgt som standard ACCOUNTING_SELL_JOURNAL=Salgskladde ACCOUNTING_PURCHASE_JOURNAL=Indkøbskladde @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Regnskabskonto til registrering af donationer ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Regnskabskonto for at registrere abonnementer ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Regnskabskonto er som standard for at registrere kundeindbetaling -UseAuxiliaryAccountOnCustomerDeposit=Brug underkonti på kundeindskudslinjer +UseAuxiliaryAccountOnCustomerDeposit=Gem kundekonto som individuel konto i hovedbog for linjer med forudbetalinger (hvis den er deaktiveret, forbliver individuel konto for forudbetalingslinjer tomme) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Regnskabskonto som standard for de købte produkter (bruges hvis ikke defineret i produktarket) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Regnskabskonto som standard for de købte produkter i EØF (brugt, hvis ikke defineret i produktarket) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Hvis du opsætter regnskabskonto på typen af ​​ DescVentilDoneExpenseReport=Her vises listen over linjerne for udgiftsrapporter og deres gebyrkonto Closure=Årlig lukning -DescClosure=Se her antallet af bevægelser pr. måned, som endnu ikke er valideret og låst +DescClosure=Se her antallet af bevægelser pr. måned, der endnu ikke er valideret og låst OverviewOfMovementsNotValidated=Oversigt over bevægelser, der ikke er valideret og låst AllMovementsWereRecordedAsValidated=Alle bevægelser blev registreret som validerede og låste NotAllMovementsCouldBeRecordedAsValidated=Ikke alle bevægelser kunne registreres som validerede og låste @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Bekl AccountancyErrorMismatchLetterCode=Uoverensstemmelse i afstemningskode AccountancyErrorMismatchBalanceAmount=Saldoen (%s) er ikke lig med 0 AccountancyErrorLetteringBookkeeping=Der er opstået fejl vedrørende transaktionerne: %s +ErrorAccountNumberAlreadyExists=Kontonummeret %s findes allerede ## Import ImportAccountingEntries=Regnskabsposter diff --git a/htdocs/langs/da_DK/admin.lang b/htdocs/langs/da_DK/admin.lang index 12e2cc42a07..f475511a6ff 100644 --- a/htdocs/langs/da_DK/admin.lang +++ b/htdocs/langs/da_DK/admin.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - admin BoldRefAndPeriodOnPDF=Udskriv reference og periode for vare i PDF BoldLabelOnPDF=Udskriv vare etiket med fed skrift i PDF -Foundation=Fundament +Foundation=Grundlag Version=Version -Publisher=Forlægger +Publisher=Udgiver VersionProgram=Program version VersionLastInstall=Første installerede version VersionLastUpgrade=Seneste opgraderede version @@ -49,7 +49,7 @@ HostCharset=Værts tegnsæt ClientCharset=Klient tegnsæt ClientSortingCharset=Klient sortering WarningModuleNotActive=Modul %s skal være aktiveret -WarningOnlyPermissionOfActivatedModules=Kun tilladelser relateret til aktiverede moduler vises her. Du kan aktivere andre moduler på siden Hjem - Opsætning - Moduler/Applikationer. +WarningOnlyPermissionOfActivatedModules=Kun rettigheder relateret til aktiverede moduler vises her. Du kan aktivere andre moduler på siden Hjem->Opsætning->Moduler/Applikationer. DolibarrSetup=Dolibarr installer eller opgrader InternalUser=Intern bruger ExternalUser=Ekstern bruger @@ -78,8 +78,8 @@ ErrorReservedTypeSystemSystemAuto=Værdien 'system' og 'systemauto' for type er ErrorCodeCantContainZero=Koden må ikke indeholde værdien 0 DisableJavascript=Deaktiver JavaScript og Ajax funktioner DisableJavascriptNote=Bemærk: Kun til test- eller fejlretningsformål. For optimering for blinde eller tekstbrowsere foretrækker du måske at bruge opsætningen på brugerprofilen -UseSearchToSelectCompanyTooltip=Også hvis du har et stort antal tredjeparter (> 100.000), kan du øge hastigheden ved at sætte konstant COMPANY_DONOTSEARCH_ANYWHERE til 1 i Hjem - Opsætning - Øvrig opsætning. Søgning vil derefter være begrænset til starten af strengen. -UseSearchToSelectContactTooltip=Også hvis du har et stort antal tredjeparter (> 100.000), kan du øge hastigheden ved at sætte konstant CONTACT_DONOTSEARCH_ANYWHERE til 1 i Hjem - Opsætning - Øvrig opsætning. Søgning vil derefter være begrænset til starten af strengen. +UseSearchToSelectCompanyTooltip=Også hvis du har et stort antal tredjeparter (> 100.000), kan du øge hastigheden ved at sætte konstant COMPANY_DONOTSEARCH_ANYWHERE til 1 i Hjem->Opsætning->Øvrig opsætning. Søgning vil derefter være begrænset til starten af strengen. +UseSearchToSelectContactTooltip=Også hvis du har et stort antal tredjeparter (> 100.000), kan du øge hastigheden ved at sætte konstant CONTACT_DONOTSEARCH_ANYWHERE til 1 i Hjem->Opsætning->Øvrig opsætning. Søgning vil derefter være begrænset til starten af strengen. DelaiedFullListToSelectCompany=Vent, indtil der trykkes på en tast, før du indlæser indholdet af kombinationslisten for tredjeparter.
Dette kan øge ydeevnen, hvis du har et stort antal tredjeparter, men det er mindre bekvemt. DelaiedFullListToSelectContact=Vent, indtil der trykkes på en tast, før du indlæser indholdet af kombinationslisten for kontakter.
Dette kan øge ydeevnen, hvis du har et stort antal kontakter, men det er mindre bekvemt. NumberOfKeyToSearch=Antal tegn, der skal udløse søgning: %s @@ -109,9 +109,9 @@ NextValueForReplacements=Næste værdi (udskiftninger) MustBeLowerThanPHPLimit=Bemærk: din PHP-konfiguration begrænser i øjeblikket den maksimale filstørrelse for upload til %s %s, uanset værdien af denne parameter NoMaxSizeByPHPLimit=Bemærk: Der er ikke sat nogen grænse i din PHP-konfiguration MaxSizeForUploadedFiles=Maksimal størrelse for uploadede filer (0 for at forhindre enhver upload) -UseCaptchaCode=Brug grafisk kode (CAPTCHA) på login-siden +UseCaptchaCode=Brug grafisk kode (CAPTCHA) på login-siden og nogle offentlige sider AntiVirusCommand=Fuld sti til antivirus kommando -AntiVirusCommandExample=Eksempel på ClamAv Daemon (kræver clamav-daemon): /usr/bin/clamdscan
Eksempel på ClamWin (meget meget langsom): C:\\Program Files (x86)\\\\ClamWin\\bin\\clamscan.exe +AntiVirusCommandExample=Eksempel på ClamAv Daemon (kræver clamav-daemon): /usr/bin/clamdscan
Eksempel på ClamWin (meget meget langsom): C:\\Program Files (x86)\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Flere parametre på kommandolinjen AntiVirusParamExample=Eksempel på ClamAv Daemon: --fdpass
Example for ClamWin: --database = "C: \\ Program Files (x86) \\ ClamWin \\ lib" ComptaSetup=Opsætning af regnskabsmodul @@ -244,7 +244,7 @@ ActivatableOn=Aktiverbar til SourceFile=Kildefil AvailableOnlyIfJavascriptAndAjaxNotDisabled=Kun tilgængelig, hvis JavaScript ikke er deaktiveret Required=Påkrævet -UsedOnlyWithTypeOption=Bruges kun af en eller anden dagsorden mulighed +UsedOnlyWithTypeOption=Bruges kun af nogle dagsorden muligheder Security=Sikkerhed Passwords=Adgangskoder DoNotStoreClearPassword=Krypter adgangskoder gemt i databasen (IKKE som almindelig tekst). Det anbefales kraftigt at aktivere denne mulighed. @@ -504,7 +504,7 @@ WarningPHPMailC=- Det er også interessant at bruge SMTP-serveren fra din egen e WarningPHPMailD=Det anbefales derfor også at ændre afsendelsesmetoden for e-mails til værdien "SMTP". Hvis du virkelig vil beholde standardmetoden "PHP" til at sende e-mails, skal du bare ignorere denne advarsel eller fjerne den ved at indstille MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP konstanten til 1 i Hjem - Opsætning - Øvrig opsætning. WarningPHPMail2=Hvis din e-mail SMTP-udbyder har brug for at begrænse e-mail klienten til nogle IP-adresser (meget sjældent), er dette IP-adressen på mailbrugeragenten (MUA) til din ERP CRM-applikation: %s. WarningPHPMailSPF=Hvis domænenavnet i din afsender e-mail adresse er beskyttet af en SPF-record (spørg din domænenavnsregistrator), skal du tilføje følgende IP-adresser i SPF-recorden for dit domænes DNS: %s. -ActualMailSPFRecordFound=Aktiv SPF-post fundet: %s +ActualMailSPFRecordFound=Faktisk SPF-post fundet (for e-mail %s): %s ClickToShowDescription=Klik for at vise beskrivelse DependsOn=Dette modul har brug for modulet/modulerne RequiredBy=Dette modul er påkrævet af modul(erne) @@ -591,7 +591,7 @@ Module80Desc=Forsendelser og følgeseddel styring Module85Name=Banker og kontanter Module85Desc=Styring af bank- eller kassekonti Module100Name=Eksternt websted -Module100Desc=Tilføj et link til et eksternt websted som et hovedmenu ikon. Hjemmesiden vises i en ramme under topmenuen. +Module100Desc=Tilføj et link til et eksternt websted som et hovedmenuikon. Webstedet vises i en ramme under topmenuen. Module105Name=Mailman og SPIP Module105Desc=Mailman eller SPIP interface til medlemsmodul Module200Name=LDAP @@ -666,10 +666,10 @@ Module5000Name=Multi-virksomhed Module5000Desc=Giver dig mulighed for at administrere flere virksomheder Module6000Name=Workflow mellem moduler Module6000Desc=Workflow styring mellem forskellige moduler (automatisk oprettelse af objekt og/eller automatisk statusændring) -Module10000Name=Hjemmesider -Module10000Desc=Opret websteder (offentlige) med en WYSIWYG-editor. Dette er en webmaster eller udviklerorienteret CMS (det er bedre at kende HTML og CSS sprog). Bare opsæt din webserver (Apache, Nginx, ...) for at pege på det dedikerede Dolibarr-bibliotek for at have det online på internettet med dit eget domænenavn. -Module20000Name=Orlovs styring -Module20000Desc=Opret og spor medarbejdernes orlovsanmodninger +Module10000Name=Websteder +Module10000Desc=Opret websteder (offentlige) med en WYSIWYG-editor. Dette er et webmaster- eller udviklerorienteret CMS (det er bedre at kende HTML- og CSS-sprog). Du skal bare opsætte din webserver (Apache, Nginx, ...) til at pege på den dedikerede Dolibarr-mappe for at have den online på internettet med dit eget domænenavn. +Module20000Name=Fraværsregistrering +Module20000Desc=Opret og spor medarbejdernes fraværsanmodninger Module39000Name=Varepartier Module39000Desc=Partier, serienumre, håndtering af Bedst før/Sidste anvendelsesdato for varer Module40000Name=Multivaluta @@ -1068,7 +1068,7 @@ DictionaryMeasuringUnits=Måleenheder DictionarySocialNetworks=Sociale netværk DictionaryProspectStatus=Mulighedsstatus for virksomheder DictionaryProspectContactStatus=Mulighedsstatus for kontakter -DictionaryHolidayTypes=Orlov - Typer af orlov +DictionaryHolidayTypes=Fravær - Typer af fravær DictionaryOpportunityStatus=Mulighedsstatus for projekt/mulighed DictionaryExpenseTaxCat=Udgiftsrapport - Transportkategorier DictionaryExpenseTaxRange=Udgiftsrapport - Interval efter transportkategori @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Værdien af en konfigurationskonstant ConstantIsOn=Mulighed %s er aktiveret NbOfDays=Antal dage AtEndOfMonth=Ved udgangen af måneden -CurrentNext=Nuværende/Næste +CurrentNext=En given dag i måneden Offset=Offset AlwaysActive=Altid aktiv Upgrade=Opgrader @@ -1160,8 +1160,8 @@ SummaryConst=Liste over alle Dolibarr opsætningsparametre MenuCompanySetup=Virksomhed/Organisation DefaultMenuManager= Standard menu styrer DefaultMenuSmartphoneManager=Smartphone menu styrer -Skin=Overflade tema -DefaultSkin=Standard overflade tema +Skin=Skin tema +DefaultSkin=Standard skin tema MaxSizeList=Maksimal længde for liste DefaultMaxSizeList=Standard maks. længde for lister DefaultMaxSizeShortList=Standard maksimal længde for korte lister (dvs. i kundekort) @@ -1234,7 +1234,7 @@ InfoSecurity=Om Sikkerhed BrowserName=Browsernavn BrowserOS=Browser OS ListOfSecurityEvents=Liste over Dolibarr sikkerhedshændelser -SecurityEventsPurged=Sikkerhedshændelser renset +SecurityEventsPurged=Sikkerhedshændelser ryddet LogEventDesc=Aktiver logning for specifikke sikkerhedshændelser. Administratorer loggen via menuen %s - %s . Advarsel, denne funktion kan generere en stor mængde data i databasen. AreaForAdminOnly=Opsætningsparametre kan kun indstilles af administratorbrugere. SystemInfoDesc=Systemoplysninger er diverse tekniske oplysninger, du får i skrivebeskyttet tilstand og kun synlige for administratorer. @@ -1288,7 +1288,7 @@ WeekStartOnDay=Ugens første dag RunningUpdateProcessMayBeRequired=Det ser ud til at være nødvendigt at køre opgraderingsprocessen (programversion %s adskiller sig fra databaseversion %s) YouMustRunCommandFromCommandLineAfterLoginToUser=Du skal køre denne kommando fra kommandolinjen efter login til en shell med brugeren %s, eller du skal tilføje -W-indstillingen i slutningen af kommandolinjen for at give %s adgangskodeen YourPHPDoesNotHaveSSLSupport=SSL funktioner er ikke tilgængelige i din PHP -DownloadMoreSkins=Flere overflader at downloade +DownloadMoreSkins=Flere skins at downloade SimpleNumRefModelDesc=Returnerer referencenummeret i formatet %syymm-nnnn hvor yy er året, mm er måneden og nnnn er et sekventielt auto-inkrementerende tal uden nulstilling SimpleNumRefNoDateModelDesc=Returnerer referencenummeret i formatet %s-nnnn hvor nnnn er et sekventielt auto-inkrementerende tal uden nulstilling ShowProfIdInAddress=Vis professionelt ID ved adresser @@ -1548,22 +1548,22 @@ LDAPTestSearch= Test LDAP søgning LDAPSynchroOK=Synkroniseringstest gennemført LDAPSynchroKO=Mislykket synkroniseringstest LDAPSynchroKOMayBePermissions=Mislykket synkroniseringstest. Kontroller, at forbindelsen til serveren er korrekt konfigureret og tillader LDAP opdateringer -LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=TCP forbindelse til LDAP-serveren vellykket (Server= %s, Port= %s) -LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=TCP forbindelse til LDAP-serveren mislykkedes (Server= %s, Port= %s) -LDAPBindOK=Forbind / godkend til LDAP-server succesfuldt (Server = %s, Port = %s, Admin = %s, Password = %s) -LDAPBindKO=Forbind / godkend til LDAP-server mislykkedes (Server = %s, Port = %s, Admin = %s, Password = %s) -LDAPSetupForVersion3=LDAP-server er konfigureret til version 3 -LDAPSetupForVersion2=LDAP-server er konfigureret til version 2 +LDAPTCPConnectOK=TCP forbindelse til LDAP server lykkedes (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP forbindelse til LDAP server mislykkedes (Server=%s, Port=%s) +LDAPBindOK=Forbinde/godkendelse til LDAP server lykkedes (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Forbindelse/godkendelse til LDAP server mislykkedes (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPSetupForVersion3=LDAP server konfigureret til version 3 +LDAPSetupForVersion2=LDAP server konfigureret til version 2 LDAPDolibarrMapping=Dolibarr Mapping LDAPLdapMapping=LDAP Mapping -LDAPFieldLoginUnix=Login (Unix) +LDAPFieldLoginUnix=Login (unix) LDAPFieldLoginExample=Eksempel: uid LDAPFilterConnection=Søgefilter -LDAPFilterConnectionExample=Eksempel: & (objectClass = inetOrgPerson) -LDAPGroupFilterExample=Eksempel: & (objectClass = groupOfUsers) +LDAPFilterConnectionExample=Eksempel: &(objectClass=inetOrgPerson) +LDAPGroupFilterExample=Eksempel: &(objectClass=groupOfUsers) LDAPFieldLoginSamba=Login (samba, activedirectory) -LDAPFieldLoginSambaExample=Eksempel: Samaccountnavn -LDAPFieldFullname=Fornavn Navn +LDAPFieldLoginSambaExample=Eksempel: samaccountname +LDAPFieldFullname=Fulde navn LDAPFieldFullnameExample=Eksempel: cn LDAPFieldPasswordNotCrypted=Adgangskode er ikke krypteret LDAPFieldPasswordCrypted=Adgangskode er krypteret @@ -1573,17 +1573,17 @@ LDAPFieldName=Navn LDAPFieldNameExample=Eksempel: sn LDAPFieldFirstName=Fornavn LDAPFieldFirstNameExample=Eksempel: givenName -LDAPFieldMail=E-mail-adresse +LDAPFieldMail=E-mail adresse LDAPFieldMailExample=Eksempel: mail -LDAPFieldPhone=Professional telefonnummer +LDAPFieldPhone=Firma telefonnummer LDAPFieldPhoneExample=Eksempel: telefonnummer -LDAPFieldHomePhone=Personlige telefonnummer -LDAPFieldHomePhoneExample=Eksempel: Homephone +LDAPFieldHomePhone=Privat telefonnummer +LDAPFieldHomePhoneExample=Eksempel: hjemmetelefon LDAPFieldMobile=Mobiltelefon LDAPFieldMobileExample=Eksempel: mobil -LDAPFieldFax=Faxnummer -LDAPFieldFaxExample=Eksempel: telefaxnummer -LDAPFieldAddress=Street +LDAPFieldFax=Fax nummer +LDAPFieldFaxExample=Eksempel: faxnummer +LDAPFieldAddress=Gade LDAPFieldAddressExample=Eksempel: gade LDAPFieldZip=Postnummer LDAPFieldZipExample=Eksempel: postnummer @@ -1594,631 +1594,635 @@ LDAPFieldDescription=Beskrivelse LDAPFieldDescriptionExample=Eksempel: beskrivelse LDAPFieldNotePublic=Offentlig note LDAPFieldNotePublicExample=Eksempel: publicnote -LDAPFieldGroupMembers= Gruppens medlemmer +LDAPFieldGroupMembers= Gruppemedlemmer LDAPFieldGroupMembersExample= Eksempel: uniqueMember LDAPFieldBirthdate=Fødselsdato LDAPFieldCompany=Firma LDAPFieldCompanyExample=Eksempel: o LDAPFieldSid=SID -LDAPFieldSidExample=Eksempel: objektside -LDAPFieldEndLastSubscription=Dato for tilmelding udgangen +LDAPFieldSidExample=Eksempel: objectsid +LDAPFieldEndLastSubscription=Dato for ophør af abonnement LDAPFieldTitle=Stilling LDAPFieldTitleExample=Eksempel: titel LDAPFieldGroupid=Gruppe id -LDAPFieldGroupidExample=Eksempel: gid nummer +LDAPFieldGroupidExample=Eksempel: gidnumber LDAPFieldUserid=Bruger ID LDAPFieldUseridExample=Eksempel: uidnumber -LDAPFieldHomedirectory=Hjem bibliotek -LDAPFieldHomedirectoryExample=Eksempel: hjemmeledelse -LDAPFieldHomedirectoryprefix=Hjemmekatalog præfiks -LDAPSetupNotComplete=LDAP-opsætning ikke komplet (gå på andre faner) -LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Ingen administrator eller adgangskode angivet. LDAP-adgang vil være anonym og kun med læsning. -LDAPDescContact=Denne side giver dig mulighed for at definere LDAP attributter navn i LDAP træ for hver data findes på Dolibarr kontakter. -LDAPDescUsers=Denne side giver dig mulighed for at definere LDAP attributter navn i LDAP træ for hver data findes på Dolibarr brugere. -LDAPDescGroups=Denne side giver dig mulighed for at definere LDAP attributter navn i LDAP træ for hver data findes på Dolibarr grupper. -LDAPDescMembers=Denne side giver dig mulighed for at definere LDAP attributter navn i LDAP træ for hver data findes på Dolibarr medlemmer modul. -LDAPDescMembersTypes=Denne side giver dig mulighed for at definere LDAP attributter navn i LDAP-træet for hver data, der findes på Dolibarr medlemmer typer. -LDAPDescValues=Eksempel værdier er konstrueret til OpenLDAP med følgende lastes skemaer: core.schema, cosine.schema, inetorgperson.schema). Hvis du bruger thoose værdier og OpenLDAP, ændre din LDAP konfigurationsfil slapd.conf at få alle thoose skemaer indlæses. -ForANonAnonymousAccess=For en autentificeret adgang (for en skriveadgangen for eksempel) -PerfDolibarr=Prestationsopsætning / optimeringsrapport -YouMayFindPerfAdviceHere=Denne side giver nogle checks eller råd vedrørende performance. +LDAPFieldHomedirectory=Hjemmemappe +LDAPFieldHomedirectoryExample=Eksempel: homedirectory +LDAPFieldHomedirectoryprefix=Hjemmemappe præfiks +LDAPSetupNotComplete=LDAP opsætning ikke fuldført (gå til andre faner) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Ingen administrator eller adgangskode angivet. LDAP adgang vil være anonym og i skrivebeskyttet tilstand. +LDAPDescContact=Denne side giver dig mulighed for at definere LDAP attributternes navn i LDAP træet for hver data, der findes på Dolibarr kontakter. +LDAPDescUsers=Denne side giver dig mulighed for at definere LDAP attributnavnet i LDAP træet for hver data, der findes på Dolibarr brugere. +LDAPDescGroups=Denne side giver dig mulighed for at definere LDAP attributnavnet i LDAP træet for hver data, der findes på Dolibarr grupper. +LDAPDescMembers=Denne side giver dig mulighed for at definere LDAP attributnavnet i LDAP træet for hver data, der findes på Dolibarr medlemsmodul. +LDAPDescMembersTypes=Denne side giver dig mulighed for at definere LDAP attributnavnet i LDAP træet for hver data, der findes på Dolibarr medlemstyper. +LDAPDescValues=Eksempelværdier er designet til OpenLDAP med følgende indlæste skemaer: core.schema, cosine.schema, inetorgperson.schema). Hvis du bruger disse værdier og OpenLDAP, skal du ændre din LDAP konfigurationsfil slapd.conf for at få alle disse skemaer indlæst. +ForANonAnonymousAccess=For en godkendt adgang (for en skriveadgang for eksempel) +PerfDolibarr=Ydeevne opsætning/optimeringsrapport +YouMayFindPerfAdviceHere=Denne side giver nogle kontroller eller råd relateret til ydeevne. NotInstalled=Ikke installeret. -NotSlowedDownByThis=Ikke bremset af dette. -NotRiskOfLeakWithThis=Ikke risiko for lækage med dette. +NotSlowedDownByThis=Ikke forsinket af dette. +NotRiskOfLeakWithThis=Ikke risiko for læk med dette. ApplicativeCache=Applikationsbuffer -MemcachedNotAvailable=Ingen applikationsbuffer fundet. Du kan forbedre ydeevnen ved at installere en cache-server Memcached og et modul, der kan bruge denne cache-server.
Mere information her http: //wiki.dolibarr.org/index.php/Module_MemCached_EN .
Bemærk, at en masse web hosting udbyder ikke giver sådan cache server. -MemcachedModuleAvailableButNotSetup=Modul memcached for applikationscache fundet, men opsætning af modul er ikke komplet. -MemcachedAvailableAndSetup=Modul memcached dedikeret til brug memcached server er aktiveret. -OPCodeCache=OPCode cache -NoOPCodeCacheFound=Ingen OPCode cache fundet. Måske bruger du en OPCode cache andet end XCache eller eAccelerator (god), eller måske har du ikke OPCode cache (meget dårlig). -HTTPCacheStaticResources=HTTP-cache for statiske ressourcer (css, img, javascript) -FilesOfTypeCached=Filer af typen %s caches af HTTP-serveren -FilesOfTypeNotCached=Filer af typen %s caches ikke af HTTP-serveren -FilesOfTypeCompressed=Filer af typen %s komprimeres af HTTP-serveren -FilesOfTypeNotCompressed=Filer af typen %s komprimeres ikke af HTTP-serveren -CacheByServer=Cache af server -CacheByServerDesc=For eksempel ved hjælp af Apache-direktivet "ExpiresByType image / gif A2592000" -CacheByClient=Cache via browser -CompressionOfResources=Kompression af HTTP-reaktioner -CompressionOfResourcesDesc=For eksempel ved hjælp af Apache-direktivet "AddOutputFilterByType DEFLATE" -TestNotPossibleWithCurrentBrowsers=En sådan automatisk detektering er ikke mulig med de aktuelle browsere -DefaultValuesDesc=Her kan du definere den standardværdi, du vil bruge, når du opretter en ny post, og / eller standardfiltre eller sorteringsrækkefølgen, når du registrerer optegnelser. +MemcachedNotAvailable=Ingen applikationsbuffer fundet. Du kan forbedre ydeevnen ved at installere en cache server Memcached og et modul, der kan bruge denne cacheserver.
Mere information her http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Bemærk, at mange webhostingudbydere ikke leverer en sådan cache server. +MemcachedModuleAvailableButNotSetup=Modul memcached for applikationsbuffer fundet, men opsætningen af modulet er ikke færdig. +MemcachedAvailableAndSetup=Modul memcached dedikeret til at bruge memcached server er aktiveret. +OPCodeCache=OPCode buffer +NoOPCodeCacheFound=Ingen OPCode buffer fundet. Måske bruger du en anden OPCode buffer end XCache eller eAccelerator (god), eller måske har du ikke OPCode buffer (meget dårlig). +HTTPCacheStaticResources=HTTP buffer til statiske ressourcer (css, img, javascript) +FilesOfTypeCached=Filer af typen %s buffer gemmes af HTTP serveren +FilesOfTypeNotCached=Filer af typen %s buffer gemmes ikke af HTTP serveren +FilesOfTypeCompressed=Filer af typen %s komprimeres af HTTP serveren +FilesOfTypeNotCompressed=Filer af typen %s komprimeres ikke af HTTP serveren +CacheByServer=Buffer af server +CacheByServerDesc=For eksempel ved at bruge Apache direktivet "ExpiresByType image/gif A2592000" +CacheByClient=Buffer via browser +CompressionOfResources=Komprimering af HTTP svar +CompressionOfResourcesDesc=For eksempel ved at bruge Apache direktivet "AddOutputFilterByType DEFLATE" +TestNotPossibleWithCurrentBrowsers=En sådan automatisk registrering er ikke mulig med nuværende browsere +DefaultValuesDesc=Her kan du definere den standardværdi, du ønsker at bruge, når du opretter en ny post, og/eller standardfiltre eller sorteringsrækkefølgen, når du angiver poster. DefaultCreateForm=Standardværdier (til brug på formularer) DefaultSearchFilters=Standard søgefiltre -DefaultSortOrder=Standard sorteringsordrer -DefaultFocus=Standardfokusfelter -DefaultMandatory=Obligatoriske formularer +DefaultSortOrder=Standard sorteringsrækkefølger +DefaultFocus=Standard fokusfelter +DefaultMandatory=Obligatoriske formularfelter ##### Products ##### ProductSetup=Opsætning af varemodul -ServiceSetup=Installation af servicemoduler -ProductServiceSetup=Opsætning af Varer/ydelser-modul -NumberOfProductShowInSelect=Maksimalt antal produkter, der skal vises i kombinationsvalglister (0 = ingen grænse) -ViewProductDescInFormAbility=Vis produktbeskrivelser i varelinjer (ellers vis beskrivelse i en værktøjstip -popup) -OnProductSelectAddProductDesc=Sådan bruges beskrivelsen af produkterne, når du tilføjer et produkt som en linje i et dokument -AutoFillFormFieldBeforeSubmit=Udfyld automatisk indtastningsfeltet med beskrivelsen af produktet -DoNotAutofillButAutoConcat=Udfyld ikke indtastningsfeltet automatisk med produktbeskrivelse. Produktbeskrivelsen sammenkædes automatisk med den indtastede beskrivelse. -DoNotUseDescriptionOfProdut=Produktbeskrivelse vil aldrig blive inkluderet i beskrivelsen af dokumentlinjer -MergePropalProductCard=Aktivér i produkt / tjeneste Vedhæftede filer fanen en mulighed for at fusionere produkt PDF-dokument til forslag PDF azur hvis produkt / tjeneste er i forslaget -ViewProductDescInThirdpartyLanguageAbility=Vis produktbeskrivelser i formularer på tredjeparts sprog (ellers på brugerens sprog) -UseSearchToSelectProductTooltip=Også hvis du har et stort antal produkter (> 100 000), kan du øge hastigheden ved at indstille konstant PRODUCT_DONOTSEARCH_ANYWHERE til 1 i Setup - Other. Søgningen er så begrænset til starten af ​​strengen. -UseSearchToSelectProduct=Vent, indtil du trykker på en tast, inden du læser indholdet af produktkombinationslisten (dette kan øge ydeevnen, hvis du har et stort antal produkter, men det er mindre praktisk) -SetDefaultBarcodeTypeProducts=Standard stregkodetype, der skal bruges til varer -SetDefaultBarcodeTypeThirdParties=Default stregkode type bruge til tredjemand -UseUnits=Definer en måleenhed for mængde under bestilling, forslag eller faktura linjer udgave -ProductCodeChecker= Modul til generering af varekode og kontrol (vare eller ydelse) -ProductOtherConf= Vare/ydelse-konfiguration +ServiceSetup=Opsætning af ydelsesmodul +ProductServiceSetup=Opsætning af produkt- og ydelsesmoduler +NumberOfProductShowInSelect=Maksimalt antal varer, der skal vises i kombinationslister (0=ingen grænse) +ViewProductDescInFormAbility=Vis varebeskrivelser i linjer med varer (ellers vis beskrivelse i et popup vindue med værktøjstip) +OnProductSelectAddProductDesc=Sådan bruger du beskrivelsen af produkterne, når du tilføjer et produkt som en linje i et dokument +AutoFillFormFieldBeforeSubmit=Udfyld automatisk beskrivelsesindtastningsfeltet med beskrivelsen af varen +DoNotAutofillButAutoConcat=Udfyld ikke indtastningsfeltet med en beskrivelse af varen. Beskrivelse af varen vil automatisk blive sammenkædet med den indtastede beskrivelse. +DoNotUseDescriptionOfProdut=Beskrivelse af varen vil aldrig indgå i beskrivelsen af linjer i dokumenter +MergePropalProductCard=Aktiver i fanen Varer/ydelser Vedhæftede filer en mulighed for at flette vare PDF dokument til forslag PDF azur, hvis varer/ydelse er i forslaget +ViewProductDescInThirdpartyLanguageAbility=Vis produktbeskrivelser i formularer på tredjepartens sprog (ellers på brugerens sprog) +UseSearchToSelectProductTooltip=Også hvis du har et stort antal produkter (> 100.000), kan du øge hastigheden ved at sætte konstanten PRODUCT_DONOTSEARCH_ANYWHERE til 1 i Hjem - Opsætning - Anden opsætning. Søgning vil derefter være begrænset til starten af strengen. +UseSearchToSelectProduct=Vent, indtil du trykker på en tast, før du indlæser indholdet af vare kombinationslisten (dette kan øge ydeevnen, hvis du har et stort antal produkter, men det er mindre bekvemt) +SetDefaultBarcodeTypeProducts=Standard stregkodetype til brug for varer +SetDefaultBarcodeTypeThirdParties=Standard stregkodetype til brug for tredjeparter +UseUnits=Definer en måleenhed for mængde under ordre-, tilbuds- eller fakturalinjer +ProductCodeChecker= Modul til generering og kontrol af varekode (vare eller ydelse) +ProductOtherConf= Vare/ydelses konfiguration IsNotADir=er ikke en mappe! ##### Syslog ##### -SyslogSetup=Log-modul opsætning +SyslogSetup=Opsætning af logmodul SyslogOutput=Log output -SyslogFacility=Facility +SyslogFacility=Facilitet SyslogLevel=Niveau SyslogFilename=Filnavn og sti -YouCanUseDOL_DATA_ROOT=Du kan bruge DOL_DATA_ROOT / dolibarr.log for en logfil i Dolibarr "dokumenter" mappen. Du kan indstille en anden vej til at gemme denne fil. -ErrorUnknownSyslogConstant=Konstant %s er ikke en kendt syslog konstant -OnlyWindowsLOG_USER=På Windows understøttes kun LOG_USER-faciliteten -CompressSyslogs=Komprimering og backup af fejlfindingslogfiler (genereret af modul Log til fejlfinding) -SyslogFileNumberOfSaves=Antal sikkerhedskopilogfiler, der skal gemmes -ConfigureCleaningCronjobToSetFrequencyOfSaves=Konfigurer rengøringsplanlagt job for at indstille log backupfrekvens +YouCanUseDOL_DATA_ROOT=Du kan bruge DOL_DATA_ROOT/dolibarr.log til en logfil i Dolibarr "dokumenter" mappen. Du kan indstille en anden sti til at gemme denne fil. +ErrorUnknownSyslogConstant=Konstant %s er ikke en kendt Syslog konstant +OnlyWindowsLOG_USER=På Windows understøttes kun LOG_USER-funktionen +CompressSyslogs=Komprimering og backup af debug logfiler (genereret af modul Log for debug) +SyslogFileNumberOfSaves=Antal backup logfiler, der skal opbevares +ConfigureCleaningCronjobToSetFrequencyOfSaves=Konfigurer det planlagte oprydningsjob for at indstille hyppigheden af log backup ##### Donations ##### -DonationsSetup=Indstilling af donationsmodul -DonationsReceiptModel=Skabelon for donationen modtagelse +DonationsSetup=Opsætning af donationsmodul +DonationsReceiptModel=Skabelon for donationskvittering ##### Barcode ##### BarcodeSetup=Stregkode opsætning -PaperFormatModule=Print format modul -BarcodeEncodeModule=Barcode encoding type +PaperFormatModule=Udskriftsformatmodul +BarcodeEncodeModule=Stregkode kodningstype CodeBarGenerator=Stregkode generator ChooseABarCode=Ingen generator defineret -FormatNotSupportedByGenerator=Format, der ikke understøttes af denne generator -BarcodeDescEAN8=Barcode typeidentifikationsmærker EAN8 -BarcodeDescEAN13=Barcode typeidentifikationsmærker EAN13 -BarcodeDescUPC=Barcode typeidentifikationsmærker UPC -BarcodeDescISBN=Barcode typeidentifikationsmærker ISBN -BarcodeDescC39=Barcode af type C39 -BarcodeDescC128=Barcode af type C128 +FormatNotSupportedByGenerator=Formatet understøttes ikke af denne generator +BarcodeDescEAN8=Stregkode af typen EAN8 +BarcodeDescEAN13=Stregkode af typen EAN13 +BarcodeDescUPC=Stregkode af typen UPC +BarcodeDescISBN=Stregkode af typen ISBN +BarcodeDescC39=Stregkode af type C39 +BarcodeDescC128=Stregkode af typen C128 BarcodeDescDATAMATRIX=Stregkode af typen Datamatrix -BarcodeDescQRCODE=Stregkode af typen QR-kode -GenbarcodeLocation=Barcode generation kommandolinje værktøj (bruges af intern motor til nogle stregkode typer). Skal være kompatibel med "genbarcode".
For eksempel: / usr / local / bin / genbarcode +BarcodeDescQRCODE=Stregkode af typen QR kode +GenbarcodeLocation=Kommandolinje værktøj til generering af stregkoder (bruges af intern motor til nogle stregkodetyper). Skal være kompatibel med "genbarcode".
For eksempel: /usr/local/bin/genbarcode BarcodeInternalEngine=Intern motor -BarCodeNumberManager=Manager til automatisk definere stregkode numre +BarCodeNumberManager=Styrer til automatisk at definere stregkodenumre ##### Prelevements ##### -WithdrawalsSetup=Opsætning af modul Direkte debiteringer +WithdrawalsSetup=Opsætning af modul Direct Debit payments ##### ExternalRSS ##### -ExternalRSSSetup=Ekstern import af RSS-import -NewRSS=Ny RSS Feed -RSSUrl=RSS-URL +ExternalRSSSetup=Ekstern RSS import opsætning +NewRSS=Nyt RSS-feed +RSSUrl=RSS URL RSSUrlExample=Et interessant RSS-feed ##### Mailing ##### -MailingSetup=Opsætning af EMail-modul -MailingEMailFrom=Afsender email (Fra) til e-mails sendt via e-mail modul -MailingEMailError=Return Email (Fejl til) for e-mails med fejl -MailingDelay=Sekunder for at vente efter at sende næste besked +MailingSetup=Opsætning af e-mailmodul +MailingEMailFrom=Afsender e-mail (Fra) for e-mails sendt med e-mail-modul +MailingEMailError=Returnerings e-mail (fejl-til) for e-mails med fejl +MailingDelay=Sekunder at vente efter afsendelse af næste besked ##### Notification ##### -NotificationSetup=Opsætning af e-mail-meddelelsesmodul -NotificationEMailFrom=Afsender-e-mail (Fra) for e-mails, der sendes af meddelelsesmodulet +NotificationSetup=Opsætning af e-mail meddelelsesmodul +NotificationEMailFrom=Afsender-e-mail (Fra) for e-mails sendt af meddelelsesmodulet FixedEmailTarget=Modtager -NotificationDisableConfirmMessageContact=Skjul listen over modtagere (abonnerer som kontakt) af meddelelser i bekræftelsesmeddelelsen -NotificationDisableConfirmMessageUser=Skjul listen over modtagere (abonnerer som bruger) af meddelelser i bekræftelsesmeddelelsen -NotificationDisableConfirmMessageFix=Skjul listen over modtagere (tilmeldt som global e-mail) af meddelelser i bekræftelsesmeddelelsen +NotificationDisableConfirmMessageContact=Skjul listen over modtagere (abonnerer som kontakt) af meddelelser i bekræftelses meddelelsen +NotificationDisableConfirmMessageUser=Skjul listen over modtagere (abonnerer som bruger) af meddelelser i bekræftelses meddelelsen +NotificationDisableConfirmMessageFix=Skjul listen over modtagere (tilmeldt som global e-mail) af meddelelser i bekræftelses meddelelsen ##### Sendings ##### SendingsSetup=Opsætning af forsendelsesmodul -SendingsReceiptModel=Afsendelse modtagelsen model -SendingsNumberingModules=Forsendelses nummererings format -SendingsAbility=Support forsendelsesark til kundeleverancer -NoNeedForDeliveryReceipts=I de fleste tilfælde anvendes forsendelsesark både som ark til kundeleverancer (liste over produkter, der skal sendes) og ark, der modtages og underskrives af kunden. Kvitteringen for produktleverancer er derfor en duplikeret funktion og aktiveres sjældent. +SendingsReceiptModel=Forsendelseskvitteringsmodel +SendingsNumberingModules=Forsendelsnummererings moduler +SendingsAbility=Support følgeseddel til kundeleverancer +NoNeedForDeliveryReceipts=I de fleste tilfælde bruges følgesedler både som plukliste til kundeleverancer (liste over varer, der skal sendes) og dokument der modtages og underskrives af kunden. Derfor er kvitteringen for vareleverancer en duplikeret funktion og er sjældent aktiveret. FreeLegalTextOnShippings=Fritekst på forsendelser ##### Deliveries ##### -DeliveryOrderNumberingModules=Varelevering nummererings format -DeliveryOrderModel=Model for kvitteringsnumre for varelevering -DeliveriesOrderAbility=Tilbyd kvitteringer for varelevering -FreeLegalTextOnDeliveryReceipts=Fritekst på leveringskvitteringer +DeliveryOrderNumberingModules=Følgeseddelsnummereringsmodul +DeliveryOrderModel=Følgeseddelmodel +DeliveriesOrderAbility=Understøt følgesedler +FreeLegalTextOnDeliveryReceipts=Fritekst på følgesedler ##### FCKeditor ##### -AdvancedEditor=Avanceret tekstredigeringsværktøj -ActivateFCKeditor=Aktivér FCKeditor for: -FCKeditorForNotePublic=WYSIWIG oprettelse/udgave af feltet "offentlige noter" af elementer -FCKeditorForNotePrivate=WYSIWIG oprettelse/udgave af feltet "private notes" af elementer -FCKeditorForCompany=WYSIWIG oprettelse/udgave af feltbeskrivelsen af elementer (undtagen produkter/tjenester) -FCKeditorForProduct=WYSIWIG oprettelse/udgave af feltbeskrivelsen af produkter/tjenester -FCKeditorForProductDetails=WYSIWIG oprettelse / udgave af produkt detaljers linjer for alle enheder (forslag, ordrer, fakturaer osv ...). Advarsel: Brug af denne indstilling til denne sag anbefales ikke, da det kan skabe problemer med specialtegn og sideformatering, når du bygger PDF-filer. -FCKeditorForMailing= WYSIWIG oprettelsen / udgave af postforsendelser -FCKeditorForUserSignature=WYSIWIG oprettelse / udgave af bruger signatur -FCKeditorForMail=WYSIWIG oprettelse / udgave for al mail (undtagen Værktøjer-> eMailing) -FCKeditorForTicket=WYSIWIG oprettelse / udgave af billetter +AdvancedEditor=Avanceret editor +ActivateFCKeditor=Aktiver avanceret editor for: +FCKeditorForNotePublic=WYSIWYG oprettelse/redigering af feltet "offentlige noter" på elementer +FCKeditorForNotePrivate=WYSIWYG oprettelse/redigering af feltet "private noter" på elementer +FCKeditorForCompany=WYSIWYG oprettelse/redigering af feltbeskrivelsen på elementer (undtagen varer/ydelser) +FCKeditorForProduct=WYSIWYG oprettelse/redigering af feltbeskrivelsen på varer/ydelser +FCKeditorForProductDetails=WYSIWYG oprettelse/redigering af produktdetalje linjer for alle enheder (tilbud, ordrer, fakturaer osv...). Advarsel: Brug af denne mulighed anbefales ikke, da det kan skabe problemer med specialtegn og sideformatering, når du genererer PDF-filer. +FCKeditorForMailing= WYSIWYG oprettelse/redigering af masse e-mails (Værktøjer->e-mailing) +FCKeditorForUserSignature=WYSIWYG oprettelse/redigering af brugersignatur +FCKeditorForMail=WYSIWYG oprettelse/redigering af al e-mail (undtagen Værktøjer->eMailing) +FCKeditorForTicket=WYSIWYG oprettelse/redigering af opgaver ##### Stock ##### StockSetup=Opsætning af lagermodul -IfYouUsePointOfSaleCheckModule=Hvis du bruger standardmodulet (POS) som standard eller et eksternt modul, kan denne opsætning ignoreres af dit POS-modul. De fleste POS-moduler er som standard designet til at oprette en faktura med det samme og reducere lager uanset valgmulighederne her. Så hvis du har brug for eller ikke har et lagerfald, når du registrerer et salg fra din POS, skal du også kontrollere din POS-modulopsætning. +IfYouUsePointOfSaleCheckModule=Hvis du bruger Point of Sale-modulet (POS), der leveres som standard, eller et eksternt modul, kan denne opsætning blive ignoreret af dit POS-modul. De fleste POS-moduler er som standard designet til at oprette en faktura med det samme og reducere lagerbeholdningen uanset mulighederne her. Så hvis du har brug for eller ikke at have en lagernedgang, når du registrerer et salg fra din POS, så tjek også din POS-modulopsætning. ##### Menu ##### MenuDeleted=Menu slettet Menu=Menu Menus=Menuer -TreeMenuPersonalized=Tilpassede menuer +TreeMenuPersonalized=Personlige menuer NotTopTreeMenuPersonalized=Personlige menuer, der ikke er knyttet til en topmenuindgang NewMenu=Ny menu -MenuHandler=Menu handling +MenuHandler=Menuhandler MenuModule=Kilde modul -HideUnauthorizedMenu=Skjul uautoriserede menuer også for interne brugere (bare gråtonet ellers) -DetailId=Id menuen -DetailMenuHandler=Menu handling, hvor der viser ny menu -DetailMenuModule=Modul navn, hvis menuen indrejse kommer fra et modul -DetailType=Type menuen (øverst eller til venstre) -DetailTitre=Menu etiket eller etiket-kode til oversættelse -DetailUrl=Webadresse, hvor menuen sender dig (Absolut URL link eller eksternt link med http://) -DetailEnabled=Betingelse for at vise eller ikke indrejse +HideUnauthorizedMenu=Skjul uautoriserede menuer også for interne brugere (ellers gråmarkerede) +DetailId=ID menu +DetailMenuHandler=Menuhandler hvor den nye menu skal vises +DetailMenuModule=Modulnavn, hvis menuindgangen kommer fra et modul +DetailType=Menutype (øverst eller venstre) +DetailTitre=Menuetiket eller etiketkode til oversættelse +DetailUrl=URL, hvor menuen sender dig (Absolut URL-link eller eksternt link med http://) +DetailEnabled=Betingelse for at vise eller ingen adgang DetailRight=Betingelse for at vise uautoriserede grå menuer -DetailLangs=Lang filnavn for etiketten kode oversættelse -DetailUser=Praktikant / Eksterne / Alle +DetailLangs=Lang filnavn til etiketkodeoversættelse +DetailUser=Intern / Ekstern / Alle Target=Mål DetailTarget=Mål for links (_blank top åbner et nyt vindue) -DetailLevel=Niveau (-1: top menu, 0: header menuen> 0 menu og sub-menuen) -ModifMenu=Menu ændre -DeleteMenu=Slet menuen indrejse -ConfirmDeleteMenu=Er du sikker på, at du vil slette menuindgangen %s ? -FailedToInitializeMenu=Kunne ikke initialisere menuen +DetailLevel=Niveau (-1:topmenu, 0:hovedmenu, >0 menu og undermenu) +ModifMenu=Menuskift +DeleteMenu=Slet menupunkt +ConfirmDeleteMenu=Er du sikker på, at du vil slette menupunkt %s? +FailedToInitializeMenu=Menuen kunne ikke initialiseres ##### Tax ##### -TaxSetup=Opsætning af modul til skatter/afgifter. -OptionVatMode=Moms skyldig -OptionVATDefault=Standardbasis +TaxSetup=Opsætning af modul for afgifter, skatter og udbytte +OptionVatMode=skyldig moms +OptionVATDefault=Standard grundlag OptionVATDebitOption=Periodiseringsgrundlag -OptionVatDefaultDesc=Moms skyldes:
- ved levering af varer (baseret på faktura dato)
- på betalinger for tjenester -OptionVatDebitOptionDesc=Moms skyldes:
- ved levering af varer (baseret på faktura dato)
- på faktura (debet) for tjenester -OptionPaymentForProductAndServices=Kontantgrundlag for produkter og tjenesteydelser -OptionPaymentForProductAndServicesDesc=Moms skyldes:
- ved betaling for varer
- på betalinger for tjenesteydelser -SummaryOfVatExigibilityUsedByDefault=Tid for momsberettigelse som standard i henhold til den valgte mulighed: -OnDelivery=Om levering -OnPayment=Om betaling -OnInvoice=På fakturaen -SupposedToBePaymentDate=Betaling dato bruges, hvis leveringsdato ikke kendt -SupposedToBeInvoiceDate=Faktura, som anvendes dato +OptionVatDefaultDesc=Der skal betales moms:
- ved levering af varer (baseret på fakturadato)
- på betalinger for tjenesteydelser +OptionVatDebitOptionDesc=Der skal betales moms:
- ved levering af varer (baseret på fakturadato)
- på faktura (debet) for tjenesteydelser +OptionPaymentForProductAndServices=Kassegrundlag for produkter og ydelser +OptionPaymentForProductAndServicesDesc=Der skal betales moms:
- på betaling for varer
- på betalinger for tjenesteydelser +SummaryOfVatExigibilityUsedByDefault=Tidspunkt for momsberettigelse som standard i henhold til den valgte mulighed: +OnDelivery=Ved levering +OnPayment=Ved betaling +OnInvoice=Ved fakturering +SupposedToBePaymentDate=Betalingsdato brugt +SupposedToBeInvoiceDate=Fakturadato brugt Buy=Købe Sell=Sælge -InvoiceDateUsed=Faktura, som anvendes dato -YourCompanyDoesNotUseVAT=Dit firma er blevet defineret til ikke at bruge moms (Hjem - Opsætning - Firma / Organisation), så der er ingen momsindstillinger til opsætning. +InvoiceDateUsed=Fakturadato brugt +YourCompanyDoesNotUseVAT=Din virksomhed er blevet defineret til ikke at bruge moms (Hjem - Opsætning - Virksomhed/Organisation), så der er ingen momsmuligheder at sætte op. AccountancyCode=Regnskabskode AccountancyCodeSell=Salgskonto. kode -AccountancyCodeBuy=Indkøbskonto. kode +AccountancyCodeBuy=Købskonto. kode CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Hold afkrydsningsfeltet "Opret automatisk betalingen" tomt som standard, når du opretter en ny skat ##### Agenda ##### -AgendaSetup=Opsætning af modul for begivenheder og tidsplan -PasswordTogetVCalExport=Nøglen til at tillade eksport link +AgendaSetup=Opsætning af modul for tidsplan og begivenheder +PasswordTogetVCalExport=Nøgle til at godkende eksportlink SecurityKey = Sikkerhedsnøgle -PastDelayVCalExport=Må ikke eksportere begivenhed ældre end -AGENDA_USE_EVENT_TYPE=Brug begivenhedstyper (styret i menuopsætning -> Ordbøger -> Type agendahændelser) -AGENDA_USE_EVENT_TYPE_DEFAULT=Indstil denne standardværdi automatisk for type begivenhed i begivenhedsoprettelsesformular -AGENDA_DEFAULT_FILTER_TYPE=Indstil denne type begivenhed automatisk i søgefilter i dagsordblik -AGENDA_DEFAULT_FILTER_STATUS=Indstil denne status automatisk for begivenheder i søgefilter i dagsordblik -AGENDA_DEFAULT_VIEW=Hvilken visning vil du åbne som standard, når du vælger menu Agenda -AGENDA_REMINDER_BROWSER=Aktivér påmindelse om begivenhed i brugerens browser (Når påmindelsesdato er nået, vises en popup af browseren. Hver bruger kan deaktivere sådanne underretninger fra sin browseropsætning). -AGENDA_REMINDER_BROWSER_SOUND=Aktivér lydmeddelelse -AGENDA_REMINDER_EMAIL=Aktiver påmindelse om begivenhed via e-mails (påmindelsesmulighed / forsinkelse kan defineres for hver begivenhed). -AGENDA_REMINDER_EMAIL_NOTE=Bemærk: Hyppigheden af det planlagte job %s skal være tilstrækkelig til at være sikker på, at påmindelsen sendes på det rigtige tidspunkt. -AGENDA_SHOW_LINKED_OBJECT=Vis linkede objekter i tidsplanvisning +PastDelayVCalExport=Eksporter ikke begivenhed ældre end +AGENDA_USE_EVENT_TYPE=Brug begivenhedstyper (administreret i menuen Opsætning -> Ordbøger -> Tidsplan begivenheds typer) +AGENDA_USE_EVENT_TYPE_DEFAULT=Indstil automatisk denne standardværdi for begivenhedstype i begivenhedsoprettelsesformularen +AGENDA_DEFAULT_FILTER_TYPE=Indstil automatisk denne type begivenhed i søgefilteret i dagsordensvisningen +AGENDA_DEFAULT_FILTER_STATUS=Indstil automatisk denne status for begivenheder i søgefilteret i dagsordensvisningen +AGENDA_DEFAULT_VIEW=Hvilken visning vil du som standard åbne, når du vælger menu Tidsplan +AGENDA_REMINDER_BROWSER=Aktiver hændelsespåmindelse på brugerens browser (Når påmindelsesdatoen er nået, vises en pop op af browseren. Hver bruger kan deaktivere sådanne meddelelser fra sin browsermeddelelsesopsætning). +AGENDA_REMINDER_BROWSER_SOUND=Aktiver lydmeddelelse +AGENDA_REMINDER_EMAIL=Aktiver begivenhedspåmindelse via e-mails (påmindelsesmulighed/forsinkelse kan defineres for hver begivenhed). +AGENDA_REMINDER_EMAIL_NOTE=Bemærk: Hyppigheden af det planlagte job %s skal være nok til at være sikker på, at påmindelsen sendes på det rigtige tidspunkt. +AGENDA_SHOW_LINKED_OBJECT=Vis linket objekt i tidsplanvisning ##### Clicktodial ##### -ClickToDialSetup=Opsætning af Klik-for-at-ringe-modulet +ClickToDialSetup=Opsætning af Click To Dial modulet ClickToDialUrlDesc=Url kaldes, når man klikke på telefon billed. I URL kan du bruge tags
__ PHONETO __ , der vil blive erstattet med telefonnummeret til den person, der skal ringe
__ PHONEFROM __ , der vil blive erstattet med telefonnummeret til opkaldet person (din)
__ LOGIN __ , der vil blive erstattet med clicktodial login (defineret på brugerkort)
__ PASS __ , der vil blive erstattet med clicktodial adgangskode (defineret på bruger kort). ClickToDialDesc=Dette modul ændrer telefonnumre, når du bruger en stationær computer, til klikbare links. Et klik ringer op til nummeret. Dette kan bruges til at starte telefonopkaldet, når du bruger en blød telefon på skrivebordet eller når du f.eks. Bruger et CTI-system baseret på SIP-protokol. Bemærk: Når du bruger en smartphone, er telefonnumre altid klikbare. ClickToDialUseTelLink=Brug kun et link "tel:" på telefonnumre ClickToDialUseTelLinkDesc=Brug denne metode, hvis dine brugere har en softphone eller en softwaregrænseflade, installeret på den samme computer som browseren og kaldes, når du klikker på et link, der starter med "tel:" i din browser. Hvis du har brug for et link, der starter med "slurk:" eller en fuld serverløsning (ikke behov for lokal softwareinstallation), skal du indstille dette til "Nej" og udfylde det næste felt. ##### Point Of Sale (CashDesk) ##### CashDesk=Point of Sale -CashDeskSetup=Opsætning af Point of Sales-modul +CashDeskSetup=Opsætning af Point of Sales modulet CashDeskThirdPartyForSell=Standard generisk tredjepart til brug for salg -CashDeskBankAccountForSell=Cash konto til brug for sælger -CashDeskBankAccountForCheque=Standardkonto, der skal bruges til at modtage betalinger pr. Check -CashDeskBankAccountForCB=Konto til at bruge til at modtage kontant betaling ved kreditkort -CashDeskBankAccountForSumup=Standard bankkonto, der skal bruges til at modtage betalinger via SumUp -CashDeskDoNotDecreaseStock=Deaktiver lagerbeholdningen, når et salg er udført fra Point of Sale (hvis "nej", lagernedgang er udført for hvert salg udført fra POS, uanset optionen i modul lager). -CashDeskIdWareHouse=Force og begrænse lageret til brug for lagernedgang -StockDecreaseForPointOfSaleDisabled=Lagernedgang fra salgssted deaktiveret -StockDecreaseForPointOfSaleDisabledbyBatch=Lagernedgang i POS er ikke kompatibel med modul Serial / Lot management (aktuelt aktiv), så lagernedgang er deaktiveret. -CashDeskYouDidNotDisableStockDecease=Du har ikke deaktiveret lagernedgang, når du sælger fra Point of Sale. Derfor er et lager påkrævet. -CashDeskForceDecreaseStockLabel=Lager nedjusteret for batch produkter var tvunget. -CashDeskForceDecreaseStockDesc=Reducer først med de ældste best før og sidste salgs-datoer. -CashDeskReaderKeyCodeForEnter=tastekode for "Enter" defineret i stregkodelæser (Eksempel: 13) +CashDeskBankAccountForSell=Standardkonto, der skal bruges til at modtage kontante betalinger +CashDeskBankAccountForCheque=Standardkonto, der skal bruges til at modtage betalinger med check +CashDeskBankAccountForCB=Standardkonto, der skal bruges til at modtage betalinger med kreditkort +CashDeskBankAccountForSumup=Standard bankkonto, der skal bruges til at modtage betalinger med SumUp +CashDeskDoNotDecreaseStock=Deaktiver lagerreduktion, når et salg udføres fra Point of Sale (hvis "nej", foretages lagerreduktion for hvert salg foretaget fra POS, uanset den indstilling, der er indstillet i modulet Lager). +CashDeskIdWareHouse=Tving og begræns lageret til brug for lagerreduktion +StockDecreaseForPointOfSaleDisabled=Lagereduktion fra Point of Sale deaktiveret +StockDecreaseForPointOfSaleDisabledbyBatch=Lagerreduktion i POS er ikke kompatibel med modul Seriel/Lot-styring (aktuelt aktiv), så lagerreduktion er deaktiveret. +CashDeskYouDidNotDisableStockDecease=Du deaktiverede ikke lagerreduktion, da du foretog et salg fra Point of Sale. Derfor er et lager påkrævet. +CashDeskForceDecreaseStockLabel=Lagerreduktion for batchprodukter blev tvunget til. +CashDeskForceDecreaseStockDesc=Reducer først med de ældste Bedst før/Sidste anvendelses datoer. +CashDeskReaderKeyCodeForEnter=Karakterkode for "Enter" defineret i stregkodelæser (eksempel: 13) ##### Bookmark ##### -BookmarkSetup=Bogmærke modul opsætning -BookmarkDesc=Dette modul giver dig mulighed for at styre bogmærker. Du kan også tilføje genveje til Dolibarr-sider eller eksterne websteder på din venstre menu. -NbOfBoomarkToShow=Maksimalt antal bogmærker til at vise i venstre menu +BookmarkSetup=Opsætning af bogmærkemodul +BookmarkDesc=Dette modul giver dig mulighed for at administrere bogmærker. Du kan også tilføje genveje til alle Dolibarr sider eller eksterne websteder i din venstre menu. +NbOfBoomarkToShow=Maksimalt antal bogmærker, der kan vises i venstre menu ##### WebServices ##### -WebServicesSetup=Webservices modul opsætning -WebServicesDesc=Ved at aktivere dette modul Dolibarr blive en web service-server til at give diverse web-tjenester. -WSDLCanBeDownloadedHere=WSDL deskriptor sagsakter forudsat serviceses kan downloade det her -EndPointIs=SOAP-klienter skal sende deres anmodninger til Dolibarr-slutpunktet tilgængeligt på URL +WebServicesSetup=Opsætning af webservicemodul +WebServicesDesc=Ved at aktivere dette modul bliver Dolibarr en webserver til at levere diverse webtjenester. +WSDLCanBeDownloadedHere=WSDL beskrivelsesfil for leverede tjenester kan downloades her +EndPointIs=SOAP klienter skal sende deres anmodninger til Dolibarr endpoint, der er tilgængeligt på URL ##### API #### -ApiSetup=Indstilling af API-modul +ApiSetup=Opsætning af API modul ApiDesc=Ved at aktivere dette modul bliver Dolibarr en REST-server til at levere diverse webtjenester. -ApiProductionMode=Aktivér produktionsfunktion (dette aktiverer brug af en cache for servicehåndtering) +ApiProductionMode=Aktiver produktionstilstand (dette vil aktivere brugen af en cache til administration af tjenester) ApiExporerIs=Du kan udforske og teste API'erne på URL -OnlyActiveElementsAreExposed=Kun elementer fra aktiverede moduler er udsat +OnlyActiveElementsAreExposed=Kun elementer fra aktiverede moduler eksponeres ApiKey=Nøgle til API -WarningAPIExplorerDisabled=API-udforskeren er blevet deaktiveret. API-explorer er ikke forpligtet til at levere API-tjenester. Det er et værktøj for udvikleren at finde / test REST API'er. Hvis du har brug for dette værktøj, skal du gå i setup af modul API REST for at aktivere det. +WarningAPIExplorerDisabled=API Explorer er blevet deaktiveret. API Explorer er ikke påkrævet for at levere API-tjenester. Det er et værktøj for udviklere til at finde/teste REST API'er. Hvis du har brug for dette værktøj, skal du gå ind i opsætningen af modulet API REST for at aktivere det. ##### Bank ##### BankSetupModule=Opsætning af bankmodul FreeLegalTextOnChequeReceipts=Fritekst på check kvitteringer -BankOrderShow=Vis rækkefølgen af ​​bankkonti for lande, der anvender "detaljeret bank nummer" -BankOrderGlobal=General -BankOrderGlobalDesc=General display for +BankOrderShow=Vis rækkefølgen af bankkonti for lande ved hjælp af "detaljeret banknummer" +BankOrderGlobal=Generel +BankOrderGlobalDesc=Generel visningsrækkefølge BankOrderES=Spansk -BankOrderESDesc=Spansk display for -ChequeReceiptsNumberingModule=Kontrol kvittering nummererings format +BankOrderESDesc=Spansk visningsrækkefølge +ChequeReceiptsNumberingModule=Kvitterings nummereringsmodul ##### Multicompany ##### -MultiCompanySetup=Opsætning af multi-selskabsmodul +MultiCompanySetup=Opsætning af Multi-virksomhed modul ##### Suppliers ##### -SuppliersSetup=Opsætning af sælgermodul -SuppliersCommandModel=Komplet skabelon for indkøbsordre -SuppliersCommandModelMuscadet=Komplet skabelon med indkøbsordre (gammel implementering af cornas skabelon) -SuppliersInvoiceModel=Komplet skabelon til leverandørfaktura -SuppliersInvoiceNumberingModel=Leverandør fakturaer nummerering modeller -IfSetToYesDontForgetPermission=Hvis det er indstillet til en ikke-nullværdi, skal du ikke glemme at give tilladelser til grupper eller brugere, der har tilladelse til den anden godkendelse +SuppliersSetup=Opsætning af leverandørmodul +SuppliersCommandModel=Komplet skabelon for købsordre +SuppliersCommandModelMuscadet=Komplet skabelon af købsordre (gammel implementering af cornas skabelon) +SuppliersInvoiceModel=Komplet skabelon for leverandørfaktura +SuppliersInvoiceNumberingModel=Leverandørfakturaer nummereringsmodeller +IfSetToYesDontForgetPermission=Glem ikke at give rettigheder til grupper eller brugere, der er autoriseret for den anden godkendelse, hvis sat til en ikke-nul værdi ##### GeoIPMaxmind ##### -GeoIPMaxmindSetup=Opsætning af GeoIP Maxmind-modul -PathToGeoIPMaxmindCountryDataFile=Sti til fil, der indeholder Maxmind ip til land oversættelse.
Eksempler:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb -NoteOnPathLocation=Bemærk, at din ip til land datafil skal være inde en mappe din PHP kan læse (Check din PHP open_basedir setup og filsystem tilladelser). -YouCanDownloadFreeDatFileTo=Du kan downloade en gratis demo version af Maxmind GeoIP land fil på %s. -YouCanDownloadAdvancedDatFileTo=Du kan også downloade en mere komplet version, med opdateringer på den Maxmind GeoIP land fil på %s. +GeoIPMaxmindSetup=Opsætning af GeoIP Maxmind modul +PathToGeoIPMaxmindCountryDataFile=Sti til fil, der indeholder Maxmind ip til land oversættelse.
Eksempler:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +NoteOnPathLocation=Bemærk, at din ip til lande-datafil skal være i en mappe, som din PHP kan læse (kontroller din PHP open_basedir opsætning og filsystemrettigheder). +YouCanDownloadFreeDatFileTo=Du kan downloade en gratis demoversion af Maxmind GeoIP landefilen på %s. +YouCanDownloadAdvancedDatFileTo=Du kan også downloade en mere komplet version med opdateringer, af Maxmind GeoIP landefilen på %s. TestGeoIPResult=Test af en konvertering IP -> land ##### Projects ##### -ProjectsNumberingModules=Projekt nummererings format +ProjectsNumberingModules=Projekt nummereringsmodul ProjectsSetup=Opsætning af projektmodul -ProjectsModelModule=Projekt rapport dokument model -TasksNumberingModules=Opgave nummererings format -TaskModelModule=Opgaver rapporterer dokumentmodel -UseSearchToSelectProject=Vent, indtil der trykkes på en tast, inden du læser indholdet på projektkombinationslisten.
Dette kan forbedre ydeevnen, hvis du har et stort antal projekter, men det er mindre praktisk. +ProjectsModelModule=Projektrapporter dokumentmodel +TasksNumberingModules=Opgavenummereringsmodul +TaskModelModule=Opgaverapporter dokumentmodel +UseSearchToSelectProject=Vent, indtil der trykkes på en tast, før du indlæser indholdet af projektkombinationslisten.
Dette kan forbedre ydeevnen, hvis du har et stort antal projekter, men det er mindre praktisk. ##### ECM (GED) ##### ##### Fiscal Year ##### AccountingPeriods=Regnskabsperioder AccountingPeriodCard=Regnskabsperiode NewFiscalYear=Ny regnskabsperiode -OpenFiscalYear=Åbent regnskabsperiode -CloseFiscalYear=Luk regnskabsperiode -DeleteFiscalYear=Slet regnskabsperiode +OpenFiscalYear=Åbning af regnskabsperiode +CloseFiscalYear=Lukning af regnskabsperiode +DeleteFiscalYear=Sletning af regnskabsperiode ConfirmDeleteFiscalYear=Er du sikker på at slette denne regnskabsperiode? ShowFiscalYear=Vis regnskabsperiode AlwaysEditable=Kan altid redigeres -MAIN_APPLICATION_TITLE=Force synligt navn på ansøgning (advarsel: Indstilling af dit eget navn her kan bryde autofil login-funktionen, når du bruger DoliDroid mobilapplikation) -NbMajMin=Mindste antal store bogstaver -NbNumMin=Mindste antal numeriske tegn -NbSpeMin=Mindste antal specialtegn -NbIteConsecutive=Maksimum antal gentagne samme tegn -NoAmbiCaracAutoGeneration=Brug ikke tvetydige tegn ("1", "l", "i", "|", "0", "O") til automatisk generering -SalariesSetup=Opsætning af lønnings modul +MAIN_APPLICATION_TITLE=Tving synligt navn på applikationen (advarsel: Hvis du indstiller dit eget navn her, kan det ødelægge autofill-loginfunktionen, når du bruger DoliDroid mobilapplikationen) +NbMajMin=Minimum antal store bogstaver +NbNumMin=Minimum antal numeriske tegn +NbSpeMin=Minimum antal specialtegn +NbIteConsecutive=Maksimalt antal gentagende af samme tegn +NoAmbiCaracAutoGeneration=Brug ikke tvetydige tegn ("1","l","i","|","0","O") til automatisk generering +SalariesSetup=Opsætning af lønmodul SortOrder=Sorteringsrækkefølge Format=Format -TypePaymentDesc=0: Kunde betalingstype, 1: Leverandør betalingstype, 2: Både kunder og leverandører betalingstype +TypePaymentDesc=0:Kundebetalingstype, 1:Leverandørbetalingstype, 2:Både kunde- og leverandørerbetalingstype IncludePath=Inkluder sti (defineret i variabel %s) -ExpenseReportsSetup=Opsætning af modul Expense Reports -TemplatePDFExpenseReports=Dokumentskabeloner til at generere regningsrapportdokument -ExpenseReportsRulesSetup=Opsætning af modul Expense Reports - Regler -ExpenseReportNumberingModules=Udgiftsrapport nummererings format -NoModueToManageStockIncrease=Intet modul, der er i stand til at styre automatisk lagerforhøjelse, er blevet aktiveret. Lagerforøgelse vil kun ske ved manuel indlæsning. -YouMayFindNotificationsFeaturesIntoModuleNotification=Du kan finde muligheder for e-mail-meddelelser ved at aktivere og konfigurere modulet "Meddelelse". +ExpenseReportsSetup=Opsætning af Udgiftsrapportmodul +TemplatePDFExpenseReports=Dokumentskabeloner til at generere udgiftsrapportdokument +ExpenseReportsRulesSetup=Opsætning af Udgiftsrapportmodul - Regler +ExpenseReportNumberingModules=Udgiftsrapport nummereringsmodul +NoModueToManageStockIncrease=Intet modul, der kan håndtere automatisk lagerforøgelse, er blevet aktiveret. Lagerforøgelse vil kun ske ved manuel input. +YouMayFindNotificationsFeaturesIntoModuleNotification=Du kan finde muligheder for e-mail-notifikationer ved at aktivere og konfigurere modulet "Meddelelser om forretningsbegivenheder". TemplatesForNotifications=Skabeloner til meddelelser -ListOfNotificationsPerUser=Liste over automatiske underretninger pr. Bruger * -ListOfNotificationsPerUserOrContact=Liste over mulige automatiske underretninger (ved forretningsbegivenhed) tilgængelig per bruger * eller pr. Kontakt ** +ListOfNotificationsPerUser=Liste over automatiske meddelelser pr. bruger* +ListOfNotificationsPerUserOrContact=Liste over mulige automatiske meddelelser (ved forretningsbegivenhed) tilgængelig pr. bruger* eller pr. kontakt** ListOfFixedNotifications=Liste over automatiske faste meddelelser -GoOntoUserCardToAddMore=Gå til fanen "Notifikationer" for en bruger for at tilføje eller fjerne underretninger for brugere -GoOntoContactCardToAddMore=Gå til fanen "Underretninger" fra en tredjepart for at tilføje eller fjerne underretninger for kontakter / adresser +GoOntoUserCardToAddMore=Gå til fanen "Underretninger" for en bruger for at tilføje eller fjerne notifikationer for brugere +GoOntoContactCardToAddMore=Gå til fanen "Underretninger" fra en tredjepart for at tilføje eller fjerne notifikationer for kontakter/adresser Threshold=Grænseværdi -BackupDumpWizard=Guiden til at oprette databasedump(Backup)-filen -BackupZipWizard=Guiden til at oprette arkivet med arkiv for dokumenter -SomethingMakeInstallFromWebNotPossible=Installation af eksternt modul er ikke muligt fra webgrænsefladen af ​​følgende årsag: -SomethingMakeInstallFromWebNotPossible2=Af denne grund er proces til opgradering beskrevet her en manuel proces, som kun en privilegeret bruger kan udføre. -InstallModuleFromWebHasBeenDisabledByFile=Installation af eksternt modul fra applikation er blevet deaktiveret af din administrator. Du skal bede ham om at fjerne filen %s for at tillade denne funktion. -ConfFileMustContainCustom=Installation eller opbygning af et eksternt modul fra applikationen skal gemme modulfilerne i mappen %s . Hvis du vil have denne mappe behandlet af Dolibarr, skal du konfigurere din conf / conf.php for at tilføje de to direktelinjer:
$ dolibarr_main_url_root_alt = '/ custom';
$ dolibarr_main_document_root_alt = '%s /custom'; -HighlightLinesOnMouseHover=Fremhæv tabel linjer, når musen flytter passerer over -HighlightLinesColor=Fremhæv farve på linjen, når musen passerer (brug 'ffffff' til intet højdepunkt) -HighlightLinesChecked=Fremhæv farve på linjen, når den er markeret (brug 'ffffff' til ikke at fremhæve) +BackupDumpWizard=Guiden til at oprette database-backupfilen +BackupZipWizard=Guiden til at opbygge arkivet af dokumenter +SomethingMakeInstallFromWebNotPossible=Installation af eksternt modul er ikke mulig fra webgrænsefladen af følgende årsag: +SomethingMakeInstallFromWebNotPossible2=Af denne grund er processen til opgradering beskrevet her en manuel proces, som kun en privilegeret bruger kan udføre. +InstallModuleFromWebHasBeenDisabledByFile=Installation af eksternt modul fra applikationen er blevet deaktiveret af din administrator. Du skal bede ham om at fjerne filen %s for at tillade denne funktion. +ConfFileMustContainCustom=Installation eller opbygning af et eksternt modul fra applikationen skal gemme modulfilerne i mappen %s. For at få denne mappe behandlet af Dolibarr, skal du konfigurere din conf/conf.php for at tilføje de 2 direktivlinjer:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; +HighlightLinesOnMouseHover=Fremhæv tabellinjer, når musen bevæges over +HighlightLinesColor=Fremhæv farven på linjen, når musen bevæges over (brug 'ffffff' for ingen fremhævelse) +HighlightLinesChecked=Fremhæv farven på linjen, når den er markeret (brug 'ffffff' for ingen fremhævelse) UseBorderOnTable=Vis venstre-højre grænser på tabeller BtnActionColor=Farve på handlingsknappen TextBtnActionColor=Tekstfarve på handlingsknappen TextTitleColor=Tekstfarve på sidetitel -LinkColor=Farve af links -PressF5AfterChangingThis=Tryk på CTRL + F5 på tastaturet eller ryd din browserens cache efter at have ændret denne værdi for at få den effektiv -NotSupportedByAllThemes=Vil arbejde med kerne temaer, kan ikke understøttes af eksterne temaer +LinkColor=Farve på links +PressF5AfterChangingThis=Tryk på CTRL+F5 på tastaturet eller ryd din browsers cache efter at have ændret denne værdi for at få den til at virke +NotSupportedByAllThemes=Virker med kernetemaer, understøttes muligvis ikke af eksterne temaer BackgroundColor=Baggrundsfarve -TopMenuBackgroundColor=Baggrundsfarve til topmenuen -TopMenuDisableImages=Skjul billeder i topmenuen +TopMenuBackgroundColor=Baggrundsfarve til topmenu +TopMenuDisableImages=Ikon eller tekst i topmenuen LeftMenuBackgroundColor=Baggrundsfarve til venstre menu -BackgroundTableTitleColor=Baggrundsfarve til tabel titel linje -BackgroundTableTitleTextColor=Tekstfarve til tabel titellinje -BackgroundTableTitleTextlinkColor=Tekstfarve til linklinjens tabel titel -BackgroundTableLineOddColor=Baggrundsfarve til ulige bord linjer -BackgroundTableLineEvenColor=Baggrundsfarve til lige bordlinier -MinimumNoticePeriod=Mindste opsigelsesperiode (din anmodning om orlov skal ske inden denne forsinkelse) -NbAddedAutomatically=Antal dage, der tilføjes til tællere af brugere (automatisk) hver måned -EnterAnyCode=Dette felt indeholder en reference til identifikation af linjen. Indtast en hvilken som helst værdi efter eget valg, men uden specialtegn. -Enter0or1=Tryk 0 eller 1 -UnicodeCurrency=Indtast her mellem seler, liste over byte nummer, der repræsenterer valutasymbolet. For eksempel: for $, indtast [36] - for Brasilien real R $ [82,36] - for €, indtast [8364] -ColorFormat=RGB-farven er i HEX-format, fx: FF0000 -PictoHelp=Ikonnavn i format:
- image.png for en billedfil i den aktuelle temamappe
- image.png@module, hvis filen er i mappen /img/ af et modul
- fa-xxx for en FontAwesomepicto fa-x
- fonwtawesome_xxx_fa_color_size for et FontAwesome fa-xxx-billede (med præfiks, farve og størrelse indstillet) -PositionIntoComboList=Linjens placering i kombinationslister -SellTaxRate=salgs moms ssats -RecuperableOnly=Ja for moms "Ikke opfattet, men genoprettelig" dedikeret til nogle stater i Frankrig. Hold værdi til "Nej" i alle andre tilfælde. -UrlTrackingDesc=Hvis udbyderen eller transporttjenesten tilbyder en side eller et websted for at kontrollere status for dine forsendelser, kan du indtaste det her. Du kan bruge tasten {TRACKID} i URL-parametrene, så systemet vil erstatte det med det sporingsnummer, som brugeren indtastede på forsendelseskortet. -OpportunityPercent=Når du opretter en mulighed, vil du definere en anslået mængde projekt/mulighed. Ifølge mulighedens status kan dette beløb multipliceres med denne sats for at vurdere et samlet beløb, som alle dine muligheder kan generere. Værdien er en procentdel (mellem 0 og 100). -TemplateForElement=Denne mailskabelon er relateret til hvilken type objekt? En e -mail -skabelon er kun tilgængelig, når du bruger knappen "Send e -mail" fra det relaterede objekt. -TypeOfTemplate=Type skabelon -TemplateIsVisibleByOwnerOnly=Skabelon er kun synlig for ejeren +BackgroundTableTitleColor=Baggrundsfarve for tabeltitellinje +BackgroundTableTitleTextColor=Tekstfarve til tabeltitellinje +BackgroundTableTitleTextlinkColor=Tekstfarve for linklinje i tabeltitel +BackgroundTableLineOddColor=Baggrundsfarve til ulige tabellinjer +BackgroundTableLineEvenColor=Baggrundsfarve til lige tabellinjer +MinimumNoticePeriod=Minimum varselsfrist (din anmodning om orlov skal ske inden denne forsinkelse) +NbAddedAutomatically=Antal dage tilføjet til brugertællere (automatisk) hver måned +EnterAnyCode=Dette felt indeholder en reference til at identificere linjen. Indtast en værdi efter eget valg, men uden specialtegn. +Enter0or1=Indtast 0 eller 1 +UnicodeCurrency=Indtast her mellem firkantede parenteser, liste over byte nummer, der repræsenterer valutasymbolet. For eksempel: for $, indtast [36] - for Brasiliansk real R$ [82,36] - for €, indtast [8364] +ColorFormat=RGB-farven er i HEX-format, f.eks.: FF0000 +PictoHelp=Ikonnavn i format:
- image.png for en billedfil i den aktuelle temamappe
- image.png@module, hvis filen er i mappen /img/ fra modul
- fa-xxx for en FontAwesome fa-xxx picto
- fontawesome_xxx_fa_color_size for et FontAwesome fa-xxx-billede (med præfiks, farve og størrelse indstillet) +PositionIntoComboList=Placering af linje i kombinationslister +SellTaxRate=momssats +RecuperableOnly=Ja for moms "Ikke opfattet, men kan tilbagebetales" dedikeret til en tilstand i Frankrig. Hold værdien til "Nej" i alle andre tilfælde. +UrlTrackingDesc=Hvis udbyderen eller transporttjenesten tilbyder en side eller et websted for at kontrollere status for dine forsendelser, kan du indtaste det her. Du kan bruge nøglen {TRACKID} i URL-parametrene, så systemet erstatter den med det sporingsnummer, som brugeren indtastede på forsendelseskortet. +OpportunityPercent=Når du opretter et kundeemne, vil du definere en estimeret mængde projekt/lead. I henhold til status for kundeemnet kan dette beløb ganges med denne sats for at evaluere et samlet beløb, som alle dine kundeemner kan generere. Værdien er en procentdel (mellem 0 og 100). +TemplateForElement=Denne mailskabelon er relateret til hvilken type objekt? En e-mail-skabelon er kun tilgængelig, når du bruger knappen "Send e-mail" fra det relaterede objekt. +TypeOfTemplate=Skabelontype +TemplateIsVisibleByOwnerOnly=Skabelonen er kun synlig for ejeren VisibleEverywhere=Synlig overalt -VisibleNowhere=Synlig ingen steder -FixTZ=TimeZone fix -FillFixTZOnlyIfRequired=Eksempel: +2 (kun udfyld hvis der opstår problem) -ExpectedChecksum=Forventet checksum -CurrentChecksum=Nuværende checksum +VisibleNowhere=Synlig intetsteds +FixTZ=TimeZone korrektion +FillFixTZOnlyIfRequired=Eksempel: +2 (udfyld kun, hvis der er problemer) +ExpectedChecksum=Forventet kontrolsum +CurrentChecksum=Nuværende kontrolsum ExpectedSize=Forventet størrelse CurrentSize=Nuværende størrelse -ForcedConstants=Påkrævede konstante værdier -MailToSendProposal=Kundeforslag +ForcedConstants=Nødvendige konstante værdier +MailToSendProposal=Kundetilbud MailToSendOrder=Salgsordrer MailToSendInvoice=Kundefakturaer MailToSendShipment=Forsendelser -MailToSendIntervention=Interventioner -MailToSendSupplierRequestForQuotation=Anmodning om citat +MailToSendIntervention=interventioner +MailToSendSupplierRequestForQuotation=Anmodning om tilbud MailToSendSupplierOrder=Indkøbsordre MailToSendSupplierInvoice=Leverandørfakturaer MailToSendContract=Kontrakter MailToSendReception=Modtagelse -MailToThirdparty=Tredjepart +MailToThirdparty=Tredje partier MailToMember=Medlemmer MailToUser=Brugere MailToProject=Projekter MailToTicket=Opgaver -ByDefaultInList=Vis som standard i listevisning +ByDefaultInList=Vis som standard på listevisning YouUseLastStableVersion=Du bruger den seneste stabile version -TitleExampleForMajorRelease=Eksempel på besked, du kan bruge til at annoncere denne store udgivelse (brug det gratis at bruge det på dine websteder) -TitleExampleForMaintenanceRelease=Eksempel på besked, du kan bruge til at annoncere denne vedligeholdelsesudgivelse (lad det være gratis at bruge det på dine websteder) -ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s er tilgængelig. Version %s er en stor udgivelse med mange nye funktioner til både brugere og udviklere. Du kan downloade det fra downloadområdet på https://www.dolibarr.org portal (underkatalog Stable versioner). Du kan læse ChangeLog for en komplet liste over ændringer. -ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s er tilgængelig. Version %s er en vedligeholdelsesversion, der indeholder kun fejlrettelser. Vi anbefaler alle brugere at opgradere til denne version. En vedligeholdelsesfrigivelse introducerer ikke nye funktioner eller ændringer i databasen. Du kan hente den fra downloadområdet på https://www.dolibarr.org portal (underkatalog Stable versioner). Du kan læse ChangeLog for en komplet liste over ændringer. -MultiPriceRuleDesc=Når valgmuligheden "Flere prisniveauer pr. Produkt / service" er aktiveret, kan du definere forskellige priser (et pr. Prisniveau) for hvert produkt. For at spare tid, kan du her angive en regel for at autokalulere en pris for hvert niveau baseret på prisen på første niveau, så du skal kun angive en pris for første niveau for hvert produkt. Denne side er designet til at spare dig tid, men er kun nyttig, hvis dine priser for hvert niveau er i forhold til første niveau. Du kan ignorere denne side i de fleste tilfælde. -ModelModulesProduct=Skabeloner til produktdokumenter -WarehouseModelModules=Skabeloner til dokumenter på lager -ToGenerateCodeDefineAutomaticRuleFirst=For at kunne generere koder automatisk skal du først definere en manager for at definere stregkodenummeret automatisk. -SeeSubstitutionVars=Se * note for liste over mulige substitutionsvariabler -SeeChangeLog=Se ChangeLog-fil (kun engelsk) +TitleExampleForMajorRelease=Eksempel på besked, du kan bruge til at annoncere denne større udgivelse (du er velkommen til at bruge den på dine websteder) +TitleExampleForMaintenanceRelease=Eksempel på besked, du kan bruge til at annoncere denne vedligeholdelsesudgivelse (du er velkommen til at bruge den på dine websteder) +ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s er tilgængelig. Version %s er en stor udgivelse med en masse nye funktioner til både brugere og udviklere. Du kan downloade det fra downloadområdet på https://www.dolibarr.org-portalen (underkatalog Stabile versioner). Du kan læse ChangeLog for en komplet liste over ændringer. +ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s er tilgængelig. Version %s er en vedligeholdelsesversion, så indeholder kun fejlrettelser. Vi anbefaler alle brugere at opgradere til denne version. En vedligeholdelsesudgivelse introducerer ikke nye funktioner eller ændringer i databasen. Du kan downloade det fra downloadområdet på https://www.dolibarr.org-portalen (underkatalog Stabile versioner). Du kan læse ChangeLog for en komplet liste over ændringer. +MultiPriceRuleDesc=Når indstillingen "Flere niveauer af priser pr. vare/ydelse" er aktiveret, kan du definere forskellige priser (én pr. prisniveau) for hvert vare. For at spare tid, kan du her indtaste en regel for automatisk at beregne en pris for hvert niveau baseret på prisen på det første niveau, så du skal kun indtaste en pris for det første niveau for hvert produkt. Denne side er designet til at spare dig tid, men er kun nyttig, hvis dine priser for hvert niveau er i forhold til første niveau. Du kan ignorere denne side i de fleste tilfælde. +ModelModulesProduct=Skabeloner til varedokumenter +WarehouseModelModules=Skabeloner til lagerdokumenter +ToGenerateCodeDefineAutomaticRuleFirst=For at kunne generere koder automatisk, skal du først definere en program til automatisk at definere stregkodenummeret. +SeeSubstitutionVars=Se * note for en liste over mulige substitutionsvariabler +SeeChangeLog=Se ChangeLog-fil (kun på engelsk) AllPublishers=Alle udgivere -UnknownPublishers=Ukendte forlag +UnknownPublishers=Ukendte udgivere AddRemoveTabs=Tilføj eller fjern faner AddDataTables=Tilføj objekttabeller -AddDictionaries=Tilføj ordbøger -AddData=Tilføj objekter eller ordbøger data +AddDictionaries=Tilføj ordbogstabeller +AddData=Tilføj objekter eller ordbogsdata AddBoxes=Tilføj widgets AddSheduledJobs=Tilføj planlagte job -AddHooks=Tilføj kroge -AddTriggers=Tilføj udløsere +AddHooks=Tilføj Hooks +AddTriggers=Tilføj triggere AddMenus=Tilføj menuer -AddPermissions=Tilføj tilladelser +AddPermissions=Tilføj rettigheder AddExportProfiles=Tilføj eksportprofiler AddImportProfiles=Tilføj importprofiler AddOtherPagesOrServices=Tilføj andre sider eller tjenester -AddModels=Tilføj dokument eller nummereringsskabeloner +AddModels=Tilføj dokument- eller nummereringsskabeloner AddSubstitutions=Tilføj nøglesubstitutioner -DetectionNotPossible=Detektion er ikke muligt -UrlToGetKeyToUseAPIs=Url for at få token til at bruge API (når token er blevet modtaget, gemmes den i databasens brugertabel og skal anvendes ved hvert API-opkald) +DetectionNotPossible=Detektion ikke mulig +UrlToGetKeyToUseAPIs=Url for at få token til at bruge API (når token er modtaget, gemmes det i databasebrugertabellen og skal angives ved hvert API-kald) ListOfAvailableAPIs=Liste over tilgængelige API'er -activateModuleDependNotSatisfied=Modul "%s" afhænger af modulet "%s", der mangler, så modulet "%1$s" fungerer muligvis ikke korrekt. Venligst installer modul "%2$s" eller deaktiver modul "%1$s" hvis du vil være sikker fra enhver overraskelse -CommandIsNotInsideAllowedCommands=Kommandoen du forsøger at køre er ikke på listen over tilladte kommandoer defineret i parameter $ dolibarr_main_restrict_os_commands i filen conf.php . +activateModuleDependNotSatisfied=Modul "%s" afhænger af modul "%s", som mangler, så modulet "%1$s" fungerer muligvis ikke korrekt. Installer venligst modulet "%2$s" eller deaktiver modulet "%1$s", hvis du vil være sikker på overraskelser +CommandIsNotInsideAllowedCommands=Kommandoen du forsøger at køre er ikke på listen over tilladte kommandoer defineret i parameter $dolibarr_main_restrict_os_commands i filen conf.php. LandingPage=Destinationsside -SamePriceAlsoForSharedCompanies=Hvis du bruger et multimediemodul med valget "Single price", vil prisen også være den samme for alle virksomheder, hvis produkterne deles mellem miljøer -ModuleEnabledAdminMustCheckRights=Modulet er blevet aktiveret. Tilladelser til aktiverede modul(er) blev kun givet til admin brugere. Du kan muligvis give tilladelse til andre brugere eller grupper manuelt, hvis det er nødvendigt. -UserHasNoPermissions=Denne bruger har ingen tilladelser defineret -TypeCdr=Brug "Ingen", hvis betalingsdatoen er faktura dato plus et delta i dage (delta er feltet "%s")
Brug "Ved slutningen af ​​måneden", hvis, efter deltaet, skal datoen hæves for at nå frem til slutningen af ​​måneden (+ en valgfri "%s" i dage)
Brug "Nuværende / Næste" for at have betalingsfristen den første Nth af måneden efter deltaet (delta er feltet "%s", N er gemt i feltet "%s") -BaseCurrency=Referencens valuta af virksomheden (gå i setup af firma for at ændre dette) -WarningNoteModuleInvoiceForFrenchLaw=Dette modul %s er i overensstemmelse med franske love (Loi Finance 2016). -WarningNoteModulePOSForFrenchLaw=Dette modul %s er i overensstemmelse med franske love (Loi Finance 2016), fordi modul Non Reversible Logs automatisk aktiveres. -WarningInstallationMayBecomeNotCompliantWithLaw=Du forsøger at installere modul %s, der er et eksternt modul. Aktivering af et eksternt modul betyder, at du har tillid til udgiveren af ​​det pågældende modul, og at du er sikker på, at dette modul ikke har negativ indflydelse på din applikations adfærd og er i overensstemmelse med lovene i dit land (%s). Hvis modulet introducerer en ulovlig funktion, bliver du ansvarlig for brugen af ​​ulovlig software. -MAIN_PDF_MARGIN_LEFT=Venstre margin på PDF -MAIN_PDF_MARGIN_RIGHT=Højre margin på PDF -MAIN_PDF_MARGIN_TOP=Top margin på PDF +SamePriceAlsoForSharedCompanies=Bruger du et multivirksomhed modul, med valget "Enkelt pris", vil prisen også være den samme for alle virksomheder, hvis produkter deles mellem miljøer +ModuleEnabledAdminMustCheckRights=Modulet er blevet aktiveret. Rettigheder til aktiverede modul(er) blev kun givet til administratorbrugere. Du skal muligvis give rettigheder til andre brugere eller grupper manuelt, hvis det er nødvendigt. +UserHasNoPermissions=Denne bruger har ingen rettigheder defineret +TypeCdr=Brug "Ingen", hvis betalingsdatoen er fakturadato plus et delta i dage (delta er feltet "%s")
Brug "Ved slutningen af måneden", hvis datoen efter delta skal øges for at nå slutningen måned (+ et valgfrit "%s" i dage)
Brug "Nuværende/Næste" for at få betalingsterminsdatoen til at være den første N'te i måneden efter delta (delta er feltet "%s", N gemmes i feltet "%s") +BaseCurrency=Virksomhedens referencevaluta (gå ind i virksomhedens opsætning for at ændre dette) +WarningNoteModuleInvoiceForFrenchLaw=Dette modul %s er i overensstemmelse med fransk lovgivning (Loi Finance 2016). +WarningNoteModulePOSForFrenchLaw=Dette modul %s er i overensstemmelse med fransk lovgivning (Loi Finance 2016), fordi modulet Non Reversible Logs automatisk aktiveres. +WarningInstallationMayBecomeNotCompliantWithLaw=Du forsøger at installere modul %s, som er et eksternt modul. Aktivering af et eksternt modul betyder, at du har tillid til udgiveren af dette modul, og at du er sikker på, at dette modul ikke har en negativ indvirkning på din applikations virkemåde og er i overensstemmelse med lovene i dit land (%s). Hvis modulet introducerer en ulovlig funktion, bliver du ansvarlig for brugen af ulovlig software. +MAIN_PDF_MARGIN_LEFT=Venstre margen på PDF +MAIN_PDF_MARGIN_RIGHT=Højre margen på PDF +MAIN_PDF_MARGIN_TOP=Topmargen på PDF MAIN_PDF_MARGIN_BOTTOM=Bundmargen på PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Højde for logo på PDF MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Tilføj kolonne til billede på forslagslinjer -MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Kolonnens bredde, hvis der tilføjes et billede på linjer -MAIN_PDF_NO_SENDER_FRAME=Skjul grænser på afsenderadresseramme -MAIN_PDF_NO_RECIPENT_FRAME=Skjul grænser for modtageradresseramme +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Spaltens bredde, hvis et billede tilføjes på linjer +MAIN_PDF_NO_SENDER_FRAME=Skjul kanter på afsenderadresserammen +MAIN_PDF_NO_RECIPENT_FRAME=Skjul kanter på receptadresserammen MAIN_PDF_HIDE_CUSTOMER_CODE=Skjul kundekode -MAIN_PDF_HIDE_SENDER_NAME=Skjul afsender/firmanavn i adresseblok +MAIN_PDF_HIDE_SENDER_NAME=Skjul afsender/virksomhedsnavn i adresseblok PROPOSAL_PDF_HIDE_PAYMENTTERM=Skjul betalingsbetingelser -PROPOSAL_PDF_HIDE_PAYMENTMODE=Skjul betalingsmetode -MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Tilføj elektronisk login i PDF -NothingToSetup=Der kræves ingen specifik opsætning for dette modul. +PROPOSAL_PDF_HIDE_PAYMENTMODE=Skjul betalingsmåde +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Tilføj elektronisk log i PDF +NothingToSetup=Der kræves ingen specifik opsætning af dette modul. SetToYesIfGroupIsComputationOfOtherGroups=Indstil dette til ja, hvis denne gruppe er en beregning af andre grupper -EnterCalculationRuleIfPreviousFieldIsYes=Indtast beregningsregel, hvis det forrige felt blev indstillet til Ja.
For eksempel:
CODEGRP1 + CODEGRP2 +EnterCalculationRuleIfPreviousFieldIsYes=Indtast beregningsregel, hvis forrige felt var sat til Ja.
For eksempel:
CODEGRP1+CODEGRP2 SeveralLangugeVariatFound=Flere sprogvarianter fundet RemoveSpecialChars=Fjern specialtegn -COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter til ren værdi (COMPANY_AQUARIUM_CLEAN_REGEX) -COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter til ren værdi (COMPANY_DIGITARIA_CLEAN_REGEX) -COMPANY_DIGITARIA_UNIQUE_CODE=Duplikat ikke tilladt -GDPRContact=Databeskyttelsesansvarlig (DPO, Data Privacy eller GDPR-kontakt) -GDPRContactDesc=Hvis du opbevarer personoplysninger i dit informationssystem, kan du her navngive den kontaktperson, der er ansvarlig for den generelle databeskyttelsesforordning +COMPANY_AQUARIUM_CLEAN_REGEX=Regex-filter for at rense værdi (COMPANY_AQUARIUM_CLEAN_REGEX) +COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter for at rense værdi (COMPANY_DIGITARIA_CLEAN_REGEX) +COMPANY_DIGITARIA_UNIQUE_CODE=Duplikat er ikke tilladt +GDPRContact=Databeskyttelsesansvarlig (DPO, databeskyttelse eller GDPR-kontakt) +GDPRContactDesc=Hvis du opbevarer personoplysninger i dit informationssystem, kan du her navngive den kontaktperson, der er ansvarlig for GDPR HelpOnTooltip=Hjælpetekst til at vise på værktøjstip -HelpOnTooltipDesc=Indsæt tekst eller en oversættelsessnøgle her for at teksten skal vises i et værktøjstip, når dette felt vises i en formular -YouCanDeleteFileOnServerWith=Du kan slette denne fil på serveren med kommandolinje:
%s -ChartLoaded=Kort over konto indlæst -SocialNetworkSetup=Opsætning af modul Sociale netværk -EnableFeatureFor=Aktivér funktioner til %s -VATIsUsedIsOff=Bemærk: Muligheden for at bruge salgsafgift eller moms er blevet indstillet til Fra i menuen %s - %s, så Salgsskat eller moms anvendes altid 0 for salg. +HelpOnTooltipDesc=Indsæt tekst eller en oversættelsesnøgle her, så teksten vises i et værktøjstip, når dette felt vises i en formular +YouCanDeleteFileOnServerWith=Du kan slette denne fil på serveren med kommandolinjen:
%s +ChartLoaded=Kontoplan indlæst +SocialNetworkSetup=Opsætning af Sociale netværk modul +EnableFeatureFor=Aktiver funktioner til %s +VATIsUsedIsOff=Bemærk: Muligheden for at bruge moms er sat til Off i menuen %s - %s, så moms sats vil altid være 0 for salg. SwapSenderAndRecipientOnPDF=Skift afsender- og modtageradresseposition på PDF-dokumenter -FeatureSupportedOnTextFieldsOnly=Advarsel, funktion understøttet kun i tekstfelter og kombinationslister. Også en URL-parameterhandling = Opret eller handling = redigering skal indstilles ELLER sidenavnet skal slutte med 'new.php' for at udløse denne funktion. -EmailCollector=Email samler -EmailCollectorDescription=Tilføj et planlagt job og en opsætningsside for at scanne jævnligt emailkasser (ved hjælp af IMAP-protokollen) og optag e-mails, der er modtaget i din ansøgning, på det rigtige sted og / eller lav nogle poster automatisk (som muligheder). -NewEmailCollector=Ny Email Collector -EMailHost=Vært af e-mail-IMAP-server -MailboxSourceDirectory=Postkasse kilde bibliotek -MailboxTargetDirectory=Postkasse målkatalog -EmailcollectorOperations=Operationer at gøre af samleren -EmailcollectorOperationsDesc=Opgaver udføres fra øverste til nederste ordre -MaxEmailCollectPerCollect=Maks antal Emails indsamlet pr. Samling -CollectNow=Indsamle nu -ConfirmCloneEmailCollector=Er du sikker på, at du vil klone e-mail-samleren %s? -DateLastCollectResult=Dato for seneste indsamlingsforsøg -DateLastcollectResultOk=Dato for seneste succes med indsamling +FeatureSupportedOnTextFieldsOnly=Advarsel, funktion understøttet kun på tekstfelter og kombinationslister. Også en URL-parameter action=create eller action=edit skal indstilles ELLER sidenavn skal slutte med 'new.php' for at udløse denne funktion. +EmailCollector=E-mail samler +EmailCollectors=E-mail samlere +EmailCollectorDescription=Tilføj et planlagt job og en opsætningsside for at scanne regelmæssigt e-mail-bokse (ved hjælp af IMAP protokol) og registrere e-mails modtaget i dit program, på det rigtige sted og/eller oprette nogle poster automatisk (såsom kundeemner). +NewEmailCollector=Ny e-mail samler +EMailHost=Vært for e-mail IMAP-server +MailboxSourceDirectory=Postkassens kildemappe +MailboxTargetDirectory=Postkassens målmappe +EmailcollectorOperations=Operationer, der skal udføres af samler +EmailcollectorOperationsDesc=Operationer udføres fra top til bund +MaxEmailCollectPerCollect=Maks. antal indsamlede e-mails pr. indsamling +CollectNow=Indsaml nu +ConfirmCloneEmailCollector=Er du sikker på, at du vil klone e-mail samleren %s? +DateLastCollectResult=Dato for seneste opsamlingsforsøg +DateLastcollectResultOk=Dato for seneste gennemførte indindsamling LastResult=Seneste resultat -EmailCollectorHideMailHeaders=Inkluder ikke indholdet af e-mail-headeren i det gemte indhold af indsamlede e-mails -EmailCollectorHideMailHeadersHelp=Når det er aktiveret, tilføjes e-mail-headers ikke i slutningen af e-mail-indholdet, der er gemt som begivenheder. -EmailCollectorConfirmCollectTitle=Email samle bekræftelse +EmailCollectorHideMailHeaders=Inkluder ikke indholdet af e-mail headeren i det gemte indhold af indsamlede e-mails +EmailCollectorHideMailHeadersHelp=Når dette er aktiveret, tilføjes e-mail headers ikke i slutningen af e-mail indholdet, der er gemt som en begivenheds hændelser. +EmailCollectorConfirmCollectTitle=E-mail samler bekræftelse EmailCollectorConfirmCollect=Vil du køre denne samler nu? -EmailCollectorExampleToCollectTicketRequestsDesc=Saml e-mails, der matcher nogle regler, og opret automatisk en billet (modulbillet skal være aktiveret) med e-mail-oplysningerne. Du kan bruge denne samler, hvis du yder støtte via e-mail, så din billetanmodning bliver automatisk genereret. Aktiver også Collect_Responses for at indsamle svar fra din klient direkte på billetvisningen (du skal svare fra Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Eksempel på indsamling af billetanmodningen (kun første besked) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan din postkasse "Sendt" mappe for at finde e-mails, der blev sendt som svar på en anden e-mail direkte fra din e-mail-software og ikke fra Dolibarr. Hvis en sådan e-mail findes, registreres svaret i Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Eksempel på indsamling af e-mail-svar sendt fra en ekstern e-mail-software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Saml alle e-mails, der er et svar på en e-mail sendt fra din ansøgning. En begivenhed (Module Agenda skal være aktiveret) med e-mail-svaret vil blive optaget på det gode sted. For eksempel, hvis du sender et kommercielt forslag, ordre, faktura eller besked om en billet via e-mail fra applikationen, og din kunde besvarer din e-mail, vil systemet automatisk fange svaret og tilføje det i din ERP. +EmailCollectorExampleToCollectTicketRequestsDesc=Saml e-mails, der matcher nogle regler, og opret automatisk en opgave (opgave modulet skal være aktiveret) med e-mail oplysningerne. Du kan bruge denne samler, hvis du yder support via e-mail, så din opgaveanmodning bliver automatisk genereret. Aktiver også Collect_Responses for at indsamle svar fra din klient direkte på opgavevisningen (du skal svare fra Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Eksempel på indsamling af opgaveanmodningen (kun første besked) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan din postkasse "Sendt" mappe for at finde e-mails, der blev sendt som svar på en anden e-mail direkte fra dit e-mail program og ikke fra Dolibarr. Hvis en sådan e-mail findes, registreres svaret i Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Eksempel på indsamling af e-mail svar sendt fra et ekstern e-mail program +EmailCollectorExampleToCollectDolibarrAnswersDesc=Saml alle e-mails, der er et svar på en e-mail sendt fra dit program. En begivenhed (Modulet Tidsplan skal være aktiveret) med e-mail svaret vil blive optaget på det rigtige sted. For eksempel, hvis du sender et tilbud, ordre, faktura eller besked om en opgave via e-mail fra programmet, og modtageren besvarer din e-mail, vil systemet automatisk fange svaret og tilføje det i din ERP. EmailCollectorExampleToCollectDolibarrAnswers=Eksempel, der samler alle indgående beskeder som svar på beskeder sendt fra Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Saml e-mails, der matcher nogle regler, og opret automatisk et kundeemne (modulprojekt skal være aktiveret) med e-mail-oplysningerne. Du kan bruge denne samler, hvis du vil følge dit lead ved hjælp af modulet Projekt (1 lead = 1 projekt), så dine leads bliver automatisk genereret. Hvis indsamleren Collect_Responses også er aktiveret, når du sender en e-mail fra dine kundeemner, forslag eller ethvert andet objekt, kan du også se svar fra dine kunder eller partnere direkte på applikationen.
Bemærk: Med dette indledende eksempel genereres titlen på kundeemnet inklusive e-mailen. Hvis tredjeparten ikke kan findes i databasen (ny kunde), vil leadet blive knyttet til tredjeparten med ID 1. -EmailCollectorExampleToCollectLeads=Eksempel på indsamling af kundeemner -EmailCollectorExampleToCollectJobCandidaturesDesc=Saml e-mails, der ansøger om jobtilbud (Modulrekruttering skal være aktiveret). Du kan fuldføre denne samler, hvis du automatisk vil oprette en kandidatur til en jobanmodning. Bemærk: Med dette indledende eksempel genereres titlen på kandidaturen inklusive e-mailen. -EmailCollectorExampleToCollectJobCandidatures=Eksempel på indsamling af jobkandidater modtaget på e-mail -NoNewEmailToProcess=Ingen ny email (matchende filtre), der skal behandles -NothingProcessed=Intet gjort -XEmailsDoneYActionsDone=%s e-mails kvalificerede, %s e-mails er behandlet (for %s-registrering / handlinger udført) +EmailCollectorExampleToCollectLeadsDesc=Indsaml e-mails, der matcher nogle regler, og opret automatisk et kundeemne (modulprojekt skal være aktiveret) med e-mail-oplysningerne. Du kan bruge denne samler, hvis du vil følge dit lead ved hjælp af modulet Projekt (1 lead = 1 projekt), så dine leads bliver automatisk genereret. Hvis samleren Collect_Responses også er aktiveret, når du sender en e-mail fra dine kundeemner, forslag eller ethvert andet objekt, kan du også se svar fra dine kunder eller partnere direkte i applikationen.
Bemærk: Med dette indledende eksempel genereres titlen på kundeemnet inklusive e-mailen. Hvis tredjeparten ikke kan findes i databasen (ny kunde), vil kundeemnet blive knyttet til tredjeparten med ID 1. +EmailCollectorExampleToCollectLeads=Eksempel på samling af kundeemner +EmailCollectorExampleToCollectJobCandidaturesDesc=Saml e-mails, der ansøger om jobtilbud (Rekrutterings modulet skal være aktiveret). Du kan fuldføre denne samler, hvis du automatisk vil oprette et kandidatur til en jobansøgning. Bemærk: Med dette indledende eksempel genereres titlen på kandidaturen inklusive e-mailen. +EmailCollectorExampleToCollectJobCandidatures=Eksempel på indsamling af jobkandidater modtaget via e-mail +NoNewEmailToProcess=Ingen ny e-mail (matchende filtre) at behandle +NothingProcessed=Intet udført +XEmailsDoneYActionsDone=%s e-mails prækvalificeret, %s e-mails behandlet med succes (for %s registrering/handlinger udført) RecordEvent=Optag en begivenhed i dagsordenen (med typen E-mail sendt eller modtaget) -CreateLeadAndThirdParty=Opret et mulighed (og en tredjepart om nødvendigt) -CreateTicketAndThirdParty=Opret en billet (linket til en tredjepart, hvis tredjeparten blev indlæst af en tidligere handling eller blev gættet fra en tracker i e-mail-headeren, uden tredjemand ellers) -CodeLastResult=Latest result code +CreateLeadAndThirdParty=Opret et kundeemne (og en tredjepart om nødvendigt) +CreateTicketAndThirdParty=Opret en billet (linket til en tredjepart, hvis tredjeparten blev indlæst af en tidligere handling eller blev gættet fra en tracker i e-mail headeren, uden tredjemand ellers) +CodeLastResult=Seneste resultatkode NbOfEmailsInInbox=Antal e-mails i kildekataloget -LoadThirdPartyFromName=Indlæs tredjeparts søgning på %s (kun belastning) -LoadThirdPartyFromNameOrCreate=Indlæs tredjepartssøgning på %s (opret hvis ikke fundet) -AttachJoinedDocumentsToObject=Gem vedhæftede filer i objektdokumenter, hvis der findes en ref for et objekt i e-mail-emnet. -WithDolTrackingID=Besked fra en samtale startet af en første e-mail sendt fra Dolibarr -WithoutDolTrackingID=Besked fra en samtale startet af en første e-mail, der IKKE blev sendt fra Dolibarr +LoadThirdPartyFromName=Indlæs tredjepartssøgning på %s (kun indlæsning) +LoadThirdPartyFromNameOrCreate=Indlæs tredjepartssøgning på %s (opret, hvis den ikke findes) +AttachJoinedDocumentsToObject=Gem vedhæftede filer i objektdokumenter, hvis der findes en ref af et objekt i e-mail emnet. +WithDolTrackingID=Besked fra en samtale initieret af en første e-mail sendt fra Dolibarr +WithoutDolTrackingID=Besked fra en samtale initieret af en første e-mail IKKE sendt fra Dolibarr WithDolTrackingIDInMsgId=Besked sendt fra Dolibarr WithoutDolTrackingIDInMsgId=Besked IKKE sendt fra Dolibarr CreateCandidature=Opret jobansøgning -FormatZip=Zip -MainMenuCode=Menu indtastningskode (hovedmenu) +FormatZip=ZIP +MainMenuCode=Menuindgangskode (hovedmenu) ECMAutoTree=Vis automatisk ECM-træ -OperationParamDesc=Definer de regler, der skal bruges til at udtrække eller angive værdier.
Eksempel på operationer, der skal udtrække et navn fra e-mailens emne:
name=EXTRACT:SUBJECT:Besked fra virksomheden ([^\n] *)
eksempel til operationer, der skaber objekter:
objproperty1 = SET: værdien til sæt
objproperty2 = SET: en værdi inklusive værdi af __objproperty1__
objproperty3 = SETIFEMPTY: værdi anvendes, hvis objproperty3 ikke allerede defineret
objproperty4 = EKSTRAKT: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY(Mit firmanavn er\\s(Mit firmanavn er\\s: [^\\s]*)

Brug en ; char som separator for at udtrække eller indstille flere egenskaber. +OperationParamDesc=Definer de regler, der skal bruges til at udtrække eller angive værdier.
Eksempel på operationer, der skal udtrække et navn fra e-mailens emne:
name=EXTRACT:SUBJECT:Besked fra virksomheden ([^\\n]*)
Eksempel på handlinger, der opretter objekter:
objproperty1=SET:værdien der skal indstilles
objproperty2=SET:en værdi inklusive værdien af __objproperty1__
objproperty3=SETIFEMPTY:værdi, der bruges, hvis objproperty3 ikke allerede er defineret
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mit firmanavn er\\s([^\\s]*)

Brug en ; karakter som separator for at udtrække eller indstille flere egenskaber. OpeningHours=Åbningstider -OpeningHoursDesc=Indtast her firmaets almindelige åbningstider. -ResourceSetup=Konfiguration af ressource modul -UseSearchToSelectResource=Brug en søgeformular til at vælge en ressource (i stedet for en rullemenu). -DisabledResourceLinkUser=Deaktiver funktion for at forbinde en ressource til brugere -DisabledResourceLinkContact=Deaktiver funktion for at forbinde en ressource til kontakter -EnableResourceUsedInEventCheck=Forbyd brug af den samme ressource på samme tid i dagsordenen -ConfirmUnactivation=Bekræft modul reset -OnMobileOnly=Kun på lille skærm (smartphone) -DisableProspectCustomerType=Deaktiver tredjepartstypen "Prospekt + Kunder" (så tredjepart skal være "Prospekt" eller "Kunder", men kan ikke være begge) -MAIN_OPTIMIZEFORTEXTBROWSER=Forenkle brugergrænsefladen til blindperson -MAIN_OPTIMIZEFORTEXTBROWSERDesc=Aktivér denne indstilling, hvis du er blind person, eller hvis du bruger programmet fra en tekstbrowser som Lynx eller Links. -MAIN_OPTIMIZEFORCOLORBLIND=Skift interfacefarve til farveblind person -MAIN_OPTIMIZEFORCOLORBLINDDesc=Aktivér denne indstilling, hvis du er en farveblind person, i nogle tilfælde ændrer grænsefladen farveopsætning for at øge kontrasten. -Protanopia=Protanopi +OpeningHoursDesc=Indtast her din virksomheds almindelige åbningstider. +ResourceSetup=Opsætning af ressourcemodul +UseSearchToSelectResource=Brug en søgeformular til at vælge en ressource (i stedet for en rulleliste). +DisabledResourceLinkUser=Deaktiver funktion at knytte en ressource til brugere +DisabledResourceLinkContact=Deaktiver funktion at knytte en ressource til kontakter +EnableResourceUsedInEventCheck=Forbyd brugen af den samme ressource på samme tid i dagsordenen +ConfirmUnactivation=Bekræft modulnulstilling +OnMobileOnly=Kun på lille skærm (smartphone). +DisableProspectCustomerType=Deaktiver "Kundeemne + Kunde" tredjepartstype (så tredjepart skal være "Kundeemne" eller "Kunde", men kan ikke være begge dele) +MAIN_OPTIMIZEFORTEXTBROWSER=Forenklet grænseflade for blinde +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Aktiver denne mulighed, hvis du er en blind person, eller hvis du bruger programmet fra en tekstbrowser som Lynx eller Links. +MAIN_OPTIMIZEFORCOLORBLIND=Skift interfaces farve for farveblind person +MAIN_OPTIMIZEFORCOLORBLINDDesc=Aktiver denne mulighed, hvis du er en farveblind person, i nogle tilfælde vil grænsefladen ændre farveopsætningen for at øge kontrasten. +Protanopia=Protanopia Deuteranopes=Deuteranopes Tritanopes=Tritanopes -ThisValueCanOverwrittenOnUserLevel=Denne værdi kan overskrives af hver bruger fra sin brugerside - fanebladet '%s' -DefaultCustomerType=Standard tredjepartstype til "Ny kunde" oprettelsesformular -ABankAccountMustBeDefinedOnPaymentModeSetup=Bemærk: Bankkontoen skal defineres i modulet i hver betalingsmetode (Paypal, Stripe, ...) for at denne funktion skal fungere. -RootCategoryForProductsToSell=Rodkategori af produkter, der skal sælges -RootCategoryForProductsToSellDesc=Hvis det er defineret, er det kun produkter inden for denne kategori eller underordnede i denne kategori, der er tilgængelige i salgsstedet -DebugBar=Debug Bar -DebugBarDesc=Værktøjslinje, der leveres med en masse værktøjer til at forenkle fejlfinding -DebugBarSetup=DebugBar-opsætning +ThisValueCanOverwrittenOnUserLevel=Denne værdi kan overskrives af den enkelte bruger fra dennes brugerside - fanen '%s' +DefaultCustomerType=Standard tredjepartstype for oprettelsesformularen "Ny kunde". +ABankAccountMustBeDefinedOnPaymentModeSetup=Bemærk: Bankkontoen skal være defineret på modulet for hver betalingsmåde (Paypal, Stripe, ...) for at få denne funktion til at virke. +RootCategoryForProductsToSell=Rod kategori af produkter til salg +RootCategoryForProductsToSellDesc=Hvis defineret, vil kun produkter inden for denne kategori eller underkategori i denne kategori være tilgængelige i Point Of Sale +DebugBar=Fejlfindingsbjælke +DebugBarDesc=Værktøjslinje, der kommer med en masse værktøjer til at forenkle fejlfinding +DebugBarSetup=Opsætning af Fejlfindingsbjælke GeneralOptions=Generelle indstillinger LogsLinesNumber=Antal linjer, der skal vises på fanen logfiler -UseDebugBar=Brug fejlfindingslinjen -DEBUGBAR_LOGS_LINES_NUMBER=Antal sidste loglinjer, der skal holdes i konsollen -WarningValueHigherSlowsDramaticalyOutput=Advarsel, højere værdier bremser dramatisk output -ModuleActivated=Modul %s er aktiveret og forsinker grænsefladen +UseDebugBar=Brug Fejlfindingsbjælken +DEBUGBAR_LOGS_LINES_NUMBER=Antal nyeste loglinjer, der skal opbevares i konsollen +WarningValueHigherSlowsDramaticalyOutput=Advarsel, højere værdier sløver output dramatisk +ModuleActivated=Modul %s er aktiveret og gør grænsefladen langsommere ModuleActivatedWithTooHighLogLevel=Modul %s er aktiveret med et for højt logningsniveau (prøv at bruge et lavere niveau for bedre ydeevne og sikkerhed) -ModuleSyslogActivatedButLevelNotTooVerbose=Modul %s er aktiveret, og logniveau (%s) er korrekt (ikke for detaljeret) +ModuleSyslogActivatedButLevelNotTooVerbose=Modul %s er aktiveret, og logniveau (%s) er korrekt (ikke for udførligt) IfYouAreOnAProductionSetThis=Hvis du er i et produktionsmiljø, skal du indstille denne egenskab til %s. AntivirusEnabledOnUpload=Antivirus aktiveret på uploadede filer -SomeFilesOrDirInRootAreWritable=Nogle filer eller mapper er ikke i en skrivebeskyttet tilstand +SomeFilesOrDirInRootAreWritable=Nogle filer eller mapper er ikke i skrivebeskyttet tilstand EXPORTS_SHARE_MODELS=Eksportmodeller deles med alle -ExportSetup=Opsætning af modul Eksport -ImportSetup=Opsætning af modul til import -InstanceUniqueID=Forekomstets unikke ID +ExportSetup=Opsætning af Eksportmodul +ImportSetup=Opsætning af Importmodul +InstanceUniqueID=Unikt ID for instansen SmallerThan=Mindre end LargerThan=Større end -IfTrackingIDFoundEventWillBeLinked=Bemærk, at hvis et sporings-id for et objekt findes i e-mailen, eller hvis e-mailen er et svar fra en e-mail-område, der er indsamlet og linket til et objekt, vil den oprettede begivenhed automatisk blive linket til det kendte relaterede objekt. -WithGMailYouCanCreateADedicatedPassword=Hvis du aktiverer valideringen af 2 trin med en GMail konto, anbefales det at oprette en dedikeret anden adgangskode til applikationen i stedet for at bruge dit eget kontos kodeord fra https://myaccount.google.com/. -EmailCollectorTargetDir=Det kan være en ønsket opførsel at flytte e-mailen til et andet tag/bibliotek, når den blev behandlet med succes. Angiv blot navnet på kataloget her for at bruge denne funktion (Brug IKKE specialtegn i navnet). Bemærk, at du også skal bruge en læse/skrive logind konto. -EmailCollectorLoadThirdPartyHelp=Du kan bruge denne handling til at bruge e-mail-indholdet til at finde og indlæse en eksisterende tredjepart i din database. Den fundne (eller oprettede) tredjepart vil blive brugt til følgende handlinger, der har brug for det.
For eksempel, hvis du vil oprette en tredjepart med et navn udtrukket fra en streng 'Navn: navn at finde' til stede i brødteksten, skal du bruge afsenderens e-mail som e-mail, du kan indstille parameterfeltet sådan:
'email= HEADER:^Fra:(.*);navn=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+IfTrackingIDFoundEventWillBeLinked=Bemærk, at hvis et sporings-id for et objekt findes i e-mail, eller hvis e-mailen er et svar på en e-mail, der er indsamlet og knyttet til et objekt, vil den oprettede hændelse automatisk blive knyttet til det kendte relaterede objekt. +WithGMailYouCanCreateADedicatedPassword=Med en Gmail-konto, hvis du aktiverede 2-trins validering, anbefales det at oprette en dedikeret anden adgangskode til applikationen i stedet for at bruge din egen kontoadgangskode fra https://myaccount.google.com/. +EmailCollectorTargetDir=Det kan være en ønsket adfærd at flytte e-mailen til et anden tag/mappe, når den er blevet behandlet med succes. Indstil blot navnet på mappen her for at bruge denne funktion (brug IKKE specialtegn i navnet). Bemærk, at du også skal bruge en login-konto med læse/skrive rettigheder. +EmailCollectorLoadThirdPartyHelp=Du kan bruge denne handling til at bruge e-mail-indholdet til at finde og indlæse en eksisterende tredjepart i din database. Den fundne (eller oprettede) tredjepart vil blive brugt til følgende handlinger, der har brug for det.
For eksempel, hvis du vil oprette en tredjepart med et navn udtrukket fra en streng 'Navn: navn at finde' til stede i brødteksten, skal du bruge afsenderens e-mail som e-mail, du kan indstille parameterfeltet sådan:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Slutpunkt for %s: %s -DeleteEmailCollector=Slet e-mail-indsamler -ConfirmDeleteEmailCollector=Er du sikker på, at du vil slette denne e-mail-indsamler? -RecipientEmailsWillBeReplacedWithThisValue=Modtager-e-mails erstattes altid med denne værdi +DeleteEmailCollector=Slet e-mail-samler +ConfirmDeleteEmailCollector=Er du sikker på, at du vil slette denne e-mail-samler? +RecipientEmailsWillBeReplacedWithThisValue=Modtagers e-mails vil altid blive erstattet med denne værdi AtLeastOneDefaultBankAccountMandatory=Der skal defineres mindst 1 standardbankkonto RESTRICT_ON_IP=Tillad kun API-adgang til bestemte klient-IP'er (jokertegn ikke tilladt, brug mellemrum mellem værdier). Tom betyder, at alle kunder har adgang. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Baseret på biblioteket SabreDAV version NotAPublicIp=Ikke en offentlig IP -MakeAnonymousPing=Lav en anonym Ping '+1' til Dolibarr foundation-serveren (udføres kun 1 gang efter installationen) for at lade fundamentet tælle antallet af Dolibarr-installation. -FeatureNotAvailableWithReceptionModule=Funktion ikke tilgængelig, når modulmodtagelse er aktiveret +MakeAnonymousPing=Lav et anonymt Ping '+1' til Dolibarr Foundation-serveren (kun udført 1 gang efter installationen) for at tillade Foundation at tælle antallet af Dolibarr-installationer. +FeatureNotAvailableWithReceptionModule=Funktionen er ikke tilgængelig, når Modtagelsesmodulet er aktiveret EmailTemplate=Skabelon til e-mail EMailsWillHaveMessageID=E-mails har et mærke 'Referencer', der matcher denne syntaks PDF_SHOW_PROJECT=Vis projekt på dokument -ShowProjectLabel=Projektmærke -PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil have nogle tekster i din PDF kopieret på 2 forskellige sprog i den samme genererede PDF, skal du indstille her dette andet sprog, så genereret PDF indeholder 2 forskellige sprog på samme side, det, der er valgt, når du genererer PDF og denne ( kun få PDF-skabeloner understøtter dette). Hold tomt i 1 sprog pr. PDF. -PDF_USE_A=Lav PDF -dokumenter med format PDF/A i stedet for PDF -format som standard -FafaIconSocialNetworksDesc=Indtast her koden for et FontAwesome-ikon. Hvis du ikke ved, hvad der er FontAwesome, kan du bruge den generiske værdi fa-adressebog. -RssNote=Bemærk: Hver RSS-feed-definition indeholder en widget, som du skal aktivere for at have den tilgængelig i instrumentbrættet\n  +ShowProjectLabel=Projektetiket +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Inkluder alias i tredjepartsnavn +THIRDPARTY_ALIAS=Navn tredjepart - Alias tredjepart +ALIAS_THIRDPARTY=Alias tredjepart - Navngiv tredjepart +PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil have nogle tekster i din PDF duplikeret på 2 forskellige sprog i den samme genererede PDF, skal du her indstille dette andet sprog, så genereret PDF vil indeholde 2 forskellige sprog på samme side, det der blev valgt ved generering af PDF og dette (kun få PDF-skabeloner understøtter dette). Hold tom for et sprog pr. PDF. +PDF_USE_A=Generer PDF-dokumenter med formatet PDF/A i stedet for standardformatet PDF +FafaIconSocialNetworksDesc=Indtast her koden for et FontAwesome-ikon. Hvis du ikke ved, hvad FontAwesome er, kan du bruge den generiske værdi fa-address-book. +RssNote=Bemærk: Hver RSS-feeddefinition giver en widget, som du skal aktivere for at have den tilgængelig på dashboardet JumpToBoxes=Gå til Opsætning -> Widgets -MeasuringUnitTypeDesc=Brug her en værdi som "størrelse", "overflade", "volumen", "vægt", "tid" -MeasuringScaleDesc=Skalaen er antallet af steder, du skal flytte decimaldelen for at matche standardreferenceenheden. For "tid" -enhedstype er det antallet af sekunder. Værdier mellem 80 og 99 er reserverede værdier. +MeasuringUnitTypeDesc=Brug her en værdi som "størrelse", "overflade", "volume", "vægt", "tid" +MeasuringScaleDesc=Skalaen er det antal steder, du skal flytte decimaldelen for at matche standardreferenceenheden. For "tids" enhedstype er det antallet af sekunder. Værdier mellem 80 og 99 er reserverede værdier. TemplateAdded=Skabelon tilføjet -TemplateUpdated=Skabelonen opdateret -TemplateDeleted=Skabelonen blev slettet -MailToSendEventPush=E-mail om påmindelse om begivenhed +TemplateUpdated=Skabelonen er opdateret +TemplateDeleted=Skabelonen er slettet +MailToSendEventPush=E-mail med påmindelse om begivenhed SwitchThisForABetterSecurity=Det anbefales at skifte denne værdi til %s for mere sikkerhed DictionaryProductNature= Produktets art -CountryIfSpecificToOneCountry=Land (hvis det er specifikt for et givet land) +CountryIfSpecificToOneCountry=Land (hvis specifikt for et givet land) YouMayFindSecurityAdviceHere=Du kan finde sikkerhedsrådgivning her -ModuleActivatedMayExposeInformation=Denne PHP-udvidelse kan udsætte følsomme data. Hvis du ikke har brug for det, skal du deaktivere det. -ModuleActivatedDoNotUseInProduction=Et modul designet til udviklingen er blevet aktiveret. Aktivér det ikke i et produktionsmiljø. -CombinationsSeparator=Separatorkarakter til produktkombinationer +ModuleActivatedMayExposeInformation=Denne PHP-udvidelse kan afsløre følsomme data. Hvis du ikke har brug for den, skal du deaktivere den. +ModuleActivatedDoNotUseInProduction=Et modul designet til udviklingen er blevet aktiveret. Aktiver det ikke i et produktionsmiljø. +CombinationsSeparator=Skilletegn for produktkombinationer SeeLinkToOnlineDocumentation=Se link til online dokumentation i topmenuen for eksempler -SHOW_SUBPRODUCT_REF_IN_PDF=Hvis funktionen "%s" i modul %s bruges, skal du vise detaljer om delprodukter af et sæt på PDF. +SHOW_SUBPRODUCT_REF_IN_PDF=Hvis funktionen "%s" i modulet %s bruges, vises detaljer om delprodukter af et sæt i PDF. AskThisIDToYourBank=Kontakt din bank for at få dette ID -AdvancedModeOnly=Tilladelse er kun tilgængelig i udvidet tilladelsestilstand -ConfFileIsReadableOrWritableByAnyUsers=Conf-filen kan læses eller skrives af alle brugere. Giv kun tilladelse til webserverbrugere og -grupper. +AdvancedModeOnly=Tilladelse er kun tilgængelig i avanceret tilladelsestilstand +ConfFileIsReadableOrWritableByAnyUsers=Conf-filen kan læses eller skrives af alle brugere. Giv kun tilladelsen til webserver service bruger og gruppe. MailToSendEventOrganization=Begivenhedsorganisation MailToPartnership=Partnerskab -AGENDA_EVENT_DEFAULT_STATUS=Standardhændelsesstatus, når du opretter en begivenhed fra formularen -YouShouldDisablePHPFunctions=Du skal deaktivere PHP-funktioner -IfCLINotRequiredYouShouldDisablePHPFunctions=Bortset fra hvis du har brug for at køre systemkommandoer i brugerdefineret kode, skal du deaktivere PHP-funktioner -PHPFunctionsRequiredForCLI=Til shell-formål (som planlagt jobbackup eller kørsel af et anitivurs-program) skal du beholde PHP-funktioner -NoWritableFilesFoundIntoRootDir=Ingen skrivbare filer eller mapper til de almindelige programmer blev fundet i din rodkatalog (God) +AGENDA_EVENT_DEFAULT_STATUS=Standard hændelsesstatus ved oprettelse af en hændelse fra formularen +YouShouldDisablePHPFunctions=Du bør deaktivere PHP-funktioner +IfCLINotRequiredYouShouldDisablePHPFunctions=Undtagen hvis du har brug for at køre systemkommandoer i brugerdefineret kode, skal du deaktivere PHP-funktioner +PHPFunctionsRequiredForCLI=Til shell-formål (som planlagt jobbackup eller kørsel af et antitivurs-program), skal du beholde PHP-funktioner +NoWritableFilesFoundIntoRootDir=Der blev ikke fundet nogen skrivbare filer eller mapper for de almindelige programmer i din rodmappe (godt) RecommendedValueIs=Anbefalet: %s -Recommended=Anbefalet +Recommended=Anbefalede NotRecommended=Ikke anbefalet ARestrictedPath=Nogle begrænsede veje CheckForModuleUpdate=Se efter opdateringer til eksterne moduler -CheckForModuleUpdateHelp=Denne handling opretter forbindelse til redaktører for eksterne moduler for at kontrollere, om en ny version er tilgængelig. +CheckForModuleUpdateHelp=Denne handling vil oprette forbindelse til redaktører af eksterne moduler for at kontrollere om en ny version er tilgængelig. ModuleUpdateAvailable=En opdatering er tilgængelig NoExternalModuleWithUpdate=Ingen opdateringer fundet for eksterne moduler -SwaggerDescriptionFile=Swagger API beskrivelsesfil (f.eks. Til brug med redoc) -YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Du aktiverede forældet WS API. Du skal bruge REST API i stedet. -RandomlySelectedIfSeveral=Valgt tilfældigt, hvis der er flere billeder tilgængelige -DatabasePasswordObfuscated=Databaseadgangskode er tilsløret i conf-fil -DatabasePasswordNotObfuscated=Databaseadgangskode er IKKE tilsløret i conf-fil +SwaggerDescriptionFile=Swagger API beskrivelsesfil (til brug med for eksempel redoc) +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Du har aktiveret forældet WS API. Du bør bruge REST API i stedet. +RandomlySelectedIfSeveral=Tilfældigt valgt, hvis flere billeder er tilgængelige +DatabasePasswordObfuscated=Databaseadgangskode er tilsløret i conf-filen +DatabasePasswordNotObfuscated=Databaseadgangskoden er IKKE sløret i conf-filen APIsAreNotEnabled=API-moduler er ikke aktiveret YouShouldSetThisToOff=Du skal indstille dette til 0 eller fra -InstallAndUpgradeLockedBy=Installer og opgraderinger låses af filen %s +InstallAndUpgradeLockedBy=Installation og opgraderinger er låst af filen %s OldImplementation=Gammel implementering -PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Hvis nogle online betalingsmoduler er aktiveret (Paypal, Stripe, ...), skal du tilføje et link i PDF'en for at foretage online betalingen +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Hvis nogle online betalingsmoduler er aktiveret (Paypal, Stripe, ...), skal du tilføje et link i PDF'en for at foretage onlinebetalingen DashboardDisableGlobal=Deaktiver globalt alle tommelfingre på åbne objekter -BoxstatsDisableGlobal=Deaktiver fuldstændig boksstatistik -DashboardDisableBlocks=Tommelfingre af åbne objekter (til behandling eller for sent) på hoveddashboardet -DashboardDisableBlockAgenda=Deaktiver tommelfingeren for dagsordenen +BoxstatsDisableGlobal=Deaktiver fuldstændig boksstatistikker +DashboardDisableBlocks=Tommelfinger af åbne objekter (til at behandle eller sent) på det primære dashboard +DashboardDisableBlockAgenda=Deaktiver tommelfingeren for dagsorden DashboardDisableBlockProject=Deaktiver tommelfingeren for projekter DashboardDisableBlockCustomer=Deaktiver tommelfingeren for kunder DashboardDisableBlockSupplier=Deaktiver tommelfingeren for leverandører @@ -2227,12 +2231,12 @@ DashboardDisableBlockTicket=Deaktiver tommelfingeren for billetter DashboardDisableBlockBank=Deaktiver tommelfingeren for banker DashboardDisableBlockAdherent=Deaktiver tommelfingeren for medlemskaber DashboardDisableBlockExpenseReport=Deaktiver tommelfingeren for udgiftsrapporter -DashboardDisableBlockHoliday=Deaktiver tommelfingeren for blade -EnabledCondition=Betingelse for at få feltet aktiveret (hvis det ikke er aktiveret, er synligheden altid deaktiveret) +DashboardDisableBlockHoliday=Deaktiver tommelfingeren for fravær +EnabledCondition=Betingelse for at have felt aktiveret (hvis ikke aktiveret, vil synlighed altid være slået fra) IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Hvis du vil bruge en anden moms, skal du også aktivere den første moms IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Hvis du vil bruge en tredje moms, skal du også aktivere den første moms LanguageAndPresentation=Sprog og præsentation -SkinAndColors=Hud og farver +SkinAndColors=Skins og farver IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Hvis du vil bruge en anden moms, skal du også aktivere den første moms IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Hvis du vil bruge en tredje moms, skal du også aktivere den første moms PDF_USE_1A=Generer PDF med PDF/A-1b-format @@ -2240,26 +2244,38 @@ MissingTranslationForConfKey = Manglende oversættelse for %s NativeModules=Native moduler NoDeployedModulesFoundWithThisSearchCriteria=Ingen moduler fundet til disse søgekriterier API_DISABLE_COMPRESSION=Deaktiver komprimering af API-svar -EachTerminalHasItsOwnCounter=Hver terminal bruger sin egen tæller. -FillAndSaveAccountIdAndSecret=Udfyld og gem først konto-id og hemmeligkode +EachTerminalHasItsOwnCounter=Hver terminal bruger sin egen kasse. +FillAndSaveAccountIdAndSecret=Udfyld og gem først konto-id og hemmelighed PreviousHash=Tidligere hash LateWarningAfter="Sen" advarsel efter TemplateforBusinessCards=Skabelon til visitkort i forskellig størrelse InventorySetup= Lageropsætning ExportUseLowMemoryMode=Brug en tilstand med lav hukommelse -ExportUseLowMemoryModeHelp=Brug tilstanden med lav hukommelse til at udføre exec af dumpet (komprimering sker gennem et rør i stedet for ind i PHP-hukommelsen). Denne metode tillader ikke at kontrollere, at filen er fuldført, og fejlmeddelelsen kan ikke rapporteres, hvis den mislykkes. +ExportUseLowMemoryModeHelp=Brug tilstanden med lav hukommelse til at udføre exec af dumpet (komprimering sker gennem en pipe i stedet for i PHP-hukommelsen). Denne metode tillader ikke at kontrollere, at filen er fuldført, og fejlmeddelelsen kan ikke rapporteres, hvis den mislykkes. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface til at fange dolibarr-udløsere og sende det til en URL +WebhookSetup = Webhook opsætning +Settings = Indstillinger +WebhookSetupPage = Webhook opsætningsside ShowQuickAddLink=Vis en knap for hurtigt at tilføje et element i menuen øverst til højre + HashForPing=Hash brugt til ping -ReadOnlyMode=Er instans i "Skrivebeskyttet"-tilstand -DEBUGBAR_USE_LOG_FILE=Brug filen dolibarr.log til at fange logfiler -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Brug filen dolibarr.log til at fange Logs i stedet for at fange live memory. Det giver mulighed for at fange alle logfiler i stedet for kun log af den aktuelle proces (så inklusive den af ajax underanmodningssider), men vil gøre din instans meget meget langsom. Ikke anbefalet. +ReadOnlyMode=Er instansen i "Skrivebeskyttet"-tilstand +DEBUGBAR_USE_LOG_FILE=Brug filen dolibarr.log til at samle logfiler +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Brug filen dolibarr.log til at samle Logs i stedet for at bruge memory. Det giver mulighed for at samle alle logfiler i stedet for kun log af den aktuelle proces (så inklusive den af ajax underanmodningssider), men vil gøre din instans meget meget langsom. Ikke anbefalet. FixedOrPercent=Fast (brug søgeord 'fast') eller procent (brug søgeord 'procent') -DefaultOpportunityStatus=Standardmulighedsstatus (første status, når kundeemne oprettes) +DefaultOpportunityStatus=Standard mulighedsstatus (første status, når kundeemne oprettes) + IconAndText=Ikon og tekst TextOnly=Kun tekst -IconOnlyAllTextsOnHover=Kun ikon - Alle tekster vises under ikonet på musehovedmenulinjen -IconOnlyTextOnHover=Kun ikon - Teksten til ikonet vises under ikonet, når du holder musen over ikonet -IconOnly=Kun ikon - Kun tekst på værktøjstip +IconOnlyAllTextsOnHover=Kun ikon - Alle tekster vises under ikonet når musen føres over menubaren +IconOnlyTextOnHover=Kun ikon - Teksten til ikonet vises under ikonet, når musen føres over ikonet +IconOnly=Kun ikon - Kun tekst som værktøjstip INVOICE_ADD_ZATCA_QR_CODE=Vis ZATCA QR-koden på fakturaer INVOICE_ADD_ZATCA_QR_CODEMore=Nogle arabiske lande har brug for denne QR-kode på deres fakturaer +INVOICE_ADD_SWISS_QR_CODE=Vis den schweiziske QR-Bill-kode på fakturaer UrlSocialNetworksDesc=URL-link til socialt netværk. Brug {socialid} til den variable del, der indeholder det sociale netværks-id. +IfThisCategoryIsChildOfAnother=Hvis denne kategori er en under kategori af en anden +NoName=Intet navn +CIDLookupURL=Modulet bringer en URL, der kan bruges af et eksternt værktøj til at hente navnet på en tredjepart eller kontakt fra dens telefonnummer. URL der skal bruges er: diff --git a/htdocs/langs/da_DK/boxes.lang b/htdocs/langs/da_DK/boxes.lang index d8e1da69fce..94690fc1693 100644 --- a/htdocs/langs/da_DK/boxes.lang +++ b/htdocs/langs/da_DK/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Seneste medlemsabonnementer BoxFicheInter=Latest interventions BoxCurrentAccounts=Open accounts balance BoxTitleMemberNextBirthdays=Fødselsdage i denne måned (medlemmer) -BoxTitleMembersByType=Medlemmer efter type +BoxTitleMembersByType=Medlemmer efter type og status BoxTitleMembersSubscriptionsByYear=Medlemmer Abonnementer efter år BoxTitleLastRssInfos=Latest %s news from %s BoxTitleLastProducts=Produkter / tjenester: sidst %s ændret diff --git a/htdocs/langs/da_DK/cashdesk.lang b/htdocs/langs/da_DK/cashdesk.lang index d47a023d3bd..252ef889d53 100644 --- a/htdocs/langs/da_DK/cashdesk.lang +++ b/htdocs/langs/da_DK/cashdesk.lang @@ -136,3 +136,4 @@ PrintWithoutDetails=Udskriv uden detaljer YearNotDefined=År er ikke defineret TakeposBarcodeRuleToInsertProduct=Stregkoderegel til at indsætte produkt TakeposBarcodeRuleToInsertProductDesc=Regel for at udtrække produktreferencen + en mængde fra en scannet stregkode.
Hvis tom (standardværdi), vil applikationen bruge den fulde stregkode, der er scannet til at finde produktet.

Hvis defineret, skal syntaks være:
ref: NB + qu: NB + qd: NB + andre: NB
hvor NB er antallet af tegn til at bruge til at udtrække data fra det scannede stregkode med:
  • ref : produkt henvisning
  • qu : mængde til sæt ved isætning item (enheder)
  • qd : mængde til sæt ved isætning punkt (decimaler)
  • andre : andre tegn
+AlreadyPrinted=Allerede udskrevet diff --git a/htdocs/langs/da_DK/categories.lang b/htdocs/langs/da_DK/categories.lang index f0fb7cd4f5f..fa51311da75 100644 --- a/htdocs/langs/da_DK/categories.lang +++ b/htdocs/langs/da_DK/categories.lang @@ -3,7 +3,7 @@ Rubrique=Tag/Kategori Rubriques=Tags/Kategorier RubriquesTransactions=Tags/Kategorier af transaktioner categories=tags/kategorier -NoCategoryYet=Intet mærke / kategori af denne type er oprettet +NoCategoryYet=Der er ikke oprettet nogen tag/kategori af denne type In=I AddIn=Tilføj i modify=rette @@ -95,7 +95,9 @@ ShowCategory=Vis tag/kategori ByDefaultInList=Som standard i liste ChooseCategory=Vælg kategori StocksCategoriesArea=Lagerkategorier +TicketsCategoriesArea=Billetter kategorier ActionCommCategoriesArea=Begivenhedskategorier WebsitePagesCategoriesArea=Side-containerkategorier KnowledgemanagementsCategoriesArea=KM artikel Kategorier UseOrOperatorForCategories=Brug 'ELLER' operator til kategorier +AddObjectIntoCategory=Tilføj objekt til kategori diff --git a/htdocs/langs/da_DK/companies.lang b/htdocs/langs/da_DK/companies.lang index 3d947d58d34..0ff30706b14 100644 --- a/htdocs/langs/da_DK/companies.lang +++ b/htdocs/langs/da_DK/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Tredjepartens art NatureOfContact=Kontaktens art Address=Adresse State=Stat/provins +StateId=Stats kode StateCode=Stats-/provinskode StateShort=Stat Region=Region Region-State=Region - Stat Country=Land CountryCode=Landekode -CountryId=Lande-id +CountryId=Lande kode Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (handelsregister) ProfId2CM=Id. prof. 2 (skatteyder nr.) -ProfId3CM=Id. prof. 3 (oprettelsesdekret) -ProfId4CM=Id. prof. 4 (indskudsbevis) +ProfId3CM=Id. prof. 3 (Nr. på oprettelsesdekret) +ProfId4CM=Id. prof. 4 (Indbetalingsbevis nr.) ProfId5CM=Id. prof. 5 (andre) ProfId6CM=- ProfId1ShortCM=Handelsregister ProfId2ShortCM=Skatteyder nr. -ProfId3ShortCM=Dekret om oprettelse -ProfId4ShortCM=Indskudsbevis +ProfId3ShortCM=Nr. på oprettelsesdekret +ProfId4ShortCM=Indskudsbevis nr. ProfId5ShortCM=Andre ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) diff --git a/htdocs/langs/da_DK/errors.lang b/htdocs/langs/da_DK/errors.lang index f290ed2774a..95df5333b5e 100644 --- a/htdocs/langs/da_DK/errors.lang +++ b/htdocs/langs/da_DK/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript må ikke være deaktiveret for at få de ErrorPasswordsMustMatch=Begge har skrevet passwords skal matche hinanden ErrorContactEMail=Der opstod en teknisk fejl. Kontakt administratoren til følgende e-mail %s og giv fejlkoden %s i din besked eller tilføj en skærmkopi af denne side. ErrorWrongValueForField=Felt%s: '%s' stemmer ikke overens med regex-reglen%s +ErrorHtmlInjectionForField=Felt %s: Værdien '%s indeholder skadelig data, som ikke er tilladt. ErrorFieldValueNotIn=Felt %s: '%s' er ikke en værdi fundet i felt %saf %s ErrorFieldRefNotIn=Felt%s: '%s' er ikke en %s eksisterende ref ErrorsOnXLines=%s fundne fejl @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Du skal først konfigurere din kontopla ErrorFailedToFindEmailTemplate=Kunne ikke finde skabelon med kodenavn %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Varighed er ikke defineret i tjenesten. Ingen måde at beregne timeprisen på. ErrorActionCommPropertyUserowneridNotDefined=Brugerens ejer kræves -ErrorActionCommBadType=Den valgte hændelsestype (id: %n, kode: %s) findes ikke i begivenhedstypeordbogen +ErrorActionCommBadType=Den valgte hændelsestype (id: %s, kode: %s) findes ikke i hændelsestype ordbogen CheckVersionFail=Versionskontrol mislykkedes ErrorWrongFileName=Filens navn kan ikke indeholde __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Ikke i ordbogen om betalingsbetingelser, bedes du ændre. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Fejl, alle beløb skal indtastes i samme kolonne ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Du forsøger at betale fakturaer i valutaen %s fra en konto med valutaen %s ErrorInvoiceLoadThirdParty=Kan ikke indlæse tredjepartsobjekt for faktura "%s" ErrorInvoiceLoadThirdPartyKey=Tredjepartsnøgle "%s" ikke indstillet til faktura "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Slet linje er ikke tilladt af den faktiske objektstatus +ErrorDeleteLineNotAllowedByObjectStatus=Slet linje er ikke tilladt af den aktuelle objektstatus ErrorAjaxRequestFailed=Anmodningen mislykkedes +ErrorThirpdartyOrMemberidIsMandatory=Tredjepart eller medlem af partnerskab er obligatorisk +ErrorFailedToWriteInTempDirectory=Kunne ikke skrive i midlertidigt bibliotek +ErrorQuantityIsLimitedTo=Mængden er begrænset til %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Din PHP-parameter upload_max_filesize (%s) er højere end PHP-parameter post_max_size (%s). Dette er ikke en ensartet opsætning. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=Klik her for at opsætte obligatoriske parametre +WarningMandatorySetupNotComplete=Klik her for at indstille hovedparametre WarningEnableYourModulesApplications=Klik her for at aktivere dine moduler og applikationer WarningSafeModeOnCheckExecDir=Advarsel, PHP option safe_mode er på så kommandoen skal opbevares i en mappe angivet af php parameter safe_mode_exec_dir. WarningBookmarkAlreadyExists=Et bogmærke med denne titel eller dette mål (URL), der allerede eksisterer. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Advarsel, du kan ikke oprette en underkonto direkte, du WarningAvailableOnlyForHTTPSServers=Kun tilgængelig, hvis du bruger HTTPS-sikret forbindelse. WarningModuleXDisabledSoYouMayMissEventHere=Modul %s er ikke aktiveret. Så du går måske glip af en masse begivenheder her. WarningPaypalPaymentNotCompatibleWithStrict=Værdien 'Strict' gør, at onlinebetalingsfunktionerne ikke fungerer korrekt. Brug 'Lax' i stedet. +WarningThemeForcedTo=Advarsel, temaet er blevet tvunget til %s af skjult konstant MAIN_FORCETHEME -<<<<<<< HOVED -======= -<<<<<<< HOVED -<<<<<<< HOVED ->>>>>>> gren '15.0' af git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Værdien er ikke gyldig RequireAtLeastXString = Kræver mindst %s karakter (er) @@ -347,12 +347,3 @@ BadSetupOfField = Fejl ved dårlig opsætning af feltet BadSetupOfFieldClassNotFoundForValidation = Fejl ved dårlig opsætning af feltet: Klassen blev ikke fundet til validering BadSetupOfFieldFileNotFound = Fejl ved dårlig opsætning af feltet: Filen blev ikke fundet til inkludering BadSetupOfFieldFetchNotCallable = Fejl dårlig opsætning af felt: Hentning kan ikke kaldes på klassen -<<<<<<< HOVED -======= -======= -======= ->>>>>>> gren '15.0' af git@github.com:Dolibarr/dolibarr.git ->>>>>>> gren '15.0' af git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> gren '15.0' af git@github.com:Dolibarr/dolibarr.git ->>>>>>> gren '15.0' af git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/da_DK/eventorganization.lang b/htdocs/langs/da_DK/eventorganization.lang index dc08104ba5f..caf0e3e0d1b 100644 --- a/htdocs/langs/da_DK/eventorganization.lang +++ b/htdocs/langs/da_DK/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Konference eller stand AmountPaid = Betalt beløb DateOfRegistration = Dato for registrering ConferenceOrBoothAttendee = Konference eller messedeltager +ApplicantOrVisitor=Ansøger eller besøgende +Speaker=Højttaler # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Din betaling for din begivenhe OrganizationEventBulkMailToAttendees=Dette er en påmindelse om din deltagelse i begivenheden som deltager OrganizationEventBulkMailToSpeakers=Dette er en påmindelse om din deltagelse i arrangementet som foredragsholder OrganizationEventLinkToThirdParty=Link til tredjepart (kunde, leverandør eller partner) +OrganizationEvenLabelName=Offentligt navn på konferencen eller standen NewSuggestionOfBooth=Ansøgning om bod NewSuggestionOfConference=Ansøgning om en konference diff --git a/htdocs/langs/da_DK/externalsite.lang b/htdocs/langs/da_DK/externalsite.lang deleted file mode 100644 index e9f24884e46..00000000000 --- a/htdocs/langs/da_DK/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Opsæt link til ekstern hjemmeside -ExternalSiteURL=Ekstern websteds-URL for HTML iframe-indhold -ExternalSiteModuleNotComplete=Modul ExternalSite blev ikke konfigureret korrekt. -ExampleMyMenuEntry=Min menu indgang diff --git a/htdocs/langs/da_DK/ftp.lang b/htdocs/langs/da_DK/ftp.lang deleted file mode 100644 index f0b6c58f7ab..00000000000 --- a/htdocs/langs/da_DK/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Opsætning af FTP- eller SFTP-klientmodul -NewFTPClient=Ny FTP / FTPS-forbindelsesopsætning -FTPArea=FTP / FTPS-område -FTPAreaDesc=Dette skærmbillede viser en FTP et SFTP-server. -SetupOfFTPClientModuleNotComplete=Opsætningen af FTP- eller SFTP-klientmodulet ser ud til at være ufuldstændig -FTPFeatureNotSupportedByYourPHP=Din PHP understøtter ikke FTP- eller SFTP-funktioner -FailedToConnectToFTPServer=Der kunne ikke oprettes forbindelse til serveren (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Kunne ikke logge ind på serveren med defineret login / adgangskode -FTPFailedToRemoveFile=Kunne ikke fjerne filen %s. -FTPFailedToRemoveDir=Kunne ikke fjerne biblioteket%s: Kontroller tilladelser, og at biblioteket er tomt. -FTPPassiveMode=Passiv mode -ChooseAFTPEntryIntoMenu=Vælg et FTP / SFTP-sted i menuen ... -FailedToGetFile=Kunne ikke hente filer %s diff --git a/htdocs/langs/da_DK/holiday.lang b/htdocs/langs/da_DK/holiday.lang index 2c3f51239f5..b9168e3dec9 100644 --- a/htdocs/langs/da_DK/holiday.lang +++ b/htdocs/langs/da_DK/holiday.lang @@ -1,108 +1,108 @@ # Dolibarr language file - Source file is en_US - holiday HRM=HRM -Holidays=Forlade -CPTitreMenu=Forlade -MenuReportMonth=Monthly statement -MenuAddCP=New leave request -NotActiveModCP=Du skal aktivere modulet Forlad for at se denne side. -AddCP=Make a leave request +Holidays=Ferie/Fravær +CPTitreMenu=Ferie/Fravær +MenuReportMonth=Månedlig opgørelse +MenuAddCP=Ny forespørgsel +NotActiveModCP=Du skal aktivere modulet Ferie/Fravær for at se denne side. +AddCP=Lav en forespørgsel DateDebCP=Startdato DateFinCP=Slutdato DraftCP=Udkast til -ToReviewCP=Awaiting approval +ToReviewCP=Afventer godkendelse ApprovedCP=Godkendt CancelCP=Aflyst -RefuseCP=Afviste +RefuseCP=Afvist ValidatorCP=Godkender -ListeCP=Liste over orlov -Leave=Leave request -LeaveId=Forlad ID -ReviewedByCP=Will be reviewed by +ListeCP=Liste over fravær +Leave=Fravær forespørgsel +LeaveId=Fravær ID +ReviewedByCP=Vil blive godkendt af UserID=bruger ID UserForApprovalID=Bruger til godkendelses-id UserForApprovalFirstname=Fornavn af godkendelsesbruger UserForApprovalLastname=Efternavn af godkendelsesbruger UserForApprovalLogin=Login af godkendelse bruger DescCP=Beskrivelse -SendRequestCP=Create leave request -DelayToRequestCP=Leave requests must be made at least %s day(s) before them. -MenuConfCP=Udgiftsbalance -SoldeCPUser=Forlad saldo (i dage) %s -ErrorEndDateCP=You must select an end date greater than the start date. +SendRequestCP=Lav fravær forespørgsel +DelayToRequestCP=Fravær forespørgsler skal laves mindst %s dag(e) før. +MenuConfCP=Opgørelse +SoldeCPUser=Fraværssaldo (i dage) %s +ErrorEndDateCP=Du skal vælge en slutdato efter startdato ErrorSQLCreateCP=An SQL error occurred during the creation: ErrorIDFicheCP=An error has occurred, the leave request does not exist. -ReturnCP=Return to previous page -ErrorUserViewCP=You are not authorized to read this leave request. +ReturnCP=Vend tilbage til foregående side +ErrorUserViewCP=Du er ikke autoriseret til at se denne fraværsforespørgsel. InfosWorkflowCP=Information Workflow -RequestByCP=Requested by -TitreRequestCP=Leave request -TypeOfLeaveId=Type orlov ID -TypeOfLeaveCode=Type orlovskode -TypeOfLeaveLabel=Orlovsetikettype -NbUseDaysCP=Antal brugte orlovsdage +RequestByCP=Forespurgt af +TitreRequestCP=Fravær forespørgsel +TypeOfLeaveId=Type af fravær ID +TypeOfLeaveCode=Type af fraværskode +TypeOfLeaveLabel=Fraværsetikettype +NbUseDaysCP=Antal brugte fraværsdage NbUseDaysCPHelp=Beregningen tager højde for ikke-arbejdsdage og helligdage defineret i ordbogen. -NbUseDaysCPShort=Feriedage -NbUseDaysCPShortInMonth=Feriedage i måned +NbUseDaysCPShort=Fraværsdage +NbUseDaysCPShortInMonth=Fraværsdage i måned DayIsANonWorkingDay=%s er en ikke-arbejdsdag DateStartInMonth=Startdato i måned DateEndInMonth=Slutdato i måned EditCP=Redigér DeleteCP=Slet -ActionRefuseCP=Refuse +ActionRefuseCP=Afvis ActionCancelCP=Annuller StatutCP=Status -TitleDeleteCP=Delete the leave request -ConfirmDeleteCP=Confirm the deletion of this leave request? -ErrorCantDeleteCP=Error you don't have the right to delete this leave request. -CantCreateCP=You don't have the right to make leave requests. -InvalidValidatorCP=Du skal vælge godkenderen til din orlovsanmodning. -NoDateDebut=You must select a start date. -NoDateFin=You must select an end date. -ErrorDureeCP=Your leave request does not contain working day. -TitleValidCP=Approve the leave request -ConfirmValidCP=Are you sure you want to approve the leave request? -DateValidCP=Date approved -TitleToValidCP=Send leave request -ConfirmToValidCP=Are you sure you want to send the leave request? -TitleRefuseCP=Refuse the leave request -ConfirmRefuseCP=Are you sure you want to refuse the leave request? -NoMotifRefuseCP=You must choose a reason for refusing the request. -TitleCancelCP=Cancel the leave request -ConfirmCancelCP=Are you sure you want to cancel the leave request? -DetailRefusCP=Reason for refusal -DateRefusCP=Date of refusal -DateCancelCP=Date of cancellation -DefineEventUserCP=Assign an exceptional leave for a user -addEventToUserCP=Assign leave -NotTheAssignedApprover=Du er ikke den tildelte godkendende +TitleDeleteCP=Slet denne forespørgsel +ConfirmDeleteCP=Bekræft sletning af denne forespørgsel? +ErrorCantDeleteCP=Fejl, du har ikke rettigheder til at slette denne forespørgsel. +CantCreateCP=Du har ikke rettigheder til at lave denne forespørgsel. +InvalidValidatorCP=Du skal vælge godkenderen til din fraværsforespørgsel. +NoDateDebut=Du skal vælge en startdato. +NoDateFin=Du skal vælge en slutdato. +ErrorDureeCP=Din forespørgsel indeholder ikke en arbejdsdag. +TitleValidCP=Godkend forespørgsel +ConfirmValidCP=Er du sikker på at du vil godkende fraværsforespørgslen? +DateValidCP=Dato godkendt +TitleToValidCP=Send forespørgsel +ConfirmToValidCP=Er du sikker på at du vil sende forespørgslen? +TitleRefuseCP=Afvis forespørgsel +ConfirmRefuseCP=Er du sikker på at du vil afvise fraværsforespørgslen? +NoMotifRefuseCP=Du skal vælge en grund til at afvise forespørgslen. +TitleCancelCP=Annuller forespørgsel +ConfirmCancelCP=Er du sikker på at du vil annullere fraværsforespørgselen? +DetailRefusCP=Grund for afvisning +DateRefusCP=Dato for afvisning +DateCancelCP=Dato for annullering +DefineEventUserCP=Tildel ekstraordinær fravær til en bruger +addEventToUserCP=Tildel fravær +NotTheAssignedApprover=Du er ikke den tildelte godkender MotifCP=Årsag UserCP=Bruger ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. AddEventToUserOkCP=The addition of the exceptional leave has been completed. MenuLogCP=View change logs -LogCP=Log over alle opdateringer til "Status af Feriedage" +LogCP=Log over alle opdateringer til "Status af Fraværsdage" ActionByCP=Opdateret af UserUpdateCP=Opdateret til -PrevSoldeCP=Previous Balance -NewSoldeCP=New Balance +PrevSoldeCP=Foregående Balance +NewSoldeCP=Ny Balance alreadyCPexist=A leave request has already been done on this period. FirstDayOfHoliday=Begyndelsesdag for orlovsanmodning LastDayOfHoliday=Afslutningsdag for orlovsanmodning BoxTitleLastLeaveRequests=Latest %s modified leave requests HolidaysMonthlyUpdate=Monthly update ManualUpdate=Manual update -HolidaysCancelation=Leave request cancelation -EmployeeLastname=Employee last name -EmployeeFirstname=Employee first name +HolidaysCancelation=Fraværs anmodning annullering +EmployeeLastname=Medarbejderens efternavn +EmployeeFirstname=Medarbejderens fornavn TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed LastHolidays=Seneste %s forlade anmodninger -AllHolidays=Alle anmodninger om orlov +AllHolidays=Alle anmodninger om fravær HalfDay=Halv dag -NotTheAssignedApprover=Du er ikke den tildelte godkendende -LEAVE_PAID=Betalt ferie -LEAVE_SICK=Sygeorlov -LEAVE_OTHER=Anden orlov -LEAVE_PAID_FR=Betalt ferie +NotTheAssignedApprover=Du er ikke den tildelte godkender +LEAVE_PAID=Betalt fravær +LEAVE_SICK=Sygefravær +LEAVE_OTHER=Anden fravær +LEAVE_PAID_FR=Betalt fravær ## Configuration du Module ## LastUpdateCP=Sidste automatiske opdatering af orlovstildeling MonthOfLastMonthlyUpdate=Måned med sidste automatiske opdatering af orlovstildeling @@ -125,7 +125,7 @@ HolidaysCanceledBody=Your leave request for %s to %s has been canceled. FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter GoIntoDictionaryHolidayTypes=Gå ind i Hjem - Opsætning - Ordbøger - Typen af ​​orlov for at opsætte de forskellige typer blade. -HolidaySetup=Opsætning af modul Forlad +HolidaySetup=Opsætning af fraværsmodul HolidaysNumberingModules=Nummereringsmodeller til orlovsanmodninger TemplatePDFHolidays=Skabelon til Ferie anmodninger PDF FreeLegalTextOnHolidays=Fri tekst på PDF diff --git a/htdocs/langs/da_DK/hrm.lang b/htdocs/langs/da_DK/hrm.lang index 6ef881a462b..c68e4087ffb 100644 --- a/htdocs/langs/da_DK/hrm.lang +++ b/htdocs/langs/da_DK/hrm.lang @@ -2,41 +2,41 @@ # Admin -HRM_EMAIL_EXTERNAL_SERVICE=Email for at forhindre HRM ekstern service -Establishments=Virksomheder -Establishment=Etablering -NewEstablishment=Ny virksomhed -DeleteEstablishment=Slet virksomhed -ConfirmDeleteEstablishment=Er du sikker på, at du ønsker at slette denne virksomhed? -OpenEtablishment=Åbent oprettelse -CloseEtablishment=Luk etablissement +HRM_EMAIL_EXTERNAL_SERVICE=E-mail for at forhindre HRM ekstern service +Establishments=Foretagender +Establishment=Foretagende +NewEstablishment=Nyt Foretagende +DeleteEstablishment=Slet Foretagende +ConfirmDeleteEstablishment=Er du sikker på, at du ønsker at slette dette foretagende? +OpenEtablishment=Åben foretagende +CloseEtablishment=Luk foretagende # Dictionary -DictionaryPublicHolidays=Forlad - Offentlig Helligdage -DictionaryDepartment=HRM - Afdelingsliste -DictionaryFunction=HRM - Job stillinger +DictionaryPublicHolidays=Fravær - Helligdage +DictionaryDepartment=HRM - Organisationsenhed +DictionaryFunction=HRM - Jobstillinger # Module Employees=Medarbejdere -Employee=Employee +Employee=Medarbejder NewEmployee=Ny medarbejder ListOfEmployees=Liste over medarbejdere HrmSetup=Opsætning af HRM-modul -SkillsManagement=Ledelse af færdigheder +SkillsManagement=Uddannelsesstyring HRM_MAXRANK=Maksimalt antal niveauer for at rangere en færdighed -HRM_DEFAULT_SKILL_DESCRIPTION=Standardbeskrivelse af rækker, når færdighed oprettes +HRM_DEFAULT_SKILL_DESCRIPTION=Standardbeskrivelse af rækker, når færdighed er oprettet deplacement=Flytte DateEval=Evalueringsdato JobCard=Jobkort JobPosition=Job JobsPosition=Jobs -NewSkill=Ny kunnen +NewSkill=Ny færdighed SkillType=Færdighedstype -Skilldets=Liste over rækker for denne færdighed +Skilldets=Liste over stillinger for denne færdighed Skilldet=Færdighedsniveau rank=Rang -ErrNoSkillSelected=Ingen færdigheder valgt +ErrNoSkillSelected=Ingen færdighed valgt ErrSkillAlreadyAdded=Denne færdighed er allerede på listen SkillHasNoLines=Denne færdighed har ingen linjer -skill=Evne +skill=Færdighed Skills=Færdigheder SkillCard=Færdighedskort EmployeeSkillsUpdated=Medarbejdernes færdigheder er blevet opdateret (se fanen "Færdigheder" på medarbejderkortet) @@ -44,9 +44,9 @@ Eval=Evaluering Evals=Evalueringer NewEval=Ny evaluering ValidateEvaluation=Valider evaluering -ConfirmValidateEvaluation=Er du sikker på, at du vil validere denne evaluering med reference %s ? +ConfirmValidateEvaluation=Er du sikker på, at du vil validere denne evaluering med referencen %s? EvaluationCard=Evalueringskort -RequiredRank=Påkrævet rangering for dette job +RequiredRank=Påkrævet rang for dette job EmployeeRank=Medarbejderrangering for denne færdighed EmployeePosition=Medarbejder stilling EmployeePositions=Medarbejder stillinger @@ -56,35 +56,37 @@ group2ToCompare=Anden brugergruppe til sammenligning OrJobToCompare=Sammenlign med krav til jobkompetencer difference=Forskel CompetenceAcquiredByOneOrMore=Kompetence erhvervet af en eller flere brugere, men ikke efterspurgt af den anden komparator -MaxlevelGreaterThan=Maks. Niveau større end det ønskede -MaxLevelEqualTo=Max niveau svarende til det krav -MaxLevelLowerThan=Maks. Niveau lavere end den efterspørgsel -MaxlevelGreaterThanShort=Medarbejderniveau større end det anmodede -MaxLevelEqualToShort=Medarbejderniveau er lig med den efterspørgsel -MaxLevelLowerThanShort=Medarbejderniveau lavere end den efterspørgsel +MaxlevelGreaterThan=Maks. niveau større end det anmodede +MaxLevelEqualTo=Max niveau svarende til denne efterspørgsel +MaxLevelLowerThan=Max niveau lavere end dette krav +MaxlevelGreaterThanShort=Medarbejderniveau højere end det efterspurgte +MaxLevelEqualToShort=Medarbejderniveau svarer til den efterspurgte +MaxLevelLowerThanShort=Medarbejderniveau lavere end efterspurgt SkillNotAcquired=Færdighed ikke erhvervet af alle brugere og anmodet af den anden komparator -legend=Legend +legend=Legende TypeSkill=Færdighedstype AddSkill=Tilføj færdigheder til jobbet -RequiredSkills=Påkrævede færdigheder til dette job +RequiredSkills=Nødvendige færdigheder til dette job UserRank=Brugerrangering SkillList=Færdighedsliste SaveRank=Gem rang -knowHow=Vide hvordan -HowToBe=Sådan skal du være -knowledge=Viden -AbandonmentComment=Opgivelseskommentar -DateLastEval=Dato sidste vurdering -NoEval=Der er ikke foretaget nogen evaluering for denne medarbejder +TypeKnowHow=Viden +TypeHowToBe=Sådan skal du være +TypeKnowledge=Viden +AbandonmentComment=Afslagskommentar +DateLastEval=Dato sidste evaluering +NoEval=Ingen evaluering udført for denne medarbejder HowManyUserWithThisMaxNote=Antal brugere med denne rang HighestRank=Højeste rang -SkillComparison=Færdigheds sammenligning +SkillComparison=Færdighedssammenligning ActionsOnJob=Begivenheder på dette job VacantPosition=ledig stilling VacantCheckboxHelper=Hvis du afkrydser denne mulighed, vises ubesatte stillinger (ledig stilling) -SaveAddSkill = Færdighed(er) tilføjet +SaveAddSkill = Færdigheder tilføjet SaveLevelSkill = Færdighedsniveauet er gemt DeleteSkill = Færdighed fjernet -SkillsExtraFields=Supplerende attributter (kompetencer) -JobsExtraFields=Attributs supplementaires (Emplois) -EvaluationsExtraFields=Supplerende attributter (evalueringer) +SkillsExtraFields=Yderligere attributter (færdigheder) +JobsExtraFields=Yderligere attributter (job) +EvaluationsExtraFields=Yderligere attributter (vurderinger) +NeedBusinessTravels=Har brug for forretningsrejser +NoDescription=Ingen beskrivelse diff --git a/htdocs/langs/da_DK/install.lang b/htdocs/langs/da_DK/install.lang index cb9a8b70b60..93502365f83 100644 --- a/htdocs/langs/da_DK/install.lang +++ b/htdocs/langs/da_DK/install.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - install -InstallEasy=Bare følg instruktionerne trin for trin. +InstallEasy=Følg instruktionerne trin for trin. MiscellaneousChecks=Forudsætningskontrol ConfFileExists=Konfigurationsfilen %s findes. ConfFileDoesNotExistsAndCouldNotBeCreated=Konfigurationsfilen %s eksisterer ikke og kunne ikke oprettes! @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurationsfilen %s er ikke skrivbar. Kontroller ConfFileIsWritable=Konfigurationsfilen %s er skrivbar. ConfFileMustBeAFileNotADir=Konfigurationsfil %sskal være en fil, ikke en mappe. ConfFileReload=Genindlæser parametre fra konfigurationsfil. -NoReadableConfFileSoStartInstall=Konfigurationsfilen conf/conf.php eksisterer ikke eller kan ikke genskabes. Vi kører installationsprocessen for at prøve at initialisere den. +NoReadableConfFileSoStartInstall=Konfigurationsfilen conf/conf.php eksisterer ikke eller kan ikke læses. Vi kører installationsprocessen for at prøve at initialisere den. PHPSupportPOSTGETOk=Denne PHP understøtter variablerne POST og GET. PHPSupportPOSTGETKo=Det er muligt, at din PHP-opsætning ikke understøtter variablerne POST og/eller GET. Tjek parameteren variables_order i php.ini. PHPSupportSessions=Denne PHP understøtter sessioner. @@ -24,11 +24,12 @@ ErrorWrongValueForParameter=Du har muligvis indtastet en forkert værdi for para ErrorFailedToCreateDatabase=Kunne ikke oprette databasen '%s'. ErrorFailedToConnectToDatabase=Kunne ikke oprette forbindelse til databasen '%s'. ErrorDatabaseVersionTooLow=Databaseversionen (%s) er for gammel. Version %s eller nyere er påkrævet. -ErrorPHPVersionTooLow=PHP-versionen er for gammel. Version %s er påkrævet. +ErrorPHPVersionTooLow=PHP-versionen er for gammel. Version %s eller nyere er påkrævet. +ErrorPHPVersionTooHigh=PHP-versionen er for høj. Version %s eller lavere er påkrævet. ErrorConnectedButDatabaseNotFound=Forbindelsen til serveren lykkedes, men databasen '%s' blev ikke fundet. ErrorDatabaseAlreadyExists=Databasen '%s' eksisterer allerede. IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke eksisterer, skal du gå tilbage og markere "Opret database". -IfDatabaseExistsGoBackAndCheckCreate=Hvis database findes allerede, gå tilbage og fjern markeringen "Opret database" valgmulighed. +IfDatabaseExistsGoBackAndCheckCreate=Hvis databasen allerede eksisterer, skal du gå tilbage og fjerne markeringen i "Opret database". WarningBrowserTooOld=Versionen af browseren er for gammel. Det anbefales at opgradere din browser til en nyere version af Firefox, Chrome eller Opera. PHPVersion=PHP version License=Bruger licens @@ -94,7 +95,7 @@ DataMigration=Databasemigration (data) DatabaseMigration=Databasemigration (struktur + nogle data) ProcessMigrateScript=Scriptbehandling ChooseYourSetupMode=Vælg din opsætningstilstand og klik på "Start"... -FreshInstall=Frisk installation +FreshInstall=Ny installation FreshInstallDesc=Brug denne tilstand, hvis dette er din første installation. Hvis ikke, kan denne tilstand reparere en ufuldstændig tidligere installation. Hvis du vil opgradere din version, skal du vælge "Opgrader"-tilstand. Upgrade=Opgrader UpgradeDesc=Brug denne tilstand, hvis du har erstattet gamle Dolibarr-filer med filer fra en nyere version. Dette vil opgradere din database og data. diff --git a/htdocs/langs/da_DK/knowledgemanagement.lang b/htdocs/langs/da_DK/knowledgemanagement.lang index 349c9097405..09993049f9f 100644 --- a/htdocs/langs/da_DK/knowledgemanagement.lang +++ b/htdocs/langs/da_DK/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artikler KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Ekstra felter til artikel GroupOfTicket=Gruppe af billetter -YouCanLinkArticleToATicketCategory=Du kan linke en artikel til en opgave gruppe (så artiklen vil blive foreslået under kvalificeringen af nye billetter) +YouCanLinkArticleToATicketCategory=Du kan linke artiklen til en billetgruppe (så artiklen vil blive fremhævet på alle billetter i denne gruppe) SuggestedForTicketsInGroup=Foreslås til opgave når gruppen er SetObsolete=Angivet som forældet diff --git a/htdocs/langs/da_DK/languages.lang b/htdocs/langs/da_DK/languages.lang index 1de5070ace1..927728f488c 100644 --- a/htdocs/langs/da_DK/languages.lang +++ b/htdocs/langs/da_DK/languages.lang @@ -13,6 +13,7 @@ Language_az_AZ=Aserbajdsjansk Language_bn_BD=Bengali Language_bn_IN=Bengali (Indien) Language_bg_BG=Bulgarsk +Language_bo_CN=tibetansk Language_bs_BA=Bosnisk Language_ca_ES=Catalansk Language_cs_CZ=Tjekkisk @@ -39,6 +40,7 @@ Language_es_AR=Spansk (Argentina) Language_es_BO=Spanish (Bolivia) Language_es_CL=Spanish (Chile) Language_es_CO=Spanish (Colombia) +Language_es_CR=Spansk (Costa Rica) Language_es_DO=Spanish (Dominican Republic) Language_es_EC=Spanish (Ecuador) Language_es_GT=Spansk (Guatemala) @@ -93,6 +95,7 @@ Language_nl_BE=Hollandsk (Belgien) Language_nl_NL=Hollandske Language_pl_PL=Polsk Language_pt_AO=Portugisisk (Angola) +Language_pt_MZ=Portugisisk (Mozambique) Language_pt_BR=Portugisisk (Brasilien) Language_pt_PT=Portugisisk Language_ro_MD=Rumænsk (Moldavien) @@ -115,6 +118,6 @@ Language_ur_PK=Urdu Language_uz_UZ=Usbekisk Language_vi_VN=Vietnamesisk Language_zh_CN=Kinesisk -Language_zh_TW=Kinesisk (traditionelt) -Language_zh_HK=Kinesisk (Hong Kong) -Language_bh_MY=Malay +Language_zh_TW=Kinesisk (traditionel) +Language_zh_HK=Kinesisk (Hongkong) +Language_bh_MY=Malaysisk diff --git a/htdocs/langs/da_DK/loan.lang b/htdocs/langs/da_DK/loan.lang index 9851550c825..d5d4fe3846f 100644 --- a/htdocs/langs/da_DK/loan.lang +++ b/htdocs/langs/da_DK/loan.lang @@ -3,14 +3,14 @@ Loan=Lån Loans=Lån NewLoan=Nyt lån ShowLoan=Vis lån -PaymentLoan=Lånebetaling +PaymentLoan=Udbetaling af lån LoanPayment=Lånebetaling -ShowLoanPayment=Vis lånbetaling +ShowLoanPayment=Vis lånebetaling LoanCapital=Kapital Insurance=Forsikring Interest=Rente -Nbterms=Antal vilkår -Term=Semester +Nbterms=Antal terminer +Term=Termin LoanAccountancyCapitalCode=Regnskabskonto kapital LoanAccountancyInsuranceCode=Regnskabskonto forsikring LoanAccountancyInterestCode=Regnskabskonto renter @@ -20,15 +20,15 @@ ConfirmPayLoan=Bekræft klassificering af betalt dette lån LoanPaid=Lån betalt ListLoanAssociatedProject=Liste over lån tilknyttet projektet AddLoan=Opret lån -FinancialCommitment=Finansiel forpligtelse +FinancialCommitment=Økonomisk forpligtelse InterestAmount=Rente -CapitalRemain=Kapital forbliver +CapitalRemain=Restgæld TermPaidAllreadyPaid = Denne periode er allerede betalt -CantUseScheduleWithLoanStartedToPaid = Kan ikke bruge planlægger til et lån med betaling startet -CantModifyInterestIfScheduleIsUsed = Du kan ikke ændre interesse, hvis du bruger tidsplan +CantUseScheduleWithLoanStartedToPaid = Kan ikke generere en tidslinje for et lån med en påbegyndt betaling +CantModifyInterestIfScheduleIsUsed = Du kan ikke ændre renten, hvis du bruger tidsplanen # Admin -ConfigLoan=Konfiguration af modullånet -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Regnskabskonti kapital som standard -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Regnskabskontoens renter som standard -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Regnskabskontoforsikring som standard +ConfigLoan=Opsætning af lånemodul +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Regnskabskonto kapital som standard +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Regnskabskonto renter som standard +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Regnskabskonto forsikring som standard CreateCalcSchedule=Rediger økonomisk forpligtelse diff --git a/htdocs/langs/da_DK/mails.lang b/htdocs/langs/da_DK/mails.lang index 37e4da3b26b..4bdc2bca9ee 100644 --- a/htdocs/langs/da_DK/mails.lang +++ b/htdocs/langs/da_DK/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=Er et svar på en indledende e-mail RecordCreatedByEmailCollector=Post oprettet af Email Collector %s fra e-mail %s DefaultBlacklistMailingStatus=Standardværdi for feltet '%s' ved oprettelse af en ny kontaktperson DefaultStatusEmptyMandatory=Tom men obligatorisk +WarningLimitSendByDay=ADVARSEL: Opsætningen eller kontrakten for din instans begrænser dit antal e-mails pr. dag til %s. Forsøg på at sende mere kan resultere i, at din instans bliver langsommere eller suspenderet. Kontakt venligst din support, hvis du har brug for en højere kvote. diff --git a/htdocs/langs/da_DK/main.lang b/htdocs/langs/da_DK/main.lang index 22e8731d12a..e3f0cd0a967 100644 --- a/htdocs/langs/da_DK/main.lang +++ b/htdocs/langs/da_DK/main.lang @@ -1,20 +1,26 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, SeparatorThousand=. -FormatDateShort=%d/%m/%Y -FormatDateShortInput=%d/%m/%Y +FormatDateShort=%d-%m-%Y +FormatDateShortInput=%d-%m-%Y FormatDateShortJava=dd/MM/yyyy FormatDateShortJavaInput=dd/MM/yyyy FormatDateShortJQuery=dd/mm/yy FormatDateShortJQueryInput=dd/mm/yy -FormatHourShortJQuery=TT:MM +FormatHourShortJQuery=HH:mm FormatHourShort=%H:%M FormatHourShortDuration=%H:%M FormatDateTextShort=%d %b %Y @@ -23,9 +29,9 @@ FormatDateHourShort=%d/%m/%Y %H:%M FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p FormatDateHourTextShort=%d %b %Y %H:%M FormatDateHourText=%d %B %Y %H:%M -DatabaseConnection=Database forbindelse -NoTemplateDefined=Ingen skabelon til rådighed for denne e-mail-type -AvailableVariables=Tilgængelige substitutionsvariable +DatabaseConnection=Databaseforbindelse +NoTemplateDefined=Ingen skabelon tilgængelig for denne e-mailtype +AvailableVariables=Tilgængelige substitutionsvariabler NoTranslation=Ingen oversættelse Translation=Oversættelse CurrentTimeZone=Tidszone PHP (server) @@ -50,26 +56,26 @@ ErrorLogoFileNotFound=Logofilen '%s' blev ikke fundet ErrorGoToGlobalSetup=Gå til 'Virksomhed/Organisation' opsætning for at rette dette ErrorGoToModuleSetup=Gå til Modulopsætning for at rette dette ErrorFailedToSendMail=Kunne ikke sende post (afsender=%s, modtager=%s) -ErrorFileNotUploaded=Filen blev ikke uploadet. Tjek, at størrelsen ikke overstiger det tilladte maksimum, at der er ledig plads på disken, og at der ikke allerede er en fil med samme navn i denne mappe. +ErrorFileNotUploaded=Filen blev ikke uploadet. Kontroller, at størrelsen ikke overstiger det tilladte maksimum, at der er ledig plads på disken, og at der ikke allerede er en fil med samme navn i denne mappe. ErrorInternalErrorDetected=Fejl opdaget ErrorWrongHostParameter=Forkert værtsparameter -ErrorYourCountryIsNotDefined=Dit land er ikke defineret. Gå til Hjem-Indstillinger-Rediger og send formularen igen. -ErrorRecordIsUsedByChild=Kunne ikke slette denne post. Denne post bruges af mindst en børnepost. +ErrorYourCountryIsNotDefined=Dit land er ikke defineret. Gå til Hjem-Opsætning-Ordbøger og tilføj det til Lande og send formularen igen. +ErrorRecordIsUsedByChild=Kunne ikke slette denne post. Denne post bruges af mindst én underordnet post. ErrorWrongValue=Forkert værdi ErrorWrongValueForParameterX=Forkert værdi for parameter %s -ErrorNoRequestInError=Ingen anmodning ved fejl +ErrorNoRequestInError=Ingen anmodning ved en fejl ErrorServiceUnavailableTryLater=Tjenesten er ikke tilgængelig i øjeblikket. Prøv igen senere. -ErrorDuplicateField=Dobbelt værdi i et unikt område -ErrorSomeErrorWereFoundRollbackIsDone=Nogle fejl blev fundet. Ændringer er blevet rullet tilbage. -ErrorConfigParameterNotDefined=Parameter %s er ikke defineret i Dolibarr konfigurationsfilen conf.php . -ErrorCantLoadUserFromDolibarrDatabase=Kunne ikke finde bruger %s i Dolibarr database. -ErrorNoVATRateDefinedForSellerCountry=Fejl, der ikke momssatser defineret for land ' %s'. -ErrorNoSocialContributionForSellerCountry=Fejl, ingen type af skatter/afgifter defineret for landet '%s'. -ErrorFailedToSaveFile=Fejl, kunne ikke gemme filen. -ErrorCannotAddThisParentWarehouse=Du prøver at tilføje et forælderlager, som allerede er et barn i et eksisterende lager +ErrorDuplicateField=Dubleret værdi i et unikt felt +ErrorSomeErrorWereFoundRollbackIsDone=Der blev fundet nogle fejl. Ændringer er blevet rullet tilbage. +ErrorConfigParameterNotDefined=Parameteren %s er ikke defineret i Dolibarr-konfigurationsfilenconf.php. +ErrorCantLoadUserFromDolibarrDatabase=Kunne ikke finde brugeren %s i Dolibarr-databasen. +ErrorNoVATRateDefinedForSellerCountry=Fejl, ingen momssatser defineret for landet '%s'. +ErrorNoSocialContributionForSellerCountry=Fejl, ingen skatter/afgifter defineret for landet '%s'. +ErrorFailedToSaveFile=Fejl, filen kunne ikke gemmes. +ErrorCannotAddThisParentWarehouse=Du forsøger at tilføje et overordnet lager, som allerede er et underordnet lager af et eksisterende lager FieldCannotBeNegative=Feltet "%s" kan ikke være negativt MaxNbOfRecordPerPage=Maks. antal poster pr. side -NotAuthorized=Du har ikke tilladelse til at gøre det. +NotAuthorized=Det er du ikke autoriseret til at gøre det. SetDate=Indstil dato SelectDate=Vælg en dato SeeAlso=Se også %s @@ -80,53 +86,53 @@ Apply=Ansøge BackgroundColorByDefault=Standard baggrundsfarve FileRenamed=Filen blev omdøbt FileGenerated=Filen blev genereret -FileSaved=Filen er blevet gemt +FileSaved=Filen blev gemt FileUploaded=Filen blev uploadet -FileTransferComplete=Fil (er) uploadet succesfuldt -FilesDeleted=Fil(er), der er slettet korrekt -FileWasNotUploaded=En fil er valgt som vedhæng, men endnu ikke uploadet. Klik på "Vedhæft fil" for dette. -NbOfEntries=Antal indgange -GoToWikiHelpPage=Læs online hjælp (Adgang til Internettet er nødvendig) +FileTransferComplete=Fil(er) blev uploadet +FilesDeleted=Fil(er) blev slettet +FileWasNotUploaded=En fil er valgt til vedhæftning, men den er endnu ikke uploadet. Klik på "Vedhæft fil" for dette. +NbOfEntries=Antal poster +GoToWikiHelpPage=Læs online hjælp (internetadgang nødvendig) GoToHelpPage=Læs hjælp DedicatedPageAvailable=Dedikeret hjælpeside relateret til din nuværende skærm HomePage=Hjemmeside -RecordSaved=Data gemt +RecordSaved=Post gemt RecordDeleted=Post slettet -RecordGenerated=Data genereret -LevelOfFeature=Niveau funktionsliste +RecordGenerated=Post genereret +LevelOfFeature=Niveau af funktioner NotDefined=Ikke defineret -DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode er sat til %s i konfigurationsfilen conf.php.
Dette betyder, at adgangskoden databasen er ekstern i forhold til Dolibarr, så ændrer dette felt har ingen effekt. +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr-godkendelsestilstand er indstillet til %s i konfigurationsfilen conf.php.
Dette betyder, at adgangskodedatabasen er ekstern i forhold til Dolibarr, så ændring af dette felt har muligvis ingen effekt. Administrator=Administrator -Undefined=Undefineret -PasswordForgotten=Har du glemt dit kodeord ? +Undefined=Udefineret +PasswordForgotten=Glemt adgangskode? NoAccount=Ingen konto? SeeAbove=Se ovenfor HomeArea=Hjem LastConnexion=Sidste login PreviousConnexion=Forrige login PreviousValue=Tidligere værdi -ConnectedOnMultiCompany=Forbind til enhed +ConnectedOnMultiCompany=Forbundet til enhed ConnectedSince=Forbundet siden -AuthenticationMode=Autentificerings tilstand -RequestedUrl=Angivne URL +AuthenticationMode=Autentificeringstilstand +RequestedUrl=Anmodet URL DatabaseTypeManager=Database type opsætning -RequestLastAccessInError=Seneste database adgang forspørelses fejl -ReturnCodeLastAccessInError=Retur kode for seneste fejl i database forspørgelse -InformationLastAccessInError=Information efter seneste database adgang anmodning fejl +RequestLastAccessInError=Seneste anmodning om databaseadgang fejlede +ReturnCodeLastAccessInError=Returkode for seneste databaseadgangsfejl +InformationLastAccessInError=Oplysninger om seneste databaseadgangsfejl DolibarrHasDetectedError=Dolibarr har opdaget en teknisk fejl -YouCanSetOptionDolibarrMainProdToZero=Du kan læse logfil eller sæt indstillingen $ dolibarr_main_prod til '0' i din config-fil for at få flere oplysninger. +YouCanSetOptionDolibarrMainProdToZero=Du kan læse logfilen eller indstille muligheden $dolibarr_main_prod til '0' i din konfigurationsfil for at få mere information. InformationToHelpDiagnose=Disse oplysninger kan være nyttige til diagnostiske formål (du kan indstille $dolibarr_main_prod til '1' for at skjule følsomme oplysninger) MoreInformation=Mere information -TechnicalInformation=Tekniske oplysninger -TechnicalID=Teknisk id +TechnicalInformation=Teknisk information +TechnicalID=Teknisk ID LineID=Linje ID -NotePublic=Note (offentlige) +NotePublic=Note (offentlig) NotePrivate=Note (privat) -PrecisionUnitIsLimitedToXDecimals=Dolibarr blev setup at begrænse præcision på enhedspriser til %s decimaler. +PrecisionUnitIsLimitedToXDecimals=Dolibarr blev sat op til at begrænse nøjagtigheden af enhedspriser til %s decimaler. DoTest=Test ToFilter=Filter NoFilter=Intet filter -WarningYouHaveAtLeastOneTaskLate=Advarsel, du har mindst et element, der har overskredet tolerancetiden. +WarningYouHaveAtLeastOneTaskLate=Advarsel, du har mindst ét element, der har overskredet tolerancetiden. yes=ja Yes=Ja no=nej @@ -141,48 +147,48 @@ Always=Altid Never=Aldrig Under=under Period=Periode -PeriodEndDate=Slutdato for perioden -SelectedPeriod=Udvalgt periode +PeriodEndDate=Slutdato for periode +SelectedPeriod=Valgt periode PreviousPeriod=Tidligere periode -Activate=Aktivér +Activate=Aktiver Activated=Aktiveret Closed=Lukket Closed2=Lukket NotClosed=Ikke lukket Enabled=Aktiveret Enable=Aktiver -Deprecated=Underkendt -Disable=Deaktivere +Deprecated=Forældet +Disable=Deaktiver Disabled=Deaktiveret -Add=Tilføj +Add=Tilføje AddLink=Tilføj link RemoveLink=Fjern link -AddToDraft=Tilføj til udkast +AddToDraft=Tilføj til kladde Update=Opdatering Close=Luk -CloseAs=Sæt status til +CloseAs=Indstil status til CloseBox=Fjern widget fra dit dashboard Confirm=Bekræft -ConfirmSendCardByMail=Vil du virkelig sende indholdet af dette kort pr. Mail til %s ? +ConfirmSendCardByMail=Vil du virkelig sende indholdet af dette kort med post til %s? Delete=Slet Remove=Fjerne -Resiliate=Afslutte -Cancel=Annuller +Resiliate=Deaktiver +Cancel=Afbestille Modify=Ret -Edit=Redigér -Validate=Godkend -ValidateAndApprove=Bekræfte og godkende -ToValidate=Skal godkendes -NotValidated=Ikke godkendt -Save=Gem +Edit=Redigere +Validate=Valider +ValidateAndApprove=Valider og godkend +ToValidate=At validere +NotValidated=Ikke valideret +Save=Gemme SaveAs=Gem som SaveAndStay=Gem og bliv -SaveAndNew=Gem og nyt +SaveAndNew=Gem og ny TestConnection=Test forbindelse ToClone=Klon -ConfirmCloneAsk=Er du sikker på, at du vil klone objektet%s? +ConfirmCloneAsk=Er du sikker på, at du vil klone objektet %s? ConfirmClone=Vælg de data, du vil klone: -NoCloneOptionsSpecified=Ingen data at klone defineret. +NoCloneOptionsSpecified=Ingen data, der skal klones, er defineret. Of=af Go=Gå Run=Kør @@ -192,21 +198,21 @@ Hide=Skjule ShowCardHere=Vis kort Search=Søgning SearchOf=Søg -SearchMenuShortCut=Ctrl + shift + f -QuickAdd=Tilføj hurtigt -QuickAddMenuShortCut=Ctrl + shift + l +SearchMenuShortCut=Ctrl + Shift + f +QuickAdd=Hurtig tilføjelse +QuickAddMenuShortCut=Ctrl + Shift + l Valid=Gyldig -Approve=Godkend -Disapprove=Afvist +Approve=Godkende +Disapprove=Afvis ReOpen=Genåbne Upload=Upload ToLink=Link Select=Vælg SelectAll=Vælg alle Choose=Vælge -Resize=Tilpasse størrelsen -ResizeOrCrop=Tilpasse størrelsen eller Beskær -Recenter=Recenter +Resize=Tilpas størrelsen +ResizeOrCrop=Tilpas størrelsen eller Beskær +Recenter=Beskæring Author=Forfatter User=Bruger Users=Brugere @@ -214,17 +220,17 @@ Group=Gruppe Groups=Grupper UserGroup=Brugergruppe UserGroups=Brugergrupper -NoUserGroupDefined=Ingen brugergruppe definéret -Password=Kodeord -PasswordRetype=Gentag dit kodeord -NoteSomeFeaturesAreDisabled=Bemærk, at en masse funktioner / moduler er slået fra i denne demonstration. +NoUserGroupDefined=Ingen brugergruppe defineret +Password=Adgangskode +PasswordRetype=Indtast din adgangskode igen +NoteSomeFeaturesAreDisabled=Bemærk, at mange funktioner/moduler er deaktiveret i denne demonstration. Name=Navn -NameSlashCompany=Navn / firma +NameSlashCompany=Navn/virksomhed Person=Person Parameter=Parameter Parameters=Parametre Value=Værdi -PersonalValue=Personlige værdi +PersonalValue=Personlig værdi NewObject=Ny %s NewValue=Ny værdi OldValue=Gammel værdi %s @@ -232,10 +238,10 @@ CurrentValue=Nuværende værdi Code=Kode Type=Type Language=Sprog -MultiLanguage=Multi-sprog -Note=Nota +MultiLanguage=Flersproget +Note=Note Title=Titel -Label=Label +Label=Etiket RefOrLabel=Ref. eller etiket Info=Log Family=Familie @@ -245,64 +251,64 @@ DescriptionOfLine=Beskrivelse af linje DateOfLine=Dato for linje DurationOfLine=Linjens varighed ParentLine=Overordnet linje-id -Model=Skabelon +Model=Dokument skabelon DefaultModel=Standard dokument skabelon Action=Begivenhed About=Om -Number=Antal -NumberByMonth=Samlede rapporter pr. Måned +Number=Nummer +NumberByMonth=Samlede rapporter pr. måned AmountByMonth=Beløb efter måned Numero=Nummer Limit=Grænseværdi Limits=Grænseværdier Logout=Log ud -NoLogoutProcessWithAuthMode=Ingen applikations afbrydelses funktion med autentificeringstilstand %s -Connection=Log ind +NoLogoutProcessWithAuthMode=Ingen anvendelig afbrydelsesfunktion med godkendelsestilstand %s +Connection=Log på Setup=Opsætning -Alert=Alarm -MenuWarnings=Indberetninger +Alert=Advarsel +MenuWarnings=Advarsler Previous=Forrige Next=Næste Cards=Kort Card=Kort Now=Nu HourStart=Start time -Deadline=Deadline +Deadline=Tidsfrist Date=Dato -DateAndHour=Dato og tid +DateAndHour=Dato og klokkeslæt DateToday=Dags dato DateReference=Referencedato DateStart=Startdato DateEnd=Slutdato -DateCreation=Lavet dato -DateCreationShort=Creat. dato +DateCreation=Oprettelsesdato +DateCreationShort=Opret. dato IPCreation=Oprettelse IP -DateModification=Ændringsdatoen -DateModificationShort=Modif. dato -IPModification=Ændring IP -DateLastModification=Seneste ændring dato -DateValidation=Bekræftelsesdato -DateSigning=Underskrivelsesdato -DateClosing=Udløbsdato -DateDue=Forfaldsdag +DateModification=Ændringsdato +DateModificationShort=Ænd. dato +IPModification=Ændrings IP +DateLastModification=Seneste ændringsdato +DateValidation=Valideringsdato +DateSigning=Underskriftsdato +DateClosing=Lukkedato +DateDue=Forfaldsdato DateValue=Valørdato DateValueShort=Valørdato -DateOperation=Operation dato -DateOperationShort=Opret. Dato -DateLimit=Grænse dato -DateRequest=Anmodning dato -DateProcess=Proces dato +DateOperation=Driftsdato +DateOperationShort=Dr. dato +DateLimit=Sidste frist +DateRequest=Anmodningsdato +DateProcess=Behandlingsdato DateBuild=Rapport genereret den -DatePayment=Dato for betaling +DatePayment=Betalingsdato DateApprove=Godkendelsesdato -DateApprove2=Godkendelse af dato (Anden godkendelse) +DateApprove2=Godkendelsesdato (anden godkendelse) RegistrationDate=Registrerings dato -UserCreation=Oprettelsesbruger -UserModification=Modifikation bruger -UserValidation=Bruger som bekræftet -UserCreationShort=Opret. bruger -UserModificationShort=Modif. bruger -UserValidationShort=Gyldig. bruger +UserCreation=Oprettet af +UserModification=Ændret af +UserValidation=Valideret af +UserCreationShort=Opret. af +UserModificationShort=Ænd. af +UserValidationShort=Valid. af DurationYear=år DurationMonth=måned DurationWeek=uge @@ -318,7 +324,7 @@ WeekShort=Uge Day=Dag Hour=Time Minute=Minut -Second=Anden +Second=Sekund Years=År Months=Måneder Days=Dage @@ -332,20 +338,20 @@ Yesterday=I går Tomorrow=I morgen Morning=Morgen Afternoon=Eftermiddag -Quadri=Kvatal -MonthOfDay=Måned fra den dato +Quadri=Kvartal +MonthOfDay=Dagens måned DaysOfWeek=Ugedage HourShort=T MinuteShort=min -Rate=Hyppighed -CurrencyRate=Valuta omregningskurs -UseLocalTax=Incl. Moms +Rate=Sats +CurrencyRate=Valutaomregningskurs +UseLocalTax=Inkluder moms Bytes=Bytes KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Afsluttet af +UserAuthor=Lavet af UserModif=Opdateret af b=b. Kb=Kb @@ -354,52 +360,52 @@ Gb=Gb Tb=Tb Cut=Klip Copy=Kopier -Paste=Klister +Paste=Indsæt Default=Standard -DefaultValue=Standardværdi -DefaultValues=Standardværdier / filtre / sortering +DefaultValue=Standard værdi +DefaultValues=Standardværdier/filtre/sortering Price=Pris PriceCurrency=Pris (valuta) UnitPrice=Enhedspris UnitPriceHT=Enhedspris (ekskl.) -UnitPriceHTCurrency=Enhedspris (ekskl.) (Valuta) +UnitPriceHTCurrency=Enhedspris (ekskl.) (valuta) UnitPriceTTC=Enhedspris PriceU=Salgspris PriceUHT=Pris (netto) PriceUHTCurrency=U.P (netto) (valuta) PriceUTTC=Brutto (inkl. moms) Amount=Beløb -AmountInvoice=Fakturabeløbet -AmountInvoiced=Beløb faktureres -AmountInvoicedHT=Faktureret beløb (ekskl. Moms) +AmountInvoice=Faktura beløb +AmountInvoiced=Faktureret beløb +AmountInvoicedHT=Faktureret beløb (ekskl. moms) AmountInvoicedTTC=Faktureret beløb (inkl. moms) -AmountPayment=Indbetalingsbeløb +AmountPayment=Betalingsbeløb AmountHTShort=Beløb (ekskl.) AmountTTCShort=Beløb (inkl. moms) AmountHT=Beløb (ekskl. moms) AmountTTC=Beløb (inkl. moms) AmountVAT=Momsbeløb MulticurrencyAlreadyPaid=Allerede betalt, original valuta -MulticurrencyRemainderToPay=Manglene betaling , original valuta -MulticurrencyPaymentAmount=Betalingsbeløb, oprindelig valuta +MulticurrencyRemainderToPay=Manglende betaling , original valuta +MulticurrencyPaymentAmount=Betalingsbeløb, original valuta MulticurrencyAmountHT=Beløb (ekskl. moms), original valuta -MulticurrencyAmountTTC=Beløb (inkl. moms), oprindelig valuta -MulticurrencyAmountVAT=Momsbeløb, oprindelige valuta +MulticurrencyAmountTTC=Beløb (inkl. moms), original valuta +MulticurrencyAmountVAT=Momsbeløb, original valuta MulticurrencySubPrice=Beløb subpris multi valuta AmountLT1=Momsbeløb 2 AmountLT2=Momsbeløb 3 AmountLT1ES=Beløb RE AmountLT2ES=Beløb IRPF -AmountTotal=Beløb i alt +AmountTotal=Total beløb AmountAverage=Gennemsnitligt beløb -PriceQtyMinHT=Prismængde min. (ekskl. skat) -PriceQtyMinHTCurrency=Prismængde min. (ekskl. skat) (valuta) -PercentOfOriginalObject=Procent af originalgenstand +PriceQtyMinHT=Pris mængde min. (ekskl. moms) +PriceQtyMinHTCurrency=Pris mængde min. (ekskl. moms) (valuta) +PercentOfOriginalObject=Procent af originalt objekt AmountOrPercent=Beløb eller procent Percentage=Procent -Total=I alt -SubTotal=Sum -TotalHTShort=I alt (u/moms) +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (ekskl.) TotalHT100Short=I alt 100%% (ekskl.) TotalHTShortCurrency=I alt (ekskl. i valuta) TotalTTCShort=I alt (m/moms) @@ -712,6 +718,7 @@ FeatureDisabled=Modul slået fra MoveBox=Flyt box Offered=Fri NotEnoughPermissions=Du har ikke tilladelse til denne handling +UserNotInHierachy=Denne handling er forbeholdt denne brugers supervisorer SessionName=Session navn Method=Metode Receive=Modtag @@ -829,7 +836,7 @@ ByDay=Dag BySalesRepresentative=Salgsrepræsentant LinkedToSpecificUsers=Linked til en bestemt bruger kontakt NoResults=Ingen resultater -AdminTools=Admin Tools +AdminTools=Admin. værktøjer SystemTools=Systemværktøjer ModulesSystemTools=Modul værktøjer Test=Test @@ -1174,6 +1181,9 @@ ConfirmAllocateCommercial=Tildel salgsrepræsentant bekræftelse ConfirmAllocateCommercialQuestion=Er du sikker på, at du vil tildele den eller de valgte post(er) %s? CommercialsAffected=Salgsrepræsentanter berørt CommercialAffected=Sælger berørt -YourMessage=Vælg besked +YourMessage=Din besked YourMessageHasBeenReceived=Din besked er modtaget. Vi svarer eller kontakter dig hurtigst muligt. UrlToCheck=Url for at tjekke +Automation=Automatisering +CreatedByEmailCollector=Oprettet af e-mail-samler +CreatedByPublicPortal=Oprettet fra offentlig portal diff --git a/htdocs/langs/da_DK/members.lang b/htdocs/langs/da_DK/members.lang index 9498d830a2a..de0576c85b3 100644 --- a/htdocs/langs/da_DK/members.lang +++ b/htdocs/langs/da_DK/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Slutdato for medlemskab EndSubscription=Slutning af medlemskab SubscriptionId=Bidrag -id WithoutSubscription=Uden bidrag -MemberId=Medlem id +MemberId=Medlems ID +MemberRef=Medlems reference NewMember=Nyt medlem MemberType=Medlem type MemberTypeId=Medlem type id @@ -135,7 +136,7 @@ CardContent=Indholdet af din medlem kortet # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Vi vil gerne fortælle dig, at din anmodning om medlemskab blev modtaget.

ThisIsContentOfYourMembershipWasValidated=Vi vil gerne fortælle dig, at dit medlemskab blev bekræftet med følgende oplysninger:

-ThisIsContentOfYourSubscriptionWasRecorded=Vi vil gerne fortælle dig, at dit nye abonnement blev registreret.

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

ThisIsContentOfSubscriptionReminderEmail=Vi vil fortælle dig, at dit abonnement er ved at udløbe eller allerede er udløbet (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Vi håber, at du fornyer det.

ThisIsContentOfYourCard=Dette er en oversigt over de oplysninger, vi har om dig. Kontakt os, hvis noget er forkert. DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Meddelelse om den e-mail, der er modtaget i tilfælde af automatisk registrering af en gæst diff --git a/htdocs/langs/da_DK/modulebuilder.lang b/htdocs/langs/da_DK/modulebuilder.lang index 0f136d2684f..5e6d41ecf51 100644 --- a/htdocs/langs/da_DK/modulebuilder.lang +++ b/htdocs/langs/da_DK/modulebuilder.lang @@ -153,3 +153,4 @@ LinkToParentMenu=Forældremenu (fk_xxxxmenu) ListOfTabsEntries=Liste over faneposter TabsDefDesc=Definer her de faner, som dit modul giver TabsDefDescTooltip=Fanerne, der leveres af dit modul/applikation, er defineret i arrayet $this->tabs i modulbeskrivelsesfilen. Du kan redigere denne fil manuelt eller bruge den indlejrede editor. +BadValueForType=Forkert værdi for type %s diff --git a/htdocs/langs/da_DK/oauth.lang b/htdocs/langs/da_DK/oauth.lang index 82428adb10f..a0402533e66 100644 --- a/htdocs/langs/da_DK/oauth.lang +++ b/htdocs/langs/da_DK/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Et token blev genereret og gemt i lokal database NewTokenStored=Token modtaget og gemt ToCheckDeleteTokenOnProvider=Klik her for at kontrollere / slette autorisation gemt af %s OAuth udbyder TokenDeleted=Token slettet -RequestAccess=Klik her for at anmode om / forny adgang og modtage et nyt token for at gemme -DeleteAccess=Klik her for at slette token +RequestAccess=Klik her for at anmode om/forny adgang og modtage et nyt token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Brug følgende URL som omdirigerings-URI, når du opretter dine legitimationsoplysninger hos din OAuth-udbyder: -ListOfSupportedOauthProviders=Indtast legitimationsoplysninger leveret af din OAuth2-udbyder. Kun understøttede OAuth2-udbydere er listet her. Disse tjenester kan bruges af andre moduler, der har brug for OAuth2-godkendelse. -OAuthSetupForLogin=Side for at generere et OAuth-token +ListOfSupportedOauthProviders=Tilføj dine OAuth2-tokenudbydere. Gå derefter ind på din OAuth-udbyders administratorside for at oprette/få et OAuth-id og en hemmelighed og gemme dem her. Når du er færdig, skal du skifte til den anden fane for at generere dit token. +OAuthSetupForLogin=Side for at administrere (generere/slette) OAuth-tokens SeePreviousTab=Se tidligere faneblad +OAuthProvider=OAuth-udbyder OAuthIDSecret=OAuth ID og Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token udløbet @@ -23,10 +24,13 @@ TOKEN_DELETE=Slet gemt token OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Gå til denne side og derefter "Credentials" for at oprette OAuth-legitimationsoplysninger OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Gå til denne side og derefter "Registrer en ny applikation" for at oprette OAuth-legitimationsoplysninger +OAUTH_URL_FOR_CREDENTIAL=Gå til denne side for at oprette eller få dit OAuth-id og din hemmelighed OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth-id +OAUTH_SECRET=OAuth-hemmelighed +OAuthProviderAdded=OAuth-udbyder tilføjet +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Der findes allerede en OAuth-post for denne udbyder og etiket diff --git a/htdocs/langs/da_DK/orders.lang b/htdocs/langs/da_DK/orders.lang index cb1613fd5a5..f726c1b6bab 100644 --- a/htdocs/langs/da_DK/orders.lang +++ b/htdocs/langs/da_DK/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=En åben ordre var allerede knyttet til dette tilbud, så ingen anden ordre blev oprettet automatisk OrdersArea=Kundeordrer SuppliersOrdersArea=Indkøbsordreområde OrderCard=Ordreside diff --git a/htdocs/langs/da_DK/other.lang b/htdocs/langs/da_DK/other.lang index 316eb00ac9b..b678cda3b54 100644 --- a/htdocs/langs/da_DK/other.lang +++ b/htdocs/langs/da_DK/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Er du sikker på, at du vil "%s"? ConfirmBtnCommonTitle = Bekræft din handling CloseDialog = Luk Autofill = Autofyld + +# externalsite +ExternalSiteSetup=Opsætning af ekstern hjemmeside modul +ExternalSiteURL=Ekstern hjemmeside-URL for HTML iframe-indhold +ExternalSiteModuleNotComplete=Modul ekstern hjemmeside blev ikke konfigureret korrekt. +ExampleMyMenuEntry=Min menuindgang + +# FTP +FTPClientSetup=Opsætning af FTP klientmodul +NewFTPClient=Ny opsætning af FTP forbindelse +FTPArea=FTP område +FTPAreaDesc=Denne skærm viser opsætning af en FTP-server. +SetupOfFTPClientModuleNotComplete=Opsætningen af FTP-klientmodulet ser ud til at være ufuldstændig +FTPFeatureNotSupportedByYourPHP=Din PHP understøtter ikke FTP/FTPS/SFTP-funktioner +FailedToConnectToFTPServer=Kunne ikke oprette forbindelse til serveren (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Kunne ikke logge på serveren med defineret login/adgangskode +FTPFailedToRemoveFile=Filen %s kunne ikke fjernes. +FTPFailedToRemoveDir=Det lykkedes ikke at fjerne mappen %s: Kontroller rettigheder og at mappen er tom. +FTPPassiveMode=Passiv tilstand +ChooseAFTPEntryIntoMenu=Vælg en FTP server i menuen... +FailedToGetFile=Kunne ikke hente filer %s diff --git a/htdocs/langs/da_DK/paypal.lang b/htdocs/langs/da_DK/paypal.lang index 05951b1aabc..5bc0474b367 100644 --- a/htdocs/langs/da_DK/paypal.lang +++ b/htdocs/langs/da_DK/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal-modul opsætning -PaypalDesc=Dette modul tillader betaling med kunder via PayPal. Dette kan bruges til en ad hoc-betaling eller en betaling relateret til en Dolibarr objekt (faktura, ordre, ...) +PaypalDesc=Dette modul tillader betaling fra kunder via PayPal . Dette kan bruges til en ad-hoc betaling eller til en betaling relateret til et Dolibarr objekt (faktura, ordre, ...) PaypalOrCBDoPayment=Betal med PayPal (kort eller PayPal) PaypalDoPayment=Betal med PayPal PAYPAL_API_SANDBOX=Mode test / sandkasse diff --git a/htdocs/langs/da_DK/products.lang b/htdocs/langs/da_DK/products.lang index fb913e4b208..1d37e383ac5 100644 --- a/htdocs/langs/da_DK/products.lang +++ b/htdocs/langs/da_DK/products.lang @@ -262,7 +262,7 @@ Quarter1=1st. Kvarter Quarter2=2nd. Kvarter Quarter3=3rd. Kvarter Quarter4=4th. Kvarter -BarCodePrintsheet=Udskriv stregkode +BarCodePrintsheet=Udskriv stregkoder PageToGenerateBarCodeSheets=Med dette værktøj kan du udskrive ark med stregkode-klistermærker. Vælg format for din klistermærkeside, type stregkode og stregkodes værdi, og klik derefter på knappen %s . NumberOfStickers=Antal klistermærker til udskrivning på side PrintsheetForOneBarCode=Udskriv flere klistermærker for en stregkode diff --git a/htdocs/langs/da_DK/stocks.lang b/htdocs/langs/da_DK/stocks.lang index b3ef7bc27f8..1367640112b 100644 --- a/htdocs/langs/da_DK/stocks.lang +++ b/htdocs/langs/da_DK/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Lagergrænse for alarm og ønsket optimal lager kor ProductStockWarehouseUpdated=Lagergrænse for alarm og ønsket optimal lager korrekt opdateret ProductStockWarehouseDeleted=Lagergrænse for advarsel og ønsket optimal lager slettet korrekt AddNewProductStockWarehouse=Indstil ny grænse for alarm og ønsket optimal lager -AddStockLocationLine=Sænk mængde og klik derefter for at tilføje et andet lager til dette produkt +AddStockLocationLine=Reducer mængden og klik derefter for at opdele linjen InventoryDate=Lagerdato Inventories=Varebeholdninger NewInventory=Ny opgørelse @@ -254,7 +254,7 @@ ReOpen=Genåben ConfirmFinish=Bekræfter du afslutningen af opgørelsen? Dette genererer alle aktiebevægelser for at opdatere din aktie til det rigtige antal, du har indtastet lageret. ObjectNotFound=%s ikke fundet MakeMovementsAndClose=Generer bevægelser og luk -AutofillWithExpected=Erstat reel mængde med forventet mængde +AutofillWithExpected=Fyld den virkelige mængde med den forventede mængde ShowAllBatchByDefault=Vis batchoplysninger som standard på produktfanen "lager" CollapseBatchDetailHelp=Du kan indstille standardvisning af batchdetaljer i lagermodulkonfiguration ErrorWrongBarcodemode=Ukendt stregkode -tilstand @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Produkt med stregkode findes ikke WarehouseId=Lager -ID WarehouseRef=Lager Ref SaveQtyFirst=Gem først de reelle oplagrede mængder, før du beder om oprettelse af lagerbevægelsen. +ToStart=Start InventoryStartedShort=Startet ErrorOnElementsInventory=Operationen blev annulleret af følgende årsag: ErrorCantFindCodeInInventory=Kan ikke finde følgende kode i inventaret QtyWasAddedToTheScannedBarcode=Succes!! Mængden blev tilføjet til alle de ønskede stregkoder. Du kan lukke scannerværktøjet. StockChangeDisabled=Ændring på lager deaktiveret NoWarehouseDefinedForTerminal=Intet lager defineret for terminal +ClearQtys=Ryd alle mængder +ModuleStockTransferName=Avanceret lageroverførsel +ModuleStockTransferDesc=Avanceret styring af lageroverførsel med generering af overførselsark +StockTransferNew=Ny lageroverførsel +StockTransferList=Liste over lageroverførsler +ConfirmValidateStockTransfer=Er du sikker på, at du vil validere denne lageroverførsel med referencen %s? +ConfirmDestock=Reducer lagre med overførsel %s +ConfirmDestockCancel=Annuller reduktion af lagre med overførsel %s +DestockAllProduct=Reducer lagre +DestockAllProductCancel=Annuller reduktion af lagre +ConfirmAddStock=Øg lagrene med overførsel %s +ConfirmAddStockCancel=Annuller forøgelse af lagre med overførsel %s +AddStockAllProduct=Forøgelse af lagre +AddStockAllProductCancel=Annuller forøgelse af lagre +DatePrevueDepart=Planlagt afgangsdato +DateReelleDepart=Reel afgangsdato +DatePrevueArrivee=Planlagt ankomstdato +DateReelleArrivee=Reel ankomstdato +HelpWarehouseStockTransferSource=Hvis dette lager er indstillet, vil kun dette og dets underordnede være tilgængelige som kildelager +HelpWarehouseStockTransferDestination=Hvis dette lager er indstillet, vil kun dette og dets underordnede være tilgængelige som destinationslager +LeadTimeForWarning=Leveringstid før alarm (i dage) +TypeContact_stocktransfer_internal_STFROM=Afsender af lageroverførsel +TypeContact_stocktransfer_internal_STDEST=Modtager af lageroverførsel +TypeContact_stocktransfer_internal_STRESP=Ansvarlig for lageroverførsel +StockTransferSheet=Lageroverførselsark +StockTransferSheetProforma=Proforma lageroverførselsark +StockTransferDecrementation=Reducer afsenderlagre +StockTransferIncrementation=Forøg modtagerlagre +StockTransferDecrementationCancel=Annuller reduktion af afsenderlagre +StockTransferIncrementationCancel=Annuller forøgelse af modtagerlagre +StockStransferDecremented=Afsenderlagre reduceret +StockStransferDecrementedCancel=Reduktion af afsenderlagre annulleret +StockStransferIncremented=Lukket - Lagre overført +StockStransferIncrementedShort=Lagre overført +StockStransferIncrementedShortCancel=Forøgelse af modtagerlagre annulleret +StockTransferNoBatchForProduct=Produkt %s bruger ikke batch, ryd batch online og prøv igen +StockTransferSetup = Konfiguration af lageroverførselsmodul +Settings=Indstillinger +StockTransferSetupPage = Konfigurationsside for lageroverførselsmodul +StockTransferRightRead=Læs lageroverførsler +StockTransferRightCreateUpdate=Opret/opdater lageroverførsler +StockTransferRightDelete=Slet lageroverførsler +BatchNotFound=Parti/serie blev ikke fundet for dette produkt diff --git a/htdocs/langs/da_DK/stripe.lang b/htdocs/langs/da_DK/stripe.lang index d34a518c46d..2caa038cc39 100644 --- a/htdocs/langs/da_DK/stripe.lang +++ b/htdocs/langs/da_DK/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Link til opsætning Stripe WebHook for at ringe til I PaymentWillBeRecordedForNextPeriod=Betaling registreres for den næste periode. ClickHereToTryAgain=Klik her for at prøve igen ... CreationOfPaymentModeMustBeDoneFromStripeInterface=På grund af stærke kunde autentificerings regler skal oprettelse af et kort foretages fra Stripe backoffice. Du kan klikke her for at tænde for Stripe-kundepost:%s +TERMINAL_LOCATION=Placering (adresse) for terminaler diff --git a/htdocs/langs/da_DK/suppliers.lang b/htdocs/langs/da_DK/suppliers.lang index e59117969e0..550630ff95c 100644 --- a/htdocs/langs/da_DK/suppliers.lang +++ b/htdocs/langs/da_DK/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Navn på køber AllProductServicePrices=Alle produkt- / servicepriser AllProductReferencesOfSupplier=Alle henvisninger til leverandør BuyingPriceNumShort=Leverandørpriser +RepeatableSupplierInvoice=Skabelon leverandørfaktura +RepeatableSupplierInvoices=Skabelon leverandørfakturaer +RepeatableSupplierInvoicesList=Skabelon leverandørfakturaer +RecurringSupplierInvoices=Tilbagevendende leverandørfakturaer +ToCreateAPredefinedSupplierInvoice=For at oprette skabelonleverandørfaktura skal du oprette en standardfaktura, og derefter, uden at validere den, klikke på knappen "%s". +GeneratedFromSupplierTemplate=Genereret fra leverandørfaktura skabelon %s +SupplierInvoiceGeneratedFromTemplate=Leverandørfaktura %s Genereret fra leverandørfaktura skabelon %s diff --git a/htdocs/langs/da_DK/ticket.lang b/htdocs/langs/da_DK/ticket.lang index 10733b0a898..1c43340d3d0 100644 --- a/htdocs/langs/da_DK/ticket.lang +++ b/htdocs/langs/da_DK/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=En offentlig grænseflade, der kræver ingen identifikation, TicketSetupDictionaries=Typen af sag, alvorlighed og analytiske koder kan konfigureres fra ordbøger TicketParamModule=Indstilling af modulvariabler TicketParamMail=E-mail opsætning -TicketEmailNotificationFrom=Afsender e-mail for billetsvar -TicketEmailNotificationFromHelp=Afsender e-mail for billetsvar sendt fra Dolibarr +TicketEmailNotificationFrom=Afsender e-mail for besked om svar +TicketEmailNotificationFromHelp=Afsender-e-mail, der skal bruges til at sende meddelelses-e-mailen, når der gives et svar inde i backoffice. For eksempel noreply@example.com TicketEmailNotificationTo=Giv besked om oprettelse af billet til denne e-mailadresse TicketEmailNotificationToHelp=Hvis den er til stede, vil denne e-mailadresse blive underrettet om oprettelse af billet TicketNewEmailBodyLabel=Tekstbesked sendt efter oprettelse af en sag diff --git a/htdocs/langs/de_AT/admin.lang b/htdocs/langs/de_AT/admin.lang index 1bf7b8b8108..54771c2245a 100644 --- a/htdocs/langs/de_AT/admin.lang +++ b/htdocs/langs/de_AT/admin.lang @@ -94,7 +94,6 @@ Permission254=Andere Benutzer löschen oder deaktivieren Permission255=Eigene Benutzereinstellungen setzen/bearbeiten Permission256=Eigenes Passwort ändern Permission271=CA einsehen -Permission272=Rechnungen einsehen Permission273=Rechnungen erstellen Permission292=Festlegen von Berechtigungen für die Tarife Permission311=Services einsehen diff --git a/htdocs/langs/de_AT/externalsite.lang b/htdocs/langs/de_AT/externalsite.lang deleted file mode 100644 index a3871bced11..00000000000 --- a/htdocs/langs/de_AT/externalsite.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Verknüpfung zur externen Website einrichten -ExampleMyMenuEntry=Mein Menüeintrag diff --git a/htdocs/langs/de_CH/accountancy.lang b/htdocs/langs/de_CH/accountancy.lang index 7481246a7a5..bd62ac5984e 100644 --- a/htdocs/langs/de_CH/accountancy.lang +++ b/htdocs/langs/de_CH/accountancy.lang @@ -28,6 +28,7 @@ InvoiceLabel=Rechnungsbezeichung OverviewOfAmountOfLinesNotBound=Positionen ohne Verknüpfung zu einem Buchhaltungskonto OverviewOfAmountOfLinesBound=Positionen mit Verknüpfung zu einem Buchhaltungskonto OtherInfo=Weitere Informationen +DeleteCptCategory=Buchhaltungskonto aus Gruppe entfernen ConfirmDeleteCptCategory=Möchten Sie dieses Konto wirklich aus der Kontogruppe entfernen? GroupIsEmptyCheckSetup=Das Feld Gruppe ist leer, bitte prüfe die Einstellungen deiner Kontengruppen. DetailByAccount=Zeige Details nach Konto geordnet @@ -78,7 +79,6 @@ ShowAccountingAccountInJournals=Zeige dieses Buchhaltungskonto in den Journalen AccountAccountingSuggest=Vorgeschlagenes Buchhaltungskonto MenuVatAccounts=MWST - Konten MenuExpenseReportAccounts=Spesenabrechnungskonten -MenuLoanAccounts=Darlehenskonten MenuProductsAccounts=Produktkonten MenuAccountancyClosure=Abschluss MenuAccountancyValidationMovements=Kontobewegungen freigeben @@ -124,7 +124,6 @@ BANK_DISABLE_DIRECT_INPUT=Direktbuchung der Transaktion auf dem Bankkonto unterb ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Entwurfsexport des Journales erlauben ACCOUNTANCY_COMBO_FOR_AUX=Kombinierte Liste für Nebenbuchkonten aktivieren (das kann bei vielen Geschäftspartnern langsam gehen. Weiter kannst du so nicht nach Teilwerten suchen. ACCOUNTING_DATE_START_BINDING=Eröffnungsdatum der Buchhaltung festlegen. Alle Vorgänge davor werden in der Buchhaltung nicht berücksichtigt. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Standard - Zeitraum auf den Journalisierungsseiten ACCOUNTING_MISCELLANEOUS_JOURNAL=Nebenjournal ACCOUNTING_SOCIAL_JOURNAL=Personaljournal ACCOUNTING_HAS_NEW_JOURNAL=Hat neuen Journaleintrag @@ -134,6 +133,7 @@ ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Abschlussjournal ACCOUNTING_ACCOUNT_TRANSFER_CASH=Transferkonto Banktransaktionen TransitionalAccount=Durchlaufkonto Bank ACCOUNTING_ACCOUNT_SUSPENSE=Sperrkonto +DONATION_ACCOUNTINGACCOUNT=Buchhaltungskonto für Spenden ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Buchhaltungskonto für Abonnemente ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Standardkonto für Kunden - Anzahlungen ACCOUNTING_PRODUCT_BUY_ACCOUNT=Standard - Buchhaltungskonto für gekaufte Produkte\n(Wird verwendet, wenn kein Konto in der Produktdefinition hinterlegt ist) @@ -148,10 +148,10 @@ ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Standardkonto für importierte Dienstleist ACCOUNTING_SERVICE_SOLD_ACCOUNT=Standard - Buchhaltungskonto für verkaufte Leistungen\n(Wird verwendet, wenn kein Konto in der Leistungsdefinition hinterlegt ist) ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Standard - Buchhaltungskonto für verkaufte Leistungen in den EWR\n(Wird verwendet, wenn kein Konto in der Leistungsdefinition hinterlegt ist). ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Standardkonto für verkaufte Leistungen an nicht EWR - Staaten (sofern nicht anders im Produkt hinterlegt) -LabelAccount=Kontobezeichnung LabelOperation=Vorgangsbezeichnung AccountingDirectionHelp=Verwenden Sie für ein Buchhaltungskonto eines Kunden Guthaben, um eine Zahlung zu erfassen, die Sie erhalten haben.
Verwenden Sie für ein Buchhaltungskonto eines Lieferanten Debit, um eine von Ihnen geleistete Zahlung zu erfassen LetteringCode=Beschriftung +Lettering=Beschriftung JournalLabel=Journalbezeichnung TransactionNumShort=Transaktionsnummer GroupByAccountAccounting=Nach Hauptbuchkonto gruppieren @@ -177,6 +177,7 @@ NewAccountingMvt=Neue Transaktion NumMvts=Nummer der Transaktion ListeMvts=Liste der Kontobewegungen ErrorDebitCredit=Soll und Haben können nicht beide gleichzeitig einen Wert haben. +AddCompteFromBK=Buchhaltungskonten zur Gruppe hinzufügen ReportThirdParty=Liste der Geschäftspartner-Konten DescThirdPartyReport=Liste der Geschäftpartner (Kunden und Lieferanten) mit deren Buchhaltungskonten ListAccounts=Liste der Buchhaltungskonten @@ -203,6 +204,7 @@ DescVentilTodoExpenseReport=Hier verknüpfst du Spesenauslagen mit dem passenden DescVentilExpenseReport=Du siehst die Spesenabrechnungspositionen und den aktuellen Verknüpfungsstatus zu Buchhaltungskonten. DescVentilExpenseReportMore=Wenn du in den Spesenarten Buchhaltungskonten hinterlegt hast, kann ich jene einander automatisch zuordnen. Dafür ist die Schaltfläche "%s" da.\nDort, wo das nicht klappt, kannst du die passenden Buchhaltungskonten via "%s" von Hand zuweisen. DescVentilDoneExpenseReport=Du siehst die Spesenabrechnungspositionen und die damit verknüpften Buchhaltungskonten. +Closure=Jahresabschluss DescValidateMovements=Für den Abschluss müssen alle Kontobewegungen frei gegeben sein. Danach sind sie nicht mehr änderbar. ValidateHistory=Automatisch verknüpfen ErrorAccountancyCodeIsAlreadyUse=Hoppla, dieses Buchhaltungskonto wird noch verwendet - du kannst es deshalb nicht löschen. @@ -259,6 +261,7 @@ OptionModeProductSellDesc=Finde alle Produkte mit einem Buchhaltungskonto für V OptionModeProductSellIntraDesc=Zeige alle Produkte mit einem Buchhaltungskonto für den Export in den EWR OptionModeProductSellExportDesc=Zeige alle Produkte mit einem Buchhaltungskonto für den Export in andere Länder OptionModeProductBuyDesc=Finde alle Produkte mit einem Buchhaltungskonto für Einkäufe. +OptionModeProductBuyIntraDesc=Alle Produkte mit Buchhaltungskonto für Einkäufe in der EWG anzeigen. OptionModeProductBuyExportDesc=Alle Produkte mit Buchhaltungskonto für sonstige Auslandskäufe anzeigen. CleanFixHistory=Lösche alle Kontierungscodes, die im Kontenplan nicht vorkommen, aus allen Positionen CleanHistory=Setzte alle Verknüpfungen für das gewählte Jahr zurück @@ -270,6 +273,8 @@ AccountRemovedFromGroup=Ich hab das Buchhaltungskonto aus der Gruppe entfernt. SaleLocal=Inlandverkauf SaleExport=Exportverkauf SaleEEC=Verkauf im EWR +ForbiddenTransactionAlreadyExported=Unzulässig: Die Transaktion wurde bereits validiert und/oder exportiert. +ForbiddenTransactionAlreadyValidated=Unzulässig: Die Transaktion wurde bereits validiert. Range=Bereich dieses Kontenplanes Calculated=Berechnet ConfirmMassDeleteBookkeepingWriting=Bestätige die Mehrfachlöschung @@ -286,5 +291,6 @@ UseMenuToSetBindindManualy=Nicht verbundenen Positionen, bitte Benutze den Menup ImportAccountingEntries=Buchungen FECFormatJournalCode=Code-Journal (JournalCode) FECFormatReconcilableDate=Übertragbares Datum (DateLet) +DateExport=Datum Export WarningReportNotReliable=Obacht, dieser Bericht basiert nicht auf den Hauptbucheinträgen. Falls dort also noch Änderungen vorgenommen worden sind, wird das nicht übereinstimmen. Bei sauberer Buchführung nimmst du eher die Buchhaltungsberichte. ExpenseReportJournal=Spesenabrechnungsjournal diff --git a/htdocs/langs/de_CH/admin.lang b/htdocs/langs/de_CH/admin.lang index 485fa6f2fe0..5fd45270f3d 100644 --- a/htdocs/langs/de_CH/admin.lang +++ b/htdocs/langs/de_CH/admin.lang @@ -166,6 +166,7 @@ MAIN_MAIL_SENDMODE=Methode zum Senden von E-Mails MAIN_MAIL_SMTPS_ID=SMTP - Benutzer (wenn Authentifizierung durch Ausgangsserver erforderlich) MAIN_MAIL_SMTPS_PW=SMTP - Passwort (wenn Authentifizierung durch Ausgangsserver erforderlich) MAIN_MAIL_EMAIL_TLS=TLS (SSL)-Verschlüsselung verwenden +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Autorisieren der automatischen Signaturen der Zertifikate MAIN_MAIL_EMAIL_DKIM_ENABLED=Authentiziere dich durch DKIM - E-Mail Signatur MAIN_MAIL_EMAIL_DKIM_DOMAIN=DKIM Domäne MAIN_MAIL_EMAIL_DKIM_SELECTOR=DKIM - Selector @@ -315,6 +316,8 @@ Module85Name=Bankkonten & Bargeld Module100Desc=Hinzufügen eines Links zu einer externen Website als Icon im Hauptmenü. Die Webseite wird in einem Dolibarr-Frame unter dem Haupt-Menü angezeigt. Module105Desc=Mailman oder SPIP Schnittstelle für die Mitgliedsmodul Module200Desc=LDAP Synchronisierung +Module240Name=Daten Exporte +Module250Name=Daten Importe Module310Desc=Management von Mitglieder einer Stiftung/Vereins Module320Desc=RSS Feed auf Dolibarr - Seiten zeigen Module330Name=Lesezeichen und Verknüpfungen @@ -367,11 +370,17 @@ Permission64=Interventionen löschen Permission76=Daten exportieren Permission87=Kundenaufträge abschliessen Permission91=Sozialabgaben, Steuern und Mehrwertsteuer einsehen -Permission121=Mit Benutzer verbundene Geschäftspartner einsehen -Permission122=Mit Benutzer verbundene Geschäftspartner erstellen/bearbeiten -Permission125=Mit Benutzer verbundene Geschäftspartner löschen +Permission101=Auslieferungen einsehen +Permission102=Auslieferungen erstellen/bearbeiten +Permission104=Auslieferungen freigeben +Permission106=Auslieferungen exportieren +Permission111=Finanzkonten einsehen +Permission112=Transaktionen erstellen/ändern/löschen und vergleichen +Permission151=Bestellung mit Zahlart Lastschrift +Permission153=Bestellungen mit Zahlart Lastschrift übertragen Permission163=Service/Abonnement in einem Vertrag aktivieren Permission164=Service/Abonnement in einem Vertrag deaktivieren +Permission171=Reise- und Spesenabrechnung einsehen (Eigene und von Untergebenen) Permission172=Reise- und Spesenabrechnung erstellen/ändern Permission181=Lieferantenbestellungen einsehen Permission184=Lieferantenbestellungen bestätigen @@ -383,33 +392,32 @@ Permission193=Leitungen abbrechen Permission203=Bestellungsverbindungen Bestellungen Permission215=Lieferanten einrichten Permission255=Andere Passwörter ändern +Permission272=Rechnungen anzeigen Permission273=Ausgabe Rechnungen Permission300=Barcodes auslesen Permission301=Barcodes erzeugen und ändern. -Permission311=Leistungen einsehen Permission331=Lesezeichen einsehen -Permission401=Rabatte einsehen Permission430=PHP Debug Bar verwenden +Permission519=Löhne exportieren Permission520=Darlehen einsehen Permission525=Darlehens-rechner Permission527=Exportiere Darlehen -Permission531=Leistungen einsehen Permission650=Rechnungen für Rohmaterialien einsehen. Permission651=Rechnungen für Rohmaterialien erzeugen und bearbeiten Permission652=Rechnungen für Rohmaterialien löschen Permission701=Spenden einsehen +Permission771=Spesenabrechnungen einsehen (eigene und die der Untergebenen) +Permission1002=Warenlager erstellen/ändern Permission1121=Partnerofferten einsehen Permission1122=Partnerofferten erzeugen und bearbeiten Permission1123=Partnerofferten freigeben Permission1124=Partnerofferten auslösen Permission1125=Partnerofferten löschen Permission1126=Lieferanten - Preisanfragen schliessen -Permission1182=Lieferantenbestellungen einsehen Permission1185=Lieferantenbestellungen bestätigen Permission1186=Lieferantenbestellungen auslösen Permission1187=Empfangsbestätigung Lieferantenbestellung quittieren Permission1190=Lieferantenbestellungen bestätigen (zweite Bestätigung). -Permission1231=Lieferantenrechnungen einsehen Permission1232=Lieferantenrechnungen erzeugen und bearbeiten Permission1236=Kundenrechnungen, -attribute und -zahlungen exportieren Permission1421=Kundenaufträge mit Attributen exportieren @@ -419,7 +427,9 @@ Permission23001=anzeigen cronjobs Permission23002=erstellen/ändern cronjobs Permission23003=cronjobs löschen Permission23004=cronjobs ausführen +Permission55002=Abstimmung erstellen/ändern Permission59002=Gewinspanne definieren +Permission63001=Ressourcen anzeigen DictionaryCompanyType=Geschäftspartner Typen DictionaryCompanyJuridicalType=Rechtsformen von Unternehmen DictionaryActions=Arten von Kalenderereignissen @@ -441,6 +451,7 @@ CompanyInfo=Firma / Organisation CompanyZip=PLZ CompanyCountry=Land DoNotSuggestPaymentMode=Nicht vorschlagen +NoActiveBankAccountDefined=Keine aktiven Finanzkonten definiert SetupDescription1=Der Setupbereich erlaubt das konfigurieren ihrer Dolibarr Installation vor der ersten Verwendung. InfoDolibarr=Infos Dolibarr InfoBrowser=Infos Browser @@ -459,6 +470,7 @@ RestoreDesc2=Stellen Sie die Sicherungsdatei (z.B. Zip-Datei) des Verzeichnisses RestoreDesc3=Stellen Sie die Datenbankstruktur und die Daten aus einer Datenbank Sicherungskopie in der Datenbank einer neuen Dolibarr-Installation oder in der Datenbank dieser aktuellen Installation wieder her ( %s ). Warnung: Nach Abschluss der Wiederherstellung müssen Sie ein Login / Passwort verwenden, das zum Zeitpunkt der Sicherung / Installation vorhanden war, um erneut eine Verbindung herzustellen.
Folgen Sie diesem Assistenten, um eine Datenbanksicherung in dieser aktuellen Installation wiederherzustellen. DownloadMoreSkins=Weitere grafische Oberflächen/Themes herunterladen MeteoStdMod=Standard Modus +TestLoginToAPI=Testen Sie sich anmelden, um API ExtraFieldsLines=Ergänzende Attribute (Zeilen) ExtraFieldsSupplierOrdersLines=Ergänzende Attribute (in Bestellungszeile) ExtraFieldsSupplierInvoicesLines=Ergänzende Attribute (in Rechnungszeile) @@ -473,6 +485,7 @@ HRMSetup=HRM Modul Einstellungen CompanySetup=Unternehmenseinstellungen NotificationsDesc=E-Mail - Benachrichtigungen für Ereignisse können automatisch verschickt werden.
Die Empfänger kannst du so definieren: BillsSetup=Rechnungsmoduleinstellungen +FreeLegalTextOnInvoices=Freier Rechtstext für Rechnungen WatermarkOnDraftInvoices=Wasserzeichen auf Rechnungs-Entwurf (keines, falls leer) SuppliersPayment=Lieferantenzahlungen PropalSetup=Angebotsmoduleinstellungen @@ -482,6 +495,7 @@ FreeLegalTextOnProposal=Freier Rechtstext für Angebote WatermarkOnDraftProposal=Wasserzeichen auf Angebots-Entwurf (keines, falls leer) OrdersNumberingModules=Bestellnumerierungs-Module OrdersModelModule=Bestellvorlagenmodule +FreeLegalTextOnOrders=Freier Rechtstext auf Bestellungen WatermarkOnDraftOrders=Wasserzeichen auf Bestellungs-Entwurf (keines, wenn leer) ShippableOrderIconInList=In Auftragsliste ein entsprechendes Icon zufügen, wenn die Bestellung versandbereit ist InterventionsSetup=Servicemoduleinstellungen @@ -514,8 +528,6 @@ MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is ProductSetup=Produktmoduleinstellungen ServiceSetup=Leistungen Modul Setup ProductServiceSetup=Produkte und Leistungen Module Einstellungen -SetDefaultBarcodeTypeProducts=Standard-Barcode-Typ für Produkte -SetDefaultBarcodeTypeThirdParties=Standard-Barcode-Typ für Geschäftspartner UseUnits=Definieren Sie eine Masseinheit für die Menge während der Auftrags-, Auftragsbestätigungs- oder Rechnungszeilen-Ausgabe ProductCodeChecker=Modul für Produktcode-Erstellung und -Überprüfung (Produkt oder Service) ProductOtherConf=Konfiguration Produkt-/Services @@ -533,6 +545,15 @@ MailingEMailFrom=Absender E-Mail (From:) des Versandmoduls NotificationSetup=E-Mail Benachrichtigunen konfigurieren NotificationEMailFrom=Absender E-Mail (From:) des Benachrichtigungsmoduls SendingsSetup=Modul Versand einrichten +SendingsReceiptModel=Versandbelegsvorlage +SendingsNumberingModules=Nummerierungsmodell Auslieferungen +FreeLegalTextOnShippings=Freier Text auf Lieferungen +DeliveryOrderNumberingModules=Zustellscheinnumerierungs-Module +DeliveryOrderModel=Zustellscheinnumerierung +DeliveriesOrderAbility=Unterstütze Zustellscheine für Produkte +FreeLegalTextOnDeliveryReceipts=Freier Rechtstext auf Empfangsbelegen +FCKeditorForMailing=WYSIWIG Erstellung/Bearbeitung von E-Mails +FCKeditorForUserSignature=WYSIWIG Erstellung/Bearbeitung von Benutzer-Signaturen FCKeditorForMail=WYSIWYG Erstellung/Bearbeitung für gesamte Mail (ausser Werkzeuge->Massenmaling) StockSetup=Modul Lagerverwaltung einrichten DetailTitre=Menübezeichner oder Bezeichnungs-Code für Übersetzung @@ -542,6 +563,9 @@ OptionVATDebitOption=Rückstellungsbasis AgendaSetup=Aufgaben/Termine-Modul Einstellungen ClickToDialSetup=Click-to-Dial Moduleinstellungen CashDeskSetup=Modul Kasse (POS) einrichten +CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich) +CashDeskBankAccountForCB=Finanzkonto für die Einlösung von Bargeldzahlungen via Kreditkarte +CashDeskIdWareHouse=Lager für Entnahmen festlegen und und erzwingen BookmarkSetup=Lesezeichenmoduleinstellungen ApiSetup=API-Modul-Setup BankSetupModule=Bankmoduleinstellungen @@ -562,7 +586,6 @@ ExpenseReportNumberingModules=Modul Spesenabrechnung (Numerierung) YouMayFindNotificationsFeaturesIntoModuleNotification=Du kannst automatische Benachrichtigungen im Modul "Benachrichtigungen" festlegen und verwalten. ConfFileMustContainCustom=Zur Installation eines externen Modules speichern Sie die Modul-Dateien in Verzeichnis %s. Damit Dolibarr dieses Verzeichniss verwendet, musst du in der Setupdatei conf.php die Optionen
$dolibarr_main_url_root_alt auf
$dolibarr_main_url_root_alt="/custom" oder
'%s/custom'; hinzufügen oder anpassen. LinkColor=Linkfarbe -TopMenuDisableImages=Hide images in Top menu MinimumNoticePeriod=Kündigungsfrist (Ihre Kündigung muss vor dieser Zeit erfolgen) NbAddedAutomatically=Anzahl Tage die den Benutzern jeden Monat automatisch dazuaddiert werden TypeOfTemplate=Type der Vorlage @@ -601,11 +624,8 @@ EmailCollector=E-Mail Sammeldienst EmailCollectorDescription=Hier kannst du zeitgesteuert IMAP - Mailboxen regelmässig abfragen und korrekt in deiner Umgebung zuweisen. Weiter kannst du daraus automatisch Objekte erzeugen, z.B. Interessenten. NewEmailCollector=Neuer E-Mail - Sammeldienst EMailHost=IMAP Server Host -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. EmailCollectorConfirmCollectTitle=E-Mail - Sammeldienst Bestätigung -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. NoNewEmailToProcess=Ich habe keinen neuen E-Mails (die zu den Filtern passen) abzuarbeiten. -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. ResourceSetup=Modul Ressourcen einrichten UseSearchToSelectResource=Zeige eine Suchmaske für Ressourcen, statt eine Drop-down - Liste diff --git a/htdocs/langs/de_CH/bills.lang b/htdocs/langs/de_CH/bills.lang index a837b366b49..130241e87bb 100644 --- a/htdocs/langs/de_CH/bills.lang +++ b/htdocs/langs/de_CH/bills.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - bills -BillsCustomersUnpaid=Offene Kundenrechnungen BillsCustomersUnpaidForCompany=Unbezahlte Rechnungen von %s BillsSuppliersUnpaid=Unbezahlte Lieferantenrechnungen BillsSuppliersUnpaidForCompany=Unbezahlte Rechnungen für %s @@ -118,7 +117,6 @@ DiscountFromExcessReceived=Überschuss zum Rechnungsbetrag %s DiscountFromExcessPaid=Überschuss zum Rechnungsbetrag %s AbsoluteDiscountUse=Diese Art von Krediten verwendet werden kann auf der Rechnung vor der Validierung NewGlobalDiscount=Neue Rabattregel -NewRelativeDiscount=Neuer relativer Rabatt DiscountType=Rabattart DiscountStillRemaining=Verfügbare Rabatte und Gutschriften DiscountAlreadyCounted=Aufgebrauchte Rabatte und Gutschriften diff --git a/htdocs/langs/de_CH/boxes.lang b/htdocs/langs/de_CH/boxes.lang index 95018f3b6c2..7bd9754e4fe 100644 --- a/htdocs/langs/de_CH/boxes.lang +++ b/htdocs/langs/de_CH/boxes.lang @@ -4,11 +4,8 @@ BoxLastRssInfos=RSS - Information BoxLastProducts=%s neueste Produkte/Leistungen BoxProductsAlertStock=Lagerbestandeswarnungen für Produkte BoxLastProductsInContract=%s zuletzt in Verträgen verwendete Produkte/Leistungen -BoxLastSupplierBills=Neueste Lieferantenrechnungen -BoxLastCustomerBills=Neueste Kundenrechnungen BoxOldestUnpaidCustomerBills=Älteste offene Kundenrechnungen BoxOldestUnpaidSupplierBills=Älteste offene Lieferantenrechnungen -BoxLastProposals=Neueste Angebote BoxLastProspects=Zuletzt bearbeitete Leads BoxLastCustomers=Zuletzt bearbeitete Kunden BoxLastSuppliers=Zuletzt bearbeitete Lieferanten diff --git a/htdocs/langs/de_CH/companies.lang b/htdocs/langs/de_CH/companies.lang index 553030cba5e..1869e91605d 100644 --- a/htdocs/langs/de_CH/companies.lang +++ b/htdocs/langs/de_CH/companies.lang @@ -3,11 +3,9 @@ ErrorSetACountryFirst=Wähle zuerst das Land SelectThirdParty=Wähle einen Geschäftspartner MenuNewThirdParty=Erzeuge Geschäftspartner MenuNewCustomer=Erzeuge Kunde -MenuNewSupplier=Neuer Lieferant NewCompany=Erzeuge Partner (Lead / Kunde / Lieferant) NewThirdParty=Erzeuge Geschäftspartner (Lead / Kunde / Lieferant) CreateDolibarrThirdPartySupplier=Erstelle einen Lieferant -CreateThirdPartyOnly=Geschäftspartner erstellen CreateThirdPartyAndContact=Erzeuge Geschäftspartner mit Kontakt IdThirdParty=Geschäftspartner ID IdCompany=Unternehmens ID @@ -56,10 +54,6 @@ ProfId2BR=IE (Staatliche Behörde) ProfId3BR=IM (kommunale Behörde) ProfId3CH=Prof Id 1 (Bundes-Nummer) ProfId4CH=Prof Id 2 (Commercial Record-Nummer) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits ProfId1DE=Umsatzsteuer-Identifikationsnummer ProfId4DE=Steuernummer ProfId1ES=Prof Id 1 (CIF / NIF) @@ -121,10 +115,8 @@ AddContact=Kontakt erstellen AddContactAddress=Kontakt/Adresse erstellen ContactId=Kontakt ID FromContactName=Name -NoContactDefinedForThirdParty=Für diesen Geschäftspartner ist kein Kontakt eingetragen NoContactDefined=Kein Kontakt vorhanden ContactByDefaultFor=Standardkontakt für -AddThirdParty=Geschäftspartner erstellen AccountancyCode=Buchhaltungskonto CustomerCodeShort=Kundennummer CustomerCodeDesc=Kundennummer, eindeutig für jeden Kunden @@ -133,7 +125,6 @@ RequiredIfCustomer=Erforderlich falls Geschäftspartner Kunde oder Interessent i RequiredIfSupplier=Erforderlich, wenn der Partner Lieferant ist ProspectToContact=Lead zu kontaktieren CompanyDeleted=Firma "%s" aus der Datenbank gelöscht. -ListOfThirdParties=Liste der Geschäftspartner ContactsAllShort=Alle (Kein Filter) ContactForOrdersOrShipments=Bestellungs- oder Lieferkontakt ContactForProposals=Offertskontakt @@ -181,6 +172,7 @@ FiscalMonthStart=Ab Monat des Geschäftsjahres YouMustAssignUserMailFirst=Für E-Mail - Benachrichtigung hinterlegst du bitte zuerst eine E-Mail Adresse im Benutzerprofil. YouMustCreateContactFirst=Sie müssen erst E-Mail-Kontakte beim Geschäftspartner anlegen, um E-Mail-Benachrichtigungen hinzufügen zu können. ListCustomersShort=Kundenliste +ThirdPartiesArea=Partner und Kontakte InActivity=Offen ActivityCeased=Inaktiv ThirdPartyIsClosed=Der Partner ist inaktiv. diff --git a/htdocs/langs/de_CH/errors.lang b/htdocs/langs/de_CH/errors.lang index 0e1ae0d6668..25e3c165ec5 100644 --- a/htdocs/langs/de_CH/errors.lang +++ b/htdocs/langs/de_CH/errors.lang @@ -21,7 +21,6 @@ ErrorFieldCanNotContainSpecialNorUpperCharacters=Das Feld %s darf keine S ErrorFieldMustHaveXChar=Das Feld %s muss mindestens %s Zeichen haben. ErrorCantSaveADoneUserWithZeroPercentage=Ereignisse können nicht mit Status "Nicht begonnen" gespeichert werden, wenn das Feld "Erledigt durch" schon ausgefüllt ist. ErrorPleaseTypeBankTransactionReportName=Gib hier den Bankkontoauszug im Format YYYYMM oder YYYYMMDD an, in den du diesen Eintrag eintragen willst. -ErrorProdIdAlreadyExist=%s wurde bereits einem Geschäftspartner zugewiesen ErrorForbidden3=Es scheint keine ordnungsgemässe Authentifizierung für das System vorzuliegen. Bitte werfen Sie einen Blick auf die Systemdokumentation um die entsprechenden Authentifizierungsoptionen zu verwalten (htaccess, mod_auth oder andere...) ErrorBadValueForCode=Unzulässiger Code-Wert. Versuchen Sie es mit einem anderen Wert erneut... ErrorWarehouseRequiredIntoShipmentLine=Warenlager ist auf der Lieferzeile erforderlich. diff --git a/htdocs/langs/de_CH/externalsite.lang b/htdocs/langs/de_CH/externalsite.lang deleted file mode 100644 index 9577afd0918..00000000000 --- a/htdocs/langs/de_CH/externalsite.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteModuleNotComplete=Module ExternalSite wurde nicht richtig konfiguriert. diff --git a/htdocs/langs/de_CH/ftp.lang b/htdocs/langs/de_CH/ftp.lang deleted file mode 100644 index 5062bcc5001..00000000000 --- a/htdocs/langs/de_CH/ftp.lang +++ /dev/null @@ -1,12 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -NewFTPClient=Neue FTP-Verbindungseinstellungen -FTPArea=FTP-Übersicht -FTPAreaDesc=Die Ansicht zeigt einen FTP Server -SetupOfFTPClientModuleNotComplete=Hoppla, das Setup dieses FTP-Client - Moduls ist unvollständig. -FTPFeatureNotSupportedByYourPHP=Ihre PHP unterstützt keine FTP-Funktionen -FailedToConnectToFTPServer=Konnte keine Verbindung zum FTP-Server aufbauen (Server %s, Port %s) -FailedToConnectToFTPServerWithCredentials=Anmeldung am FTP-Server mit dem eingegebenen Benutzername/Passwort-Paar fehlgeschlagen -FTPFailedToRemoveFile=Konnte Datei %s nicht entfernen. -FTPFailedToRemoveDir=Ich kann das Verzeichnis %s nicht löschen.. Prüfe, ob du die Löschberechtigung hast und stelle sicher, dass es leer ist. -ChooseAFTPEntryIntoMenu=Wähle eine FTP - Site im Menu aus. -FailedToGetFile=Folgende Dateien konnten nicht geladen werden: %s diff --git a/htdocs/langs/de_CH/holiday.lang b/htdocs/langs/de_CH/holiday.lang index 15c991cf42b..019dba5d057 100644 --- a/htdocs/langs/de_CH/holiday.lang +++ b/htdocs/langs/de_CH/holiday.lang @@ -8,7 +8,9 @@ AddCP=Ferienantrag einreichen DateDebCP=Ferienbeginn DateFinCP=Ferienende ToReviewCP=Genehmigung ausstehend +ApprovedCP=genehmigt CancelCP=widerrufen +RefuseCP=abgelehnt Leave=Ferienantrag LeaveId=Ferien ID ReviewedByCP=Wird genehmigt von @@ -52,6 +54,7 @@ NotTheAssignedApprover=Du bist nicht der zugewiesene Genehmiger. UserCP=Benutzer ErrorAddEventToUserCP=Ein Fehler ist beim Erstellen der Sonderferien aufgetreten. AddEventToUserOkCP=Das Hinzufügen der Sonderferien wurde abgeschlossen. +PrevSoldeCP=Vorherige Übersicht alreadyCPexist=Ein Ferienantrag wurde für diese Periode bereits erstellt. BoxTitleLastLeaveRequests=Die %s zuletzt bearbeiteten Ferienanträge HolidaysCancelation=Stornierte Ferienanträge diff --git a/htdocs/langs/de_CH/hrm.lang b/htdocs/langs/de_CH/hrm.lang index cd212704e9a..17176eec0be 100644 --- a/htdocs/langs/de_CH/hrm.lang +++ b/htdocs/langs/de_CH/hrm.lang @@ -7,6 +7,5 @@ DeleteEstablishment=Betrieb löschen ConfirmDeleteEstablishment=Willst du diesen Betrieb wirklich löschen? OpenEtablishment=Betrieb wählen CloseEtablishment=Betrieb schliessen -DictionaryDepartment=Personalverwaltung - Abteilungsliste Employee=Mitarbeiter -NewEmployee=Neuer Mitarbeiter +HrmSetup=HRM Modul Einstellungen diff --git a/htdocs/langs/de_CH/main.lang b/htdocs/langs/de_CH/main.lang index faee978ff15..2d6cc56c9dd 100644 --- a/htdocs/langs/de_CH/main.lang +++ b/htdocs/langs/de_CH/main.lang @@ -180,7 +180,6 @@ DolibarrWorkBoard=Offene Aktionen NoOpenedElementToProcess=Keine offenen Aktionen Categories=Suchwörter/Kategorien Category=Stichwort / Kategorie -FromDate=Von FromLocation=Von OtherInformations=Weitere Informationen Refused=zurückgewiesen @@ -202,7 +201,6 @@ JoinMainDoc=Führe das Hauptdokument zusammen. Keyword=Stichwort Origin=Herkunft AmountInCurrency=Betrag in %s -NbOfThirdParties=Anzahl der Geschäftspartner NbOfObjectReferers=Anzahl verknüpfter Objekte Referers=Verknüpfte Objekte Uncheck=nicht gewählt diff --git a/htdocs/langs/de_CH/members.lang b/htdocs/langs/de_CH/members.lang index 5f8582fe105..e938ab5d70c 100644 --- a/htdocs/langs/de_CH/members.lang +++ b/htdocs/langs/de_CH/members.lang @@ -11,12 +11,12 @@ SetLinkToThirdParty=Verknüpfung zu Dolibarr Partner MembersList=Mitgliederliste MembersListToValid=Liste der zu verifizierenden Mitglieder MembersListValid=Liste der verifizierten Mitglieder -MemberId=Mitgliedernummer MemberType=Mitgliederart MembersTypes=Mitgliederarten MemberStatusDraft=Entwürfe (benötigen Bestätigung) MemberStatusNoSubscriptionShort=Bestätigt SubscriptionEndDate=Enddatum des Abonnements +NewSubscription=Neuer Beitrag NewSubscriptionDesc=Mit diesem Formular können Sie Ihr Abonnement als neues Mitglied der Stiftung registrieren. Wenn Sie Ihr Abonnement verlängern möchten (falls Sie bereits Mitglied sind), wenden Sie sich stattdessen per E-Mail an den Stiftungsrat. %s. NewMemberType=Neue Mitgliederart WelcomeEMail=Begrüssungs-E-Mail diff --git a/htdocs/langs/de_CH/projects.lang b/htdocs/langs/de_CH/projects.lang index 186a12000a5..96bb51653c7 100644 --- a/htdocs/langs/de_CH/projects.lang +++ b/htdocs/langs/de_CH/projects.lang @@ -1,20 +1,14 @@ # Dolibarr language file - Source file is en_US - projects ProjectRef=Chance ProjectsArea=Projektbereiche -AllProjects=Alle Projekte TasksOnProjectsPublicDesc=Diese Ansicht zeigt alle Projektaufgaben, die Sie Lesenberechtigt sind. ProjectsPublicTaskDesc=Diese Ansicht ist beschränkt auf Projekt und Aufgaben bei welchen Sie über Leserechte verfügen. TasksOnProjectsDesc=Es werden alle Projekteaufgaben aller Projekte angezeigt (Ihre Berechtigungen berechtigen Sie alles zu sehen). OnlyOpenedProject=Nur offene Projekte sind sichtbar. (Projekte im Entwurf- oder Geschlossenstatus sind nicht sichtbar) -NewProject=Neues Projekt -OpenedProjects=Offene Projekte -OpenedTasks=Offene Aufgaben ShowProject=Zeige Projekt SetProject=Projekt setzen TimeSpentByYou=Dein Zeitaufwand -MyTimeSpent=Mein Zeitaufwand TaskDescription=Aufgaben-Beschreibung -NewTask=Neue Aufgabe MyProjectsArea=Mein Projektbereich GoToListOfTimeConsumed=Zur Stundenaufwandsliste wechseln ChildOfProjectTask=Kindelement von Projekt/Aufgabe diff --git a/htdocs/langs/de_CH/stocks.lang b/htdocs/langs/de_CH/stocks.lang index f3010e3fa44..007e58b9928 100644 --- a/htdocs/langs/de_CH/stocks.lang +++ b/htdocs/langs/de_CH/stocks.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - stocks WarehouseCard=Warenlagerkarte +StocksArea=Warenlager - Übersicht NumberOfProducts=Anzahl der Produkte CorrectStock=Lagerbestand anpassen TransferStock=Lagerumbuchung @@ -14,7 +15,10 @@ StockLimitShort=Alarmschwelle StockLimit=Sicherungsbestand für autom. Benachrichtigung RealStock=Realer Lagerbestand VirtualStock=Theoretisches Warenlager +EstimatedStockValueShort=Eingangsmenge +EstimatedStockValue=Einkaufspreis DesiredStockDesc=Dieser Bestand wird für die Nachbestellfunktion verwendet. +StockToBuy=zu bestellen UseVirtualStock=theoretisches Warenlager verwenden UsePhysicalStock=Physisches Warenlager verwenden CurentlyUsingVirtualStock=Theoretisches Warenlager @@ -26,6 +30,8 @@ InventoryCodeShort=Inv. / Mov. Kode NoPendingReceptionOnSupplierOrder=Keine ausstehenden Lieferungen auf dieser Lieferantenbestellung ThisSerialAlreadyExistWithDifferentDate=Diese Charge- / Seriennummer (%s) ist bereits vorhanden, jedoch mit unterschiedlichen Haltbarkeits- oder Verfallsdatum. \n(Gefunden: %s Erfasst: %s) UseDispatchStatus=Auslieferungs - Status (frei gegeben / zurückgewiesen) für Lieferantenbestellungen führen. +inventoryTitle=Inventar +inventoryValidate=Bestätigt inventoryDraft=Läuft inventoryOnDate=Inventar ReOpen=entwerfen diff --git a/htdocs/langs/de_DE/accountancy.lang b/htdocs/langs/de_DE/accountancy.lang index 1e4c9679867..e8e2f413cd7 100644 --- a/htdocs/langs/de_DE/accountancy.lang +++ b/htdocs/langs/de_DE/accountancy.lang @@ -31,11 +31,11 @@ ChartOfIndividualAccountsOfSubsidiaryLedger=Plan der Einzelkonten des Nebenbuchs CurrentDedicatedAccountingAccount=Aktuelles dediziertes Konto AssignDedicatedAccountingAccount=Neues Konto zuweisen InvoiceLabel=Rechnungsanschrift -OverviewOfAmountOfLinesNotBound=Übersicht über die Anzahl der nicht an ein Buchhaltungskonto zugeordneten Zeilen -OverviewOfAmountOfLinesBound=Übersicht über die Anzahl der bereits an ein Buchhaltungskonto zugeordneten Zeilen +OverviewOfAmountOfLinesNotBound=Übersicht über die Anzahl der noch nicht kontierten Positionen +OverviewOfAmountOfLinesBound=Übersicht über die Anzahl der bereits kontierten Positionen OtherInfo=Zusatzinformationen -DeleteCptCategory=Buchhaltungskonto aus Gruppe entfernen -ConfirmDeleteCptCategory=Soll dieses Buchhaltungskonto wirklich aus der Gruppe entfernt werden? +DeleteCptCategory=Buchungskonto aus Gruppe entfernen +ConfirmDeleteCptCategory=Soll dieses Buchungskonto wirklich aus der Gruppe entfernt werden? JournalizationInLedgerStatus=Status der Journalisierung AlreadyInGeneralLedger=Bereits in Buchhaltungsjournale und Hauptbuch übertragen NotYetInGeneralLedger=Noch nicht in Buchhaltungsjournale und Hauptbuch übertragen @@ -67,21 +67,21 @@ AccountancyAreaDescActionFreq=Diese Schritte sind regelmäßig durchzuführen AccountancyAreaDescJournalSetup=SCHRITT %s: Liste der Buchhaltungsjournale überprüfen und nach Bedarf anpassen im Menü %s AccountancyAreaDescChartModel=SCHRITT %s: Prüfen, ob der benötigte Kontenrahmen vorhanden und aktiviert ist – konfigurierbar im Menü %s -AccountancyAreaDescChart=SCHRITT %s: Wähle und/oder ergänze einen Kontenplan im Menü %s. +AccountancyAreaDescChart=SCHRITT %s: Wählen und ergänzen Sie einen Kontenplan im Menü %s. AccountancyAreaDescVat=SCHRITT %s: Festlegen des Buchhaltungskontos für jeden Steuersatz über den Menüpunkt %s. AccountancyAreaDescDefault=SCHRITT %s: Standardkonten über das Menü %s konfigurieren. AccountancyAreaDescExpenseReport=SCHRITT %s: Festlegung der Standardbuchhaltungskonten für die verschiedenen Arten der Spesenabrechnung. Verwenden Sie dazu den Menüeintrag %s. -AccountancyAreaDescSal=SCHRITT %s: Buchhaltungskonto für Lohnzahlungen definieren. Kann im Menü %s geändert werden. +AccountancyAreaDescSal=SCHRITT %s: Buchungskonto für Gehaltszahlungen definieren. Kann im Menü %s geändert werden. AccountancyAreaDescContrib=SCHRITT %s: Legen Sie Standardbuchhaltungskonten für Steuern (Sonderausgaben) fest. Verwenden Sie dazu den Menüeintrag %s. -AccountancyAreaDescDonation=SCHRITT %s: Definition der Buchhaltungskonten für Spenden. Kann im Menü %s geändert werden. +AccountancyAreaDescDonation=SCHRITT %s: Definition der Buchungskonten für Spenden. Kann im Menü %s geändert werden. AccountancyAreaDescSubscription=SCHRITT %s: Definieren Sie die Standardabrechnungskonten für Mitgliederabonnements. Verwenden Sie dazu den Menüeintrag %s. -AccountancyAreaDescMisc=SCHRITT %s: Buchhaltungskonto für nicht zugeordnete Buchungen definieren. Kann im Menü %s geändert werden. -AccountancyAreaDescLoan=SCHRITT %s: Definitiond der Buchhaltungskonten für Darlehenszahlungen. Kann im Menü %s geändert werden. -AccountancyAreaDescBank=SCHRITT %s: Festlegen der Buchhaltungskonten für Banken und Zahlungsdienstleister über den Menüpunkt %s. -AccountancyAreaDescProd=SCHRITT %s: Festlegen der Buchhaltungskonten für Ihre Produkte und Leistungen über den Menüpunkt %s. +AccountancyAreaDescMisc=SCHRITT %s: Buchungskonto für nicht zugeordnete Buchungen definieren. Kann im Menü %s geändert werden. +AccountancyAreaDescLoan=SCHRITT %s: Definition der Buchungskonten für Darlehenszahlungen. Kann im Menü %s geändert werden. +AccountancyAreaDescBank=SCHRITT %s: Festlegen der Buchungskonten für Banken und Zahlungsdienstleister über den Menüpunkt %s. +AccountancyAreaDescProd=SCHRITT %s: Festlegen der Buchungskonten für Ihre Produkte und Leistungen über den Menüpunkt %s. -AccountancyAreaDescBind=SCHRITT %s: Kontrolle, dass die Zuweisung zwischen bestehenden Buchungszeilen in %s und entsprechenden Buchungskonten erfolgt ist, damit die Übernahme der Buchungen ins Hauptbuch mit einem Klick erfolgen kann. Dies wird im Menüpunkt %s vorgenommen. +AccountancyAreaDescBind=SCHRITT %s: Prüfen, ob die Kontierung aller Positionen aus %s erfolgt ist, damit die Übernahme der Buchungen ins Hauptbuch mit einem Klick erfolgen kann. Dies erfolgt im Menüpunkt %s. AccountancyAreaDescWriteRecords=SCHRITT %s: Übernehmen Sie die Buchungen in das Hauptbuch. Dazu gehen Sie ins Menü %s, und klicken Sie auf die Schaltfläche %s AccountancyAreaDescAnalyze=SCHRITT %s: Transaktionen hinzufügen oder bearbeiten sowie Berichte und Exporte generieren. @@ -89,34 +89,34 @@ AccountancyAreaDescClosePeriod=SCHRITT %s: Schließen Sie die Periode, damit wir TheJournalCodeIsNotDefinedOnSomeBankAccount=Eine erforderliche Einrichtung wurde nicht abgeschlossen. (Kontierungsinformationen fehlen bei einigen Bankkonten) Selectchartofaccounts=Aktiven Kontenplan wählen -ChangeAndLoad=ändern & laden -Addanaccount=Fügen Sie ein Buchhaltungskonto hinzu +ChangeAndLoad=Ändern & laden +Addanaccount=Fügen Sie ein Buchungskonto hinzu AccountAccounting=Buchungskonto AccountAccountingShort=Konto SubledgerAccount=Nebenbuchkonto SubledgerAccountLabel=Nebenbuchkonto-Bezeichnung -ShowAccountingAccount=Buchhaltungskonten anzeigen +ShowAccountingAccount=Buchungskonto anzeigen ShowAccountingJournal=Buchhaltungsjournal anzeigen -ShowAccountingAccountInLedger=Buchhaltungskonto im Hauptbuch anzeigen -ShowAccountingAccountInJournals=Buchhaltungskonto in Journalen anzeigen +ShowAccountingAccountInLedger=Buchungskonto im Hauptbuch anzeigen +ShowAccountingAccountInJournals=Buchungskonto in Journalen anzeigen AccountAccountingSuggest=Vorgeschlagenes Buchungskonto MenuDefaultAccounts=Standardkonten MenuBankAccounts=Bankkonten MenuVatAccounts=Umsatzsteuerkonten MenuTaxAccounts=Steuerkonten MenuExpenseReportAccounts=Spesenkonten -MenuLoanAccounts=Darlehens-Konten +MenuLoanAccounts=Darlehenskonten MenuProductsAccounts=Produkterlöskonten MenuClosureAccounts=Abschlusskonten -MenuAccountancyClosure=Jahresabschluss +MenuAccountancyClosure=Festschreibung MenuAccountancyValidationMovements=Buchungen freigeben ProductsBinding=Produktkonten TransferInAccounting=Übernahme in die Buchhaltung RegistrationInAccounting=Erfassung in der Buchhaltung -Binding=Zu Konten zuordnen -CustomersVentilation=Kundenrechnungen zuordnen -SuppliersVentilation=Lieferantenrechnungen zuordnen -ExpenseReportsVentilation=Spesenabrechnungen zuordnen +Binding=Kontieren +CustomersVentilation=Kundenrechnungen kontieren +SuppliersVentilation=Lieferantenrechnungen kontieren +ExpenseReportsVentilation=Spesenabrechnungen kontieren CreateMvts=neue Transaktion erstellen UpdateMvts=Änderung einer Transaktion ValidTransaction=Transaktion bestätigen @@ -127,86 +127,86 @@ AccountBalance=Summen und Salden ObjectsRef=Quellreferenz CAHTF=Gesamtbetrag Lieferant vor Steuern TotalExpenseReport=Gesamtausgaben Spesenabrechnung -InvoiceLines=Rechnungszeilen verbinden -InvoiceLinesDone=verbundene Rechnungszeilen +InvoiceLines=Rechnungspositionen kontieren +InvoiceLinesDone=Kontierte Rechnungspositionen ExpenseReportLines=Noch nicht zugeordnete Zeilen aus Spesenabrechnungen -ExpenseReportLinesDone=Zugeordnete Zeilen aus Spesenabrechnungen -IntoAccount=Buchungskonto zuordnen +ExpenseReportLinesDone=Kontierte Positionen aus Spesenabrechnungen +IntoAccount=Position kontieren TotalForAccount=Buchungskonto Summe -Ventilate=zuordnen +Ventilate=Kontieren LineId=Zeilen-ID Processing=Bearbeitung EndProcessing=Prozess beendet -SelectedLines=ausgewählte Zeilen +SelectedLines=Ausgewählte Zeilen Lineofinvoice=Rechnungszeile LineOfExpenseReport=Zeilen der Spesenabrechnung -NoAccountSelected=Kein Buchhaltungskonto ausgewählt -VentilatedinAccount=erfolgreich dem Buchhaltungskonto zugeordnet -NotVentilatedinAccount=Nicht zugeordnet, zu einem Buchhaltungskonto -XLineSuccessfullyBinded=%s Produkte/Leistungen erfolgreich an Buchhaltungskonto zugewiesen -XLineFailedToBeBinded=%s Produkte/Leistungen waren an kein Buchhaltungskonto zugeordnet +NoAccountSelected=Kein Buchungskonto ausgewählt +VentilatedinAccount=Kontierung erfolgreich +NotVentilatedinAccount=Nicht kontiert +XLineSuccessfullyBinded=%s Produkte/Leistungen erfolgreich kontiert +XLineFailedToBeBinded=%s Produkte/Leistungen waren nicht kontiert ACCOUNTING_LIMIT_LIST_VENTILATION=Maximale Zeilenanzahl auf Liste und Kontierungsseite (empfohlen: 50) -ACCOUNTING_LIST_SORT_VENTILATION_TODO=Standardsortierung der Elemente auf der Seite "Konten zuordnen“: neueste zuerst +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Standardsortierung der Elemente auf der Seite "Zu kontieren“: neueste zuerst ACCOUNTING_LIST_SORT_VENTILATION_DONE=Sortierung auf der Seite "Zuordnung abgeschlossen" beginnend mit den neuesten Elementen ACCOUNTING_LENGTH_DESCRIPTION=Länge für die Anzeige der Beschreibung von Produkten und Leistungen in Listen (optimal = 50) ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Länge für die Anzeige der Kontenbezeichnungen für Produkte und Leistungen in den Listen (optimal = 50) ACCOUNTING_LENGTH_GACCOUNT=Länge der Kontonummern der Buchhaltung (Wenn dieser Wert auf 6 gesetzt ist, wird Konto '706' als '706000' am Bildschirm angezeigt) ACCOUNTING_LENGTH_AACCOUNT=Länge der Geschäftspartner Nebenkonten in der Buchhaltung \n(Wenn Sie hier den Wert 6 einstellen, wird das Konto "401" auf dem Bildschirm als "401000" angezeigt.) -ACCOUNTING_MANAGE_ZERO=Verwalten der Null am Ende eines Buchhaltungskontos. \nIn einigen Ländern notwendig (z.B. Schweiz). \nStandardmäßig deaktiviert. \nWenn ausgeschaltet, können die folgenden zwei Parameter konfigurieren werden, um virtuelle Nullen anzuhängen +ACCOUNTING_MANAGE_ZERO=Beibehalten der Nullen am Ende eines Buchungskontos ("1200"). \nIn manchen Ländern notwendig (z.B. Deutschland, Schweiz). \nStandardmäßig deaktiviert. \nWenn ausgeschaltet, können die folgenden zwei Parameter konfigurieren werden, um virtuelle Nullen anzuhängen. BANK_DISABLE_DIRECT_INPUT=Deaktivieren der direkte Aufzeichnung von Transaktion auf dem Bankkonto ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Entwurfexport für Journal aktivieren ACCOUNTANCY_COMBO_FOR_AUX=Combo-Liste für Nebenkonto aktivieren (kann langsam sein, wenn Sie viele Geschäftspartner haben; verhindert die Suche nach Teilwerten) ACCOUNTING_DATE_START_BINDING=Definieren Sie ein Datum, an dem die Bindung und Übertragung in der Buchhaltung beginnen soll. Transaktionen vor diesem Datum werden nicht in die Buchhaltung übertragen. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Bei der Übertragung der Buchhaltung standardmäßig den Zeitraum anzeigen auswählen anzeigen +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Welcher Zeitraum ist beim Buchhaltungstransfer standardmäßig ausgewählt? ACCOUNTING_SELL_JOURNAL=Verkaufsjournal ACCOUNTING_PURCHASE_JOURNAL=Einkaufsjournal -ACCOUNTING_MISCELLANEOUS_JOURNAL=Journal für Sonstiges +ACCOUNTING_MISCELLANEOUS_JOURNAL=Variajournal ACCOUNTING_EXPENSEREPORT_JOURNAL=Spesenabrechnungsjournal -ACCOUNTING_SOCIAL_JOURNAL=Sozialabgaben-Journal -ACCOUNTING_HAS_NEW_JOURNAL=Journal für Eröffnungsbuchungen +ACCOUNTING_SOCIAL_JOURNAL=Sozialabgabenjournal +ACCOUNTING_HAS_NEW_JOURNAL=Eröffnungsjournal ACCOUNTING_RESULT_PROFIT=Ergebnisabrechnungskonto (Gewinn) ACCOUNTING_RESULT_LOSS=Ergebnisabrechnungskonto (Verlust) -ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Abschluss-Journal +ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Journal für Abschlussbuchungen ACCOUNTING_ACCOUNT_TRANSFER_CASH=Buchhaltung Konto der Überweisung TransitionalAccount=Überweisungskonto -ACCOUNTING_ACCOUNT_SUSPENSE=Buchhaltungskonto in Wartestellung -DONATION_ACCOUNTINGACCOUNT=Buchhaltungskonto für Spenden +ACCOUNTING_ACCOUNT_SUSPENSE=Verrechnungskonto/Zwischenkonto +DONATION_ACCOUNTINGACCOUNT=Buchungskonto für Spenden ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Buchungskonto für Abonnements -ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Standard-Buchhaltungskonto zur Registrierung der Kundeneinzahlung -UseAuxiliaryAccountOnCustomerDeposit=Für Kundenzahlungen Unterkonten verwenden +ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Standard-Buchungskonto zur Registrierung der Kundeneinzahlung +UseAuxiliaryAccountOnCustomerDeposit=Debitorenkonto als Einzelkonto im Nebenbuch für Anzahlungspositionen hinterlegen (bei Deaktivierung bleibt Einzelkonto für Anzahlungspositionen leer) -ACCOUNTING_PRODUCT_BUY_ACCOUNT=Standard-Buchhaltungskonto für gekaufte Produkte \n(wenn nicht anders im Produktblatt definiert) -ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Standardmäßig Buchhaltungskonto für die gekauften Produkte in der EU (wird verwendet, wenn nicht im Produktblatt definiert) -ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Standardmäßig Buchhaltungskonto für die gekauften und aus der EU importierten Produkte (wird verwendet, wenn nicht im Produktblatt definiert) -ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Standard-Buchhaltungskonto für die verkauften Produkte (wenn nicht anders im Produktblatt definiert) -ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Standard-Buchhaltungskonto für in die EU verkaufte Produkte \n(wird verwendet, wenn nicht im Produktblatt definiert) -ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Standard-Buchhaltungskonto für ausserhalb der EU verkaufte Produkte [EXPORT] \n(wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Standard-Buchungskonto für gekaufte Produkte \n(wenn nicht anders im Produktblatt definiert) +ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Standard-Buchungskonto für gekaufte Produkte in der EWG (wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Standard-Buchungskonto für gekaufte und aus der EWG importierte Produkte (wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Standard-Buchungskonto für die verkauften Produkte (wenn nicht anders im Produktblatt definiert) +ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Standard-Buchungskonto für in die EWG verkaufte Produkte \n(wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Standard-Buchungskonto für außerhalb der EWG verkaufte Produkte [EXPORT] \n(wird verwendet, wenn nicht im Produktblatt definiert) -ACCOUNTING_SERVICE_BUY_ACCOUNT=Standard-Buchhaltungskonto für die gekauften Leistungen (wenn nicht anders im Produktblatt definiert) -ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Standardmäßig Buchhaltungskonto für die gekauften Dienstleistungen in der EU (wird verwendet, wenn nicht im Leistungsblatt definiert) -ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Standardmäßig Buchhaltungskonto für die gekauften und aus der EU importierten Dienstleistungen (wird verwendet, wenn nicht im Leistungsblatt definiert) -ACCOUNTING_SERVICE_SOLD_ACCOUNT=Standard-Buchhaltungskonto für die verkauften Leistungen (wenn nicht anders im Produktblatt definiert) -ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Standard-Buchhaltungskonto für in die EU verkaufte Dienstleistungen \n(wird verwendet, wenn nicht im Produktblatt definiert) -ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Standard-Buchhaltungskonto für ausserhalb der EU verkaufte Dienstleistungen [EXPORT] \n(wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Standard-Buchungskonto für die gekauften Leistungen (wenn nicht anders im Produktblatt definiert) +ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Standardmäßig Buchungskonto für eingekaufte Dienstleistungen in der EWG (wird verwendet, wenn nicht im Leistungsblatt definiert) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Standardmäßig Buchungskonto für die gekauften und aus der EWG importierten Dienstleistungen (wird verwendet, wenn nicht im Leistungsblatt definiert) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Standard-Buchungskonto für die verkauften Leistungen (wenn nicht anders im Produktblatt definiert) +ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Standard-Buchungskonto für in die EWG verkaufte Dienstleistungen \n(wird verwendet, wenn nicht im Produktblatt definiert) +ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Standard-Buchungskonto für außerhalb der EWG verkaufte Dienstleistungen [EXPORT] \n(wird verwendet, wenn nicht im Produktblatt definiert) Doctype=Dokumententyp Docdate=Datum Docref=Referenz -LabelAccount=Konto-Beschriftung +LabelAccount=Kontobezeichnung LabelOperation=Buchungstext Sens=Richtung -AccountingDirectionHelp=Verwenden Sie für ein Buchhaltungskonto eines Kunden "Haben", um eine Zahlung zu erfassen, die Sie erhalten haben.
Verwenden Sie für ein Buchhaltungskonto eines Lieferanten "Soll", um eine von Ihnen geleistete Zahlung zu erfassen -LetteringCode=Beschriftungscode -Lettering=Beschriftung +AccountingDirectionHelp=Verwenden Sie für ein Buchungskonto eines Kunden "Haben", um eine Zahlung zu erfassen, die Sie erhalten haben.
Verwenden Sie für ein Buchungskonto eines Lieferanten "Soll", um eine von Ihnen geleistete Zahlung zu erfassen +LetteringCode=Code zum Kontenabgleich +Lettering=Kontenabgleich Codejournal=Journal JournalLabel=Journal-Bezeichnung NumPiece=Teilenummer @@ -216,9 +216,9 @@ GroupByAccountAccounting=Gruppieren nach Hauptbuchkonto GroupBySubAccountAccounting=Gruppieren nach Nebenbuchkonto AccountingAccountGroupsDesc=Hier können Kontengruppen definiert werden. Diese werden für personaliserte Buchhaltungsreports verwendet. ByAccounts=Pro Konto -ByPredefinedAccountGroups=Pro vordefinierten Gruppen -ByPersonalizedAccountGroups=Pro persönlichen Gruppierung -ByYear=pro Jahr +ByPredefinedAccountGroups=Vordefinierte Gruppierung +ByPersonalizedAccountGroups=Benutzerdefinierte Gruppierung +ByYear=Pro Jahr NotMatch=undefiniert DeleteMvt=Zeilen aus der Buchhaltung löschen DelMonth=Monat zum Löschen @@ -229,7 +229,7 @@ ConfirmDeleteMvtPartial=Hierdurch wird die Transaktion aus der Buchhaltung gelö FinanceJournal=Finanzjournal ExpenseReportsJournal=Spesenabrechnungsjournal DescFinanceJournal=Finanzjournal inklusive aller Arten von Zahlungen mit Bankkonto -DescJournalOnlyBindedVisible=Dies ist eine Ansicht von Datensätzen, denen ein Buchhaltungskonto zugeordnet ist und die in den Journalen und im Hauptbuch erfasst werden können. +DescJournalOnlyBindedVisible=Dies ist eine Ansicht von Datensätzen, denen ein Buchungskonto zugeordnet ist und die in den Journalen und im Hauptbuch erfasst werden können. VATAccountNotDefined=Steuerkonto nicht definiert ThirdpartyAccountNotDefined=Konto für Geschäftspartner nicht definiert ProductAccountNotDefined=Konto für Produkt nicht definiert @@ -241,82 +241,82 @@ NewAccountingMvt=Erstelle Transaktion NumMvts=Transaktionsnummer ListeMvts=Liste der Buchungen ErrorDebitCredit=Soll und Haben können nicht gleichzeitig eingegeben werden -AddCompteFromBK=Buchhaltungskonten zur Gruppe hinzufügen +AddCompteFromBK=Buchungskonten zur Gruppe hinzufügen ReportThirdParty=Geschäftspartner-Konto anzeigen -DescThirdPartyReport=Kontieren Sie hier die Liste der Kunden und Lieferanten zu Ihrem Buchhaltungs-Konten -ListAccounts=Liste der Abrechnungskonten +DescThirdPartyReport=Liste der Geschäftspartner (Kunden und Lieferanten) und deren Buchungskonten +ListAccounts=Liste der Buchungskonten UnknownAccountForThirdparty=Unbekanntes Geschäftspartner-Konto. Wir werden %s verwenden. UnknownAccountForThirdpartyBlocking=unbekanntes Geschäftspartner-Konto, fortfahren nicht möglich ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Nebenbuchkonto nicht definiert oder Geschäftspartner oder Benutzer unbekannt. Wir verwenden %s ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Geschäftspartner unbekannt und Nebenbuch nicht in der Zahlung definiert. Wir werden den Nebenbuchkontowert leer lassen. ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Nebenbuchkonto nicht definiert oder Geschäftspartner oder Benutzer unbekannt. Nicht behebbarer Fehler. UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unbekanntes Geschäftspartner-Konto und wartendes Konto nicht definiert. Fehler beim Blockieren -PaymentsNotLinkedToProduct=Zahlung ist keinem Produkt oder Dienstleistung zugewisen +PaymentsNotLinkedToProduct=Zahlung ist keinem Produkt / keiner Leistung zugeordnet OpeningBalance=Eröffnungsbilanz ShowOpeningBalance=Eröffnungsbilanz anzeigen HideOpeningBalance=Eröffnungsbilanz ausblenden ShowSubtotalByGroup=Zwischensumme nach Ebene anzeigen Pcgtype=Kontenklasse -PcgtypeDesc=Kontengruppen werden für einige Buchhaltungsberichte als vordefinierte Filter- und Gruppierungskriterien verwendet. Beispielsweise werden "EINKOMMEN" oder "AUSGABEN" als Gruppen für die Buchhaltung von Produktkonten verwendet, um die Ausgaben- / Einnahmenrechnung zu erstellen. +PcgtypeDesc=Kontengruppen werden für einige Buchhaltungsberichte als vordefinierte Filter- und Gruppierungskriterien verwendet. Beispielsweise werden "Aufwand" oder "Ertrag" als Gruppen für die Buchungskonten von Produkten genutzt, um die Ausgaben-/Einnahmenrechnung zu erstellen. Reconcilable=ausgleichsfähig TotalVente=Gesamtumsatz vor Steuern TotalMarge=Gesamtumsatzrendite -DescVentilCustomer=Übersicht der Positionen aus Kundenrechnungen mit und ohne zugeordneten Buchhaltungskonten -DescVentilMore=Wenn in den Produkten und Leistungen die Buchhaltungskonten des Kontenplans hinterlegt sind, können die Rechnungspositionen automatisch jenen Konten zugeordnet werden. Dazu dient die Schaltfläche "%s".\nWo das nicht möglich ist, können die Rechnungspositionen via "%s" von Hand zugewiesen werden. -DescVentilDoneCustomer=Kontieren Sie hier die Liste der Kundenrechnungszeilen zu einem Buchhaltungs-Konto -DescVentilTodoCustomer=Kontiere nicht bereits kontierte Rechnungspositionen mit einem Buchhaltung Erlös-Konto -ChangeAccount=Ändere das Artikel Buchhaltungskonto für die ausgewählten Zeilen mit dem folgenden Buchhaltungskonto: +DescVentilCustomer=Übersicht der kontierten und unkontierten Positionen aus Kundenrechnungen +DescVentilMore=Wenn in den Produkten und Leistungen die entsprechenden Buchungskonten des Kontenplans hinterlegt sind, können die Rechnungspositionen automatisch jenen Konten zugeordnet werden. Dazu dient die Schaltfläche "%s".\nWo das nicht möglich ist, können die Rechnungspositionen via "%s" von Hand zugewiesen werden. +DescVentilDoneCustomer=Liste der Positionen der Kundenrechnungen und die Buchungskonten der Produkte +DescVentilTodoCustomer=Nicht bereits kontierte Rechnungspositionen mit einem Erlös-Konto der Buchhaltung kontieren +ChangeAccount=Buchungskonto für Produkte/Leistungen für die ausgewählten Positionen in das folgende Buchungskonto ändern: Vide=- DescVentilSupplier=Übersicht der unkontierten und kontierten Positionen aus Lieferantenrechnungen (nur Datensätze, die noch nicht in die Buchhaltung übertragen wurden, sind sichtbar). -DescVentilDoneSupplier=Konsultieren Sie hier die Liste der Kreditorenrechnungszeilen und deren Buchhaltungskonto +DescVentilDoneSupplier=Sehen Sie hier die Liste der Lieferanten-/Kreditoren-Rechnungspositionen und deren Buchungskonten DescVentilTodoExpenseReport=Unkontierte Positionen der Spesenabrechnung kontieren -DescVentilExpenseReport=Übersicht der Ausgabenpositionen aus Spesenabrechnungen mit und ohne zugeordnetem Buchhaltungskonto +DescVentilExpenseReport=Übersicht der kontierten und unkontierten Ausgabenpositionen aus Spesenabrechnungen DescVentilExpenseReportMore=Wenn Sie im Modul Buchhaltung Konten für die Spesenabrechnung konfiguriert haben, wird die Kontierungen der Spesenabrechnungspositionen durch einen Klick auf die Schaltfläche "%s" automatisch vorgenommen. Wenn im Buchhaltungsmodul keine Konten für die Spesenabrechnung hinterlegt wurden oder wenn Zeilen nicht automatisch einem Konto zugeordnet werden können, muss die Zuordnung manuell über das Menü "%s“ erfolgen. -DescVentilDoneExpenseReport=Liste der Aufwendungen aus Spesenabrechnungen und ihre zugeordneten Buchhaltungskonten +DescVentilDoneExpenseReport=Liste der Aufwendungen aus Spesenabrechnungen und ihre zugeordneten Buchungskonten -Closure=Jahresabschluss -DescClosure=Informieren Sie sich hier über die Anzahl der Buchungen pro Monat, die noch nicht validiert und festgeschrieben sind. +Closure=Festschreibung +DescClosure=Informieren Sie sich hier über die Anzahl der Buchungen pro Monat, die noch nicht freigegeben und festgeschrieben sind. OverviewOfMovementsNotValidated=Übersicht der noch nicht festgeschriebenen Buchungen -AllMovementsWereRecordedAsValidated=Alle Buchungen wurden als validiert und festgeschrieben aufgezeichnet -NotAllMovementsCouldBeRecordedAsValidated=Nicht alle Buchungen konnten als validiert und festgeschrieben erfasst werden -ValidateMovements=Buchungen festschreiben... +AllMovementsWereRecordedAsValidated=Alle Buchungen wurden als freigegeben und festgeschrieben registriert +NotAllMovementsCouldBeRecordedAsValidated=Nicht alle Buchungen konnten als freigegeben und festgeschrieben registriert werden +ValidateMovements=Buchungen freigeben und festschreiben... DescValidateMovements=Es sind danach keinerlei Änderungen oder Löschungen mehr möglich. Alle Buchungssätze müssen festgeschrieben werden, andernfalls ist kein Abschluss möglich -ValidateHistory=Automatisch zuordnen +ValidateHistory=Automatisch kontieren AutomaticBindingDone=Automatische Zuordnungen durchgeführt (%s) - Automatische Zuordnung für einige Datensätze nicht möglich (%s) -ErrorAccountancyCodeIsAlreadyUse=Fehler, Sie können dieses Buchhaltungskonto nicht löschen, da es benutzt wird. +ErrorAccountancyCodeIsAlreadyUse=Fehler, Sie können dieses Buchungskonto nicht löschen, da es benutzt wird. MvtNotCorrectlyBalanced=Buchungssalden nicht ausgeglichen. Soll = %s & Haben = %s Balancing=Abschluss FicheVentilation=Zuordnungs Karte GeneralLedgerIsWritten=Transaktionen werden ins Hauptbuch geschrieben GeneralLedgerSomeRecordWasNotRecorded=Einige der Buchungen konnten nicht übernommen werden. Es gab keine Fehler, vermutlich wurden diese Buchungen schon früher übernommen. NoNewRecordSaved=Keine weiteren Datensätze zu übertragen -ListOfProductsWithoutAccountingAccount=Liste der Produkte, die keinem Buchhaltungskonto zugeordnet sind +ListOfProductsWithoutAccountingAccount=Liste der Produkte, die keinem Buchungskonto zugeordnet sind ChangeBinding=Ändern der Zuordnung Accounted=im Hauptbuch erfasst NotYetAccounted=Noch nicht in die Buchhaltung übernommen ShowTutorial=Tutorial anzeigen -NotReconciled=nicht ausgeglichen +NotReconciled=Nicht abgeglichen WarningRecordWithoutSubledgerAreExcluded=Achtung, alle Zeilen ohne definiertes Nebenbuchkonto werden gefiltert und von dieser Ansicht ausgeschlossen -AccountRemovedFromCurrentChartOfAccount= Im aktuellen Kontenplan nicht vorhandenes Buchhaltungskonto +AccountRemovedFromCurrentChartOfAccount=Im aktuellen Kontenplan nicht vorhandenes Buchungskonto ## Admin BindingOptions=Verbindungsoptionen ApplyMassCategories=Massenaktualisierung der Kategorien AddAccountFromBookKeepingWithNoCategories=Verfügbares Konto noch nicht in der personalisierten Gruppe -CategoryDeleted=Die Gruppe für das Buchhaltungskonto wurde entfernt +CategoryDeleted=Die Gruppe für das Buchungskonto wurde entfernt AccountingJournals=Buchhaltungsjournale AccountingJournal=Buchhaltungsjournal NewAccountingJournal=Neues Buchhaltungsjournal ShowAccountingJournal=Buchhaltungsjournal anzeigen NatureOfJournal=Art des Journals -AccountingJournalType1=Verschiedene Aktionen -AccountingJournalType2=Verkäufe / Umsatz +AccountingJournalType1=Sonstige Buchungen +AccountingJournalType2=Verkäufe/Umsatz AccountingJournalType3=Einkäufe AccountingJournalType4=Bank AccountingJournalType5=Spesenabrechnungen @@ -333,8 +333,8 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Deaktivieren Sie die Bindung und Ü ## Export NotifiedExportDate=Exportierte Zeilen als exportiert kennzeichnen (um eine Zeile zu ändern, müssen Sie die gesamte Transaktion löschen und erneut in die Buchhaltung übertragen) NotifiedValidationDate=Festschreiben der exportierten Einträge (gleiche Wirkung wie die "Abschluss"-Funktion, Änderungen und Löschungen der Zeilen sind DEFINITIV NICHT möglich) -DateValidationAndLock=Datum Festschreibung -ConfirmExportFile=Bestätigung der Generierung der Buchhaltungsexportdatei ? +DateValidationAndLock=Festschreibungsdatum +ConfirmExportFile=Exportdatei der Buchhaltung erstellen? ExportDraftJournal=Entwurfsjournal exportieren Modelcsv=Datenformat für den Export Selectmodelcsv=Wählen Sie ein Datenformat für den Export @@ -362,7 +362,7 @@ ChartofaccountsId=Kontenplan ID ## Tools - Init accounting account on product / service InitAccountancy=Rechnungswesen initialisieren -InitAccountancyDesc=Auf dieser Seite kann ein Sachkonto für Artikel und Dienstleistungen vorgegeben werden, wenn noch kein Buchhaltungs-Konto für Ein- und Verkäufe definiert ist. +InitAccountancyDesc=Auf dieser Seite kann ein Buchungskonto für Produkte und Leistungen, für die noch kein Buchungskonto für Ein- und Verkäufe definiert ist, vorgegeben werden. DefaultBindingDesc=Diese Seite kann verwendet werden, um ein Standardkonto festzulegen, das für die Verknüpfung von Transaktionsdatensätzen zu Lohnzahlungen, Spenden, Steuern und USt. verwendet werden soll, wenn kein bestimmtes Konto angegeben wurde. DefaultClosureDesc=Diese Seite kann verwendet werden, um Parameter festzulegen, die für Abrechnungsabschlüsse verwendet werden. Options=Optionen @@ -372,26 +372,26 @@ OptionModeProductSellExport=Modus Verkäufe Export (ausserhalb EU/EWG) OptionModeProductBuy=Modus Einkäufe OptionModeProductBuyIntra=Modus in die EU importierte Einkäufe OptionModeProductBuyExport=Modus aus anderen Staaten importierte Einkäufe -OptionModeProductSellDesc=Alle Produkte mit Buchhaltungskonto für Verkäufe Inland anzeigen. -OptionModeProductSellIntraDesc=Alle Produkte mit Buchhaltungskonto für Verkäufe in EWG anzeigen. -OptionModeProductSellExportDesc=Alle Produkte mit Abrechnungskonto für Verkäufe Ausland anzeigen. -OptionModeProductBuyDesc=Alle Produkte mit Buchhaltungskonto für Einkäufe anzeigen. -OptionModeProductBuyIntraDesc=Alle Produkte mit Buchhaltungskonto für Einkäufe in der EWG anzeigen. -OptionModeProductBuyExportDesc=Alle Produkte mit Buchhaltungskonto für andere ausländische Einkäufe anzeigen. -CleanFixHistory=Zugeordnete Buchhaltungskonten, die im Kontenplan nicht definiert sind, von Positionen entfernen +OptionModeProductSellDesc=Alle Produkte mit Buchungskonto für Verkäufe (Inland) anzeigen. +OptionModeProductSellIntraDesc=Alle Produkte mit Buchungskonto für Verkäufe in der EWG anzeigen. +OptionModeProductSellExportDesc=Alle Produkte mit Buchungskonto für Verkäufe Ausland anzeigen. +OptionModeProductBuyDesc=Alle Produkte mit Buchungskonto für Einkäufe (Inland) anzeigen. +OptionModeProductBuyIntraDesc=Alle Produkte mit Buchungskonto für Einkäufe in der EWG anzeigen. +OptionModeProductBuyExportDesc=Alle Produkte mit Buchungskonto für andere ausländische Einkäufe anzeigen. +CleanFixHistory=Zugeordnete Buchungskonten, die im Kontenplan nicht definiert sind, von Positionen entfernen CleanHistory=Alle Zuordnungen für das ausgewählte Jahr zurücksetzen. PredefinedGroups=Vordefinierte Gruppen WithoutValidAccount=Mit keinem gültigen dedizierten Konto -WithValidAccount=Mit gültigen dedizierten Konto -ValueNotIntoChartOfAccount=Dieser Wert für das Buchhaltungs-Konto existiert nicht im Kontenplan +WithValidAccount=Mit gültigem dedizierten Konto +ValueNotIntoChartOfAccount=Dieser Wert für das Buchungskonto existiert nicht im Kontenplan AccountRemovedFromGroup=Konto aus der Gruppe entfernt SaleLocal=Verkauf Inland SaleExport=Verkauf Export (ausserhalb EWG) SaleEEC=Verkauf in EU/EWG SaleEECWithVAT=Verkauf in der EU mit Mehrwertsteuer (nicht null), und daher anzunehmen ist, dass es sich NICHT um einen innergemeinschaftlichen Verkauf handelt und das vorgeschlagene Konto daher das Standardproduktkonto ist. SaleEECWithoutVATNumber=Verkauf in der EU ohne USt., aber ohne dass die erforderliche USt.-ID des Geschäftspartners hinterlegt ist. Es wird stattdessen auf das Produktkonto für Standardverkäufe zurückgegriffen. Bei Bedarf kann die USt.-ID des Geschäftspartners festgelegt oder die Einstellung für das Produktkonto geändert werden. -ForbiddenTransactionAlreadyExported=Unzulässig: Die Transaktion wurde bereits validiert und/oder exportiert. -ForbiddenTransactionAlreadyValidated=Unzulässig: Die Transaktion wurde bereits validiert. +ForbiddenTransactionAlreadyExported=Unzulässig: Die Transaktion wurde bereits freigegeben und/oder exportiert. +ForbiddenTransactionAlreadyValidated=Unzulässig: Die Transaktion wurde bereits freigegeben. ## Dictionary Range=Bereich von Sachkonten Calculated=berechnet @@ -415,18 +415,19 @@ ConfirmMassDeleteBookkeepingWritingQuestion=Dadurch wird die Transaktion aus der ## Error SomeMandatoryStepsOfSetupWereNotDone=Einige zwingende Einstellungen wurden nicht gemacht, bitte vervollständigen sie die Einrichtung ErrorNoAccountingCategoryForThisCountry=Keine Buchhaltung Kategorie für das Land %s verfügbar (siehe Startseite - Einstellungen - Stammdaten) -ErrorInvoiceContainsLinesNotYetBounded=Sie versuchen einige Rechnungspositionen der Rechnung %s zu journalisieren, aber einige Postionen sind keinem Buchhaltungskonto zugewiesen. Alle Rechnungspositionen dieser Rechnung werden ignoriert. -ErrorInvoiceContainsLinesNotYetBoundedShort=Manche Rechnungspositionen sind keinem Buchhaltungskonto zugewiesen. +ErrorInvoiceContainsLinesNotYetBounded=Sie versuchen einige Rechnungspositionen der Rechnung %s zu journalisieren, aber einige Postionen sind keinem Buchungskonto zugewiesen. Alle Rechnungspositionen dieser Rechnung werden ignoriert. +ErrorInvoiceContainsLinesNotYetBoundedShort=Einige Rechnungspositionen sind unkontiert. ExportNotSupported=Das eingestellte Exportformat wird von deiser Seite nicht unterstützt BookeppingLineAlreayExists=Zeilen sind schon in der Buchhaltung vorhanden NoJournalDefined=Kein Journal definiert -Binded=kontierte Positionen -ToBind=unkontierte Positionen -UseMenuToSetBindindManualy=Zeilen noch nicht zugeordnet, verwende das Menu %s um die Zuordnung manuell durchzuführen +Binded=Kontierte Positionen +ToBind=Unkontierte Positionen +UseMenuToSetBindindManualy=Unkontierte Positionen, das Menu %s verwenden, um die Kontierung manuell durchzuführen SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Dieses Modul ist leider nicht mit der experimentellen Funktion von Situationsrechnungen kompatibel AccountancyErrorMismatchLetterCode=Fehlende Übereinstimmung im Code für Abgleich AccountancyErrorMismatchBalanceAmount=Der Saldo (%s) ist ungleich 0 AccountancyErrorLetteringBookkeeping=Bei den Transaktionen sind Fehler aufgetreten: %s +ErrorAccountNumberAlreadyExists=Das Buchungskonto %s existiert bereits ## Import ImportAccountingEntries=Buchaltungseinträge @@ -450,7 +451,7 @@ FECFormatValidateDate=Stückdatum validiert (ValidDate) FECFormatMulticurrencyAmount=Mehrwährungs-Betrag (Montantdevise) FECFormatMulticurrencyCode=Mehrwährungs-Code (Idevise) -DateExport=Datum Export +DateExport=Exportdatum WarningReportNotReliable=Achtung, dieser Bericht basiert nicht auf dem Hauptbuch und enthält keine Transaktionen, die manuell im Hauptbuch geändert wurden. Wenn Ihre Journalisierung aktuell ist, ist die Buchhaltungsansicht genauer. ExpenseReportJournal=Spesenabrechnung Journal InventoryJournal=Inventarjournal diff --git a/htdocs/langs/de_DE/admin.lang b/htdocs/langs/de_DE/admin.lang index b3dfc65582d..a5cce538d5a 100644 --- a/htdocs/langs/de_DE/admin.lang +++ b/htdocs/langs/de_DE/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Nächster Wert (Ersetzungen) MustBeLowerThanPHPLimit=Hinweis: Ihre PHP-Konfiguration begrenzt derzeit die maximale Dateigröße für den Upload auf %s%s, unabhängig vom hier angegebenen Wert NoMaxSizeByPHPLimit=Hinweis: In Ihren PHP-Einstellungen sind keine Größenbeschränkungen hinterlegt MaxSizeForUploadedFiles=Maximale Größe für Dateiuploads (0 verbietet jegliche Uploads) -UseCaptchaCode=Captcha-Code auf der Anmeldeseite verwenden +UseCaptchaCode=Verwenden Sie grafischen Code (CAPTCHA) auf der Anmeldeseite und einigen öffentlichen Seiten AntiVirusCommand=Vollständiger Pfad zum installierten Virenschutz AntiVirusCommandExample=Beispiel für einen ClamAv-Daemon (Clamav-Daemon erforderlich): /usr/bin/clamdscan
Beispiel für ClamWin (sehr, sehr langsam): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Weitere Kommandozeilen-Parameter für den Virenschutz @@ -281,7 +281,7 @@ SpaceX=Ausdehnung X SpaceY=Ausdehnung Y FontSize=Schriftgröße Content=Inhalt -ContentForLines=Inhalt, der für jedes Produkt oder jede Dienstleistung angezeigt werden soll (aus der Variablen __LINES__ des Inhalts) +ContentForLines=Inhalt, der für jedes Produkt oder jede Leistung angezeigt werden soll (aus der Variablen __LINES__ des Inhalts) NoticePeriod=Einreichefrist NewByMonth=Neu nach Monat Emails=E-Mail @@ -292,19 +292,19 @@ EMailsSenderProfileDesc=Sie können diesen Bereich leer lassen. Wenn Sie hier E- MAIN_MAIL_SMTP_PORT=SMTP(S)-Port (Standardwert Ihrer php.ini: %s) MAIN_MAIL_SMTP_SERVER=SMTP(S)-Server (Standardwert Ihrer php.ini: %s) MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS-Port (nicht in PHP definiert in Unix-Umgebungen) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP-Host (nicht in PHP definiert auf Unix-Umgebungen) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP-Host (nicht in PHP definiert in Unix-Umgebungen) MAIN_MAIL_EMAIL_FROM=Absender-Adresse für automatisch erstellte E-Mails (Standardwert in php.ini: %s) MAIN_MAIL_ERRORS_TO=Standard-E-Mail-Adresse für Fehlerrückmeldungen (beispielsweise unzustellbare E-Mails) MAIN_MAIL_AUTOCOPY_TO= Blindkopie (BCC) aller gesendeten E-Mails an MAIN_DISABLE_ALL_MAILS=Alle E-Mail-Funktionen deaktivieren (für Test- oder Demonstrationszwecke) MAIN_MAIL_FORCE_SENDTO=Sende alle E-Mails an den folgenden anstatt an die tatsächlichen Empfänger (für Testzwecke) MAIN_MAIL_ENABLED_USER_DEST_SELECT=E-Mail-Adressen von Mitarbeitern (falls definiert) beim Schreiben einer neuen E-Mail in der Liste vordefinierten Empfänger vorschlagen -MAIN_MAIL_SENDMODE=E-Mail Sendemethode +MAIN_MAIL_SENDMODE=Sendemethode für E-Mails MAIN_MAIL_SMTPS_ID=SMTP-Benutzer (falls der Server eine Authentifizierung benötigt) MAIN_MAIL_SMTPS_PW=SMTP-Passwort (falls der Server eine Authentifizierung benötigt) MAIN_MAIL_EMAIL_TLS=TLS (SSL) Verschlüsselung verwenden MAIN_MAIL_EMAIL_STARTTLS=TLS (STARTTLS) Verschlüsselung verwenden -MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Autorisieren der automatischen Signaturen der Zertifikate +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Selbst-signierte Zertifikate erlauben MAIN_MAIL_EMAIL_DKIM_ENABLED=Verwende DKIM um die E-Mail Signatur zu erstellen MAIN_MAIL_EMAIL_DKIM_DOMAIN=E-Mail Domain für die Verwendung mit DKIM MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name des DKIM-Selektors @@ -312,10 +312,10 @@ MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Privater Schlüssel für die DKIM-Signatur MAIN_DISABLE_ALL_SMS=alle SMS-Funktionen abschalten (für Test- oder Demozwecke) MAIN_SMS_SENDMODE=Methode zum Versenden von SMS MAIN_MAIL_SMS_FROM=Standard Versandrufnummer der SMS-Funktion -MAIN_MAIL_DEFAULT_FROMTYPE=Standard Absenderadresse für manuelles Senden (Benutzer- oder Unternehmens-Adresse) +MAIN_MAIL_DEFAULT_FROMTYPE=Standard-Absenderadresse für manuelles Senden (Benutzer- oder Unternehmens-Adresse) UserEmail=E-Mail des Benutzers CompanyEmail=Unternehmens-E-Mail -FeatureNotAvailableOnLinux=Diese Funktion ist auf Unix-Umgebungen nicht verfügbar. Testen Sie Ihr sendmail Programm lokal. +FeatureNotAvailableOnLinux=Diese Funktion ist in Unix-Umgebungen nicht verfügbar. Testen Sie Ihr sendmail Programm lokal. FixOnTransifex=Die Übersetzung in der Online-Übersetzungs-Plattform des Projektes korrigieren SubmitTranslation=Wenn die Übersetzung für diese Sprache nicht vollständig ist oder Sie Fehler finden, können Sie dies korrigieren, indem Sie Dateien im Verzeichnis langs/%s bearbeiten und Ihre Änderung an www.transifex.com/dolibarr-association/dolibarr/ senden. SubmitTranslationENUS=Ist die Übersetzung für diese Sprache nicht vollständig oder fehlerhaft, kann das durch editieren der Dateien im Verzeichnis langs/%s korrigiert werden und modifizierte Dateien sollen auch auf dolibarr.org/forum gepostet oder, als Entwickler, mit einer PR auf github.com/Dolibarr/dolibarr bekanntgeben werden @@ -378,7 +378,7 @@ UMask=UMask-Parameter für neue Dateien auf Unix/Linux/BSD-Dateisystemen. UMaskExplanation=Über diesen Parameter können Sie die standardmäßigen Dateiberechtigungen für vom System erzeugte/verwaltete Inhalte festlegen.
Erforderlich ist ein Oktalwert (0666 bedeutet z.B. Lesen und Schreiben für alle).
Auf Windows-Umgebungen haben diese Einstellungen keinen Effekt. SeeWikiForAllTeam=Werfen Sie einen Blick auf die Wiki-Seite für eine vollständige Liste aller Mitwirkenden und deren Organisationen UseACacheDelay= Verzögerung für den Export der Cache-Antwort in Sekunden (0 oder leer für kein Caching) -DisableLinkToHelpCenter=Link " Brauche Hilfe oder Support " auf der Login-Seite ausblenden +DisableLinkToHelpCenter=Link "Brauche Hilfe oder Support" auf der Login-Seite ausblenden DisableLinkToHelp=Link zur Online-Hilfe "%s" ausblenden AddCRIfTooLong=Bitte beachten Sie, dass kein automatischer Zeilenumbruch erfolgt und zu langer Text nicht angezeigt wird. Falls benötigt, fügen Sie Zeilenumbrüche bitte manuell ein. ConfirmPurge=Sind Sie sicher, dass Sie diese Bereinigung durchführen möchten?
dadurch werden alle Ihre Datendateien dauerhaft gelöscht, ohne dass Sie sie wiederherstellen können (ECM-Dateien, angehängte Dateien....). @@ -450,7 +450,7 @@ ExtrafieldCheckBox=Kontrollkästchen / Dropdownliste (mehrere Optionen auswählb ExtrafieldCheckBoxFromList=Kontrollkästchen / Dropdownliste aus DB-Tabelle (mehrere Optionen auswählbar) ExtrafieldLink=Verknüpftes Objekt ComputedFormula=Berechnetes Feld -ComputedFormulaDesc=Sie können hier eine Formel mit anderen Eigenschaften des Objekts oder beliebigen PHP-Code eingeben, um einen dynamisch berechneten Wert zu erhalten. Sie können alle PHP-kompatiblen Formeln verwenden, einschließlich "?" Bedingungsoperator und folgendes globales Objekt: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
WARNUNG : Möglicherweise sind nur einige Eigenschaften von $ object verfügbar. Wenn Sie Eigenschaften benötigen, die nicht geladen sind, holen Sie sich das Objekt einfach wie im zweiten Beispiel in Ihre Formel.
Wenn Sie ein berechnetes Feld verwenden, können Sie keinen Wert über die Schnittstelle eingeben. Wenn ein Syntaxfehler vorliegt, gibt die Formel möglicherweise nichts zurück.

Beispiel für die Formel:
$ object-> id < 10 ? round($object-> id / 2, 2): ($ object-> id + 2 * $ user-> id) * (int) substr ($ mysoc-> zip, 1, 2 )

Beispiel zum erneuten Laden des Objekts
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Anderes Beispiel für eine Formel zum erzwungenen Laden des Objekts und seines übergeordneten Objekts:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +ComputedFormulaDesc=Sie können hier eine Formel mit anderen Eigenschaften des Objekts oder beliebigen PHP-Code eingeben, um einen dynamisch berechneten Wert zu erhalten. Sie können alle PHP-kompatiblen Formeln verwenden, einschließlich dem "?"-Bedingungsoperator und die folgenden globalen Objekte: $db, $conf, $langs, $mysoc, $user, $object.
WARNUNG: Möglicherweise sind nur einige Eigenschaften von $object verfügbar. Wenn Sie Eigenschaften benötigen, die nicht geladen sind, holen Sie sich das Objekt einfach wie im zweiten Beispiel in Ihre Formel.
Wenn Sie ein berechnetes Feld verwenden, können Sie keinen Wert über die Benutzerschnittstelle eingeben. Wenn ein Syntaxfehler vorliegt, gibt die Formel möglicherweise nichts zurück.

Beispiel für eine Formel:
$object-> id < 10 ? round($object-> id/2, 2): ($object-> id + 2 * $user-> id) * (int) substr ($mysoc-> zip, 1, 2 )

Beispiel für das Laden eines Objekts:
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Anderes Beispiel für eine Formel zum Laden des Objekts und seines übergeordneten Objekts:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' Computedpersistent=Berechnetes Feld speichern ComputedpersistentDesc=Berechnete Extrafelder werden in der Datenbank gespeichert, dennoch wird ihr Wert nur dann neu berechnet wenn sich das Objekt zu diesem Feld ändert. Falls das berechnete Feld von anderen Objekten oder globalen Daten abhängt, kann sein Wert falsch sein! ExtrafieldParamHelpPassword=Wenn Sie dieses Feld leer lassen, wird dieser Wert unverschlüsselt gespeichert (das Feld darf nur mit einem Stern auf dem Bildschirm ausgeblendet werden).
Stellen Sie 'auto'; ein, um die Standardverschlüsselungsregel zum Speichern des Kennworts in der Datenbank zu verwenden (dann ist der gelesene Wert nur der Hash, keine Möglichkeit, den ursprünglichen Wert abzurufen). @@ -474,7 +474,7 @@ SetAsDefault=Als Standard setzen ValueOverwrittenByUserSetup=Achtung, dieser Wert kann durch den Benutzer überschrieben werden (jeder kann seine eigene ClickToDial-URL setzen) ExternalModule=Externes Modul InstalledInto=Installiert in Verzeichnis %s -BarcodeInitForThirdparties=alle Barcodes für Geschäftspartner initialisieren +BarcodeInitForThirdparties=Alle Barcodes für Geschäftspartner initialisieren BarcodeInitForProductsOrServices=Alle Barcodes für Produkte oder Services initialisieren oder zurücksetzen CurrentlyNWithoutBarCode=Zur Zeit gibt es %s Datensätze in %s %s ohne Barcode. InitEmptyBarCode=Startwert für die nächsten %s leeren Datensätze @@ -491,7 +491,7 @@ DisplayCompanyInfoAndManagers=Firmenanschrift und Managernamen anzeigen EnableAndSetupModuleCron=Wenn diese wiederkehrende Rechnung automatisch generiert werden soll, muss das Modul *%s* aktiviert und korrekt eingerichtet sein. Andernfalls muss die Rechnungserstellung manuell aus dieser Vorlage mit der Schaltfläche * Erstellen * erfolgen. Beachten Sie, dass Sie die manuelle Generierung auch dann sicher starten können, wenn Sie die automatische Generierung aktiviert haben. Die Erstellung von Duplikaten für denselben Zeitraum ist nicht möglich. ModuleCompanyCodeCustomerAquarium=%s gefolgt von Kundennummer für eine Kundenkontonummer ModuleCompanyCodeSupplierAquarium=%s gefolgt vom Lieferantenpartnercode für eine Lieferantenkontonummer -ModuleCompanyCodePanicum=leeren Kontierungscode zurückgeben +ModuleCompanyCodePanicum=Leeren Kontierungscode zurückgeben ModuleCompanyCodeDigitaria=Gibt einen zusammengesetzten Buchungscode gemäß dem Namen des Geschäftspartners zurück. Der Code besteht aus einem Präfix, das an der ersten Position definiert werden kann, gefolgt von der Anzahl der Zeichen, die im Code des Drittanbieters definiert sind. ModuleCompanyCodeCustomerDigitaria=%s, gefolgt vom abgeschnittenen Kundennamen und der Anzahl der Zeichen: %s für den Kundenbuchhaltungscode. ModuleCompanyCodeSupplierDigitaria=%s, gefolgt vom verkürzten Lieferantennamen und der Anzahl der Zeichen: %s für den Lieferantenbuchhaltungscode. @@ -504,7 +504,7 @@ WarningPHPMailC=- Interessant ist auch die Verwendung des SMTP-Servers Ihres eig WarningPHPMailD=Es wird empfohlen, die Versandart von E-Mails auf den Wert „SMTP“ zu ändern. Wenn Sie wirklich die Standardmethode "PHP" zum Senden von E-Mails beibehalten möchten, ignorieren Sie diese Warnung oder deaktivierten Sie sie, indem Sie die Konstante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP in Start - Einstellungen - Erweiterte Einstellungen auf 1 setzen. WarningPHPMail2=Wenn Ihr E-Mail-SMTP-Anbieter den E-Mail-Client auf einige IP-Adressen beschränken muss (sehr selten), dann ist dies die IP-Adresse des Mail User Agent (MUA) für ihr Dolibarr-System: %s. WarningPHPMailSPF=Wenn die Domain in Ihrer Absender-E-Mail-Adresse durch einen SPF-Eintrag geschützt ist (beim Domain-Registrar zu erfragen), müssen dem SPF-Eintrag im DNS Ihrer Domain die folgenden IP-Adressen hinzugefügt werden: %s . -ActualMailSPFRecordFound=Tatsächlicher SPF-Eintrag gefunden: %s +ActualMailSPFRecordFound=Tatsächlicher SPF-Eintrag gefunden (für E-Mail %s): %s ClickToShowDescription=Klicke um die Beschreibung zu sehen DependsOn=Diese Modul benötigt folgenden Module RequiredBy=Diese Modul ist für folgende Module notwendig @@ -563,7 +563,7 @@ Module43Desc=Ein Tool für Entwickler, das eine Debug-Leiste in Ihrem Browser hi Module49Name=Bearbeiter Module49Desc=Editorverwaltung Module50Name=Produkte -Module50Desc=Produktverwaltung +Module50Desc=Verwaltung von Produkten Module51Name=Massen-Mailings Module51Desc=Verwaltung von Postwurf-/Massensendungen Module52Name=Lagerverwaltung @@ -598,9 +598,9 @@ Module200Name=LDAP Module200Desc=LDAP-Verzeichnissynchronisation Module210Name=PostNuke Module210Desc=PostNuke-Integration -Module240Name=Daten Exporte +Module240Name=Datenexporte Module240Desc=Werkzeug zum Datenexport (mit Assistenten) -Module250Name=Daten Importe +Module250Name=Datenimporte Module250Desc=Werkzeug zum Datenimport (mit Assistenten) Module310Name=Mitglieder Module310Desc=Mitgliederverwaltung für Stiftungen und Vereine @@ -688,7 +688,7 @@ Module50400Name=Buchhaltung (erweitert) Module50400Desc=Buchhaltungsmanagement (doppelte Einträge, Unterstützung von Haupt- und Nebenbüchern). Exportieren Sie das Hauptbuch in verschiedene andere Buchhaltungssoftwareformate. Module54000Name=PrintIPP Module54000Desc=Direktdruck (ohne die Dokumente zu öffnen) mittels CUPS IPP (Drucker muss vom Server aus sichtbar sein, auf dem Server muss CUPS installiert sein) -Module55000Name=Umfrage- und Terminfindung +Module55000Name=Umfrage und Terminfindung Module55000Desc=Modul zur Erstellung von Umfragen und zur Terminfindung (vergleichbar mit Doodle) Module59000Name=Gewinnspannen Module59000Desc=Modul zur Verwaltung von Gewinnspannen @@ -719,7 +719,7 @@ Permission36=Projekte/Leistungen exportieren Permission38=Produkte exportieren Permission39=Minimalpreis ignorieren Permission41=Projekte und Aufgaben einsehen (gemeinsame Projekte und Projekte, bei denen ich Ansprechpartner bin). -Permission42=Projekte erstellen/ändern (gemeinsame Projekte und Projekte, bei denen ich Ansprechpartner bin). Kann den Projekten und Aufgaben auch Benutzer zuweisen +Permission42=Projekte erstellen/bearbeiten (gemeinsame Projekte und Projekte, bei denen ich Ansprechpartner bin). Kann den Projekten und Aufgaben auch Benutzer zuweisen Permission44=Projekte löschen (gemeinsame Projekte und Projekte, bei denen ich Ansprechpartner bin) Permission45=Projekte exportieren Permission61=Serviceaufträge einsehen @@ -733,7 +733,7 @@ Permission71=Mitglieder einsehen Permission72=Mitglieder erstellen/bearbeiten Permission74=Mitglieder löschen Permission75=Erstellen Typen von Mitgliedschaft -Permission76=Daten Export +Permission76=Datenexport Permission78=Abonnements einsehen Permission79=Abonnements erstellen/bearbeiten Permission81=Kundenaufträge einsehen @@ -748,33 +748,33 @@ Permission92=Sozialabgaben, Steuern und Mehrwertsteuer erstellen/bearbeiten Permission93=Sozialabgaben, Steuern und Mehrwertsteuer löschen Permission94=Sozialabgaben, Steuern und Mehrwertsteuer erstellen/bearbeiten Permission95=Buchhaltung einsehen -Permission101=Auslieferungen einsehen -Permission102=Auslieferungen erstellen/bearbeiten -Permission104=Auslieferungen freigeben +Permission101=Lieferungen einsehen +Permission102=Lieferungen erstellen/bearbeiten +Permission104=Lieferungen freigeben Permission105=Sende Sendungen per E-Mail -Permission106=Auslieferungen exportieren +Permission106=Lieferungen exportieren Permission109=Sendungen löschen -Permission111=Finanzkonten einsehen -Permission112=Transaktionen erstellen/ändern/löschen und vergleichen -Permission113=Finanzkonten einrichten (Kategorien von Banktransaktionen erstellen und verwalten) -Permission114=Transaktionen ausgleichen +Permission111=Bankkonten einsehen +Permission112=Transaktionen erstellen/bearbeiten/löschen und vergleichen +Permission113=Bankkonten einrichten (Kategorien von Banktransaktionen erstellen und verwalten) +Permission114=Transaktionen abgleichen Permission115=Transaktionen und Kontoauszüge exportieren Permission116=Transfers zwischen Konten Permission117=Schecks verwalten -Permission121=Mit Benutzer verbundene Partner einsehen -Permission122=Mit Benutzer verbundene Partner erstellen/bearbeiten -Permission125=Mit Benutzer verbundene Partner löschen +Permission121=Mit Benutzer verbundene Geschäftspartner einsehen +Permission122=Mit Benutzer verbundene Geschäftspartner erstellen/bearbeiten +Permission125=Mit Benutzer verbundene Geschäftspartner löschen Permission126=Geschäftspartner exportieren -Permission130=Zahlungsinformationen von Geschäftspartnern erstellen/ändern +Permission130=Zahlungsinformationen von Geschäftspartnern erstellen/bearbeiten Permission141=Alle Projekte und Aufgaben lesen (auch private Projekte, für die ich kein Ansprechpartner bin) -Permission142=Erstellen/Ändern aller Projekte und Aufgaben (auch private Projekte, für die ich kein Ansprechpartner bin) +Permission142=Erstellen/Bearbeiten aller Projekte und Aufgaben (auch private Projekte, für die ich kein Ansprechpartner bin) Permission144=Alle Projekte und Aufgaben löschen (auch private Projekte, für die ich kein Ansprechpartner bin) Permission145=Kann für mich oder meine Hierarchie aufgewendete Zeiten für zugewiesene Aufgaben erfassen (Arbeitszeittabelle) Permission146=Lieferanten einsehen Permission147=Statistiken einsehen -Permission151=Bestellung mit Zahlart Lastschrift +Permission151=Lastschriftaufträge einsehen Permission152=Lastschriftaufträge erstellen/bearbeiten -Permission153=Bestellungen mit Zahlart Lastschrift übertragen +Permission153=Lastschriftaufträge senden/übertragen Permission154=Gutschriften / Ablehnungen von Lastschrift-Zahlungsaufträgen erfassen Permission161=Verträge/Abonnements einsehen Permission162=Verträge/Abonnements erstellen/bearbeiten @@ -782,7 +782,7 @@ Permission163=Leistung/Abonnement in einem Vertrag aktivieren Permission164=Leistung/Abonnement in einem Vertrag deaktivieren Permission165=Verträge/Abonnement löschen Permission167=Verträge exportieren -Permission171=Reise- und Spesenabrechnung einsehen (Eigene und von Untergebenen) +Permission171=Reise- und Spesenabrechnung einsehen (Eigene und die der unterstellten Mitarbeiter) Permission172=Reise- und Spesenabrechnung erstellen/bearbeiten Permission173=Reise- und Spesenabrechnung verwerfen Permission174=Alle Reise- und Spesenabrechnung einsehen @@ -823,7 +823,7 @@ Permission244=Inhalte versteckter Kategorien einsehen Permission251=Andere Benutzer und Gruppen einsehen PermissionAdvanced251=Andere Benutzer einsehen Permission252=Berechtigungen andere Benutzer einsehen -Permission253=erstellen / bearbeiten von Benutzern & Gruppen (inkl. Rechteverwaltung) +Permission253=Benutzer & Gruppen (inkl. Rechteverwaltung) erstellen/bearbeiten PermissionAdvanced253=Andere interne/externe Benutzer und Gruppen erstellen/bearbeiten (inkl. Rechteverwaltung) Permission254=Nur externe Benutzer erstellen/bearbeiten Permission255=Passwörter anderer Benutzer ändern @@ -831,7 +831,7 @@ Permission256=Andere Benutzer löschen oder deaktivieren Permission262=Erweitern Sie den Zugriff auf alle Drittanbieter UND deren Objekte (nicht nur auf Drittanbieter, für die der Benutzer ein Verkaufsvertreter ist).
Nicht wirksam für externe Benutzer (bei Vorschlägen, Bestellungen, Rechnungen, Verträgen usw. immer auf sich selbst beschränkt).
Nicht wirksam für Projekte (nur Regeln zu Projektberechtigungen, Sichtbarkeit und Zuweisung). Permission263=Erweitern Sie den Zugriff auf alle Drittanbieter OHNE ihre Objekte (nicht nur auf Drittanbieter, für die der Benutzer ein Verkaufsvertreter ist).
Nicht wirksam für externe Benutzer (bei Vorschlägen, Bestellungen, Rechnungen, Verträgen usw. immer auf sich selbst beschränkt).
Nicht wirksam für Projekte (nur Regeln zu Projektberechtigungen, Sichtbarkeit und Zuweisung). Permission271=Read CA -Permission272=Rechnungen anzeigen +Permission272=Rechnungen einsehen Permission273=Rechnungen ausstellen Permission281=Kontakte einsehen Permission282=Kontakte erstellen/bearbeiten @@ -843,7 +843,7 @@ Permission293=Kundentarife ändern Permission300=Barcodes anzeigen Permission301=Barcodes erstellen/bearbeiten Permission302=Barcodes löschen -Permission311=Leistungen anzeigen +Permission311=Leistungen einsehen Permission312=Leistung/Abonnement einem Vertrag zuordnen Permission331=Lesezeichen anzeigen Permission332=Lesezeichen erstellen/bearbeiten @@ -857,55 +857,55 @@ Permission352=Gruppenberechtigungen einsehen Permission353=Gruppen erstellen/bearbeiten Permission354=Gruppen löschen oder deaktivieren Permission358=Benutzer exportieren -Permission401=Rabatte anzeigen +Permission401=Rabatte einsehen Permission402=Rabatte erstellen/bearbeiten Permission403=Rabatte freigeben Permission404=Rabatte löschen Permission430=Debug Bar nutzen -Permission511=Leseberechtigung für Gehälter und Zahlungen (eigene und von Untergebenen) -Permission512=Gehälter und Zahlungen erstellen/ändern +Permission511=Leseberechtigung für Gehälter und Zahlungen (eigene und die der unterstellten Mitarbeiter) +Permission512=Gehälter und Zahlungen erstellen/bearbeiten Permission514=Gehälter und Zahlungen löschen Permission517=Leseberechtigung für alle Gehälter und Zahlungen -Permission519=Löhne exportieren +Permission519=Gehälter exportieren Permission520=Darlehen anzeigen Permission522=Darlehen erstellen/bearbeiten Permission524=Lösche Darlehen Permission525=Zugriff auf Darlehensrechner Permission527=Darlehen exportieren -Permission531=Leistungen anzeigen +Permission531=Leistungen einsehen Permission532=Leistungen erstellen/bearbeiten Permission534=Leistungen löschen Permission536=Versteckte Leistungen einsehen/verwalten Permission538=Leistungen exportieren Permission561=Zahlungsaufträge per Überweisung lesen -Permission562=Zahlungsauftrag per Überweisung erstellen / ändern -Permission563=Zahlungsauftrag per Überweisung senden / übertragen +Permission562=Zahlungsauftrag per Überweisung erstellen/bearbeiten +Permission563=Zahlungsauftrag per Überweisung senden/übertragen Permission564=Belastungen / Ablehnungen der Überweisung erfassen -Permission601=Aufkleber lesen -Permission602=Erstellen / Ändern von Aufklebern +Permission601=Aufkleber einsehen +Permission602=Aufkleber erstellen/bearbeiten Permission609=Aufkleber löschen Permission611=Attribute von Varianten lesen Permission612=Attribute von Varianten erstellen/aktualisieren Permission613=Attribute von Varianten löschen -Permission650=Stücklisten anzeigen -Permission651=Stücklisten erstellen / aktualisieren +Permission650=Stücklisten einsehen +Permission651=Stücklisten erstellen/aktualisieren Permission652=Stücklisten löschen -Permission660=Fertigungsauftrag (MO) anzeigen +Permission660=Fertigungsauftrag (MO) einsehen Permission661=Fertigungsauftrag (MO) erstellen/aktualisieren Permission662=Fertigungsauftrag (MO) löschen Permission701=Spenden anzeigen Permission702=Spenden erstellen/bearbeiten Permission703=Spenden löschen -Permission771=Spesenabrechnungen einsehen (eigene und die der Untergebenen) -Permission772=Spesenabrechnungen erstellen/ändern (für Sie und Ihnen unterstellte Mitarbeiter) +Permission771=Spesenabrechnungen einsehen (eigene und die der unterstellten Mitarbeiter) +Permission772=Spesenabrechnungen erstellen/bearbeiten (eigene und die der unterstellten Mitarbeiter) Permission773=Spesenabrechnung löschen Permission775=Spesenabrechnung genehmigen Permission776=Spesenabrechnung bezahlen -Permission777=Lesen Sie alle Spesenabrechnungen (auch die von Ihnen nicht unterstellten Mitarbeitern) -Permission778=Spesenabrechnungen aller erstellen / ändern +Permission777=Alle Spesenabrechnungen einsehen (auch die von nicht unterstellten Mitarbeitern) +Permission778=Spesenabrechnungen aller erstellen/bearbeiten Permission779=Spesenabrechnung exportieren Permission1001=Warenbestände einsehen -Permission1002=Warenlager erstellen/ändern +Permission1002=Warenlager erstellen/bearbeiten Permission1003=Warenlager löschen Permission1004=Lagerbewegungen einsehen Permission1005=Lagerbewegungen erstellen/bearbeiten @@ -914,18 +914,18 @@ Permission1012=Neue Bestandsaufnahme erstellen Permission1014=Bestandsaufnahme freigeben Permission1015=Durchschnittspreis änderbar Permission1016=Bestandsaufnahme löschen -Permission1101=Lieferscheine anzeigen +Permission1101=Lieferscheine einsehen Permission1102=Lieferscheine erstellen/bearbeiten Permission1104=Lieferscheine freigeben Permission1109=Lieferscheine löschen -Permission1121=Lieferantenvorschläge anzeigen -Permission1122=Lieferantenvorschläge erstellen / ändern +Permission1121=Lieferantenangebote einsehen +Permission1122=Lieferantenangebote erstellen/bearbeiten Permission1123=Lieferantenangebote freigeben -Permission1124=Lieferantenvorschläge senden -Permission1125=Lieferantenvorschläge löschen +Permission1124=Lieferantenangebote senden +Permission1125=Lieferantenangebote löschen Permission1126=Schließe Lieferantenpreisanfragen Permission1181=Lieferanten einsehen -Permission1182=Lieferantenbestellungen anzeigen +Permission1182=Lieferantenbestellungen einsehen Permission1183=Lieferantenbestellungen erstellen/bearbeiten Permission1184=Lieferantenbestellungen freigeben Permission1185=Lieferantenbestellungen bestätigen/genehmigen @@ -937,7 +937,7 @@ Permission1190=Lieferantenbestellungen bestätigen (zweite Bestätigung) Permission1191=Exportieren Sie Lieferantenaufträge und deren Attribute Permission1201=Exportresultate einsehen Permission1202=Export erstellen/bearbeiten -Permission1231=Lieferantenrechnungen anzeigen +Permission1231=Lieferantenrechnungen einsehen Permission1232=Lieferantenrechnungen (Eingangsrechnungen) erstellen/bearbeiten Permission1233=Lieferantenrechnungen freigeben Permission1234=Lieferantenrechnungen löschen @@ -951,7 +951,7 @@ Permission1421=Kundenaufträge und Attribute exportieren Permission1521=Dokumente einsehen Permission1522=Dokumente löschen Permission2401=Aktionen (Ereignisse oder Aufgaben) lesen, die mit seinem Benutzerkonto verknüpft sind (wenn Eigentümer des Ereignisses oder gerade zugewiesen) -Permission2402=Aktionen (Ereignisse oder Aufgaben) erstellen / ändern, die mit seinem Benutzerkonto verknüpft sind (wenn Eigentümer des Ereignisses) +Permission2402=Aktionen (Ereignisse oder Aufgaben) erstellen/bearbeiten, die mit seinem Benutzerkonto verknüpft sind (wenn Eigentümer des Ereignisses) Permission2403=Mit seinem Benutzerkonto verknüpfte Aktionen (Ereignisse oder Aufgaben) löschen (wenn Eigentümer des Ereignisses) Permission2411=Ereignisse (Termine/Aufgaben) Anderer einsehen Permission2412=Ereignisse (Termine/Aufgaben) Anderer erstellen/bearbeiten @@ -966,27 +966,27 @@ Permission2802=FTP-Client im Schreibmodus nutzen (Dateien löschen oder hochlade Permission3200=Eingetragene Ereignisse und Fingerprints lesen Permission3301=Neues Module erstellen Permission4001=Kompetenz/Job/Position einsehen -Permission4002=Kompetenz/Job/Position erstellen/ändern +Permission4002=Kompetenz/Job/Position erstellen/bearbeiten Permission4003=Kompetenz/Job/Position löschen Permission4020=Bewertungen einsehen -Permission4021=Erstellen/ändern Sie Ihre Bewertung +Permission4021=Erstellen/bearbeiten Sie Ihre Bewertung Permission4022=Bewertung freigeben Permission4023=Bewertung löschen Permission4030=Siehe Vergleichsmenü Permission4031=Persönliche Daten einsehen Permission4032=Persönliche Daten schreiben -Permission10001=Website-Inhalt anzeigen +Permission10001=Website-Inhalt einsehen Permission10002=Erstelle/Bearbeite Website-Inhalte (HTML und JavaScript) Permission10003=Erstelle/Bearbeite Website-Inhalte (dynamischer PHP-Code). Gefährlich, dies muss auf ausgewählte Entwickler beschränkt werden. Permission10005=Inhalt der Website löschen -Permission20001=Urlaubsanträge einsehen (eigene und die Ihrer Untergeordneten) -Permission20002=Urlaubsanträge anlegen/bearbeiten (eigene und die Ihrer Untergeordneten) +Permission20001=Urlaubsanträge einsehen (eigene und die der unterstellten Mitarbeiter) +Permission20002=Urlaubsanträge anlegen/bearbeiten (eigene und die der unterstellten Mitarbeiter) Permission20003=Lösche Urlaubsanträge -Permission20004=Alle Urlaubsanträge lesen (auch die von Ihnen nicht unterstellten Mitarbeitern) -Permission20005=Urlaubsanträge für alle erstellen/ändern (auch für Ihnen nicht unterstellte Mitarbeiter) +Permission20004=Alle Urlaubsanträge einsehen (auch die von nicht unterstellten Mitarbeitern) +Permission20005=Urlaubsanträge für alle erstellen/bearbeiten (auch die von nicht unterstellten Mitarbeitern) Permission20006=Urlaubsanträge verwalten (Saldo einrichten und aktualisieren) Permission20007=Urlaubsanträge genehmigen -Permission23001=Geplante Aufgaben anzeigen +Permission23001=Geplante Aufgaben einsehen Permission23002=Geplante Aufgaben erstellen/bearbeiten Permission23003=Geplante Aufgabe(n) löschen Permission23004=Geplante Aufgaben ausführen @@ -997,43 +997,43 @@ Permission50153=Zeilen bestellte Verkäufe bearbeiten Permission50201=Transaktionen einsehen Permission50202=Transaktionen importieren Permission50330=Lesen Sie Objekte von Zapier -Permission50331=Objekte von Zapier erstellen / aktualisieren +Permission50331=Objekte von Zapier erstellen/aktualisieren Permission50332=Objekte von Zapier löschen Permission50401=Produkte und Rechnungen mit Sachkonten verbinden -Permission50411=Hauptbuch-Vorgänge lesen +Permission50411=Hauptbuch-Vorgänge einsehen Permission50412=Hauptbuch-Vorgänge schreiben/bearbeiten Permission50414=Hauptbuch-Vorgänge löschen Permission50415=Alle Vorgänge des Jahres und Protokolles im Hauptbuch löschen Permission50418=Exportvorgänge des Hauptbuches -Permission50420=Berichts- und Exportberichte (Umsatz, Bilanz, Journale, Ledger) +Permission50420=Berichte und Berichtsexporte (Umsatz, Bilanz, Journale, Hauptbuch) Permission50430=Geschäftsperioden definieren. Überprüfen Sie Transaktionen und schließen Sie Geschäftsperioden. Permission50440=Kontenplan verwalten, Buchhaltung einrichten -Permission51001=Anlagegüter (Assets) anzeigen -Permission51002=Anlagegüter (Assets) erstellen / aktualisieren +Permission51001=Anlagegüter (Assets) einsehen +Permission51002=Anlagegüter (Assets) erstellen/aktualisieren Permission51003=Anlagegüter (Assets) löschen -Permission51005=Arten von Anlagengüter (Assets) einrichten +Permission51005=Arten von Anlagegütern (Assets) einrichten Permission54001=Drucken Permission55001=Abstimmungen einsehen -Permission55002=Abstimmung erstellen/ändern +Permission55002=Abstimmungen erstellen/bearbeiten Permission59001=Gewinnspanne einsehen Permission59002=Gewinnspanne definieren Permission59003=Lesen aller Benutzer Margen -Permission63001=Ressourcen anzeigen +Permission63001=Ressourcen einsehen Permission63002=Ressource erstellen/bearbeiten Permission63003=Ressource löschen Permission63004=Verbinden von Ressourcen zu Ereignissen Permission64001=Direkt drucken erlauben Permission67000=Drucken von Quittungen erlauben Permission68001=Lesen Sie den Intracomm-Bericht -Permission68002=Intracomm-Bericht erstellen / ändern +Permission68002=Intracomm-Bericht erstellen/bearbeiten Permission68004=Intracomm-Bericht löschen -Permission941601=Quittungen einlesen -Permission941602=Erstellen und ändern von Quittungen -Permission941603=Quittungen bestätigen +Permission941601=Quittungen einsehen +Permission941602=Quittungen erstellen/bearbeiten +Permission941603=Quittungen freigeben Permission941604=Quittungen per E-Mail senden Permission941605=Quittungen exportieren Permission941606=Quittungen löschen -DictionaryCompanyType=Geschäftspartner Arten +DictionaryCompanyType=Geschäftspartner-Arten DictionaryCompanyJuridicalType=Rechtsformen der Geschäftspartner DictionaryProspectLevel=Level für Interessentenstatus - Unternehmen DictionaryProspectContactLevel=Level für Interessentenstatus - Kontakte @@ -1053,14 +1053,14 @@ DictionaryTypeOfContainer=Website - Art der Webseiten/Container DictionaryEcotaxe=Ökosteuern (WEEE) DictionaryPaperFormat=Papierformat DictionaryFormatCards=Kartenformate -DictionaryFees=Spesenabrechnung - Arten von Spesenabrechnungszeilen +DictionaryFees=Spesenabrechnung - Arten von Spesenpositionen DictionarySendingMethods=Versandarten DictionaryStaff=Anzahl der Beschäftigten DictionaryAvailability=Lieferverzug DictionaryOrderMethods=Bestellmethoden DictionarySource=Quelle der Angebote/Aufträge -DictionaryAccountancyCategory=Personalisierte Gruppen für Berichte -DictionaryAccountancysystem=Wähle deinen Kontenplan. +DictionaryAccountancyCategory=Benutzerdefinierte Gruppen für Berichte +DictionaryAccountancysystem=Kontenplan-Modelle DictionaryAccountancyJournal=Buchhaltungsjournale DictionaryEMailTemplates=E-Mail-Vorlagen DictionaryUnits=Einheiten @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Wert einer Konfigurationskonstante ConstantIsOn=Option %s ist aktiviert NbOfDays=Anzahl der Tage AtEndOfMonth=Am Monatsende -CurrentNext=Aktueller/ Nächster +CurrentNext=Ein bestimmter Tag im Monat Offset=Wertsprung AlwaysActive=Immer aktiv Upgrade=Aktualisierung @@ -1188,10 +1188,10 @@ LogoDesc=Standard-Logo des Unternehmens. Das Logo wird in generierten Dokumenten LogoSquarred=Logo (quadratisch) LogoSquarredDesc=Muss ein quadratisches Icon sein (Breite = Höhe). Dieses Logo wird als Favicon oder für Zwecke wie die obere Menüleiste (falls nicht in den Anzeige-Einstellungen deaktiviert) verwendet. DoNotSuggestPaymentMode=Nicht vorschlagen / anzeigen -NoActiveBankAccountDefined=Keine aktiven Finanzkonten definiert +NoActiveBankAccountDefined=Keine aktiven Bankkonten definiert OwnerOfBankAccount=Kontoinhaber %s BankModuleNotActive=Finanzkontenmodul nicht aktiv -ShowBugTrackLink=Den Link " %s " anzeigen +ShowBugTrackLink=Den Link "%s" anzeigen ShowBugTrackLinkDesc=Leer lassen, um diesen Link nicht anzuzeigen, verwenden Sie den Wert 'github' für den Link zum Dolibarr-Projekt oder definieren Sie direkt eine URL 'https://...' Alerts=Benachrichtigungen DelaysOfToleranceBeforeWarning=Anzeige einer Warnmeldung für... @@ -1300,21 +1300,21 @@ MeteoStdModEnabled=Standardmodus aktiviert MeteoPercentageMod=Prozentmodus MeteoPercentageModEnabled=Prozentmodus aktiviert MeteoUseMod=Anklicken um %s zu verwenden -TestLoginToAPI=Testen Sie sich anmelden, um API +TestLoginToAPI=Anmeldung am API testen ProxyDesc=Einige Dolibarr-Funktionen benötigen einen Zugang zum Internet. Hier können die Verbindungsparameter festgelegt werden, z.B. ob ein Proxy-Server erforderlich ist. ExternalAccess=Externer Internet-Zugang -MAIN_PROXY_USE=Proxy-Server benutzen (ansonsten erfolgt der Zugriff in's Internet direkt) -MAIN_PROXY_HOST=Proxyservers: IP-Adresse / DNS-Name +MAIN_PROXY_USE=Proxyserver benutzen (ansonsten erfolgt der Internetzugriff direkt) +MAIN_PROXY_HOST=Proxyserver: IP-Adresse/DNS-Name MAIN_PROXY_PORT=Proxyserver: Port MAIN_PROXY_USER=Proxyserver: Benutzername MAIN_PROXY_PASS=Proxyserver: Passwort DefineHereComplementaryAttributes=Definieren Sie alle ergänzenden Attribute, die hinzugefügt werden sollen: ExtraFields=Ergänzende Attribute -ExtraFieldsLines=Ergänzende Attribute (in den Einzelpositionen) +ExtraFieldsLines=Ergänzende Attribute (zu Positionen/Zeilen) ExtraFieldsLinesRec=Ergänzende Attribute (Positionen in Rechnungsvorlagen) ExtraFieldsSupplierOrdersLines=Ergänzende Attribute (in Auftragspositionen) ExtraFieldsSupplierInvoicesLines=Ergänzende Attribute (in Rechnungspositionen) -ExtraFieldsThirdParties=Ergänzende Attribute (Partner) +ExtraFieldsThirdParties=Ergänzende Attribute (Geschäftspartner) ExtraFieldsContacts=Ergänzende Attribute (Kontakte/Adressen) ExtraFieldsMember=Ergänzende Attribute (Mitglied) ExtraFieldsMemberType=Ergänzende Attribute (Mitglied) @@ -1362,7 +1362,7 @@ YouHaveXObjectUseSearchOptim=Sie haben %s %s in der Datenbank. Sie können in St YouHaveXObjectUseSearchOptimDesc=Beschränkung der Suche auf den Anfang von Zeichenketten. Dadurch kann die Datenbank Indizes verwenden, was die Antwortzeiten deutlich beschleunigt. YouHaveXObjectAndSearchOptimOn=Sie haben %s %s in der Datenbank und die Konstante %s ist in Start-Einstellungen-Erweiterte Einstellungen auf %s gesetzt. BrowserIsOK=Sie verwenden %s als Webbrowser. Dieser ist hinsichtlich Sicherheit und Leistung ausreichend. -BrowserIsKO=Sie verwenden %s als Webbrowser. Dieser ist bekanntlich eine schlechte Wahl wenn es um Sicherheit, Leistung und Zuverlässigkeit geht. Wir empfehlen Firefox, Chrome, Opera oder Safari zu benutzen. +BrowserIsKO=Sie verwenden %s als Webbrowser. Dieser ist bekanntlich eine schlechte Wahl, wenn es um Sicherheit, Leistung und Zuverlässigkeit geht. Wir empfehlen Firefox, Chrome, Opera oder Safari zu benutzen. PHPModuleLoaded=PHP Komponente %s ist geladen PreloadOPCode=Vorgeladener OPCode wird verwendet AddRefInList=Kunden-/Lieferanten-Ref. in Auswahllisten anzeigen.
Geschäftspartner werden mit dem Namensformat "CC12345 - SC45678 - The Big Company corp." angezeigt statt "The Big Company Corp". @@ -1393,7 +1393,7 @@ GroupsDocModules=Dokumentvorlagen für Dokumente, die aus einem Gruppendatensatz HRMSetup=Einstellungen Modul Personal ##### Company setup ##### CompanySetup=Einstellungen Modul Geschäftspartner -CompanyCodeChecker=Nummernvergabe für Partner und Lieferanten +CompanyCodeChecker=Optionen für die automatische Vergabe von Kunden- und Lieferantennummern AccountCodeManager=Optionen für die automatische Generierung von Kunden-/Anbieterkontonummern NotificationsDesc=Für einige Dolibarr-Ereignisse können automatisch E-Mail-Benachrichtigungen gesendet werden,
wobei Empfänger von Benachrichtigungen definiert werden können: NotificationsDescUser=* pro Benutzer, nur ein Benutzer zur gleichen Zeit @@ -1423,7 +1423,7 @@ ForceInvoiceDate=Rechnungsdatum ist zwingend Freigabedatum SuggestedPaymentModesIfNotDefinedInInvoice=Vorgeschlagener, standardmäßiger Zahlungsmodus auf der Rechnung, falls nicht auf der Rechnung definiert SuggestPaymentByRIBOnAccount=Bankkonto für Bezahlung per Überweisung SuggestPaymentByChequeToAddress=Adresse für Zahlung per Scheck -FreeLegalTextOnInvoices=Freier Rechtstext für Rechnungen +FreeLegalTextOnInvoices=Freier Standardtext auf Rechnungen WatermarkOnDraftInvoices=Wasserzeichen auf Rechnungsentwurf (leerlassen wenn keines benötigt wird) PaymentsNumberingModule=Zahlungen Nummerierungs Module SuppliersPayment=Lieferanten Zahlung @@ -1435,7 +1435,7 @@ PropalSetup=Einstellungen Modul Angebote ProposalsNumberingModules=Nummernvergabe für Angebote ProposalsPDFModules=Dokumentenvorlage(n) SuggestedPaymentModesIfNotDefinedInProposal=Vorgeschlagener, standardmäßiger Zahlungsmodus für Angebot, falls nicht im Angebot definiert -FreeLegalTextOnProposal=Freier Rechtstext auf Angeboten +FreeLegalTextOnProposal=Freier Standardtext auf Angeboten WatermarkOnDraftProposal=Wasserzeichen auf Angebotsentwurf (leerlassen wenn keines benötigt wird) BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Fragen Sie nach dem Bankkonto bei einem Angebot ##### SupplierProposal ##### @@ -1453,7 +1453,7 @@ SuggestedPaymentModesIfNotDefinedInOrder=Standardmäßig vorgeschlagener Zahlung OrdersSetup=Einstellungen für die Verwaltung von Kundenaufträgen OrdersNumberingModules=Nummernvergabe für Aufträge/Bestellungen OrdersModelModule=Dokumentenvorlage(n) -FreeLegalTextOnOrders=Freier Rechtstext auf Bestellungen +FreeLegalTextOnOrders=Freier Standardtext auf Bestellungen WatermarkOnDraftOrders=Wasserzeichen auf Bestellentwurf (leerlassen wenn keines benötigt wird) ShippableOrderIconInList=In Auftragsliste ein entsprechendes Icon zufügen, wenn der Auftrag versandbereit ist BANK_ASK_PAYMENT_BANK_DURING_ORDER=Fragen Sie nach der Ziel-Bankverbindung @@ -1468,7 +1468,7 @@ ContractsSetup=Vertrags- und Abonnements-Einstellungen ContractsNumberingModules=Nummernvergabe für Verträge und Abonnements TemplatePDFContracts=Dokumentenvorlage(n) FreeLegalTextOnContracts=Freier Text in Verträgen -WatermarkOnDraftContractCards=Wasserzeichen auf Vertragsentwurf (leerlassen wenn keines benötigt wird) +WatermarkOnDraftContractCards=Wasserzeichen auf Entwurf (leerlassen, wenn nicht benötigt) ##### Members ##### MembersSetup=Modul Mitglieder - Einstellungen MemberMainOptions=Haupteinstellungen @@ -1486,7 +1486,7 @@ LDAPUsersSynchro=Benutzer LDAPGroupsSynchro=Gruppen LDAPContactsSynchro=Kontakte LDAPMembersSynchro=Mitglieder -LDAPMembersTypesSynchro=Mitgliedsarten +LDAPMembersTypesSynchro=Mitgliedschaftstypen LDAPSynchronization=LDAP-Synchronisation LDAPFunctionsNotAvailableOnPHP=LDAP-Funktionen sind in Ihrer PHP-Konfiguration nicht verfügbar LDAPToDolibarr=LDAP->Dolibarr @@ -1496,7 +1496,7 @@ LDAPSynchronizeUsers=dolibarr-Benutzer mit LDAP synchronisieren LDAPSynchronizeGroups=dolibarr-Gruppen mit LDAP synchronisieren LDAPSynchronizeContacts=dolibarr-Kontakte mit LDAP synchronisieren LDAPSynchronizeMembers=dolibarr-Stiftungsmitglieder mit LDAP synchronisieren -LDAPSynchronizeMembersTypes=Verwalten der Mitgliedsarten via LDAP +LDAPSynchronizeMembersTypes=Verwalten der Mitgliedschaftstypen via LDAP LDAPPrimaryServer=Primärer LDAP-Server LDAPSecondaryServer=Sekundärer LDAP-Server LDAPServerPort=Server-Port @@ -1520,7 +1520,7 @@ LDAPDnContactActive=Kontaktesynchronisation LDAPDnContactActiveExample=Aktivierte/Deaktivierte Synchronisation LDAPDnMemberActive=Mitgliedersynchronisation LDAPDnMemberActiveExample=Aktivierte/Deaktivierte Synchronisation -LDAPDnMemberTypeActive=Mitgliedsarten Synchronisieren +LDAPDnMemberTypeActive=Mitgliedschaftstypen Synchronisieren LDAPDnMemberTypeActiveExample=Aktivierte/Deaktivierte Synchronisation LDAPContactDn=Dolibarr Kontakte DN LDAPContactDnExample=Vollständige DN (zB: ou=users,dc=society,dc=com) @@ -1528,7 +1528,7 @@ LDAPMemberDn=Dolibarr Mitglieder DN LDAPMemberDnExample=Vollständige DN (zB: ou=members,dc=example,dc=com) LDAPMemberObjectClassList=Liste der objectClass LDAPMemberObjectClassListExample=Liste der objectClass-definierenden Eintragsattribute (z.B.: top,inetOrgPerson oder top,user für ActiveDirectory) -LDAPMemberTypeDn=Dolibarr Mitgliedsarten DN +LDAPMemberTypeDn=Dolibarr Mitgliedschaftstypen DN LDAPMemberTypepDnExample=Komplette DN (z.B.: ou=membertypes,dc=example,dc=com) LDAPMemberTypeObjectClassList=Liste der objectClass LDAPMemberTypeObjectClassListExample=Liste der objectClass-definierenden Eintragsattribute(z.B.: top, groupOfUniqueNames) @@ -1662,8 +1662,8 @@ MergePropalProductCard=Aktivieren einer Option unter Produkte/Leistungen Regist ViewProductDescInThirdpartyLanguageAbility=Anzeige von Produktbeschreibungen in Formularen in der Sprache des Partners (sonst in der Sprache des Benutzer) UseSearchToSelectProductTooltip=Wenn Sie eine große Anzahl von Produkten (> 100.000) haben, können Sie die Geschwindigkeit verbessern, indem Sie in Einstellungen -> Andere die Konstante PRODUCT_DONOTSEARCH_ANYWHERE auf 1 setzen. Die Suche startet dann am Beginn der Zeichenkette. UseSearchToSelectProduct=Warte auf Tastendruck, bevor der Inhalt der Produkt-Combo-Liste geladen wird (Dies kann die Leistung verbessern, wenn Sie eine große Anzahl von Produkten haben). -SetDefaultBarcodeTypeProducts=Standard-Code-Typ für Produkte -SetDefaultBarcodeTypeThirdParties=Standard-Code-Typ für Partner +SetDefaultBarcodeTypeProducts=Standard-Barcode-Typ für Produkte +SetDefaultBarcodeTypeThirdParties=Standard-Barcode-Typ für Geschäftspartner UseUnits=Definieren Sie eine Maßeinheit für die Menge während der Auftrags-, Auftragsbestätigungs- oder Rechnungszeilen-Ausgabe ProductCodeChecker= Nummernvergabe für Produkte und Leistungen ProductOtherConf= Weitere Optionen @@ -1721,27 +1721,27 @@ NotificationDisableConfirmMessageContact=Bei Benachrichtigungen die Liste der Em NotificationDisableConfirmMessageUser=Bei Benachrichtigungen die Liste der Empfänger (hinterlegt als Benutzer), die die Benachrichtigung erhalten, nicht anzeigen NotificationDisableConfirmMessageFix=Bei Benachrichtigungen die Liste der Empfänger (hinterlegt als globale E-Mail-Adresse), die die Benachrichtigung erhalten, nicht anzeigen ##### Sendings ##### -SendingsSetup=Einstellungen Modul Versand -SendingsReceiptModel=Versandbelegsvorlage -SendingsNumberingModules=Nummerierungsmodell Auslieferungen +SendingsSetup=Einstellungen Modul Lieferungen +SendingsReceiptModel=Vorlage Versandbeleg (Lieferschein) +SendingsNumberingModules=Numerierungsmodul für Lieferungen SendingsAbility=Unterstützung von Versand-Dokumenten für Kundenlieferungen -NoNeedForDeliveryReceipts=In den meisten Fällen werden Lieferscheine sowohl als Versanddokument (für die Zusammenstellung der Auslieferung), als auch als Zustellscheine, die vom Kunden zu unterschreiben sind, verwendet. Entsprechend sind Empfangsbelege meist eine doppelte und daher nicht verwendete Option. -FreeLegalTextOnShippings=Freier Text auf Lieferungen +NoNeedForDeliveryReceipts=In den meisten Fällen werden Lieferscheine sowohl als Versanddokument (für die Zusammenstellung der Lieferung), als auch als Zustellscheine, die vom Kunden zu unterschreiben sind, verwendet. Entsprechend sind Zustellbestätigungen (Empfangsbelege) meist eine doppelte und daher nicht verwendete Option. +FreeLegalTextOnShippings=Freier Standardtext auf Lieferscheinen ##### Deliveries ##### -DeliveryOrderNumberingModules=Zustellscheinnumerierungs-Module -DeliveryOrderModel=Zustellscheinnumerierung -DeliveriesOrderAbility=Unterstütze Zustellscheine für Produkte -FreeLegalTextOnDeliveryReceipts=Freier Rechtstext auf Empfangsbelegen +DeliveryOrderNumberingModules=Numerierungsschema für Zustellbestätigungen +DeliveryOrderModel=Vorlagen Zustellbestätigung (Empfangsbeleg) +DeliveriesOrderAbility=Unterstütze Zustellbestätigungen (Empfangsbelege) für Produkte +FreeLegalTextOnDeliveryReceipts=Freier Standardtext auf Empfangsbelegen ##### FCKeditor ##### AdvancedEditor=Erweiterter Editor ActivateFCKeditor=FCKEditor aktivieren für: FCKeditorForNotePublic=WYSIWIG Erstellung/Bearbeitung des Feldes "öffentliche Notizen" von Elementen FCKeditorForNotePrivate=WYSIWIG Erstellung/Bearbeitung des Feldes "private Notizen" von Elementen -FCKeditorForCompany=WYSIWIG Erstellung/Bearbeitung der Feldbeschreibung von Elementen (ausgenommen Produkte/Leistungen) -FCKeditorForProduct=WYSIWIG Erstellung/Bearbeitung der Feldbeschreibung Produkte/Leistungen -FCKeditorForProductDetails=WYSIWIG Erstellung / Ausgabe von Produkt-Detailzeilen für alle Dokumente (Vorschläge, Bestellungen, Rechnungen usw.). Warnung: Die Verwendung dieser Option für diesen Fall wird nicht empfohlen, da dies beim Erstellen von PDF-Dateien zu Problemen mit Sonderzeichen und Seitenformatierung führen kann. -FCKeditorForMailing= WYSIWIG Erstellung/Bearbeitung von E-Mails -FCKeditorForUserSignature=WYSIWIG Erstellung/Bearbeitung von Benutzer-Signaturen +FCKeditorForCompany=WYSIWYG Erstellung/Bearbeitung der Feldbeschreibung von Elementen (ausgenommen Produkte/Leistungen) +FCKeditorForProduct=WYSIWYG Erstellung/Bearbeitung der Feldbeschreibung Produkte/Leistungen +FCKeditorForProductDetails=WYSIWYG Erstellung/Ausgabe von Produkt-Detailzeilen für alle Dokumente (Angebote, Aufträge, Rechnungen usw.). Warnung: Die Verwendung dieser Option für diesen Fall wird nicht empfohlen, da dies beim Erstellen von PDF-Dateien zu Problemen mit Sonderzeichen und der Seitenformatierung führen kann. +FCKeditorForMailing= WYSIWYG Erstellung/Bearbeitung von E-Mails +FCKeditorForUserSignature=WYSIWYG Erstellung/Bearbeitung von Benutzer-Signaturen FCKeditorForMail=WYSIWYG-Erstellung/Bearbeitung für alle E-Mails (außer Werkzeuge->eMailing) FCKeditorForTicket=WYSIWYG-Erstellung/Bearbeitung von Tickets ##### Stock ##### @@ -1819,21 +1819,21 @@ ClickToDialDesc=Dieses Modul formatiert Telefonnummern als direkt anklickbare Li ClickToDialUseTelLink=Nur einen Link "Tel:" bei Telefonnummern verwenden ClickToDialUseTelLinkDesc=Verwenden Sie diese Methode, wenn Ihre Benutzer ein Software-Telefon oder ein Interface für ein Telefon auf demselben Computer installiert haben, auf dem der Browser läuft. Dieses Telefon/Interface wird aufgerufen, wenn Sie im Browser auf einen Link klicken, der mit "tel:" beginnt. Wenn Sie einen Link verwenden wollen, der mit "sip:" beginnt, oder wenn Sie eine vollständige Serverlösung nutzen (ohne lokale Software-Installation), wählen Sie hier "Nein" und füllen das nächste Feld aus.\n ##### Point Of Sale (CashDesk) ##### -CashDesk=Kasse +CashDesk=Kassenterminal CashDeskSetup=Kassenmoduleinstellungen -CashDeskThirdPartyForSell=Standardpartner für Kassenverkäufe -CashDeskBankAccountForSell=Standard-Bargeldkonto für Kassenverkäufe (erforderlich) -CashDeskBankAccountForCheque=Standardfinanzkonto für Scheckeinlösungen -CashDeskBankAccountForCB=Finanzkonto für die Einlösung von Bargeldzahlungen via Kreditkarte -CashDeskBankAccountForSumup=Standard-Bankkonto zum Empfangen von Zahlungen von SumUp -CashDeskDoNotDecreaseStock=Deaktiviere Lagerabgangsbuchung wenn ein Verkauf auf einem Point of Sale durchgeführt wird\n (wenn "Nein", wird die Lagerabgangsbuchung immer durchgeführt , auch wann im Modul Produktbestandsverwaltung was anderes ausgewählt wurde). -CashDeskIdWareHouse=Lager für Entnahmen festlegen und und erzwingen +CashDeskThirdPartyForSell=Standard-Geschäftspartner für Kassenverkäufe +CashDeskBankAccountForSell=Standardkonto Kasse für Barzahlungen +CashDeskBankAccountForCheque=Standardkonto für Zahlungen per Scheck +CashDeskBankAccountForCB=Standardkonto für Zahlungen per Kreditkarte +CashDeskBankAccountForSumup=Standardbankkonto zum Empfangen von Zahlungen von SumUp +CashDeskDoNotDecreaseStock=Deaktiviere Lagerabgangsbuchung wenn ein Verkauf an einem Point of Sale erfolgt\n(bei "Nein" wird die Lagerabgangsbuchung immer durchgeführt, auch wenn im Modul 'Lagerverwaltung' eine andere Einstellung gewählt wurde). +CashDeskIdWareHouse=Warenlager für Entnahmen festlegen und erzwingen StockDecreaseForPointOfSaleDisabled=Lagerrückgang bei Verwendung von Point of Sale deaktiviert StockDecreaseForPointOfSaleDisabledbyBatch=Die Bestandsreduzierung am POS ist nicht mit dem Modul Serial / Lot Management (derzeit aktiv) kompatibel, sodass die Bestandsreduzierung deaktiviert ist. CashDeskYouDidNotDisableStockDecease=Sie haben die Reduzierung der Lagerbestände nicht deaktiviert, wenn Sie einen Verkauf auf dem Point of Sale durchführen.\nAuch ist ein Lager/Standort notwendig. CashDeskForceDecreaseStockLabel=Eine Bestandsreduktion für Produktposten wurde erzwungen. CashDeskForceDecreaseStockDesc=Verringern Sie zuerst ausgehend vom ältesten Mindesthaltbarkeitsdatum oder Verbrauchsdatum. -CashDeskReaderKeyCodeForEnter=Schlüsselcode für "Enter" im Barcodeleser definiert (Beispiel: 13) +CashDeskReaderKeyCodeForEnter=Tastencode für "Enter" wie im Barcode-Leser definiert (Beispiel: 13) ##### Bookmark ##### BookmarkSetup=Lesezeichen-Moduleinstellungen BookmarkDesc=Dieses Modul ermöglicht die Verwaltung von Lesezeichen. Außerdem können Sie hiermit Verknüpfungen zu internen und externen Seiten im linken Menü anlegen. @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Drücken Sie CTRL+F5 auf der Tastatur oder löschen Sie NotSupportedByAllThemes=Funktioniert mit dem Standard-Designvorlagen: wird möglicherweise nicht von externen Designvorlagen unterstützt BackgroundColor=Hintergrundfarbe TopMenuBackgroundColor=Hintergrundfarbe für Hauptmenü -TopMenuDisableImages=Symbole im oberen Menü ausblenden. +TopMenuDisableImages=Icon oder Text im oberen Menü LeftMenuBackgroundColor=Hintergrundfarbe für Menü Links BackgroundTableTitleColor=Hintergrundfarbe für Titelzeilen in Tabellen BackgroundTableTitleTextColor=Textfarbe der Tabellenüberschrift @@ -1949,7 +1949,7 @@ EnterAnyCode=Dieses Feld enthält eine Referenz zur Identifizierung der Zeile. G Enter0or1=Gib 0 oder 1 ein UnicodeCurrency=Geben Sie hier zwischen geschweiften Klammern die Liste der Bytes ein, die das Währungssymbol darstellen. Zum Beispiel: Geben Sie für $ [36] ein - für brasilianische Real-R $ [82,36] - geben Sie für € [8364] ein ColorFormat=Die RGB Farben sind im Hexformat, zB. FF0000 -PictoHelp=Name für Icon im Format:
- image.png für eine Bilddatei im aktuellen Theme-Verzeichnis
- image.png@module wenn die Datei im Verzeichnis /img/ eines Moduls liegt
- fa-xxx für ein FontAwesome fa-xxx Symbol
- fonwtawesome_xxx_fa_color_size für ein FontAwesome fa-xxx Symbol (mit festgelegtem Präfix, Farbe und Größe) +PictoHelp=Name für Icon im Format:
- image.png für eine Bilddatei im aktuellen Theme-Verzeichnis
- image.png@module wenn die Datei im Verzeichnis /img/ eines Moduls liegt
- fa-xxx für ein FontAwesome fa-xxx Symbol
- fontawesome_xxx_fa_color_size für ein FontAwesome fa-xxx Symbol (mit festgelegtem Präfix, Farbe und Größe) PositionIntoComboList=Zeilenposition in der Combo-Listen SellTaxRate=Umsatzsteuersatz RecuperableOnly=Ja für USt. "Wahrgenommene nicht Erstattungsfähig" für einige Regionen in Frankreich. Nein für alle anderen Fälle. @@ -1988,7 +1988,7 @@ TitleExampleForMajorRelease=Beispielnachricht, die Sie nutzen können, um eine H TitleExampleForMaintenanceRelease=Beispielnachricht, die Sie nutzen können, um ein Wartungsupdate anzukündigen. Sie können diese auf Ihrer Website verwenden. ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s ist verfügbar. Version %s ist eine Hauptversion mit vielen neuen Features für Benutzer und Entwickler. Sie können die Version aus dem Download-Bereich des Portals https://www.dolibarr.org laden (Unterverzeichnis "stabile Versionen"). Lesen Sie die komplette Liste der Änderungen. ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s ist verfügbar. Version %s ist ein Wartungsupdate, das nur Fehlerbereinigungen enthält. Wir empfehlen allen Benutzern ein Upgrade auf diese Version. Wie bei jedem Wartungsupdate sind keinen neuen Features oder Änderungen in den Datenstrukturen enthalten. Sie können die Version aus dem Downloadbereich des Portals https://www.dolibarr.org laden (Unterverzeichnis "stabile Versionen"). Lesen Sie die komplette Liste der Änderungen im ChangeLog. -MultiPriceRuleDesc=Wenn die Option "Mehrere Preisstufen pro Produkt / Dienstleistung" aktiviert ist, können Sie für jedes Produkt unterschiedliche Preise definieren (einen pro Preisstufe). Um Zeit zu sparen, können Sie hier eine Regel eingeben, um einen Preis für jede Ebene auf der Grundlage des Preises der ersten Ebene automatisch zu berechnen, sodass Sie für jedes Produkt nur einen Preis für die erste Ebene eingeben müssen. Diese Seite soll Ihnen Zeit sparen, ist jedoch nur dann nützlich, wenn Ihre Preise für jedes Level im Verhältnis zum ersten Level stehen. Sie können diese Seite in den meisten Fällen ignorieren. +MultiPriceRuleDesc=Wenn die Option "Mehrere Preisstufen pro Produkt/Leistung" aktiviert ist, können Sie für jedes Produkt unterschiedliche Preise definieren (einen pro Preisstufe). Um Zeit zu sparen, können Sie hier eine Regel eingeben, um einen Preis für jede Preisstufe auf der Grundlage des Preises der ersten Preisstufe automatisch zu berechnen, sodass Sie für jedes Produkt nur einen Preis für die erste Preisstufe eingeben müssen. Diese Seite soll Ihnen Zeit sparen, ist jedoch nur dann nützlich, wenn Ihre Preise für jedes Level im Verhältnis zum ersten Level stehen. Sie können diese Seite in den meisten Fällen ignorieren. ModelModulesProduct=Vorlagen für Produktdokumente WarehouseModelModules=Vorlagen für Lagerdokumente ToGenerateCodeDefineAutomaticRuleFirst=Um Codes automatisch generieren zu können, muß zuerst ein Manager für die automatische Generierung von Barcode-Nummer festgelegt werden. @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Hinweis: Die Option zur Verwendung von Umsatzsteuer oder Mehrwert SwapSenderAndRecipientOnPDF=Tausche Position der Absender- und Empfängeradresse in PDF-Dokumenten FeatureSupportedOnTextFieldsOnly=Warnung, Funktion wird nur in Textfeldern und Kombinationslisten unterstützt. Außerdem muss ein URL-Parameter action = create oder action = edit festgelegt werden ODER der Seitenname muss mit 'new.php' enden, um diese Funktion auszulösen. EmailCollector=eMail-Collector +EmailCollectors=E-Mail-Kollektoren EmailCollectorDescription=Fügt einen geplanten Auftrag und eine Einrichtungsseite hinzu, um regelmäßig E-Mail-Postfächer (unter Verwendung des IMAP-Protokolls) zu scannen und E-Mails, die in Ihrer Anwendung eingegangen sind, am richtigen Ort aufzuzeichnen und / oder einige Datensätze automatisch zu erstellen (z. B. Leads). NewEmailCollector=Neuer eMail-Colletor EMailHost=Hostname des IMAP-Servers @@ -2073,14 +2074,14 @@ DateLastCollectResult=Datum des letzten eMail-Collect-Versuchs DateLastcollectResultOk=Datum des letzten, erfolgreichen eMail-Collect LastResult=Letztes Ergebnis EmailCollectorHideMailHeaders=Den Inhalt des E-Mail-Headers nicht im gespeicherten Inhalt gesammelter E-Mails einschließen -EmailCollectorHideMailHeadersHelp=Wenn diese Option aktiviert ist, werden E-Mail-Header nicht am Ende des als Ereignis gespeicherten E-Mail-Inhalts hinzugefügt. +EmailCollectorHideMailHeadersHelp=Wenn diese Option aktiviert ist, werden E-Mail-Kopfzeilen nicht am Ende des E-Mail-Inhalts hinzugefügt, der als Agenda-Ereignis gespeichert wird. EmailCollectorConfirmCollectTitle=eMail-Collect-Bestätigung EmailCollectorConfirmCollect=Möchten Sie diesen Collector jetzt ausführen? EmailCollectorExampleToCollectTicketRequestsDesc=Erfassen Sie E-Mails, die bestimmten Regeln entsprechen, und erstellen Sie automatisch ein Ticket (Modul Ticket muss aktiviert sein) mit den E-Mail-Informationen. Sie können diesen Collector verwenden, wenn Sie Unterstützung per E-Mail leisten, so dass aus der Anfrage automatisch ein Ticket generiert wird. Aktivieren Sie auch Collect_Responses, um Antworten Ihrer Kunden direkt in der Ticket-Ansicht zu sammeln (Sie müssen von Dolibarr aus antworten). EmailCollectorExampleToCollectTicketRequests=Beispiel für das Erfassen der Ticket-Anforderung (nur die erste Nachricht) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Durchsuchen Sie das „Gesendet“-Verzeichnis Ihres Postfachs, um E-Mails zu finden, die als Antwort auf eine andere E-Mail direkt von Ihrer E-Mail-Software und nicht von Dolibarr gesendet wurden. Wird eine solche E-Mail gefunden, wird das Antwortereignis in Dolibarr protokolliert EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Beispiel zum Sammeln von E-Mail-Antworten, die von einer externen E-Mail-Software gesendet wurden -EmailCollectorExampleToCollectDolibarrAnswersDesc=Sammeln Sie alle E-Mails, die eine Antwort auf eine von Dolibarr gesendeten E-Mail sind. Ein Ereignis (Modul Ereignisse muss aktiviert sein) mit der E-Mail-Antwort wird aufgezeichnet. Wenn Sie beispielsweise ein Angebot, eine Bestellung, eine Rechnung oder eine Nachricht für ein Ticket per E-Mail aus der Anwendung senden und Ihr Kunde auf Ihre E-Mail antwortet, erfasst das System automatisch die Antwort und fügt sie in Ihrem ERP-System hinzu. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Sammeln Sie alle E-Mails, die eine Antwort auf eine E-Mail sind, die aus Ihrer Anwendung gesendet wurde. Ein Ereignis (Modul Agenda muss aktiviert sein) mit der E-Mail-Antwort wird am zugehörigen Ort erfasst. Wenn Sie beispielsweise ein Angebot, eine Bestellung, eine Rechnung oder eine Nachricht für ein Ticket per E-Mail aus der Anwendung senden und der Empfänger auf Ihre E-Mail antwortet, erfasst das System automatisch die Antwort und fügt sie in Ihrem ERP hinzu. EmailCollectorExampleToCollectDolibarrAnswers=Beispiel für das Sammeln aller eingehenden Nachrichten, die Antworten auf Nachrichten sind, die von Dolibarr gesendet wurden. EmailCollectorExampleToCollectLeadsDesc=Sammeln Sie E-Mails, die bestimmten Regeln entsprechen und erstellen Sie automatisch einen Lead (Modul Projekt muss aktiviert sein) mit den E-Mail-Informationen. Sie können diesen Collector verwenden, wenn Sie Ihren Lead mit dem Modul Projekt (1 Lead = 1 Projekt) verfolgen möchten, um Ihre Leads automatisch zu generieren. Wenn der Collector Collect_Responses ebenfalls aktiviert ist, sehen Sie beim Senden einer E-Mail von Ihren Leads, Angeboten oder anderen Objekten möglicherweise auch die Antworten Ihrer Kunden oder Partner direkt in der Anwendung.
Hinweis: Bei diesem ersten Beispiel wird der Titel des Leads inklusive E-Mail generiert. Wenn der Geschäftspartner nicht in der Datenbank gefunden werden kann (Neukunde), wird der Lead dem Geschäftspartner mit der ID 1 zugeordnet. EmailCollectorExampleToCollectLeads=Beispiel für das Sammeln von Leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Sammeln Sie E-Mails, die Bewer EmailCollectorExampleToCollectJobCandidatures=Beispiel für das Sammeln von per E-Mail erhaltenen Stellenbewerbungen NoNewEmailToProcess=Keine neue e-Mail (passende Filter) zum Verarbeiten NothingProcessed=Nicht ausgeführt -XEmailsDoneYActionsDone=%sE-Mail(s) qualifiziert, %s E-Mail(s) erfolgreich verarbeitet (für %s Aufzeichnung(en) / Aktion(en) durchgeführt) +XEmailsDoneYActionsDone=%s E-Mails vorqualifiziert, %s E-Mails erfolgreich verarbeitet (für %s Aufzeichnung(en)/Aktion(en) durchgeführt) RecordEvent=Zeichnen Sie ein Ereignis in der Agenda auf (mit dem Typ der gesendeten oder empfangen E-Mail) CreateLeadAndThirdParty=Erstellen Sie einen Lead (und ggf. einen Geschäftspartner) CreateTicketAndThirdParty=Ticket erstellen (verknüpft mit einem Geschäftspartner, wenn der Geschäftspartner durch einen vorherigen Vorgang geladen oder aus einem Tracker im E-Mail-Header ermittelt wurde, ansonsten ohne Geschäftspartner) @@ -2167,6 +2168,9 @@ EmailTemplate=E-Mail-Vorlage EMailsWillHaveMessageID=E-Mails haben ein Schlagwort "Referenzen", das dieser Syntax entspricht PDF_SHOW_PROJECT=Projekt im Dokument anzeigen ShowProjectLabel=Projektbezeichnung +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Den Namen des Geschäftspartners um Alias ergänzen +THIRDPARTY_ALIAS=Name Geschäftspartner - Alias Geschäftspartner +ALIAS_THIRDPARTY=Alias Geschäftspartner - Name Geschäftspartner PDF_USE_ALSO_LANGUAGE_CODE=Wenn Sie möchten, dass einige Texte in Ihrem PDF in 2 verschiedenen Sprachen in demselben generierten PDF dupliziert werden, müssen Sie hier diese zweite Sprache festlegen, damit das generierte PDF zwei verschiedene Sprachen auf derselben Seite enthält, die beim Generieren von PDF ausgewählte und diese (dies wird nur von wenigen PDF-Vorlagen unterstützt). Für 1 Sprache pro PDF leer halten. PDF_USE_A=PDF-Dokumente im Format PDF/A erstellen anstelle des Standardformats PDF FafaIconSocialNetworksDesc=Geben Sie hier den Code für ein FontAwesome-Icon ein. Wenn Sie FontAwesome nicht kennen, können Sie den Standard 'fa-address-book' benutzen. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Vorlage für eine Visitenkarte in unterschiedlicher Gr InventorySetup= Bestandsaufnahme einrichten ExportUseLowMemoryMode=Verwenden Sie einen Low-Memory-Modus ExportUseLowMemoryModeHelp=Verwenden Sie den Low-Memory-Modus, um den Dump zu erstellen (die Komprimierung erfolgt durch eine Pipe statt im PHP-Speicher). Mit dieser Methode kann nicht überprüft werden, ob die Datei vollständig ist, und es kann keine Fehlermeldung ausgeben werden, wenn der Vorgang fehlschlägt. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Schnittstelle zum Abfangen von Dolibarr-Triggern und zum Senden an eine URL +WebhookSetup = Webhook-Einrichtung +Settings = Einstellungen +WebhookSetupPage = Webhook-Einrichtungsseite ShowQuickAddLink=Eine Schaltfläche zum schnellen Hinzufügen eines Elements im oberen rechten Menü anzeigen + HashForPing=Für den Ping verwendeter Hash ReadOnlyMode=Ist eine Instanz im "Read Only"-Modus DEBUGBAR_USE_LOG_FILE=Die Datei dolibarr.log verwenden, um Protokolldaten zu erfassen UsingLogFileShowAllRecordOfSubrequestButIsSlower=Verwenden Sie die Datei dolibarr.log, um Protokolldaten zu erfassen, anstatt sie im Speicher aufzuzeichnen. Dies ermöglicht, alle Protokolldaten aufzuzeichnen, anstatt nur die Protokolldaten des aktuellen Prozesses (also einschließlich der Ajax-Requests auf den Seiten), aber Ihre Instanz wird sehr, sehr langsam. Nicht empfohlen. FixedOrPercent=Absolut (verwenden Sie das Schlüsselwort 'fixed') oder prozentual (verwenden Sie das Schlüsselwort 'percent') DefaultOpportunityStatus=Standard-Opportunity-Status (erster Status, wenn Interessent/Lead erstellt wird) + IconAndText=Icon und Text TextOnly=Nur Text IconOnlyAllTextsOnHover=Nur Icon - Alle Texte erscheinen unter dem Icon, wenn Sie mit der Maus über die Menüleiste fahren @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Nur Icon – Der Text des Icons wird angezeigt, wenn Sie mit IconOnly=Nur Icon - Der Text wird als Tooltipp angezeigt INVOICE_ADD_ZATCA_QR_CODE=Den ZATCA-QR-Code auf Rechnungen anzeigen INVOICE_ADD_ZATCA_QR_CODEMore=Einige arabische Länder benötigen diesen QR-Code auf ihren Rechnungen +INVOICE_ADD_SWISS_QR_CODE=Schweizer QR-Rechnungscode auf Rechnungen anzeigen UrlSocialNetworksDesc=URL-Link des sozialen Netzwerks. Verwenden Sie {socialid} für den variablen Teil, der die ID des sozialen Netzwerks enthält. +IfThisCategoryIsChildOfAnother=Wenn diese Kategorie unterhalb einer anderen ist +NoName=Kein Name +CIDLookupURL=Das Modul bringt eine URL mit, die von einem externen Tool verwendet werden kann, um den Namen eines Geschäftspartners oder Kontakts aus seiner Telefonnummer zu ermitteln. Zu verwendende URL ist: diff --git a/htdocs/langs/de_DE/agenda.lang b/htdocs/langs/de_DE/agenda.lang index 7d7dadd51a6..ad2e71909a8 100644 --- a/htdocs/langs/de_DE/agenda.lang +++ b/htdocs/langs/de_DE/agenda.lang @@ -66,9 +66,9 @@ ShipmentUnClassifyCloseddInDolibarr=Lieferung %s als wiedereröffnet markieren ShipmentBackToDraftInDolibarr=Sendung %s zurück zum Entwurfsstatus ShipmentDeletedInDolibarr=Lieferung %s gelöscht ShipmentCanceledInDolibarr=Sendung %s storniert -ReceptionValidatedInDolibarr=Empfang %s validiert +ReceptionValidatedInDolibarr=Wareneingang %s bestätigt ReceptionClassifyClosedInDolibarr=Wareneingang %s als geschlossen klassifiziert -OrderCreatedInDolibarr= Auftrag %s erstellt +OrderCreatedInDolibarr=Auftrag %s erstellt OrderValidatedInDolibarr=Auftrag %s freigegeben OrderDeliveredInDolibarr=Auftrag %s als geliefert markiert OrderCanceledInDolibarr=Auftrag %s storniert @@ -99,10 +99,10 @@ PRODUCT_DELETEInDolibarr=Produkt %s gelöscht HOLIDAY_CREATEInDolibarr=Urlaubsantrag %s erstellt HOLIDAY_MODIFYInDolibarr=Urlaubsantrag %s bearbeitet HOLIDAY_APPROVEInDolibarr=Urlaubsantrag %s genehmigt -HOLIDAY_VALIDATEInDolibarr=Urlaubsantrag %s validiert +HOLIDAY_VALIDATEInDolibarr=Urlaubsantrag %s freigegeben HOLIDAY_DELETEInDolibarr=Urlaubsantrag %s gelöscht EXPENSE_REPORT_CREATEInDolibarr=Spesenabrechnung %s erstellt -EXPENSE_REPORT_VALIDATEInDolibarr=Ausgabenbericht %s validiert +EXPENSE_REPORT_VALIDATEInDolibarr=Spesenabrechnung %s freigegeben EXPENSE_REPORT_APPROVEInDolibarr=Spesenabrechnung %s genehmigt EXPENSE_REPORT_DELETEInDolibarr=Spesenabrechnung %s gelöscht EXPENSE_REPORT_REFUSEDInDolibarr=Spesenabrechnung %s abgelehnt diff --git a/htdocs/langs/de_DE/bills.lang b/htdocs/langs/de_DE/bills.lang index 5bb05fb98f1..352a5a567f7 100644 --- a/htdocs/langs/de_DE/bills.lang +++ b/htdocs/langs/de_DE/bills.lang @@ -4,11 +4,11 @@ Bills=Rechnungen BillsCustomers=Kundenrechnungen BillsCustomer=Kundenrechnung BillsSuppliers=Lieferantenrechnungen -BillsCustomersUnpaid=unbezahlte Kundenrechnungen -BillsCustomersUnpaidForCompany=offene Kundenrechnungen von %s -BillsSuppliersUnpaid=unbezahlte Lieferantenrechnungen -BillsSuppliersUnpaidForCompany=Unbezahlte Rechnungen des Lieferanten %s -BillsLate=verspätete Zahlungen +BillsCustomersUnpaid=Offene Kundenrechnungen +BillsCustomersUnpaidForCompany=Offene Kundenrechnungen von %s +BillsSuppliersUnpaid=Offene Lieferantenrechnungen +BillsSuppliersUnpaidForCompany=Offene Rechnungen des Lieferanten %s +BillsLate=Überfällige Zahlungen BillsStatistics=Statistik Kundenrechnungen BillsStatisticsSuppliers=Statistik Lieferantenrechnungen DisabledBecauseDispatchedInBookkeeping=Deaktiviert, da die Rechnung schon in die Buchhaltung übernommen wurde @@ -322,8 +322,8 @@ DiscountFromExcessReceived=Überzahlungen der Rechnung %s empfangen DiscountFromExcessPaid=Überzahlungen der Rechnung %s empfangen AbsoluteDiscountUse=Diese Art von Guthaben kann verwendet werden auf der Rechnung vor der Validierung CreditNoteDepositUse=Die Rechnung muss freigegeben werden, um Gutschriften zu erstellen -NewGlobalDiscount=neuer absoluter Rabatt -NewRelativeDiscount=neuer relativer Rabatt +NewGlobalDiscount=Neuer absoluter Rabatt +NewRelativeDiscount=Neuer relativer Rabatt DiscountType=Rabatt Typ NoteReason=Anmerkung/Begründung ReasonDiscount=Rabattgrund @@ -334,11 +334,11 @@ CustomerDiscounts=Kundenrabatte SupplierDiscounts=Lieferantenrabatte BillAddress=Rechnungsanschrift HelpEscompte=Dieser Rabatt ist ein dem Kunden gewährter Rabatt, da die Zahlung vor der Laufzeit erfolgte. -HelpAbandonBadCustomer=Dieser Betrag wurde abgebrochen (Kunde gilt als schlechter Kunde) und gilt als außergewöhnlicher Verlust. +HelpAbandonBadCustomer=Dieser Betrag wurde aufgegeben (Kunde gilt als schlechter Kunde) und ist als uneinbringlich zu werten. HelpAbandonOther=Dieser Betrag wurde auf Grund eines Fehlers aufgegeben (z.B. falscher Kunde oder Ersatzrechnung erstellt) IdSocialContribution=Zahlungs-ID der Steuern/Sozialabgaben PaymentId=Zahlung Id -PaymentRef=ZahlungsNr. +PaymentRef=ZahlungsRef. InvoiceId=Rechnungs ID InvoiceRef=Rechnungs Nr. InvoiceDateCreation=Datum der Rechnungserstellung @@ -509,7 +509,7 @@ MenuCheques=Schecks MenuChequesReceipts=Quittungen prüfen NewChequeDeposit=Neuer Scheck ChequesReceipts=Quittungen prüfen -ChequesArea=Scheck einreichen +ChequesArea=Scheckeinlösungen – Übersicht ChequeDeposits=Scheckeinlösungen Cheques=Schecks DepositId=Scheck Nr. @@ -539,7 +539,7 @@ AllCompletelyPayedInvoiceWillBeClosed=Alle Rechnungen ohne Restzahlung werden au ToMakePayment=Bezahlen ToMakePaymentBack=Rückzahlung ListOfYourUnpaidInvoices=Liste aller unbezahlten Rechnungen -NoteListOfYourUnpaidInvoices=Bitte beachten: Diese Liste enthält nur Rechnungen an Partner, bei denen Sie als Vertreter angegeben sind. +NoteListOfYourUnpaidInvoices=Bitte beachten: Diese Liste enthält nur Rechnungen an Geschäftspartner, bei denen Sie als Vertreter angegeben sind. RevenueStamp=Steuermarke YouMustCreateInvoiceFromThird=Diese Option ist nur verfügbar, wenn Sie eine Rechnung auf der Registerkarte "Kunde" eines Drittanbieters erstellen YouMustCreateInvoiceFromSupplierThird=Diese Option ist nur verfügbar, wenn Sie eine Rechnung auf der Registerkarte "Kunde/Interessent" eines Geschäftspartner erstellen @@ -602,9 +602,9 @@ BillXCreated=Rechnung %s generiert StatusOfGeneratedDocuments=Status der Dokumentenerstellung DoNotGenerateDoc=Dokumentdatei nicht erstellen AutogenerateDoc=Dokumentdatei automatisch erstellen -AutoFillDateFrom=Startdatum der Dienstleistung auf das Rechnungsdatum setzen +AutoFillDateFrom=Startdatum der Leistungsposition auf das Rechnungsdatum festlegen AutoFillDateFromShort=Legen Sie das Startdatum fest -AutoFillDateTo=Enddatum der Dienstleistung auf das Rechnungsdatum setzen +AutoFillDateTo=Enddatum der Leistungsposition auf das Rechnungsdatum festlegen AutoFillDateToShort=Enddatum festlegen MaxNumberOfGenerationReached=Maximal Anzahl Generierungen erreicht BILL_DELETEInDolibarr=Rechnung gelöscht diff --git a/htdocs/langs/de_DE/boxes.lang b/htdocs/langs/de_DE/boxes.lang index 06a3fabd926..f3ef38c8351 100644 --- a/htdocs/langs/de_DE/boxes.lang +++ b/htdocs/langs/de_DE/boxes.lang @@ -5,11 +5,11 @@ BoxLastRssInfos=Informationen RSS Feed BoxLastProducts=%s zuletzt bearbeitete Produkte/Leistungen BoxProductsAlertStock=Bestandeswarnungen für Produkte BoxLastProductsInContract=Zuletzt in Verträgen aufgenommene Produkte/Leistungen (maximal %s) -BoxLastSupplierBills=neueste Lieferantenrechnungen -BoxLastCustomerBills=neueste Kundenrechnungen +BoxLastSupplierBills=Neueste Lieferantenrechnungen +BoxLastCustomerBills=Neueste Kundenrechnungen BoxOldestUnpaidCustomerBills=älteste unbezahlte Kundenrechnungen BoxOldestUnpaidSupplierBills=älteste unbezahlte Lieferantenrechnungen -BoxLastProposals=neueste Angebote +BoxLastProposals=Neueste Angebote BoxLastProspects=Zuletzt bearbeitete Interessenten BoxLastCustomers=zuletzt berarbeitete Kunden BoxLastSuppliers=zuletzt bearbeitete Lieferanten @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Neueste Mitglieder-Abonnements BoxFicheInter=Neueste Serviceaufträge BoxCurrentAccounts=Saldo offene Konten BoxTitleMemberNextBirthdays=Geburtstage in diesem Monat (Mitglieder) -BoxTitleMembersByType=Mitglieder nach Typ +BoxTitleMembersByType=Mitglieder nach Typ und Status BoxTitleMembersSubscriptionsByYear=Mitgliederabonnements nach Jahr BoxTitleLastRssInfos=%s neueste Neuigkeiten von %s BoxTitleLastProducts=Zuletzt bearbeitete Produkte / Leistungen (maximal %s) @@ -45,7 +45,7 @@ BoxTitleLastModifiedContacts=Zuletzt bearbeitete Kontakte/Adressen (maximal %s) BoxMyLastBookmarks=Meine %s neuesten Lesezeichen BoxOldestExpiredServices=Die ältesten abgelaufenen aktiven Dienste BoxLastExpiredServices=Neueste Verträge mit abgelaufenen Leistungen (maximal %s) -BoxTitleLastActionsToDo=Anstehende Termine / Aufgaben (maximal %s) +BoxTitleLastActionsToDo=Anstehende Termine/Aufgaben (maximal %s) BoxTitleLastContracts=Zuletzt bearbeitete Verträge (maximal %s) BoxTitleLastModifiedDonations=Letzte %s Spenden, die geändert wurden BoxTitleLastModifiedExpenses=Neueste %s Spesenabrechnungen, die geändert wurden @@ -110,9 +110,9 @@ SuspenseAccountNotDefined=Zwischenkonto ist nicht definiert BoxLastCustomerShipments=Letzte Kundenlieferungen BoxTitleLastCustomerShipments=Neueste %s Kundensendungen NoRecordedShipments=Keine erfasste Kundensendung -BoxCustomersOutstandingBillReached=Kunden mit erreichtem Aussenständen-Limit +BoxCustomersOutstandingBillReached=Kunden mit erreichtem Aussenstände-Limit # Pages -UsersHome=Start Anwender und Gruppen +UsersHome=Start Benutzer und Gruppen MembersHome=Start Mitgliedschaft ThirdpartiesHome=Start Geschäftspartner TicketsHome=Start Tickets diff --git a/htdocs/langs/de_DE/cashdesk.lang b/htdocs/langs/de_DE/cashdesk.lang index c4a7560ca5b..984bf8dea3d 100644 --- a/htdocs/langs/de_DE/cashdesk.lang +++ b/htdocs/langs/de_DE/cashdesk.lang @@ -33,7 +33,7 @@ DeleteArticle=Klicken, um diesen Artikel zu entfernen FilterRefOrLabelOrBC=Suche (Artikelnr./Name) UserNeedPermissionToEditStockToUsePos=Sie möchten den Lagerbestand bei Rechnungserstellung verringern. Benutzer, die POS verwenden, mussen also die Berechtigung zum Bearbeiten des Lagerbestands erhalten. DolibarrReceiptPrinter=Dolibarr Quittungsdrucker -PointOfSale=Kasse +PointOfSale=Kassenterminal PointOfSaleShort=POS CloseBill=Rechnung schließen Floors=Bereiche / Etagen und Tische @@ -41,7 +41,7 @@ Floor=Bereich / Etage AddTable=Tisch hinzufügen Place=Tisch TakeposConnectorNecesary='TakePOS Connector' erforderlich -OrderPrinters=Fügen Sie eine Schaltfläche hinzu, um die Bestellung ohne Zahlung an bestimmte Drucker zu senden (z.B. um eine Bestellung an eine Küche zu senden). +OrderPrinters=Schaltfläche hinzufügen, um die Bestellung ohne Zahlung an bestimmte Drucker zu senden (z.B. um eine Bestellung an eine Küche zu senden) NotAvailableWithBrowserPrinter=Nicht verfügbar, wenn Drucker für Beleg auf Browser eingestellt ist SearchProduct=Produkt suchen Receipt=globale Druckeinstellungen @@ -49,7 +49,7 @@ Header=Kopfzeile Footer=Fußzeile AmountAtEndOfPeriod=Betrag am Ende der Periode (Tag, Monat oder Jahr) TheoricalAmount=Theoretischer Betrag -RealAmount=tatsächlicher Betrag +RealAmount=Tatsächlicher Betrag CashFence=Kassenschluss CashFenceDone=Kassenschluss für den Zeitraum durchgeführt NbOfInvoices=Anzahl der Rechnungen @@ -59,10 +59,10 @@ BillsCoinsPad=Münzen- und Banknoten-Pad DolistorePosCategory=TakePOS-Module und andere POS-Lösungen für Dolibarr TakeposNeedsCategories=TakePOS benötigt mindestens eine Produktkategorie, um zu funktionieren TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS benötigt mindestens 1 Produktkategorie unter der Kategorie %s , um zu funktionieren -OrderNotes=Kann jedem bestellten Artikel einige Notizen hinzufügen -CashDeskBankAccountFor=Standardkonto für Zahlungen in +OrderNotes=Jedem bestellten Artikel können Notizen hinzufügt werden +CashDeskBankAccountFor=Standardkonto für Zahlungen per NoPaimementModesDefined=In der TakePOS-Konfiguration ist kein Zahlungsmodus definiert -TicketVatGrouped=Gruppieren Sie die Mehrwertsteuer nach Steuersatz der Tickets/Quittungen +TicketVatGrouped=Mehrwertsteuer auf Tickets/Quittungen nach Steuersatz gruppieren AutoPrintTickets=Tickets | Quittungen automatisch drucken PrintCustomerOnReceipts=Kunden auf Tickets | Quittungen drucken EnableBarOrRestaurantFeatures=Bar- und Restaurantfunktionen @@ -76,20 +76,20 @@ TerminalSelect=Wählen Sie das Terminal aus, das Sie verwenden möchten: POSTicket=POS Ticket POSTerminal=POS-Terminal POSModule=POS-Modul -BasicPhoneLayout=Verwenden Sie das Basislayout für Telefone +BasicPhoneLayout=Basislayout für Telefone verwenden SetupOfTerminalNotComplete=Die Einrichtung von Terminal %s ist nicht abgeschlossen DirectPayment=Direktzahlung -DirectPaymentButton=Fügen Sie eine Schaltfläche "Direkte Barzahlung" hinzu +DirectPaymentButton=Schaltfläche "Direkte Barzahlung" hinzufügen InvoiceIsAlreadyValidated=Rechnung ist bereits geprüft NoLinesToBill=Keine Zeilen zu berechnen CustomReceipt=Benutzerdefinierte Quittung ReceiptName=Belegname -ProductSupplements=Ergänzungen von Produkten verwalten +ProductSupplements=Ergänzende Zusatzprodukte verwalten SupplementCategory=Ergänzungskategorie ColorTheme=Farbschema Colorful=Farbig HeadBar=Kopfleiste -SortProductField=Feld zum Sortieren von Produkten +SortProductField=Feld, nach dem Produkte sortiert werden Browser=Browser BrowserMethodDescription=Schneller und einfacher Belegdruck. Nur wenige Parameter zum Konfigurieren der Quittung. Drucken via Browser. TakeposConnectorMethodDescription=Externes Modul mit zusätzlichen Funktionen. Möglichkeit zum Drucken aus der Cloud. @@ -99,7 +99,7 @@ ByTerminal=über Terminal TakeposNumpadUsePaymentIcon=Verwenden Sie das Symbol anstelle des Textes auf den Zahlungsschaltflächen des Nummernblocks CashDeskRefNumberingModules=Nummerierungsmodul für POS-Verkäufe CashDeskGenericMaskCodes6 =  Das Tag
{TN} wird zum Hinzufügen der Terminalnummer verwendet -TakeposGroupSameProduct=Gruppieren Sie dieselben Produktlinien +TakeposGroupSameProduct=Einzelpositionen mit denselben Produkten zusammenfassen StartAParallelSale=Starten Sie einen neuen Parallelverkauf SaleStartedAt=Der Verkauf begann bei %s ControlCashOpening=Beim Öffnen der Kasse das Popup „Kasse kontrollieren“ anzeigen @@ -116,11 +116,11 @@ CustomerMenu=Kundenmenü ScanToMenu=Scannen Sie den QR-Code, um das Menü anzuzeigen ScanToOrder=Scannen Sie den QR-Code auf Bestellung Appearance=Aussehen -HideCategoryImages=Kategorie Bilder ausblenden +HideCategoryImages=Bilder für Kategorien ausblenden HideProductImages=Produktbilder ausblenden NumberOfLinesToShow=Anzahl der anzuzeigenden Bildzeilen DefineTablePlan=Tabellenplan definieren -GiftReceiptButton=Fügen Sie eine Schaltfläche "Gutschrift-Quittung" hinzu +GiftReceiptButton=Schaltfläche "Gutschrift-Quittung" hinzufügen GiftReceipt=Gutschrift-Quittung ModuleReceiptPrinterMustBeEnabled=Das Modul Belegdrucker muss zuerst aktiviert worden sein AllowDelayedPayment=Spätere Zahlung zulassen @@ -136,3 +136,4 @@ PrintWithoutDetails=Drucken ohne Details YearNotDefined=Jahr ist nicht definiert TakeposBarcodeRuleToInsertProduct=Barcode-Regel zum Einfügen von Produkten TakeposBarcodeRuleToInsertProductDesc=Regel zum Extrahieren der Produktreferenz + einer Menge aus einem gescannten Barcode.
Wenn leer (Standardwert), verwendet die Anwendung den vollständig gescannten Barcode, um das Produkt zu finden.

Wenn definiert, muss die Syntax lauten:
ref:NB+qu:NB+qd:NB+other:NB
wobei NB die Anzahl der Zeichen ist, die als Daten aus dem gescannten Barcode extrahiert werden, mit:
  • ref : Produkt-Referenz
  • qu : Menge, die beim Einfügen des Artikels gesetzt wird (Einheiten)
  • qd : Menge, die beim Einfügen des Artikels gesetzt wird (Dezimalstellen)
  • other : andere Zeichen
+AlreadyPrinted=Bereits gedruckt diff --git a/htdocs/langs/de_DE/categories.lang b/htdocs/langs/de_DE/categories.lang index 27f6e77ffaa..fac2e6f3d93 100644 --- a/htdocs/langs/de_DE/categories.lang +++ b/htdocs/langs/de_DE/categories.lang @@ -1,25 +1,25 @@ # Dolibarr language file - Source file is en_US - categories Rubrique=Kategorie Rubriques=Kategorien -RubriquesTransactions=Transaktionenkategorien +RubriquesTransactions=Transaktionskategorien categories=Kategorien NoCategoryYet=Es wurde kein Schlagwort / keine Kategorie dieses Typs erstellt In=Übergeordnete Kategorie AddIn=Übergeordnete Kategorie modify=Ändern -Classify=zuordnen +Classify=Zuordnen CategoriesArea=Übersicht Kategorien ProductsCategoriesArea=Bereich Produkt-/Leistungs-Schlagwörter/Kategorien SuppliersCategoriesArea=Festlegung von Kategorien für Lieferanten CustomersCategoriesArea=Festlegung von Kategorien für Kunden/Interessenten -MembersCategoriesArea=Bereich für Mitglieder-Schlagwörter / Kategorien +MembersCategoriesArea=Bereich für Mitglieder-Schlagwörter/Kategorien ContactsCategoriesArea=Festlegung von Kategorien für Kontakte -AccountsCategoriesArea=Bereich für Bankkonto-Schlagwörter / -kategorien -ProjectsCategoriesArea=Bereich Projekt-Schlagwörter / Kategorien -UsersCategoriesArea=Bereich Benutzer-Schlagwörter / Kategorien +AccountsCategoriesArea=Bereich für Bankkonto-Schlagwörter/Kategorien +ProjectsCategoriesArea=Bereich Projekt-Schlagwörter/Kategorien +UsersCategoriesArea=Bereich Benutzer-Schlagwörter/Kategorien SubCats=Unterkategorie(n) CatList=Liste der Kategorien -CatListAll=Liste der Schlagwörter / Kategorien (alle Typen) +CatListAll=Liste der Schlagwörter/Kategorien (alle Typen) NewCategory=Neue Kategorie ModifCat=Kategorie bearbeiten CatCreated=Kategorie erstellt @@ -32,12 +32,12 @@ ImpossibleAddCat=Es ist nicht möglich die Kategorie %s hinzuzufügen. WasAddedSuccessfully= %s wurde erfolgreich hinzugefügt. ObjectAlreadyLinkedToCategory=Element ist bereits mit dieser Kategorie verknüpft. ProductIsInCategories=Dieses Produkt / diese Leistung ist folgenden Kategorien zugewiesen -CompanyIsInCustomersCategories=Dieser Partner ist folgenden Kundenkategorien zugewiesen +CompanyIsInCustomersCategories=Dieser Geschäftspartner ist folgenden Kundenkategorien zugeordnet CompanyIsInSuppliersCategories=Diesem Geschäftspartner ist folgende Lieferantenkategorie zugewiesen MemberIsInCategories=Dieses Mitglied ist folgenden Mitgliederkategorien zugewiesen ContactIsInCategories=Dieser Kontakt ist folgenden Kontaktkategorien zugewiesen ProductHasNoCategory=Dieses Produkt / diese Leistung ist keiner Kategorie zugewiesen. -CompanyHasNoCategory=Dieser Partner ist keiner Kategorie zugewiesen. +CompanyHasNoCategory=Dieser Geschäftspartner ist keiner Kategorie zugewiesen. MemberHasNoCategory=Dieses Mitglied ist keiner Kategorie zugewiesen. ContactHasNoCategory=Dieser Kontakt ist keiner Kategorie zugewiesen. ProjectHasNoCategory=Dieses Projekt ist keiner Kategorie zugewiesen. @@ -95,7 +95,9 @@ ShowCategory=Zeige Kategorie ByDefaultInList=Standardwert in Liste ChooseCategory=Kategorie auswählen StocksCategoriesArea=Festlegung von Kategorien für Warenlager +TicketsCategoriesArea=Ticketkategorien ActionCommCategoriesArea=Ereigniskategorien WebsitePagesCategoriesArea=Seiteninhalte-Kategorien KnowledgemanagementsCategoriesArea=KM Artikelkategorien UseOrOperatorForCategories=Verwenden Sie den Operator 'ODER' für Kategorien +AddObjectIntoCategory=Objekt zur Kategorie hinzufügen diff --git a/htdocs/langs/de_DE/companies.lang b/htdocs/langs/de_DE/companies.lang index 19248396451..0797e3164ab 100644 --- a/htdocs/langs/de_DE/companies.lang +++ b/htdocs/langs/de_DE/companies.lang @@ -1,27 +1,27 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=Firmenname %s bereits vorhanden. Bitte wählen Sie einen anderen. ErrorSetACountryFirst=Wählen Sie zuerst das Land -SelectThirdParty=Wähle einen Partner +SelectThirdParty=Geschäftspartner auswählen ConfirmDeleteCompany=Möchten Sie dieses Unternehmen und alle zugehörigen Informationen wirklich löschen? DeleteContact=Löschen eines Kontakts/Adresse ConfirmDeleteContact=Möchten Sie diesen Kontakt und alle zugehörigen Informationen wirklich löschen? -MenuNewThirdParty=neuer Geschäftspartner -MenuNewCustomer=neuer Kunde +MenuNewThirdParty=Neuer Geschäftspartner +MenuNewCustomer=Neuer Kunde MenuNewProspect=Neuer Interessent -MenuNewSupplier=neuer Lieferant +MenuNewSupplier=Neuer Lieferant MenuNewPrivateIndividual=Neue Privatperson -NewCompany=neue Firma (Interessent, Kunde, Lieferant) -NewThirdParty=Neuer Partner (Interessent, Kunde, Lieferant) +NewCompany=Neue Firma (Interessent, Kunde, Lieferant) +NewThirdParty=Neuer Geschäftspartner (Interessent, Kunde, Lieferant) CreateDolibarrThirdPartySupplier=neuen Lieferanten erstellen -CreateThirdPartyOnly=Partner erstellen -CreateThirdPartyAndContact=Neuen Partner und Unteradresse erstellen +CreateThirdPartyOnly=Geschäftspartner erstellen +CreateThirdPartyAndContact=Neuen Geschäftspartner und Kontakt erstellen ProspectionArea=Übersicht Geschäftsanbahnung -IdThirdParty=Partner-ID +IdThirdParty=Geschäftspartner-ID IdCompany=Firmen-ID IdContact=Kontakt-ID ThirdPartyAddress=Adresse des Geschäftspartners ThirdPartyContacts=Partnerkontakte -ThirdPartyContact=Partner-Kontakt/-Adresse +ThirdPartyContact=Geschäftspartner-Kontakt/-Adresse Company=Firma CompanyName=Firmenname AliasNames=Alias-Name (Geschäftsname, Marke, ...) @@ -39,7 +39,7 @@ ThirdPartyCustomers=Kunden ThirdPartyCustomersStats=Kunden ThirdPartyCustomersWithIdProf12=Kunden mit %s oder %s ThirdPartySuppliers=Lieferanten -ThirdPartyType=Partner-Typ +ThirdPartyType=Geschäftspartner-Typ Individual=Privatperson ToCreateContactWithSameName=Erzeugt automatisch einen Kontakt/Adresse mit den gleichen Informationen wie der Geschäftspartner unter diesem Geschäftspartner. In den meisten Fällen, auch wenn Ihr Geschäftspartner eine natürliche Person ist, reicht die Anlage eines Geschäftspartners aus. ParentCompany=Muttergesellschaft @@ -54,12 +54,13 @@ Lastname=Nachname Firstname=Vorname RefEmployee=Mitarbeiterreferenz NationalRegistrationNumber=Nationale Registrierungsnummer -PostOrFunction=Position / Funktion +PostOrFunction=Position/Funktion UserTitle=Anrede NatureOfThirdParty=Art des Geschäftspartners NatureOfContact=Art des Kontakts Address=Adresse State=Bundesland +StateId=Staats-ID StateCode=Länder-/Regioncode StateShort=Staat Region=Region @@ -72,7 +73,7 @@ PhoneShort=Tel. Skype=Skype Call=Anruf Chat=Chat -PhonePro=Telefon geschäftl. +PhonePro=Telefon (geschäftl.) PhonePerso=Telefon (privat) PhoneMobile=Telefon (mobil) No_Email=Keine E-Mail-Kampagne senden @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Prof. Id 1 (Handelsregister) ProfId2CM=Prof. Id 2 (Steuer-Nr./Steuer-ID) -ProfId3CM=Prof. Id 3 (Handelsregister-Nr.) -ProfId4CM=ID Prof. 4 (Einlagenzertifikat) +ProfId3CM=Prof. Id. 3 (Nr. der Gründungsurkunde) +ProfId4CM=Ausweis. Prof. 4 (Nr. der Einlagenbescheinigung) ProfId5CM=ID Prof. 5 (Andere) ProfId6CM=- ProfId1ShortCM=Handelsregister ProfId2ShortCM=Steuer-Nr./Steuer-ID -ProfId3ShortCM=Handelsregister-Nr. -ProfId4ShortCM=Einlagenzertifikat +ProfId3ShortCM=Nr. der Gründungsurkunde +ProfId4ShortCM=Nr. der Einlagenbescheinigung ProfId5ShortCM=Andere ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) @@ -337,11 +338,11 @@ Contacts=Kontakte/Adressen ContactId=Kontakt-ID ContactsAddresses=Kontakte/Adressen FromContactName=Name: -NoContactDefinedForThirdParty=Für diesen Partner ist kein Kontakt eingetragen +NoContactDefinedForThirdParty=Für diesen Geschäftspartner ist kein Kontakt eingetragen NoContactDefined=kein Kontakt für diesen Partner DefaultContact=Standardkontakt ContactByDefaultFor=Standardkontakt/-Adresse für -AddThirdParty=Partner erstellen +AddThirdParty=Geschäftspartner erstellen DeleteACompany=Löschen eines Unternehmens PersonalInformations=Persönliche Daten AccountancyCode=Buchungskonto @@ -359,7 +360,7 @@ ProspectToContact=Zu kontaktierender Interessent CompanyDeleted=Unternehmen "%s" aus der Datenbank gelöscht. ListOfContacts=Liste der Kontakte ListOfContactsAddresses=Liste der Kontakte -ListOfThirdParties=Liste der Partner +ListOfThirdParties=Liste der Geschäftspartner ShowCompany=Geschäftspartner ShowContact=Kontakt-Adresse ContactsAllShort=Alle (kein Filter) @@ -430,7 +431,7 @@ ExportCardToFormat=Karte in Format exportieren ContactNotLinkedToCompany=Kontakt ist keinem Geschäftspartner zugeordnet DolibarrLogin=Dolibarr-Benutzername NoDolibarrAccess=Kein Dolibarr-Zugang -ExportDataset_company_1=Partner (Firmen/Stiftungen/Natürliche Personen) und ihre Eigenschaften +ExportDataset_company_1=Geschäftspartner (Firmen/Stiftungen/Natürliche Personen) und ihre Eigenschaften ExportDataset_company_2=Kontakte und ihre Eigenschaften ImportDataset_company_1=Geschäftspartner und ihre Eigenschaften ImportDataset_company_2=Kontakte/Adressen und Attribute @@ -460,7 +461,7 @@ YouMustCreateContactFirst=Um E-Mail-Benachrichtigungen anlegen zu können, müss ListSuppliersShort=Liste der Lieferanten ListProspectsShort=Liste der Interessenten ListCustomersShort=Liste der Kunden -ThirdPartiesArea=Partner und Kontakte +ThirdPartiesArea=Geschäftspartner und Kontakte LastModifiedThirdParties=Zuletzt bearbeitete Geschäftspartner (maximal %s) UniqueThirdParties=Gesamtzahl der Geschäftspartner InActivity=aktiv @@ -475,9 +476,9 @@ MonkeyNumRefModelDesc=Gibt eine Zahl im Format %syymm-nnnn für den Kundencode u LeopardNumRefModelDesc=Kunden / Lieferanten-Code ist frei. Dieser Code kann jederzeit geändert werden. ManagingDirectors=Name(n) des/der Manager (CEO, Direktor, Geschäftsführer, ...) MergeOriginThirdparty=Geschäftspartner duplizieren (Geschäftspartner, den Sie löschen möchten) -MergeThirdparties=Partner zusammenlegen +MergeThirdparties=Geschäftspartner zusammenführen ConfirmMergeThirdparties=Sind Sie sicher, dass Sie den ausgewählten Geschäftspartner mit dem aktuellen zusammenführen möchten? \nAlle verknüpften Objekte (Rechnungen, Bestellungen, ...) werden zum aktuellen Geschäftspartner verschoben, danach wird der ausgewählte Geschäftspartner gelöscht. -ThirdpartiesMergeSuccess=Partner wurden zusammengelegt +ThirdpartiesMergeSuccess=Geschäftspartner wurden zusammenführt SaleRepresentativeLogin=Login des Vertriebsmitarbeiters SaleRepresentativeFirstname=Vorname des Vertreter SaleRepresentativeLastname=Nachname des Vertreter diff --git a/htdocs/langs/de_DE/errors.lang b/htdocs/langs/de_DE/errors.lang index 4e2848c6be9..fcf914761dd 100644 --- a/htdocs/langs/de_DE/errors.lang +++ b/htdocs/langs/de_DE/errors.lang @@ -59,7 +59,7 @@ ErrorFeatureNeedJavascript=Diese Funktion erfordert aktiviertes JavaScript. Sie ErrorTopMenuMustHaveAParentWithId0=Ein Menü vom Typ 'Top' kann kein Eltern-Menü sein. Setzen Sie 0 als Eltern-Menü oder wählen Sie ein Menü vom Typ 'Links'. ErrorLeftMenuMustHaveAParentId=Ein Menü vom Typ 'Links' erfordert einen Eltern-Menü ID. ErrorFileNotFound=Datei '%s' konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder der Zugriff wurde durch safemode- oder openbasedir-Parameter eingeschränkt) -ErrorDirNotFound=Verzeichnis %s konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder Zugriff durch safemode- oder openbasedir-Parameter eingeschränkte) +ErrorDirNotFound=Verzeichnis %s konnte nicht gefunden werden (Ungültiger Pfad, falsche Berechtigungen oder Zugriff durch safemode- oder openbasedir-Parameter eingeschränkt) ErrorFunctionNotAvailableInPHP=Die PHP-Funktion %s ist für diese Funktion erforderlich, in dieser PHP-Konfiguration jedoch nicht verfügbar. ErrorDirAlreadyExists=Ein Verzeichnis mit diesem Namen existiert bereits. ErrorFileAlreadyExists=Eine Datei mit diesem Namen existiert bereits. @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Diese Funktion erfordert aktiviertes JavaScript. Ak ErrorPasswordsMustMatch=Die eingegebenen Passwörter müssen identisch sein. ErrorContactEMail=Ein technischer Fehler ist aufgetreten. Bitte kontaktieren Sie Ihren Administrator unter der folgenden E-Mail-Adresse %s und fügen Sie den Fehlercode %s in Ihrer Nachricht ein, oder (noch besser) fügen Sie einen Screenshot dieser Seite als Anhang bei. ErrorWrongValueForField=Feld %s (Wert '%s' passt nicht zur Regex-Regel %s) +ErrorHtmlInjectionForField=Feld %s : Der Wert '%s' enthält schädliche Daten, die nicht erlaubt sind ErrorFieldValueNotIn=Feld %s: '%s' ist kein Wert in Feld %s von %s ErrorFieldRefNotIn=Das Feld %s : ' %s ' ist keine %s Referenz ErrorsOnXLines=%s Fehler gefunden @@ -108,7 +109,7 @@ ErrorMaxNumberReachForThisMask=Maximale Anzahl für diese Maske erreicht ErrorCounterMustHaveMoreThan3Digits=Zähler muss mehr als 3 Stellen haben ErrorSelectAtLeastOne=Fehler, bitte mindestens einen Eintrag wählen. ErrorDeleteNotPossibleLineIsConsolidated=Löschen nicht möglich, da der Datensatz mit einer Banktransaktion verbunden ist. -ErrorProdIdAlreadyExist=%s wurde bereits einem Partner zugewiesen +ErrorProdIdAlreadyExist=%s wurde bereits einem Geschäftspartner zugewiesen ErrorFailedToSendPassword=Fehler beim Zusenden des Passworts ErrorFailedToLoadRSSFile=RSS-Feeds welche Fehler erhalten. Versuchen Sie die Konstante 'MAIN_SIMPLEXMLLOAD_DEBUG' hinzufügen, wenn die Fehlermeldungen nicht genügend Informationen enthält. ErrorForbidden=Zugriff verweigert.
Sie haben versucht eine Seite, Bereich oder Funktion aufzurufen die deaktiviert ist oder sie haben keine Berechtigung dazu. @@ -150,10 +151,10 @@ ErrorDateMustBeInFuture=Das Datum muss älter sein als heute ErrorPaymentModeDefinedToWithoutSetup=Eine Zahlungsart wurde auf Typ %s gesetzt, aber das Rechnungsmodul wurde noch nicht konfiguriert dies anzuzeigen. ErrorPHPNeedModule=Fehler, Ihr PHP muss das Modul %s installiert haben um diese Option zu benutzen. ErrorOpenIDSetupNotComplete=Sie haben im Dolibarr Konfigurationsfile eingestellt, dass die Anmeldung mit OpenID möglich ist, aber die URL zum OpenID Service ist noch nicht in %s definiert. -ErrorWarehouseMustDiffers=Quell- und Ziel-Lager müssen unterschiedlich sein +ErrorWarehouseMustDiffers=Ursprungs- und Ziel-Lager müssen unterschiedlich sein ErrorBadFormat=Falsches Format! ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Fehler: Dieses Mitglied ist noch nicht mit einem Partner verbunden. Verknüpfen Sie das Mitglied zuerst mit einem vorhandenen Partner oder legen Sie einen neuen an, bevor Sie ein Abonnement mit Rechnung erstellen. -ErrorThereIsSomeDeliveries=Fehler: Es sind noch Auslieferungen zu diesen Versand vorhanden. Löschen deshalb nicht möglich. +ErrorThereIsSomeDeliveries=Fehler: Es sind noch Lieferungen zu diesen Versand vorhanden. Löschen deshalb nicht möglich. ErrorCantDeletePaymentReconciliated=Eine Zahlung, deren Bank-Transaktion schon abgeglichen wurde, kann nicht gelöscht werden ErrorCantDeletePaymentSharedWithPayedInvoice=Eine Zahlung, die zu mindestens einer als bezahlt markierten Rechnung gehört, kann nicht entfernt werden ErrorPriceExpression1=Zur Konstanten '%s' kann nicht zugewiesen werden @@ -203,9 +204,9 @@ ErrorStockIsNotEnoughToAddProductOnShipment=Nicht genug Bestand von Produkt %s, ErrorStockIsNotEnoughToAddProductOnProposal=Nicht genug Bestand von Produkt %s, um es einem neuen Angebot zuzufügen. ErrorFailedToLoadLoginFileForMode=Konnte Loginschlüssel für Modul '%s' nicht ermitteln. ErrorModuleNotFound=Datei des Modul nicht gefunden. -ErrorFieldAccountNotDefinedForBankLine=Buchhaltungskonto nicht definiert für Quellzeile %s(%s) -ErrorFieldAccountNotDefinedForInvoiceLine=Buchhaltungskonto für Rechnung %s (%s) ist undefiniert -ErrorFieldAccountNotDefinedForLine=Buchhaltungskonto nicht definiert für Zeile (%s) +ErrorFieldAccountNotDefinedForBankLine=Buchungskonto nicht definiert für Quell-Position %s(%s) +ErrorFieldAccountNotDefinedForInvoiceLine=Buchungskonto für Rechnung %s (%s) ist undefiniert +ErrorFieldAccountNotDefinedForLine=Buchungskonto nicht definiert für Position (%s) ErrorBankStatementNameMustFollowRegex=Fehler - Name des Kontoauszugs muss dieser Syntax folgen: %s ErrorPhpMailDelivery=Vergewissern Sie sich, dass Sie nicht zu viele Adressaten nutzen und der Inhalt Ihrer Mail nicht nach Spam aussieht. Bitten Sie Ihren Administrator, die Firewall- und Server-Logs zu prüfen, um detailliertere Informationen zu bekommen. ErrorUserNotAssignedToTask=Benutzer muss der Aufgabe zugeteilt sein, um Zeiten erfassen zu können. @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Sie müssen zuerst Ihren Kontenplan ein ErrorFailedToFindEmailTemplate=Vorlage mit Codename %s konnte nicht gefunden werden ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Die Dauer für die Leistung ist nicht definiert. Es besteht keine Möglichkeit, den Stundenpreis zu berechnen. ErrorActionCommPropertyUserowneridNotDefined=Der Besitzer des Benutzers ist erforderlich -ErrorActionCommBadType=Der ausgewählte Ereignistyp (ID: %n, Code: %s) ist im Wörterbuch für den Ereignistyp nicht vorhanden +ErrorActionCommBadType=Der ausgewählte Ereignistyp (ID: %s, Code: %s) existiert nicht im Verzeichnis für Ereignistypen CheckVersionFail=Versionsprüfung fehlgeschlagen ErrorWrongFileName=Der Dateiname darf nicht __SOMETHING__ enthalten ErrorNotInDictionaryPaymentConditions=Nicht im Dictionary der Zahlungsbedingungen, bitte ändern. @@ -285,18 +286,21 @@ ErrorPaymentInBothCurrency=Fehler, alle Beträge müssen in die gleiche Spalte e ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Sie versuchen Rechnungen in der Währung %s von einem Konto mit der Währung %s zu bezahlen ErrorInvoiceLoadThirdParty=Das Geschäftspartner-Objekt für Rechnung „%s“ kann nicht geladen werden ErrorInvoiceLoadThirdPartyKey=Geschäftspartner-Schlüssel "%s" ist für Rechnung "%s" nicht vorhanden -ErrorDeleteLineNotAllowedByObjectStatus=Das Löschen einer Zeile ist aufgrund des tatsächlichen Objektstatus nicht zulässig +ErrorDeleteLineNotAllowedByObjectStatus=Das Löschen von Einzelpositionen ist aufgrund des aktuellen Objektstatus nicht zulässig ErrorAjaxRequestFailed=Anfrage fehlgeschlagen +ErrorThirpdartyOrMemberidIsMandatory=Geschäftspartner oder Mitglied ist für die Partnerschaft verpflichtend +ErrorFailedToWriteInTempDirectory=Fehler beim Schreiben in das temporäre Verzeichnis +ErrorQuantityIsLimitedTo=Die Menge ist auf %s begrenzt # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ihr PHP Parameter upload_max_filesize (%s) ist größer als Parameter post_max_size (%s). Dies ist eine inkonsistente Einstellung. WarningPasswordSetWithNoAccount=Es wurde ein Passwort für dieses Mitglied vergeben, aber kein Benutzer erstellt. Das Passwort wird gespeichert, aber kann nicht für die Anmeldung an Dolibarr verwendet werden. Es kann von einem externen Modul/einer Schnittstelle verwendet werden, aber wenn Sie kein Login oder Passwort für dieses Mitglied definiert müssen, können Sie die Option "Login für jedes Mitglied verwalten" in den Mitgliedseinstellungen deaktivieren. Wenn Sie ein Login aber kein Passwort benötige, lassen Sie dieses Feld leer, um diese Meldung zu deaktivieren. Anmerkung: Die E-Mail-Adresse kann auch zur Anmeldung verwendet werden, wenn das Mitglied mit einem Benutzer verbunden wird. -WarningMandatorySetupNotComplete=Hier klicken, um obligatorische Einstellungen vorzunehmen +WarningMandatorySetupNotComplete=Hier klicken, um die Hauptparameter einzurichten WarningEnableYourModulesApplications=Hier klicken, um Module/Applikationen freizuschalten WarningSafeModeOnCheckExecDir=Achtung: Der PHP-Option safe_mode ist aktiviert, entsprechend müssen Befehle in einem mit safe_mode_exec_dir gekennzeichneten Verzeichnis ausgeführt werden. -WarningBookmarkAlreadyExists=Ein Favorit mit diesem Titel oder dieser Adresse existiert bereits. +WarningBookmarkAlreadyExists=Ein Favorit mit diesem Titel oder dieser Adresse (URL) existiert bereits. WarningPassIsEmpty=Warnung: Derzeit ist kein Datenbankpasswort gesetzt. Dies ist eine Sicherheitslücke. Konfigurieren Sie schnellstmöglich ein Passwort für den Datenbankzugriff und passen Sie Ihre conf.php entsprechend an. -WarningConfFileMustBeReadOnly=Achtung: Die Konfigurationsdatei (htdocs/conf/conf.php) kann von Ihrem Webserver überschrieben werden. Dies ist eine ernstzunehmende Sicherheitslücke. Ändern Sie den Zugriff schnellstmöglich auf reinen Lesezugriff. Wenn Sie Windows und das FAT-Format für Ihre Festplatte nutzen, seien Sie sich bitte bewusst dass dieses Format keine individuellen Dateiberechtigungen unterstützt und so auch nicht völlig sicher ist, +WarningConfFileMustBeReadOnly=Achtung: Die Konfigurationsdatei (htdocs/conf/conf.php) kann von Ihrem Webserver überschrieben werden. Dies ist eine ernstzunehmende Sicherheitslücke. Ändern Sie den Zugriff schnellstmöglich auf reinen Lesezugriff. Wenn Sie Windows und das FAT-Format für Ihre Festplatte nutzen, seien Sie sich bitte bewusst dass dieses Format keine individuellen Dateiberechtigungen unterstützt und so auch nicht völlig sicher ist. WarningsOnXLines=Warnhinweise in %s Quellzeilen WarningNoDocumentModelActivated=Für das Erstellen von Dokumenten ist keine Vorlage gewählt. Eine Standardvorlage wurde ausgewählt, bis Sie die Moduleinstellungen angepasst haben. WarningLockFileDoesNotExists=Achtung, nach Abschluss der Installation müssen Sie die Installations- und Migrationstools durch Hinzufügen der Datei install.lock im Verzeichnis %s deaktivieren. Die Nichterstellung dieser Datei stellt ein schwerwiegendes Sicherheitsrisiko dar. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Achtung, Sie können kein Unterkonto direkt erstellen. WarningAvailableOnlyForHTTPSServers=Nur verfügbar, wenn eine HTTPS-gesicherte Verbindung verwendet wird. WarningModuleXDisabledSoYouMayMissEventHere=Das Modul %s wurde nicht aktiviert. Sie können also eine Menge Veranstaltung hier verpassen. WarningPaypalPaymentNotCompatibleWithStrict=Der Wert 'Strict' führt dazu, dass die Online-Zahlungsfunktionen nicht richtig funktionieren. Verwenden Sie stattdessen 'Lax'. +WarningThemeForcedTo=Warnung, das Theme wurde durch die versteckte Konstante MAIN_FORCETHEME auf %s erzwungen -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> Branch '15.0' von git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Wert nicht gültig RequireAtLeastXString = Mindestlänge beträgt %s Zeichen @@ -347,12 +347,3 @@ BadSetupOfField = Fehler beim Setup des Feldes BadSetupOfFieldClassNotFoundForValidation = Fehler beim Setup des Feldes: Klasse für Validierung nicht gefunden BadSetupOfFieldFileNotFound = Fehler beim Setup des Feldes: einzubindende Datei nicht gefunden BadSetupOfFieldFetchNotCallable = Fehler beim Setup des Felds: Kann bei der Klasse nicht aufgerufen werden -<<<<<<< HEAD -======= -======= -======= ->>>>>>> Branch '15.0' von git@github.com:Dolibarr/dolibarr.git ->>>>>>> Branch '15.0' von git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> Branch '15.0' von git@github.com:Dolibarr/dolibarr.git ->>>>>>> Branch '15.0' von git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/de_DE/eventorganization.lang b/htdocs/langs/de_DE/eventorganization.lang index 44f758a99b1..be567b9d11a 100644 --- a/htdocs/langs/de_DE/eventorganization.lang +++ b/htdocs/langs/de_DE/eventorganization.lang @@ -26,7 +26,7 @@ EventOrganizationDescriptionLong= Verwalten Sie die Organisation einer Veranstal EventOrganizationMenuLeft = Veranstaltungen EventOrganizationConferenceOrBoothMenuLeft = Konferenzbeitrag oder Stand -PaymentEvent=Zahlung einer Veranstaltung +PaymentEvent=Zahlung für eine Veranstaltung # # Admin page @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Konferenzbeitrag oder Stand AmountPaid = Bezahlter Betrag DateOfRegistration = Datum der Anmeldung ConferenceOrBoothAttendee = Referent eines Konferenzbeitrags oder Standinhaber +ApplicantOrVisitor=Bewerber oder Besucher +Speaker=Referent # # Template Mail @@ -71,8 +73,8 @@ EventOrganizationEmailAskBooth = Anfrage für Stand EventOrganizationEmailBoothPayment = Bezahlung Ihres Standes EventOrganizationEmailRegistrationPayment = Anmeldung zu einer Veranstaltung EventOrganizationMassEmailAttendees = Kommunikation mit den Teilnehmern -EventOrganizationMassEmailSpeakers = Kommunikation mit den Sprechern -ToSpeakers=An Redner +EventOrganizationMassEmailSpeakers = Kommunikation mit den Referenten +ToSpeakers=An Referenten # # Event @@ -81,7 +83,7 @@ AllowUnknownPeopleSuggestConf=Personen erlauben, Konferenzbeiträge vorzuschlage AllowUnknownPeopleSuggestConfHelp=Unbekannten Personen erlauben, einen Konferenzbeitrag vorzuschlagen, den sie halten möchten AllowUnknownPeopleSuggestBooth=Personen erlauben, sich für einen Stand zu bewerben AllowUnknownPeopleSuggestBoothHelp=Unbekannten Personen erlauben, sich für einen Stand zu bewerben -PriceOfRegistration=Buchungskosten für die Teilnahme +PriceOfRegistration=Kosten für die Teilnahme PriceOfRegistrationHelp=Preis für die Anmeldung/Teilnahme an der Veranstaltung PriceOfBooth=Buchungskosten für einen Stand PriceOfBoothHelp=Buchungskosten für einen Stand @@ -90,7 +92,7 @@ ConferenceOrBoothInformation=Informationen zu Konferenzbeitrag oder Stand Attendees=Teilnehmer ListOfAttendeesOfEvent=Teilnehmerliste des Veranstaltungsprojekts DownloadICSLink = ICS-Link herunterladen -EVENTORGANIZATION_SECUREKEY = Seed, um den Schlüssel für die öffentliche Registrierungsseite zu sichern, die zum Vorschlagen eines Vortrags dient +EVENTORGANIZATION_SECUREKEY = Seed, um den Schlüssel für die öffentliche Registrierungsseite zu sichern, die zum Vorschlagen eines Konferenzbeitrags dient SERVICE_BOOTH_LOCATION = Leistung, die für die Rechnungsposition über einen Stand verwendet wird SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Leistung, die für die Rechnungsposition über eine Teilnahmebuchung einer Veranstaltung verwendet wird NbVotes=Anzahl der Stimmen @@ -120,7 +122,7 @@ ViewAndVote = Vorgeschlagene Veranstaltungen ansehen und abstimmen PublicAttendeeSubscriptionGlobalPage = Öffentlicher Link für die Anmeldung zur Veranstaltung PublicAttendeeSubscriptionPage = Öffentlicher Link für die Anmeldung nur zu dieser Veranstaltung MissingOrBadSecureKey = Der Sicherheitsschlüssel ist ungültig oder fehlt -EvntOrgWelcomeMessage = Mit diesem Formular können Sie sich als neuer Teilnehmer für die Veranstaltung anmelden: %s +EvntOrgWelcomeMessage = Mit diesem Formular können Sie sich als neuer Teilnehmer für die Veranstaltung anmelden: %s EvntOrgDuration = Diese Konferenz beginnt am %s und endet am %s. ConferenceAttendeeFee = Konferenzteilnehmergebühr für die Veranstaltung: '%s' vom %s bis %s. BoothLocationFee = Stand für die Veranstaltung: '%s' vom %s bis %s @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Ihre Zahlung für Ihre Veranst OrganizationEventBulkMailToAttendees=Dies ist eine Erinnerung, dass Sie Teilnehmer der Veranstaltung sind OrganizationEventBulkMailToSpeakers=Dies ist eine Erinnerung, dass Sie an der Veranstaltung als Referent teilnehmen OrganizationEventLinkToThirdParty=Verknüpfung mit Geschäftspartner (Kunde, Lieferant oder Partner) +OrganizationEvenLabelName=Öffentlicher Name des Konferenzbeitrags oder des Standes NewSuggestionOfBooth=Bewerbung für einen Stand NewSuggestionOfConference=Bewerbung für einen Konferenzbeitrag @@ -160,10 +163,10 @@ Attendee = Teilnehmer PaymentConferenceAttendee = Zahlung für Konferenzteilnehmer PaymentBoothLocation = Zahlung für einen Stand DeleteConferenceOrBoothAttendee=Teilnehmer entfernen -RegistrationAndPaymentWereAlreadyRecorder=Für die E-Mail-Adresse %s wurden bereits eine Anmeldung und eine Zahlung erfasst +RegistrationAndPaymentWereAlreadyRecorder=Für die E-Mail-Adresse %s wurden bereits eine Anmeldung und eine Zahlung erfasst EmailAttendee=Teilnehmer-E-Mail EmailCompanyForInvoice=Firmen-E-Mail (für Rechnung, falls abweichend von der Teilnehmer-E-Mail) ErrorSeveralCompaniesWithEmailContactUs=Es wurden mehrere Unternehmen mit dieser E-Mail-Adresse gefunden, sodass wir Ihre Registrierung nicht automatisch freigeben können. Bitte kontaktieren Sie uns unter %s für eine manuelle Freigabe -ErrorSeveralCompaniesWithNameContactUs=Es wurden mehrere Unternehmen mit diesem Namen gefunden, sodass wir Ihre Registrierung nicht automatisch freigeben können. Bitte kontaktieren Sie uns unter %s für eine manuelle Freigabe +ErrorSeveralCompaniesWithNameContactUs=Es wurden mehrere Unternehmen mit diesem Namen gefunden, so dass wir Ihre Registrierung nicht automatisch freigeben können. Bitte kontaktieren Sie uns unter %s für eine manuelle Freigabe NoPublicActionsAllowedForThisEvent=Für diese Veranstaltung sind keine Aktionen für die Öffentlichkeit zugänglich MaxNbOfAttendees=Maximale Teilnehmerzahl diff --git a/htdocs/langs/de_DE/externalsite.lang b/htdocs/langs/de_DE/externalsite.lang deleted file mode 100644 index 3c38524c7b8..00000000000 --- a/htdocs/langs/de_DE/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Konfigurations-Link auf externe Website -ExternalSiteURL=URL der externen Seite zur Einbettung in einen HTML-iframe -ExternalSiteModuleNotComplete=Modul ExternalSite wurde nicht richtig konfiguriert. -ExampleMyMenuEntry=Mein Menü-Eintrag diff --git a/htdocs/langs/de_DE/ftp.lang b/htdocs/langs/de_DE/ftp.lang deleted file mode 100644 index c60e50f9251..00000000000 --- a/htdocs/langs/de_DE/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Einrichtung des FTP- oder SFTP-Client-Moduls -NewFTPClient=Neue FTP / FTPS-Verbindungs-Konfiguration -FTPArea=FTP / FTPS-Bereich -FTPAreaDesc=Dieser Bildschirm zeigt eine Ansicht eines FTP- und SFTP-Servers. -SetupOfFTPClientModuleNotComplete=Die Konfiguration des FTP- oder SFTP-Client-Moduls scheint unvollständig zu sein -FTPFeatureNotSupportedByYourPHP=Ihr PHP unterstützt keine FTP- oder SFTP-Funktionen -FailedToConnectToFTPServer=Verbindung zum Server fehlgeschlagen (Server %s, Port %s) -FailedToConnectToFTPServerWithCredentials=Anmeldung am Server mit definiertem Login / Passwort fehlgeschlagen -FTPFailedToRemoveFile=Konnte Datei %s nicht entfernen. Überprüfen Sie die Berechtigungen. -FTPFailedToRemoveDir=Konnte Verzeichnis %s nicht entfernen. Überprüfen Sie die Berechtigungen und ob das Verzeichnis leer ist. -FTPPassiveMode=Passives FTP -ChooseAFTPEntryIntoMenu=Wählen Sie eine FTP / SFTP-Seite aus dem Menü ... -FailedToGetFile=Folgende Datei(en) konnte(n) nicht geladen werden: %s diff --git a/htdocs/langs/de_DE/holiday.lang b/htdocs/langs/de_DE/holiday.lang index 035056fc08b..9d33ee49f91 100644 --- a/htdocs/langs/de_DE/holiday.lang +++ b/htdocs/langs/de_DE/holiday.lang @@ -95,7 +95,7 @@ HolidaysCancelation=Urlaubsantrag stornieren EmployeeLastname=Mitarbeiter Nachname EmployeeFirstname=Mitarbeiter Vorname TypeWasDisabledOrRemoved=Urlaubstyp (ID %s) war deaktiviert oder entfernt -LastHolidays=Neuste %s Urlaubsanträge +LastHolidays=Letzte %s Urlaubsanträge AllHolidays=Alle Urlaubsanträge HalfDay=Halber Tag NotTheAssignedApprover=Sie sind nicht der zugeordnete Genehmiger diff --git a/htdocs/langs/de_DE/hrm.lang b/htdocs/langs/de_DE/hrm.lang index df0bf08c2b8..6dfa51139c0 100644 --- a/htdocs/langs/de_DE/hrm.lang +++ b/htdocs/langs/de_DE/hrm.lang @@ -12,12 +12,12 @@ OpenEtablishment=Einrichtung öffnen CloseEtablishment=Einrichtung schliessen # Dictionary DictionaryPublicHolidays=Urlaub - Feiertage -DictionaryDepartment=PV - Abteilungsliste +DictionaryDepartment=HRM - Organisationseinheit DictionaryFunction=HRM - Stellenangebote # Module Employees=Mitarbeiter Employee=Mitarbeiter/in -NewEmployee=neuer Mitarbeiter +NewEmployee=Neuer Mitarbeiter ListOfEmployees=Liste der Mitarbeiter HrmSetup=Personal Modul Einstellungen SkillsManagement=Kompetenzmanagement @@ -46,7 +46,7 @@ NewEval=Neue Bewertung ValidateEvaluation=Bewertung freigeben ConfirmValidateEvaluation=Möchten Sie diese Bewertung mit der Referenz %s wirklich freigeben? EvaluationCard=Bewertungskarte -RequiredRank=Erforderliche Qualifikationsstufe für diesen Job +RequiredRank=Erforderliche Qualifikationsstufe für diese Position EmployeeRank=Qualifikationsstufe des Mitarbeiters für diese Kompetenz EmployeePosition=Mitarbeiterposition EmployeePositions=Stellenübersicht @@ -65,14 +65,14 @@ MaxLevelLowerThanShort=Mitarbeiterniveau niedriger als in der Anforderung SkillNotAcquired=Kompetenz wurde nicht von allen Benutzern erworben, aber im Vergleiche angefragt legend=Legende TypeSkill=Art der Kompetenz -AddSkill=Kompetenzen zum Job hinzufügen -RequiredSkills=Erforderliche Kompetenzen für diesen Job -UserRank=Qualifikationsstufe des Nutzers +AddSkill=Kompetenzen zur Position hinzufügen +RequiredSkills=Erforderliche Kompetenzen für diese Position +UserRank=Qualifikationsstufe des Benutzers SkillList=Liste der Kompetenzen SaveRank=Qualifikationsstufe speichern -knowHow=Fachwissen -HowToBe=Wie ist es -knowledge=Wissen +TypeKnowHow=Fachwissen +TypeHowToBe=Wie ist es +TypeKnowledge=Wissen AbandonmentComment=Kommentar zur Beendigung DateLastEval=Datum letzte Bewertung NoEval=Keine Bewertung für diesen Mitarbeiter vorhanden @@ -88,3 +88,5 @@ DeleteSkill = Kompetenz entfernt SkillsExtraFields=Ergänzende Attribute (Kompetenzen) JobsExtraFields=Ergänzende Attribute (Mitarbeiter) EvaluationsExtraFields=Ergänzende Attribute (Beurteilungen) +NeedBusinessTravels=Geschäftsreisen erforderlich +NoDescription=Keine Beschreibung diff --git a/htdocs/langs/de_DE/install.lang b/htdocs/langs/de_DE/install.lang index 8182998d68c..f9278fec8d4 100644 --- a/htdocs/langs/de_DE/install.lang +++ b/htdocs/langs/de_DE/install.lang @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Sie haben einen falschen Wert für den Parameter '%s ErrorFailedToCreateDatabase=Fehler beim Erstellen der Datenbank '%s'. ErrorFailedToConnectToDatabase=Es konnte keine Verbindung zur Datenbank ' %s'. ErrorDatabaseVersionTooLow=Die Version ihrer Datenbank (%s) ist veraltet. Sie benötigen mindestens Version %s . -ErrorPHPVersionTooLow=Ihre PHP-Version ist veraltet. Sie benötigen mindestens Version %s . +ErrorPHPVersionTooLow=PHP-Version zu alt. Version %s oder höher ist erforderlich. +ErrorPHPVersionTooHigh=PHP-Version zu hoch. Version %s oder niedriger ist erforderlich. ErrorConnectedButDatabaseNotFound=Verbindung zum Server erfolgreich, jedoch konnte Datenbank '%s' nicht gefunden werden. ErrorDatabaseAlreadyExists=Eine Datenbank mit dem Namen '%s' existiert bereits. IfDatabaseNotExistsGoBackAndUncheckCreate=Sollte die Datenbank noch nicht existieren, gehen Sie bitte zurück und aktivieren Sie das Kontrollkästchen "Datenbank erstellen". diff --git a/htdocs/langs/de_DE/interventions.lang b/htdocs/langs/de_DE/interventions.lang index cd4ae3993c3..74d8993e3eb 100644 --- a/htdocs/langs/de_DE/interventions.lang +++ b/htdocs/langs/de_DE/interventions.lang @@ -42,15 +42,15 @@ DraftFichinter=Serviceaufträge im Entwurf LastModifiedInterventions=Zuletzt bearbeitete Serviceaufträge (maximal %s) FichinterToProcess=Zu bearbeitende Serviceaufträge TypeContact_fichinter_external_CUSTOMER=Kundenkontakt zur Weiterverfolgung -PrintProductsOnFichinter=Auch Produktzeilen (nicht nur Leistungen) auf dem Serviceauftragsdokument drucken +PrintProductsOnFichinter=Auch Positionen vom Typ "Produkt" (nicht nur Leistungen) auf dem Serviceauftrag ausgeben PrintProductsOnFichinterDetails=Aus Kundenaufträgen erstellte Serviceaufträge UseServicesDurationOnFichinter=Dauer der Leistung im Serviceauftrag aus dem Auftrag übernehmen -UseDurationOnFichinter=Feld 'Dauer' für Einsatzeinträge nicht anzeigen +UseDurationOnFichinter=Feld 'Dauer' für Einträge im Serviceauftrag nicht anzeigen UseDateWithoutHourOnFichinter=Stunden- und Minutenfelder beim Datum von Einsatzeinträgen nicht anzeigen InterventionStatistics=Statistik Serviceaufträge NbOfinterventions=Anzahl Dokumente für Serviceaufträge NumberOfInterventionsByMonth=Anzahl Dokumente für Serviceaufträge pro Monat (Freigabedatum) -AmountOfInteventionNotIncludedByDefault=Die Anzahl an Einsätzen ist normalerweise nicht im Umsatz enthalten. (In den meisten Fällen werden sie Einsatzstunden separat erfasst) Setzen Sie die globale Option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT auf 1 damit diese berücksichtigt werden. +AmountOfInteventionNotIncludedByDefault=Der Beitrag der Einsätze ist normalerweise nicht im Umsatz enthalten. (In den meisten Fällen werden die Einsatzstunden separat erfasst). Die globale Option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT auf 1 setzen, damit diese berücksichtigt werden. InterId=Serviceauftrag ID InterRef=Serviceauftrag Ref. InterDateCreation=Erstellungsdatum Serviceauftrag @@ -64,7 +64,7 @@ InterLineDuration=Serviceauftragsposition Dauer InterLineDesc=Serviceauftragsposition Beschreibung RepeatableIntervention=Vorlage für Serviceauftrag ToCreateAPredefinedIntervention=Für einen vordefinierten oder wiederkehrenden Serviceauftrag erstellen Sie zunächst einen gemeinsamen Serviceauftrag und konvertieren diesen anschließend in eine Vorlage -ConfirmReopenIntervention=Möchten Sie den Serviceauftrag %s wieder öffnen? +ConfirmReopenIntervention=Möchten Sie den Serviceauftrag %s wieder öffnen? GenerateInter=Serviceauftrag erstellen FichinterNoContractLinked=Der Serviceauftrag %s wurde ohne verknüpften Vertrag erstellt. ErrorFicheinterCompanyDoesNotExist=Unternehmen existiert nicht. Serviceauftrag wurde nicht erstellt. diff --git a/htdocs/langs/de_DE/knowledgemanagement.lang b/htdocs/langs/de_DE/knowledgemanagement.lang index feb2f9077ee..a816a87875e 100644 --- a/htdocs/langs/de_DE/knowledgemanagement.lang +++ b/htdocs/langs/de_DE/knowledgemanagement.lang @@ -45,10 +45,10 @@ ValidateReply = Lösung bestätigen KnowledgeRecords = Artikel KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Extrafelder für Artikel -GroupOfTicket=Ticket-Gruppe -YouCanLinkArticleToATicketCategory=Sie können einen Artikel mit einer Ticket-Gruppe verknüpfen (so wird der Artikel bei der Qualifizierung neuer Tickets vorgeschlagen) +GroupOfTicket=Ticket-Themengruppe +YouCanLinkArticleToATicketCategory=Sie können einen Artikel mit einer Ticket-Themengruppe verknüpfen (so wird auf den Artikel bei der Erfassung neuer Tickets hingewiesen) SuggestedForTicketsInGroup=Vorschlagen für Tickets der Gruppe SetObsolete=Als veraltet festlegen ConfirmCloseKM=Bestätigen Sie das Schließen dieses Artikels als veraltet? -ConfirmReopenKM=Möchten Sie diesen Artikel auf den Status "Validiert" zurücksetzen? +ConfirmReopenKM=Möchten Sie diesen Artikel auf den Status "freigegeben" zurücksetzen? diff --git a/htdocs/langs/de_DE/languages.lang b/htdocs/langs/de_DE/languages.lang index fc8916fc331..86cd6d0686a 100644 --- a/htdocs/langs/de_DE/languages.lang +++ b/htdocs/langs/de_DE/languages.lang @@ -13,6 +13,7 @@ Language_az_AZ=Aserbaidschanisch Language_bn_BD=Bengali Language_bn_IN=Bengali (Indien) Language_bg_BG=Bulgarisch +Language_bo_CN=Tibetisch Language_bs_BA=Bosnisch Language_ca_ES=Katalanisch Language_cs_CZ=Tschechisch @@ -39,6 +40,7 @@ Language_es_AR=Spanisch (Argentinien) Language_es_BO=Spanisch (Bolivien) Language_es_CL=Spanisch (Chile) Language_es_CO=Spanisch (Kolumbien) +Language_es_CR=Spanisch (Costa Rica) Language_es_DO=Spanisch (Dominikanische Republik) Language_es_EC=Spanish (Ecuador) Language_es_GT=Spanisch (Guatemala) @@ -93,6 +95,7 @@ Language_nl_BE=Niederländisch (Belgien) Language_nl_NL=Niederländisch Language_pl_PL=Polnisch Language_pt_AO=Portugiesisch (Angola) +Language_pt_MZ=Portugiesisch (Mosambik) Language_pt_BR=Portugiesisch (Brasilien) Language_pt_PT=Portugiesisch (Portugal) Language_ro_MD=Rumänisch (Moldavien) diff --git a/htdocs/langs/de_DE/loan.lang b/htdocs/langs/de_DE/loan.lang index 4e8e9a6bc03..2b5bd545473 100644 --- a/htdocs/langs/de_DE/loan.lang +++ b/htdocs/langs/de_DE/loan.lang @@ -18,13 +18,13 @@ ConfirmDeleteLoan=Bestätigen Sie das Löschen dieses Darlehens LoanDeleted=Darlehen erfolgreich gelöscht ConfirmPayLoan=Bestätigen Sie, das Darlehen als bezahlt zu klassifizieren LoanPaid=Darlehen bezahlt -ListLoanAssociatedProject=Liste der Darlehen, die dem Projekt zugeordnet sind +ListLoanAssociatedProject=Liste der mit dem Projekt verbundenen Darlehen AddLoan=Darlehen erstellen FinancialCommitment=Zahlungsplan InterestAmount=Zinsen CapitalRemain=Verbleibender Darlehensbetrag TermPaidAllreadyPaid = Diese Rate ist bereits bezahlt -CantUseScheduleWithLoanStartedToPaid = Der Scheduler kann nicht für ein Darlehen verwendet werden, bei dem bereits eine Zahlung erfolgt ist +CantUseScheduleWithLoanStartedToPaid = Es kann kein Zahlungsplan für ein Darlehen mit begonnener Zahlung erstellt werden CantModifyInterestIfScheduleIsUsed = Sie können die Zinsen nicht ändern, wenn Sie den Zahlungsplan verwenden. # Admin ConfigLoan=Konfiguration des Moduls Darlehen diff --git a/htdocs/langs/de_DE/mails.lang b/htdocs/langs/de_DE/mails.lang index 3db55a432a3..2ecaed7fd36 100644 --- a/htdocs/langs/de_DE/mails.lang +++ b/htdocs/langs/de_DE/mails.lang @@ -43,7 +43,7 @@ MailSuccessfulySent=E-Mail von %s an %s erfolgreich versendet MailingSuccessfullyValidated=E-Mail erfolgreich überprüft MailUnsubcribe=Abmelden MailingStatusNotContact=nicht mehr kontaktieren -MailingStatusReadAndUnsubscribe=nicht mehr kontaktieren +MailingStatusReadAndUnsubscribe=Nicht mehr kontaktieren (gelesen und abgemeldet) ErrorMailRecipientIsEmpty=Das Empfängerfeld ist leer WarningNoEMailsAdded=Keine neuen E-Mail-Adressen für das Hinzufügen zur Empfängerliste ConfirmValidMailing=Möchten Sie diese E-Mail-Kampagne wirklich freigeben? @@ -67,7 +67,7 @@ CloneReceivers=Empfängerliste duplizieren DateLastSend=Datum des letzten Versands DateSending=Versanddatum SentTo=Versendet an %s -MailingStatusRead=gelesen +MailingStatusRead=Gelesen YourMailUnsubcribeOK=Die E-Mail-Adresse %s wurde erfolgreich aus der Mailing-Liste ausgetragen. ActivateCheckReadKey=Schlüssel um die URL für die Funktion der versteckten Lesebestätigung und den "Abmelden"-Link zu generieren EMailSentToNRecipients=E-Mail an %s Empfänger gesendet @@ -128,7 +128,7 @@ NoEmailSentBadSenderOrRecipientEmail=Kein E-Mail gesendet. Ungültige Absender- # Module Notifications Notifications=Benachrichtigungen NotificationsAuto=E-Mail-Benachrichtigungen -NoNotificationsWillBeSent=Für diesen Ereignistyp und dieses Unternehmen sind keine automatischen E-Mail-Benachrichtigungen geplant +NoNotificationsWillBeSent=Für diesen Ereignistyp und dieses Unternehmen sind keine automatischen E-Mail-Benachrichtigungen aktiviert. ANotificationsWillBeSent=1 automatische Benachrichtigung wird per E-Mail gesendet SomeNotificationsWillBeSent=%s automatische Benachrichtigungen werden per E-Mail gesendet AddNewNotification=Abonnieren Sie eine neue automatische E-Mail-Benachrichtigung @@ -178,3 +178,4 @@ IsAnAnswer=Ist eine Antwort auf eine Initial-E-Mail RecordCreatedByEmailCollector=Datensatz, der vom E-Mail-Sammler %s aus der E-Mail %s erstellt wurde DefaultBlacklistMailingStatus=Standardwert für Feld '%s' beim Anlegen eines neuen Kontakts DefaultStatusEmptyMandatory=Leer aber erforderlich +WarningLimitSendByDay=WARNUNG: Die Konfiguration oder der Vertrag Ihrer Instanz begrenzt Ihre Anzahl von E-Mails pro Tag auf %s . Der Versuch mehr zu senden kann dazu führen, dass Ihre Instanz langsamer wird oder ausgesetzt wird. Bitte wenden Sie sich an Ihren Support, wenn Sie ein höheres Kontingent benötigen. diff --git a/htdocs/langs/de_DE/main.lang b/htdocs/langs/de_DE/main.lang index 6cedc718087..331d0bd8ef7 100644 --- a/htdocs/langs/de_DE/main.lang +++ b/htdocs/langs/de_DE/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -201,7 +207,7 @@ Disapprove=Abgelehnt ReOpen=Wiedereröffnen Upload=Upload ToLink=Link -Select=Wählen Sie +Select=Auswählen SelectAll=Alle wählen Choose=Wählen Resize=Skalieren @@ -236,7 +242,7 @@ MultiLanguage=Mehrsprachig Note=Hinweis Title=Bezeichnung Label=Bezeichnung -RefOrLabel=Nr. oder Bezeichnung +RefOrLabel=Ref. oder Bezeichnung Info=Protokoll Family=Kategorie/Gruppe Description=Beschreibung @@ -281,7 +287,7 @@ DateModification=Änderungsdatum DateModificationShort=Änderungsdatum IPModification=Änderungs-IP DateLastModification=Datum letzte Änderung -DateValidation=Freigabedatum +DateValidation=Festschreibungsdatum DateSigning=Unterzeichnungsdatum DateClosing=Schließungsdatum DateDue=Fälligkeitsdatum @@ -293,7 +299,7 @@ DateLimit=Frist DateRequest=Anfragedatum DateProcess=Verarbeite Datum DateBuild=Datum der Berichterstellung -DatePayment=Zahlungsziel +DatePayment=Zahlungsdatum DateApprove=Genehmigungsdatum DateApprove2=Genehmigungsdatum (zweite Genehmigung) RegistrationDate=Registrierungsdatum @@ -345,7 +351,7 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Angelegt von +UserAuthor=Erstellt durch UserModif=Geändert von b=b. Kb=Kb @@ -364,9 +370,9 @@ UnitPrice=Stückpreis UnitPriceHT=Stückpreis (netto) UnitPriceHTCurrency=Stückpreis (netto) (Währung) UnitPriceTTC=Stückpreis (brutto) -PriceU=Stückpr. -PriceUHT=Stückpr. (netto) -PriceUHTCurrency=Stückpr. (netto) (Währung) +PriceU=Einzelpr. +PriceUHT=Einzelpr. (netto) +PriceUHTCurrency=Einzelpr. (netto) (Währung) PriceUTTC=Einzelpr. (inkl. St.) Amount=Betrag AmountInvoice=Rechnungsbetrag @@ -455,7 +461,7 @@ OtherStatistics=Weitere Statistiken Status=Status Favorite=Favorit ShortInfo=Info. -Ref=Ref. +Ref=Ref.Nr. ExternalRef=Externe-ID RefSupplier=Lieferanten-Zeichen RefPayment=Zahlungsref.-Nr. @@ -474,8 +480,8 @@ LatestLinkedEvents=Zuletzt verknüpfte Ereignisse (maximal %s) CompanyFoundation=Firma oder Institution Accountant=Buchhalter ContactsForCompany=Ansprechpartner/Adressen dieses Partners -ContactsAddressesForCompany=Ansprechpartner / Adressen zu diesem Partner -AddressesForCompany=Anschriften zu diesem Partner +ContactsAddressesForCompany=Ansprechpartner/Adressen zu diesem Geschäftspartner +AddressesForCompany=Anschriften dieses Geschäftspartners ActionsOnCompany=Ereignisse zu diesem Geschäftspartner ActionsOnContact=Termine / Ereignisse für diesen Kontakt ActionsOnContract=Ereignisse zu diesem Kontakt @@ -506,11 +512,11 @@ Categories=Kategorien Category=Suchwort/Kategorie By=Durch From=Von -FromDate=von +FromDate=Von FromLocation=von to=An To=An -ToDate=An +ToDate=bis ToLocation=An at=beim and=und @@ -534,7 +540,7 @@ Draft=Entwurf Drafts=Entwürfe StatusInterInvoiced=Berechnet Validated=Freigegeben -ValidatedToProduce=Validiert (zu produzieren) +ValidatedToProduce=Freigegeben (zu produzieren) Opened=Offen OpenAll=Öffnen (Alle) ClosedAll=Schließen (Alle) @@ -548,7 +554,7 @@ Received=Erhalten Paid=Bezahlt Topic=Betreff ByCompanies=Nach Geschäftspartnern -ByUsers=Durch Benutzer +ByUsers=Nach Benutzern Links=Links Link=Link Rejects=Ablehnungen @@ -643,7 +649,7 @@ Example=Beispiel Examples=Beispiele NoExample=Kein Beispiel FindBug=Fehler melden -NbOfThirdParties=Anzahl der Partner +NbOfThirdParties=Anzahl der Geschäftspartner NbOfLines=Anzahl der Positionen NbOfObjects=Anzahl der Objekte NbOfObjectReferers=Anzahl der verknüpften Einträge @@ -682,7 +688,7 @@ CloseWindow=Fenster schließen Response=Antwort Priority=Priorität SendByMail=Per E-Mail versenden -MailSentBy=E-Mail Absender +MailSentBy=E-Mail gesendet von NotSent=nicht gesendet TextUsedInTheMessageBody=E-Mail Text SendAcknowledgementByMail=Bestätigungsmail senden @@ -710,8 +716,9 @@ RecordsGenerated=%s Datensätze generiert AutomaticCode=Automatischer Code FeatureDisabled=Funktion deaktiviert MoveBox=Widget verschieben -Offered=angeboten +Offered=Option NotEnoughPermissions=Ihre Berechtigungen reichen hierfür nicht aus +UserNotInHierachy=Diese Aktion ist den übergeordneten Mitarbeitern dieses Benutzers vorbehalten SessionName=Sitzungsname Method=Methode Receive=Erhalten @@ -763,7 +770,7 @@ FreeLineOfType=Freitextelement, Typ: CloneMainAttributes=Objekt mit Haupteigenschaften duplizieren ReGeneratePDF=PDF neu erstellen PDFMerge=PDFs verbinden -Merge=Verbinden +Merge=Zusammenführen DocumentModelStandardPDF=Standard PDF Vorlage PrintContentArea=Zeige Druckansicht für Seiteninhalt MenuManager=Menüverwaltung @@ -861,7 +868,7 @@ ShowIntervention=Zeige Serviceauftrag ShowContract=Zeige Vertrag GoIntoSetupToChangeLogo=Gehen Sie zu Start - Einstellungen - Firma/Stiftung um das Logo zu ändern oder gehen Sie in Start -> Einstellungen -> Anzeige um es zu verstecken. Deny=ablehnen -Denied=abgelehnt +Denied=Abgelehnt ListOf=Liste von %s ListOfTemplates=Liste der Vorlagen Gender=Geschlecht @@ -951,8 +958,8 @@ NewLeadOrProject=Neues Projekt / Neuer Lead Rights=Berechtigungen LineNb=Zeilennummer IncotermLabel=Incoterms -TabLetteringCustomer=Kundenbeschriftung -TabLetteringSupplier=Lieferantenbeschriftung +TabLetteringCustomer=Kontenabgleich Kunden +TabLetteringSupplier=Kontenabgleich Lieferanten Monday=Montag Tuesday=Dienstag Wednesday=Mittwoch @@ -1014,7 +1021,7 @@ million=Million billion=Milliarde trillion=Billion quadrillion=Billiarde -SelectMailModel=Wähle E-Mail-Vorlage +SelectMailModel=E-Mail-Vorlage wählen SetRef=Set Ref Select2ResultFoundUseArrows=Einige Ergebnisse gefunden. Nutzen Sie die Pfeiltasten um auszuwählen. Select2NotFound=Kein Ergebnis gefunden @@ -1029,7 +1036,7 @@ SearchIntoContacts=Kontakte SearchIntoMembers=Mitglieder SearchIntoUsers=Benutzer SearchIntoProductsOrServices=Produkte oder Leistungen -SearchIntoBatch=Charge / Seriennr. +SearchIntoBatch=Charge/Seriennr. SearchIntoProjects=Projekte SearchIntoMO=Fertigungsaufträge SearchIntoTasks=Aufgaben @@ -1084,7 +1091,7 @@ ToClose=Zu schließen ToRefuse=Ablehnen ToProcess=Zu bearbeiten ToApprove=Zu genehmigen -GlobalOpenedElemView=Globale Ansicht +GlobalOpenedElemView=Globaler Status NoArticlesFoundForTheKeyword=Kein Artikel zu Schlüssselwort gefunden '%s' NoArticlesFoundForTheCategory=Kein Artikel für Kategorie gefunden ToAcceptRefuse=Zu akzeptieren | abzulehnen @@ -1161,7 +1168,7 @@ ConfirmMassLeaveApproval=Bestätigung der Massen-Urlaubsgenehmigung RecordAproved=Datensatz freigegeben RecordsApproved=%s Datensatz(e) freigegeben Properties=Eigenschaften -hasBeenValidated=%s wurde validiert +hasBeenValidated=%s wurde freigegeben ClientTZ=Zeitzone Kunde (Benutzer) NotClosedYet=Noch nicht geschlossen ClearSignature=Unterschrift löschen @@ -1177,3 +1184,6 @@ CommercialAffected=Betroffene Vertriebsmitarbeiter YourMessage=Ihre Nachricht YourMessageHasBeenReceived=Ihre Nachricht wurde erfasst. Wir werden Ihnen so schnell wie möglich antworten. UrlToCheck=Zu überprüfende URL +Automation=Automatisierung +CreatedByEmailCollector=Erstellt durch E-Mail-Collector +CreatedByPublicPortal=Erstellt aus dem öffentlichen Portal diff --git a/htdocs/langs/de_DE/members.lang b/htdocs/langs/de_DE/members.lang index 4689999d5d5..6c2cbf4a389 100644 --- a/htdocs/langs/de_DE/members.lang +++ b/htdocs/langs/de_DE/members.lang @@ -35,15 +35,16 @@ DateEndSubscription=Enddatum der Mitgliedschaft EndSubscription=Ende der Mitgliedschaft SubscriptionId=Beitrags-ID WithoutSubscription=Ohne Mitgliedsbeitrag -MemberId=Mitglied-ID +MemberId=Mitglieds-Id +MemberRef=Mitglieds-Ref. NewMember=Neues Mitglied -MemberType=Mitgliedsart -MemberTypeId=Mitgliedsart-ID -MemberTypeLabel=Bezeichnung der Mitgliedsart -MembersTypes=Mitgliedsarten +MemberType=Mitgliedschaftstyp +MemberTypeId=Mitgliedschaftstyp-ID +MemberTypeLabel=Bezeichnung des Mitgliedschaftstyps +MembersTypes=Mitgliedschaftstypen MemberStatusDraft=Entwurf (muss noch überprüft werden) MemberStatusDraftShort=Entwurf -MemberStatusActive=Validiert (warten auf Beitragszahlung) +MemberStatusActive=Freigegeben (warten auf Beitragszahlung) MemberStatusActiveShort=Bestätigt MemberStatusActiveLate=Mitgliedsbeitrag fällig MemberStatusActiveLateShort=Abgelaufen @@ -56,29 +57,29 @@ MemberStatusResiliatedShort=Deaktiviert MembersStatusToValid=Freizugebende Mitglieder MembersStatusExcluded=Ausgeschlossene Mitglieder MembersStatusResiliated=Deaktivierte Mitglieder -MemberStatusNoSubscription=Validiert (kein Mitgliedsbeitrag) +MemberStatusNoSubscription=Freigegeben (kein Mitgliedsbeitrag erforderlich) MemberStatusNoSubscriptionShort=Freigegeben SubscriptionNotNeeded=Kein Mitgliedsbeitrag erforderlich NewCotisation=Neuer Beitrag PaymentSubscription=Neue Beitragszahlung SubscriptionEndDate=Ablaufdatum Beitragszahlung -MembersTypeSetup=Mitgliedsarten einrichten -MemberTypeModified=Mitgliedstyp geändert -DeleteAMemberType=Löschen Sie einen Mitgliedstyp -ConfirmDeleteMemberType=Möchten Sie diesen Mitgliedstyp wirklich löschen? -MemberTypeDeleted=Mitgliedstyp gelöscht -MemberTypeCanNotBeDeleted=Mitgliedstyp kann nicht gelöscht werden -NewSubscription=Neuer Beitrag +MembersTypeSetup=Mitgliedschaftstypen einrichten +MemberTypeModified=Mitgliedschaftstyp geändert +DeleteAMemberType=Mitgliedschaftstyp löschen +ConfirmDeleteMemberType=Möchten Sie diesen Mitgliedschaftstyp wirklich löschen? +MemberTypeDeleted=Mitgliedschaftstyp gelöscht +MemberTypeCanNotBeDeleted=Mitgliedschaftstyp kann nicht gelöscht werden +NewSubscription=Neuer Mitgliedsbeitrag NewSubscriptionDesc=Hier können Sie Ihre Mitgliedschaft beantragen und den Beitrag als neues Mitglied festlegen.\nWenn Sie bereits Mitglied sind und eine Beitragszahlung erneuern möchten, kontaktieren Sie uns bitte per E-Mail %s. Subscription=Mitgliedsbeitrag Subscriptions=Mitgliedsbeiträge SubscriptionLate=Verspätet -SubscriptionNotReceived=Beitragszahlung nie erhalten -ListOfSubscriptions=Liste der Beitragszahlungen +SubscriptionNotReceived=Mitgliedsbeitrag nie erhalten +ListOfSubscriptions=Liste der Mitgliedsbeiträge SendCardByMail=Karte per E-Mail versenden AddMember=Mitglied erstellen -NoTypeDefinedGoToSetup=Sie haben noch keine Mitgliedsart definiert.\nSie können dies im linken Menü mit Hilfe des Eintrags Mitgliedsarten --> Neu tun. -NewMemberType=Neue Mitgliedsart +NoTypeDefinedGoToSetup=Sie haben noch keine Mitgliedschaftstyp definiert.\nSie können dies im linken Menü mit Hilfe des Eintrags Mitgliedschaftstypen --> Neu tun. +NewMemberType=Neuer Mitgliedschaftstyp WelcomeEMail=Willkommen per E-Mail SubscriptionRequired=Mitgliedsbeitrag erforderlich DeleteType=Löschen @@ -104,7 +105,7 @@ PublicMemberList=Liste öffentlicher Mitglieder BlankSubscriptionForm=Öffentliches Erfassungsformular BlankSubscriptionFormDesc=Dolibarr kann ihnen eine öffentliche URL/Website zur Verfügung stellen, die es externen Besuchern erlaubt, einen Beitrag zu entrichten. Wenn ein Online-Zahlungsmodul aktiviert ist, kann auch automatisch ein Zahlungsformular bereitgestellt werden. EnablePublicSubscriptionForm=Aktivieren der öffentlichen Webseite mit dem Formular für die Beitragshöhenerklärung (Mitgliedsantrag). -ForceMemberType=Mitgliedsart erzwingen +ForceMemberType=Mitgliedschaftstyp erzwingen ExportDataset_member_1=Mitglieder und Beitragszahlungen ImportDataset_member_1=Mitglieder LastMembersModified=Zuletzt bearbeitete Mitglieder (maximal %s) @@ -171,7 +172,7 @@ DocForLabels=Etiketten erstellen (Gewähltes Ausgabeformat: %s) SubscriptionPayment=Beitragszahlung LastSubscriptionDate=Datum der letzten Beitragszahlung LastSubscriptionAmount=Höhe der letzten Beitragszahlung -LastMemberType=Letzter Mitgliedstyp +LastMemberType=Letzter Mitgliedschaftstyp MembersStatisticsByCountries=Mitgliederstatistik nach Staaten MembersStatisticsByState=Mitgliederstatistik nach Bundesländern/Provinzen/Kantonen MembersStatisticsByTown=Mitgliederstatistik nach Städten @@ -189,7 +190,7 @@ MenuMembersStats=Statistik LastMemberDate=Spätestes Mitgliedschaftsdatum LatestSubscriptionDate=Datum der letzten Beitragszahlung MemberNature=Art des Mitglieds -MembersNature=Art der Mitglieder +MembersNature=Mitgliedsart Public=Informationen sind öffentlich NewMemberbyWeb=Neues Mitglied hinzugefügt, wartet auf Genehmigung. NewMemberForm=Formular neues Mitglied diff --git a/htdocs/langs/de_DE/modulebuilder.lang b/htdocs/langs/de_DE/modulebuilder.lang index 416a9120606..f4ea8214838 100644 --- a/htdocs/langs/de_DE/modulebuilder.lang +++ b/htdocs/langs/de_DE/modulebuilder.lang @@ -28,13 +28,13 @@ EnterNameOfModuleToDeleteDesc=Sie können Ihr Modul löschen. WARNUNG: Alle Code EnterNameOfObjectToDeleteDesc=Sie können ein Objekt löschen. WARNUNG: Alle Codedateien (generiert oder manuell erstellt), die sich auf das Objekt beziehen, werden gelöscht! DangerZone=Gefahrenzone BuildPackage=Paket erstellen -BuildPackageDesc=Sie können ein Zip-Paket Ihrer Anwendung erstellen, um es auf Dolibarr-Installationen verteilen können. Sie können es auch auf einem Marktplatz wie DoliStore.com verteilen oder verkaufen. +BuildPackageDesc=Sie können ein Zip-Paket Ihrer Anwendung erstellen, um es auf jede Dolibarr-Installation verteilen zu können. Sie können es auch über einem Marktplatz wie DoliStore.com kostenlos verbreiten oder verkaufen. BuildDocumentation=Dokumentation erstellen ModuleIsNotActive=Dieses Modul ist noch nicht aktiviert. Gehe zu %s zum aktivieren oder klicke hier ModuleIsLive=Dieses Modul wurde aktiviert. Jede Änderung kann aktuelle Live-Funktionen beeinträchtigen. DescriptionLong=Lange Beschreibung EditorName=Name des Erstellers -EditorUrl=URL des Editors +EditorUrl=URL des Erstellers DescriptorFile=Deskriptordatei des Moduls ClassFile=Datei für die PHP DAO CRUD-Klasse ApiClassFile=File for PHP API class @@ -77,7 +77,7 @@ SqlFileKey=SQL Datei für Schlüsselwerte SqlFileKeyExtraFields=SQL-Datei für die Schlüssel der Extrafields AnObjectAlreadyExistWithThisNameAndDiffCase=Es existiert bereits ein Objekt mit diesem Namen und einer anderen Groß-/Kleinschreibung UseAsciiDocFormat=Sie können das Markdown-Format verwenden, empfohlen wird jedoch, das Asciidoc-Format zu verwenden (Vergleich zwischen .md und .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) -IsAMeasure=Ist eine Maßnahme +IsAMeasure=Ist ein Maß (addierbar) DirScanned=Verzeichnis gescannt NoTrigger=Kein Trigger NoWidget=Kein Widget @@ -88,7 +88,7 @@ ListOfPermissionsDefined=Liste der definierten Berechtigungen SeeExamples=Siehe Beispiele EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) VisibleDesc=Ist das Feld sichtbar? (Beispiele: 0 = Nie sichtbar, 1 = Auf Liste sichtbar und Formulare erstellen / aktualisieren / anzeigen, 2 = Nur auf Liste sichtbar, 3 = Nur auf Formular erstellen / aktualisieren / anzeigen (nicht Liste), 4 = Auf Liste sichtbar und nur sichtbar bei Formular aktualisieren / anzeigen (nicht erstellen), 5 = Nur im Formular für die Listenendansicht sichtbar (nicht erstellen, nicht aktualisieren).

Wenn ein negativer Wert verwendet wird, wird das Feld standardmäßig nicht in der Liste angezeigt, kann jedoch zur Anzeige ausgewählt werden.)

Es kann sich um einen Ausdruck handeln, z. B.:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) -DisplayOnPdfDesc=Zeigt dieses Feld in kompatiblen PDF-Dokumenten an. Sie können die Anzeigeposition über das Feld "Position" beeinflussen.
Derzeit bekannte kompatible PDF-Modelle sind: eratosthene (Bestellung), espadon (Lieferung), sponge (Rechnung), cyan (Angebot), cornas (Lieferantenauftrag)

Für Dokument:
0 = nicht anzeigen
1 = anzeigen
2 = anzeigen, wenn nicht leer

Für Belegzeilen:
0 = nicht anzeigen
1 = in Spalte anzeigen
3 = in Beschreibungszeile nach der Beschreibung anzeigen
4 = nur falls nicht leer: in Beschreibungszeile nach der Beschreibung anzeigen +DisplayOnPdfDesc=Zeigt dieses Feld in kompatiblen PDF-Dokumenten an. Sie können die Anzeigeposition über das Feld "Position" beeinflussen.
Derzeit bekannte kompatible PDF-Modelle sind: eratosthene (Bestellung), espadon (Lieferung), sponge (Rechnung), cyan (Angebot), cornas (Lieferantenauftrag)

Für Dokument:
0 = nicht anzeigen
1 = anzeigen
2 = anzeigen, wenn nicht leer

Für Einzelpositionen:
0 = nicht anzeigen
1 = in Spalte anzeigen
3 = in Beschreibungszeile nach der Beschreibung anzeigen
4 = nur falls nicht leer: in Beschreibungszeile nach der Beschreibung anzeigen DisplayOnPdf=Anzeige im PDF IsAMeasureDesc=Kann der Wert des Feldes kumuliert werden, um eine Summe in die Liste aufzunehmen? (Beispiele: 1 oder 0) SearchAllDesc=Wird das Feld verwendet, um eine Suche über das Schnellsuchwerkzeug durchzuführen? (Beispiele: 1 oder 0) @@ -153,3 +153,4 @@ LinkToParentMenu=Übergeordnetes Menü (fk_xxxxmenu) ListOfTabsEntries=Liste der Registerkarteneinträge/Tab-Einträge TabsDefDesc=Definieren Sie hier die von Ihrem Modul bereitgestellten Registerkarten/Tabs TabsDefDescTooltip=Die von Ihrem Modul/Ihrer Anwendung bereitgestellten Registerkarten/Tabs sind im Array $this->tabs in der Moduldeskriptordatei definiert. Sie können diese Datei manuell bearbeiten oder den eingebetteten Editor verwenden. +BadValueForType=Ungültiger Wert für Typ %s diff --git a/htdocs/langs/de_DE/oauth.lang b/htdocs/langs/de_DE/oauth.lang index 9610bdda3a1..1c235015ddb 100644 --- a/htdocs/langs/de_DE/oauth.lang +++ b/htdocs/langs/de_DE/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Ein Token wurde erstellt und in der lokalen Datenbank gespeichert NewTokenStored=Token empfangen und gespeichert ToCheckDeleteTokenOnProvider=Klicke hier um prüfen/entfernen Authentifizierung gespeichert durch den OAuth Anbieter %s TokenDeleted=Token gelöscht -RequestAccess=Hier klicken, um Zugang anzufordern/verlängern und neue Token zu speichern +RequestAccess=Klicken Sie hier, um den Zugriff anzufordern/zu erneuern und ein neues Token zu erhalten DeleteAccess=Hier klicken, um das Token zu löschen UseTheFollowingUrlAsRedirectURI=Verwenden Sie die folgende URL als Redirect-URI, wenn Sie Ihre Anmeldeinformationen bei Ihrem OAuth-Anbieter erstellen: -ListOfSupportedOauthProviders=Geben Sie die Anmeldeinformationen ein, die Sie von Ihrem OAuth2-Anbieter erhalten haben. Hier werden nur unterstützte OAuth2-Anbieter aufgelistet. Diese Dienste können von anderen Modulen verwendet werden, die eine OAuth2-Authentifizierung benötigen. -OAuthSetupForLogin=Seite um ein OAuth-Token zu erzeugen +ListOfSupportedOauthProviders=Fügen Sie Ihre OAuth2-Tokenanbieter hinzu. Gehen Sie dann auf die Verwaltungsseite Ihres OAuth-Anbieters, um eine OAuth-ID und ein Geheimnis zu erstellen/abzurufen und speichern Sie sie hier. Wenn Sie fertig sind, wechseln Sie auf die andere Registerkarte, um Ihr Token zu generieren. +OAuthSetupForLogin=Seite zum Verwalten (Erstellen/Löschen) von OAuth-Tokens SeePreviousTab=Siehe vorherigen Registerkarte +OAuthProvider=OAuth-Anbieter OAuthIDSecret=OAuth-ID und Secret TOKEN_REFRESH=Aktualisierung des Tokens vorhanden TOKEN_EXPIRED=Token abgelaufen @@ -23,10 +24,13 @@ TOKEN_DELETE=Lösche gespeichertes Token OAUTH_GOOGLE_NAME=OAuth Google-Dienst OAUTH_GOOGLE_ID=OAuth Google-ID OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Wechseln Sie zu dieser Seite und dann zu "Anmeldeinformationen", um OAuth-Anmeldeinformationen zu erstellen OAUTH_GITHUB_NAME=OAuth GitHub-Dienst OAUTH_GITHUB_ID=OAuth GitHub-ID OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Gehen Sie auf diese Seite und dann auf „Eine neue Anwendung registrieren“, um OAuth-Anmeldeinformationen zu erstellen +OAUTH_URL_FOR_CREDENTIAL=Gehen Sie zu dieser Seite, um Ihre OAuth-ID und Ihr Geheimnis zu erstellen oder abzurufen OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth-ID +OAUTH_SECRET=OAuth-Geheimnis +OAuthProviderAdded=OAuth-Anbieter hinzugefügt +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ein OAuth-Eintrag für diesen Anbieter und dieses Label ist bereits vorhanden diff --git a/htdocs/langs/de_DE/orders.lang b/htdocs/langs/de_DE/orders.lang index 53633e9afe0..7fa65acad2f 100644 --- a/htdocs/langs/de_DE/orders.lang +++ b/htdocs/langs/de_DE/orders.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=Mit diesem Angebot war bereits eine offener Auftrag verknüpft, so dass keine weiterer Auftrag automatisch erstellt wurde OrdersArea=Übersicht Kundenaufträge SuppliersOrdersArea=Übersicht Lieferantenbestellungen -OrderCard=Bestellung – Übersicht +OrderCard=Auftrag – Übersicht OrderId=Bestell-ID Order=Kundenauftrag PdfOrderTitle=Auftragsbestätigung @@ -62,9 +63,9 @@ QtyOrdered=Bestellmenge ProductQtyInDraft=Produktmenge in Bestellentwurf ProductQtyInDraftOrWaitingApproved=Produktmenge in Bestellentwurf oder Bestellung benötigt Genehmigung, noch nicht bestellt MenuOrdersToBill=Bestellverrechnung -MenuOrdersToBill2=abrechenbare Aufträge +MenuOrdersToBill2=Abrechenbare Aufträge ShipProduct=Produkt versenden -CreateOrder=Bestellung erstellen +CreateOrder=Auftrag erstellen RefuseOrder=Bestellung ablehnen ApproveOrder=Bestellung genehmigen Approve2Order=Genehmige Bestellung (2. Bestätigung) @@ -128,8 +129,8 @@ SupplierOrderReceivedInDolibarr=Lieferantenbestellung %s erhalten %s SupplierOrderSubmitedInDolibarr=Lieferantenbestellung %s versendet SupplierOrderClassifiedBilled=Bestellung %s als verrechnet markieren OtherOrders=zeige weitere Bestellungen dieses Partners -SupplierOrderValidatedAndApproved=Die Lieferantenbestellung ist validiert und genehmigt: %s -SupplierOrderValidated=Lieferantenbestellung ist validiert: %s +SupplierOrderValidatedAndApproved=Die Lieferantenbestellung ist freigegeben und genehmigt: %s +SupplierOrderValidated=Lieferantenbestellung ist freigegeben: %s ##### Types de contacts ##### TypeContact_commande_internal_SALESREPFOLL=Kundenauftrag-Nachbetreuung durch Vertreter TypeContact_commande_internal_SHIPPING=Versand-Nachbetreuung durch Vertreter diff --git a/htdocs/langs/de_DE/other.lang b/htdocs/langs/de_DE/other.lang index 2b3ca4c7bc3..cd376581467 100644 --- a/htdocs/langs/de_DE/other.lang +++ b/htdocs/langs/de_DE/other.lang @@ -24,7 +24,7 @@ MessageOK=Nachricht auf der Rückseite für eine bestätigte Zahlung MessageKO=Nachrichtenseite für stornierte Zahlung ContentOfDirectoryIsNotEmpty=Dieses Verzeichnis ist nicht leer. DeleteAlsoContentRecursively=Markieren, um alle Inhalte rekursiv zu löschen -PoweredBy=Unterstützt von +PoweredBy=Powered by YearOfInvoice=Jahr der Rechnung PreviousYearOfInvoice=Vorangehendes Jahr des Rechnungsdatums NextYearOfInvoice=Folgendes Jahr des Rechnungsdatums @@ -234,7 +234,7 @@ ImageEditor=Bildbearbeitung YouReceiveMailBecauseOfNotification=Sie erhalten diese Nachricht, weil Sie ein aktives Abonnement für das nachfolgende Ereignis bei %s / %s haben. YouReceiveMailBecauseOfNotification2=\n\nEreignis: ThisIsListOfModules=Dies ist eine Liste von ausgewählten Modulen für die Demo (nur die gängigsten Module sind enthalten). Bearbeiten Sie die Auswahl und eine personalisierte Demo zu erhalten und klicken dann bitte auf "Start". -UseAdvancedPerms=Verwenden Sie die erweiterten Berechtigungen einiger Module +UseAdvancedPerms=Erweiterte Berechtigungen einiger Module verwenden FileFormat=Dateiformat SelectAColor=Farbe wählen AddFiles=Dateien hinzufügen @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Sind Sie sicher, dass Sie "%s" möchten? ConfirmBtnCommonTitle = Aktion bestätigen CloseDialog = schließen Autofill = Automatisches Ausfüllen + +# externalsite +ExternalSiteSetup=Konfigurations-Link auf externe Website +ExternalSiteURL=URL der externen Seite zur Einbettung in einen HTML-iframe +ExternalSiteModuleNotComplete=Modul ExternalSite wurde nicht richtig konfiguriert. +ExampleMyMenuEntry=Mein Menü-Eintrag + +# FTP +FTPClientSetup=Einrichtung des FTP- oder SFTP-Client-Moduls +NewFTPClient=Neue FTP/FTPS-Verbindungs-Konfiguration +FTPArea=FTP/FTPS-Bereich +FTPAreaDesc=Diese Ansicht zeigt Ihnen den Inhalt eines FTP- oder SFTP-Servers an. +SetupOfFTPClientModuleNotComplete=Die Konfiguration des FTP- oder SFTP-Client-Moduls scheint unvollständig zu sein +FTPFeatureNotSupportedByYourPHP=Ihre PHP-Umgebung unterstützt keine FTP- oder SFTP-Funktionen +FailedToConnectToFTPServer=Verbindung zum Server fehlgeschlagen (Server %s, Port %s) +FailedToConnectToFTPServerWithCredentials=Anmeldung am Server mit eingegebenem Benutzernamen/Passwort fehlgeschlagen +FTPFailedToRemoveFile=Konnte Datei %s nicht entfernen. Überprüfen Sie die Berechtigungen. +FTPFailedToRemoveDir=Konnte Verzeichnis %s nicht entfernen. Überprüfen Sie die Berechtigungen und ob das Verzeichnis leer ist. +FTPPassiveMode=Passives FTP +ChooseAFTPEntryIntoMenu=Wählen Sie eine FTP/SFTP-Site aus dem Menü... +FailedToGetFile=Folgende Datei(en) konnte(n) nicht geladen werden: %s diff --git a/htdocs/langs/de_DE/paypal.lang b/htdocs/langs/de_DE/paypal.lang index cc1282685a2..824c899074a 100644 --- a/htdocs/langs/de_DE/paypal.lang +++ b/htdocs/langs/de_DE/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal Moduleinstellungen -PaypalDesc=Dieses Modul ermöglicht Zahlungen von Kunden über PayPal zu tätigen. Es können ad-hoxc Zahlungen oder Zahlungen zu Vorgängen aus Dolibarr (Rechnungen, Bestellungen ...) erfolgen +PaypalDesc=Dieses Modul ermöglicht die Zahlung durch Kunden über PayPal . Dies kann sowohl für eine allgemeine Zahlung als auch für eine Zahlung im Zusammenhang mit einem Dolibarr-Objekt (Rechnung, Bestellung, ...) verwendet werden. PaypalOrCBDoPayment=Bezahlen mit PayPal (Kreditkarte oder PayPal) PaypalDoPayment=Zahlung mit PayPal PAYPAL_API_SANDBOX=Testmodus/Sandbox @@ -12,7 +12,7 @@ PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Integrierte Zahlung (Kreditkarte + PayPal) ode PaypalModeIntegral=Integriert PaypalModeOnlyPaypal=Nur PayPal ONLINE_PAYMENT_CSS_URL=Optionale URL des CSS-Stylesheet auf Zahlungsseite -ThisIsTransactionId=Die Transaktions ID lautet: %s +ThisIsTransactionId=Die Transaktions-ID lautet: %s PAYPAL_ADD_PAYMENT_URL=URL für Paypal-Zahlungen beim Dokumentenversand per E-Mail hinzufügen. NewOnlinePaymentReceived=Neue Onlinezahlung erhalten NewOnlinePaymentFailed=Neue Onlinezahlung versucht, aber fehlgeschlagen diff --git a/htdocs/langs/de_DE/products.lang b/htdocs/langs/de_DE/products.lang index 64dddea615c..0659807bdba 100644 --- a/htdocs/langs/de_DE/products.lang +++ b/htdocs/langs/de_DE/products.lang @@ -31,18 +31,18 @@ ProductOrService=Produkt oder Leistung ProductsAndServices=Produkte und Leistungen ProductsOrServices=Produkte oder Leistungen ProductsPipeServices=Produkte | Leistungen -ProductsOnSale=Produkte zum Verkauf -ProductsOnPurchase=Produkte im Einkauf +ProductsOnSale=Verkäufliche Produkte +ProductsOnPurchase=Beziehbare Produkte ProductsOnSaleOnly=Produkte nur zum Verkauf ProductsOnPurchaseOnly=Produkte nur im Einkauf ProductsNotOnSell=Produkte nicht im Einkauf/Verkauf -ProductsOnSellAndOnBuy=Produkte im Einkauf/Verkauf -ServicesOnSale=Leistungen für den Verkauf -ServicesOnPurchase=Leistungen für den Einkauf +ProductsOnSellAndOnBuy=Produkte im Einkauf und Verkauf +ServicesOnSale=Verkäufliche Leistungen +ServicesOnPurchase=Beziehbare Leistungen ServicesOnSaleOnly=Leistungen nur für den Verkauf ServicesOnPurchaseOnly=Leistungen nur für den Einkauf ServicesNotOnSell=Leistungen weder im Einlauf noch im Verkauf -ServicesOnSellAndOnBuy=Leistungen für Ein- und Verkauf +ServicesOnSellAndOnBuy=Leistungen für Einkauf und Verkauf LastModifiedProductsAndServices=Zuletzt bearbeitete Produkte/Leistungen (maximal %s) LastRecordedProducts=Letzte %s erfasste Produkte/Leistungen LastRecordedServices=Zuletzt bearbeitete Leistungen (maximal %s) @@ -54,17 +54,17 @@ Stocks=Lagerbestände und Lagerort der Produkte Movements=Lagerbewegungen Sell=Verkauf Buy=Kauf -OnSell=Zu verkaufen -OnBuy=Im Einkauf -NotOnSell=Nicht zu verkaufen -ProductStatusOnSell=verkäuflich -ProductStatusNotOnSell=unverkäuflich +OnSell=Verkäuflich +OnBuy=Beziehbar +NotOnSell=Nicht verkäuflich +ProductStatusOnSell=Verkäuflich +ProductStatusNotOnSell=Nicht verkäuflich ProductStatusOnSellShort=Verkäuflich -ProductStatusNotOnSellShort=Unverkäuflich -ProductStatusOnBuy=Im Einkauf -ProductStatusNotOnBuy=Nicht im Einkauf +ProductStatusNotOnSellShort=Nicht verkäuflich +ProductStatusOnBuy=Beziehbar +ProductStatusNotOnBuy=Nicht beziehbar ProductStatusOnBuyShort=Beziehbar -ProductStatusNotOnBuyShort=Unbeziehbar +ProductStatusNotOnBuyShort=Nicht beziehbar UpdateVAT=Aktualisiere Steuer UpdateDefaultPrice=Aktualisiere Standard Preis UpdateLevelPrices=Preise für jede Ebene aktivieren @@ -104,9 +104,9 @@ BarcodeType=Barcode-Typ SetDefaultBarcodeType=Wählen Sie den standardmäßigen Barcode-Typ BarcodeValue=Barcode-Wert NoteNotVisibleOnBill=Anmerkung (nicht sichtbar auf Rechnungen, Angeboten,...) -ServiceLimitedDuration=Ist die Erbringung einer Dienstleistung zeitlich beschränkt: +ServiceLimitedDuration=Ist die Erbringung einer Leistung zeitlich beschränkt: FillWithLastServiceDates=Fülle mit Daten der letzten Servicezeile -MultiPricesAbility=Mehrere Preissegmente pro Produkt / Dienstleistung (jeder Kunde befindet sich in einem Preissegment) +MultiPricesAbility=Mehrere Preissegmente pro Produkt/Leistung (jeder Kunde befindet sich in einem Preissegment) MultiPricesNumPrices=Anzahl Preise DefaultPriceType=Basis der Standardpreise (mit versus ohne Steuern) beim Hinzufügen neuer Verkaufspreise AssociatedProductsAbility=Aktiviere Kits (Sets aus mehreren Produkten) @@ -122,7 +122,7 @@ CategoryFilter=Kategoriefilter ProductToAddSearch=Suche hinzuzufügendes Produkt NoMatchFound=Kein Eintrag gefunden ListOfProductsServices=Liste der Produkte/Leistungen -ProductAssociationList=Liste der Produkte/Leistungen, die Bestandteil dieses Satzes sind +ProductAssociationList=Liste der Produkte/Leistungen, die Bestandteil dieses Sets sind ProductParentList=Liste der Sets mit diesem Produkt als Komponente ErrorAssociationIsFatherOfThis=Eines der ausgewählten Produkte ist Elternteil des aktuellen Produkts DeleteProduct=Produkt/Leistung löschen @@ -159,7 +159,7 @@ ListServiceByPopularity=Liste der Leistungen nach Beliebtheit Finished=Eigenproduktion RowMaterial=Rohmaterial ConfirmCloneProduct=Möchten Sie das Produkt / die Leistung %s wirklich duplizieren? -CloneContentProduct=Klonen Sie alle wichtigen Informationen des Produkts / der Dienstleistung +CloneContentProduct=Duplizieren aller wichtigen Informationen des Produkts / der Leistung ClonePricesProduct=Preise duplizieren CloneCategoriesProduct=Klonen Sie verknüpfte Tags / Kategorien CloneCompositionProduct=Virtuelle Produkte/Leistungen duplizieren @@ -262,7 +262,7 @@ Quarter1=1. Quartal Quarter2=2. Quartal Quarter3=3. Quartal Quarter4=4. Quartal -BarCodePrintsheet=Barcode drucken +BarCodePrintsheet=Barcodes drucken PageToGenerateBarCodeSheets=Mit diesem Tool können Sie Bögen mit Barcode-Aufklebern drucken. Wählen Sie das Format Ihrer Stickerseite, den Barcode-Typ und den Barcode-Wert aus und klicken Sie dann auf die Schaltfläche %s . NumberOfStickers=Anzahl Etiketten pro Seite PrintsheetForOneBarCode=Mehrere Aufkleber pro Barcode drucken @@ -416,7 +416,7 @@ ProductsMergeSuccess=Produkte wurden zusammengeführt ErrorsProductsMerge=Fehler beim Zusammenführen von Produkten SwitchOnSaleStatus=Status Verkauf einschalten SwitchOnPurchaseStatus=Status Einkauf einschalten -StockMouvementExtraFields= Zusatzfelder (Lagerbewegung) +StockMouvementExtraFields= Ergänzende Attribute (Lagerbewegung) InventoryExtraFields= Ergänzende Attribute (Bestandsaufnahme) ScanOrTypeOrCopyPasteYourBarCodes=Fügen Sie die Barcodes durch Scannen, über die Tastatur oder per Copy/Paste ein PuttingPricesUpToDate=Preise mit den aktuell bekannten Preisen aktualisieren diff --git a/htdocs/langs/de_DE/projects.lang b/htdocs/langs/de_DE/projects.lang index 47716ada73a..6c9d5370ee3 100644 --- a/htdocs/langs/de_DE/projects.lang +++ b/htdocs/langs/de_DE/projects.lang @@ -3,13 +3,13 @@ RefProject=Projekt-Nr. ProjectRef=Projekt-Nr. ProjectId=Projekt-ID ProjectLabel=Projektbezeichnung -ProjectsArea=Projekte - Übersicht -ProjectStatus=Projekt Status +ProjectsArea=Projekte – Übersicht +ProjectStatus=Projektstatus SharedProject=Jeder -PrivateProject=Zugewiesene Kontakte +PrivateProject=Zugeordnete Kontakte ProjectsImContactFor=Projekte, für die ich ausdrücklich ein Ansprechpartner bin AllAllowedProjects=Alle Projekte die ich sehen kann (eigene + öffentliche) -AllProjects=alle Projekte +AllProjects=Alle Projekte MyProjectsDesc=Diese Ansicht ist auf die Projekte beschränkt, für die Sie ein Ansprechpartner sind ProjectsPublicDesc=Diese Ansicht zeigt alle Projekte, für die Sie zum Lesen berechtigt sind. TasksOnProjectsPublicDesc=Diese Ansicht zeigt alle Aufgaben der Projekte, die Sie einsehen dürfen. @@ -25,14 +25,14 @@ AllTaskVisibleButEditIfYouAreAssigned=Alle Aufgaben für qualifizierte Projekte OnlyYourTaskAreVisible=Nur Ihnen zugewiesene Aufgaben sind sichtbar. Wenn Sie Zeit für eine Aufgabe eingeben müssen und die Aufgabe hier nicht sichtbar ist, müssen Sie sich die Aufgabe selbst zuweisen. ImportDatasetTasks=Aufgaben der Projekte ProjectCategories=Projektkategorien/Tags -NewProject=neues Projekt +NewProject=Neues Projekt AddProject=Projekt erstellen DeleteAProject=Löschen eines Projekts DeleteATask=Löschen einer Aufgabe ConfirmDeleteAProject=Sind Sie sicher, dass diese Vertragsposition löschen wollen? ConfirmDeleteATask=Sind Sie sicher, dass diese Aufgabe löschen wollen? -OpenedProjects=offene Projekte -OpenedTasks=offene Aufgaben +OpenedProjects=Offene Projekte +OpenedTasks=Offene Aufgaben OpportunitiesStatusForOpenedProjects=Betrag der Leads aus offenen Projekten nach Status OpportunitiesStatusForProjects=Anzahl Kundeninteressen je Projekt nach Status ShowProject=Projekt anzeigen @@ -42,7 +42,7 @@ NoProject=Kein Projekt definiert oder keine Rechte NbOfProjects=Anzahl Projekte NbOfTasks=Anzahl Aufgaben TimeSpent=Zeitaufwand -TimeSpentByYou=eigener Zeitaufwand +TimeSpentByYou=Eigener Zeitaufwand TimeSpentByUser=Zeitaufwand von Benutzer ausgegeben TimesSpent=Zeitaufwände TaskId=Aufgaben-ID @@ -55,7 +55,7 @@ TaskTimeDate=Datum TasksOnOpenedProject=Aufgaben in offenen Projekten WorkloadNotDefined=Arbeitsaufwand nicht definiert NewTimeSpent=Zeitaufwände -MyTimeSpent=mein Zeitaufwand +MyTimeSpent=Mein Zeitaufwand BillTime=Zeitaufwand abrechnen BillTimeShort=Zeit abrechnen TimeToBill=Zeit nicht in Rechnung gestellt @@ -65,7 +65,7 @@ Task=Aufgabe TaskDateStart=Startdatum der Aufgabe TaskDateEnd=Enddatum der Aufgabe TaskDescription=Aufgabenbeschreibung -NewTask=neue Aufgabe +NewTask=Neue Aufgabe AddTask=Aufgabe erstellen AddTimeSpent=Erfasse verwendete Zeit AddHereTimeSpentForDay=Zeitaufwand für diesen Tag/Aufgabe hier erfassen @@ -74,7 +74,7 @@ Activity=Tätigkeit Activities=Aufgaben/Tätigkeiten MyActivities=Meine Aufgaben/Tätigkeiten MyProjects=Meine Projekte -MyProjectsArea=meine Projekte – Übersicht +MyProjectsArea=Meine Projekte – Übersicht DurationEffective=Effektivdauer ProgressDeclared=Erklärte echte Fortschritte TaskProgressSummary=Aufgabenfortschritt @@ -85,26 +85,26 @@ ProgressCalculated=Fortschritt nach Verbrauch WhichIamLinkedTo=mit dem ich verbunden bin WhichIamLinkedToProject=Projekt mit dem ich verbunden bin Time=Zeitaufwand -TimeConsumed=verwendet +TimeConsumed=Verwendet ListOfTasks=Aufgabenliste GoToListOfTimeConsumed=Liste der verwendeten Zeit aufrufen GanttView=Gantt-Diagramm ListWarehouseAssociatedProject=Liste der mit dem Projekt verknüpften Lager -ListProposalsAssociatedProject=Liste der projektbezogenen Angebote -ListOrdersAssociatedProject=Liste der projektbezogenen Kundenaufträge -ListInvoicesAssociatedProject=Liste der projektbezogenen Kundenrechnungen -ListPredefinedInvoicesAssociatedProject=Liste der Kundenvorlagenrechnungen, die sich auf das Projekt beziehen -ListSupplierOrdersAssociatedProject=Liste der Bestellungen im Zusammenhang mit dem Projekt -ListSupplierInvoicesAssociatedProject=Liste der projektbezogenen Lieferantenrechnungen -ListContractAssociatedProject=Liste der projektbezogenen Verträge -ListShippingAssociatedProject=Liste der projektbezogenen Lieferungen -ListFichinterAssociatedProject=Liste der projektbezogenen Serviceaufträge -ListExpenseReportsAssociatedProject=Liste der projektbezogenen Spesenabrechnungen -ListDonationsAssociatedProject=mit dem Projekt verknüpfte Spendenliste -ListVariousPaymentsAssociatedProject=Liste der sonstigen projektbezogenen Zahlungen -ListSalariesAssociatedProject=Liste der projektbezogenen Gehaltszahlungen -ListActionsAssociatedProject=Liste der projektbezogenen Ereignisse -ListMOAssociatedProject=Liste der projektbezogenen Fertigungsaufträge +ListProposalsAssociatedProject=Liste der mit dem Projekt verbundenen Angebote +ListOrdersAssociatedProject=Liste der mit dem Projekt verbundenen Kundenaufträge +ListInvoicesAssociatedProject=Liste der mit dem Projekt verbundenen Kundenrechnungen +ListPredefinedInvoicesAssociatedProject=Liste der mit dem Projekt verbundenen Rechnungsvorlagen für Kundenrechnungen +ListSupplierOrdersAssociatedProject=Liste der mit dem Projekt verbundenen Lieferantenbestellungen +ListSupplierInvoicesAssociatedProject=Liste der mit dem Projekt verbundenen Lieferantenrechnungen +ListContractAssociatedProject=Liste der mit dem Projekt verbundenen Verträge +ListShippingAssociatedProject=Liste der mit dem Projekt verbundenen Lieferungen +ListFichinterAssociatedProject=Liste der mit dem Projekt verbundenen Serviceaufträge +ListExpenseReportsAssociatedProject=Liste der mit dem Projekt verbundenen Spesenabrechnungen +ListDonationsAssociatedProject=Liste der mit dem Projekt verbundenen Spenden +ListVariousPaymentsAssociatedProject=Liste der sonstigen mit dem Projekt verbundenen Zahlungen +ListSalariesAssociatedProject=Liste der mit dem Projekt verbundenen Gehaltszahlungen +ListActionsAssociatedProject=Liste der mit dem Projekt verbundenen Ereignisse +ListMOAssociatedProject=Liste der mit dem Projekt verbundenen Fertigungsaufträge ListTaskTimeUserProject=Liste mit Zeitaufwand der Projektaufgaben ListTaskTimeForTask=Zeitaufwand auf Aufgaben ActivityOnProjectToday=Projektaktivitäten von heute @@ -113,9 +113,9 @@ ActivityOnProjectThisWeek=Projektaktivitäten dieser Woche ActivityOnProjectThisMonth=Projektaktivitäten dieses Monats ActivityOnProjectThisYear=Projektaktivitäten dieses Jahres ChildOfProjectTask=Subelemente des Projekts/Aufgabe -ChildOfTask=Kindelement der Aufgabe -TaskHasChild=Aufgabe hat eine Unteraufgabe -NotOwnerOfProject=Nicht Eigner des privaten Projekts +ChildOfTask=Subelement der Aufgabe +TaskHasChild=Aufgabe hat ein Subelement +NotOwnerOfProject=Nicht Eigner dieses privaten Projekts AffectedTo=Zugewiesen an CantRemoveProject=Dieses Projekt kann nicht entfernt werden, da es von einigen anderen Objekten (Rechnung, Bestellungen oder andere) verwendet wird. Siehe Registerkarte '%s'. ValidateProject=Projekt freigeben @@ -125,7 +125,7 @@ ConfirmCloseAProject=Möchten Sie dieses Projekt wirklich schließen? AlsoCloseAProject=Das Projekt auch schließen (lassen Sie es offen, wenn Sie noch Produktions-Aufgaben laufen haben) ReOpenAProject=Projekt öffnen ConfirmReOpenAProject=Möchten Sie dieses Projekt wirklich wiedereröffnen? -ProjectContact=Kontakte zum Projekt +ProjectContact=Projektkontakte TaskContact=Kontakte zur Aufgabe ActionsOnProject=Projektaktionen YouAreNotContactOfProject=Sie sind diesem privaten Projekt nicht als Kontakt zugeordnet. @@ -154,7 +154,7 @@ ProjectReportDate=Passe Aufgaben-Datum dem neuen Projekt-Startdatum an ErrorShiftTaskDate=Es ist nicht möglich, das Aufgabendatum dem neuen Projektdatum anzupassen ProjectsAndTasksLines=Projekte und Aufgaben ProjectCreatedInDolibarr=Projekt %s erstellt -ProjectValidatedInDolibarr=Projekt %s validiert +ProjectValidatedInDolibarr=Projekt %s freigeben ProjectModifiedInDolibarr=Projekt %s geändert TaskCreatedInDolibarr=Aufgabe %s erstellt TaskModifiedInDolibarr=Aufgabe %s geändert @@ -190,16 +190,16 @@ PlannedWorkload=Geplante Auslastung PlannedWorkloadShort=Arbeitsaufwand ProjectReferers=Verknüpfte Einträge ProjectMustBeValidatedFirst=Projekt muss erst freigegeben werden -MustBeValidatedToBeSigned=%s muss zuerst validiert werden, um auf "unterzeichnet" gesetzt zu werden. +MustBeValidatedToBeSigned=%s muss zuerst freigegeben werden, um auf "unterzeichnet" gesetzt zu werden. FirstAddRessourceToAllocateTime=Weisen Sie einen Benutzer als Kontakt des Projekts zu, um Zeiten zu erfassen InputPerDay=Tagesansicht InputPerWeek=Wochenansicht InputPerMonth=Monatsansicht -InputDetail=Eingabedetail +InputDetail=Eingabe Detail TimeAlreadyRecorded=Zeitaufwand für diese Aufgabe/Tag und Benutzer %s bereits aufgenommen -ProjectsWithThisUserAsContact=Projekte mit diesem Anwender als Kontakt +ProjectsWithThisUserAsContact=Projekte mit diesem Benutzer als Kontakt ProjectsWithThisContact=Projekte mit diesem Kontakt -TasksWithThisUserAsContact=Aufgaben zugeordnet zu diesem Anwender +TasksWithThisUserAsContact=Diesem Benutzer zugeordnete Aufgaben ResourceNotAssignedToProject=Nicht dem Projekt zugeordnet ResourceNotAssignedToTheTask=nicht der Aufgabe zugewiesen NoUserAssignedToTheProject=Diesem Projekt sind keine Benutzer zugeordnet @@ -222,9 +222,9 @@ TasksStatistics=Statistiken zu Aufgaben von Projekten oder Interessenten TaskAssignedToEnterTime=Aufgabe zugewiesen. Eingabe der Zeit zu diese Aufgabe sollte möglich sein. IdTaskTime=ID Zeit Aufgabe YouCanCompleteRef=Wenn die Referenz mit einem Suffix ergänzt werden soll, ist es empfehlenswert, ein Trennstrich '-' zu verwenden, so dass die automatische Numerierung für weitere Projekte funktioniert. Zum Beispiel %s-MYSUFFIX -OpenedProjectsByThirdparties=Offene Projekte nach Partner +OpenedProjectsByThirdparties=Offene Projekte nach Geschäftspartner OnlyOpportunitiesShort=nur Interessenten -OpenedOpportunitiesShort=offene Verkaufschancen +OpenedOpportunitiesShort=Offene Leads NotOpenedOpportunitiesShort=Kein offener Interessent NotAnOpportunityShort=Keine Verkaufsmöglichkeit OpportunityTotalAmount=Gesamtbetrag Leads/Verkaufschancen diff --git a/htdocs/langs/de_DE/sendings.lang b/htdocs/langs/de_DE/sendings.lang index bb858a55538..bee31352ea5 100644 --- a/htdocs/langs/de_DE/sendings.lang +++ b/htdocs/langs/de_DE/sendings.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - sendings -RefSending=Versand-Nr. -Sending=Auslieferung -Sendings=Auslieferungen +RefSending=Lieferungs-Ref. +Sending=Lieferung +Sendings=Lieferungen AllSendings=Alle Lieferungen -Shipment=Versand +Shipment=Lieferung Shipments=Lieferungen ShowSending=Zeige Lieferungen Receivings=Zustellbestätigungen @@ -12,11 +12,11 @@ ListOfSendings=Versandliste SendingMethod=Versandart LastSendings=%s neueste Lieferungen StatisticsOfSendings=Versandstatistik -NbOfSendings=Anzahl Auslieferungen -NumberOfShipmentsByMonth=Anzahl Auslieferungen pro Monat +NbOfSendings=Anzahl Lieferungen +NumberOfShipmentsByMonth=Anzahl Lieferungen pro Monat SendingCard=Lieferung – Übersicht NewSending=Neue Lieferung -CreateShipment=Auslieferung erstellen +CreateShipment=Lieferung erstellen QtyShipped=Liefermenge QtyShippedShort=Gelieferte Menge QtyPreparedOrShipped=Menge vorbereitet oder versendet @@ -25,10 +25,10 @@ QtyToReceive=Menge hinzugekommen QtyReceived=Erhaltene Menge QtyInOtherShipments=Menge in anderen Lieferungen KeepToShip=Noch zu versenden -KeepToShipShort=übrigbleiben +KeepToShipShort=Noch offen OtherSendingsForSameOrder=Weitere Lieferungen zu dieser Bestellung SendingsAndReceivingForSameOrder=Warenerhalt und Versand dieser Bestellung -SendingsToValidate=Freizugebende Auslieferungen +SendingsToValidate=Freizugebende Lieferungen StatusSendingCanceled=Storniert StatusSendingCanceledShort=storniert StatusSendingDraft=Entwurf @@ -50,7 +50,7 @@ StatusReceipt=Der Status des Lieferschein DateReceived=Datum der Zustellung ClassifyReception=Als erhalten markieren SendShippingByEMail=Versand per E-Mail -SendShippingRef=Versendung der Auslieferung %s +SendShippingRef=Versand der Lieferung %s ActionsOnShipping=Hinweis zur Lieferung LinkToTrackYourPackage=Link zur Paket- bzw. Sendungsverfolgung ShipmentCreationIsDoneFromOrder=Im Moment erfolgt die Erstellung einer neuen Lieferung aus dem Datensatz des Kundenauftrags. @@ -65,8 +65,8 @@ ValidateOrderFirstBeforeShipment=Sie müssen den Auftrag erst bestätigen bevor # Sending methods # ModelDocument -DocumentModelTyphon=Vollständig Dokumentvorlage für die Lieferscheine (Logo, ...) -DocumentModelStorm=Vollständigeres Dokumentmodell für Lieferbelege und Kompatibilität mit Extrafeldern (Logo ...) +DocumentModelTyphon=Vollständige Dokumentenvorlage für Zustellbestätigungen (Logo, ...) +DocumentModelStorm=Vollständige Dokumentenvorlage für Zustellbestätigungen, kompatibel mit ergänzenden Attributen (Logo ...) Error_EXPEDITION_ADDON_NUMBER_NotDefined=Konstante EXPEDITION_ADDON_NUMBER nicht definiert SumOfProductVolumes=Summe der Produktvolumen SumOfProductWeights=Summe der Produktgewichte diff --git a/htdocs/langs/de_DE/stocks.lang b/htdocs/langs/de_DE/stocks.lang index 62df4270b03..7da1a65eb67 100644 --- a/htdocs/langs/de_DE/stocks.lang +++ b/htdocs/langs/de_DE/stocks.lang @@ -58,7 +58,7 @@ StockLowerThanLimit=Lagerbestand unterhalb der Mindestbestandsmenge ( %s ) EnhancedValue=Warenwert EnhancedValueOfWarehouses=Lagerwert UserWarehouseAutoCreate=Automatisch ein Lager erstellen wenn ein neuer Benutzer erstellt wird -AllowAddLimitStockByWarehouse=Verwalten Sie zusätzlich zum Wert für den Mindest- und den gewünschten Bestand pro Paar (Produktlager) auch den Wert für den Mindest- und den gewünschten Bestand pro Produkt +AllowAddLimitStockByWarehouse=Verwalten Sie zusätzlich zum Wert für den Mindest- und den gewünschten Bestand pro Zuordnung (Produkt zu Warenlager) auch den Wert für den Mindest- und den gewünschten Bestand pro Produkt RuleForWarehouse=Regel für Lager WarehouseAskWarehouseOnThirparty=Legen Sie ein Lager für Geschäftspartner fest WarehouseAskWarehouseDuringPropal=Ein Lager zu dem Angebot einstellen @@ -88,8 +88,8 @@ OrderStatusNotReadyToDispatch=Auftrag wurde noch nicht oder nicht mehr ein Statu StockDiffPhysicTeoric=Begründung für Differenz zwischen Inventurbestand und Lagerbestand NoPredefinedProductToDispatch=Es erfolgt keine Lagerbestandsänderung da keine vordefinierten Produkte enthalten sind. DispatchVerb=Position(en) verbuchen -StockLimitShort=Grenzwert für Alarm -StockLimit=Mindestbestand vor Warnung +StockLimitShort=Grenzwert für Warnung +StockLimit=Warnung bei Mindestbestand StockLimitDesc=(leer) bedeutet keine Warnung.
0 kann verwendet werden, um eine Warnung auszulösen, sobald der Bestand leer ist. PhysicalStock=Aktueller Lagerbestand RealStock=tatsächlicher Bestand @@ -110,8 +110,8 @@ AverageUnitPricePMPDesc=Den eingegebenen durchschnittlichen Stückpreis mussten SellPriceMin=Verkaufspreis EstimatedStockValueSellShort=Verkaufswert EstimatedStockValueSell=Verkaufswert -EstimatedStockValueShort=Eingangsmenge -EstimatedStockValue=Einkaufspreis +EstimatedStockValueShort=Einkaufswert +EstimatedStockValue=Einkaufswert DeleteAWarehouse=Warenlager löschen ConfirmDeleteWarehouse=Möchten Sie dieses Lager%s wirklich löschen? PersonalStock=Persönlicher Warenbestand %s @@ -121,7 +121,7 @@ SelectWarehouseForStockIncrease=Wählen Sie das Lager für den Wareneingang NoStockAction=Keine Vorratsänderung DesiredStock=Gewünschter Lagerbestand DesiredStockDesc=Dieser Lagerbestand wird von der Nachbestellfunktion verwendet. -StockToBuy=zu bestellen +StockToBuy=Zu bestellen Replenishment=Nachbestellung ReplenishmentOrders=Nachbestellungen VirtualDiffersFromPhysical=Je nach Erhöhung / Verringerung der Lagerbestands-Optionen können sich physische und virtuelle Lagerbestände (physische Lagerbestände + offene Aufträge) unterscheiden @@ -151,8 +151,8 @@ RecordMovement=Umbuchung ReceivingForSameOrder=Verbuchungen zu dieser Bestellung StockMovementRecorded=Lagerbewegungen aufgezeichnet RuleForStockAvailability=Regeln für Bestands-Verfügbarkeit -StockMustBeEnoughForInvoice=Ein ausreichender Lagerbestand ist erforderlich, um Produkte/Leistungen in Rechnung zu stellen. (Die Prüfung gegen den aktuellen tatsächlichen Lagerbestand erfolgt, wenn eine Zeile zur Rechnung hinzugefügt wird, unabhängig von der Regel zur automatischen Lagerbestandsänderung.) -StockMustBeEnoughForOrder=Der Lagerbestand muss ausreichen, um der Bestellung ein Produkt / eine Dienstleistung hinzuzufügen. +StockMustBeEnoughForInvoice=Ein ausreichender Lagerbestand ist erforderlich, um Produkte/Leistungen in Rechnung zu stellen. (Die Prüfung gegen den aktuellen tatsächlichen Lagerbestand erfolgt, wenn eine Position zur Rechnung hinzugefügt wird, unabhängig von der Regel zur automatischen Lagerbestandsänderung.) +StockMustBeEnoughForOrder=Der Lagerbestand muss ausreichen, um dem Auftrag ein Produkt / eine Leistung hinzuzufügen (die Überprüfung erfolgt anhand des aktuellen tatsächlichen Bestands, wenn eine Position zum Auftrag hinzugefügt wird, unabhängig von der Regel für die automatische Bestandsänderung). StockMustBeEnoughForShipment= Ein ausreichender Lagerbestand ist erforderlich, um Produkte/Leistungen zum Versand hinzuzufügen. (Die Prüfung gegen den aktuellen tatsächlichen Lagerbestand erfolgt, wenn eine Zeile zum Versand hinzugefügt wird, unabhängig von der Regel zur automatischen Lagerbestandsänderung.) MovementLabel=Titel der Lagerbewegung TypeMovement=Bewegungsrichtung @@ -167,7 +167,7 @@ MovementCorrectStock=Lagerkorrektur für Produkt %s MovementTransferStock=Umlagerung des Produkts %s in ein anderes Lager InventoryCodeShort=Bewegungs- oder Bestandscode NoPendingReceptionOnSupplierOrder=Kein anstehender Wareneingang aufgrund offener Bestellung -ThisSerialAlreadyExistWithDifferentDate=Diese Charge / Seriennummer (%s) ist bereits vorhanden, jedoch mit unterschiedlichen Haltbarkeits- oder Verfallsdatum. \n(Gefunden: %s Erfasst: %s) +ThisSerialAlreadyExistWithDifferentDate=Diese Charge/Seriennummer (%s) ist bereits vorhanden, jedoch mit unterschiedlichen Haltbarkeits- oder Verfallsdatum. \n(Gefunden: %s Erfasst: %s) OpenAnyMovement=Offen (alle Bewegungen) OpenInternal=Offen (nur interne Bewegungen) UseDispatchStatus=Verwende einen Versandstatus (genehmigen / ablehnen) für Produktzeilen beim Bestelleingang @@ -243,8 +243,8 @@ CurrentStock=Aktueller Lagerbestand InventoryRealQtyHelp=Setze den Wert auf 0, um die Menge zurückzusetzen.
Feld leer lassen oder Zeile entfernen, um unverändert zu lassen UpdateByScaning=Vervollständigen Sie die tatsächliche Menge durch Scannen UpdateByScaningProductBarcode=Update per Scan (Produkt-Barcode) -UpdateByScaningLot=Update per Scan (Charge | serieller Barcode) -DisableStockChangeOfSubProduct=Deaktivieren Sie den Lagerwechsel für alle Unterprodukte dieses Satzes während dieser Bewegung. +UpdateByScaningLot=Update per Scan (Barcode Charge | Seriennr.) +DisableStockChangeOfSubProduct=Deaktivieren Sie den Lagerwechsel für alle Unterprodukte dieses Sets während dieser Bewegung. ImportFromCSV=CSV-Bewegungsliste importieren ChooseFileToImport=Datei hochladen und dann auf das Symbol %s klicken, um die Datei als Quell-Importdatei auszuwählen ... SelectAStockMovementFileToImport=Wählen Sie eine zu importierende Bestandsbewegungs-Datei aus @@ -260,11 +260,12 @@ CollapseBatchDetailHelp=Sie können die Standardanzeige für Chargendetails in d ErrorWrongBarcodemode=Unbekannter Barcode-Modus ProductDoesNotExist=Produkt existiert nicht ErrorSameBatchNumber=Im Inventarblatt wurden mehrere Datensätze zur Chargennummer gefunden. Daher ist unklar, welche erhöht werden soll. -ProductBatchDoesNotExist=Produkt mit Charge/Serie existiert nicht +ProductBatchDoesNotExist=Produkt mit Charge/Seriennr. existiert nicht ProductBarcodeDoesNotExist=Produkt mit Barcode existiert nicht WarehouseId=Lager-ID WarehouseRef=Lager-Ref. SaveQtyFirst=Sichern Sie zuerst die tatsächlich inventarisierten Mengen, bevor Sie die Erstellung der Lagerbewegung anfordern. +ToStart=Start InventoryStartedShort=Begonnen ErrorOnElementsInventory=Vorgang aus folgendem Grund abgebrochen: ErrorCantFindCodeInInventory=Kann den folgenden Code nicht im Bestand finden @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Erfolg! Bei allen angeforderten Barcodes wurde di StockChangeDisabled=Bestandsänderung deaktiviert NoWarehouseDefinedForTerminal=Kein Lager für das Terminal definiert ClearQtys=Alle Mengen löschen +ModuleStockTransferName=Erweiterte Umlagerung +ModuleStockTransferDesc=Erweiterte Verwaltung der Umlagerung mit Erstellung von Umlagerungsbelegen +StockTransferNew=Neue Umlagerung +StockTransferList=Liste der Umlagerungen +ConfirmValidateStockTransfer=Sind Sie sicher, dass Sie diese Umlagerung mit der Referenz %s freigeben möchten? +ConfirmDestock=Bestandsverringerung mit Umlagerung %s +ConfirmDestockCancel=Bestandsverringerung mit Umlagerung %s stornieren +DestockAllProduct=Bestandsverringerung +DestockAllProductCancel=Bestandsverringerung stornieren +ConfirmAddStock=Bestandserhöhung mit Umlagerung %s +ConfirmAddStockCancel=Bestandserhöhung mit Umlagerung %s stornieren +AddStockAllProduct=Bestandserhöhung +AddStockAllProductCancel=Bestandserhöhung stornieren +DatePrevueDepart=Geplantes Ausgangsdatum +DateReelleDepart=Tatsächliches Ausgangsdatum +DatePrevueArrivee=Geplantes Ankunftsdatum +DateReelleArrivee=Tatsächliches Ankunftsdatum +HelpWarehouseStockTransferSource=Wenn dieses Warenlager festgelegt ist, stehen nur es selbst und seine untergeordneten Elemente als Ursprungs-Warenlager zur Verfügung +HelpWarehouseStockTransferDestination=Wenn dieses Warenlager festgelegt ist, stehen nur es selbst und seine untergeordneten Lager als Ziel-Warenlager zur Verfügung +LeadTimeForWarning=Vorlaufzeit bis Warnung (in Tagen) +TypeContact_stocktransfer_internal_STFROM=Absender der Umlagerung +TypeContact_stocktransfer_internal_STDEST=Empfänger der Umlagerung +TypeContact_stocktransfer_internal_STRESP=Verantwortlicher für die Umlagerung +StockTransferSheet=Umlagerungsbeleg +StockTransferSheetProforma=Proforma-Umlagerungsbeleg +StockTransferDecrementation=Bestandsverringerung Ursprungs-Warenlager +StockTransferIncrementation=Bestandserhöhung Ziel-Warenlager +StockTransferDecrementationCancel=Bestandsverringerung der Ursprungs-Warenlager stornieren +StockTransferIncrementationCancel=Bestandserhöhung der Ziel-Warenlager stornieren +StockStransferDecremented=Bestände in Ursprungs-Warenlagern verringert +StockStransferDecrementedCancel=Verringerung der Bestände in Ursprungs-Warenlagern storniert +StockStransferIncremented=Geschlossen - Bestände übertragen +StockStransferIncrementedShort=Bestände übertragen +StockStransferIncrementedShortCancel=Erhöhung der Bestände in Ziel-Warenlagern storniert +StockTransferNoBatchForProduct=Produkt %s verwendet keine Chargen; Chargennr. der Position löschen und erneut versuchen +StockTransferSetup = Einstellungen für das Modul Umlagerungen +Settings=Einstellungen +StockTransferSetupPage = Einstellungsseite für das Modul Umlagerungen +StockTransferRightRead=Umlagerungen einsehen +StockTransferRightCreateUpdate=Umlagerungen erstellen/aktualisieren +StockTransferRightDelete=Umlagerungen löschen +BatchNotFound=Charge/Seriennummer für dieses Produkt nicht gefunden diff --git a/htdocs/langs/de_DE/stripe.lang b/htdocs/langs/de_DE/stripe.lang index 0994eaf5e9a..5db52f3c5c0 100644 --- a/htdocs/langs/de_DE/stripe.lang +++ b/htdocs/langs/de_DE/stripe.lang @@ -38,7 +38,7 @@ STRIPE_TEST_WEBHOOK_KEY=Webhook Testschlüssel STRIPE_LIVE_SECRET_KEY=Geheimer Produktivschlüssel STRIPE_LIVE_PUBLISHABLE_KEY=Öffentlicher Produktivschlüssel STRIPE_LIVE_WEBHOOK_KEY=Webhook Produktivschlüssel -ONLINE_PAYMENT_WAREHOUSE=Lager verwenden um den Bestand bei Onlinezahlungen vermindern
(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice?) +ONLINE_PAYMENT_WAREHOUSE=Warenlager für die Bestandsminderung bei Onlinezahlung
(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice?) StripeLiveEnabled=Stripe live aktiviert (Nicht im Test/Sandbox Modus) StripeImportPayment=Stripe Zahlungen importieren ExampleOfTestCreditCard=Beispiel für eine zu testende Kreditkarte: %s => gültig, %s => Fehler CVC, %s => abgelaufen, %s => Belastung fehlgeschlagen @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Link zum Einrichten von Stripe WebHook zum Aufruf von PaymentWillBeRecordedForNextPeriod=Die Zahlung wird für den folgenden Zeitraum erfasst. ClickHereToTryAgain=Hier klicken und nochmal versuchen... CreationOfPaymentModeMustBeDoneFromStripeInterface=Aufgrund strenger Kundenauthentifizierungs-Regeln muss die Erstellung einer Karte im Stripe-Backoffice erfolgen. Sie können hier klicken, um zum Stripe-Kundendatensatz zu wechseln: %s +TERMINAL_LOCATION=Standort (Adresse) für Terminals diff --git a/htdocs/langs/de_DE/suppliers.lang b/htdocs/langs/de_DE/suppliers.lang index b30a65f5f82..a94d13880eb 100644 --- a/htdocs/langs/de_DE/suppliers.lang +++ b/htdocs/langs/de_DE/suppliers.lang @@ -3,7 +3,7 @@ Suppliers=Lieferanten SuppliersInvoice=Lieferantenrechnung SupplierInvoices=Lieferantenrechnungen ShowSupplierInvoice=Zeige Lieferantenrechnung -NewSupplier=neuer Lieferant +NewSupplier=Neuer Lieferant History=Verlauf ListOfSuppliers=Liste der Lieferanten ShowSupplier=zeige Lieferant diff --git a/htdocs/langs/de_DE/ticket.lang b/htdocs/langs/de_DE/ticket.lang index ce7e62342d8..599cd4f9009 100644 --- a/htdocs/langs/de_DE/ticket.lang +++ b/htdocs/langs/de_DE/ticket.lang @@ -19,16 +19,16 @@ # Module56000Name=Tickets -Module56000Desc=Ticketsystem für die Verwaltung von Anträgen oder Vorfällen +Module56000Desc=Ticketsystem für das Issue- und Anfrage-Management -Permission56001=Tickets anzeigen +Permission56001=Tickets einsehen Permission56002=Tickets ändern Permission56003=Tickets löschen Permission56004=Tickets bearbeiten Permission56005=Tickets aller Geschäftspartner anzeigen (nicht gültig für externe Benutzer, diese sehen immer nur die Tickets des eigenen Geschäftspartners) -TicketDictType=Ticket-Typ -TicketDictCategory=Ticket-Kategorien +TicketDictType=Ticket-Anfragearten +TicketDictCategory=Ticket-Themengruppen TicketDictSeverity=Ticket-Dringlichkeiten TicketDictResolution=Ticket-Auflösung @@ -75,7 +75,7 @@ Deleted=Gelöscht Type=Typ Severity=Dringlichkeit TicketGroupIsPublic=Gruppe ist öffentlich -TicketGroupIsPublicDesc=Falls eine Ticket-Gruppe öffentlich ist, wird sie in der öffentlichen Oberfläche zum erstellen eines Tickets sichtbar sein +TicketGroupIsPublicDesc=Falls eine Ticket-Themengruppe öffentlich ist, wird sie in der öffentlichen Oberfläche zum erstellen eines Tickets sichtbar sein # Email templates MailToSendTicketMessage=Um eine E-Mail mit der Ticketmeldung zu senden @@ -86,12 +86,12 @@ MailToSendTicketMessage=Um eine E-Mail mit der Ticketmeldung zu senden TicketSetup=Einrichtung des Ticketmoduls TicketSettings=Einstellungen TicketSetupPage= -TicketPublicAccess=Ein öffentliches Interface ohne Identifizierung ist unter dieser URL verfügbar -TicketSetupDictionaries=Die Ticket-Typen, Dringlichkeiten und Analyse-Codes sind in den Stammdaten konfigurierbar +TicketPublicAccess=Ein öffentliches Interface (Nutzung ohne Identifizierung) ist unter dieser URL abrufbar: +TicketSetupDictionaries=Die Anfragearten, Dringlichkeiten und Analyse-Codes sind in den Stammdaten konfigurierbar TicketParamModule=Modul Variableneinstellungen TicketParamMail=E-Mail Einrichtung -TicketEmailNotificationFrom=Absender-E-Mail für Ticket-Antworten -TicketEmailNotificationFromHelp=Absender-E-Mail für von Dolibarr gesendete Ticket-Antworten +TicketEmailNotificationFrom=Absender-E-Mail für Benachrichtigung bei Antworten +TicketEmailNotificationFromHelp=Absenderadresse zum Senden der Benachrichtigungs-E-Mail, wenn eine Antwort im Backoffice bereitgestellt wird. Zum Beispiel noreply@example.com TicketEmailNotificationTo=Benachrichtigung über die Erstellung eines Tickets an diese E-Mail-Adresse TicketEmailNotificationToHelp=Falls vorhanden, wird diese E-Mail-Adresse bei einer Ticket-Erstellung benachrichtigt TicketNewEmailBodyLabel=Text Mitteilung die gesendet wird, wenn ein Ticket erstellt wurde @@ -132,7 +132,7 @@ TicketsAutoAssignTicket=Den Ersteller automatisch dem Ticket zuweisen TicketsAutoAssignTicketHelp=Wenn ein Ticket erstellt wird, kann der Ersteller automatisch dem Ticket zugewiesen werden. TicketNumberingModules=Ticketnummerierungsmodul TicketsModelModule=Dokumentvorlagen für Tickets -TicketNotifyTiersAtCreation=Partner über Ticketerstellung informieren +TicketNotifyTiersAtCreation=Geschäftspartner über Ticketerstellung informieren TicketsDisableCustomerEmail=E-Mails immer deaktivieren, wenn ein Ticket über die öffentliche Oberfläche erstellt wird TicketsPublicNotificationNewMessage=Sende E-Mails, wenn neue Nachrichten oder Kommentare zum Ticket hinzugefügt wurden TicketsPublicNotificationNewMessageHelp=E-Mail (s) senden, wenn eine neue Nachricht von der öffentlichen Oberfläche hinzugefügt wird (an den zugewiesenen Benutzer oder die Benachrichtigungs-E-Mail an (Update) und / oder die Benachrichtigungs-E-Mail an) @@ -180,7 +180,7 @@ CreatedBy=Erstellt durch NewTicket=Ticket erstellen SubjectAnswerToTicket=Ticketantwort TicketTypeRequest=Anfrageart -TicketCategory=Ticket-Kategorisierung +TicketCategory=Themengruppe SeeTicket=Ticket zeigen TicketMarkedAsRead=Ticket als gelesen markiert TicketReadOn=Gelesen um diff --git a/htdocs/langs/el_CY/members.lang b/htdocs/langs/el_CY/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/el_CY/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/el_CY/projects.lang b/htdocs/langs/el_CY/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/el_CY/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/el_GR/accountancy.lang b/htdocs/langs/el_GR/accountancy.lang index 620e59ce3a4..0bafe1eeb7b 100644 --- a/htdocs/langs/el_GR/accountancy.lang +++ b/htdocs/langs/el_GR/accountancy.lang @@ -3,7 +3,7 @@ Accountancy=Λογιστική Accounting=Λογιστική ACCOUNTING_EXPORT_SEPARATORCSV=Διαχωριστικό στηλών για το αρχείο που θα εξαχθεί ACCOUNTING_EXPORT_DATE=Μορφή ημερομηνίας για το αρχείο που θα εξαχθεί -ACCOUNTING_EXPORT_PIECE=Εξαγωγή του αριθμού διακανονισμού +ACCOUNTING_EXPORT_PIECE=Εξαγωγή του αριθμού καταχώρησης ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Εξαγωγή με καθολικό λογαριασμό ACCOUNTING_EXPORT_LABEL=Εξαγωγή ετικέτας ACCOUNTING_EXPORT_AMOUNT=Εξαγωγή ποσού @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Απενεργοποίηση άμεσης καταγρ ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Ενεργοποίηση προσχεδίου εξαγωγής στο ημερολόγιο ACCOUNTANCY_COMBO_FOR_AUX=Ενεργοποίηση σύνθετης λίστας για θυγατρικό λογαριασμό (ενδέχεται να είναι αργή εάν έχετε πολλά τρίτα μέρη, διακοπή της δυνατότητας αναζήτησης σε ένα μέρος της αξίας) ACCOUNTING_DATE_START_BINDING=Καθορίστε ημερομηνία έναρξης δεσμεύσεων & μεταφοράς στη λογιστική. Κάτω από αυτή την ημερομηνία, οι συναλλαγές δεν θα μεταφερθούν στο λογιστικό. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Κατά τη μεταφορά λογιστικού, επιλέξτε εμφάνιση περιόδου από προεπιλογή +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Στο λογιστικό έμβασμα, ποια είναι η προεπιλεγμένη περίοδος ACCOUNTING_SELL_JOURNAL=Ημερολόγιο πωλήσεων ACCOUNTING_PURCHASE_JOURNAL=Ημερολόγιο αγορών @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Λογαριασμός λογιστικής για τ ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Λογαριασμός λογιστικής για την εγγραφή συνδρομών ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Λογιστικός λογαριασμός από προεπιλογή για εγγραφή κατάθεσης πελάτη -UseAuxiliaryAccountOnCustomerDeposit=Χρησιμοποιήστε δευτερεύοντες λογαριασμούς στις γραμμές καταθέσεων πελατών +UseAuxiliaryAccountOnCustomerDeposit=Αποθηκεύστε τον λογαριασμό πελάτη ως ατομικό λογαριασμό στο καθολικό θυγατρικής για γραμμές προκαταβολών (εάν απενεργοποιηθεί, ο ατομικός λογαριασμός για τις γραμμές προκαταβολών θα παραμείνει κενός) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Λογαριασμός λογιστικής από προεπιλογή για τα αγορασμένα προϊόντα (χρησιμοποιείται αν δεν ορίζεται στο φύλλο προϊόντων) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Λογαριασμός από προεπιλογή για τα προϊόντα που αγοράστηκαν στην ΕΟΚ (χρησιμοποιείται αν δεν ορίζεται στο φύλλο προϊόντος) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Εάν ρυθμίσετε τον λογαριασμ DescVentilDoneExpenseReport=Συμβουλευτείτε εδώ τον κατάλογο των γραμμών των εκθέσεων δαπανών και του λογιστικού λογαριασμού τους Closure=Ετήσιο κλείσιμο -DescClosure=Ενημερωθείτε εδώ για τον αριθμό των κινήσεων ανά μήνα που δεν έχουν ακόμη επικυρωθεί και κλειδωθεί +DescClosure=Δείτε εδώ τον αριθμό των κινήσεων ανά μήνα που δεν έχουν ακόμη επικυρωθεί και κλειδωθεί OverviewOfMovementsNotValidated=Επισκόπηση κινήσεων που δεν έχουν επικυρωθεί και κλειδωθεί AllMovementsWereRecordedAsValidated=Όλες οι κινήσεις καταγράφηκαν ως επικυρωμένες και κλειδωμένες NotAllMovementsCouldBeRecordedAsValidated=Δεν ήταν δυνατό να καταγραφούν όλες οι κινήσεις ως επικυρωμένες και κλειδωμένες @@ -300,7 +300,7 @@ ListOfProductsWithoutAccountingAccount=Κατάλογος προϊόντων π ChangeBinding=Αλλάξτε τη σύνδεση Accounted=Καταχωρήθηκε στο καθολικό NotYetAccounted=Δεν έχει μεταφερθεί ακόμη στη λογιστική -ShowTutorial=Εμφάνιση εκπαιδευτικού προγράμματος +ShowTutorial=Εμφάνιση Οδηγού NotReconciled=Δεν ταιριάζουν WarningRecordWithoutSubledgerAreExcluded=Προειδοποίηση, όλες οι γραμμές χωρίς καθορισμένο λογαριασμό βοηθητικού καθολικού φιλτράρονται και εξαιρούνται από αυτήν την προβολή AccountRemovedFromCurrentChartOfAccount=Λογαριασμός λογιστικής που δεν υπάρχει στο τρέχον λογιστικό σχέδιο @@ -350,7 +350,7 @@ Modelcsv_agiris=Εξαγωγή για Agiris Isacompta Modelcsv_LDCompta=Εξαγωγή για LD Compta (v9) (Δοκιμή) Modelcsv_LDCompta10=Εξαγωγή για LD Compta (v10 και άνω) Modelcsv_openconcerto=Εξαγωγή για OpenConcerto (Test) -Modelcsv_configurable=Εξαγωγή CSV εξαγωγής +Modelcsv_configurable=Εξαγωγή CSV με δυνατότητα διαμόρφωσης Modelcsv_FEC=Εξαγωγή FEC Modelcsv_FEC2=Εξαγωγή FEC (Με γραφή δημιουργίας ημερομηνιών/αντιστροφή εγγράφου) Modelcsv_Sage50_Swiss=Εξαγωγή για Sage 50 Ελβετία @@ -361,12 +361,12 @@ Modelcsv_charlemagne=Εξαγωγή για το Aplim Charlemagne ChartofaccountsId=Λογαριασμός Id ## Tools - Init accounting account on product / service -InitAccountancy=Λογιστική αρχής +InitAccountancy=Έναρξη λογιστικής InitAccountancyDesc=Αυτή η σελίδα μπορεί να χρησιμοποιηθεί για την προετοιμασία ενός λογαριασμού λογιστικής σε προϊόντα και υπηρεσίες που δεν έχουν λογιστικό λογαριασμό που καθορίζεται για τις πωλήσεις και τις αγορές. DefaultBindingDesc=Αυτή η σελίδα μπορεί να χρησιμοποιηθεί για τον ορισμό ενός προεπιλεγμένου λογαριασμού που θα χρησιμοποιηθεί για να συνδέσει τις εγγραφές συναλλαγών σχετικά με τους μισθούς πληρωμής, τη δωρεά, τους φόρους και τις δεξαμενές όταν δεν έχει ήδη καθοριστεί συγκεκριμένος λογαριασμός λογιστικής. DefaultClosureDesc=Αυτή η σελίδα μπορεί να χρησιμοποιηθεί για να ορίσετε τις παραμέτρους που χρησιμοποιούνται για τα λογιστικά κλεισίματα. Options=Επιλογές -OptionModeProductSell=Κατάσταση πωλήσεων +OptionModeProductSell=Λειτουργία πωλήσεων OptionModeProductSellIntra=Mode πωλήσεις που εξάγονται στην ΕΟΚ OptionModeProductSellExport=Mode πωλήσεις που εξάγονται σε άλλες χώρες OptionModeProductBuy=Κατάσταση αγορών @@ -379,11 +379,11 @@ OptionModeProductBuyDesc=Εμφάνιση όλων των προϊόντων μ OptionModeProductBuyIntraDesc=Εμφάνιση όλων των προϊόντων με λογιστικό λογαριασμό για αγορές σε ΕΟΚ. OptionModeProductBuyExportDesc=Εμφάνιση όλων των προϊόντων με λογιστικό λογαριασμό για άλλες αγορές στο εξωτερικό. CleanFixHistory=Αφαιρέστε τον κωδικό λογιστικής από γραμμές που δεν υπάρχουν στο λογιστικό σχέδιο -CleanHistory=Επαναφέρετε όλες τις συνδέσεις για το επιλεγμένο έτος +CleanHistory=Επαναφέρετε όλες τις δεσμεύσεις για το επιλεγμένο έτος PredefinedGroups=Προκαθορισμένες ομάδες WithoutValidAccount=Χωρίς έγκυρο αποκλειστικό λογαριασμό WithValidAccount=Με έγκυρο αποκλειστικό λογαριασμό -ValueNotIntoChartOfAccount=Αυτή η αξία του λογαριασμού λογιστικής δεν υπάρχει στο λογαριασμό λογαριασμού +ValueNotIntoChartOfAccount=Αυτή η αξία λογιστικού λογαριασμού δεν υπάρχει στο λογιστικό σχέδιο AccountRemovedFromGroup=Ο λογαριασμός αφαιρέθηκε από την ομάδα SaleLocal=Τοπική πώληση SaleExport=Εξαγωγική πώληση @@ -427,20 +427,21 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Λυ AccountancyErrorMismatchLetterCode=Αναντιστοιχία στον κώδικα συμφιλίωσης AccountancyErrorMismatchBalanceAmount=Το υπόλοιπο (%s) δεν είναι ίσο με 0 AccountancyErrorLetteringBookkeeping=Παρουσιάστηκαν σφάλματα σχετικά με τις συναλλαγές: %s +ErrorAccountNumberAlreadyExists=Ο λογιστικός αριθμός %s υπάρχει ήδη ## Import ImportAccountingEntries=Λογιστικές εγγραφές ImportAccountingEntriesFECFormat=Λογιστικές εγγραφές - Μορφή FEC FECFormatJournalCode=Kώδικας ημερολογίου (JournalCode) FECFormatJournalLabel=Ετικέτα ημερολογίου (JournalLib) -FECFormatEntryNum=Αριθμός τεμαχίου (EcritureNum) -FECFormatEntryDate=Ημερομηνία τεμαχίου (EcritureDate) +FECFormatEntryNum=Αριθμός καταχώρησης (EcritureNum) +FECFormatEntryDate=Ημερομηνία καταχώρησης (EcritureDate) FECFormatGeneralAccountNumber=Γενικός αριθμός λογαριασμού (CompteNum) FECFormatGeneralAccountLabel=Γενική ετικέτα λογαριασμού (CompteLib) FECFormatSubledgerAccountNumber=Αριθμός λογαριασμού Βοηθητικού καθολικού (CompAuxNum) FECFormatSubledgerAccountLabel=Αριθμός λογαριασμού Βοηθητικού καθολικού (CompAuxLib) -FECFormatPieceRef=Αναφορά τεμαχίου (PieceRef) -FECFormatPieceDate=Δημιουργία ημερομηνίας τεμαχίου (PieceDate) +FECFormatPieceRef=Αναφορά καταχώρησης (PieceRef) +FECFormatPieceDate=Δημιουργία ημερομηνίας καταχώρησης (PieceDate) FECFormatLabelOperation=Λειτουργία ετικέτας (EcritureLib) FECFormatDebit=Χρεωστική (Χρεωστική) FECFormatCredit=Πίστωση (Πίστωση) diff --git a/htdocs/langs/el_GR/admin.lang b/htdocs/langs/el_GR/admin.lang index abd84623bbb..003d5fd12a6 100644 --- a/htdocs/langs/el_GR/admin.lang +++ b/htdocs/langs/el_GR/admin.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - admin BoldRefAndPeriodOnPDF=Εκτύπωση αναφοράς και περιόδου του προϊόντος σε PDF -BoldLabelOnPDF=Εκτυπώστε την ετικέτα του προϊόντος με έντονη γραφή σε PDF +BoldLabelOnPDF=Εκτύπωση ετικέτας του προϊόντος με έντονη γραφή σε PDF Foundation=Οργανισμός Version=Έκδοση Publisher=Εκδότης @@ -34,7 +34,7 @@ PurgeSessions=Διαγραφή συνεδριών ConfirmPurgeSessions=Είστε σίγουροι πως θέλετε να διαγράψετε όλες τις συνεδρίες; Αυτό θα αποσυνδέσει όλους τους χρήστες (εκτός από εσάς). NoSessionListWithThisHandler=Ο φορέας χειρισμού αποθήκευσης συνεδριών που έχει ρυθμιστεί στη PHP σας δεν επιτρέπει την καταχώριση όλων των συνεδριών που εκτελούνται. LockNewSessions=Κλειδώστε τις νέες συνεδρίες -ConfirmLockNewSessions=Είστε βέβαιοι ότι θέλετε να περιορίσετε οποιαδήποτε νέα σύνδεση Dolibarr στον εαυτό σας; Μόνο ο χρήστης %s θα μπορεί να συνδεθεί μετά από αυτό. +ConfirmLockNewSessions=Είστε σίγουροι ότι θέλετε να περιορίσετε οποιαδήποτε νέα σύνδεση Dolibarr στον εαυτό σας; Μόνο ο χρήστης %s θα μπορεί να συνδεθεί μετά από αυτό. UnlockNewSessions=Κατάργηση κλειδώματος σύνδεσης YourSession=Η συνεδρία σας Sessions=Συνεδρίες χρηστών @@ -45,8 +45,8 @@ PermissionsOnFile=Δικαιώματα στο αρχείο %s NoSessionFound=Η διαμόρφωση της PHP σας φαίνεται να μην επιτρέπει την καταχώρηση των ενεργοποιημένων συνεδριών. Ο κατάλογος που χρησιμοποιείται για την αποθήκευση των περιόδων σύνδεσης (%s) μπορεί να προστατεύεται (για παράδειγμα, από τα δικαιώματα των λειτουργικών συστημάτων ή από την οδηγία PHP open_basedir). DBStoringCharset=Σετ χαρακτήρων βάσης δεδομένων για αποθήκευση δεδομένων DBSortingCharset=Σετ χαρακτήρων βάσης δεδομένων για ταξινόμηση δεδομένων -HostCharset=Host charset -ClientCharset=Client charset +HostCharset=Σετ χαρακτήρων κεντρικού υπολογιστή +ClientCharset=Σετ χαρακτήρων πελάτη ClientSortingCharset=Client collation WarningModuleNotActive=Η ενότητα %s πρέπει να ενεργοποιηθεί WarningOnlyPermissionOfActivatedModules=Εδώ φαίνονται μόνο τα δικαιώματα που σχετίζονται μόνο με ενεργοποιημένες ενότητες. Μπορείτε να ενεργοποιήσετε άλλες ενότητες στο Αρχική-> Ρυθμίσεις-> σελίδα Ενότητες / Εφαρμογές. @@ -58,19 +58,19 @@ ExternalUsers=Εξωτερικοί χρήστες UserInterface=Διεπαφή χρήστη GUISetup=Εμφάνιση SetupArea=Ρύθμιση -UploadNewTemplate=Μεταφόρτωση νέου(-ων) προτύπου(-ων) +UploadNewTemplate=Μεταφόρτωση νέου προτύπου FormToTestFileUploadForm=Φόρμα για να δοκιμάσετε την μεταφόρτωση αρχείων (ανάλογα με τις ρυθμίσεις) ModuleMustBeEnabled=Η ενότητα/εφαρμογή %s πρέπει να είναι ενεργοποιημένη ModuleIsEnabled=Η ενότητα/εφαρμογή %s έχει ενεργοποιηθεί IfModuleEnabled=Σημείωση: ναι, είναι αποτελεσματική μόνο αν η ενότητα %s είναι ενεργοποιημένη -RemoveLock=Αφαιρέστε/μετονομάστε το αρχείο %s, αν υπάρχει, για να επιτραπεί η χρήση του εργαλείου ενημέρωσης/εγκατάστασης. +RemoveLock=Αφαίρεση/μετονομασία του αρχείου %s, αν υπάρχει, για να επιτραπεί η χρήση του εργαλείου ενημέρωσης/εγκατάστασης. RestoreLock=Επαναφέρετε το αρχείο %s, με δικαίωμα ανάγνωσης μόνο, για να απενεργοποιηθεί οποιαδήποτε χρήση του εργαλείου ενημέρωσης/εγκατάστασης. SecuritySetup=Διαχείριση Ασφάλειας PHPSetup=Ρύθμιση PHP OSSetup=Ρύθμιση λειτουργικού συστήματος SecurityFilesDesc=Καθορίστε εδώ τις επιλογές που σχετίζονται με την ασφαλή μεταφόρτωση αρχείων. ErrorModuleRequirePHPVersion=Λάθος, αυτή η ενότητα απαιτεί έκδοση PHP %s ή μεγαλύτερη -ErrorModuleRequireDolibarrVersion=Λάθος, αυτό το module απαιτεί Dolibarr έκδοση %s ή μεγαλύτερη +ErrorModuleRequireDolibarrVersion=Λάθος, αυτό η ενότητα απαιτεί έκδοση Dolibarr %s ή μεγαλύτερη ErrorDecimalLargerThanAreForbidden=Λάθος, ακρίβεια μεγαλύτερη από %s δεν υποστηρίζεται. DictionarySetup=Ρύθμιση λεξικού Dictionary=Λεξικά @@ -89,10 +89,10 @@ NotAvailableWhenAjaxDisabled=Δεν είναι διαθέσιμο όταν η Aj AllowToSelectProjectFromOtherCompany=Σε έγγραφο τρίτου μέρους, μπορείτε να επιλέξετε ένα έργο συνδεδεμένο με άλλο τρίτο μέρος TimesheetPreventAfterFollowingMonths=Αποτρέψτε την καταγραφή χρόνου μετά τον επόμενο αριθμό μηνών JavascriptDisabled=Η JavaScript είναι απενεργοποιημένη -UsePreviewTabs=Χρήση καρτελών προ επισκόπησης -ShowPreview=Εμφάνιση προ επισκόπησης +UsePreviewTabs=Χρήση καρτελών προεπισκόπησης +ShowPreview=Εμφάνιση προεπισκόπησης ShowHideDetails=Εμφάνιση-Απόκρυψη λεπτομερειών -PreviewNotAvailable=Η προ επισκόπηση δεν είναι διαθέσιμη +PreviewNotAvailable=Η προεπισκόπηση δεν είναι διαθέσιμη ThemeCurrentlyActive=Ενεργό θέμα εμφάνισης MySQLTimeZone=TimeZone MySql (βάση δεδομένων) TZHasNoEffect=Οι ημερομηνίες αποθηκεύονται και επιστρέφονται από τον διακομιστή της βάσης δεδομένων σαν να είχαν διατηρηθεί ως υποβληθείσα συμβολοσειρά. Η ζώνη ώρας ισχύει μόνο όταν χρησιμοποιείται η συνάρτηση UNIX_TIMESTAMP (που δεν πρέπει να χρησιμοποιείται από το Dolibarr, επομένως η βάση δεδομένων TZ δεν θα πρέπει να έχει αποτέλεσμα, ακόμη και αν άλλαξε μετά την εισαγωγή δεδομένων). @@ -109,11 +109,11 @@ NextValueForReplacements=Επόμενη αξία (αντικατάστασης) MustBeLowerThanPHPLimit=Σημείωση: η διαμόρφωση της PHP περιορίζει αυτήν τη στιγμή το μέγιστο μέγεθος αρχείου για μεταφόρτωση σε %s %s, ανεξάρτητα από την τιμή αυτής της παραμέτρου NoMaxSizeByPHPLimit=Σημείωση: Κανένα όριο δεν έχει οριστεί στη διαμόρφωση της PHP MaxSizeForUploadedFiles=Μέγιστο μέγεθος για μεταφόρτωση αρχείων (0 για την απενεργοποίηση μεταφορτώσεων) -UseCaptchaCode=Χρησιμοποιήστε το γραφικό κώδικα (CAPTCHA) στη σελίδα εισόδου +UseCaptchaCode=Χρησιμοποιήστε γραφικό κώδικα (CAPTCHA) στη σελίδα σύνδεσης και σε ορισμένες δημόσιες σελίδες AntiVirusCommand=Πλήρης διαδρομή για την εντολή του antivirus -AntiVirusCommandExample=Παράδειγμα για το ClamAv (απαιτείται το clamav-daemon): / usr / bin / clamdscan
Παράδειγμα για το ClamWin (πολύ αργό): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe -AntiVirusParam= Περισσότερες παράμετροι στην γραμμή εντολής -AntiVirusParamExample=Παράδειγμα για το ClamAv Daemon: --fdpass
Παράδειγμα για το ClamWin: --database = "C: \\ Program Files (x86) \\ ClamWin \\ lib" +AntiVirusCommandExample=Παράδειγμα για το ClamAv (απαιτείται το clamav-daemon): / usr/bin/clamdscan
Παράδειγμα για το ClamWin (πολύ αργό): c: \\ Progra ~ 1\\ ClamWin\\ bin\\clamscan.exe +AntiVirusParam= Περισσότερες παράμετροι στην γραμμή εντολών +AntiVirusParamExample=Παράδειγμα για το ClamAv Daemon: --fdpass
Παράδειγμα για το ClamWin: --database = "C:\\Program Files (x86)\\ClamWin\\lib" ComptaSetup=Ρύθμιση Λογιστικής ενότητας UserSetup=Ρύθμιση χρήστη MultiCurrencySetup=Ρύθμιση πολλαπλών νομισμάτων @@ -140,8 +140,8 @@ OSTZ=Ζώνη ώρας του λειτουργικού συστήματος το PHPTZ=Ζώνη Ώρας διακομιστή PHP DaylingSavingTime=Η θερινή ώρα (χρήστη) CurrentHour=Ώρα PHP (server) -CurrentSessionTimeOut=Χρονικό όριο περιόδου λειτουργίας τρέχουσας συνοδού -YouCanEditPHPTZ=Για να ορίσετε μια διαφορετική ζώνη ώρας PHP (δεν απαιτείται), μπορείτε να προσπαθήσετε να προσθέσετε ένα αρχείο .htaccess με μια γραμμή όπως αυτή "SetEnv TZ Europe / Paris"\n +CurrentSessionTimeOut=Λήξη τρέχουσας σύνδεσης +YouCanEditPHPTZ=Για να ορίσετε μια διαφορετική ζώνη ώρας PHP (δεν απαιτείται), μπορείτε να προσπαθήσετε να προσθέσετε ένα αρχείο .htaccess με μια γραμμή όπως αυτή "SetEnv TZ Europe/Paris"\n HoursOnThisPageAreOnServerTZ=Προειδοποίηση, σε αντίθεση με άλλες οθόνες, οι ώρες σε αυτήν τη σελίδα δεν βρίσκονται στην τοπική ζώνη ώρας, αλλά στη ζώνη ώρας του διακομιστή. Box=Γραφικό στοιχείο Boxes=Γραφικά στοιχεία @@ -202,7 +202,7 @@ AddDropTable=Προσθήκη εντολής DROP TABLE ExportStructure=Δομή NameColumn=Ονόματα Στηλών ExtendedInsert=Εκτεταμένη INSERT -NoLockBeforeInsert=Δεν υπάρχουν εντολές κλειδώματος ασφαλείας γύρω από INSERT +NoLockBeforeInsert=No lock commands around INSERT DelayedInsert=Delayed insert EncodeBinariesInHexa=Κωδικοποίηση δυαδικών δεδομένων σε δεκαεξαδική IgnoreDuplicateRecords=Αγνόηση σφαλμάτων διπλότυπων εγγραφών (INSERT IGNORE) @@ -229,7 +229,7 @@ SeeSetupOfModule=Δείτε στην ρύθμιση της ενότητας %s SetOptionTo=Ορίστε την επιλογή %s σε %s Updated=Ενημερωμένο AchatTelechargement=Αγόρασε / Μεταφόρτωσε -GoModuleSetupArea=Για να αναπτύξετε/εγκαταστήσετε μια νέα ενότητα, μεταβείτε στον τομέα ρύθμισης μονάδας: %s . +GoModuleSetupArea=Για να αναπτύξετε/εγκαταστήσετε μια νέα ενότητα, μεταβείτε στον τομέα ρύθμισης ενοτήτων: %s . DoliStoreDesc=DoliStore, η επίσημη αγορά για εξωτερικές ενότητες Dolibarr ERP/CRM DoliPartnersDesc=Κατάλογος εταιρειών που παρέχουν προσαρμοσμένες ενότητες ή δυνατότητες.
Σημείωση: δεδομένου ότι το Dolibarr είναι μια εφαρμογή ανοιχτού κώδικα, οποιοσδήποτε έμπειρος στον προγραμματισμό PHP θα πρέπει να ειναι ικανός να αναπτύξει μία ενότητα. WebSiteDesc=Εξωτερικοί ιστότοποι για περισσότερες ενότητες ... @@ -246,7 +246,7 @@ AvailableOnlyIfJavascriptAndAjaxNotDisabled=Διατίθεται μόνο εάν Required=Υποχρεωτικό UsedOnlyWithTypeOption=Χρησιμοποιείται μόνο από κάποια επιλογή της ατζέντας Security=Ασφάλεια -Passwords=Συνθηματικά +Passwords=Κωδικοί πρόσβασης DoNotStoreClearPassword=Κρυπτογράφηση κωδικών πρόσβασης που είναι αποθηκευμένοι στη βάση δεδομένων (ΟΧΙ ως απλό κείμενο). Συνιστάται ανεπιφύλακτα να ενεργοποιήσετε αυτήν την επιλογή. MainDbPasswordFileConfEncrypted=Κρυπτογράφηση κωδικού πρόσβασης βάσης δεδομένων που είναι αποθηκευμένος στο conf.php. Συνιστάται ανεπιφύλακτα να ενεργοποιήσετε αυτήν την επιλογή. InstrucToEncodePass=Για κρυπτογραφημένο κωδικό στο αρχείο conf.php, κάντε αντικατάσταση στη γραμμή
$dolibarr_main_db_pass="...";
με
$dolibarr_main_db_pass="crypted:%s"; @@ -284,22 +284,22 @@ Content=Περιεχόμενο ContentForLines=Περιεχόμενο προς εμφάνιση για κάθε προϊόν ή υπηρεσία (από τη μεταβλητή __ΓΡΑΜΜΕΣ__ Περιεχομένου) NoticePeriod=Περίοδος υποβολής αίτησης NewByMonth=Νέο ανά μήνα -Emails=Ηλεκτρονικά μηνύματα -EMailsSetup=Ρύθμιση ηλεκτρονικού ταχυδρομείου +Emails=Emails +EMailsSetup=Ρύθμιση Email EMailsDesc=Αυτή η σελίδα σας επιτρέπει να ορίσετε τις παραμέτρους η επιλογές για αποστολή email. -EmailSenderProfiles=Προφίλ αποστολέων ηλεκτρονικού ταχυδρομείου -EMailsSenderProfileDesc=Μπορείτε να αφήσετε αυτή την ενότητα κενή. Αν εισάγετε email, εδώ θα προστεθούν στη λίστα πιθανών αποστολέων όταν γράφετε ένα νέο email. +EmailSenderProfiles=Προφίλ αποστολέων Email +EMailsSenderProfileDesc=Μπορείτε να αφήσετε αυτή την ενότητα κενή. Αν εισάγετε email εδώ, θα προστεθούν στη λίστα πιθανών αποστολέων όταν γράφετε ένα νέο email. MAIN_MAIL_SMTP_PORT=Θύρα SMTP / SMTPS (προεπιλεγμένη τιμή στο php.ini: %s ) MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (προεπιλεγμένη τιμή στο php.ini: %s ) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Θύρα SMTP / SMTPS (Δεν έχει οριστεί σε PHP σε συστήματα τύπου Unix) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP / SMTPS Host (Δεν έχει οριστεί σε PHP σε συστήματα τύπου Unix) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=Θύρα SMTP / SMTPS (Δεν έχει οριστεί στην PHP σε συστήματα τύπου Unix) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP / SMTPS Host (Δεν έχει οριστεί στην PHP σε συστήματα τύπου Unix) MAIN_MAIL_EMAIL_FROM=Email αποστολέα για αυτόματα μηνύματα ηλεκτρονικού ταχυδρομείου (προεπιλεγμένη τιμή στο php.ini: %s ) MAIN_MAIL_ERRORS_TO=Το Email που χρησιμοποιείται για σφάλματα επιστρέφει τα email (με πεδία 'Errors-To' στα απεσταλμένα email) -MAIN_MAIL_AUTOCOPY_TO= Αντιγράψτε (Bcc) όλα τα emails που στάλθηκαν +MAIN_MAIL_AUTOCOPY_TO= Αντιγράψτε (Bcc Κρυφή κοινοποίηση) όλα τα αποσταλμένα email στο MAIN_DISABLE_ALL_MAILS=Απενεργοποιήστε όλες τις αποστολές ηλεκτρονικού ταχυδρομείου (για δοκιμαστικούς σκοπούς ή demos) MAIN_MAIL_FORCE_SENDTO=Στείλτε όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου σε (αντί για πραγματικούς παραλήπτες, για σκοπούς δοκιμής) MAIN_MAIL_ENABLED_USER_DEST_SELECT=Προτείνετε email υπάλληλων σας (εάν έχουν οριστεί) στη λίστα των προκαθορισμένων παραληπτών κατά τη σύνταξη ενός νέου email -MAIN_MAIL_SENDMODE=Μέθοδος αποστολής ηλεκτρονικού ταχυδρομείου +MAIN_MAIL_SENDMODE=Μέθοδος αποστολής Email MAIN_MAIL_SMTPS_ID=Αναγνωριστικό SMTP (αν ο διακομιστής αποστολής απαιτεί έλεγχο ταυτότητας) MAIN_MAIL_SMTPS_PW=Κωδικός πρόσβασης SMTP (εάν ο διακομιστής αποστολής απαιτεί έλεγχο ταυτότητας) MAIN_MAIL_EMAIL_TLS=Χρησιμοποιήστε κρυπτογράφηση TLS (SSL) @@ -317,10 +317,10 @@ UserEmail=Email χρήστη CompanyEmail=Email εταιρείας FeatureNotAvailableOnLinux=Αυτή η λειτουργία δεν είναι διαθέσιμη σε συστήματα τυπου Unix. Δοκιμάστε το πρόγραμμα sendmail τοπικά. FixOnTransifex=Διορθώστε τη μετάφραση στην ηλεκτρονική πλατφόρμα μετάφρασης του Dolibarr -SubmitTranslation=Εάν η μετάφραση για αυτήν τη γλώσσα δεν είναι πλήρης ή εντοπίσετε σφάλματα, μπορείτε να τα διορθώσετε τοπικά με την επεξεργασία αρχείων στον κατάλογο langs / %s και στη συνέχεια να υποβάλετε την αλλαγή σας στο www.transifex.com/dolibarr-association/dolibarr/ -SubmitTranslationENUS=Εάν η μετάφραση για αυτήν τη γλώσσα δεν έχει ολοκληρωθεί ή εντοπίσετε σφάλματα, μπορείτε να τα διορθώσετε τοπικά επεξεργαζόμενοι αρχεία στον κατάλογο langs/%s και να υποβάλετε τροποποιημένα αρχεία στο dolibarr.org/forum ή, εάν είστε προγραμματιστής με ενα PR στο github.com/Dolibarr/dolibarr +SubmitTranslation=Εάν η μετάφραση για αυτήν τη γλώσσα δεν είναι πλήρης ή αν εντοπίσετε σφάλματα, μπορείτε να τα διορθώσετε τοπικά με την επεξεργασία αρχείων στον κατάλογο langs / %s και στη συνέχεια να υποβάλετε την αλλαγή σας στο www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslationENUS=Εάν η μετάφραση για αυτήν τη γλώσσα δεν έχει ολοκληρωθεί ή αν εντοπίσετε σφάλματα, μπορείτε να τα διορθώσετε τοπικά επεξεργαζόμενοι αρχεία στον κατάλογο langs/%s και να υποβάλετε τροποποιημένα αρχεία στο dolibarr.org/forum ή, εάν είστε προγραμματιστής με ενα PR στο github.com/Dolibarr/dolibarr ModuleSetup=Ρύθμιση ενότητας -ModulesSetup=Ρύθμιση ενότητες/εφαρμογές +ModulesSetup=Ρύθμιση ενοτήτων/εφαρμογών ModuleFamilyBase=Σύστημα ModuleFamilyCrm=Διαχείριση Πελατειακών Σχέσεων (CRM) ModuleFamilySrm=Διαχείριση σχέσεων προμηθευτών (VRM) @@ -347,7 +347,7 @@ UnpackPackageInModulesRoot=Για να αναπτύξετε/εγκαταστήσ SetupIsReadyForUse=Η εγκατάσταση της ενότητας ολοκληρώθηκε. Ωστόσο, πρέπει να ενεργοποιήσετε και να ρυθμίσετε την ενότητα στην εφαρμογή σας μεταβαίνοντας στη σελίδα: %s . NotExistsDirect=Ο εναλλακτικός ριζικός κατάλογος δεν έχει οριστεί σε έναν υπάρχοντα κατάλογο.
InfDirAlt=Από την έκδοση 3 και μετά, είναι δυνατό να οριστεί ένας εναλλακτικός ριζικός κατάλογος. Αυτό σας επιτρέπει να αποθηκεύετε, σε έναν αποκλειστικό κατάλογο, πρόσθετα και προσαρμοσμένα πρότυπα.
Απλώς δημιουργήστε έναν κατάλογο στη ρίζα του Dolibarr (π.χ.: custom).
-InfDirExample=
Στη συνέχεια καταχωρίστε τα παρακάτω στο αρχείο conf.php
$ dolibarr_main_url_root_alt = '/ custom'
$ dolibarr_main_document_root_alt = '/ path / του / Dolibarr / htdocs / custom'
Αν αυτές οι γραμμές υπάρχουν και "σχολιασμένες" εχουν ενα "#" στην αρχή, για να ενεργοποιηθούν , απλώς καταργήστε το σχόλιο αφαιρώντας τον χαρακτήρα "#". +InfDirExample=
Στη συνέχεια καταχωρίστε τα στο αρχείο conf.php
$ dolibarr_main_url_root_alt = '/custom'
$ dolibarr_main_document_root_alt = '/path/του/Dolibarr/htdocs/custom'
Αν αυτές οι γραμμές ειναι "σχολιασμένες" έχουν δηλαδή ενα "#" στην αρχή, για να ενεργοποιηθούν , απλώς καταργήστε το σχόλιο αφαιρώντας τον χαρακτήρα "#". YouCanSubmitFile=Μπορείτε να ανεβάσετε το αρχείο .zip του πακέτου ενότητας από εδώ: CurrentVersion=Έκδοση Dolibarr CallUpdatePage=Περιηγηθείτε στη σελίδα που ενημερώνει τη δομή και τα δεδομένα της βάσης δεδομένων: %s. @@ -361,11 +361,11 @@ WithCounter=Διαχειριστείτε έναν μετρητή GenericMaskCodes=Μπορείτε να εισάγετε οποιαδήποτε μάσκα αρίθμησης. Σε αυτήν τη μάσκα, μπορούν να χρησιμοποιηθούν οι ακόλουθες ετικέτες:
{000000} αντιστοιχεί σε έναν αριθμό που θα αυξάνεται σε κάθε %s. Εισάγετε τόσα μηδενικά όσο το επιθυμητό μήκος του μετρητή. Ο μετρητής θα συμπληρώνεται με μηδενικά από τα αριστερά για να υπάρχουν τόσα μηδενικά όσα η μάσκα.
{000000+000} ίδια με την προηγούμενη αλλά εφαρμόζεται μια μετατόπιση που αντιστοιχεί στον αριθμό στα δεξιά του πρόσημου + ξεκινώντας από το πρώτο %s.
{000000@x} ίδια με την προηγούμενη, αλλά ο μετρητής μηδενίζεται όταν φτάσει ο μήνας x (x μεταξύ 1 και 12, ή 0 για να χρησιμοποιήσετε τους πρώτους μήνες του οικονομικού έτους που ορίζονται στην παραμετροποίηση σας, η 99 για να μηδενίζεται κάθε μήνα). Εάν χρησιμοποιείται αυτή η επιλογή και το x είναι 2 ή μεγαλύτερο, τότε απαιτείται επίσης η ακολουθία {yy}{mm} ή {yyyy}{mm}.
{dd} ημέρα (01 έως 31).
{mm} μήνας (01 έως 12).
{εε} , {yyyy} ή {ε}έτος με χρήση 2, 4 ή 1 αριθμού
GenericMaskCodes2= {cccc} ο κωδικός πελάτη σε n χαρακτήρες
{cccc000}ο κωδικός πελάτη σε n χαρακτήρες ακολουθείται από ένα μετρητή αποκλειστικά για τον πελάτη. Αυτός ο μετρητής που είναι αφιερωμένος στον πελάτη επαναφέρεται ταυτόχρονα με τον καθολικό μετρητή.
{tttt} Ο κωδικός τύπου τρίτου μέρους σε n χαρακτήρες (βλ. μενού Αρχική - Ρυθμίσεις - Λεξικό - Τύποι τρίτων). Εάν προσθέσετε αυτήν την ετικέτα, ο μετρητής θα είναι διαφορετικός για κάθε τύπο τρίτου μέρους.
GenericMaskCodes3=Όλοι οι άλλοι χαρακτήρες στην μάσκα θα παραμείνουν ίδιοι.
Κενά διαστήματα δεν επιτρέπονται.
-GenericMaskCodes3EAN=Όλοι οι άλλοι χαρακτήρες στη μάσκα θα παραμείνουν άθικτοι (εκτός από το * ή το ? στην 13η θέση στο EAN13).
Δεν επιτρέπονται κενά.
Στο EAN13, ο τελευταίος χαρακτήρας μετά την τελευταία } στην 13η θέση θα πρέπει να είναι * ή ? . Θα αντικατασταθεί από το κλειδί υπολογισμού.
+GenericMaskCodes3EAN=Όλοι οι άλλοι χαρακτήρες στη μάσκα θα παραμείνουν ίδιοι (εκτός από το * ή το ? στην 13η θέση στο EAN13).
Δεν επιτρέπονται κενά.
Στο EAN13, ο τελευταίος χαρακτήρας μετά την τελευταία } στην 13η θέση θα πρέπει να είναι * ή ? . Θα αντικατασταθεί από το κλειδί υπολογισμού.
GenericMaskCodes4a=Παράδειγμα για το 99ο %s του τρίτου μέρους TheCompany, με ημερομηνία 31-01-2007:
GenericMaskCodes4b=Παράδειγμα του τρίτου μέρους που δημιουργήθηκε στις 01-03-2007:
GenericMaskCodes4c=Παράδειγμα του προϊόντος που δημιουργήθηκε στις 01-03-2007:
-GenericMaskCodes5= ABC{yy} {mm}-{000000} θα δώσει ABC0701-000099
{0000+100@1} -ZZZ / {dd}/XXX θα δώσει 0199-ΖΖΖ/31/XXX
IN{yy}{dd}-{0000}-{t} θα δώσει το IN0701-0099-AΑν είναι ο τύπος της εταιρείας ειναι 'Responsable Inscripto' με κωδικό για τύπο που ειναι 'A_RI' +GenericMaskCodes5= ABC{yy} {mm}-{000000} θα δώσει ABC0701-000099
{0000+100@1} -ZZZ / {dd}/XXX θα δώσει 0199-ΖΖΖ/31/XXX
IN{yy}{dd}-{0000}-{t} θα δώσει το IN0701-0099-AΑν ο τύπος της εταιρείας ειναι 'Responsable Inscripto' με κωδικό για τύπο που ειναι 'A_RI' GenericNumRefModelDesc=Επιστρέφει έναν παραμετροποιήσημο αριθμό σύμφωνα με μία ορισμένη μάσκα. ServerAvailableOnIPOrPort=Ο διακομιστής είναι διαθέσιμος στην διεύθυνση %s στην θύρα %s ServerNotAvailableOnIPOrPort=Ο διακομιστής δεν είναι διαθέσιμος στην διεύθυνση %s στην θύρα %s @@ -381,7 +381,7 @@ UseACacheDelay= Καθυστέρηση για την ανταπόκριση εξ DisableLinkToHelpCenter=Απόκρυψη του συνδέσμου " Χρειάζεστε βοήθεια ή υποστήριξη " στη σελίδα σύνδεσης DisableLinkToHelp=Απόκρυψη του συνδέσμου προς την ηλεκτρονική βοήθεια " %s " AddCRIfTooLong=Δεν υπάρχει αυτόματη αναδίπλωση κειμένου, το κείμενο που είναι πολύ μεγάλο δεν θα εμφανιστεί στα έγγραφα. Παρακαλώ προσθέστε επιστροφές μεταφοράς στην περιοχή κειμένου, αν χρειαστεί. -ConfirmPurge=Είστε βέβαιοι ότι θέλετε να εκτελέσετε αυτή την εκκαθάριση;
Αυτό θα διαγράψει οριστικά όλα τα αρχεία δεδομένων σας χωρίς τρόπο να τα επαναφέρετε (αρχεία ECM, συνημμένα αρχεία ...). +ConfirmPurge=Είστε σίγουροι ότι θέλετε να εκτελέσετε αυτή την εκκαθάριση;
Αυτό θα διαγράψει οριστικά όλα τα αρχεία δεδομένων σας χωρίς τρόπο να τα επαναφέρετε (αρχεία ECM, συνημμένα αρχεία ...). MinLength=Ελάχιστο μήκος LanguageFilesCachedIntoShmopSharedMemory=Τα αρχεία τύπου .lang έχουν φορτωθεί στην κοινόχρηστη μνήμη LanguageFile=Αρχείο γλώσσας @@ -418,7 +418,7 @@ HideDetailsOnPDF=Απόκρυψη λεπτομερειών γραμμών προ PlaceCustomerAddressToIsoLocation=Χρησιμοποιήστε τη γαλλική τυπική θέση (La Poste) για τη θέση της διεύθυνσης πελατών Library=Βιβλιοθήκη UrlGenerationParameters=Παράμετροι για δημιουργία ασφαλών URL -SecurityTokenIsUnique=Χρησιμοποιήστε ένα μοναδικό Security Token για κάθε διεύθυνση URL +SecurityTokenIsUnique=Χρησιμοποιήστε μια μοναδική παράμετρο κλειδιού ασφαλείας για κάθε σύνδεσμο EnterRefToBuildUrl=Εισαγάγετε αναφορά για το αντικείμενο %s GetSecuredUrl=Πάρτε υπολογιζόμενο URL ButtonHideUnauthorized=Απόκρυψη κουμπιών μη εξουσιοδοτημένων ενεργειών και για εσωτερικούς χρήστες (διαφορετικά απλώς απενεργοποιημένα ) @@ -429,10 +429,10 @@ MassConvert=Ξεκινήστε τη μαζική μετατροπή PriceFormatInCurrentLanguage=Μορφή τιμής στην τρέχουσα γλώσσα String=String String1Line=Συμβολοσειρά (1 γραμμή) -TextLong=Long text +TextLong=Μεγάλο κείμενο TextLongNLines=Μεγάλο κείμενο (n γραμμές) -HtmlText=Html κείμενο -Int=Integer +HtmlText=Κείμενο HTML +Int=Ακέραιος αριθμός Float=Float DateAndTime=Ημερομηνία και ώρα Unique=Μοναδικό @@ -450,17 +450,17 @@ ExtrafieldCheckBox=Πλαίσια ελέγχου ExtrafieldCheckBoxFromList=Πλαίσια ελέγχου από τον πίνακα ExtrafieldLink=Σύνδεσμος με ένα αντικείμενο ComputedFormula=Υπολογισμένο πεδίο -ComputedFormulaDesc=Μπορείτε να εισαγάγετε εδώ έναν τύπο χρησιμοποιώντας άλλες ιδιότητες αντικειμένου ή οποιαδήποτε κωδικοποίηση PHP για να λάβετε μια δυναμική υπολογισμένη τιμή. Μπορείτε να χρησιμοποιήσετε οποιονδήποτε τύπο συμβατό με PHP, συμπεριλαμβανομένου του "?" τελεστής συνθηκών και ακόλουθο καθολικό αντικείμενο: $ db, $ conf, $ langs, $ mysoc, $ user, $ object .
ΠΡΟΕΙΔΟΠΟΙΗΣΗ : Μόνο ορισμένες ιδιότητες του αντικειμένου $ ενδέχεται να είναι διαθέσιμες. Εάν χρειάζεστε ιδιότητες που δεν έχουν φορτωθεί, απλώς φέρετε στον εαυτό σας το αντικείμενο στον τύπο σας, όπως στο δεύτερο παράδειγμα.
Η χρήση ενός υπολογισμένου πεδίου σημαίνει ότι δεν μπορείτε να εισαγάγετε στον εαυτό σας καμία τιμή από τη διεπαφή. Επίσης, εάν υπάρχει σφάλμα σύνταξης, ο τύπος ενδέχεται να μην επιστρέψει τίποτα.

Παράδειγμα τύπου:
$ αντικείμενο-> id < 10 ? round($object-> id / 2, 2): ($ αντικείμενο-> id + 2 * $ user-> id) * (int) substr ($ mysoc-> zip, 1, )

Παράδειγμα επαναφόρτωσης αντικειμένου
(($ reloadedobj = new Societe ($ db)) && ($ reloadedobj-> fetchNoCompute ($ obj-> id? $ obj-> id - $ $ > rowid: $ αντικείμενο-> id))> 0)); $ reloadedobj-> array_options ['options_extrafieldkey'] * $ reloadedobj-> capital / 5: '-1'

Άλλο παράδειγμα φόρμουλας για την επιβολή φόρτου του αντικειμένου και του γονικού αντικειμένου:
(($ reloadedobj ) && ($ reloadedobj-> fetchNoCompute ($ object-> id)> 0) && ($ secondloadedobj = new Project ($ db)) && ($ secondloadedobj-> fetchNoCompute ($ reloadedobj-> fk_project)> 0)); $ secondloadedobj-> ref: "Το γονικό έργο δεν βρέθηκε" -Computedpersistent=Αποθηκεύστε το υπολογισμένο πεδίο -ComputedpersistentDesc=Τα υπολογισμένα επιπλέον πεδία θα αποθηκευτούν στη βάση δεδομένων, ωστόσο, η τιμή θα υπολογιστεί εκ νέου μόνο όταν αλλάξει το αντικείμενο αυτού του πεδίου. Εάν το υπολογιζόμενο πεδίο εξαρτάται από άλλα αντικείμενα ή παγκόσμια δεδομένα, αυτή η τιμή μπορεί να είναι λάθος! -ExtrafieldParamHelpPassword=Αφήνοντας αυτό το πεδίο κενό σημαίνει ότι αυτή η τιμή θα αποθηκευτεί χωρίς κρυπτογράφηση (το πεδίο πρέπει να κρυφτεί μόνο με το αστέρι στην οθόνη).
Ρυθμίστε 'auto' για να χρησιμοποιήσετε τον προεπιλεγμένο κανόνα κρυπτογράφησης για να αποθηκεύσετε τον κωδικό πρόσβασης στη βάση δεδομένων (τότε η ανάγνωση της τιμής θα είναι μόνο ο κατακερματισμός, κανένας τρόπος για να ανακτήσετε την αρχική τιμή) -ExtrafieldParamHelpselect=Η λίστα των τιμών πρέπει να είναι γραμμές με βασικό σχήμα, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1, value1
2, value2
code3, value3
...

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα χαρακτηριστικών:
1, value1 | options_parent_list_code: parent_key
2, value2 | options_parent_list_code: parent_key

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη λίστα:
1, value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=Η λίστα των τιμών πρέπει να είναι γραμμές με βασικό σχήμα, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1,value1
2,value2
3, value3
... +ComputedFormulaDesc=Μπορείτε να εισαγάγετε εδώ έναν τύπο χρησιμοποιώντας άλλες ιδιότητες αντικειμένου ή οποιαδήποτε κωδικοποίηση PHP για να λάβετε μια δυναμικά υπολογισμένη τιμή. Μπορείτε να χρησιμοποιήσετε οποιουσδήποτε τύπους συμβατούς με PHP, συμπεριλαμβανομένου του τελεστή συνθήκης "?" και το ακόλουθο καθολικό αντικείμενο: $db, $conf, $langs, $mysoc, $user, $object .
ΠΡΟΕΙΔΟΠΟΙΗΣΗ : Μόνο ορισμένες ιδιότητες του $object ενδέχεται να είναι διαθέσιμες. Εάν χρειάζεστε ιδιότητες που δεν έχουν φορτωθεί, απλώς συμπεριλάβετε το αντικείμενο στον τύπο σας όπως στο δεύτερο παράδειγμα.
Η χρήση ενός υπολογιστικού πεδίου σημαίνει ότι δεν μπορείτε να εισαγάγετε καμία τιμή από τη διεπαφή. Επίσης, εάν υπάρχει συντακτικό σφάλμα, ο τύπος ενδέχεται να μην επιστρέψει τίποτα.

Παράδειγμα τύπου:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Παράδειγμα για επαναφόρτωση του αντικειμένου
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Άλλο παράδειγμα τύπου για την επιβολή φόρτωσης του αντικειμένου και του γονικού του αντικειμένου:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +Computedpersistent=Αποθήκευση υπολογισμένου πεδίου +ComputedpersistentDesc=Τα υπολογισμένα επιπλέον πεδία θα αποθηκευτούν στη βάση δεδομένων, ωστόσο, η τιμή θα επανυπολογιστεί μόνο όταν αλλάξει το αντικείμενο αυτού του πεδίου. Εάν το υπολογισμένο πεδίο εξαρτάται από άλλα αντικείμενα ή καθολικά δεδομένα, αυτή η τιμή μπορεί να είναι λανθασμένη!! +ExtrafieldParamHelpPassword=Αφήνοντας αυτό το πεδίο κενό σημαίνει ότι αυτή η τιμή θα αποθηκευτεί χωρίς κρυπτογράφηση (το πεδίο πρέπει να είναι κρυμμένο μόνο από αστεράκια στην οθόνη).
Ρυθμίστε σε 'auto' για να χρησιμοποιήσετε τον προεπιλεγμένο κανόνα κρυπτογράφησης και να αποθηκεύσετε τον κωδικό πρόσβασης στη βάση δεδομένων (τότε θα είναι αναγνώσιμο μόνο το hash της τιμής και δεν υπάρχει κανένας τρόπος για να ανακτήσετε την αρχική τιμή) +ExtrafieldParamHelpselect=Η λίστα των τιμών πρέπει να είναι γραμμές με βασική μορφή, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1, value1
2, value2
code3, value3
...

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα χαρακτηριστικών:
1, value1 | options_parent_list_code: parent_key
2, value2 | options_parent_list_code: parent_key

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη λίστα:
1, value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=Η λίστα των τιμών πρέπει να είναι γραμμές με βασική μορφή, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1,value1
2,value2
3, value3
... ExtrafieldParamHelpradio=Η λίστα των τιμών πρέπει να είναι γραμμές με βασικό σχήμα, key,value (όπου το key δεν μπορεί να είναι «0»)

για παράδειγμα:
1,value1
2,value2
3, value3
... ExtrafieldParamHelpsellist=Η λίστα τιμών προέρχεται από έναν πίνακα
Σύνταξη: table_name:label_field:id_field::filtersql
Παράδειγμα: c_typent:libelle:id::filtersql

- id_field ειναι οπωσδήποτε ένα primary int key
- filtersql is a SQL condition.Μπορεί να είναι μια απλή δοκιμή (π.χ. active=1) για να εμφανιστεί μόνο η ενεργή τιμή
Μπορείτε επίσης να χρησιμοποιήσετε το $ID$ στο φίλτρο που είναι το τρέχον αναγνωριστικό του τρέχοντος αντικειμένου
Για να χρησιμοποιήσετε ένα SELECT στο φίλτρο χρησιμοποιήστε τη λέξη-κλειδί $SEL$ για την παράκαμψη προστασίας anti-injection.
εάν θέλετε να φιλτράρετε σε extrafields, χρησιμοποιήστε τη σύνταξη extra.fieldcode=... (όπου ο κωδικός πεδίου είναι ο κωδικός του extrafield)

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα χαρακτηριστικών:
c_typent:libelle:id:options_parent_list_code|parent_column: φίλτρο

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη:
c_typent: Libelle: id:parent_list_code |parent_column:filter ExtrafieldParamHelpchkbxlst=Η λίστα τιμών προέρχεται από έναν πίνακα
Σύνταξη: table_name:label_field:id_field::filtersql
Παράδειγμα: c_typent:libelle:id::filtersql

το φίλτρο μπορεί να είναι μια απλή δοκιμή (π.χ. active=1) για να εμφανιστεί μόνο η ενεργή τιμή
Μπορείτε επίσης να χρησιμοποιήσετε το $ID$ στο φίλτρο που είναι το τρέχον αναγνωριστικό του τρέχοντος αντικειμένου
Για να κάνετε SELECT στο φίλτρο χρησιμοποιήστε το $SEL$
εάν θέλετε να φιλτράρετε σε extrafields, χρησιμοποιήστε τη σύνταξη extra.fieldcode=... (όπου ο κωδικός πεδίου είναι ο κωδικός του extrafield)

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη συμπληρωματική λίστα:
c_typent: Libelle: id: options_ parent_list_code|parent_column:filter

Για να μπορεί η λίστα να ειναι εξαρτώμενη από μια άλλη:
c_typent: libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:ClasspathSyntax:
ObjectName:Classpath -ExtrafieldParamHelpSeparator=Κρατήστε κενό για έναν απλό διαχωριστή
Ρυθμίστε το σε 1 για έναν διαχωριστή που αναδιπλώνεται (ανοίγει από προεπιλογή για νέα σύνοδο και στη συνέχεια διατηρείται η κατάσταση για κάθε περίοδο λειτουργίας χρήστη)
Ρυθμίστε αυτό σε 2 για ένα πτυσσόμενο διαχωριστικό (συρρικνώνεται από προεπιλογή για νέα συνεδρία, τότε η κατάσταση διατηρείται για κάθε συνεδρία χρήστη) +ExtrafieldParamHelpSeparator=Διατήρηση κενού για ένα απλό διαχωριστικό
Ορίστε το σε 1 για ένα διαχωριστικό που συμπτύσσεται (ανοιχτό από προεπιλογή για νέα περίοδο λειτουργίας, μετά διατηρείται η κατάσταση για κάθε συνεδρία χρήστη)
Ορίστε το σε 2 για ένα διαχωριστικό που συμπτύσσεται (συμπτυγμένο από προεπιλογή και στη συνέχεια για νέα περίοδο λειτουργίας, η κατάσταση διατηρείται για κάθε συνεδρία χρήστη) LibraryToBuildPDF=Βιβλιοθήκη ενεργοποίησης δημιουργίας PDF LocalTaxDesc=Ορισμένες χώρες ενδέχεται να επιβάλλουν δύο ή τρεις φόρους σε κάθε γραμμή τιμολογίων. Εάν συμβαίνει αυτό, επιλέξτε τον τύπο για τον δεύτερο και τον τρίτο φόρο και τον συντελεστή του. Πιθανοί τύποι είναι:
1: επιβάλλεται τοπικός φόρος για προϊόντα και υπηρεσίες χωρίς ΦΠΑ (ο τοπικός φόρος υπολογίζεται στο ποσό χωρίς φόρο)
2: ο τοπικός φόρος ισχύει για προϊόντα και υπηρεσίες συμπεριλαμβανομένου του ΦΠΑ (ο τοπικός φόρος υπολογίζεται στο ποσό + τον κύριο φόρο)
3:Ισχύει τοπικός φόρος σε προϊόντα χωρίς ΦΠΑ (ο τοπικός φόρος υπολογίζεται στο ποσό χωρίς ΦΠΑ)
4: Ισχύει τοπικός φόρος για προϊόντα συμπεριλαμβανομένου ΦΠΑ (ο τοπικός φόρος υπολογίζεται στο ποσό + κύριος ΦΠΑ)
5: Ο τοπικός φόρος ισχύει για υπηρεσίες χωρίς ΦΠΑ (υπολογίζεται ο τοπικός φόρος επί του ποσού χωρίς φόρο)
6: τοπικός φόρος ισχύει για υπηρεσίες συμπεριλαμβανομένου του ΦΠΑ (ο τοπικός φόρος υπολογίζεται στο ποσό + φόρο) SMS=SMS @@ -468,13 +468,13 @@ LinkToTestClickToDial=Εισάγετε έναν τηλεφωνικό αριθμ RefreshPhoneLink=Ανανέωση συνδέσμου LinkToTest=Δημιουργήθηκε σύνδεσμος για τον χρήστη %s (κάντε κλικ στον αριθμό τηλεφώνου για να τον δοκιμάσετε) KeepEmptyToUseDefault=Αφήστε κενό για να χρησιμοποιήσετε την προεπιλεγμένη τιμή -KeepThisEmptyInMostCases=Στις περισσότερες περιπτώσεις, μπορείτε να διατηρήσετε αυτό το πεδίο ελεύθερο. +KeepThisEmptyInMostCases=Στις περισσότερες περιπτώσεις, μπορείτε να αφήσετε αυτό το πεδίο κενό. DefaultLink=Προεπιλεγμένος σύνδεσμος SetAsDefault=Ορισμός ως προεπιλογή ValueOverwrittenByUserSetup=Προσοχή, αυτή η τιμή μπορεί να αντικατασταθεί από επιλογή του χρήστη (ο κάθε χρήστης μπορεί να κάνει τον δικό του σύνδεσμο clicktodial) ExternalModule=Εξωτερική ενότητα InstalledInto=Εγκαταστάθηκε στον κατάλογο %s -BarcodeInitForThirdparties=Μαζική έναρξη γραμμικού κώδικα για Τρίτα Μέρη +BarcodeInitForThirdparties=Μαζική έναρξη γραμμικού κώδικα για Πελάτες/Προμηθευτές BarcodeInitForProductsOrServices=Μαζική έναρξη ή επαναφορά barcode για προϊόντα ή υπηρεσίες CurrentlyNWithoutBarCode=Επί του παρόντος, έχετε %s εγγραφές %s %s χωρίς barcode. InitEmptyBarCode=Τιμή έναρξης για τις επόμενες %sκενές εγγραφές @@ -486,16 +486,16 @@ EnableFileCache=Ενεργοποιήστε την προσωρινή μνήμη ShowDetailsInPDFPageFoot=Προσθέστε περισσότερες λεπτομέρειες στο υποσέλιδο, όπως διεύθυνση εταιρείας ή ονόματα διαχειριστών (επιπλέον των επαγγελματικών ταυτοτήτων, του εταιρικού κεφαλαίου και του ΑΦΜ). NoDetails=Δεν υπάρχουν επιπλέον λεπτομέρειες στο υποσέλιδο DisplayCompanyInfo=Εμφάνιση διεύθυνσης επιχείρησης -DisplayCompanyManagers=Εμφάνιση ονόματος διαχειριστή -DisplayCompanyInfoAndManagers=Εμφάνιση της διεύθυνσης της εταιρείας και ονόματα διαχειριστή +DisplayCompanyManagers=Εμφάνιση ονομάτων διαχειριστών +DisplayCompanyInfoAndManagers=Εμφάνιση διεύθυνσης εταιρείας και ονομάτων διαχειριστών EnableAndSetupModuleCron=Αν θέλετε αυτό το επαναλαμβανόμενο τιμολόγιο να παράγεται αυτόματα, η ενότητα * %s * πρέπει να ενεργοποιηθεί και να ρυθμιστεί σωστά. Διαφορετικά, η δημιουργία τιμολογίων πρέπει να γίνεται χειροκίνητα από αυτό το πρότυπο χρησιμοποιώντας το κουμπί * Δημιουργία *. Λάβετε υπόψη ότι ακόμη και αν έχετε ενεργοποιήσει την αυτόματη παραγωγή, μπορείτε ακόμα να ξεκινήσετε με ασφάλεια τη χειροκίνητη παραγωγή. Η δημιουργία αντιγράφων για την ίδια περίοδο δεν είναι δυνατή. ModuleCompanyCodeCustomerAquarium=%s που ακολουθείται από τον κωδικό πελάτη για έναν κωδικό λογιστικής πελάτη ModuleCompanyCodeSupplierAquarium=%s που ακολουθείται από τον κωδικό προμηθευτή για έναν κωδικό λογιστικής προμηθευτή -ModuleCompanyCodePanicum=Επιστρέψτε έναν κενό κωδικό λογιστικής. +ModuleCompanyCodePanicum=Επιστρέφει έναν κενό κωδικό λογιστικής. ModuleCompanyCodeDigitaria=Επιστρέφει έναν σύνθετο λογιστικό κώδικα σύμφωνα με το όνομα του τρίτου μέρους. Ο κώδικας αποτελείται από ένα πρόθεμα που μπορεί να οριστεί στην πρώτη θέση, ακολουθούμενο από τον αριθμό των χαρακτήρων που ορίζονται στον κώδικα τρίτου μέρους. -ModuleCompanyCodeCustomerDigitaria=%s που ακολουθείται από το αποκομμένο όνομα πελάτη από τον αριθμό χαρακτήρων: %s για τον κωδικό λογιστικής πελάτη. -ModuleCompanyCodeSupplierDigitaria=%s που ακολουθείται από το αποκομμένο όνομα προμηθευτή με τον αριθμό χαρακτήρων: %s για τον προμηθευτή λογιστικό κωδικό. -Use3StepsApproval=Από προεπιλογή, οι Εντολές Αγοράς πρέπει να δημιουργηθούν και να εγκριθούν από 2 διαφορετικούς χρήστες (ένα βήμα / χρήστης για δημιουργία και ένα βήμα / χρήστης για έγκριση). Σημειώστε ότι εάν ο χρήστης έχει τόσο άδεια να δημιουργήσει και να εγκρίνει, ένα βήμα / χρήστης θα είναι αρκετό) . Μπορείτε να ζητήσετε με αυτή την επιλογή να εισαγάγετε ένα τρίτο βήμα / έγκριση του χρήστη, εάν το ποσό είναι υψηλότερο από μια ειδική τιμή (ώστε να είναι απαραίτητα 3 βήματα: 1 = επικύρωση, 2 = πρώτη έγκριση και 3 = δεύτερη έγκριση, εάν το ποσό είναι αρκετό).
Ρυθμίστε αυτό το κενό, εάν είναι αρκετή μία έγκριση (2 βήματα), αλλάξτε τη τιμή σε πολύ χαμηλή τιμή (0,1) εάν απαιτείται πάντα μια δεύτερη έγκριση (3 βήματα). +ModuleCompanyCodeCustomerDigitaria=%s που ακολουθείται από το κομμένο όνομα πελάτη από τον αριθμό χαρακτήρων: %s για τον κωδικό λογιστικής πελάτη. +ModuleCompanyCodeSupplierDigitaria=%s που ακολουθείται από το κομμένο όνομα προμηθευτή με τον αριθμό χαρακτήρων: %s για τον κωδικό λογιστικής προμηθευτή. +Use3StepsApproval=Από προεπιλογή, οι παραγγελίες αγοράς πρέπει να δημιουργούνται και να εγκρίνονται από 2 διαφορετικούς χρήστες (ένα χρήστη για δημιουργία και ένα χρήστη για έγκριση. Λάβετε υπόψη ότι εάν ο χρήστης έχει δικαιώματα δημιουργίας και έγκρισης, ένας χρήστης αρκεί) . Μπορείτε να ζητήσετε με αυτήν την επιλογή να εισάγετε έγκριση ενός τρίτου χρήστη, εάν το ποσό είναι υψηλότερο από μια συγκεκριμένη τιμή (άρα θα χρειαστούν 3 βήματα: 1=επικύρωση, 2=πρώτη έγκριση και 3=δεύτερη έγκριση εάν το ποσό είναι υψηλό).
Αφήστε το κενό εάν μια έγκριση (2 βήματα) είναι αρκετή, Ενώ αν πάντα απαιτείται μια δεύτερη έγκριση (3 βήματα ορίστε την σε πολύ χαμηλή τιμή (0,1). UseDoubleApproval=Χρησιμοποιήστε μια έγκριση 3 βημάτων όταν το ποσό (χωρίς φόρο) είναι υψηλότερο από... WarningPHPMail=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ρύθμιση για την αποστολή email από την εφαρμογή χρησιμοποιεί την προεπιλεγμένη γενική ρύθμιση. Συχνά είναι καλύτερο να ρυθμίζετε τα εξερχόμενα email για να χρησιμοποιείτε τον διακομιστή email του παρόχου υπηρεσιών email σας αντί της προεπιλεγμένης ρύθμισης για διάφορους λόγους: WarningPHPMailA=- Η χρήση του διακομιστή του παρόχου υπηρεσιών email αυξάνει την αξιοπιστία του email σας, επομένως αυξάνει την πιθανότητα παράδοσης των μηνυμάτων σας χωρίς να επισημαίνονται ως SPAM @@ -504,7 +504,7 @@ WarningPHPMailC=- Η χρήση του διακομιστή SMTP του δικο WarningPHPMailD=Επίσης, συνιστάται λοιπόν η αλλαγή της μεθόδου αποστολής e-mail στην τιμή "SMTP". Εάν θέλετε πραγματικά να διατηρήσετε την προεπιλεγμένη μέθοδο "PHP" για την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου, απλώς αγνοήστε αυτήν την προειδοποίηση ή καταργήστε την, ορίζοντας τη σταθερά MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP σε 1 από το μενού Αρχική - Ρυθμίσεις - Άλλες Ρυθμίσεις. WarningPHPMail2=Εάν ο πάροχος σας SMTP email χρειάζεται να περιορίσει το πρόγραμμα-πελάτη email σε ορισμένες διευθύνσεις IP (σπάνια), αυτή είναι η διεύθυνση IP του mail user agent (MUA) για την εφαρμογή σας ERP CRM: %s . WarningPHPMailSPF=Εάν το domain name στη διεύθυνση email σας προστατεύεται από μια εγγραφή SPF (ρωτήστε τον καταχωρητή του domain name σας), πρέπει να προσθέσετε τις ακόλουθες IP στην εγγραφή SPF του DNS του domain σας: %s. -ActualMailSPFRecordFound=Βρέθηκε πραγματική εγγραφή SPF: %s +ActualMailSPFRecordFound=Βρέθηκε πραγματική εγγραφή SPF (για email %s): %s ClickToShowDescription=Κάντε κλικ για να εμφανιστεί η περιγραφή DependsOn=Αυτή η ενότητα εξαρτάται από τις ενότητες RequiredBy=Αυτή η ενότητα απαιτείται από τις ενότητες @@ -513,28 +513,28 @@ PageUrlForDefaultValues=Πρέπει να εισαγάγετε τη σχετικ PageUrlForDefaultValuesCreate=
Παράδειγμα:
Για τη φόρμα δημιουργίας νέου τρίτου μέρους, είναι %s .
Για τη διεύθυνση URL των εξωτερικών ενοτήτων που έχουν εγκατασταθεί στον προσαρμοσμένο κατάλογο, μην συμπεριλάβετε το "custom/", οπότε χρησιμοποιήστε διαδρομή όπως το mymodule/mypage.php και όχι το custom/mymodule/mypage.php.
Εάν θέλετε την προεπιλεγμένη τιμή μόνο αν η url έχει κάποια παράμετρο, μπορείτε να χρησιμοποιήσετε %s PageUrlForDefaultValuesList=
Παράδειγμα:
Για τη σελίδα που παραθέτει τρίτα μέρη, είναι %s .
Για τη διεύθυνση URL των εξωτερικών ενοτήτων που έχουν εγκατασταθεί στον προσαρμοσμένο κατάλογο, μην συμπεριλάβετε το "custom/" αλλά χρησιμοποιήστε μια διαδρομή όπως το mymodule/mypagelist.php και όχι το custom/mymodule/mypagelist.php.
Εάν θέλετε την προεπιλεγμένη τιμή μόνο αν η url έχει κάποια παράμετρο, μπορείτε να χρησιμοποιήσετε %s AlsoDefaultValuesAreEffectiveForActionCreate=Λάβετε επίσης υπόψη ότι η αντικατάσταση προεπιλεγμένων τιμών για τη δημιουργία φόρμας λειτουργεί μόνο για σελίδες που σχεδιάστηκαν σωστά (με την παράμετρο action=create ή presend...) -EnableDefaultValues=Ενεργοποιήστε την προσαρμογή των προεπιλεγμένων τιμών +EnableDefaultValues=Ενεργοποίηση εξατομίκευσης των προεπιλεγμένων τιμών EnableOverwriteTranslation=Ενεργοποιήστε τη χρήση αντικατασταθείσας μετάφρασης GoIntoTranslationMenuToChangeThis=Έχει βρεθεί μετάφραση για το κλειδί με αυτόν τον κωδικό. Για να αλλάξετε αυτήν την τιμή, πρέπει να την επεξεργαστείτε από το μενού Αρχική-Ρυθμίσεις-Μετάφραση. -WarningSettingSortOrder=Προειδοποίηση, ο ορισμός μιας προεπιλεγμένης σειράς ταξινόμησης μπορεί να οδηγήσει σε τεχνικό σφάλμα κατά τη μετάβαση στη σελίδα της λίστας εάν το πεδίο είναι άγνωστο πεδίο. Εάν αντιμετωπίσετε ένα τέτοιο σφάλμα, επιστρέψτε σε αυτήν τη σελίδα για να καταργήσετε την προεπιλεγμένη σειρά ταξινόμησης και να επαναφέρετε την προεπιλεγμένη συμπεριφορά. +WarningSettingSortOrder=Προειδοποίηση, ο ορισμός μιας προεπιλεγμένης σειράς ταξινόμησης μπορεί να οδηγήσει σε τεχνικό σφάλμα κατά τη μετάβαση στη σελίδα της λίστας εάν το πεδίο είναι άγνωστο. Εάν αντιμετωπίσετε ένα τέτοιο σφάλμα, επιστρέψτε σε αυτήν τη σελίδα για να καταργήσετε την προεπιλεγμένη σειρά ταξινόμησης και να επαναφέρετε την προεπιλεγμένη συμπεριφορά. Field=Πεδίο ProductDocumentTemplates=Πρότυπα εγγράφων για τη δημιουργία εγγράφου προϊόντος -FreeLegalTextOnExpenseReports=Δωρεάν νομικό κείμενο σχετικά με τις εκθέσεις δαπανών -WatermarkOnDraftExpenseReports=Υδατογράφημα για τις εκθέσεις περί δαπανών -ProjectIsRequiredOnExpenseReports=Το έργο είναι υποχρεωτικό για την εισαγωγή αναφοράς εξόδων +FreeLegalTextOnExpenseReports=Ελεύθερο νομικό κείμενο στις αναφορές δαπανών +WatermarkOnDraftExpenseReports=Υδατογράφημα σε προσχέδια αναφορών εξόδων +ProjectIsRequiredOnExpenseReports=Το έργο είναι υποχρεωτικό κατά την εισαγωγή αναφοράς εξόδων PrefillExpenseReportDatesWithCurrentMonth=Προσυμπληρώστε τις ημερομηνίες έναρξης και λήξης της νέας αναφοράς εξόδων με ημερομηνίες έναρξης και λήξης του τρέχοντος μήνα -ForceExpenseReportsLineAmountsIncludingTaxesOnly=Υποχρεώστε την καταχώριση ποσών αναφοράς εξόδων πάντα σε ποσό με φόρους -AttachMainDocByDefault=Ρυθμίστε αυτό στο 1 εάν θέλετε να επισυνάψετε το κύριο έγγραφο σε email από προεπιλογή (αν υπάρχει) -FilesAttachedToEmail=Επισυνάψετε το αρχείο -SendEmailsReminders=Αποστολή υπενθυμίσεων της ημερήσιας διάταξης μέσω ηλεκτρονικού ταχυδρομείου +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Επιβολή καταχώρισης ποσών αναφοράς εξόδων πάντα σε ποσό με Φ.Π.Α. +AttachMainDocByDefault=Ορίστε το σε 1 εάν θέλετε να επισυνάψετε το κύριο έγγραφο στο email από προεπιλογή (εάν υπάρχει) +FilesAttachedToEmail=Επισύναψη αρχείου +SendEmailsReminders=Αποστολή υπενθυμίσεων ατζέντας μέσω email davDescription=Ρυθμίστε έναν διακομιστή WebDAV -DAVSetup=Ρύθμιση της μονάδας DAV -DAV_ALLOW_PRIVATE_DIR=Ενεργοποίηση του γενικού ιδιωτικού καταλόγου (αποκλειστικός κατάλογος WebDAV που ονομάζεται "ιδιωτικός" - απαιτείται σύνδεση) -DAV_ALLOW_PRIVATE_DIRTooltip=Ο γενικός ιδιωτικός κατάλογος είναι ένας κατάλογος WebDAV ο οποίος μπορεί να έχει πρόσβαση οποιοσδήποτε με την εφαρμογή login / pass. -DAV_ALLOW_PUBLIC_DIR=Ενεργοποίηση του γενικού δημόσιου καταλόγου (αποκλειστικός κατάλογος WebDAV που ονομάζεται "δημόσιο" - δεν απαιτείται σύνδεση) -DAV_ALLOW_PUBLIC_DIRTooltip=Ο γενικός δημόσιος κατάλογος είναι ένας κατάλογος WebDAV ο οποίος μπορεί να έχει πρόσβαση οποιοσδήποτε (σε λειτουργία ανάγνωσης και εγγραφής), χωρίς την απαιτούμενη εξουσιοδότηση (λογαριασμός σύνδεσης / κωδικού πρόσβασης). -DAV_ALLOW_ECM_DIR=Ενεργοποίηση του ιδιωτικού καταλόγου DMS / ECM (ριζικός κατάλογος της μονάδας DMS / ECM - απαιτείται σύνδεση) -DAV_ALLOW_ECM_DIRTooltip=Ο ριζικός κατάλογος όπου όλα τα αρχεία μεταφορτώνονται με το χέρι κατά τη χρήση της μονάδας DMS / ECM. Ομοίως με την πρόσβαση από τη διεπαφή ιστού, θα χρειαστείτε έγκυρο όνομα σύνδεσης / κωδικό πρόσβασης με δικαιώματα πρόσβασης για πρόσβαση σε αυτήν. +DAVSetup=Ρύθμιση της ενότητας DAV +DAV_ALLOW_PRIVATE_DIR=Ενεργοποιήστε τον γενικό ιδιωτικό κατάλογο (αποκλειστικός κατάλογος WebDAV με το όνομα "private" - απαιτείται σύνδεση) +DAV_ALLOW_PRIVATE_DIRTooltip=Ο γενικός ιδιωτικός κατάλογος είναι ένας κατάλογος WebDAV στον οποίο μπορεί να έχει πρόσβαση οποιοσδήποτε με τα login / pass της εφαρμογής +DAV_ALLOW_PUBLIC_DIR=Ενεργοποίηση του γενικού δημόσιου καταλόγου (αποκλειστικός κατάλογος WebDAV με το όνομα "δημόσιο" - δεν απαιτείται σύνδεση) +DAV_ALLOW_PUBLIC_DIRTooltip=Ο γενικός δημόσιος κατάλογος είναι ένας κατάλογος WebDAV στον οποίο μπορεί να έχει πρόσβαση οποιοσδήποτε (σε λειτουργία ανάγνωσης και εγγραφής), δεν απαιτείται εξουσιοδότηση (όνομα χρήστη / κωδικός πρόσβασης). +DAV_ALLOW_ECM_DIR=Ενεργοποίηση του ιδιωτικού καταλόγου DMS / ECM (ριζικός κατάλογος της ενότητας DMS / ECM - απαιτείται σύνδεση) +DAV_ALLOW_ECM_DIRTooltip=Ο ριζικός κατάλογος όπου όλα τα αρχεία μεταφορτώνονται χειροκίνητα κατά τη χρήση της ενότητας DMS/ECM. Όπως και για την πρόσβαση από τη διεπαφή ιστού, θα χρειαστείτε ένα έγκυρο όνομα χρήστη/κωδικό πρόσβασης με επαρκή δικαιώματα για πρόσβαση σε αυτό. # Modules Module0Name=Χρήστες και Ομάδες Module0Desc=Διαχείριση χρηστών / εργαζομένων και ομάδων @@ -546,12 +546,12 @@ Module10Name=Λογιστική (απλουστευμένη) Module10Desc=Απλές λογιστικές αναφορές (ημερολόγια, κύκλος εργασιών) με βάση το περιεχόμενο της βάσης δεδομένων. Δεν χρησιμοποιεί κανένα πίνακα καθολικών. Module20Name=Προσφορές Module20Desc=Διαχείριση εμπορικών προσφορών -Module22Name=Μαζικές αποστολές ηλεκτρονικού ταχυδρομείου +Module22Name=Μαζική αποστολή e-mail Module22Desc=Διαχείριση μαζικής αποστολής email Module23Name=Ενέργεια Module23Desc=Παρακολούθηση κατανάλωσης ενέργειας -Module25Name=Πωλήσεις Παραγγελίες -Module25Desc=Διαχείριση Παραγγελιών Πωλήσεων +Module25Name=Εντολές Πωλήσεων +Module25Desc=Διαχείριση Εντολών Πωλήσεων Module30Name=Τιμολόγια Module30Desc=Διαχείριση τιμολογίων και πιστωτικών σημειώσεων για πελάτες. Διαχείριση τιμολογίων και πιστωτικών σημειώσεων για προμηθευτές Module40Name=Προμηθευτές @@ -580,7 +580,7 @@ Module57Name=Πληρωμές μέσω πάγιας εντολής Module57Desc=Διαχείριση πληρωμών πάγιας εντολής. Περιλαμβάνει τη δημιουργία αρχείου SEPA για ευρωπαϊκές χώρες. Module58Name=ClickToDial Module58Desc=Ενσωμάτωση συστήματος ClickToDial (Asterisk, ...) -Module60Name=Αυτοκόλλητες ετικέτες +Module60Name=Αυτοκόλλητα Module60Desc=Διαχείριση αυτοκόλλητων ετικετών Module70Name=Παρεμβάσεις Module70Desc=Διαχείριση παρεμβάσεων @@ -593,7 +593,7 @@ Module85Desc=Διαχείριση τραπεζών και λογαριασμών Module100Name=Εξωτερικός ιστότοπος Module100Desc=Προσθέστε έναν σύνδεσμο σε έναν εξωτερικό ιστότοπο ως εικονίδιο του κύριου μενού. Ο ιστότοπος εμφανίζεται σε ένα πλαίσιο κάτω από το επάνω μενού. Module105Name=Mailman και SPIP -Module105Desc=Mailman ή SPIP διεπαφή για την ενότητα μελών +Module105Desc=Διεπαφή Mailman ή SPIP για την ενότητα μελών Module200Name=LDAP Module200Desc=Συγχρονισμού καταλόγου LDAP Module210Name=PostNuke @@ -608,17 +608,17 @@ Module320Name=RSS Feed Module320Desc=Προσθέστε μια ροή RSS στις σελίδες Dolibarr Module330Name=Σελιδοδείκτες και συντομεύσεις Module330Desc=Δημιουργήστε συντομεύσεις, πάντα προσιτές, στις εσωτερικές ή εξωτερικές σελίδες στις οποίες έχετε συχνά πρόσβαση -Module400Name=Έργα ή οδηγοί -Module400Desc=Διαχείριση έργων, οδηγεί / ευκαιρίες και / ή καθήκοντα. Μπορείτε επίσης να αντιστοιχίσετε οποιοδήποτε στοιχείο (τιμολόγιο, εντολή, πρόταση, παρέμβαση, ...) σε ένα έργο και να πάρετε μια εγκάρσια όψη από την προβολή του έργου. +Module400Name=Έργα ή προοπτικές +Module400Desc=Διαχείριση έργων, προοπτικών/ευκαιριών ή/και εργασιών. Μπορείτε επίσης να αντιστοιχίσετε οποιοδήποτε στοιχείο (τιμολόγιο, παραγγελία, πρόταση, παρέμβαση, ...) σε ένα έργο και να λάβετε μια εγκάρσια προβολή από την προβολή έργου. Module410Name=Ημερολόγιο ιστού -Module410Desc=Διεπαφή ημερολογίου ιστού +Module410Desc=Ενσωμάτωση ημερολογίου ιστού Module500Name=Φόροι & Ειδικά Έξοδα Module500Desc=Διαχείριση άλλων δαπανών (φόροι πωλήσεων, κοινωνικές ή φορολογικές εισφορές, μερίσματα, ...) Module510Name=Μισθοί -Module510Desc=Καταγράψτε και παρακολουθήστε τις πληρωμές των εργαζομένων +Module510Desc=Καταγραφή και παρακολούθηση πληρωμών εργαζομένων Module520Name=Δάνεια Module520Desc=Διαχείριση δανείων -Module600Name=Ειδοποιήσεις για επαγγελματικά γεγονότα +Module600Name=Ειδοποιήσεις για επαγγελματικά συμβάντα Module600Desc=Αποστολή ειδοποιήσεων ηλεκτρονικού ταχυδρομείου που ενεργοποιούνται από ένα επιχειρηματικό συμβάν: ανά χρήστη (καθορισμένη ρύθμιση σε κάθε χρήστη), ανά επαφές τρίτων (καθορισμένη ρύθμιση σε κάθε τρίτο μέρος) ή από συγκεκριμένα μηνύματα ηλεκτρονικού ταχυδρομείου Module600Long=Λάβετε υπόψη ότι αυτή η ενότητα στέλνει μηνύματα ηλεκτρονικού ταχυδρομείου σε πραγματικό χρόνο όταν συμβαίνει ένα συγκεκριμένο επιχειρηματικό συμβάν. Αν ψάχνετε για μια δυνατότητα αποστολής υπενθυμίσεων email για συμβάντα ατζέντας, μεταβείτε στη ρύθμιση της ενότητας Ατζέντα. Module610Name=Παραλλαγές προϊόντων @@ -627,21 +627,21 @@ Module700Name=Δωρεές Module700Desc=Διαχείριση δωρεών Module770Name=Αναφορές εξόδων Module770Desc=Διαχείριση αξιώσεων αναφορών εξόδων (μεταφορές, γεύματα, ...) -Module1120Name=Εμπορικές προτάσεις προμηθευτών -Module1120Desc=Ζητήστε από τον προμηθευτή την εμπορική του πρόταση και τις τιμές +Module1120Name=Εμπορικές προσφορές προμηθευτών +Module1120Desc=Ζητήστε από τον προμηθευτή την εμπορική του προσφορά και τις τιμές Module1200Name=Mantis Module1200Desc=Ενσωμάτωση Mantis Module1520Name=Δημιουργία εγγράφων -Module1520Desc=Μαζική δημιουργία εγγράφων email +Module1520Desc=Δημιουργία εγγράφου για μαζικά email Module1780Name=Ετικέτες/Κατηγορίες Module1780Desc=Δημιουργήστε ετικέτες/κατηγορίες (προϊόντα, πελάτες, προμηθευτές, επαφές ή μέλη) Module2000Name=WYSIWYG editor Module2000Desc=Να επιτρέπεται η επεξεργασία / διαμόρφωση των πεδίων κειμένων χρησιμοποιώντας το CKEditor (html) Module2200Name=Δυναμικές Τιμές -Module2200Desc=Χρησιμοποιήστε εκφράσεις μαθηματικών για την αυτόματη δημιουργία τιμών +Module2200Desc=Χρησιμοποιήστε μαθηματικές εκφράσεις για την αυτόματη δημιουργία τιμών Module2300Name=Προγραμματισμένες εργασίες Module2300Desc=Διαχείριση προγραμματισμένων εργασιών (alias cron ή chrono table) -Module2400Name=Εκδηλώσεις / Ατζέντα +Module2400Name=Συμβάντα / Ατζέντα Module2400Desc=Παρακολούθηση συμβάντων. Καταγράψτε αυτόματα συμβάντα για σκοπούς παρακολούθησης ή καταγράψτε μη αυτόματα συμβάντα ή συσκέψεις. Αυτή είναι η κύρια ενότητα για την καλή διαχείριση σχέσεων πελατών ή προμηθευτών. Module2500Name=DMS / ECM Module2500Desc=Σύστημα Διαχείρισης Εγγράφων / Ηλεκτρονική Διαχείριση Περιεχομένου. Αυτόματη οργάνωση των παραγόμενων ή αποθηκευμένων εγγράφων σας. Μοιραστείτε τα όταν χρειάζεστε. @@ -657,7 +657,7 @@ Module2800Desc=FTP Client Module2900Name=GeoIP Maxmind Module2900Desc=GeoIP Maxmind conversions capabilities Module3200Name=Αναλλοίωτα αρχεία -Module3200Desc=Ενεργοποιήστε ένα αναλλοίωτο αρχείο καταγραφής επιχειρηματικών εκδηλώσεων. Τα γεγονότα αρχειοθετούνται σε πραγματικό χρόνο. Το αρχείο καταγραφής είναι ένας πίνακας μόνο για ανάγνωση των αλυσιδωτών γεγονότων που μπορούν να εξαχθούν. Αυτή η ενότητα μπορεί να είναι υποχρεωτική για ορισμένες χώρες. +Module3200Desc=Ενεργοποιήστε ένα αναλλοίωτο αρχείο καταγραφής επιχειρηματικών εκδηλώσεων. Τα συμβάντα αρχειοθετούνται σε πραγματικό χρόνο. Το αρχείο καταγραφής είναι ένας πίνακας μόνο για ανάγνωση των αλυσιδωτών συμβάντων που μπορούν να εξαχθούν. Αυτή η ενότητα μπορεί να είναι υποχρεωτική για ορισμένες χώρες. Module3400Name=Κοινωνικά Δίκτυα Module3400Desc=Ενεργοποιήστε τα πεδία Κοινωνικών Δικτύων σε τρίτα μέρη και διευθύνσεις (skype, twitter, facebook, ...). Module4000Name=HRM @@ -685,13 +685,13 @@ Module50200Desc=Προσφέρετε στους πελάτες μια σελίδ Module50300Name=Stripe Module50300Desc=Προσφέρετε στους πελάτες μια σελίδα ηλεκτρονικής πληρωμής Stripe (πιστωτικές/χρεωστικές κάρτες). Αυτό μπορεί να χρησιμοποιηθεί για να επιτρέψετε στους πελάτες σας να πραγματοποιούν πληρωμές ad-hoc ή πληρωμές που σχετίζονται με ένα συγκεκριμένο αντικείμενο του Dolibarr (τιμολόγιο, παραγγελία κ.λπ...) Module50400Name=Λογιστική (διπλή εγγραφή) -Module50400Desc=Λογιστική διαχείριση (διπλοεγγραφές, υποστήριξη Γενικών και Επικουρικών Καθολικών). Εξαγωγή του καθολικού σε πολλά άλλα formats +Module50400Desc=Λογιστική διαχείριση (διπλοεγγραφές, υποστήριξη Γενικών και Επικουρικών Καθολικών). Εξαγωγή του καθολικού σε πολλές άλλες μορφές Module54000Name=PrintIPP Module54000Desc=Άμεση εκτύπωση (χωρίς το άνοιγμα των εγγράφων) χρησιμοποιώντας τη διεπαφή Cups IPP (ο εκτυπωτής πρέπει να είναι ορατός από το διακομιστή και το CUPS πρέπει να ειναι εγκατεστημένο στον διακομιστή). Module55000Name=Δημοσκόπηση, έρευνα ή ψηφοφορία Module55000Desc=Δημιουργήστε ηλεκτρονικές δημοσκοπήσεις, έρευνες ή ψηφοφορίες (όπως Doodle, Studs, RDVz κ.λπ...) Module59000Name=Περιθώρια -Module59000Desc=Ενότητα για να παρακολουθείτε τα περιθώρια +Module59000Desc=Ενότητα παρακολούθησης περιθωρίων Module60000Name=Προμήθειες Module60000Desc=Ενότητα διαχείρισης προμηθειών Module62000Name=Διεθνείς Εμπορικοί Όροι @@ -718,8 +718,8 @@ Permission34=Διαγραφή προϊόντων Permission36=Έλεγχος/διαχείριση κρυφών προϊόντων Permission38=Εξαγωγή προϊόντων Permission39=Αγνόηση ελάχιστης τιμής -Permission41=Ανάγνωση έργων και εργασιών (κοινόχρηστα έργα και έργα στα οποία είμαι επαφή). -Permission42=Δημιουργία/τροποποίηση έργων (κοινόχρηστα έργα και έργα των οποίων είμαι επαφή). Μπορεί επίσης να αναθέτει χρήστες σε έργα και εργασίες +Permission41=Ανάγνωση έργων και εργασιών (κοινά έργα και έργα στα οποία είμαι επαφή). +Permission42=Δημιουργία/τροποποίηση έργων (κοινόχρηστα έργα και έργα των οποίων είμαι επαφή). Επίσης ανάθεση χρηστών σε έργα και εργασίες Permission44=Διαγραφή έργων (κοινόχρηστα έργα και έργα στα οποία είμαι επαφή) Permission45=Εξαγωγή έργων Permission61=Ανάγνωση παρεμβάσεων @@ -760,7 +760,7 @@ Permission113=Ρύθμιση οικονομικών λογαριασμών (δη Permission114=Συμφωνία συναλλαγών Permission115=Εξαγωγή συναλλαγών και καταστάσεων λογαριασμών Permission116=Μεταφορές μεταξύ λογαριασμών -Permission117=Διαχείριση διαχείρισης αποστολών +Permission117=Διαχείριση αποστολής επιταγών Permission121=Ανάγνωση τρίτων μερών που συνδέονται με το χρήστη Permission122=Δημιουργία / τροποποίηση τρίτων μερών συνδεδεμένων με το χρήστη Permission125=Διαγραφή τρίτων μερών συνδεδεμένων με το χρήστη @@ -768,8 +768,8 @@ Permission126=Εξαγωγή τρίτων μερών Permission130=Δημιουργία/τροποποίηση στοιχείων πληρωμής τρίτων μερών Permission141=Ανάγνωση όλων των έργων και εργασιών (καθώς και τα ιδιωτικά έργα για τα οποία δεν είμαι επαφή) Permission142=Δημιουργία/τροποποίηση όλων των έργων και εργασιών (καθώς και των ιδιωτικών έργων για τα οποία δεν είμαι επαφή) -Permission144=Διαγραφή όλων των έργων και εργασιών (καθώς και των ιδιωτικών έργων με τα οποία δεν είμαι επαφή) -Permission145=Μπορεί να εισαγάγει τον χρόνο που καταναλώνεται, για εμένα ή την ιεραρχία μου, σε εργασίες που έχουν ανατεθεί (Φύλλο χρόνου) +Permission144=Διαγραφή όλων των έργων και εργασιών (καθώς και των ιδιωτικών έργων για τα οποία δεν είμαι επαφή) +Permission145=Δυνατότητα εισαγωγής του χρόνου που καταναλώνεται, για εμένα ή τους ανωτέρους μου, σε εργασίες που έχουν ανατεθεί (Φύλλο χρόνου) Permission146=Ανάγνωση παρόχων Permission147=Ανάγνωση στατιστικών στοιχείων Permission151=Ανάγνωση εντολών πληρωμής άμεσης χρέωσης @@ -789,239 +789,239 @@ Permission174=Ανάγνωση όλων των ταξιδιών και εξόδ Permission178=Εξαγωγή ταξιδιών και εξόδων Permission180=Ανάγνωση προμηθευτών Permission181=Ανάγνωση παραγγελιών αγοράς -Permission182=Δημιουργία / τροποποίηση εντολών αγοράς -Permission183=Επικύρωση εντολών αγοράς -Permission184=Έγκριση εντολών αγοράς +Permission182=Δημιουργία / τροποποίηση παραγγελιών αγοράς +Permission183=Επικύρωση παραγγελιών αγοράς +Permission184=Έγκριση παραγγελιών αγοράς Permission185=Παραγγελία ή ακύρωση εντολών αγοράς Permission186=Παραλαβή εντολών αγοράς Permission187=Κλείσιμο παραγγελιών αγοράς Permission188=Ακύρωση εντολών αγοράς Permission192=Δημιουργία γραμμών Permission193=Ακύρωση γραμμών -Permission194=Διαβάστε τις γραμμές εύρους ζώνης +Permission194=Ανάγνωση γραμμών εύρους ζώνης Permission202=Δημιουργία συνδέσεων ADSL -Permission203=Παραγγείλετε εντολές σύνδεσης -Permission204=Order connections +Permission203=Εντολές σύνδεσης +Permission204=Εντολές σύνδεσης Permission205=Διαχείριση συνδέσεων -Permission206=Διαβάστε τις συνδέσεις -Permission211=Διαβάστε την τηλεφωνία -Permission212=Παραγγείλετε γραμμές +Permission206=Ανάγνωση συνδέσεων +Permission211=Ανάγνωση τηλεφωνίας +Permission212=Παραγγελία γραμμών σύνδεσης Permission213=Ενεργοποιήση γραμμής -Permission214=Εγκατάσταση τηλεφωνίας -Permission215=Εγκατάσταση παρόχου -Permission221=Διαβάστε μηνύματα ηλεκτρονικού ταχυδρομείου -Permission222=Δημιουργία / τροποποίηση μηνυμάτων ηλεκτρονκού ταχυδρομείου (θέμα, παραλήπτες ...) -Permission223=Επικύρωση μηνυμάτων ηλεκτρονκού ταχυδρομείου (επιτρέπει την αποστολή) +Permission214=Ρύθμιση τηλεφωνίας +Permission215=Ρύθμιση παρόχων +Permission221=Ανάγνωση email +Permission222=Δημιουργία / τροποποίηση μηνυμάτων ηλεκτρονικού ταχυδρομείου (θέμα, παραλήπτες ...) +Permission223=Επικύρωση μηνυμάτων ηλεκτρονικού ταχυδρομείου (επιτρέπει την αποστολή) Permission229=Διαγραφή μηνυμάτων ηλεκτρονικού ταχυδρομείου Permission237=Προβολή παραληπτών και πληροφοριών Permission238=Χειροκίνητη αποστολή αλληλογραφίας Permission239=Διαγραφή μηνυμάτων ηλεκτρονκού ταχυδρομείου μετά την επικύρωση ή την αποστολή -Permission241=Διαβάστε τις κατηγορίες -Permission242=Δημιουργία / τροποποίηση κατηγοριών +Permission241=Ανάγνωση κατηγοριών +Permission242=Δημιουργία/τροποποίηση κατηγοριών Permission243=Διαγραφή κατηγοριών Permission244=Δείτε τα περιεχόμενα των κρυφών κατηγοριών -Permission251=Διαβάστε άλλους χρήστες και ομάδες -PermissionAdvanced251=Διαβάστε άλλους χρήστες -Permission252=Διαβάστε τα δικαιώματα άλλων χρηστών +Permission251=Ανάγνωση άλλων χρηστών και ομάδων +PermissionAdvanced251=Ανάγνωση άλλων χρηστών +Permission252=Ανάγνωση αδειών άλλων χρηστών Permission253=Δημιουργία / τροποποίηση άλλων χρηστών, ομάδων και δικαιωμάτων PermissionAdvanced253=Δημιουργία / τροποποίηση εσωτερικών / εξωτερικών χρηστών και αδειών Permission254=Δημιουργία / τροποποίηση μόνο εξωτερικών χρηστών -Permission255=Τροποποιήστε τον κωδικό άλλων χρηστών -Permission256=Διαγράψτε ή απενεργοποιήστε άλλους χρήστες -Permission262=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΚΑΙ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων).
Δεν είναι αποτελεσματικό για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προτάσεις, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.).
Δεν ισχύει για έργα (μόνο κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). -Permission263=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΧΩΡΙΣ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων).
Δεν είναι αποτελεσματικό για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προτάσεις, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.).
Δεν ισχύει για έργα (μόνο κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). -Permission271=Read CA -Permission272=Διαβάστε τιμολόγια +Permission255=Τροποποίηση κωδικού πρόσβασης άλλων χρηστών +Permission256=Διαγραφή ή απενεργοποίηση άλλων χρήστων +Permission262=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΚΑΙ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων).
Δεν είναι αποτελεσματικό για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προτάσεις, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.).
Δεν ισχύει για έργα (μόνο σε κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). +Permission263=Επέκταση της πρόσβασης σε όλα τα τρίτα μέρη ΧΩΡΙΣ τα αντικείμενά τους (όχι μόνο τρίτα μέρη για τα οποία ο χρήστης είναι αντιπρόσωπος πωλήσεων).
Δεν είναι αποτελεσματικό για εξωτερικούς χρήστες (περιορίζονται πάντα στους εαυτούς τους για προτάσεις, παραγγελίες, τιμολόγια, συμβάσεις κ.λπ.).
Δεν ισχύει για έργα (μόνο σε κανόνες για τις άδειες έργων, την προβολή και τα θέματα ανάθεσης). +Permission271=Ανάγνωση CA +Permission272=Ανάγνωση τιμολογίων Permission273=Έκδοση τιμολογίων Permission281=Ανάγνωση επαφών Permission282=Δημιουργία/Επεξεργασία επαφών Permission283=Διαγραφή επαφών Permission286=Εξαγωγή επαφών -Permission291=Διαβάστε τα δασμολόγια -Permission292=Ορίστε δικαιώματα σχετικά με τα δασμολόγια -Permission293=Τροποποιήστε τα τιμολόγια του πελάτη -Permission300=Διαβάστε τους γραμμωτούς κώδικες +Permission291=Ανάγνωση δασμών +Permission292=Ορισμός δικαιωμάτων δασμών +Permission293=Τροποποίηση δασμών πελατών +Permission300=Ανάγνωση barcodes Permission301=Δημιουργία / τροποποίηση γραμμωτών κωδικών Permission302=Διαγραφή γραμμωτών κωδικών -Permission311=Διαβάστε τις υπηρεσίες -Permission312=Ανάθεση υπηρεσίας/συνδρομής σε συμβόλαιο -Permission331=Διαβάστε σελιδοδείκτες +Permission311=Ανάγνωση υπηρεσιών +Permission312=Εκχώρηση υπηρεσίας/συνδρομής σε συμβόλαιο +Permission331=Ανάγνωση σελιδοδεικτών Permission332=Δημιουργία / τροποποίηση σελιδοδεικτών Permission333=Διαγραφή σελιδοδεικτών -Permission341=Διαβάστε τις δικές του άδειες -Permission342=Δημιουργήστε / τροποποιήστε τις δικές του πληροφορίες χρηστών -Permission343=Τροποποιήστε τον δικό του κωδικό πρόσβασης -Permission344=Τροποποιήστε τα δικά του δικαιώματα -Permission351=Διαβάστε τις ομάδες -Permission352=Διαβάστε τα δικαιώματα ομάδας +Permission341=Ανάγνωση προσωπικών δικαιωμάτων +Permission342=Δημιουργία/τροποποίηση προσωπικών δικαιωμάτων χρήστη +Permission343=Τροποποίηση ατομικού κωδικού πρόσβασης +Permission344=Τροποποίηση προσωπικών δικαιωμάτων +Permission351=Ανάγνωση ομάδων +Permission352=Ανάγνωση δικαιωμάτων ομάδας Permission353=Δημιουργία / τροποποίηση ομάδων -Permission354=Διαγράψτε ή απενεργοποιήστε τις ομάδες +Permission354=Διαγραφή ή απενεργοποίηση ομάδων Permission358=Εξαγωγή χρηστών -Permission401=Διαβάστε τις εκπτώσεις +Permission401=Ανάγνωση εκπτώσεων Permission402=Δημιουργία / τροποποίηση εκπτώσεων Permission403=Επικύρωση εκπτώσεων Permission404=Διαγραφή εκπτώσεων -Permission430=Χρησιμοποιήστε τη γραμμή εντοπισμού σφαλμάτων -Permission511=Διαβάστε μισθούς και πληρωμές (δικούς σας και υφιστάμενων) +Permission430=Χρήση της γραμμής εντοπισμού σφαλμάτων +Permission511=Ανάγνωση μισθών και πληρωμών (δικών σας και υφιστάμενων) Permission512=Δημιουργία/τροποποίηση μισθών και πληρωμών Permission514=Διαγραφή μισθών και πληρωμών -Permission517=Διαβάστε όλους τους μισθούς και πληρωμές +Permission517=Ανάγνωση όλων των μισθών και πληρωμών Permission519=Εξαγωγή μισθών Permission520=Ανάγνωση δανείων Permission522=Δημιουργία/μεταβολή δανείων Permission524=Διαγραφή δανείων Permission525=Πρόσβαση στον υπολογιστή δανείου Permission527=Εξαγωγή δανείων -Permission531=Διαβάστε τις υπηρεσίες +Permission531=Ανάγνωση υπηρεσιών Permission532=Δημιουργία / τροποποίηση υπηρεσιών Permission534=Διαγραφή υπηρεσιών -Permission536=Δείτε / διαχειριστείτε τις κρυφές υπηρεσίες +Permission536=Εμφάνιση / διαχείριση κρυφών υπηρεσιών Permission538=Εξαγωγή υπηρεσιών -Permission561=Διαβάστε τις εντολές πληρωμής με μεταφορά πίστωσης +Permission561=Ανάγνωση εντολών πληρωμής με μεταφορά πίστωσης Permission562=Δημιουργία/τροποποίηση εντολής πληρωμής με μεταφορά πίστωσης Permission563=Αποστολή/Διαβίβαση εντολής πληρωμής με μεταφορά πίστωσης Permission564=Καταγραφή Χρεώσεων/Απορρίψεων μεταφοράς πίστωσης -Permission601=Διαβάστε αυτοκόλλητα +Permission601=Ανάγνωση αυτοκόλλητων Permission602=Δημιουργία/τροποποίηση αυτοκόλλητων Permission609=Διαγραφή αυτοκόλλητων -Permission611=Διαβάστε τα χαρακτηριστικά των παραλλαγών +Permission611=Ανάγνωση χαρακτηριστικών των παραλλαγών Permission612=Δημιουργία/Ενημέρωση χαρακτηριστικών παραλλαγών Permission613=Διαγραφή χαρακτηριστικών παραλλαγών -Permission650=Διαβάστε τα Γραμμάτια Υλικών -Permission651=Δημιουργία / Ενημέρωση τιμολογίων -Permission652=Διαγραφή λογαριασμών -Permission660=Ανάγνωση Παραγγελίας Παραγωγής (MO) -Permission661=Δημιουργία/Ενημέρωση Παραγγελίας Παραγωγής (MO) +Permission650=Ανάγνωση καταλόγου υλικών +Permission651=Δημιουργία / Ενημέρωση καταλόγου υλικών +Permission652=Διαγραφή καταλόγου υλικών +Permission660=Ανάγνωση Εντολής Παραγωγής (MO) +Permission661=Δημιουργία/Ενημέρωση Εντολής Παραγωγής (MO) Permission662=Διαγραφή εντολής κατασκευής (MO) -Permission701=Διαβάστε τις δωρεές -Permission702=Δημιουργία / τροποποίηση δωρεές -Permission703=Διαγραφή δωρεές -Permission771=Διαβάστε τις αναφορές εξόδων (δικές σας και υφισταμένων) +Permission701=Ανάγνωση δωρεών +Permission702=Δημιουργία/τροποποίηση δωρεών +Permission703=Διαγραφή δωρεών +Permission771=Ανάγνωση αναφορών εξόδων (προσωπικών και υφισταμένων) Permission772=Δημιουργία/τροποποίηση αναφορών εξόδων (για εσάς και τους υφισταμένους σας) -Permission773=Διαγραφή αναφοράς εξόδων -Permission775=Έγκριση εκθέσεων δαπανών +Permission773=Διαγραφή αναφορών εξόδων +Permission775=Έγκριση αναφορών εξόδων Permission776=Πληρωμή αναφοράς εξόδων -Permission777=Διαβάστε όλες τις αναφορές δαπανών (ακόμη και εκείνων των χρηστών που δεν είναι υφιστάμενοι) +Permission777=Ανάγνωση όλων των αναφορών εξόδων (ακόμη και εκείνων των χρηστών που δεν είναι υφιστάμενοι) Permission778=Δημιουργία/τροποποίηση αναφορών εξόδων για όλους Permission779=Εξαγωγή αναφοράς εξόδων -Permission1001=Διαβάστε τα αποθέματα +Permission1001=Ανάγνωση αποθεμάτων Permission1002=Δημιουργία/τροποποίηση αποθηκών Permission1003=Διαγραφή αποθηκών -Permission1004=Διαβάστε τις κινήσεις αποθεμάτων +Permission1004=Ανάγνωση κινήσεων αποθεμάτων Permission1005=Δημιουργία / τροποποίηση των κινήσεων του αποθέματος Permission1011=Προβολή αποθεμάτων -Permission1012=Δημιουργήστε νέο απόθεμα +Permission1012=Δημιουργία νέου απόθεματος Permission1014=Επικύρωση αποθέματος Permission1015=Επιτρέψτε την αλλαγή της τιμής PMP για ένα προϊόν -Permission1016=Διαγραφή αποθέματος +Permission1016=Διαγραφή απογραφής Permission1101=Ανάγνωση αναφορών παράδοσης Permission1102=Δημιουργία/επεξεργασία αναφορών παράδοσης Permission1104=Επικύρωση αναφορών παράδοσης Permission1109=Διαγραφή αναφορών παράδοσης -Permission1121=Διαβάστε τις προτάσεις προμηθευτών -Permission1122=Δημιουργία / τροποποίηση προτάσεων προμηθευτών -Permission1123=Επικυρώστε τις προτάσεις προμηθευτών -Permission1124=Στείλτε προτάσεις προμηθευτών -Permission1125=Διαγραφή προτάσεων προμηθευτών -Permission1126=Κλείστε αιτήσεις τιμών προμηθευτή -Permission1181=Διαβάστε προμηθευτές -Permission1182=Διαβάστε παραγγελίες αγοράς +Permission1121=Ανάγνωση προσφορών προμηθευτών +Permission1122=Δημιουργία / τροποποίηση προσφορών προμηθευτών +Permission1123=Επικύρωση προσφορών προμηθευτών +Permission1124=Αποστολή προσφορών προμηθευτών +Permission1125=Διαγραφή προσφορών προμηθευτών +Permission1126=Κλείσιμο αιτήσεων τιμών προμηθευτή +Permission1181=Ανάγνωση προμηθευτών +Permission1182=Ανάγνωση παραγγελιών αγοράς Permission1183=Δημιουργία / τροποποίηση εντολών αγοράς Permission1184=Επικύρωση εντολών αγοράς -Permission1185=Εγκρίνετε τις παραγγελίες αγοράς -Permission1186=Παραγγείλετε παραγγελίες αγοράς -Permission1187=Αναγνώριση παραλαβής εντολών αγοράς +Permission1185=Έγκριση εντολών αγοράς +Permission1186=Εντολή παραγγελιών αγοράς +Permission1187=Αναγνώριση παραλαβής παραγγελιών αγοράς Permission1188=Διαγραφή εντολών αγοράς -Permission1189=Ελέγξτε/Αποεπιλέξτε μια παραλαβή παραγγελίας -Permission1190=Εγκρίνετε τις εντολές αγοράς (δεύτερη έγκριση) +Permission1189=Επιλογή/Αναίρεση επιλογής μιας παραλαβής παραγγελίας αγοράς +Permission1190=Έγκριση παραγγελιών αγοράς (δεύτερη έγκριση) Permission1191=Εξαγωγή παραγγελιών προμηθευτών και τα χαρακτηριστικά τους -Permission1201=Λάβετε αποτέλεσμα μιας εξαγωγής +Permission1201=Λήψη αποτελέσματος μιας εξαγωγής Permission1202=Δημιουργία / Τροποποίηση εξαγωγής -Permission1231=Διαβάστε τιμολόγια προμηθευτή +Permission1231=Ανάγνωση τιμολογίων προμηθευτή Permission1232=Δημιουργία / τροποποίηση τιμολογίων προμηθευτή Permission1233=Επικύρωση τιμολογίων προμηθευτή Permission1234=Διαγραφή τιμολογίων προμηθευτή -Permission1235=Αποστολή τιμολογίων προμηθευτή μέσω ηλεκτρονικού ταχυδρομείου +Permission1235=Αποστολή τιμολογίων προμηθευτή μέσω email Permission1236=Εξαγωγή τιμολογίων προμηθευτών, χαρακτηριστικών και πληρωμών -Permission1237=Εξαγωγή εντολών αγοράς και των στοιχείων τους -Permission1251=Εκτελέστε μαζικές εισαγωγές εξωτερικών δεδομένων σε βάση δεδομένων (φόρτωση δεδομένων) +Permission1237=Εξαγωγή παραγγελιών αγοράς και των στοιχείων τους +Permission1251=Εκτέλεση μαζικών εισαγωγών εξωτερικών δεδομένων σε βάση δεδομένων (φόρτωση δεδομένων) Permission1321=Εξαγωγή τιμολογίων πελατών, χαρακτηριστικών και πληρωμών -Permission1322=Ανοίξτε ξανά έναν πληρωμένο λογαριασμό -Permission1421=Εξαγωγή παραγγελιών και χαρακτηριστικών πωλήσεων +Permission1322=Άνοιγμα ξανά ενός πληρωμένου λογαριασμού +Permission1421=Εξαγωγή εντολών και χαρακτηριστικών πωλήσεων Permission1521=Ανάγνωση έγγραφων Permission1522=Διαγραφή εγγράφων -Permission2401=Ανάγνωση ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη του (εάν είναι κάτοχος του συμβάντος ή απλώς έχει ανατεθεί) -Permission2402=Δημιουργία / τροποποίηση ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη του (εάν είναι κάτοχος του συμβάντος) -Permission2403=Διαγραφή ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη του (εάν είναι κάτοχος του συμβάντος) -Permission2411=Διαβάστε τις ενέργειες (συμβάντα ή εργασίες) άλλων -Permission2412=Δημιουργία / τροποποίηση ενεργειών (συμβάντων ή εργασιών) άλλων -Permission2413=Διαγραφή ενεργειών (συμβάντων ή εργασιών) άλλων +Permission2401=Ανάγνωση ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη του (εάν είναι κάτοχος του συμβάντος ή απλώς του έχουν ανατεθεί) +Permission2402=Δημιουργία / τροποποίηση ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη (εάν είναι κάτοχος του συμβάντος) +Permission2403=Διαγραφή ενεργειών (συμβάντων ή εργασιών) που συνδέονται με το λογαριασμό χρήστη (εάν είναι κάτοχος του συμβάντος) +Permission2411=Ανάγνωση ενεργειών (συμβάντων ή εργασιών) άλλων χρηστών +Permission2412=Δημιουργία / τροποποίηση ενεργειών (συμβάντων ή εργασιών) άλλων χρηστών +Permission2413=Διαγραφή ενεργειών (συμβάντων ή εργασιών) άλλων χρηστών Permission2414=Εξαγωγή ενεργειών / εργασιών άλλων -Permission2501=Διάβασμα / λήψη εγγράφων +Permission2501=Ανάγνωση/Λήψη εγγράφων Permission2502=Λήψη εγγράφων -Permission2503=Υποβολή ή να διαγράψετε τα έγγραφα +Permission2503=Υποβολή ή διαγραφή εγγράφων Permission2515=Ρύθμιση καταλόγων εγγράφων -Permission2801=Χρησιμοποίησε FTP πελάτη σε λειτουργία ανάγνωσης (περιήγηση και λήψη μόνο) -Permission2802=Χρησιμοποίησε FTP πελάτη σε λειτουργία εγγραφής (διαγραφή ή μεταφόρτωση αρχείων) -Permission3200=Διαβάστε αρχειακά συμβάντα και δακτυλικά αποτυπώματα -Permission3301=Δημιουργήστε νέες ενότητες +Permission2801=Χρήση προγράμματος-πελάτη FTP σε λειτουργία ανάγνωσης (μόνο περιήγηση και λήψη) +Permission2802=Χρήση προγράμματος-πελάτη FTP σε λειτουργία εγγραφής (διαγραφή ή αποστολή αρχείων) +Permission3200=Ανάγνωση αρχειοθετημένων ενεργειών και fingerprints +Permission3301=Δημιουργία νέων ενοτήτων Permission4001= Ανάγνωση δεξιότητας/δουλειάς/θέσης Permission4002=Δημιουργία/τροποποίηση δεξιότητας/δουλειάς/θέσης Permission4003=Διαγραφή δεξιότητας/δουλειάς/θέσης Permission4020=Ανάγνωση αξιολογήσεων -Permission4021=Δημιουργήστε/τροποποιήστε την αξιολόγησή σας +Permission4021=Δημιουργία/τροποποίηση ατομικής αξιολόγησης Permission4022=Επικύρωση αξιολόγησης Permission4023=Διαγραφή αξιολόγησης Permission4030=Δείτε το μενού σύγκρισης Permission4031=Ανάγνωση προσωπικών πληροφοριών -Permission4032=Γράψτε προσωπικά στοιχεία -Permission10001=Διαβάστε το περιεχόμενο του ιστότοπου +Permission4032=Καταχώριση προσωπικών στοιχείων +Permission10001=Ανάγνωση περιεχόμενου ιστότοπου Permission10002=Δημιουργία / τροποποίηση περιεχομένου ιστότοπου (περιεχόμενο html και javascript) -Permission10003=Δημιουργία / τροποποίηση περιεχομένου ιστότοπου (δυναμικός κώδικας php). Επικίνδυνο, πρέπει να επιφυλάσσεται σε περιορισμένους προγραμματιστές. +Permission10003=Δημιουργία / τροποποίηση περιεχομένου ιστότοπου (δυναμικός κώδικας php). Επικίνδυνο, πρέπει να δίνεται μόνο σε προγραμματιστές. Permission10005=Διαγραφή περιεχομένου ιστότοπου -Permission20001=Διαβάστε τις αιτήσεις άδειας (η άδειά σας και αυτές των υφισταμένων σας) -Permission20002=Δημιουργήστε / τροποποιήστε τα αιτήματα άδειας (η άδειά σας και αυτά των υφισταμένων σας) -Permission20003=Διαγραφή των αιτήσεων άδειας +Permission20001=Ανάγνωση αιτημάτων άδειας (προσωπικής άδειας και υφισταμένων) +Permission20002=Δημιουργια / τροποποίηση των αιτήματων αδείας (προσωπικής άδειας σας και αυτές των υφισταμένων σας) +Permission20003=Διαγραφή αιτημάτων άδειας Permission20004=Ανάγνωση όλων των αιτημάτων αδείας (ακόμη και αυτά των χρηστών που δεν είναι υφιστάμενοι) Permission20005=Δημιουργία/τροποποίηση αιτημάτων άδειας για όλους (ακόμη και εκείνων των όχι υφισταμένων χρηστών ) Permission20006=Διαχείριση αιτημάτων άδειας (ρύθμιση και ενημέρωση υπολοίπου) Permission20007=Έγκριση αιτημάτων άδειας -Permission23001=Λεπτομέρειες προγραμματισμένης εργασίας -Permission23002=Δημιουργήστε/ενημερώστε μια προγραμματισμένη εργασία -Permission23003=Διαγράψτε μια προγραμματισμένη εργασία -Permission23004=Εκτελέστε μια προγραμματισμένη εργασία +Permission23001=Ανάγνωση προγραμματισμένης εργασίας +Permission23002=Δημιουργια/ενημέρωση μιας προγραμματισμένης εργασίας +Permission23003=Διαγραφή μιας προγραμματισμένης εργασίας +Permission23004=Εκτέλεση μιας προγραμματισμένης εργασίας Permission50101=Χρήση Σημείου Πώλησης (SimplePOS) Permission50151=Χρήση Σημείου Πώλησης (TakePOS) Permission50152=Επεξεργασία γραμμών πωλήσεων Permission50153=Επεξεργασία παραγγελθέντων γραμμών πωλήσεων -Permission50201=Διαβάστε τις συναλλαγές -Permission50202=Πράξεις εισαγωγής +Permission50201=Ανάγνωση συναλλαγών +Permission50202=Εισαγωγή συναλλαγών Permission50330=Ανάγνωση αντικείμενων του Zapier Permission50331=Δημιουργία/Ενημέρωση αντικειμένων του Zapier Permission50332=Διαγραφή αντικειμένων του Zapier -Permission50401=Δεσμεύστε προϊόντα και τιμολόγια με λογιστικούς λογαριασμούς -Permission50411=Διαβάστε τις λειτουργίες στο βιβλίο -Permission50412=Εγγραφή / Επεξεργασία εργασιών στο ημερολόγιο -Permission50414=Διαγράψτε τις εργασίες στο ημερολόγιο -Permission50415=Διαγράψτε όλες τις λειτουργίες ανά έτος και το ημερολόγιο στο βιβλίο -Permission50418=Λειτουργίες εξαγωγής του βιβλίου -Permission50420=Αναφορές και αναφορές εξαγωγής (κύκλος εργασιών, ισοζύγιο, περιοδικά, ημερολόγιο) -Permission50430=Ορίστε δημοσιονομικές περιόδους. Επικυρώστε τις συναλλαγές και τις κλειστές οικονομικές περιόδους. -Permission50440=Διαχείριση λογαριασμού, ρύθμιση λογιστικής -Permission51001=Διαβάστε τα στοιχεία ενεργητικού -Permission51002=Δημιουργία / ενημέρωση στοιχείων +Permission50401=Σύνδεση προϊόντων και τιμολογίων με λογιστικούς λογαριασμούς +Permission50411= Ανάγνωση μεταβολών καθολικού +Permission50412=Εγγραφή/Επεξεργασία μεταβολών στο καθολικό +Permission50414=Διαγραφή μεταβολών από το καθολικό +Permission50415=Διαγραφή όλων των μεταβολών ανά έτος και ημερολόγιο στο καθολικό +Permission50418=Εξαγωγή μεταβολών του καθολικού +Permission50420=Δημιουργία και εξαγωγή αναφορών (κύκλος εργασιών, ισοζύγιο, περιοδικά, ημερολόγιο) +Permission50430=Ορισμός φορολογικών περιόδων. Επικύρωση συναλλαγών και κλείσιμο φορολογικών περιόδων. +Permission50440=Διαχείριση λογιστικού σχεδίου, ρύθμιση λογιστικής +Permission51001=Ανάγνωση ενεργητικού +Permission51002=Δημιουργία/Ενημέρωση ενεργητικού Permission51003=Διαγραφή στοιχείων ενεργητικού -Permission51005=Ρυθμίστε τα είδη του στοιχείου +Permission51005=Ρύθμιση τύπων ενεργητικού Permission54001=Εκτύπωση -Permission55001=Διαβάστε δημοσκοπήσεις -Permission55002=Δημιουργία/τροποποίηση ερευνών +Permission55001=Ανάγνωση δημοσκοπικής έρευνας +Permission55002=Δημιουργία/τροποποίηση δημοσκοπικών ερευνών Permission59001=Δείτε τα εμπορικά περιθώρια -Permission59002=Ορίστε τα εμπορικά περιθώρια -Permission59003=Διαβάστε το κάθε περιθώριο του χρήστη -Permission63001=Διαβάστε τους πόρους +Permission59002=Ορισμός εμπορικών περιθωρίων +Permission59003=Ανάγνωση περιθωρίου κάθε χρήστη +Permission63001=Ανάγνωση πόρων Permission63002=Δημιουργία / τροποποίηση πόρων -Permission63003=Διαγράψτε τους πόρους -Permission63004=Συνδέστε τους πόρους στις εκδηλώσεις της ατζέντας +Permission63003=Διαγραφή πόρων +Permission63004=Σύνδεση πόρων με εκδηλώσεις της ατζέντας Permission64001=Επιτρέψτε την απευθείας εκτύπωση Permission67000=Επιτρέψτε την εκτύπωση αποδείξεων Permission68001=Ανάγνωση έκθεσης intracomm @@ -1032,36 +1032,36 @@ Permission941602=Δημιουργία και τροποποίηση αποδεί Permission941603=Επικύρωση αποδείξεων Permission941604=Αποστολή αποδείξεων με email Permission941605=Εξαγωγή παραλαβών -Permission941606=Διαγραφή αποδείξεων +Permission941606=Διαγραφή παραλαβών DictionaryCompanyType=Τύποι τρίτου μέρους DictionaryCompanyJuridicalType=Νομικές οντότητες τρίτων DictionaryProspectLevel=Επίπεδο προοπτικής για εταιρείες DictionaryProspectContactLevel=Επίπεδο προοπτικής για επαφές -DictionaryCanton=Κράτη / Επαρχίες +DictionaryCanton=Νομοί/Δήμοι DictionaryRegion=Περιοχές DictionaryCountry=Χώρες DictionaryCurrency=Νόμισμα DictionaryCivility=Τιμητικοί τίτλοι -DictionaryActions=Τύποι συμβάντων ημερήσιας διάταξης +DictionaryActions=Τύποι συμβάντων ατζέντας DictionarySocialContributions=Είδη κοινωνικών ή φορολογικών εισφορών -DictionaryVAT=Τιμές ΦΠΑ ή φόρου επί των πωλήσεων -DictionaryRevenueStamp=Ποσό των φορολογικών σφραγίδων +DictionaryVAT=Ποσοστά ΦΠΑ ή φόρου επί των πωλήσεων +DictionaryRevenueStamp=Ποσό των φορολογικών χαρτόσημων DictionaryPaymentConditions=Όροι πληρωμής DictionaryPaymentModes=Τρόποι πληρωμής -DictionaryTypeContact=Τύποι Επικοινωνίας/Διεύθυνση -DictionaryTypeOfContainer=Ιστοσελίδα - Τύπος ιστοσελίδων / δοχείων +DictionaryTypeContact=Τύποι επικοινωνίας/διευθύνσεων +DictionaryTypeOfContainer=Ιστότοπος - Τύπος σελίδων/κοντέινερ ιστότοπου DictionaryEcotaxe=Οικολογικός φόρος (ΑΗΗΕ) DictionaryPaperFormat=Μορφές χαρτιού DictionaryFormatCards=Μορφές καρτών -DictionaryFees=Έκθεση δαπανών - Τύποι γραμμών αναφοράς δαπανών +DictionaryFees=Αναφορά εξόδων - Τύποι γραμμών αναφοράς εξόδων DictionarySendingMethods=Τρόποι Αποστολής DictionaryStaff=Αριθμός εργαζομένων DictionaryAvailability=Καθυστέρηση παράδοσης DictionaryOrderMethods=Μέθοδοι παραγγελίας -DictionarySource=Προέλευση των προτάσεων/παραγγελιών +DictionarySource=Προέλευση των προσφορών/παραγγελιών DictionaryAccountancyCategory=Εξατομικευμένες ομάδες για αναφορές DictionaryAccountancysystem=Μοντέλα λογιστικού σχεδίου -DictionaryAccountancyJournal=Λογιστικά περιοδικά +DictionaryAccountancyJournal=Λογιστικά ημερολόγια DictionaryEMailTemplates=Πρότυπα ηλεκτρονικού ταχυδρομείου DictionaryUnits=Μονάδες DictionaryMeasuringUnits=Μονάδες μέτρησης @@ -1069,23 +1069,23 @@ DictionarySocialNetworks=Κοινωνικά Δίκτυα DictionaryProspectStatus=Κατάσταση προοπτικής για εταιρείες DictionaryProspectContactStatus=Κατάσταση προοπτικής για επαφές DictionaryHolidayTypes=Άδεια - Είδη αδειών -DictionaryOpportunityStatus=Κατάσταση μολύβδου για έργο / μόλυβδο -DictionaryExpenseTaxCat=Έκθεση δαπανών - Κατηγορίες μεταφορών -DictionaryExpenseTaxRange=Έκθεση εξόδων - Εύρος ανά κατηγορία μεταφοράς +DictionaryOpportunityStatus=Κατάσταση δυνητικού πελάτη για έργο/προοπτική +DictionaryExpenseTaxCat=Αναφορά εξόδων- Κατηγορίες μετακίνησης +DictionaryExpenseTaxRange=Αναφορά εξόδων - Εύρος ανά κατηγορία μετακίνησης DictionaryTransportMode=Έκθεση intracomm - Τρόπος μεταφοράς DictionaryBatchStatus=Κατάσταση ποιοτικού ελέγχου παρτίδας/σειράς προϊόντος DictionaryAssetDisposalType=Είδος διάθεσης περιουσιακών στοιχείων TypeOfUnit=Τύπος μονάδας SetupSaved=Οι ρυθμίσεις αποθηκεύτηκαν -SetupNotSaved=Το πρόγραμμα εγκατάστασης δεν αποθηκεύτηκε -BackToModuleList=Επιστροφή στη λίστα λειτουργιών +SetupNotSaved=Η ρύθμιση δεν αποθηκεύτηκε +BackToModuleList=Επιστροφή στη λίστα Ενοτήτων BackToDictionaryList=Επιστροφή στη λίστα λεξικών -TypeOfRevenueStamp=Είδος φορολογικής σφραγίδας +TypeOfRevenueStamp=Είδος φορολογικού χαρτόσημου VATManagement=Διαχείριση Φορολογίας Πωλήσεων -VATIsUsedDesc=Από προεπιλογή κατά τη δημιουργία προοπτικών, τιμολογίων, παραγγελιών κλπ. Ο συντελεστής φόρου επί των πωλήσεων ακολουθεί τον ισχύοντα κανόνα:
Αν ο πωλητής δεν υπόκειται σε φόρο επί των πωλήσεων, τότε ο φόρος πωλήσεων είναι μηδενικός. Τέλος κανόνα.
Εάν η χώρα (πωλητή = χώρα αγοραστή), τότε ο φόρος πωλήσεων εξ ορισμού ισούται με τον φόρο πωλήσεων του προϊόντος στη χώρα του πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής είναι αμφότεροι στην Ευρωπαϊκή Κοινότητα και τα αγαθά είναι προϊόντα που σχετίζονται με τη μεταφορά (μεταφορά εμπορευμάτων, ναυτιλία, αεροπορική εταιρεία), ο προκαθορισμένος ΦΠΑ είναι 0. Ο κανόνας αυτός εξαρτάται από τη χώρα του πωλητή - συμβουλευτείτε τον λογιστή σας. Ο ΦΠΑ πρέπει να καταβάλλεται από τον αγοραστή στο τελωνείο της χώρας του και όχι στον πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής είναι και οι δύο στην Ευρωπαϊκή Κοινότητα και ο αγοραστής δεν είναι εταιρεία (με καταχωρημένο ενδοκοινοτικό αριθμό ΦΠΑ), τότε ο ΦΠΑ είναι μηδενικός του συντελεστή ΦΠΑ της χώρας του πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής είναι και οι δύο στην Ευρωπαϊκή Κοινότητα και ο αγοραστής είναι εταιρεία (με καταχωρημένο ενδοκοινοτικό αριθμό ΦΠΑ), τότε ο ΦΠΑ είναι 0 από προεπιλογή. Τέλος κανόνα.
Σε κάθε άλλη περίπτωση, η προτεινόμενη αθέτηση είναι ο φόρος πωλήσεων = 0. Τέλος κανόνα. -VATIsNotUsedDesc=Από προεπιλογή, ο προτεινόμενος φόρος πωλήσεων είναι 0 ο οποίος μπορεί να χρησιμοποιηθεί σε περιπτώσεις όπως ενώσεις, ιδιώτες ή μικρές επιχειρήσεις. -VATIsUsedExampleFR=Στη Γαλλία, σημαίνει ότι οι εταιρείες ή οι οργανώσεις έχουν ένα πραγματικό φορολογικό σύστημα (απλοποιημένο πραγματικό ή κανονικό πραγματικό). Ένα σύστημα στο οποίο δηλώνεται ο ΦΠΑ. -VATIsNotUsedExampleFR=Στη Γαλλία, δηλώνονται ενώσεις που δεν έχουν δηλωθεί ως φόρος πωλήσεων ή εταιρείες, οργανώσεις ή ελεύθερα επαγγέλματα που επέλεξαν το φορολογικό σύστημα των μικροεπιχειρήσεων (Φόρος πωλήσεων σε franchise) και κατέβαλαν φόρο επί των πωλήσεων χωρίς καμία δήλωση φόρου επί των πωλήσεων. Αυτή η επιλογή θα εμφανίζει στα τιμολόγια την αναφορά "Μη εφαρμοστέος φόρος πωλήσεων - art-293B του CGI". +VATIsUsedDesc=Από προεπιλογή κατά τη δημιουργία προοπτικών, τιμολογίων, παραγγελιών κ.λπ. ο συντελεστής φόρου επί των πωλήσεων ακολουθεί τον ενεργό τυπικό κανόνα:
Εάν ο πωλητής δεν υπόκειται σε φόρο επί των πωλήσεων, τότε ο φόρος επί των πωλήσεων είναι προεπιλεγμένος σε 0. Τέλος κανόνα.
Εάν η (χώρα πωλητή = χώρα του αγοραστή), τότε ο φόρος επί των πωλήσεων από προεπιλογή ισούται με τον φόρο επί των πωλήσεων του προϊόντος στη χώρα του πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής βρίσκονται και οι δύο στην Ευρωπαϊκή Κοινότητα και τα αγαθά είναι προϊόντα που σχετίζονται με τις μεταφορές (μεταφορές, ναυτιλία, αεροπορική εταιρεία), ο προεπιλεγμένος ΦΠΑ είναι 0. Αυτός ο κανόνας εξαρτάται από τη χώρα του πωλητή - συμβουλευτείτε τον λογιστή σας. Ο ΦΠΑ θα πρέπει να καταβληθεί από τον αγοραστή στο τελωνείο της χώρας του και όχι στον πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής βρίσκονται και οι δύο στην Ευρωπαϊκή Κοινότητα και ο αγοραστής δεν είναι εταιρεία (με εγγεγραμμένο ενδοκοινοτικό αριθμό ΦΠΑ), τότε ο ΦΠΑ ειναι ίσος με τον συντελεστή ΦΠΑ της χώρας του πωλητή. Τέλος κανόνα.
Εάν ο πωλητής και ο αγοραστής βρίσκονται και οι δύο στην Ευρωπαϊκή Κοινότητα και ο αγοραστής είναι εταιρεία (με εγγεγραμμένο ενδοκοινοτικό ΑΦΜ), τότε ο ΦΠΑ είναι 0 από προεπιλογή. Τέλος κανόνα.
Σε κάθε άλλη περίπτωση, η προτεινόμενη προεπιλογή είναι φόρος πωλήσεων=0. Τέλος κανόνα. +VATIsNotUsedDesc=Από προεπιλογή, ο προτεινόμενος φόρος επί των πωλήσεων είναι 0, ο οποίος μπορεί να χρησιμοποιηθεί για περιπτώσεις όπως ενώσεις, ιδιώτες ή μικρές εταιρείες. +VATIsUsedExampleFR=Στη Γαλλία, σημαίνει εταιρείες ή οργανισμούς που έχουν πραγματικό δημοσιονομικό σύστημα (Απλοποιημένο πραγματικό ή κανονικό πραγματικό). Ένα σύστημα στο οποίο δηλώνεται ο ΦΠΑ. +VATIsNotUsedExampleFR=Στη Γαλλία, σημαίνει ενώσεις που δεν έχουν δηλώσει φόρο επί των πωλήσεων ή εταιρείες, οργανώσεις ή ελεύθερα επαγγέλματα που έχουν επιλέξει το φορολογικό σύστημα μικροεπιχειρήσεων (Φόρος επί των πωλήσεων σε franchise) και πλήρωσαν φόρο επί των πωλήσεων franchise χωρίς δήλωση φόρου επί των πωλήσεων. Αυτή η επιλογή θα εμφανίζει την αναφορά "Μη εφαρμοστέος φόρος επί των πωλήσεων - art-293B of CGI" στα τιμολόγια. ##### Local Taxes ##### TypeOfSaleTaxes=Είδος φόρου επί των πωλήσεων LTRate=Τιμή @@ -1095,7 +1095,7 @@ LocalTax1IsNotUsedDesc=Μην χρησιμοποιείτε άλλο είδος LocalTax1Management=Δεύτερο είδος φόρου LocalTax1IsUsedExample= LocalTax1IsNotUsedExample= -LocalTax2IsNotUsed=Μην χρησιμοποιείτε τρίτους φόρους +LocalTax2IsNotUsed=Μην χρησιμοποιείτε τρίτο φόρο LocalTax2IsUsedDesc=Χρησιμοποιήστε έναν τρίτο τύπο φόρου (εκτός από τον πρώτο) LocalTax2IsNotUsedDesc=Μην χρησιμοποιείτε άλλο είδος φόρου (εκτός από τον πρώτο) LocalTax2Management=Τρίτος τύπος φόρου @@ -1104,16 +1104,16 @@ LocalTax2IsNotUsedExample= LocalTax1ManagementES=RE Management LocalTax1IsUsedDescES=Η τιμή του RE από προεπιλογή κατά τη δημιουργία προοπτικών, τιμολογίων, παραγγελιών κ.λπ. ακολουθεί τον ισχύοντα κανόνα:
Αν ο αγοραστής δεν υποβληθεί σε RE, η τιμή RE είναι προεπιλεγμένη = 0. Τέλος κανόνα.
Αν ο αγοραστής υποβληθεί σε RE τότε το RE από προεπιλογή. Τέλος κανόνα.
LocalTax1IsNotUsedDescES=Από προεπιλογή, το προτεινόμενο RE είναι 0. Τέλος κανόνα. -LocalTax1IsUsedExampleES=In Spain they are professionals subject to some specific sections of the Spanish IAE. -LocalTax1IsNotUsedExampleES=In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax1IsUsedExampleES=Στην Ισπανία είναι επαγγελματίες που υπόκεινται σε ορισμένα συγκεκριμένα τμήματα της ισπανικής IAE. +LocalTax1IsNotUsedExampleES=Στην Ισπανία είναι επαγγελματίες και εταιρείες και υπόκεινται σε ορισμένα τμήματα της ισπανικής IAE. LocalTax2ManagementES=IRPF Management LocalTax2IsUsedDescES=Το ποσοστό IRPF από προεπιλογή κατά τη δημιουργία προοπτικών, τιμολογίων, παραγγελιών κ.λπ. ακολουθεί τον ενεργό κανόνα αναφοράς:
Εάν ο πωλητής δεν υποβληθεί σε IRPF, τότε το IRPF είναι προεπιλεγμένο = 0. Τέλος κανόνα.
Αν ο πωλητής υποβληθεί στο IRPF, τότε το IRPF έχει προεπιλεγεί. Τέλος κανόνα.
LocalTax2IsNotUsedDescES=Από προεπιλογή, το προτεινόμενο IRPF είναι 0. Τέλος κανόνα. -LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsUsedExampleES=Στην Ισπανία, ελεύθεροι επαγγελματίες και ανεξάρτητοι επαγγελματίες που παρέχουν υπηρεσίες και εταιρείες που έχουν επιλέξει το φορολογικό σύστημα των ενοτήτων. LocalTax2IsNotUsedExampleES=Στην Ισπανία είναι επιχειρήσεις που δεν υπόκεινται σε φορολογικό σύστημα ενοτήτων. RevenueStampDesc=Το "φορολογικό χαρτόσημο" ή "χαρτόσημο εισοδήματος" είναι ένας σταθερός φόρος ανά τιμολόγιο (Δεν εξαρτάται από το ποσό του τιμολογίου). Μπορεί επίσης να είναι ένα ποσοστό φόρου, αλλά η χρήση του δεύτερου ή του τρίτου τύπου φόρου είναι καλύτερη για τους ποσοστιαίους φόρους, καθώς για τα φορολογικά χαρτόσημα δεν παρέχουν καμία αναφορά. Μόνο λίγες χώρες χρησιμοποιούν αυτόν τον τύπο φόρου. -UseRevenueStamp=Χρησιμοποιήστε μια σφραγίδα φόρου -UseRevenueStampExample=Η τιμή της φορολογικής σφραγίδας καθορίζεται από προεπιλογή στη ρύθμιση των λεξικών (%s - %s - %s) +UseRevenueStamp=Χρησιμοποιήστε φορολογικό χαρτόσημο +UseRevenueStampExample=Η αξία του φορολογικού χαρτοσήμου ορίζεται από προεπιλογή στη ρύθμιση των λεξικών (%s - %s - %s) CalcLocaltax=Αναφορές για τοπικούς φόρους CalcLocaltax1=Πωλήσεις - Αγορές CalcLocaltax1Desc=Οι αναφορές τοπικών φόρων υπολογίζονται με τη διαφορά μεταξύ τοπικών πωλήσεων και τοπικών αγορών @@ -1124,47 +1124,47 @@ CalcLocaltax3Desc=Οι αναφορές τοπικών φόρων είναι τ NoLocalTaxXForThisCountry=Σύμφωνα με τη ρύθμιση των φόρων (Βλέπε %s - %s - %s), η χώρα σας δεν χρειάζεται να χρησιμοποιεί τέτοιου είδους φόρους LabelUsedByDefault=Ετικέτα που χρησιμοποιείται από προεπιλογή εάν δεν υπάρχει μετάφραση για τον κώδικα LabelOnDocuments=Ετικέτα στα έγγραφα -LabelOrTranslationKey=Κλειδί ετικέτας ή μετάφρασης +LabelOrTranslationKey=Ετικέτα ή όρος μετάφρασης ValueOfConstantKey=Τιμή σταθεράς διαμόρφωσης ConstantIsOn=Η επιλογή %s είναι ενεργοποιημένη NbOfDays=Αριθ. Ημερών AtEndOfMonth=Στο τέλος του μήνα -CurrentNext=Τρέχουσα / Επόμενη +CurrentNext=Μια δεδομένη ημέρα του μήνα Offset=Απόκλιση -AlwaysActive=Πάντα εν ενεργεία +AlwaysActive=Πάντα ενεργός Upgrade=Αναβάθμιση MenuUpgrade=Αναβάθμιση / Επέκταση -AddExtensionThemeModuleOrOther=Εγκαταστήστε / εγκαταστήστε την εξωτερική εφαρμογή / ενότητα -WebServer=Διακομιστής Ιστοσελίδων -DocumentRootServer=Ριζικός φάκελος διακομιστή ιστοσελίδων -DataRootServer=Φάκελος Εγγράφων +AddExtensionThemeModuleOrOther=Ανάπτυξη / εγκατάσταση εξωτερικής εφαρμογής / ενότητας +WebServer=Διακομιστής Ιστού +DocumentRootServer=Ο ριζικός κατάλογος του διακομιστή Ιστού +DataRootServer=Κατάλογος αρχείων δεδομένων IP=IP Port=Θύρα -VirtualServerName=Virtual server name +VirtualServerName=Όνομα εικονικού διακομιστή OS=OS -PhpWebLink=Web-Php link +PhpWebLink=Σύνδεσμος Web-Php Server=Server Database=Βάση Δεδομένων -DatabaseServer=Υπολογιστής ΒΔ -DatabaseName=Όνομα ΒΔ -DatabasePort=Θύρα ΒΔ -DatabaseUser=Χρήστης ΒΔ -DatabasePassword=Συνθηματικό ΒΔ +DatabaseServer=Κεντρικός υπολογιστής βάσης δεδομένων +DatabaseName=Όνομα βάσης δεδομένων +DatabasePort=Θύρα βάσης δεδομένων +DatabaseUser=Χρήστης βάσης δεδομένων +DatabasePassword=Κωδικός πρόσβασης βάσης δεδομένων Tables=Πίνακες TableName=Όνομα Πίνακα -NbOfRecord=Αριθ. Εγγραφών +NbOfRecord=Αριθμός Εγγραφών Host=Διακομιστής -DriverType=Driver type +DriverType=Τύπος προγράμματος οδήγησης SummarySystem=Σύνοψη πληροφοριών συστήματος -SummaryConst=Λίστα όλων των παραμέτρων ρύθμισης Dolibarr +SummaryConst=Λίστα όλων των παραμέτρων ρύθμισης του Dolibarr MenuCompanySetup=Εταιρεία / Οργανισμός DefaultMenuManager= Τυπικός διαχειριστής μενού DefaultMenuSmartphoneManager=Διαχειριστής μενού Smartphone Skin=Θέμα -DefaultSkin=Προκαθορισμένο Θέμα -MaxSizeList=Max length for list +DefaultSkin=Βασικό Θέμα +MaxSizeList=Μέγιστο μήκος για λίστα DefaultMaxSizeList=Προεπιλεγμένο μέγιστο μέγεθος για λίστες -DefaultMaxSizeShortList=Προεπιλεγμένο μέγιστο μήκος για σύντομες λίστες (δηλ. Σε κάρτα πελάτη) +DefaultMaxSizeShortList=Προεπιλεγμένο μέγιστο μήκος για σύντομες λίστες (π.χ. Σε κάρτα πελάτη) MessageOfDay=Μήνυμα της ημέρας MessageLogin=Μήνυμα σελίδας εισόδου LoginPage=Σελίδα σύνδεσης @@ -1172,7 +1172,7 @@ BackgroundImageLogin=Εικόνα φόντου PermanentLeftSearchForm=Μόνιμη φόρμα αναζήτησης στο αριστερό μενού DefaultLanguage=Προεπιλεγμένη γλώσσα EnableMultilangInterface=Ενεργοποιήστε την πολυγλωσσική υποστήριξη για συσχετισμούς πελατών ή προμηθευτών -EnableShowLogo=Εμφανίστε το λογότυπο της εταιρείας στο μενού +EnableShowLogo=Εμφάνιση λογότυπου εταιρείας στο μενού CompanyInfo=Εταιρεία / Οργανισμός CompanyIds=Ταυτότητα εταιρείας / οργανισμού CompanyName=Όνομα @@ -1182,129 +1182,129 @@ CompanyTown=Πόλη CompanyCountry=Χώρα CompanyCurrency=Βασικό Νόμισμα CompanyObject=Αντικείμενο της εταιρίας -IDCountry=Χώρα αναγνώρισης -Logo=Logo -LogoDesc=Κύριο λογότυπο της εταιρείας. Θα χρησιμοποιηθεί στα παραγόμενα έγγραφα (PDF, ...) +IDCountry=Αναγνωριστικό χώρας +Logo=Λογότυπο +LogoDesc=Το λογότυπο της εταιρείας. Θα χρησιμοποιηθεί στα παραγόμενα έγγραφα (PDF, ...) LogoSquarred=Λογότυπο (τετράγωνο) -LogoSquarredDesc=Πρέπει να είναι ένα τετράγωνο εικονίδιο (πλάτος = ύψος). Αυτό το λογότυπο θα χρησιμοποιηθεί ως το αγαπημένο εικονίδιο ή άλλη ανάγκη, όπως για την επάνω γραμμή μενού (αν δεν είναι απενεργοποιημένη στην εγκατάσταση απεικόνισης). -DoNotSuggestPaymentMode=Χωρίς πρόταση πληρωμής +LogoSquarredDesc=Πρέπει να είναι ένα τετράγωνο εικονίδιο (πλάτος = ύψος). Αυτό το λογότυπο θα χρησιμοποιηθεί ως το αγαπημένο εικονίδιο ή για άλλη χρήση, όπως για την επάνω γραμμή μενού (αν δεν είναι απενεργοποιημένη στην εγκατάσταση απεικόνισης). +DoNotSuggestPaymentMode=Μη προτείνετε NoActiveBankAccountDefined=Δεν έχει οριστεί ενεργός λογαριασμός τράπεζας -OwnerOfBankAccount=Ιδιοκτήτης του λογαριασμού τράπεζας %s -BankModuleNotActive=Bank accounts module not enabled +OwnerOfBankAccount=Ιδιοκτήτης λογαριασμού τράπεζας %s +BankModuleNotActive=Η ενότητα τραπεζικών λογαριασμών δεν είναι ενεργοποιημένη ShowBugTrackLink=Εμφάνιση του συνδέσμου " %s " ShowBugTrackLinkDesc=Διατηρήστε το κενό για να μην εμφανίζεται αυτός ο σύνδεσμος, χρησιμοποιήστε την τιμή "github" για τον σύνδεσμο προς το έργο Dolibarr ή ορίστε απευθείας μια διεύθυνση url "https://..." -Alerts=Συναγερμοί +Alerts=Ειδοποιήσεις DelaysOfToleranceBeforeWarning=Εμφάνιση προειδοποιητικής ειδοποίησης για... -DelaysOfToleranceDesc=Ορίστε την καθυστέρηση πριν εμφανιστεί στην οθόνη το εικονίδιο ειδοποίησης %s στην οθόνη για το καθυστερημένο στοιχείο. -Delays_MAIN_DELAY_ACTIONS_TODO=Τα προγραμματισμένα συμβάντα (γεγονότα της ατζέντας) δεν ολοκληρώθηκαν +DelaysOfToleranceDesc=Ρυθμίστε την καθυστέρηση προτού εμφανιστεί στην οθόνη ένα εικονίδιο ειδοποίησης %s για το στοιχείο που έχει καθυστερήσει. +Delays_MAIN_DELAY_ACTIONS_TODO=Τα προγραμματισμένα συμβάντα (γεγονότα της ατζέντας) που δεν ολοκληρώθηκαν Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Το έργο δεν έκλεισε εγκαίρως Delays_MAIN_DELAY_TASKS_TODO=Η προγραμματισμένη εργασία (εργασίες έργου) δεν ολοκληρώθηκε Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Η παραγγελία δεν υποβλήθηκε σε επεξεργασία Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Η παραγγελία αγοράς δεν υποβλήθηκε σε επεξεργασία -Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Η πρόταση δεν έκλεισε -Delays_MAIN_DELAY_PROPALS_TO_BILL=Η πρόταση δεν χρεώνεται +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Η προσφορά δεν έκλεισε +Delays_MAIN_DELAY_PROPALS_TO_BILL=Η προσφορά δεν χρεώθηκε Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Υπηρεσία για ενεργοποίηση -Delays_MAIN_DELAY_RUNNING_SERVICES=Έληξε υπηρεσία -Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Μη πληρωμένο τιμολόγιο πωλητή -Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Μη πληρωθέν τιμολόγιο πελατών -Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Εκκρεμούσα συμφιλίωση τραπεζών +Delays_MAIN_DELAY_RUNNING_SERVICES=Ληγμένη υπηρεσία +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Ανεξόφλητα τιμολόγια προμηθευτή +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Ανεξόφλητα τιμολόγια πελάτη +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Εκκρεμεί ο τραπεζικός συμβιβασμός Delays_MAIN_DELAY_MEMBERS=Καθυστερημένη συνδρομή μέλους -Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Ελέγξτε ότι η κατάθεση δεν έγινε -Delays_MAIN_DELAY_EXPENSEREPORTS=Έκθεση εξόδων για έγκριση -Delays_MAIN_DELAY_HOLIDAYS=Αφήστε τα αιτήματα για έγκριση +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Η κατάθεση επιταγής δεν έγινε +Delays_MAIN_DELAY_EXPENSEREPORTS=Αναφορά εξόδων προς έγκριση +Delays_MAIN_DELAY_HOLIDAYS=Αιτήματα άδειας προς έγκριση SetupDescription1=Πριν ξεκινήσετε τη χρήση του Dolibarr πρέπει να οριστούν ορισμένες αρχικές παράμετροι και να ενεργοποιηθούν / διαμορφωθούν οι ενότητες. SetupDescription2=Οι ακόλουθες δύο ενότητες είναι υποχρεωτικές (οι δύο πρώτες καταχωρίσεις στο μενού Ρύθμιση): -SetupDescription3=  %s -> %s

Βασικές παράμετροι που χρησιμοποιούνται για την προσαρμογή της προεπιλεγμένης συμπεριφοράς της εφαρμογής σας (π.χ. για λειτουργίες που σχετίζονται με τη χώρα). +SetupDescription3=%s ->%s

Βασικές παράμετροι που χρησιμοποιούνται για την προσαρμογή της προεπιλεγμένης συμπεριφοράς της εφαρμογής σας (π.χ. για λειτουργίες που σχετίζονται με τη χώρα). SetupDescription4=  %s -> %s

Αυτό το λογισμικό είναι μια σειρά από πολλές ενότητες / εφαρμογές. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να ενεργοποιηθούν και να διαμορφωθούν. Οι καταχωρήσεις μενού θα εμφανιστούν με την ενεργοποίηση αυτών των ενοτήτων. -SetupDescription5=Άλλες καταχωρίσεις μενού ρυθμίσεων διαχειρίζονται προαιρετικές παραμέτρ +SetupDescription5=Άλλες καταχωρήσεις του μενού Ρυθμίσεις αφορούν σε προαιρετικές παραμέτρους. SetupDescriptionLink= %s - %s SetupDescription3b=Βασικές παράμετροι που χρησιμοποιούνται για την προσαρμογή της προεπιλεγμένης συμπεριφοράς της εφαρμογής σας (π.χ. για λειτουργίες που σχετίζονται με τη χώρα). -SetupDescription4b=Αυτό το λογισμικό είναι μια σουίτα πολλών λειτουργικών μονάδων/εφαρμογών. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να είναι ενεργοποιημένες και ρυθμισμένες. Οι καταχωρήσεις μενού θα εμφανιστούν με την ενεργοποίηση αυτών των μονάδων. +SetupDescription4b=Αυτό το λογισμικό είναι μια σουίτα πολλών λειτουργικών ενοτήτων/εφαρμογών. Οι ενότητες που σχετίζονται με τις ανάγκες σας πρέπει να είναι ενεργοποιημένες και ρυθμισμένες. Οι καταχωρήσεις μενού θα εμφανιστούν με την ενεργοποίηση αυτών των ενοτήτων. AuditedSecurityEvents=Συμβάντα ασφαλείας που ελέγχθηκαν NoSecurityEventsAreAduited=Δεν ελέγχονται συμβάντα ασφαλείας. Μπορείτε να τα ενεργοποιήσετε από το μενού %s -Audit=Λογιστικοί έλεγχοι -InfoDolibarr=Πληροφορίες Dolibarr -InfoBrowser=Πληροφορίες Φυλλομετρητή -InfoOS=Πληροφορίες OS -InfoWebServer=Πληροφορίες Web Server -InfoDatabase=Πληροφορίες Συστήματος ΒΔ +Audit=Συμβάντα ασφαλείας +InfoDolibarr=Σχετικά με το Dolibarr +InfoBrowser=Σχετικά με το πρόγραμμα περιήγησης +InfoOS=Σχετικά με το OS +InfoWebServer=Σχετικά με τον διακομιστή Web +InfoDatabase=Πληροφορίες Βάσης Δεδομένων InfoPHP=Πληροφορίες PHP InfoPerf=Πληροφορίες επιδόσεων InfoSecurity=Σχετικά με την Ασφάλεια BrowserName=Όνομα φυλλομετρητή BrowserOS=Λειτουργικό σύστημα φυλλομετρητή ListOfSecurityEvents=Λίστα συμβάντων ασφαλείας Dolibarr -SecurityEventsPurged=Συμβάντα ασφαλείας εξαγνίζονται +SecurityEventsPurged=Εκκαθαρίστηκαν τα συμβάντα ασφαλείας LogEventDesc=Ενεργοποιήστε την καταγραφή για συγκεκριμένα συμβάντα ασφαλείας. Οι διαχειριστές μέσω του μενού %s - %s . Προειδοποίηση, αυτή η δυνατότητα μπορεί να δημιουργήσει ένα μεγάλο όγκο δεδομένων στη βάση δεδομένων. -AreaForAdminOnly=Οι παράμετροι εγκατάστασης μπορούν να οριστούν μόνο από χρήστες διαχειριστή . -SystemInfoDesc=Οι πληροφορίες συστήματος είναι διάφορες τεχνικές πληροφορίες που λαμβάνετε μόνο στη λειτουργία ανάγνωσης και είναι ορατές μόνο για τους διαχειριστές. -SystemAreaForAdminOnly=Αυτή η περιοχή είναι διαθέσιμη μόνο σε χρήστες διαχειριστή. Τα δικαιώματα χρήστη Dolibarr δεν μπορούν να αλλάξουν αυτόν τον περιορισμό. +AreaForAdminOnly=Οι παράμετροι εγκατάστασης μπορούν να οριστούν μόνο από διαχειριστές . +SystemInfoDesc=Οι πληροφορίες συστήματος είναι διάφορες τεχνικές πληροφορίες που λαμβάνετε μόνο σε λειτουργία ανάγνωσης και είναι ορατές μόνο για τους διαχειριστές. +SystemAreaForAdminOnly=Αυτος ο τομεας είναι διαθέσιμος μόνο σε διαχειριστές. Τα δικαιώματα χρήστη Dolibarr δεν μπορούν να αλλάξουν αυτόν τον περιορισμό. CompanyFundationDesc=Επεξεργαστείτε τις πληροφορίες της εταιρείας / του οργανισμού σας. Κάντε κλικ στο κουμπί "%s" στο κάτω μέρος της σελίδας όταν τελειώσετε. -AccountantDesc=Εάν έχετε έναν εξωτερικό λογιστή / λογιστή, μπορείτε να επεξεργαστείτε εδώ τις πληροφορίες του. -AccountantFileNumber=Λογιστικό κώδικα +AccountantDesc=Εάν έχετε έναν εξωτερικό λογιστή, μπορείτε να επεξεργαστείτε εδώ τις πληροφορίες του. +AccountantFileNumber=Κωδικός λογιστή DisplayDesc=Οι παράμετροι που επηρεάζουν την εμφάνιση και την παρουσίαση της εφαρμογής μπορούν να τροποποιηθούν εδώ. AvailableModules=Διαθέσιμες εφαρμογές / ενότητες -ToActivateModule=Για να ενεργοποιήσετε Ενθέματα, μεταβείτε στην Περιοχή εγκατάστασης (Αρχική σελίδα-> Ρυθμίσεις-> Ενθέματα). +ToActivateModule=Για να ενεργοποιήσετε ενότητες, μεταβείτε στην Περιοχή εγκατάστασης (Αρχική-> Ρυθμίσεις-> Ενότητες/Εφαρμογές). SessionTimeOut=Λήξη χρόνου για τη συνεδρία SessionExplanation=Αυτός ο αριθμός εγγυάται ότι η σύνοδος δεν θα λήξει ποτέ πριν από αυτήν την καθυστέρηση, εάν το πρόγραμμα καθαρισμού συνεδριών γίνεται από εσωτερικό πρόγραμμα καθαρισμού συνεδριών PHP (και τίποτα άλλο). Το εσωτερικό καθαριστικό συνεδρίας της PHP δεν εγγυάται ότι η περίοδος λήξης θα λήξει μετά από αυτήν την καθυστέρηση. Θα λήξει μετά από αυτή την καθυστέρηση και όταν εκτελείται το πρόγραμμα καθαρισμού συνεδριών, έτσι ώστε κάθε %s / %s να έχει πρόσβαση, αλλά μόνο κατά την πρόσβαση από άλλες συνεδρίες (εάν η τιμή είναι 0, σημαίνει ότι η εκκαθάριση της περιόδου λειτουργίας γίνεται μόνο από μια εξωτερική διαδικασία) .
Σημείωση: Σε ορισμένους διακομιστές με μηχανισμό εξωτερικού καθαρισμού συνεδριών (cron κάτω από debian, ubuntu ...), οι συνεδρίες μπορούν να καταστραφούν μετά από μια περίοδο που ορίζεται από μια εξωτερική ρύθμιση, ανεξάρτητα από την αξία που εισάγεται εδώ. SessionsPurgedByExternalSystem=Οι περίοδοι σύνδεσης σε αυτόν τον διακομιστή φαίνεται να καθαρίζονται από έναν εξωτερικό μηχανισμό (cron υπό debian, ubuntu ...), πιθανώς κάθε %s δευτερόλεπτα (= η τιμή της παραμέτρου session.gc_maxlifetime). Η Αλλαγή της τιμή της παραμέτρου από εδώ δεν θα έχει κάποιο αποτέλεσμα. Πρέπει να ζητήσετε από τον διαχειριστή του διακομιστή να αλλάξει την καθυστέρηση συνεδρίας. -TriggersAvailable=Available triggers -TriggersDesc=Οι ενεργοποιητές είναι αρχεία που θα τροποποιήσουν τη συμπεριφορά της ροής εργασίας Dolibarr μόλις αντιγραφεί στον κατάλογο htdocs / core / trigger . Συνειδητοποιούν νέες ενέργειες που ενεργοποιούνται σε συμβάντα Dolibarr (δημιουργία νέας εταιρείας, επικύρωση τιμολογίου, ...). -TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. -TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. -TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. -TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. -GeneratedPasswordDesc=Επιλέξτε τη μέθοδο που θα χρησιμοποιηθεί για τους κωδικούς πρόσβασης που δημιουργούνται αυτόματα. +TriggersAvailable=Διαθέσιμα triggers +TriggersDesc=Τα triggers είναι αρχεία που θα τροποποιήσουν τη συμπεριφορά της ροής εργασίας Dolibarr μόλις αντιγραφουν στον κατάλογο htdocs/core/triggers . Πραγματοποιούν νέες ενέργειες που ενεργοποιούνται σε συμβάντα Dolibarr (δημιουργία νέας εταιρείας, επικύρωση τιμολογίου, ...). +TriggerDisabledByName=Τα triggers σε αυτό το αρχείο ειναι απενεργοποιημένα από το επίθημα -NORUN στο όνομά τους. +TriggerDisabledAsModuleDisabled=Τα triggers σε αυτό το αρχείο είναι απενεργοποιημένα επειδή η ενότητα %s είναι απενεργοποιημένη. +TriggerAlwaysActive=Τα triggers σε αυτό το αρχείο είναι πάντα ενεργά, όποιες κι αν είναι οι ενεργοποιημένες ενότητες Dolibarr. +TriggerActiveAsModuleActive=Τα triggers σε αυτό το αρχείο είναι ενεργά καθώς η ενότητα %s είναι ενεργοποιημένη. +GeneratedPasswordDesc=Επιλέξτε τη μέθοδο που θα χρησιμοποιηθεί για κωδικούς πρόσβασης που δημιουργούνται αυτόματα. DictionaryDesc=Εισάγετε όλα τα δεδομένα αναφοράς. Μπορείτε να προσθέσετε τις τιμές σας στην προεπιλογή. ConstDesc=Αυτή η σελίδα επιτρέπει την επεξεργασία (αντικατάσταση) παραμέτρων που δεν είναι διαθέσιμες σε άλλες σελίδες. Αυτές είναι κυρίως δεσμευμένες παράμετροι για προγραμματιστές/ προχωρημένη αντιμετώπιση προβλημάτων μόνο. -MiscellaneousDesc=Όλες οι άλλες παράμετροι που σχετίζονται με την ασφάλεια καθορίζονται εδώ. +MiscellaneousDesc=Όλες οι άλλες παράμετροι που σχετίζονται με την ασφάλεια ορίζονται εδώ. LimitsSetup=Ρύθμιση Ορίων/Ακριβείας -LimitsDesc=Μπορείτε να ορίσετε εδώ όρια, ακρίβειες και βελτιστοποιήσεις που χρησιμοποιούνται από τον Dolibarr -MAIN_MAX_DECIMALS_UNIT=Μέγιστη. δεκαδικά ψηφία για τις τιμές μονάδας -MAIN_MAX_DECIMALS_TOT=Μέγιστη. δεκαδικά ψηφία για τις συνολικές τιμές -MAIN_MAX_DECIMALS_SHOWN=Μέγιστη. δεκαδικά ψηφία για τις τιμές που εμφανίζονται στην οθόνη . Προσθέστε μια ελλειψοειδή ... μετά από αυτήν την παράμετρο (π.χ. "2 ...") αν θέλετε να δείτε το " ... " που έχει προστεθεί στην περικομμένη τιμή. +LimitsDesc=Μπορείτε να ορίσετε όρια, ακρίβεια και βελτιστοποιήσεις που χρησιμοποιούνται από το Dolibarr εδώ +MAIN_MAX_DECIMALS_UNIT=Μέγιστος αριθμός δεκαδικών για τις τιμές μονάδας +MAIN_MAX_DECIMALS_TOT=Μέγιστος αριθμός δεκαδικών για τις συνολικές τιμές +MAIN_MAX_DECIMALS_SHOWN=Μέγιστος αριθμός δεκαδικών για τις τιμές που εμφανίζονται στην οθόνη . Προσθέστε μια έλλειψη ... μετά από αυτήν την παράμετρο (π.χ. "2...") εάν θέλετε να δείτε το " ... " με την κατάληξη στην τιμή. MAIN_ROUNDING_RULE_TOT=Βήμα στρογγυλοποίησης (για χώρες όπου η στρογγυλοποίηση γίνεται σε κάτι διαφορετικό από τη βάση 10. Για παράδειγμα, βάλτε 0,05 αν η στρογγυλοποίηση γίνεται με 0,05 βήματα) UnitPriceOfProduct=Καθαρή τιμή επί του προϊόντος -TotalPriceAfterRounding=Συνολική τιμή (χωρίς Φ.Π.Α.) μετά από στρογγυλοποίηση -ParameterActiveForNextInputOnly=Παράμετρος αποτελεσματική μόνο για την επόμενη είσοδο -NoEventOrNoAuditSetup=Δεν έχει καταγραφεί κανένα συμβάν ασφαλείας. Αυτό είναι φυσιολογικό εάν ο έλεγχος δεν έχει ενεργοποιηθεί στη σελίδα "Εγκατάσταση - Ασφάλεια - Συμβάντα". +TotalPriceAfterRounding=Συνολική τιμή (με ή χωρίς Φ.Π.Α.) μετά από στρογγυλοποίηση +ParameterActiveForNextInputOnly=Η παράμετρος ισχύει μόνο για την επόμενη είσοδο +NoEventOrNoAuditSetup=Δεν έχει καταγραφεί κανένα συμβάν ασφαλείας. Αυτό είναι φυσιολογικό εάν ο Έλεγχος δεν έχει ενεργοποιηθεί στη σελίδα "Ρυθμίσεις - Ασφάλεια - Συμβάντα ασφαλείας". NoEventFoundWithCriteria=Δεν βρέθηκε συμβάν ασφαλείας για αυτά τα κριτήρια αναζήτησης. SeeLocalSendMailSetup=Δείτε την τοπική ρύθμιση sendmail BackupDesc=Ένα πλήρες αντίγραφο ασφαλείας μιας εγκατάστασης Dolibarr απαιτεί δύο βήματα. -BackupDesc2=Δημιουργήστε αντίγραφα ασφαλείας των περιεχομένων του καταλόγου "έγγραφα" ( %s ) που περιέχει όλα τα αρχεία που έχουν μεταφορτωθεί και δημιουργηθεί. Αυτό θα περιλαμβάνει επίσης όλα τα αρχεία σκουπιδιών που δημιουργούνται στο Βήμα 1. Αυτή η λειτουργία μπορεί να διαρκέσει αρκετά λεπτά. -BackupDesc3=Δημιουργήστε αντίγραφα ασφαλείας της δομής και των περιεχομένων της βάσης δεδομένων σας ( %s ) σε ένα αρχείο ένδειξης σφαλμάτων. Για αυτό, μπορείτε να χρησιμοποιήσετε τον ακόλουθο βοηθό. +BackupDesc2=Δημιουργήστε αντίγραφα ασφαλείας των περιεχομένων του καταλόγου "έγγραφα" ( %s ) που περιέχει όλα τα αρχεία που έχουν μεταφορτωθεί και δημιουργηθεί. Αυτό θα περιλαμβάνει επίσης όλα τα αντίγραφα MySql που δημιουργήθηκαν στο Βήμα 1. Αυτή η λειτουργία μπορεί να διαρκέσει αρκετά λεπτά. +BackupDesc3=Δημιουργήστε αντίγραφα ασφαλείας της δομής και των περιεχομένων της βάσης δεδομένων σας ( %s ) σε ένα αρχείο. Για αυτό, μπορείτε να χρησιμοποιήσετε τον παρακάτω βοηθό. BackupDescX=Ο αρχειοθετημένος κατάλογος θα πρέπει να αποθηκεύεται σε ασφαλές μέρος. -BackupDescY=Το αρχείο σφαλμάτων που δημιουργείται πρέπει να αποθηκεύεται σε ασφαλές μέρος. -BackupPHPWarning=Δεν είναι εγγυημένη η δημιουργία αντιγράφων ασφαλείας με αυτήν τη μέθοδο. Προηγούμενο συνιστάται. +BackupDescY=Το αρχείο που δημιουργείται θα πρέπει να αποθηκευτεί σε ασφαλές μέρος. +BackupPHPWarning=Η δημιουργία αντιγράφων ασφαλείας δεν είναι εγγυημένη με αυτήν τη μέθοδο. Προτείνεται η προηγούμενη. RestoreDesc=Για να επαναφέρετε ένα αντίγραφο ασφαλείας Dolibarr, απαιτούνται δύο βήματα. -RestoreDesc2=Επαναφέρετε το αρχείο αντιγράφων ασφαλείας (για παράδειγμα, αρχείο zip) του καταλόγου "έγγραφα" σε μια νέα εγκατάσταση Dolibarr ή σε αυτόν τον τρέχοντα κατάλογο εγγράφων ( %s ). -RestoreDesc3=Επαναφέρετε τη δομή βάσης δεδομένων και τα δεδομένα από ένα αρχείο εφεδρικών αντιγράφων στη βάση δεδομένων της νέας εγκατάστασης Dolibarr ή στη βάση δεδομένων αυτής της τρέχουσας εγκατάστασης ( %s ). Προειδοποίηση, αφού ολοκληρωθεί η επαναφορά, πρέπει να χρησιμοποιήσετε ένα login / password, που υπήρχε από το χρόνο / εγκατάσταση του backup για να συνδεθείτε ξανά.
Για να επαναφέρετε μια εφεδρική βάση δεδομένων σε αυτήν την τρέχουσα εγκατάσταση, μπορείτε να ακολουθήσετε αυτόν τον βοηθό. -RestoreMySQL=MySQL import -ForcedToByAModule=This rule is forced to %s by an activated module +RestoreDesc2=Επαναφέρετε το αρχείο αντιγράφου ασφαλείας (για παράδειγμα αρχείο zip) του καταλόγου "έγγραφα" σε μια νέα εγκατάσταση Dolibarr ή στον τρέχων κατάλογο εγγράφων ( %s ). +RestoreDesc3=Επαναφέρετε τη δομή της βάσης δεδομένων και τα δεδομένα από ένα αρχείο αντιγράφου ασφαλείας στη βάση δεδομένων της νέας εγκατάστασης Dolibarr ή στη βάση δεδομένων της τρέχουσας εγκατάστασης ( %s ). Προειδοποίηση, μόλις ολοκληρωθεί η επαναφορά, πρέπει να χρησιμοποιήσετε ένα όνομα χρήστη/κωδικό πρόσβασης, που υπήρχε από τον χρόνο δημιουργίας αντιγράφων ασφαλείας/εγκατάστασης για να συνδεθείτε ξανά.
Για να επαναφέρετε μια βάση δεδομένων αντιγράφων ασφαλείας σε αυτήν την τρέχουσα εγκατάσταση, μπορείτε να ακολουθήσετε αυτόν τον βοηθό. +RestoreMySQL=Εισαγωγή MySQL +ForcedToByAModule=Αυτός ο κανόνας επιβάλλεται σε %s από μια ενεργοποιημένη ενότητα ValueIsForcedBySystem=Αυτή η τιμή είναι κλειδωμένη από το σύστημα. Δεν μπορείς να την αλλάξεις. PreviousDumpFiles=Υπάρχοντα αρχεία αντιγράφων ασφαλείας PreviousArchiveFiles=Υπάρχοντα αρχεία αρχειοθέτησης WeekStartOnDay=Πρώτη μέρα της εβδομάδας RunningUpdateProcessMayBeRequired=Η εκτέλεση της διαδικασίας αναβάθμισης φαίνεται να απαιτείται (Η έκδοση προγράμματος %s διαφέρει από την έκδοση βάσης δεδομένων %s) -YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. -YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP -DownloadMoreSkins=More skins to download +YouMustRunCommandFromCommandLineAfterLoginToUser=Πρέπει να εκτελέσετε αυτήν την εντολή από τη γραμμή εντολών μετά τη σύνδεση σε ένα κέλυφος με χρήστη %s ή πρέπει να προσθέσετε την επιλογή -W στο τέλος της γραμμής εντολών για να παρέχετε τον %sκωδικό πρόσβασης. +YourPHPDoesNotHaveSSLSupport=Οι functions SSL δεν είναι διαθέσιμες στην PHP σας +DownloadMoreSkins=Περισσότερα skins για λήψη SimpleNumRefModelDesc=Επιστρέφει τον αριθμό αναφοράς με τη μορφή %syymm-nnnn όπου yy είναι το έτος, mm είναι ο μήνας και nnnn είναι ένας διαδοχικός αριθμός αυτόματης αύξησης χωρίς επαναφορά SimpleNumRefNoDateModelDesc=Επιστρέφει τον αριθμό αναφοράς στη μορφή %s-nnnn όπου nnnn είναι ένας διαδοχικός αριθμός αυτόματης αύξησης χωρίς επαναφορά ShowProfIdInAddress=Εμφάνιση επαγγελματικής ταυτότητας με διευθύνσεις ShowVATIntaInAddress=Απόκρυψη ενδοκοινοτικού ΑΦΜ -TranslationUncomplete=Ημιτελής μεταγλώττιση -MAIN_DISABLE_METEO=Απενεργοποιήστε τo εικονίδιο καιρού +TranslationUncomplete=Μερική μετάφραση +MAIN_DISABLE_METEO=Απενεργοποίηση του εικονιδίου καιρού MeteoStdMod=Τυπική λειτουργία -MeteoStdModEnabled=Τυπική λειτουργία ενεργοποιημένη -MeteoPercentageMod=Ποσοστιαία λειτουργία +MeteoStdModEnabled=Η τυπική λειτουργία ενεργοποιήθηκε +MeteoPercentageMod=Λειτουργία ποσοστού MeteoPercentageModEnabled=Η λειτουργία ποσοστού ενεργοποιήθηκε MeteoUseMod=Κάντε κλικ για να χρησιμοποιήσετε το %s -TestLoginToAPI=Δοκιμή για να συνδεθείτε API +TestLoginToAPI=Δοκιμή σύνδεσης στο API ProxyDesc=Ορισμένα χαρακτηριστικά του Dolibarr απαιτούν πρόσβαση στο Internet. Καθορίστε εδώ τις παραμέτρους σύνδεσης στο διαδίκτυο, όπως η πρόσβαση μέσω διακομιστή μεσολάβησης, εάν είναι απαραίτητο. -ExternalAccess=Εξωτερική / Πρόσβαση στο Διαδίκτυο +ExternalAccess=Εξωτερική / Διαδικτυακή Πρόσβαση MAIN_PROXY_USE=Χρησιμοποιήστε έναν διακομιστή μεσολάβησης (διαφορετικά η πρόσβαση είναι απευθείας στο διαδίκτυο) -MAIN_PROXY_HOST=Διακομιστής μεσολάβησης: Όνομα / Διεύθυνση +MAIN_PROXY_HOST=Διακομιστής μεσολάβησης: Όνομα/Διεύθυνση MAIN_PROXY_PORT=Διακομιστής μεσολάβησης: Θύρα MAIN_PROXY_USER=Διακομιστής μεσολάβησης: Σύνδεση / Χρήστης MAIN_PROXY_PASS=Διακομιστής μεσολάβησης: Κωδικός πρόσβασης @@ -1318,8 +1318,8 @@ ExtraFieldsThirdParties=Συμπληρωματικά χαρακτηριστικ ExtraFieldsContacts=Συμπληρωματικά χαρακτηριστικά (επαφές / διεύθυνση) ExtraFieldsMember=Συμπληρωματικά χαρακτηριστικά (μέλος) ExtraFieldsMemberType=Συμπληρωματικά χαρακτηριστικά (τύπος μέλους) -ExtraFieldsCustomerInvoices=Συμπληρωματικές ιδιότητες (τιμολόγια) -ExtraFieldsCustomerInvoicesRec=Συμπληρωματικά χαρακτηριστικά (τιμολόγια προτύπων) +ExtraFieldsCustomerInvoices=Συμπληρωματικά χαρακτηριστικά (τιμολόγια) +ExtraFieldsCustomerInvoicesRec=Συμπληρωματικά χαρακτηριστικά (πρότυπα τιμολόγια) ExtraFieldsSupplierOrders=Συμπληρωματικά χαρακτηριστικά (παραγγελίες) ExtraFieldsSupplierInvoices=Συμπληρωματικά χαρακτηριστικά (τιμολόγια) ExtraFieldsProject=Συμπληρωματικά χαρακτηριστικά (έργα) @@ -1327,40 +1327,40 @@ ExtraFieldsProjectTask=Συμπληρωματικά χαρακτηριστικά ExtraFieldsSalaries=Συμπληρωματικά χαρακτηριστικά (μισθοί) ExtraFieldHasWrongValue=Το χαρακτηριστικό %s έχει λάθος τιμή. AlphaNumOnlyLowerCharsAndNoSpace=μόνο αλφαριθμητικά και πεζά γράμματα χωρίς κενά -SendmailOptionNotComplete=Προσοχή, σε μερικά συστήματα Linux, για να στείλετε e-mail από το e-mail σας, το sendmail εγκατάστασης εκτέλεση πρέπει conatins επιλογή-βα (mail.force_extra_parameters παράμετρος σε php.ini αρχείο σας). Αν δεν ορισμένοι παραλήπτες λαμβάνουν μηνύματα ηλεκτρονικού ταχυδρομείου, προσπαθήστε να επεξεργαστείτε αυτή την PHP με την παράμετρο-mail.force_extra_parameters = βα). -PathToDocuments=Path to documents -PathDirectory=Directory -SendmailOptionMayHurtBuggedMTA=Η δυνατότητα αποστολής μηνυμάτων χρησιμοποιώντας τη μέθοδο "PHP mail direct" θα δημιουργήσει ένα μήνυμα ηλεκτρονικού ταχυδρομείου που ενδέχεται να μην αναλύεται σωστά από ορισμένους διακομιστές αλληλογραφίας λήψης. Το αποτέλεσμα είναι ότι μερικά μηνύματα δεν μπορούν να διαβαστούν από άτομα που φιλοξενούνται από αυτές τις πλατφόρμες. Αυτή είναι η περίπτωση για ορισμένους παρόχους Διαδικτύου (π.χ.: Orange στη Γαλλία). Αυτό δεν είναι ένα πρόβλημα με Dolibarr ή PHP, αλλά με το διακομιστή αλληλογραφίας λήψης. Ωστόσο, μπορείτε να προσθέσετε μια επιλογή MAIN_FIX_FOR_BUGGED_MTA σε 1 στο Setup - Other για να τροποποιήσετε το Dolibarr για να αποφύγετε αυτό. Εντούτοις, ενδέχεται να αντιμετωπίσετε προβλήματα με άλλους διακομιστές που χρησιμοποιούν αυστηρά το πρότυπο SMTP. Η άλλη λύση (συνιστάται) είναι να χρησιμοποιήσετε τη μέθοδο "Βιβλιοθήκη υποδοχής SMTP" η οποία δεν έχει μειονεκτήματα. -TranslationSetup=Εγκατάσταση της μετάφρασης +SendmailOptionNotComplete=Προσοχή, σε μερικά συστήματα Linux, για να στείλετε e-mail από το e-mail σας, η ρύθμιση εκτέλεσης του sendmail πρέπει να περιέχει την επιλογή -ba (παράμετρος mail.force_extra_parameters στο php.ini αρχείο σας). Αν ορισμένοι παραλήπτες δεν λαμβάνουν email ποτε, προσπαθήστε να επεξεργαστείτε αυτή την παράμετρο PHP με mail.force_extra_parameters = -ba). +PathToDocuments=Διαδρομή προς έγγραφα +PathDirectory=Κατάλογος +SendmailOptionMayHurtBuggedMTA=Η δυνατότητα αποστολής μηνυμάτων χρησιμοποιώντας τη μέθοδο "PHP mail direct" θα δημιουργήσει ένα μήνυμα αλληλογραφίας που ενδέχεται να μην αναλυθεί σωστά από ορισμένους διακομιστές αλληλογραφίας λήψης. Το αποτέλεσμα είναι ότι ορισμένα μηνύματα δεν μπορούν να διαβαστούν από παραλήπτες που φιλοξενούνται σε αυτές τις πλατφόρμες με σφάλματα. Αυτό ισχύει για ορισμένους παρόχους Διαδικτύου (π.χ. Orange στη Γαλλία). Αυτό δεν είναι πρόβλημα του Dolibarr ή της PHP αλλά του mail server λήψης. Ωστόσο, μπορείτε να προσθέσετε την επιλογή MAIN_FIX_FOR_BUGGED_MTA στο 1 στο Ρυθμίσεις - Άλλες Ρυθμίσεις ώστε να τροποποιήσετε το Dolibarr και να το παρακάμψετε. Παρόλα αυτά, ενδέχεται να αντιμετωπίσετε προβλήματα με άλλους διακομιστές που χρησιμοποιούν αυστηρά το πρότυπο SMTP. Η άλλη λύση (που συνιστάται) είναι να χρησιμοποιήσετε τη μέθοδο "SMTP socket library" που δεν έχει μειονεκτήματα. +TranslationSetup=Ρύθμιση μετάφρασης TranslationKeySearch=Αναζήτηση ενός κλειδιού ή μιας συμβολοσειράς μετάφρασης TranslationOverwriteKey=Αντικαταστήστε μια μεταφραστική συμβολοσειρά -TranslationDesc=Πώς να ορίσετε τη γλώσσα προβολής:
* Προεπιλογή / Systemwide: μενού Home -> Setup -> Display
* Ανά χρήστη: Κάντε κλικ στο όνομα χρήστη που βρίσκεται στο επάνω μέρος της οθόνης και τροποποιήστε την καρτέλα User Display Setup στην κάρτα χρήστη. -TranslationOverwriteDesc=Μπορείτε επίσης να αντικαταστήσετε τις συμβολοσειρές που συμπληρώνουν τον παρακάτω πίνακα. Επιλέξτε τη γλώσσα σας από το αναπτυσσόμενο μενού "%s", εισαγάγετε τη συμβολοσειρά κλειδιού μετάφρασης σε "%s" και η νέα σας μετάφραση στο "%s" +TranslationDesc=Πώς να ορίσετε τη γλώσσα εμφάνισης:
* Προεπιλογή/Σε όλο το σύστημα: Μενού Αρχική -> Ρυθμίσεις -> Εμφάνιση
* Ανα χρήστη: Κάντε κλικ στο όνομα χρήστη στο πάνω μέρος της οθόνης και στην οθόνη και τροποποιήστε την καρτέλα Ρύθμιση εμφάνισης χρήστη . +TranslationOverwriteDesc=Μπορείτε επίσης να παρακάμψετε τις συμβολοσειρές Στον παρακάτω πίνακα. Επιλέξτε τη γλώσσα σας από το αναπτυσσόμενο μενού "%s", εισάγετε τη συμβολοσειρά του κλειδιού μετάφρασης στο "%s" και τη νέα σας μετάφραση στο "%s" TranslationOverwriteDesc2=Μπορείτε να χρησιμοποιήσετε την άλλη καρτέλα για να μάθετε ποιο μεταφραστικό κλειδί θέλετε να χρησιμοποιήσετε -TranslationString=Μεταφραστική σειρά -CurrentTranslationString=Τρέχουσα μεταφραστική σειρά +TranslationString=Μεταφραστική συμβολοσειρά +CurrentTranslationString=Τρέχουσα συμβολοσειρά μετάφρασης WarningAtLeastKeyOrTranslationRequired=Απαιτείται ένα κριτήριο αναζήτησης τουλάχιστον για το κλειδί ή τη μεταφραστική συμβολοσειρά NewTranslationStringToShow=Νέα συμβολοσειρά μετάφρασης για εμφάνιση -OriginalValueWas=Η αρχική μετάφραση αντικαθίσταται. Η αρχική τιμή ήταν:

%s -TransKeyWithoutOriginalValue=Αναγκάσθηκε μια νέα μετάφραση για το κλειδί μετάφρασης ' %s ' που δεν υπάρχει σε κανένα αρχείο γλώσσας -TitleNumberOfActivatedModules=Ενεργοποιημένες μονάδες -TotalNumberOfActivatedModules=Ενεργοποιημένες μονάδες: %s / %s -YouMustEnableOneModule=You must at least enable 1 module -YouMustEnableTranslationOverwriteBefore=Πρέπει πρώτα να ενεργοποιήσετε την αντικατάσταση μετάφρασης για να επιτρέπεται η αντικατάσταση μιας μετάφρασης +OriginalValueWas=Η αρχική μετάφραση αντικαταστάθηκε. Η αρχική τιμή ήταν:

%s +TransKeyWithoutOriginalValue=Επιβάλατε μια νέα μετάφραση για το κλειδί μετάφρασης ' %s ' που δεν υπάρχει σε κανένα αρχείο γλώσσας +TitleNumberOfActivatedModules=Ενεργοποιημένες ενότητες +TotalNumberOfActivatedModules=Ενεργοποιημένες ενότητες: %s / %s +YouMustEnableOneModule=Πρέπει να ενεργοποιήσετε τουλάχιστον 1 ενότητα +YouMustEnableTranslationOverwriteBefore=Πρέπει πρώτα να ενεργοποιήσετε την αντικατάσταση μετάφρασης για να σας επιτραπεί η αντικατάσταση μιας μετάφρασης ClassNotFoundIntoPathWarning=Η κλάση %s δεν βρέθηκε στη διαδρομή PHP -YesInSummer=Yes in summer -OnlyFollowingModulesAreOpenedToExternalUsers=Σημειώστε ότι μόνο οι παρακάτω ενότητες είναι διαθέσιμες σε εξωτερικούς χρήστες (ανεξάρτητα από τα δικαιώματα αυτών των χρηστών) και μόνο αν έχουν εκχωρηθεί δικαιώματα:
-SuhosinSessionEncrypt=Session storage encrypted by Suhosin +YesInSummer=Ναι το καλοκαίρι +OnlyFollowingModulesAreOpenedToExternalUsers=Σημείωση, μόνο οι ακόλουθες ενότητες είναι διαθέσιμες σε εξωτερικούς χρήστες (ανεξάρτητα από τα δικαιώματα αυτών των χρηστών) και μόνο εάν παραχωρηθούν δικαιώματα:
+SuhosinSessionEncrypt=Αποθηκευτικός χώρος συνεδρίας κρυπτογραφημένος από το Suhosin ConditionIsCurrently=Η κατάσταση είναι αυτή τη στιγμή %s YouUseBestDriver=Χρησιμοποιείτε τον οδηγό %s ο οποίος είναι ο καλύτερος διαθέσιμος οδηγός. YouDoNotUseBestDriver=Χρησιμοποιείτε τον οδηγό %s αλλά συνιστάται ο οδηγός %s. NbOfObjectIsLowerThanNoPb=Έχετε μόνο %s %s στη βάση δεδομένων. Αυτό δεν απαιτεί ιδιαίτερη βελτιστοποίηση. ComboListOptim=Βελτιστοποίηση φόρτωσης συνδυαστικής λίστας SearchOptim=Βελτιστοποίηση αναζήτησης -YouHaveXObjectUseComboOptim=Έχετε %s %s στη βάση δεδομένων. Μπορείτε να μεταβείτε στη ρύθμιση της ενότητας για να ενεργοποιήσετε τη φόρτωση της λίστας συνδυασμών στο συμβάν που πατάτε το πλήκτρο. +YouHaveXObjectUseComboOptim=Έχετε %s %s στη βάση δεδομένων. Μπορείτε να μεταβείτε στη ρύθμιση της ενότητας για να ενεργοποιήσετε τη φόρτωση της λίστας συνδυασμών κατά το πάτημα πλήκτρου YouHaveXObjectUseSearchOptim=Έχετε %s %s στη βάση δεδομένων. Μπορείτε να προσθέσετε τη σταθερά %s σε 1 στο μενού Αρχική-Ρυθμίσεις-Άλλες ρυθμίσεις YouHaveXObjectUseSearchOptimDesc=Αυτό περιορίζει την αναζήτηση στην αρχή των συμβολοσειρών, γεγονός που καθιστά δυνατή τη χρήση ευρετηρίων στη βάση δεδομένων και θα πρέπει να λάβετε άμεση απάντηση. -YouHaveXObjectAndSearchOptimOn=Έχετε %s %s στη βάση δεδομένων και η σταθερά %s έχει οριστεί σε %s στο στο μενού Αρχική-Ρυθμίσεις-Άλλες ρυθμίσεις +YouHaveXObjectAndSearchOptimOn=Έχετε %s %s στη βάση δεδομένων και η σταθερά %s έχει οριστεί σε %s στο μενού Αρχική-Ρυθμίσεις-Άλλες ρυθμίσεις BrowserIsOK=Χρησιμοποιείτε το πρόγραμμα περιήγησης web %s. Αυτό το πρόγραμμα περιήγησης είναι εντάξει για την ασφάλεια και την απόδοση. BrowserIsKO=Χρησιμοποιείτε το πρόγραμμα περιήγησης web %s. Αυτό το πρόγραμμα περιήγησης είναι γνωστό ότι αποτελεί κακή επιλογή για ασφάλεια, απόδοση και αξιοπιστία. Σας συνιστούμε να χρησιμοποιήσετε Firefox, Chrome, Opera ή Safari. PHPModuleLoaded=Το στοιχείο PHP %s έχει φορτωθεί @@ -1369,219 +1369,219 @@ AddRefInList=Εμφάνιση κωδικών Πελάτη/Προμηθευτή. AddVatInList=Εμφάνιση του ΑΦΜ Πελάτη/Προμηθευτή σε συνδυαστικές λίστες. AddAdressInList=Εμφάνιση διεύθυνσης Πελάτη/Προμηθευτή σε σύνθετες λίστες.
Τα τρίτα μέρη θα εμφανίζονται με τη μορφή ονόματος "The Big Company corp. - 21 jump street 123456 Big town - USA" αντί για "The Big Company corp". AddEmailPhoneTownInContactList=Εμφάνιση email επαφών (ή τηλέφωνα αν δεν έχουν καθοριστεί) και λίστα πληροφοριών πόλης (επιλογή λίστας ή σύνθετο πλαίσιο)
Οι επαφές θα εμφανιστούν με μια μορφή ονόματος "Dupond Durand - dupond.durand@email.com - Παρίσι" ή "Dupond Durand - 06 07 59 65 66 - Παρίσι» αντί για «Dupond Durand». -AskForPreferredShippingMethod=Ζητήστε την προτιμώμενη μέθοδο αποστολής για τρίτους. +AskForPreferredShippingMethod=Ζητήστε την προτιμώμενη μέθοδο αποστολής για τρίτα μέρη. FieldEdition=Έκδοση στο πεδίο %s -FillThisOnlyIfRequired=Παράδειγμα: +2 (συμπληρώστε μόνο αν ζώνη ώρας αντισταθμίσουν τα προβλήματα για προβλήματα που προέκυψαν) +FillThisOnlyIfRequired=Παράδειγμα: +2 (συμπλήρωση μόνο εάν παρουσιαστούν προβλήματα μετατόπισης ζώνης ώρας) GetBarCode=Πάρτε barcode NumberingModules=Μοντέλα αρίθμησης -DocumentModules=Πρότυπα εγγράφων +DocumentModules=Μοντέλα εγγράφων ##### Module password generation PasswordGenerationStandard=Επιστρέφει έναν κωδικό πρόσβασης που δημιουργήθηκε σύμφωνα με τον εσωτερικό αλγόριθμο του Dolibarr: %s χαρακτήρες που περιέχουν κοινόχρηστους αριθμούς και χαρακτήρες με πεζά. PasswordGenerationNone=Μην προτείνετε έναν κωδικό πρόσβασης που δημιουργείται. Ο κωδικός πρόσβασης πρέπει να πληκτρολογηθεί μη αυτόματα. -PasswordGenerationPerso=Επιστρέψτε έναν κωδικό πρόσβασης σύμφωνα με τις προσωπικές σας ρυθμίσεις. +PasswordGenerationPerso=Επιστρέφει έναν κωδικό πρόσβασης σύμφωνα με τις προσωπικές σας ρυθμίσεις. SetupPerso=Σύμφωνα με τη διαμόρφωσή σας PasswordPatternDesc=Περιγραφή προτύπου κωδικού πρόσβασης ##### Users setup ##### RuleForGeneratedPasswords=Κανόνες δημιουργίας και επικύρωσης κωδικών πρόσβασης -DisableForgetPasswordLinkOnLogonPage=Να μην εμφανίζεται ο σύνδεσμος "Ξεχασμένος κωδικός πρόσβασης" στη σελίδα Σύνδεση -UsersSetup=Ρυθμίσεις αρθρώματος χρηστών -UserMailRequired=Απαιτείται ηλεκτρονικό ταχυδρομείο για τη δημιουργία νέου χρήστη +DisableForgetPasswordLinkOnLogonPage=Μην εμφανίζεται ο σύνδεσμος "Ξέχασα τον κωδικό πρόσβασης" στη σελίδα σύνδεσης +UsersSetup=Ρύθμιση ενότητας χρηστών +UserMailRequired=Απαιτείται email για τη δημιουργία νέου χρήστη UserHideInactive=Απόκρυψη ανενεργών χρηστών από όλες τις συνδυαστικές λίστες χρηστών (Δεν συνιστάται: αυτό μπορεί να σημαίνει ότι δεν θα μπορείτε να φιλτράρετε ή να κάνετε αναζήτηση σε παλιούς χρήστες σε ορισμένες σελίδες) -UsersDocModules=Πρότυπα εγγράφων για έγγραφα που δημιουργούνται από εγγραφή χρήστη +UsersDocModules=Πρότυπα εγγράφων για έγγραφα που δημιουργήθηκαν από εγγραφή χρήστη GroupsDocModules=Πρότυπα εγγράφων για έγγραφα που δημιουργούνται από εγγραφή ομάδας ##### HRM setup ##### -HRMSetup=Ρύθμιση μονάδας HRM +HRMSetup=Ρύθμιση ενότητας HRM ##### Company setup ##### -CompanySetup=Ρυθμίσεις αρθρώματος Εταιριών +CompanySetup=Ρύθμιση ενότητας Εταιριών CompanyCodeChecker=Επιλογές για την αυτόματη δημιουργία κωδικών πελατών / προμηθευτών -AccountCodeManager=Επιλογές για την αυτόματη δημιουργία κωδικών λογιστικής πελάτη / πωλητή -NotificationsDesc=Οι ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου μπορούν να σταλούν αυτόματα για ορισμένα συμβάντα Dolibarr.
Οι παραλήπτες των ειδοποιήσεων μπορούν να οριστούν: +AccountCodeManager=Επιλογές για αυτόματη δημιουργία λογιστικών κωδικών πελάτη/προμηθευτή +NotificationsDesc=Οι ειδοποιήσεις μέσω email μπορούν να αποστέλλονται αυτόματα για ορισμένα συμβάντα του Dolibarr.
Οι παραλήπτες των ειδοποιήσεων μπορούν να οριστούν: NotificationsDescUser=* ανά χρήστη, έναν χρήστη τη φορά. NotificationsDescContact=* ανά επαφές τρίτου μέρους (πελάτες ή προμηθευτές), μία επαφή κάθε φορά. -NotificationsDescGlobal=* ή ορίζοντας καθολικές διευθύνσεις email στη σελίδα εγκατάστασης της μονάδας. +NotificationsDescGlobal=* ή ορίζοντας καθολικές διευθύνσεις email στη σελίδα ρύθμισης της ενότητας. ModelModules=Πρότυπα εγγράφων DocumentModelOdt=Δημιουργία εγγράφων από πρότυπα OpenDocument (αρχεία .ODT / .ODS από LibreOffice, OpenOffice, KOffice, TextEdit, ...) -WatermarkOnDraft=Watermark on draft document -JSOnPaimentBill=Ενεργοποιήστε τη δυνατότητα να συμπληρώνει αυτόματα τις γραμμές πληρωμής σε έντυπο πληρωμής +WatermarkOnDraft=Υδατογράφημα στο προσχέδιο εγγράφου +JSOnPaimentBill=Ενεργοποίηση λειτουργίας για αυτόματη συμπλήρωση γραμμών πληρωμής στη φόρμα πληρωμής CompanyIdProfChecker=Κανόνες για τα επαγγελματικά αναγνωριστικά MustBeUnique=Πρέπει να είναι μοναδικό? -MustBeMandatory=Υποχρεωτική για τη δημιουργία τρίτων (εάν έχει οριστεί ο αριθμός ΦΠΑ ή ο τύπος της εταιρείας); +MustBeMandatory=Υποχρεωτική για τη δημιουργία τρίτων (εάν έχει οριστεί ο αριθμός Α.Φ.Μ. ή ο τύπος της εταιρείας); MustBeInvoiceMandatory=Υποχρεωτική για την επικύρωση τιμολογίων; -TechnicalServicesProvided=Παρέχονται τεχνικές υπηρεσίες +TechnicalServicesProvided=Παρεχόμενες τεχνικές υπηρεσίες #####DAV ##### -WebDAVSetupDesc=Αυτός είναι ο σύνδεσμος για την πρόσβαση στον κατάλογο WebDAV. Περιέχει ένα "δημόσιο" dir ανοιχτό σε οποιονδήποτε χρήστη γνωρίζοντας τη διεύθυνση URL (αν επιτρέπεται πρόσβαση στο δημόσιο κατάλογο) και έναν "ιδιωτικό" κατάλογο ο οποίος χρειάζεται έναν υπάρχοντα λογαριασμό σύνδεσης / κωδικό πρόσβασης για πρόσβαση. -WebDavServer=URL ρίζας του διακομιστή %s: %s +WebDAVSetupDesc=Αυτός είναι ο σύνδεσμος για πρόσβαση στον κατάλογο WebDAV. Περιέχει έναν "δημόσιο" καταλογο ανοιχτό σε οποιονδήποτε χρήστη γνωρίζει τη διεύθυνση URL (αν επιτρέπεται η πρόσβαση σε δημόσιο κατάλογο) και έναν "ιδιωτικό" κατάλογο που χρειάζεται έναν υπάρχοντα λογαριασμό σύνδεσης/κωδικό πρόσβασης. +WebDavServer=URL ρίζας του %sδιακομιστή : %s ##### Webcal setup ##### -WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +WebCalUrlForVCalExport=Ένας σύνδεσμος εξαγωγής στη μορφή %s είναι διαθέσιμος στον ακόλουθο σύνδεσμο: %s ##### Invoices ##### BillsSetup=Ρύθμιση ενότητας τιμολογίων -BillsNumberingModule=Τιμολόγια και πιστωτικά τιμολόγια μοντέλο αρίθμησης +BillsNumberingModule=Μοντέλο αρίθμησης τιμολογίων και πιστωτικών σημειωμάτων BillsPDFModules=Μοντέλα εγγράφων τιμολογίου -BillsPDFModulesAccordindToInvoiceType=Τα μοντέλα εγγράφων τιμολογίου σύμφωνα με τον τύπο τιμολογίου +BillsPDFModulesAccordindToInvoiceType=Μοντέλα παραστατικών τιμολογίων σύμφωνα με τον τύπο τιμολογίου PaymentsPDFModules=Μοντέλα εγγράφων πληρωμής -ForceInvoiceDate=Μετάβαση ημερομηνίας ισχύος τιμολογίου σε ημερομηνία επικύρωσης +ForceInvoiceDate=Επιβολή ημερομηνίας ισχύος τιμολογίου σε ημερομηνία επικύρωσης SuggestedPaymentModesIfNotDefinedInInvoice=Προτεινόμενη μέθοδος πληρωμής στο τιμολόγιο από προεπιλογή, εάν δεν ορίζεται στο τιμολόγιο -SuggestPaymentByRIBOnAccount=Προτείνετε την πληρωμή μέσω απόσυρσης στο λογαριασμό +SuggestPaymentByRIBOnAccount=Προτείνετε πληρωμή με ανάληψη από τον λογαριασμό SuggestPaymentByChequeToAddress=Προτείνετε πληρωμή με επιταγή προς FreeLegalTextOnInvoices=Ελεύθερο κείμενο στα τιμολόγια -WatermarkOnDraftInvoices=Υδατογράφημα σχετικά με τα τιμολόγια (κανένα αν δεν είναι κενό) -PaymentsNumberingModule=Μοντέλο αριθμοδότησης πληρωμών +WatermarkOnDraftInvoices=Υδατογράφημα σε πρόχειρα τιμολόγια (κανένα αν είναι κενό) +PaymentsNumberingModule=Μοντέλο αρίθμησης πληρωμών SuppliersPayment=Πληρωμές προμηθευτών -SupplierPaymentSetup=Ρυθμίσεις πληρωμών προμηθευτή +SupplierPaymentSetup=Ρύθμιση πληρωμών προμηθευτή InvoiceCheckPosteriorDate=Ελέγξτε την ημερομηνία του παραστατικού πριν από την επικύρωση InvoiceCheckPosteriorDateHelp=Η επικύρωση ενός τιμολογίου θα απαγορεύεται εάν η ημερομηνία του είναι προγενέστερη από την ημερομηνία του τελευταίου τιμολογίου του ίδιου τύπου. ##### Proposals ##### -PropalSetup=Ρύθμιση ενότητας εμπορικών προτάσεων -ProposalsNumberingModules=Μοντέλα αριθμοδότησης εμπορικών προτάσεων -ProposalsPDFModules=Μοντέλα εγγράφων εμπορικών προτάσεων -SuggestedPaymentModesIfNotDefinedInProposal=Προτεινόμενος τρόπος πληρωμής στην πρόταση από προεπιλογή, εάν δεν ορίζεται στην πρόταση +PropalSetup=Ρύθμιση ενότητας εμπορικών προσφορών +ProposalsNumberingModules=Μοντέλα αρίθμησης εμπορικών προσφορών +ProposalsPDFModules=Μοντέλα εγγράφων εμπορικών προσφορών +SuggestedPaymentModesIfNotDefinedInProposal=Προτεινόμενος τρόπος πληρωμής στην προσφορά από προεπιλογή, εάν δεν ορίζεται στην προσφορά FreeLegalTextOnProposal=Ελεύθερο κείμενο στις προσφορές -WatermarkOnDraftProposal=Υδατογράφημα σε προσχέδια εμπορικών προτάσεων (κανένα εάν δεν είναι κενό) -BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ρωτήστε για τον τραπεζικό λογαριασμό προορισμού της προσφοράς +WatermarkOnDraftProposal=Υδατογράφημα σε προσχέδια εμπορικών προσφορών (κανένα εάν δεν είναι κενό) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ζητήστε τον τραπεζικό λογαριασμό για την προσφορά ##### SupplierProposal ##### -SupplierProposalSetup=Τιμολόγηση προμηθευτών αιτήσεων τιμών -SupplierProposalNumberingModules=Μοντέλα αρίθμησης των προμηθευτών αιτήσεων τιμών -SupplierProposalPDFModules=Οι αιτήσεις τιμών ζητούν από τους προμηθευτές μοντέλα -FreeLegalTextOnSupplierProposal=Δωρεάν κείμενο σχετικά με τους προμηθευτές αιτήσεων τιμών -WatermarkOnDraftSupplierProposal=Υδατογράφημα για τους προμηθευτές αιτήσεων τιμών (δεν υπάρχει εάν είναι άδειο) -BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Ζητήστε τον προορισμό του τραπεζικού λογαριασμού για αίτημα τιμής -WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ζητήστε από την αποθήκη προέλευσης για παραγγελία +SupplierProposalSetup=Ρύθμιση ενότητας αιτημάτων τιμής προμηθευτών  +SupplierProposalNumberingModules=Μοντέλα αρίθμησης των αιτημάτων τιμής προμηθευτών  +SupplierProposalPDFModules=Μοντέλα εγγράφων αιτημάτων τιμής προμηθευτών  +FreeLegalTextOnSupplierProposal=Ελεύθερο κείμενο για αιτήματα τιμών προμηθευτών +WatermarkOnDraftSupplierProposal=Υδατογράφημα σε προσχέδια αιτημάτων τιμής προμηθευτών  (κανένα αν είναι κενό) +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Ζητήστε τον τραπεζικό λογαριασμό για το αίτημα τιμής +WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ζητήστε την Αποθήκη Πηγής για την παραγγελία ##### Suppliers Orders ##### -BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ζητήστε τον προορισμό του τραπεζικού λογαριασμού της εντολής αγοράς +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ζητήστε τον τραπεζικό λογαριασμό της παραγγελίας αγοράς ##### Orders ##### SuggestedPaymentModesIfNotDefinedInOrder=Προτεινόμενη μέθοδος πληρωμής για παραγγελία πώλησης από προεπιλογή, εάν δεν καθορίζεται στην παραγγελία OrdersSetup=Ρύθμιση διαχείρισης παραγγελιών πωλήσεων OrdersNumberingModules=Μοντέλα αρίθμησης παραγγελιών -OrdersModelModule=Παραγγείλετε μοντέλα εγγράφων +OrdersModelModule=Μοντέλα εγγράφων παραγγελίας FreeLegalTextOnOrders=Ελεύθερο κείμενο στις παραγγελίες WatermarkOnDraftOrders=Υδατογράφημα σε προσχέδια παραγγελίας (κανένα εάν δεν είναι κενό) ShippableOrderIconInList=Προσθήκη εικονιδίου στις Παραγγελίες που δείχνει ότι η παραγγελία μπορεί να αποσταλεί -BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ρωτήστε τον τραπεζικό λογαριασμό για προορισμό της παραγγελίας +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ζητήστε τον τραπεζικό λογαριασμό της παραγγελίας ##### Interventions ##### -InterventionsSetup=Interventions module setup +InterventionsSetup=Ρύθμιση ενότητας παρεμβάσεων FreeLegalTextOnInterventions=Ελεύθερο κείμενο στα έντυπα παρέμβασης -FicheinterNumberingModules=Intervention numbering models -TemplatePDFInterventions=Intervention card documents models -WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +FicheinterNumberingModules=Μοντέλα αρίθμησης παρέμβασης +TemplatePDFInterventions=Μοντέλα εγγράφων καρτών παρέμβασης +WatermarkOnDraftInterventionCards=Υδατογράφημα στα έγγραφα της κάρτας παρέμβασης (κανένα αν είναι κενό) ##### Contracts ##### -ContractsSetup=Ρύθμιση module Συμβάσεις/Συνδρομές -ContractsNumberingModules=Συμβάσεις αρίθμησης ενοτήτων -TemplatePDFContracts=Συμβάσεις μοντέλα εγγράφων +ContractsSetup=Ρύθμιση ενότητας Συμβάσεις/Συνδρομές +ContractsNumberingModules=Ενότητες αρίθμησης συμβάσεων +TemplatePDFContracts=Μοντέλα εγγράφων συμβάσεων FreeLegalTextOnContracts=Ελεύθερο κείμενο για τις συμβάσεις -WatermarkOnDraftContractCards=Υδατογράφημα σε σχέδια συμβάσεων (κανένα αν είναι άδειο) +WatermarkOnDraftContractCards=Υδατογράφημα σε προσχέδια συμβάσεων (κανένα αν είναι άδειο) ##### Members ##### MembersSetup=Ρύθμιση ενότητας μελών MemberMainOptions=Κύριες επιλογές -AdherentLoginRequired= Διαχείριση μιας Σύνδεση για κάθε μέλος -AdherentMailRequired=Απαιτείται ηλεκτρονικό ταχυδρομείο για τη δημιουργία νέου μέλους -MemberSendInformationByMailByDefault=Τσέκαρε το πλαίσιο ελέγχου για την αποστολή επιβεβαίωσης αλληλογραφίας στα μέλη (επικύρωση ή νέα συνδρομή) είναι ενεργοποιημένη από προεπιλογή +AdherentLoginRequired= Διαχείριση μιας Σύνδεσης για κάθε μέλος +AdherentMailRequired=Απαιτείται email για τη δημιουργία νέου μέλους +MemberSendInformationByMailByDefault=Το πλαίσιο ελέγχου για την αποστολή επιβεβαίωσης αλληλογραφίας στα μέλη (επικύρωση ή νέα συνδρομή) είναι ενεργοποιημένο από προεπιλογή MemberCreateAnExternalUserForSubscriptionValidated=Δημιουργήστε στοιχεία σύνδεσης εξωτερικού χρήστη για κάθε επικυρωμένη συνδρομή νέου μέλους VisitorCanChooseItsPaymentMode=Ο επισκέπτης μπορεί να επιλέξει μεταξύ των διαθέσιμων τρόπων πληρωμής -MEMBER_REMINDER_EMAIL=Ενεργοποιήστε την αυτόματη υπενθύμιση μέσω ηλεκτρονικού ταχυδρομείου των συνδρομών που έχουν λήξει. Σημείωση: Η ενότητα %s πρέπει να ενεργοποιηθεί και να ρυθμιστεί σωστά για να στείλετε υπενθυμίσεις. +MEMBER_REMINDER_EMAIL=Ενεργοποιήστε την αυτόματη υπενθύμιση μέσω email των ληγμένων συνδρομών. Σημείωση: Η μονάδα %s πρέπει να είναι ενεργοποιημένη και να ρυθμιστεί σωστά για την αποστολή υπενθυμίσεων. MembersDocModules=Πρότυπα εγγράφων για έγγραφα που δημιουργούνται από εγγραφή μέλους ##### LDAP setup ##### -LDAPSetup=LDAP Setup -LDAPGlobalParameters=Global parameters +LDAPSetup=Ρύθμιση LDAP +LDAPGlobalParameters=Καθολικές παράμετροι LDAPUsersSynchro=Χρήστες LDAPGroupsSynchro=Ομάδες LDAPContactsSynchro=Επαφές LDAPMembersSynchro=Μέλη LDAPMembersTypesSynchro=Τύποι μελών -LDAPSynchronization=LDAP synchronisation -LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPSynchronization=Συγχρονισμός LDAP +LDAPFunctionsNotAvailableOnPHP=Οι functions του LDAP δεν είναι διαθέσιμες στην PHP σας LDAPToDolibarr=LDAP -> Dolibarr DolibarrToLDAP=Dolibarr -> LDAP -LDAPNamingAttribute=Key in LDAP +LDAPNamingAttribute=Κλειδί στο LDAP LDAPSynchronizeUsers=Οργάνωση χρηστών στο LDAP LDAPSynchronizeGroups=Οργάνωση ομάδων στο LDAP LDAPSynchronizeContacts=Οργάνωση επαφών στο LDAP LDAPSynchronizeMembers=Οργάνωση των μελών του Ιδρύματος στο LDAP LDAPSynchronizeMembersTypes=Οργάνωση των τύπων μελών του ιδρύματος στο LDAP -LDAPPrimaryServer=Primary server -LDAPSecondaryServer=Secondary server -LDAPServerPort=Server port +LDAPPrimaryServer=Κύριος διακομιστής +LDAPSecondaryServer=Δευτερεύων διακομιστής +LDAPServerPort=Θύρα διακομιστή LDAPServerPortExample=Standard ή StartTLS: 389, LDAP: 636 -LDAPServerProtocolVersion=Protocol version -LDAPServerUseTLS=Use TLS +LDAPServerProtocolVersion=Έκδοση πρωτοκόλλου +LDAPServerUseTLS=Χρησιμοποιήστε το TLS LDAPServerUseTLSExample=Ο LDAP διακομιστής σας χρησιμοποιεί το StartTLS LDAPServerDn=Server DN LDAPAdminDn=Διαχειριστής DN -LDAPAdminDnExample=Ολοκλήρωση DN (ex: cn = admin, dc = παράδειγμα, dc = com ή cn = Administrator, cn = Users, dc = +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com or cn=Administrator,cn=Users,dc=example,dc=com for active directory) LDAPPassword=Κωδικός πρόσβασης Διαχειριστή -LDAPUserDn=Users' DN +LDAPUserDn=DN χρηστών LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) -LDAPGroupDn=Groups' DN +LDAPGroupDn=DN ομάδων LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) -LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerExample=Διεύθυνση διακομιστή (π.χ. localhost, 192.168.0.2, ldaps://ldap.example.com/) LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) LDAPDnSynchroActive=Συγχρονισμός χρηστών και ομάδων -LDAPDnSynchroActiveExample=LDAP σε Dolibarr ή Dolibarr σε συγχρονισμό LDAP +LDAPDnSynchroActiveExample=Συγχρονισμός LDAP σε Dolibarr ή Dolibarr σε LDAP LDAPDnContactActive=Συγχρονισμός επαφών -LDAPDnContactActiveExample=Ενεργοποίηση / Απενεργοποίηση συγχρονισμού +LDAPDnContactActiveExample=Ενεργοποιημένος/Απενεργοποιημένος συγχρονισμός LDAPDnMemberActive=Συγχρονισμός μελών -LDAPDnMemberActiveExample=Ενεργοποίηση / Απενεργοποίηση συγχρονισμού +LDAPDnMemberActiveExample=Ενεργοποιημένος/Απενεργοποιημένος συγχρονισμός LDAPDnMemberTypeActive=Συγχρονισμός τύπων μελών -LDAPDnMemberTypeActiveExample=Ενεργοποίηση / Απενεργοποίηση συγχρονισμού -LDAPContactDn=Dolibarr contacts' DN +LDAPDnMemberTypeActiveExample=Ενεργοποιημένος/Απενεργοποιημένος συγχρονισμός +LDAPContactDn=DN επαφών Dolibarr LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) -LDAPMemberDn=Dolibarr μέλη DN +LDAPMemberDn=DN μελών Dolibarr LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) -LDAPMemberObjectClassList=List of objectClass -LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) -LDAPMemberTypeDn=Τα μέλη Dolibarr τύπου DN -LDAPMemberTypepDnExample=Ολοκλήρωση DN (ex: ou = μέλοςstypes, dc = παράδειγμα, dc = com) -LDAPMemberTypeObjectClassList=List of objectClass -LDAPMemberTypeObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) -LDAPUserObjectClassList=List of objectClass -LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) -LDAPGroupObjectClassList=List of objectClass -LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) -LDAPContactObjectClassList=List of objectClass -LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) -LDAPTestConnect=Test LDAP connection +LDAPMemberObjectClassList=Λίστα objectClass +LDAPMemberObjectClassListExample=Λίστα objectClass που καθορίζουν τα χαρακτηριστικά εγγραφής (π.χ. top, inetOrgPerson ή top, χρήστης για ενεργό κατάλογο) +LDAPMemberTypeDn=DN τύπων μελών Dolibarr +LDAPMemberTypepDnExample=Complete DN (ex: ou=memberstypes,dc=example,dc=com) +LDAPMemberTypeObjectClassList=Λίστα objectClass +LDAPMemberTypeObjectClassListExample=Λίστα objectClass που καθορίζουν τα χαρακτηριστικά εγγραφής (π.χ. top, inetOrgPerson ή top, χρήστης για ενεργό κατάλογο) +LDAPUserObjectClassList=Λίστα objectClass +LDAPUserObjectClassListExample=Λίστα objectClass που καθορίζουν τα χαρακτηριστικά εγγραφής (π.χ. top, inetOrgPerson ή top, χρήστης για ενεργό κατάλογο) +LDAPGroupObjectClassList=Λίστα objectClass +LDAPGroupObjectClassListExample=Λίστα objectClass που καθορίζουν τα χαρακτηριστικά εγγραφής (π.χ. top, inetOrgPerson ή top, χρήστης για ενεργό κατάλογο) +LDAPContactObjectClassList=Λίστα objectClass +LDAPContactObjectClassListExample=Λίστα objectClass που καθορίζουν τα χαρακτηριστικά εγγραφής (π.χ. top, inetOrgPerson ή top, χρήστης για ενεργό κατάλογο) +LDAPTestConnect=Δοκιμή σύνδεσης LDAP LDAPTestSynchroContact=Έλεγχος συγχρονισμού επαφών LDAPTestSynchroUser=Έλεγχος συγχρονισμού χρηστών LDAPTestSynchroGroup=Έλεγχος συγχρονισμού ομάδας LDAPTestSynchroMember=Έλεγχος συγχρονισμού μελών -LDAPTestSynchroMemberType=Συγχρονισμός τύπου μέλους δοκιμής +LDAPTestSynchroMemberType=Έλεγχος συγχρονισμού τύπου μελών LDAPTestSearch= Δοκιμάστε μια αναζήτηση LDAP -LDAPSynchroOK=Δοκιμή συγχρονισμού πέτυχε -LDAPSynchroKO=Δοκιμή συγχρονισμού απέτυχε -LDAPSynchroKOMayBePermissions=Δοκιμή συγχρονισμού απέτυχε. Ελέγξτε ότι η σύνδεση με το διακομιστή έχει ρυθμιστεί σωστά και επιτρέπει τις ενημερώσεις LDAP -LDAPTCPConnectOK=Σύνδεση TCP σε επιτυχημένο διακομιστή LDAP (Server = %s, Port = %s) -LDAPTCPConnectKO=Η σύνδεση TCP στο διακομιστή LDAP απέτυχε (Server = %s, Port = %s) -LDAPBindOK=Σύνδεση / Πιστοποίηση σε διακομιστή LDAP με επιτυχία (Server = %s, Port = %s, Admin = %s, Κωδικός πρόσβασης = %s) -LDAPBindKO=Η σύνδεση / επαλήθευση ταυτότητας σε διακομιστή LDAP απέτυχε (Server = %s, Port = %s, Admin = %s, Password = %s) +LDAPSynchroOK=Επιτυχής δοκιμή συγχρονισμού +LDAPSynchroKO=Αποτυχία δοκιμής συγχρονισμού +LDAPSynchroKOMayBePermissions=Αποτυχία δοκιμής συγχρονισμού. Βεβαιωθείτε ότι η σύνδεση με τον διακομιστή έχει ρυθμιστεί σωστά και επιτρέπει ενημερώσεις LDAP +LDAPTCPConnectOK=Επιτυχής σύνδεση TCP με διακομιστή LDAP (Server=%s, Port=%s) +LDAPTCPConnectKO=Η σύνδεση TCP με τον διακομιστή LDAP απέτυχε (Server=%s, Port=%s) +LDAPBindOK=Σύνδεση / Πιστοποίηση σε διακομιστή LDAP επιτυχής (Server = %s, Port = %s, Admin = %s, Κωδικός πρόσβασης = %s) +LDAPBindKO=Η σύνδεση / επαλήθευση ταυτότητας με διακομιστή LDAP απέτυχε (Server = %s, Port = %s, Admin = %s, Password = %s) LDAPSetupForVersion3=Ο διακομιστής LDAP έχει ρυθμιστεί για την έκδοση 3 LDAPSetupForVersion2=Ο διακομιστής LDAP έχει ρυθμιστεί για την έκδοση 2 LDAPDolibarrMapping=Dolibarr Mapping LDAPLdapMapping=LDAP Mapping -LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginUnix=Είσοδος (unix) LDAPFieldLoginExample=Παράδειγμα: uid LDAPFilterConnection=Φίλτρο αναζήτησης -LDAPFilterConnectionExample=Παράδειγμα: & (objectClass = inetOrgPerson) +LDAPFilterConnectionExample=Παράδειγμα: &(objectClass=inetOrgPerson) LDAPGroupFilterExample=Παράδειγμα: &(objectClass=groupOfUsers) -LDAPFieldLoginSamba=Login (samba, activedirectory) -LDAPFieldLoginSambaExample=Παράδειγμα: samaccountname +LDAPFieldLoginSamba=Είσοδος (samba, activedirectory) +LDAPFieldLoginSambaExample=Παράδειγμα: τοονομασυνδεσηςσας LDAPFieldFullname=Πλήρες όνομα LDAPFieldFullnameExample=Παράδειγμα: cn LDAPFieldPasswordNotCrypted=Ο κωδικός πρόσβασης δεν είναι κρυπτογραφημένος -LDAPFieldPasswordCrypted=Ο κωδικός είναι κρυπτογραφημένος +LDAPFieldPasswordCrypted=Κωδικός πρόσβασης κρυπτογραφημένος LDAPFieldPasswordExample=Παράδειγμα: userPassword LDAPFieldCommonNameExample=Παράδειγμα: cn -LDAPFieldName=Επίθετο +LDAPFieldName=Όνομα LDAPFieldNameExample=Παράδειγμα: sn LDAPFieldFirstName=Όνομα LDAPFieldFirstNameExample=Παράδειγμα: givenName -LDAPFieldMail=Email address -LDAPFieldMailExample=Παράδειγμα: αλληλογραφία +LDAPFieldMail=Διεύθυνση email +LDAPFieldMailExample=Παράδειγμα: mail LDAPFieldPhone=Επαγγελματικός αριθμός τηλεφώνου LDAPFieldPhoneExample=Παράδειγμα: αριθμός τηλεφώνου LDAPFieldHomePhone=Προσωπικός αριθμός τηλεφώνου LDAPFieldHomePhoneExample=Παράδειγμα: homephone LDAPFieldMobile=Κινητό τηλέφωνο LDAPFieldMobileExample=Παράδειγμα: κινητό -LDAPFieldFax=Fax number +LDAPFieldFax=Αριθμός fax LDAPFieldFaxExample=Παράδειγμα: faximiletelefononumber LDAPFieldAddress=Οδός LDAPFieldAddressExample=Παράδειγμα: δρόμος @@ -1606,203 +1606,203 @@ LDAPFieldTitle=Θέση εργασίας LDAPFieldTitleExample=Παράδειγμα: τίτλος LDAPFieldGroupid=Αναγνωριστικό ομάδας LDAPFieldGroupidExample=Παράδειγμα: gidnumber -LDAPFieldUserid=Ταυτότητα χρήστη +LDAPFieldUserid=Αναγνωριστικό χρήστη LDAPFieldUseridExample=Παραδείγματα: uidnumber LDAPFieldHomedirectory=Αρχική σελίδα LDAPFieldHomedirectoryExample=Παράδειγμα: homedirectory LDAPFieldHomedirectoryprefix=Πρόθεμα καταλόγου αρχικής σελίδας -LDAPSetupNotComplete=Η ρύθμιση LDAP δεν ολοκληρώθηκε (πηγαίνετε σε άλλες καρτέλες) -LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Δεν παρέχεται κανένας διαχειριστής ή κωδικός πρόσβασης. Η πρόσβαση LDAP θα είναι ανώνυμη και σε λειτουργία μόνο για ανάγνωση. -LDAPDescContact=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένα που βρίσκεται στις επαφές Dolibarr. -LDAPDescUsers=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένα που βρέθηκε στους χρήστες του Dolibarr. -LDAPDescGroups=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένα που βρίσκεται στις ομάδες Dolibarr. +LDAPSetupNotComplete=Η ρύθμιση του LDAP δεν ολοκληρώθηκε (πηγαίνετε σε άλλες καρτέλες) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Δεν δόθηκε διαχειριστής ή κωδικός πρόσβασης . Η πρόσβαση LDAP θα είναι ανώνυμη και σε λειτουργία μόνο για ανάγνωση. +LDAPDescContact=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένο που βρέθηκε στις επαφές Dolibarr. +LDAPDescUsers=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένο που βρέθηκε στους χρήστες του Dolibarr. +LDAPDescGroups=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε δεδομένο που βρέθηκε στις ομάδες Dolibarr. LDAPDescMembers=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε στοιχείο που βρίσκεται στη μονάδα μελών Dolibarr. LDAPDescMembersTypes=Αυτή η σελίδα σάς επιτρέπει να ορίσετε το όνομα των χαρακτηριστικών LDAP στο δέντρο LDAP για κάθε στοιχείο που βρίσκεται σε τύπους μελών Dolibarr. -LDAPDescValues=Οι τιμές παραδειγμάτων σχεδιάζονται για το OpenLDAP με τα παρακάτω φορτωμένα σχήματα: core.schema, cosine.schema, inetorgperson.schema ). Εάν χρησιμοποιείτε αυτές τις τιμές και του OpenLDAP, τροποποιήστε το αρχείο ρύθμισης LDAP slapd.conf για να έχετε φορτώσει όλα αυτά τα διαγράμματα. +LDAPDescValues=Οι παραδειγματικές τιμές έχουν σχεδιαστεί για το OpenLDAP με τα ακόλουθα φορτωμένα σχήματα: core.schema, cosine.schema, inetorgperson.schema ). Εάν χρησιμοποιείτε αυτές τις τιμές και το OpenLDAP, τροποποιήστε το αρχείο διαμόρφωσης LDAP slapd.conf για να φορτωθούν όλα αυτά τα σχήματα. ForANonAnonymousAccess=Για μια επαληθευμένη πρόσβαση (για παράδειγμα, για πρόσβαση εγγραφής) -PerfDolibarr=Επιδόσεις ρύθμισης/βελτιστοποίηση της αναφοράς -YouMayFindPerfAdviceHere=Αυτή η σελίδα παρέχει μερικές επιταγές ή συμβουλές σχετικά με την απόδοση. +PerfDolibarr=Αναφορά ρύθμισης/βελτιστοποίησης απόδοσης +YouMayFindPerfAdviceHere=Αυτή η σελίδα παρέχει ορισμένους ελέγχους ή συμβουλές σχετικά με την απόδοση. NotInstalled=Μη εγκατεστημένο. NotSlowedDownByThis=Δεν επιβραδύνεται από αυτό. NotRiskOfLeakWithThis=Δεν υπάρχει κίνδυνος διαρροής με αυτό. ApplicativeCache=Εφαρμογή Cache -MemcachedNotAvailable=Δεν βρέθηκε applicative προσωρινή μνήμη. Μπορείτε να βελτιώσετε την απόδοση με την εγκατάσταση ενός Memcached διακομιστή προσωρινής μνήμης και ένα module θα είναι σε θέση να χρησιμοποίηση το διακομιστή προσωρινής μνήμης.
Περισσότερες πληροφορίες εδώ http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Σημειώστε ότι πολλοί πάροχοι web hosting δεν παρέχουν διακομιστή cache. -MemcachedModuleAvailableButNotSetup=Το module memcached για εφαρμογή cache βρέθηκε, αλλά η εγκατάσταση του module δεν είναι πλήρης. -MemcachedAvailableAndSetup=Το module memcache προορίζεται για χρήση memcached του διακομιστή όταν είναι ενεργοποιημένη. +MemcachedNotAvailable=Δεν βρέθηκε εφαρμοστική κρυφή μνήμη. Μπορείτε να βελτιώσετε την απόδοση εγκαθιστώντας έναν διακομιστή προσωρινής μνήμης Memcached και μια ενότητα που μπορεί να χρησιμοποιήσει αυτόν τον διακομιστή προσωρινής μνήμης.
Περισσότερες πληροφορίες εδώ http://wiki.dolibarr.org/index.php/Module_MemCached_EN .
Σημειώστε ότι πολλοί πάροχοι φιλοξενίας Ιστού δεν παρέχουν τέτοιο διακομιστή προσωρινής μνήμης. +MemcachedModuleAvailableButNotSetup=Βρέθηκε η ενότητα memcached για την εφαρμοστική κρυφή μνήμη, αλλά η εγκατάσταση της ενότητας δεν έχει ολοκληρωθεί. +MemcachedAvailableAndSetup=Η ενότητα memcached που αφορά στη χρήση διακομιστή memcached είναι ενεργοποιημένη. OPCodeCache=OPCode cache NoOPCodeCacheFound=Δεν βρέθηκε προσωρινή μνήμη OPCode. Ίσως χρησιμοποιείτε μια προσωρινή μνήμη OPCode διαφορετική από XCache ή eAccelerator (καλή), ή ίσως δεν έχετε OPCode cache (πολύ κακή). -HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) -FilesOfTypeCached=Αρχεία τύπου %s αποθηκεύονται προσωρινά από το διακομιστή HTTP -FilesOfTypeNotCached=Αρχεία τύπου %s δεν αποθηκεύονται προσωρινά από το διακομιστή HTTP -FilesOfTypeCompressed=Τα αρχεία τύπου %s συμπιέζονται από το διακομιστή HTTP -FilesOfTypeNotCompressed=Αρχεία τύπου %s δεν συμπιέζονται από το διακομιστή HTTP +HTTPCacheStaticResources=HTTP cache για στατικούς πόρους (css, img, javascript) +FilesOfTypeCached=Τα αρχεία τύπου %s αποθηκεύονται προσωρινά από τον διακομιστή HTTP +FilesOfTypeNotCached=Τα αρχεία τύπου %s δεν αποθηκεύονται προσωρινά από τον διακομιστή HTTP +FilesOfTypeCompressed=Τα αρχεία του τύπου %s συμπιέζονται από διακομιστή HTTP +FilesOfTypeNotCompressed=Τα αρχεία του τύπου %s δεν συμπιέζονται από διακομιστή HTTP CacheByServer=Cache από τον server -CacheByServerDesc=Για παράδειγμα, χρησιμοποιώντας την οδηγία Apache "ExpiresByType image / gif A2592000" +CacheByServerDesc=Για παράδειγμα, χρησιμοποιώντας την οδηγία Apache "ExpiresByType image/gif A2592000" CacheByClient=Cache από τον browser CompressionOfResources=Συμπίεση HTTP απαντήσεων -CompressionOfResourcesDesc=Για παράδειγμα, χρησιμοποιώντας την οδηγία Apache "AddOutputFilterByType DEFLATE" -TestNotPossibleWithCurrentBrowsers=Μια τέτοια αυτόματη ανίχνευση δεν είναι δυνατόν με τα τρέχουσα προγράμματα περιήγησης -DefaultValuesDesc=Εδώ μπορείτε να ορίσετε την προεπιλεγμένη τιμή που θέλετε να χρησιμοποιήσετε κατά τη δημιουργία μιας νέας εγγραφής ή / και τα προεπιλεγμένα φίλτρα ή τη σειρά ταξινόμησης κατά την εγγραφή των εγγραφών. -DefaultCreateForm=Προεπιλεγμένες τιμές (για χρήση σε έντυπα) +CompressionOfResourcesDesc=Για παράδειγμα, χρησιμοποιώντας την οδηγία Apache "AddOutputFilterByType DEFLATE" +TestNotPossibleWithCurrentBrowsers=Μια τέτοια αυτόματη ανίχνευση δεν είναι δυνατή με τα τρέχοντα προγράμματα περιήγησης +DefaultValuesDesc=Εδώ μπορείτε να ορίσετε την προεπιλεγμένη τιμή που θέλετε να χρησιμοποιήσετε κατά τη δημιουργία μιας νέας εγγραφής ή / και τα προεπιλεγμένα φίλτρα ή τη σειρά ταξινόμησης κατά την παρουσίαση λίστας εγγραφών. +DefaultCreateForm=Προεπιλεγμένες τιμές (για χρήση σε φόρμες) DefaultSearchFilters=Προεπιλεγμένα φίλτρα αναζήτησης -DefaultSortOrder=Προκαθορισμένες παραγγελίες +DefaultSortOrder=Προεπιλεγμένες σειρές ταξινόμησης DefaultFocus=Προεπιλεγμένα πεδία εστίασης DefaultMandatory=Υποχρεωτικά πεδία φόρμας ##### Products ##### -ProductSetup=Products module setup -ServiceSetup=Υπηρεσίες εγκατάστασης μονάδας -ProductServiceSetup=Προϊόντα και Υπηρεσίες εγκατάστασης μονάδων +ProductSetup=Ρύθμιση ενότητας προϊόντων +ServiceSetup=Ρύθμιση ενότητας υπηρεσιών +ProductServiceSetup=Ρύθμιση ενοτήτων προϊόντων και υπηρεσιών NumberOfProductShowInSelect=Μέγιστος αριθμός προϊόντων που θα εμφανίζονται σε λίστες επιλογών συνδυασμού (0 = κανένα όριο) ViewProductDescInFormAbility=Εμφάνιση περιγραφών προϊόντων σε γραμμές αντικειμένων (αλλιώς εμφανίστε την περιγραφή σε ένα αναδυόμενο παράθυρο επεξήγησης ) OnProductSelectAddProductDesc=Πώς να χρησιμοποιήσετε την περιγραφή των προϊόντων όταν προσθέτετε ένα προϊόν ως γραμμή ενός εγγράφου AutoFillFormFieldBeforeSubmit=Συμπληρώστε αυτόματα το πεδίο εισαγωγής περιγραφής με την περιγραφή του προϊόντος DoNotAutofillButAutoConcat=Μην συμπληρώνετε αυτόματα το πεδίο εισαγωγής με περιγραφή του προϊόντος. Η περιγραφή του προϊόντος θα συνδεθεί αυτόματα με την περιγραφή που εισάγατε. DoNotUseDescriptionOfProdut=Η περιγραφή του προϊόντος δεν θα συμπεριληφθεί ποτέ στην περιγραφή των γραμμών των εγγράφων -MergePropalProductCard=Ενεργοποίηση στην καρτέλα Συνημμένα αρχεία προϊόντος / υπηρεσίας μια επιλογή για τη συγχώνευση προϊόντος PDF σε πρόταση PDF azur εάν το προϊόν / η υπηρεσία περιλαμβάνεται στην πρόταση +MergePropalProductCard=Ενεργοποίηση στην καρτέλα Συνημμένα αρχεία προϊόντος / υπηρεσίας μια επιλογή για τη συγχώνευση προϊόντος PDF σε πρόταση PDF azur εάν το προϊόν / η υπηρεσία περιλαμβάνεται στην προσφορά ViewProductDescInThirdpartyLanguageAbility=Εμφάνιση περιγραφών προϊόντων σε φόρμες στη γλώσσα του τρίτου μέρους (αλλιώς στη γλώσσα του χρήστη) -UseSearchToSelectProductTooltip=Επίσης, αν έχετε μεγάλο αριθμό προϊόντων (> 100.000), μπορείτε να αυξήσετε την ταχύτητα ρυθμίζοντας σταθερά το PRODUCT_DONOTSEARCH_ANYWHERE στο 1 στο Setup-> Other. Η αναζήτηση θα περιορίζεται στην αρχή της συμβολοσειράς. +UseSearchToSelectProductTooltip=Επίσης, εάν έχετε μεγάλο αριθμό προϊόντων (> 100 000), μπορείτε να αυξήσετε την ταχύτητα ορίζοντας την σταθερά PRODUCT_DONOTSEARCH_ANYWHERE σε 1 στο Ρυθμίσεις->Άλλες Ρυθμίσεις. Στη συνέχεια, η αναζήτηση θα περιοριστεί στην αρχή της συμβολοσειράς. UseSearchToSelectProduct=Περιμένετε έως ότου πιέσετε ένα κλειδί πριν φορτώσετε το περιεχόμενο της λίστας σύνθετων προϊόντων (Αυτό μπορεί να αυξήσει την απόδοση εάν έχετε μεγάλο αριθμό προϊόντων, αλλά είναι λιγότερο βολικό) SetDefaultBarcodeTypeProducts=Προεπιλεγμένος τύπος barcode για χρήση σε προϊόντα -SetDefaultBarcodeTypeThirdParties=Προεπιλεγμένος τύπος barcode για χρήση από τρίτα μέρη -UseUnits=Ορίστε μια μονάδα μέτρησης για την ποσότητα κατά την έκδοση παραγγελιών, προτάσεων ή γραμμών τιμολογίου -ProductCodeChecker= Ενότητα για την παραγωγή και τον έλεγχο κωδικού προϊόντος (προϊόν ή υπηρεσία) +SetDefaultBarcodeTypeThirdParties=Προεπιλεγμένος τύπος barcode για χρήση σε τρίτα μέρη +UseUnits=Ορίστε μια μονάδα μέτρησης για την ποσότητα κατά την έκδοση παραγγελιών, προσφορών ή γραμμών τιμολογίου +ProductCodeChecker= Ενότητα για την δημιουργία και τον έλεγχο κωδικού προϊόντος (προϊόν ή υπηρεσία) ProductOtherConf= Διαμόρφωση Προϊόντος / Υπηρεσίας IsNotADir=δεν είναι κατάλογος ##### Syslog ##### SyslogSetup=Ρύθμιση ενότητας καταγραφών SyslogOutput=Αποτελέσματα καταγραφών -SyslogFacility=Ευκολία +SyslogFacility=Λειτουργία SyslogLevel=Επίπεδο -SyslogFilename=File name and path -YouCanUseDOL_DATA_ROOT=Μπορείτε να χρησιμοποιήσετε το DOL_DATA_ROOT / dolibarr.log για ένα αρχείο καταγραφής στον κατάλογο Dolibarr "documents". Μπορείτε να ορίσετε μια διαφορετική διαδρομή για να αποθηκεύσετε αυτό το αρχείο. -ErrorUnknownSyslogConstant=Η σταθερά %s δεν είναι η γνωστή σταθερά Syslog -OnlyWindowsLOG_USER=Στα Windows, θα υποστηρίζεται μόνο η δυνατότητα LOG_USER +SyslogFilename=Όνομα αρχείου και διαδρομή +YouCanUseDOL_DATA_ROOT=Μπορείτε να χρησιμοποιήσετε το DOL_DATA_ROOT/dolibarr.log για ένα αρχείο καταγραφής στον κατάλογο "documents" του Dolibarr. Μπορείτε να ορίσετε και μια διαφορετική διαδρομή για να αποθηκεύσετε αυτό το αρχείο. +ErrorUnknownSyslogConstant=Η σταθερά %s δεν είναι μια γνωστή σταθερά Syslog +OnlyWindowsLOG_USER=Στα Windows, θα υποστηρίζεται μόνο η λειτουργία LOG_USER CompressSyslogs=Συμπίεση και δημιουργία αντιγράφων ασφαλείας των αρχείων καταγραφής εντοπισμού σφαλμάτων (που δημιουργούνται από την ενότητα Καταγραφή για σφάλμα) SyslogFileNumberOfSaves=Αριθμός αρχείων καταγραφής αντιγράφων ασφαλείας προς διατήρηση -ConfigureCleaningCronjobToSetFrequencyOfSaves=Ρυθμίστε τη διαμόρφωση της προγραμματισμένης εργασίας για να ορίσετε την εφεδρική συχνότητα καταγραφής +ConfigureCleaningCronjobToSetFrequencyOfSaves=Διαμορφώστε την προγραμματισμένη εργασία καθαρισμού για να ορίσετε τη συχνότητα δημιουργίας αντιγράφων ασφαλείας αρχείων καταγραφής ##### Donations ##### -DonationsSetup=Ρύθμιση ενθέματος δωρεάς +DonationsSetup=Ρύθμιση ενότητας δωρεάς DonationsReceiptModel=Πρότυπο παραλαβής δωρεάς ##### Barcode ##### -BarcodeSetup=Barcode setup -PaperFormatModule=Ένθεμα μορφής εκτύπωσης -BarcodeEncodeModule=Barcode encoding type -CodeBarGenerator=Barcode generator -ChooseABarCode=Δεν ορίστηκε γεννήτρια -FormatNotSupportedByGenerator=Μορφή που δεν υποστηρίζεται από αυτήν τη γεννήτρια -BarcodeDescEAN8=Barcode of type EAN8 -BarcodeDescEAN13=Barcode of type EAN13 -BarcodeDescUPC=Barcode of type UPC -BarcodeDescISBN=Barcode of type ISBN -BarcodeDescC39=Barcode of type C39 -BarcodeDescC128=Barcode of type C128 +BarcodeSetup=Ρύθμιση γραμμωτού κώδικα +PaperFormatModule=Ενότητα μορφής εκτύπωσης +BarcodeEncodeModule=Τύπος κωδικοποίησης barcode +CodeBarGenerator=Εφαρμογή δημιουργίας barcode +ChooseABarCode=Δεν ορίστηκε εφαρμογή δημιουργίας +FormatNotSupportedByGenerator=Μορφή που δεν υποστηρίζεται από αυτήν εφαρμογή δημιουργίας +BarcodeDescEAN8=Barcode τύπου EAN8 +BarcodeDescEAN13=Barcode τύπου EAN13 +BarcodeDescUPC=Barcode τύπου UPC +BarcodeDescISBN=Barcode τύπου ISBN +BarcodeDescC39=Barcode τύπου C39 +BarcodeDescC128=Barcode τύπου C128 BarcodeDescDATAMATRIX=Barcode τύπου Datamatrix BarcodeDescQRCODE=Barcode τύπου QR κώδικα -GenbarcodeLocation=Γραμμή εντολών γραμμής εντολών παραγωγής γραμμικού κώδικα (χρησιμοποιείται από τον εσωτερικό κινητήρα για ορισμένους τύπους γραμμικού κώδικα). Πρέπει να είναι συμβατό με το "genbarcode".
Για παράδειγμα: / usr / local / bin / genbarcode +GenbarcodeLocation=Εργαλείο γραμμής εντολών δημιουργίας γραμμικού κώδικα (χρησιμοποιείται από τον εσωτερικό κινητήρα για ορισμένους τύπους γραμμωτού κώδικα). Πρέπει να είναι συμβατό με το "genbarcode".
Για παράδειγμα: /usr/local/bin/genbarcode BarcodeInternalEngine=Εσωτερική μηχανή -BarCodeNumberManager=Διαχειριστής για την αυτόματη αρίθμηση του barcode +BarCodeNumberManager=Διαχειριστής για τον αυτόματο καθορισμό αριθμών γραμμωτού κώδικα ##### Prelevements ##### -WithdrawalsSetup=Ρύθμιση της πληρωμής άμεσων χρεώσεων της ενότητας +WithdrawalsSetup=Ρύθμιση ενότητας πληρωμών άμεσης χρέωσης ##### ExternalRSS ##### -ExternalRSSSetup=External RSS imports setup -NewRSS=New RSS Feed +ExternalRSSSetup=Ρύθμιση εισαγωγών εξωτερικού RSS +NewRSS=Νέα ροή RSS RSSUrl=RSS URL -RSSUrlExample=Μια ενδιαφέρουσα RSS ροή +RSSUrlExample=Μια ενδιαφέρουσα ροή RSS ##### Mailing ##### -MailingSetup=EMailing module setup -MailingEMailFrom=Email αποστολέα (Από) για τα μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται μέσω της ενότητας ηλεκτρονικού ταχυδρομείου +MailingSetup=Ρύθμιση ενότητας EMailing +MailingEMailFrom=Email αποστολέα (Από) για email που αποστέλλονται μέσω της ενότητας EMailing MailingEMailError=Επιστροφή ηλεκτρονικού ταχυδρομείου (Λάθη-σε) για μηνύματα ηλεκτρονικού ταχυδρομείου με σφάλματα -MailingDelay=Δευτερόλεπτα για να περιμένετε μετά την αποστολή του επόμενου μηνύματος +MailingDelay=Δευτερόλεπτα αναμονής μετά την αποστολή του επόμενου μηνύματος ##### Notification ##### -NotificationSetup=Ρύθμιση λειτουργικής μονάδας ειδοποίησης ηλεκτρονικού ταχυδρομείου -NotificationEMailFrom=Email αποστολέα (Από) για μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται από τη λειτουργική μονάδα Ειδοποιήσεις +NotificationSetup=Ρύθμιση ενότητας ειδοποίησεων ηλεκτρονικού ταχυδρομείου +NotificationEMailFrom=Email αποστολέα (Από) για μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται από τη ενότητα Ειδοποιήσεων FixedEmailTarget=Παραλήπτης NotificationDisableConfirmMessageContact=Απόκρυψη της λίστας παραληπτών (που έχουν εγγραφεί ως επαφή) των ειδοποιήσεων στο μήνυμα επιβεβαίωσης NotificationDisableConfirmMessageUser=Απόκρυψη της λίστας των παραληπτών (που έχουν εγγραφεί ως χρήστης) των ειδοποιήσεων στο μήνυμα επιβεβαίωσης NotificationDisableConfirmMessageFix=Απόκρυψη της λίστας παραληπτών (που έχουν εγγραφεί ως καθολικό email) των ειδοποιήσεων στο μήνυμα επιβεβαίωσης ##### Sendings ##### -SendingsSetup=Ρύθμιση μονάδας αποστολής -SendingsReceiptModel=Αποστολή μοντέλου απόδειξη παραλαβής -SendingsNumberingModules=Σας αποστολές αρίθμησης ενοτήτων -SendingsAbility=Υποστηρίξτε τα φύλλα αποστολής για παραδόσεις πελατών -NoNeedForDeliveryReceipts=Στις περισσότερες περιπτώσεις, τα φύλλα αποστολής χρησιμοποιούνται τόσο ως φύλλα για παραδόσεις πελατών (κατάλογος προϊόντων προς αποστολή) όσο και ως φύλλα που παραλαμβάνονται και υπογράφονται από τον πελάτη. Ως εκ τούτου, η παραλαβή των παραδόσεων προϊόντων είναι διπλότυπο και σπάνια ενεργοποιείται. -FreeLegalTextOnShippings=Ελεύθερο κείμενο για τις μεταφορές +SendingsSetup=Ρύθμιση ενότητας αποστολών +SendingsReceiptModel=Μοντέλο απόδειξης αποστολής +SendingsNumberingModules=Ενότητες αρίθμησης αποστόλων +SendingsAbility=Υποστήριξη φύλλων αποστολής για παραδόσεις πελατών +NoNeedForDeliveryReceipts=Στις περισσότερες περιπτώσεις, τα φύλλα αποστολής χρησιμοποιούνται τόσο ως φύλλα για παραδόσεις πελατών (κατάλογος προϊόντων προς αποστολή) όσο και ως φύλλα που παραλαμβάνονται και υπογράφονται από τον πελάτη. Ως εκ τούτου, η παραλαβή των παραδόσεων προϊόντων είναι διπλότυπο χαρακτηριστικό και σπάνια ενεργοποιείται. +FreeLegalTextOnShippings=Ελεύθερο κείμενο στις αποστολές ##### Deliveries ##### -DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderNumberingModules=Ενότητα αρίθμησης αποδείξεων παραδόσεων προϊόντων DeliveryOrderModel=Μοντέλο απόδειξης παράδοσης προϊόντων DeliveriesOrderAbility=Υποστήριξη αποδείξεων παραδόσεων προϊόντων FreeLegalTextOnDeliveryReceipts=Ελεύθερο κείμενο στις αποδείξεις παραλαβής ##### FCKeditor ##### -AdvancedEditor=Εξελιγμένο πρόγραμμα επεξεργασίας +AdvancedEditor=Προηγμένος επεξεργαστής ActivateFCKeditor=Ενεργοποιήστε το προηγμένο πρόγραμμα επεξεργασίας για: FCKeditorForNotePublic=WYSIWIG δημιουργία/έκδοση του πεδίου «δημόσιες σημειώσεις» στοιχείων FCKeditorForNotePrivate=WYSIWIG δημιουργία/έκδοση του πεδίου "ιδιωτικές σημειώσεις" στοιχείων FCKeditorForCompany=WYSIWIG δημιουργία/έκδοση της περιγραφής πεδίου στοιχείων (εκτός προϊόντων/υπηρεσιών) FCKeditorForProduct=WYSIWIG δημιουργία/έκδοση της περιγραφής πεδίου προϊόντων/υπηρεσιών -FCKeditorForProductDetails=WYSIWIG δημιουργία/έκδοση γραμμών λεπτομερειών προϊόντων για όλες τις οντότητες (προσφορες, παραγγελίες, τιμολόγια κ.λ.π...). Προειδοποίηση: Η χρήση αυτής της επιλογής για αυτήν την περίπτωση δεν συνιστάται, καθώς μπορεί να δημιουργήσει προβλήματα με ειδικούς χαρακτήρες και τη μορφοποίηση σελίδων κατά τη δημιουργία αρχείων PDF. +FCKeditorForProductDetails=WYSIWIG δημιουργία/έκδοση γραμμών λεπτομερειών προϊόντων για όλες τις οντότητες (προσφορές, παραγγελίες, τιμολόγια κ.λ.π...). Προειδοποίηση: Η χρήση αυτής της επιλογής για αυτήν την περίπτωση δεν συνιστάται, καθώς μπορεί να δημιουργήσει προβλήματα με ειδικούς χαρακτήρες και τη μορφοποίηση σελίδων κατά τη δημιουργία αρχείων PDF. FCKeditorForMailing= Δημιουργία / έκδοση WYSIWIG για μαζικά eMailings (Εργαλεία-> eMailing) -FCKeditorForUserSignature=WYSIWIG creation/edition of user signature -FCKeditorForMail=Δημιουργία / έκδοση WYSIWIG για όλα τα μηνύματα (εκτός από τα εργαλεία-> eMailing) +FCKeditorForUserSignature=WYSIWIG δημιουργία/έκδοση υπογραφής χρήστη +FCKeditorForMail=Δημιουργία/έκδοση WYSIWIG για όλη την αλληλογραφία (εκτός από Εργαλεία->EMailing) FCKeditorForTicket=Δημιουργία / έκδοση WYSIWIG για εισιτήρια ##### Stock ##### -StockSetup=Ρύθμιση μονάδας αποθέματος -IfYouUsePointOfSaleCheckModule=Εάν χρησιμοποιείτε τη μονάδα POS (Point of Sale) που παρέχεται εξ ορισμού ή μια εξωτερική μονάδα, αυτή η ρύθμιση ενδέχεται να αγνοηθεί από τη μονάδα POS. Οι περισσότερες μονάδες POS σχεδιάζονται από προεπιλογή για να δημιουργήσουν άμεσα ένα τιμολόγιο και να μειώσουν το απόθεμα ανεξάρτητα από τις επιλογές εδώ. Επομένως, εάν χρειάζεστε ή όχι να μειώσετε το απόθεμα κατά την εγγραφή μιας πώλησης από το POS σας, ελέγξτε επίσης τη ρύθμιση της μονάδας POS. +StockSetup=Ρύθμιση ενότητας αποθέματος +IfYouUsePointOfSaleCheckModule=Εάν χρησιμοποιείτε τη μονάδα Point of Sale (POS) που παρέχεται από προεπιλογή ή μια εξωτερική ενότητα, αυτή η ρύθμιση ενδέχεται να αγνοηθεί από τη ενότητα POS σας. Οι περισσότερες ενότητες POS έχουν σχεδιαστεί από προεπιλογή για να δημιουργούν ένα τιμολόγιο αμέσως και να μειώνουν το απόθεμα ανεξάρτητα από τις επιλογές εδώ. Επομένως, εάν θέλετε ή όχι να έχετε μείωση αποθεμάτων κατά την εγγραφή μιας πώλησης από το POS σας, ελέγξτε επίσης τη ρύθμιση της ενότητας POS. ##### Menu ##### MenuDeleted=Το μενού διαγράφηκε Menu=Μενού Menus=Μενού TreeMenuPersonalized=Εξατομικευμένα μενού -NotTopTreeMenuPersonalized=Εξατομικευμένα μενού που δεν συνδέονται με μια καταχώρηση κορυφαίου μενού -NewMenu=New menu -MenuHandler=Χειριστής μενού -MenuModule=Source module +NotTopTreeMenuPersonalized=Εξατομικευμένα μενού που δεν συνδέονται με μια καταχώρηση του επάνω μενού +NewMenu=Νέο μενού +MenuHandler=Πρόγραμμα χειρισμού μενού +MenuModule=Ενότητα Μενού HideUnauthorizedMenu=Απόκρυψη μη εξουσιοδοτημένων μενού και για εσωτερικούς χρήστες (απλώς γκριζαρισμένα διαφορετικά) -DetailId=Id menu -DetailMenuHandler=Menu handler where to show new menu -DetailMenuModule=Module name if menu entry come from a module +DetailId=Αναγνωριστικό μενού +DetailMenuHandler=Πρόγραμμα χειρισμού μενού όπου θα εμφανίζεται το νέο μενού +DetailMenuModule=Όνομα ενότητας εάν η καταχώριση μενού προέρχεται από μια ενότητα DetailType=Τύπος μενού (πάνω ή αριστερά) -DetailTitre=Ετικέτα μενού ή κωδικό ετικέτας για μετάφραση -DetailUrl=Διεύθυνση URL όπου σας στέλνει το μενού (Απόλυτη σύνδεση URL ή εξωτερικός σύνδεσμος με http://) +DetailTitre=Ετικέτα μενού ή κωδικός ετικέτας για μετάφραση +DetailUrl=Διεύθυνση URL που σας στέλνει το μενού (Απόλυτος σύνδεσμος URL ή εξωτερικός σύνδεσμος με http://) DetailEnabled=Προϋπόθεση εμφάνισης ή μη εγγραφής -DetailRight=Συνθήκη για την εμφάνιση γκρι μενού χωρίς άδεια -DetailLangs=Lang file name for label code translation +DetailRight=Συνθήκη για την εμφάνιση γκρι μενού μη εξουσιοδοτημένων +DetailLangs=Όνομα αρχείου Lang για μετάφραση κώδικα ετικέτας DetailUser=Intern / Extern / All Target=Target DetailTarget=Στόχευση συνδέσμων (_blank top ανοίγει ένα νέο παράθυρο) -DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) -ModifMenu=Menu change -DeleteMenu=Διαγραφή καταχωρήσεων μενού -ConfirmDeleteMenu=Είστε βέβαιοι ότι θέλετε να διαγράψετε την καταχώρηση μενού %s ? -FailedToInitializeMenu=Αποτυχία προετοιμασίας μενού +DetailLevel=Επίπεδο (-1: επάνω μενού, 0: μενού κεφαλίδας, >0 μενού και υπομενού) +ModifMenu=Αλλαγή μενού +DeleteMenu=Διαγραφή καταχώρισης μενού +ConfirmDeleteMenu=Είστε σίγουροι ότι θέλετε να διαγράψετε την καταχώρηση μενού %s ? +FailedToInitializeMenu=Αποτυχία αρχικοποίησης μενού ##### Tax ##### TaxSetup=Ρύθμιση ενότητας φόρων, κοινωνικών ή φορολογικών εισφορών και μερισμάτων OptionVatMode=Οφειλόμενο ΦΠΑ -OptionVATDefault=Βασική βάση -OptionVATDebitOption=Βάσει δεδουλευμένων -OptionVatDefaultDesc=Ο ΦΠΑ οφείλεται:
- κατά την παράδοση αγαθών (βάσει της ημερομηνίας του τιμολογίου)
- για τις πληρωμές για υπηρεσίες +OptionVATDefault=Τυπική βάση +OptionVATDebitOption=Βάση των Δεδουλευμένων +OptionVatDefaultDesc=Οφείλεται ΦΠΑ:
- κατά την παράδοση αγαθών (βάσει ημερομηνίας τιμολογίου)
- για πληρωμές για υπηρεσίες OptionVatDebitOptionDesc=Ο ΦΠΑ οφείλεται:
- κατά την παράδοση αγαθών (βάσει της ημερομηνίας του τιμολογίου)
- στο τιμολόγιο (χρέωση) για τις υπηρεσίες OptionPaymentForProductAndServices=Ταμειακή βάση για προϊόντα και υπηρεσίες -OptionPaymentForProductAndServicesDesc=Ο ΦΠΑ οφείλεται:
- για την πληρωμή αγαθών
- για τις πληρωμές για υπηρεσίες +OptionPaymentForProductAndServicesDesc=Ο Φ.Π.Α. οφείλεται:
- για την πληρωμή αγαθών
- για τις πληρωμές για υπηρεσίες SummaryOfVatExigibilityUsedByDefault=Χρόνος επιλεξιμότητας του ΦΠΑ από προεπιλογή σύμφωνα με την επιλεγμένη επιλογή: OnDelivery=Κατά την αποστολή OnPayment=Κατά την πληρωμή OnInvoice=Κατά την έκδοση τιμ/γίου -SupposedToBePaymentDate=Ημερομηνία πληρωμής που χρησιμοποιήθηκε -SupposedToBeInvoiceDate=Ημερομηνία τιμολογίου που χρησιμοποιήθηκε +SupposedToBePaymentDate=Χρησιμοποιήθηκε η ημερομηνία πληρωμής +SupposedToBeInvoiceDate=Χρησιμοποιήθηκε η ημερομηνία τιμολογίου Buy=Αγορά Sell=Πώληση InvoiceDateUsed=Ημερομηνία τιμολογίου που χρησιμοποιήθηκε -YourCompanyDoesNotUseVAT=Η εταιρεία σας έχει οριστεί να μην χρησιμοποιεί ΦΠΑ (Αρχική σελίδα - Εγκατάσταση - Εταιρεία / Οργανισμός), επομένως δεν υπάρχουν επιλογές ΦΠΑ για την εγκατάσταση. +YourCompanyDoesNotUseVAT=Η εταιρεία σας έχει οριστεί να μην χρησιμοποιεί ΦΠΑ (Αρχική - Ρυθμίσεις - Εταιρεία / Οργανισμός), επομένως δεν υπάρχουν επιλογές ΦΠΑ για την εγκατάσταση. AccountancyCode=Λογιστικός κώδικας -AccountancyCodeSell=Sale account. code -AccountancyCodeBuy=Purchase account. code +AccountancyCodeSell=Λογιστικός κώδικας πώλησης +AccountancyCodeBuy=Λογιστικός κώδικας αγοράς CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Διατηρήστε το πλαίσιο ελέγχου "Αυτόματη δημιουργία πληρωμής" κενό από προεπιλογή κατά τη δημιουργία νέου φόρου ##### Agenda ##### -AgendaSetup=Events and agenda module setup -PasswordTogetVCalExport=Κλειδί για την έγκριση σύνδεσης εξαγωγής +AgendaSetup=Ρύθμιση ενότητας συμβάντων και ατζέντας +PasswordTogetVCalExport=Κωδικός για την έγκριση συνδέσμου εξαγωγής SecurityKey = Κλειδί ασφαλείας PastDelayVCalExport=Μην εξάγετε συμβάν παλαιότερο από -AGENDA_USE_EVENT_TYPE=Χρήση τύπων συμβάντων (διαχειρίζεται το μενού Ρύθμιση -> Λεξικά -> Τύπος συμβάντων ημερήσιας διάταξης) +AGENDA_USE_EVENT_TYPE=Χρήση τύπων συμβάντων (διαχείριση στο μενού Ρυθμίσεις -> Λεξικά -> Τύπος συμβάντων ατζέντας) AGENDA_USE_EVENT_TYPE_DEFAULT=Αυτόματη ρύθμιση αυτής της προεπιλεγμένης τιμής για τον τύπο συμβάντος στη φόρμα δημιουργίας συμβάντος AGENDA_DEFAULT_FILTER_TYPE=Αυτόματη ρύθμιση αυτού του τύπου συμβάντος στο φίλτρο αναζήτησης της προβολής ατζέντας AGENDA_DEFAULT_FILTER_STATUS=Αυτόματη ρύθμιση αυτής της κατάστασης για συμβάντα στο φίλτρο αναζήτησης της προβολής ατζέντας @@ -1813,130 +1813,130 @@ AGENDA_REMINDER_EMAIL=Ενεργοποίηση υπενθύμισης συμβά AGENDA_REMINDER_EMAIL_NOTE=Σημείωση: Η συχνότητα της προγραμματισμένης εργασίας %s πρέπει να είναι αρκετή για να είστε σίγουροι ότι η υπενθύμιση αποστέλλεται τη σωστή στιγμή. AGENDA_SHOW_LINKED_OBJECT=Εμφάνιση συνδεδεμένου αντικειμένου στην προβολή ατζέντας ##### Clicktodial ##### -ClickToDialSetup=Click To Dial module setup -ClickToDialUrlDesc=Η διεύθυνση URL ονομάζεται όταν γίνεται κλικ στο τηλέφωνο picto. Στη διεύθυνση URL, μπορείτε να χρησιμοποιήσετε ετικέτες
__PHONETO__ που θα αντικατασταθεί με τον αριθμό τηλεφώνου του ατόμου που καλεί
__PHONEFROM__ που θα αντικατασταθεί με τον αριθμό τηλεφώνου του καλούντος (του δικού σας)
__LOGIN__ που θα αντικατασταθεί με σύνδεση με κλικ (καθορισμένη στην κάρτα χρήστη)
__PASS__ που θα αντικατασταθεί με κωδικό πρόσβασης (που ορίζεται στην κάρτα χρήστη). -ClickToDialDesc=Αυτή η ενότητα αλλάζει τους αριθμούς τηλεφώνου, όταν χρησιμοποιείτε desktop υπολογιστή, σε συνδέσμους με δυνατότητα κλικ. Ένα κλικ θα καλέσει τον αριθμό. Αυτό μπορεί να χρησιμοποιηθεί για την έναρξη της τηλεφωνικής κλήσης όταν χρησιμοποιείτε ένα soft phone στον επιτραπέζιο υπολογιστή σας ή όταν χρησιμοποιείτε για παράδειγμα ένα σύστημα CTI που βασίζεται στο πρωτόκολλο SIP. Σημείωση: Όταν χρησιμοποιείτε smartphone, μπορείτε πάντα να κάνετε κλικ στους αριθμούς τηλεφώνου. -ClickToDialUseTelLink=Χρησιμοποιήστε μόνο έναν σύνδεσμο "τηλ::" σε αριθμούς τηλεφώνου +ClickToDialSetup=Ρύθμιση ενότητας Click To Dial +ClickToDialUrlDesc=Η URL καλείται όταν γίνει ένα κλικ στην εικόνα του τηλεφώνου. Στη URL, μπορείτε να χρησιμοποιήσετε tags
__PHONETO__ που θα αντικατασταθεί με τον αριθμό τηλεφώνου του προσώπου που θέλετε να καλέσετε
__PHONEFROM__ που θα αντικατασταθεί με τον αριθμό τηλεφώνου του καλούντα (ο δικός σας)
__LOGIN__ που θα αντικατασταθεί με το όνομα χρήστη της clicktodial σύνδεσης (καθορίζεται στην κάρτα χρήστη)
__PASS__ που θα αντικατασταθεί με τον κωδικό πρόσβασης clicktodial (που ορίζεται στην κάρτα χρήστη). +ClickToDialDesc=Αυτή η ενότητα μετατρέπει τους αριθμούς τηλεφώνου, όταν χρησιμοποιείτε desktop υπολογιστή, σε συνδέσμους με δυνατότητα κλικ. Ένα κλικ θα καλέσει τον αριθμό. Αυτό μπορεί να χρησιμοποιηθεί για την έναρξη της τηλεφωνικής κλήσης όταν χρησιμοποιείτε ένα soft phone στον desktop υπολογιστή σας ή όταν χρησιμοποιείτε για παράδειγμα ένα σύστημα CTI που βασίζεται στο πρωτόκολλο SIP. Σημείωση: Όταν χρησιμοποιείτε smartphone, μπορείτε πάντα να κάνετε κλικ στους αριθμούς τηλεφώνου. +ClickToDialUseTelLink=Χρησιμοποιήστε απλώς έναν σύνδεσμο "tel:" στους αριθμούς τηλεφώνου ClickToDialUseTelLinkDesc=Χρησιμοποιήστε αυτήν τη μέθοδο, εάν οι χρήστες σας έχουν ένα softphone ή μια διεπαφή λογισμικού, εγκατεστημένη στον ίδιο υπολογιστή με το πρόγραμμα περιήγησης και καλούνται όταν γίνει κλικ σε έναν σύνδεσμο που ξεκινά με "tel:" στο πρόγραμμα περιήγησης σας. Εάν χρειάζεστε έναν σύνδεσμο που ξεκινά με "sip:" ή μια πλήρη λύση διακομιστή (δεν χρειάζεται εγκατάσταση τοπικού λογισμικού), πρέπει να το ορίσετε σε "Όχι" και να συμπληρώσετε το επόμενο πεδίο. ##### Point Of Sale (CashDesk) ##### CashDesk=Σημείο πώλησης -CashDeskSetup=Λειτουργία μονάδας σημείου πώλησης -CashDeskThirdPartyForSell=Προκαθορισμένο κοινό τρίτο μέρος για χρήση για πωλήσεις -CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskSetup=Ρύθμιση ενότητας Point of Sales +CashDeskThirdPartyForSell=Προεπιλεγμένο γενικό τρίτο μέρος για χρήση για πωλήσεις +CashDeskBankAccountForSell=Προεπιλεγμένος λογαριασμός που χρησιμοποιείται για τη λήψη πληρωμών με μετρητά CashDeskBankAccountForCheque=Ο προεπιλεγμένος λογαριασμός που θα χρησιμοποιηθεί για την παραλαβή πληρωμών με επιταγή -CashDeskBankAccountForCB=Default account to use to receive payments by credit cards +CashDeskBankAccountForCB=Προεπιλεγμένος λογαριασμός που χρησιμοποιηθεί για τη λήψη πληρωμών με πιστωτικές κάρτες CashDeskBankAccountForSumup=Προεπιλεγμένη τράπεζα για χρήση με πληρωμές SumUp -CashDeskDoNotDecreaseStock=Απενεργοποίηση της μείωσης της μετοχής όταν πραγματοποιείται πώληση από το σημείο πώλησης (εάν "όχι", μειώνεται το απόθεμα για κάθε πώληση που γίνεται από το POS, ανεξάρτητα από την επιλογή που έχει οριστεί στην ενότητα Ενότητα). -CashDeskIdWareHouse=Αναγκαστικός περιορισμός αποθήκης για μείωση των αποθεμάτων +CashDeskDoNotDecreaseStock=Απενεργοποιήστε τη μείωση των αποθεμάτων όταν μια πώληση πραγματοποιείται από το Σημείο πώλησης (εάν "όχι", η μείωση των αποθεμάτων γίνεται για κάθε πώληση που πραγματοποιείται από το POS, ανεξάρτητα από την επιλογή που έχει οριστεί στην ενότητα Απόθεμα). +CashDeskIdWareHouse=Αναγκαστικός περιορισμός αποθήκης χρήσης για μείωση των αποθεμάτων StockDecreaseForPointOfSaleDisabled=Η μείωση του αποθέματος από το σημείο πώλησης είναι απενεργοποιημένη -StockDecreaseForPointOfSaleDisabledbyBatch=Η μείωση του αποθέματος στο POS δεν είναι συμβατή με τη διαχείριση σειριακής / παρτίδας μονάδας (αυτή τη στιγμή είναι ενεργή), επομένως η μείωση του αποθέματος είναι απενεργοποιημένη. +StockDecreaseForPointOfSaleDisabledbyBatch=Η μείωση του αποθέματος στο POS δεν είναι συμβατή με τη διαχείριση της ενότητας παρτίδες/σειριακοί αριθμοί (που αυτή τη στιγμή είναι ενεργή), επομένως η μείωση του αποθέματος είναι απενεργοποιημένη. CashDeskYouDidNotDisableStockDecease=Δεν απενεργοποιήσατε τη μείωση των μετοχών όταν πραγματοποιείτε μια πώληση από το σημείο πώλησης. Ως εκ τούτου απαιτείται αποθήκη. -CashDeskForceDecreaseStockLabel=Αναγκάστηκε η μείωση των αποθεμάτων για προϊόντα παρτίδας. -CashDeskForceDecreaseStockDesc=Μειώστε πρώτα από τις παλαιότερες ημερομηνίες φαγητού και πώλησης. -CashDeskReaderKeyCodeForEnter=Κωδικός κλειδιού για το "Enter" που ορίζεται στον αναγνώστη γραμμωτού κώδικα (Παράδειγμα: 13) +CashDeskForceDecreaseStockLabel=Η μείωση των αποθεμάτων για τα προϊόντα παρτίδας ήταν αναγκαστική. +CashDeskForceDecreaseStockDesc=Μειώστε πρώτα από τις παλαιότερες ημερομηνίες κατανάλωσης και πώλησης. +CashDeskReaderKeyCodeForEnter=Κωδικός κλειδιού για το "Enter" που ορίστηκε στον barcode reader (Παράδειγμα: 13) ##### Bookmark ##### -BookmarkSetup=Bookmark module setup -BookmarkDesc=Αυτή η ενότητα σάς επιτρέπει να διαχειρίζεστε σελιδοδείκτες. Μπορείτε επίσης να προσθέσετε συντομεύσεις σε όλες τις σελίδες Dolibarr ή σε εξωτερικούς ιστότοπους στο αριστερό σας μενού. +BookmarkSetup=Ρύθμιση ενότητας σελιδοδεικτών +BookmarkDesc=Αυτή η ενότητα σάς επιτρέπει να διαχειρίζεστε σελιδοδείκτες. Μπορείτε επίσης να προσθέσετε συντομεύσεις σε όλες τις σελίδες του Dolibarr ή σε εξωτερικούς ιστότοπους στο αριστερό σας μενού. NbOfBoomarkToShow=Μέγιστος αριθμός σελιδοδεικτών που εμφανίζονται στο αριστερό μενού ##### WebServices ##### -WebServicesSetup=Webservices module setup -WebServicesDesc=Ενεργοποιώντας αυτή την ενότητα, ο Dolibarr γίνεται διακομιστής υπηρεσίας ιστού για την παροχή διαφόρων υπηρεσιών διαδικτύου. -WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +WebServicesSetup=Ρύθμιση ενότητας Webservices +WebServicesDesc=Ενεργοποιώντας αυτή την ενότητα, το Dolibarr γίνεται διακομιστής υπηρεσίας ιστού για την παροχή διαφόρων υπηρεσιών διαδικτύου. +WSDLCanBeDownloadedHere=Τα αρχεία περιγραφής WSDL των παρεχόμενων υπηρεσιών μπορείτε να τα κατεβάσετε εδώ EndPointIs=Οι πελάτες SOAP πρέπει να στείλουν τα αιτήματά τους στο τελικό σημείο Dolibarr που διατίθεται στη διεύθυνση URL ##### API #### -ApiSetup=Ρύθμιση μονάδας API -ApiDesc=Ενεργοποιώντας αυτή την ενότητα, ο Dolibarr γίνεται διακομιστής REST για την παροχή διαφόρων υπηρεσιών ιστού. +ApiSetup=Ρύθμιση ενότητας API +ApiDesc=Με την ενεργοποίηση αυτής της ενότητας, το Dolibarr γίνεται διακομιστής REST για να παρέχει διάφορες υπηρεσίες web. ApiProductionMode=Ενεργοποιήστε τη λειτουργία παραγωγής (αυτό θα ενεργοποιήσει τη χρήση μνήμης cache για τη διαχείριση υπηρεσιών) ApiExporerIs=Μπορείτε να εξερευνήσετε και να δοκιμάσετε τα API στη διεύθυνση URL -OnlyActiveElementsAreExposed=Μόνο τα στοιχεία από τα ενεργοποιημένα στοιχεία είναι εκτεθειμένα +OnlyActiveElementsAreExposed=Εκτίθενται μόνο στοιχεία από ενεργοποιημένες ενότητες ApiKey=Κλειδί για το API WarningAPIExplorerDisabled=Ο εξερευνητής API έχει απενεργοποιηθεί. Ο εξερευνητής API δεν απαιτείται να παρέχει υπηρεσίες API. Είναι ένα εργαλείο για τον προγραμματιστή να εντοπίσει / δοκιμάσει τα API REST. Αν χρειάζεστε αυτό το εργαλείο, μεταβείτε στη ρύθμιση API REST για να το ενεργοποιήσετε. ##### Bank ##### -BankSetupModule=Bank module setup -FreeLegalTextOnChequeReceipts=Δωρεάν κείμενο σχετικά με τις αποδείξεις ελέγχου -BankOrderShow=Σειρά Εμφάνιση των τραπεζικών λογαριασμών για τις χώρες που χρησιμοποιούν "λεπτομερή αριθμός τράπεζα" -BankOrderGlobal=Γενικός +BankSetupModule=Ρύθμιση ενότητας τράπεζας +FreeLegalTextOnChequeReceipts=Ελευθερο κείμενο στις αποδείξεις επιταγών +BankOrderShow=Εμφάνιση σειράς τραπεζικών λογαριασμών για χώρες που χρησιμοποιούν "αναλυτικό αριθμό τράπεζας" +BankOrderGlobal=Γενική BankOrderGlobalDesc=Γενική σειρά εμφάνισης -BankOrderES=Ισπανικά -BankOrderESDesc=Ισπανικά σειρά εμφάνισης -ChequeReceiptsNumberingModule=Ελέγξτε τη λειτουργική μονάδα αριθμοδότησης εισιτηρίων +BankOrderES=Ισπανική +BankOrderESDesc=Ισπανική σειρά εμφάνισης +ChequeReceiptsNumberingModule=Ελέγξτε την ενότητα αρίθμησης αποδείξεων ##### Multicompany ##### -MultiCompanySetup=Multi-company module setup +MultiCompanySetup=Ρύθμιση ενότητας πολλαπλών εταιρειών ##### Suppliers ##### -SuppliersSetup=Ρύθμιση μονάδας προμηθευτή -SuppliersCommandModel=Πλήρες πρότυπο της εντολής αγοράς -SuppliersCommandModelMuscadet=Πλήρες πρότυπο της εντολής αγοράς (παλιά εφαρμογή του προτύπου cornas) +SuppliersSetup=Ρύθμιση ενότητας προμηθευτή +SuppliersCommandModel=Πλήρες πρότυπο παραγγελιών αγοράς +SuppliersCommandModelMuscadet=Πλήρες πρότυπο παραγγελιών αγοράς (παλιά εφαρμογή του προτύπου cornas) SuppliersInvoiceModel=Πλήρες πρότυπο τιμολογίου προμηθευτή SuppliersInvoiceNumberingModel=Αριθμητικά μοντέλα τιμολογίων προμηθευτών IfSetToYesDontForgetPermission=Αν είναι ρυθμισμένη σε μη μηδενική τιμή, μην ξεχάσετε να δώσετε δικαιώματα σε ομάδες ή χρήστες που επιτρέπονται για τη δεύτερη έγκριση ##### GeoIPMaxmind ##### -GeoIPMaxmindSetup=GeoIP Maxmind module setup +GeoIPMaxmindSetup=Ρύθμιση ενότητας GeoIP Maxmind PathToGeoIPMaxmindCountryDataFile=Διαδρομή προς αρχείο που περιέχει το Maxmind ip στη μετάφραση χώρας.
Παραδείγματα:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb -NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). -YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +NoteOnPathLocation=Σημειώστε ότι το αρχείο δεδομένων ip ανά χώρα πρέπει να βρίσκεται μέσα σε έναν κατάλογο που να έχει δικαιώματα ανάγνωσης η PHP σας (Ελέγξτε τις ρυθμίσεις PHP open_basedir και τα δικαιώματα του συστήματος αρχείων). +YouCanDownloadFreeDatFileTo=Μπορείτε να κάνετε λήψη μιας δωρεάν δοκιμαστικής έκδοσης του αρχείου χώρας Maxmind GeoIP στη διεύθυνση %s. YouCanDownloadAdvancedDatFileTo=Μπορείτε επίσης να κατεβάσετε μια πιο πλήρη έκδοση , με ενημερώσεις, του αρχείου χώρας Maxmind GeoIP στο %s. -TestGeoIPResult=Test of a conversion IP -> country +TestGeoIPResult=Δοκιμή μετατροπής IP -> χώρα ##### Projects ##### -ProjectsNumberingModules=Εργασίες αρίθμησης ενθεμάτων -ProjectsSetup=Project module setup -ProjectsModelModule=Εργασίες έργου αναφοράς εγγράφων -TasksNumberingModules=Εργασίες αριθμοδότησης μονάδας -TaskModelModule=Εργασίες υπόδειγμα εγγράφου αναφορών -UseSearchToSelectProject=Περιμένετε μέχρι να πιεστεί ένα πλήκτρο πριν φορτώσετε το περιεχόμενο της λίστας σύνθετων έργων.
Αυτό μπορεί να βελτιώσει την απόδοση εάν έχετε μεγάλο αριθμό έργων, αλλά είναι λιγότερο βολικό. +ProjectsNumberingModules=Ενότητα αρίθμησης έργων +ProjectsSetup=Ρύθμιση ενότητας έργου +ProjectsModelModule=Μοντέλο εγγράφου αναφορών έργου +TasksNumberingModules=Ενότητα αρίθμησης εργασιών +TaskModelModule=Μοντέλο εγγράφου αναφορών εργασιών +UseSearchToSelectProject=Περιμένετε μέχρι να πατηθεί ένα πλήκτρο πριν φορτώσετε το περιεχόμενο της σύνθετης λίστας έργου.
Αυτό μπορεί να βελτιώσει την απόδοση εάν έχετε μεγάλο αριθμό έργων, αλλά είναι λιγότερο βολικό. ##### ECM (GED) ##### ##### Fiscal Year ##### -AccountingPeriods=Λογιστικές περιόδους +AccountingPeriods=Λογιστικές περίοδοι AccountingPeriodCard=Λογιστική περίοδος NewFiscalYear=Νέα λογιστική περίοδος -OpenFiscalYear=Ανοικτή λογιστική περίοδος +OpenFiscalYear=Άνοιγμα λογιστικής περιόδου CloseFiscalYear=Κλείσιμο λογιστικής περιόδου -DeleteFiscalYear=Διαγραφή περιόδου λογιστικής -ConfirmDeleteFiscalYear=Είστε σίγουροι ότι θα διαγράψετε αυτήν τη λογιστική περίοδο; +DeleteFiscalYear=Διαγραφή λογιστικής περιόδου +ConfirmDeleteFiscalYear=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν τη λογιστική περίοδο; ShowFiscalYear=Εμφάνιση λογιστικής περιόδου -AlwaysEditable=Μπορεί πάντα να επεξεργαστεί -MAIN_APPLICATION_TITLE=Αναγκαστικό ορατό όνομα της εφαρμογής (προειδοποίηση: η ρύθμιση του δικού σας ονόματος μπορεί να δημιουργήσει πρόβλημα στη λειτουργία Αυτόματης συμπλήρωσης σύνδεσης όταν χρησιμοποιείτε το DoliDroid εφαρμογή για κινητά) +AlwaysEditable=Πάντα επεξεργάσιμο +MAIN_APPLICATION_TITLE=Επιβολή ορατού ονόματος εφαρμογής (προειδοποίηση: ο ορισμός του δικού σας ονόματος εδώ μπορεί να διακόψει τη δυνατότητα σύνδεσης αυτόματης συμπλήρωσης όταν χρησιμοποιείτε την εφαρμογή DoliDroid για κινητά) NbMajMin=Ελάχιστος αριθμός κεφαλαίων χαρακτήρων NbNumMin=Ελάχιστος αριθμός αριθμητικών χαρακτήρων NbSpeMin=Ελάχιστος αριθμός ειδικών χαρακτήρων -NbIteConsecutive=Ελάχιστος αριθμός επανάληψης ίδιων χαρακτήρων +NbIteConsecutive=Μέγιστος αριθμός επανάληψης ίδιων χαρακτήρων NoAmbiCaracAutoGeneration=Μη χρησιμοποιείται διφορούμενους χαρακτήρες ("1","l","i","|","0","O") για αυτόματη δημιουργία -SalariesSetup=Ρύθμιση module μισθών +SalariesSetup=Ρύθμιση ενότητας μισθών SortOrder=Σειρά ταξινόμησης Format=Μορφή -TypePaymentDesc=0: Είδος πληρωμής πελάτη, 1: Τύπος πληρωμής προμηθευτή, 2: Τρόπος πληρωμής τόσο από τους πελάτες όσο και από τους προμηθευτές -IncludePath=Συμπεριλάβετε τη διαδρομή (οριστεί σε μεταβλητή %s) -ExpenseReportsSetup=Ρύθμιση εκθέσεων δαπανών ενότητας +TypePaymentDesc=0: Τύπος πληρωμής πελάτη, 1: Τύπος πληρωμής προμηθευτή, 2: Τύπος πληρωμής τόσο πελατών όσο και προμηθευτών +IncludePath=Συμπερίληψη διαδρομής (που ορίζεται στη μεταβλητή %s) +ExpenseReportsSetup=Ρύθμιση της ενότητας Αναφορές Εξόδων TemplatePDFExpenseReports=Πρότυπα εγγράφων για τη δημιουργία εγγράφου αναφοράς δαπανών -ExpenseReportsRulesSetup=Ρύθμιση εκθέσεων εξόδων για τους module - Κανόνες -ExpenseReportNumberingModules=Μονάδα αρίθμησης αναφορών εξόδων +ExpenseReportsRulesSetup=Ρύθμιση της ενότητας Αναφορές Εξόδων - Κανόνες +ExpenseReportNumberingModules=Ενότητα αρίθμησης εκθέσεων δαπανών NoModueToManageStockIncrease=Δεν έχει ενεργοποιηθεί καμία ενότητα ικανή να διαχειριστεί την αυτόματη αύξηση των αποθεμάτων. Η αύξηση των αποθεμάτων θα γίνεται μόνο με χειροκίνητη εισαγωγή. -YouMayFindNotificationsFeaturesIntoModuleNotification=Μπορείτε να βρείτε επιλογές για ειδοποιήσεις μέσω ηλεκτρονικού ταχυδρομείου ενεργοποιώντας και διαμορφώνοντας την ενότητα "Ειδοποίηση". +YouMayFindNotificationsFeaturesIntoModuleNotification=Μπορείτε να βρείτε επιλογές για ειδοποιήσεις μέσω email ενεργοποιώντας και διαμορφώνοντας την ενότητα "Ειδοποίηση". TemplatesForNotifications=Πρότυπα για ειδοποιήσεις -ListOfNotificationsPerUser=Λίστα αυτόματων ειδοποιήσεων ανά χρήστη * -ListOfNotificationsPerUserOrContact=Κατάλογος πιθανών αυτόματων ειδοποιήσεων (σε επιχειρηματικό συμβάν) διαθέσιμων ανά χρήστη * ή ανά επαφή ** +ListOfNotificationsPerUser=Λίστα αυτόματων ειδοποιήσεων ανά χρήστη* +ListOfNotificationsPerUserOrContact=Λίστα πιθανών αυτόματων ειδοποιήσεων (σε επιχειρηματικό συμβάν) διαθέσιμων ανά χρήστη * ή ανά επαφή ** ListOfFixedNotifications=Λίστα αυτόματων σταθερών ειδοποιήσεων -GoOntoUserCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" ενός χρήστη για να προσθέσετε ή να καταργήσετε ειδοποιήσεις για χρήστες +GoOntoUserCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" ενός χρήστη για να προσθέσετε ή να αφαιρέσετε ειδοποιήσεις για τους χρήστες GoOntoContactCardToAddMore=Μεταβείτε στην καρτέλα "Ειδοποιήσεις" τρίτου μέρους για να προσθέσετε ή να καταργήσετε ειδοποιήσεις για επαφές / διευθύνσεις Threshold=Κατώφλι -BackupDumpWizard=Οδηγός για την δημιουργία του αρχείου σκουπιδιών στη βάση δεδομένων -BackupZipWizard=Οδηγός για να αρχειοθετησετε τον κατάλογο των εγγράφων -SomethingMakeInstallFromWebNotPossible=Δεν είναι δυνατή η εγκατάσταση εξωτερικής μονάδας από τη διεπαφή ιστού για τον ακόλουθο λόγο: +BackupDumpWizard=Οδηγός δημιουργίας του αρχείου αντιγράφου ασφαλείας της βάσης δεδομένων +BackupZipWizard=Οδηγός δημιουργίας αρχείου του κατάλογου των εγγράφων +SomethingMakeInstallFromWebNotPossible=Η εγκατάσταση εξωτερικής ενότητας δεν είναι δυνατή από τη διεπαφή ιστού για τον ακόλουθο λόγο: SomethingMakeInstallFromWebNotPossible2=Για το λόγο αυτό, η διαδικασία αναβάθμισης που περιγράφεται εδώ είναι μια χειρωνακτική διαδικασία που μπορεί να εκτελέσει μόνο ένας προνομιούχος χρήστης. -InstallModuleFromWebHasBeenDisabledByFile=Η εγκατάσταση εξωτερικής μονάδας από εφαρμογή έχει απενεργοποιηθεί από τον διαχειριστή σας. Πρέπει να τον ζητήσετε να καταργήσει το αρχείο %s για να επιτρέψει αυτή τη λειτουργία. -ConfFileMustContainCustom=Η εγκατάσταση ή η δημιουργία μιας εξωτερικής μονάδας από την εφαρμογή πρέπει να αποθηκεύσει τα αρχεία μονάδας στον κατάλογο %s . Για να επεξεργαστείτε αυτόν τον κατάλογο από Dolibarr, πρέπει να ρυθμίσετε το conf / conf.php για να προσθέσετε τις 2 γραμμές οδηγίας:
$ dolibarr_main_url_root_alt = '/ έθιμο';
$ dolibarr_main_document_root_alt = '%s / custom'; -HighlightLinesOnMouseHover=Επισημάνετε τις γραμμές του πινάκου όταν περνάει το ποντίκι -HighlightLinesColor=Επισημάνετε το χρώμα της γραμμής όταν το ποντίκι περάσει (χρησιμοποιήστε το 'ffffff' για να μην επισημανθεί) -HighlightLinesChecked=Επισημάνετε το χρώμα της γραμμής όταν την ελέγξετε (χρησιμοποιήστε το 'ffffff' για να μην επισημανθεί) +InstallModuleFromWebHasBeenDisabledByFile=Η εγκατάσταση εξωτερικής ενότητας από την εφαρμογή έχει απενεργοποιηθεί από τον διαχειριστή σας. Πρέπει να του ζητήσετε να αφαιρέσει το αρχείο %s για να επιτραπεί αυτή η δυνατότητα. +ConfFileMustContainCustom=Κατά την εγκατάσταση ή τη δημιουργία μιας εξωτερικής ενότητας από την εφαρμογή πρέπει να αποθηκεύσετε τα αρχεία της ενότητας στον κατάλογο %s . Για να υποβληθεί σε επεξεργασία αυτού ο κατάλογος από το Dolibarr, πρέπει να ρυθμίσετε το conf/conf.php και να προσθέσετε τις 2 γραμμές οδηγιών:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; +HighlightLinesOnMouseHover=Επισήμανση των γραμμών του πίνακα όταν περνάει ο δρομέας του ποντικιού από πάνω +HighlightLinesColor=Επισήμανση του χρώματος της γραμμής όταν περνάει ο δρομέας του ποντικιού από πάνω (χρησιμοποιήστε 'ffffff' για να μην γίνει επισήμανση) +HighlightLinesChecked=Επισήμανση του χρώματος της γραμμής όταν επιλέγεται (χρησιμοποιήστε 'ffffff' για να μην επισημανθεί) UseBorderOnTable=Εμφάνιση περιγραμμάτων αριστερά-δεξιά στους πίνακες -BtnActionColor=Χρώμα του κουμπιού δράσης -TextBtnActionColor=Χρώμα κειμένου του κουμπιού δράσης +BtnActionColor=Χρώμα του κουμπιού ενέργειας +TextBtnActionColor=Χρώμα κειμένου του κουμπιού ενέργειας TextTitleColor=Χρώμα κειμένου του τίτλου σελίδας -LinkColor=Χρώμα σε συνδέσμους -PressF5AfterChangingThis=Πατήστε CTRL + F5 στο πληκτρολόγιο ή διαγράψτε την προσωρινή μνήμη του προγράμματος περιήγησής σας αφού αλλάξετε αυτήν την τιμή για να την έχετε αποτελεσματική +LinkColor=Χρώμα συνδέσμων +PressF5AfterChangingThis=Πατήστε το συνδυασμό πλήκτρων CTRL+F5 στο πληκτρολόγιο ή διαγράψτε την προσωρινή μνήμη του προγράμματος περιήγησης σας αφού αλλάξετε αυτήν την τιμή για να είναι αποτελεσματική NotSupportedByAllThemes=Θα λειτουργεί με βασικά θέματα, μπορεί να μην υποστηρίζεται από εξωτερικά θέματα BackgroundColor=Χρώμα φόντου TopMenuBackgroundColor=Χρώμα φόντου για το επάνω μενού -TopMenuDisableImages=Απόκρυψη εικόνων στο μενού "Κορυφαία" +TopMenuDisableImages=Εικονίδιο ή Κείμενο στο επάνω μενού LeftMenuBackgroundColor=Χρώμα φόντου για το αριστερό μενού BackgroundTableTitleColor=Χρώμα φόντου για τη γραμμή επικεφαλίδας του πίνακα BackgroundTableTitleTextColor=Χρώμα κειμένου για τη γραμμή τίτλου πίνακα @@ -1946,29 +1946,29 @@ BackgroundTableLineEvenColor=Χρώμα φόντου για τις άρτιες MinimumNoticePeriod=Ελάχιστη περίοδος προειδοποίησης (Η αίτησή σας πρέπει να γίνει πριν από αυτή την καθυστέρηση) NbAddedAutomatically=Αριθμός ημερών που προστίθενται στους μετρητές χρηστών (αυτόματα) κάθε μήνα EnterAnyCode=Αυτό το πεδίο περιέχει μια αναφορά για τον προσδιορισμό της γραμμής. Εισάγετε οποιαδήποτε τιμή της επιλογής σας, αλλά χωρίς ειδικούς χαρακτήρες. -Enter0or1=Εισαγάγετε 0 ή 1 -UnicodeCurrency=Εισαγάγετε εδώ μεταξύ τιράντες, λίστα αριθμού byte που αντιπροσωπεύει το σύμβολο νομίσματος. Για παράδειγμα: για το $, πληκτρολογήστε [36] - για την Βραζιλία, το πραγματικό R $ [82,36] - για €, πληκτρολογήστε [8364] +Enter0or1=Εισαγωγή 0 ή 1 +UnicodeCurrency=Εισαγετε εδώ ανάμεσα σε αγκύλες λίστα με αριθμό byte που αντιπροσωπεύει το σύμβολο νομίσματος. Για παράδειγμα: για $, πληκτρολογήστε [36] - για Βραζιλία real R$ [82,36] - για €, πληκτρολογήστε [8364] ColorFormat=Το χρώμα RGB είναι σε μορφή HEX, π.χ.: FF0000 -PictoHelp=Όνομα εικονιδίου σε μορφή:
- image.png για ένα αρχείο εικόνας στον τρέχοντα κατάλογο θεμάτων
- image.png@module εάν το αρχείο βρίσκεται στον κατάλογο /img/ μιας ενότητας
- fa-xxx για ένα FontAwesome fa-xxx εικονίδιο
- fonwtawesome_xxx_fa_color_size για ένα FontAwesome fa-xxx εικονίδιο (με πρόθεμα, χρώμα και μέγεθος) +PictoHelp=Όνομα εικονιδίου σε μορφή:
- image.png για ένα αρχείο εικόνας στον τρέχοντα κατάλογο θεμάτων
- image.png@module εάν το αρχείο βρίσκεται στον κατάλογο /img/ μιας ενότητας
- fa-xxx για ένα FontAwesome fa-xxx εικονίδιο
- fontawesome_xxx_fa_color_size για ένα FontAwesome fa-xxx εικονίδιο (με πρόθεμα, χρώμα και μέγεθος) PositionIntoComboList=Θέση γραμμής σε σύνθετο πλαίσιο SellTaxRate=Συντελεστής φόρου επί των πωλήσεων -RecuperableOnly=Ναι για ΦΠΑ "Δεν γίνεται αντιληπτό αλλά ανακτήσιμο" αφιερωμένο σε κάποια χώρα στη Γαλλία. Διατηρήστε την τιμή "Όχι" σε όλες τις άλλες περιπτώσεις. -UrlTrackingDesc=Αν ο παροχέας ή η υπηρεσία μεταφορών προσφέρει μια σελίδα ή έναν ιστότοπο για να ελέγξει την κατάσταση των αποστολών σας, μπορείτε να την εισάγετε εδώ. Μπορείτε να χρησιμοποιήσετε το κλειδί {TRACKID} στις παραμέτρους διεύθυνσης URL, ώστε το σύστημα να το αντικαταστήσει με τον αριθμό καταδίωξης που εισήγαγε ο χρήστης στην κάρτα αποστολής. -OpportunityPercent=Όταν δημιουργείτε ένα μόλυβδο, θα ορίσετε ένα εκτιμώμενο ποσό έργου / οδηγού. Σύμφωνα με την κατάσταση του μολύβδου, το ποσό αυτό μπορεί να πολλαπλασιαστεί με αυτό το ποσοστό για να εκτιμηθεί το συνολικό ποσό που μπορεί να δημιουργήσει το σύνολο των πελατών σας. Η τιμή είναι ένα ποσοστό (μεταξύ 0 και 100). -TemplateForElement=Αυτό το πρότυπο αλληλογραφίας σχετίζεται με το είδος αντικειμένου; Ένα πρότυπο email είναι διαθέσιμο μόνο όταν χρησιμοποιείτε το κουμπί "Αποστολή email" από το σχετικό αντικείμενο. +RecuperableOnly=Ναι για τον ΦΠΑ "Not Perceived but Recoverable" αφιερωμένο για κάποιο state στη Γαλλία. Διατηρήστε την τιμή στο "Όχι" σε όλες τις άλλες περιπτώσεις. +UrlTrackingDesc=Εάν ο πάροχος ή η υπηρεσία μεταφοράς προσφέρει μια σελίδα ή έναν ιστότοπο για να ελέγχετε την κατάσταση των αποστολών σας, μπορείτε να την εισάγετε εδώ. Μπορείτε να χρησιμοποιήσετε το κλειδί {TRACKID} στις παραμέτρους της διεύθυνσης URL, ώστε το σύστημα να το αντικαταστήσει με τον αριθμό παρακολούθησης που ο χρήστης εισήγαγε στην κάρτα αποστολής. +OpportunityPercent=Όταν δημιουργήσετε έναν υποψήφιο πελάτη, θα ορίσετε ένα εκτιμώμενο ποσό έργου/δυνητικού πελάτη. Ανάλογα με την κατάσταση του δυνητικού πελάτη, αυτό το ποσό μπορεί να πολλαπλασιαστεί με αυτό το ποσοστό για να αξιολογηθεί το συνολικό ποσό που μπορούν να δημιουργήσουν όλοι οι δυνητικοί πελάτες σας. Η τιμή είναι ένα ποσοστό (μεταξύ 0 και 100). +TemplateForElement=Με ποιο είδος αντικειμένου σχετίζεται αυτό το πρότυπο αλληλογραφίας; Ένα πρότυπο email είναι διαθέσιμο μόνο όταν χρησιμοποιείτε το κουμπί "Αποστολή email" από το σχετικό αντικείμενο. TypeOfTemplate=Τύπος πρότυπου TemplateIsVisibleByOwnerOnly=Το πρότυπο είναι ορατό μόνο για τον κάτοχο VisibleEverywhere=Ορατό παντού -VisibleNowhere=Ορατό από πουθενά -FixTZ=TimeZone fix +VisibleNowhere=Μη ορατό +FixTZ=Διόρθωση ζώνης ώρας FillFixTZOnlyIfRequired=Παράδειγμα: +2 (συμπληρώστε μόνο αν υπάρχει πρόβλημα) -ExpectedChecksum=Αναμενόμενο Checksum -CurrentChecksum=Σύνολο ελέγχου +ExpectedChecksum=Αναμενόμενο άθροισμα ελέγχου +CurrentChecksum=Τρέχον άθροισμα ελέγχου ExpectedSize=Αναμενόμενο μέγεθος CurrentSize=Τρέχον μέγεθος -ForcedConstants=Απαιτούμενες σταθερές τιμές +ForcedConstants=Απαιτούμενες τιμές σταθερών (constants) MailToSendProposal=Προσφορές πελατών -MailToSendOrder=Παραγγελίες πωλήσεων +MailToSendOrder=Εντολές πωλήσεων MailToSendInvoice=Τιμολόγια πελατών MailToSendShipment=Αποστολές MailToSendIntervention=Παρεμβάσεις @@ -1977,22 +1977,22 @@ MailToSendSupplierOrder=Εντολές αγοράς MailToSendSupplierInvoice=Τιμολόγια προμηθευτή MailToSendContract=Συμβόλαια MailToSendReception=Παραλαβές -MailToThirdparty=Πελ./Προμ. +MailToThirdparty=Τρίτα μέρη MailToMember=Μέλη MailToUser=Χρήστες MailToProject=Έργα MailToTicket=Εισιτήρια ByDefaultInList=Εμφάνιση από προεπιλογή στην προβολή λίστας YouUseLastStableVersion=Χρησιμοποιείτε την πιο πρόσφατη σταθερή έκδοση -TitleExampleForMajorRelease=Παράδειγμα μηνύματος που μπορείτε να χρησιμοποιήσετε για να ανακοινώσετε αυτή τη σημαντική έκδοση (διστάσετε να το χρησιμοποιήσετε στις ιστοσελίδες σας) -TitleExampleForMaintenanceRelease=Παράδειγμα μηνύματος που μπορείτε να χρησιμοποιήσετε για να ανακοινώσετε αυτήν την έκδοση συντήρησης (μπορείτε να το χρησιμοποιήσετε στους ιστοτόπους σας) -ExampleOfNewsMessageForMajorRelease=Το Dolibarr ERP & CRM %s είναι διαθέσιμο. Η έκδοση %s είναι μια σημαντική έκδοση με πολλά νέα χαρακτηριστικά τόσο για τους χρήστες όσο και για τους προγραμματιστές. Μπορείτε να το κατεβάσετε από την περιοχή λήψης της διαδικτυακής πύλης https://www.dolibarr.org (υποδιαιρέσεις σταθερών εκδόσεων). Μπορείτε να διαβάσετε το ChangeLog για την πλήρη λίστα αλλαγών. -ExampleOfNewsMessageForMaintenanceRelease=Το Dolibarr ERP & CRM %s είναι διαθέσιμο. Η έκδοση %s είναι μια έκδοση συντήρησης, έτσι περιέχει μόνο διορθώσεις σφαλμάτων. Συνιστούμε σε όλους τους χρήστες να αναβαθμίσουν σε αυτήν την έκδοση. Μια έκδοση συντήρησης δεν εισάγει νέες λειτουργίες ή αλλαγές στη βάση δεδομένων. Μπορείτε να το κατεβάσετε από την περιοχή λήψης της πύλης https://www.dolibarr.org (υποκατάστατο Σταθερές εκδόσεις). Μπορείτε να διαβάσετε το ChangeLog για την πλήρη λίστα των αλλαγών. -MultiPriceRuleDesc=Όταν είναι ενεργοποιημένη η επιλογή "Πολλά επίπεδα τιμών ανά προϊόν / υπηρεσία", μπορείτε να ορίσετε διαφορετικές τιμές (μία ανά επίπεδο τιμής) για κάθε προϊόν. Για να εξοικονομήσετε χρόνο, μπορείτε να εισαγάγετε έναν κανόνα για να υπολογίσετε αυτόματα μια τιμή για κάθε επίπεδο με βάση την τιμή του πρώτου επιπέδου, οπότε θα πρέπει να εισαγάγετε μόνο μια τιμή για το πρώτο επίπεδο για κάθε προϊόν. Αυτή η σελίδα έχει σχεδιαστεί για να σας εξοικονομήσει χρόνο αλλά είναι χρήσιμη μόνο αν οι τιμές σας για κάθε επίπεδο είναι σχετικές με το πρώτο επίπεδο. Μπορείτε να αγνοήσετε αυτή τη σελίδα στις περισσότερες περιπτώσεις. +TitleExampleForMajorRelease=Παράδειγμα μηνύματος που μπορείτε να χρησιμοποιήσετε για να ανακοινώσετε αυτή τη σημαντική έκδοση (μην διστάσετε να το χρησιμοποιήσετε στις ιστοσελίδες σας) +TitleExampleForMaintenanceRelease=Παράδειγμα μηνύματος που μπορείτε να χρησιμοποιήσετε για να ανακοινώσετε αυτήν την έκδοση συντήρησης (μπορείτε να το χρησιμοποιήσετε στις ιστοσελίδες σας) +ExampleOfNewsMessageForMajorRelease=Το Dolibarr ERP & CRM %s είναι διαθέσιμο. Η έκδοση %s είναι μια σημαντική έκδοση με πολλές νέες δυνατότητες τόσο για χρήστες όσο και για προγραμματιστές. Μπορείτε να το κατεβάσετε από την περιοχή λήψης της πύλης https://www.dolibarr.org (στον υποκατάλογο σταθερών εκδόσεων). Μπορείτε να διαβάσετε το ChangeLog για την πλήρη λίστα αλλαγών. +ExampleOfNewsMessageForMaintenanceRelease=Το Dolibarr ERP & CRM %s είναι διαθέσιμο. Η έκδοση %s είναι μια έκδοση συντήρησης, επομένως περιέχει μόνο διορθώσεις σφαλμάτων. Συνιστούμε σε όλους τους χρήστες να κάνουν αναβάθμιση σε αυτήν την έκδοση. Μια έκδοση συντήρησης δεν εισάγει νέες δυνατότητες ή αλλαγές στη βάση δεδομένων. Μπορείτε να το κατεβάσετε από την περιοχή λήψης της πύλης https://www.dolibarr.org (στον υποκατάλογο σταθερών εκδόσεων). Μπορείτε να διαβάσετε το ChangeLog για την πλήρη λίστα αλλαγών. +MultiPriceRuleDesc=Όταν είναι ενεργοποιημένη η επιλογή "Πολλά επίπεδα τιμών ανά προϊόν/υπηρεσία", μπορείτε να ορίσετε διαφορετικές τιμές (μία ανά επίπεδο τιμής) για κάθε προϊόν. Για να εξοικονομήσετε χρόνο, εδώ μπορείτε να εισαγάγετε έναν κανόνα για να υπολογίσετε αυτόματα μια τιμή για κάθε επίπεδο με βάση την τιμή του πρώτου επιπέδου, επομένως θα πρέπει να εισαγάγετε μόνο μια τιμή για το πρώτο επίπεδο για κάθε προϊόν. Αυτή η σελίδα έχει σχεδιαστεί για να σας εξοικονομεί χρόνο, αλλά είναι χρήσιμη μόνο εάν οι τιμές σας για κάθε επίπεδο είναι σε σχέση με το πρώτο επίπεδο. Μπορείτε να αγνοήσετε αυτήν τη σελίδα στις περισσότερες περιπτώσεις. ModelModulesProduct=Πρότυπα για έγγραφα προϊόντων WarehouseModelModules=Πρότυπα για έγγραφα αποθηκών ToGenerateCodeDefineAutomaticRuleFirst=Για να μπορείτε να δημιουργείτε αυτόματα κωδικούς, πρέπει πρώτα να ορίσετε έναν διαχειριστή για τον αυτόματο ορισμό του αριθμού γραμμικού κώδικα. -SeeSubstitutionVars=Δείτε τη σημείωση * για λίστα πιθανών μεταβλητών υποκατάστασης +SeeSubstitutionVars=Δείτε τη σημείωση * για τη λίστα πιθανών μεταβλητών αντικατάστασης SeeChangeLog=Δείτε το αρχείο ChangeLog (μόνο στα αγγλικά) AllPublishers=Όλοι οι εκδότες UnknownPublishers=Άγνωστοι εκδότες @@ -2000,36 +2000,36 @@ AddRemoveTabs=Προσθέστε ή καταργήστε καρτέλες AddDataTables=Προσθήκη πινάκων αντικειμένων AddDictionaries=Προσθέστε πίνακες λεξικών AddData=Προσθέστε δεδομένα αντικειμένων ή λεξικών -AddBoxes=Προσθέστε γραφικά στοιχεία +AddBoxes=Προσθήκη γραφικών στοιχείων AddSheduledJobs=Προσθήκη προγραμματισμένων εργασιών -AddHooks=Προσθέστε γάντζους -AddTriggers=Προσθήκη ενεργοποιήσεων +AddHooks=Προσθήκη hooks +AddTriggers=Προσθήκη triggers AddMenus=Προσθήκη μενού AddPermissions=Προσθήκη δικαιωμάτων -AddExportProfiles=Προσθέστε προφίλ εξαγωγής +AddExportProfiles=Προσθήκη προφίλ εξαγωγής AddImportProfiles=Προσθήκη προφίλ εισαγωγής -AddOtherPagesOrServices=Προσθέστε άλλες σελίδες ή υπηρεσίες -AddModels=Προσθέστε πρότυπα εγγράφου ή αρίθμησης -AddSubstitutions=Προσθέστε υποκαταστάσεις κλειδιών +AddOtherPagesOrServices=Προσθήκη άλλων σελίδων ή υπηρεσίων +AddModels=Προσθήκη πρότυπων εγγράφων ή αρίθμησης +AddSubstitutions=Προσθήκη αντικαταστάσεων κλειδιών DetectionNotPossible=Η ανίχνευση δεν είναι δυνατή -UrlToGetKeyToUseAPIs=Url για να πάρει το διακριτικό για να χρησιμοποιήσει το API (αφού έχει ληφθεί το token, αποθηκεύεται στον πίνακα χρηστών βάσης δεδομένων και πρέπει να παρέχεται σε κάθε κλήση API) +UrlToGetKeyToUseAPIs=Διεύθυνση URL για λήψη token για χρήση API (μετά τη λήψη του token, αυτό αποθηκεύεται στον πίνακα χρηστών της βάσης δεδομένων και πρέπει να παρέχεται σε κάθε κλήση API) ListOfAvailableAPIs=Λίστα διαθέσιμων API -activateModuleDependNotSatisfied=Η ενότητα "%s" εξαρτάται από τη λειτουργική μονάδα "%s", η οποία λείπει, επομένως η ενότητα "%1$s" ενδέχεται να μην λειτουργεί σωστά. Εγκαταστήστε την ενότητα "%2$s" ή απενεργοποιήστε την ενότητα "%1$s" εάν θέλετε να είστε ασφαλείς από οποιαδήποτε έκπληξη +activateModuleDependNotSatisfied=Η ενότητα "%s" εξαρτάται από την ενότητα "%s", η οποία λείπει, επομένως η ενότητα "%1$s" ενδέχεται να μην λειτουργεί σωστά. Εγκαταστήστε την ενότητα "%2$s" ή απενεργοποιήστε την ενότητα "%1$s" για να αποφύγετε ενδεχόμενα προβλήματα CommandIsNotInsideAllowedCommands=Η εντολή που προσπαθείτε να εκτελέσετε δεν βρίσκεται στη λίστα επιτρεπόμενων εντολών που ορίζονται στην παράμετρο $ dolibarr_main_restrict_os_commands στο αρχείο conf.php . -LandingPage=Σελίδα στόχος -SamePriceAlsoForSharedCompanies=Αν χρησιμοποιείτε μια ενότητα πολλαπλών εταιρειών, με την επιλογή "Ενιαία τιμή", η τιμή θα είναι επίσης ίδια για όλες τις εταιρείες, εάν τα προϊόντα μοιράζονται μεταξύ των περιβαλλόντων -ModuleEnabledAdminMustCheckRights=Η μονάδα έχει ενεργοποιηθεί. Οι άδειες για τις ενεργοποιημένες μονάδες δόθηκαν μόνο σε διαχειριστές. Ίσως χρειαστεί να χορηγήσετε δικαιώματα σε άλλους χρήστες ή ομάδες με μη αυτόματο τρόπο, εάν είναι απαραίτητο. -UserHasNoPermissions=Αυτός ο χρήστης δεν έχει οριστεί δικαιώματα +LandingPage=Σελίδα προορισμού +SamePriceAlsoForSharedCompanies=Εάν χρησιμοποιείτε μια μονάδα πολλαπλών εταιρειών, με την επιλογή "Ενιαία τιμή", η τιμή θα είναι επίσης η ίδια για όλες τις εταιρείες εάν τα προϊόντα μοιράζονται μεταξύ περιβαλλόντων +ModuleEnabledAdminMustCheckRights=Η ενότητα έχει ενεργοποιηθεί. Τα δικαιώματα για ενεργοποιημένες ενότητες δόθηκαν μόνο σε διαχειριστές. Ίσως χρειαστεί να εκχωρήσετε δικαιώματα σε άλλους χρήστες ή ομάδες χειροκίνητα, εάν το κρίνετε απαραίτητο. +UserHasNoPermissions=Αυτός ο χρήστης δεν έχει καθορισμένα δικαιώματα TypeCdr=Χρησιμοποιήστε το "Κανένας" εάν η ημερομηνία πληρωμής είναι η ημερομηνία του τιμολογίου συν ένα δέλτα σε ημέρες (δέλτα είναι πεδίο "%s")
Χρησιμοποιήστε το "Στο τέλος του μήνα", εάν, μετά το δέλτα, η ημερομηνία πρέπει να αυξηθεί για να φτάσει στο τέλος του μήνα (+ ένα προαιρετικό "%s" σε ημέρες)
Χρησιμοποιήστε το "Τρέχουσα / Επόμενη" για να έχετε την ημερομηνία πληρωμής ως το πρώτο Nth του μήνα μετά το δέλτα (το delta είναι πεδίο "%s", το N αποθηκεύεται στο πεδίο "%s") -BaseCurrency=Νόμισμα αναφοράς της εταιρείας (πηγαίνετε σε ρύθμιση της εταιρείας για να το αλλάξετε αυτό) +BaseCurrency=Νόμισμα αναφοράς της εταιρείας (πηγαίνετε στη ρύθμιση της εταιρείας για να το αλλάξετε) WarningNoteModuleInvoiceForFrenchLaw=Αυτή η ενότητα %s συμμορφώνεται με τους γαλλικούς νόμους (Loi Finance 2016). WarningNoteModulePOSForFrenchLaw=Αυτή η ενότητα %s συμμορφώνεται με τους γαλλικούς νόμους (Loi Finance 2016), επειδή η ενότητα Μη αναστρέψιμες καταγραφές ενεργοποιείται αυτόματα. -WarningInstallationMayBecomeNotCompliantWithLaw=Προσπαθείτε να εγκαταστήσετε την ενότητα %s που είναι μια εξωτερική μονάδα. Η ενεργοποίηση μιας εξωτερικής μονάδας σημαίνει ότι εμπιστεύεστε τον εκδότη της συγκεκριμένης ενότητας και ότι είστε βέβαιοι ότι η ενότητα αυτή δεν επηρεάζει δυσμενώς τη συμπεριφορά της εφαρμογής σας και συμμορφώνεται με τους νόμους της χώρας σας (%s). Εάν η ενότητα εισάγει ένα παράνομο χαρακτηριστικό, είστε υπεύθυνοι για τη χρήση παράνομου λογισμικού. -MAIN_PDF_MARGIN_LEFT=Αριστερό περιθώριο σε PDF +WarningInstallationMayBecomeNotCompliantWithLaw=Προσπαθείτε να εγκαταστήσετε την εξωτερική ενότητα%s . Η ενεργοποίηση μιας εξωτερικής ενότητας σημαίνει ότι εμπιστεύεστε τον εκδότη της συγκεκριμένης ενότητας και ότι είστε βέβαιοι ότι η ενότητα αυτή δεν επηρεάζει δυσμενώς τη συμπεριφορά της εφαρμογής σας και συμμορφώνεται με τους νόμους της χώρας σας (%s). Εάν η ενότητα εισάγει ένα παράνομο χαρακτηριστικό, είστε υπεύθυνοι για τη χρήση αυτού του παράνομου λογισμικού. +MAIN_PDF_MARGIN_LEFT=Αριστερό περιθώριο στο PDF MAIN_PDF_MARGIN_RIGHT=Δεξί περιθώριο στο PDF -MAIN_PDF_MARGIN_TOP=Κορυφή περιθώριο σε PDF -MAIN_PDF_MARGIN_BOTTOM=Κάτω περιθώριο σε PDF -MAIN_DOCUMENTS_LOGO_HEIGHT=Ύψος για το λογότυπο σε PDF +MAIN_PDF_MARGIN_TOP=Πάνω περιθώριο στο PDF +MAIN_PDF_MARGIN_BOTTOM=Κάτω περιθώριο στο PDF +MAIN_DOCUMENTS_LOGO_HEIGHT=Ύψος λογότυπου στο PDF MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Προσθήκη στήλης για εικόνα στις γραμμές προσφορών MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Το πλάτος της στήλης εάν προστεθεί μια εικόνα σε γραμμές MAIN_PDF_NO_SENDER_FRAME=Απόκρυψη περιγραμμάτων στο πλαίσιο διεύθυνσης αποστολέα @@ -2040,138 +2040,142 @@ PROPOSAL_PDF_HIDE_PAYMENTTERM=Απόκρυψη όρων πληρωμής PROPOSAL_PDF_HIDE_PAYMENTMODE=Απόκρυψη τρόπου πληρωμής MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Προσθήκη ηλεκτρονικής υπογραφής σε PDF NothingToSetup=Δεν απαιτείται συγκεκριμένη ρύθμιση για αυτήν την ενότητα. -SetToYesIfGroupIsComputationOfOtherGroups=Ορίστε αυτό το ναι αν αυτή η ομάδα είναι ένας υπολογισμός άλλων ομάδων -EnterCalculationRuleIfPreviousFieldIsYes=Εισαγάγετε τον κανόνα υπολογισμού εάν το προηγούμενο πεδίο είχε οριστεί σε Ναι.
Για παράδειγμα:
CODEGRP1+CODEGRP2 -SeveralLangugeVariatFound=Πολλές γλωσσικές παραλλαγές βρέθηκαν -RemoveSpecialChars=Καταργήστε τους ειδικούς χαρακτήρες +SetToYesIfGroupIsComputationOfOtherGroups=Ορίστε αυτό σε ναι εάν αυτή η ομάδα είναι ένας υπολογισμός άλλων ομάδων +EnterCalculationRuleIfPreviousFieldIsYes=Εισάγετε κανόνα υπολογισμού εάν το προηγούμενο πεδίο είχε οριστεί σε Ναι.
Για παράδειγμα:
CODEGRP1+CODEGRP2 +SeveralLangugeVariatFound=Βρέθηκαν αρκετές παραλλαγές γλώσσας +RemoveSpecialChars=Κατάργηση ειδικών χαρακτήρων COMPANY_AQUARIUM_CLEAN_REGEX=Φίλτρο Regex για καθαρισμό τιμής (COMPANY_AQUARIUM_CLEAN_REGEX) COMPANY_DIGITARIA_CLEAN_REGEX=Φίλτρο Regex για καθαρισμό τιμής (COMPANY_DIGITARIA_CLEAN_REGEX) -COMPANY_DIGITARIA_UNIQUE_CODE=Διπλότυπο δεν επιτρέπεται -GDPRContact=Υπεύθυνος Προστασίας Δεδομένων (DPO, Προστασία δεδομένων ή επικοινωνία GDPR) +COMPANY_DIGITARIA_UNIQUE_CODE=Δεν επιτρέπεται το διπλότυπο +GDPRContact=Υπεύθυνος Προστασίας Δεδομένων (DPO, Προστασία Προσωπικών Δεδομένων ή επαφή GDPR) GDPRContactDesc=Εάν αποθηκεύετε προσωπικά δεδομένα στο Πληροφοριακό σας Σύστημα, μπορείτε να ορίσετε την επαφή που είναι υπεύθυνη για τον Γενικό Κανονισμό Προστασίας Δεδομένων εδώ -HelpOnTooltip=Βοήθεια κειμένου για να εμφανιστεί στο tooltip -HelpOnTooltipDesc=Βάλτε εδώ ένα κείμενο ή ένα πλήκτρο μετάφρασης για να εμφανιστεί το κείμενο σε μια επεξήγηση όταν το πεδίο εμφανίζεται σε μια φόρμα +HelpOnTooltip=Κείμενο βοήθειας προς εμφάνιση στο αναδυόμενο πλαίσιο επεξήγησης(tooltip) +HelpOnTooltipDesc=Τοποθετήστε κείμενο ή ένα κλειδί μετάφρασης εδώ για να εμφανίζεται στο αναδυόμενο πλαίσιο επεξήγησης(tooltip) όταν αυτό το πεδίο εμφανίζεται σε μια φόρμα YouCanDeleteFileOnServerWith=Μπορείτε να διαγράψετε αυτό το αρχείο στο διακομιστή με γραμμή εντολών:
%s -ChartLoaded=Λογαριασμός που έχει φορτωθεί +ChartLoaded=Φορτώθηκε το λογιστικό σχέδιο SocialNetworkSetup=Ρύθμιση της ενότητας Κοινωνικά δίκτυα EnableFeatureFor=Ενεργοποίηση χαρακτηριστικών για %s -VATIsUsedIsOff=Σημείωση: Η επιλογή χρήσης Φόρου Πωλήσεων ή ΦΠΑ έχει οριστεί σε Off (Απενεργοποίηση) στο μενού %s - %s, οπότε ο φόρος πωλήσεων ή ο Vat που θα χρησιμοποιηθούν θα είναι πάντα 0 για τις πωλήσεις. -SwapSenderAndRecipientOnPDF=Αντικαταστήστε τη θέση διευθύνσεων αποστολέα και παραλήπτη σε έγγραφα PDF +VATIsUsedIsOff=Σημείωση: Η επιλογή χρήσης Φόρου Πωλήσεων ή Φ.Π.Α. έχει οριστεί σε Off (Απενεργοποίηση) στο μενού %s - %s, οπότε ο Φόρος Πωλήσεων ή ο Φ.Π.Α. που θα χρησιμοποιηθούν θα είναι πάντα 0 για τις πωλήσεις. +SwapSenderAndRecipientOnPDF=Εναλλαγή θέσης διεύθυνσης αποστολέα και παραλήπτη σε έγγραφα PDF FeatureSupportedOnTextFieldsOnly=Προειδοποίηση, η δυνατότητα υποστηρίζεται μόνο σε πεδία κειμένου και συνδυαστικές λίστες. Επίσης, πρέπει να οριστεί μια παράμετρος URL action=create ή action=edit Ή το όνομα της σελίδας πρέπει να τελειώνει με 'new.php' για να ενεργοποιηθεί αυτή η δυνατότητα. -EmailCollector=Συλλέκτης ηλεκτρονικού ταχυδρομείου -EmailCollectorDescription=Προσθέστε μια προγραμματισμένη εργασία και μια σελίδα ρύθμισης για να σαρώσετε τακτικά παράθυρα email (χρησιμοποιώντας το πρωτόκολλο IMAP) και να καταγράψετε τα μηνύματα που έχετε λάβει στην αίτησή σας, στο σωστό μέρος ή / και να δημιουργήσετε αυτόματα τις εγγραφές (όπως οι οδηγοί). -NewEmailCollector=Νέος συλλέκτης ηλεκτρονικού ταχυδρομείου -EMailHost=Υποδοχή διακομιστή IMAP ηλεκτρονικού ταχυδρομείου +EmailCollector=Συλλέκτης email +EmailCollectors=Συλλέκτες email +EmailCollectorDescription=Προσθέστε μια προγραμματισμένη εργασία και μια σελίδα ρύθμισης για να σαρώνετε τακτικά τα email (χρησιμοποιώντας το πρωτόκολλο IMAP) και να καταγράφετε τα email που λαμβάνονται στην εφαρμογή σας, στο σωστό μέρος ή/και να δημιουργείτε ορισμένες εγγραφές αυτόματα (όπως δυνητικούς πελάτες). +NewEmailCollector=Νέος Συλλέκτης Email +EMailHost=Κεντρικός υπολογιστής διακομιστή IMAP email MailboxSourceDirectory=Κατάλογος προέλευσης γραμματοκιβωτίου MailboxTargetDirectory=Κατάλογος προορισμού γραμματοκιβωτίου -EmailcollectorOperations=Λειτουργίες από συλλέκτη -EmailcollectorOperationsDesc=Οι λειτουργίες εκτελούνται από πάνω προς τα κάτω -MaxEmailCollectPerCollect=Μέγιστος αριθμός μηνυμάτων ηλεκτρονικού ταχυδρομείου που συλλέγονται ανά συλλογή +EmailcollectorOperations=Λειτουργίες συλλέκτη +EmailcollectorOperationsDesc=Οι λειτουργίες εκτελούνται με σειρά από πάνω προς τα κάτω +MaxEmailCollectPerCollect=Μέγιστος αριθμός μηνυμάτων ηλεκτρονικού ταχυδρομείου που συλλέγονται CollectNow=Συλλέξτε τώρα -ConfirmCloneEmailCollector=Είστε βέβαιοι ότι θέλετε να κλωνοποιήσετε τον συλλέκτη email %s; -DateLastCollectResult=Ημερομηνία τελευταίας προσπάθειας είσπραξης -DateLastcollectResultOk=Ημερομηνία τελευταίας επιτυχούς είσπραξης +ConfirmCloneEmailCollector=Είστε βέβαιοι ότι θέλετε να αντιγράψετε τον συλλέκτη email %s; +DateLastCollectResult=Ημερομηνία τελευταίας προσπάθειας συλλογής +DateLastcollectResultOk=Ημερομηνία τελευταίας επιτυχούς συλλογής LastResult=Τελευταίο αποτέλεσμα -EmailCollectorHideMailHeaders=Μην συμπεριλάβετε το περιεχόμενο της κεφαλίδας email στο αποθηκευμένο περιεχόμενο των συλλεγόμενων e-mail -EmailCollectorHideMailHeadersHelp=Όταν είναι ενεργοποιημένο, οι κεφαλίδες e-mail δεν προστίθενται στο τέλος του περιεχομένου email που αποθηκεύεται ως συμβάντα. -EmailCollectorConfirmCollectTitle=Το email συλλέγει επιβεβαίωση +EmailCollectorHideMailHeaders=Μην συμπεριλάβετε το περιεχόμενο της κεφαλίδας του email στο αποθηκευμένο περιεχόμενο των συλλεγόμενων e-mail +EmailCollectorHideMailHeadersHelp=Όταν είναι ενεργοποιημένο, οι κεφαλίδες e-mail δεν προστίθενται στο τέλος του περιεχομένου email που αποθηκεύεται ως συμβάν ατζέντας. +EmailCollectorConfirmCollectTitle=Επιβεβαίωση συλλογής email EmailCollectorConfirmCollect=Θέλετε να εκτελέσετε αυτόν τον συλλέκτη τώρα; -EmailCollectorExampleToCollectTicketRequestsDesc=Συλλέξτε email που ταιριάζουν με ορισμένους κανόνες και δημιουργήστε αυτόματα ένα εισιτήριο (η ενότητα εισιτηρίων πρέπει να είναι ενεργοποιημένη) με τις πληροφορίες email. Μπορείτε να χρησιμοποιήσετε αυτόν τον συλλέκτη εάν παρέχετε κάποια υποστήριξη μέσω email, έτσι το αίτημα εισιτηρίου σας θα δημιουργηθεί αυτόματα. Ενεργοποιήστε επίσης τη Συλλογή_Απαντήσεων για να συλλέξετε απαντήσεις του πελάτη σας απευθείας στην προβολή εισιτηρίων (πρέπει να απαντήσετε μεσα από το Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Παράδειγμα συλλογής του αιτήματος εισιτηρίου (μόνο το πρώτο μήνυμα) +EmailCollectorExampleToCollectTicketRequestsDesc=Συλλέξτε email που ταιριάζουν με ορισμένους κανόνες και δημιουργήστε αυτόματα ένα ticket (η ενότητα tickets πρέπει να είναι ενεργοποιημένη) με τις πληροφορίες email. Μπορείτε να χρησιμοποιήσετε αυτόν τον συλλέκτη εάν παρέχετε κάποια υποστήριξη μέσω email, έτσι το ticket του αιτήματος σας θα δημιουργηθεί αυτόματα. Ενεργοποιήστε επίσης τη Συλλογή_Απαντήσεων για να συλλέξετε απαντήσεις του πελάτη σας απευθείας στην προβολή ticket (πρέπει να απαντήσετε μέσα από το Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Παράδειγμα συλλογής του ticket αιτήματος (μόνο το πρώτο μήνυμα) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Σαρώστε τον κατάλογο "Απεσταλμένα" του γραμματοκιβωτίου σας για να βρείτε email που στάλθηκαν ως απάντηση άλλου email απευθείας από το λογισμικό email σας και όχι από το Dolibarr. Εάν βρεθεί ένα τέτοιο μήνυμα ηλεκτρονικού ταχυδρομείου, το συμβάν απάντησης καταγράφεται στο Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Παράδειγμα συλλογής απαντήσεων ηλεκτρονικού ταχυδρομείου που αποστέλλονται από εξωτερικό λογισμικό ηλεκτρονικού ταχυδρομείου -EmailCollectorExampleToCollectDolibarrAnswersDesc=Συλλέξτε όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου που είναι απάντηση σε ένα email που στάλθηκε από την εφαρμογή σας. Ένα συμβάν (Η ενοτητα Ατζέντα πρέπει να είναι ενεργοποιημένη) με την απάντηση μέσω email θα καταγραφεί στο καλό μέρος. Για παράδειγμα, εάν στείλετε μια εμπορική πρόταση, παραγγελία, τιμολόγιο ή μήνυμα για ένα εισιτήριο μέσω email από την εφαρμογή και ο πελάτης απαντήσει στο email σας, το σύστημα θα καταλάβει αυτόματα την απάντηση και θα την προσθέσει στο ERP σας. +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Παράδειγμα συλλογής απαντήσεων email που στάλθηκαν από εξωτερικό λογισμικό ηλεκτρονικού ταχυδρομείου +EmailCollectorExampleToCollectDolibarrAnswersDesc=Συλλέξτε όλα τα μηνύματα ηλεκτρονικού ταχυδρομείου που είναι απάντηση σε ένα email που στάλθηκε από την εφαρμογη σας. Ένα συμβάν (Η ενότητα ατζέντα πρέπει να είναι ενεργοποιημένη) με την απάντηση μέσω email θα καταγραφεί. Για παράδειγμα, εάν στείλετε μια εμπορική προσφορά, παραγγελία, τιμολόγιο ή μήνυμα για ένα ticket μέσω email από την εφαρμογή και ο παραλήπτης απαντήσει στο email σας, το σύστημα θα καταλάβει αυτόματα την απάντηση και θα την προσθέσει στο ERP σας. EmailCollectorExampleToCollectDolibarrAnswers=Παράδειγμα συλλογής όλων των εισερχόμενων μηνυμάτων ως απαντήσεων σε μηνύματα που αποστέλλονται από το Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Συλλέξτε email που ταιριάζουν με ορισμένους κανόνες και δημιουργήστε αυτόματα έναν υποψήφιο πελάτη (η ενότητα Έργο πρέπει να είναι ενεργοποιημένη) με τις πληροφορίες email. Μπορείτε να χρησιμοποιήσετε αυτόν τον συλλέκτη εάν θέλετε να ακολουθήσετε το προβάδισμά σας χρησιμοποιώντας τη μονάδα Project (1 υποψήφιος πελάτης = 1 έργο), έτσι ώστε οι υποψήφιοι πελάτες σας να δημιουργούνται αυτόματα. Εάν ο συλλέκτης Collect_Responses είναι επίσης ενεργοποιημένος, όταν στέλνετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου από τους δυνητικούς πελάτες, τις προτάσεις σας ή οποιοδήποτε άλλο αντικείμενο, ενδέχεται επίσης να δείτε απαντήσεις των πελατών ή των συνεργατών σας απευθείας στην εφαρμογή.
Σημείωση: Με αυτό το αρχικό παράδειγμα, δημιουργείται ο τίτλος του υποψήφιου πελάτη συμπεριλαμβανομένου του email. Εάν το τρίτο μέρος δεν μπορεί να βρεθεί στη βάση δεδομένων (νέος πελάτης), ο υποψήφιος πελάτης θα προσαρτηθεί στο τρίτο μέρος με αναγνωριστικό 1. +EmailCollectorExampleToCollectLeadsDesc=Συλλέξτε email που ταιριάζουν με ορισμένους κανόνες και δημιουργήστε αυτόματα έναν υποψήφιο πελάτη (η ενότητα Έργο πρέπει να είναι ενεργοποιημένη) με τις πληροφορίες email. Μπορείτε να χρησιμοποιήσετε αυτόν τον συλλέκτη εάν θέλετε να ακολουθήσετε την προοπτική αυτή χρησιμοποιώντας την ενότητα Έργο (1 υποψήφιος πελάτης = 1 έργο), έτσι ώστε οι υποψήφιοι πελάτες σας να δημιουργούνται αυτόματα. Εάν ο συλλέκτης Collect_Responses είναι επίσης ενεργοποιημένος, όταν στέλνετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου από τους δυνητικούς πελάτες, τις προτάσεις σας ή οποιοδήποτε άλλο αντικείμενο, ενδέχεται επίσης να δείτε απαντήσεις των πελατών ή των συνεργατών σας απευθείας στην εφαρμογή.
Σημείωση: Με αυτό το αρχικό παράδειγμα, δημιουργείται ο τίτλος του υποψήφιου πελάτη συμπεριλαμβανομένου του email. Εάν το τρίτο μέρος δεν μπορεί να βρεθεί στη βάση δεδομένων (νέος πελάτης), ο υποψήφιος πελάτης θα προσαρτηθεί στο τρίτο μέρος με αναγνωριστικό 1. EmailCollectorExampleToCollectLeads=Παράδειγμα συλλογής προοπτικών -EmailCollectorExampleToCollectJobCandidaturesDesc=Συλλέξτε μηνύματα ηλεκτρονικού ταχυδρομείου που αφορούν προσφορές εργασίας (Πρέπει να είναι ενεργοποιημένη η πρόσληψη ενότητας). Μπορείτε να ολοκληρώσετε αυτόν τον συλλέκτη εάν θέλετε να δημιουργήσετε αυτόματα μια υποψηφιότητα για ένα αίτημα εργασίας. Σημείωση: Με αυτό το αρχικό παράδειγμα, δημιουργείται ο τίτλος της υποψηφιότητας συμπεριλαμβανομένου του email. +EmailCollectorExampleToCollectJobCandidaturesDesc=Συλλέξτε μηνύματα ηλεκτρονικού ταχυδρομείου που αιτήσεις πρόσληψης (Πρέπει να είναι ενεργοποιημένη η ενότητα πρόσληψη ). Μπορείτε να συμπληρώσετε αυτόν τον συλλέκτη εάν θέλετε να δημιουργήσετε αυτόματα μια υποψηφιότητα για ένα αίτημα εργασίας. Σημείωση: Με αυτό το αρχικό παράδειγμα, δημιουργείται ο τίτλος της υποψηφιότητας συμπεριλαμβανομένου του email. EmailCollectorExampleToCollectJobCandidatures=Παράδειγμα συλλογής υποψηφιοτήτων για θέσεις εργασίας που ελήφθησαν μέσω e-mail -NoNewEmailToProcess=Δεν υπάρχει νέο μήνυμα ηλεκτρονικού ταχυδρομείου (φίλτρα που ταιριάζουν) για επεξεργασία -NothingProcessed=Τίποτα δεν έγινε -XEmailsDoneYActionsDone=%s τα κατάλληλα μηνύματα ηλεκτρονικού ταχυδρομείου, τα emails %s υποβλήθηκαν σε επιτυχή επεξεργασία (για %s η εγγραφή / οι ενέργειες έγιναν) -RecordEvent=Καταγραφή ενός συμβάντος στην ατζέντα (με τον τύπο Email αποστολή ή λήψη) +NoNewEmailToProcess=Δεν υπάρχει νέο email (αντίστοιχα φίλτρα) για επεξεργασία +NothingProcessed=Δεν έγινε τίποτα +XEmailsDoneYActionsDone=%s email που πληρούν τα κριτήρια, %s email επιτυχώς επεξεργασμένα (για %s εγγραφή/ενέργειες που έχουν ολοκληρωθεί) +RecordEvent=Καταγραφή ενός συμβάντος στην ατζέντα (με τον τύπο Email απεσταλμένα ή εισερχόμενα) CreateLeadAndThirdParty=Δημιουργήστε έναν υποψήφιο πελάτη (και τρίτο μέρος εάν είναι απαραίτητο) -CreateTicketAndThirdParty=Δημιουργήστε ένα εισιτήριο (συνδεδεμένο με ενα τρίτο μέρος, εάν το τρίτο μέρος φορτώθηκε από προηγούμενη λειτουργία ή μαντεύτηκε από ένα πρόγραμμα παρακολούθησης στην κεφαλίδα email, χωρίς τρίτο μέρος διαφορετικά) -CodeLastResult=Τελευταίος κωδικός αποτελέσματος -NbOfEmailsInInbox=Αριθμός μηνυμάτων ηλεκτρονικού ταχυδρομείου στον κατάλογο προέλευσης +CreateTicketAndThirdParty=Δημιουργήστε ένα ticket (συνδεδεμένο με ένα τρίτο μέρος, εάν το τρίτο μέρος φορτώθηκε από προηγούμενη λειτουργία ή μαντεύτηκε από ένα πρόγραμμα παρακολούθησης στην κεφαλίδα email, διαφορετικά χωρίς τρίτο μέρος) +CodeLastResult=Κωδικός Τελευταίου αποτελέσματος +NbOfEmailsInInbox=Αριθμός email στον κατάλογο προέλευσης LoadThirdPartyFromName=Φόρτωση αναζήτησης τρίτου μέρους στο %s (μόνο φόρτωση) LoadThirdPartyFromNameOrCreate=Φόρτωση αναζήτησης τρίτου μέρους στο %s (δημιουργία αν δεν βρεθεί) AttachJoinedDocumentsToObject=Αποθηκεύστε τα συνημμένα αρχεία σε έγγραφα αντικειμένων εάν βρεθεί μια αναφορά ενός αντικειμένου στο θέμα του email. WithDolTrackingID=Μήνυμα από μια συνομιλία που ξεκίνησε από ένα πρώτο email που στάλθηκε από το Dolibarr WithoutDolTrackingID=Μήνυμα από μια συνομιλία που ξεκίνησε από ένα πρώτο email που ΔΕΝ εστάλη από το Dolibarr -WithDolTrackingIDInMsgId=Μήνυμα που στάλθηκε από το Dolibarr +WithDolTrackingIDInMsgId=Το μήνυμα στάλθηκε από το Dolibarr WithoutDolTrackingIDInMsgId=Το μήνυμα ΔΕΝ εστάλη από το Dolibarr CreateCandidature=Δημιουργία αίτησης εργασίας FormatZip=Zip MainMenuCode=Κωδικός εισόδου μενού (mainmenu) ECMAutoTree=Εμφάνιση αυτόματης δομής ECM OperationParamDesc=Καθορίστε τους κανόνες που θα χρησιμοποιηθούν για την εξαγωγή ή τον ορισμό τιμών.
Παράδειγμα για λειτουργίες που χρειάζονται εξαγωγή ονόματος από το θέμα του email:
name=EXTRACT:SUBJECT:Μήνυμα από την εταιρεία ([^\n] *)
Παράδειγμα για λειτουργίες που δημιουργούν αντικείμενα:
objproperty1 = SET: η τιμή για σύνολο
objproperty2 = SET: μια τιμή περιλαμβανομένης αξία των __objproperty1__
objproperty3 = SETIFEMPTY: αξία χρησιμοποιείται αν το objproperty3 δεν έχει ήδη οριστεί
objproperty4 = EXTRACT: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:M [^\\s]*)

Χρησιμοποιήστε ένα ; char ως διαχωριστικό για εξαγωγή ή ρύθμιση πολλών ιδιοτήτων. -OpeningHours=Ωρες λειτουργίας -OpeningHoursDesc=Πληκτρολογήστε εδώ τις κανονικές ώρες λειτουργίας της εταιρείας σας. +OpeningHours=Ώρες λειτουργίας +OpeningHoursDesc=Εισάγετε εδώ το κανονικό ωράριο λειτουργίας της εταιρείας σας. ResourceSetup=Διαμόρφωση της ενότητας πόρων UseSearchToSelectResource=Χρησιμοποιήστε μια φόρμα αναζήτησης για να επιλέξετε έναν πόρο (και όχι μια αναπτυσσόμενη λίστα). -DisabledResourceLinkUser=Απενεργοποιήστε τη λειτουργία για να συνδέσετε μια πηγή στους χρήστες -DisabledResourceLinkContact=Απενεργοποιήστε τη δυνατότητα σύνδεσης ενός πόρου με τις επαφές -EnableResourceUsedInEventCheck=Να απαγορεύεται η χρήση του ίδιου πόρου την ίδια στιγμή στην ατζέντα -ConfirmUnactivation=Επιβεβαιώστε την επαναφορά της μονάδας +DisabledResourceLinkUser=Απενεργοποίηση της δυνατότητας σύνδεσης ενός πόρου με χρήστες +DisabledResourceLinkContact=Απενεργοποίηση της δυνατότητας σύνδεσης ενός πόρου με τις επαφές +EnableResourceUsedInEventCheck=Απαγόρευση της χρήσης του ίδιου πόρου την ίδια στιγμή στην ατζέντα +ConfirmUnactivation=Επιβεβαιώστε την επαναφορά της ενότητας OnMobileOnly=Σε μικρή οθόνη (smartphone) μόνο DisableProspectCustomerType=Απενεργοποιήστε τον τύπο τρίτου μέρους "Προοπτική + Πελάτης" (άρα το τρίτο μέρος πρέπει να είναι "Προοπτική" ή "Πελάτης", αλλά δεν μπορεί να είναι και τα δύο) -MAIN_OPTIMIZEFORTEXTBROWSER=Απλοποιήστε τη διεπαφή για τυφλό άτομο -MAIN_OPTIMIZEFORTEXTBROWSERDesc=Ενεργοποιήστε αυτήν την επιλογή εάν είστε τυφλός ή χρησιμοποιείτε την εφαρμογή από ένα πρόγραμμα περιήγησης κειμένου όπως Lynx ή Links. -MAIN_OPTIMIZEFORCOLORBLIND=Αλλάξτε το χρώμα της διεπαφής για τον τυφλό χρώμα -MAIN_OPTIMIZEFORCOLORBLINDDesc=Ενεργοποιήστε αυτή την επιλογή αν είστε τυφλός, σε μερικές περιπτώσεις το περιβάλλον εργασίας θα αλλάξει τη ρύθμιση χρώματος για να αυξηθεί η αντίθεση. +MAIN_OPTIMIZEFORTEXTBROWSER=Απλοποιήση της διεπαφής για άτομα με προβλήματα όρασης +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Ενεργοποιήστε αυτήν την επιλογή εάν έχετε προβλήματα όρασης ή εάν χρησιμοποιείτε την εφαρμογή από ένα πρόγραμμα περιήγησης κειμένου όπως το Lynx ή το Links. +MAIN_OPTIMIZEFORCOLORBLIND=Αλλαγή χρώματος διεπαφής για άτομα με αχρωματοψία +MAIN_OPTIMIZEFORCOLORBLINDDesc=Ενεργοποιήστε αυτήν την επιλογή εάν έχετε αχρωματοψία, σε ορισμένες περιπτώσεις η διεπαφή θα αλλάξει τη ρύθμιση χρώματος για να αυξήσει την αντίθεση. Protanopia=Πρωτανοπία -Deuteranopes=Deuteranopes -Tritanopes=Tritanopes -ThisValueCanOverwrittenOnUserLevel=Αυτή η τιμή μπορεί να αντικατασταθεί από κάθε χρήστη από τη σελίδα χρήστη - η καρτέλα '%s' -DefaultCustomerType=Προεπιλεγμένος τύπος τρίτου μέρους για τη φόρμα δημιουργίας νέου πελάτη -ABankAccountMustBeDefinedOnPaymentModeSetup=Σημείωση: Ο τραπεζικός λογαριασμός πρέπει να οριστεί στη λειτουργική μονάδα κάθε τρόπου πληρωμής (Paypal, Stripe, ...) για να λειτουργήσει αυτό το χαρακτηριστικό. -RootCategoryForProductsToSell=Κατηγορία ρίζας των προϊόντων που πωλούνται -RootCategoryForProductsToSellDesc=Εάν ορίζεται, μόνο τα προϊόντα εντός αυτής της κατηγορίας ή τα παιδιά αυτής της κατηγορίας θα είναι διαθέσιμα στο σημείο πώλησης +Deuteranopes=Δευτερανωπία +Tritanopes=Τριτανωπία +ThisValueCanOverwrittenOnUserLevel=Αυτή η τιμή μπορεί να αντικατασταθεί από κάθε χρήστη από τη σελίδα του - καρτέλα '%s' +DefaultCustomerType=Προεπιλεγμένος τύπος τρίτου μέρους για τη φόρμα δημιουργίας "Νέου πελάτη" +ABankAccountMustBeDefinedOnPaymentModeSetup=Σημείωση: Ο τραπεζικός λογαριασμός πρέπει να οριστεί στη λειτουργική ενότητα κάθε τρόπου πληρωμής (Paypal, Stripe, ...) για να λειτουργήσει αυτό το χαρακτηριστικό. +RootCategoryForProductsToSell=Κατηγορία ρίζας προϊόντων προς πώληση +RootCategoryForProductsToSellDesc=Εάν οριστεί, μόνο προϊόντα εντός αυτής της κατηγορίας ή θυγατρικά αυτής της κατηγορίας θα είναι διαθέσιμα στο Σημείο Πώλησης DebugBar=Γραμμή εντοπισμού σφαλμάτων -DebugBarDesc=Γραμμή εργαλείων που συνοδεύεται από πολλά εργαλεία για την απλούστευση του εντοπισμού σφαλμάτων -DebugBarSetup=Ρύθμιση DebugBar +DebugBarDesc=Γραμμή εργαλείων με πολλά εργαλεία για την διευκόλυνση σας στον εντοπισμό σφαλμάτων +DebugBarSetup=Ρύθμιση γραμμής εντοπισμού σφαλμάτων GeneralOptions=Γενικές επιλογές -LogsLinesNumber=Αριθμός γραμμών που θα εμφανίζονται στην καρτέλα "Αρχεία καταγραφής" +LogsLinesNumber=Αριθμός γραμμών για εμφάνιση στην καρτέλα αρχείων καταγραφής UseDebugBar=Χρησιμοποιήστε τη γραμμή εντοπισμού σφαλμάτων -DEBUGBAR_LOGS_LINES_NUMBER=Αριθμός τελευταίων γραμμών καταγραφής που διατηρούνται στην κονσόλα -WarningValueHigherSlowsDramaticalyOutput=Προειδοποίηση, οι υψηλότερες τιμές επιβραδύνουν την δραματική παραγωγή -ModuleActivated=Η ενότητα %s ενεργοποιείται και επιβραδύνει τη διεπαφή -ModuleActivatedWithTooHighLogLevel=Η μονάδα %s ενεργοποιήθηκε με πολύ υψηλό επίπεδο καταγραφής (προσπαθήστε να χρησιμοποιήσετε χαμηλότερο επίπεδο για καλύτερες επιδόσεις και ασφάλεια) +DEBUGBAR_LOGS_LINES_NUMBER=Αριθμός των τελευταίων γραμμών καταγραφής προς διατήρηση στην κονσόλα +WarningValueHigherSlowsDramaticalyOutput=Προειδοποίηση, οι υψηλότερες τιμές επιβραδύνουν δραματικά την έξοδο +ModuleActivated=Η ενότητα %s ειναι ενεργοποιημένη και επιβραδύνει τη διεπαφή +ModuleActivatedWithTooHighLogLevel=Η ενότητα %s ενεργοποιήθηκε με πολύ υψηλό επίπεδο καταγραφής (προσπαθήστε να χρησιμοποιήσετε χαμηλότερο επίπεδο για καλύτερες επιδόσεις και ασφάλεια) ModuleSyslogActivatedButLevelNotTooVerbose=Η ενότητα %s είναι ενεργοποιημένη και το επίπεδο καταγραφής (%s) είναι σωστό (όχι πολύ αναλυτικό) IfYouAreOnAProductionSetThis=Εάν βρίσκεστε σε περιβάλλον παραγωγής, θα πρέπει να ορίσετε αυτήν την ιδιότητα σε %s. AntivirusEnabledOnUpload=Ενεργοποίηση προστασίας από ιούς σε μεταφορτωμένα αρχεία SomeFilesOrDirInRootAreWritable=Ορισμένα αρχεία ή κατάλογοι δεν βρίσκονται σε λειτουργία μόνο για ανάγνωση -EXPORTS_SHARE_MODELS=Τα μοντέλα εξαγωγής είναι κοινά με όλους -ExportSetup=Ρύθμιση εξαγωγής της ενότητας -ImportSetup=Ρύθμιση εισαγωγής λειτουργικής μονάδας +EXPORTS_SHARE_MODELS=Τα μοντέλα εξαγωγής είναι κοινά σε όλους +ExportSetup=Ρύθμιση ενότητας Εξαγωγή +ImportSetup=Ρύθμιση ενότητας Εισαγωγή InstanceUniqueID=Μοναδικό αναγνωριστικό της παρουσίας SmallerThan=Μικρότερη από -LargerThan=Μεγαλύτερο από +LargerThan=Μεγαλύτερη από IfTrackingIDFoundEventWillBeLinked=Λάβετε υπόψη ότι εάν ένα αναγνωριστικό παρακολούθησης ενός αντικειμένου βρεθεί στο ηλεκτρονικό ταχυδρομείο ή εάν το μήνυμα ηλεκτρονικού ταχυδρομείου είναι απάντηση σε ένα email που έχει ήδη παραληφθεί και συνδέεται με ένα αντικείμενο, το συμβάν που δημιουργήθηκε θα συνδεθεί αυτόματα με το γνωστό σχετικό αντικείμενο. -WithGMailYouCanCreateADedicatedPassword=Με ένα λογαριασμό GMail, εάν έχετε ενεργοποιήσει την επικύρωση 2 βημάτων, σας συνιστούμε να δημιουργήσετε έναν ειδικό δευτερεύοντα κωδικό πρόσβασης για την εφαρμογή αντί να χρησιμοποιήσετε τη δική σας passsword από https://myaccount.google.com/. +WithGMailYouCanCreateADedicatedPassword=Με ένα λογαριασμό GMail, εάν έχετε ενεργοποιήσει την επικύρωση 2 βημάτων, σας συνιστούμε να δημιουργήσετε έναν ειδικό δευτερεύοντα κωδικό πρόσβασης για την εφαρμογή από https://myaccount.google.com/, αντί να χρησιμοποιήσετε τον υπάρχοντα κωδικό πρόσβασης EmailCollectorTargetDir=Μπορεί να είναι επιθυμητή συμπεριφορά να μετακινήσετε το email σε άλλη ετικέτα/κατάλογο όταν έχει επιτυχώς υποβληθεί σε επεξεργασία. Ορίστε το όνομα του καταλόγου εδώ για να χρησιμοποιήσετε αυτήν τη δυνατότητα (ΜΗΝ χρησιμοποιείτε ειδικούς χαρακτήρες στο όνομα). Σημειώστε ότι πρέπει επίσης να χρησιμοποιήσετε έναν λογαριασμό σύνδεσης με δικαιώματα ανάγνωσης/εγγραφής. EmailCollectorLoadThirdPartyHelp=Μπορείτε να χρησιμοποιήσετε αυτήν την ενέργεια για να χρησιμοποιήσετε το περιεχόμενο των email για να βρείτε και να φορτώσετε ένα υπάρχον τρίτο μέρος στη βάση δεδομένων σας. Το τρίτο μέρος που βρέθηκε (ή δημιουργήθηκε) θα χρησιμοποιηθεί για τις ακόλουθες ενέργειες που το χρειάζονται.
Για παράδειγμα, εάν θέλετε να δημιουργήσετε ένα τρίτο μέρος με ένα όνομα που έχει εξαχθεί από μια συμβολοσειρά «Όνομα: όνομα προς εύρεση» που υπάρχει στο σώμα, χρησιμοποιήστε το email του αποστολέα ως email, μπορείτε να ορίσετε το πεδίο παραμέτρου ως εξής:
'email= HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
EndPointFor=Σημείο τερματισμού για %s: %s -DeleteEmailCollector=Διαγραφή συλλέκτη ηλεκτρονικού ταχυδρομείου -ConfirmDeleteEmailCollector=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το συλλέκτη email; -RecipientEmailsWillBeReplacedWithThisValue=Τα μηνύματα ηλεκτρονικού ταχυδρομείου παραλήπτη θα αντικατασταθούν πάντα με αυτήν την τιμή +DeleteEmailCollector=Διαγραφή συλλέκτη email +ConfirmDeleteEmailCollector=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον συλλέκτη email; +RecipientEmailsWillBeReplacedWithThisValue=Τα email των παραληπτών θα αντικαθίστανται πάντα με αυτήν την τιμή AtLeastOneDefaultBankAccountMandatory=Πρέπει να οριστεί τουλάχιστον ένας προεπιλεγμένος τραπεζικός λογαριασμός -RESTRICT_ON_IP=Να επιτρέπεται η πρόσβαση στο API μόνο σε συγκεκριμένες διευθύνσεις IP πελάτη (δεν επιτρέπεται η χρήση μπαλαντέρ, αφήστε κενό διάστημα μεταξύ των τιμών). Κενή τιμή σημαίνει ότι κάθε πελάτης μπορεί να έχει πρόσβαση. +RESTRICT_ON_IP=Να επιτρέπεται η πρόσβαση στην API μόνο σε συγκεκριμένες διευθύνσεις IP πελάτη (δεν επιτρέπεται η χρήση μπαλαντέρ, αφήστε κενό διάστημα μεταξύ των τιμών). Κενή τιμή σημαίνει ότι κάθε πελάτης μπορεί να έχει πρόσβαση. IPListExample=127.0.0.1 192.168.0.2 [::1] -BaseOnSabeDavVersion=Με βάση τη βιβλιοθήκη SabreDAV έκδοση +BaseOnSabeDavVersion=Βασισμένο στην έκδοση της βιβλιοθήκης SabreDAV NotAPublicIp=Δεν είναι δημόσια IP -MakeAnonymousPing=Δημιουργήστε ένα ανώνυμο Ping '+1' στο διακομιστή βάσης Dolibarr (που γίνεται 1 φορά μόνο μετά την εγκατάσταση) για να επιτρέψετε στο ίδρυμα να μετρήσει τον αριθμό της εγκατάστασης Dolibarr. -FeatureNotAvailableWithReceptionModule=Η λειτουργία δεν είναι διαθέσιμη όταν είναι ενεργοποιημένη η λειτουργία Υποδοχή +MakeAnonymousPing=Πραγματοποιήστε ένα ανώνυμο Ping '+1' στον διακομιστή του Dolibarr (εκτελείται 1 φορά μόνο μετά την εγκατάσταση) για να επιτρέψετε στον οργανισμό να μετρήσει τον αριθμό των εγκαταστάσεων Dolibarr. +FeatureNotAvailableWithReceptionModule=Η δυνατότητα δεν είναι διαθέσιμη όταν η ενότητα Παραλαβή είναι ενεργοποιημένη EmailTemplate=Πρότυπο email -EMailsWillHaveMessageID=Τα μηνύματα ηλεκτρονικού ταχυδρομείου θα έχουν μια ετικέτα "Αναφορές" που ταιριάζουν με αυτή τη σύνταξη +EMailsWillHaveMessageID=Τα μηνύματα ηλεκτρονικού ταχυδρομείου θα έχουν μια ετικέτα "References" που ταιριάζει με αυτήν τη σύνταξη PDF_SHOW_PROJECT=Εμφάνιση έργου στο έγγραφο ShowProjectLabel=Ετικέτα έργου -PDF_USE_ALSO_LANGUAGE_CODE=Εάν θέλετε να αντιγράψετε ορισμένα κείμενα στο PDF σας σε 2 διαφορετικές γλώσσες στο ίδιο δημιουργημένο PDF, πρέπει να ορίσετε εδώ αυτήν τη δεύτερη γλώσσα, ώστε το παραγόμενο PDF να περιέχει 2 διαφορετικές γλώσσες στην ίδια σελίδα, αυτή που επιλέγεται κατά τη δημιουργία PDF και αυτή ( μόνο λίγα πρότυπα PDF το υποστηρίζουν αυτό). Κρατήστε κενό για 1 γλώσσα ανά PDF. -PDF_USE_A=Δημιουργήστε έγγραφα PDF με μορφή PDF/A αντί για προεπιλεγμένη μορφή PDF +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Συμπεριλάβετε διακριτικό τίτλο στην ονομασία τρίτου μέρους +THIRDPARTY_ALIAS=Όνομα τρίτου μέρους - Διακριτικός τίτλος τρίτου μέρους +ALIAS_THIRDPARTY=Διακριτικός τίτλος τρίτου μέρους - Όνομα τρίτου μέρους +PDF_USE_ALSO_LANGUAGE_CODE=Εάν θέλετε να έχετε κείμενα σε 2 διαφορετικές γλώσσες στο ίδιο PDF, πρέπει να ορίσετε εδώ αυτή τη δεύτερη γλώσσα ώστε το PDF που θα δημιουργηθεί να περιέχει 2 διαφορετικές γλώσσες στην ίδια σελίδα ( μόνο λίγα πρότυπα PDF το υποστηρίζουν). Διατηρήστε το κενό για 1 γλώσσα ανά PDF. +PDF_USE_A=Δημιουργήστε έγγραφα PDF με μορφή PDF/A αντί για την προεπιλεγμένη μορφή PDF FafaIconSocialNetworksDesc=Εισαγάγετε εδώ τον κωδικό ενός εικονιδίου FontAwesome. Εάν δεν γνωρίζετε τι είναι το FontAwesome, μπορείτε να χρησιμοποιήσετε τη γενική τιμή fa-address-book. -RssNote=Σημείωση: Κάθε ορισμός τροφοδοσίας RSS παρέχει ένα widget που πρέπει να ενεργοποιήσετε για να το έχετε διαθέσιμο στον πίνακα ελέγχου -JumpToBoxes=Μετάβαση στη ρύθμιση -> Widgets +RssNote=Σημείωση: Κάθε ορισμός ροής RSS παρέχει ένα γραφικό στοιχείο που πρέπει να ενεργοποιήσετε για να το έχετε διαθέσιμο στον πίνακα εργαλείων +JumpToBoxes=Μετάβαση σε Ρυθμίσεις -> Γραφικά στοιχεία MeasuringUnitTypeDesc=Χρησιμοποιήστε εδώ μια τιμή όπως "μέγεθος", "επιφάνεια", "όγκος", "βάρος", "χρόνος" MeasuringScaleDesc=Η κλίμακα είναι ο αριθμός των θέσεων που πρέπει να μετακινήσετε το δεκαδικό μέρος ώστε να ταιριάζει με την προεπιλεγμένη μονάδα αναφοράς. Για τον τύπο μονάδας "time", είναι ο αριθμός των δευτερολέπτων. Οι τιμές μεταξύ 80 και 99 είναι δεσμευμένες τιμές. TemplateAdded=Προστέθηκε πρότυπο @@ -2186,48 +2190,48 @@ ModuleActivatedMayExposeInformation=Αυτή η επέκταση PHP ενδέχ ModuleActivatedDoNotUseInProduction=Έχει ενεργοποιηθεί μια ενότητα σχεδιασμένη για την ανάπτυξη. Μην την ενεργοποιείτε σε περιβάλλον παραγωγής. CombinationsSeparator=Διαχωριστικός χαρακτήρας για συνδυασμούς προϊόντων SeeLinkToOnlineDocumentation=Για παραδείγματα δείτε τον σύνδεσμο προς την ηλεκτρονική τεκμηρίωση στο επάνω μενού -SHOW_SUBPRODUCT_REF_IN_PDF=Εάν χρησιμοποιείται η δυνατότητα "%s" της μονάδας %s , εμφανίστε τις λεπτομέρειες των υποπροϊόντων ενός κιτ σε PDF. +SHOW_SUBPRODUCT_REF_IN_PDF=Εάν χρησιμοποιείται η δυνατότητα "%s" της ενότητας %s , εμφανίστε τις λεπτομέρειες των υποπροϊόντων ενός κιτ σε PDF. AskThisIDToYourBank=Επικοινωνήστε με την τράπεζά σας για να λάβετε αυτό το αναγνωριστικό -AdvancedModeOnly=Η άδεια είναι διαθέσιμη μόνο στη λειτουργία σύνθετης άδειας -ConfFileIsReadableOrWritableByAnyUsers=Το αρχείο conf είναι αναγνώσιμο ή εγγράψιμο από οποιονδήποτε χρήστη. Δώστε άδεια μόνο σε χρήστη και ομάδα του διακομιστή web. +AdvancedModeOnly=Η άδεια είναι διαθέσιμη μόνο στη λειτουργία για προχωρημένους +ConfFileIsReadableOrWritableByAnyUsers=Το αρχείο conf είναι αναγνώσιμο ή εγγράψιμο από οποιονδήποτε χρήστη. Δώστε άδεια μόνο σε χρήστη και ομάδα του διακομιστή web. MailToSendEventOrganization=Οργάνωση Εκδηλώσεων -MailToPartnership=Συνεργάτης +MailToPartnership=Συνεργάτη AGENDA_EVENT_DEFAULT_STATUS=Προεπιλεγμένη κατάσταση συμβάντος κατά τη δημιουργία ενός συμβάντος από τη φόρμα YouShouldDisablePHPFunctions=Θα πρέπει να απενεργοποιήσετε τις λειτουργίες της PHP -IfCLINotRequiredYouShouldDisablePHPFunctions=Θα πρέπει να απενεργοποιήσετε τις λειτουργίες της PHP, εκτός εάν χρειάζεται να εκτελέσετε εντολές συστήματος σε προσαρμοσμένο κώδικα +IfCLINotRequiredYouShouldDisablePHPFunctions=Θα πρέπει να απενεργοποιήσετε τις λειτουργίες της PHP, εκτός εάν χρειάζεται να εκτελέσετε εντολές συστήματος με προσαρμοσμένο κώδικα PHPFunctionsRequiredForCLI=Για σκοπούς (όπως προγραμματισμένη δημιουργία αντιγράφων ασφαλείας εργασιών ή εκτέλεση προγράμματος antiivurs), πρέπει να διατηρήσετε τις λειτουργίες της PHP NoWritableFilesFoundIntoRootDir=Δεν βρέθηκαν εγγράψιμα αρχεία ή κατάλογοι των κοινών προγραμμάτων στον ριζικό σας κατάλογο (Καλό) RecommendedValueIs=Συνιστάται: %s Recommended=Προτεινόμενη NotRecommended=Δεν προτείνεται ARestrictedPath=Κάποια περιορισμένη διαδρομή -CheckForModuleUpdate=Ελέγξτε για ενημερώσεις εξωτερικών μονάδων -CheckForModuleUpdateHelp=Αυτή η ενέργεια θα συνδεθεί με τους επεξεργαστές εξωτερικών λειτουργικών μονάδων για να ελέγξει εάν είναι διαθέσιμη μια νέα έκδοση. +CheckForModuleUpdate=Ελέγξτε για ενημερώσεις εξωτερικών ενοτήτων +CheckForModuleUpdateHelp=Αυτή η ενέργεια θα συνδεθεί με τους επεξεργαστές εξωτερικών ενοτήτων για να ελέγξει εάν είναι διαθέσιμη μια νέα έκδοση. ModuleUpdateAvailable=Υπάρχει διαθέσιμη ενημέρωση -NoExternalModuleWithUpdate=Δεν βρέθηκαν ενημερώσεις για εξωτερικές μονάδες +NoExternalModuleWithUpdate=Δεν βρέθηκαν ενημερώσεις για εξωτερικές ενότητες SwaggerDescriptionFile=Αρχείο περιγραφής Swagger API (για χρήση με redoc για παράδειγμα) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Ενεργοποιήσατε το ξεπερασμένο πλέον WS API. Αντ' αυτού πρέπει να χρησιμοποιήσετε το REST API RandomlySelectedIfSeveral=Τυχαία επιλεγμένη αν είναι διαθέσιμες αρκετές φωτογραφίες DatabasePasswordObfuscated=Ο κωδικός πρόσβασης βάσης δεδομένων είναι ασαφής στο αρχείο conf DatabasePasswordNotObfuscated=Ο κωδικός πρόσβασης της βάσης δεδομένων ΔΕΝ είναι ασαφής στο αρχείο conf -APIsAreNotEnabled=Οι λειτουργικές μονάδες API δεν είναι ενεργοποιημένες +APIsAreNotEnabled=Οι ενότητες API δεν είναι ενεργοποιημένες YouShouldSetThisToOff=Θα πρέπει να το ρυθμίσετε στο 0 ή off InstallAndUpgradeLockedBy=Η εγκατάσταση και οι αναβαθμίσεις είναι κλειδωμένες από το αρχείο %s OldImplementation=Παλαιότερη υλοποίηση PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Εάν είναι ενεργοποιημένες ορισμένες ενότητες ηλεκτρονικής πληρωμής (Paypal, Stripe, ...), προσθέστε έναν σύνδεσμο στο PDF για να πραγματοποιηθεί η ηλεκτρονική πληρωμή -DashboardDisableGlobal=Απενεργοποιήστε καθολικά όλα τα εικονίδια των ανοιχτών αντικειμένων -BoxstatsDisableGlobal=Απενεργοποιήστε πλήρως τα στατιστικά στοιχεία πλαισίου +DashboardDisableGlobal=Καθολική απενεργοποίηση όλων των εικονιδίων των ανοιχτών αντικειμένων +BoxstatsDisableGlobal=Πλήρης απενεργοποίηση των στατιστικών στοιχείων πλαισίου DashboardDisableBlocks=Εικονίδια ανοιχτών αντικειμένων (για επεξεργασία ή καθυστερημένα) στον κύριο πίνακα εργαλείων -DashboardDisableBlockAgenda=Απενεργοποιήστε το εικονίδιο για την ατζέντα -DashboardDisableBlockProject=Απενεργοποιήστε το εικονίδιο για έργα -DashboardDisableBlockCustomer=Απενεργοποιήστε το εικονίδιο για πελάτες -DashboardDisableBlockSupplier=Απενεργοποιήστε το εικονίδιο για προμηθευτές -DashboardDisableBlockContract=Απενεργοποιήστε το εικονίδιο για συμβόλαια -DashboardDisableBlockTicket=Απενεργοποιήστε το εικονίδιο για εισιτήρια -DashboardDisableBlockBank=Απενεργοποιήστε το εικονίδιο για τράπεζες -DashboardDisableBlockAdherent=Απενεργοποιήστε το εικονίδιο για συνδρομές -DashboardDisableBlockExpenseReport=Απενεργοποιήστε το εικονίδιο για αναφορές εξόδων -DashboardDisableBlockHoliday=Απενεργοποιήστε το εικονίδιο για άδειες +DashboardDisableBlockAgenda=Απενεργοποίηση του εικονιδίου ατζέντας +DashboardDisableBlockProject=Απενεργοποίηση του εικονίδιου για έργα +DashboardDisableBlockCustomer=Απενεργοποίηση του εικονιδίου για πελάτες +DashboardDisableBlockSupplier=Απενεργοποίηση του εικονιδίου για προμηθευτές +DashboardDisableBlockContract=Απενεργοποίηση του εικονιδίου για συμβόλαια +DashboardDisableBlockTicket=Απενεργοποίηση του εικονιδίου για tickets +DashboardDisableBlockBank=Απενεργοποίηση του εικονιδίου για τράπεζες +DashboardDisableBlockAdherent=Απενεργοποίηση του εικονιδίου για συνδρομές +DashboardDisableBlockExpenseReport=Απενεργοποίηση του εικονιδίου για αναφορές εξόδων +DashboardDisableBlockHoliday=Απενεργοποίηση του εικονιδίου για άδειες EnabledCondition=Προϋπόθεση να είναι ενεργοποιημένο το πεδίο (αν δεν είναι ενεργοποιημένο, η ορατότητα θα είναι πάντα απενεργοποιημένη) IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Εάν θέλετε να χρησιμοποιήσετε δεύτερο φόρο, πρέπει να ενεργοποιήσετε και τον πρώτο φόρο επί των πωλήσεων IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Εάν θέλετε να χρησιμοποιήσετε τρίτο φόρο, πρέπει να ενεργοποιήσετε και τον πρώτο φόρο επί των πωλήσεων @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Πρότυπο για μια επαγγελματική InventorySetup= Ρύθμιση αποθέματος ExportUseLowMemoryMode=Χρησιμοποιήστε low memory mode ExportUseLowMemoryModeHelp=Χρησιμοποιήστε low memory mode για να εκτελέσετε το exec του dump (η συμπίεση γίνεται μέσω ενός pipe αντί στη μνήμη PHP). Αυτή η μέθοδος δεν επιτρέπει τον έλεγχο ολοκλήρωσης του αρχείου και δεν θα αναφερθεί μήνυμα σφάλματος εάν αποτύχει. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Διεπαφή για αποστολή σε μια διεύθυνση URL ενεργειών του Dolibarr +WebhookSetup = Ρύθμιση webhook +Settings = Ρυθμίσεις +WebhookSetupPage = Σελίδα ρύθμισης Webhook ShowQuickAddLink=Εμφάνιση ενός κουμπιού για γρήγορη προσθήκη ενός στοιχείου στο επάνω δεξιά μενού + HashForPing=Hash που χρησιμοποιείται για ping ReadOnlyMode=Σε λειτουργία "Μόνο για ανάγνωση". DEBUGBAR_USE_LOG_FILE=Χρησιμοποιήστε το αρχείο dolibarr.log για να παγιδεύσετε αρχεία καταγραφής UsingLogFileShowAllRecordOfSubrequestButIsSlower=Χρησιμοποιήστε το αρχείο dolibarr.log για να παγιδεύσετε τα αρχεία καταγραφής αντί για τη σύλληψη ζωντανής μνήμης. Επιτρέπει τη σύλληψη όλων των αρχείων καταγραφής αντί μόνο του αρχείου καταγραφής της τρέχουσας διαδικασίας (συμπεριλαμβανομένου αυτού των σελίδων υποαιτημάτων ajax), αλλά θα κάνει την παρουσία σας πολύ πολύ αργή. Δεν προτείνεται. FixedOrPercent=Σταθερό (χρησιμοποιήστε λέξη-κλειδί "σταθερό") ή ποσοστό (χρησιμοποιήστε λέξη-κλειδί "ποσοστό") DefaultOpportunityStatus=Προεπιλεγμένη κατάσταση ευκαιρίας (πρώτη κατάσταση όταν δημιουργείται υποψήφιος πελάτης) + IconAndText=Εικονίδιο και κείμενο TextOnly=Μόνο Κείμενο IconOnlyAllTextsOnHover=Μόνο εικονίδιο - Όλα τα κείμενα εμφανίζονται κάτω από το εικονίδιο όταν μετακινείτε το ποντίκι πάνω από το μενού. @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Μόνο εικονίδιο - Το κείμενο του ε IconOnly=Μόνο εικονίδιο - Κείμενο μόνο στο αναδυόμενο πλαίσιο επεξήγησης INVOICE_ADD_ZATCA_QR_CODE=Εμφάνιση του κωδικού QR ZATCA στα τιμολόγια INVOICE_ADD_ZATCA_QR_CODEMore=Ορισμένες αραβικές χώρες χρειάζονται αυτόν τον κωδικό QR στα τιμολόγιά τους +INVOICE_ADD_SWISS_QR_CODE=Εμφάνιση του ελβετικού κωδικού QR-Bill στα τιμολόγια UrlSocialNetworksDesc=Σύνδεσμος URL του κοινωνικού δικτύου. Χρησιμοποιήστε το {socialid} για το τμήμα της μεταβλητής που περιέχει το αναγνωριστικό του κοινωνικού δικτύου. +IfThisCategoryIsChildOfAnother=Αν αυτή η κατηγορία είναι θυγατρική μιας άλλης +NoName=Χωρίς Όνομα +CIDLookupURL=Η ενότητα φέρνει μια διεύθυνση URL που μπορεί να χρησιμοποιηθεί από ένα εξωτερικό εργαλείο για τη λήψη του ονόματος ενός τρίτου μέρους ή μιας επαφής από τον αριθμό τηλεφώνου του. Η διεύθυνση URL προς χρήση είναι: diff --git a/htdocs/langs/el_GR/agenda.lang b/htdocs/langs/el_GR/agenda.lang index f24b7153050..4f901fa2a2f 100644 --- a/htdocs/langs/el_GR/agenda.lang +++ b/htdocs/langs/el_GR/agenda.lang @@ -1,27 +1,27 @@ # Dolibarr language file - Source file is en_US - agenda IdAgenda=Αναγνωριστικό συμβάντος Actions=Ενέργειες -Agenda=Ημερολόγιο -TMenuAgenda=Ημερολόγιο -Agendas=Ημερολόγια +Agenda=Ατζέντα +TMenuAgenda=Ατζέντα +Agendas=Ατζέντες LocalAgenda=Προεπιλεγμένο ημερολόγιο -ActionsOwnedBy=Το γεγονός ανήκει -ActionsOwnedByShort=Ιδιοκτήτης -AffectedTo=Ανάθεση σε -Event=Εκδήλωση -Events=Ενέργειες -EventsNb=Αριθμός γεγονότων -ListOfActions=Λίστα γεγονότων +ActionsOwnedBy=Ενέργεια χρήστη +ActionsOwnedByShort=Χρήστης +AffectedTo=Ανατεθειμένο σε +Event=Συμβάν +Events=Συμβάντα +EventsNb=Αριθμός ενεργειών +ListOfActions=Λίστα ενεργειών EventReports=Αναφορές συμβάντων Location=Τοποθεσία -ToUserOfGroup=Αντιστοιχισμένο συμβάν σε οποιονδήποτε χρήστη στην ομάδα -EventOnFullDay=Ολοήμερο Γεγονός +ToUserOfGroup=Συμβάν που ανατέθηκε σε χρήστη της ομάδας +EventOnFullDay=Ολοήμερο συμβάν MenuToDoActions=Όλες οι ημιτελής ενέργειες -MenuDoneActions=Όλες οι ολοκληρ. ενέργειες -MenuToDoMyActions=Ημιτελής ενέργειες +MenuDoneActions=Όλες οι ολοκληρωμένες ενέργειες +MenuToDoMyActions=Ημιτελείς ενέργειες MenuDoneMyActions=Ολοκληρωμένες ενέργειες ListOfEvents=Λίστα συμβάντων (προεπιλεγμένο ημερολόγιο) -ActionsAskedBy=Ενέργειες που καταχωρήθηκαν από +ActionsAskedBy=Ενέργειες που ανατέθηκαν από ActionsToDoBy=Ενέργειες που ανατέθηκαν σε ActionsDoneBy=Ενέργειες που ολοκληρώθηκαν από ActionAssignedTo=Ενέργεια ανατεθειμένη σε @@ -31,11 +31,11 @@ ViewWeek=Προβολή εβδομάδας ViewPerUser=Προβολή ανά χρήστη ViewPerType=Προβολή ανά τύπο AutoActions= Αυτόματη συμπλήρωση ημερολογίου -AgendaAutoActionDesc= Εδώ μπορείτε να ορίσετε τα γεγονότα που θέλετε να δημιουργήσει αυτόματα το Dolibarr στην Ατζέντα. Αν δεν υπάρχει τίποτα, θα συμπεριληφθούν μόνο οι μη αυτόματες ενέργειες στα αρχεία καταγραφής και θα εμφανίζονται στην Ατζέντα. Η αυτόματη παρακολούθηση επιχειρηματικών ενεργειών που πραγματοποιούνται σε αντικείμενα (επικύρωση, αλλαγή κατάστασης) δεν θα αποθηκευτεί. -AgendaSetupOtherDesc= Αυτή η σελίδα παρέχει επιλογές που επιτρέπουν την εξαγωγή των συμβάντων Dolibarr σε ένα εξωτερικό ημερολόγιο (Thunderbird, Google Calendar κ.λπ.) -AgendaExtSitesDesc=Αυτή η σελίδα σας επιτρέπει να ρυθμίσετε εξωτερικά ημερολόγια. -ActionsEvents=Γεγονότα για τα οποία θα δημιουργήσουν εγγραφή στο ημερολόγιο, αυτόματα -EventRemindersByEmailNotEnabled=Οι υπενθυμίσεις συμβάντων μέσω email δεν ενεργοποιήθηκαν στη ρύθμιση της μονάδας %s. +AgendaAutoActionDesc= Εδώ μπορείτε να ορίσετε συμβάντα που θέλετε να δημιουργεί αυτόματα το Dolibarr στην Ατζέντα. Εάν δεν έχει επιλεγεί τίποτα, μόνο οι μη αυτόματες ενέργειες θα περιλαμβάνονται στα αρχεία καταγραφής και θα εμφανίζονται στην Ατζέντα. Η αυτόματη παρακολούθηση των επιχειρηματικών ενεργειών που γίνονται σε αντικείμενα (επικύρωση, αλλαγή κατάστασης) δεν θα αποθηκευτεί. +AgendaSetupOtherDesc= Αυτή η σελίδα παρέχει επιλογές που επιτρέπουν την εξαγωγή των συμβάντων σας στο Dolibarr σε ένα εξωτερικό ημερολόγιο (Thunderbird, Google Calendar κ.λπ.) +AgendaExtSitesDesc=Αυτή η σελίδα σας επιτρέπει να ρυθμίσετε τον συγχρονισμό και την εμφάνιση εξωτερικών ημερολόγιων στην ατζέντα του Dolibarr. +ActionsEvents=Συμβάντα που θα καταγράφουν αυτόματα στην Ατζέντα +EventRemindersByEmailNotEnabled=Οι υπενθυμίσεις συμβάντων μέσω email δεν ενεργοποιήθηκαν στη ρύθμιση της ενότητας %s. ##### Agenda event labels ##### NewCompanyToDolibarr=Το τρίτο μέρος %s δημιουργήθηκε COMPANY_MODIFYInDolibarr=Το τρίτο μέρος %s τροποποιήθηκε @@ -44,48 +44,48 @@ ContractValidatedInDolibarr=Η σύμβαση %s επικυρώθηκε CONTRACT_DELETEInDolibarr=Η σύμβαση %s διαγράφηκε PropalClosedSignedInDolibarr=Η προσφορά %s υπεγράφη PropalClosedRefusedInDolibarr=Η πρόσφορα %s απορρίφθηκε -PropalValidatedInDolibarr=Η πρόταση %s επικυρώθηκε +PropalValidatedInDolibarr=Η προσφορά %s επικυρώθηκε PropalBackToDraftInDolibarr=Επιστροφή της προσφοράς %s σε κατάσταση προσχεδίου PropalClassifiedBilledInDolibarr=Η προσφορά %s ταξινομήθηκε ως τιμολογημένη InvoiceValidatedInDolibarr=Το τιμολόγιο %s επικυρώθηκε -InvoiceValidatedInDolibarrFromPos=Το τιμολόγιο επικυρώθηκε από το POS -InvoiceBackToDraftInDolibarr=Τιμολόγιο %s θα επιστρέψει στην κατάσταση του σχεδίου -InvoiceDeleteDolibarr=Τιμολόγιο %s διαγράφεται +InvoiceValidatedInDolibarrFromPos=Το τιμολόγιο %s επικυρώθηκε από το POS +InvoiceBackToDraftInDolibarr=Επιστροφή του τιμολογίου %s σε κατάσταση προσχεδίου +InvoiceDeleteDolibarr=Το τιμολόγιο %s διαγράφηκε InvoicePaidInDolibarr=Το τιμολόγιο %s άλλαξε σε πληρωμένο InvoiceCanceledInDolibarr=Το τιμολόγιο %s ακυρώθηκε MemberValidatedInDolibarr=Το μέλος %s επικυρώθηκε MemberModifiedInDolibarr=Το μέλος %s τροποποιήθηκε -MemberResiliatedInDolibarr=Το μέλος %s τερματίστηκε +MemberResiliatedInDolibarr=Το μέλος %s διαγράφηκε MemberDeletedInDolibarr=Το μέλος %s διαγράφηκε MemberSubscriptionAddedInDolibarr=Προστέθηκε συνδρομή %s για το μέλος %s MemberSubscriptionModifiedInDolibarr=Η συνδρομή %s για το μέλος %s τροποποιήθηκε MemberSubscriptionDeletedInDolibarr=Η συνδρομή %s για το μέλος %s διαγράφηκε ShipmentValidatedInDolibarr=Η αποστολή %s επικυρώθηκε ShipmentClassifyClosedInDolibarr=Η αποστολή %s ταξινομήθηκε ως τιμολογημένη -ShipmentUnClassifyCloseddInDolibarr=Η αποστολή %s ταξινομήθηκε εκ νέου -ShipmentBackToDraftInDolibarr=Η αποστολή %s επιστρέφει στην κατάσταση του σχεδίου +ShipmentUnClassifyCloseddInDolibarr=Η αποστολή %s ταξινομήθηκε ως ανοικτή ξανά +ShipmentBackToDraftInDolibarr=Επιστροφή της αποστολης %s σε κατάσταση προσχεδίου ShipmentDeletedInDolibarr=Η αποστολή %s διαγράφηκε ShipmentCanceledInDolibarr=Η αποστολή %s ακυρώθηκε -ReceptionValidatedInDolibarr=Η λήψη %s επικυρώθηκε +ReceptionValidatedInDolibarr=Η παραλαβή %s επικυρώθηκε ReceptionClassifyClosedInDolibarr=Η παραλαβή %s ταξινομήθηκε ως κλειστή -OrderCreatedInDolibarr=Παραγγελία %s +OrderCreatedInDolibarr=Η Παραγγελία %s δημιουργήθηκε OrderValidatedInDolibarr=Η παραγγελία %s επικυρώθηκε -OrderDeliveredInDolibarr=Παραγγελία %s κατατάσσεται παραδοτέα -OrderCanceledInDolibarr=Παραγγελία %s ακυρώθηκε -OrderBilledInDolibarr=Παραγγελία %s κατατάσσεται χρεωμένη -OrderApprovedInDolibarr=Παραγγελία %s εγκρίθηκε -OrderRefusedInDolibarr=Παραγγελία %s απορριφθεί -OrderBackToDraftInDolibarr=Παραγγελία %s θα επιστρέψει στην κατάσταση σχέδιο -ProposalSentByEMail=Η εμπορική πρόταση %s στάλθηκε μέσω email +OrderDeliveredInDolibarr=Η παραγγελία %s ταξινομήθηκε ως παραδομένη +OrderCanceledInDolibarr=Η παραγγελία %s ακυρώθηκε +OrderBilledInDolibarr=Η παραγγελία %s ταξινομήθηκε ως τιμολογημένη +OrderApprovedInDolibarr=Η παραγγελία %s εγκρίθηκε +OrderRefusedInDolibarr=Η παραγγελία %s απορρίφθηκε +OrderBackToDraftInDolibarr=Επιστροφή της παραγγελίας %s σε κατάσταση προσχεδίου +ProposalSentByEMail=Η προσφορά %s στάλθηκε μέσω email ContractSentByEMail=Η σύμβαση %s στάλθηκε μέσω email -OrderSentByEMail=Η παραγγελία πωλήσεων %s στάλθηκε με email +OrderSentByEMail=Η παραγγελία πωλήσεων %s στάλθηκε μέσω email InvoiceSentByEMail=Το τιμολόγιο πελάτη %s στάλθηκε μέσω email -SupplierOrderSentByEMail=Παραγγελία αγοράς %s αποστέλλεται μέσω ηλεκτρονικού ταχυδρομείου +SupplierOrderSentByEMail=Η εντολή αγοράς %s στάλθηκε μέσω email ORDER_SUPPLIER_DELETEInDolibarr=Η εντολή αγοράς %s διαγράφηκε -SupplierInvoiceSentByEMail=Τιμολόγιο πωλητή %s αποστέλλεται μέσω ηλεκτρονικού ταχυδρομείου -ShippingSentByEMail=Η αποστολή %s αποστέλλεται μέσω ηλεκτρονικού ταχυδρομείου +SupplierInvoiceSentByEMail=Το τιμολόγιο προμηθευτή %s στάλθηκε μέσω email +ShippingSentByEMail=Η αποστολή %s στάλθηκε μέσω email ShippingValidated= Η αποστολή %s επικυρώθηκε -InterventionSentByEMail=Η παρέμβαση %s στάλθηκε με ηλεκτρονικό ταχυδρομείο +InterventionSentByEMail=Η παρέμβαση %s στάλθηκε μέσω email ProposalDeleted=Η προσφορά διαγράφηκε OrderDeleted=Η παραγγελία διαγράφηκε InvoiceDeleted=Το τιμολόγιο διαγράφηκε @@ -96,81 +96,81 @@ CONTACT_DELETEInDolibarr=Η επαφή %s διαγράφηκε PRODUCT_CREATEInDolibarr=Το προϊόν %s δημιουργήθηκε PRODUCT_MODIFYInDolibarr=Το προϊόν %s τροποποιήθηκε PRODUCT_DELETEInDolibarr=Το προϊόν %s διαγράφηκε -HOLIDAY_CREATEInDolibarr=Αίτηση για άδεια %s δημιουργήθηκε -HOLIDAY_MODIFYInDolibarr=Αίτηση για άδεια %s τροποποιήθηκε -HOLIDAY_APPROVEInDolibarr=Η αίτηση για άδεια %s εγκρίθηκε +HOLIDAY_CREATEInDolibarr=Το αίτημα άδειας %s δημιουργήθηκε +HOLIDAY_MODIFYInDolibarr=Το αίτημα άδειας %s τροποποιήθηκε +HOLIDAY_APPROVEInDolibarr=Το αίτημα άδειας %s εγκρίθηκε HOLIDAY_VALIDATEInDolibarr=Το αίτημα άδειας %s επικυρώθηκε -HOLIDAY_DELETEInDolibarr=Αίτηση άδειας %s διαγράφηκε -EXPENSE_REPORT_CREATEInDolibarr=Αναφορά εξόδων %s δημιουργήθηκε -EXPENSE_REPORT_VALIDATEInDolibarr=Έκθεση δαπανών %s επικυρωθεί -EXPENSE_REPORT_APPROVEInDolibarr=Έκθεση δαπανών %s εγκριθεί -EXPENSE_REPORT_DELETEInDolibarr=Αναφορά εξόδων %s διαγράφηκε -EXPENSE_REPORT_REFUSEDInDolibarr=Η έκθεση δαπανών %s απορρίφθηκε -PROJECT_CREATEInDolibarr=Έργο %s δημιουργήθηκε +HOLIDAY_DELETEInDolibarr=Το αίτημα άδειας %s διαγράφηκε +EXPENSE_REPORT_CREATEInDolibarr=Η αναφορά εξόδων %s δημιουργήθηκε +EXPENSE_REPORT_VALIDATEInDolibarr=Η αναφορά εξόδων %s επικυρώθηκε +EXPENSE_REPORT_APPROVEInDolibarr=Η αναφορά εξόδων %s εγκρίθηκε +EXPENSE_REPORT_DELETEInDolibarr=Η αναφορά εξόδων %s διαγράφηκε +EXPENSE_REPORT_REFUSEDInDolibarr=Η αναφορά εξόδων %s απορρίφθηκε +PROJECT_CREATEInDolibarr=Το έργο %s δημιουργήθηκε PROJECT_MODIFYInDolibarr=Το έργο %s τροποποιήθηκε PROJECT_DELETEInDolibarr=Το έργο %s διαγράφηκε TICKET_CREATEInDolibarr=Το εισιτήριο %s δημιουργήθηκε TICKET_MODIFYInDolibarr=Το εισιτήριο %s τροποποιήθηκε -TICKET_ASSIGNEDInDolibarr=Το εισιτήριο %s εκχωρήθηκε +TICKET_ASSIGNEDInDolibarr=Το εισιτήριο %s ανατέθηκε TICKET_CLOSEInDolibarr=Το εισιτήριο %s έκλεισε TICKET_DELETEInDolibarr=Το εισιτήριο %s διαγράφηκε BOM_VALIDATEInDolibarr=Το BOM επικυρώθηκε -BOM_UNVALIDATEInDolibarr=Το BOM δεν έχει εγκριθεί -BOM_CLOSEInDolibarr=Το BOM είναι απενεργοποιημένο -BOM_REOPENInDolibarr=Ανοίξτε ξανά το BOM +BOM_UNVALIDATEInDolibarr=Το BOM δεν είναι επικυρωμένο +BOM_CLOSEInDolibarr=Το BOM απενεργοποιήθηκε +BOM_REOPENInDolibarr=Το BOM άνοιξε ξανά BOM_DELETEInDolibarr=Το BOM διαγράφηκε MRP_MO_VALIDATEInDolibarr=Το ΜΟ επικυρώθηκε -MRP_MO_UNVALIDATEInDolibarr=Το MO ορίστηκε σε πρόχειρη κατάσταση +MRP_MO_UNVALIDATEInDolibarr=Επιστροφή του MO σε κατάσταση προσχεδίου MRP_MO_PRODUCEDInDolibarr=Το ΜΟ παράχθηκε MRP_MO_DELETEInDolibarr=Το MO διαγράφηκε -MRP_MO_CANCELInDolibarr=MO ακυρώθηκε +MRP_MO_CANCELInDolibarr=Το MO ακυρώθηκε PAIDInDolibarr=%s πληρώθηκε ##### End agenda events ##### AgendaModelModule=Πρότυπα εγγράφων για συμβάν DateActionStart=Ημερομηνία έναρξης DateActionEnd=Ημερομηνία λήξης AgendaUrlOptions1=Μπορείτε ακόμη να προσθέσετε τις ακόλουθες παραμέτρους για να φιλτράρετε τα αποτέλεσμα: -AgendaUrlOptions3=logina=%s να περιορίσει την παραγωγή ενεργειών που ανήκουν στον χρήστη %s. -AgendaUrlOptionsNotAdmin=logina =! %s για να περιορίσετε την έξοδο σε ενέργειες που δεν ανήκουν στον χρήστη %s . -AgendaUrlOptions4=logint = %s για να περιορίσετε την έξοδο σε ενέργειες που έχουν εκχωρηθεί στο χρήστη %s (ιδιοκτήτης και άλλοι). -AgendaUrlOptionsProject=project = __ PROJECT_ID__ για να περιορίσετε την έξοδο σε ενέργειες που σχετίζονται με το έργο __PROJECT_ID__ . +AgendaUrlOptions3= logina= για περιορισμό της εξόδου σε ενέργειες που ανήκουν σε έναν χρήστη %s. +AgendaUrlOptionsNotAdmin= logina=! για περιορισμό της εξόδου σε ενέργειες που δεν ανήκουν στον χρήστη %s. +AgendaUrlOptions4= logint= για περιορισμό της εξόδου σε ενέργειες που έχουν ανατεθεί στον χρήστη %s(ιδιοκτήτης και άλλοι) +AgendaUrlOptionsProject= έργο=__PROJECT_ID__ για περιορισμό της εξόδου σε ενέργειες που συνδέονται με το έργο __PROJECT_ID__ . AgendaUrlOptionsNotAutoEvent=notactiontype = systemauto για την εξαίρεση αυτόματων συμβάντων. -AgendaUrlOptionsIncludeHolidays= includeholidays=1 για να συμπεριλάβει εκδηλώσεις εορτών. +AgendaUrlOptionsIncludeHolidays= includeholidays=1 για να συμπεριληφθούν εκδηλώσεις εορτών. AgendaShowBirthdayEvents=Γενέθλια επαφών AgendaHideBirthdayEvents=Απόκρυψη γενεθλίων των επαφών -Busy=Απασχολ. -ExportDataset_event1=Κατάλογος των εκδηλώσεων -DefaultWorkingDays=Προεπιλογή εργάσιμες ημέρες που κυμαίνονται την εβδομάδα (παράδειγμα: 1-5, 1-6) -DefaultWorkingHours=Προεπιλογή ώρες εργασίας ανά ημέρα (Παράδειγμα: 9-18) +Busy=Απασχολημένος +ExportDataset_event1=Λίστα συμβάντων ατζέντας +DefaultWorkingDays=Εύρος προεπιλεγμένων εργάσιμων ημερών της εβδομάδας (Παράδειγμα: 1-5, 1-6) +DefaultWorkingHours=Προεπιλεγμένες ώρες εργασίας την ημέρα (Παράδειγμα: 9-18) # External Sites ical ExportCal=Εξαγωγή ημερολογίου ExtSites=Εισαγωγή εξωτερικών ημερολογίων -ExtSitesEnableThisTool=Εμφάνιση εξωτερικών ημερολογίων (που ορίζονται στην παγκόσμια ρύθμιση) στην Ατζέντα. Δεν επηρεάζει τα εξωτερικά ημερολόγια που ορίζονται από τους χρήστες. +ExtSitesEnableThisTool=Εμφάνιση εξωτερικών ημερολογίων (που ορίστηκαν στην καθολική ρύθμιση) στην Ατζέντα. Δεν επηρεάζει τα εξωτερικά ημερολόγια που ορίστηκαν από τους χρήστες. ExtSitesNbOfAgenda=Αριθμός ημερολογίων -AgendaExtNb=Αριθμός ημερολογίου. %s +AgendaExtNb=Ημερολόγιο αρ. %s ExtSiteUrlAgenda=URL για να αποκτήσετε πρόσβαση στο .ical αρχείο ExtSiteNoLabel=Χωρίς Περιγραφή VisibleTimeRange=Ορατό χρονικό εύρος -VisibleDaysRange=Ορατό φάσμα ημερών +VisibleDaysRange=Εύρος ορατών ημερών AddEvent=Δημιουργία συμβάντος MyAvailability=Η διαθεσιμότητα μου -ActionType=Τύπος συμβάντος -DateActionBegin=Έναρξη ημερομηνίας του συμβάντος -ConfirmCloneEvent=Είστε σίγουροι πως θέλετε να κλωνοποιήσετε την εκδήλωση %s; -RepeatEvent=Επανάληψη συμβάντος +ActionType=Τύπος ενέργειας +DateActionBegin=Ημερομηνία έναρξης ενέργειας +ConfirmCloneEvent=Είστε σίγουροι πως θέλετε να αντιγράψετε το συμβάν %s; +RepeatEvent=Επανάληψη ενέργειας OnceOnly=Μόνο μία φορά -EveryWeek=Εβδομαδιαίο -EveryMonth=Μηνιαίο +EveryWeek=Κάθε εβδομάδα +EveryMonth=Κάθε μήνα DayOfMonth=Ημέρα του Μήνα DayOfWeek=Ημέρα της εβδομάδας -DateStartPlusOne=Έναρξη ημέρας + 1 ώρα -SetAllEventsToTodo=Ρυθμίστε όλα τα συμβάντα για να κάνετε +DateStartPlusOne=Ημερομηνία έναρξης + 1 ώρα +SetAllEventsToTodo=Ορισμός όλων των ενεργειών ως εκκρεμών SetAllEventsToInProgress=Ορίστε όλα τα συμβάντα σε εξέλιξη SetAllEventsToFinished=Ορίστε όλα τα συμβάντα ως ολοκληρωμένα -ReminderTime=Περίοδος υπενθύμισης πριν από την εκδήλωση +ReminderTime=Περίοδος υπενθύμισης πριν από την ενέργεια TimeType=Τύπος διάρκειας ReminderType=Τύπος επανάκλησης -AddReminder=Δημιουργήστε μια αυτόματη ειδοποίηση υπενθύμισης για αυτό το συμβάν -ErrorReminderActionCommCreation=Σφάλμα κατά τη δημιουργία της ειδοποίησης υπενθύμισης για αυτό το συμβάν -BrowserPush=Περιήηση αναδυόμενης ειδοποίησης +AddReminder=Δημιουργήστε μια αυτόματη ειδοποίηση υπενθύμισης για αυτή την ενέργεια +ErrorReminderActionCommCreation=Σφάλμα κατά τη δημιουργία της ειδοποίησης υπενθύμισης για αυτή την ενέργεια +BrowserPush=Αναδυόμενη ειδοποίηση προγράμματος περιήγησης ActiveByDefault=Ενεργοποιημένο από προεπιλογή diff --git a/htdocs/langs/el_GR/banks.lang b/htdocs/langs/el_GR/banks.lang index 4b6c2472f2a..86bf2c3ad7a 100644 --- a/htdocs/langs/el_GR/banks.lang +++ b/htdocs/langs/el_GR/banks.lang @@ -67,8 +67,8 @@ Account=Λογαριασμός BankTransactionByCategories=Καταχωρήσεις τραπεζών ανά κατηγορίες BankTransactionForCategory=Καταχωρήσεις τραπεζών για την κατηγορία %s RemoveFromRubrique=Αφαίρεση του συνδέσμου με κατηγορία -RemoveFromRubriqueConfirm=Είστε βέβαιοι ότι θέλετε να καταργήσετε τη σύνδεση μεταξύ της καταχώρισης και της κατηγορίας αυτής; -ListBankTransactions=Κατάλογος Τραπεζικών καταχωρήσεων +RemoveFromRubriqueConfirm=Είστε σίγουροι ότι θέλετε να καταργήσετε τη σύνδεση μεταξύ της καταχώρισης και της κατηγορίας αυτής; +ListBankTransactions=Λίστα Τραπεζικών καταχωρήσεων IdTransaction=ID Συναλλαγής BankTransactions=Καταχωρήσεις τραπεζών BankTransaction=Τραπεζική εγγραφή @@ -82,7 +82,7 @@ Conciliation=Πραγματοποίηση Συναλλαγής SaveStatementOnly=Αποθήκευση δήλωσης μόνο ReconciliationLate=Πραγματοποίηση Συναλλαγής IncludeClosedAccount=Συμπερίληψη Κλειστών Λογαριασμών -OnlyOpenedAccount=Μόνο ανοικτούς λογαριασμούς +OnlyOpenedAccount=Μόνο ανοιχτοί λογαριασμοί AccountToCredit=Πίστωση στον Λογαριασμό AccountToDebit=Χρέωση στον Λογαριασμό DisableConciliation=Απενεργοποίηση της ιδιότητας συμφωνία από αυτό τον λογαριασμό @@ -122,8 +122,8 @@ BankChecksToReceipt=Επιταγές που αναμένουν κατάθεση BankChecksToReceiptShort=Επιταγές που αναμένουν κατάθεση ShowCheckReceipt=Ελέγξτε την απόδειξη κατάθεσης NumberOfCheques=Αριθ. Ελέγχου -DeleteTransaction=Διαγραφή συμμετοχής -ConfirmDeleteTransaction=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την καταχώρηση; +DeleteTransaction=Διαγραφή καταχώρησης +ConfirmDeleteTransaction=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την καταχώρηση; ThisWillAlsoDeleteBankRecord=Αυτό θα διαγράψει επίσης την εισερχόμενη είσοδο στην τράπεζα BankMovements=Κινήσεις PlannedTransactions=Προγραμματισμένες καταχωρήσεις diff --git a/htdocs/langs/el_GR/blockedlog.lang b/htdocs/langs/el_GR/blockedlog.lang index 319dba5722c..b42c868d85e 100644 --- a/htdocs/langs/el_GR/blockedlog.lang +++ b/htdocs/langs/el_GR/blockedlog.lang @@ -1,57 +1,57 @@ BlockedLog=Αμετάβλητα αρχεία καταγραφής Field=Πεδίο BlockedLogDesc=Αυτή η ενότητα παρακολουθεί ορισμένα συμβάντα σε ένα αμετάβλητο αρχείο καταγραφής (το οποίο δεν μπορείτε να τροποποιήσετε μόλις καταγραφεί) σε ενα block chain, σε πραγματικό χρόνο. Αυτή η ενότητα παρέχει συμβατότητα με τις απαιτήσεις των νόμων ορισμένων χωρών (όπως η Γαλλία με το νόμο Finance 2016 - Norme NF525). -Fingerprints=Αρχειοθετημένα συμβάντα και δακτυλικά αποτυπώματα +Fingerprints=Αρχειοθετημένες ενέργειες και δακτυλικά αποτυπώματα FingerprintsDesc=Αυτό είναι το εργαλείο για να περιηγηθείτε ή να εξαγάγετε τα αμετάβλητα αρχεία καταγραφής. Αμετάβλητα αρχεία καταγραφής δημιουργούνται και αρχειοθετούνται τοπικά σε ένα ειδικό πίνακα, σε πραγματικό χρόνο όταν καταγράφετε ένα επιχειρηματικό γεγονός. Μπορείτε να χρησιμοποιήσετε αυτό το εργαλείο για να εξαγάγετε αυτό το αρχείο και να το αποθηκεύσετε για εξωτερική υποστήριξη (ορισμένες χώρες, όπως η Γαλλία, ζητάνε να γίνεται ετησίως). Σημειώστε ότι δεν υπάρχει καμία δυνατότητα για εκκαθάριση αυτού του αρχείου καταγραφής και κάθε προσπάθεια αλλαγής απευθείας σε αυτό το αρχείο καταγραφής (π.χ. από έναν χάκερ) θα αναφέρεται με ένα μη έγκυρο δακτυλικό αποτύπωμα. Εάν θέλετε πραγματικά να εκκαθαρίσετε αυτόν τον πίνακα επειδή χρησιμοποιήσατε την εφαρμογή σας για δοκιμαστικό σκοπό και θέλετε να καθαρίσετε τα δεδομένα σας για να ξεκινήσετε την παραγωγή σας, μπορείτε να ζητήσετε από τον μεταπωλητή ή τον διαχειριστή της βάσης δεδοµένων σας να επαναφέρει τη βάση δεδομένων σας (όλα τα δεδομένα θα χαθούν). CompanyInitialKey=Αρχικό κλειδί εταιρείας (hash of genesis block) BrowseBlockedLog=Αμετάβλητα αρχεία καταγραφής ShowAllFingerPrintsMightBeTooLong=Εμφάνιση όλων των αρχειοθετημένων αρχείων καταγραφής (μπορεί να είναι μεγάλα) ShowAllFingerPrintsErrorsMightBeTooLong=Εμφάνιση όλων των μη έγκυρων αρχείων καταγραφής (μπορεί να είναι μεγάλα) -DownloadBlockChain=Κατεβάστε τα δακτυλικά αποτυπώματα +DownloadBlockChain=Λήψη Block Chain KoCheckFingerprintValidity=Η αρχειοθετημένη καταχώριση αρχείου καταγραφής δεν είναι έγκυρη. Σημαίνει ότι κάποιος (ένας χάκερ;) έχει τροποποιήσει ορισμένα δεδομένα αυτής της εγγραφής μετά την καταγραφή της, ή έχει διαγράψει την προηγούμενη αρχειοθετημένη εγγραφή (ελέγξτε ότι η γραμμή με το προηγούμενο # υπάρχει) ή έχει τροποποιήσει το άθροισμα ελέγχου(checksum) της προηγούμενης εγγραφής. OkCheckFingerprintValidity=Η αρχειοθετημένη εγγραφή αρχείου καταγραφής είναι έγκυρη. Τα δεδομένα σε αυτή τη γραμμή δεν τροποποιήθηκαν και η καταχώρηση ακολουθεί την προηγούμενη. OkCheckFingerprintValidityButChainIsKo=Το αρχειοθετημένο αρχείο καταγραφής φαίνεται έγκυρο σε σύγκριση με το προηγούμενο, αλλά η αλυσίδα είχε αλλοιωθεί στο παρελθόν. AddedByAuthority=Αποθηκευμένο σε απομακρυσμένη αρχή NotAddedByAuthorityYet=Δεν έχει ακόμη αποθηκευτεί σε απομακρυσμένη αρχή ShowDetails=Εμφάνιση λεπτομερειών αποθήκευσης -logPAYMENT_VARIOUS_CREATE=Η πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) δημιουργήθηκε -logPAYMENT_VARIOUS_MODIFY=Η πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) τροποποιήθηκε -logPAYMENT_VARIOUS_DELETE=Πληρωμή (δεν έχει εκχωρηθεί σε τιμολόγιο) λογική διαγραφή +logPAYMENT_VARIOUS_CREATE=Δημιουργήθηκε η πληρωμή (δεν εκχωρείται σε τιμολόγιο). +logPAYMENT_VARIOUS_MODIFY=Τροποποιήθηκε η πληρωμή (δεν έχει αντιστοιχιστεί σε τιμολόγιο). +logPAYMENT_VARIOUS_DELETE=Λογική διαγραφή πληρωμής (δεν εκχωρείται σε τιμολόγιο). logPAYMENT_ADD_TO_BANK=Η πληρωμή προστέθηκε στην τράπεζα logPAYMENT_CUSTOMER_CREATE=Δημιουργήθηκε πληρωμή πελάτη -logPAYMENT_CUSTOMER_DELETE=Λογική διαγραφή πληρωμής πελατών +logPAYMENT_CUSTOMER_DELETE=Λογική διαγραφή πληρωμής πελάτη logDONATION_PAYMENT_CREATE=Δημιουργήθηκε η πληρωμή δωρεάς -logDONATION_PAYMENT_DELETE=Δωρεά λογική διαγραφή πληρωμής +logDONATION_PAYMENT_DELETE=Λογική διαγραφή πληρωμής δωρεάς logBILL_PAYED=Πληρωμένο τιμολόγιο πελάτη -logBILL_UNPAYED=Το τιμολόγιο πελατών έχει οριστεί ως μη πληρωμένο +logBILL_UNPAYED=Το τιμολόγιο πελάτη ορίστηκε ως απλήρωτο logBILL_VALIDATE=Το τιμολόγιο πελάτη επικυρώθηκε -logBILL_SENTBYMAIL=Τα τιμολόγια πελατών αποστέλλονται ταχυδρομικώς -logBILL_DELETE=Το τιμολόγιο πελατών διαγράφηκε λογικά -logMODULE_RESET=Η μονάδα BlockedLog απενεργοποιήθηκε -logMODULE_SET=Η μονάδα BlockedLog ήταν ενεργοποιημένη -logDON_VALIDATE=Επικύρωση δωρεάς -logDON_MODIFY=Μετατροπή δωρεάς -logDON_DELETE=Δωρεά λογική διαγραφή +logBILL_SENTBYMAIL=Αποστολή τιμολογίου πελάτη μέσω email +logBILL_DELETE=Το τιμολόγιο πελάτη διαγράφηκε λογικά  +logMODULE_RESET=Η ενότητα BlockedLog απενεργοποιήθηκε +logMODULE_SET=Η ενότητα BlockedLog ενεργοποιήθηκε +logDON_VALIDATE=Η δωρεά επικυρώθηκε +logDON_MODIFY=Η δωρεά τροποποιήθηκε +logDON_DELETE=Λογική διαγραφή δωρεάς logMEMBER_SUBSCRIPTION_CREATE=Δημιουργία συνδρομής μέλους logMEMBER_SUBSCRIPTION_MODIFY=Η συνδρομή μέλους τροποποιήθηκε -logMEMBER_SUBSCRIPTION_DELETE=Συνδρομή λογικής διαγραφής μέλους +logMEMBER_SUBSCRIPTION_DELETE=Λογική διαγραφή συνδρομής μέλους logCASHCONTROL_VALIDATE=Καταγραφή κλεισίματος ταμείου -BlockedLogBillDownload=Λήψη τιμολογίου πελατών -BlockedLogBillPreview=Προβολή τιμολογίου πελατών -BlockedlogInfoDialog=Στοιχεία καταγραφής -ListOfTrackedEvents=Λίστα συμβάντων που παρακολουθούνται -Fingerprint=Δακτυλικό αποτύπωμα +BlockedLogBillDownload=Λήψη τιμολογίου πελάτη +BlockedLogBillPreview=Προεπισκόπηση τιμολογίου πελάτη +BlockedlogInfoDialog=Στοιχεία αρχείου καταγραφής +ListOfTrackedEvents=Λίστα συμβάντων υπό ελεγχο +Fingerprint=Fingerprint DownloadLogCSV=Εξαγωγή αρχειοθετημένων αρχείων καταγραφής (CSV) -logDOC_PREVIEW=Προεπισκόπηση ενός επικυρωμένου εγγράφου για εκτύπωση ή λήψη -logDOC_DOWNLOAD=Λήψη επικυρωμένου εγγράφου για εκτύπωση ή αποστολή +logDOC_PREVIEW=Προ επισκόπηση ενός επικυρωμένου εγγράφου για εκτύπωση ή λήψη +logDOC_DOWNLOAD=Λήψη ενός επικυρωμένου εγγράφου για εκτύπωση ή αποστολή DataOfArchivedEvent=Πλήρη δεδομένα αρχειοθετημένου γεγονότος -ImpossibleToReloadObject=Το αρχικό αντικείμενο (πληκτρολογήστε %s, id %s) δεν είναι συνδεδεμένο (ανατρέξτε στη στήλη "Πλήρες αρχείο δεδομένων" για να λάβετε αναλλοίωτα αποθηκευμένα δεδομένα) -BlockedLogAreRequiredByYourCountryLegislation=Μπορείτε να ζητήσετε από τη νομοθεσία της χώρας σας τη λειτουργική μονάδα Unalterable Logs. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει τυχόν μελλοντικές συναλλαγές άκυρες σε σχέση με το νόμο και τη χρήση νόμιμου λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. -BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Το μη τροποποιημένο τμήμα καταγραφής ενεργοποιήθηκε λόγω της νομοθεσίας της χώρας σας. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει τυχόν μελλοντικές συναλλαγές άκυρες σε σχέση με το νόμο και τη χρήση νόμιμου λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. -BlockedLogDisableNotAllowedForCountry=Κατάλογος χωρών όπου η χρήση αυτής της λειτουργικής μονάδας είναι υποχρεωτική (απλά για να αποφευχθεί η απενεργοποίηση της μονάδας από λάθος, εάν η χώρα σας βρίσκεται σε αυτή τη λίστα, δεν είναι δυνατή η απενεργοποίηση της ενότητας χωρίς την πρώτη επεξεργασία αυτής της λίστας. κρατήστε ένα κομμάτι στο μη αναστρέψιμο αρχείο καταγραφής). +ImpossibleToReloadObject=Το αρχικό αντικείμενο (τύπος %s, id %s) δεν είναι συνδεδεμένο (δείτε τη στήλη "Πλήρη δεδομένα" για να λάβετε αμετάβλητα αποθηκευμένα δεδομένα) +BlockedLogAreRequiredByYourCountryLegislation=Η ενότητα Αμετάβλητα αρχεία καταγραφής ενδέχεται να απαιτείται από τη νομοθεσία της χώρας σας. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει άκυρες τυχόν μελλοντικές συναλλαγές σε σχέση με τη νομοθεσία και τη χρήση νομικού λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Η ενότητα Αμετάβλητα αρχεία καταγραφής ενεργοποιήθηκε λόγω της νομοθεσίας της χώρας σας. Η απενεργοποίηση αυτής της ενότητας μπορεί να καταστήσει άκυρες τυχόν μελλοντικές συναλλαγές σε σχέση με τη νομοθεσία και τη χρήση νομικού λογισμικού, καθώς δεν μπορούν να επικυρωθούν από φορολογικό έλεγχο. +BlockedLogDisableNotAllowedForCountry=Λίστα χωρών όπου η χρήση αυτής της ενότητας είναι υποχρεωτική (απλώς για να αποφευχθεί η κατά λάθος απενεργοποίηση της ενότητας, εάν η χώρα σας βρίσκεται σε αυτήν τη λίστα, η απενεργοποίηση της ενότητας δεν είναι δυνατή χωρίς να επεξεργαστείτε πρώτα αυτήν τη λίστα. Σημειώστε επίσης ότι η ενεργοποίηση/απενεργοποίηση αυτής της ενότητας θα αποθηκευτεί στο αμετάβλητο αρχείο καταγραφής). OnlyNonValid=Μη έγκυρη -TooManyRecordToScanRestrictFilters=Πάρα πολλές εγγραφές για σάρωση / ανάλυση. Περιορίστε τη λίστα με πιο περιοριστικά φίλτρα. -RestrictYearToExport=Περιορίστε μήνα / έτος για εξαγωγή -BlockedLogEnabled=Έχει ενεργοποιηθεί το σύστημα για την παρακολούθηση εγγραφών σε μη τροποποιήσημα αρχεία καταγραφής -BlockedLogDisabled=Έχει απενεργοποιηθεί το σύστημα για την παρακολούθηση εγγραφών σε μη τροποποιήσημα αρχεία καταγραφής ύστερα από αρκετή καταγραφή. Αποθηκεύσαμε ένα ειδικό Fingerprint για να παρακολουθούμε την αλυσίδα ως σπασμένη. -BlockedLogDisabledBis=Έχει απενεργοποιηθεί το σύστημα για την παρακολούθηση εγγραφών σε μη τροποποιήσημα αρχεία καταγραφής. Αυτό είναι δυνατόν γιατί καμιά εγγραφή δεν έχει γίνει ακόμα. +TooManyRecordToScanRestrictFilters=Πάρα πολλές εγγραφές για σάρωση / ανάλυση. Περιορίστε τη λίστα με τη χρήση φίλτρων. +RestrictYearToExport=Ορισμός μήνα / έτους για εξαγωγή +BlockedLogEnabled=Έχει ενεργοποιηθεί το σύστημα για την παρακολούθηση συμβάντων σε μη τροποποιήσημα αρχεία καταγραφής +BlockedLogDisabled=Έχει απενεργοποιηθεί το σύστημα για την παρακολούθηση συμβάντων σε μη τροποποιήσημα αρχεία καταγραφής αφού έχει γίνει ήδη καταγραφή. Αποθηκεύσαμε ένα ειδικό Fingerprint για να παρακολουθούμε την αλυσίδα ως σπασμένη. +BlockedLogDisabledBis=Έχει απενεργοποιηθεί το σύστημα για την παρακολούθηση συμβάντων σε μη τροποποιήσημα αρχεία καταγραφής. Αυτό είναι δυνατόν γιατί καμιά εγγραφή δεν έχει γίνει ακόμα. diff --git a/htdocs/langs/el_GR/boxes.lang b/htdocs/langs/el_GR/boxes.lang index b142b8a6e2d..7956fe4b578 100644 --- a/htdocs/langs/el_GR/boxes.lang +++ b/htdocs/langs/el_GR/boxes.lang @@ -1,19 +1,19 @@ # Dolibarr language file - Source file is en_US - boxes BoxDolibarrStateBoard=Στατιστικά για τα κύρια επιχειρηματικά αντικείμενα στη βάση δεδομένων -BoxLoginInformation=πληροφορίες σύνδεσης +BoxLoginInformation=Πληροφορίες σύνδεσης BoxLastRssInfos=Πληροφορίες RSS BoxLastProducts=Τελευταία %s Προϊόντα / Υπηρεσίες -BoxProductsAlertStock=Ειδοποιήσεις αποθεμάτων για προϊόντα -BoxLastProductsInContract=Τελευταία προϊόντα / υπηρεσίες που συνάπτονται με %s +BoxProductsAlertStock=Ειδοποιήσεις αποθέματος προϊόντων +BoxLastProductsInContract=Τελευταία %s προϊόντα/υπηρεσίες με σύμβαση BoxLastSupplierBills=Τελευταία τιμολόγια προμηθευτή BoxLastCustomerBills=Τελευταία τιμολόγια πελατών BoxOldestUnpaidCustomerBills=Παλαιότερα μη πληρωμένα τιμολόγια πελατών -BoxOldestUnpaidSupplierBills=Παλαιότερα μη πληρωμένα τιμολόγια προμηθευτή +BoxOldestUnpaidSupplierBills=Παλαιότερα μη πληρωμένα τιμολόγια προμηθευτών BoxLastProposals=Τελευταίες εμπορικές προτάσεις BoxLastProspects=Τελευταίες τροποποιημένες προοπτικές -BoxLastCustomers=Πρόσφατα τροποποιημένοι πελάτες -BoxLastSuppliers=Πρόσφατα τροποποιημένοι προμηθευτές -BoxLastCustomerOrders=Τελευταίες παραγγελίες πωλήσεων +BoxLastCustomers=Τελευταίοι τροποποιημένοι πελάτες +BoxLastSuppliers=Τελευταίοι τροποποιημένοι προμηθευτές +BoxLastCustomerOrders=Τελευταίες εντολές πωλήσεων BoxLastActions=Τελευταίες ενέργειες BoxLastContracts=Τελευταία συμβόλαια BoxLastContacts=Τελευταίες επαφές/διευθύνσεις @@ -21,42 +21,42 @@ BoxLastMembers=Τελευταία μέλη BoxLastModifiedMembers=Τελευταία τροποποιημένα μέλη BoxLastMembersSubscriptions=Τελευταίες συνδρομές μελών BoxFicheInter=Τελευταίες παρεμβάσεις -BoxCurrentAccounts=Άνοιξε το ισοζύγιο των λογαριασμών +BoxCurrentAccounts=Ισοζύγιο ανοιχτών λογαριασμών BoxTitleMemberNextBirthdays=Γενέθλια αυτού του μήνα (μέλη) BoxTitleMembersByType=Μέλη ανά τύπο και κατάσταση BoxTitleMembersSubscriptionsByYear=Συνδρομές μελών ανά έτος -BoxTitleLastRssInfos=Τα %s πιο πρόσφατα νέα από %s -BoxTitleLastProducts=Προϊόντα / Υπηρεσίες: τελευταία τροποποίηση %s -BoxTitleProductsAlertStock=Προϊόντα: προειδοποίηση αποθέματος -BoxTitleLastSuppliers=Οι τελευταίοι %s κατέγραψαν προμηθευτές -BoxTitleLastModifiedSuppliers=Προμηθευτές: τελευταία τροποποίηση %s -BoxTitleLastModifiedCustomers=Πελάτες: τελευταία τροποποίηση %s +BoxTitleLastRssInfos=Τα τελευταία %s νέα από %s +BoxTitleLastProducts=Προϊόντα / Υπηρεσίες: τελευταία %s τροποποιημένα +BoxTitleProductsAlertStock=Προϊόντα: ειδοποίηση αποθέματος +BoxTitleLastSuppliers=Τελευταίοι %s καταγεγραμμένοι προμηθευτές +BoxTitleLastModifiedSuppliers=Προμηθευτές: τελευταίοι %s τροποποιημένοι +BoxTitleLastModifiedCustomers=Πελάτες: τελευταίοι %s τροποποιημένοι BoxTitleLastCustomersOrProspects=Τελευταίοι %s πελάτες ή προοπτικές -BoxTitleLastCustomerBills=Τελευταία τιμολόγια πελατών τροποποιημένα %s +BoxTitleLastCustomerBills=Τελευταία %s τροποποιημένα τιμολόγια πελατών BoxTitleLastSupplierBills=Τελευταία %s τροποποιημένα τιμολόγια προμηθευτών -BoxTitleLastModifiedProspects=Προοπτικές: τελευταία τροποποίηση %s +BoxTitleLastModifiedProspects=Προοπτικές: τελευταία %s τροποποιημένη BoxTitleLastModifiedMembers=Τελευταία %s Μέλη -BoxTitleLastFicheInter=Latest %s modified interventions -BoxTitleOldestUnpaidCustomerBills=Τιμολόγια Πελατών: παλαιότερη %s απλήρωτη -BoxTitleOldestUnpaidSupplierBills=Τιμολόγια προμηθευτών: παλαιότερη %s απλήρωτη -BoxTitleCurrentAccounts=Άνοιγμα Λογαριασμών: υπόλοιπα -BoxTitleSupplierOrdersAwaitingReception=Ο προμηθευτής παραγγέλλει αναμονή για λήψη -BoxTitleLastModifiedContacts=Επαφές / διευθύνσεις: τελευταία τροποποίηση %s -BoxMyLastBookmarks=Σελιδοδείκτες: τελευταίες %s +BoxTitleLastFicheInter=Τελευταίες %s τροποποιημένες παρεμβάσεις +BoxTitleOldestUnpaidCustomerBills=Τιμολόγια Πελατών: παλαιότερα %s απλήρωτα +BoxTitleOldestUnpaidSupplierBills=Τιμολόγια προμηθευτών: παλαιότερα %s απλήρωτα +BoxTitleCurrentAccounts=Ανοιχτοί Λογαριασμοί: ισοζύγια +BoxTitleSupplierOrdersAwaitingReception=Παραγγελίες προμηθευτών εν αναμονή παραλαβής +BoxTitleLastModifiedContacts=Επαφές / διευθύνσεις: τελευταίες %s τροποποιημένες +BoxMyLastBookmarks=Σελιδοδείκτες: τελευταίοι %s BoxOldestExpiredServices=Παλαιότερες ενεργές υπηρεσίες που έχουν λήξει -BoxLastExpiredServices=Τελευταίες %s παλαιότερες επαφές με ενεργές υπηρεσίες λήξαν -BoxTitleLastActionsToDo=Τελευταίες %s ενέργειες προς πραγμαοποίηση -BoxTitleLastContracts=Τα πιο πρόσφατα %s συμβόλαια που τροποποιήθηκαν -BoxTitleLastModifiedDonations=Τελευταίες %s δωρεές που τροποποιήθηκαν +BoxLastExpiredServices=Τελευταίες %s παλαιότερες επαφές με ενεργές υπηρεσίες που έληξαν +BoxTitleLastActionsToDo=Τελευταίες %s ενέργειες προς πραγματοποίηση +BoxTitleLastContracts=Τελευταία %s τροποποιημένα συμβόλαια +BoxTitleLastModifiedDonations=Τελευταίες %s τροποποιημένες δωρεές BoxTitleLastModifiedExpenses=Τελευταίες %s αναφορές εξόδων που τροποποιήθηκαν BoxTitleLatestModifiedBoms=Τελευταία %s BOM που τροποποιήθηκαν BoxTitleLatestModifiedMos=Τελευταίες %s Παραγγελίες Κατασκευής που τροποποιήθηκαν BoxTitleLastOutstandingBillReached=Πελάτες με υπέρβαση του μέγιστου οφειλόμενου BoxGlobalActivity=Η γενική δραστηριότητα για (τιμολόγια, προσφορές, παραγγελίες) BoxGoodCustomers=Καλοί πελάτες -BoxTitleGoodCustomers=%s καλών πελατών +BoxTitleGoodCustomers=%s Καλοί πελάτες BoxScheduledJobs=Προγραμματισμένες εργασίες -BoxTitleFunnelOfProspection=Lead funnel +BoxTitleFunnelOfProspection=Διαδικασία Αξιοποίησης Προοπτικών FailedToRefreshDataInfoNotUpToDate=Αποτυχία ανανέωσης ροής RSS. Τελευταία επιτυχημένη ημερομηνία ανανέωσης: %s LastRefreshDate=Ημερομηνία τελευταίας ανανέωσης NoRecordedBookmarks=Δεν υπάρχουν σελιδοδείκτες που ορίζονται. Κάντε κλικ εδώ για να προσθέσετε σελιδοδείκτες. @@ -64,57 +64,57 @@ ClickToAdd=Πατήστε εδώ για προσθήκη. NoRecordedCustomers=Δεν υπάρχουν καταχωρημένοι πελάτες NoRecordedContacts=Δεν υπάρχουν καταγεγραμμένες επαφές NoActionsToDo=Δεν υπάρχουν ενέργειες που πρέπει να γίνουν -NoRecordedOrders=Δεν έχουν καταγραφεί εντολές πώλησης +NoRecordedOrders=Δεν υπάρχουν καταγεγραμμένες εντολές πωλήσεων NoRecordedProposals=Δεν υπάρχουν καταχωρημένες προσφορές -NoRecordedInvoices=Δεν έχουν καταγραφεί τιμολόγια πελατών -NoUnpaidCustomerBills=Δεν έχουν καταβληθεί τιμολόγια πελατών -NoUnpaidSupplierBills=Δεν έχουν καταβληθεί τιμολόγια προμηθευτή -NoModifiedSupplierBills=Δεν έχουν καταγραφεί τιμολόγια προμηθευτή +NoRecordedInvoices=Δεν υπάρχουν καταγεγραμμένα τιμολόγια πελατών +NoUnpaidCustomerBills=Δεν υπάρχουν απλήρωτα τιμολόγια πελατών +NoUnpaidSupplierBills=Δεν υπάρχουν απλήρωτα τιμολόγια προμηθευτών +NoModifiedSupplierBills=Δεν υπάρχουν καταγεγραμμένα τιμολόγια προμηθευτή NoRecordedProducts=Δεν υπάρχουν καταχωρημένα προϊόντα/υπηρεσίες -NoRecordedProspects=Δεν υπάρχουν προσφορές +NoRecordedProspects=Καμία καταγεγραμμένη προοπτική NoContractedProducts=Δεν υπάρχουν καταχωρημένα συμβόλαια με προϊόντα/υπηρεσίες NoRecordedContracts=Δεν υπάρχουν καταχωρημένα συμβόλαια -NoRecordedInterventions=Δεν καταγράφονται παρεμβάσεις +NoRecordedInterventions=Δεν έχουν καταγραφεί παρεμβάσεις BoxLatestSupplierOrders=Τελευταίες παραγγελίες αγοράς -BoxLatestSupplierOrdersAwaitingReception=Τελευταίες παραγγελίες αγοράς (με εκκρεμότητα λήψης) -NoSupplierOrder=Δεν καταγράφεται εντολή αγοράς +BoxLatestSupplierOrdersAwaitingReception=Τελευταίες παραγγελίες αγοράς (εν αναμονή παραλαβής) +NoSupplierOrder=Καμία καταγεγραμμένη εντολή αγοράς BoxCustomersInvoicesPerMonth=Τιμολόγιο Πελατών ανά μήνα BoxSuppliersInvoicesPerMonth=Τιμολόγια προμηθευτή ανά μήνα BoxCustomersOrdersPerMonth=Παραγγελίες Πωλήσεων ανά μήνα -BoxSuppliersOrdersPerMonth=Παραγγελίες παραγγελίας ανά μήνα +BoxSuppliersOrdersPerMonth=Παραγγελίες προμηθευτών ανά μήνα BoxProposalsPerMonth=Προσφορές ανά μήνα -NoTooLowStockProducts=Κανένα προϊόν δεν βρίσκεται κάτω από το χαμηλό όριο αποθεμάτων -BoxProductDistribution=Προϊόντα / Υπηρεσίες Διανομή +NoTooLowStockProducts=Κανένα προϊόν δεν είναι κάτω από το όριο χαμηλότερου αποθεμάτος +BoxProductDistribution=Διανομή προϊόντων/υπηρεσιών ForObject=Στο %s -BoxTitleLastModifiedSupplierBills=Τιμολόγια προμηθευτή: τροποποιήθηκε τελευταία %s -BoxTitleLatestModifiedSupplierOrders=Παραγγελίες προμηθευτή: τελευταία τροποποιημένη %s -BoxTitleLastModifiedCustomerBills=Τιμολόγια πελατών: τροποποιήθηκε τελευταία %s -BoxTitleLastModifiedCustomerOrders=Παραγγελίες πώλησης: τελευταία τροποποίηση %s -BoxTitleLastModifiedPropals=Τελευταίες τροποποιημένες προτάσεις %s +BoxTitleLastModifiedSupplierBills=Τιμολόγια προμηθευτή: τελευταία %s τροποποιημένα +BoxTitleLatestModifiedSupplierOrders=Παραγγελίες προμηθευτή: τελευταίες %s τροποποιημένες +BoxTitleLastModifiedCustomerBills=Τιμολόγια πελατών: τελευταία %s τροποποίημενα +BoxTitleLastModifiedCustomerOrders=Παραγγελίες πωλήσεων: τελευταίες %sτροποποίημενες +BoxTitleLastModifiedPropals=Τελευταίες %s τροποποιημένες προσφορές BoxTitleLatestModifiedJobPositions=Τελευταίες %s τροποποιημένες θέσεις εργασίας -BoxTitleLatestModifiedCandidatures=Τελευταίες %s τροποποιημένες εφαρμογές εργασίας +BoxTitleLatestModifiedCandidatures=Τελευταίες %s τροποποιημένες αιτήσεις πρόσληψης ForCustomersInvoices=Τιμολόγια Πελάτη ForCustomersOrders=Παραγγελίες πελατών ForProposals=Προσφορές -LastXMonthRolling=Ο τελευταίος κύλινδρος %s μήνα -ChooseBoxToAdd=Προσθέστε widget στον πίνακα ελέγχου -BoxAdded=Το Widget προστέθηκε στον πίνακα ελέγχου σας +LastXMonthRolling=Τελευταίοι %s κυλιόμενοι μήνες +ChooseBoxToAdd=Προσθήκη γραφικού στοιχείου στον πίνακα ελέγχου +BoxAdded=Το γραφικό στοιχείο προστέθηκε στον πίνακα ελέγχου. BoxTitleUserBirthdaysOfMonth=Γενέθλια αυτού του μήνα (χρήστες) BoxLastManualEntries=Τελευταία εγγραφή στη λογιστική που καταχωρήθηκε χειροκίνητα ή χωρίς έγγραφο πηγής BoxTitleLastManualEntries=%s τελευταίες εγγραφές που έχουν εισαχθεί χειροκίνητα ή χωρίς έγγραφο προέλευσης -NoRecordedManualEntries=Δεν καταγράφονται μη καταχωρημένα μητρώα στη λογιστική -BoxSuspenseAccount=Αρίθμηση λογιστικής λειτουργίας με λογαριασμό αναμονής -BoxTitleSuspenseAccount=Αριθμός μη διατεθέντων γραμμών -NumberOfLinesInSuspenseAccount=Αριθμός γραμμής σε λογαριασμό αναμονής -SuspenseAccountNotDefined=Ο λογαριασμός Suspense δεν έχει οριστεί +NoRecordedManualEntries=Καμία καταγραφή χειροκίνητων εγγραφών στη λογιστική +BoxSuspenseAccount=Καταμέτρηση λογιστικής λειτουργίας με μεταβατικό λογαριασμό +BoxTitleSuspenseAccount=Αριθμός μη εκχωρημένων γραμμών +NumberOfLinesInSuspenseAccount=Αριθμός γραμμών στον μεταβατικό λογαριασμό +SuspenseAccountNotDefined=Δεν έχει οριστεί μεταβατικός λογαριασμός BoxLastCustomerShipments=Τελευταίες αποστολές πελάτη BoxTitleLastCustomerShipments=Τελευταίες %s αποστολές πελάτη NoRecordedShipments=Καμία καταγεγραμμένη αποστολή πελάτη BoxCustomersOutstandingBillReached=Πελάτες που έχουν φτάσει το όριο μέγιστου οφειλόμενου # Pages -UsersHome=Αρχικοί χρήστες και ομάδες -MembersHome=Αρχική Συνδρομή -ThirdpartiesHome=Αρχική Τρίτοι -TicketsHome=Αρχικά Εισιτήρια -AccountancyHome=Αρχική Λογιστική +UsersHome=Χρήστες και ομάδες +MembersHome=Μέλη +ThirdpartiesHome=Τρίτα μέρη +TicketsHome=Εισιτήρια +AccountancyHome=Λογιστική ValidatedProjects=Επικυρωμένα έργα diff --git a/htdocs/langs/el_GR/cashdesk.lang b/htdocs/langs/el_GR/cashdesk.lang index 5b554ba8cfa..602c85b4f90 100644 --- a/htdocs/langs/el_GR/cashdesk.lang +++ b/htdocs/langs/el_GR/cashdesk.lang @@ -16,7 +16,7 @@ AddThisArticle=Προσθέστε αυτό το προϊόν RestartSelling=Επιστρέψτε στην πώληση SellFinished=Ολοκληρωμένη πώληση PrintTicket=Εκτύπωση Απόδειξης -SendTicket=Στείλτε εισιτήριο +SendTicket=Αποστολή εισιτηρίου NoProductFound=Το προϊόν δεν βρέθηκε ProductFound=Το προϊόν βρέθηκε NoArticle=Κανένα προϊόν @@ -35,17 +35,17 @@ UserNeedPermissionToEditStockToUsePos=Ζητάτε να μειώσετε το α DolibarrReceiptPrinter=Dolibarr εκτυπωτής αποδείξεων PointOfSale=Σημείο πώλησης PointOfSaleShort=POS -CloseBill=Κλείστε τον Bill -Floors=Δάπεδα -Floor=Πάτωμα -AddTable=Προσθήκη πίνακα +CloseBill=Κλείσιμο λογαριασμού +Floors=Floors +Floor=Floor +AddTable=Προσθήκη τραπεζιού Place=Θέση -TakeposConnectorNecesary=Απαιτείται 'Connector TakePOS' -OrderPrinters=Προσθέστε ένα κουμπί για να στείλετε την παραγγελία σε ορισμένους εκτυπωτές, χωρίς πληρωμή (για παράδειγμα για να στείλετε μια παραγγελία σε μια κουζίνα) +TakeposConnectorNecesary=Απαιτείται "TakePOS Connector". +OrderPrinters=Προσθέστε ένα κουμπί για να στείλετε την παραγγελία σε ορισμένους εκτυπωτές, δεν αφορά σε πληρωμή (για παράδειγμα για να στείλετε μια παραγγελία σε μια κουζίνα) NotAvailableWithBrowserPrinter=Δεν είναι διαθέσιμο όταν ο εκτυπωτής για παραλαβή έχει ρυθμιστεί στο πρόγραμμα περιήγησης SearchProduct=Αναζήτηση προϊόντος -Receipt=Παραλαβή -Header=Επί κεφαλής +Receipt=Απόδειξη +Header=Κεφαλίδα Footer=Υποσέλιδο AmountAtEndOfPeriod=Ποσό στο τέλος της περιόδου (ημέρα, μήνας ή έτος) TheoricalAmount=Θεωρητικό ποσό @@ -53,58 +53,58 @@ RealAmount=Πραγματικό ποσό CashFence=Κλείσιμο ταμείου CashFenceDone=Το ταμείο έκλεισε για την περίοδο NbOfInvoices=Πλήθος τιμολογίων -Paymentnumpad=Τύπος πλακέτας για να πληκτρολογήσετε την πληρωμή +Paymentnumpad=Τύπος Pad για εισαγωγή πληρωμής Numberspad=Αριθμητικό Pad -BillsCoinsPad=Νομίσματα και τραπεζογραμμάτια Pad -DolistorePosCategory=Δομοστοιχεία TakePOS και άλλες λύσεις POS για Dolibarr +BillsCoinsPad=Pad Νομισμάτων και τραπεζογραμμάτιων +DolistorePosCategory=Ενότητα TakePOS και άλλες λύσεις POS για Dolibarr TakeposNeedsCategories=Το TakePOS χρειάζεται τουλάχιστον μία κατηγορία προϊόντων για να λειτουργήσει -TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=Το TakePOS χρειάζεται τουλάχιστον 1 κατηγορία προϊόντων στην κατηγορία %s για να λειτουργήσει -OrderNotes=Μπορεί να προσθέσει μερικές σημειώσεις σε κάθε παραγγελία +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=Το TakePOS χρειάζεται τουλάχιστον 1 κατηγορία προϊόντων υπο την κατηγορία %s για να λειτουργήσει +OrderNotes=Δυνατότητα προσθήκης σημειώσεων σε κάθε παραγγελία CashDeskBankAccountFor=Προεπιλεγμένος λογαριασμός που θα χρησιμοποιηθεί για πληρωμές σε -NoPaimementModesDefined=Δεν έχει ρυθμιστεί η λειτουργία πρατηρίου που έχει οριστεί στη διαμόρφωση του TakePOS -TicketVatGrouped=Ομαδικός ΦΠΑ ανά τιμή σε εισιτήρια | αποδείξεις -AutoPrintTickets=Εκτυπώστε αυτόματα εισιτήρια | αποδείξεις +NoPaimementModesDefined=Δεν έχει οριστεί τρόπος πληρωμής στη διαμόρφωση του TakePOS +TicketVatGrouped=Ομαδοποίηση Φ.Π.Α. κατά συντελεστή σε εισιτήρια|αποδείξεις +AutoPrintTickets=Αυτόματη εκτύπωση εισιτηρίων|αποδείξεων PrintCustomerOnReceipts=Εκτύπωση πελάτη σε εισιτήρια | αποδείξεις -EnableBarOrRestaurantFeatures=Ενεργοποιήστε τις λειτουργίες του μπαρ ή του εστιατορίου +EnableBarOrRestaurantFeatures=Ενεργοποίηση λειτουργιών για Μπαρ ή Εστιατόριο ConfirmDeletionOfThisPOSSale=Επιβεβαιώνετε τη διαγραφή αυτής της τρέχουσας πώλησης; -ConfirmDiscardOfThisPOSSale=Θέλετε να απορρίψετε αυτήν την τρέχουσα πώληση; +ConfirmDiscardOfThisPOSSale=Θέλετε να απορρίψετε αυτήν την πώληση; History=Ιστορικό -ValidateAndClose=Επικυρώστε και κλείστε +ValidateAndClose=Επικύρωση και κλείσιμο Terminal=Τερματικό NumberOfTerminals=Αριθμός τερματικών TerminalSelect=Επιλέξτε το τερματικό που θέλετε να χρησιμοποιήσετε: -POSTicket=POS Ticket +POSTicket=Εισιτήριο POS POSTerminal=Τερματικό POS -POSModule=Μονάδα POS -BasicPhoneLayout=Χρησιμοποιήστε τη βασική διάταξη για τα τηλέφωνα +POSModule=Ενότητα POS +BasicPhoneLayout=Χρησιμοποιήστε τη βασική διάταξη για τηλέφωνα SetupOfTerminalNotComplete=Η εγκατάσταση του τερματικού %s δεν έχει ολοκληρωθεί DirectPayment=Άμεση πληρωμή DirectPaymentButton=Προσθέστε ένα κουμπί "Άμεση πληρωμή με μετρητά". InvoiceIsAlreadyValidated=Το τιμολόγιο έχει ήδη επικυρωθεί -NoLinesToBill=Δεν υπάρχουν γραμμές που να χρεώνουν -CustomReceipt=Προσαρμοσμένη παραλαβή -ReceiptName=Όνομα παραλαβής -ProductSupplements=Διαχειριστείτε τα συμπληρώματα προϊόντων -SupplementCategory=Συμπλήρωμα κατηγορίας +NoLinesToBill=Δεν υπάρχουν γραμμές για χρέωση +CustomReceipt=Προσαρμοσμένη απόδειξη +ReceiptName=Όνομα απόδειξης +ProductSupplements=Διαχείριση τα συμπληρώματα προϊόντων +SupplementCategory=Κατηγορία συμπληρώματος ColorTheme=Χρώμα θέματος Colorful=Πολύχρωμα HeadBar=Μπάρα Κεφαλίδας SortProductField=Πεδίο διαλογής προϊόντων -Browser=Browser +Browser=Περιηγητής BrowserMethodDescription=Απλή και εύκολη εκτύπωση απόδειξης. Μόνο μερικές παράμετροι για τη διαμόρφωση της απόδειξης. Εκτύπωση μέσω προγράμματος περιήγησης. -TakeposConnectorMethodDescription=Εξωτερική μονάδα με επιπλέον χαρακτηριστικά. Δυνατότητα εκτύπωσης από το cloud. +TakeposConnectorMethodDescription=Εξωτερική ενότητα με επιπλέον χαρακτηριστικά. Δυνατότητα εκτύπωσης από το cloud. PrintMethod=Μέθοδος εκτύπωσης -ReceiptPrinterMethodDescription=Δυνατή μέθοδος με πολλές παραμέτρους. Πλήρως προσαρμόσιμο με πρότυπα. Ο διακομιστής που φιλοξενεί την εφαρμογή δεν μπορεί να βρίσκεται στο Cloud (πρέπει να έχει πρόσβαση στους εκτυπωτές του δικτύου σας). +ReceiptPrinterMethodDescription=Ισχυρή μέθοδος με πολλές παραμέτρους. Πλήρως προσαρμόσιμο με πρότυπα. Ο διακομιστής που φιλοξενεί την εφαρμογή δεν μπορεί να βρίσκεται στο Cloud (πρέπει να έχει πρόσβαση στους εκτυπωτές του δικτύου σας). ByTerminal=Από τερματικό -TakeposNumpadUsePaymentIcon=Χρησιμοποιήστε το εικονίδιο αντί για το κείμενο στα κουμπιά πληρωμής του πληκτρολογίου numpad +TakeposNumpadUsePaymentIcon=Χρήση εικονιδίου αντί για κείμενο στα κουμπιά πληρωμής του numpad CashDeskRefNumberingModules=Ενότητα αρίθμησης για πωλήσεις POS -CashDeskGenericMaskCodes6 =  
{TN} ετικέτα χρησιμοποιείται για την προσθήκη του αριθμού τερματικού -TakeposGroupSameProduct=Ομαδοποιήστε τις ίδιες σειρές προϊόντων +CashDeskGenericMaskCodes6 =
{TN} Η ετικέτα χρησιμοποιείται για την προσθήκη του αριθμού τερματικού +TakeposGroupSameProduct=Ομαδοποίηση των ίδιων σειρών προϊόντων StartAParallelSale=Ξεκινήστε μια νέα παράλληλη πώληση SaleStartedAt=Η πώληση ξεκίνησε στο %s -ControlCashOpening=Ανοίξτε το αναδυόμενο παράθυρο "Έλεγχος ταμείου" κατά το άνοιγμα του POS +ControlCashOpening=Άνοιγμα του αναδυόμενου παραθύρου "Έλεγχος ταμείου" κατά το άνοιγμα του POS CloseCashFence=Κλείσιμο ταμείου -CashReport=Έκθεση μετρητών +CashReport=Αναφορά μετρητών MainPrinterToUse=Κύριος εκτυπωτής προς χρήση OrderPrinterToUse=Παραγγείλετε τον εκτυπωτή για χρήση MainTemplateToUse=Κύριο πρότυπο για χρήση @@ -119,20 +119,21 @@ Appearance=Εμφάνιση HideCategoryImages=Απόκρυψη εικόνων κατηγορίας HideProductImages=Απόκρυψη εικόνων προϊόντων NumberOfLinesToShow=Αριθμός γραμμών εικόνων προς εμφάνιση -DefineTablePlan=Καθορισμός σχεδίου πινάκων +DefineTablePlan=Καθορισμός σχεδίου τραπεζιών GiftReceiptButton=Προσθέστε ένα κουμπί "Απόδειξη δώρου". GiftReceipt=Απόδειξη δώρου -ModuleReceiptPrinterMustBeEnabled=Η εφαρμογή/ενότητα Receipt Printer πρέπει να έχει ενεργοποιηθεί πρώτα +ModuleReceiptPrinterMustBeEnabled=Η ενότητα Receipt Printer πρέπει να έχει ενεργοποιηθεί πρώτα AllowDelayedPayment=Να επιτρέπεται η καθυστερημένη πληρωμή PrintPaymentMethodOnReceipts=Εκτύπωση τρόπου πληρωμής σε εισιτήρια|αποδείξεις WeighingScale=Ζυγαριά -ShowPriceHT = Εμφάνιση της στήλης με την τιμή χωρίς φόρο (στην οθόνη) -ShowPriceHTOnReceipt = Εμφάνιση της στήλης με την τιμή χωρίς φόρο (στην απόδειξη) +ShowPriceHT = Εμφάνιση της στήλης με την τιμή χωρίς Φ.Π.Α. (στην οθόνη) +ShowPriceHTOnReceipt = Εμφάνιση της στήλης με την τιμή χωρίς Φ.Π.Α. (στην απόδειξη) CustomerDisplay=Εμφάνιση πελάτη SplitSale=Split sale -PrintWithoutDetailsButton=Προσθέστε το κουμπί "Εκτύπωση χωρίς λεπτομέρειες". +PrintWithoutDetailsButton=Προσθηκη κουμπιού "Εκτύπωση χωρίς λεπτομέρειες". PrintWithoutDetailsLabelDefault=Ετικέτα γραμμής από προεπιλογή στην εκτύπωση χωρίς λεπτομέρειες PrintWithoutDetails=Εκτύπωση χωρίς λεπτομέρειες -YearNotDefined=Το έτος δεν ορίστηκε +YearNotDefined=Το έτος δεν έχει οριστεί TakeposBarcodeRuleToInsertProduct=Κανόνας γραμμικού κώδικα για την εισαγωγή προϊόντος TakeposBarcodeRuleToInsertProductDesc=Κανόνας εξαγωγής αναφοράς προϊόντος + ποσότητας από σαρωμένο γραμμωτό κώδικα.
Εάν είναι κενό (προεπιλεγμένη τιμή), η εφαρμογή θα χρησιμοποιήσει τον πλήρη γραμμωτό κώδικα που έχει σαρωθεί για να βρει το προϊόν.

Αν οριστεί, η σύνταξη πρέπει να είναι:
ref:NB+qu:NB+qd:NB+αλλα:NB
όπου ΝΒ είναι ο αριθμός των χαρακτήρων που θα χρησιμοποιηθεί για την εξαγωγή δεδομένων από το σαρωμένα barcode με:
  • ref: αναφορά προϊόντος
  • qu : ποσότητα κατά την εισαγωγή στοιχείου (μονάδες)
  • qd : ποσότητα κατά την εισαγωγή στοιχείου (δεκαδικά)
  • άλλα : άλλοι χαρακτήρες
+AlreadyPrinted=Ήδη εκτυπωμένο diff --git a/htdocs/langs/el_GR/categories.lang b/htdocs/langs/el_GR/categories.lang index 4c298f875ef..6e3d6276045 100644 --- a/htdocs/langs/el_GR/categories.lang +++ b/htdocs/langs/el_GR/categories.lang @@ -8,15 +8,15 @@ In=Μέσα AddIn=Προσθήκη σε modify=Αλλαγή Classify=Ταξινόμηση -CategoriesArea=Πεδίο Ετικέτες/Κατηγορίες -ProductsCategoriesArea=Πεδίο Προϊόντα/Υπηρεσίες Ετικέτες/Κατηγορίες -SuppliersCategoriesArea=Περιοχή ετικετών/κατηγοριών προμηθευτή -CustomersCategoriesArea=Περιοχή ετικετών/κατηγοριών πελατών -MembersCategoriesArea=Περιοχή ετικετών/κατηγοριών μελών -ContactsCategoriesArea=Περιοχή ετικετών/κατηγοριών επαφών -AccountsCategoriesArea=Περιοχή ετικετών/κατηγοριών τραπεζικού λογαριασμού -ProjectsCategoriesArea=Πεδίο Ετικετών/Κατηγοριών έργου -UsersCategoriesArea=Περιοχή ετικετών/κατηγοριών χρήστη +CategoriesArea=Τομέας ετικετών/κατηγοριών +ProductsCategoriesArea=Τομέας ετικετών/κατηγοριών προϊόντων/υπηρεσιών +SuppliersCategoriesArea=Τομέας ετικετών/κατηγοριών προμηθευτή +CustomersCategoriesArea=Τομέας ετικετών/κατηγοριών πελατών +MembersCategoriesArea=Τομέας ετικετών/κατηγοριών μελών +ContactsCategoriesArea=Τομέας ετικετών/κατηγοριών επαφών +AccountsCategoriesArea=Τομέας ετικετών/κατηγοριών τραπεζικού λογαριασμού +ProjectsCategoriesArea=Τομέας ετικετών/κατηγοριών έργου +UsersCategoriesArea=Τομέας ετικετών/κατηγοριών χρήστη SubCats=Υποκατηγορίες CatList=Λίστα Ετικετών/Κατηγοριών CatListAll=Λίστα ετικετών/κατηγοριών (όλοι οι τύποι) @@ -31,71 +31,73 @@ FoundCats=Εύρεση ετικετών/κατηγοριών ImpossibleAddCat=Αδυναμία προσθήκης της Ετικέτας/Κατηγορίας %s WasAddedSuccessfully=%s προστέθηκε με επιτυχία. ObjectAlreadyLinkedToCategory=Το στοιχείο έχει ήδη συνδεθεί με αυτή την ετικέτα/κατηγορία -ProductIsInCategories=Το προϊόν/υπηρεσία έχει ήδη συνδεθεί με τις παρακάτω ετικέτες/κατηγορίες -CompanyIsInCustomersCategories=This third party is linked to following customers/prospects tags/categories -CompanyIsInSuppliersCategories=Αυτό το τρίτο μέρος συνδέεται με τις ακόλουθες ετικέτες / κατηγορίες πωλητών -MemberIsInCategories=This member is linked to following members tags/categories -ContactIsInCategories=Αυτή η επαφή είναι συνδεδεμένη με τις ακόλουθες ετικέτες/κατηγορίες -ProductHasNoCategory=This product/service is not in any tags/categories -CompanyHasNoCategory=This third party is not in any tags/categories -MemberHasNoCategory=This member is not in any tags/categories -ContactHasNoCategory=Αυτή η επαφή δεν είναι συνδεδεμένη με καμία ετικέτα/κατηγορία -ProjectHasNoCategory=This project is not in any tags/categories +ProductIsInCategories=Το προϊόν/η υπηρεσία συνδέεται με τις ακόλουθες ετικέτες/κατηγορίες +CompanyIsInCustomersCategories=Αυτό το τρίτο μέρος συνδέεται με τις ακόλουθες ετικέτες/κατηγορίες πελατών/προοπτικών +CompanyIsInSuppliersCategories=Αυτό το τρίτο μέρος συνδέεται με τις ακόλουθες ετικέτες / κατηγορίες προμηθευτών +MemberIsInCategories=Αυτό το μέλος συνδέεται με τις ακόλουθες ετικέτες/κατηγορίες μελών +ContactIsInCategories=Αυτή η επαφή συνδέεται με τις ακόλουθες ετικέτες/κατηγορίες επαφών +ProductHasNoCategory=Αυτό το προϊόν/υπηρεσία δεν περιλαμβάνεται σε καμία ετικέτα/κατηγορία +CompanyHasNoCategory=Αυτό το τρίτο μέρος δεν ανήκει σε καμιά ετικέτα/κατηγορία +MemberHasNoCategory=Αυτό το μέλος δεν ανήκει σε καμία ετικέτα/κατηγορία +ContactHasNoCategory=Αυτή η επαφή δεν ανήκει σε καμία ετικέτα/κατηγορία +ProjectHasNoCategory=Αυτό το έργο δεν ανήκει σε καμία ετικέτα/κατηγορία ClassifyInCategory=Προσθήκη σε ετικέτα/κατηγορία NotCategorized=Χωρίς ετικέτα/κατηγορία -CategoryExistsAtSameLevel=Η κατηγορία αυτή υπάρχει ήδη με αυτό το όνομα +CategoryExistsAtSameLevel=Αυτή η κατηγορία υπάρχει ήδη με αυτήν την αναφορά ContentsVisibleByAllShort=Περιεχόμενα ορατά από όλους ContentsNotVisibleByAllShort=Περιεχόμενα μη ορατά από όλους DeleteCategory=Διαγραφή ετικέτας/κατηγορίας ConfirmDeleteCategory=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την ετικέτα/κατηγορία; NoCategoriesDefined=Δεν ορίστηκε ετικέτα/κατηγορία SuppliersCategoryShort=Ετικέτα / κατηγορία προμηθευτών -CustomersCategoryShort=Πελάτες ετικέτα/κατηγορία -ProductsCategoryShort=Προϊόντα ετικέτα/κατηγορία -MembersCategoryShort=Μέλη ετικέτα/κατηγορία +CustomersCategoryShort=Ετικέτα/κατηγορία πελατών +ProductsCategoryShort=Ετικέτα/κατηγορία προϊόντων +MembersCategoryShort=Ετικέτα/κατηγορία μελών SuppliersCategoriesShort=Ετικέτες / κατηγορίες πωλητών -CustomersCategoriesShort=Πελάτες ετικέτες/κατ +CustomersCategoriesShort=Ετικέτες/κατηγορίες πελατών ProspectsCategoriesShort=Ετικέτες/Κατηγορίες Προοπτικών -CustomersProspectsCategoriesShort=Cust./Prosp. ετικέτες / κατηγορίες -ProductsCategoriesShort=Προϊόντα ετικέτες/κατ -MembersCategoriesShort=Μέλη ετικέτες/κατ +CustomersProspectsCategoriesShort=Ετικέτες/κατηγορίες Πελ./Προοπ. +ProductsCategoriesShort=Ετικέτες/κατηγορίες προϊόντων +MembersCategoriesShort=Ετικέτες/κατηγορίες μελών ContactCategoriesShort=Ετικέτες/Κατηγορίας Επαφών AccountsCategoriesShort=Ετικέτες/Κατηγορίες Λογαριασμών -ProjectsCategoriesShort=Projects tags/categories +ProjectsCategoriesShort=Ετικέτες/κατηγορίες έργων UsersCategoriesShort=Ετικέτες / κατηγορίες χρηστών StockCategoriesShort=Ετικέτες / κατηγορίες αποθήκης ThisCategoryHasNoItems=Αυτή η κατηγορία δεν περιέχει στοιχεία. -CategId=Ετικέτα/κατηγορία id +CategId=Αναγνωριστικό ετικέτας/κατηγορίας ParentCategory=Γονική ετικέτα/κατηγορία -ParentCategoryLabel=Ταμπέλα γονικής ετικέτας/κατηγορίας +ParentCategoryLabel=Ετικέτα γονικής ετικέτας/κατηγορίας CatSupList=Λίστα ετικετών/κατηγοριών προμηθευτών -CatCusList=Λίστα ετικετών/κατηγοριών πελατών/υποψήφιων πελατών -CatProdList=Λίστα προϊόντων ετικέτες/κατηγορίες -CatMemberList=Λίστα μελών ετικέτες/κατηγορίες +CatCusList=Λίστα ετικετών/κατηγοριών πελατών/προοπτικών +CatProdList=Λίστα ετικετών/κατηγοριών προϊόντων +CatMemberList=Λίστα ετικετών/κατηγοριών μελών CatContactList=Λίστα ετικετών/κατηγοριών επαφών CatProjectsList=Λίστα ετικετών/κατηγοριών έργων CatUsersList=Λίστα ετικετών/κατηγοριών χρηστών CatSupLinks=Σύνδεσμοι μεταξύ προμηθευτών και ετικετών/κατηγοριών -CatCusLinks=Συνδέσεις μεταξύ πελατών/προοπτικών και ετικετών/κατηγοριών +CatCusLinks=Σύνδεσμοι μεταξύ πελατών/προοπτικών και ετικετών/κατηγοριών CatContactsLinks=Σύνδεσμοι μεταξύ επαφών / διευθύνσεων και ετικετών / κατηγοριών -CatProdLinks=Συνδέσεις μεταξύ προϊόντων/υπηρεσιών και ετικετών/κατηγοριών +CatProdLinks=Σύνδεσμοι μεταξύ προϊόντων/υπηρεσιών και ετικετών/κατηγοριών CatMembersLinks=Σύνδεσμοι μεταξύ μελών και ετικετών/κατηγοριών -CatProjectsLinks=Links between projects and tags/categories +CatProjectsLinks=Σύνδεσμοι μεταξύ έργων και ετικετών/κατηγοριών CatUsersLinks=Σύνδεσμοι μεταξύ χρηστών και ετικετών/κατηγοριών DeleteFromCat=Αφαίρεση αυτής της ετικέτας/κατηγορίας ExtraFieldsCategories=Συμπληρωματικά χαρακτηριστικά CategoriesSetup=Ρύθμιση ετικετών/κατηγοριών -CategorieRecursiv=Αυτόματη σύνδεση με μητρική ετικέτα/κατηγορία -CategorieRecursivHelp=Εάν είναι ενεργοποιημένη η επιλογή, όταν προσθέσετε ένα προϊόν σε μια υποκατηγορία, το προϊόν θα προστεθεί επίσης στην κατηγορία γονέων. +CategorieRecursiv=Αυτόματη σύνδεση με γονική ετικέτα/κατηγορία +CategorieRecursivHelp=Εάν η επιλογή είναι ενεργοποιημένη, όταν προσθέτετε ένα προϊόν σε μια υποκατηγορία, το προϊόν θα προστίθεται επίσης στη γονική κατηγορία. AddProductServiceIntoCategory=Προσθέστε το ακόλουθο προϊόν/υπηρεσία AddCustomerIntoCategory=Εκχώρηση κατηγορίας στον πελάτη AddSupplierIntoCategory=Εκχώρηση κατηγορίας στον προμηθευτή AssignCategoryTo=Εκχώρηση κατηγορίας σε ShowCategory=Εμφάνιση ετικέτας/κατηγορίας -ByDefaultInList=By default in list +ByDefaultInList=Από προεπιλογή στη λίστα ChooseCategory=Επιλέξτε κατηγορία StocksCategoriesArea=Κατηγορίες Αποθήκης +TicketsCategoriesArea=Κατηγορίες ticket ActionCommCategoriesArea=Κατηγορίες εκδηλώσεων WebsitePagesCategoriesArea=Κατηγορίες Σελίδας-Κοντέινερ KnowledgemanagementsCategoriesArea=Κατηγορίες άρθρου KM UseOrOperatorForCategories=Χρησιμοποιήστε τον τελεστή 'OR' για κατηγορίες +AddObjectIntoCategory=Προσθήκη αντικειμένου στην κατηγορία diff --git a/htdocs/langs/el_GR/commercial.lang b/htdocs/langs/el_GR/commercial.lang index 61c4069b15c..746c112fe41 100644 --- a/htdocs/langs/el_GR/commercial.lang +++ b/htdocs/langs/el_GR/commercial.lang @@ -1,81 +1,81 @@ # Dolibarr language file - Source file is en_US - commercial Commercial=Εμπορικό -CommercialArea=Περιοχή Εμπορικού +CommercialArea=Τομέας Εμπορικού Customer=Πελάτης Customers=Πελάτες Prospect=Προοπτική Prospects=Προοπτικές -DeleteAction=Διαγραφή ενός συμβάντος +DeleteAction=Διαγραφή μιας ενέργειας NewAction=Νέο συμβάν AddAction=Δημιουργία συμβάντος AddAnAction=Δημιουργία συμβάντος -AddActionRendezVous=Δημιουργήστε μια εκδήλωση ραντεβού -ConfirmDeleteAction=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το γεγονός; -CardAction=Καρτέλα Συμβάντος +AddActionRendezVous=Δημιουργία ραντεβού +ConfirmDeleteAction=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την ενέργεια; +CardAction=Καρτέλα Ενεργειών ActionOnCompany=Σχετιζόμενη επιχείριση ActionOnContact=Σχετιζόμενη επαφή TaskRDVWith=Συνάντηση με %s -ShowTask=Εμφάνιση Εργασίας -ShowAction=Εμφάνιση Συμβάντος +ShowTask=Εμφάνιση εργασίας +ShowAction=Εμφάνιση ενέργειας ActionsReport=Αναφορά Ενεργειών -ThirdPartiesOfSaleRepresentative=Στοιχείο με τον αντιπρόσωπο πωλήσεων -SaleRepresentativesOfThirdParty=Εκπρόσωποι πωλήσεων τρίτου μέρους +ThirdPartiesOfSaleRepresentative=Τρίτα μέρη με αντιπρόσωπο πωλήσεων +SaleRepresentativesOfThirdParty=Αντιπρόσωποι πωλήσεων τρίτων SalesRepresentative=Αντιπρόσωπος πωλήσεων SalesRepresentatives=Αντιπρόσωποι πωλήσεων -SalesRepresentativeFollowUp=Αντιπρόσωπο πωλήσεων (παρακολούθηση) +SalesRepresentativeFollowUp=Αντιπρόσωπος πωλήσεων (παρακολούθηση) SalesRepresentativeSignature=Αντιπρόσωπος πωλήσεων (υπογραφή) -NoSalesRepresentativeAffected=No particular sales representative affected +NoSalesRepresentativeAffected=Δεν έχει οριστεί συγκεκριμένος αντιπρόσωπος πωλήσεων ShowCustomer=Εμφάνιση Πελάτη ShowProspect=Εμφάνιση Προοπτικής ListOfProspects=Λίστα Προοπτικών ListOfCustomers=Λίστα Πελατών LastDoneTasks=Πιο πρόσφατες %s ολοκληρωμένες πράξεις LastActionsToDo=Παλαιότερες %s ημιτελείς ενέργειες -DoneAndToDoActions=Ολοκληρωμένα και τρέχοντα συμβάντα -DoneActions=Ολοκληρωμένα συμβάντα -ToDoActions=Ημιτελή συμβάντα -SendPropalRef=Υποβολή των προσφορών %s +DoneAndToDoActions=Ενέργειες ολοκληρωμένες και προς εκτέλεση +DoneActions=Ολοκληρωμένες ενέργειες +ToDoActions=Ημιτελείς ενέργειες +SendPropalRef=Υποβολή της προσφοράς %s SendOrderRef=Υποβολή της παραγγελίας %s StatusNotApplicable=Χωρίς δυνατότητα εφαρμογής -StatusActionToDo=Να γίνουν +StatusActionToDo=Προς εκτέλεση StatusActionDone=Ολοκληρωμένη StatusActionInProcess=Σε εξέλιξη -TasksHistoryForThisContact=Γεγονότα για το πρόσωπο επικοινωνίας +TasksHistoryForThisContact=Ενέργειες αυτής της επαφής LastProspectDoNotContact=Να μην γίνει επικοινωνία LastProspectNeverContacted=Δεν έχει γίνει επικοινωνία LastProspectToContact=Να γίνει επικοινωνία LastProspectContactInProcess=Επικοινωνία σε εξέλιξη -LastProspectContactDone=Η επικοινωνία έγινε +LastProspectContactDone=Η επαφή ολοκληρώθηκε ActionAffectedTo=Η ενέργεια αφορά τον/την ActionDoneBy=Η ενέργεια έγινε από τον/την ActionAC_TEL=Τηλεφώνημα -ActionAC_FAX=Αποστολή FAX +ActionAC_FAX=Αποστολή fax ActionAC_PROP=Αποστολή προσφορας με email ActionAC_EMAIL=Αποστολή email -ActionAC_EMAIL_IN=Υποδοχή μηνυμάτων ηλεκτρονικού ταχυδρομείου +ActionAC_EMAIL_IN=Λήψη email ActionAC_RDV=Συναντήσεις -ActionAC_INT=Παρέμβαση on site -ActionAC_FAC=Αποστολή Τιμολογίου στον πελάτη με email -ActionAC_REL=Αποστολή Τιμολογίου στον πελάτη με email (υπενθύμιση) +ActionAC_INT=Eπί τόπου παρέμβαση +ActionAC_FAC=Αποστολή τιμολογίου πελάτη μέσω email +ActionAC_REL=Αποστολή τιμολογίου πελάτη μέσω email (υπενθύμιση) ActionAC_CLO=Κλείσιμο ActionAC_EMAILING=Αποστολή μαζικών email -ActionAC_COM=Στείλτε την παραγγελία πώλησης μέσω ταχυδρομείου -ActionAC_SHIP=Αποστολή αποστολής με e-mail -ActionAC_SUP_ORD=Αποστολή εντολής αγοράς μέσω ταχυδρομείου +ActionAC_COM=Αποστολή παραγγελίας πωλήσεων μέσω ταχυδρομείου +ActionAC_SHIP=Αποστολή μέσω ταχυδρομείου +ActionAC_SUP_ORD=Αποστολή παραγγελίας αγοράς μέσω ταχυδρομείου ActionAC_SUP_INV=Αποστολή τιμολογίου προμηθευτή μέσω ταχυδρομείου ActionAC_OTH=Άλλο ActionAC_OTH_AUTO=Άλλος τύπος ActionAC_MANUAL=Χειροκίνητα εισηγμένα συμβάντα -ActionAC_AUTO=Αυτόματα εισηγμένα συμβάντα +ActionAC_AUTO=Αυτόματα εισαγμένα συμβάντα ActionAC_OTH_AUTOShort=Άλλο -ActionAC_EVENTORGANIZATION=Εκδηλώσεις οργάνωσης εκδηλώσεων +ActionAC_EVENTORGANIZATION=Ενέργειες οργάνωσης εκδηλώσης Stats=Στατιστικά πωλήσεων StatusProsp=Κατάσταση προοπτικής -DraftPropals=Σχέδιο εμπορικών προσφορών +DraftPropals=Προσχέδιο προσφορών NoLimit=Κανένα όριο ToOfferALinkForOnlineSignature=Σύνδεσμος για ηλεκτρονική υπογραφή -WelcomeOnOnlineSignaturePage=Καλώς ήρθατε στη σελίδα για να δεχτείτε εμπορικές προτάσεις από %s -ThisScreenAllowsYouToSignDocFrom=Αυτή η οθόνη σάς επιτρέπει να δεχτείτε και να υπογράψετε ή να αρνηθείτε μια πρόταση / εμπορική πρόταση -ThisIsInformationOnDocumentToSign=Αυτές είναι οι πληροφορίες σχετικά με το έγγραφο που αποδέχεστε ή απορρίπτετε +WelcomeOnOnlineSignaturePage=Καλώς ήρθατε στη σελίδα αποδοχής εμπορικών προτάσεων από %s +ThisScreenAllowsYouToSignDocFrom=Αυτή η οθόνη σάς επιτρέπει να αποδεχτείτε και να υπογράψετε ή να αρνηθείτε μια προσφορά +ThisIsInformationOnDocumentToSign=Αυτές είναι οι πληροφορίες σχετικά με το έγγραφο προς αποδοχή ή απορρίψη SignatureProposalRef=Υπογραφή προσφοράς / εμπορικής πρότασης %s -FeatureOnlineSignDisabled=Χαρακτηριστικό για απενεργοποίηση υπογραφής σε απευθείας σύνδεση ή δημιουργία εγγράφου προτού ενεργοποιηθεί η δυνατότητα +FeatureOnlineSignDisabled=Η δυνατότητα για ηλεκτρονική υπογραφή απενεργοποιήθηκε ή δημιουργήθηκε έγγραφο πριν από την ενεργοποίηση της δυνατότητας diff --git a/htdocs/langs/el_GR/companies.lang b/htdocs/langs/el_GR/companies.lang index af84c23a449..661a9fe9688 100644 --- a/htdocs/langs/el_GR/companies.lang +++ b/htdocs/langs/el_GR/companies.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - companies ErrorCompanyNameAlreadyExists=Το όνομα τις εταιρίας %s υπάρχει ήδη. Επιλέξτε κάποιο άλλο. ErrorSetACountryFirst=Πρώτα πρέπει να οριστεί η χώρα -SelectThirdParty=Επιλέξτε ένα Πελ./Προμ. +SelectThirdParty=Επιλογή τρίτου μέρους ConfirmDeleteCompany=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την εταιρία και όλες τις σχετικές πληροφορίες αυτής; -DeleteContact=Διαγραφή προσώπου επικοινωνίας +DeleteContact=Διαγραφή επαφής / διεύθυνσης ConfirmDeleteContact=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την επαφή και όλες τις σχετικές πληροφορίες αυτής; MenuNewThirdParty=Νέο τρίτο μέρος MenuNewCustomer=Νέος πελάτης @@ -13,26 +13,26 @@ MenuNewPrivateIndividual=Νέος Ιδιώτης NewCompany=Νέα εταιρία ( προοπτική, πελάτης, προμηθευτής) NewThirdParty=Νέο τρίτο μέρος (προοπτική, πελάτης, προμηθευτής) CreateDolibarrThirdPartySupplier=Δημιουργία τρίτου μέρους (προμηθευτής) -CreateThirdPartyOnly=Create thirdpary +CreateThirdPartyOnly=Δημιουργία τρίτου μέρους CreateThirdPartyAndContact=Δημιουργία τρίτου μέρους + θυγατρικής επαφής -ProspectionArea=Περιοχή προοπτικής -IdThirdParty=Αναγνωριστικό +ProspectionArea=Τομέας προοπτικών +IdThirdParty=Αναγνωριστικό τρίτου μέρους IdCompany=Αναγνωριστικό εταιρίας -IdContact=Αναγνωριστικό αντιπροσώπου +IdContact=Αναγνωριστικό επαφής ThirdPartyAddress=Διεύθυνση τρίτου μέρους ThirdPartyContacts=Επαφές τρίτου μέρους ThirdPartyContact=Επαφή / διεύθυνση τρίτου μέρους Company=Εταιρία CompanyName=Όνομα εταιρίας -AliasNames=Ψευδώνυμο (εμπορικό, εμπορικό σήμα, ...) +AliasNames=Διακριτικός τίτλος (εμπορικό, εμπορικό σήμα, ...) AliasNameShort=Διακριτικός τίτλος Companies=Εταιρίες -CountryIsInEEC=Η χώρα είναι εντός της Ευρωπαϊκής Οικονομικής Κοινότητας +CountryIsInEEC=Η χώρα βρίσκεται εντός της Ευρωπαϊκής Οικονομικής Κοινότητας PriceFormatInCurrentLanguage=Μορφή εμφάνισης τιμής στην τρέχουσα γλώσσα και νόμισμα ThirdPartyName=Όνομα τρίτου μέρους -ThirdPartyEmail=Ηλεκτρονικό ταχυδρομείο τρίτου μέρους +ThirdPartyEmail=Email τρίτου μέρους ThirdParty=Τρίτο μέρος -ThirdParties=Πελάτες/Συνεργάτες +ThirdParties=Πελάτες/Προμηθευτές ThirdPartyProspects=Προοπτικές ThirdPartyProspectsStats=Προοπτικές ThirdPartyCustomers=Πελάτες @@ -41,14 +41,14 @@ ThirdPartyCustomersWithIdProf12=Πελάτες με %s ή %s ThirdPartySuppliers=Προμηθευτές ThirdPartyType=Τύπος τρίτου μέρους Individual=Ιδιώτης -ToCreateContactWithSameName=Θα δημιουργήσει αυτόματα μια επαφή / διεύθυνση με τις ίδιες πληροφορίες με το τρίτο μέρος στο τρίτο μέρος. Στις περισσότερες περιπτώσεις, ακόμη και αν το τρίτο σας πρόσωπο είναι φυσικό πρόσωπο, είναι αρκετό να δημιουργηθεί ένα τρίτο μέρος μόνο του. +ToCreateContactWithSameName=Θα δημιουργήσει αυτόματα μια επαφή / διεύθυνση με τις ίδιες πληροφορίες με το τρίτο μέρος στην καρτέλα τρίτου μέρους. Στις περισσότερες περιπτώσεις, ακόμη και αν το τρίτο μέρος είναι φυσικό πρόσωπο, αρκεί απλά η δημιουργία του τρίτου μέρους. ParentCompany=Γονική εταιρία Subsidiaries=Θυγατρικές ReportByMonth=Αναφορά ανά Μήνα ReportByCustomers=Αναφορά ανά Πελάτη ReportByThirdparties=Αναφορά ανά Τρίτο Μέρος ReportByQuarter=Αναφορά ανά Τιμή -CivilityCode=Προσφωνήσεις +CivilityCode=Προσφώνηση RegisteredOffice=Έδρα της εταιρείας Lastname=Επίθετο Firstname=Όνομα @@ -59,14 +59,15 @@ UserTitle=Τίτλος NatureOfThirdParty=Φύση του τρίτου μέρους NatureOfContact=Φύση της επαφής Address=Διεύθυνση -State=Πολιτεία/Επαρχία -StateCode=Κωδικός κράτους / επαρχίας -StateShort=Κατάσταση +State=Νομός/Δήμος +StateId=Αναγνωριστικό Νομού +StateCode=Κωδικός Νομού / Δήμου +StateShort=Νομός Region=Περιοχή -Region-State=Περιοχή - Κράτος +Region-State=Περιοχή - Δήμος Country=Χώρα CountryCode=Κωδικός χώρας -CountryId=Id Χώρας +CountryId=Αναγνωριστικό χώρας Phone=Τηλέφωνο PhoneShort=Τηλέφωνο Skype=Skype @@ -75,7 +76,7 @@ Chat=Συνομιλία PhonePro=Επαγγ. τηλέφωνο PhonePerso=Προσωπ. τηλέφωνο PhoneMobile=Κιν. τηλέφωνο -No_Email=Απορρίψτε μαζικά μηνύματα ηλεκτρονικού ταχυδρομείου +No_Email=Απόρριψη μαζικών Email Fax=Φαξ Zip=Ταχ. Κώδικας Town=Πόλη @@ -85,14 +86,14 @@ DefaultLang=Προεπιλεγμένη γλώσσα VATIsUsed=Φόρος πωλήσεων που χρησιμοποιήθηκε VATIsUsedWhenSelling=Αυτό προσδιορίζει αν το τρίτο μέρος περιλαμβάνει φόρο πώλησης ή όχι όταν εκδίδει τιμολόγιο στους δικούς του πελάτες VATIsNotUsed=Ο φόρος επί των πωλήσεων δεν χρησιμοποιείται -CopyAddressFromSoc=Αντιγράψτε τη διεύθυνση από στοιχεία τρίτου μέρους -ThirdpartyNotCustomerNotSupplierSoNoRef=Τρίτο μέρος ούτε πελάτης ούτε πωλητής, κανένα διαθέσιμο αντικείμενο αναφοράς -ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Τρίτο μέρος ούτε πελάτης ούτε πωλητής, οι εκπτώσεις δεν είναι διαθέσιμες -PaymentBankAccount=Payment bank account -OverAllProposals=Total proposals -OverAllOrders=Total orders -OverAllInvoices=Total invoices -OverAllSupplierProposals=Total price requests +CopyAddressFromSoc=Αντιγραφή διεύθυνσης από τα στοιχεία τρίτου μέρους +ThirdpartyNotCustomerNotSupplierSoNoRef=Το τρίτο μέρος δεν είναι πελάτης ή προμηθευτής, κανένα διαθέσιμο αντικείμενο αναφοράς +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Το τρίτο μέρος δεν είναι πελάτης ή προμηθευτής, δεν υπάρχουν διαθέσιμες εκπτώσεις +PaymentBankAccount=Τραπεζικός λογαριασμός πληρωμών +OverAllProposals=Σύνολο Προσφορών +OverAllOrders=Σύνολο Παραγγελιών +OverAllInvoices=Σύνολο Τιμολογίων +OverAllSupplierProposals=Σύνολο Αιτημάτων τιμής ##### Local Taxes ##### LocalTax1IsUsed=Χρησιμοποιήστε το δεύτερο φόρο LocalTax1IsUsedES= RE is used @@ -101,24 +102,24 @@ LocalTax2IsUsed=Χρησιμοποιήστε τον τρίτο φόρο LocalTax2IsUsedES= IRPF is used LocalTax2IsNotUsedES= IRPF is not used WrongCustomerCode=Άκυρος κωδικός πελάτη -WrongSupplierCode=Ο κωδικός προμηθευτή είναι άκυρος -CustomerCodeModel=Μοντέλου κωδικού πελάτη -SupplierCodeModel=Πρότυπο κώδικα προμηθευτή +WrongSupplierCode=Άκυρος κωδικός προμηθευτή +CustomerCodeModel=Μοντέλο κωδικού πελάτη +SupplierCodeModel=Μοντέλο κωδικού προμηθευτή Gencod=Barcode GencodBuyPrice=Barcode αναφοράς τιμής ##### Professional ID ##### ProfId1Short=Επάγγελμα ProfId2Short=Δ.Ο.Υ. -ProfId3Short=Prof. id 3 -ProfId4Short=Prof. id 4 -ProfId5Short=Καθ. id 5 -ProfId6Short=Επαγγελματική ταυτότητα 6 +ProfId3Short=Επαγγ. ταυτ. 3 +ProfId4Short=Επαγγ. ταυτ. 4 +ProfId5Short=Επαγγ. ταυτ. 5 +ProfId6Short=Επαγγ. ταυτ. 6 ProfId1=ΕΠΑΓΓΕΛΜΑ ProfId2=Δ.Ο.Υ. -ProfId3=Επαγγελματική ταυτότητα 3 -ProfId4=Επαγγελματική ταυτότητα 4 -ProfId5=Επαγγελματική ταυτότητα 5 -ProfId6=Επαγγελματική ταυτότητα 6 +ProfId3=ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΤΑΥΤΟΤΗΤΑ 3 +ProfId4=ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΤΑΥΤΟΤΗΤΑ 4 +ProfId5=ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΤΑΥΤΟΤΗΤΑ 5 +ProfId6=ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΤΑΥΤΟΤΗΤΑ 6 ProfId1AR=Prof Id 1 (CUIT/CUIL) ProfId2AR=Prof Id 2 (Revenu brutes) ProfId3AR=- @@ -155,7 +156,7 @@ ProfId3CH=Prof Id 1 (Federal number) ProfId4CH=Prof Id 2 (Αριθμός Εμπορικής Εγγραφής) ProfId5CH=Αριθμός EORI ProfId6CH=- -ProfId1CL=Ο καθηγητής Id 1 (RUT) +ProfId1CL=Prof Id 1 (R.U.T.) ProfId2CL=- ProfId3CL=- ProfId4CL=- @@ -163,17 +164,17 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Πιστοποιητικό καταθέσεων) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Άλλα) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Πιστοποιητικό καταθέσεων +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Άλλα-οι ProfId6ShortCM=- -ProfId1CO=Καθ Id 1 (RUT) +ProfId1CO=Prof Id 1 (R.U.T.) ProfId2CO=- ProfId3CO=- ProfId4CO=- @@ -219,7 +220,7 @@ ProfId1IN=Prof Id 1 (TIN) ProfId2IN=Prof Id 2 ProfId3IN=Prof Id 3 ProfId4IN=Prof Id 4 -ProfId5IN=Καθ ID 5 +ProfId5IN=Prof Id 5 ProfId6IN=- ProfId1IT=- ProfId2IT=- @@ -235,13 +236,13 @@ ProfId5LU=Αριθμός EORI ProfId6LU=- ProfId1MA=Id prof. 1 (RC) ProfId2MA=Id prof. 2 (Patente) -ProfId3MA=Id prof. 3 (ΑΝ) +ProfId3MA=Id prof. 3 (I.F.) ProfId4MA=Id prof. 4 (CNSS) ProfId5MA=Id prof. 5 (I.C.E.) ProfId6MA=- ProfId1MX=Ο καθηγητής Id 1 (RFC). ProfId2MX=Ο καθηγητής ID 2 (R.. Π. IMSS) -ProfId3MX=Ο καθηγητής Id 3 (Profesional Χάρτη) +ProfId3MX=Prof Id 3 (Profesional Charter) ProfId4MX=- ProfId5MX=- ProfId6MX=- @@ -299,7 +300,7 @@ ProfId3DZ=NIF ProfId4DZ=NIS VATIntra=ΑΦΜ VATIntraShort=ΑΦΜ -VATIntraSyntaxIsValid=Το συντακτικό είναι έγκυρο +VATIntraSyntaxIsValid=Η σύνταξη είναι έγκυρη VATReturn=Επιστροφή ΦΠΑ ProspectCustomer=Προοπτική / Πελάτης Prospect=Προοπτική @@ -309,95 +310,95 @@ CustomerRelativeDiscount=Σχετική έκπτωση πελάτη SupplierRelativeDiscount=Σχετική έκπτωση προμηθευτή CustomerRelativeDiscountShort=Σχετική έκπτωση CustomerAbsoluteDiscountShort=Απόλυτη έκπτωση -CompanyHasRelativeDiscount=This customer has a discount of %s%% -CompanyHasNoRelativeDiscount=This customer has no relative discount by default +CompanyHasRelativeDiscount=Αυτός ο πελάτης έχει προεπιλεγμένη έκπτωση %s%% +CompanyHasNoRelativeDiscount=Αυτός ο πελάτης δεν έχει σχετική έκπτωση από προεπιλογή HasRelativeDiscountFromSupplier=Έχετε προεπιλεγμένη έκπτωση %s%% από αυτόν τον προμηθευτή HasNoRelativeDiscountFromSupplier=Δεν έχετε προεπιλεγμένη σχετική έκπτωση από αυτόν τον προμηθευτή -CompanyHasAbsoluteDiscount=Αυτός ο πελάτης έχει διαθέσιμες εκπτώσεις (σημειώσεις πιστωτικών μονάδων ή προκαταβολές) για %s %s +CompanyHasAbsoluteDiscount=Αυτός ο πελάτης έχει διαθέσιμες εκπτώσεις (πιστωτικές σημειώσεις ή προκαταβολές) για %s %s CompanyHasDownPaymentOrCommercialDiscount=Αυτός ο πελάτης έχει διαθέσιμες εκπτώσεις (εμπορικές, προκαταβολές) για %s %s -CompanyHasCreditNote=Ο πελάτης εξακολουθεί να έχει πιστωτικά τιμολόγια για %s %s -HasNoAbsoluteDiscountFromSupplier=Δεν διαθέτετε πίστωση έκπτωσης από αυτόν τον πωλητή +CompanyHasCreditNote=Αυτός ο πελάτης έχει ακόμα πιστωτικές σημειώσεις για %s %s +HasNoAbsoluteDiscountFromSupplier=Δεν έχετε διαθέσιμη πίστωση έκπτωσης από αυτόν τον προμηθευτή HasAbsoluteDiscountFromSupplier=Έχετε διαθέσιμες εκπτώσεις (πιστωτικές σημειώσεις ή προκαταβολές) για %s %s από αυτόν τον προμηθευτή HasDownPaymentOrCommercialDiscountFromSupplier=Έχετε διαθέσιμες εκπτώσεις (εμπορικές, προκαταβολές) για %s %s από αυτόν τον προμηθευτή HasCreditNoteFromSupplier=Έχετε πιστωτικές σημειώσεις για %s %s από αυτόν τον προμηθευτή -CompanyHasNoAbsoluteDiscount=This customer has no discount credit available +CompanyHasNoAbsoluteDiscount=Αυτός ο πελάτης δεν έχει διαθέσιμη πίστωση έκπτωσης CustomerAbsoluteDiscountAllUsers=Απόλυτες εκπτώσεις πελατών (που χορηγούνται από όλους τους χρήστες) -CustomerAbsoluteDiscountMy=Απόλυτες εκπτώσεις πελατών (χορηγούνται μόνοι σας) -SupplierAbsoluteDiscountAllUsers=Απόλυτες εκπτώσεις πωλητών (καταχωρημένες από όλους τους χρήστες) +CustomerAbsoluteDiscountMy=Απόλυτες εκπτώσεις πελατών (χορηγούνται από Εσάς) +SupplierAbsoluteDiscountAllUsers=Απόλυτες εκπτώσεις προμηθευτών (που εισάγονται από όλους τους χρήστες) SupplierAbsoluteDiscountMy=Απόλυτες εκπτώσεις πωλητών (καταχωρημένες από εσάς) DiscountNone=Καμία Vendor=Προμηθευτής Supplier=Προμηθευτής AddContact=Δημιουργία επαφής -AddContactAddress=Δημιουργία επαφής/διεύθυνση +AddContactAddress=Δημιουργία επαφής/διεύθυνσης EditContact=Επεξεργασία επαφής EditContactAddress=Επεξεργασία επαφής/διεύθυνσης Contact=Επαφή/Διεύθυνση -Contacts=Αντιπρόσωποι -ContactId=Contact id +Contacts=Επαφές/Διευθύνσεις +ContactId=Αναγνωριστικό επαφής ContactsAddresses=Επαφές/Διευθύνσεις -FromContactName=Name: -NoContactDefinedForThirdParty=Δεν έχει ορισθεί πρόσωπο επικοινωνίας για αυτόν τον Πελ/Προμ -NoContactDefined=Δεν έχει ορισθεί πρόσωπο επικοινωνίας -DefaultContact=Προκαθορισμένος εκπρόσωπος/διεύθυνση +FromContactName=Όνομα: +NoContactDefinedForThirdParty=Δεν έχει οριστεί επαφή για αυτό το τρίτο μέρος +NoContactDefined=Δεν έχει οριστεί επαφή +DefaultContact=Προεπιλεγμένη επαφή/διεύθυνση ContactByDefaultFor=Προεπιλεγμένη επαφή / διεύθυνση για -AddThirdParty=Δημιουργήστε Πελ./Προμ. -DeleteACompany=Διαγραφή εταιρίας +AddThirdParty=Δημιουργία τρίτου μέρους +DeleteACompany=Διαγραφή εταιρείας PersonalInformations=Προσωπικά δεδομένα -AccountancyCode=Λογιστική λογαριασμού +AccountancyCode=Λογιστικός λογαριασμός CustomerCode=Κωδικός πελάτη SupplierCode=Κωδικός προμηθευτή CustomerCodeShort=Κωδικός πελάτη SupplierCodeShort=Κωδικός προμηθευτή CustomerCodeDesc=Κωδικός πελάτη, μοναδικός για κάθε πελάτη -SupplierCodeDesc=Κωδικός προμηθευτή, μοναδικό για όλους τους προμηθευτές -RequiredIfCustomer=Απαιτείται αν το στοιχείο είναι πελάτης ή προοπτική -RequiredIfSupplier=Απαιτείται αν κάποιος τρίτος είναι πωλητής -ValidityControledByModule=Η εγκυρότητα ελέγχεται από τη μονάδα +SupplierCodeDesc=Κωδικός προμηθευτή, μοναδικός για κάθε προμηθευτή +RequiredIfCustomer=Απαιτείται εάν το τρίτο μέρος είναι πελάτης ή υποψήφιος πελάτης +RequiredIfSupplier=Απαιτείται εάν το τρίτο μέρος είναι προμηθευτής +ValidityControledByModule=Η εγκυρότητα ελέγχεται από τη ενότητα ThisIsModuleRules=Κανόνες για αυτήν την ενότητα -ProspectToContact=Προοπτική σε Επαφή -CompanyDeleted="%s" διαγράφηκε από την βάση δεδομένων -ListOfContacts=Λίστα αντιπροσώπων -ListOfContactsAddresses=Λίστα αντιπροσώπων -ListOfThirdParties=Κατάλογος τρίτων μερών +ProspectToContact=Προοπτική για επικοινωνία +CompanyDeleted=Η εταιρεία "%s" διαγράφηκε από τη βάση δεδομένων. +ListOfContacts=Λίστα επαφών/διευθύνσεων +ListOfContactsAddresses=Λίστα επαφών/διευθύνσεων +ListOfThirdParties=Λίστα τρίτων μερών ShowCompany=Τρίτο Μέρος ShowContact=Επαφή-Διεύθυνση ContactsAllShort=Όλα (Χωρίς Φίλτρο) -ContactType=Τύπος αντιπροσώπου επικοινωνίας -ContactForOrders=Αντιπρόσωπος επικοινωνίας για παραγγελία -ContactForOrdersOrShipments=Order's or shipment's contact -ContactForProposals=Αντιπρόσωπος επικοινωνίας για πρόταση -ContactForContracts=Αντιπρόσωπος επικοινωνίας για συμβόλαιο -ContactForInvoices=Αντιπρόσωπος επικοινωνίας για τιμολόγιο -NoContactForAnyOrder=Αυτός ο αντιπρόσωπος δεν αντιστοιχεί σε καμία παραγγελία -NoContactForAnyOrderOrShipments=This contact is not a contact for any order or shipment -NoContactForAnyProposal=Αυτός ο αντιπρόσωπος δεν αντιστοιχεί σε καμία εμπορική πρόταση -NoContactForAnyContract=Αυτός ο αντιπρόσωπος δεν αντιστοιχεί σε κανένα συμβόλαιο -NoContactForAnyInvoice=Αυτός ο αντιπρόσωπος δεν αντιστοιχεί σε κανένα τιμολόγιο -NewContact=Νέος αντιπρόσωπος επικοινωνίας +ContactType=Ρόλος επαφής +ContactForOrders=Επαφή για παραγγελίες +ContactForOrdersOrShipments=Επαφή για παραγγελίες ή αποστολές +ContactForProposals=Επαφή για προσφορές +ContactForContracts=Επαφή για συμβάσεις +ContactForInvoices=Επαφή λογιστηρίου +NoContactForAnyOrder=Αυτή η επαφή δεν είναι επαφή για οποιαδήποτε παραγγελία +NoContactForAnyOrderOrShipments=Αυτή η επαφή δεν είναι επαφή για οποιαδήποτε παραγγελία ή αποστολή +NoContactForAnyProposal=Αυτή η επαφή δεν είναι επαφή για οποιαδήποτε εμπορική προσφορά +NoContactForAnyContract=Αυτή η επαφή δεν είναι επαφή για καμία σύμβαση +NoContactForAnyInvoice=Αυτή η επαφή δεν είναι επαφή για κανένα τιμολόγιο +NewContact=Νέα επαφή NewContactAddress=Νέα επαφή / διεύθυνση -MyContacts=Αντιπρόσωποι επικοινωνίας +MyContacts=Οι επαφές μου Capital=Κεφάλαιο -CapitalOf=Capital of %s +CapitalOf=Κεφάλαιο της %s EditCompany=Επεξεργασία Εταιρίας -ThisUserIsNot=Αυτός ο χρήστης δεν είναι προοπτική, πελάτης ή πωλητής +ThisUserIsNot=Αυτός ο χρήστης δεν είναι υποψήφιος πελάτης, πελάτης ή προμηθευτής VATIntraCheck=Έλεγχος -VATIntraCheckDesc=Το αναγνωριστικό ΦΠΑ πρέπει να περιλαμβάνει το πρόθεμα χώρας. Ο σύνδεσμος %s χρησιμοποιεί την ευρωπαϊκή υπηρεσία ελέγχου ΦΠΑ (VIES), η οποία απαιτεί πρόσβαση στο Διαδίκτυο από το διακομιστή Dolibarr. +VATIntraCheckDesc=Το ΑΦΜ πρέπει να περιλαμβάνει το πρόθεμα χώρας. Ο σύνδεσμος %s χρησιμοποιεί την ευρωπαϊκή υπηρεσία ελέγχου ΦΠΑ (VIES), η οποία απαιτεί πρόσβαση στο Διαδίκτυο από το διακομιστή Dolibarr. VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do -VATIntraCheckableOnEUSite=Ελέγξτε το ενδοκοινοτικό αναγνωριστικό ΦΠΑ στον δικτυακό τόπο της Ευρωπαϊκής Επιτροπής +VATIntraCheckableOnEUSite=Ελέγξτε το ενδοκοινοτικό ΑΦΜ στον δικτυακό τόπο της Ευρωπαϊκής Επιτροπής VATIntraManualCheck=Μπορείτε επίσης να ελέγξετε με μη αυτόματο τρόπο στον ιστότοπο της Ευρωπαϊκής Επιτροπής %s -ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). -NorProspectNorCustomer=Δεν προοπτική, ούτε πελάτης -JuridicalStatus=Τύπος νομικού προσώπου +ErrorVATCheckMS_UNAVAILABLE=Ο έλεγχος δεν είναι δυνατός. Η υπηρεσία ελέγχου δεν παρέχεται από το κράτος μέλος (%s). +NorProspectNorCustomer=Ούτε προοπτική, ούτε πελάτης +JuridicalStatus=Τύπος επιχειρηματικής οντότητας Workforce=Αριθμός εργαζομένων -Staff=Εργαζόμενοι -ProspectLevelShort=Δυναμική -ProspectLevel=Δυναμική προοπτικής -ContactPrivate=Προσωπική +Staff=Υπάλληλοι +ProspectLevelShort=Πιθανότητα +ProspectLevel=Πιθανότητα προοπτικής +ContactPrivate=Ιδιωτική ContactPublic=Κοινόχρηστη ContactVisibility=Ορατότητα -ContactOthers=Άλλο -OthersNotLinkedToThirdParty=Άλλα που δεν συνδέονται με κάποιο στοιχείο +ContactOthers=Άλλη +OthersNotLinkedToThirdParty=Άλλοι, που δεν συνδέονται με τρίτο μέρος ProspectStatus=Κατάσταση Προοπτικής PL_NONE=Καμία PL_UNKNOWN=Άγνωστη @@ -405,95 +406,95 @@ PL_LOW=Χαμηλή PL_MEDIUM=Μέτρια PL_HIGH=Υψηλή TE_UNKNOWN=- -TE_STARTUP=Νέα +TE_STARTUP=Startup TE_GROUP=Μεγάλη εταιρία TE_MEDIUM=Μεσαία εταιρία -TE_ADMIN=Δημόσιο +TE_ADMIN=Δημόσια υπηρεσία TE_SMALL=Μικρή εταιρία TE_RETAIL=Έμπορος λιανικής TE_WHOLE=Χονδρέμπορος -TE_PRIVATE=Ανεξάρτητο πρόσωπο +TE_PRIVATE=Ελεύθερος επαγγελματίας TE_OTHER=Άλλο StatusProspect-1=Να μην γίνει επικοινωνία StatusProspect0=Δεν έγινε ποτε επικοινωνία StatusProspect1=Προς επικοινωνία StatusProspect2=Επικοινωνία σε εξέλιξη -StatusProspect3=Η επικοινωνία πραγματοποιήθηκε +StatusProspect3=Πραγματοποιήθηκε επικοινωνία ChangeDoNotContact=Αλλαγή κατάστασης σε 'Να μην γίνει επικοινωνία' ChangeNeverContacted=Αλλαγή κατάστασης σε 'Δεν έγινε ποτέ επικοινωνία' ChangeToContact=Αλλαγή κατάστασης σε "Προς επικοινωνία" ChangeContactInProcess=Αλλαγή κατάστασης σε 'Η Επικοινωνία βρίσκεται σε Εξέλιξη' ChangeContactDone=Αλλαγή κατάστασης σε 'Η Επικοινωνία Έγινε' ProspectsByStatus=Προοπτικές ανά κατάσταση -NoParentCompany=Τίποτα -ExportCardToFormat=Export card to format -ContactNotLinkedToCompany=Ο αντιπρόσωπος δεν αντιστοιχεί σε κάποιο στοιχείο +NoParentCompany=Καμία +ExportCardToFormat=Εξαγωγή κάρτας σε μορφή +ContactNotLinkedToCompany=Η επαφή δεν συνδέεται με κανένα τρίτο μέρος DolibarrLogin=Είσοδος Dolibarr NoDolibarrAccess=Χωρίς πρόσβαση στο Dolibarr -ExportDataset_company_1=Τρίτα μέρη (εταιρείες / ιδρύματα / φυσικοί) και οι ιδιότητές τους -ExportDataset_company_2=Οι επαφές και οι ιδιότητές τους -ImportDataset_company_1=Τρίτα μέρη και τις ιδιότητές τους -ImportDataset_company_2=Πρόσθετες επαφές / διευθύνσεις και χαρακτηριστικά τρίτων μερών -ImportDataset_company_3=Τραπεζικοί λογαριασμοί τρίτων μερών +ExportDataset_company_1=Πελάτες/Προμηθευτές (εταιρείες / ιδρύματα / φυσικά πρόσωπα) και οι ιδιότητές τους +ExportDataset_company_2=Επαφές και οι ιδιότητες τους +ImportDataset_company_1=Πελάτες/Προμηθευτές και οι ιδιότητές τους +ImportDataset_company_2=Πρόσθετες επαφές/διευθύνσεις και χαρακτηριστικά Πελατών/Προμηθευτών +ImportDataset_company_3=Τραπεζικοί λογαριασμοί Πελατών/Προμηθευτών ImportDataset_company_4=Αντιπρόσωποι πωλήσεων τρίτων μερών (εκχώρηση εκπροσώπων πωλήσεων / χρηστών σε εταιρείες) PriceLevel=Επίπεδο τιμών PriceLevelLabels=Ετικέτες επιπέδου τιμής DeliveryAddress=Διεύθυνση αποστολής -AddAddress=Δημιουργία διεύθυνσης -SupplierCategory=Κατηγορία προμηθευτών +AddAddress=Προσθήκη διεύθυνσης +SupplierCategory=Κατηγορία προμηθευτή JuridicalStatus200=Ανεξάρτητος DeleteFile=Διαγραφή Αρχείου ConfirmDeleteFile=Είστε σίγουροι ότι θέλετε να διαγράψετε το αρχείο; -AllocateCommercial=Έχει αποδοθεί σε αντιπρόσωπο πωλήσεων +AllocateCommercial=Ανατέθηκε σε αντιπρόσωπο πωλήσεων Organization=Οργανισμός FiscalYearInformation=Οικονομικό έτος -FiscalMonthStart=Μήνας Εκκίνησης Οικονομικού Έτους +FiscalMonthStart=Μήνας έναρξης του οικονομικού έτους SocialNetworksInformation=Κοινωνικά δίκτυα -SocialNetworksFacebookURL=Facebook URL σύνδεσμος -SocialNetworksTwitterURL=Twitter URL σύνδεσμος -SocialNetworksLinkedinURL=Linkedin URL σύνδεσμος -SocialNetworksInstagramURL=Instagram URL σύνδεσμος -SocialNetworksYoutubeURL=Youtube URL σύνδεσμος -SocialNetworksGithubURL=Github URL σύνδεσμος -YouMustAssignUserMailFirst=Πρέπει να δημιουργήσετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου για αυτόν τον χρήστη πριν να μπορέσετε να προσθέσετε μια ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου. -YouMustCreateContactFirst=To be able to add email notifications, you must first define contacts with valid emails for the third party +SocialNetworksFacebookURL=Facebook URL +SocialNetworksTwitterURL=Twitter URL +SocialNetworksLinkedinURL=Linkedin URL +SocialNetworksInstagramURL=Instagram URL +SocialNetworksYoutubeURL=Youtube URL +SocialNetworksGithubURL=Github URL +YouMustAssignUserMailFirst=Πρέπει να δημιουργήσετε ένα email για αυτόν τον χρήστη προτού μπορέσετε να προσθέσετε μια ειδοποίηση μέσω email. +YouMustCreateContactFirst=Για να μπορείτε να προσθέσετε ειδοποιήσεις email, πρέπει πρώτα να ορίσετε επαφές με έγκυρα email για το τρίτο μέρος ListSuppliersShort=Λίστα προμηθευτών -ListProspectsShort=Κατάλογος προοπτικών -ListCustomersShort=Κατάλογος πελατών +ListProspectsShort=Λίστα προοπτικών +ListCustomersShort=Λίστα πελατών ThirdPartiesArea=Τρίτα μέρη / Επαφές LastModifiedThirdParties=Τα τελευταία %s τροποποιημένα Τρίτα Μέρη UniqueThirdParties=Συνολικός αριθμός Τρίτων Μερών -InActivity=Ανοίξτε -ActivityCeased=Κλειστό -ThirdPartyIsClosed=Third party is closed -ProductsIntoElements=Κατάλογος των προϊόντων/υπηρεσιών σε %s -CurrentOutstandingBill=Τρέχον εκκρεμείς λογαριασμός -OutstandingBill=Μέγιστο. για εκκρεμείς λογαριασμό -OutstandingBillReached=Max. for outstanding bill reached +InActivity=Ενεργή +ActivityCeased=Ανενεργή +ThirdPartyIsClosed=Το τρίτο μέρος έκλεισε +ProductsIntoElements=Λίστα προϊόντων/υπηρεσιών που αφορούν%s +CurrentOutstandingBill=Τρέχων ανεξόφλητος λογαριασμός +OutstandingBill=Μέγιστο οφειλόμενου ποσού +OutstandingBillReached=Έχει ξεπεραστεί το μέγιστο επιτρεπόμενο ποσό οφειλής OrderMinAmount=Ελάχιστο ποσό για παραγγελία -MonkeyNumRefModelDesc=Επιστρέφει έναν αριθμό με τη μορφή %syymm-nnnn για τον κωδικό πελάτη και %syymm-nnnn για τον κωδικό προμηθευτή όπου yy είναι έτος, mm είναι month και nnnn είναι μια ακολουθία χωρίς διακοπή και καμία επιστροφή στο 0. -LeopardNumRefModelDesc=Customer/supplier code is free. This code can be modified at any time. -ManagingDirectors=Διαχειριστής (ες) ονομασία (CEO, διευθυντής, πρόεδρος ...) -MergeOriginThirdparty=Διπλότυπο Πελ./Προμ. ( Πελ./Προμ. θέλετε να διαγραφεί) -MergeThirdparties=Συγχώνευση Πελ./Προμ. -ConfirmMergeThirdparties=Είστε βέβαιοι ότι θέλετε να συγχωνεύσετε το επιλεγμένο τρίτο μέρος με το τρέχων; Όλα τα συνδεδεμένα αντικείμενα (τιμολόγια, παραγγελίες, ...) θα μεταφερθούν στο τρέχων τρίτο μέρος, στη συνέχεια το επιλεγμένο τρίτο μέρος θα διαγραφεί. +MonkeyNumRefModelDesc=Επιστρέφει έναν αριθμό με τη μορφή %syymm-nnnn για τον κωδικό πελάτη και %syymm-nnnn για τον κωδικό προμηθευτή όπου yy είναι το έτος, mm είναι ο μήνας και nnnn είναι μια ακολουθία αυτόματης αρίθμησης χωρίς επιτρεπτή διακοπή και καμία επιστροφή στο 0. +LeopardNumRefModelDesc=Ο κωδικός πελάτη/προμηθευτή δεν είναι κλειδωμένος. Αυτός ο κωδικός μπορεί να τροποποιηθεί ανά πάσα στιγμή. +ManagingDirectors=Όνομα μάνατζερ (CEO, διευθυντής, πρόεδρος ...) +MergeOriginThirdparty=Διπλότυπο τρίτο μέρος (τρίτο μέρος που θέλετε να διαγράψετε) +MergeThirdparties=Συγχώνευση τρίτων μερών +ConfirmMergeThirdparties=Είστε σίγουροι ότι θέλετε να συγχωνεύσετε το επιλεγμένο τρίτο μέρος με το τρέχων; Όλα τα συνδεδεμένα αντικείμενα (τιμολόγια, παραγγελίες, ...) θα μεταφερθούν στο τρέχων τρίτο μέρος, στη συνέχεια το επιλεγμένο τρίτο μέρος θα διαγραφεί. ThirdpartiesMergeSuccess=Τα τρίτα μέρη έχουν συγχωνευθεί -SaleRepresentativeLogin=Login of sales representative -SaleRepresentativeFirstname=First name of sales representative -SaleRepresentativeLastname=Last name of sales representative -ErrorThirdpartiesMerge=Παρουσιάστηκε σφάλμα κατά τη διαγραφή των τρίτων. Ελέγξτε το αρχείο καταγραφής. Οι αλλαγές έχουν επανέλθει. -NewCustomerSupplierCodeProposed=Κωδικός πελάτη ή προμηθευτή που έχει ήδη χρησιμοποιηθεί, προτείνεται ένας νέος κωδικός -KeepEmptyIfGenericAddress=Διατηρήστε αυτό το πεδίο κενό εάν αυτή η διεύθυνση είναι γενική διεύθυνση +SaleRepresentativeLogin=Login αντιπροσώπου πωλήσεων +SaleRepresentativeFirstname=Όνομα αντιπροσώπου πωλήσεων +SaleRepresentativeLastname=Επώνυμο αντιπροσώπου πωλήσεων +ErrorThirdpartiesMerge=Παρουσιάστηκε σφάλμα κατά τη διαγραφή τρίτων μερών. Ελέγξτε το αρχείο καταγραφής. Δεν έγιναν αλλαγές. +NewCustomerSupplierCodeProposed=Ο κωδικός πελάτη ή προμηθευτή χρησιμοποιείται ήδη, προτείνεται νέος κωδικός +KeepEmptyIfGenericAddress=Διατηρήστε αυτό το πεδίο κενό εάν αυτή η διεύθυνση είναι μια γενική διεύθυνση #Imports PaymentTypeCustomer=Τύπος Πληρωμής - Πελάτης PaymentTermsCustomer=Όροι πληρωμής - Πελάτης -PaymentTypeSupplier=Τύπος πληρωμής - Πωλητής -PaymentTermsSupplier=Όρος πληρωμής - Πωλητής -PaymentTypeBoth=Τύπος Πληρωμής - Πελάτης και Πωλητής -MulticurrencyUsed=Χρησιμοποιήστε το Πολλαπλάσιο +PaymentTypeSupplier=Τύπος πληρωμής - Προμηθευτής +PaymentTermsSupplier=Όρος πληρωμής - Προμηθευτής +PaymentTypeBoth=Τύπος Πληρωμής - Πελάτης και Προμηθευτής +MulticurrencyUsed=Χρήση πολυνομισματικού MulticurrencyCurrency=Νόμισμα InEEC=Ευρώπη (ΕΕ) RestOfEurope=Υπόλοιπη Ευρώπη (ΕΕ) -OutOfEurope=Εκτός Ευρώπης (ΕΟΚ) -CurrentOutstandingBillLate=Τρέχων εκκρεμής λογαριασμός καθυστερημένος +OutOfEurope=Εκτός Ευρώπης (ΕΕ) +CurrentOutstandingBillLate=Καθυστερημένος ανεξόφλητος λογαριασμός BecarefullChangeThirdpartyBeforeAddProductToInvoice=Προσοχή, ανάλογα με τις ρυθμίσεις τιμής του προϊόντος σας, θα πρέπει να αλλάξετε το Τρίτο Μέρος πριν προσθέσετε το προϊόν στο POS. diff --git a/htdocs/langs/el_GR/compta.lang b/htdocs/langs/el_GR/compta.lang index 439b728ebe6..b258b9b2b1c 100644 --- a/htdocs/langs/el_GR/compta.lang +++ b/htdocs/langs/el_GR/compta.lang @@ -1,84 +1,84 @@ # Dolibarr language file - Source file is en_US - compta -MenuFinancial=Τιμολόγηση | Πληρωμή -TaxModuleSetupToModifyRules=Πηγαίνετε στο setup Φόροι module να τροποποιήσετε τους κανόνες για τον υπολογισμό -TaxModuleSetupToModifyRulesLT=Πηγαίνετε στο ρύθμιση Εταιρείας για την τροποποίηση κανόνων υπολογισμού +MenuFinancial=Τιμολόγηση | Πληρωμές +TaxModuleSetupToModifyRules=Μετάβαση στη ρύθμιση της ενότητας Φόροι για την τροποποίηση κανόνων υπολογισμού +TaxModuleSetupToModifyRulesLT=Μετάβαση στη ρύθμιση Εταιρείας για την τροποποίηση κανόνων υπολογισμού OptionMode=Επιλογές λογιστικής -OptionModeTrue=Επιλογές εσόδων-εξόδων -OptionModeVirtual=Option Claims-Debts -OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. -OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. -FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) -VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +OptionModeTrue=Έσοδα-Έξοδα +OptionModeVirtual=Απαιτήσεις-Οφειλές +OptionModeTrueDesc=Στο πλαίσιο αυτό, ο κύκλος εργασιών(τζίρος) υπολογίζεται επί των πληρωμών (ημερομηνία πληρωμών). Η εγκυρότητα των στοιχείων διασφαλίζεται μόνο εάν η τήρηση λογιστικών βιβλίων ελέγχεται ενδελεχώς μέσω των εισροών/εκροών στους λογαριασμούς μέσω τιμολογίων. +OptionModeVirtualDesc=Στο πλαίσιο αυτό, ο κύκλος εργασιών(τζίρος) υπολογίζεται από τα τιμολόγια (ημερομηνία επικύρωσης). Όταν αυτά τα τιμολόγια είναι ληξιπρόθεσμα, είτε έχουν εξοφληθεί είτε όχι, εμφανίζονται στην έξοδο του κύκλου εργασιών. +FeatureIsSupportedInInOutModeOnly=Η λειτουργία είναι διαθέσιμη μόνο στη λειτουργία λογιστικής ΠΙΣΤΩΣΕΙΣ-ΧΡΕΩΣΕΙΣ (Ανατρέξτε στη διαμόρφωση της ενότητας Λογιστικής) +VATReportBuildWithOptionDefinedInModule=Τα ποσά που εμφανίζονται εδώ υπολογίζονται χρησιμοποιώντας κανόνες που ορίζονται από τη ρύθμιση της φορολογικής ενότητας. LTReportBuildWithOptionDefinedInModule=Τα ποσά που εμφανίζονται εδώ υπολογίζονται με βάση τους κανόνες που ορίζονται από την εγκατάσταση της Εταιρείας. -Param=Παραμετροποίηση +Param=Ρύθμιση RemainingAmountPayment=Ποσό πληρωμής που απομένει: Account=Λογαριασμός -Accountparent=Parent account -Accountsparent=Parent accounts +Accountparent=Γονικός λογαριασμός +Accountsparent=Γονικοί λογαριασμοί Income=Έσοδα Outcome=Έξοδα MenuReportInOut=Έσοδα / Έξοδα ReportInOut=Ισοζύγιο εσόδων και εξόδων -ReportTurnover=Ο κύκλος εργασιών τιμολογείται -ReportTurnoverCollected=Ο κύκλος εργασιών συγκεντρώθηκε -PaymentsNotLinkedToInvoice=Η πληρωμή δεν είναι συνδεδεμένη με κάποιο τιμολόγιο, οπότε δεν συνδέετε με κάποιο στοιχείο/αντιπρόσωπο -PaymentsNotLinkedToUser=Η πληρωμή δεν είναι συνδεδεμένη με κάποιον πελάτη +ReportTurnover=Τιμολογημένος κύκλος εργασιών(τζίρος) +ReportTurnoverCollected=Κύκλος εργασιών(τζίρος) που έχει εισπραχθεί +PaymentsNotLinkedToInvoice=Οι πληρωμές δεν συνδέονται με κανένα τιμολόγιο, επομένως δεν συνδέονται και με κανένα τρίτο μέρος +PaymentsNotLinkedToUser=Οι πληρωμές δεν συνδέονται με κανέναν χρήστη Profit=Κέρδος AccountingResult=Λογιστικό αποτέλεσμα -BalanceBefore=Υπόλοιπο (πριν) +BalanceBefore=Ισοζύγιο (πριν) Balance=Ισοζύγιο Debit=Χρέωση Credit=Πίστωση Piece=Λογιστικό Εγγρ. AmountHTVATRealReceived=Σύνολο καθαρών εισπράξεων AmountHTVATRealPaid=Σύνολο καθαρών πληρωμένων -VATToPay=Φορολογικές πωλήσεις -VATReceived=Έλαβε φόρο -VATToCollect=Αγορές φόρων -VATSummary=Φόρος μηνιαίως -VATBalance=Ισοζύγιο φόρου -VATPaid=Πληρωμή φόρου +VATToPay=Φ.Π.Α. πωλήσεων +VATReceived=Φ.Π.Α. που ελήφθη +VATToCollect=Φ.Π.Α. αγορών +VATSummary=Φ.Π.Α. μήνα +VATBalance=Ισοζύγιο Φ.Π.Α. +VATPaid=Φ.Π.Α. που πληρώθηκε LT1Summary=Φορολογική περίληψη 2 -LT2Summary=Φύση 3 περίληψη +LT2Summary=Φορολογική περίληψη 3 LT1SummaryES=RE Υπόλοιπο LT2SummaryES=IRPF Υπόλοιπο LT1SummaryIN=CGST Υπόλοιπο LT2SummaryIN=SGST Balance -LT1Paid=Φόρος 2 πληρώνεται -LT2Paid=Φόρος 3 πληρώνεται +LT1Paid=Φόρος 2 που πληρώθηκε +LT2Paid=Φόρος 3 που πληρώθηκε LT1PaidES=RE Πληρωμένα -LT2PaidES=Αμειβόμενος IRPF -LT1PaidIN=CGST Αμειβόμενος -LT2PaidIN=Το SGST πληρώθηκε +LT2PaidES=IRPF που πληρώθηκε +LT1PaidIN=CGST που πληρώθηκε +LT2PaidIN=Το SGST που πληρώθηκε LT1Customer=Φορολογικές πωλήσεις 2 -LT1Supplier=Φόρος 2 αγορές +LT1Supplier=Φορολογικές αγορές 2 LT1CustomerES=RE πωλήσεις LT1SupplierES=RE αγορές LT1CustomerIN=CGST πωλήσεις LT1SupplierIN=CGST αγορές LT2Customer=Φορολογικές πωλήσεις 3 -LT2Supplier=Φόρος 3 αγορές +LT2Supplier=Φορολογικές αγορές 3 LT2CustomerES=IRPF πωλήσεις LT2SupplierES=IRPF αγορές LT2CustomerIN=Πωλήσεις SGST LT2SupplierIN=Οι αγορές SGST -VATCollected=VAT collected +VATCollected=Φ.Π.Α. που εισπραχθηκε StatusToPay=Προς πληρωμή SpecialExpensesArea=Περιοχή για όλες τις ειδικές πληρωμές -VATExpensesArea=Περιοχή όλων των πληρωμών TVA +VATExpensesArea=Τομέας όλων των πληρωμών Φ.Π.Α. SocialContribution=Κοινωνική ή φορολογική εισφορά SocialContributions=Κοινωνικές ή φορολογικές εισφορές -SocialContributionsDeductibles=Deductible social or fiscal taxes -SocialContributionsNondeductibles=Nondeductible social or fiscal taxes +SocialContributionsDeductibles=Εκπιπτόμενοι κοινωνικοί ή φορολογικοί φόροι +SocialContributionsNondeductibles=Μη εκπιπτόμενοι κοινωνικοί ή φορολογικοί φόροι DateOfSocialContribution=Ημερομηνία κοινωνικού ή φορολογικού φόρου -LabelContrib=Label contribution -TypeContrib=Type contribution +LabelContrib=Ετικέτα συνδρομής +TypeContrib=Τύπος συνδρομής MenuSpecialExpenses=Ειδικά έξοδα -MenuTaxAndDividends=Taxes and dividends +MenuTaxAndDividends=Φόροι και μερίσματα MenuSocialContributions=Κοινωνικές/φορολογικές εισφορές -MenuNewSocialContribution=Νέα Κοιν/Φορ εισφορά +MenuNewSocialContribution=Νέα κοινωνική/φορολογική εισφορά NewSocialContribution=Νέα Κοινωνική/Φορολογική εισφορά -AddSocialContribution=Add social/fiscal tax +AddSocialContribution=Προσθήκη κοινωνικής/φορολογικής εισφοράς ContributionsToPay=Κοινωνικές/Φορολογικές εισφορές προς πληρωμή AccountancyTreasuryArea=Τομέας χρεώσεων και πληρωμών NewPayment=Νέα Πληρωμή @@ -92,65 +92,65 @@ ListOfCustomerPayments=Λίστα πληρωμών πελατών ListOfSupplierPayments=Λίστα πληρωμών προμηθευτών DateStartPeriod=Ημερομηνία έναρξης περιόδου DateEndPeriod=Ημερομηνία λήξης περιόδου -newLT1Payment=New tax 2 payment -newLT2Payment=New tax 3 payment -LT1Payment=Tax 2 payment -LT1Payments=Tax 2 payments +newLT1Payment=Νέα πληρωμή φόρου 2 +newLT2Payment=Νέα πληρωμή φόρου 3 +LT1Payment=Πληρωμή φόρου 2 +LT1Payments=Πληρωμές φόρου 2 LT2Payment=Tax 3 payment -LT2Payments=Tax 3 payments +LT2Payments=Πληρωμές φόρου 3 newLT1PaymentES=Νέα πληρωμή RE -newLT2PaymentES=Νέα IRPF πληρωμής -LT1PaymentES=RE Πληρωμής +newLT2PaymentES=Νέα πληρωμή IRPF +LT1PaymentES=Πληρωμή RE LT1PaymentsES=RE Πληρωμές -LT2PaymentES=IRPF Πληρωμής +LT2PaymentES=Πληρωμή IRPF LT2PaymentsES=Πληρωμές IRPF -VATPayment=Πληρωμή ΦΠΑ πωλήσεων -VATPayments=Πληρωμές ΦΠΑ πωλήσεων -VATDeclarations=Δηλώσεις ΦΠΑ -VATDeclaration=Δήλωση ΦΠΑ -VATRefund=Sales tax refund -NewVATPayment=Νέα καταβολή φόρου επί των πωλήσεων +VATPayment=Πληρωμή Φ.Π.Α. πωλήσεων +VATPayments=Πληρωμές Φ.Π.Α. πωλήσεων +VATDeclarations=Δηλώσεις Φ.Π.Α. +VATDeclaration=Δήλωση Φ.Π.Α. +VATRefund=Επιστροφή φόρου επί των πωλήσεων +NewVATPayment=Νέα πληρωμή φόρου επί των πωλήσεων NewLocalTaxPayment=Νέα πληρωμή φόρου %s -Refund=Refund +Refund=Επιστροφή χρημάτων SocialContributionsPayments=Πληρωμές Κοινωνικών/Φορολογικών εισφορών -ShowVatPayment=Εμφάνιση πληρωμής φόρου +ShowVatPayment=Εμφάνιση πληρωμής ΦΠΑ TotalToPay=Σύνολο πληρωμής BalanceVisibilityDependsOnSortAndFilters=Το υπόλοιπο είναι ορατό σε αυτήν τη λίστα μόνο εάν ο πίνακας είναι ταξινομημένος σε %s και φιλτράρεται σε 1 τραπεζικό λογαριασμό (χωρίς άλλα φίλτρα) -CustomerAccountancyCode=Κωδικός λογιστικής πελάτη -SupplierAccountancyCode=Κωδικός Προμηθευτή -CustomerAccountancyCodeShort=Cust. account. code -SupplierAccountancyCodeShort=Sup. account. code +CustomerAccountancyCode=Λογιστικός κωδικός πελάτη +SupplierAccountancyCode=Λογιστικός κωδικός προμηθευτή +CustomerAccountancyCodeShort=Λογιστικός κωδικός πελάτη +SupplierAccountancyCodeShort=Λογιστικός κωδικός προμηθευτή AccountNumber=Αριθμός Λογαριασμού NewAccountingAccount=Νέος Λογαριασμός -Turnover=Ο κύκλος εργασιών τιμολογείται -TurnoverCollected=Ο κύκλος εργασιών συγκεντρώθηκε -SalesTurnoverMinimum=Ελάχιστος κύκλος εργασιών -ByExpenseIncome=By expenses & incomes +Turnover=Τιμολογημένος κύκλος εργασιών(τζίρος) +TurnoverCollected=Κύκλος εργασιών(τζίρος) που εισπράχθηκε +SalesTurnoverMinimum=Ελάχιστος κύκλος εργασιών(τζίρος) +ByExpenseIncome=Ανα έξοδα και έσοδα ByThirdParties=Ανά στοιχεία ByUserAuthorOfInvoice=Ανά συντάκτη τιμολογίου -CheckReceipt=Έλεγχος Πίστωσης -CheckReceiptShort=Check deposit -LastCheckReceiptShort=Latest %s check receipts +CheckReceipt=Κατάθεση επιταγής +CheckReceiptShort=Κατάθεση επιταγής +LastCheckReceiptShort=Τελευταίες %s αποδείξεις επιταγών NewCheckReceipt=Νέα έκπτωση NewCheckDeposit=Νέα κατάθεση επιταγής -NewCheckDepositOn=Create receipt for deposit on account: %s -NoWaitingChecks=Δεν υπάρχουν επιταγές που αναμένουν κατάθεση. -DateChequeReceived=Ελέγξτε την ημερομηνία λήψης -NbOfCheques=Αριθμός ελέγχων +NewCheckDepositOn=Δημιουργία απόδειξης για κατάθεση στο λογαριασμό: %s +NoWaitingChecks=Δεν υπάρχουν επιταγές +DateChequeReceived=Ημερομηνία παραλαβής επιταγής +NbOfCheques=Αριθμός επιταγών PaySocialContribution=Πληρωμή Κοινωνικής/Φορολογικής εισφοράς -PayVAT=Πληρώστε δήλωση ΦΠΑ -PaySalary=Πληρώστε μισθό +PayVAT=Πληρώμη Φ.Π.Α. +PaySalary=Πληρωμή μισθού ConfirmPaySocialContribution=Είστε σίγουροι ότι θέλετε να ταξινομήσετε αυτόν τον κοινωνικό ή φορολογικό φόρο ως πληρωμένο; ConfirmPayVAT=Είστε βέβαιοι ότι θέλετε να κατατάξετε αυτήν τη δήλωση ΦΠΑ ως πληρωμένη; ConfirmPaySalary=Είστε βέβαιοι ότι θέλετε να ταξινομήσετε αυτήν την καρτέλα μισθού ως πληρωμένη; DeleteSocialContribution=Διαγραφή Κοινωνικής/Φορολογικής εισφοράς DeleteVAT=Διαγραφή δήλωσης ΦΠΑ DeleteSalary=Διαγραφή καρτέλας μισθού -DeleteVariousPayment=Διαγράψτε μια διαφορετική πληρωμή -ConfirmDeleteSocialContribution=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την πληρωμή κοινωνικής/φορολογικής εισφοράς; -ConfirmDeleteVAT=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη δήλωση ΦΠΑ; -ConfirmDeleteSalary=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον μισθό; -ConfirmDeleteVariousPayment=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν τη διαφορετική πληρωμή; +DeleteVariousPayment=Διαγράψτε μια πληρωμή +ConfirmDeleteSocialContribution=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την πληρωμή κοινωνικής/φορολογικής εισφοράς; +ConfirmDeleteVAT=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν τη δήλωση ΦΠΑ; +ConfirmDeleteSalary=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτόν τον μισθό; +ConfirmDeleteVariousPayment=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν τη πληρωμή; ExportDataset_tax_1=Κοινωνικές/Φορολογικές εισφορές και πληρωμές CalcModeVATDebt=Κατάσταση %sΦΠΑ επί των λογιστικών υποχρεώσεων%s CalcModeVATEngagement=Κατάσταση %sΦΠΑ επί των εσόδων-έξοδα%s. @@ -204,14 +204,14 @@ LT1ReportByQuarters=Αναφέρετε τον φόρο 2 με βάση την τ LT2ReportByQuarters=Αναφέρετε τον φόρο 3 με βάση την τιμή LT1ReportByQuartersES=Αναφορά με ποσοστό RE LT2ReportByQuartersES=Αναφορά IRPF επιτόκιο -SeeVATReportInInputOutputMode=Δείτε την αναφορά %s είσπραξης ΦΠΑ%s για έναν τυπικό υπολογισμό -SeeVATReportInDueDebtMode=Δείτε την αναφορά %sΦΠΑ χρεώσεων%s για έναν υπολογισμό με δυνατότητα επιλογής στην τιμολόγηση +SeeVATReportInInputOutputMode=Δείτε την αναφορά %s είσπραξης Φ.Π.Α.%s για έναν τυπικό υπολογισμό +SeeVATReportInDueDebtMode=Δείτε την αναφορά %sΦ.Π.Α. χρεώσεων%s για έναν υπολογισμό με δυνατότητα επιλογής στην τιμολόγηση RulesVATInServices=- Για τις υπηρεσίες, η αναφορά περιλαμβάνει τον ΦΠΑ των πληρωμών που πράγματι εισπράχθηκαν ή καταβλήθηκαν με βάση την ημερομηνία πληρωμής. -RulesVATInProducts=- Για τα υλικά περιουσιακά στοιχεία, η έκθεση περιλαμβάνει τον ΦΠΑ με βάση την ημερομηνία πληρωμής. +RulesVATInProducts=- Για τα υλικά περιουσιακά στοιχεία, η αναφορά περιλαμβάνει τον Φ.Π.Α. με βάση την ημερομηνία πληρωμής. RulesVATDueServices=- Για τις υπηρεσίες, η αναφορά περιλαμβάνει ΦΠΑ ληξιπρόθεσμων τιμολογίων, πληρωμένου ή μη, με βάση την ημερομηνία τιμολογίου. -RulesVATDueProducts=- Για τα υλικά περιουσιακά στοιχεία, η αναφορά περιλαμβάνει τον ΦΠΑ των οφειλόμενων τιμολογίων, με βάση την ημερομηνία του τιμολογίου. -OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. -ThisIsAnEstimatedValue=Πρόκειται για μια προεπισκόπηση που βασίζεται σε επιχειρηματικά γεγονότα και όχι στον τελικό πίνακα, έτσι ώστε τα τελικά αποτελέσματα να διαφέρουν από αυτές τις τιμές προεπισκόπησης +RulesVATDueProducts=- Για τα υλικά περιουσιακά στοιχεία, η αναφορά περιλαμβάνει τον Φ.Π.Α. των οφειλόμενων τιμολογίων, με βάση την ημερομηνία του τιμολογίου. +OptionVatInfoModuleComptabilite=Σημείωση: Για τα υλικά περιουσιακά στοιχεία, θα πρέπει να χρησιμοποιεί την ημερομηνία παράδοσης για να είναι πιο δίκαιη. +ThisIsAnEstimatedValue=Αυτή είναι μια προεπισκόπηση, που βασίζεται σε επαγγελματικά συμβάντα και όχι από τον τελικό πίνακα του καθολικού, επομένως τα τελικά αποτελέσματα ενδέχεται να διαφέρουν από αυτές τις τιμές προεπισκόπησης PercentOfInvoice=%%/τιμολόγιο NotUsedForGoods=Δεν γίνεται χρήση σε υλικά αγαθά ProposalStats=Στατιστικά στοιχεία σχετικά με τις προτάσεις @@ -219,8 +219,8 @@ OrderStats=Στατιστικά στοιχεία για τις παραγγελ InvoiceStats=Στατιστικά στοιχεία για τους λογαριασμούς Dispatch=Dispatching Dispatched=Dispatched -ToDispatch=To dispatch -ThirdPartyMustBeEditAsCustomer=Το στοιχείο πρέπει να ορισθεί ως πελάτης +ToDispatch=Για αποστολή +ThirdPartyMustBeEditAsCustomer=Το τρίτο μέρος πρέπει να ορίζεται ως πελάτης SellsJournal=Ημερολόγιο πωλήσεων PurchasesJournal=Ημερολόγιο Αγορών DescSellsJournal=Ημερολόγιο πωλήσεων @@ -228,26 +228,26 @@ DescPurchasesJournal=Ημερολόγιο Αγορών CodeNotDef=Δεν προσδιορίζεται WarningDepositsNotIncluded=Down payment invoices are not included in this version with this accountancy module. DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. -Pcg_version=Chart of accounts models +Pcg_version=Μοντέλα λογιστικού σχεδίου Pcg_type=Pcg type Pcg_subtype=Pcg subtype -InvoiceLinesToDispatch=Invoice lines to dispatch +InvoiceLinesToDispatch=Γραμμές τιμολογίων για αποστολή ByProductsAndServices=Ανά προϊόν και υπηρεσία -RefExt=Εξωτερικές αναφορές +RefExt=Εξωτερική αναφ ToCreateAPredefinedInvoice=Για να δημιουργήσετε ένα πρότυπο τιμολόγιο, δημιουργήστε ένα τυπικό τιμολόγιο και, στη συνέχεια, χωρίς να το επικυρώσετε, κάντε κλικ στο κουμπί "%s". LinkedOrder=Σύνδεση με παραγγελία Mode1=Μέθοδος 1 Mode2=Μέθοδος 2 -CalculationRuleDesc=Για να υπολογιστεί το συνολικό ΦΠΑ, υπάρχουν δύο μέθοδοι:
Μέθοδος 1 στρογγυλοποίηση ΦΠΑ για κάθε γραμμή, στη συνέχεια, αθροίζοντας τους.
Μέθοδος 2 αθροίζοντας όλων των ΦΠΑ σε κάθε γραμμή, τότε η στρογγυλοποίηση είναι στο αποτέλεσμα.
Το τελικό αποτέλεσμα μπορεί να διαφέρει από λίγα λεπτά. Προεπιλεγμένη λειτουργία είναι η λειτουργία %s. +CalculationRuleDesc=Για τον υπολογισμό του συνολικού ΦΠΑ, υπάρχουν δύο μέθοδοι:
Μέθοδος 1 στρογγυλοποίηση του ΦΠΑ σε κάθε γραμμή και, στη συνέχεια, η άθροισή τους.
Μέθοδος 2 άθροιση του ΦΠΑ σε κάθε γραμμή και, στη συνέχεια, στρογγυλοποίηση.
Το τελικό αποτέλεσμα μπορεί να διαφέρει κατά λίγα λεπτά. Προεπιλεγμένη λειτουργία είναι η %s. CalculationRuleDescSupplier=Σύμφωνα με τον προμηθευτή, επιλέξτε κατάλληλη μέθοδο για να εφαρμόσετε τον ίδιο κανόνα υπολογισμού και για να λάβετε το ίδιο αποτέλεσμα που αναμένεται από τον προμηθευτή σας. TurnoverPerProductInCommitmentAccountingNotRelevant=Η αναφορά κύκλου εργασιών που συλλέγεται ανά προϊόν δεν είναι διαθέσιμη. Αυτή η αναφορά είναι διαθέσιμη μόνο για το τιμολόγιο κύκλου εργασιών. -TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=Η αναφορά του κύκλου εργασιών που έχει συγκεντρωθεί ανά φορολογικό συντελεστή πώλησης δεν είναι διαθέσιμη. Αυτή η αναφορά είναι διαθέσιμη μόνο για το τιμολόγιο κύκλου εργασιών. +TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=Η αναφορά του κύκλου εργασιών που εισπράχθηκε ανά συντελεστή φόρου πώλησης δεν είναι διαθέσιμη. Αυτή η αναφορά είναι διαθέσιμη μόνο για τιμολογημένο κύκλο εργασιών. CalculationMode=Τρόπος υπολογισμού -AccountancyJournal=Λογιστικό περιοδικό λογιστικής +AccountancyJournal=Ημερολόγιο λογιστικού κώδικα ACCOUNTING_VAT_SOLD_ACCOUNT=Λογαριασμός λογιστικής από προεπιλογή για Φ.Π.Α. στις πωλήσεις (χρησιμοποιείται αν δεν ορίζεται στη ρύθμιση λεξικού ΦΠΑ) ACCOUNTING_VAT_BUY_ACCOUNT=Λογαριασμός λογιστικής από προεπιλογή για Φ.Π.Α. στις αγορές (χρησιμοποιείται αν δεν έχει οριστεί στη ρύθμιση λεξικού ΦΠΑ) ACCOUNTING_VAT_PAY_ACCOUNT=Accounting account by default for paying VAT -ACCOUNTING_ACCOUNT_CUSTOMER=Accounting account used for customer third parties +ACCOUNTING_ACCOUNT_CUSTOMER=Λογιστικός λογαριασμός που χρησιμοποιείται για τρίτους πελάτες ACCOUNTING_ACCOUNT_CUSTOMER_Desc=Ο αποκλειστικός λογιστικός λογαριασμός που ορίζεται σε κάρτα τρίτου μέρους θα χρησιμοποιηθεί μόνο για τη λογιστική της Subledger. Αυτός θα χρησιμοποιηθεί για τη Γενική Λογιστική και ως προεπιλεγμένη αξία της λογιστικής Subledger, εάν δεν έχει οριστεί ειδικό λογαριασμός λογιστικής πελάτη σε τρίτους. ACCOUNTING_ACCOUNT_SUPPLIER=Λογαριασμός λογιστικής που χρησιμοποιείται για τους τρίτους προμηθευτές ACCOUNTING_ACCOUNT_SUPPLIER_Desc=Ο αποκλειστικός λογιστικός λογαριασμός που ορίζεται σε κάρτα τρίτου μέρους θα χρησιμοποιηθεί μόνο για τη λογιστική της Subledger. Αυτός θα χρησιμοποιηθεί για τη Γενική Λογιστική και ως προεπιλεγμένη αξία της λογιστικής της Subleger εάν δεν έχει καθοριστεί ο λογαριασμός λογιστικής αποκλειστικής προμήθειας σε τρίτους. @@ -256,42 +256,42 @@ ConfirmCloneVAT=Επιβεβαιώστε τον κλώνο μιας δήλωση ConfirmCloneSalary=Επιβεβαιώστε τον κλώνο ενός μισθού CloneTaxForNextMonth=Clone it for next month SimpleReport=Απλή αναφορά -AddExtraReport=Extra reports (add foreign and national customer report) +AddExtraReport=Επιπλέον αναφορές (προσθήκη αναφοράς ξένων και εθνικών πελατών) OtherCountriesCustomersReport=Αναφορά για πελάτες εξωτερικού -BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Based on the two first letters of the VAT number being different from your own company's country code -SameCountryCustomersWithVAT=National customers report -BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Based on the two first letters of the VAT number being the same as your own company's country code +BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Με βάση το ότι τα δύο πρώτα γράμματα του ΑΦΜ διαφέρουν από τον κωδικό χώρας της εταιρείας σας +SameCountryCustomersWithVAT=Αναφορά εθνικών πελατών +BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Με βάση το ότι τα δύο πρώτα γράμματα του ΑΦΜ είναι ίδια με τον κωδικό χώρας της εταιρείας σας LinkedFichinter=Σύνδεσμος σε μία παρέμβαση ImportDataset_tax_contrib=Κοινωνικές/φορολογικές εισφορές -ImportDataset_tax_vat=Vat payments -ErrorBankAccountNotFound=Error: Bank account not found -FiscalPeriod=Accounting period -ListSocialContributionAssociatedProject=List of social contributions associated with the project +ImportDataset_tax_vat=Πληρωμές Φ.Π.Α. +ErrorBankAccountNotFound=Σφάλμα: Ο τραπεζικός λογαριασμός δεν βρέθηκε +FiscalPeriod=Λογιστική περίοδος +ListSocialContributionAssociatedProject=Λίστα κοινωνικών εισφορών που σχετίζονται με το έργο DeleteFromCat=Κατάργηση από τη λογιστική ομάδα -AccountingAffectation=Λογιστική εκχώρηση -LastDayTaxIsRelatedTo=Την τελευταία ημέρα της περιόδου ο φόρος σχετίζεται με +AccountingAffectation=Λογιστική κατανομή +LastDayTaxIsRelatedTo=Τελευταία ημέρα της περιόδου με την οποία ο φόρος σχετίζεται VATDue=Φόρος πωλήσεων που αξιώνεται ClaimedForThisPeriod=Ισχυρίζεται για την περίοδο PaidDuringThisPeriod=Πληρώθηκε για αυτήν την περίοδο PaidDuringThisPeriodDesc=Αυτό είναι το άθροισμα όλων των πληρωμών που συνδέονται με δηλώσεις ΦΠΑ που έχουν ημερομηνία λήξης περιόδου στο επιλεγμένο εύρος ημερομηνιών ByVatRate=Με φορολογικό συντελεστή πώλησης -TurnoverbyVatrate=Ο κύκλος εργασιών τιμολογείται από το συντελεστή φόρου πώλησης -TurnoverCollectedbyVatrate=Ο κύκλος εργασιών που εισπράττεται από το φορολογικό συντελεστή πώλησης -PurchasebyVatrate=Ποσοστό φόρου επί των πωλήσεων +TurnoverbyVatrate=Κύκλος εργασιών που τιμολογήθηκε με συντελεστή φόρου επί των πωλήσεων +TurnoverCollectedbyVatrate=Ο κύκλος εργασιών που εισπράχθηκε με συντελεστή φόρου επί των πωλήσεων +PurchasebyVatrate=Συντελεστής φόρου αγοράς βάσει πώλησης LabelToShow=Σύντομη ετικέτα -PurchaseTurnover=Κύκλος εργασιών αγοράς -PurchaseTurnoverCollected=Συλλέχθηκε ο κύκλος εργασιών αγοράς -RulesPurchaseTurnoverDue=- Περιλαμβάνει τα οφειλόμενα τιμολόγια του προμηθευτή, είτε πληρώνονται είτε όχι.
- Βασίζεται στην ημερομηνία τιμολογίου αυτών των τιμολογίων.
+PurchaseTurnover=Κύκλος εργασιών αγορών +PurchaseTurnoverCollected=Ο κύκλος εργασιών αγορών που εισπράχθηκε +RulesPurchaseTurnoverDue=- Περιλαμβάνει τα οφειλόμενα τιμολόγια του προμηθευτή, είτε πληρώνονται είτε όχι.
- Βασίζεται στην ημερομηνία επικύρωσης αυτών των τιμολογίων.
RulesPurchaseTurnoverIn=- Περιλαμβάνει όλες τις αποτελεσματικές πληρωμές τιμολογίων που πραγματοποιούνται σε προμηθευτές.
- Βασίζεται στην ημερομηνία πληρωμής αυτών των τιμολογίων
-RulesPurchaseTurnoverTotalPurchaseJournal=Περιλαμβάνει όλες τις χρεωστικές γραμμές από το περιοδικό αγορών. +RulesPurchaseTurnoverTotalPurchaseJournal=Περιλαμβάνει όλες τις χρεωστικές γραμμές από το ημερολόγιο αγορών. RulesPurchaseTurnoverOfExpenseAccounts=Περιλαμβάνει (χρέωση - πίστωση) γραμμών για λογαριασμούς προϊόντων στην ομάδα ΕΞΟΔΑ -ReportPurchaseTurnover=Τιμολόγηση κύκλου εργασιών αγοράς -ReportPurchaseTurnoverCollected=Συλλέχθηκε ο κύκλος εργασιών αγοράς +ReportPurchaseTurnover=Ο κύκλος εργασιών αγορών που τιμολογήθηκε +ReportPurchaseTurnoverCollected=Ο κύκλος εργασιών αγορών που εισπράχθηκε IncludeVarpaysInResults = Συμπεριλάβετε διάφορες πληρωμές στις αναφορές IncludeLoansInResults = Συμπεριλάβετε δάνεια στις αναφορές -InvoiceLate30Days = Ανείσπρακτα (> 30 ημέρες) -InvoiceLate15Days = Ανείσπρακτα (15 έως 30 ημέρες) -InvoiceLateMinus15Days = Ανείσπρακτα (< 15 ημέρες) +InvoiceLate30Days = Με καθυστέρηση (> 30 ημέρες) +InvoiceLate15Days = Με καθυστέρηση (15 έως 30 ημέρες) +InvoiceLateMinus15Days = Με καθυστέρηση (< 15 ημέρες) InvoiceNotLate = Προς είσπραξη (< 15 ημέρες) InvoiceNotLate15Days = Προς είσπραξη (15 έως 30 ημέρες) InvoiceNotLate30Days = Προς είσπραξη (> 30 ημέρες) @@ -300,3 +300,4 @@ InvoiceToPay15Days=Προς πληρωμή (15 έως 30 ημέρες) InvoiceToPay30Days=Προς πληρωμή (> 30 ημέρες) ConfirmPreselectAccount=Προεπιλογή κωδικού λογιστικής ConfirmPreselectAccountQuestion=Είστε σίγουροι ότι θέλετε να προεπιλέξετε τις %sεπιλεγμένες γραμμές με αυτόν τον κωδικό λογιστικής; +AmountPaidMustMatchAmountOfDownPayment=Το ποσό που καταβλήθηκε πρέπει να αντιστοιχεί στο ποσό της προκαταβολής diff --git a/htdocs/langs/el_GR/dict.lang b/htdocs/langs/el_GR/dict.lang index 28389f31222..059e51b2f41 100644 --- a/htdocs/langs/el_GR/dict.lang +++ b/htdocs/langs/el_GR/dict.lang @@ -15,7 +15,7 @@ CountryUS=Ηνωμένες Πολιτείες Αμερικής CountryMA=Μαρόκο CountryDZ=Αλγερία CountryCA=Καναδάς -CountryTG=Togo +CountryTG=Τόγκο CountryGA=Γκαμπόν CountryNL=Ολλανδία CountryHU=Ουγγαρία @@ -31,50 +31,50 @@ CountryMC=Μονακό CountryAU=Αυστραλία CountrySG=Σιγκαπούρη CountryAF=Αφγανιστάν -CountryAX=Åland Islands +CountryAX=Νήσοι Άλαντ CountryAL=Αλβανία -CountryAS=American Samoa +CountryAS=Αμερικανική Σαμόα CountryAD=Ανδόρα -CountryAO=Αγκόλα -CountryAI=Anguilla +CountryAO=Ανγκόλα +CountryAI=Ανγκουίλα CountryAQ=Ανταρκτική -CountryAG=Antigua and Barbuda +CountryAG=Αντίγκουα και Μπαρμπούντα CountryAM=Αρμενία CountryAW=Αρούμπα CountryAT=Αυστρία CountryAZ=Αζερμπαϊτζάν CountryBS=Μπαχάμες -CountryBH=Bahrain -CountryBD=Bangladesh +CountryBH=Μπαχρέιν +CountryBD=Μπαγκλαντές CountryBB=Μπαρπέιντος CountryBY=Λευκορωσία CountryBZ=Μπελίζ -CountryBJ=Benin -CountryBM=Bermuda +CountryBJ=Μπενίν +CountryBM=Βερμούδες CountryBT=Μπουτάν CountryBO=Βολιβία CountryBA=Βοσνία και Ερζεγοβίνη CountryBW=Μποτσουάνα -CountryBV=Bouvet Island +CountryBV=Νησί Μπουβέ CountryBR=Βραζιλία -CountryIO=British Indian Ocean Territory -CountryBN=Brunei Darussalam +CountryIO=Βρετανικά Εδάφη Ινδικού Ωκεανού +CountryBN=Μπρουνέι CountryBG=Βουλγαρία CountryBF=Μπουρκίνα Φάσο CountryBI=Μπουρούντι CountryKH=Καμπότζη CountryCV=Πράσινο Ακρωτήριο CountryKY=Νησιά Κέιμαν -CountryCF=Central African Republic +CountryCF=Κεντροαφρικανική Δημοκρατία CountryTD=Τσαντ CountryCL=Χιλή -CountryCX=Christmas Island -CountryCC=Cocos (Keeling) Islands +CountryCX=Νήσος των Χριστουγέννων +CountryCC=Νησιά Κόκος CountryCO=Κολομβία -CountryKM=Comoros +CountryKM=Κομόρες CountryCG=Κονγκό -CountryCD=Congo, The Democratic Republic of the -CountryCK=Cook Islands +CountryCD=Κονγκό, Λαϊκή Δημοκρατία του +CountryCK=Νησιά Κουκ CountryCR=Κόστα Ρίκα CountryHR=Κροατία CountryCU=Κούβα @@ -82,12 +82,12 @@ CountryCY=Κύπρος CountryCZ=Τσεχική Δημοκρατία CountryDK=Δανία CountryDJ=Τζιμπουτί -CountryDM=Dominica +CountryDM=Ντομίνικα CountryDO=Δομινικανή Δημοκρατία CountryEC=Εκουαδόρ CountryEG=Αίγυπτος CountrySV=Ελ Σαλβαδόρ -CountryGQ=Equatorial Guinea +CountryGQ=Ισημερινή Γουινέα CountryER=Ερυθραία CountryEE=Εσθονία CountryET=Αιθιοπία @@ -97,7 +97,7 @@ CountryFJ=Νησιά Φίτζι CountryFI=Φινλανδία CountryGF=Γαλλική Γουϊνέα CountryPF=Γαλλική Πολυνησία -CountryTF=French Southern Territories +CountryTF=Γαλλικά νότια και ανταρκτικά νησιά CountryGM=Γκάμπια CountryGE=Γεωργία CountryGH=Γκάνα @@ -109,11 +109,11 @@ CountryGP=Γουαδελούπη CountryGU=Γκουάμ CountryGT=Γουατεμάλα CountryGN=Γουϊνέα -CountryGW=Guinea-Bissau -CountryGY=Guyana +CountryGW=Γουινέα Μπισάου +CountryGY=Γουιάνα CountryHT=Αϊτή -CountryHM=Heard Island and McDonald -CountryVA=Holy See (Vatican City State) +CountryHM=Νήσοι Χερντ και Μακ Ντόναλντ +CountryVA=Βατικανό CountryHN=Ονδούρα CountryHK=Χονγκ Κονγκ CountryIS=Ισλανδία @@ -134,119 +134,119 @@ CountryKW=Κουβέιτ CountryKG=Κιργιζιστάν CountryLA=Λάος CountryLV=Λετονία -CountryLB=Lebanon -CountryLS=Lesotho +CountryLB=Λίβανος +CountryLS=Λεσότο CountryLR=Λιβερία CountryLY=Λιβύη CountryLI=Λιχτενστάιν CountryLT=Λιθουανία CountryLU=Λουξεμβούργο -CountryMO=Macao +CountryMO=Μακάο CountryMK=Δημοκρατία της Βόρειας Μακεδονίας CountryMG=Μαδαγασκάρη -CountryMW=Malawi +CountryMW=Μαλάουι CountryMY=Μαλαισία CountryMV=Μαλδίβες CountryML=Μάλι CountryMT=Μάλτα -CountryMH=Marshall Islands -CountryMQ=Martinique +CountryMH=Νήσοι Μάρσαλ +CountryMQ=Μαρτινίκα CountryMR=Μαυριτανία -CountryMU=Mauritius -CountryYT=Mayotte +CountryMU=Μαυρίκιος +CountryYT=Μαγιότ CountryMX=Μεξικό CountryFM=Μικρονησία CountryMD=Μολδαβία CountryMN=Μογγολία -CountryMS=Monserrat +CountryMS=Μονσεράτ CountryMZ=Μοζαμβίκη CountryMM=Μιανμάρ (Βιρμανία) CountryNA=Ναμίμπια -CountryNR=Nauru +CountryNR=Ναούρου CountryNP=Νεπάλ -CountryAN=Netherlands Antilles -CountryNC=New Caledonia +CountryAN=Ολλανδικές Αντίλλες +CountryNC=Νέα Καληδονία CountryNZ=Νέα Ζηλανδία CountryNI=Νικαράγουα CountryNE=Νίγηρας CountryNG=Νιγηρία -CountryNU=Niue -CountryNF=Norfolk Island -CountryMP=Northern Mariana Islands +CountryNU=Νίουε +CountryNF=Νησί Νόρφολκ +CountryMP=Βόρειες Μαριάνες Νήσοι CountryNO=Νορβηγία CountryOM=Ομάν CountryPK=Πακιστάν -CountryPW=Palau +CountryPW=Παλάου CountryPS=Παλαιστινιακό έδαφος, κατεχόμενο CountryPA=Παναμάς CountryPG=Παπούα Νέα Γουινέα CountryPY=Παραγουάη CountryPE=Περού CountryPH=Φιλιππίνες -CountryPN=Pitcairn Islands +CountryPN=Νησιά Πίτκερν CountryPL=Πολωνία CountryPR=Πουέρτο Ρίκο CountryQA=Κατάρ CountryRE=Reunion CountryRO=Ρουμανία CountryRW=Ρουάντα -CountrySH=Saint Helena -CountryKN=Saint Kitts and Nevis -CountryLC=Saint Lucia -CountryPM=Saint Pierre and Miquelon -CountryVC=Saint Vincent and Grenadines -CountryWS=Samoa +CountrySH=Αγία Ελένη +CountryKN=Άγιος Χριστόφορος και Νέβις +CountryLC=Αγία Λουκία +CountryPM=Νήσοι Αγίου Πέτρου και Μιχαήλ +CountryVC=Άγιος Βικέντιος και Γρεναδίνες +CountryWS=Σαμόα CountrySM=Σαν Μαρίνο -CountryST=Sao Tome and Principe +CountryST=Σάο Τομέ και Πρίνσιπε CountryRS=Σερβία CountrySC=Σεϋχέλλες CountrySL=Σιέρρα Λεόνε CountrySK=Σλοβακία CountrySI=Σλοβενία -CountrySB=Solomon Islands +CountrySB=Νησιά του Σολομώντα CountrySO=Σομαλία CountryZA=Νότια Αφρική -CountryGS=South Georgia and the South Sandwich Islands +CountryGS=Νότια Γεωργία και τα Νότια Σάντουιτς Νησιά CountryLK=Σρι Λάνκα CountrySD=Σουδάν -CountrySR=Suriname -CountrySJ=Svalbard and Jan Mayen -CountrySZ=Swaziland +CountrySR=Σουρινάμ +CountrySJ=Σβάλμπαρντ και Γιαν Μάγιεν +CountrySZ=Σουαζιλάνδη CountrySY=Συρία CountryTW=Ταϊβάν CountryTJ=Τατζικιστάν CountryTZ=Τανζανία CountryTH=Ταϊλάνδη -CountryTL=Timor-Leste -CountryTK=Tokelau +CountryTL=Ανατολικό Τιμόρ +CountryTK=Τοκελάου CountryTO=Τόνγκα -CountryTT=Trinidad and Tobago +CountryTT=Τρινιντάντ και Τομπάγκο CountryTR=Τουρκία -CountryTM=Turkmenistan +CountryTM=Τουρκμενιστάν CountryTC=Νήσοι Τερκς και Κάικος -CountryTV=Tuvalu +CountryTV=Τουβαλού CountryUG=Ουγκάντα CountryUA=Ουκρανία CountryAE=Ηνωμένα Αραβικά Εμιράτα -CountryUM=United States Minor Outlying Islands +CountryUM=Μικρά Απομακρυσμένα Νησιά Ηνωμένων Πολιτειών CountryUY=Ουρουγουάη CountryUZ=Ουζμπεκιστάν -CountryVU=Vanuatu +CountryVU=Βανουάτου CountryVE=Βενεζουέλα CountryVN=Βιετνάμ -CountryVG=Virgin Islands, British -CountryVI=Virgin Islands, U.S. -CountryWF=Wallis and Futuna -CountryEH=Western Sahara +CountryVG=Βρετανικές Παρθένοι Νήσοι +CountryVI=Αμερικανικές Παρθένοι Νήσοι +CountryWF=Ουώλλις και Φουτούνα +CountryEH=Δυτική Σαχάρα CountryYE=Υεμένη CountryZM=Ζάμπια CountryZW=Ζιμπάμπουε -CountryGG=Guernsey -CountryIM=Isle of Man -CountryJE=Jersey -CountryME=Montenegro -CountryBL=Saint Barthelemy -CountryMF=Saint Martin +CountryGG=Γκέρνσεϊ +CountryIM=Νήσος Μαν +CountryJE=Τζέρσεϊ +CountryME=Μαυροβούνιο +CountryBL=Άγιος Βαρθολομαίος +CountryMF=Άγιος Μαρτίνος ##### Civilities ##### CivilityMME=Κυρία @@ -256,57 +256,57 @@ CivilityMTRE=Master CivilityDR=Δόκτορας ##### Currencies ##### Currencyeuros=€ -CurrencyAUD=AU Dollars -CurrencySingAUD=AU Dollar -CurrencyCAD=CAN Dollars -CurrencySingCAD=CAN Dollar -CurrencyCHF=Swiss Francs -CurrencySingCHF=Swiss Franc -CurrencyEUR=ευρώ +CurrencyAUD=Δολάρια Αυστραλίας +CurrencySingAUD=Δολάριο Αυστραλίας +CurrencyCAD=Δολάρια Καναδά +CurrencySingCAD=Δολάριο Καναδά +CurrencyCHF=Ελβετικά Φράγκα +CurrencySingCHF=Ελβετικό Φράγκο +CurrencyEUR=Ευρώ CurrencySingEUR=€ -CurrencyFRF=French Francs -CurrencySingFRF=French Franc -CurrencyGBP=GB Pounds -CurrencySingGBP=GB Pound -CurrencyINR=Indian rupees -CurrencySingINR=Indian rupee -CurrencyMAD=Dirham -CurrencySingMAD=Dirham -CurrencyMGA=Ariary -CurrencySingMGA=Ariary -CurrencyMUR=Mauritius rupees -CurrencySingMUR=Mauritius rupee -CurrencyNOK=Norwegian krones -CurrencySingNOK=κορώνες Νορβηγίας -CurrencyTND=Tunisian dinars -CurrencySingTND=Tunisian dinar +CurrencyFRF=Γαλλικά Φράγκα +CurrencySingFRF=Γαλλικό Φράγκο +CurrencyGBP=Λίρες Αγγλίας +CurrencySingGBP=Λίρα Αγγλίας +CurrencyINR=Ινδικές ρουπίες +CurrencySingINR=Ινδική ρουπία +CurrencyMAD=Ντιράμ +CurrencySingMAD=Ντιράμ +CurrencyMGA=Αριάρι +CurrencySingMGA=Αριάρι +CurrencyMUR=Ρουπίες Μαυρικίου +CurrencySingMUR=Ρουπία Μαυρικίου +CurrencyNOK=Νορβηγικές κορώνες +CurrencySingNOK=Κορώνες Νορβηγίας +CurrencyTND=Δηνάρια Τυνησίας +CurrencySingTND=Δηνάριο Τυνησίας CurrencyUSD=Δολάρια Ηνωμένων Πολιτειών -CurrencySingUSD=Αμερικάνικο δολάριο +CurrencySingUSD=Δολάριο ΗΠΑ CurrencyUAH=Γρίβνα CurrencySingUAH=Γρίβνα -CurrencyXAF=CFA Francs BEAC -CurrencySingXAF=CFA Franc BEAC -CurrencyXOF=CFA Francs BCEAO -CurrencySingXOF=CFA Franc BCEAO -CurrencyXPF=CFP Francs -CurrencySingXPF=CFP Franc +CurrencyXAF=Φράγκα CFA Κεντρικής Αφρικής BEAC +CurrencySingXAF=Φράγκo CFA Κεντρικής Αφρικής BEAC +CurrencyXOF=Φράγκα CFA Κεντρικής Αφρικής BCEAO +CurrencySingXOF=Φράγκο CFA Κεντρικής Αφρικής BEAC +CurrencyXPF=Φράγκα CFP +CurrencySingXPF=Φράγκο CFP CurrencyCentEUR=σεντς CurrencyCentSingEUR=σεντ -CurrencyCentINR=paisa -CurrencyCentSingINR=paise -CurrencyThousandthSingTND=χιλιοστός +CurrencyCentINR=πάισα +CurrencyCentSingINR=πάισε +CurrencyThousandthSingTND=χιλιάδες #### Input reasons ##### DemandReasonTypeSRC_INTE=Διαδίκτυο -DemandReasonTypeSRC_CAMP_MAIL=Εκστρατεία για τις Ταχυδρομικές -DemandReasonTypeSRC_CAMP_EMAIL=Στέλνοντας εκστρατεία -DemandReasonTypeSRC_CAMP_PHO=Εκστρατεία Τηλέφωνο +DemandReasonTypeSRC_CAMP_MAIL=Καμπάνια αλληλογραφίας +DemandReasonTypeSRC_CAMP_EMAIL=Καμπάνια αποστολής email +DemandReasonTypeSRC_CAMP_PHO=Τηλεφωνική καμπάνια DemandReasonTypeSRC_CAMP_FAX=Εκστρατεία Fax -DemandReasonTypeSRC_COMM=Εμπορική επικοινωνία -DemandReasonTypeSRC_SHOP=Shop Επικοινωνία +DemandReasonTypeSRC_COMM=Εμπορική επαφή +DemandReasonTypeSRC_SHOP=Επαφή καταστήματος DemandReasonTypeSRC_WOM=Από στόμα σε στόμα -DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_PARTNER=Συνέταιρος DemandReasonTypeSRC_EMPLOYEE=Υπάλληλος -DemandReasonTypeSRC_SPONSORING=Sponsorship +DemandReasonTypeSRC_SPONSORING=Χρηματοδότηση DemandReasonTypeSRC_SRC_CUSTOMER=Εισερχόμενη επαφή πελάτη #### Paper formats #### PaperFormatEU4A0=Format 4A0 @@ -353,7 +353,7 @@ ExpAuto10PCV=10 CV και περισσότερο ExpAuto11PCV=11 CV και περισσότερο ExpAuto12PCV=12 CV και περισσότερα ExpAuto13PCV=13 CV και περισσότερο -ExpCyclo=Χωρητικότητα μικρότερη έως 50cm3 +ExpCyclo=Χωρητικότητα μικρότερη στα 50cm3 ExpMoto12CV=Μοτοσικλέτα 1 ή 2 CV ExpMoto345CV=Μοτοσικλέτα 3, 4 ή 5 CV ExpMoto5PCV=Μοτοσικλέτα 5 CV και περισσότερο diff --git a/htdocs/langs/el_GR/errors.lang b/htdocs/langs/el_GR/errors.lang index 02319bb6dfa..f9eb877e700 100644 --- a/htdocs/langs/el_GR/errors.lang +++ b/htdocs/langs/el_GR/errors.lang @@ -15,242 +15,243 @@ ErrorGroupAlreadyExists=Η ομάδα %s υπάρχει ήδη. ErrorEmailAlreadyExists=Το email %s υπάρχει ήδη. ErrorRecordNotFound=Η εγγραφή δεν βρέθηκε. ErrorFailToCopyFile=Απέτυχε η αντιγραφή του αρχείου '%s' στο '%s'. -ErrorFailToCopyDir=Failed to copy directory '%s' into '%s'. -ErrorFailToRenameFile=Απέτυχε η μετονομασία του αρχείου "%s» σε «%s». -ErrorFailToDeleteFile=Αποτυχία για να αφαιρέσετε το αρχείο %s. -ErrorFailToCreateFile=Απέτυχε η δημιουργία του αρχείου %s. -ErrorFailToRenameDir=Απέτυχε να μετονομάσετε «%s» κατάλογο σε «%s». -ErrorFailToCreateDir=Αποτυχία δημιουργίας καταλόγου %s. -ErrorFailToDeleteDir=Αποτυχία για να διαγράψετε τον κατάλογο «%s». -ErrorFailToMakeReplacementInto=Failed to make replacement into file '%s'. -ErrorFailToGenerateFile=Failed to generate file '%s'. +ErrorFailToCopyDir=Απέτυχε η αντιγραφή του καταλόγου ' %s ' στο ' %s '. +ErrorFailToRenameFile=Απέτυχε η μετονομασία του αρχείου ' %s ' σε ' %s '. +ErrorFailToDeleteFile=Αποτυχία κατάργησης του αρχείου ' %s '. +ErrorFailToCreateFile=Απέτυχε η δημιουργία του αρχείου '%s'. +ErrorFailToRenameDir=Απέτυχε η μετονομασία του καταλόγου ' %s ' σε ' %s '. +ErrorFailToCreateDir=Αποτυχία δημιουργίας του καταλόγου ' %s '. +ErrorFailToDeleteDir=Απέτυχε η διαγραφή του καταλόγου " %s ". +ErrorFailToMakeReplacementInto=Απέτυχε η αντικατάσταση του αρχείου " %s ". +ErrorFailToGenerateFile=Απέτυχε η δημιουργία του αρχείου " %s ". ErrorThisContactIsAlreadyDefinedAsThisType=Η επαφή αυτή έχει ήδη οριστεί ως επαφή για αυτόν τον τύπο. -ErrorCashAccountAcceptsOnlyCashMoney=Αυτό τραπεζικός λογαριασμός είναι ένας λογαριασμός σε μετρητά, έτσι ώστε να δέχεται πληρωμές σε μετρητά τύπου μόνο. -ErrorFromToAccountsMustDiffers=Πηγή και τους στόχους των τραπεζικών λογαριασμών πρέπει να είναι διαφορετικό. -ErrorBadThirdPartyName=Κακή τιμή για όνομα τρίτου μέρους +ErrorCashAccountAcceptsOnlyCashMoney=Αυτός ο τραπεζικός λογαριασμός είναι λογαριασμός μετρητών, επομένως δέχεται πληρωμές μόνο με μετρητά. +ErrorFromToAccountsMustDiffers=Οι τραπεζικοί λογαριασμοί προέλευσης και στόχοι πρέπει να είναι διαφορετικοί. +ErrorBadThirdPartyName=Λάθος τιμή για όνομα τρίτου μέρους ForbiddenBySetupRules=Απαγορεύεται από τους κανόνες εγκατάστασης ErrorProdIdIsMandatory=Το %s είναι υποχρεωτικό ErrorAccountancyCodeCustomerIsMandatory=Ο λογιστικός κωδικός του πελάτη %s είναι υποχρεωτικός ErrorBadCustomerCodeSyntax=Λάθος σύνταξη για τον κωδικό πελάτη -ErrorBadBarCodeSyntax=Κακή σύνταξη για τον γραμμωτό κώδικα. Μπορεί να ορίσετε έναν κακό τύπο γραμμωτού κώδικα ή έχετε ορίσει μια μάσκα γραμμωτού κώδικα για την αρίθμηση που δεν ταιριάζει με την τιμή που σαρώθηκε. -ErrorCustomerCodeRequired=Κωδικός πελάτη απαιτείται +ErrorBadBarCodeSyntax=Λάθος σύνταξη για γραμμωτό κώδικα. Μπορεί να έχετε ορίσει έναν κακό τύπο γραμμικού κώδικα ή να έχετε ορίσει μια μάσκα γραμμικού κώδικα για αρίθμηση που δεν ταιριάζει με την τιμή που έχει σαρωθεί. +ErrorCustomerCodeRequired=Απαιτείται κωδικός πελάτη ErrorBarCodeRequired=Απαιτείται γραμμικός κώδικας -ErrorCustomerCodeAlreadyUsed=Ο κωδικός πελάτη που έχει ήδη χρησιμοποιηθεί -ErrorBarCodeAlreadyUsed=Ο γραμμικός κώδικας που χρησιμοποιείται ήδη -ErrorPrefixRequired=Απαιτείται Πρόθεμα -ErrorBadSupplierCodeSyntax=Κακή σύνταξη για τον κωδικό προμηθευτή +ErrorCustomerCodeAlreadyUsed=Ο κωδικός πελάτη χρησιμοποιείται ήδη +ErrorBarCodeAlreadyUsed=Ο γραμμωτός κώδικας χρησιμοποιείται ήδη +ErrorPrefixRequired=Απαιτείται πρόθεμα +ErrorBadSupplierCodeSyntax=Λάθος σύνταξη για τον κωδικό προμηθευτή ErrorSupplierCodeRequired=Απαιτείται κωδικός προμηθευτή -ErrorSupplierCodeAlreadyUsed=Κωδικός προμηθευτή που χρησιμοποιήθηκε ήδη -ErrorBadParameters=Λάθος παράμετρος +ErrorSupplierCodeAlreadyUsed=Ο κωδικός προμηθευτή χρησιμοποιείται ήδη +ErrorBadParameters=Λάθος παράμετροι ErrorWrongParameters=Λάθος ή ελλείπεις παράμετροι -ErrorBadValueForParameter=Η τιμή '%s' δεν είναι έγγυρη για την παράμετρο '%s' +ErrorBadValueForParameter=Λανθασμένη τιμή "%s" για την παράμετρο "%s" ErrorBadImageFormat=Το αρχείο εικόνας δεν έχει μια υποστηριζόμενη μορφή (Η PHP σας δεν υποστηρίζει λειτουργίες για να μετατρέψετε τις εικόνες αυτής της μορφής) ErrorBadDateFormat=Η τιμή «%s« δεν έχει σωστή μορφή ημερομηνίας ErrorWrongDate=Η ημερομηνία δεν είναι σωστή! -ErrorFailedToWriteInDir=Αποτυχία εγγραφής στον %s φάκελο -ErrorFoundBadEmailInFile=Βρέθηκε εσφαλμένη σύνταξη e-mail για %s γραμμές στο αρχείο (%s γραμμή παράδειγμα με e-mail = %s) +ErrorFailedToWriteInDir=Απέτυχε η εγγραφή στον κατάλογο %s +ErrorFoundBadEmailInFile=Βρέθηκε λανθασμένη σύνταξη email για %s γραμμές στο αρχείο (παράδειγμα γραμμής %s με email=%s) ErrorUserCannotBeDelete=Ο χρήστης δεν μπορεί να διαγραφεί. Ίσως σχετίζεται με οντότητες Dolibarr. ErrorFieldsRequired=Ορισμένα υποχρεωτικά πεδία έχουν μείνει κενά. ErrorSubjectIsRequired=Το θέμα του email είναι υποχρεωτικό -ErrorFailedToCreateDir=Αποτυχία δημιουργίας φακέλου. Βεβαιωθείτε ότι ο Web server χρήστης έχει δικαιώματα να γράψει στο φάκελο εγγράφων του Dolibarr. Αν η safe_mode παράμετρος είναι ενεργοποιημένη για την PHP, ελέγξτε ότι τα αρχεία php του Dolibarr ανήκουν στον web server χρήστη (ή ομάδα). +ErrorFailedToCreateDir=Αποτυχία δημιουργίας καταλόγου. Ελέγξτε ότι ο χρήστης του διακομιστή Web έχει δικαιώματα εγγραφής στον κατάλογο εγγράφων Dolibarr. Εάν η παράμετρος safe_mode είναι ενεργοποιημένη σε αυτήν την PHP, ελέγξτε ότι τα αρχεία php Dolibarr ανήκουν σε χρήστη (ή ομάδα) διακομιστή web. ErrorNoMailDefinedForThisUser=Δεν έχει οριστεί mail για αυτόν το χρήστη ErrorSetupOfEmailsNotComplete=Η ρύθμιση των email δεν έχει ολοκληρωθεί ErrorFeatureNeedJavascript=Αυτό το χαρακτηριστικό χρειάζεται ενεργοποιημένη την javascript. Αλλάξτε την ρύθμιση στο Ρυθμίσεις - Εμφάνιση. -ErrorTopMenuMustHaveAParentWithId0=Ένα μενού του «Top» τύπου δεν μπορεί να έχει ένα μενού γονέα. Βάλτε 0 στο μενού του γονέα ή να επιλέξετε ένα μενού του τύπου «αριστερά». -ErrorLeftMenuMustHaveAParentId=Ένα μενού της «Αριστεράς» τύπου πρέπει να έχει ένα id γονέα. -ErrorFileNotFound=Το αρχείο δεν βρέθηκε %s (Λανθασμένη διαδρομή, λανθασμένη δικαιώματα ή δεν επιτρέπεται η πρόσβαση από την PHP openbasedir ή safe_mode παράμετρος) -ErrorDirNotFound=%s Directory δεν βρέθηκε (Bad μονοπάτι, λάθος άδειες ή δεν επιτρέπεται η πρόσβαση από την PHP openbasedir ή safe_mode παράμετρος) -ErrorFunctionNotAvailableInPHP=%s Λειτουργία απαιτείται για αυτό το χαρακτηριστικό, αλλά δεν είναι διαθέσιμα σε αυτή την έκδοση / setup της PHP. +ErrorTopMenuMustHaveAParentWithId0=Ένα μενού τύπου "Top" δεν μπορεί να έχει γονικό μενού. Βάλτε 0 στο γονικό μενού ή επιλέξτε ένα μενού τύπου «Left». +ErrorLeftMenuMustHaveAParentId=Ένα μενού τύπου "Left" πρέπει να έχει αναγνωριστικό γονέα. +ErrorFileNotFound=Το αρχείο %s δεν βρέθηκε (Λάθος διαδρομή, λανθασμένα δικαιώματα, η πρόσβαση δεν επιτρέπεται από την PHP openbasedir ή την παράμετρο safe_mode) +ErrorDirNotFound=Δεν βρέθηκε ο κατάλογος %s (Λάθος διαδρομή, λανθασμένα δικαιώματα, η πρόσβαση δεν επιτρέπεται από την PHP openbasedir ή την παράμετρο safe_mode) +ErrorFunctionNotAvailableInPHP=Η Function %s απαιτείται για αυτήν τη δυνατότητα, αλλά δεν είναι διαθέσιμη σε αυτήν την έκδοση/ρύθμιση της PHP. ErrorDirAlreadyExists=Ένας κατάλογος με αυτό το όνομα υπάρχει ήδη. ErrorFileAlreadyExists=Ένα αρχείο με αυτό το όνομα υπάρχει ήδη. ErrorDestinationAlreadyExists=Υπάρχει ήδη ένα άλλο αρχείο με το όνομα %s . ErrorPartialFile=Ο διακομιστής δεν έλαβε ολόκληρο το αρχείο. -ErrorNoTmpDir=Ο προσωρινός φάκελος %s δεν υπάρχει. +ErrorNoTmpDir=Ο προσωρινός κατάλογος %s δεν υπάρχει. ErrorUploadBlockedByAddon=Η μεταφόρτωση απετράπει από ένα PHP / Apache plugin. ErrorFileSizeTooLarge=Το μέγεθος του αρχείου είναι πολύ μεγάλο ή το αρχείο δεν παρέχεται. ErrorFieldTooLong=Το πεδίο %s είναι πολύ μεγάλο. -ErrorSizeTooLongForIntType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου ακεραίου (%s είναι το μέγιστο πλήθος ψηφίων) -ErrorSizeTooLongForVarcharType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου αλφαριθμητικού (%s είναι το μέγιστο πλήθος χαρακτήρων) -ErrorNoValueForSelectType=Παρακαλούμε συμπληρώστε τιμή για την αναδυόμενη λίστα επιλογής -ErrorNoValueForCheckBoxType=Παρακαλούμε συμπληρώστε τιμή για την λίστα επιλογής -ErrorNoValueForRadioType=Παρακαλούμε συμπληρώστε τιμή για την λίστα επιλογής μίας επιλογής -ErrorBadFormatValueList=The list value cannot have more than one comma: %s, but need at least one: key,value +ErrorSizeTooLongForIntType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου int (ακεραίου) (%s ψηφία το περισσότερο +ErrorSizeTooLongForVarcharType=Το μέγεθος είναι υπερβολικά μεγάλο για τιμή τύπου string (%s ψηφία το περισσότερο) +ErrorNoValueForSelectType=Παρακαλώ συμπληρώστε την τιμή για τη λίστα επιλογής +ErrorNoValueForCheckBoxType=Παρακαλώ συμπληρώστε την τιμή για τη λίστα πλαισίου ελέγχου +ErrorNoValueForRadioType=Παρακαλώ συμπληρώστε την τιμή για τη λίστα τύπου radio +ErrorBadFormatValueList=Η τιμή της λίστας δεν μπορεί να έχει περισσότερα από ένα κόμμα: %s , αλλά χρειάζεται τουλάχιστον ένα: κλειδί, τιμή ErrorFieldCanNotContainSpecialCharacters=Το πεδίο %s δεν πρέπει να περιέχει ειδικούς χαρακτήρες. -ErrorFieldCanNotContainSpecialNorUpperCharacters=Το πεδίο %s δεν πρέπει να περιέχει ειδικούς χαρακτήρες ούτε κεφαλαίους χαρακτήρες και δεν μπορεί να περιέχει μόνο αριθμούς. +ErrorFieldCanNotContainSpecialNorUpperCharacters=Το πεδίο %s δεν πρέπει να περιέχει ειδικούς χαρακτήρες, ούτε κεφαλαία και δεν μπορεί να περιέχει μόνο αριθμούς. ErrorFieldMustHaveXChar=Το πεδίο %s πρέπει να έχει τουλάχιστον %s χαρακτήρες. -ErrorNoAccountancyModuleLoaded=Δεν έχει ενεργοποιηθεί λογιστική μονάδα +ErrorNoAccountancyModuleLoaded=Δεν έχει ενεργοποιηθεί η ενότητα λογιστικής ErrorExportDuplicateProfil=Αυτό το όνομα προφίλ υπάρχει ήδη για αυτό το σύνολο των εξαγωγών. ErrorLDAPSetupNotComplete=Η αντιστοίχιση Dolibarr-LDAP δεν είναι πλήρης. -ErrorLDAPMakeManualTest=Ένα αρχείο. Ldif έχει δημιουργηθεί στον φάκελο %s. Προσπαθήστε να το φορτώσετε χειροκίνητα από την γραμμή εντολών για να έχετε περισσότερες πληροφορίες σχετικά με τα σφάλματα. -ErrorCantSaveADoneUserWithZeroPercentage=Δεν είναι δυνατή η αποθήκευση μιας ενέργειας με "κατάσταση δεν έχει ξεκινήσει" εάν συμπληρώνεται επίσης το πεδίο "done by". +ErrorLDAPMakeManualTest=Ένα αρχείο .ldif έχει δημιουργηθεί στον κατάλογο %s. Προσπαθήστε να το φορτώσετε χειροκίνητα από τη γραμμή εντολών για να έχετε περισσότερες πληροφορίες σχετικά με τα σφάλματα. +ErrorCantSaveADoneUserWithZeroPercentage=Δεν είναι δυνατή η αποθήκευση μιας ενέργειας με "κατάσταση μη έναρξης" εάν το πεδίο "ολοκληρώθηκε από" είναι επίσης συμπληρωμένο. ErrorRefAlreadyExists=Η αναφορά %s υπάρχει ήδη. -ErrorPleaseTypeBankTransactionReportName=Παρακαλούμε εισάγετε το όνομα του τραπεζικού λογαριασμού όπου πρέπει να αναφέρεται η καταχώρηση (Format YYYYMM ή YYYYMMDD) -ErrorRecordHasChildren=Δεν ήταν δυνατή η διαγραφή της εγγραφής, δεδομένου ότι έχει ορισμένα αρχεία παιδιών. -ErrorRecordHasAtLeastOneChildOfType=Το αντικείμενο %s έχει τουλάχιστον ένα child τύπου %s +ErrorPleaseTypeBankTransactionReportName=Παρακαλώ εισάγετε το όνομα του τραπεζικού λογαριασμού που πρέπει να καταχωρηθεί η εγγραφή (Μορφή YYYYMM ή YYYYMMDD) +ErrorRecordHasChildren=Απέτυχε η διαγραφή της εγγραφής, καθώς έχει ορισμένες θυγατρικές εγγραφές. +ErrorRecordHasAtLeastOneChildOfType=Το αντικείμενο %s έχει τουλάχιστον ένα θυγατρικό τύπου %s ErrorRecordIsUsedCantDelete=Δεν είναι δυνατή η διαγραφή εγγραφής. Χρησιμοποιείται ήδη ή συμπεριλαμβάνεται σε άλλο αντικείμενο. -ErrorModuleRequireJavascript=Η Javascript πρέπει να είναι άτομα με ειδικές ανάγκες να μην έχουν αυτή τη δυνατότητα εργασίας. Για να ενεργοποιήσετε / απενεργοποιήσετε το Javascript, πηγαίνετε στο μενού Home-> Setup-> Εμφάνιση. -ErrorPasswordsMustMatch=Και οι δύο πληκτρολογήσει τους κωδικούς πρόσβασης πρέπει να ταιριάζουν μεταξύ τους -ErrorContactEMail=Παρουσιάστηκε τεχνικό σφάλμα. Παρακαλούμε, επικοινωνήστε με τον διαχειριστή με το ακόλουθο μήνυμα ηλεκτρονικού ταχυδρομείου %s και δώστε τον κωδικό σφάλματος %s στο μήνυμά σας ή προσθέστε ένα αντίγραφο οθόνης αυτής της σελίδας. -ErrorWrongValueForField=Πεδίο %s : ' %s ' δεν ταιριάζει με τον κανόνα regex %s -ErrorFieldValueNotIn=Πεδίο %s : ' %s ' δεν είναι μια τιμή που βρέθηκε στο πεδίο %s του %s -ErrorFieldRefNotIn=Πεδίο %s : ' %s ' δεν είναι %s υπάρχουσα αναφορά -ErrorsOnXLines=βρέθηκαν σφάλματα %s -ErrorFileIsInfectedWithAVirus=Το πρόγραμμα προστασίας από ιούς δεν ήταν σε θέση να επικυρώσει το αρχείο (αρχείο μπορεί να μολυνθεί από έναν ιό) -ErrorSpecialCharNotAllowedForField=Ειδικοί χαρακτήρες δεν επιτρέπονται για το πεδίο "%s" -ErrorNumRefModel=Μια αναφορά υπάρχει στη βάση δεδομένων (%s) και δεν είναι συμβατές με αυτόν τον κανόνα αρίθμηση. Αφαιρέστε το αρχείο ή μετονομαστεί αναφοράς για να ενεργοποιήσετε αυτή την ενότητα. -ErrorQtyTooLowForThisSupplier=Ποσότητα πολύ χαμηλή για αυτόν τον πωλητή ή καμία τιμή που ορίζεται για αυτό το προϊόν για αυτόν τον προμηθευτή +ErrorModuleRequireJavascript=Η Javascript δεν πρέπει να είναι απενεργοποιημένη για να λειτουργεί αυτή η δυνατότητα. Για να ενεργοποιήσετε/απενεργοποιήσετε τη Javascript, μεταβείτε στο μενού Αρχικη->Ρυθμίσεις->Εμφάνιση. +ErrorPasswordsMustMatch=Και οι δύο πληκτρολογημένοι κωδικοί πρόσβασης πρέπει να ταιριάζουν μεταξύ τους +ErrorContactEMail=Παρουσιάστηκε τεχνικό σφάλμα. Επικοινωνήστε με τον διαχειριστή στο ακόλουθο email %s και δώστε τον κωδικό σφάλματος %s ή ένα print screen +ErrorWrongValueForField=Το πεδίο %s : ' %s ' δεν ταιριάζει με τον κανόνα regex %s +ErrorHtmlInjectionForField=Πεδίο %s : Η τιμή ' %s' περιέχει μη επιτρεπτά κακόβουλα δεδομένα +ErrorFieldValueNotIn=Πεδίο %s : ' %s ' δεν ειναι η τιμή που βρέθηκε στο πεδίο %s του %s +ErrorFieldRefNotIn=Πεδίο %s : ' %s ' δεν ειναι %s υπάρχουσας αναφοράς +ErrorsOnXLines=%sσφάλματα βρέθηκαν +ErrorFileIsInfectedWithAVirus=Το πρόγραμμα προστασίας από ιούς δεν μπόρεσε να επικυρώσει το αρχείο (το αρχείο ενδέχεται να έχει μολυνθεί από ιό) +ErrorSpecialCharNotAllowedForField=Δεν επιτρέπονται ειδικοί χαρακτήρες για το πεδίο "%s" +ErrorNumRefModel=Υπάρχει μια αναφορά στη βάση δεδομένων (%s) και δεν είναι συμβατή με αυτόν τον κανόνα αρίθμησης. Καταργήστε την εγγραφή ή την μετονομάστε την αναφορά για να ενεργοποιήσετε αυτήν την ενότητα. +ErrorQtyTooLowForThisSupplier=Πολύ χαμηλή ποσότητα για αυτόν τον προμηθευτή ή δεν έχει καθοριστεί τιμή σε αυτό το προϊόν για αυτόν τον προμηθευτή ErrorOrdersNotCreatedQtyTooLow=Ορισμένες παραγγελίες δεν έχουν δημιουργηθεί λόγω υπερβολικά μικρών ποσοτήτων -ErrorModuleSetupNotComplete=Η εγκατάσταση του module %s φαίνεται να είναι ατελής. Πηγαίνετε στην Αρχική σελίδα - Εγκατάσταση - Ενότητες για ολοκλήρωση. +ErrorModuleSetupNotComplete=Η ρύθμιση της ενότητας %s φαίνεται να μην έχει ολοκληρωθεί. Μεταβείτε στο Αρχική - Ρυθμίσεις - Ενότητες / Εφαρμογές για ολοκλήρωση. ErrorBadMask=Σφάλμα στην μάσκα -ErrorBadMaskFailedToLocatePosOfSequence=Σφάλμα, μάσκα χωρίς τον αύξοντα αριθμό -ErrorBadMaskBadRazMonth=Σφάλμα, κακή αξία επαναφορά -ErrorMaxNumberReachForThisMask=Ο μέγιστος αριθμός που επιτεύχθηκε για αυτήν τη μάσκα +ErrorBadMaskFailedToLocatePosOfSequence=Σφάλμα, μάσκα χωρίς αύξοντα αριθμό +ErrorBadMaskBadRazMonth=Σφάλμα, κακή τιμή επαναφοράς +ErrorMaxNumberReachForThisMask=Συμπληρώθηκε ο μέγιστος αριθμός για αυτήν τη μάσκα ErrorCounterMustHaveMoreThan3Digits=Ο μετρητής πρέπει να έχει περισσότερα από 3 ψηφία ErrorSelectAtLeastOne=Σφάλμα, επιλέξτε τουλάχιστον μία καταχώριση. ErrorDeleteNotPossibleLineIsConsolidated=Η διαγραφή δεν είναι δυνατή επειδή η εγγραφή συνδέεται με μια τραπεζική συναλλαγή που είναι συμβιβασμένη -ErrorProdIdAlreadyExist=%s έχει ανατεθεί σε άλλη τρίτη +ErrorProdIdAlreadyExist=Η%s ανήκει σε άλλο προϊόν ErrorFailedToSendPassword=Αποτυχία αποστολής κωδικού -ErrorFailedToLoadRSSFile=Αποτυγχάνει να πάρει RSS feed. Προσπαθήστε να προσθέσετε σταθερή MAIN_SIMPLEXMLLOAD_DEBUG εάν τα μηνύματα λάθους δεν παρέχει αρκετές πληροφορίες. -ErrorForbidden=Access denied.
You try to access to a page, area or feature of a disabled module or without being in an authenticated session or that is not allowed to your user. -ErrorForbidden2=Η άδεια για αυτή τη σύνδεση μπορεί να οριστεί από το διαχειριστή σας Dolibarr από το μενού %s-> %s. -ErrorForbidden3=Φαίνεται ότι Dolibarr δεν χρησιμοποιείται μέσω επικυρωμένο συνεδρία. Ρίξτε μια ματιά στην τεκμηρίωση της εγκατάστασης Dolibarr να ξέρει πώς να διαχειριστεί authentications (htaccess, mod_auth ή άλλα ...). +ErrorFailedToLoadRSSFile=Αποτυχία λήψης ροής RSS. Προσπαθήστε να προσθέσετε τη σταθερά MAIN_SIMPLEXMLLOAD_DEBUG εάν τα μηνύματα σφάλματος δεν παρέχουν αρκετές πληροφορίες. +ErrorForbidden=Δεν επιτρέπεται η πρόσβαση.
Προσπαθείτε να αποκτήσετε πρόσβαση σε μια σελίδα, περιοχή ή δυνατότητα μιας απενεργοποιημένης ενότητας ή χωρίς να βρίσκεστε σε μια επαληθευμένη περίοδο λειτουργίας ή δεν επιτρέπεται στον χρήστη σας. +ErrorForbidden2=Η άδεια για αυτή τη σύνδεση μπορεί να οριστεί από το διαχειριστή σας από το μενού %s-> %s. +ErrorForbidden3=Φαίνεται ότι το Dolibarr δεν χρησιμοποιείται μέσω επικυρωμένης συνεδρίας. Ρίξτε μια ματιά στην τεκμηρίωση εγκατάστασης του Dolibarr για να μάθετε πώς να διαχειρίζεστε τους ελέγχους ταυτότητας (htaccess, mod_auth ή άλλα...). ErrorForbidden4=Σημείωση: διαγράψτε τα cookies του προγράμματος περιήγησης σας για να διαγράψετε τις υπάρχουσες περιόδους σύνδεσης για αυτήν τη σύνδεση. -ErrorNoImagickReadimage=Κατηγορία imagick δεν βρίσκεται σε αυτό το PHP. Δεν προεπισκόπηση μπορεί να είναι διαθέσιμες. Οι διαχειριστές μπορούν να απενεργοποιήσουν αυτή την καρτέλα από το πρόγραμμα Εγκατάστασης μενού - Οθόνη. -ErrorRecordAlreadyExists=Εγγραφή υπάρχει ήδη +ErrorNoImagickReadimage=Η κλάση Imagick δεν υπαρχει σε αυτήν την PHP. Η προεπισκόπηση δεν είναι διαθέσιμη . Οι διαχειριστές μπορούν να απενεργοποιήσουν αυτήν την καρτέλα από το μενού Ρυθμίσεις - Εμφάνιση. +ErrorRecordAlreadyExists=Η εγγραφή υπάρχει ήδη ErrorLabelAlreadyExists=Αυτή η ετικέτα υπάρχει ήδη -ErrorCantReadFile=Αποτυχία ανάγνωσης αρχείου "%s» -ErrorCantReadDir=Αποτυχία ανάγνωσης »%s» κατάλογο +ErrorCantReadFile=Απέτυχε η ανάγνωση του αρχείου "%s" +ErrorCantReadDir=Απέτυχε η ανάγνωση του καταλόγου "%s" ErrorBadLoginPassword=Το Όνομα Χρήστη ή ο Κωδικός Χρήστη είναι λάθος ErrorLoginDisabled=Ο λογαριασμός σας έχει απενεργοποιηθεί -ErrorFailedToRunExternalCommand=Αποτυχία εκτέλεσης εξωτερικής εντολής. Ελέγξτε ότι είναι διαθέσιμη και οτι μπορεί να εκτελεστεί από τον χρήστη PHP του διακομιστή σας. Ελέγξτε επίσης ότι η εντολή δεν προστατεύεται σε επίπεδο κελύφους από ένα επίπεδο ασφαλείας όπως το apparmor. -ErrorFailedToChangePassword=Αποτυχία να αλλάξετε τον κωδικό πρόσβασης -ErrorLoginDoesNotExists=Χρήστης με %s login δεν θα μπορούσε να βρεθεί. -ErrorLoginHasNoEmail=Αυτός ο χρήστης δεν έχει τη διεύθυνση ηλεκτρονικού ταχυδρομείου. Επεξεργασία ματαιώθηκε. -ErrorBadValueForCode=Κακό αξία για τον κωδικό ασφαλείας. Δοκιμάστε ξανά με νέα τιμή ... -ErrorBothFieldCantBeNegative=Πεδία %s %s και δεν μπορεί να είναι τόσο αρνητικές όσο +ErrorFailedToRunExternalCommand=Αποτυχία εκτέλεσης εξωτερικής εντολής. Ελέγξτε ότι είναι διαθέσιμη και ότι μπορεί να εκτελεστεί από τον χρήστη PHP του διακομιστή σας. Ελέγξτε επίσης ότι η εντολή δεν προστατεύεται σε επίπεδο κελύφους από ένα επίπεδο ασφαλείας όπως το apparmor. +ErrorFailedToChangePassword=Αποτυχία αλλαγής κωδικού πρόσβασης +ErrorLoginDoesNotExists=Ο χρήστης με σύνδεση %s δεν βρέθηκε. +ErrorLoginHasNoEmail=Αυτός ο χρήστης δεν έχει διεύθυνση email. Η διαδικασία διακόπηκε. +ErrorBadValueForCode=Λάθος τιμή για τον κωδικό ασφαλείας. Δοκιμάστε ξανά με νέα τιμή... +ErrorBothFieldCantBeNegative=Τα πεδία %s και %s δεν μπορούν να είναι και τα δύο αρνητικά ErrorFieldCantBeNegativeOnInvoice=Το πεδίο %s δεν μπορεί να είναι αρνητικό σε αυτόν τον τύπο τιμολογίου. Εάν πρέπει να προσθέσετε μια γραμμή έκπτωσης, απλώς δημιουργήστε πρώτα την έκπτωση (από το πεδίο '%s' στην κάρτα τρίτου μέρους) και εφαρμόστε την στο τιμολόγιο. ErrorLinesCantBeNegativeForOneVATRate=Το σύνολο των γραμμών (καθαρό από φόρους) δεν μπορεί να είναι αρνητικό για έναν δεδομένο μη μηδενικό συντελεστή ΦΠΑ (Βρέθηκε αρνητικό σύνολο για τον συντελεστή ΦΠΑ %s %%). ErrorLinesCantBeNegativeOnDeposits=Οι γραμμές δεν μπορούν να είναι αρνητικές σε μια κατάθεση. Θα αντιμετωπίσετε προβλήματα όταν θα χρειαστεί να καταναλώσετε την προκαταβολή στο τελικό τιμολόγιο εάν το κάνετε. -ErrorQtyForCustomerInvoiceCantBeNegative=Η ποσότητα στην γραμμή στα τιμολόγια των πελατών δεν μπορεί να είναι αρνητική -ErrorWebServerUserHasNotPermission=Λογαριασμό χρήστη %s χρησιμοποιείται για την εκτέλεση του web server δεν έχει άδεια για τη συγκεκριμένη -ErrorNoActivatedBarcode=Δεν ενεργοποιείται τύπου barcode -ErrUnzipFails=Failed to unzip %s with ZipArchive -ErrNoZipEngine=No engine to zip/unzip %s file in this PHP -ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package -ErrorModuleFileRequired=You must select a Dolibarr module package file -ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal -ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base -ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base -ErrorNewValueCantMatchOldValue=New value can't be equal to old one -ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. -ErrorToConnectToMysqlCheckInstance=Η σύνδεση με τη βάση δεδομένων αποτυγχάνει. Ελέγξτε ότι ο διακομιστής βάσης δεδομένων εκτελείται (για παράδειγμα, με το mysql / mariadb, μπορείτε να το ξεκινήσετε από τη γραμμή εντολών με το 'sudo service mysql start'). -ErrorFailedToAddContact=Failed to add contact -ErrorDateMustBeBeforeToday=Η ημερομηνία πρέπει να είναι προγενέστερη τη σημερινής +ErrorQtyForCustomerInvoiceCantBeNegative=Η ποσότητα στην γραμμή των τιμολογίων πελατών δεν μπορεί να είναι αρνητική +ErrorWebServerUserHasNotPermission=Ο λογαριασμός χρήστη %s που χρησιμοποιείται για την εκτέλεση του διακομιστή web δεν έχει άδεια για αυτό +ErrorNoActivatedBarcode=Δεν έχει ενεργοποιηθεί κάποιος τύπος γραμμικού κώδικα +ErrUnzipFails=Αποτυχία αποσυμπίεσης του %s με το ZipArchive +ErrNoZipEngine=Δεν υπάρχει μηχανή για συμπίεση/αποσυμπίεση αρχείου %s σε αυτήν την PHP +ErrorFileMustBeADolibarrPackage=Το αρχείο %s πρέπει να είναι πακέτο zip Dolibarr +ErrorModuleFileRequired=Πρέπει να επιλέξετε ένα αρχείο πακέτου ενότητας του Dolibarr +ErrorPhpCurlNotInstalled=Το PHP CURL δεν είναι εγκατεστημένο, αυτό είναι απαραίτητο για να συνδεθείτε με το Paypal +ErrorFailedToAddToMailmanList=Απέτυχε η προσθήκη της εγγραφής %s στη λίστα Mailman %s ή στη βάση SPIP +ErrorFailedToRemoveToMailmanList=Απέτυχε η κατάργηση της εγγραφής %s από τη λίστα Mailman %s ή από τη βάση SPIP +ErrorNewValueCantMatchOldValue=Η νέα τιμή δεν μπορεί να είναι ίση με την παλιά +ErrorFailedToValidatePasswordReset=Αποτυχία επαναφοράς κωδικού πρόσβασης. Ίσως η επαναφορά να έχει ήδη γίνει (αυτός ο σύνδεσμος μπορεί να χρησιμοποιηθεί μόνο μία φορά). Εάν όχι, προσπαθήστε να επανεκκινήσετε τη διαδικασία επαναφοράς. +ErrorToConnectToMysqlCheckInstance=Η σύνδεση με τη βάση δεδομένων αποτυγχάνει. Ελέγξτε ότι ο διακομιστής βάσης δεδομένων εκτελείται (για παράδειγμα, με το mysql/mariadb, μπορείτε να τον εκκινήσετε από τη γραμμή εντολών με το 'sudo service mysql start'). +ErrorFailedToAddContact=Αποτυχία προσθήκης επαφής +ErrorDateMustBeBeforeToday=Η ημερομηνία πρέπει να είναι προγενέστερη της σημερινής ErrorDateMustBeInFuture=Η ημερομηνία πρέπει να είναι μεταγενέστερη της σημερινής -ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. -ErrorPHPNeedModule=Σφάλμα, η PHP σας πρέπει να έχει το module %s εγκατεστημένο για να χρησιμοποιήσετε αυτήν τη δυνατότητα. -ErrorOpenIDSetupNotComplete=Μπορείτε να ρυθμίσετε το Dolibarr αρχείο config να επιτρέψει OpenID ταυτότητα, αλλά το URL OpenID υπηρεσίας δεν ορίζεται σε συνεχή %s -ErrorWarehouseMustDiffers=Η πηγή και ο στόχος των αποθηκών πρέπει να είναι διαφορετικός. -ErrorBadFormat=Κακή μορφή! -ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any third party. Link member to an existing third party or create a new third party before creating subscription with invoice. -ErrorThereIsSomeDeliveries=Σφάλμα υπάρχουν κάποιες παραδόσεις που συνδέονται με την εν λόγω αποστολή. Η διαγραφή απορρίφθηκε. -ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank entry that was reconciled -ErrorCantDeletePaymentSharedWithPayedInvoice=Δεν είναι δυνατή η διαγραφή πληρωμής που έχει μοιραστεί με τουλάχιστον ένα τιμολόγιο με κατάσταση πληρωμής -ErrorPriceExpression1=Αδύνατη η ανάθεση στην σταθερά '%s' +ErrorPaymentModeDefinedToWithoutSetup=Ένας τρόπος πληρωμής ορίστηκε στον τύπο %s, αλλά η ρύθμιση της ενότητας Τιμολόγιο δεν ολοκληρώθηκε για τον καθορισμό πληροφοριών που θα εμφανίζονται για αυτόν τον τρόπο πληρωμής. +ErrorPHPNeedModule=Σφάλμα, η PHP σας θα πρέπει να έχει εγκατεστημένη την ενότητα %s για να χρησιμοποιηθεί αυτή η δυνατότητα. +ErrorOpenIDSetupNotComplete=Ρυθμίσατε το αρχείο διαμόρφωσης Dolibarr ετσι ωστε να επιτρέπεται ο έλεγχος ταυτότητας OpenID, αλλά η διεύθυνση URL της υπηρεσίας OpenID δεν ορίζεται στη σταθερά %s +ErrorWarehouseMustDiffers=Οι αποθήκες πηγής και προορισμού πρέπει να διαφέρουν +ErrorBadFormat=Λάθος μορφή! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Σφάλμα, αυτό το μέλος δεν είναι ακόμη συνδεδεμένο με κανένα τρίτο μέρος. Συνδέστε το μέλος με ένα υπάρχον τρίτο μέρος ή δημιουργήστε ένα νέο τρίτο μέρος πριν δημιουργήσετε συνδρομή με το τιμολόγιο. +ErrorThereIsSomeDeliveries=Σφάλμα, υπάρχουν ορισμένες παραδόσεις που συνδέονται με αυτήν την αποστολή. Η διαγραφή απορρίφθηκε. +ErrorCantDeletePaymentReconciliated=Δεν είναι δυνατή η διαγραφή μιας πληρωμής που είχε δημιουργήσει μια τραπεζική καταχώριση που συμβιβάστηκε +ErrorCantDeletePaymentSharedWithPayedInvoice=Δεν είναι δυνατή η διαγραφή πληρωμής που έχει μοιραστεί με τουλάχιστον ένα τιμολόγιο σε κατάσταση πληρωμένου +ErrorPriceExpression1=Δεν είναι δυνατή η ανάθεση στη σταθερά '%s' ErrorPriceExpression2=Αδυναμία επαναπροσδιορισμού ενσωματωμένης λειτουργίας '%s' ErrorPriceExpression3=Μη ορισμένη μεταβλητή '%s' στον ορισμό συνάρτησης -ErrorPriceExpression4=Άγνωστος χαρακτήρας '%s' -ErrorPriceExpression5=Μη αναμενόμενο '%s' -ErrorPriceExpression6=Λάθος αριθμός παραμέτρων (%s δόθηκαν, %s αναμενώμενα) +ErrorPriceExpression4=Μη επιτρεπτός χαρακτήρας "%s" +ErrorPriceExpression5=Μη αναμενόμενη '%s' +ErrorPriceExpression6=Λάθος αριθμός παραμέτρων (%s δόθηκαν, %s αναμενόμενα) ErrorPriceExpression8=Μη αναμενόμενος τελεστής '%s' -ErrorPriceExpression9=Μη αναμενόμενο σφάλμα -ErrorPriceExpression10=Ο χειριστής '%s' δεν έχει τελεστή -ErrorPriceExpression11=Περιμένει '%s' +ErrorPriceExpression9=Παρουσιάστηκε απροσδόκητο σφάλμα +ErrorPriceExpression10=Ο τελεστής '%s' δεν έχει τελεστή +ErrorPriceExpression11=Αναμένοντας "%s" ErrorPriceExpression14=Διαίρεση με το μηδέν -ErrorPriceExpression17=Μη ορισμένη μεταβλητή '%s' +ErrorPriceExpression17=Μη καθορισμένη μεταβλητή '%s' ErrorPriceExpression19=Η έκφραση δεν βρέθηκε ErrorPriceExpression20=Κενή έκφραση ErrorPriceExpression21=Κενό αποτέλεσμα '%s' ErrorPriceExpression22=Αρνητικό αποτέλεσμα '%s' -ErrorPriceExpression23=Άγνωστη ή μη καθορισμένη μεταβλητή '%s' στο %s -ErrorPriceExpression24=Η μεταβλητή '%s' υπάρχει αλλά δεν έχει αξία +ErrorPriceExpression23=Άγνωστη ή μη καθορισμένη μεταβλητή '%s' σε %s +ErrorPriceExpression24=Η μεταβλητή '%s' υπάρχει αλλά δεν έχει αξία ErrorPriceExpressionInternal=Εσωτερικό σφάλμα '%s' -ErrorPriceExpressionUnknown=Άγνωστο σφάλμα '%s' -ErrorSrcAndTargetWarehouseMustDiffers=Η πηγή και ο στόχος των αποθηκών πρέπει να είναι διαφορετικός. -ErrorTryToMakeMoveOnProductRequiringBatchData=Σφάλμα, προσπαθώντας να πραγματοποιήσετε μια κίνηση αποθέματος χωρίς πολλές / σειριακές πληροφορίες, στο προϊόν '%s' που απαιτεί πολλές / σειριακές πληροφορίες -ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action -ErrorCantSetReceptionToTotalDoneWithReceptionDenied=All recorded receptions must first be verified (approved) before being allowed to do this action -ErrorGlobalVariableUpdater0=HTTP request failed with error '%s' -ErrorGlobalVariableUpdater1=Invalid JSON format '%s' -ErrorGlobalVariableUpdater2=Missing parameter '%s' -ErrorGlobalVariableUpdater3=The requested data was not found in result -ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' -ErrorGlobalVariableUpdater5=No global variable selected +ErrorPriceExpressionUnknown=Άγνωστο σφάλμα "%s" +ErrorSrcAndTargetWarehouseMustDiffers=Οι αποθήκες πηγής και προορισμού πρέπει να διαφέρουν +ErrorTryToMakeMoveOnProductRequiringBatchData=Σφάλμα, προσπάθεια πραγματοποίησης κίνησης αποθεμάτων χωρίς πληροφορίες παρτίδας/σειριακού αριθμού, στο προϊόν '%s' που τις απαιτεί +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=Όλες οι καταγεγραμμένες παραλαβές πρέπει πρώτα να επαληθευτούν (εγκριθούν ή να απορριφθούν) προτού τους επιτραπεί αυτή την ενέργεια +ErrorCantSetReceptionToTotalDoneWithReceptionDenied=Όλες οι καταγεγραμμένες παραλαβές πρέπει πρώτα να επαληθευτούν (εγκριθούν) προτού τους επιτραπεί αυτή την ενέργεια +ErrorGlobalVariableUpdater0=Το αίτημα HTTP απέτυχε με σφάλμα "%s" +ErrorGlobalVariableUpdater1=Μη έγκυρη μορφή JSON '%s' +ErrorGlobalVariableUpdater2=Λείπει παράμετρος '%s' +ErrorGlobalVariableUpdater3=Τα ζητούμενα δεδομένα δεν βρέθηκαν ως αποτέλεσμα +ErrorGlobalVariableUpdater4=Ο SOAP client απέτυχε με σφάλμα "%s" +ErrorGlobalVariableUpdater5=Δεν έχει επιλεγεί καθολική μεταβλητή ErrorFieldMustBeANumeric=Το πεδίο %s πρέπει να περιέχει αριθμητική τιμή -ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided -ErrorOppStatusRequiredIfAmount=Ορίζετε ένα εκτιμώμενο ποσό για αυτό το μόλυβδο. Επομένως, πρέπει επίσης να εισάγετε την κατάστασή του. -ErrorFailedToLoadModuleDescriptorForXXX=Failed to load module descriptor class for %s -ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) +ErrorMandatoryParametersNotProvided=Δεν παρέχονται υποχρεωτικές παράμετροι +ErrorOppStatusRequiredIfAmount=Ορίσατε ένα εκτιμώμενο ποσό για αυτόν τον δυνητικό πελάτη. Πρέπει λοιπόν να εισάγετε και την κατάστασή του. +ErrorFailedToLoadModuleDescriptorForXXX=Απέτυχε η φόρτωση της κλάσης περιγραφικού αρχείου της ενότητας για %s +ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Λάθος ορισμός διάταξης μενού στο περιγραφικό αρχείο της ενότητας (λάθος τιμή για το κλειδί fk_menu) ErrorSavingChanges=Παρουσιάστηκε σφάλμα κατά την αποθήκευση των αλλαγών -ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship -ErrorFileMustHaveFormat=File must have format %s +ErrorWarehouseRequiredIntoShipmentLine=Απαιτείται αποθήκη στη γραμμή για αποστολή +ErrorFileMustHaveFormat=Το αρχείο πρέπει να έχει μορφή %s ErrorFilenameCantStartWithDot=Το όνομα αρχείου δεν μπορεί να ξεκινά με ένα '.' -ErrorSupplierCountryIsNotDefined=Χώρα για αυτόν τον προμηθευτή δεν έχει οριστεί. Διορθώστε πρώτα αυτό. -ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled. -ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order. -ErrorStockIsNotEnoughToAddProductOnInvoice=Stock is not enough for product %s to add it into a new invoice. -ErrorStockIsNotEnoughToAddProductOnShipment=Stock is not enough for product %s to add it into a new shipment. -ErrorStockIsNotEnoughToAddProductOnProposal=Stock is not enough for product %s to add it into a new proposal. -ErrorFailedToLoadLoginFileForMode=Failed to get the login key for mode '%s'. -ErrorModuleNotFound=File of module was not found. -ErrorFieldAccountNotDefinedForBankLine=Value for Accounting account not defined for source line id %s (%s) -ErrorFieldAccountNotDefinedForInvoiceLine=Value for Accounting account not defined for invoice id %s (%s) -ErrorFieldAccountNotDefinedForLine=Value for Accounting account not defined for the line (%s) -ErrorBankStatementNameMustFollowRegex=Error, bank statement name must follow the following syntax rule %s -ErrorPhpMailDelivery=Check that you don't use a too high number of recipients and that your email content is not similar to a Spam. Ask also your administrator to check firewall and server logs files for a more complete information. -ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter time consumed. -ErrorTaskAlreadyAssigned=Task already assigned to user -ErrorModuleFileSeemsToHaveAWrongFormat=The module package seems to have a wrong format. -ErrorModuleFileSeemsToHaveAWrongFormat2=Τουλάχιστον ένας υποχρεωτικός κατάλογος πρέπει να υπάρχει στο zip της λειτουργικής μονάδας: %s ή %s -ErrorFilenameDosNotMatchDolibarrPackageRules=The name of the module package (%s) does not match expected name syntax: %s -ErrorDuplicateTrigger=Error, duplicate trigger name %s. Already loaded from %s. -ErrorNoWarehouseDefined=Error, no warehouses defined. -ErrorBadLinkSourceSetButBadValueForRef=The link you use is not valid. A 'source' for payment is defined, but value for 'ref' is not valid. -ErrorTooManyErrorsProcessStopped=Too many errors. Process was stopped. -ErrorMassValidationNotAllowedWhenStockIncreaseOnAction=Η επικύρωση της μάζας δεν είναι δυνατή όταν η επιλογή αύξησης / μείωσης αποθέματος έχει οριστεί σε αυτήν την ενέργεια (πρέπει να επικυρώσετε μία προς μία, ώστε να μπορείτε να ορίσετε την αποθήκη για αύξηση / μείωση) -ErrorObjectMustHaveStatusDraftToBeValidated=Το αντικείμενο %s πρέπει να έχει την κατάσταση 'Draft' για επικύρωση. -ErrorObjectMustHaveLinesToBeValidated=Το αντικείμενο %s πρέπει να έχει επικυρωμένες γραμμές. -ErrorOnlyInvoiceValidatedCanBeSentInMassAction=Μόνο επικυρωμένα τιμολόγια μπορούν να σταλούν με τη μαζική ενέργεια "Αποστολή μέσω ηλεκτρονικού ταχυδρομείου". -ErrorChooseBetweenFreeEntryOrPredefinedProduct=Πρέπει να επιλέξετε αν το άρθρο είναι ένα προκαθορισμένο προϊόν ή όχι -ErrorDiscountLargerThanRemainToPaySplitItBefore=Η έκπτωση που προσπαθείτε να εφαρμόσετε είναι μεγαλύτερη από την αποπληρωμή. Διαχωρίστε την έκπτωση σε 2 μικρότερες εκπτώσεις πριν. -ErrorFileNotFoundWithSharedLink=Το αρχείο δεν βρέθηκε. Μπορεί να τροποποιηθεί το κλειδί κοινής χρήσης ή να καταργηθεί πρόσφατα το αρχείο. -ErrorProductBarCodeAlreadyExists=Ο γραμμωτός κώδικας προϊόντος %s υπάρχει ήδη σε άλλη αναφορά προϊόντος. +ErrorSupplierCountryIsNotDefined=Η χώρα για αυτόν τον προμηθευτή δεν έχει οριστεί. Διορθώστε αυτό πρώτα. +ErrorsThirdpartyMerge=Αποτυχία συγχώνευσης των δύο εγγραφών. Το αίτημα ακυρώθηκε. +ErrorStockIsNotEnoughToAddProductOnOrder=Το απόθεμα του προϊόντος %sδεν επαρκεί για να το προσθέσετε σε νέα παραγγελία. +ErrorStockIsNotEnoughToAddProductOnInvoice=Το απόθεμα του προϊόντος %s δεν επαρκεί για να το προσθέσετε σε νέο τιμολόγιο +ErrorStockIsNotEnoughToAddProductOnShipment=Το απόθεμα του προϊόντος %s δεν επαρκεί για να το προσθέσετε σε μια νέα αποστολή +ErrorStockIsNotEnoughToAddProductOnProposal=Το απόθεμα του προϊόντος %sδεν επαρκεί για να το προσθέσετε σε μια νέα προσφορά +ErrorFailedToLoadLoginFileForMode=Αποτυχία λήψης του κλειδιού σύνδεσης για τη λειτουργία '%s'. +ErrorModuleNotFound=Το αρχείο της ενότητας δεν βρέθηκε. +ErrorFieldAccountNotDefinedForBankLine=Η τιμή του λογαριασμού λογιστικής δεν έχει οριστεί για το αναγνωριστικό γραμμής πηγής %s (%s) +ErrorFieldAccountNotDefinedForInvoiceLine=Η τιμή του λογαριασμού λογιστικής δεν έχει οριστεί για το αναγνωριστικό τιμολογίου %s (%s) +ErrorFieldAccountNotDefinedForLine=Η τιμή του λογαριασμού λογιστικής δεν έχει οριστεί για τη γραμμη (%s) +ErrorBankStatementNameMustFollowRegex=Σφάλμα, το όνομα της κίνησης τράπεζας πρέπει να ακολουθεί τον ακόλουθο κανόνα σύνταξης %s +ErrorPhpMailDelivery=Βεβαιωθείτε ότι δεν χρησιμοποιείτε πολύ μεγάλο αριθμό παραληπτών και ότι το περιεχόμενο του email σας δεν μοιάζει με ανεπιθύμητο περιεχόμενο. Ζητήστε επίσης από τον διαχειριστή σας να ελέγξει τα αρχεία καταγραφής τείχους προστασίας και διακομιστή για πληρέστερες πληροφορίες. +ErrorUserNotAssignedToTask=Ο χρήστης πρέπει να ανατεθεί σε εργασία για να μπορεί να εισάγει τον χρόνο που καταναλώθηκε. +ErrorTaskAlreadyAssigned=Η εργασία έχει ήδη ανατεθεί στον χρήστη +ErrorModuleFileSeemsToHaveAWrongFormat=Το πακέτο της ενότητας φαίνεται να έχει λάθος μορφή. +ErrorModuleFileSeemsToHaveAWrongFormat2=Τουλάχιστον ένας υποχρεωτικός κατάλογος πρέπει να υπάρχει στο zip της ενότητας: %s ή %s +ErrorFilenameDosNotMatchDolibarrPackageRules=Το όνομα του πακέτου της ενότητας ( %s ) δεν ταιριάζει με την αναμενόμενη σύνταξη ονόματος: %s +ErrorDuplicateTrigger=Σφάλμα, διπλότυπο όνομα trigger %s. Έχει ήδη φορτωθεί από το %s. +ErrorNoWarehouseDefined=Σφάλμα, δεν έχουν καθοριστεί αποθήκες. +ErrorBadLinkSourceSetButBadValueForRef=Ο σύνδεσμος που χρησιμοποιείτε δεν είναι έγκυρος. Ορίζεται μια «πηγή» για πληρωμή, αλλά η τιμή για την «αναφορά» δεν είναι έγκυρη. +ErrorTooManyErrorsProcessStopped=Πάρα πολλά λάθη. Η διαδικασία διακόπηκε. +ErrorMassValidationNotAllowedWhenStockIncreaseOnAction=Η μαζική επικύρωση δεν είναι δυνατή όταν έχει οριστεί η επιλογή αύξησης/μείωσης του αποθέματος σε αυτήν την ενέργεια (πρέπει να τις επικυρώσετε μία προς μία, ώστε να μπορείτε να ορίσετε την αποθήκη για αύξηση/μείωση) +ErrorObjectMustHaveStatusDraftToBeValidated=Το αντικείμενο %s πρέπει να έχει την κατάσταση «Προσχέδιο» για να επικυρωθεί. +ErrorObjectMustHaveLinesToBeValidated=Το αντικείμενο %s πρέπει να έχει γραμμές για επικύρωση. +ErrorOnlyInvoiceValidatedCanBeSentInMassAction=Μόνο επικυρωμένα τιμολόγια μπορούν να αποσταλούν χρησιμοποιώντας τη μαζική ενέργεια "Αποστολή μέσω email". +ErrorChooseBetweenFreeEntryOrPredefinedProduct=Πρέπει να επιλέξετε αν είναι ένα προκαθορισμένο προϊόν ή όχι +ErrorDiscountLargerThanRemainToPaySplitItBefore=Η έκπτωση που προσπαθείτε να εφαρμόσετε είναι μεγαλύτερη από από το υπόλοιπο πληρωμής. Διαχωρίστε την έκπτωση σε 2 μικρότερες εκπτώσεις πριν. +ErrorFileNotFoundWithSharedLink=Το αρχείο δεν βρέθηκε. Ίσως το κοινό κλειδί τροποποιήθηκε ή το αρχείο καταργήθηκε πρόσφατα. +ErrorProductBarCodeAlreadyExists=Ο γραμμωτός κώδικας του προϊόντος %s υπάρχει ήδη σε άλλη αναφορά προϊόντος. ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Σημειώστε επίσης ότι η χρήση κιτ για αυτόματη αύξηση/μείωση υποπροϊόντων δεν είναι δυνατή όταν τουλάχιστον ένα υποπροϊόν (ή υποπροϊόν υποπροϊόντων) χρειάζεται αριθμό σειράς/παρτίδας. -ErrorDescRequiredForFreeProductLines=Η περιγραφή είναι υποχρεωτική για γραμμές με δωρεάν προϊόν +ErrorDescRequiredForFreeProductLines=Η περιγραφή είναι υποχρεωτική για γραμμές με ελεύθερο προϊόν ErrorAPageWithThisNameOrAliasAlreadyExists=Η σελίδα / κοντέινερ %s έχει το ίδιο όνομα ή εναλλακτικό ψευδώνυμο με εκείνο που προσπαθείτε να χρησιμοποιήσετε -ErrorDuringChartLoad=Σφάλμα κατά τη φόρτωση του γραφήματος λογαριασμών. Εάν δεν έχουν φορτωθεί μερικοί λογαριασμοί, μπορείτε να τις εισαγάγετε με μη αυτόματο τρόπο. -ErrorBadSyntaxForParamKeyForContent=Κακή σύνταξη για παράμετρο κλειδί για ικανοποίηση. Πρέπει να έχει μια τιμή ξεκινώντας με %s ή %s -ErrorVariableKeyForContentMustBeSet=Σφάλμα, πρέπει να οριστεί η σταθερά με το όνομα %s (με περιεχόμενο κειμένου για εμφάνιση) ή %s (με εξωτερική διεύθυνση URL για εμφάνιση). +ErrorDuringChartLoad=Σφάλμα κατά τη φόρτωση του λογιστικού σχεδίου. Εάν δεν φορτώθηκαν λίγοι λογαριασμοί, μπορείτε να τους εισαγάγετε χειροκίνητα. +ErrorBadSyntaxForParamKeyForContent=Λάθος σύνταξη για την παράμετρο keyforcontent. Πρέπει να έχει μια τιμή ξεκινώντας με %s ή %s +ErrorVariableKeyForContentMustBeSet=Σφάλμα, πρέπει να οριστεί η σταθερά με όνομα %s (με περιεχόμενο κειμένου προς εμφάνιση) ή %s (με εξωτερικό url για εμφάνιση). ErrorURLMustEndWith=Η διεύθυνση URL %s πρέπει να καταλήγει σε %s ErrorURLMustStartWithHttp=Η διεύθυνση URL %s πρέπει να ξεκινά με http: // ή https: // ErrorHostMustNotStartWithHttp=Το host name %s ΔΕΝ πρέπει να ξεκινά με http:// ή https:// ErrorNewRefIsAlreadyUsed=Σφάλμα, η νέα αναφορά χρησιμοποιείται ήδη ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Σφάλμα, διαγραφή πληρωμής που συνδέεται με κλειστό τιμολόγιο δεν είναι δυνατή. ErrorSearchCriteriaTooSmall=Τα κριτήρια αναζήτησης δεν είναι αρκετά. -ErrorObjectMustHaveStatusActiveToBeDisabled=Τα αντικείμενα πρέπει να έχουν την κατάσταση 'Ενεργή' για απενεργοποίηση -ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Τα αντικείμενα πρέπει να έχουν την κατάσταση 'Προετοιμασία' ή 'Απενεργοποίηση' για ενεργοποίηση -ErrorNoFieldWithAttributeShowoncombobox=Κανένα πεδίο δεν έχει την ιδιότητα 'showoncombobox' στον ορισμό του αντικειμένου '%s'. Κανένας τρόπος να δείξουμε τον συνθέτη. +ErrorObjectMustHaveStatusActiveToBeDisabled=Τα αντικείμενα πρέπει να έχουν την κατάσταση «Ενεργά» για να απενεργοποιηθούν +ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Τα αντικείμενα πρέπει να έχουν την κατάσταση «Προσχέδιο» ή «Απενεργοποιημένο» για να ενεργοποιηθούν +ErrorNoFieldWithAttributeShowoncombobox=Κανένα πεδίο δεν έχει την ιδιότητα "showoncombobox" στον ορισμό του αντικειμένου "%s". Δεν υπάρχει τρόπος να εμφανίσουμε τη λίστα σύνθετου πλαισίου. ErrorFieldRequiredForProduct=Το πεδίο '%s' απαιτείται για το προϊόν %s -ProblemIsInSetupOfTerminal=Πρόβλημα στη ρύθμιση του τερματικού %s. -ErrorAddAtLeastOneLineFirst=Προσθέστε πρώτα τουλάχιστον μια γραμμή +ProblemIsInSetupOfTerminal=Το πρόβλημα είναι στη ρύθμιση του τερματικού %s. +ErrorAddAtLeastOneLineFirst=Προσθέστε τουλάχιστον μία γραμμή πρώτα ErrorRecordAlreadyInAccountingDeletionNotPossible=Σφάλμα, η εγγραφή έχει ήδη μεταφερθεί στη λογιστική, η διαγραφή δεν είναι δυνατή. ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Σφάλμα, η γλώσσα είναι υποχρεωτική εάν ορίσετε τη σελίδα ως μετάφραση άλλης. -ErrorLanguageOfTranslatedPageIsSameThanThisPage=Σφάλμα, η γλώσσα της μεταφρασμένης σελίδας είναι ίδια από αυτήν. -ErrorBatchNoFoundForProductInWarehouse=Δεν βρέθηκε παρτίδα / σειριακή για το προϊόν "%s" στην αποθήκη "%s". -ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Δεν υπάρχει αρκετή ποσότητα για αυτήν την παρτίδα / σειριακό για το προϊόν "%s" στην αποθήκη "%s". -ErrorOnlyOneFieldForGroupByIsPossible=Είναι δυνατό μόνο 1 πεδίο για την «Ομάδα κατά» (άλλα απορρίπτονται) -ErrorTooManyDifferentValueForSelectedGroupBy=Βρέθηκαν πάρα πολλές διαφορετικές τιμές (περισσότερες από %s ) για το πεδίο " %s ", οπότε δεν μπορούμε να το χρησιμοποιήσουμε ως γραφικά " Το πεδίο "Group By" έχει αφαιρεθεί. Μπορεί να θέλετε να το χρησιμοποιήσετε ως άξονα X; -ErrorReplaceStringEmpty=Σφάλμα, η συμβολοσειρά για αντικατάσταση είναι κενή +ErrorLanguageOfTranslatedPageIsSameThanThisPage=Σφάλμα, η γλώσσα της μεταφρασμένης σελίδας είναι ίδια με αυτήν. +ErrorBatchNoFoundForProductInWarehouse=Δεν βρέθηκε παρτίδα / σειριακός αριθμός για το προϊόν "%s" στην αποθήκη "%s". +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Δεν υπάρχει αρκετή ποσότητα για αυτήν την παρτίδα / σειριακό αριθμό για το προϊόν "%s" στην αποθήκη "%s". +ErrorOnlyOneFieldForGroupByIsPossible=Μόνο 1 πεδίο για την «Ομαδοποίηση κατά» είναι δυνατό (τα άλλα απορρίπτονται) +ErrorTooManyDifferentValueForSelectedGroupBy=Βρέθηκαν πάρα πολλές διαφορετικές τιμές (περισσότερες από %s ) για το πεδίο " %s ", οπότε δεν μπορούμε να το χρησιμοποιήσουμε ως «Ομαδοποίηση κατά» για γραφικά " Το πεδίο «Ομαδοποίηση κατά» έχει αφαιρεθεί. Μπορεί να θέλατε να το χρησιμοποιήσετε ως άξονα X; +ErrorReplaceStringEmpty=Σφάλμα, η συμβολοσειρά(string) για αντικατάσταση είναι κενή ErrorProductNeedBatchNumber=Σφάλμα, το προϊόν " %s " χρειάζεται παρτίδα/σειριακό αριθμό ErrorProductDoesNotNeedBatchNumber=Σφάλμα, το προϊόν " %s " δεν δέχεται αριθμό παρτίδας/σειριακού αριθμού ErrorFailedToReadObject=Σφάλμα, αποτυχία ανάγνωσης αντικειμένου τύπου %s @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Πρέπει πρώτα να ρυθμί ErrorFailedToFindEmailTemplate=Αδυναμία εύρεσης προτύπου με κωδικό όνομα %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Η διάρκεια δεν έχει οριστεί στην υπηρεσία. Δεν υπάρχει τρόπος υπολογισμού της ωριαίας τιμής. ErrorActionCommPropertyUserowneridNotDefined=Απαιτείται το owner id του χρήστη -ErrorActionCommBadType=Ο επιλεγμένος τύπος συμβάντος (αναγνωριστικό: %n, κωδικός: %s) δεν υπάρχει στο λεξικό Τύπου συμβάντος +ErrorActionCommBadType=Ο επιλεγμένος τύπος συμβάντος (αναγνωριστικό: %s, κωδικός: %s) δεν υπάρχει στο λεξικό Τύπου συμβάντος CheckVersionFail=Αποτυχία ελέγχου έκδοσης ErrorWrongFileName=Το όνομα του αρχείου δεν μπορεί να έχει __ΚΑΤΙ__ σε αυτό ErrorNotInDictionaryPaymentConditions=Δεν υπάρχει στο Λεξικό Όρων Πληρωμής, παρακαλώ τροποποιήστε. @@ -284,49 +285,48 @@ ErrorAttributeValueIsUsedIntoProduct=Αυτή η τιμή χαρακτηριστ ErrorPaymentInBothCurrency=Σφάλμα, όλα τα ποσά πρέπει να εισαχθούν στην ίδια στήλη ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Προσπαθείτε να πληρώσετε τιμολόγια στο νόμισμα %s από έναν λογαριασμό με το νόμισμα %s ErrorInvoiceLoadThirdParty=Δεν είναι δυνατή η φόρτωση αντικειμένου τρίτου μέρους για το τιμολόγιο "%s" -ErrorInvoiceLoadThirdPartyKey=Το κλειδί τρίτου μέρους "%s" δεν έχει οριστεί για τιμολόγιο "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Η διαγραφή γραμμής δεν επιτρέπεται από την πραγματική κατάσταση του αντικειμένου +ErrorInvoiceLoadThirdPartyKey=Το κλειδί τρίτου μέρους "%s" δεν έχει οριστεί για το τιμολόγιο "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Η διαγραφή γραμμής δεν επιτρέπεται από την τωρινή κατάσταση του αντικειμένου ErrorAjaxRequestFailed=To αίτημα AJAX απέτυχε +ErrorThirpdartyOrMemberidIsMandatory=Τρίτο μέρος ή Μέλος της εταιρικής σχέσης είναι υποχρεωτικό +ErrorFailedToWriteInTempDirectory=Αποτυχία εγγραφής στον κατάλογο temp +ErrorQuantityIsLimitedTo=Η ποσότητα περιορίζεται σε %s # Warnings -WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Η παράμετρος PHP upload_max_filesize (%s) είναι υψηλότερη από την παράμετρο PHP post_max_size (%s). Αυτό δεν είναι μια σταθερή ρύθμιση. -WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=Κάντε κλικ εδώ για να ορίσετε υποχρεωτικές παραμέτρους +WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Η παράμετρος PHP upload_max_filesize (%s) είναι υψηλότερη από την παράμετρο PHP post_max_size (%s). Αυτή δεν είναι μια συνεπής ρύθμιση. +WarningPasswordSetWithNoAccount=Ορίστηκε κωδικός πρόσβασης για αυτό το μέλος. Ωστόσο, δεν δημιουργήθηκε λογαριασμός χρήστη. Επομένως, αυτός ο κωδικός πρόσβασης είναι αποθηκευμένος, αλλά δεν μπορεί να χρησιμοποιηθεί για τη σύνδεση στο Dolibarr. Μπορεί να χρησιμοποιηθεί από μια εξωτερική ενότητα/διεπαφή, αλλά αν δεν χρειάζεται να ορίσετε κανένα στοιχείο σύνδεσης ή κωδικό πρόσβασης για ένα μέλος, μπορείτε να απενεργοποιήσετε την επιλογή "Διαχείριση σύνδεσης για κάθε μέλος" από τη ρύθμιση της ενότητας μέλους. Εάν θέλετε να διαχειριστείτε μια σύνδεση, αλλά δεν χρειάζεστε κωδικό πρόσβασης, μπορείτε να διατηρήσετε αυτό το πεδίο κενό για να αποφύγετε αυτήν την προειδοποίηση. Σημείωση: Το email μπορεί επίσης να χρησιμοποιηθεί ως σύνδεση εάν το μέλος είναι συνδεδεμένο με έναν χρήστη. +WarningMandatorySetupNotComplete=Κάντε κλικ εδώ για να ρυθμίσετε τις κύριες παραμέτρους WarningEnableYourModulesApplications=Κάντε κλικ εδώ για να ενεργοποιήσετε τις ενότητες και τις εφαρμογές σας -WarningSafeModeOnCheckExecDir=Προειδοποίηση, PHP safe_mode επιλογή είναι τόσο εντολή αυτή πρέπει να αποθηκεύονται σε ένα κατάλογο που δηλώνονται από safe_mode_exec_dir παράμετρο php. +WarningSafeModeOnCheckExecDir=Προειδοποίηση, η επιλογή PHP safe_mode είναι ενεργοποιημένη, επομένως η εντολή πρέπει να αποθηκευτεί σε έναν κατάλογο που δηλώνεται από την παράμετρο php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Ένας σελιδοδείκτης με αυτόν τον τίτλο ή το στόχο αυτό (URL) υπάρχει ήδη. -WarningPassIsEmpty=Προειδοποίηση, password της βάσης δεδομένων είναι άδειο. Αυτή είναι μια τρύπα ασφαλείας. Θα πρέπει να προσθέσετε έναν κωδικό πρόσβασης στη βάση δεδομένων σας και να αλλάξετε conf.php αρχείο σας για να εκφραστεί αυτό. -WarningConfFileMustBeReadOnly=Προειδοποίηση, config αρχείο σας (htdocs / conf / conf.php) μπορούν να αντικατασταθούν από τον web server. Αυτό είναι ένα σοβαρό κενό ασφαλείας. Τροποποιήστε τα δικαιώματα στο αρχείο για να είναι σε λειτουργία μόνο για ανάγνωση για τη λειτουργία των χρηστών του συστήματος που χρησιμοποιείται από τον διακομιστή Web. Εάν χρησιμοποιείτε Windows και μορφή FAT για το δίσκο σας, πρέπει να ξέρετε ότι αυτό το σύστημα αρχείων δεν επιτρέπει να προσθέσετε δικαιώματα στο αρχείο, οπότε δεν μπορεί να είναι απολύτως ασφαλής. -WarningsOnXLines=Προειδοποιήσεις στα %s γραμμές κώδικα -WarningNoDocumentModelActivated=Δεν έχει ενεργοποιηθεί κανένα μοντέλο για την παραγωγή εγγράφων. Ένα πρότυπο θα επιλεγεί από προεπιλογή μέχρι να ελέγξετε τη ρύθμιση της μονάδας σας. -WarningLockFileDoesNotExists=Προειδοποίηση, αφού ολοκληρωθεί η εγκατάσταση, πρέπει να απενεργοποιήσετε τα εργαλεία εγκατάστασης / μετάβασης προσθέτοντας ένα αρχείο install.lock στον κατάλογο %s . Η παράλειψη της δημιουργίας αυτού του αρχείου αποτελεί σοβαρό κίνδυνο για την ασφάλεια. -WarningUntilDirRemoved=Όλες οι προειδοποιήσεις ασφαλείας (ορατές μόνο από τους χρήστες διαχειριστή) θα παραμείνουν ενεργοποιημένες όσο υπάρχει ευπάθεια (ή ότι η σταθερή MAIN_REMOVE_INSTALL_WARNING προστίθεται στο Setup -> Other). -WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. -WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. -WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningPassIsEmpty=Προειδοποίηση, ο κωδικός πρόσβασης της βάσης δεδομένων είναι κενός. Αυτό είναι ένα κενό ασφαλείας. Θα πρέπει να προσθέσετε έναν κωδικό πρόσβασης στη βάση δεδομένων σας και να αλλάξετε το αρχείο conf.php ώστε να χρησιμοποιείται αυτό. +WarningConfFileMustBeReadOnly=Προειδοποίηση, το αρχείο ρυθμίσεων ( htdocs/conf/conf.php ) μπορεί να αντικατασταθεί από τον διακομιστή web. Αυτό είναι ένα σοβαρό κενό ασφαλείας. Τροποποιήστε τα δικαιώματα στο αρχείο ώστε να είναι σε λειτουργία μόνο για ανάγνωση για χρήστη του λειτουργικού συστήματος που χρησιμοποιείται από τον διακομιστή Ιστού. Εάν χρησιμοποιείτε μορφή Windows και FAT για τον δίσκο σας, πρέπει να γνωρίζετε ότι αυτό το σύστημα αρχείων δεν επιτρέπει την προσθήκη δικαιωμάτων σε αρχείο, επομένως δεν μπορεί να είναι απολύτως ασφαλές. +WarningsOnXLines=Προειδοποιήσεις στις %s εγγραφές κώδικα +WarningNoDocumentModelActivated=Δεν έχει ενεργοποιηθεί κανένα μοντέλο για την παραγωγή εγγράφων. Ένα πρότυπο θα επιλεγεί από προεπιλογή μέχρι να ελέγξετε τη ρύθμιση της ενότητας σας. +WarningLockFileDoesNotExists=Προειδοποίηση, αφού ολοκληρωθεί η εγκατάσταση, πρέπει να απενεργοποιήσετε τα εργαλεία εγκατάστασης / μετεγκατάστασης προσθέτοντας ένα αρχείο install.lock στον κατάλογο %s . Η παράλειψη της δημιουργίας αυτού του αρχείου αποτελεί σοβαρό κίνδυνο για την ασφάλεια. +WarningUntilDirRemoved=Όλες οι προειδοποιήσεις ασφαλείας (ορατές μόνο από τους διαχειριστές) θα παραμείνουν ενεργές για όσο διάστημα υπάρχει η ευπάθεια (ή ότι η σταθερή MAIN_REMOVE_INSTALL_WARNING προστίθεται στο Ρυθμίσεις->Άλλες Ρυθμίσεις). +WarningCloseAlways=Προειδοποίηση, το κλείσιμο πραγματοποιείται ακόμη και αν το ποσό διαφέρει μεταξύ των στοιχείων πηγής και προορισμού. Ενεργοποιήστε αυτήν τη δυνατότητα με προσοχή. +WarningUsingThisBoxSlowDown=Προειδοποίηση, χρησιμοποιώντας αυτό το πλαίσιο επιβραδύνετε σοβαρά όλες τις σελίδες που εμφανίζουν το πλαίσιο. +WarningClickToDialUserSetupNotComplete=Η ρύθμιση των πληροφοριών ClickToDial για τον χρήστη σας δεν έχει ολοκληρωθεί (δείτε την καρτέλα ClickToDial στην κάρτα χρήστη σας). WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Απενεργοποιημένη λειτουργία όταν οι ρυθμίσεις της οθόνης έχουν προσαρμοστεί για χρήση από άτομα με προβλήματα όρασης ή φυλλομετρητές κειμένου. WarningPaymentDateLowerThanInvoiceDate=Η ημερομηνία πληρωμής (%s) είναι νωρίτερα από την ημερομηνία του τιμολογίου (%s) για το τιμολόγιο %s. -WarningTooManyDataPleaseUseMoreFilters=Too many data (more than %s lines). Please use more filters or set the constant %s to a higher limit. -WarningSomeLinesWithNullHourlyRate=Some times were recorded by some users while their hourly rate was not defined. A value of 0 %s per hour was used but this may result in wrong valuation of time spent. -WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security purpose you will have to login with your new login before next action. -WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language -WarningNumberOfRecipientIsRestrictedInMassAction=Προειδοποίηση, ο αριθμός διαφορετικών παραληπτών περιορίζεται στο %s όταν χρησιμοποιείτε τις μαζικές ενέργειες σε λίστες -WarningDateOfLineMustBeInExpenseReportRange=Προειδοποίηση, η ημερομηνία της γραμμής δεν βρίσκεται στο εύρος της έκθεσης δαπανών +WarningTooManyDataPleaseUseMoreFilters=Πάρα πολλά δεδομένα (περισσότερες από %sγραμμές). Χρησιμοποιήστε περισσότερα φίλτρα ή ορίστε τη σταθερά %s σε υψηλότερο όριο. +WarningSomeLinesWithNullHourlyRate=Κάποιοι χρόνοι καταγράφηκαν από ορισμένους χρήστες ενώ η ωριαία τιμή τους δεν είχε καθοριστεί. Χρησιμοποιήθηκε μια τιμή 0 %s ανά ώρα, αλλά αυτό μπορεί να οδηγήσει σε λανθασμένη εκτίμηση του χρόνου που δαπανήθηκε. +WarningYourLoginWasModifiedPleaseLogin=Η σύνδεσή σας τροποποιήθηκε. Για λόγους ασφαλείας θα πρέπει να συνδεθείτε με τη νέα σας σύνδεση πριν από την επόμενη ενέργεια. +WarningAnEntryAlreadyExistForTransKey=Υπάρχει ήδη μια καταχώριση για το κλειδί μετάφρασης για αυτήν τη γλώσσα +WarningNumberOfRecipientIsRestrictedInMassAction=Προειδοποίηση, ο αριθμός διαφορετικών παραληπτών περιορίζεται σε %s όταν χρησιμοποιείτε τις μαζικές ενέργειες σε λίστες +WarningDateOfLineMustBeInExpenseReportRange=Προειδοποίηση, η ημερομηνία γραμμής δεν είναι στο εύρος της αναφοράς εξόδων WarningProjectDraft=Το έργο είναι ακόμα σε κατάσταση προχείρου. Μην ξεχάσετε να το επικυρώσετε εάν σκοπεύετε να χρησιμοποιήσετε εργασίες. WarningProjectClosed=Το έργο είναι κλειστό. Πρέπει πρώτα να το ανοίξετε ξανά. -WarningSomeBankTransactionByChequeWereRemovedAfter=Ορισμένες τραπεζικές συναλλαγές καταργήθηκαν μετά την ενσωμάτωσής τους εκεί οπου δημιουργήθηκαν. Επομένως, οι έλεγχοι και το σύνολο της απόδειξης μπορεί να διαφέρουν από τον αριθμό και το σύνολο της λίστας. +WarningSomeBankTransactionByChequeWereRemovedAfter=Ορισμένες τραπεζικές συναλλαγές αφαιρέθηκαν μετά τη δημιουργία της απόδειξης. Επομένως, ο αριθμός των επιταγών και το σύνολο των αποδείξεων ενδέχεται να διαφέρουν από τον αριθμό και το σύνολο στη λίστα. WarningFailedToAddFileIntoDatabaseIndex=Προειδοποίηση, απέτυχε η προσθήκη καταχώρισης αρχείου στον πίνακα ευρετηρίου βάσης δεδομένων ECM WarningTheHiddenOptionIsOn=Προειδοποίηση, η κρυφή επιλογή %s είναι ενεργοποιημένη. WarningCreateSubAccounts=Προειδοποίηση, δεν μπορείτε να δημιουργήσετε απευθείας έναν δευτερεύοντα λογαριασμό, πρέπει να δημιουργήσετε ένα τρίτο μέρος ή έναν χρήστη και να του εκχωρήσετε έναν λογιστικό κωδικό για να τους βρείτε σε αυτήν τη λίστα WarningAvailableOnlyForHTTPSServers=Διατίθεται μόνο εάν χρησιμοποιείτε ασφαλή σύνδεση HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Η ενότητα %s δεν έχει ενεργοποιηθεί. Έτσι, μπορεί να χάσετε πολλές λειτουργίες. -WarningPaypalPaymentNotCompatibleWithStrict=Η τιμή "Αυστηρή" κάνει τις λειτουργίες ηλεκτρονικής πληρωμής να μην λειτουργούν σωστά. Χρησιμοποιήστε την τιμη 'Lax' . +WarningPaypalPaymentNotCompatibleWithStrict=Η τιμή "Αυστηρή" κάνει τις λειτουργίες ηλεκτρονικής πληρωμής να μην λειτουργούν σωστά. Χρησιμοποιήστε την τιμή 'Χαλαρή' . +WarningThemeForcedTo=Προειδοποίηση, έχει γίνει επιβολή του θέματος %s από την κρυφή σταθερά MAIN_FORCETEME -<<<<<<< ΚΕΦΑΛΙΔΑ -======= -<<<<<<< ΚΕΦΑΛΙΔΑ -<<<<<<< ΚΕΦΑΛΙΔΑ ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Η τιμή δεν είναι έγκυρη RequireAtLeastXString = Απαιτεί τουλάχιστον %s χαρακτήρα(ες) @@ -344,15 +344,6 @@ RequireValidDuration = Απαιτείται έγκυρη διάρκεια RequireValidExistingElement = Απαιτείται μια υπάρχουσα τιμή RequireValidBool = Απαιτείται έγκυρο boolean BadSetupOfField = Σφάλμα κακή ρύθμιση του πεδίου -BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation -BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion -BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class -<<<<<<< ΚΕΦΑΛΙΔΑ -======= -======= -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git +BadSetupOfFieldClassNotFoundForValidation = Σφάλμα κακής ρύθμισης πεδίου: Η κλάση δεν βρέθηκε για επικύρωση +BadSetupOfFieldFileNotFound = Σφάλμα κακής ρύθμισης πεδίου : Το αρχείο δεν βρέθηκε για συμπερίληψη +BadSetupOfFieldFetchNotCallable = Σφάλμα κακής ρύθμισης του πεδίου : Fetch not callable on class diff --git a/htdocs/langs/el_GR/eventorganization.lang b/htdocs/langs/el_GR/eventorganization.lang index 96ddde17344..f7f93ac9c84 100644 --- a/htdocs/langs/el_GR/eventorganization.lang +++ b/htdocs/langs/el_GR/eventorganization.lang @@ -18,7 +18,7 @@ # Generic # ModuleEventOrganizationName = Οργάνωση Εκδηλώσεων -EventOrganizationDescription = Οργάνωση εκδήλωσης μέσω Ενότητας Έργου +EventOrganizationDescription = Οργάνωση εκδήλωσης μέσω της Ενότητας Έργου EventOrganizationDescriptionLong= Διαχειριστείτε τη διοργάνωση μιας εκδήλωσης (παράσταση, συνέδρια, συμμετέχοντες ή ομιλητές, με δημόσιες σελίδες για πρόταση, ψηφοφορία ή εγγραφή) # # Menu @@ -48,7 +48,7 @@ EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Πρότυπο email για α EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Πρότυπο email για χρήση κατά την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από τη μαζική αποστολή "Αποστολή email" σε ομιλητές EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Πρότυπο email για χρήση κατά την αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από τη μαζική αποστολή "Αποστολή email" στη λίστα συμμετεχόντων EVENTORGANIZATION_FILTERATTENDEES_CAT = Στη φόρμα δημιουργίας/προσθήκης συμμετέχοντα, περιορίζει τη λίστα τρίτων μόνο σε τρίτα μέρη της κατηγορίας -EVENTORGANIZATION_FILTERATTENDEES_TYPE = Στη φόρμα δημιουργίας/προσθήκης συμμετέχοντα, τη λίστα τρίτων μερών περιορίζεται σε τρίτα μέρη με τη φύση +EVENTORGANIZATION_FILTERATTENDEES_TYPE = Στη φόρμα για τη δημιουργία/προσθήκης ενός συμμετέχοντα, περιορίζει τη λίστα τρίτων σε τρίτα μέρη με τη φύση # # Object @@ -60,11 +60,13 @@ ConferenceOrBoothTab = Συνέδριο ή Περίπτερο AmountPaid = Ποσό που καταβλήθηκε DateOfRegistration = Ημερομηνία εγγραφής ConferenceOrBoothAttendee = Συμμετέχων σε συνέδριο ή περίπτερο +ApplicantOrVisitor=Αιτών ή επισκέπτης +Speaker=Ομιλητής # # Template Mail # -YourOrganizationEventConfRequestWasReceived = Το αίτημά σας για συνδιάσκεψη ελήφθη +YourOrganizationEventConfRequestWasReceived = Το αίτημά σας για συνέδριο ελήφθη YourOrganizationEventBoothRequestWasReceived = Το αίτημά σας για περίπτερο ελήφθη EventOrganizationEmailAskConf = Αίτημα για συνέδριο EventOrganizationEmailAskBooth = Αίτημα για περίπτερο @@ -78,7 +80,7 @@ ToSpeakers=Σε ομιλητές # Event # AllowUnknownPeopleSuggestConf=Επιτρέψτε σε όλους να προτείνουν συνέδρια -AllowUnknownPeopleSuggestConfHelp=Επιτρέψτε σε άγνωστα άτομα να προτείνουν μια διάσκεψη που θέλουν να κάνουν +AllowUnknownPeopleSuggestConfHelp=Επιτρέψτε σε άγνωστα άτομα να προτείνουν ένα συνέδριο που θέλουν να διοργανώσουν AllowUnknownPeopleSuggestBooth=Επιτρέψτε σε όλους να κάνουν αίτηση για περίπτερο AllowUnknownPeopleSuggestBoothHelp=Επιτρέψτε σε άγνωστα άτομα να κάνουν αίτηση για περίπτερο PriceOfRegistration=Τιμή εγγραφής @@ -90,19 +92,19 @@ ConferenceOrBoothInformation=Πληροφορίες για το συνέδριο Attendees=Συμμετέχοντες ListOfAttendeesOfEvent=Λίστα συμμετεχόντων της εκδήλωσης DownloadICSLink = Λήψη συνδέσμου ICS -EVENTORGANIZATION_SECUREKEY = Seed για να εξασφαλίσετε το κλειδί για τη δημόσια σελίδα εγγραφής για να προτείνετε μια διάσκεψη +EVENTORGANIZATION_SECUREKEY = Seed για να εξασφαλίσετε το κλειδί για τη δημόσια σελίδα εγγραφής για την πρόταση συνεδρίου SERVICE_BOOTH_LOCATION = Υπηρεσία που χρησιμοποιείται για τη γραμμή τιμολογίου σχετικά με τη θέση του περιπτέρου SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Υπηρεσία που χρησιμοποιείται για τη γραμμή τιμολογίου σχετικά με τη συνδρομή ενός συμμετέχοντος σε μια εκδήλωση NbVotes=Αριθμός ψήφων # # Status # -EvntOrgDraft = Πρόχειρο +EvntOrgDraft = Προσχέδιο EvntOrgSuggested = Προτεινόμενα EvntOrgConfirmed = Επιβεβαιωμένο EvntOrgNotQualified = Μη επιλεγμένο EvntOrgDone = Ολοκληρωμένες -EvntOrgCancelled = Ακυρώθηκε +EvntOrgCancelled = Ακυρωμένες # # Public page # @@ -113,7 +115,7 @@ EvntOrgRegistrationConfHelpMessage = Εδώ, μπορείτε να προτεί EvntOrgRegistrationBoothHelpMessage = Εδώ, μπορείτε να κάνετε αίτηση για να έχετε ένα περίπτερο κατά τη διάρκεια της εκδήλωσης. ListOfSuggestedConferences = Λίστα προτεινόμενων συνεδρίων ListOfSuggestedBooths = Λίστα προτεινόμενων περιπτέρων -ListOfConferencesOrBooths=Κατάλογος συνεδρίων ή περιπτέρων του έργου εκδήλωσης +ListOfConferencesOrBooths=Λίστα συνεδρίων ή περιπτέρων του έργου εκδήλωσης SuggestConference = Προτείνετε ένα νέο συνέδριο SuggestBooth = Προτείνετε ένα περίπτερο ViewAndVote = Δείτε και ψηφίστε για προτεινόμενες εκδηλώσεις @@ -121,12 +123,12 @@ PublicAttendeeSubscriptionGlobalPage = Δημόσιος σύνδεσμος γι PublicAttendeeSubscriptionPage = Δημόσιος σύνδεσμος για εγγραφή σε αυτήν την εκδήλωση μόνο  MissingOrBadSecureKey = Το κλειδί ασφαλείας δεν είναι έγκυρο ή λείπει EvntOrgWelcomeMessage = Αυτή η φόρμα σάς επιτρέπει να εγγραφείτε ως νέος συμμετέχων στην εκδήλωση: %s -EvntOrgDuration = Αυτή η διάσκεψη ξεκινά στις %s και τελειώνει στις %s. -ConferenceAttendeeFee = Χρέωση συμμετεχόντων στο συνέδριο για την εκδήλωση : «%s» που διεξάγεται από %s έως %s. +EvntOrgDuration = Αυτό το συνέδριο ξεκινά στις %s και τελειώνει στις %s. +ConferenceAttendeeFee = Χρέωση συμμετεχόντων στο συνέδριο για την εκδήλωση : "%s" που διεξάγεται από %s έως %s. BoothLocationFee = Θέση περιπτέρου για την εκδήλωση : "%s" που διεξάγεται από %s έως %s -EventType = Τύπος συμβάντος -LabelOfBooth=Ετικέτα περιπτέρου -LabelOfconference=Ετικέτα συνεδρίου +EventType = Τύπος εκδήλωσης +LabelOfBooth=Ταμπέλα περιπτέρου +LabelOfconference=Ταμπέλα συνεδρίου ConferenceIsNotConfirmed=Η εγγραφή δεν είναι διαθέσιμη, το συνέδριο δεν έχει επιβεβαιωθεί ακόμα DateMustBeBeforeThan=Το %s πρέπει να είναι πριν από το %s DateMustBeAfterThan=Το %s πρέπει να είναι μετά το %s @@ -136,9 +138,10 @@ OrganizationEventConfRequestWasReceived=Η πρότασή σας για μια OrganizationEventBoothRequestWasReceived=Το αίτημά σας για ένα περίπτερο έχει ληφθεί OrganizationEventPaymentOfBoothWasReceived=Η πληρωμή για το περίπτερό σας έχει καταγραφεί OrganizationEventPaymentOfRegistrationWasReceived=Η πληρωμή σας για την εγγραφή της εκδήλωσής έχει καταγραφεί -OrganizationEventBulkMailToAttendees=Αυτή είναι μια υπενθύμιση για τη συμμετοχή σας στην εκδήλωση ως συμμετέχων +OrganizationEventBulkMailToAttendees=Αυτή είναι μια υπενθύμιση για τη συμμετοχή σας στην εκδήλωση OrganizationEventBulkMailToSpeakers=Αυτή είναι μια υπενθύμιση για τη συμμετοχή σας στην εκδήλωση ως ομιλητής OrganizationEventLinkToThirdParty=Σύνδεσμος με τρίτο μέρος (πελάτη, προμηθευτή ή συνεργάτη) +OrganizationEvenLabelName=Δημόσια ονομασία του συνεδρίου ή του περιπτέρου NewSuggestionOfBooth=Αίτηση για περίπτερο NewSuggestionOfConference=Αίτηση για συνέδριο diff --git a/htdocs/langs/el_GR/exports.lang b/htdocs/langs/el_GR/exports.lang index 25cf82bad9c..0a1e9ef0cad 100644 --- a/htdocs/langs/el_GR/exports.lang +++ b/htdocs/langs/el_GR/exports.lang @@ -3,138 +3,143 @@ ExportsArea=Εξαγωγές ImportArea=Εισαγωγή NewExport=Νέα εξαγωγή NewImport=Νέα εισαγωγή -ExportableDatas=Exportable dataset -ImportableDatas=Importable dataset -SelectExportDataSet=Choose dataset you want to export... -SelectImportDataSet=Choose dataset you want to import... +ExportableDatas=Εξαγώγιμο σύνολο δεδομένων +ImportableDatas=Εισαγώγιμο σύνολο δεδομένων +SelectExportDataSet=Επιλέξτε το σύνολο δεδομένων που θέλετε να εξάγετε... +SelectImportDataSet=Επιλέξτε το σύνολο δεδομένων που θέλετε να εισάγετε... SelectExportFields=Επιλέξτε τα πεδία που θέλετε να εξάγετε ή επιλέξτε ένα προκαθορισμένο προφίλ εξαγωγής -SelectImportFields=Επιλέξτε τα πεδία αρχείων προέλευσης που θέλετε να εισαγάγετε και το πεδίο στόχων τους στη βάση δεδομένων, μετακινώντας τα πάνω και κάτω με την άγκυρα %s ή επιλέγοντας ένα προκαθορισμένο προφίλ εισαγωγής: -NotImportedFields=Fields of source file not imported -SaveExportModel=Αποθηκεύστε τις επιλογές σας ως προφίλ / πρότυπο εξαγωγής (για επαναχρησιμοποίηση). +SelectImportFields=Επιλέξτε τα πεδία της πηγής που θέλετε να εισάγετε και τα αντίστοιχα πεδία στα οποία θέλετε να εισαχθούν στη βάση δεδομένων, μετακινώντας τα πάνω και κάτω με την άγκυρα %s ή επιλέγοντας ένα προκαθορισμένο προφίλ εισαγωγής: +NotImportedFields=Πεδία του αρχείου προέλευσης που δεν εισήχθησαν +SaveExportModel=Αποθηκεύστε τις επιλογές σας ως ενα προφίλ/πρότυπο εξαγωγής (για επαναχρησιμοποίηση). SaveImportModel=Αποθήκευση αυτού του προφίλ εισαγωγής (για επαναχρησιμοποίηση) ... -ExportModelName=Export profile name +ExportModelName=Όνομα προφίλ εξαγωγής ExportModelSaved=Το προφίλ εξαγωγής αποθηκεύτηκε ως %s . -ExportableFields=Exportable fields -ExportedFields=Exported fields -ImportModelName=Import profile name +ExportableFields=Εξαγώγιμα πεδία +ExportedFields=Εξαγμένα πεδία +ImportModelName=Όνομα προφίλ εισαγωγής ImportModelSaved=Το προφίλ εισαγωγής αποθηκεύτηκε ως %s . -DatasetToExport=Dataset to export -DatasetToImport=Import file into dataset -ChooseFieldsOrdersAndTitle=Choose fields order... -FieldsTitle=Fields title -FieldTitle=Field title -NowClickToGenerateToBuildExportFile=Τώρα, επιλέξτε τη μορφή αρχείου στο σύνθετο πλαίσιο και κάντε κλικ στο "Δημιουργία" για να δημιουργήσετε το αρχείο εξαγωγής ... +ImportProfile=Προφίλ εισαγωγής +DatasetToExport=Σύνολο δεδομένων για εξαγωγή +DatasetToImport=Εισαγωγή αρχείου στο σύνολο δεδομένων +ChooseFieldsOrdersAndTitle=Επιλογή σειράς πεδίων... +FieldsTitle=Τίτλος πεδίων +FieldTitle=Τίτλος πεδίου +NowClickToGenerateToBuildExportFile=Τώρα, επιλέξτε τη μορφή αρχείου στο σύνθετο πλαίσιο και κάντε κλικ στη "Δημιουργία" για να δημιουργήσετε το αρχείο εξαγωγής ... AvailableFormats=Διαθέσιμες μορφές LibraryShort=Library ExportCsvSeparator=Csv διαχωριστικό χαρακτήρων ImportCsvSeparator=Csv διαχωριστικό χαρακτήρων -Step=Step +Step=Βήμα FormatedImport=Βοηθός εισαγωγής FormatedImportDesc1=Αυτή η ενότητα σάς επιτρέπει να ενημερώσετε υπάρχοντα δεδομένα ή να προσθέσετε νέα αντικείμενα στη βάση δεδομένων από ένα αρχείο χωρίς τεχνικές γνώσεις, χρησιμοποιώντας έναν βοηθό. -FormatedImportDesc2=Το πρώτο βήμα είναι να επιλέξετε το είδος των δεδομένων που θέλετε να εισαγάγετε, στη συνέχεια τη μορφή του αρχείου προέλευσης και, στη συνέχεια, τα πεδία που θέλετε να εισαγάγετε. +FormatedImportDesc2=Το πρώτο βήμα είναι να επιλέξετε το είδος των δεδομένων που θέλετε να εισάγετε, στη συνέχεια τη μορφή του αρχείου προέλευσης και μετά τα πεδία που θέλετε να εισάγετε. FormatedExport=Βοηθός εξαγωγής FormatedExportDesc1=Αυτά τα εργαλεία επιτρέπουν την εξαγωγή εξατομικευμένων δεδομένων χρησιμοποιώντας έναν βοηθό, για να σας βοηθήσουν στη διαδικασία χωρίς να χρειάζεστε τεχνικές γνώσεις. FormatedExportDesc2=Το πρώτο βήμα είναι να επιλέξετε ένα προκαθορισμένο σύνολο δεδομένων, κατόπιν τα πεδία που θέλετε να εξάγετε και με ποια σειρά. -FormatedExportDesc3=Όταν επιλέγονται δεδομένα για εξαγωγή, μπορείτε να επιλέξετε τη μορφή του αρχείου εξόδου. -Sheet=Sheet -NoImportableData=No importable data (no module with definitions to allow data imports) +FormatedExportDesc3=Όταν επιλεχθούν τα δεδομένα για εξαγωγή, μπορείτε να επιλέξετε τη μορφή του αρχείου εξόδου. +Sheet=Φύλλο +NoImportableData=Δεν υπάρχουν δεδομένα προς εισαγωγή (καμία ενότητα με ορισμούς που να επιτρέπουν την εισαγωγή δεδομένων) FileSuccessfullyBuilt=Το αρχείο δημιουργήθηκε -SQLUsedForExport=Το SQL Request χρησιμοποιείται για την εξαγωγή δεδομένων -LineId=Id of line +SQLUsedForExport=Αίτημα SQL που χρησιμοποιήθηκε για την εξαγωγή δεδομένων +LineId=Αναγνωριστικό γραμμής LineLabel=Ετικέτα της γραμμής -LineDescription=Description of line -LineUnitPrice=Unit price of line -LineVATRate=VAT Rate of line -LineQty=Quantity for line -LineTotalHT=Ποσό εκτός από φόρο για τη γραμμή -LineTotalTTC=Amount with tax for line -LineTotalVAT=Amount of VAT for line -TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) -FileWithDataToImport=File with data to import -FileToImport=Source file to import +LineDescription=Περιγραφή γραμμής +LineUnitPrice=Τιμή μονάδας γραμμής +LineVATRate=Συντελεστής ΦΠΑ γραμμής +LineQty=Ποσότητα για γραμμή +LineTotalHT=Ποσό χωρίς φόρος για γραμμή +LineTotalTTC=Ποσό με φόρο για γραμμή +LineTotalVAT=Ποσό Φ.Π.Α. για γραμμή +TypeOfLineServiceOrProduct=Τύπος γραμμής (0=προϊόν, 1=υπηρεσία) +FileWithDataToImport=Αρχείο με δεδομένα για εισαγωγή +FileToImport=Αρχείο προέλευσης για εισαγωγή FileMustHaveOneOfFollowingFormat=Το αρχείο για εισαγωγή πρέπει να έχει μία από τις ακόλουθες μορφές +DownloadEmptyExampleShort=Λήψη δείγματος αρχείου DownloadEmptyExample=Κάντε λήψη ενός προτύπου αρχείου με παραδείγματα και πληροφορίες για πεδία που μπορείτε να εισαγάγετε StarAreMandatory=Στο πρότυπο αρχείο, όλα τα πεδία με * είναι υποχρεωτικά. ChooseFormatOfFileToImport=Επιλέξτε τη μορφή αρχείου που θα χρησιμοποιηθεί ως μορφή αρχείου εισαγωγής κάνοντας κλικ στο εικονίδιο %s για να το επιλέξετε ... -ChooseFileToImport=Μεταφορτώστε το αρχείο και κάντε κλικ στο εικονίδιο %s για να επιλέξετε αρχείο ως αρχείο εισαγωγής πηγής ... -SourceFileFormat=Source file format -FieldsInSourceFile=Fields in source file -FieldsInTargetDatabase=Τομείς-στόχοι που Dolibarr δεδομένων (bold = υποχρεωτικό) -Field=Field -NoFields=No fields -MoveField=Move field column number %s -ExampleOfImportFile=Example_of_import_file -SaveImportProfile=Save this import profile -ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. -TablesTarget=Targeted tables -FieldsTarget=Targeted fields -FieldTarget=Targeted field -FieldSource=Source field -NbOfSourceLines=Number of lines in source file -NowClickToTestTheImport=Ελέγξτε ότι η μορφή αρχείου (οριοθέτες πεδίων και συμβολοσειρών) του αρχείου σας ταιριάζει με τις επιλογές που εμφανίζονται και ότι έχετε παραλείψει τη γραμμή κεφαλίδας ή αυτές θα επισημανθούν ως σφάλματα στην ακόλουθη προσομοίωση.
Κάντε κλικ στο κουμπί " %s " για να εκτελέσετε έλεγχο της δομής / περιεχομένου του αρχείου και να προσομοιώσετε τη διαδικασία εισαγωγής.
Δεν θα αλλάξουν δεδομένα στη βάση δεδομένων σας . +ChooseFileToImport=Μεταφορτώστε το αρχείο και κάντε κλικ στο εικονίδιο %s για να επιλέξετε αρχείο ως αρχείο εισαγωγής προέλευσης ... +SourceFileFormat=Μορφή αρχείου προέλευσης +FieldsInSourceFile=Πεδία αρχείου προέλευσης +FieldsInTargetDatabase=Πεδία στόχευσης στη βάση δεδομένων Dolibarr (έντονα=υποχρεωτικά) +Field=Πεδίο +NoFields=Χωρίς πεδία +MoveField=Μετακίνηση πεδίου αριθμού στήλης %s +ExampleOfImportFile=Παράδειγμα_αρχείου_εισαγωγής +SaveImportProfile=Αποθήκευση προφίλ εισαγωγής +ErrorImportDuplicateProfil=Αποτυχία αποθήκευσης αυτού του προφίλ εισαγωγής με αυτό το όνομα. Υπάρχει ήδη ένα υπάρχον προφίλ με αυτό το όνομα. +TablesTarget=Πίνακες προορισμού +FieldsTarget=Πεδία προορισμού +FieldTarget=Πεδίο προορισμού +FieldSource=Προέλευση πεδίου +NbOfSourceLines=Αριθμός γραμμών στο αρχείο προέλευσης +NowClickToTestTheImport=Ελέγξτε ότι η μορφή αρχείου (οριοθέτες πεδίων και συμβολοσειρών) του αρχείου σας ταιριάζουν με τις επιλογές που εμφανίζονται και ότι έχετε παραλείψει τη γραμμή κεφαλίδας, διαφορετικά θα επισημανθούν ως σφάλματα στην ακόλουθη προσομοίωση.
Κάντε κλικ στο κουμπί " %s " για να εκτελέσετε έλεγχο της δομής/περιεχομένων του αρχείου και να προσομοιώσετε τη διαδικασία εισαγωγής.
Δεν θα αλλάξουν δεδομένα στη βάση δεδομένων σας . RunSimulateImportFile=Εκτέλεση προσομοίωσης εισαγωγής FieldNeedSource=Το πεδίο απαιτεί δεδομένα από το αρχείο προέλευσης -SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file -InformationOnSourceFile=Information on source file -InformationOnTargetTables=Information on target fields -SelectAtLeastOneField=Switch at least one source field in the column of fields to export -SelectFormat=Choose this import file format +SomeMandatoryFieldHaveNoSource=Ορισμένα υποχρεωτικά πεδία δεν έχουν αντιστοιχιστεί με το αρχείο δεδομένων προέλευσης +InformationOnSourceFile=Πληροφορίες για το αρχείο προέλευσης +InformationOnTargetTables=Πληροφορίες για τα πεδία προορισμού +SelectAtLeastOneField=Επιλέξτε τουλάχιστον ένα πεδίο στη στήλη των πεδίων για εξαγωγή +SelectFormat=Επιλέξτε αυτήν τη μορφή αρχείου εισαγωγής RunImportFile=Εισαγωγή δεδομένων -NowClickToRunTheImport=Ελέγξτε τα αποτελέσματα της προσομοίωσης εισαγωγής. Διορθώστε τυχόν σφάλματα και επαναλάβετε τη δοκιμή.
Όταν η προσομοίωση δεν αναφέρει σφάλματα, μπορείτε να προχωρήσετε στην εισαγωγή των δεδομένων στη βάση δεδομένων. +NowClickToRunTheImport=Ελέγξτε τα αποτελέσματα της προσομοίωσης εισαγωγής. Διορθώστε τυχόν σφάλματα και δοκιμάστε ξανά.
Όταν η προσομοίωση δεν αναφέρει σφάλματα, μπορείτε να προχωρήσετε στην εισαγωγή των δεδομένων στη βάση δεδομένων. DataLoadedWithId=Τα εισαγόμενα δεδομένα θα έχουν ένα επιπλέον πεδίο σε κάθε πίνακα βάσης δεδομένων με αυτό το αναγνωριστικό εισαγωγής: %s , ώστε να είναι δυνατή η αναζήτηση σε περίπτωση διερεύνησης ενός προβλήματος που σχετίζεται με αυτήν την εισαγωγή. -ErrorMissingMandatoryValue=Τα υποχρεωτικά δεδομένα είναι κενά στο αρχείο προέλευσης για το πεδίο %s . -TooMuchErrors=Υπάρχουν ακόμα %s άλλες γραμμές πηγής με σφάλματα, αλλά η απόδοση ήταν περιορισμένη. -TooMuchWarnings=Υπάρχουν ακόμα %s άλλες πηγές με προειδοποιήσεις, αλλά η απόδοση ήταν περιορισμένη. -EmptyLine=Empty line (will be discarded) +ErrorMissingMandatoryValue=Τα υποχρεωτικά δεδομένα είναι κενά στο αρχείο προέλευσης στη στήλη %s . +TooMuchErrors=Υπάρχουν ακόμη άλλες %s γραμμές προέλευσης με σφάλματα, αλλά η έξοδος έχει περιοριστεί. +TooMuchWarnings=Υπάρχουν ακόμη άλλες %s γραμμές πηγής με προειδοποιήσεις, αλλά η έξοδος έχει περιοριστεί. +EmptyLine=Κενή γραμμή (θα απορριφθεί) CorrectErrorBeforeRunningImport=Πρέπει να διορθώσετε όλα τα σφάλματα πριν εκτελέσετε την οριστική εισαγωγή. -FileWasImported=Αρχείο εισήχθη με %s αριθμό. -YouCanUseImportIdToFindRecord=Μπορείτε να βρείτε όλες τις εισαγόμενες εγγραφές στη βάση δεδομένων σας φιλτράροντας στο πεδίο import_key = '%s' . -NbOfLinesOK=Number of lines with no errors and no warnings: %s. -NbOfLinesImported=Number of lines successfully imported: %s. -DataComeFromNoWhere=Value to insert comes from nowhere in source file. -DataComeFromFileFieldNb=Value to insert comes from field number %s in source file. -DataComeFromIdFoundFromRef=Η τιμή που προέρχεται από τον αριθμό πεδίου %s του αρχείου προέλευσης θα χρησιμοποιηθεί για να βρει την ταυτότητα του γονικού αντικειμένου που θα χρησιμοποιήσει (έτσι το αντικείμενο %s που έχει το αρχείο αναφοράς από το αρχείο προέλευσης πρέπει να υπάρχει στη βάση δεδομένων). -DataComeFromIdFoundFromCodeId=Ο κώδικας που προέρχεται από τον αριθμό πεδίου %s του αρχείου προέλευσης θα χρησιμοποιηθεί για να βρει την ταυτότητα του γονικού αντικειμένου που θα χρησιμοποιήσει (οπότε ο κώδικας από το αρχείο προέλευσης πρέπει να υπάρχει στο λεξικό %s ). Σημειώστε ότι εάν γνωρίζετε το id, μπορείτε επίσης να το χρησιμοποιήσετε στο αρχείο προέλευσης αντί του κώδικα. Η εισαγωγή θα πρέπει να λειτουργεί και στις δύο περιπτώσεις. -DataIsInsertedInto=Data coming from source file will be inserted into the following field: +FileWasImported=Το αρχείο εισήχθη με αριθμό %s . +YouCanUseImportIdToFindRecord=Μπορείτε να βρείτε όλες τις εισαγόμενες εγγραφές στη βάση δεδομένων σας φιλτράροντας στο πεδίο import_key='%s' . +NbOfLinesOK=Αριθμός γραμμών χωρίς σφάλματα και χωρίς προειδοποιήσεις: %s . +NbOfLinesImported=Αριθμός γραμμών που εισήχθησαν με επιτυχία: %s . +DataComeFromNoWhere=Η τιμή για εισαγωγή δεν προέρχεται από το αρχείο προέλευσης. +DataComeFromFileFieldNb=Η τιμή προς εισαγωγή προέρχεται από τη στήλη %s στο αρχείο προέλευσης. +DataComeFromIdFoundFromRef=Η τιμή που προέρχεται από τη στήλη %s του αρχείου προέλευσης θα χρησιμοποιηθεί για την εύρεση του αναγνωριστικού του γονικού αντικειμένου που θα χρησιμοποιηθεί (έτσι το αντικείμενο %s που έχει αυτή την αναφορά πρέπει να υπάρχει στη βάση δεδομένων). +DataComeFromIdFoundFromCodeId=Ο κωδικός που προέρχεται από τη στήλη %s του αρχείου προέλευσης θα χρησιμοποιηθεί για να βρεθεί το αναγνωριστικό του γονικού αντικειμένου που θα χρησιμοποιηθεί (έτσι ο κωδικός από το αρχείο προέλευσης πρέπει να υπάρχει στο λεξικό %s). Σημειώστε ότι εάν γνωρίζετε το αναγνωριστικό, μπορείτε επίσης να το χρησιμοποιήσετε στο αρχείο προέλευσης αντί για τον κώδικα. Η εισαγωγή θα πρέπει να λειτουργεί και στις δύο περιπτώσεις. +DataIsInsertedInto=Τα δεδομένα που προέρχονται από το αρχείο προέλευσης θα εισαχθούν στο ακόλουθο πεδίο: DataIDSourceIsInsertedInto=Το αναγνωριστικό του γονικού αντικειμένου, που βρέθηκε χρησιμοποιώντας τα δεδομένα στο αρχείο προέλευσης, θα εισαχθεί στο ακόλουθο πεδίο: -DataCodeIDSourceIsInsertedInto=Το αναγνωριστικό της γονικής γραμμής, που βρέθηκε από τον κώδικα, θα εισαχθεί στο ακόλουθο πεδίο: -SourceRequired=Data value is mandatory -SourceExample=Example of possible data value -ExampleAnyRefFoundIntoElement=Κάθε σχ βρέθηκαν για %s στοιχείο +DataCodeIDSourceIsInsertedInto=Το αναγνωριστικό της γονικής γραμμής, που βρέθηκε από τον κωδικό, θα εισαχθεί στο ακόλουθο πεδίο: +SourceRequired=Η τιμή δεδομένων είναι υποχρεωτική +SourceExample=Παράδειγμα πιθανής τιμής δεδομένων +ExampleAnyRefFoundIntoElement=Οποιαδήποτε αναφορά βρέθηκε για το στοιχείο %s ExampleAnyCodeOrIdFoundIntoDictionary=Κάθε κωδικός (ή id) που βρέθηκαν στο λεξικό %s -CSVFormatDesc=Τιμές διαχωρισμένες με κόμματα μορφή αρχείου (.csv).
Αυτή είναι μια μορφή αρχείου κειμένου όπου τα πεδία διαχωρίζονται από διαχωριστικό [%s]. Αν διαχωριστικό βρίσκεται μέσα σε ένα περιεχόμενο πεδίου, το πεδίο είναι στρογγυλεμένο με στρογγυλό χαρακτήρα [%s]. Ο χαρακτήρας Escape για να ξεφύγει ο στρογγυλός χαρακτήρας είναι [%s]. +CSVFormatDesc= Αρχείο μορφής τιμών διαχωρισμένων με κόμμα (.csv).
Πρόκειται για μια μορφή αρχείου κειμένου όπου τα πεδία διαχωρίζονται με διαχωριστικό [%s ]. Εάν βρεθεί διαχωριστικό μέσα σε περιεχόμενο πεδίου, το πεδίο στρογγυλοποιείται με στρογγυλό χαρακτήρα [ %s ]. Ο χαρακτήρας διαφυγής για διαφυγή στρογγυλού χαρακτήρα είναι [ %s ]. Excel95FormatDesc=Μορφή αρχείου Excel (.xls)
Αυτή είναι η εγγενής μορφή Excel 95 (BIFF5). Excel2007FormatDesc=Μορφή αρχείου Excel (.xlsx)
Αυτή είναι η εγγενής μορφή Excel 2007 (SpreadsheetML). TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. -ExportFieldAutomaticallyAdded=Το πεδίο %s προστέθηκε αυτόματα. Θα αποτρέψει την ύπαρξη παρόμοιων γραμμών σαν διπλοεγγεγραμμένες εγγραφές (με ην προσθήκη αυτού του πεδίου, όλες οι γραμμές θα έχουν το δικό τους μοναδικό χαρακτηριστικό και θα διαφέρουν). +ExportFieldAutomaticallyAdded=Το πεδίο %s προστέθηκε αυτόματα. Θα αποφύγει να έχετε παρόμοιες γραμμές που θα αντιμετωπίζονται ως διπλότυπη εγγραφή (με προσθήκη αυτού του πεδίου, όλες οι γραμμές θα έχουν το δικό τους αναγνωριστικό και θα διαφέρουν). CsvOptions=Επιλογές μορφοποίησης CSV Separator=Διαχωριστής πεδίων Enclosure=Διαχωριστικό συμβολοσειράς SpecialCode=Ειδικός κωδικός ExportStringFilter=%% επιτρέπει την αντικατάσταση ενός ή περισσότερων χαρακτήρων στο κείμενο του -ExportDateFilter=YYYY, YYYYMM, YYYYMMDD: Φιλτράρει κατά ένα έτος / μήνα / ημέρα
ΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΜΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧΧ ΥΠΕΧΩΔΕ ΦΥΣΙΚΟ ΑΕΡΙΟ
> ΕΕΕΕ,> ΕΕΕΕ,> YYYYMMDD: φίλτρα για όλα τα επόμενα έτη / μήνες / ημέρες
<YYYY, <YYYYMM, <YYYYMMDD: φίλτρα σε όλα τα προηγούμενα έτη / μήνες / ημέρες +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD: φιλτράρει κατά ένα έτος/μήνα/ημέρα
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD: φιλτράρει σε ένα εύρος ετών/μήνων/ημέρων
> YYYY, > YYYYMM, > YYYYMMDD: φιλτράρει τα επόμενα έτη/μήνες/ημέρες
< YYYY, < YYYYMM, < YYYYMMDD: φίλτρα για όλα τα προηγούμενα έτη/μήνες/ημέρες ExportNumericFilter=NNNNN filters by one value
NNNNN+NNNNN filters over a range of values
< NNNNN filters by lower values
> NNNNN filters by higher values -ImportFromLine=Η εισαγωγή ξεκινάει από τη γραμμή νούμερο -EndAtLineNb=Τέλος στη γραμμή νούμερο -ImportFromToLine=Όριο εύρους (Από - έως). Π.χ. να παραλείψετε γραμμή (ες) κεφαλίδας. -SetThisValueTo2ToExcludeFirstLine=Για παράδειγμα, ορίστε αυτήν την τιμή σε 3 για να αποκλείσετε τις 2 πρώτες γραμμές.
Εάν οι γραμμές κεφαλίδας δεν παραλείπονται, αυτό θα έχει ως αποτέλεσμα πολλαπλά σφάλματα στη προσομοίωση εισαγωγής. -KeepEmptyToGoToEndOfFile=Κρατήστε αυτό το πεδίο κενό για να επεξεργαστείτε όλες τις γραμμές μέχρι το τέλος του αρχείου. -SelectPrimaryColumnsForUpdateAttempt=Επιλέξτε στήλες που θα χρησιμοποιηθούν ως πρωτεύον κλειδί για μια εισαγωγή UPDATE +ImportFromLine=Η εισαγωγή ξεκινάει από τον αριθμό γραμμής +EndAtLineNb=Σταματάει στον αριθμό γραμμής +ImportFromToLine=Όριο εύρους (Από - Έως). Π.χ. για παράλειψη γραμμής κεφαλίδας. +SetThisValueTo2ToExcludeFirstLine=Για παράδειγμα, ορίστε αυτήν την τιμή σε 3 για να εξαιρέσετε τις 2 πρώτες γραμμές.
Εάν οι γραμμές κεφαλίδας ΔΕΝ παραληφθούν, αυτό θα οδηγήσει σε πολλαπλά σφάλματα στην Προσομοίωση Εισαγωγής. +KeepEmptyToGoToEndOfFile=Διατηρήστε αυτό το πεδίο κενό για να επεξεργαστείτε όλες τις γραμμές μέχρι το τέλος του αρχείου. +SelectPrimaryColumnsForUpdateAttempt=Επιλέξτε στήλη(ες) που θα χρησιμοποιηθούν ως πρωτεύον κλειδί για μια εισαγωγή UPDATE UpdateNotYetSupportedForThisImport=Η ενημέρωση δεν υποστηρίζεται για αυτόν τον τύπο εισαγωγής (μόνο εισαγωγή) -NoUpdateAttempt=Δεν έγινε προσπάθεια ενημέρωσης, εισάγεται μόνο -ImportDataset_user_1=Χρήστες (υπαλλήλους ή όχι) και ιδιότητες +NoUpdateAttempt=Δεν πραγματοποιήθηκε καμία προσπάθεια ενημέρωσης, μόνο εισαγωγή +ImportDataset_user_1=Χρήστες (υπάλληλοι ή όχι) και ιδιότητες ComputedField=Υπολογισμένο πεδίο ## filters SelectFilterFields=Αν θέλετε να φιλτράρετε ορισμένες τιμές, απλά εισάγετε τις τιμές εδώ. FilteredFields=Φιλτραρισμένα πεδία -FilteredFieldsValues=Αξία φίλτρου +FilteredFieldsValues=Τιμή για φίλτρο FormatControlRule=Μορφοποίηση του κανόνα ελέγχου ## imports updates KeysToUseForUpdates=Πλήκτρο (στήλη) που χρησιμοποιείται για την ενημέρωση των υφιστάμενων δεδομένων -NbInsert=Number of inserted lines: %s -NbUpdate=Number of updated lines: %s -MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s -StocksWithBatch=Αποθέματα και τοποθεσία (αποθήκη) προϊόντων με αριθμό παρτίδας/σειράς +NbInsert=Αριθμός εισαγόμενων γραμμών: %s +NbUpdate=Αριθμός ενημερωμένων γραμμών: %s +MultipleRecordFoundWithTheseFilters=Έχουν βρεθεί πολλές εγγραφές με αυτά τα φίλτρα: %s +StocksWithBatch=Αποθέματα και τοποθεσία (αποθήκη) προϊόντων με αριθμό παρτίδας/σειριακού αριθμού WarningFirstImportedLine=Οι πρώτες γραμμές δεν θα εισαχθούν με την τρέχουσα επιλογή NotUsedFields=Τα πεδία της βάσης δεδομένων που δεν χρησιμοποιούνται -SelectImportFieldsSource = Επιλέξτε τα πεδία αρχείου προέλευσης που θέλετε να εισαγάγετε και το πεδίο προορισμού τους στη βάση δεδομένων επιλέγοντας τα πεδία σε κάθε επιλεγμένο πλαίσιο ή επιλέξτε ένα προκαθορισμένο προφίλ εισαγωγής: +SelectImportFieldsSource = Επιλέξτε τα πεδία αρχείου προέλευσης που θέλετε να εισάγετε και το πεδίο προορισμού τους στη βάση δεδομένων επιλέγοντας τα πεδία σε κάθε επιλεγμένο πλαίσιο ή επιλέξτε ένα προκαθορισμένο προφίλ εισαγωγής: +MandatoryTargetFieldsNotMapped=Ορισμένα υποχρεωτικά πεδία δεν αντιστοιχίζονται +AllTargetMandatoryFieldsAreMapped=Όλα τα πεδία που χρειάζονται μια υποχρεωτική τιμή αντιστοιχίζονται +ResultOfSimulationNoError=Αποτέλεσμα προσομοίωσης: Κανένα σφάλμα diff --git a/htdocs/langs/el_GR/externalsite.lang b/htdocs/langs/el_GR/externalsite.lang deleted file mode 100644 index c456ea335ee..00000000000 --- a/htdocs/langs/el_GR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Ρύθμιση συνδέσμου σε εξωτερικό ιστότοπο -ExternalSiteURL=Διεύθυνση URL εξωτερικού ιστότοπου περιεχομένου HTML iframe -ExternalSiteModuleNotComplete=Η ενότητα Εξωτερικός Ιστότοπος δεν έχει ρυθμιστεί σωστά. -ExampleMyMenuEntry=Το μενού μου diff --git a/htdocs/langs/el_GR/ftp.lang b/htdocs/langs/el_GR/ftp.lang deleted file mode 100644 index 265c008b7e3..00000000000 --- a/htdocs/langs/el_GR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Ρύθμιση μονάδας FTP ή SFTP Client -NewFTPClient=Ρύθμιση νέας σύνδεσης FTP/FTPS -FTPArea=Περιοχή FTP/FTPS -FTPAreaDesc=Αυτή η οθόνη εμφανίζει μια προβολή ενός διακομιστή FTP και SFTP. -SetupOfFTPClientModuleNotComplete=Η εγκατάσταση της μονάδας πελάτη FTP ή SFTP φαίνεται να είναι ελλιπής -FTPFeatureNotSupportedByYourPHP=Η PHP σας δεν υποστηρίζει λειτουργίες FTP ή SFTP -FailedToConnectToFTPServer=Απέτυχε η σύνδεση με τον διακομιστή (διακομιστής %s, θύρα %s) -FailedToConnectToFTPServerWithCredentials=Απέτυχε η σύνδεση στο διακομιστή με καθορισμένη σύνδεση/κωδικό πρόσβασης -FTPFailedToRemoveFile=Αποτυχία διαγραφής αρχείου%s. -FTPFailedToRemoveDir=Αποτυχία κατάργησης του καταλόγου %s : ελέγξτε τα δικαιώματα και ότι ο κατάλογος είναι κενός. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Επιλέξτε μια τοποθεσία FTP/SFTP από το μενού... -FailedToGetFile=Αποτυχία λήψης αρχείων %s diff --git a/htdocs/langs/el_GR/holiday.lang b/htdocs/langs/el_GR/holiday.lang index 21eda65858e..63b8a5d3c3b 100644 --- a/htdocs/langs/el_GR/holiday.lang +++ b/htdocs/langs/el_GR/holiday.lang @@ -3,78 +3,78 @@ HRM=HRM Holidays=Αδεια CPTitreMenu=Αδεια MenuReportMonth=Μηνιαία αναφορά -MenuAddCP=Αίτηση νέας αποχώρησης -NotActiveModCP=Πρέπει να ενεργοποιήσετε την ενότητα "Αφήστε" για να δείτε αυτή τη σελίδα. +MenuAddCP=Νέα αίτηση άδειας +NotActiveModCP=Πρέπει να ενεργοποιήσετε την ενότητα Άδειες για να δείτε αυτήν τη σελίδα. AddCP=Κάντε αίτηση άδειας DateDebCP=Ημερ. έναρξης DateFinCP=Ημερ. τέλους -DraftCP=Σχέδιο +DraftCP=Προσχέδιο ToReviewCP=Εν αναμονή έγκρισης -ApprovedCP=Εγκεκριμένο +ApprovedCP=Εγκεκριμένη CancelCP=Ακυρώθηκε -RefuseCP=Απόρριψη +RefuseCP=Απορρίφθηκε ValidatorCP=Υπεύθυνος έγκρισης -ListeCP=Λίστα άδειας -Leave=Αφήστε το αίτημα -LeaveId=Αφήστε το αναγνωριστικό -ReviewedByCP=Θα πρέπει να επανεξεταστεί από -UserID=ταυτότητα χρήστη +ListeCP=Λίστα αδειών +Leave=Αίτημα άδειας +LeaveId=Αναγνωριστικό άδειας +ReviewedByCP=Θα εγκριθεί από +UserID=Αναγνωριστικό χρήστη UserForApprovalID=Χρήστη για αναγνωριστικό έγκρισης UserForApprovalFirstname=Όνομα του χρήστη της έγκρισης UserForApprovalLastname=Επώνυμο του χρήστη της έγκρισης UserForApprovalLogin=Σύνδεση χρήστη έγκρισης DescCP=Περιγραφή -SendRequestCP=Δημιουργήστε το αίτημα άδειας -DelayToRequestCP=Tα αιτήματα πρέπει να γίνονται τουλάχιστον %s ημέρα(ες) πριν από τις. -MenuConfCP=Ισορροπία άδειας +SendRequestCP=Δημιουργία αιτήματος άδειας +DelayToRequestCP=Τα αιτήματα αδείας πρέπει να υποβάλλονται τουλάχιστον %s ημέρα(ες) πριν από αυτές. +MenuConfCP=Υπόλοιπο άδειας SoldeCPUser=Υπόλοιπο αδείας (σε ημέρες) %s ErrorEndDateCP=Πρέπει να επιλέξετε μια ημερομηνία λήξης μεγαλύτερη από την ημερομηνία έναρξης. ErrorSQLCreateCP=Παρουσιάστηκε σφάλμα στην SQL κατά τη διάρκεια της δημιουργίας: -ErrorIDFicheCP=Παρουσιάστηκε σφάλμα, η αίτηση άδειας δεν υπάρχει. +ErrorIDFicheCP=Παρουσιάστηκε σφάλμα, το αίτημα άδειας δεν υπάρχει. ReturnCP=Επιστροφή στην προηγούμενη σελίδα -ErrorUserViewCP=Δεν έχετε άδεια για να διαβάσετε αυτή την αίτηση αδείας. +ErrorUserViewCP=Δεν είστε εξουσιοδοτημένοι να διαβάσετε αυτό το αίτημα άδειας. InfosWorkflowCP=Πληροφορίες για την ροή εργασιών RequestByCP=Ζητήθηκε από -TitreRequestCP=Αφήστε το αίτημα -TypeOfLeaveId=Είδος αναγνωριστικού άδειας -TypeOfLeaveCode=Τύπος κωδικού άδειας -TypeOfLeaveLabel=Τύπος ετικέτας άδειας +TitreRequestCP=Αίτημα άδειας +TypeOfLeaveId=Αναγνωριστικό είδους άδειας +TypeOfLeaveCode=Κωδικός είδους άδειας +TypeOfLeaveLabel=Ετικέτα είδους άδειας NbUseDaysCP=Αριθμός ημερών χρησιμοποιημένης άδειας NbUseDaysCPHelp=Ο υπολογισμός συμπεριλαμβάνει τις μη εργάσιμες ημέρες και τις αργίες που ορίζονται στο λεξικό. NbUseDaysCPShort=Ημέρες άδειας NbUseDaysCPShortInMonth=Ημέρες άδειας ανά μήνα -DayIsANonWorkingDay=%s είναι μια μη εργάσιμη μέρα +DayIsANonWorkingDay=Η %s είναι μια μη εργάσιμη μέρα DateStartInMonth=Ημερομηνία έναρξης του μήνα DateEndInMonth=Ημερομηνία λήξης μήνα EditCP=Επεξεργασία DeleteCP=Διαγραφή ActionRefuseCP=Απορρίφθηκε -ActionCancelCP=Άκυρο +ActionCancelCP=Ακύρωση StatutCP=Κατάσταση -TitleDeleteCP=Διαγράψτε την αίτηση άδειας -ConfirmDeleteCP=Επιβεβαιώστε τη διαγραφή αυτήν την αίτηση άδειας; -ErrorCantDeleteCP=Σφάλμα δεν έχετε το δικαίωμα να διαγράψει αυτό το αίτημα αδείας. -CantCreateCP=Δεν έχετε το δικαίωμα να ζητήσετε άδεια. +TitleDeleteCP=Διαγραφή αιτήματος άδειας +ConfirmDeleteCP=Επιβεβαίωση διαγραφής αυτής της αίτησης αδείας; +ErrorCantDeleteCP=Σφάλμα δεν έχετε το δικαίωμα να διαγράψετε αυτό το αίτημα άδειας. +CantCreateCP=Δεν έχετε το δικαίωμα να κάνετε αιτήματα άδειας. InvalidValidatorCP=Πρέπει να επιλέξεις τον προϊστάμενο για την αίτηση άδειας σου. NoDateDebut=Πρέπει να επιλέξετε μια ημερομηνία έναρξης. NoDateFin=Πρέπει να επιλέξετε μια ημερομηνία λήξης. ErrorDureeCP=Η αίτηση άδειας δεν περιέχει εργάσιμες ημέρες -TitleValidCP=Εγκρίνετε την αίτηση άδειας -ConfirmValidCP=Είστε βέβαιοι ότι θέλετε να εγκρίνει την αίτηση άδειας; +TitleValidCP=Εγκρίνετε το αίτημα άδειας +ConfirmValidCP=Είστε σίγουροι ότι θέλετε να εγκρίνετε το αίτημα άδειας; DateValidCP=Ημερομηνία έγκρισης -TitleToValidCP=Στείλτε αίτηση άδειας -ConfirmToValidCP=Είστε βέβαιοι ότι θέλετε να στείλετε την αίτηση άδειας; -TitleRefuseCP=Αρνηθείτε την αίτηση άδειας -ConfirmRefuseCP=Είστε βέβαιοι ότι θέλετε να απορρίψει την αίτηση άδειας; +TitleToValidCP=Αποστολή αιτήματος άδειας +ConfirmToValidCP=Είστε σίγουροι ότι θέλετε να στείλετε το αίτημα άδειας; +TitleRefuseCP=Απόρριψη αιτήματος αδείας +ConfirmRefuseCP=Είστε σίγουροι ότι θέλετε να απορρίψετε το αίτημα άδειας; NoMotifRefuseCP=Πρέπει να επιλέξετε ένα λόγο απόρριψης της αίτησης. TitleCancelCP=Ακυρώστε την αίτηση άδειας -ConfirmCancelCP=Είστε βέβαιοι ότι θέλετε να ακυρώσετε την αίτηση άδειας; +ConfirmCancelCP=Είστε σίγουροι ότι θέλετε να ακυρώσετε το αίτημα αδείας; DetailRefusCP=Λόγος για την απόρριψη -DateRefusCP=Ημερομηνία της άρνησης -DateCancelCP=Ημερομηνία της ακύρωσης +DateRefusCP=Ημερομηνία απόρριψης +DateCancelCP=Ημερομηνία ακύρωσης DefineEventUserCP=Αναθέστε μια έκτακτη άδεια για έναν χρήστη addEventToUserCP=Αφήστε την ανάθεση -NotTheAssignedApprover=Δεν είστε ο αποδέκτης +NotTheAssignedApprover=Δεν είστε ο εκχωρημένος υπεύθυνος έγκρισης MotifCP=Λόγος UserCP=Χρήστης ErrorAddEventToUserCP=Παρουσιάστηκε σφάλμα κατά την προσθήκη τις έκτακτης άδειας. @@ -88,52 +88,52 @@ NewSoldeCP=Νέο υπόλοιπο alreadyCPexist=Υπάρχει ήδη αίτηση άδειας για αυτήν τη περίοδο. FirstDayOfHoliday=Πρώτη μέρα άδειας LastDayOfHoliday=Τελευταία μέρα άδειας -BoxTitleLastLeaveRequests=Latest %s modified leave requests +BoxTitleLastLeaveRequests=Τελευταία %sτροποποιημένα αιτήματα άδειας HolidaysMonthlyUpdate=Μηνιαία ενημέρωση ManualUpdate=Χειροκίνητη ενημέρωση -HolidaysCancelation=Αφήστε το αίτημα ακύρωσης -EmployeeLastname=Employee last name -EmployeeFirstname=Employee first name -TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed -LastHolidays=Τα τελευταία %s κάνουν αιτήσεις άδειας +HolidaysCancelation=Ακύρωση αιτήματος άδειας +EmployeeLastname=Επώνυμο υπαλλήλου +EmployeeFirstname=Όνομα υπαλλήλου +TypeWasDisabledOrRemoved=Ο τύπος άδειας (id %s) απενεργοποιήθηκε ή καταργήθηκε +LastHolidays=Τα τελευταία %s αιτήματα άδειας AllHolidays=Όλα τα αιτήματα άδειας HalfDay=Μισή ημέρα -NotTheAssignedApprover=Δεν είστε ο αποδέκτης -LEAVE_PAID=Διακοπές μετ'αποδοχών +NotTheAssignedApprover=Δεν είστε ο εκχωρημένος υπεύθυνος έγκρισης +LEAVE_PAID=Διακοπές μετ'αποδοχών LEAVE_SICK=Αναρρωτική άδεια LEAVE_OTHER=Άλλη άδεια -LEAVE_PAID_FR=Διακοπές μετ'αποδοχών +LEAVE_PAID_FR=Διακοπές μετ'αποδοχών ## Configuration du Module ## -LastUpdateCP=Τελευταία αυτόματη ενημέρωση της κατανομής άδειας -MonthOfLastMonthlyUpdate=Μήνας της τελευταίας αυτόματης ενημέρωσης της κατανομής άδειας +LastUpdateCP=Τελευταία αυτόματη ενημέρωση της κατανομής αδειών +MonthOfLastMonthlyUpdate=Μήνας της τελευταίας αυτόματης ενημέρωσης της κατανομής αδειών UpdateConfCPOK=Ενημερώθηκε με επιτυχία. Module27130Name= Διαχείριση των αιτήσεων αδειών Module27130Desc= Διαχείριση των αιτήσεων αδειών ErrorMailNotSend=Παρουσιάστηκε σφάλμα κατά την αποστολή e-mail: -NoticePeriod=Notice period +NoticePeriod=Περίοδος προειδοποίησης #Messages -HolidaysToValidate=Επικύρωση των αιτήσεων για τις άδειες -HolidaysToValidateBody=Παρακάτω είναι ένα αίτημα άδειας για την επικύρωση -HolidaysToValidateDelay=Αυτή η αίτηση αδείας θα πραγματοποιηθεί εντός προθεσμίας μικρότερης των %s ημερών. +HolidaysToValidate=Επικύρωση αιτημάτων άδειας +HolidaysToValidateBody=Παρακάτω είναι ένα αίτημα άδειας προς επικύρωση +HolidaysToValidateDelay=Αυτή η αίτηση άδειας θα πραγματοποιηθεί εντός περιόδου μικρότερης των %s ημερών. HolidaysToValidateAlertSolde=Ο χρήστης που έκανε αυτήν την αίτηση άδειας δεν έχει αρκετές διαθέσιμες ημέρες. -HolidaysValidated=Επικυρώθηκαν οι αιτήσεις άδειας +HolidaysValidated=Επικυρωμένα αιτήματα άδειας HolidaysValidatedBody=Η αίτηση αδείας %s στο %s έχει επικυρωθεί. -HolidaysRefused=Αίτηση αρνήθηκε +HolidaysRefused=Το αίτημα απορρίφθηκε HolidaysRefusedBody=Το αίτημα άδειας για %s στο %s απορρίφθηκε για τον ακόλουθο λόγο: -HolidaysCanceled=Ακυρώθηκε το αίτημα αδείας +HolidaysCanceled=Ακυρωμένο αίτημα αδείας HolidaysCanceledBody=Η αίτηση αδείας σας για %s στο %s έχει ακυρωθεί. -FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. -NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter -GoIntoDictionaryHolidayTypes=Πηγαίνετε στο σπίτι - Ρύθμιση - Λεξικά - Τύπος άδειας για τη ρύθμιση των διαφορετικών τύπων φύλλων. +FollowedByACounter=1: Αυτό το είδος άδειας πρέπει να ακολουθείται από μετρητή. Ο μετρητής αυξάνεται χειροκίνητα ή αυτόματα και όταν επικυρωθεί ένα αίτημα άδειας, ο μετρητής μειώνεται.
0: Δεν ακολουθείται από μετρητή. +NoLeaveWithCounterDefined=Δεν έχουν οριστεί τύποι άδειας που πρέπει να ακολουθούνται από μετρητή +GoIntoDictionaryHolidayTypes=Πηγαίνετε στο Αρχικη - Ρυθμίσεις - Λεξικά - Τύπος άδειας για τη ρύθμιση των διαφορετικών τύπων αδειών. HolidaySetup=Ρύθμιση της ενότητας Άδειες HolidaysNumberingModules=Μοντέλα αρίθμησης για αιτήματα άδειας -TemplatePDFHolidays=Πρότυπο για αιτήσεις άδειας PDF -FreeLegalTextOnHolidays=Δωρεάν κείμενο σε μορφή PDF -WatermarkOnDraftHolidayCards=Υδατογραφήματα σε σχέδια αιτήσεων άδειας -HolidaysToApprove=Διακοπές για έγκριση +TemplatePDFHolidays=Πρότυπο PDF για αιτήματα άδειας +FreeLegalTextOnHolidays=Ελεύθερο κείμενο σε pdf +WatermarkOnDraftHolidayCards=Υδατογραφήματα σε προσχέδια αιτημάτων αδείας +HolidaysToApprove=Διακοπές προς έγκριση NobodyHasPermissionToValidateHolidays=Κανείς δεν έχει άδεια να επικυρώσει διακοπές -HolidayBalanceMonthlyUpdate=Μηνιαία ενημέρωση του ισοζυγίου των εορτών -XIsAUsualNonWorkingDay=Το %s είναι συνήθως ΜΗ εργάσιμη ημέρα +HolidayBalanceMonthlyUpdate=Μηνιαία ενημέρωση του υπολοιπου των εορτών +XIsAUsualNonWorkingDay=Η %s είναι συνήθως ΜΗ εργάσιμη ημέρα BlockHolidayIfNegative=Αποκλεισμός εάν το υπόλοιπο είναι αρνητικό LeaveRequestCreationBlockedBecauseBalanceIsNegative=Η δημιουργία αυτού του αιτήματος άδειας έχει αποκλειστεί επειδή το υπόλοιπό σας είναι αρνητικό -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Το αίτημα αδείας%s πρέπει να είναι πρόχειρο, ακυρωμένο ή απορριφθέν για να διαγράφει +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Το αίτημα αδείας%s πρέπει να είναι προσχέδιο, ακυρωμένο ή απορριφθέν για να διαγράφει diff --git a/htdocs/langs/el_GR/hrm.lang b/htdocs/langs/el_GR/hrm.lang index 4a306b45cc7..e6eb6107843 100644 --- a/htdocs/langs/el_GR/hrm.lang +++ b/htdocs/langs/el_GR/hrm.lang @@ -3,88 +3,90 @@ # Admin HRM_EMAIL_EXTERNAL_SERVICE=E-mail για αποτροπή εξωτερικών υπηρεσιών στο HRM -Establishments=Εγκαταστάσεις -Establishment=Εγκατάσταση -NewEstablishment=Νέα εγκατάσταση -DeleteEstablishment=Διαγραφή εγκατάστασης -ConfirmDeleteEstablishment= Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την σύσταση ? -OpenEtablishment=Άνοιγμα εγκατάστασης -CloseEtablishment=Κλείσιμο εγκατάστασης +Establishments=Επιχειρήσεις +Establishment=Επιχείρηση +NewEstablishment=Νέα επιχείρηση +DeleteEstablishment=Διαγραφή επιχείρησης +ConfirmDeleteEstablishment= Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την επιχείρηση ? +OpenEtablishment=Άνοιγμα επιχείρησης +CloseEtablishment=Κλείσιμο επιχείρησης # Dictionary DictionaryPublicHolidays=Άδεια - Επίσημες αργίες -DictionaryDepartment=HRM - Λίστα τμημάτων +DictionaryDepartment=HRM - Οργανωτική Μονάδα DictionaryFunction=HRM - Θέσεις εργασίας # Module -Employees=Εργαζόμενοι +Employees=Υπάλληλοι Employee=Υπάλληλος -NewEmployee=Νέος εργαζόμενος -ListOfEmployees=Λίστα εργαζομένων -HrmSetup=Ρύθμιση μονάδας HRM +NewEmployee=Νέος υπάλληλος +ListOfEmployees=Λίστα υπαλλήλων +HrmSetup=Ρύθμιση ενότητας HRM SkillsManagement=Διαχείριση δεξιοτήτων -HRM_MAXRANK=Μέγιστος αριθμός επιπέδων για την κατάταξη μιας ικανότητας +HRM_MAXRANK=Μέγιστος αριθμός επιπέδων για την κατάταξη μιας δεξιότητας HRM_DEFAULT_SKILL_DESCRIPTION=Προεπιλεγμένη περιγραφή των βαθμών όταν δημιουργείται η ικανότητα -deplacement=Μετατόπιση +deplacement=Ωράριο DateEval=Ημερομηνία αξιολόγησης -JobCard=Κάρτα εργασίας -JobPosition=Εργασία +JobCard=Καρτέλα θέσεων εργασίας +JobPosition=Θέση εργασίας JobsPosition=Θέσεις εργασίας NewSkill=Νέα Δεξιότητα SkillType=Τύπος δεξιότητας -Skilldets=Κατάλογος βαθμών για αυτήν την ικανότητα -Skilldet=Επίπεδο ικανοτήτων +Skilldets=Λίστα βαθμών για αυτήν την δεξιότητα +Skilldet=Επίπεδο δεξιοτήτων rank=Κατάταξη ErrNoSkillSelected=Δεν έχει επιλεγεί δεξιότητα -ErrSkillAlreadyAdded=Αυτή η ικανότητα βρίσκεται ήδη στη λίστα -SkillHasNoLines=Αυτή η ικανότητα δεν έχει γραμμές -skill=Επιδεξιότητα +ErrSkillAlreadyAdded=Αυτή η δεξιότητα βρίσκεται ήδη στη λίστα +SkillHasNoLines=Αυτή η δεξιότητα δεν έχει γραμμές +skill=Δεξιότητα Skills=Δεξιότητες -SkillCard=Κάρτα δεξιοτήτων -EmployeeSkillsUpdated=Οι δεξιότητες των εργαζομένων έχουν ενημερωθεί (δείτε την καρτέλα "δεξιότητες" της κάρτας υπαλλήλου) +SkillCard=Καρτέλα δεξιοτήτων +EmployeeSkillsUpdated=Οι δεξιότητες των εργαζομένων έχουν ενημερωθεί (δείτε την καρτέλα "Δεξιότητες" της καρτέλας υπαλλήλου) Eval=Αξιολόγηση Evals=Αξιολογήσεις NewEval=Νέα αξιολόγηση ValidateEvaluation=Επικύρωση αξιολόγησης -ConfirmValidateEvaluation=Είστε σιγουριοι ότι θέλετε να επικυρώσετε αυτήν την αξιολόγηση με αναφορά %s ; -EvaluationCard=Κάρτα αξιολόγησης -RequiredRank=Απαιτούμενος βαθμός για αυτή τη θέση εργασίας -EmployeeRank=Κατάταξη υπαλλήλου για αυτήν την ικανότητα +ConfirmValidateEvaluation=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την αξιολόγηση με αναφορά %s ; +EvaluationCard=Καρτέλα αξιολόγησης +RequiredRank=Απαιτούμενη κατάταξη για αυτή τη θέση εργασίας +EmployeeRank=Κατάταξη υπαλλήλου για αυτήν την δεξιότητα EmployeePosition=Θέση υπαλλήλου EmployeePositions=Θέσεις υπαλλήλων EmployeesInThisPosition=Υπάλληλοι σε αυτή τη θέση group1ToCompare=Ομάδα χρηστών για ανάλυση group2ToCompare=Δεύτερη ομάδα χρηστών για σύγκριση -OrJobToCompare=Συγκρίνετε με τις απαιτήσεις εργασιακών δεξιοτήτων +OrJobToCompare=Σύγκριση βάση των απαραίτητων εργασιακών δεξιοτήτων difference=Διαφορά CompetenceAcquiredByOneOrMore=Ικανότητα που αποκτήθηκε από έναν ή περισσότερους χρήστες αλλά δεν ζητήθηκε από τον δεύτερο αξιολογητή -MaxlevelGreaterThan=Μέγιστο επίπεδο μεγαλύτερο από αυτό που ζητήθηκε +MaxlevelGreaterThan=Μέγιστο επίπεδο μεγαλύτερο από το ζητούμενο MaxLevelEqualTo=Μέγιστο επίπεδο ίσο με το ζητούμενο -MaxLevelLowerThan=Μέγιστο επίπεδο χαμηλότερο από αυτό της ζήτησης -MaxlevelGreaterThanShort=Επίπεδο εργαζομένου μεγαλύτερο από αυτό που ζητήθηκε -MaxLevelEqualToShort=Το επίπεδο των εργαζομένων είναι το ζήτουμενο -MaxLevelLowerThanShort=Το επίπεδο των εργαζομένων είναι χαμηλότερο από αυτή τη ζήτηση -SkillNotAcquired=Ικανότητα που δεν αποκτήθηκε από όλους τους χρήστες και ζητήθηκε από τον δεύτερο συγκριτή +MaxLevelLowerThan=Μέγιστο επίπεδο χαμηλότερο από το ζητούμενο +MaxlevelGreaterThanShort=Το επίπεδο του εργαζομένου είναι μεγαλύτερο από το ζητούμενο +MaxLevelEqualToShort=Το επίπεδο του εργαζομένου είναι ίσο με το ζητούμενο +MaxLevelLowerThanShort=Το επίπεδο του εργαζομένου είναι χαμηλότερο από το ζητούμενο +SkillNotAcquired=Ικανότητα που δεν αποκτήθηκε από όλους τους χρήστες και ζητήθηκε από τον δεύτερο αξιολογητή legend=Ετικέτα TypeSkill=Τύπος δεξιότητας -AddSkill=Προσθέστε δεξιότητες στην εργασία -RequiredSkills=Απαραίτητα προσόντα για αυτή τη δουλειά +AddSkill=Προσθέστε δεξιότητες στην θέση εργασίας +RequiredSkills=Απαιτούμενες δεξιότητες για αυτή τη θέση εργασίας UserRank=Κατάταξη χρήστη SkillList=Λίστα δεξιοτήτων SaveRank=Αποθήκευση κατάταξης -knowHow=Τεχνογνωσία -HowToBe=Πώς να είσαι -knowledge=Γνώση +TypeKnowHow=Τεχνογνωσία +TypeHowToBe=Περιγραφή +TypeKnowledge=Γνώσεις AbandonmentComment=Σχόλιο εγκατάλειψης DateLastEval=Ημερομηνία τελευταίας αξιολόγησης NoEval=Δεν έγινε αξιολόγηση για αυτόν τον υπάλληλο HowManyUserWithThisMaxNote=Αριθμός χρηστών με αυτήν την κατάταξη HighestRank=Ανώτατη κατάταξη SkillComparison=Σύγκριση δεξιοτήτων -ActionsOnJob=Εκδηλώσεις σε αυτή τη δουλειά +ActionsOnJob=Ενέργειες σε αυτή τη θέση εργασίας VacantPosition=κενές θέσεις εργασίας VacantCheckboxHelper=Επιλέγοντας αυτήν την επιλογή θα εμφανιστούν μη καλυμμένες θέσεις (κενή θέση εργασίας) SaveAddSkill = Προσθήκη δεξιότητας(ων) SaveLevelSkill = Το επίπεδο δεξιοτήτων αποθηκεύτηκε DeleteSkill = Η δεξιότητα αφαιρέθηκε -SkillsExtraFields=Συμπληρωματικά χαρακτηριστικά (Ικανότητες) -JobsExtraFields=Συμπληρωματικά χαρακτηριστικά (Emplois) +SkillsExtraFields=Συμπληρωματικά χαρακτηριστικά (Δεξιότητες) +JobsExtraFields=Συμπληρωματικά χαρακτηριστικά (Υπάλληλοι) EvaluationsExtraFields=Συμπληρωματικά χαρακτηριστικά (Αξιολογήσεις) +NeedBusinessTravels=Ανάγκη επαγγελματικών ταξιδιών +NoDescription=Χωρίς περιγραφή diff --git a/htdocs/langs/el_GR/install.lang b/htdocs/langs/el_GR/install.lang index ef2b799bb34..4e1ea55486c 100644 --- a/htdocs/langs/el_GR/install.lang +++ b/htdocs/langs/el_GR/install.lang @@ -4,31 +4,32 @@ MiscellaneousChecks=Ελέγχος Προαπαιτούμενων ConfFileExists=Το αρχείο ρυθμίσεων %s υπάρχει. ConfFileDoesNotExistsAndCouldNotBeCreated=Το αρχείο διαμόρφωσης %s δεν υπάρχει και δεν μπορεί να δημιουργηθεί! ConfFileCouldBeCreated=Το αρχείο ρυθμίσεων %sθα μπορούσε να δημιουργηθεί. -ConfFileIsNotWritable=Το αρχείο διαμόρφωσης %s δεν είναι εγγράψιμο. Ελέγξτε τα δικαιώματα. Για πρώτη εγκατάσταση, ο διακομιστής ιστού σας πρέπει να μπορεί να γράφει σε αυτό το αρχείο κατά τη διάρκεια της διαδικασίας διαμόρφωσης ("chmod 666" για παράδειγμα σε λειτουργικό σύστημα Unix). +ConfFileIsNotWritable=Το αρχείο διαμόρφωσης %s δεν είναι εγγράψιμο. Ελέγξτε τα δικαιώματα. Για πρώτη εγκατάσταση, ο διακομιστής ιστού σας πρέπει να μπορεί να γράφει σε αυτό το αρχείο κατά τη διάρκεια της διαδικασίας διαμόρφωσης ("chmod 666" για παράδειγμα σε λειτουργικό σύστημα Unix). ConfFileIsWritable=Το αρχείο ρυθμίσεων %s είναι εγγράψιμο. ConfFileMustBeAFileNotADir=Το αρχείο διαμόρφωσης %s πρέπει να είναι ένα αρχείο, όχι ένας κατάλογος. -ConfFileReload=Επαναφόρτωση παραμέτρων από αρχείο ρυθμίσεων. -NoReadableConfFileSoStartInstall=Το αρχείο διαμόρφωσης conf/conf.php δεν υπάρχει ή δεν μπορεί να αναγνώσιμο. Θα εκτελέσουμε τη διαδικασία εγκατάστασης για να προσπαθήσουμε να την αρχικοποιήσουμε. +ConfFileReload=Επαναφόρτωση παραμέτρων από το αρχείο διαμόρφωσης. +NoReadableConfFileSoStartInstall=Το αρχείο διαμόρφωσης conf/conf.php δεν υπάρχει ή δεν είναι αναγνώσιμο. Θα εκτελέσουμε τη διαδικασία εγκατάστασης για να προσπαθήσουμε να το αρχικοποιήσουμε. PHPSupportPOSTGETOk=Η PHP υποστηρίζει μεταβλητές POST και GET. PHPSupportPOSTGETKo=Είναι πιθανό η ρύθμισή σας PHP να μην υποστηρίζει τις μεταβλητές POST ή / και GET. Ελέγξτε την παράμετρο variables_order στο php.ini. PHPSupportSessions=Η PHP υποστηρίζει συνεδρίες. -PHPSupport=Η PHP υποστηρίζει %s λειτουργίες . -PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. -PHPMemoryTooLow=Η μνήμη συνεδρίας PHP max έχει οριστεί σε %s bytes. Αυτό είναι πολύ χαμηλό. Αλλάξτε το php.ini για να ρυθμίσετε την παράμετρο memory_limit σε τουλάχιστον bytes %s . -Recheck=Κάντε κλικ εδώ για μια λεπτομερέστερη δοκιμή -ErrorPHPDoesNotSupportSessions=Η εγκατάσταση της PHP δεν υποστηρίζει περιόδους σύνδεσης. Αυτή η λειτουργία απαιτείται για να μπορέσει ο Dolibarr να λειτουργήσει. Ελέγξτε τη ρύθμιση PHP και τις άδειες χρήσης του καταλόγου των περιόδων σύνδεσης. +PHPSupport=Η PHP υποστηρίζει %s functions . +PHPMemoryOK=Η μέγιστη μνήμη λειτουργίας περιόδου PHP έχει οριστεί σε %s . Αυτό θα πρέπει να είναι αρκετό. +PHPMemoryTooLow=Η μέγιστη μνήμη λειτουργίας περιόδου PHP έχει οριστεί σε %s bytes. Αυτό είναι πολύ χαμηλό. Αλλάξτε το php.ini για να ρυθμίσετε την παράμετρο memory_limit σε τουλάχιστον %s bytes . +Recheck=Κάντε κλικ εδώ για μια πιο λεπτομερή δοκιμή +ErrorPHPDoesNotSupportSessions=Η εγκατάσταση της PHP δεν υποστηρίζει περιόδους σύνδεσης. Αυτή η λειτουργία απαιτείται για να μπορέσει το Dolibarr να λειτουργήσει. Ελέγξτε τη ρύθμιση PHP και τις άδειες χρήσης του καταλόγου των περιόδων σύνδεσης. ErrorPHPDoesNotSupport=Η εγκατάσταση της PHP σας δεν υποστηρίζει %s λειτουργίες . -ErrorDirDoesNotExists=Κατάλογος %s δεν υπάρχει. +ErrorDirDoesNotExists=Ο κατάλογος %s δεν υπάρχει. ErrorGoBackAndCorrectParameters=Επιστρέψτε και ελέγξτε / διορθώστε τις παραμέτρους. -ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. -ErrorFailedToCreateDatabase=Απέτυχε η δημιουργία της βάσης δεδομένων '%s'. -ErrorFailedToConnectToDatabase=Απέτυχε η σύνδεση με τη βάση δεδομένων '%s'. -ErrorDatabaseVersionTooLow=Η έκδοση της βάσης δεδομένων (%s), είναι πολύ παλιά. %s Έκδοση ή μεγαλύτερη απαιτείται. -ErrorPHPVersionTooLow=Έκδοση της PHP είναι πολύ παλιά. Έκδοση %s απαιτείται -ErrorConnectedButDatabaseNotFound=Η σύνδεση με το διακομιστή ήταν επιτυχής αλλά η βάση δεδομένων '%s' δεν βρέθηκε. +ErrorWrongValueForParameter=Μπορεί να έχετε πληκτρολογήσει λάθος τιμή για την παράμετρο '%s'. +ErrorFailedToCreateDatabase=Αποτυχία δημιουργίας βάσης δεδομένων "%s". +ErrorFailedToConnectToDatabase=Αποτυχία σύνδεσης στη βάση δεδομένων '%s'. +ErrorDatabaseVersionTooLow=Η έκδοση της βάσης δεδομένων (%s), είναι πολύ παλιά. Έκδοση %sή μεγαλύτερη απαιτείται. +ErrorPHPVersionTooLow=Η έκδοση PHP είναι πολύ παλιά. Απαιτείται η έκδοση %s ή μεταγενέστερη. +ErrorPHPVersionTooHigh=Η έκδοση PHP είναι πολύ νέα. Απαιτείται η έκδοση %s ή παλαιοτερη +ErrorConnectedButDatabaseNotFound=Η σύνδεση με τον διακομιστή ήταν επιτυχής, αλλά η βάση δεδομένων '%s' δεν βρέθηκε. ErrorDatabaseAlreadyExists=Η βάση δεδομένων '%s' υπάρχει ήδη. -IfDatabaseNotExistsGoBackAndUncheckCreate=Εάν η βάση δεδομένων δεν υπάρχει, επιστρέψτε και ελέγξτε την επιλογή "Δημιουργία βάσης δεδομένων". -IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +IfDatabaseNotExistsGoBackAndUncheckCreate=Εάν η βάση δεδομένων δεν υπάρχει, επιστρέψτε και ελέγξτε την επιλογή "Δημιουργία βάσης δεδομένων". +IfDatabaseExistsGoBackAndCheckCreate=Εάν υπάρχει ήδη βάση δεδομένων, επιστρέψτε και καταργήστε την επιλογή "Δημιουργία βάσης δεδομένων". WarningBrowserTooOld=Η έκδοση του προγράμματος περιήγησης είναι πολύ παλιά. Η αναβάθμιση του προγράμματος περιήγησης σε μια πρόσφατη έκδοση των Firefox, Chrome ή Opera συνιστάται ιδιαίτερα. PHPVersion=Έκδοση PHP License=Χρήση άδειας @@ -37,177 +38,177 @@ WebPagesDirectory=Κατάλογος όπου αποθηκεύονται οι σ DocumentsDirectory=Ο κατάλογος για την αποθήκευση φορτώθηκε και τα έγγραφα που δημιουργήθηκαν URLRoot=URL Root ForceHttps=Εξαναγκασμός για ασφαλείς συνδέσεις (https) -CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +CheckToForceHttps=Επιλέξτε αυτήν την επιλογή για να επιβάλετε ασφαλείς συνδέσεις (https).
Αυτό απαιτεί ο διακομιστής web να έχει ρυθμιστεί με πιστοποιητικό SSL. DolibarrDatabase=Dolibarr βάση δεδομένων DatabaseType=Τύπος βάσης δεδομένων DriverType=Τύπος Driver Server=Server -ServerAddressDescription=Όνομα ή διεύθυνση IP για το διακομιστή βάσης δεδομένων. Συνήθως 'localhost' όταν ο διακομιστής βάσης δεδομένων φιλοξενείται στον ίδιο διακομιστή με τον εξυπηρετητή ιστού. +ServerAddressDescription=Όνομα ή διεύθυνση IP για το διακομιστή βάσης δεδομένων. Συνήθως "localhost" όταν ο διακομιστής της βάσης δεδομένων φιλοξενείται στον ίδιο διακομιστή με τον διακομιστή web. ServerPortDescription=Θύρα του διακομιστή βάσης δεδομένων. Αφήστε το πεδίο κενό αν δεν το γνωρίζετε. DatabaseServer=Server της βάσης δεδομένων DatabaseName=Όνομα της βάσης δεδομένων DatabasePrefix=Πρόθεμα πίνακα βάσεων δεδομένων -DatabasePrefixDescription=Πρόθεμα πίνακα βάσεων δεδομένων. Εάν είναι κενή, η προεπιλεγμένη τιμή είναι llx_. +DatabasePrefixDescription=Πρόθεμα πίνακα βάσης δεδομένων. Εάν είναι κενό, η προεπιλογή είναι llx_. AdminLogin=Λογαριασμός χρήστη για τον κάτοχο της βάσης δεδομένων Dolibarr. -PasswordAgain=Επαναφέρετε την επιβεβαίωση κωδικού πρόσβασης +PasswordAgain=Πληκτρολογήστε ξανά την επιβεβαίωση κωδικού πρόσβασης AdminPassword=Κωδικός ιδιοκτήτη της βάσης δεδομένων Dolibarr. CreateDatabase=Δημιουργία βάσης δεδομένων -CreateUser=Δημιουργήστε λογαριασμό χρήστη ή χορηγήστε δικαιώματα λογαριασμού χρήστη στη βάση δεδομένων Dolibarr -DatabaseSuperUserAccess=Database server - Superuser access +CreateUser=Δημιουργήστε λογαριασμό χρήστη ή παραχωρήστε άδεια λογαριασμού χρήστη στη βάση δεδομένων Dolibarr +DatabaseSuperUserAccess=Διακομιστής βάσης δεδομένων - Πρόσβαση υπερχρήστη CheckToCreateDatabase=Επιλέξτε το πλαίσιο εάν η βάση δεδομένων δεν υπάρχει ακόμα και πρέπει να δημιουργηθεί.
Σε αυτή την περίπτωση, πρέπει επίσης να συμπληρώσετε το όνομα χρήστη και τον κωδικό πρόσβασης για το λογαριασμό superuser στο κάτω μέρος αυτής της σελίδας. -CheckToCreateUser=Επιλέξτε το πλαίσιο εάν:
ο λογαριασμός χρήστη βάσης δεδομένων δεν υπάρχει ακόμα και πρέπει να δημιουργηθεί ή
εάν ο λογαριασμός χρήστη υπάρχει αλλά η βάση δεδομένων δεν υπάρχει και τα δικαιώματα πρέπει να παραχωρηθούν.
Σε αυτή την περίπτωση, πρέπει να εισαγάγετε το λογαριασμό χρήστη και τον κωδικό πρόσβασης καθώς και το όνομα και τον κωδικό πρόσβασης του υπερ-χρηστών στο κάτω μέρος αυτής της σελίδας. Εάν δεν έχει επιλεγεί αυτό το πλαίσιο, ο κάτοχος της βάσης δεδομένων και ο κωδικός πρόσβασης πρέπει να υπάρχουν ήδη. -DatabaseRootLoginDescription=Superuser όνομα λογαριασμού (για τη δημιουργία νέων βάσεων δεδομένων ή νέων χρηστών), υποχρεωτική εάν η βάση δεδομένων ή ο ιδιοκτήτης της δεν υπάρχει ήδη. -KeepEmptyIfNoPassword=Αφήστε κενό εάν ο υπερ-χρήστης δεν έχει κωδικό πρόσβασης (ΔΕΝ συνιστάται) +CheckToCreateUser=Επιλέξτε το πλαίσιο εάν:
ο λογαριασμός χρήστη της βάσης δεδομένων δεν υπάρχει ακόμη και γι' αυτό πρέπει να δημιουργηθεί ή
εάν ο λογαριασμός χρήστη υπάρχει αλλά η βάση δεδομένων δεν υπάρχει και πρέπει να παραχωρηθούν δικαιώματα.
Σε αυτήν την περίπτωση, πρέπει να εισαγάγετε τον λογαριασμό χρήστη και τον κωδικό πρόσβασης και επίσης το όνομα και τον κωδικό πρόσβασης του λογαριασμού υπερχρήστη στο κάτω μέρος αυτής της σελίδας. Εάν αυτό το πλαίσιο δεν είναι επιλεγμένο, ο κάτοχος της βάσης δεδομένων και ο κωδικός πρόσβασης πρέπει να υπάρχουν ήδη. +DatabaseRootLoginDescription=Όνομα λογαριασμού υπερχρήστη (για τη δημιουργία νέων βάσεων δεδομένων ή νέων χρηστών), υποχρεωτικό εάν η βάση δεδομένων ή ο κάτοχός της δεν υπάρχει ήδη. +KeepEmptyIfNoPassword=Αφήστε κενό εάν ο υπερχρήστης δεν έχει κωδικό πρόσβασης (ΔΕΝ συνιστάται) SaveConfigurationFile=Αποθήκευση παραμέτρων σε ServerConnection=Σύνδεση με το διακομιστή DatabaseCreation=Δημιουργία βάσης δεδομένων -CreateDatabaseObjects=Database objects creation +CreateDatabaseObjects=Δημιουργία αντικειμένων βάσης δεδομένων ReferenceDataLoading=Reference data loading -TablesAndPrimaryKeysCreation=Tables and Primary keys creation -CreateTableAndPrimaryKey=Create table %s -CreateOtherKeysForTable=Create foreign keys and indexes for table %s -OtherKeysCreation=Foreign keys and indexes creation -FunctionsCreation=Functions creation -AdminAccountCreation=Administrator login creation +TablesAndPrimaryKeysCreation=Δημιουργία πινάκων και πρωτευόντων κλειδιών +CreateTableAndPrimaryKey=Δημιουργία πίνακα %s +CreateOtherKeysForTable=Δημιουργήστε ξένα κλειδιά και ευρετήρια για τον πίνακα %s +OtherKeysCreation=Δημιουργία ξένων κλειδιών και ευρετηρίων +FunctionsCreation=Δημιουργία Functions +AdminAccountCreation=Δημιουργία σύνδεσης διαχειριστή PleaseTypePassword=Πληκτρολογήστε έναν κωδικό πρόσβασης, οι άδειοι κωδικοί πρόσβασης δεν επιτρέπονται! -PleaseTypeALogin=Πληκτρολογήστε μια σύνδεση! +PleaseTypeALogin=Παρακαλώ πληκτρολογήστε το όνομα χρήστη! PasswordsMismatch=Οι κωδικοί πρόσβασης διαφέρουν, δοκιμάστε ξανά! -SetupEnd=End of setup -SystemIsInstalled=This installation is complete. -SystemIsUpgraded=Dolibarr has been upgraded successfully. -YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: -AdminLoginCreatedSuccessfuly=Επιτυχής δημουργία σύνδεσης του διαχειριστή '%s' στο Dolibarr -GoToDolibarr=Go to Dolibarr -GoToSetupArea=Go to Dolibarr (setup area) +SetupEnd=Τέλος εγκατάστασης +SystemIsInstalled=Αυτή η εγκατάσταση έχει ολοκληρωθεί. +SystemIsUpgraded=Το Dolibarr αναβαθμίστηκε με επιτυχία. +YouNeedToPersonalizeSetup=Πρέπει να διαμορφώσετε το Dolibarr ώστε να ταιριάζει στις ανάγκες σας (εμφάνιση, χαρακτηριστικά, ...). Για να το κάνετε αυτό, ακολουθήστε τον παρακάτω σύνδεσμο: +AdminLoginCreatedSuccessfuly=Το όνομα χρήστη διαχειριστή '%s' του Dolibarr δημιουργήθηκε επιτυχώς +GoToDolibarr=Μετάβαση στο Dolibarr +GoToSetupArea=Μετάβαση στο Dolibarr (Τομέα ρυθμίσεων) MigrationNotFinished=Η έκδοση της βάσης δεδομένων δεν είναι εντελώς ενημερωμένη: εκτελέστε ξανά τη διαδικασία αναβάθμισης. -GoToUpgradePage=Go to upgrade page again -WithNoSlashAtTheEnd=Without the slash "/" at the end -DirectoryRecommendation= ΣΗΜΑΝΤΙΚΟ : Πρέπει να χρησιμοποιήσετε έναν κατάλογο ο οποίος βρίσκεται εκτός των ιστοσελίδων (οπότε μην χρησιμοποιείτε υποκατάλογο προηγούμενης παραμέτρου). -LoginAlreadyExists=Already exists -DolibarrAdminLogin=Dolibarr admin login -AdminLoginAlreadyExists=Ο λογαριασμός διαχειριστή Dolibarr ' %s ' υπάρχει ήδη. Επιστρέψτε αν θέλετε να δημιουργήσετε ένα άλλο. +GoToUpgradePage=Μετάβαση ξανά στη σελίδα αναβάθμισης +WithNoSlashAtTheEnd=Χωρίς την κάθετο "/" στο τέλος +DirectoryRecommendation= ΣΗΜΑΝΤΙΚΟ : Πρέπει να χρησιμοποιήσετε έναν κατάλογο ο οποίος βρίσκεται εκτός των ιστοσελίδων (οπότε μην χρησιμοποιείτε υποκατάλογο της προηγούμενης παραμέτρου). +LoginAlreadyExists=Υπάρχει ήδη +DolibarrAdminLogin=Όνομα χρήστη διαχειριστή Dolibarr +AdminLoginAlreadyExists=Ο λογαριασμός διαχειριστή Dolibarr " %s " υπάρχει ήδη. Επιστρέψτε αν θέλετε να δημιουργήσετε ένα άλλο. FailedToCreateAdminLogin=Αποτυχία δημιουργίας λογαριασμού διαχειριστή του Dolibarr. -WarningRemoveInstallDir=Προειδοποίηση, για λόγους ασφαλείας, μόλις ολοκληρωθεί η εγκατάσταση ή η αναβάθμιση, πρέπει να προσθέσετε ένα αρχείο που καλείται install.lock στον κατάλογο εγγράφων Dolibarr, προκειμένου να αποφευχθεί ξανά η τυχαία / κακόβουλη χρήση των εργαλείων εγκατάστασης. -FunctionNotAvailableInThisPHP=Δεν είναι διαθέσιμο σε αυτήν την PHP -ChoosedMigrateScript=Choose migration script +WarningRemoveInstallDir=Προειδοποίηση, για λόγους ασφαλείας, μόλις ολοκληρωθεί η εγκατάσταση ή η αναβάθμιση, θα πρέπει να προσθέσετε ένα αρχείο που ονομάζεται install.lock στον κατάλογο εγγράφων του Dolibarr, προκειμένου να αποτραπεί ξανά η τυχαία/κακόβουλη χρήση των εργαλείων εγκατάστασης. +FunctionNotAvailableInThisPHP=Δεν είναι διαθέσιμη σε αυτήν την PHP +ChoosedMigrateScript=Επιλέξτε script μετεγκατάστασης DataMigration=Μετακίνηση βάσης δεδομένων (δεδομένα) DatabaseMigration=Μετακίνηση βάσης δεδομένων (δομή + μερικά δεδομένα) ProcessMigrateScript=Script processing -ChooseYourSetupMode=Choose your setup mode and click "Start"... -FreshInstall=Fresh install -FreshInstallDesc=Χρησιμοποιήστε αυτήν τη λειτουργία, εάν αυτή είναι η πρώτη σας εγκατάσταση. Εάν όχι, αυτή η λειτουργία μπορεί να επιδιορθώσει μια μη ολοκληρωμένη προηγούμενη εγκατάσταση. Εάν θέλετε να αναβαθμίσετε την έκδοση σας, επιλέξτε τη λειτουργία "Αναβάθμιση". -Upgrade=Upgrade -UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. -Start=Start -InstallNotAllowed=Setup not allowed by conf.php permissions -YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. -CorrectProblemAndReloadPage=Διορθώστε το πρόβλημα και πατήστε F5 για να φορτώσετε ξανά τη σελίδα. -AlreadyDone=Already migrated -DatabaseVersion=Database version -ServerVersion=Database server version -YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +ChooseYourSetupMode=Επιλέξτε τη λειτουργία ρύθμισης και κάντε κλικ στο "Έναρξη"... +FreshInstall=Νέα εγκατάσταση +FreshInstallDesc=Χρησιμοποιήστε αυτήν τη λειτουργία εάν αυτή είναι η πρώτη σας εγκατάσταση. Εάν όχι, αυτή η λειτουργία μπορεί να επιδιορθώσει μια ημιτελή προηγούμενη εγκατάσταση. Εάν θέλετε να αναβαθμίσετε την έκδοσή σας, επιλέξτε τη λειτουργία "Αναβάθμιση". +Upgrade=Αναβάθμιση +UpgradeDesc=Χρησιμοποιήστε αυτήν τη λειτουργία εάν έχετε αντικαταστήσει παλιά αρχεία Dolibarr με αρχεία νεότερης έκδοσης. Αυτό θα αναβαθμίσει τη βάση δεδομένων και τα δεδομένα σας. +Start=Έναρξη +InstallNotAllowed=Η ρύθμιση δεν επιτρέπεται από τα δικαιώματα του conf.php +YouMustCreateWithPermission=Πρέπει να δημιουργήσετε το αρχείο %s και να ορίσετε δικαιώματα εγγραφής σε αυτό για τον διακομιστή web κατά τη διαδικασία εγκατάστασης. +CorrectProblemAndReloadPage=Παρακαλώ διορθώστε το πρόβλημα και πατήστε F5 για να φορτώσετε ξανά τη σελίδα. +AlreadyDone=Η μετεγκατάσταση έχει ολοκληρωθεί +DatabaseVersion=Έκδοση βάσης δεδομένων +ServerVersion=Έκδοση διακομιστή βάσης δεδομένων +YouMustCreateItAndAllowServerToWrite=Πρέπει να δημιουργήσετε αυτόν τον κατάλογο και να επιτρέψετε στον διακομιστή web να εγγράψει σε αυτόν. DBSortingCollation=Character sorting order -YouAskDatabaseCreationSoDolibarrNeedToConnect=Έχετε επιλέξει τη δημιουργία βάσης δεδομένων %s , αλλά για αυτό, ο Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα χρήστη super %s . -YouAskLoginCreationSoDolibarrNeedToConnect=Επιλέξατε να δημιουργήσετε τον χρήστη βάσης δεδομένων %s , αλλά για αυτό, ο Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα χρήστη super %s . -BecauseConnectionFailedParametersMayBeWrong=Η σύνδεση βάσης δεδομένων απέτυχε: οι παραμέτρους κεντρικού υπολογιστή ή υπερ-χρήστης πρέπει να είναι λάθος. -OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s -RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. -FieldRenamed=Field renamed -IfLoginDoesNotExistsCheckCreateUser=Εάν ο χρήστης δεν υπάρχει ακόμα, πρέπει να επιλέξετε την επιλογή "Δημιουργία χρήστη" -ErrorConnection=Server " %s ", όνομα βάσης δεδομένων " %s ", σύνδεση " %s " ή κωδικός πρόσβασης στη βάση δεδομένων μπορεί να είναι λάθος ή η έκδοση του προγράμματος-πελάτη PHP μπορεί να είναι πολύ παλιά σε σύγκριση με την έκδοση της βάσης δεδομένων. -InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s -InstallChoiceSuggested=Install choice suggested by installer. -MigrateIsDoneStepByStep=Η στοχευμένη έκδοση (%s) έχει ένα κενό από διάφορες εκδόσεις. Ο οδηγός εγκατάστασης θα επανέλθει για να υποδείξει μια περαιτέρω μετανάστευση μόλις αυτό ολοκληρωθεί. -CheckThatDatabasenameIsCorrect=Βεβαιωθείτε ότι το όνομα της βάσης δεδομένων " %s " είναι σωστό. -IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". -OpenBaseDir=PHP openbasedir parameter -YouAskToCreateDatabaseSoRootRequired=Ελέγξατε το πλαίσιο "Δημιουργία βάσης δεδομένων". Για το σκοπό αυτό, πρέπει να δώσετε τον κωδικό πρόσβασης / κωδικό πρόσβασης του χρήστη superuser (στο κάτω μέρος της φόρμας). -YouAskToCreateDatabaseUserSoRootRequired=Ελέγξατε το πλαίσιο "Δημιουργία κατόχου βάσης δεδομένων". Για το σκοπό αυτό, πρέπει να δώσετε τον κωδικό πρόσβασης / κωδικό πρόσβασης του χρήστη superuser (στο κάτω μέρος της φόρμας). -NextStepMightLastALongTime=Το τρέχον βήμα μπορεί να διαρκέσει αρκετά λεπτά. Περιμένετε έως ότου εμφανιστεί η επόμενη οθόνη εντελώς πριν συνεχίσετε. +YouAskDatabaseCreationSoDolibarrNeedToConnect=Έχετε επιλέξει τη δημιουργία βάσης δεδομένων %s , αλλά για αυτό, το Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα υπερχρήστη %s . +YouAskLoginCreationSoDolibarrNeedToConnect=Επιλέξατε να δημιουργήσετε τον χρήστη βάσης δεδομένων %s , αλλά για αυτό, το Dolibarr πρέπει να συνδεθεί με τον διακομιστή %s με δικαιώματα υπερχρήστη%s . +BecauseConnectionFailedParametersMayBeWrong=Η σύνδεση της βάσης δεδομένων απέτυχε: οι παράμετροι κεντρικού υπολογιστή ή υπερχρήστη πρέπει να είναι λανθασμένες. +OrphelinsPaymentsDetectedByMethod=Εντοπίστηκαν ασύνδετες πληρωμές με τη μέθοδο %s +RemoveItManuallyAndPressF5ToContinue=Αφαιρέστε το χειροκίνητα και πατήστε F5 για να συνεχίσετε. +FieldRenamed=Το πεδίο μετονομάστηκε +IfLoginDoesNotExistsCheckCreateUser=Εάν ο χρήστης δεν υπάρχει ακόμα, πρέπει να ελέγξετε την επιλογή "Δημιουργία χρήστη" +ErrorConnection=Ο διακομιστής " %s ", Το όνομα βάσης δεδομένων " %s ",το όνομα χρήστη " %s ", ή ο κωδικός πρόσβασης της βάσης δεδομένων μπορεί να ειναι λανθασμένα ή έκδοση της PHP μπορεί να ειναι αρκετά παλιά σε σχέση με την έκδοση της βάσης δεδομένων. +InstallChoiceRecommanded=Συνιστώμενη επιλογή για εγκατάσταση της έκδοσης %s από την τρέχουσα έκδοση %s +InstallChoiceSuggested= Προτεινόμενη επιλογή εγκατάστασης . +MigrateIsDoneStepByStep=Η στοχευμένη έκδοση (%s) έχει ένα κενό πολλών εκδόσεων. Ο οδηγός εγκατάστασης θα προτείνει μια περαιτέρω μετεγκατάσταση μόλις ολοκληρωθεί αυτή. +CheckThatDatabasenameIsCorrect=Ελέγξτε ότι το όνομα της βάσης δεδομένων " %s " είναι σωστό. +IfAlreadyExistsCheckOption=Εάν αυτό το όνομα είναι σωστό και αυτή η βάση δεδομένων δεν υπάρχει ακόμα, πρέπει να ελέγξετε την επιλογή "Δημιουργία βάσης δεδομένων". +OpenBaseDir=Παράμετρος openbasedir PHP +YouAskToCreateDatabaseSoRootRequired=Επιλέξατε το πλαίσιο "Δημιουργία βάσης δεδομένων". Για αυτό, πρέπει να δώσετε το όνομα χρήστη/κωδικό πρόσβασης του υπερχρήστη (κάτω μέρος της φόρμας). +YouAskToCreateDatabaseUserSoRootRequired=Επιλέξατε το πλαίσιο "Δημιουργία κατόχου βάσης δεδομένων". Για αυτό, πρέπει να δώσετε το όνομα χρήστη/κωδικό πρόσβασης του υπερχρήστη (κάτω μέρος της φόρμας). +NextStepMightLastALongTime=Το τρέχον βήμα μπορεί να διαρκέσει αρκετά λεπτά. Περιμένετε μέχρι να εμφανιστεί πλήρως η επόμενη οθόνη πριν συνεχίσετε. MigrationCustomerOrderShipping=Μετεγκατάσταση της αποστολής για αποθήκευση παραγγελιών πωλήσεων MigrationShippingDelivery=Upgrade storage of shipping MigrationShippingDelivery2=Upgrade storage of shipping 2 -MigrationFinished=Μετανάστευση τελειώσει -LastStepDesc=Τελευταίο βήμα : Καθορίστε εδώ τα στοιχεία σύνδεσης και τον κωδικό πρόσβασης που θέλετε να χρησιμοποιήσετε για να συνδεθείτε στο Dolibarr. Μην χάσετε αυτό, καθώς είναι ο κύριος λογαριασμός για τη διαχείριση όλων των άλλων / πρόσθετων λογαριασμών χρηστών. -ActivateModule=Ενεργοποίηση %s ενότητα +MigrationFinished=Η μετεγκατάσταση ολοκληρώθηκε +LastStepDesc= Τελευταίο βήμα : Ορίστε εδώ το όνομα χρήστη και τον κωδικό πρόσβασης που θέλετε να χρησιμοποιήσετε για να συνδεθείτε στο Dolibarr. Μην το χάσετε, καθώς είναι ο κύριος λογαριασμός για τη διαχείριση όλων των άλλων/πρόσθετων λογαριασμών χρηστών. +ActivateModule=Ενεργοποίηση ενότητας %s ShowEditTechnicalParameters=Κάντε κλικ εδώ για να δείτε/επεξεργαστείτε προηγμένες παραμέτρους (κατάσταση έμπειρου χρήστη) -WarningUpgrade=Προειδοποίηση: Πραγματοποιήσατε πρώτα ένα backup της βάσης δεδομένων; Αυτό συνιστάται ιδιαίτερα. Η απώλεια δεδομένων (εξαιτίας, για παράδειγμα, σφαλμάτων στο mysql έκδοση 5.5.40 / 41/42/43) μπορεί να είναι δυνατή κατά τη διάρκεια αυτής της διαδικασίας, οπότε είναι απαραίτητο να πάρετε μια πλήρη χωματερή της βάσης δεδομένων σας πριν ξεκινήσετε οποιαδήποτε μετανάστευση. Κάντε κλικ στο κουμπί OK για να ξεκινήσετε τη διαδικασία μετάβασης ... -ErrorDatabaseVersionForbiddenForMigration=Η έκδοση της βάσης δεδομένων σας είναι %s. Έχει ένα κρίσιμο σφάλμα, καθιστώντας δυνατή την απώλεια δεδομένων εάν κάνετε αλλαγές στη βάση δεδομένων σας, όπως απαιτείται από τη διαδικασία της μετάβασης. Για το λόγο του, η μετάβαση δεν θα επιτρέπεται μέχρι να αναβαθμίσετε τη βάση δεδομένων σας σε μια έκδοση στρώματος (patched) (λίστα γνωστών εκδόσεων buggy: %s) +WarningUpgrade=Προειδοποίηση:\nΕκτελέσατε πρώτα ένα αντίγραφο ασφαλείας της βάσης δεδομένων;\nΑυτό συνιστάται ιδιαίτερα. Η απώλεια δεδομένων (για παράδειγμα λόγω σφαλμάτων στην έκδοση mysql 5.5.40/41/42/43) μπορεί να είναι δυνατή κατά τη διάρκεια αυτής της διαδικασίας, επομένως είναι απαραίτητο να κάνετε ένα αντίγραφο της βάσης δεδομένων σας πριν ξεκινήσετε οποιαδήποτε μετεγκατάσταση.\n\nΚάντε κλικ στο OK για να ξεκινήσει η διαδικασία μετεγκατάστασης... +ErrorDatabaseVersionForbiddenForMigration=Η έκδοση της βάσης δεδομένων σας είναι η%s. Έχει ένα κρίσιμο σφάλμα, καθιστώντας δυνατή την απώλεια δεδομένων εάν κάνετε δομικές αλλαγές στη βάση δεδομένων σας, όπως απαιτείται από τη διαδικασία μετεγκατάστασης. Για τον λόγο αυτό, η μετεγκατάσταση δεν θα επιτρέπεται μέχρι να αναβαθμίσετε τη βάση δεδομένων σας σε έκδοση επιπέδου (patched) (λίστα γνωστών προβληματικων εκδόσεων: %s) KeepDefaultValuesWamp=Χρησιμοποιήσατε τον οδηγό ρύθμισης Dolibarr από το DoliWamp, έτσι οι τιμές που προτείνονται εδώ είναι ήδη βελτιστοποιημένες. Αλλάξτε τα μόνο αν ξέρετε τι κάνετε. KeepDefaultValuesDeb=Χρησιμοποιήσατε τον οδηγό ρύθμισης Dolibarr από ένα πακέτο Linux (Ubuntu, Debian, Fedora ...), έτσι οι τιμές που προτείνονται εδώ είναι ήδη βελτιστοποιημένες. Πρέπει να εισαχθεί μόνο ο κωδικός πρόσβασης του κατόχου της βάσης δεδομένων για δημιουργία. Αλλάξτε άλλες παραμέτρους μόνο αν γνωρίζετε τι κάνετε. KeepDefaultValuesMamp=Χρησιμοποιήσατε τον οδηγό ρύθμισης Dolibarr από το DoliMamp, έτσι οι τιμές που προτείνονται εδώ είναι ήδη βελτιστοποιημένες. Αλλάξτε τα μόνο αν ξέρετε τι κάνετε. KeepDefaultValuesProxmox=Χρησιμοποιήσατε τον οδηγό ρύθμισης Dolibarr από μια εικονική συσκευή Proxmox, έτσι οι τιμές που προτείνονται εδώ έχουν ήδη βελτιστοποιηθεί. Αλλάξτε τα μόνο αν ξέρετε τι κάνετε. -UpgradeExternalModule=Εκτελέστε ειδική διαδικασία αναβάθμισης της εξωτερικής μονάδας -SetAtLeastOneOptionAsUrlParameter=Ορίστε τουλάχιστον μία επιλογή ως παράμετρο στη διεύθυνση URL. Για παράδειγμα: '... repair.php? Standard = confirmed' +UpgradeExternalModule=Εκτελέστε ειδική διαδικασία αναβάθμισης εξωτερικής ενότητας +SetAtLeastOneOptionAsUrlParameter=Ορίστε τουλάχιστον μία επιλογή ως παράμετρο στο URL. Για παράδειγμα: '...repair.php?standard=confirmed' NothingToDelete=Τίποτα για καθαρισμό / διαγραφή -NothingToDo=Τίποτα να κάνω +NothingToDo=Καμία ενέργεια ######### # upgrade -MigrationFixData=Fix for denormalized data -MigrationOrder=Data migration for customer's orders -MigrationSupplierOrder=Μεταφορά δεδομένων για παραγγελίες του πωλητή -MigrationProposal=Data migration for commercial proposals -MigrationInvoice=Data migration for customer's invoices -MigrationContract=Data migration for contracts -MigrationSuccessfullUpdate=Upgrade successful -MigrationUpdateFailed=Failed upgrade process -MigrationRelationshipTables=Data migration for relationship tables (%s) -MigrationPaymentsUpdate=Payment data correction -MigrationPaymentsNumberToUpdate=%s payment(s) to update -MigrationProcessPaymentUpdate=Update payment(s) %s -MigrationPaymentsNothingToUpdate=No more things to do -MigrationPaymentsNothingUpdatable=No more payments that can be corrected -MigrationContractsUpdate=Contract data correction -MigrationContractsNumberToUpdate=%s contract(s) to update -MigrationContractsLineCreation=Create contract line for contract ref %s -MigrationContractsNothingToUpdate=No more things to do -MigrationContractsFieldDontExist=Το πεδίο fk_facture δεν υπάρχει πια. Τίποτα να κάνω. -MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationFixData=Διόρθωση για μη κανονικά δεδομένα +MigrationOrder=Μεταφορά δεδομένων για παραγγελίες πελάτη +MigrationSupplierOrder=Μεταφορά δεδομένων για παραγγελίες προμηθευτών +MigrationProposal=Μεταφορά δεδομένων για εμπορικές προσφορές +MigrationInvoice=Μεταφορά δεδομένων για τιμολόγια πελατών +MigrationContract=Μεταφορά δεδομένων για συμβάσεις +MigrationSuccessfullUpdate=Επιτυχής αναβάθμιση +MigrationUpdateFailed=Η διαδικασία αναβάθμισης απέτυχε +MigrationRelationshipTables=Μετακίνηση δεδομένων για πίνακες σχέσεων (%s) +MigrationPaymentsUpdate=Διόρθωση δεδομένων πληρωμής +MigrationPaymentsNumberToUpdate=%s πληρωμές για ενημέρωση +MigrationProcessPaymentUpdate=Ενημέρωση πληρωμών %s +MigrationPaymentsNothingToUpdate=Δεν υπάρχουν άλλες πληρωμές για ενημέρωση +MigrationPaymentsNothingUpdatable=Δεν υπάρχουν άλλες πληρωμές που μπορούν να διορθωθούν +MigrationContractsUpdate=Διόρθωση δεδομένων συμβάσεων +MigrationContractsNumberToUpdate=%s συμβάσεις για ενημέρωση +MigrationContractsLineCreation=Δημιουργία γραμμής σύμβασης για την αναφορά σύμβασης%s +MigrationContractsNothingToUpdate=Δεν υπάρχουν άλλες συμβάσεις για ενημέρωση +MigrationContractsFieldDontExist=Το πεδίο fk_facture δεν υπάρχει πια. Καμιά ενέργεια. +MigrationContractsEmptyDatesUpdate=Διόρθωση κενής ημερομηνίας σύμβασης MigrationContractsEmptyDatesUpdateSuccess=Η διόρθωση της άδειας ημερομηνίας της σύμβασης έγινε με επιτυχία -MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct -MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct -MigrationContractsInvalidDatesUpdate=Bad value date contract correction -MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) -MigrationContractsInvalidDatesNumber=%s contracts modified -MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct -MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction -MigrationContractsIncoherentCreationDateUpdateSuccess=Επιτυχής διόρθωση εσφαλμένης τιμής ημερομηνίας δημιουργίας συμβολαίου -MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct -MigrationReopeningContracts=Open contract closed by error -MigrationReopenThisContract=Reopen contract %s -MigrationReopenedContractsNumber=%s contracts modified -MigrationReopeningContractsNothingToUpdate=No closed contract to open -MigrationBankTransfertsUpdate=Ενημέρωση συνδέσμων μεταξύ τραπεζικής εισαγωγής και τραπεζικής μεταφοράς -MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationContractsEmptyDatesNothingToUpdate=Δεν υπάρχει κενή ημερομηνία σύμβασης για διόρθωση +MigrationContractsEmptyCreationDatesNothingToUpdate=Δεν υπάρχει ημερομηνία δημιουργίας σύμβασης για διόρθωση +MigrationContractsInvalidDatesUpdate=Διόρθωση σύμβασης με λάθος ημερομηνία +MigrationContractsInvalidDateFix=Σωστό συμβόλαιο %s (Ημερομηνία σύμβασης=%s, Ημερομηνία έναρξης υπηρεσίας min=%s) +MigrationContractsInvalidDatesNumber=%s συμβάσεις τροποποιήθηκαν +MigrationContractsInvalidDatesNothingToUpdate=Δεν υπάρχει ημερομηνία με λάθος τιμή για διόρθωση +MigrationContractsIncoherentCreationDateUpdate=Διόρθωση λανθασμένης τιμής ημερομηνίας δημιουργίας σύμβασης +MigrationContractsIncoherentCreationDateUpdateSuccess=Επιτυχής διόρθωση εσφαλμένης τιμής ημερομηνίας δημιουργίας σύμβασης +MigrationContractsIncoherentCreationDateNothingToUpdate=Δεν υπάρχει λάθος τιμή ημερομηνίας δημιουργίας σύμβασης για διόρθωση +MigrationReopeningContracts=Άνοιγμα συμβάσεων που έκλεισαν με λάθος +MigrationReopenThisContract=Ανοίξτε ξανά τη σύμβαση %s +MigrationReopenedContractsNumber=%s συμβάσεις τροποποιήθηκαν +MigrationReopeningContractsNothingToUpdate=Δεν υπάρχει κλειστή σύμβαση για άνοιγμα +MigrationBankTransfertsUpdate=Ενημέρωση συνδέσμων μεταξύ τραπεζικών εγγραφών και τραπεζικών μεταφορών +MigrationBankTransfertsNothingToUpdate=Όλοι οι σύνδεσμοι είναι ενημερωμένοι MigrationShipmentOrderMatching=Sendings receipt update MigrationDeliveryOrderMatching=Delivery receipt update -MigrationDeliveryDetail=Delivery update -MigrationStockDetail=Update stock value of products -MigrationMenusDetail=Update dynamic menus tables -MigrationDeliveryAddress=Update delivery address in shipments -MigrationProjectTaskActors=Μετανάστευση δεδομένων για τον πίνακα llx_projet_task_actors -MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact -MigrationProjectTaskTime=Update time spent in seconds -MigrationActioncommElement=Ενημέρωση στοιχεία για τις δράσεις -MigrationPaymentMode=Μεταφορά δεδομένων για τον τύπο πληρωμής +MigrationDeliveryDetail=Ενημέρωση παράδοσης +MigrationStockDetail=Ενημέρωση αξίας αποθεμάτων προϊόντων +MigrationMenusDetail=Ενημέρωση πινάκων δυναμικών μενού +MigrationDeliveryAddress=Ενημέρωση διεύθυνσης παράδοσης στις αποστολές +MigrationProjectTaskActors=Μετακίνηση δεδομένων για τον πίνακα llx_projet_task_actors +MigrationProjectUserResp=Πεδίο μετεγκατάστασης δεδομένων fk_user_resp του llx_projet στο llx_element_contact +MigrationProjectTaskTime=Ενημέρωση χρόνου που ξοδεύτηκε σε δευτερόλεπτα +MigrationActioncommElement=Ενημέρωση δεδομένων για ενέργειες +MigrationPaymentMode=Μεταφορά δεδομένων για τύπο πληρωμής MigrationCategorieAssociation=Μετακίνηση των κατηγοριών -MigrationEvents=Μετανάστευση συμβάντων για προσθήκη του κατόχου συμβάντος στον πίνακα αντιστοιχιών -MigrationEventsContact=Μετανάστευση συμβάντων για προσθήκη επαφής συμβάντων στον πίνακα αντιστοιχιών -MigrationRemiseEntity=Ενημέρωση φορέα τιμών πεδίου στον πίνακα llx_societe_remise +MigrationEvents=Μεταφορά συμβάντων για προσθήκη κατόχου συμβάντος στον πίνακα ανάθεσης +MigrationEventsContact=Μετεγκατάσταση συμβάντων για προσθήκη επαφής συμβάντων στον πίνακα ανάθεσης +MigrationRemiseEntity=Ενημερώστε την τιμή πεδίου οντότητας για llx_societe_remise MigrationRemiseExceptEntity=Ενημέρωση φορέα τιμών πεδίου στον πίνακα llx_societe_remise_except MigrationUserRightsEntity=Ενημερώστε την τιμή πεδίου οντότητας των llx_user_rights MigrationUserGroupRightsEntity=Ενημερώστε την τιμή πεδίου οντότητας του llx_usergroup_rights MigrationUserPhotoPath=Μετανάστευση φωτογραφικών διαδρομών για χρήστες MigrationFieldsSocialNetworks=Μετεγκατάσταση χρηστών πεδίων κοινωνικών δικτύων (%s) -MigrationReloadModule=Επαναφόρτωση ενθεμάτων %s -MigrationResetBlockedLog=Επαναφορά της μονάδας BlockedLog για τον αλγόριθμο v7 +MigrationReloadModule=Επαναφόρτωση της ενότητας %s +MigrationResetBlockedLog=Επαναφορά της ενότητας BlockedLog για τον αλγόριθμο v7 MigrationImportOrExportProfiles=Μετεγκατάσταση προφίλ εισαγωγής ή εξαγωγής (%s) ShowNotAvailableOptions=Εμφάνιση μη διαθέσιμων επιλογών HideNotAvailableOptions=Απόκρυψη μη διαθέσιμων επιλογών -ErrorFoundDuringMigration=Παρουσιάστηκε σφάλμα κατά τη διάρκεια της διαδικασίας μετάβασης, επομένως το επόμενο βήμα δεν είναι διαθέσιμο. Για να αγνοήσετε τα σφάλματα, μπορείτε να κάνετε κλικ εδώ , αλλά η εφαρμογή ή ορισμένες λειτουργίες ενδέχεται να μην λειτουργούν σωστά μέχρι να επιλυθούν τα σφάλματα. +ErrorFoundDuringMigration=Αναφέρθηκαν σφάλματα κατά τη διαδικασία μετεγκατάστασης, επομένως το επόμενο βήμα δεν είναι διαθέσιμο. Για να αγνοήσετε τα σφάλματα, μπορείτε να κάντε κλικ εδώ , αλλά η εφαρμογή ή ορισμένες λειτουργίες ενδέχεται να μην λειτουργούν σωστά μέχρι να επιλυθούν τα σφάλματα. YouTryInstallDisabledByDirLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (ο κατάλογος μετονομάζεται σε κατάληξη .lock).
-YouTryInstallDisabledByFileLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (με την ύπαρξη ενός αρχείου κλειδώματος install.lock στον κατάλογο εγγράφων dolibarr).
-ClickHereToGoToApp=Κάντε κλικ εδώ για να μεταβείτε στην αίτησή σας +YouTryInstallDisabledByFileLock=Η εφαρμογή προσπάθησε να αυτο-αναβαθμιστεί, αλλά οι σελίδες εγκατάστασης / αναβάθμισης έχουν απενεργοποιηθεί για λόγους ασφαλείας (με την ύπαρξη ενός αρχείου κλειδώματος install.lock στον κατάλογο εγγράφων του dolibarr).
+ClickHereToGoToApp=Κάντε κλικ εδώ για να μεταβείτε στην εφαρμογή σας ClickOnLinkOrRemoveManualy=Εάν μια αναβάθμιση βρίσκεται σε εξέλιξη, παρακαλώ περιμένετε. Εάν όχι, κάντε κλικ στον παρακάτω σύνδεσμο. Εάν βλέπετε πάντα την ίδια σελίδα, πρέπει να αφαιρέσετε/μετονομάσετε το αρχείο install.lock στον κατάλογο εγγράφων. -Loaded=Φορτωμένος +Loaded=Φορτωμένο FunctionTest=Δοκιμή λειτουργίας diff --git a/htdocs/langs/el_GR/interventions.lang b/htdocs/langs/el_GR/interventions.lang index 91d2a2cf35b..7343febc66e 100644 --- a/htdocs/langs/el_GR/interventions.lang +++ b/htdocs/langs/el_GR/interventions.lang @@ -9,62 +9,62 @@ ListOfInterventions=Λίστα παρεμβάσεων ActionsOnFicheInter=Δράσεις για την παρέμβαση LastInterventions=Τελευταίες %s παρεμβάσεις AllInterventions=Όλες οι παρεμβάσεις -CreateDraftIntervention=Δημιουργία πρόχειρη -InterventionContact=Παρέμβαση επαφής +CreateDraftIntervention=Δημιουργία πρόχειρης παρέμβασης +InterventionContact=Επαφή παρέμβασης DeleteIntervention=Διαγραφή παρέμβασης ValidateIntervention=Επικύρωση παρέμβασης ModifyIntervention=Τροποποίηση παρέμβασης DeleteInterventionLine=Διαγραφή γραμμής παρέμβασης ConfirmDeleteIntervention=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την παρέμβαση; -ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s? -ConfirmModifyIntervention=Είστε σίγουρος ότι θέλετε να μεταβάλετε αυτή την παρέμβαση; -ConfirmDeleteInterventionLine=Είστε σίγουρος ότι θέλετε να διαγράψετε αυτή τη γραμμή της παρέμβασης; -ConfirmCloneIntervention=Are you sure you want to clone this intervention? -NameAndSignatureOfInternalContact=Όνομα και υπογραφή των παρεμβαινόντων: +ConfirmValidateIntervention=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την παρέμβαση με το όνομα %s ; +ConfirmModifyIntervention=Είστε σίγουροι ότι θέλετε να μεταβάλετε αυτή την παρέμβαση; +ConfirmDeleteInterventionLine=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη γραμμή της παρέμβασης; +ConfirmCloneIntervention=Είστε σίγουροι ότι θέλετε να αντιγράψετε αυτήν την παρέμβαση; +NameAndSignatureOfInternalContact=Όνομα και υπογραφή του παρεμβαίνοντα: NameAndSignatureOfExternalContact=Όνομα και υπογραφή του πελάτη: DocumentModelStandard=Τυπικό είδος εγγράφου παρέμβασης -InterventionCardsAndInterventionLines=Παρεμβάσεις και τις γραμμές των παρεμβάσεων -InterventionClassifyBilled=Ταξινομήστε τα "Τιμολογημένα" -InterventionClassifyUnBilled=Ταξινομήστε τα μη "Τιμολογημένα" -InterventionClassifyDone=Classify "Done" -StatusInterInvoiced=Τιμολογείται +InterventionCardsAndInterventionLines=Παρεμβάσεις και γραμμές παρεμβάσεων +InterventionClassifyBilled=Ταξινόμηση ως "Τιμολογημένη" +InterventionClassifyUnBilled=Ταξινόμηση ως "Μη τιμολογημένη" +InterventionClassifyDone=Ταξινόμηση ως "Εκτελεσμένη" +StatusInterInvoiced=Τιμολογήθηκε SendInterventionRef=Υποβολή παρέμβασης %s -SendInterventionByMail=Αποστολή παρέμβασης μέσω ηλεκτρονικού ταχυδρομείου -InterventionCreatedInDolibarr=Παρέμβαση %s δημιουργήθηκε -InterventionValidatedInDolibarr=Παρέμβαση %s επικυρώθηκε -InterventionModifiedInDolibarr=Παρέμβαση %s τροποποιήθηκε -InterventionClassifiedBilledInDolibarr=Σετ Παρέμβασης %s όπως τιμολογείται +SendInterventionByMail=Αποστολή παρέμβασης με email +InterventionCreatedInDolibarr=Η παρέμβαση %s δημιουργήθηκε +InterventionValidatedInDolibarr=Η παρέμβαση %s επικυρώθηκε +InterventionModifiedInDolibarr=Η παρέμβαση %s τροποποιήθηκε +InterventionClassifiedBilledInDolibarr=Η παρέμβαση %s ορίστηκε ως τιμολογημένη InterventionClassifiedUnbilledInDolibarr=Σετ Παρέμβαση %s ως μη τιμολογημένο -InterventionSentByEMail=Η παρέμβαση %s στάλθηκε με ηλεκτρονικό ταχυδρομείο -InterventionDeletedInDolibarr=Παρέμβαση %s διαγράφετε -InterventionsArea=Περιοχή παρεμβάσεων -DraftFichinter=Πρόχειρες παρεμβάσεις -LastModifiedInterventions=Latest %s modified interventions -FichinterToProcess=Interventions to process -TypeContact_fichinter_external_CUSTOMER=Σε συνέχεια επαφή με τον πελάτη -PrintProductsOnFichinter=Print also lines of type "product" (not only services) on intervention card -PrintProductsOnFichinterDetails=παρεμβάσεις που προέρχονται από παραγγελίες -UseServicesDurationOnFichinter=Use services duration for interventions generated from orders -UseDurationOnFichinter=Κρύβει το πεδίο διάρκειας για εγγραφές παρέμβασης -UseDateWithoutHourOnFichinter=Κρύβει ώρες και λεπτά από το πεδίο ημερομηνίας για τα αρχεία παρέμβασης +InterventionSentByEMail=Η παρέμβαση %s εστάλη μέσω email +InterventionDeletedInDolibarr=Η παρέμβαση %s διαγράφηκε +InterventionsArea=Τομέας παρεμβάσεων +DraftFichinter=Προσχέδια παρεμβάσεων +LastModifiedInterventions=Τελευταίες %s τροποποιημένες παρεμβάσεις +FichinterToProcess=Παρεμβάσεις προς επεξεργασία +TypeContact_fichinter_external_CUSTOMER=Επακόλουθη επικοινωνία με τον πελάτη +PrintProductsOnFichinter=Τυπώστε και γραμμές τύπου «προϊόν» (όχι μόνο υπηρεσίες) στην κάρτα παρέμβασης +PrintProductsOnFichinterDetails=παρεμβάσεις που προκύπτουν από παραγγελίες +UseServicesDurationOnFichinter=Χρησιμοποιήστε τη διάρκεια υπηρεσιών για παρεμβάσεις που δημιουργούνται από παραγγελίες +UseDurationOnFichinter=Απόκρυψη του πεδίου διάρκειας για εγγραφές της παρέμβασης +UseDateWithoutHourOnFichinter=Απόκρυψη ωρών και λεπτών του πεδίου ημερομηνίας για εγγραφές παρέμβασης InterventionStatistics=Στατιστικά παρεμβάσεων NbOfinterventions=Αριθ. Καρτών παρέμβασης NumberOfInterventionsByMonth=Αριθμός καρτών παρέμβασης ανά μήνα (ημερομηνία επικύρωσης) -AmountOfInteventionNotIncludedByDefault=Το ποσό της παρέμβασης δεν συμπεριλαμβάνεται εξ ορισμού στο κέρδος (στις περισσότερες περιπτώσεις, τα φύλλα εργασίας χρησιμοποιούνται για τον υπολογισμό του χρόνου που δαπανάται). Προσθέστε την επιλογή PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT σε 1 στο σπίτι-setup-άλλη για να τις συμπεριλάβετε. -InterId=Κωδ παρέμβασης +AmountOfInteventionNotIncludedByDefault=Το ποσό της παρέμβασης δεν περιλαμβάνεται εξ ορισμού στο κέρδος (στις περισσότερες περιπτώσεις, τα φύλλα καταγραφής χρόνου χρησιμοποιούνται για τον υπολογισμό του χρόνου που δαπανάται). Προσθέστε την επιλογή PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT στο 1 στο Αρχική-Ρυθμίσεις-Άλλες Ρυθμίσεις για να τις συμπεριλάβετε. +InterId=Αναγνωριστικό παρέμβασης InterRef=Αναφ παρέμβασης InterDateCreation=Ημερομηνία δημιουργίας παρέμβασης InterDuration=Διάρκεια παρέμβασης InterStatus=Κατάσταση παρέμβασης InterNote=Σημείωση παρέμβασης InterLine=Γραμμή παρέμβασης -InterLineId=Κωδ γραμμής παρέμβασης +InterLineId=Αναγνωριστικό γραμμής παρέμβασης InterLineDate=Ημερομηνία γραμμής παρέμβασης InterLineDuration=Διάρκεια γραμμής παρέμβασης InterLineDesc=Περιγραφή γραμμής παρέμβασης RepeatableIntervention=Πρότυπο παρέμβασης ToCreateAPredefinedIntervention=Για να δημιουργήσετε μια προκαθορισμένη ή επαναλαμβανόμενη παρέμβαση, δημιουργήστε μια κοινή παρέμβαση και μετατρέψτε την σε πρότυπο παρέμβασης -ConfirmReopenIntervention=Είστε βέβαιοι ότι θέλετε να ανοίξετε την παρέμβαση %s ; +ConfirmReopenIntervention=Είστε σίγουροι ότι θέλετε να ανοίξετε ξανά την παρέμβαση %s ; GenerateInter=Δημιουργία παρέμβασης FichinterNoContractLinked=Η παρέμβαση %s έχει δημιουργηθεί χωρίς συνδεδεμένο συμβόλαιο. ErrorFicheinterCompanyDoesNotExist=Η εταιρεία δεν υπάρχει. Δεν έχει δημιουργηθεί παρέμβαση. diff --git a/htdocs/langs/el_GR/intracommreport.lang b/htdocs/langs/el_GR/intracommreport.lang index d07c71cbc4f..e8ce0a13ae2 100644 --- a/htdocs/langs/el_GR/intracommreport.lang +++ b/htdocs/langs/el_GR/intracommreport.lang @@ -1,11 +1,11 @@ -Module68000Name = Έκθεση Intracomm +Module68000Name = Intracomm report Module68000Desc = Διαχείριση αναφορών Intracomm (Υποστήριξη για γαλλική μορφή DEB/DES) -IntracommReportSetup = Ρύθμιση μονάδας Intracommreport -IntracommReportAbout = Σχετικά με το intracommreport +IntracommReportSetup = Ρύθμιση ενότητας Intracomm report +IntracommReportAbout = Σχετικά με το intracomm report # Setup INTRACOMMREPORT_NUM_AGREMENT=Αριθμός έγκρισης (εκδίδεται από το cisd του συνημμένου) -INTRACOMMREPORT_TYPE_ACTEUR=Τύπος d'acteur +INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions @@ -14,7 +14,7 @@ INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port" INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant # Menu -MenuIntracommReport=Έκθεση Intracomm +MenuIntracommReport=Intracomm report MenuIntracommReportNew=Νέα δήλωση MenuIntracommReportList=Λίστα @@ -22,7 +22,7 @@ MenuIntracommReportList=Λίστα NewDeclaration=Νέα δήλωση Declaration=Δήλωση AnalysisPeriod=Περίοδος ανάλυσης -TypeOfDeclaration=Είδος δήλωσης +TypeOfDeclaration=Τύπος δήλωσης DEB=Δήλωση ανταλλαγής αγαθών (DEB) DES=Δήλωση ανταλλαγής υπηρεσιών (DES) @@ -33,7 +33,7 @@ IntracommReportTitle=Προετοιμασία αρχείου XML σε μορφή IntracommReportList=Λίστα δημιουργούμενων δηλώσεων IntracommReportNumber=Αριθμός δήλωσης IntracommReportPeriod=Περίοδος ανάλυσης -IntracommReportTypeDeclaration=Είδος δήλωσης +IntracommReportTypeDeclaration=Τύπος δήλωσης IntracommReportDownload=λήψη αρχείου XML # Invoice diff --git a/htdocs/langs/el_GR/knowledgemanagement.lang b/htdocs/langs/el_GR/knowledgemanagement.lang index e4668a62caf..c56508e4245 100644 --- a/htdocs/langs/el_GR/knowledgemanagement.lang +++ b/htdocs/langs/el_GR/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Άρθρα KnowledgeRecord = Άρθρο KnowledgeRecordExtraFields = Επιπλέον πεδία για το άρθρο GroupOfTicket=Ομάδα εισιτηρίων -YouCanLinkArticleToATicketCategory=Μπορείτε να συνδέσετε ένα άρθρο με μια ομάδα εισιτηρίων (έτσι το άρθρο θα προταθεί κατά το άνοιγμα νέων εισιτηρίων) +YouCanLinkArticleToATicketCategory=Μπορείτε να συνδέσετε το άρθρο με μια ομάδα ticket (έτσι το άρθρο θα επισημαίνεται σε όλα τα tickets αυτής της ομάδας) SuggestedForTicketsInGroup=Προτείνεται για εισιτήρια όταν η ομάδα είναι SetObsolete=Ορισμός ως ξεπερασμένο diff --git a/htdocs/langs/el_GR/languages.lang b/htdocs/langs/el_GR/languages.lang index c2c080976de..cdac03cd502 100644 --- a/htdocs/langs/el_GR/languages.lang +++ b/htdocs/langs/el_GR/languages.lang @@ -13,6 +13,7 @@ Language_az_AZ=Αζερμπαϊτζανικά Language_bn_BD=Μπενγκάλι Language_bn_IN=Μπενγκάλι (Ινδία) Language_bg_BG=Βουλγαρικά +Language_bo_CN=Θιβετιανά Language_bs_BA=Βοσνιακά Language_ca_ES=Καταλανικά Language_cs_CZ=Τσεχικά @@ -39,6 +40,7 @@ Language_es_AR=Ισπανικά (Αργεντινή) Language_es_BO=Ισπανικά (Βολιβία) Language_es_CL=Ισπανικά (Χιλή) Language_es_CO=Ισπανικά (Κολομβία) +Language_es_CR=Ισπανικά (Κόστα Ρίκα) Language_es_DO=Ισπανικά (Δομινικανή Δημοκρατία) Language_es_EC=Ισπανικά (Εκουαδόρ) Language_es_GT=Ισπανικά (Γουατεμάλα) @@ -93,6 +95,7 @@ Language_nl_BE=Ολλανδικά (Βέλγιο) Language_nl_NL=Ολλανδικά Language_pl_PL=Πολωνικά Language_pt_AO=Πορτογαλικά (Αγκόλα) +Language_pt_MZ=Πορτογαλικά (Μοζαμβίκη) Language_pt_BR=Πορτογαλικά (Βραζιλίας) Language_pt_PT=Πορτογαλικά Language_ro_MD=Ρουμανικά (Μολδαβία) diff --git a/htdocs/langs/el_GR/loan.lang b/htdocs/langs/el_GR/loan.lang index b18bbc1acf3..3d4d6d36803 100644 --- a/htdocs/langs/el_GR/loan.lang +++ b/htdocs/langs/el_GR/loan.lang @@ -3,32 +3,32 @@ Loan=Δάνειο Loans=Δάνεια NewLoan=Νέο δάνειο ShowLoan=Εμφάνιση Δανείου -PaymentLoan=Πληρωμή δανείων -LoanPayment=Πληρωμή δανείων +PaymentLoan=Πληρωμή δανείου +LoanPayment=Πληρωμή δανείου ShowLoanPayment=Εμφάνιση Πληρωμής Δανείου -LoanCapital=Κεφάλαιο Κίνησης -Insurance=Ασφάλεια Αυτοκινήτου -Interest=Χρεωστικοί Τόκοι -Nbterms=Αριθμός των όρων -Term=Ορος +LoanCapital=Κεφάλαιο +Insurance=Ασφάλιση +Interest=Επιτόκιο +Nbterms=Αριθμός περιόδων +Term=Περίοδος LoanAccountancyCapitalCode=Κεφάλαιο λογιστικού λογαριασμού LoanAccountancyInsuranceCode=Ασφάλιση λογιστικού λογαριασμού -LoanAccountancyInterestCode=Τόκος λογιστικού λογαριασμού +LoanAccountancyInterestCode=Επιτόκιο λογιστικού λογαριασμού ConfirmDeleteLoan=Επιβεβαίωση διαγραφής δανείου LoanDeleted=Το Δάνειο διαγράφηκε με επιτυχία -ConfirmPayLoan=Confirm classify paid this loan -LoanPaid=Πληρωμή δανείου -ListLoanAssociatedProject=Κατάλογος δανείου που σχετίζεται με το έργο -AddLoan=Δημιουργήστε δάνειο +ConfirmPayLoan=Επιβεβαίωση πληρωμής δανείου +LoanPaid=Πληρωμές δανείου +ListLoanAssociatedProject=Λίστα δανείων που σχετίζονται με το έργο +AddLoan=Δημιουργία δανείου FinancialCommitment=Χρηματοδοτική δέσμευση -InterestAmount=Χρεωστικοί Τόκοι -CapitalRemain=Το κεφάλαιο παραμένει -TermPaidAllreadyPaid = Αυτός ο όρος είναι ήδη πληρωμένος -CantUseScheduleWithLoanStartedToPaid = Δεν είναι δυνατή η χρήση του scheduler για ένα δάνειο μετά την έναρξη των πληρωμών -CantModifyInterestIfScheduleIsUsed = Δεν μπορείτε να τροποποιήσετε τον τόκο εάν έχει ξεκινήσει η διαδικασία. +InterestAmount=Επιτόκιο +CapitalRemain=Κεφάλαιο που απομένει +TermPaidAllreadyPaid = Αυτή η περίοδος είναι ήδη πληρωμένη +CantUseScheduleWithLoanStartedToPaid = Δεν είναι δυνατή η δημιουργία χρονοδιαγράμματος δάνειου για το οποίο έχουν ξεκινήσει η πληρωμές +CantModifyInterestIfScheduleIsUsed = Δεν μπορείτε να τροποποιήσετε το επιτόκιο εάν χρησιμοποιείτε χρονοδιάγραμμα # Admin ConfigLoan=Διαμόρφωση της ενότητας δανείου -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Λογιστικό κεφάλαιο λογαριασμού από προεπιλογή -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Λογιστικός τόκος λογαριασμού από προεπιλογή -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Λογιστική ασφάλιση λογαριασμού από προεπιλογή +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Κεφάλαιο λογιστικού λογαριασμού από προεπιλογή +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Επιτόκιο λογιστικού λογαριασμού από προεπιλογή +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Ασφάλιση λογιστικού λογαριασμού από προεπιλογή CreateCalcSchedule=Επεξεργασία οικονομικής δέσμευσης diff --git a/htdocs/langs/el_GR/mails.lang b/htdocs/langs/el_GR/mails.lang index cdf90eb63aa..9965724bf0f 100644 --- a/htdocs/langs/el_GR/mails.lang +++ b/htdocs/langs/el_GR/mails.lang @@ -2,8 +2,8 @@ Mailing=EMailing EMailing=EMailing EMailings=EMailings -AllEMailings=Όλα τα μηνύματα ηλεκτρονικής αλληλογραφίας -MailCard=EMailing card +AllEMailings=Όλα τα email +MailCard=Κάρτελα email MailRecipients=Παραλήπτες MailRecipient=Παραλήπτης MailTitle=Περιγραφή @@ -11,83 +11,83 @@ MailFrom=Αποστολέας MailErrorsTo=Σφάλματα σε MailReply=Απάντηση σε MailTo=Παραλήπτης(ες) -MailToUsers=Στο χρήστη (ες) -MailCC=Αντιγραφή σε -MailToCCUsers=Αντιγραφή σε χρήστη(ες) +MailToUsers=Προς +MailCC=Κοινοποίηση σε +MailToCCUsers=Κοινοποίηση σε χρήστη(ες) MailCCC=Cached copy to MailTopic=Θέμα Email MailText=Μήνυμα -MailFile=Επισυναπτώμενα Αρχεία -MailMessage=Κείμενο email +MailFile=Επισυναπτόμενα Αρχεία +MailMessage=Σώμα email SubjectNotIn=Όχι στο θέμα BodyNotIn=Όχι στο Σώμα -ShowEMailing=Show emailing -ListOfEMailings=List of emailings -NewMailing=New emailing -EditMailing=Edit emailing -ResetMailing=Resend emailing -DeleteMailing=Delete emailing -DeleteAMailing=Delete an emailing -PreviewMailing=Preview emailing -CreateMailing=Create emailing -TestMailing=Test email -ValidMailing=Valid emailing +ShowEMailing=Εμφάνιση email +ListOfEMailings=Λίστα email +NewMailing=Νέα αποστολή email +EditMailing=Επεξεργασία email +ResetMailing=Εκ νέου αποστολή email +DeleteMailing=Διαγραφή email +DeleteAMailing=Διαγραφή ενός email +PreviewMailing=Προεπισκόπηση email +CreateMailing=Δημιουργία email +TestMailing=Δοκιμαστικό email +ValidMailing=Επικύρωση email MailingStatusDraft=Προσχέδιο MailingStatusValidated=Επικυρωμένο MailingStatusSent=Απεσταλμένο MailingStatusSentPartialy=Μερικώς απεσταλμένα -MailingStatusSentCompletely=Στάλθηκε πλήρως +MailingStatusSentCompletely=Πλήρως απεσταλμένα MailingStatusError=Σφάλμα -MailingStatusNotSent=Δεν στάλθηκε -MailSuccessfulySent=Email successfully accepted for delivery (from %s to %s) -MailingSuccessfullyValidated=Το Ηλεκτρονικό ταχυδρομείο επικυρωθίκε με επιτυχία -MailUnsubcribe=Διαγραφή -MailingStatusNotContact=Μην επιτρέπετε την επαφή πια +MailingStatusNotSent=Προσχέδια +MailSuccessfulySent=Το email (από %s προς %s) απεστάλη επιτυχώς +MailingSuccessfullyValidated=Το email επικυρώθηκε με επιτυχία +MailUnsubcribe=Κατάργηση εγγραφής +MailingStatusNotContact=Να μην χρησιμοποιείται MailingStatusReadAndUnsubscribe=Read and unsubscribe -ErrorMailRecipientIsEmpty=Email recipient is empty -WarningNoEMailsAdded=No new Email to add to recipient's list. -ConfirmValidMailing=Are you sure you want to validate this emailing? -ConfirmResetMailing=Προειδοποίηση, ενεργοποιώντας εκ νέου την αποστολή e-mail %s , θα επιτρέψετε την εκ νέου αποστολή αυτού του μηνύματος ηλεκτρονικού ταχυδρομείου σε μια μαζική αποστολή αλληλογραφίας. Είστε βέβαιοι ότι θέλετε να το κάνετε αυτό; -ConfirmDeleteMailing=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου; -NbOfUniqueEMails=Αριθμός μοναδικών μηνυμάτων ηλεκτρονικού ταχυδρομείου -NbOfEMails=Αριθμός Emails -TotalNbOfDistinctRecipients=Number of distinct recipients -NoTargetYet=No recipients defined yet (Go on tab 'Recipients') -NoRecipientEmail=Δεν υπάρχει ηλεκτρονικό ταχυδρομείο παραλήπτη για %s -RemoveRecipient=Remove recipient -YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. -EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values -MailingAddFile=Attach this file -NoAttachedFiles=No attached files -BadEMail=Κακή τιμή για το μήνυμα ηλεκτρονικού ταχυδρομείου +ErrorMailRecipientIsEmpty=Το πεδίο παραλήπτη του email είναι κενό +WarningNoEMailsAdded=Δεν υπάρχει νέο email για προσθήκη στη λίστα παραληπτών. +ConfirmValidMailing=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτό το email; +ConfirmResetMailing=Προειδοποίηση, ενεργοποιώντας εκ νέου την αποστολή e-mail %s , θα επιτρέψετε την εκ νέου αποστολή αυτού του μηνύματος ηλεκτρονικού ταχυδρομείου σε μια μαζική αποστολή αλληλογραφίας. Είστε σίγουροι ότι αυτό θέλετε; +ConfirmDeleteMailing=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το email; +NbOfUniqueEMails=Αριθμός μοναδικών email +NbOfEMails=Αριθμός Email +TotalNbOfDistinctRecipients=Αριθμός διακριτών παραληπτών +NoTargetYet=Δεν έχουν οριστεί ακόμη παραλήπτες (Μεταβείτε στην καρτέλα "Παραλήπτες") +NoRecipientEmail=Δεν υπάρχει διεύθυνση email για %s +RemoveRecipient=Αφαίρεση παραλήπτη +YouCanAddYourOwnPredefindedListHere=Για τη δημιουργία της δικής σας ενότητας επιλογέα email, ανατρέξτε στο htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=Όταν χρησιμοποιείτε τη δοκιμαστική λειτουργία, οι μεταβλητές αντικατάστασης αντικαθίστανται από γενικές τιμές +MailingAddFile=Επισύναψη αρχείου +NoAttachedFiles=Δεν υπάρχουν συνημμένα αρχεία +BadEMail=Λάθος στη διεύθυνση email EMailNotDefined=Το email δεν έχει οριστεί -ConfirmCloneEMailing=Are you sure you want to clone this emailing? -CloneContent=Clone message -CloneReceivers=Cloner recipients +ConfirmCloneEMailing=Είστε σίγουροι ότι θέλετε να αντιγράψετε αυτό το email; +CloneContent=Αντιγραφή Μηνύματος +CloneReceivers=Αντιγραφή Παραληπτών DateLastSend=Ημερομηνία τελευταίας αποστολής -DateSending=Date sending -SentTo=Sent to %s +DateSending=Ημερομηνία αποστολής +SentTo=Στάλθηκε σε %s MailingStatusRead=Ανάγνωση -YourMailUnsubcribeOK=Το e - mail %s καταργείται σωστά από τη λίστα αλληλογραφίας -ActivateCheckReadKey=Το κλειδί που χρησιμοποιείται για την κρυπτογράφηση της διεύθυνσης URL που χρησιμοποιείται για τη λειτουργία "Έγγραφο ανάγνωσης" και "Κατάργηση εγγραφής" -EMailSentToNRecipients=Το μήνυμα ηλεκτρονικού ταχυδρομείου αποστέλλεται στους παραλήπτες %s. -EMailSentForNElements=Το ηλεκτρονικό ταχυδρομείο στάλθηκε για στοιχεία %s. -XTargetsAdded=%s παραλήπτες που προστέθηκαν στο κατάλογο των στόχων -OnlyPDFattachmentSupported=Αν τα έγγραφα PDF δημιουργήθηκαν ήδη για τα αντικείμενα που θα αποσταλούν, θα επισυνάπτονται στο ηλεκτρονικό ταχυδρομείο. Εάν όχι, δεν θα αποσταλεί κανένα μήνυμα ηλεκτρονικού ταχυδρομείου (επίσης, σημειώστε ότι μόνο έγγραφα pdf υποστηρίζονται ως συνημμένα στη μαζική αποστολή σε αυτή την έκδοση). -AllRecipientSelected=Οι παραλήπτες της εγγραφής %s έχουν επιλεγεί (αν είναι γνωστό το email τους). -GroupEmails=Ομαδικά μηνύματα ηλεκτρονικού ταχυδρομείου -OneEmailPerRecipient=Ένα μήνυμα ηλεκτρονικού ταχυδρομείου ανά παραλήπτη (από προεπιλογή, επιλέγεται ένα μήνυμα ηλεκτρονικού ταχυδρομείου ανά εγγραφή) -WarningIfYouCheckOneRecipientPerEmail=Προειδοποίηση, αν επιλέξετε αυτό το πλαίσιο, σημαίνει ότι θα αποσταλεί μόνο ένα μήνυμα ηλεκτρονικού ταχυδρομείου για πολλές διαφορετικές εγγραφές, επομένως εάν το μήνυμά σας περιέχει μεταβλητές υποκατάστασης που αναφέρονται σε δεδομένα ενός αρχείου, δεν είναι δυνατή η αντικατάστασή τους. -ResultOfMailSending=Αποτέλεσμα της μαζικής αποστολής ηλεκτρονικού ταχυδρομείου +YourMailUnsubcribeOK=Το email %s έχει καταργηθεί σωστά από τη λίστα αλληλογραφίας +ActivateCheckReadKey=Κλειδί που χρησιμοποιείται για την κρυπτογράφηση διεύθυνσης URL, χρησιμοποιείται για τη λειτουργία "Απόδειξη ανάγνωσης" και "Κατάργηση εγγραφής". +EMailSentToNRecipients=Το email στάλθηκε σε %s παραλήπτες . +EMailSentForNElements=Το email στάλθηκε για %s στοιχεία . +XTargetsAdded=%s παραλήπτες προστέθηκαν στο κατάλογο των στόχων +OnlyPDFattachmentSupported=Εάν τα έγγραφα PDF έχουν ήδη δημιουργηθεί για τα αντικείμενα προς αποστολή, θα επισυναφθούν στο email. Εάν όχι, δεν θα σταλεί email (επίσης, σημειώστε ότι μόνο έγγραφα pdf υποστηρίζονται ως συνημμένα σε μαζική αποστολή σε αυτήν την έκδοση). +AllRecipientSelected=Οι παραλήπτες της %sεγγραφής έχουν επιλεγεί (αν είναι γνωστό το email τους). +GroupEmails=Ομαδικά email +OneEmailPerRecipient=Ένα email ανά παραλήπτη (από προεπιλογή, επιλεγμένο ένα email ανά εγγραφή) +WarningIfYouCheckOneRecipientPerEmail=Προειδοποίηση, εάν επιλέξετε αυτό το πλαίσιο, σημαίνει ότι θα σταλεί μόνο ένα email για πολλές διαφορετικές επιλεγμένες εγγραφές, επομένως, εάν το μήνυμά σας περιέχει μεταβλητές αντικατάστασης που αναφέρονται σε δεδομένα μιας εγγραφής, δεν θα είναι δυνατή η αντικατάστασή τους. +ResultOfMailSending=Αποτέλεσμα μαζικής αποστολής email NbSelected=Ο αριθμός είναι επιλεγμένος NbIgnored=Ο αριθμός αγνοήθηκε NbSent=Ο αριθμός αποστέλλεται -SentXXXmessages=%s αποστέλλεται μήνυμα (ες). +SentXXXmessages=%s μήνυμα(τα) στάλθηκαν. ConfirmUnvalidateEmailing=Are you sure you want to change email %s to draft status? MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters MailingModuleDescContactsByCompanyCategory=Επαφές ανά κατηγορία τρίτων -MailingModuleDescContactsByCategory=Contacts by categories -MailingModuleDescContactsByFunction=Contacts by position +MailingModuleDescContactsByCategory=Επαφές ανά κατηγορία +MailingModuleDescContactsByFunction=Επαφές ανά θέση MailingModuleDescEmailsFromFile=Τα μηνύματα ηλεκτρονικού ταχυδρομείου από το αρχείο MailingModuleDescEmailsFromUser=Εισαγωγή μηνυμάτων ηλεκτρονικού ταχυδρομείου από το χρήστη MailingModuleDescDolibarrUsers=Χρήστες με μηνύματα ηλεκτρονικού ταχυδρομείου @@ -96,23 +96,23 @@ SendingFromWebInterfaceIsNotAllowed=Η αποστολή από τη διεπαφ EmailCollectorFilterDesc=Όλα τα φίλτρα πρέπει να ταιριάζουν για να συλλεχθεί ένα email # Libelle des modules de liste de destinataires mailing -LineInFile=Σειρά %s στο αρχείο +LineInFile=Γραμμή %s στο αρχείο RecipientSelectionModules=Ορίζονται αιτήματα για την επιλογή του παραλήπτη MailSelectedRecipients=Επιλεγμένοι αποδέκτες MailingArea=Emailings περιοχή -LastMailings=Latest %s emailings +LastMailings=Τελευταία %s email TargetsStatistics=Στατιστικά στοχων NbOfCompaniesContacts=Μοναδικές επαφές/διευθύνσεις MailNoChangePossible=Παραλήπτες με επικυρωμένες ηλεκτρονικές διευθύνσεις δεν μπορούν να αλλάξουν -SearchAMailing=Αναζήτηση Ταχυδρομείου -SendMailing=Αποστολή ηλεκτρονικού ταχυδρομείου +SearchAMailing=Αναζήτηση αλληλογραφίας +SendMailing=Αποστολή email SentBy=Στάλθηκε από -MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand=Η αποστολή ενός email μπορεί να πραγματοποιηθεί από τη γραμμή εντολών. Ζητήστε από τον διαχειριστή του διακομιστή σας να εκκινήσει την ακόλουθη εντολή για να στείλετε το email σε όλους τους παραλήπτες: MailingNeedCommand2=Μπορείτε, ωστόσο, να τους στείλετε σε απευθείας σύνδεση με την προσθήκη της παραμέτρου MAILING_LIMIT_SENDBYWEB με την αξία του μέγιστου αριθμού των μηνυμάτων ηλεκτρονικού ταχυδρομείου που θέλετε να στείλετε από τη συνεδρία. Για το σκοπό αυτό, πηγαίνετε στο Αρχική - Ρυθμίσεις - Άλλες Ρυθμίσεις. -ConfirmSendingEmailing=If you want to send emailing directly from this screen, please confirm you are sure you want to send emailing now from your browser ? +ConfirmSendingEmailing=Εάν θέλετε να στείλετε email απευθείας από αυτήν την οθόνη, παρακαλώ επιβεβαιώστε LimitSendingEmailing=Σημείωση: Η αποστολή μηνυμάτων ηλεκτρονικού ταχυδρομείου από διαδικτυακή διεπαφή γίνεται αρκετές φορές για λόγους ασφαλείας και τη λήξη χρόνου, %s παραλήπτες ταυτόχρονα για κάθε συνεδρία αποστολής. TargetsReset=Εκκαθάριση λίστας -ToClearAllRecipientsClickHere=Κάντε κλικ εδώ για να καταργήσετε τη λίστα παραληπτών για αυτό το ηλεκτρονικό ταχυδρομείο +ToClearAllRecipientsClickHere=Κάντε κλικ εδώ για να διαγράψετε τη λίστα παραληπτών για αυτό το email ToAddRecipientsChooseHere=Προσθέστε παραλήπτες επιλέγοντας από τις λίστες NbOfEMailingsReceived=Μαζικές αποστολές έλαβαν NbOfEMailingsSend=Μαζική αλληλογραφία αποστέλλεται @@ -120,13 +120,13 @@ IdRecord=ID record DeliveryReceipt=Delivery Ack. YouCanUseCommaSeparatorForSeveralRecipients=Μπορείτε να χρησιμοποιήσετε το κόμμα σαν διαχωριστή για να καθορίσετε πολλούς παραλήπτες. TagCheckMail=Παρακολούθηση άνοιγμα της αλληλογραφίας -TagUnsubscribe=link διαγραφής +TagUnsubscribe=Σύνδεσμος απεγγραφής TagSignature=Υπογραφή του χρήστη αποστολής EMailRecipient=Email παραλήπτη -TagMailtoEmail=E-mail παραλήπτη (συμπεριλαμβανομένου του συνδέσμου html "mailto:") -NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile. +TagMailtoEmail=Email παραλήπτη (συμπεριλαμβανομένου του συνδέσμου html "mailto:") +NoEmailSentBadSenderOrRecipientEmail=Δεν εστάλη email. Λάθος email αποστολέα ή παραλήπτη. Ελέγξτε το προφίλ χρήστη. # Module Notifications -Notifications=Notifications +Notifications=Ειδοποιήσεις NotificationsAuto=Αυτόματες Ειδοποιήσεις NoNotificationsWillBeSent=Δεν έχουν προγραμματιστεί αυτόματες ειδοποιήσεις μέσω mail για αυτή την εταιρεία και συμβάντα αυτού του τύπου ANotificationsWillBeSent=1 αυτόματη ειδοποίηση θα σταλεί μέσω email @@ -141,28 +141,28 @@ YouCanAlsoUseSupervisorKeyword=You can also add the keyword __SUPERVISOR NbOfTargetedContacts=Τρέχων αριθμός των στοχευμένων ηλεκτρονικών μηνυμάτων της επαφής UseFormatFileEmailToTarget=Imported file must have format email;name;firstname;other UseFormatInputEmailToTarget=Enter a string with format email;name;firstname;other -MailAdvTargetRecipients=Recipients (advanced selection) +MailAdvTargetRecipients=Παραλήπτες (προχωρημένη επιλογή) AdvTgtTitle=Συμπληρώστε τα πεδία εισαγωγής για να επιλέξετε εκ των προτέρων τα τρίτα μέρη ή τις επαφές / διευθύνσεις που θέλετε να στοχεύσετε AdvTgtSearchTextHelp=Χρησιμοποιήστε το ως χαρακτήρες μπαλαντέρ. Για παράδειγμα, για να βρείτε όλα τα στοιχεία όπως jean, joe, jim , μπορείτε να πληκτρολογήσετε %%, μπορείτε επίσης να χρησιμοποιήσετε το σύμβολο ; ως διαχωριστικό για την τιμη και να χρησιμοποιήσετε το σύμβολο ! για να εξαιρέσετε κάποιες τιμές από την αναζήτηση. Για παράδειγμα η αναζήτηση jean;joe;jim%%;!jimo;!jima%% θα στοχεύει σε όλες τις τιμές που περιέχουν jean και joe, σε αυτές που ξεκινούν με jim αλλά όχι με jimo και σε καμιά που ξεκινάει με jima -AdvTgtSearchIntHelp=Use interval to select int or float value +AdvTgtSearchIntHelp=Χρησιμοποιήστε το διάστημα για να επιλέξετε τιμή int ή float AdvTgtMinVal=Ελάχιστη τιμή AdvTgtMaxVal=Μέγιστη τιμή AdvTgtSearchDtHelp=Use interval to select date value AdvTgtStartDt=Start dt. AdvTgtEndDt=End dt. AdvTgtTypeOfIncudeHelp=Στόχευση ηλεκτρονικού ταχυδρομείου τρίτου μέρους και ηλεκτρονικού ταχυδρομείου της επαφής τρίτου μέρους, ή απλώς ηλεκτρονικού ταχυδρομείου τρίτου μέρους ή απλά ηλεκτρονικού ταχυδρομείου επικοινωνίας -AdvTgtTypeOfIncude=Type of targeted email +AdvTgtTypeOfIncude=Τύπος στοχευμένου email AdvTgtContactHelp=Use only if you target contact into "Type of targeted email" -AddAll=Add all -RemoveAll=Remove all -ItemsCount=Item(s) -AdvTgtNameTemplate=Filter name -AdvTgtAddContact=Προσθέστε μηνύματα ηλεκτρονικού ταχυδρομείου σύμφωνα με τα κριτήρια -AdvTgtLoadFilter=Load filter -AdvTgtDeleteFilter=Delete filter -AdvTgtSaveFilter=Save filter -AdvTgtCreateFilter=Create filter -AdvTgtOrCreateNewFilter=Name of new filter +AddAll=Προσθήκη όλων +RemoveAll=Αφαίρεση όλων +ItemsCount=Αντικείμενο(α) +AdvTgtNameTemplate=Όνομα φίλτρου +AdvTgtAddContact=Προσθέστε email σύμφωνα με τα κριτήρια +AdvTgtLoadFilter=Φόρτωση φίλτρου +AdvTgtDeleteFilter=Διαγραφή φίλτρου +AdvTgtSaveFilter=Αποθήκευση φίλτρου +AdvTgtCreateFilter=Δημιουργία φίλτρου +AdvTgtOrCreateNewFilter=Όνομα νέου φίλτρου NoContactWithCategoryFound=Δεν βρέθηκε κατηγορία που να συνδέεται με ορισμένες επαφές/διευθύνσεις NoContactLinkedToThirdpartieWithCategoryFound=Δεν βρέθηκε κατηγορία που να συνδέεται με κάποια τρίτα μέρη OutGoingEmailSetup=Εξερχόμενα email @@ -178,3 +178,4 @@ IsAnAnswer=Είναι μια απάντηση ενός αρχικού email RecordCreatedByEmailCollector=Εγγραφή που δημιουργήθηκε από τον Συλλέκτη Email %s από το email %s DefaultBlacklistMailingStatus=Προεπιλεγμένη τιμή για το πεδίο '%s' κατά τη δημιουργία μιας νέας επαφής DefaultStatusEmptyMandatory=Κενό αλλά υποχρεωτικό +WarningLimitSendByDay=ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η ρύθμιση ή η σύμβαση της εγκατάστασης σας περιορίζει τον αριθμό των email σας ανά ημέρα σε %s . Η προσπάθεια αποστολής περισσότερων ενδέχεται να έχει ως αποτέλεσμα την επιβράδυνση ή την αναστολή της εγκατάστασης σας. Επικοινωνήστε με την υποστήριξή σας εάν χρειάζεστε υψηλότερο όριο. diff --git a/htdocs/langs/el_GR/main.lang b/htdocs/langs/el_GR/main.lang index 9256f72576a..605ee14d77a 100644 --- a/htdocs/langs/el_GR/main.lang +++ b/htdocs/langs/el_GR/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -31,8 +37,8 @@ Translation=Μετάφραση CurrentTimeZone=TimeZone PHP (server) EmptySearchString=Εισαγάγετε μη κενά κριτήρια αναζήτησης EnterADateCriteria=Εισαγάγετε κριτήρια ημερομηνίας -NoRecordFound=Δεν υπάρχουν καταχωρημένα στοιχεία -NoRecordDeleted=Δεν διαγράφηκε εγγραφή +NoRecordFound=Κανένα αρχείο δεν βρέθηκε +NoRecordDeleted=Κανένα αρχείο δεν διαγράφηκε NotEnoughDataYet=Τα δεδομένα δεν είναι επαρκή NoError=Κανένα Σφάλμα Error=Σφάλμα @@ -48,28 +54,28 @@ ErrorUnknown=Άγνωστο σφάλμα ErrorSQL=Σφάλμα SQL ErrorLogoFileNotFound=Το λογότυπο '%s' δεν βρέθηκε ErrorGoToGlobalSetup=Μεταβείτε στη ρύθμιση "Εταιρεία/Οργανισμός" για να το διορθώσετε -ErrorGoToModuleSetup=Πηγαίνετε στις ρυθμίσεις του αρθρώματος για να το διορθώσετε. +ErrorGoToModuleSetup=Πηγαίνετε στις ρυθμίσεις της ενότητας για να το διορθώσετε. ErrorFailedToSendMail=Αποτυχία αποστολής mail (αποστολέας=%s, παραλήπτης=%s) ErrorFileNotUploaded=Το αρχείο δεν φορτώθηκε. Βεβαιωθείτε ότι το μέγεθος δεν υπερβαίνει το μέγιστο επιτρεπόμενο όριο, ότι υπάρχει διαθέσιμος χώρος στο δίσκο και ότι δεν υπάρχει ήδη ένα αρχείο με το ίδιο όνομα σε αυτόν τον κατάλογο. ErrorInternalErrorDetected=Εντοπίστηκε Σφάλμα ErrorWrongHostParameter=Λάθος παράμετρος διακομιστή -ErrorYourCountryIsNotDefined=Η χώρα σας δεν έχει οριστεί. Μεταβείτε στην Αρχική σελίδα-Επεξεργασία-Επεξεργασία και δημοσιεύστε την φόρμα πάλι. -ErrorRecordIsUsedByChild=Αποτυχία κατάργησης αυτής της εγγραφής. Αυτή η εγγραφή χρησιμοποιείται από τουλάχιστον ένα παιδικό αρχείο. -ErrorWrongValue=Εσφαλμένη Τιμή -ErrorWrongValueForParameterX=Εσφαλμένη Τιμή για την παράμετρο %s +ErrorYourCountryIsNotDefined=Η χώρα σας δεν έχει οριστεί. Μεταβείτε στην Αρχική σελίδα-Ρυθμίσεις-Επεξεργασία και δημοσιεύστε την φόρμα πάλι. +ErrorRecordIsUsedByChild=Αποτυχία κατάργησης αυτής της εγγραφής. Αυτή η εγγραφή χρησιμοποιείται από τουλάχιστον ένα θυγατρικό αρχείο. +ErrorWrongValue=Λάθος τιμή +ErrorWrongValueForParameterX=Λανθασμένη τιμή για την παράμετρο %s ErrorNoRequestInError=Δεν υπάρχει αίτημα στο Σφάλμα ErrorServiceUnavailableTryLater=Η υπηρεσία δεν είναι διαθέσιμη προς το παρόν. Δοκιμάστε ξανά αργότερα.  -ErrorDuplicateField=Διπλόεγγραφή (Διπλή τιμή σε πεδίο με ξεχωριστές τιμές) -ErrorSomeErrorWereFoundRollbackIsDone=Εντοπίστηκαν ορισμένες σφάλματα. Οι αλλαγές έχουν επανέλθει. -ErrorConfigParameterNotDefined=Η παράμετρος %s δεν έχει οριστεί στο αρχείο ρυθμίσεων Dolibarr conf.php . +ErrorDuplicateField=Διπλότυπη τιμή σε ένα μοναδικό πεδίο +ErrorSomeErrorWereFoundRollbackIsDone=Βρέθηκαν ορισμένα σφάλματα. Οι αλλαγές έχουν ανατραπεί. +ErrorConfigParameterNotDefined=Η παράμετρος %s δεν έχει οριστεί στο αρχείο διαμόρφωσης του Dolibarr conf.php. ErrorCantLoadUserFromDolibarrDatabase=Αποτυχία εύρεσης του χρήστη %s στην βάση δεδομένων του Dolibarr. ErrorNoVATRateDefinedForSellerCountry=Σφάλμα, δεν ορίστηκαν ποσοστά φόρων για την χώρα '%s'. ErrorNoSocialContributionForSellerCountry=Σφάλμα, καμία κοινωνική εισφορά / φόροι ορίζονται για τη χώρα '%s'. ErrorFailedToSaveFile=Σφάλμα, αποτυχία αποθήκευσης αρχείου -ErrorCannotAddThisParentWarehouse=Προσπαθείτε να προσθέσετε μια γονική αποθήκη η οποία είναι ήδη παιδί μιας υπάρχουσας αποθήκης +ErrorCannotAddThisParentWarehouse=Προσπαθείτε να προσθέσετε μια γονική αποθήκη που είναι ήδη θυγατρική μιας υπάρχουσας αποθήκης FieldCannotBeNegative=Το πεδίο "%s" δεν μπορεί να είναι αρνητικό MaxNbOfRecordPerPage=Μέγιστος αριθμός εγγραφών ανά σελίδα -NotAuthorized=Δεν έχετε εξουσιοδότηση για να το πραγματοποιήσετε +NotAuthorized=Δεν έχετε εξουσιοδότηση(δικαιώματα) για να κάνετε αυτό. SetDate=Ορισμός ημερομηνίας SelectDate=Επιλέξτε μια ημερομηνία SeeAlso=Δείτε επίσης %s @@ -82,9 +88,9 @@ FileRenamed=Το αρχείο μετονομάστηκε με επιτυχία FileGenerated=Το αρχείο δημιουργήθηκε με επιτυχία FileSaved=Το αρχείο αποθηκεύτηκε με επιτυχία FileUploaded=Το αρχείο ανέβηκε με επιτυχία -FileTransferComplete=Τα αρχεία που ανεβάζετε με επιτυχία -FilesDeleted=Τα αρχεία διαγράφηκαν με επιτυχία -FileWasNotUploaded=Επιλέχθηκε ένα αρχείο για επισύναψη, αλλά δεν έχει μεταφερθεί ακόμη. Πατήστε στο "Επισύναψη Αρχείου". +FileTransferComplete=Τα αρχεία μεταφορτωθήκαν επιτυχώς +FilesDeleted=Τα αρχεία διαγράφηκαν επιτυχώς +FileWasNotUploaded=Ένα αρχείο έχει επιλεγεί για επισύναψη αλλά δεν έχει μεταφορτωθεί ακόμη. Κάντε κλικ στο "Επισύναψη αρχείου" για αυτό. NbOfEntries=Αριθ. Εγγραφών GoToWikiHelpPage=Online βοήθεια (απαιτείται σύνδεση στο internet) GoToHelpPage=Βοήθεια @@ -105,18 +111,18 @@ HomeArea=Αρχική LastConnexion=Τελευταία σύνδεση PreviousConnexion=Προηγούμενη σύνδεση PreviousValue=Προηγούμενη τιμή -ConnectedOnMultiCompany=Σύνδεση στην οντότητα +ConnectedOnMultiCompany=Συνδεδεμένο στο περιβάλλον ConnectedSince=Σύνδεση από -AuthenticationMode=Μέθοδος σύνδεσης -RequestedUrl=Αιτηθέν URL -DatabaseTypeManager=Τύπος διαχειριστή βάσης δεδομένων -RequestLastAccessInError=Σφάλμα στην αίτηση πρόσβασης της τελευταία βάσης δεδομένων -ReturnCodeLastAccessInError=Επιστρεφόμενος κωδικός για το σφάλμα στην αίτηση πρόσβασης της τελευταίας βάση δεδομένων -InformationLastAccessInError=Πληροφορίες για το σφάλμα στην αίτηση πρόσβασης της τελευταίας βάση δεδομένων -DolibarrHasDetectedError=Το Dolibarr ανίχνευσε τεχνικό σφάλμα -YouCanSetOptionDolibarrMainProdToZero=Μπορείτε να διαβάσετε το αρχείο καταγραφής ή να ορίσετε την επιλογή $ dolibarr_main_prod στο '0' στο αρχείο ρυθμίσεων για να λάβετε περισσότερες πληροφορίες. +AuthenticationMode=Λειτουργία ελέγχου ταυτότητας +RequestedUrl=URL που ζητήθηκε +DatabaseTypeManager=Διαχειριστής τύπου βάσης δεδομένων +RequestLastAccessInError=Τελευταίο σφάλμα αιτήματος πρόσβασης στη βάση δεδομένων +ReturnCodeLastAccessInError=Κωδικός επιστροφής για το τελευταίο σφάλμα αιτήματος πρόσβασης στη βάση δεδομένων +InformationLastAccessInError=Πληροφορίες για το τελευταίο σφάλμα αιτήματος πρόσβασης στη βάση δεδομένων +DolibarrHasDetectedError=Το Dolibarr εντόπισε ένα τεχνικό σφάλμα +YouCanSetOptionDolibarrMainProdToZero=Μπορείτε να διαβάσετε το αρχείο καταγραφής ή να ορίσετε την επιλογή $dolibarr_main_prod σε '0' στο αρχείο διαμόρφωσης για να λάβετε περισσότερες πληροφορίες. InformationToHelpDiagnose=Αυτές οι πληροφορίες μπορεί να είναι χρήσιμες για διαγνωστικούς σκοπούς (μπορείτε να ορίσετε την επιλογή $dolibarr_main_prod σε '1' για να αποκρύψετε ευαίσθητες πληροφορίες) -MoreInformation=Περισσότερς Πληροφορίες +MoreInformation=Περισσότερες πληροφορίες TechnicalInformation=Τεχνικές πληροφορίες TechnicalID=Τεχνική ταυτότητα ID LineID=Αναγνωριστικό γραμμής @@ -136,7 +142,7 @@ Home=Αρχική Help=Βοήθεια OnlineHelp=Online Βοήθεια PageWiki=Σελίδα Wiki -MediaBrowser=Πρόγραμμα περιήγησης μέσων +MediaBrowser=Πρόγραμμα περιήγησης πολυμέσων Always=Πάντα Never=Ποτέ Under=κάτω @@ -163,7 +169,7 @@ Close=Κλείσιμο CloseAs=Αλλαγή κατάστασης σε CloseBox=Καταργήστε το γραφικό στοιχείο από τον πίνακα ελέγχου Confirm=Επιβεβαίωση -ConfirmSendCardByMail=Θέλετε πραγματικά να στείλετε το περιεχόμενο αυτής της καρτέλας μέσω ταχυδρομείου στο %s ; +ConfirmSendCardByMail=Θέλετε πραγματικά να στείλετε το περιεχόμενο αυτής της καρτέλας μέσω email στο %s ; Delete=Διαγραφή Remove=Αφαίρεση Resiliate=Τερματισμός @@ -182,13 +188,13 @@ TestConnection=Δοκιμή σύνδεσης ToClone=Κλωνοποίηση ConfirmCloneAsk=Είστε βέβαιοι ότι θέλετε να κλωνοποιήσετε το αντικείμενο %s ; ConfirmClone=Επιλέξτε τα δεδομένα που θέλετε να κλωνοποιήσετε: -NoCloneOptionsSpecified=Δεν καθορίστηκαν δεδομένα προς κλωνοποίηση. +NoCloneOptionsSpecified=Δεν καθορίστηκαν δεδομένα προς αντιγραφή Of=του Go=Μετάβαση Run=Εκτέλεση CopyOf=Αντίγραφο του Show=Εμφάνιση -Hide=Κρύβω +Hide=Απόκρυψη ShowCardHere=Εμφάνιση Κάρτας Search=Αναζήτηση SearchOf=Αναζήτηση @@ -199,13 +205,13 @@ Valid=Έγκυρο Approve=Έγκριση Disapprove=Δεν εγκρίνεται ReOpen=Εκ νέου άνοιγμα -Upload=Ανεβάστε +Upload=Μεταφόρτωση ToLink=Σύνδεσμος Select=Επιλογή SelectAll=Επιλογή όλων Choose=Επιλογή Resize=Αλλαγή διαστάσεων -ResizeOrCrop=Αλλαγή μεγέθους ή περικοπή +ResizeOrCrop=Αλλαγή διαστάσεων ή Περικοπή Recenter=Επαναφορά στο κέντρο Author=Συντάκτης User=Χρήστης @@ -215,9 +221,9 @@ Groups=Ομάδες UserGroup=Ομάδα χρηστών UserGroups=Ομάδες χρηστών NoUserGroupDefined=Κανένας χρήστης δεν ορίζεται στην ομάδα -Password=Συνθηματικό -PasswordRetype=Επαναπληκτρολόγηση κωδικού -NoteSomeFeaturesAreDisabled=Πολλές δυνατότητες είναι απενεργοποιημένες σε αυτή την παρουσίαση. +Password=Κωδικός πρόσβασης +PasswordRetype=Πληκτρολογήστε ξανά τον κωδικό πρόσβασης +NoteSomeFeaturesAreDisabled=Σημειώστε ότι πολλές δυνατότητες/ενότητες είναι απενεργοποιημένες σε αυτήν την επίδειξη. Name=Όνομα NameSlashCompany=Όνομα / Εταιρεία Person=Άτομο @@ -241,14 +247,14 @@ Info=Ιστορικό Family=Οικογένεια Description=Περιγραφή Designation=Περιγραφή -DescriptionOfLine=Description of line -DateOfLine=Ημερομηνία της γραμμής -DurationOfLine=Διάρκεια της γραμμής +DescriptionOfLine=Περιγραφή γραμμής +DateOfLine=Ημερομηνία γραμμής +DurationOfLine=Διάρκεια γραμμής ParentLine=Αναγνωριστικό γονικής γραμμής -Model=Πρότυπο Doc +Model=Πρότυπο εγγράφου DefaultModel=Προεπιλεγμένο πρότυπο εγγράφου Action=Ενέργεια -About=Πληροφορίες +About=Σχετικά με Number=Αριθμός NumberByMonth=Αναφορές συνόλων ανά μήνα AmountByMonth=Ποσό ανά μήνα @@ -300,9 +306,9 @@ RegistrationDate=Ημερομηνία Εγγραφής UserCreation=Χρήστης δημιουργίας UserModification=Χρήστης τροποποίησης UserValidation=Χρήστης επικύρωσης -UserCreationShort=Δημιουργία χρήστη -UserModificationShort=Τροποποιών χρήστης -UserValidationShort=Εγκυρος. χρήστης +UserCreationShort=Χρήστης δημιουργίας +UserModificationShort=Χρήστης τροποποίησης +UserValidationShort=Χρήστης επικύρωσης DurationYear=έτος DurationMonth=μήνας DurationWeek=εβδομάδα @@ -333,12 +339,12 @@ Tomorrow=Αύριο Morning=Πρωί Afternoon=Απόγευμα Quadri=Τετραπλής -MonthOfDay=Μήνας από την ημέρα +MonthOfDay=Μήνας της ημέρας DaysOfWeek=Ημέρες της εβδομάδας HourShort=Ω -MinuteShort=mn +MinuteShort=λ Rate=Βαθμός -CurrencyRate=Ποσοστό μετατροπής νομίσματος +CurrencyRate=Τιμή μετατροπής νομίσματος UseLocalTax=με Φ.Π.Α Bytes=Bytes KiloBytes=Kilobytes @@ -355,7 +361,7 @@ Tb=Tb Cut=Αποκοπή Copy=Αντιγραφή Paste=Επικόλληση -Default=Προκαθορ. +Default=Προκαθορισμένο DefaultValue=Προκαθορισμένη Τιμή DefaultValues=Προεπιλεγμένες τιμές / φίλτρα / ταξινόμηση Price=Τιμή @@ -365,12 +371,12 @@ UnitPriceHT=Τιμή μονάδας (εκτός) UnitPriceHTCurrency=Τιμή μονάδας (εκτός) (νόμισμα) UnitPriceTTC=Τιμή Μονάδος PriceU=Τιμή μον. -PriceUHT=Τιμή μον. -PriceUHTCurrency=Τιμή μονάδας (καθαρό) (νόμισμα) +PriceUHT=Τιμή μον. (καθαρή) +PriceUHTCurrency=Τιμή μον. (καθαρή) (νόμισμα) PriceUTTC=Τιμή μον. (συμπ. Φ.Π.Α.) Amount=Ποσό AmountInvoice=Ποσό Τιμολογίου -AmountInvoiced=Ποσό τιμολογημένο +AmountInvoiced=Ποσό που τιμολογήθηκε AmountInvoicedHT=Ποσό που τιμολογήθηκε (χωρίς φόρο) AmountInvoicedTTC=Ποσό που τιμολογήθηκε (συμπ. φόρου) AmountPayment=Ποσό Πληρωμής @@ -380,7 +386,7 @@ AmountHT=Ποσό (εκτός φόρου) AmountTTC=Ποσό (με Φ.Π.Α.) AmountVAT=Ποσό Φόρου MulticurrencyAlreadyPaid=Ήδη πληρωμένο, αρχικό νόμισμα -MulticurrencyRemainderToPay=Πληρώστε, αρχικό νόμισμα +MulticurrencyRemainderToPay=Υπόλοιπο προς πληρωμή, αρχικό νόμισμα MulticurrencyPaymentAmount=Ποσό πληρωμής, αρχικό νόμισμα MulticurrencyAmountHT=Ποσό (εκτός φόρου), αρχικό νόμισμα MulticurrencyAmountTTC=Ποσό (με φόρους), αρχικό νόμισμα @@ -392,8 +398,8 @@ AmountLT1ES=Ποσό RE AmountLT2ES=Ποσό IRPF AmountTotal=Συνολικό Ποσό AmountAverage=Μέσο Ποσό -PriceQtyMinHT=Τιμή ελάχιστη ποσότητα. (εκτός φόρου) -PriceQtyMinHTCurrency=Τιμή ελάχιστη ποσότητα. (εκτός φόρου) (νόμισμα) +PriceQtyMinHT=Τιμή ελάχιστης ποσότητας (εκτός φόρου) +PriceQtyMinHTCurrency=Τιμή ελάχιστης ποσότητας (εκτός φόρου) (νόμισμα) PercentOfOriginalObject=Ποσοστό του αρχικού αντικειμένου AmountOrPercent=Ποσό ή ποσοστό Percentage=Ποσοστό @@ -404,14 +410,14 @@ TotalHT100Short=Σύνολο 100%% (εκτός) TotalHTShortCurrency=Σύνολο (εξαιρουμένου του νομίσματος) TotalTTCShort=Σύνολο (με Φ.Π.Α.) TotalHT=Σύνολο χωρίς ΦΠΑ -TotalHTforthispage=Συνολικά (χωρίς φόρο) για αυτήν τη σελίδα +TotalHTforthispage=Σύνολο (χωρίς φόρο) για αυτήν τη σελίδα Totalforthispage=Σύνολο για αυτή τη σελίδα TotalTTC=Σύνολο (με Φ.Π.Α.) TotalTTCToYourCredit=Σύνολο (με ΦΠΑ) στο υπόλοιπο TotalVAT=Συνολικός Φ.Π.Α. TotalVATIN=Σύνολο IGST -TotalLT1=Συνολικός Φ.Π.Α. 2 -TotalLT2=Συνολικός Φ.Π.Α. 3 +TotalLT1=Συνολικός φόρος 2 +TotalLT2=Συνολικός φόρος 3 TotalLT1ES=Σύνολο RE TotalLT2ES=Σύνολο IRPF TotalLT1IN=Σύνολο CGST @@ -437,12 +443,12 @@ VATRate=Συντελεστής Φ.Π.Α. RateOfTaxN=Συντελεστής φόρου %s VATCode=Κωδικός φορολογικού συντελεστή VATNPR=Φορολογικός συντελεστής NPR -DefaultTaxRate=Προκαθορισμένος συντελεστής φορολογίας -Average=Μ.Ο. +DefaultTaxRate=Προκαθορισμένος φορολογικός συντελεστής +Average=Μέση τιμή Sum=Σύνολο Delta=Δέλτα StatusToPay=Προς πληρωμή -RemainToPay=Πληρώστε +RemainToPay=Υπόλοιπο προς πληρωμή Module=Ενότητα / Εφαρμογή Modules=Ενότητες / Εφαρμογές Option=Επιλογή @@ -451,15 +457,15 @@ List=Λίστα FullList=Πλήρης Λίστα FullConversation=Πλήρης συνομιλία Statistics=Στατιστικά -OtherStatistics=Οι άλλες στατιστικές +OtherStatistics=Άλλα στατιστικά στοιχεία Status=Κατάσταση Favorite=Αγαπημένα -ShortInfo=Info. -Ref=Κωδ. -ExternalRef=Κωδ. extern +ShortInfo=Πληροφορίες +Ref=Αναφ. +ExternalRef=εξωτερική Αναφ. RefSupplier=Αναφ. Προμηθευτή -RefPayment=Κωδ. πληρωμής -CommercialProposalsShort=Εμπορικές προτάσεις +RefPayment=Αναφ. πληρωμής +CommercialProposalsShort=Εμπορικές προσφορές Comment=Σχόλιο Comments=Σχόλια ActionsToDo=Ενέργειες που πρέπει να γίνουν @@ -470,24 +476,24 @@ ActionRunningNotStarted=Δεν έχουν ξεκινήσει ActionRunningShort=Σε εξέλιξη ActionDoneShort=Ολοκληρωμένες ActionUncomplete=Ατελής -LatestLinkedEvents=Τα πιο πρόσφατα συνδεδεμένα συμβάντα %s +LatestLinkedEvents=Τελευταία %s συνδεδεμένα συμβάντα CompanyFoundation=Εταιρεία / Οργανισμός Accountant=Λογιστής -ContactsForCompany=Επαφές για αυτό το στοιχείο -ContactsAddressesForCompany=Επαφές/Διευθύνσεις για αυτό το στοιχείο. -AddressesForCompany=Διευθύνσεις για αυτό τον Πελ./Προμ. -ActionsOnCompany=Εκδηλώσεις για αυτό το τρίτο μέρος -ActionsOnContact=Εκδηλώσεις για αυτήν την επαφή / διεύθυνση -ActionsOnContract=Εκδηλώσεις για αυτή τη σύμβαση -ActionsOnMember=Εκδηλώσεις σχετικά με αυτό το μέλος -ActionsOnProduct=Εκδηλώσεις σχετικά με αυτό το προϊόν +ContactsForCompany=Επαφές για αυτό το τρίτο μέρος +ContactsAddressesForCompany=Επαφές/διευθύνσεις για αυτό το τρίτο μέρος +AddressesForCompany=Διευθύνσεις για αυτό το τρίτο μέρος +ActionsOnCompany=Ενέργειες για αυτό το τρίτο μέρος +ActionsOnContact=Ενέργειες για αυτήν την επαφή / διεύθυνση +ActionsOnContract=Ενέργειες για αυτή τη σύμβαση +ActionsOnMember=Ενέργειες σχετικά με αυτό το μέλος +ActionsOnProduct=Ενέργειες σχετικά με αυτό το προϊόν NActionsLate=%s καθυστερ. ToDo=Να γίνουν -Completed=Ολοκληρώθηκε το +Completed=Ολοκληρωμένα Running=Σε εξέλιξη RequestAlreadyDone=Η αίτηση έχει ήδη καταγραφεί Filter=Φίλτρο -FilterOnInto=Κριτήρια αναζήτησης '%s' σε πεδίο +FilterOnInto=Κριτήρια αναζήτησης '%s' στα πεδία%s RemoveFilter=Αφαίρεση φίλτρου ChartGenerated=Το γράφημα δημιουργήθηκε ChartNotGenerated=Το γράφημα δεν δημιουργήθηκε @@ -543,10 +549,10 @@ Discount=Έκπτωση Unknown=Άγνωστο General=Γενικά Size=Μέγεθος -OriginalSize=Αυθεντικό μέγεθος +OriginalSize=Αρχικό μέγεθος Received=Παραλήφθηκε -Paid=Πληρωμές -Topic=Αντικείμενο +Paid=Πληρωμένα +Topic=Θέμα ByCompanies=Ανά στοιχείο ByUsers=Ανα χρήστη Links=Σύνδεσμοι @@ -555,20 +561,20 @@ Rejects=Απορρίψεις Preview=Προεπισκόπηση NextStep=Επόμενο Βήμα Datas=Δεδομένα -None=None -NoneF=None +None=Κανένας +NoneF=Καμία NoneOrSeveral=Κανένα ή πολλά Late=Καθυστερ. LateDesc=Ένα στοιχείο ορίζεται ως Καθυστέρηση σύμφωνα με τη διαμόρφωση του συστήματος στο μενού Αρχική σελίδα - Ρύθμιση - Ειδοποιήσεις. NoItemLate=Δεν υπάρχει καθυστερημένο στοιχείο -Photo=Φωτογραφία -Photos=Φωτογραφίες -AddPhoto=Προσθήκη Φωτογραφίας +Photo=Εικόνα +Photos=Εικόνες +AddPhoto=Προσθήκη εικόνας DeletePicture=Διαγραφή εικόνας ConfirmDeletePicture=Επιβεβαίωση διαγραφής εικόνας Login=Σύνδεση LoginEmail=Σύνδεση (email) -LoginOrEmail=Σύνδεση ή ηλεκτρονικό ταχυδρομείο +LoginOrEmail=Όνομα σύνδεσης ή email CurrentLogin=Τρέχουσα Σύνδεση EnterLoginDetail=Εισαγάγετε στοιχεία σύνδεσης January=Ιανουάριος @@ -607,18 +613,18 @@ MonthShort09=Σεπ MonthShort10=Οκτ MonthShort11=Νοέ MonthShort12=Δεκ -MonthVeryShort01=J -MonthVeryShort02=Π -MonthVeryShort03=Δ -MonthVeryShort04=ΕΝΑ -MonthVeryShort05=Δ -MonthVeryShort06=J -MonthVeryShort07=J -MonthVeryShort08=ΕΝΑ -MonthVeryShort09=Κ +MonthVeryShort01=Ι +MonthVeryShort02=Φ +MonthVeryShort03=Μ +MonthVeryShort04=Α +MonthVeryShort05=Μ +MonthVeryShort06=Ι +MonthVeryShort07=Ι +MonthVeryShort08=Α +MonthVeryShort09=Σ MonthVeryShort10=Ο MonthVeryShort11=Ν -MonthVeryShort12=ρε +MonthVeryShort12=Δ AttachedFiles=Επισυναπτόμενα αρχεία και έγγραφα JoinMainDoc=Συμμετοχή στο κύριο έγγραφο JoinMainDocOrLastGenerated=Στείλτε το κύριο έγγραφο ή το τελευταίο που δημιουργήθηκε εάν δεν βρεθεί @@ -641,12 +647,12 @@ ReadPermissionNotAllowed=Δεν υπάρχει δικαίωμα ανάγνωση AmountInCurrency=Σύνολο σε %s Example=Παράδειγμα Examples=Παραδείγματα -NoExample=Δεν υπάρχει παράδειγμα +NoExample=Κανένα παράδειγμα FindBug=Αναφορά σφάλματος -NbOfThirdParties=Αριθμός στοιχείων +NbOfThirdParties=Αριθμός τρίτων μερών NbOfLines=Αριθμός Γραμμών NbOfObjects=Αριθμός Αντικειμένων -NbOfObjectReferers=Πλήθος σχετιζόμενων αντικειμένων +NbOfObjectReferers=Αριθμός σχετικών στοιχείων Referers=Σχετιζόμενα αντικείμενα TotalQuantity=Συνολική ποσότητα DateFromTo=Από %s μέχρι %s @@ -654,23 +660,23 @@ DateFrom=Από %s DateUntil=Μέχρι %s Check=Έλεγχος Uncheck=Αποεπιλογή -Internal=Internal -External=External -Internals=Internal -Externals=External +Internal=Εσωτερικός +External=Εξωτερικός +Internals=Εσωτερικόι +Externals=Εξωτερικοί Warning=Προειδοποίηση Warnings=Προειδοποιήσεις BuildDoc=Δημιουργία Doc Entity=Οντότητα Entities=Οντότητες CustomerPreview=Προεπισκόπηση Πελάτη -SupplierPreview=Προβολή προμηθευτή +SupplierPreview=Προεπισκόπηση προμηθευτή ShowCustomerPreview=Εμφάνιση Προεπισκόπησης Πελάτη ShowSupplierPreview=Εμφάνιση προεπισκόπησης προμηθευτή RefCustomer=Κωδ. Πελάτη InternalRef=Εσωτερική αναφορά Currency=Νόμισμα -InfoAdmin=Πληροφορία για τους διαχειριστές +InfoAdmin=Πληροφορίες για διαχειριστές Undo=Αναίρεση Redo=Επανεκτέλεση ExpandAll=Επέκταση όλων @@ -683,35 +689,36 @@ Response=Απάντηση Priority=Προτεραιότητα SendByMail=Απόστειλε μέσω ηλεκτρονικού ταχυδρομείου MailSentBy=Το email στάλθηκε από -NotSent=Δεν αποστέλλεται +NotSent=Δεν εστάλη TextUsedInTheMessageBody=Κείμενο email SendAcknowledgementByMail=Αποστολή email επιβεβαίωσης SendMail=Αποστολή email Email=Email NoEMail=Χωρίς email -AlreadyRead=Διαβάσατε ήδη +AlreadyRead=Διαβασμένα NotRead=Αδιάβαστο NoMobilePhone=Χωρείς κινητό τηλέφωνο Owner=Ιδιοκτήτης -FollowingConstantsWillBeSubstituted=Οι ακόλουθες σταθερές θα αντικαταστασθούν με τις αντίστοιχες τιμές +FollowingConstantsWillBeSubstituted=Οι ακόλουθες σταθερές θα αντικατασταθούν με τις αντίστοιχες τιμές Refresh=Ανανέωση BackToList=Επιστροφή στη Λίστα BackToTree=Επιστροφή στην δομή δέντρου GoBack=Επιστροφή CanBeModifiedIfOk=Μπορεί να τροποποιηθεί αν είναι έγκυρο -CanBeModifiedIfKo=Τροποποιήσιμο αν δεν είναι έγκυρο +CanBeModifiedIfKo=Μπορεί να τροποποιηθεί εάν δεν ισχύει ValueIsValid=Η τιμή είναι έγκυρη ValueIsNotValid=Η τιμή δεν είναι έγκυρη RecordCreatedSuccessfully=Η εγγραφή δημιουργήθηκε με επιτυχία RecordModifiedSuccessfully=Η εγγραφή τροποποιήθηκε με επιτυχία -RecordsModified=Η εγγραφή τροποποιήθηκε %s -RecordsDeleted=Η εγγραφή (ες) %s διαγράφηκε +RecordsModified=%s εγγραφές τροποποιήθηκαν +RecordsDeleted=%s εγγραφές διαγράφηκαν RecordsGenerated=%s καταγεγραμμένες εγγραφές AutomaticCode=Αυτόματος Κωδικός FeatureDisabled=Η δυνατότητα είναι απενεργοποιημένη MoveBox=Μετακίνηση widget Offered=Προσφέρθηκε NotEnoughPermissions=Δεν έχετε τα απαραίτητα δικαιώματα +UserNotInHierachy=Αυτή η ενέργεια αφορά τους επόπτες αυτού του χρήστη SessionName=Όνομα συνόδου Method=Μέθοδος Receive=Παραλαβή @@ -722,13 +729,13 @@ PartialWoman=Μερική TotalWoman=Συνολικές NeverReceived=Δεν παραλήφθηκε Canceled=Ακυρώθηκε -YouCanChangeValuesForThisListFromDictionarySetup=Μπορείτε να αλλάξετε τιμές για αυτήν τη λίστα από το μενού Ρύθμιση - Λεξικά +YouCanChangeValuesForThisListFromDictionarySetup=Μπορείτε να αλλάξετε τιμές για αυτήν τη λίστα από το μενού Ρυθμίσεις - Λεξικά YouCanChangeValuesForThisListFrom=Μπορείτε να αλλάξετε τιμές για αυτήν τη λίστα από το μενού %s YouCanSetDefaultValueInModuleSetup=Μπορείτε να ορίσετε την προεπιλεγμένη τιμή που χρησιμοποιείται κατά τη δημιουργία μιας νέας εγγραφής στη ρύθμιση μονάδων Color=Χρώμα Documents=Συνδεδεμένα Αρχεία Documents2=Έγγραφα -UploadDisabled=Το ανέβασμα αρχείων έχει απενεργοποιηθεί +UploadDisabled=Η μεταφόρτωση απενεργοποιήθηκε MenuAccountancy=Λογιστική MenuECM=Έγγραφα MenuAWStats=AWStats @@ -738,8 +745,8 @@ MenuTaxesAndSpecialExpenses=Φόροι | Ειδικά έξοδα ThisLimitIsDefinedInSetup=Όριο Dolibarr (Μενού Ρυθμίσεις-Ασφάλεια): %s Kb, Όριο PHP: %s Kb ThisLimitIsDefinedInSetupAt=Όριο Dolibarr (Μενού %s): %s Kb, όριο PHP (Param %s): %s Kb NoFileFound=Δεν έχουν μεταφορτωθεί έγγραφα -CurrentUserLanguage=Τρέχουσα Γλώσσα -CurrentTheme=Τρέχων Θέμα +CurrentUserLanguage=Τρέχουσα γλώσσα +CurrentTheme=Τρέχον θέμα CurrentMenuManager=Τρέχουσα διαχειρηση μενού Browser=Browser Layout=Σχέδιο @@ -756,15 +763,15 @@ RootOfMedias=Ρίζα δημόσιων μέσων (/ media) Informations=Πληροφορίες Page=Σελίδα Notes=Σημειώσεις -AddNewLine=Προσθήκη Γραμμής +AddNewLine=Προσθήκη νέας γραμμής AddFile=Προσθήκη Αρχείου FreeZone=Προϊόν ελεύθερου κειμένου FreeLineOfType=Στοιχείο ελεύθερου κειμένου, πληκτρολογήστε: CloneMainAttributes=Κλωνοποίηση αντικειμένου με τα βασικά του χαρακτηριστικά ReGeneratePDF=Επαναπαραγωγή PDF -PDFMerge=Ενσωμάτωση PDF -Merge=Ενσωμάτωση -DocumentModelStandardPDF=Πρότυπο πρότυπο PDF +PDFMerge=Συγχώνευση PDF +Merge=Συγχώνευση +DocumentModelStandardPDF=Τυπικό πρότυπο PDF PrintContentArea=Εμγάνιση σελίδας για εκτύπωση MenuManager=Menu manager WarningYouAreInMaintenanceMode=Προσοχή, βρίσκεστε σε λειτουργία συντήρησης: επιτρέπεται μόνο η σύνδεση %s να χρησιμοποιεί την εφαρμογή σε αυτή τη λειτουργία. @@ -773,15 +780,15 @@ CoreErrorMessage=Λυπούμαστε, παρουσιάστηκε ένα σφά CreditCard=Πιστωτική Κάρτα ValidatePayment=Επικύρωση πληρωμής CreditOrDebitCard=Πιστωτική ή χρεωστική κάρτα -FieldsWithAreMandatory=Τα πεδία %s είναι υποχρεωτικά +FieldsWithAreMandatory=Τα πεδία με%s είναι υποχρεωτικά FieldsWithIsForPublic=Τα πεδία με %s εμφανίζονται στη δημόσια λίστα των μελών. Αν δεν το θέλετε, καταργήστε την επιλογή του πλαισίου "δημόσιο". AccordingToGeoIPDatabase=(σύμφωνα με τη μετατροπή GeoIP) Line=Γραμμή -NotSupported=Χωρίς Υποστήριξη +NotSupported=Δεν υποστηρίζεται RequiredField=Απαιτούμενο Πεδίο Result=Αποτέλεσμα ToTest=Δοκιμή -ValidateBefore=Η καρτέλα πρέπει να επικυρωθεί πριν χρησιμοποιηθεί αυτή τη δυνατότητα +ValidateBefore=Το στοιχείο πρέπει να επικυρωθεί πριν χρησιμοποιήσετε αυτήν τη δυνατότητα Visibility=Ορατότητα Totalizable=Συνολικά TotalizableDesc=Αυτό το πεδίο είναι συνολικά σε λίστα @@ -790,7 +797,7 @@ Hidden=Κρυφό Resources=Πόροι Source=Πηγή Prefix=Πρόθεμα -Before=Προτού +Before=Πριν After=Μετά IPAddress=Η διεύθυνση IP Frequency=Συχνότητα @@ -798,7 +805,7 @@ IM=Άμεσων μηνυμάτων NewAttribute=Νέο χαρακτηριστικό AttributeCode=Κωδικός Ιδιότητα URLPhoto=URL της φωτογραφία / λογότυπο -SetLinkToAnotherThirdParty=Σύνδεση με άλλο Στοιχείο +SetLinkToAnotherThirdParty=Σύνδεση με άλλο τρίτο μέρος LinkTo=Σύνδεση σε LinkToProposal=Σύνδεση σε προσφορά LinkToOrder=Σύνδεση με παραγγελία @@ -813,25 +820,25 @@ LinkToTicket=Σύνδεση με το εισιτήριο LinkToMo=Σύνδεσμος προς Mo CreateDraft=Δημιουργία σχεδίου SetToDraft=Επιστροφή στο προσχέδιο -ClickToEdit=Κάντε κλικ για να επεξεργαστείτε +ClickToEdit=Κάντε κλικ για επεξεργασία ClickToRefresh=Κάντε κλικ για ανανέωση -EditWithEditor=Επεξεργασία με CKEditor +EditWithEditor=Επεξεργασία με το CKEditor EditWithTextEditor=Επεξεργασία με πρόγραμμα επεξεργασίας κειμένου EditHTMLSource=Επεξεργασία προέλευσης HTML ObjectDeleted=Αντικείμενο %s διαγράφεται -ByCountry=Με τη χώρα -ByTown=Με την πόλη +ByCountry=Ανά χώρα +ByTown=Ανά πόλη ByDate=Με ημερομηνία -ByMonthYear=Με μήνας / έτος -ByYear=Με χρόνια +ByMonthYear=Ανά μήνα/έτος +ByYear=Ανά έτος ByMonth=Με το μήνα -ByDay=Μέχρι την ημέρα +ByDay=Ανά μέρα BySalesRepresentative=Με τον αντιπρόσωπο πωλήσεων LinkedToSpecificUsers=Συνδέεται με μια συγκεκριμένη επαφή χρήστη NoResults=Δεν υπάρχουν αποτελέσματα AdminTools=Εργαλεία διαχειριστή SystemTools=Εργαλεία συστήματος -ModulesSystemTools=Εργαλεία πρόσθετων +ModulesSystemTools=Εργαλεία ενοτήτων Test=Δοκιμή Element=Στοιχείο NoPhotoYet=Δεν υπαρχουν διαθεσημες φωτογραφίες ακόμα @@ -873,7 +880,7 @@ ViewGantt=Gantt θέα ViewKanban=Θέα στο Kanban Mandatory=Υποχρεωτικό Hello=Χαίρετε -GoodBye=Αντιο σας +GoodBye=Αντίο σας Sincerely=Ειλικρινώς ConfirmDeleteObject=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το αντικείμενο; DeleteLine=Διαγραφή γραμμής @@ -884,7 +891,7 @@ TooManyRecordForMassAction=Έχουν επιλεγεί πάρα πολλά αρ NoRecordSelected=Δεν έχει επιλεγεί εγγραφή MassFilesArea=Περιοχή για αρχεία που δημιουργούνται από μαζικές ενέργειες ShowTempMassFilesArea=Εμφάνιση περιοχής αρχείων που έχουν δημιουργηθεί με μαζικές ενέργειες -ConfirmMassDeletion=Διαγραφή μαζικής επιβεβαίωσης +ConfirmMassDeletion=Επιβεβαίωση μαζικής διαγραφής ConfirmMassDeletionQuestion=Είστε βέβαιοι ότι θέλετε να διαγράψετε τις επιλεγμένες εγγραφές %s; RelatedObjects=Σχετικά Αντικείμενα ClassifyBilled=Χαρακτηρισμός ως τιμολογημένο @@ -892,7 +899,7 @@ ClassifyUnbilled=Ταξινόμηση των μη τιμολογημένων Progress=Πρόοδος ProgressShort=Progr. FrontOffice=Μπροστινό γραφείο -BackOffice=Back office +BackOffice=Υποστήριξη Submit=Υποβολή View=Προβολή Export=Εξαγωγή @@ -905,20 +912,20 @@ ExportOfPiecesAlreadyExportedIsEnable=Η εξαγωγή τεμαχίων που ExportOfPiecesAlreadyExportedIsDisable=Η εξαγωγή τεμαχίων που έχουν ήδη εξαχθεί είναι απενεργοποιημένη AllExportedMovementsWereRecordedAsExported=Όλες οι εξαγόμενες κινήσεις καταγράφηκαν ως εξαγόμενες NotAllExportedMovementsCouldBeRecordedAsExported=Δεν μπορούν να καταγραφούν όλες οι εξαγόμενες κινήσεις ως εξαγωγές -Miscellaneous=Miscellaneous +Miscellaneous=Διάφορα Calendar=Ημερολόγιο GroupBy=Ομαδοποίηση κατά... ViewFlatList=Προβολή λίστας ViewAccountList=Προβολή καθολικού ViewSubAccountList=Προβολή καθολικού δευτερεύοντος λογαριασμού -RemoveString=Αφαιρέστε τη συμβολοσειρά '%s' +RemoveString=Κατάργηση συμβολοσειράς '%s' SomeTranslationAreUncomplete=Ορισμένες από τις διαθέσιμες γλώσσες ενδέχεται να έχουν μεταφραστεί μόνο εν μέρει ή να περιέχουν σφάλματα. Βοηθήστε στη διόρθωση της γλώσσας σας κάνοντας εγγραφή στο https://transifex.com/projects/p/dolibarr/ για να προσθέσετε τις βελτιώσεις σας. DirectDownloadLink=Δημόσιος σύνδεσμος λήψης PublicDownloadLinkDesc=Απαιτείται μόνο ο σύνδεσμος για τη λήψη του αρχείου DirectDownloadInternalLink=Ιδιωτικός σύνδεσμος λήψης PrivateDownloadLinkDesc=Πρέπει να είστε συνδεδεμένοι και χρειάζεστε δικαιώματα για να δείτε ή να κατεβάσετε το αρχείο Download=Κατεβάστε -DownloadDocument=Κάντε λήψη εγγράφου +DownloadDocument=Λήψη εγγράφου ActualizeCurrency=Ενημέρωση τιμής νομίσματος Fiscalyear=Οικονομικό έτος ModuleBuilder=Ενότητα και Εργαλείο δημιουργίας εφαρμογών @@ -933,10 +940,10 @@ ExpenseReports=Αναφορές εξόδων HR=HR HRAndBank=HR και Τράπεζα AutomaticallyCalculated=Αυτόματα υπολογισμένο -TitleSetToDraft=Επιστρέψτε στο σχέδιο +TitleSetToDraft=Επιστροφή σε προσχέδιο ConfirmSetToDraft=Είστε βέβαιοι ότι θέλετε να επιστρέψετε στην κατάσταση Προετοιμασίας; ImportId=Εισαγωγή αναγνωριστικού -Events=Ενέργειες +Events=Συμβάντα EMailTemplates=Πρότυπα ηλεκτρονικού ταχυδρομείου FileNotShared=Αρχείο που δεν μοιράζεται με εξωτερικό κοινό Project=Έργο @@ -1060,7 +1067,7 @@ Monthly=Μηνιαία Quarterly=Τριμηνιαία Annual=Ετήσια Local=Τοπικά -Remote=Απομακρυσμένα +Remote=Απομακρυσμένο LocalAndRemote=Τοπικά και απομακρυσμένα KeyboardShortcut=Συντόμευση πληκτρολογίου AssignedTo=Ανάθεση σε @@ -1078,17 +1085,17 @@ NoFilesUploadedYet=Παρακαλώ μεταφορτώστε ένα έγγραφ SeePrivateNote=Δείτε την ιδιωτική σημείωση PaymentInformation=Πληροφορίες Πληρωμής ValidFrom=Ισχύει από -ValidUntil=Εγκυρο μέχρι +ValidUntil=Έγκυρο μέχρι NoRecordedUsers=Δεν υπάρχουν χρήστες ToClose=Προς κλείσιμο ToRefuse=Προς απόρριψη ToProcess=Προς επεξεργασία ToApprove=Προς έγκριση GlobalOpenedElemView=Σφαιρική άποψη -NoArticlesFoundForTheKeyword=Δεν βρέθηκε κανένα άρθρο για τη λέξη-κλειδί ' %s ' -NoArticlesFoundForTheCategory=Δεν βρέθηκε κανένα άρθρο για την κατηγορία +NoArticlesFoundForTheKeyword=Δεν βρέθηκε άρθρο για τη λέξη-κλειδί " %s " +NoArticlesFoundForTheCategory=Δεν βρέθηκε άρθρο για την κατηγορία ToAcceptRefuse=Αποδοχή | άρνηση -ContactDefault_agenda=Εκδήλωση +ContactDefault_agenda=Συμβάν ContactDefault_commande=Παραγγελία ContactDefault_contrat=Συμβόλαιο ContactDefault_facture=Τιμολόγιο @@ -1097,12 +1104,12 @@ ContactDefault_invoice_supplier=Τιμολόγιο Προμηθευτή ContactDefault_order_supplier=Εντολή αγοράς ContactDefault_project=Έργο ContactDefault_project_task=Εργασία -ContactDefault_propal=Πρόταση +ContactDefault_propal=Προσφορά ContactDefault_supplier_proposal=Προσφορά Προμηθευτή ContactDefault_ticket=Εισιτήριο -ContactAddedAutomatically=Η επαφή που προστέθηκε από τους ρόλους του τρίτου μέρους επικοινωνίας +ContactAddedAutomatically=Η επαφή προστέθηκε από ρόλους τρίτων επαφών More=Περισσότερα -ShowDetails=Εμφάνισε λεπτομέρειες +ShowDetails=Εμφάνιση λεπτομερειών CustomReports=Προσαρμοσμένες αναφορές StatisticsOn=Στατιστικά στοιχεία για SelectYourGraphOptionsFirst=Επιλέξτε τις επιλογές γραφήματος για να δημιουργήσετε ένα γράφημα @@ -1127,7 +1134,7 @@ VALIDATEInDolibarr=Η εγγραφή %s επικυρώθηκε APPROVEDInDolibarr=Εγκρίθηκε η εγγραφή %s DefaultMailModel=Προεπιλεγμένο μοντέλο αλληλογραφίας PublicVendorName=Επωνυμία προμηθευτή -DateOfBirth=Ημερομηνία γεννήσεως +DateOfBirth=Ημερομηνία γέννησης SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry=Το Security token έχει λήξει, επομένως η ενέργεια ακυρώθηκε. Παρακαλώ προσπαθήστε ξανά. UpToDate=Ενημερωμένο OutOfDate=Ξεπερασμένο @@ -1173,7 +1180,10 @@ AddLineOnPosition=Προσθήκη γραμμής στη θέση (στο τέλ ConfirmAllocateCommercial=Επιβεβαίωση ορισμού αντιπροσώπου πωλήσεων ConfirmAllocateCommercialQuestion=Είστε σίγουροι ότι θέλετε να ορίσετε τις επιλεγμένες εγγραφές %s; CommercialsAffected=Εκπρόσωποι πωλήσεων που αφορά -CommercialAffected=Εκπρόσωποι πωλήσεων που αφορά -YourMessage=Το μήνυμα σας +CommercialAffected=Εκπρόσωπος πωλήσεων που αφορά +YourMessage=Το μήνυμά σας YourMessageHasBeenReceived=Το μήνυμά σας έχει ληφθεί. Θα απαντήσουμε ή θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό. UrlToCheck=URL για έλεγχο +Automation=Αυτοματισμός +CreatedByEmailCollector=Δημιουργήθηκε από τον συλλέκτη Email +CreatedByPublicPortal=Δημιουργήθηκε από Δημόσια πύλη diff --git a/htdocs/langs/el_GR/members.lang b/htdocs/langs/el_GR/members.lang index 9a12a0c43bc..64f8f69d16c 100644 --- a/htdocs/langs/el_GR/members.lang +++ b/htdocs/langs/el_GR/members.lang @@ -10,7 +10,7 @@ ThirdpartyNotLinkedToMember=Το τρίτο μέρος δεν συνδέεται MembersTickets=Φύλλο διεύθυνσης μέλους FundationMembers=Μέλη οργανισμού ListOfValidatedPublicMembers=Λίστα πιστοποιημένων φανερών μελών -ErrorThisMemberIsNotPublic=Το μέλος δεν είναι δημόσιο +ErrorThisMemberIsNotPublic=Αυτό το μέλος δεν είναι δημόσιο ErrorMemberIsAlreadyLinkedToThisThirdParty=Ένα άλλο μέλος (όνομα: %s, login: %s) έχει ήδη συνδεθεί με τρίτο μέρος %s. Καταργήστε αυτόν τον σύνδεσμο πρώτα επειδή ένα τρίτο μέρος δεν μπορεί να συνδέεται μόνο με ένα μέλος (και το αντίστροφο). ErrorUserPermissionAllowsToLinksToItselfOnly=Για λόγους ασφαλείας, πρέπει να σας παραχωρηθούν δικαιώματα επεξεργασίας όλων των χρηστών για να μπορείτε να συνδέσετε ένα μέλος με έναν χρήστη που δεν είναι δικός σας. SetLinkToUser=Σύνδεσμος σε χρήστη του Dolibarr @@ -36,6 +36,7 @@ EndSubscription=Τέλος ιδιότητας συνδρομής μέλους SubscriptionId=Αναγνωριστικό συνδρομής WithoutSubscription=Χωρίς συνδρομή MemberId=Αναγνωριστικό μέλους +MemberRef= Αναφ. Μέλους NewMember=Νέο μέλος MemberType=Τύπος μέλους MemberTypeId=Αναγνωριστικό τύπου μέλους @@ -100,11 +101,11 @@ Filehtpasswd=htpasswd file ValidateMember=Επικύρωση ενός μέλους ConfirmValidateMember=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτό το μέλος; FollowingLinksArePublic=Οι παρακάτω σύνδεσμοι είναι ανοιχτές σελίδες που δεν προστατεύονται από οποιαδήποτε άδεια του Dolibarr. Δεν είναι μορφοποιημένες σελίδες, παρέχονται ως παράδειγμα για να παρουσιάσουν τον τρόπο ταξινόμησης της βάσης δεδομένων των μελών. -PublicMemberList=Λίστα δημόσιων μελών +PublicMemberList=Δημόσια λίστα μελών BlankSubscriptionForm=Δημόσια φόρμα εγγραφής BlankSubscriptionFormDesc=Το Dolibarr μπορεί να σας παράσχει ένα δημόσιο URL / ιστοσελίδα για να επιτρέψει στους εξωτερικούς επισκέπτες να ζητήσουν να εγγραφούν στο ίδρυμα. Εάν είναι ενεργοποιημένη μια ηλεκτρονική ενότητα πληρωμής, μπορεί να παρέχεται αυτόματα και μια φόρμα πληρωμής. -EnablePublicSubscriptionForm=Ενεργοποιήστε τον δημόσιο ιστότοπο με φόρμα αυτοεξυπηρέτησης -ForceMemberType=Αναγκάστε τον τύπο μέλους +EnablePublicSubscriptionForm=Ενεργοποίηση του δημόσιου ιστότοπου με φόρμα αυτο-εγγραφής +ForceMemberType=Επιβολή του τύπου μέλους ExportDataset_member_1=Μέλη και συνδρομές ImportDataset_member_1=Μέλη LastMembersModified=Τελευταία %s μέλη που τροποποιήθηκαν @@ -124,7 +125,7 @@ SendingEmailOnMemberValidation=Αποστολή email επικύρωσης νέ SendingEmailOnNewSubscription=Αποστολή email νέας συνδρομής SendingReminderForExpiredSubscription=Αποστολή υπενθύμισης για συνδρομές που έχουν λήξει SendingEmailOnCancelation=Αποστολή email κατάργησης μελους -SendingReminderActionComm=Αποστολή υπενθύμισης για εκδήλωση ατζέντας +SendingReminderActionComm=Αποστολή υπενθύμισης για συμβάν ατζέντας # Topic of email templates YourMembershipRequestWasReceived=Η συνδρομή σας ελήφθη. YourMembershipWasValidated=Η ιδιότητα μέλους σας επικυρώθηκε @@ -135,7 +136,7 @@ CardContent=Περιεχόμενα καρτέλας # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Θα θέλαμε να σας ενημερώσουμε ότι το αίτημά σας για συμμετοχή έγινε δεκτό.

ThisIsContentOfYourMembershipWasValidated=Θέλουμε να σας ενημερώσουμε ότι η ιδιότητα μέλους σας έχει επικυρωθεί με τις ακόλουθες πληροφορίες:

-ThisIsContentOfYourSubscriptionWasRecorded=Θέλουμε να σας ενημερώσουμε ότι η νέα συνδρομή σας έχει καταγραφεί.

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

ThisIsContentOfSubscriptionReminderEmail=Θα θέλαμε να σας ενημερώσουμε ότι η συνδρομή σας πρόκειται να λήξει ή έχει ήδη λήξει (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Ελπίζουμε ότι θα το ανανεώσετε.

ThisIsContentOfYourCard=Αυτή είναι μια περίληψη των πληροφοριών που έχουμε σχετικά με εσάς. Επικοινωνήστε μαζί μας αν κάτι είναι λανθασμένο.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Αντικείμενο του μηνύματος ηλεκτρονικού ταχυδρομείου ειδοποίησης που λαμβάνεται σε περίπτωση αυτόματης εγγραφής επισκέπτη @@ -154,8 +155,8 @@ DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) DescADHERENT_CARD_FOOTER_TEXT=Κείμενο που θα εκτυπωθεί στο κάτω μέρος της κάρτας μέλους -ShowTypeCard=Show type '%s' -HTPasswordExport=htpassword file generation +ShowTypeCard=Εμφάνιση τύπου '%s' +HTPasswordExport=δημιουργία αρχείου htpassword NoThirdPartyAssociatedToMember=Κανένα τρίτο μέρος δεν σχετίζεται με αυτό το μέλος MembersAndSubscriptions=Μέλη και Συνδρομές MoreActions=Complementary action on recording @@ -164,59 +165,59 @@ MoreActionBankDirect=Δημιουργήστε μια απευθείας εγγρ MoreActionBankViaInvoice=Δημιουργήστε ένα τιμολόγιο και μια πληρωμή σε τραπεζικό λογαριασμό MoreActionInvoiceOnly=Create an invoice with no payment LinkToGeneratedPages=Δημιουργία επαγγελματικών καρτών ή καταστάσεων διευθύνσεων -LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. -DocForAllMembersCards=Generate business cards for all members (Format for output actually setup : %s) -DocForOneMemberCards=Generate business cards for a particular member (Format for output actually setup: %s) +LinkToGeneratedPagesDesc=Αυτή η οθόνη σάς επιτρέπει να δημιουργείτε αρχεία PDF με επαγγελματικές κάρτες για όλα τα μέλη σας. +DocForAllMembersCards=Δημιουργία επαγγελματικών καρτών για όλα τα μέλη +DocForOneMemberCards=Δημιουργία επαγγελματικών καρτών για ένα συγκεκριμένο μέλος DocForLabels=Generate address sheets (Format for output actually setup: %s) SubscriptionPayment=Πληρωμή συνδρομής LastSubscriptionDate=Ημερομηνία τελευταίας πληρωμής συνδρομής LastSubscriptionAmount=Ποσό τελευταίας συνδρομής LastMemberType=Τύπος τελευταίου μέλους -MembersStatisticsByCountries=Μέλη στατιστικές ανά χώρα -MembersStatisticsByState=Τα μέλη στατιστικών στοιχείων από πολιτεία / επαρχία -MembersStatisticsByTown=Τα μέλη στατιστικών στοιχείων από την πόλη -MembersStatisticsByRegion=Στατιστικά Μελών ανά περιοχή +MembersStatisticsByCountries=Στατιστικά στοιχεία μελών ανά χώρα +MembersStatisticsByState=Στατιστικά στοιχεία μελών ανά Νομό/Δήμο +MembersStatisticsByTown=Στατιστικά μελών ανά πόλη +MembersStatisticsByRegion=Στατιστικά στοιχεία μελών ανά περιοχή NbOfMembers=Συνολικός αριθμός μελών NbOfActiveMembers=Συνολικός αριθμός ενεργών μελών -NoValidatedMemberYet=Δεν επικυρώνονται τα μέλη βρέθηκαν +NoValidatedMemberYet=Δεν βρέθηκαν επικυρωμένα μέλη MembersByCountryDesc=Αυτή η οθόνη εμφανίζει τα στατιστικά στοιχεία των μελών ανά χώρα. Τα γραφήματα και διαγράμματα εξαρτώνται από τη διαθεσιμότητα της διαδικτυακής υπηρεσίας γραφημάτων της Google καθώς και από τη διαθεσιμότητα μιας λειτουργικής σύνδεσης στο διαδίκτυο. -MembersByStateDesc=Αυτή η οθόνη εμφανίζει στατιστικά στοιχεία μελών ανά πολιτεία/επαρχία/καντόνι. +MembersByStateDesc=Αυτή η οθόνη εμφανίζει στατιστικά στοιχεία μελών ανά Νομό/Δήμο/Κοινότητα. MembersByTownDesc=Αυτή η οθόνη εμφανίζει στατιστικά των μελών ανά πόλη. MembersByNature=Αυτή η οθόνη εμφανίζει στατιστικά στοιχεία μελών ανά φύση. -MembersByRegion=Αυτή η οθόνη εμφανίζει στατιστικά των μελών ανά περιοχή. -MembersStatisticsDesc=Επιλέξτε στατιστικά στοιχεία που θέλετε να διαβάσετε ... -MenuMembersStats=Στατιστικά +MembersByRegion=Αυτή η οθόνη εμφανίζει στατιστικά μελών ανά περιοχή. +MembersStatisticsDesc=Επιλέξτε στατιστικά στοιχεία που θέλετε να διαβάσετε... +MenuMembersStats=Στατιστικά στοιχεία LastMemberDate=Ημερομηνία εγγραφής τελευταίου μέλους LatestSubscriptionDate=Ημερομηνία τελευταίας συνδρομής MemberNature=Φύση του μέλους MembersNature=Φύση των μελών Public=Οι πληροφορίες είναι δημόσιες -NewMemberbyWeb=Νέο μέλος πρόσθεσε. Εν αναμονή έγκρισης -NewMemberForm=Νέα μορφή μέλος +NewMemberbyWeb=Προστέθηκε νέο μέλος. Εν αναμονή έγκρισης +NewMemberForm=Φόρμα νέου μέλους SubscriptionsStatistics=Στατιστικά στοιχεία συνδρομών NbOfSubscriptions=Αριθμός συνδρομών AmountOfSubscriptions=Ποσό που εισπράχθηκε από συνδρομές -TurnoverOrBudget=Κύκλος εργασιών (για μια επιχείρηση), ή του προϋπολογισμού (για ένα ίδρυμα) +TurnoverOrBudget=Κύκλος εργασιών (για εταιρεία) ή προϋπολογισμός (για ίδρυμα) DefaultAmount=Προκαθορισμένο ποσό συνδρομών CanEditAmount=Ο επισκέπτης μπορεί να επιλέξει/επεξεργαστεί το ποσό της συνεισφοράς του -MEMBER_NEWFORM_PAYONLINE=Μετάβαση στην ολοκληρωμένη ηλεκτρονική σελίδα πληρωμής +MEMBER_NEWFORM_PAYONLINE=Μετάβαση στη σελίδα ηλεκτρονικής πληρωμής ByProperties=Εκ ΦΥΣΕΩΣ MembersStatisticsByProperties=Στατιστικά στοιχεία μελών κατά φύση VATToUseForSubscriptions=Συντελεστής ΦΠΑ που χρησιμοποιείται για εισφορές NoVatOnSubscription=Χωρίς ΦΠΑ για εισφορές ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Προϊόν που χρησιμοποιείται για τη γραμμή συνεισφοράς στο τιμολόγιο: %s -NameOrCompany=Όνομα ή Επωνυμία +NameOrCompany=Όνομα ή Εταιρία SubscriptionRecorded=Καταγράφηκε η συνεισφορά -NoEmailSentToMember=Δεν αποστέλλεται μήνυμα ηλεκτρονικού ταχυδρομείου στο μέλος -EmailSentToMember=Το email αποστέλλεται στο μέλος στο %s -SendReminderForExpiredSubscriptionTitle=Στείλτε υπενθύμιση μέσω email για συνδρομές που έχουν λήξει +NoEmailSentToMember=Δεν εστάλη email στο μέλος +EmailSentToMember=Το email στάλθηκε στο μέλος την %s +SendReminderForExpiredSubscriptionTitle=Αποστολή υπενθύμισης μέσω email για συνδρομές που έχουν λήξει SendReminderForExpiredSubscription=Αποστολή υπενθύμισης μέσω email στα μέλη όταν η συνδρομή πρόκειται να λήξει (η παράμετρος είναι ο αριθμός ημερών πριν από το τέλος της ιδιότητας μέλους για την αποστολή της υπενθύμισης. Μπορεί να είναι μια λίστα ημερών που χωρίζονται με ερωτηματικό, για παράδειγμα '10;5;0;-5 ') -MembershipPaid=Καταβολή συνδρομής για την τρέχουσα περίοδο (μέχρι %s) +MembershipPaid=Η συνδρομή καταβλήθηκε για την τρέχουσα περίοδο (έως %s) YouMayFindYourInvoiceInThisEmail=Μπορείτε να βρείτε το τιμολόγιο που επισυνάπτεται σε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου XMembersClosed=%s μέλος (τα) έκλεισε XExternalUserCreated=Δημιουργήθηκαν %s εξωτερικοί χρήστες ForceMemberNature=Επιβολή φύσης μέλους(Άτομο ή Εταιρεία) -CreateDolibarrLoginDesc=Η δημιουργία σύνδεσης χρήστη για τα μέλη τους επιτρέπει να συνδεθούν με την εφαρμογή. Ανάλογα με τις εξουσιοδοτήσεις που χορηγούνται, θα μπορούν, για παράδειγμα, να συμβουλεύονται ή να τροποποιούν οι ίδιοι το αρχείο τους. -CreateDolibarrThirdPartyDesc=Ένα τρίτο μέρος είναι η νομική οντότητα που θα χρησιμοποιηθεί στο τιμολόγιο εάν αποφασίσετε να δημιουργήσετε τιμολόγιο για κάθε συνεισφορά. Θα μπορείτε να το δημιουργήσετε αργότερα κατά τη διαδικασία καταγραφής της συνεισφοράς. +CreateDolibarrLoginDesc=Η δημιουργία σύνδεσης χρήστη για τα μέλη τους επιτρέπει να συνδεθούν με την εφαρμογή. Ανάλογα με τις εξουσιοδοτήσεις που χορηγούνται, θα μπορούν, για παράδειγμα, να συμβουλεύονται ή να τροποποιούν οι ίδιοι τα αρχεία τους. +CreateDolibarrThirdPartyDesc=Ένα τρίτο μέρος είναι η νομική οντότητα που θα χρησιμοποιηθεί στο τιμολόγιο εάν αποφασίσετε να δημιουργήσετε τιμολόγιο για κάθε συνδρομή. Θα μπορείτε να το δημιουργήσετε αργότερα κατά τη διαδικασία καταγραφής της συνδρομής. MemberFirstname=Όνομα μέλους MemberLastname=Επώνυμο μέλους diff --git a/htdocs/langs/el_GR/modulebuilder.lang b/htdocs/langs/el_GR/modulebuilder.lang index 326b2d2c0b1..5663900d9fa 100644 --- a/htdocs/langs/el_GR/modulebuilder.lang +++ b/htdocs/langs/el_GR/modulebuilder.lang @@ -3,153 +3,154 @@ ModuleBuilderDesc=Αυτό το εργαλείο πρέπει να χρησιμ EnterNameOfModuleDesc=Εισάγετε το όνομα της ενότητας/εφαρμογής που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyModule, EcommerceForShop, SyncWithMySystem...) EnterNameOfObjectDesc=Εισάγετε το όνομα του αντικειμένου που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyObject, Student, Teacher...). Θα δημιουργηθούν, το αρχείο κλάσης CRUD αλλά και το αρχείο API, οι σελίδες για λίστα/προσθήκη/επεξεργασία/διαγραφή αντικειμένου και αρχεία SQL. EnterNameOfDictionaryDesc=Εισάγετε το όνομα του λεξικού που θέλετε να δημιουργήσετε χωρίς κενά. Χρησιμοποιήστε κεφαλαία για να διαχωρίσετε λέξεις (Για παράδειγμα: MyDico...). Θα δημιουργηθεί το αρχείο κλάσης, αλλά και το αρχείο SQL. -ModuleBuilderDesc2=Διαδρομή όπου παράγονται / επεξεργάζονται μονάδες (πρώτος κατάλογος για εξωτερικές μονάδες που ορίζονται στο %s): %s -ModuleBuilderDesc3=Παραγόμενα / επεξεργάσιμα δομοστοιχεία βρέθηκαν: %s -ModuleBuilderDesc4=Μια ενότητα ανιχνεύεται ως 'επεξεργάσιμη' όταν το αρχείο %s υπάρχει στη ρίζα του καταλόγου μονάδων -NewModule=Νέο Άρθρωμα +ModuleBuilderDesc2=Διαδρομή όπου δημιουργούνται/επεξεργάζονται οι ενότητες (πρώτος κατάλογος για εξωτερικές ενότητες που ορίζεται σε %s): %s +ModuleBuilderDesc3=Βρέθηκαν δημιουργημένες/επεξεργάσιμες ενότητες: %s +ModuleBuilderDesc4=Μια ενότητα ανιχνεύεται ως "επεξεργάσιμη&" όταν το αρχείο %s υπάρχει στη ρίζα του καταλόγου ενοτήτων +NewModule=Νέα ενότητα NewObjectInModulebuilder=Νέο αντικείμενο NewDictionary=Νέο λεξικό -ModuleKey=Πλήκτρο μονάδας -ObjectKey=Πλήκτρο αντικειμένου +ModuleKey=κλειδί ενότητας +ObjectKey=Κλειδί αντικειμένου DicKey=Κλειδί λεξικού ModuleInitialized=Η ενότητα αρχικοποιήθηκε -FilesForObjectInitialized=Τα αρχεία για νέο αντικείμενο '%s' έχουν αρχικοποιηθεί -FilesForObjectUpdated=Τα αρχεία για το αντικείμενο '%s' ενημερώνονται (αρχείο .sql και αρχείο .class.php) -ModuleBuilderDescdescription=Εισαγάγετε εδώ όλες τις γενικές πληροφορίες που περιγράφουν την ενότητα σας. -ModuleBuilderDescspecifications=Μπορείτε να εισάγετε εδώ μια λεπτομερή περιγραφή των προδιαγραφών της μονάδας σας που δεν έχει ήδη δομηθεί σε άλλες καρτέλες. Έτσι έχετε εύκολη πρόσβαση σε όλους τους κανόνες που πρέπει να αναπτυχθούν. Επίσης, αυτό το περιεχόμενο κειμένου θα συμπεριληφθεί στην παραγόμενη τεκμηρίωση (δείτε την τελευταία καρτέλα). Μπορείτε να χρησιμοποιήσετε τη μορφή Markdown, αλλά συνιστάται να χρησιμοποιήσετε τη μορφή Asciidoc (σύγκριση μεταξύ .md και .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). -ModuleBuilderDescobjects=Καθορίστε εδώ τα αντικείμενα που θέλετε να διαχειριστείτε με την ενότητα σας. Θα δημιουργηθεί μια κλάση CRUD DAO, αρχεία SQL, λίστα καταγραφής αντικειμένων, δημιουργία / επεξεργασία / προβολή μιας εγγραφής και ένα API. +FilesForObjectInitialized=Αρχικοποιήθηκαν τα αρχεία για το νέο αντικείμενο '%s' +FilesForObjectUpdated=Ενημερώθηκαν τα αρχεία για το αντικείμενο "%s" (αρχεία .sql και αρχείο .class.php) +ModuleBuilderDescdescription=Εισάγετε εδώ όλες τις γενικές πληροφορίες που περιγράφουν την ενότητα σας. +ModuleBuilderDescspecifications=Μπορείτε να εισάγετε εδώ μια λεπτομερή περιγραφή των προδιαγραφών της ενότητας σας που δεν έχει ήδη δομηθεί σε άλλες καρτέλες. Έτσι έχετε εύκολη πρόσβαση σε όλους τους κανόνες που πρέπει να αναπτυχθούν. Επίσης, αυτό το περιεχόμενο κειμένου θα συμπεριληφθεί στην παραγόμενη τεκμηρίωση (δείτε την τελευταία καρτέλα). Μπορείτε να χρησιμοποιήσετε τη μορφή Markdown, αλλά συνιστάται να χρησιμοποιήσετε τη μορφή Asciidoc (σύγκριση μεταξύ .md και .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). +ModuleBuilderDescobjects=Καθορίστε εδώ τα αντικείμενα που θέλετε να διαχειριστείτε με την ενότητα σας. Θα δημιουργηθούν μια κλάση CRUD DAO, αρχεία SQL, σελίδα λίστας καταγραφής αντικειμένων, δημιουργία/επεξεργασία/προβολή μιας εγγραφής και ένα API. ModuleBuilderDescmenus=Αυτή η καρτέλα είναι αφιερωμένη στον ορισμό καταχωρήσεων μενού που παρέχονται από την ενότητα σας. ModuleBuilderDescpermissions=Αυτή η καρτέλα είναι αφιερωμένη στον ορισμό των νέων δικαιωμάτων που θέλετε να παρέχετε με την ενότητα σας. -ModuleBuilderDesctriggers=Αυτή είναι η άποψη των ενεργοποιητών που παρέχονται από την ενότητα σας. Για να συμπεριλάβετε τον κώδικα που εκτελείται όταν ξεκινά ένα ενεργοποιημένο επιχειρηματικό συμβάν, απλά επεξεργαστείτε αυτό το αρχείο. -ModuleBuilderDeschooks=Αυτή η καρτέλα είναι αφιερωμένη στα άγκιστρα. -ModuleBuilderDescwidgets=Αυτή η καρτέλα είναι αφιερωμένη στη διαχείριση / δημιουργία widgets. -ModuleBuilderDescbuildpackage=Μπορείτε να δημιουργήσετε εδώ ένα πακέτο πακέτου "έτοιμο για διανομή" (ένα κανονικό αρχείο .zip) της μονάδας σας και ένα αρχείο τεκμηρίωσης "έτοιμο για διανομή". Απλά κάντε κλικ στο κουμπί για να δημιουργήσετε το πακέτο ή το αρχείο τεκμηρίωσης. -EnterNameOfModuleToDeleteDesc=Μπορείτε να διαγράψετε την υπομονάδα σας. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όλα τα αρχεία κωδικοποίησης της μονάδας (δημιουργούνται ή δημιουργούνται χειροκίνητα) ΚΑΙ δομημένα δεδομένα και τεκμηρίωση θα διαγραφούν! -EnterNameOfObjectToDeleteDesc=Μπορείτε να διαγράψετε ένα αντικείμενο. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όλα τα αρχεία κωδικοποίησης (που δημιουργούνται ή δημιουργούνται χειροκίνητα) που σχετίζονται με αντικείμενο θα διαγραφούν! +ModuleBuilderDesctriggers=Αυτή είναι η προβολή των triggers που παρέχονται από την ενότητα σας. Για να συμπεριλάβετε κώδικα που εκτελείται όταν ξεκινά ένα triggered επιχειρηματικό συμβάν, απλά επεξεργαστείτε αυτό το αρχείο. +ModuleBuilderDeschooks=Αυτή η καρτέλα είναι αφιερωμένη στα hooks. +ModuleBuilderDescwidgets=Αυτή η καρτέλα είναι αφιερωμένη στη διαχείριση/δημιουργία γραφικών στοιχείων(widgets). +ModuleBuilderDescbuildpackage=Μπορείτε να δημιουργήσετε εδώ ένα "έτοιμο για διανομή" πακέτο (δηλαδή ένα κανονικό αρχείο .zip) της ενότητας σας και ένα "έτοιμο για διανομή" αρχείο τεκμηρίωσης. Απλά κάντε κλικ στο κουμπί για να δημιουργήσετε το πακέτο ή το αρχείο τεκμηρίωσης. +EnterNameOfModuleToDeleteDesc=Μπορείτε να διαγράψετε την ενότητα σας. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όλα τα αρχεία της ενότητας (αυτόματα ή χειροκίνητα δημιουργημένα) καθώς ΚΑΙ τα δομημένα δεδομένα και η τεκμηρίωση θα διαγραφούν! +EnterNameOfObjectToDeleteDesc=Μπορείτε να διαγράψετε ένα αντικείμενο. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Όλα τα αρχεία κωδικοποίησης (αυτόματα ή χειροκίνητα δημιουργημένα) που σχετίζονται με το αντικείμενο θα διαγραφούν! DangerZone=Επικίνδυνη ζώνη BuildPackage=Δημιουργία πακέτου -BuildPackageDesc=Μπορείτε να δημιουργήσετε ένα πακέτο zip της αίτησής σας έτσι ώστε να είστε έτοιμοι να το διανείμετε σε οποιοδήποτε Dolibarr. Μπορείτε επίσης να το διανείμετε ή να το πουλήσετε στην αγορά όπως το DoliStore.com . -BuildDocumentation=Δημιουργία εγγράφων +BuildPackageDesc=Μπορείτε να δημιουργήσετε ένα πακέτο zip της εφαρμογής σας ώστε να είστε έτοιμοι να το διανείμετε σε οποιαδήποτε έκδοση Dolibarr. Μπορείτε επίσης να το διανείμετε ή να το πουλήσετε σε κάποιο marketplace όπως τo DoliStore.com . +BuildDocumentation=Τεκμηρίωση δημιουργίας πακετου ModuleIsNotActive=Αυτή η ενότητα δεν έχει ενεργοποιηθεί ακόμα. Μεταβείτε στο %s για να το ενεργοποιήσετε ή κάντε κλικ εδώ -ModuleIsLive=Αυτή η ενότητα έχει ενεργοποιηθεί. Οποιαδήποτε αλλαγή μπορεί να σπάσει ένα τρέχον ζωντανό χαρακτηριστικό. +ModuleIsLive=Αυτή η ενότητα έχει ενεργοποιηθεί. Οποιαδήποτε αλλαγή μπορεί να προκαλέσει άμεση δυσλειτουργία. DescriptionLong=Μεγάλη περιγραφή -EditorName=Όνομα του συντάκτη +EditorName=Όνομα εκδότη EditorUrl=Διεύθυνση URL του επεξεργαστή DescriptorFile=Περιγραφικό αρχείο της ενότητας ClassFile=Αρχείο για την κλάση PHP DAO CRUD -ApiClassFile=Αρχείο για την τάξη API της PHP -PageForList=PHP σελίδα για λίστα καταγραφής -PageForCreateEditView=Σελίδα PHP για δημιουργία / επεξεργασία / προβολή μιας εγγραφής +ApiClassFile=Αρχείο για την κλάση API της PHP +PageForList=Σελίδα PHP για λίστα καταγραφής +PageForCreateEditView=Σελίδα PHP για δημιουργία/επεξεργασία/προβολή μιας εγγραφής PageForAgendaTab=Σελίδα PHP για καρτέλα συμβάντος -PageForDocumentTab=PHP σελίδα για καρτέλα έγγραφο -PageForNoteTab=Σελίδα PHP για την καρτέλα σημείωσης +PageForDocumentTab=Σελίδα PHP για καρτέλα εγγράφου +PageForNoteTab=Σελίδα PHP για καρτέλα σημειώσεων PageForContactTab=Σελίδα PHP για καρτέλα επαφών -PathToModulePackage=Διαδρομή προς φερμουάρ του πακέτου ενότητας / εφαρμογής -PathToModuleDocumentation=Διαδρομή αρχείου τεκμηρίωσης ενότητας / εφαρμογής (%s) -SpaceOrSpecialCharAreNotAllowed=Δεν επιτρέπονται χώροι ή ειδικοί χαρακτήρες. -FileNotYetGenerated=Αρχείο που δεν έχει ακόμα δημιουργηθεί +PathToModulePackage=Διαδρομή προς το αρχείο zip του πακέτου της ενότητας/εφαρμογής +PathToModuleDocumentation=Διαδρομή προς το αρχείο τεκμηρίωσης ενότητας/εφαρμογής (%s) +SpaceOrSpecialCharAreNotAllowed=Δεν επιτρέπονται κενά(space) ή ειδικοί χαρακτήρες. +FileNotYetGenerated=Το αρχείο δεν έχει δημιουργηθεί ακόμη RegenerateClassAndSql=Αναγκαστική ενημέρωση των αρχείων .class και .sql RegenerateMissingFiles=Δημιουργία αρχείων που λείπουν SpecificationFile=Αρχείο τεκμηρίωσης -LanguageFile=Αρχείο για τη γλώσσα +LanguageFile=Αρχείο γλώσσας ObjectProperties=Ιδιότητες αντικειμένου -ConfirmDeleteProperty=Είστε βέβαιοι ότι θέλετε να διαγράψετε την ιδιότητα %s ; Αυτό θα αλλάξει τον κώδικα στην τάξη PHP, αλλά και θα αφαιρέσει τη στήλη από τον ορισμό πίνακα του αντικειμένου. -NotNull=Οχι κενό +ConfirmDeleteProperty=Είστε σίγουροι ότι θέλετε να διαγράψετε την ιδιότητα %s; Αυτό θα αλλάξει τον κώδικα στην κλαση PHP αλλά και θα αφαιρέσει τη στήλη από τον πίνακα ορισμού του αντικειμένου. +NotNull=Not NULL NotNullDesc=1=Ορίστε τη βάση δεδομένων σε NOT NULL, 0=Να επιτρέπονται null τιμές, -1=Να επιτρέπονται null τιμές επιβάλλοντας την τιμή σε NULL εάν είναι κενή ('' ή 0) -SearchAll=Χρησιμοποιείται για την αναζήτηση όλων -DatabaseIndex=Δείκτης βάσης δεδομένων -FileAlreadyExists=Το αρχείο%s ήδη υπάρχει -TriggersFile=Αρχείο για τον κωδικό ενεργοποίησης -HooksFile=Αρχείο για τον κωδικό γάντζων -ArrayOfKeyValues=Διάταξη πλήκτρου-κύματος -ArrayOfKeyValuesDesc=Πλαίσιο κλειδιών και τιμών αν το πεδίο είναι μια λίστα συνδυασμών με σταθερές τιμές -WidgetFile=Αρχείο εικονοστοιχείων -CSSFile=CSS +SearchAll=Χρησιμοποιείται για την "αναζήτηση" +DatabaseIndex=Ευρετήριο βάσης δεδομένων +FileAlreadyExists=Το αρχείο %s υπάρχει ήδη +TriggersFile=Αρχείο για τον κώδικα triggers +HooksFile=Αρχείο για τον κώδικα hooks +ArrayOfKeyValues=Διάταξη κλειδιού-τιμής +ArrayOfKeyValuesDesc=Διάταξη κλειδιών και τιμών αν το πεδίο είναι ένα πλαίσιο λίστας(combo box) με σταθερές τιμές +WidgetFile=Αρχείο widget +CSSFile=αρχείο CSS JSFile=Αρχείο Javascript ReadmeFile=Αρχείο Readme ChangeLog=Αρχείο ChangeLog -TestClassFile=Αρχείο για την τάξη της μονάδας PHP +TestClassFile=Αρχείο για την κλάση PHP Unit Test SqlFile=Αρχείο sql PageForLib=Αρχείο για την κοινή βιβλιοθήκη PHP -PageForObjLib=Αρχείο για τη βιβλιοθήκη PHP αφιερωμένη στο αντικείμενο +PageForObjLib=Αρχείο για τη βιβλιοθήκη PHP αφιερωμένη στα αντικείμενα(objects) SqlFileExtraFields=Αρχείο Sql για συμπληρωματικά χαρακτηριστικά SqlFileKey=Αρχείο Sql για κλειδιά SqlFileKeyExtraFields=Αρχείο Sql για κλειδιά συμπληρωματικών χαρακτηριστικών AnObjectAlreadyExistWithThisNameAndDiffCase=Ένα αντικείμενο υπάρχει ήδη με αυτό το όνομα και μια διαφορετική περίπτωση -UseAsciiDocFormat=Μπορείτε να χρησιμοποιήσετε τη μορφή Markdown, αλλά συνιστάται να χρησιμοποιήσετε τη μορφή Asciidoc (omparison μεταξύ .md και .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +UseAsciiDocFormat=Μπορείτε να χρησιμοποιήσετε τη μορφή Markdown, αλλά συνιστάται να χρησιμοποιήσετε τη μορφή Asciidoc (σύγκριση μεταξύ .md και .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) IsAMeasure=Είναι ένα μέτρο -DirScanned=Κατάλογος σάρωση -NoTrigger=Δεν ενεργοποιείται -NoWidget=Δεν γραφικό στοιχείο +DirScanned=Ο κατάλογος σαρώθηκε +NoTrigger=Χωρίς trigger +NoWidget=Χωρίς γραφικό στοιχείο GoToApiExplorer=API explorer ListOfMenusEntries=Λίστα καταχωρήσεων μενού ListOfDictionariesEntries=Λίστα καταχωρήσεων λεξικών ListOfPermissionsDefined=Λίστα καθορισμένων δικαιωμάτων SeeExamples=Δείτε παραδείγματα εδώ -EnabledDesc=Προϋπόθεση να είναι ενεργό αυτό το πεδίο (Παραδείγματα: 1 ή $ conf-> global-> MYMODULE_MYOPTION) +EnabledDesc=Προϋπόθεση να είναι ενεργό αυτό το πεδίο (Παραδείγματα: 1 ή $conf->global->MYMODULE_MYOPTION) VisibleDesc=Είναι ορατό το πεδίο; (Παραδείγματα: 0=Ποτέ δεν είναι ορατό, 1=Ορατό στη λίστα και δημιουργία/ενημέρωση/προβολή φορμών, 2=Ορατό μόνο στη λίστα, 3=Ορατό μόνο στη φόρμα δημιουργίας/ενημέρωσης/προβολής (όχι στη λίστα), 4=Ορατό στη λίστα και ενημέρωση/προβολή μόνο φόρμας (όχι δημιουργία), 5=Ορατό μόνο στη φόρμα προβολής και λίστας (όχι δημιουργία, όχι ενημέρωση).

Η χρήση αρνητικής τιμής σημαίνει ότι το πεδίο δεν εμφανίζεται από προεπιλογή στη λίστα, αλλά μπορεί να επιλεγεί για προβολή).

Μπορεί να είναι μια έκφραση, για παράδειγμα:
preg_match('/public/', $_SERVER['PHP_SELF'])?0:1
($user->rights->holiday->define_holiday ? 1 : 0) DisplayOnPdfDesc=Εμφανίστε αυτό το πεδίο σε συμβατά έγγραφα PDF, μπορείτε να διαχειριστείτε τη θέση με το πεδίο "Position".
Επί του παρόντος, γνωστά μοντέλα συμβατών PDF είναι: eratosthene (παραγγελίες), espadon (αποστολές), sponge (τιμολόγια), cyan (προσφορές), cornas (παραγγελίες προμηθευτή)

Για έγγραφα:
0 = δεν εμφανίζονται
1 = εμφανίζονται
2 = εμφανίζονται μόνο αν δεν είναι κενά

Για τις γραμμές εγγράφου:
0 = δεν εμφανίζονται
1 = εμφανίζονται σε μια στήλη
3 = εμφανιζονται στη στήλη περιγραφής της γραμμής μετά την περιγραφή
4 = εμφανίζονται στη στήλη περιγραφής μετά την περιγραφή μόνο αν δεν είναι κενή DisplayOnPdf=Εμφάνιση σε PDF -IsAMeasureDesc=Μπορεί η τιμή του πεδίου να συσσωρευτεί για να πάρει ένα σύνολο σε λίστα; (Παραδείγματα: 1 ή 0) +IsAMeasureDesc=Μπορεί η τιμή του πεδίου να αθροιστεί για να πάρει ένα σύνολο σε λίστα; (Παραδείγματα: 1 ή 0) SearchAllDesc=Χρησιμοποιείται το πεδίο για την αναζήτηση από το εργαλείο γρήγορης αναζήτησης; (Παραδείγματα: 1 ή 0) -SpecDefDesc=Εισαγάγετε εδώ όλη την τεκμηρίωση που θέλετε να παράσχετε με τη λειτουργική σας μονάδα, η οποία δεν έχει ήδη καθοριστεί από άλλες καρτέλες. Μπορείτε να χρησιμοποιήσετε το .md ή καλύτερα, την πλούσια σύνταξη .asciidoc. -LanguageDefDesc=Εισαγάγετε σε αυτό το αρχείο όλα τα κλειδιά και τη μετάφραση για κάθε αρχείο γλώσσας. -MenusDefDesc=Καθορίστε εδώ τα μενού που παρέχονται από την ενότητα σας +SpecDefDesc=Εισάγετε εδώ όλη την τεκμηρίωση που θέλετε να παράσχετε με την ενότητα σας, η οποία δεν έχει ήδη καθοριστεί από άλλες καρτέλες. Μπορείτε να χρησιμοποιήσετε το .md ή καλύτερα, την πλούσια σύνταξη .asciidoc. +LanguageDefDesc=Εισάγετε σε αυτό το αρχείο όλα τα κλειδιά και τη μετάφραση για κάθε αρχείο γλώσσας. +MenusDefDesc=Καθορίστε εδώ τα μενού που θα παρέχονται από την ενότητα σας DictionariesDefDesc=Καθορίστε εδώ τα λεξικά που παρέχονται από την ενότητα σας PermissionsDefDesc=Καθορίστε εδώ τα νέα δικαιώματα που παρέχονται από την ενότητα σας MenusDefDescTooltip=Τα μενού που παρέχονται από την ενότητα/εφαρμογή σας ορίζονται στον πίνακα $this->menus στο αρχείο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή.

Σημείωση: Μόλις καθοριστεί (και ενεργοποιηθεί ξανά η ενότητα), τα μενού είναι επίσης ορατά στο πρόγραμμα επεξεργασίας μενού που είναι διαθέσιμο στους διαχειριστές στο %s. -DictionariesDefDescTooltip=Τα λεξικά που παρέχονται από την υπομονάδα / εφαρμογή σας καθορίζονται στη συστοιχία $ this-> λεξικά στο αρχείο περιγραφής του module. Μπορείτε να επεξεργαστείτε χειροκίνητα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή.

Σημείωση: Αφού οριστεί (και ενεργοποιηθεί ξανά η ενότητα), τα λεξικά είναι επίσης ορατά στην περιοχή εγκατάστασης σε χρήστες διαχειριστή στο %s. -PermissionsDefDescTooltip=Τα δικαιώματα που παρέχονται από την ενότητα/εφαρμογή σας καθορίζονται στη συστοιχία $ this-> rights στην ενότητα περιγραφής αρχείου. Μπορείτε να επεξεργαστείτε χειροκίνητα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή.

Σημείωση: Μόλις οριστεί (και ενεργοποιηθεί ξανά η ενότητα), τα δικαιώματα είναι ορατά στην προεπιλεγμένη ρύθμιση %s. -HooksDefDesc=Ορίστε στην ιδιότητα module_parts ['hooks'] , στον περιγραφέα της μονάδας, το πλαίσιο των άγκιστρων που θέλετε να διαχειριστείτε (η λίστα των πλαισίων μπορεί να βρεθεί από μια αναζήτηση στο ' initHooks ' ( 'in core code).
Επεξεργαστείτε το αρχείο αγκίστρου για να προσθέσετε τον κώδικα των αγκιστρωμένων λειτουργιών σας (οι συναρπαστικές λειτουργίες μπορούν να βρεθούν με μια αναζήτηση στο ' executeHooks ' στον βασικό κώδικα). -TriggerDefDesc=Καθορίστε στο αρχείο ενεργοποίησης τον κώδικα που θέλετε να εκτελείτε όταν εκτελείται ένα επαγγελματικό συμβάν εκτός της ενότητας (συμβάντα που ενεργοποιούνται από άλλες ενότητες). +DictionariesDefDescTooltip=Τα λεξικά που παρέχονται από την ενότητα/εφαρμογή σας καθορίζονται στη διάταξη $this->dictionaries στο αρχείο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε χειροκίνητα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή.

Σημείωση: Αφού οριστεί (και ενεργοποιηθεί ξανά η ενότητα), τα λεξικά είναι επίσης ορατά στις Ρυθμίσεις σε χρήστες με δικαιώματα διαχειριστή στο %s. +PermissionsDefDescTooltip=Τα δικαιώματα που παρέχονται από την ενότητα/εφαρμογή σας καθορίζονται στη διάταξη $ this-> rights στο αρχειο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε χειροκίνητα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή.

Σημείωση: Μόλις οριστεί (και ενεργοποιηθεί ξανά η ενότητα), τα δικαιώματα είναι ορατά στην προεπιλεγμένη ρύθμιση δικαιωμάτων %s. +HooksDefDesc=Καθορίστε στην ιδιότητα module_parts['hooks'] , στο αρχείο περιγραφής της ενότητας, το context των hooks που θέλετε να διαχειριστείτε (η λίστα των context μπορεί να βρεθεί με μια αναζήτηση στο ' initHooks(' στον core code).
Επεξεργαστείτε το αρχείο hook για να προσθέσετε τον κώδικα των συνδεδεμένων συναρτήσεων (οι συναρτήσεις με δυνατότητα hook μπορούν να βρεθούν με μια αναζήτηση στο 'executeHooks' στον core code). +TriggerDefDesc=Καθορίστε στο αρχείο trigger τον κώδικα που θέλετε να εκτελείτε όταν εκτελείται ένα επαγγελματικό συμβάν εκτός της ενότητας (συμβάντα που ενεργοποιούνται από άλλες ενότητες). SeeIDsInUse=Δείτε τα αναγνωριστικά που χρησιμοποιούνται στην εγκατάσταση σας -SeeReservedIDsRangeHere=Δείτε το φάσμα των αποκλειστικών αναγνωριστικών +SeeReservedIDsRangeHere=Δείτε το εύρος των δεσμευμένων αναγνωριστικών ToolkitForDevelopers=Εργαλειοθήκη για προγραμματιστές Dolibarr -TryToUseTheModuleBuilder=Αν έχετε γνώσεις SQL και PHP, μπορείτε να χρησιμοποιήσετε τον οδηγό εγγενών κατασκευαστών ενοτήτων.
Ενεργοποιήστε την ενότητα %s και χρησιμοποιήστε τον οδηγό κάνοντας κλικ στο στο πάνω δεξιό μενού.
Προειδοποίηση: Πρόκειται για ένα προηγμένο χαρακτηριστικό προγραμματιστή, μην πειραματιστείτε στην τοποθεσία παραγωγής σας! -SeeTopRightMenu=Βλέπω στο πάνω δεξιό μενού +TryToUseTheModuleBuilder=Αν έχετε γνώσεις SQL και PHP, μπορείτε να χρησιμοποιήσετε τον οδηγό της εγγενούς κατασκευής ενοτήτας.
Ενεργοποιήστε την ενότητα %s και χρησιμοποιήστε τον οδηγό κάνοντας κλικ στο στο πάνω δεξιό μενού.
Προειδοποίηση: Πρόκειται για ένα προηγμένο χαρακτηριστικό για προγραμματιστές, μην πειραματιστείτε στο παραγωγικό σας site αλλά σε δοκιμαστικό περιβάλλον μόνο +SeeTopRightMenu=Δείτε στο επάνω δεξιά μενού AddLanguageFile=Προσθήκη αρχείου γλώσσας -YouCanUseTranslationKey=Μπορείτε να χρησιμοποιήσετε εδώ ένα κλειδί που είναι το κλειδί μετάφρασης που βρίσκεται στο αρχείο γλώσσας (δείτε την καρτέλα "Γλώσσες") +YouCanUseTranslationKey=Μπορείτε να χρησιμοποιήσετε εδώ ένα κλειδί που είναι το κλειδί μετάφρασης που βρίσκεται στο αρχείο γλώσσας (δείτε την καρτέλα "Γλώσσες") DropTableIfEmpty=(Διαγράψτε τον πίνακα αν είναι άδειος) TableDoesNotExists=Ο πίνακας %s δεν υπάρχει TableDropped=Ο πίνακας %s διαγράφηκε -InitStructureFromExistingTable=Δημιουργήστε τη συμβολοσειρά συστοιχιών δομής ενός υπάρχοντος πίνακα +InitStructureFromExistingTable=Δημιουργήστε τη διαταξη δομής ενός υπάρχοντος πίνακα UseAboutPage=Μην δημιουργήσετε τη σελίδα Πληροφορίες UseDocFolder=Απενεργοποίηση του φακέλου τεκμηρίωσης UseSpecificReadme=Χρησιμοποιήστε ένα συγκεκριμένο ReadMe -ContentOfREADMECustomized=Σημείωση: Το περιεχόμενο του αρχείου README.md έχει αντικατασταθεί από τη συγκεκριμένη τιμή που έχει οριστεί στη ρύθμιση του ModuleBuilder. +ContentOfREADMECustomized=Σημείωση: Το περιεχόμενο του αρχείου README.md έχει αντικατασταθεί από συγκεκριμένη τιμή που έχει οριστεί στη ρύθμιση του ModuleBuilder. RealPathOfModule=Πραγματική διαδρομή της ενότητας ContentCantBeEmpty=Το περιεχόμενο του αρχείου δεν μπορεί να είναι άδειο -WidgetDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ τα widget που θα ενσωματωθούν με τη μονάδα σας. +WidgetDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ τα γραφικά στοιχεία(widgets) που θα ενσωματωθούν με τη μονάδα σας. CSSDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ ένα αρχείο με εξατομικευμένο CSS ενσωματωμένο στην ενότητα σας. -JSDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ ένα αρχείο με ενσωματωμένο Javascript με την ενότητα σας. +JSDesc=Μπορείτε να δημιουργήσετε και να επεξεργαστείτε εδώ ένα αρχείο με Javascript ενσωματωμένο με την ενότητα σας. CLIDesc=Μπορείτε να δημιουργήσετε εδώ ορισμένα scripts γραμμής εντολών που θέλετε να παρέχετε με την ενότητα σας. CLIFile=Αρχείο CLI NoCLIFile=Δεν υπάρχουν αρχεία CLI UseSpecificEditorName = Χρησιμοποιήστε ένα συγκεκριμένο όνομα επεξεργαστή -UseSpecificEditorURL = Χρησιμοποιήστε μια συγκεκριμένη διεύθυνση επεξεργασίας -UseSpecificFamily = Χρησιμοποιήστε μια συγκεκριμένη οικογένεια +UseSpecificEditorURL = Χρησιμοποιήστε μια συγκεκριμένη διεύθυνση URL επεξεργασίας +UseSpecificFamily = Χρησιμοποιήστε μια συγκεκριμένη κατηγορία UseSpecificAuthor = Χρησιμοποιήστε έναν συγκεκριμένο συντάκτη UseSpecificVersion = Χρησιμοποιήστε μια συγκεκριμένη αρχική έκδοση IncludeRefGeneration=Η αναφορά του αντικειμένου πρέπει να δημιουργείται αυτόματα από προσαρμοσμένους κανόνες αρίθμησης IncludeRefGenerationHelp=Επιλέξτε αυτό εάν θέλετε να συμπεριλάβετε κώδικα για τη διαχείριση της αυτόματης δημιουργίας αναφοράς χρησιμοποιώντας προσαρμοσμένους κανόνες αρίθμησης IncludeDocGeneration=Θέλω να δημιουργήσω ορισμένα έγγραφα από πρότυπα για το αντικείμενο -IncludeDocGenerationHelp=Εάν το ελέγξετε αυτό, θα δημιουργηθεί κάποιος κώδικας για να προσθέσετε ένα πλαίσιο "Δημιουργία εγγράφου" στην εγγραφή. -ShowOnCombobox=Δείξτε την αξία σε συνδυασμό -KeyForTooltip=Κλειδί για επεξήγηση εργαλείου +IncludeDocGenerationHelp=Εάν το επιλέξετε, θα δημιουργηθεί κάποιος κώδικας για να προσθέσετε ένα πλαίσιο "Δημιουργία εγγράφου" στην εγγραφή. +ShowOnCombobox=Εμφάνιση τιμής στο combobox +KeyForTooltip=Κλειδί αναδυόμενου πλαισίου επεξήγησης(tooltip) CSSClass=CSS για επεξεργασία/δημιουργία φόρμας CSSViewClass=CSS για φόρμα ανάγνωσης CSSListClass=CSS για λίστα -NotEditable=Δεν είναι δυνατή η επεξεργασία +NotEditable=Μη επεξεργάσιμο ForeignKey=Ξένο κλειδί TypeOfFieldsHelp=Τύπος πεδίων:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' σημαίνει ότι προσθέτουμε ένα κουμπί + μετά τον συνδυασμό για να δημιουργήσουμε την εγγραφή
'φίλτρο' είναι μια συνθήκη sql, για παράδειγμα:'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' AsciiToHtmlConverter=Μεταροπέας από Ascii σε HTML AsciiToPdfConverter=Μεταροπέας από Ascii σε PDF TableNotEmptyDropCanceled=Ο πίνακας δεν είναι άδειος. Η διαγραφή ακυρώθηκε. -ModuleBuilderNotAllowed=Το εργαλείο δημιουργίας ενοτήτων είναι διαθέσιμο αλλά δεν επιτρέπεται στον χρήστη σας. -ImportExportProfiles=Εισαγωγή και εξαγωγή προφίλ -ValidateModBuilderDesc=Ορίστε το σε 1 εάν θέλετε να καλείται η μέθοδος $this->validateField() του αντικειμένου για την επικύρωση του περιεχομένου του πεδίου κατά την εισαγωγή ή την ενημέρωση. Ορίστε 0 εάν δεν απαιτείται επικύρωση. +ModuleBuilderNotAllowed=Το εργαλείο δημιουργίας ενοτήτων(module builder) είναι διαθέσιμο αλλά δεν επιτρέπεται στον χρήστη σας. +ImportExportProfiles=Προφίλ εισαγωγής και εξαγωγής +ValidateModBuilderDesc=Ορίστε το σε 1 εάν θέλετε να καλείται η μέθοδος $this->validateField() του αντικειμένου για την επικύρωση του περιεχομένου του πεδίου κατά την εισαγωγή ή την ενημέρωση. Ορίστε σε 0 εάν δεν απαιτείται επικύρωση. WarningDatabaseIsNotUpdated=Προειδοποίηση: Η βάση δεδομένων δεν ενημερώνεται αυτόματα, πρέπει να διαγράψετε τους πίνακες και να απενεργοποιήσετε-ενεργοποιήσετε την ενότητα για την αναδημιουργία πινάκων LinkToParentMenu=Γονικό μενού (fk_xxxxmenu) ListOfTabsEntries=Λίστα καταχωρήσεων καρτελών TabsDefDesc=Ορίστε εδώ τις καρτέλες που παρέχονται από την ενότητα σας -TabsDefDescTooltip=Οι καρτέλες που παρέχονται από την ενότητα/εφαρμογή σας ορίζονται στον πίνακα $this->tabs στο αρχείο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε μη αυτόματα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή. +TabsDefDescTooltip=Οι καρτέλες που παρέχονται από την ενότητα/εφαρμογή σας ορίζονται στον πίνακα $this->tabs στο αρχείο περιγραφής της ενότητας. Μπορείτε να επεξεργαστείτε μη αυτόματα αυτό το αρχείο ή να χρησιμοποιήσετε τον ενσωματωμένο επεξεργαστή. +BadValueForType=Λάθος τιμή για τον τύπο %s diff --git a/htdocs/langs/el_GR/oauth.lang b/htdocs/langs/el_GR/oauth.lang index bf9dd9c16b8..885656a347e 100644 --- a/htdocs/langs/el_GR/oauth.lang +++ b/htdocs/langs/el_GR/oauth.lang @@ -1,32 +1,36 @@ # Dolibarr language file - Source file is en_US - oauth ConfigOAuth=Διαμόρφωση OAuth OAuthServices=Υπηρεσίες OAuth -ManualTokenGeneration=Δημιουργία χειροκίνητου διακριτικού -TokenManager=Διαχειριστής Token -IsTokenGenerated=Έχει δημιουργηθεί διακριτικό; -NoAccessToken=Δεν υπάρχει διακριτικό πρόσβασης αποθηκευμένο στην τοπική βάση δεδομένων -HasAccessToken=Το διακριτικό πρόσβασης δημιουργήθηκε και αποθηκεύτηκε στην τοπική βάση δεδομένων -NewTokenStored=Το διακριτικό περιελήφθη και αποθηκεύτηκε +ManualTokenGeneration=Χειροκίνητη δημιουργία token +TokenManager=Διαχειριστής token +IsTokenGenerated=Έχει δημιουργηθεί token; +NoAccessToken=Κανένα token πρόσβασης δεν αποθηκεύτηκε στην τοπική βάση δεδομένων +HasAccessToken=Ένα token πρόσβασης δημιουργήθηκε και αποθηκεύτηκε στην τοπική βάση δεδομένων +NewTokenStored=Το token αποθηκεύτηκε ToCheckDeleteTokenOnProvider=Πατήστε εδώ για να ελέγξετε/διαγράψετε την εξουσιοδότηση που έχει αποθηκευτεί από %s πάροχο ανοιχτού πρωτοκόλλου εξουσιοδότησης OAuth -TokenDeleted=Το διακριτικό έχει διαγραφεί -RequestAccess=Κάντε κλικ εδώ για να ζητήσετε / ανανεώσετε την πρόσβαση και να λάβετε ένα νέο διακριτικό για αποθήκευση -DeleteAccess=Κάντε κλικ εδώ για να διαγράψετε το διακριτικό +TokenDeleted=Το token διαγράφηκε +RequestAccess=Κάντε κλικ εδώ για να ζητήσετε/ανανεώσετε την πρόσβαση και να λάβετε ένα νέο token +DeleteAccess=Κάντε κλικ εδώ για να διαγράψετε το token UseTheFollowingUrlAsRedirectURI=Χρησιμοποιήστε την ακόλουθη διεύθυνση URL ως URI ανακατεύθυνσης κατά τη δημιουργία των διαπιστευτηρίων σας με τον παροχέα υπηρεσιών OAuth: -ListOfSupportedOauthProviders=Καταχωρίστε τα διαπιστευτήρια που παρέχει ο πάροχος υπηρεσιών OAuth2. Υποστηρίζονται μόνο υποστηριζόμενοι πάροχοι OAuth2 εδώ. Αυτές οι υπηρεσίες μπορούν να χρησιμοποιηθούν από άλλες μονάδες που χρειάζονται έλεγχο ταυτότητας OAuth2. -OAuthSetupForLogin=Για να δημιουργήσετε ένα διακριτικό OAuth +ListOfSupportedOauthProviders=Προσθέστε τους πάροχους σας OAuth2 token. Στη συνέχεια, μεταβείτε στη σελίδα διαχειριστή του παρόχου OAuth για να δημιουργήσετε/λάβετε ένα αναγνωριστικό και ένα μυστικό OAuth και να τα αποθηκεύσετε εδώ. Μόλις τελειώσετε, ενεργοποιήστε την άλλη καρτέλα για να δημιουργήσετε το token σας. +OAuthSetupForLogin=Σελίδα διαχείρισης (δημιουργία/διαγραφή) OAuth token SeePreviousTab=Δείτε την προηγούμενη καρτέλα -OAuthIDSecret=OAuth ID και μυστικό -TOKEN_REFRESH=Ανανέωση σημείου Token -TOKEN_EXPIRED=Το κουπόνι έληξε -TOKEN_EXPIRE_AT=Το Token λήγει στο -TOKEN_DELETE=Διαγραφή αποθηκευμένου διακριτικού -OAUTH_GOOGLE_NAME=OAuth υπηρεσία Google +OAuthProvider=Πάροχος OAuth +OAuthIDSecret=OAuth ID και Secret +TOKEN_REFRESH=Ανανέωση token +TOKEN_EXPIRED=Το token έληξε +TOKEN_EXPIRE_AT=Το token λήγει +TOKEN_DELETE=Διαγραφή αποθηκευμένου token +OAUTH_GOOGLE_NAME=Υπηρεσία Google OAuth OAUTH_GOOGLE_ID=Αναγνωριστικό Google OAuth -OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Μεταβείτε σε αυτή τη σελίδα και μετά "Διαπιστευτήρια" για να δημιουργήσετε διαπιστευτήρια OAuth -OAUTH_GITHUB_NAME=Υπηρεσία OAuth GitHub -OAUTH_GITHUB_ID=Αναγνωριστικό OAuth GitHub -OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Μεταβείτε σε αυτή τη σελίδα και στη συνέχεια "Εγγραφή νέας εφαρμογής" για να δημιουργήσετε διαπιστευτήρια OAuth +OAUTH_GOOGLE_SECRET=Google OAuth Secret +OAUTH_GITHUB_NAME=Υπηρεσία GitHub OAuth +OAUTH_GITHUB_ID=Αναγνωριστικό GitHub OAuth +OAUTH_GITHUB_SECRET=GitHub OAuth Secret +OAUTH_URL_FOR_CREDENTIAL=Μεταβείτε σε αυτή τη σελίδα για να δημιουργήσετε ή να λάβετε το αναγνωριστικό και το Secret OAuth OAUTH_STRIPE_TEST_NAME=Δοκιμή OAuth Stripe -OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Ζωντανά +OAUTH_STRIPE_LIVE_NAME=OAuth Stripe +OAUTH_ID=Αναγνωριστικό OAuth +OAUTH_SECRET=Secret OAuth +OAuthProviderAdded=Προστέθηκε πάροχος OAuth +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Υπάρχει ήδη μια καταχώριση για αυτόν τον πάροχο και την ετικέτα OAuth  diff --git a/htdocs/langs/el_GR/opensurvey.lang b/htdocs/langs/el_GR/opensurvey.lang index fe92b6c07b0..7793120c14a 100644 --- a/htdocs/langs/el_GR/opensurvey.lang +++ b/htdocs/langs/el_GR/opensurvey.lang @@ -1,63 +1,63 @@ # Dolibarr language file - Source file is en_US - opensurvey -Survey=Ψηφοφορία -Surveys=Ψηφοφορίες -OrganizeYourMeetingEasily=Οργανώστε τις συναντήσεις και τις δημοσκοπήσεις σας εύκολα. Πρώτα επιλέξτε τον τύπο της δημοσκόπησης ... -NewSurvey=Νέα δημοσκόπηση -OpenSurveyArea=Περιοχή δημοσκοπήσεων +Survey=Δημοσκοπική έρευνα +Surveys=Δημοσκοπικές έρευνες +OrganizeYourMeetingEasily=Οργανώστε τις συναντήσεις και τις δημοσκοπήσεις σας εύκολα. Πρώτα επιλέξτε τον τύπο της δημοσκοπικής έρευνας ... +NewSurvey=Νέα δημοσκοπική έρευνα +OpenSurveyArea=Τομεας δημοσκοπήσεων AddACommentForPoll=Μπορείτε να προσθέσετε ένα σχόλιο στη δημοσκόπηση ... -AddComment=Προσθέστε σχόλιο -CreatePoll=Δημιουργία δημοσκόπησης +AddComment=Προσθήκη σχολίου +CreatePoll=Δημιουργία δημοσκοπικής έρευνας PollTitle=Τίτλος δημοσκόπησης -ToReceiveEMailForEachVote=Θα λάβετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου για κάθε ψηφοφορία -TypeDate=Ημερομηνία -TypeClassic=Πρότυπο +ToReceiveEMailForEachVote=Λάβετε ένα email για κάθε ψήφο +TypeDate=Τύπου ημερομηνίας +TypeClassic=Βασικός τύπος OpenSurveyStep2=Επιλέξτε τις ημερομηνίες σας μεταξύ των ελεύθερων ημερών (γκρι). Οι επιλεγμένες ημέρες είναι πράσινες. Μπορείτε να καταργήσετε την επιλογή μιας ημέρας που επιλέξατε προηγουμένως, κάνοντας κλικ ξανά σε αυτήν RemoveAllDays=Αφαιρέστε όλες τις ημέρες CopyHoursOfFirstDay=Αντιγραφή ωρών της πρώτης ημέρας RemoveAllHours=Αφαιρέστε όλες τις ώρες SelectedDays=Επιλεγμένες ημέρες -TheBestChoice=Η καλύτερη επιλογή σήμερα είναι -TheBestChoices=Οι καλύτερες επιλογές σήμερα είναι +TheBestChoice=Η καλύτερη επιλογή αυτή τη στιγμή είναι +TheBestChoices=Οι καλύτερες επιλογές αυτή τη στιγμή είναι with=με OpenSurveyHowTo=Εάν συμφωνείτε να ψηφίσετε σε αυτή τη δημοσκόπηση, θα πρέπει να δώσετε το όνομά σας, επιλέξετε τις τιμές που ταιριάζουν καλύτερα για σας και επιβεβαιώστε με το πλήκτρο συν στο τέλος της γραμμής. CommentsOfVoters=Σχόλια των ψηφοφόρων -ConfirmRemovalOfPoll=Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτή τη δημοσκόπηση (και όλες τις ψήφους) +ConfirmRemovalOfPoll=Είστε σίγουροι ότι θέλετε να καταργήσετε αυτήν τη δημοσκόπηση (και όλες τις ψήφους) RemovePoll=Κατάργηση δημοσκόπησης -UrlForSurvey=URL για να πάρετε άμεση πρόσβαση σε δημοσκόπηση -PollOnChoice=Θέλετε να δημιουργήσετε μια δημοσκόπηση πολλαπλών επιλογών για μια δημοσκόπηση. Πρώτα εισάγετε όλες τις πιθανές επιλογές για την ψηφοφορία σας: -CreateSurveyDate=Δημιουργήστε μια ημερομηνία των δημοσκοπήσεων -CreateSurveyStandard=Δημιουργήστε ένα πρότυπο δημοσκόπησης +UrlForSurvey=URL για να αποκτήσετε άμεση πρόσβαση στη δημοσκόπηση +PollOnChoice=Δημιουργείτε μια δημοσκόπηση πολλαπλών επιλογών. Εισάγετε πρώτα όλες τις πιθανές επιλογές για τη δημοσκόπηση σας: +CreateSurveyDate=Δημιουργήστε μια δημοσκόπηση ημερομηνίας +CreateSurveyStandard=Δημιουργήστε μια τυπική δημοσκόπηση CheckBox=Απλό πλαίσιο επιλογής -YesNoList=Λίστα (άδειο/ναι/όχι) -PourContreList=Λίστα (άδειο/για/από) -AddNewColumn=Προσθέσετε νέα στήλη -TitleChoice=Επιλέξτε ετικέτα +YesNoList=Λίστα (κενό/ναι/όχι) +PourContreList=Λίστα (κενό/υπέρ/κατά) +AddNewColumn=Προσθήκη νέας στήλης +TitleChoice=Ετικέτα επιλογής ExportSpreadsheet=Εξαγωγή αποτελεσμάτων σε υπολογιστικό φύλλο -ExpireDate=Όριο ημερομηνίας +ExpireDate=Ημερομηνία λήξης NbOfSurveys=Αριθμός δημοσκοπήσεων -NbOfVoters=Χωρίς ψηφοφόρους +NbOfVoters=Αριθμός ψηφοφόρων SurveyResults=Αποτελέσματα -PollAdminDesc=Έχετε την άδεια για να αλλάξει όλες τις γραμμές ψηφοφορίας της δημοσκόπησης αυτής με το κουμπί "Επεξεργασία". Μπορείτε, επίσης, να αφαιρέσετε μια στήλη ή μια γραμμή με %s. Μπορείτε επίσης να προσθέσετε μια νέα στήλη με %s. -5MoreChoices=5 περισσότερες επιλογές +PollAdminDesc=Επιτρέπεται να αλλάξετε όλες τις γραμμές ψήφου αυτής της δημοσκόπησης με το κουμπί "Επεξεργασία". Μπορείτε, επίσης, να αφαιρέσετε μια στήλη ή μια γραμμή με %s. Μπορείτε επίσης να προσθέσετε μια νέα στήλη με %s. +5MoreChoices=5 ακόμη επιλογές Against=Κατά -YouAreInivitedToVote=Μπορείτε προσκαλέσετε να ψηφίσουν για αυτή τη δημοσκόπηση -VoteNameAlreadyExists=Το όνομα αυτό χρησιμοποιείται ήδη για αυτή τη δημοσκόπηση -AddADate=Προσθέσετε μια ημερομηνία -AddStartHour=Προσθέσετε ώρα έναρξη -AddEndHour=Προσθέσετε ώρα λήξης -votes=vote(s) +YouAreInivitedToVote=Σας προσκαλούμε να ψηφίσετε σε αυτήν τη δημοσκοπική έρευνα +VoteNameAlreadyExists=Αυτό το όνομα χρησιμοποιήθηκε ήδη για αυτήν τη δημοσκόπηση +AddADate=Προσθήκη ημερομηνίας +AddStartHour=Προσθήκη ώρας έναρξης +AddEndHour=Προσθήκη ώρας λήξης +votes=ψήφοι NoCommentYet=Δεν έχουν αναρτηθεί σχόλια για αυτή τη δημοσκόπηση ακόμα -CanComment=Οι ψηφοφόροι μπορούν να σχολιάσουν στη δημοσκόπηση +CanComment=Οι ψηφοφόροι μπορούν να σχολιάσουν τη δημοσκόπηση YourVoteIsPrivate=Αυτή η δημοσκόπηση είναι ιδιωτική, κανείς δεν μπορεί να δει την ψήφο σας. YourVoteIsPublic=Αυτή η δημοσκόπηση είναι δημόσια, οποιοσδήποτε έχει τον σύνδεσμο μπορεί να δει την ψήφο σας. -CanSeeOthersVote=Οι ψηφοφόροι μπορούν να δουν την ψήφο άλλων -SelectDayDesc=Για κάθε επιλεγμένη ημέρα, μπορείτε να επιλέξετε ή όχι τις ώρες συνάντησης με την ακόλουθη μορφή:
- άδειο,
- "8h", "8H" ή "8:00" για να δώσετε μια ώρα έναρξης της συνάντησης,
- "8-11", "8h-11h", "8H-11H" ή "8: 00-11: 00" για την ώρα έναρξης και λήξης μιας σύσκεψης,
- "8h15-11h15", "8H15-11H15" ή "8: 15-11: 15" για το ίδιο πράγμα αλλά με λεπτά. +CanSeeOthersVote=Οι ψηφοφόροι μπορούν να δουν την ψήφο των άλλων +SelectDayDesc=Για κάθε επιλεγμένη ημέρα, μπορείτε να επιλέξετε ή όχι ώρες σύσκεψης στην ακόλουθη μορφή:
- κενό,
- "8h", "8H" ή "8:00" για να δώσετε την ώρα έναρξης μιας σύσκεψης,
- "8- 11", "8h-11h", "8H-11H" ή "8:00-11:00" για να δώσετε την ώρα έναρξης και λήξης μιας σύσκεψης,
- "8h15-11h15", "8H15-11H15" ή "8: 15-11:15" το ίδιο με το προηγούμενο αλλά με λεπτά. BackToCurrentMonth=Πίσω στον τρέχοντα μήνα -ErrorOpenSurveyFillFirstSection=Δεν έχετε συμπληρώσει το πρώτο τμήμα για τη δημιουργία τις δημοσκόπησης +ErrorOpenSurveyFillFirstSection=Δεν έχετε συμπληρώσει την πρώτη ενότητα της δημιουργίας δημοσκόπησης ErrorOpenSurveyOneChoice=Εισάγετε τουλάχιστον μία επιλογή ErrorInsertingComment=Υπήρξε ένα σφάλμα κατά την εισαγωγή του σχόλιου σας MoreChoices=Εισάγετε περισσότερες επιλογές για τους ψηφοφόρους -SurveyExpiredInfo=Η δημοσκόπηση αυτή έχει λήξει ή ο χρόνος ψηφοφορίας έληξε. -EmailSomeoneVoted=%s έχει γεμίσει μια γραμμή. \nΜπορείτε να βρείτε τη δημοσκόπηση σας στο σύνδεσμο:\n %s +SurveyExpiredInfo=Η ψηφοφορία έχει κλείσει ή έχει λήξει η καθυστέρηση της ψηφοφορίας. +EmailSomeoneVoted=Το %s έχει συμπληρώσει μια γραμμή.\nΜπορείτε να βρείτε τη δημοσκόπηση σας στον σύνδεσμο:\n%s ShowSurvey=Εμφάνιση έρευνας -UserMustBeSameThanUserUsedToVote=Θα πρέπει να έχετε ψηφίσει και να χρησιμοποιήσετε το ίδιο όνομα χρήστη που χρησιμοποιήθηκε για την ψήφο, να δημοσιεύσετε ένα σχόλιο +UserMustBeSameThanUserUsedToVote=Πρέπει να έχετε ψηφίσει και να χρησιμοποιησατε το ίδιο όνομα χρήστη με εκείνον που ψήφισε, για να δημοσιεύσετε ένα σχόλιο diff --git a/htdocs/langs/el_GR/orders.lang b/htdocs/langs/el_GR/orders.lang index 3e99ce1fa3e..ee15f50fb2f 100644 --- a/htdocs/langs/el_GR/orders.lang +++ b/htdocs/langs/el_GR/orders.lang @@ -1,8 +1,9 @@ # Dolibarr language file - Source file is en_US - orders -OrdersArea=Περιοχή παραγγελιών πελατών -SuppliersOrdersArea=Περιοχή παραγγελιών αγοράς +OrderExists=Μια παραγγελία ήταν ήδη ανοιχτή και συνδεδεμένη με αυτήν την προσφορά, επομένως καμία άλλη παραγγελία δεν δημιουργήθηκε αυτόματα +OrdersArea=Τομέας παραγγελιών πελατών +SuppliersOrdersArea=Τομέας παραγγελιών αγοράς OrderCard=Καρτέλα παραγγελίας -OrderId=Αρ.Παραγγελίας +OrderId=Αναγνωριστικό Παραγγελίας Order=Παραγγελία PdfOrderTitle=Παραγγελία Orders=Παραγγελίες @@ -12,60 +13,60 @@ OrderDateShort=Ημερομηνία παραγγελίας OrderToProcess=Παραγγελία προς επεξεργασία NewOrder=Νέα παραγγελία NewSupplierOrderShort=Νέα παραγγελία -NewOrderSupplier=Νέα εντολή αγοράς -ToOrder=Δημιουργία πραγγελίας +NewOrderSupplier=Νέα Παραγγελία Αγοράς +ToOrder=Δημιουργία παραγγελίας MakeOrder=Δημιουργία παραγγελίας SupplierOrder=Παραγγελία αγοράς -SuppliersOrders=Εντολές αγοράς -SaleOrderLines=Γραμμές παραγγελιών πωλήσεων +SuppliersOrders=Παραγγελίες αγοράς +SaleOrderLines=Γραμμές εντολών πωλήσεων PurchaseOrderLines=Γραμμές παραγγελιών αγοράς -SuppliersOrdersRunning=Τρέχουσες εντολές αγοράς -CustomerOrder=Παραγγελία πώλησης -CustomersOrders=Παραγγελίες πωλήσεων -CustomersOrdersRunning=Τρέχουσες παραγγελίες πωλήσεων -CustomersOrdersAndOrdersLines=Παραγγελίες πωλήσεων και λεπτομέρειες παραγγελίας -OrdersDeliveredToBill=Παραγγελίες πωλήσεων που παραδίδονται στο λογαριασμό -OrdersToBill=Παραγγελίες πωλήσεων που παραδόθηκαν -OrdersInProcess=Παραγγελίες πωλήσεων σε εξέλιξη -OrdersToProcess=Παραγγελίες πωλήσεων για επεξεργασία +SuppliersOrdersRunning=Τρέχουσες παραγγελίες αγοράς +CustomerOrder=Εντολή πώλησης +CustomersOrders=Εντολές πωλήσεων +CustomersOrdersRunning=Τρέχουσες εντολές πωλήσεων +CustomersOrdersAndOrdersLines=Εντολές πωλήσεων και λεπτομέρειες παραγγελίας +OrdersDeliveredToBill=Παραδομένες εντολές πωλήσεων προς τιμολόγηση +OrdersToBill=Παραδομένες εντολές πωλήσεων +OrdersInProcess=Εντολές πωλήσεων σε εξέλιξη +OrdersToProcess=Εντολές πωλήσεων προς επεξεργασία SuppliersOrdersToProcess=Παραγγελίες αγοράς για επεξεργασία -SuppliersOrdersAwaitingReception=Οι εντολές αγοράς αναμένουν τη λήψη -AwaitingReception=Αναμονή λήψης +SuppliersOrdersAwaitingReception=Παραγγελίες αγοράς εν αναμονή παραλαβής +AwaitingReception=Εν αναμονή παραλαβής StatusOrderCanceledShort=Ακυρωμένη StatusOrderDraftShort=Προσχέδιο StatusOrderValidatedShort=Επικυρωμένη -StatusOrderSentShort=Αποστολή στη διαδικασία +StatusOrderSentShort=Σε εξέλιξη StatusOrderSent=Αποστολή σε εξέλιξη StatusOrderOnProcessShort=Παραγγέλθηκε StatusOrderProcessedShort=Ολοκληρωμένη StatusOrderDelivered=Παραδόθηκε StatusOrderDeliveredShort=Παραδόθηκε -StatusOrderToBillShort=Για πληρωμή +StatusOrderToBillShort=Παραδόθηκε StatusOrderApprovedShort=Εγκεκριμένη -StatusOrderRefusedShort=Αρνήθηκε +StatusOrderRefusedShort=Απορρίφθηκε StatusOrderToProcessShort=Προς επεξεργασία -StatusOrderReceivedPartiallyShort=Λήφθηκε μερικώς -StatusOrderReceivedAllShort=Τα προϊόντα που ελήφθησαν +StatusOrderReceivedPartiallyShort=Εν μέρει παραλήφθηκε +StatusOrderReceivedAllShort=Προϊόντα που παραλήφθηκαν StatusOrderCanceled=Ακυρωμένη StatusOrderDraft=Προσχέδιο (χρειάζεται επικύρωση) StatusOrderValidated=Επικυρωμένη StatusOrderOnProcess=Παραγγέλθηκε - Αναμονή παραλαβής StatusOrderOnProcessWithValidation=Παραγγέλθηκε - Αναμονή παραλαβής ή επικύρωσης StatusOrderProcessed=Ολοκληρωμένη -StatusOrderToBill=Προς πληρωμή -StatusOrderApproved=Εγγεκριμένη -StatusOrderRefused=Αρνήθηκε -StatusOrderReceivedPartially=Λήφθηκε μερικώς -StatusOrderReceivedAll=Όλα τα προϊόντα που ελήφθησαν -ShippingExist=Μια αποστολή, υπάρχει -QtyOrdered=Qty ordered -ProductQtyInDraft=Ποσότητα του προϊόντος στην πρόχειρη παραγγελία -ProductQtyInDraftOrWaitingApproved=Ποσότητα του προϊόντος στο σχέδιο ή στις παραγγελίες που έχουν εγκριθεί, δεν έχει ακόμα παραγγελθεί +StatusOrderToBill=Παραδόθηκε +StatusOrderApproved=Εγκρίθηκε +StatusOrderRefused=Απορρίφθηκε +StatusOrderReceivedPartially=Εν μέρει παραλήφθηκε +StatusOrderReceivedAll=Παραλήφθηκαν όλα τα προϊόντα +ShippingExist=Υπάρχει αποστολή +QtyOrdered=Ποσότητα παραγγελίας +ProductQtyInDraft=Ποσότητα προϊόντος στα προσχέδια παραγγελίων +ProductQtyInDraftOrWaitingApproved=Ποσότητα προϊόντος σε προσχέδια ή σε παραγγελίες αναμονή έγκρισης , δεν έχει δοθεί εντολή ακόμη MenuOrdersToBill=Παραγγελίες προς χρέωση MenuOrdersToBill2=Χρεώσιμες παραγγελίες ShipProduct=Αποστολή Προϊόντος CreateOrder=Δημιουργία παραγγελίας -RefuseOrder=Άρνηση παραγγελίας +RefuseOrder=Απόρριψη παραγγελίας ApproveOrder=Έγκριση παραγγελίας Approve2Order=Έγκριση παραγγελίας (δεύτερο επίπεδο) UserApproval=Χρήστης για έγκριση @@ -77,124 +78,124 @@ CancelOrder=Ακύρωση παραγγελίας OrderReopened= Παραγγελία %s Ανοίγει ξανά AddOrder=Δημιουργία παραγγελίας AddSupplierOrderShort=Δημιουργία παραγγελίας -AddPurchaseOrder=Δημιουργία εντολής αγοράς -AddToDraftOrders=Προσθήκη στο σχέδιο παραγγελιας +AddPurchaseOrder=Δημιουργία παραγγελίας αγοράς +AddToDraftOrders=Προσθήκη στο προσχέδιο παραγγελίας ShowOrder=Εμφάνιση παραγγελίας -OrdersOpened=Παραγγελίες για επεξεργασία +OrdersOpened=Παραγγελίες προς επεξεργασία NoDraftOrders=Δεν υπάρχουν προσχέδια παραγγελιών -NoOrder=Αρ. παραγγελίας -NoSupplierOrder=Δεν υπάρχει εντολή αγοράς -LastOrders=Τελευταίες παραγγελίες πωλήσεων %s -LastCustomerOrders=Τελευταίες παραγγελίες πωλήσεων %s -LastSupplierOrders=Τελευταίες παραγγελίες αγοράς %s +NoOrder=Καμιά παραγγελία +NoSupplierOrder=Δεν υπάρχει παραγγελία αγοράς +LastOrders=Τελευταίες %s εντολές πωλήσεων +LastCustomerOrders=Τελευταίες %s εντολές πωλήσεων +LastSupplierOrders=Τελευταίες %sπαραγγελίες αγοράς LastModifiedOrders=Τελευταίες %s τροποποιημένες παραγγελίες AllOrders=Όλες οι παραγγελίες -NbOfOrders=Πλήθος παραγγελιών +NbOfOrders=Αριθμός παραγγελιών OrdersStatistics=Στατιστικά παραγγελιών OrdersStatisticsSuppliers=Στατιστικά παραγγελίας αγοράς -NumberOfOrdersByMonth=Πλήθος παραγγελιών ανά μήνα +NumberOfOrdersByMonth=Αριθμός παραγγελιών ανά μήνα AmountOfOrdersByMonthHT=Ποσό παραγγελιών ανά μήνα (εκτός φόρου) ListOfOrders=Λίστα παραγγελιών CloseOrder=Κλείσιμο Παραγγελίας -ConfirmCloseOrder=Είστε βέβαιοι ότι θέλετε να ορίσετε αυτήν την παραγγελία ως παραδομένη; Μόλις παραδοθεί μια παραγγελία, μπορεί να οριστεί ως τιμολογημένη. -ConfirmDeleteOrder=Είστε σίγουρος ότι θέλετε να διαγράψετε την παραγγελία; -ConfirmValidateOrder=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτήν την παραγγελία με το όνομα %s ? -ConfirmUnvalidateOrder=Είστε βέβαιοι ότι θέλετε να επαναφέρετε τη σειρά %s για την κατάσταση κατάστασης; -ConfirmCancelOrder=Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την παραγγελία; -ConfirmMakeOrder=Είστε βέβαιοι ότι θέλετε να επιβεβαιώσετε ότι πραγματοποιήσατε αυτήν την παραγγελία στο %s ; +ConfirmCloseOrder=Είστε σίγουροι ότι θέλετε να ορίσετε αυτήν την παραγγελία ως παραδομένη; Μόλις παραδοθεί μια παραγγελία, μπορεί να οριστεί ως τιμολογημένη. +ConfirmDeleteOrder=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την παραγγελία; +ConfirmValidateOrder=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την παραγγελία με το όνομα %s ; +ConfirmUnvalidateOrder=Είστε σίγουροι ότι θέλετε να επαναφέρετε την παραγγελία %s σε κατάσταση προσχεδίου; +ConfirmCancelOrder=Είστε σίγουροι ότι θέλετε να ακυρώσετε αυτήν την παραγγελία; +ConfirmMakeOrder=Είστε σίγουροι ότι θέλετε να επιβεβαιώσετε ότι πραγματοποιήσατε αυτήν την παραγγελία στο %s ; GenerateBill=Δημιουργία τιμολογίου -ClassifyShipped=Χαρακτηρισμός ως παραδοτέο -PassedInShippedStatus=ταξινομημένη παραδόθηκε +ClassifyShipped=Ταξινόμηση ως παραδομένη +PassedInShippedStatus=Ταξινόμηση ως παραδομένη YouCantShipThis=Δεν μπορώ να το ταξινομήσω αυτό. Ελέγξτε τα δικαιώματα χρήστη DraftOrders=Προσχέδια παραγγελιών -DraftSuppliersOrders=Σχέδια εντολών αγοράς +DraftSuppliersOrders=Προσχέδια παραγγελιών αγοράς OnProcessOrders=Παραγγελίες σε εξέλιξη -RefOrder=Κωδ. παραγγελίας +RefOrder=Αναφ. παραγγελίας RefCustomerOrder=Αναφ. παραγγελίας για τον πελάτη -RefOrderSupplier=Αναφ. παραγγελία για τον πωλητή -RefOrderSupplierShort=Αναφ. προμηθευτής παραγγελιών -SendOrderByMail=Αποστολή παραγγελίας με email +RefOrderSupplier=Αναφ. παραγγελίας για τον προμηθευτή +RefOrderSupplierShort=Αναφ. προμηθευτή παραγγελίας +SendOrderByMail=Αποστολή παραγγελίας μέσω ταχυδρομείου ActionsOnOrder=Ενέργειες στην παραγγελία -NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +NoArticleOfTypeProduct=Δεν υπάρχει αντικείμενο τύπου «προϊόν», επομένως δεν υπάρχει αντικείμενο αποστολής για αυτήν την παραγγελία OrderMode=Μέθοδος παραγγελίας -AuthorRequest=Request author -UserWithApproveOrderGrant=Users granted with "approve orders" permission. -PaymentOrderRef=Payment of order %s -ConfirmCloneOrder=Είστε βέβαιοι ότι θέλετε να κλωνοποιήσετε αυτή την παραγγελία %s ? -DispatchSupplierOrder=Λήψη εντολής αγοράς %s -FirstApprovalAlreadyDone=Η πρώτη έγκριση ήδη έγινε -SecondApprovalAlreadyDone=Δεύτερη έγκριση έγινε ήδη -SupplierOrderReceivedInDolibarr=Η εντολή αγοράς %s έλαβε %s -SupplierOrderSubmitedInDolibarr=Παραγγελία αγοράς %s -SupplierOrderClassifiedBilled=Η εντολή αγοράς %s έχει οριστεί ως τιμολογημένη +AuthorRequest=Αιτών +UserWithApproveOrderGrant=Χρήστες στους οποίους χορηγείται άδεια "έγκρισης παραγγελιών". +PaymentOrderRef=Πληρωμή της παραγγελίας %s +ConfirmCloneOrder=Είστε σίγουροι ότι θέλετε να αντιγράψετε αυτή την παραγγελία %s ? +DispatchSupplierOrder=Λήψη παραγγελίας αγοράς %s +FirstApprovalAlreadyDone=Η πρώτη έγκριση έχει ήδη γίνει +SecondApprovalAlreadyDone=Η δεύτερη έγκριση έχει ήδη γίνει +SupplierOrderReceivedInDolibarr=Η παραγγελία αγοράς %s παρελήφθη %s +SupplierOrderSubmitedInDolibarr=Η παραγγελία αγοράς %s καταχωρήθηκε +SupplierOrderClassifiedBilled=Η παραγγελία αγοράς %s έχει οριστεί ως τιμολογημένη OtherOrders=Άλλες παραγγελίες SupplierOrderValidatedAndApproved=Η παραγγελία του προμηθευτή έχει επικυρωθεί και εγκριθεί: %s SupplierOrderValidated=Η παραγγελία του προμηθευτή είναι επικυρωμένη: %s ##### Types de contacts ##### -TypeContact_commande_internal_SALESREPFOLL=Αντιπροσωπευτική συνέχεια παραγγελίας πώλησης -TypeContact_commande_internal_SHIPPING=Representative following-up shipping -TypeContact_commande_external_BILLING=Customer invoice contact -TypeContact_commande_external_SHIPPING=Customer shipping contact -TypeContact_commande_external_CUSTOMER=Customer contact following-up order -TypeContact_order_supplier_internal_SALESREPFOLL=Εκπρόσωπος εντολής παρακολούθησης -TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_internal_SALESREPFOLL=Εκπρόσωπος εξέλιξης εντολής πώλησης +TypeContact_commande_internal_SHIPPING=Εκπρόσωπος εξέλιξης αποστολής +TypeContact_commande_external_BILLING=Επαφή τιμολογίου πελάτη +TypeContact_commande_external_SHIPPING=Επαφή αποστολής πελάτη +TypeContact_commande_external_CUSTOMER=Επαφή εξέλιξης παραγγελίας πελάτη +TypeContact_order_supplier_internal_SALESREPFOLL=Εκπρόσωπος εξέλιξης παραγγελίας αγοράς +TypeContact_order_supplier_internal_SHIPPING=Εκπρόσωπος εξέλιξης αποστολής TypeContact_order_supplier_external_BILLING=Επαφή τιμολογίου προμηθευτή TypeContact_order_supplier_external_SHIPPING=Επαφή αποστολής προμηθευτή -TypeContact_order_supplier_external_CUSTOMER=Παραγγελία παρακολούθησης επικοινωνίας προμηθευτή -Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined -Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined -Error_OrderNotChecked=Δεν υπάρχουν παραγγελίες στο επιλεγμένο τιμολόγιο +TypeContact_order_supplier_external_CUSTOMER=Επαφή εξέλιξης παραγγελίας προμηθευτή +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Η σταθερά COMMANDE_SUPPLIER_ADDON δεν έχει οριστεί +Error_COMMANDE_ADDON_NotDefined=Η σταθερά COMMANDE_ADDON δεν έχει οριστεί +Error_OrderNotChecked=Δεν επιλέχθηκαν παραγγελίες για τιμολόγηση # Order modes (how we receive order). Not the "why" are keys stored into dict.lang OrderByMail=Ταχυδρομείο -OrderByFax=Φαξ +OrderByFax=Fax OrderByEMail=Email OrderByWWW=Online OrderByPhone=Τηλέφωνο # Documents models -PDFEinsteinDescription=Ένα πλήρες μοντέλο παραγγελίας (παλιά εφαρμογή του προτύπου Eratosthene) -PDFEratostheneDescription=Ένα πλήρες μοντέλο παραγγελίας -PDFEdisonDescription=Απλό πρότυπο παραγγελίας -PDFProformaDescription=Ένα πλήρες πρότυπο τιμολογίου Proforma -CreateInvoiceForThisCustomer=Τιμολογημένες παραγγελίες -CreateInvoiceForThisSupplier=Τιμολογημένες παραγγελίες -CreateInvoiceForThisReceptions=Τιμολόγηση παραλαβών -NoOrdersToInvoice=Δεν υπάρχουν τιμολογημένες παραγγελίες -CloseProcessedOrdersAutomatically=Χαρακτηρίστε σε «εξέλιξη» όλες τις επιλεγμένες παραγγελίες. +PDFEinsteinDescription=Ένα πλήρες μοντέλο παραγγελιών (παλιά εφαρμογή του προτύπου Eratosthene) +PDFEratostheneDescription=Ένα πλήρες μοντέλο παραγγελιών +PDFEdisonDescription=Ένα απλό πρότυπο παραγγελιών +PDFProformaDescription=Ένα πλήρες πρότυπο προτιμολογίου (Proforma) +CreateInvoiceForThisCustomer=Τιμολόγηση παραγγελιών +CreateInvoiceForThisSupplier=Τιμολόγηση παραγγελιών +CreateInvoiceForThisReceptions=Παραλαβές προς τιμολόγηση +NoOrdersToInvoice=Δεν υπάρχουν παραγγελίες προς τιμολόγηση +CloseProcessedOrdersAutomatically=Ταξινομήστε "Επεξεργασμένες" όλες τις επιλεγμένες παραγγελίες. OrderCreation=Δημιουργία Παραγγελίας -Ordered=Παραγγελια +Ordered=Παραγγελίες OrderCreated=Οι παραγγελίες σας έχουν δημιουργηθεί OrderFail=Ένα σφάλμα συνέβη κατά τη δημιουργία των παραγγελιών CreateOrders=Δημιουργία παραγγελιών ToBillSeveralOrderSelectCustomer=Για να δημιουργήσετε ένα τιμολόγιο για αρκετές παραγγελίες, κάντε κλικ πρώτα στον πελάτη, στη συνέχεια, επιλέξτε "%s". OptionToSetOrderBilledNotEnabled=Η επιλογή από την ενότητα Ροής εργασιών, για να ορίσετε την παραγγελία ως "Τιμολογημένη" αυτόματα όταν επικυρώνεται το τιμολόγιο, δεν είναι ενεργοποιημένη, επομένως θα πρέπει να ορίσετε την κατάσταση των παραγγελιών ως "Τιμολογημένες" χειροκίνητα μετά τη δημιουργία του τιμολογίου. IfValidateInvoiceIsNoOrderStayUnbilled=Εάν η επικύρωση τιμολογίου είναι «Όχι», η παραγγελία θα παραμείνει στην κατάσταση «Μη τιμολογημένη» μέχρι να επικυρωθεί το τιμολόγιο. -CloseReceivedSupplierOrdersAutomatically=Κλείστε τη σειρά για την κατάσταση "%s" αυτόματα αν ληφθούν όλα τα προϊόντα. -SetShippingMode=Ορίστε τη λειτουργία αποστολής -WithReceptionFinished=Με την ολοκλήρωση της λήψης +CloseReceivedSupplierOrdersAutomatically=Κλείσιμο παραγγελίας σε κατάσταση "%s" αυτόματα εάν ληφθούν όλα τα προϊόντα. +SetShippingMode=Ρυθμίστε τη λειτουργία αποστολής +WithReceptionFinished=Με την ολοκλήρωση της παραλαβής #### supplier orders status StatusSupplierOrderCanceledShort=Ακυρώθηκε -StatusSupplierOrderDraftShort=Πρόχειρο +StatusSupplierOrderDraftShort=Προσχέδιο StatusSupplierOrderValidatedShort=Επικυρώθηκε -StatusSupplierOrderSentShort=Αποστολή στη διαδικασία +StatusSupplierOrderSentShort=Σε εξέλιξη StatusSupplierOrderSent=Αποστολή σε εξέλιξη StatusSupplierOrderOnProcessShort=Παραγγέλθηκε -StatusSupplierOrderProcessedShort=Επεξεργασμένα +StatusSupplierOrderProcessedShort=Ολοκληρώθηκε StatusSupplierOrderDelivered=Παραδόθηκε StatusSupplierOrderDeliveredShort=Παραδόθηκε StatusSupplierOrderToBillShort=Παραδόθηκε StatusSupplierOrderApprovedShort=Εγκεκριμένη StatusSupplierOrderRefusedShort=Απορρίφθηκε -StatusSupplierOrderToProcessShort=Για την διαδικασία -StatusSupplierOrderReceivedPartiallyShort=Λήφθηκε μερικώς -StatusSupplierOrderReceivedAllShort=Τα προϊόντα που ελήφθησαν +StatusSupplierOrderToProcessShort=Προς επεξεργασία +StatusSupplierOrderReceivedPartiallyShort=Εν μέρει παραλήφθηκε +StatusSupplierOrderReceivedAllShort=Τα προϊόντα παρελήφθησαν StatusSupplierOrderCanceled=Ακυρώθηκε -StatusSupplierOrderDraft=Πρόχειρο (Χρειάζεται επικύρωση) +StatusSupplierOrderDraft=Προσχέδιο (Χρειάζεται επικύρωση) StatusSupplierOrderValidated=Επικυρώθηκε StatusSupplierOrderOnProcess=Παραγγέλθηκε - Αναμονή παραλαβής StatusSupplierOrderOnProcessWithValidation=Παραγγέλθηκε - Αναμονή παραλαβής ή επικύρωσης -StatusSupplierOrderProcessed=Επεξεργασμένα +StatusSupplierOrderProcessed=Ολοκληρώθηκε StatusSupplierOrderToBill=Παραδόθηκε -StatusSupplierOrderApproved=Εγκεκριμένη +StatusSupplierOrderApproved=Εγκρίθηκε StatusSupplierOrderRefused=Απορρίφθηκε -StatusSupplierOrderReceivedPartially=Λήφθηκε μερικώς -StatusSupplierOrderReceivedAll=Όλα τα προϊόντα που ελήφθησαν +StatusSupplierOrderReceivedPartially=Εν μέρει παραλήφθηκε +StatusSupplierOrderReceivedAll=Όλα τα προϊόντα παραλήφθηκαν diff --git a/htdocs/langs/el_GR/other.lang b/htdocs/langs/el_GR/other.lang index 470d87827c6..fe2005d7daa 100644 --- a/htdocs/langs/el_GR/other.lang +++ b/htdocs/langs/el_GR/other.lang @@ -12,26 +12,26 @@ MonthOfInvoice=Μήνας (αριθμός 1-12) της ημερομηνίας τ TextMonthOfInvoice=Μήνας (κείμενο) της ημερομηνίας του τιμολογίου PreviousMonthOfInvoice=Προηγούμενος μήνας (αριθμός 1-12) της ημερομηνίας του τιμολογίου TextPreviousMonthOfInvoice=Προηγούμενος μήνας (κείμενο) της ημερομηνίας του τιμολογίου -NextMonthOfInvoice=Μετά τον μήνα (αριθμός 1-12) της ημερομηνίας του τιμολογίου -TextNextMonthOfInvoice=Μετά τον μήνα (κείμενο) της ημερομηνίας του τιμολογίου +NextMonthOfInvoice=Επόμενος μήνας (αριθμός 1-12) της ημερομηνίας τιμολογίου +TextNextMonthOfInvoice=Επόμενος μήνας (κείμενο) ημερομηνίας τιμολογίου PreviousMonth=Προηγούμενος μήνας CurrentMonth=Τρέχων μήνας -ZipFileGeneratedInto=Το αρχείο Zip δημιουργήθηκε σε %s . -DocFileGeneratedInto=Το αρχείο Doc δημιουργήθηκε σε %s . -JumpToLogin=Ασύνδετος. Μετάβαση στη σελίδα σύνδεσης ... -MessageForm=Μήνυμα σε ηλεκτρονική φόρμα πληρωμής +ZipFileGeneratedInto=Το αρχείο zip δημιουργήθηκε στο %s . +DocFileGeneratedInto=Το αρχείο εγγράφου Doc δημιουργήθηκε στο %s . +JumpToLogin=Έγινε αποσύνδεση. Μετάβαση στη σελίδα σύνδεσης... +MessageForm=Μήνυμα στην ηλεκτρονική φόρμα πληρωμής MessageOK=Μήνυμα στη σελίδα επιστροφής για επικυρωμένη πληρωμή MessageKO=Μήνυμα στη σελίδα επιστροφής για μια ακυρωμένη πληρωμή -ContentOfDirectoryIsNotEmpty=Το περιεχόμενο αυτού του καταλόγου δεν είναι άδειο. +ContentOfDirectoryIsNotEmpty=Το περιεχόμενο αυτού του καταλόγου δεν είναι κενό. DeleteAlsoContentRecursively=Επιλέξτε για να διαγράψετε όλο το περιεχόμενο αναδρομικά PoweredBy=Powered by -YearOfInvoice=Έτος της ημερομηνίας του τιμολογίου -PreviousYearOfInvoice=Προηγούμενο έτος της ημερομηνίας του τιμολογίου -NextYearOfInvoice=Μετά το έτος της ημερομηνίας του τιμολογίου -DateNextInvoiceBeforeGen=Ημερομηνία επόμενου τιμολογίου (πριν από την παραγωγή) -DateNextInvoiceAfterGen=Ημερομηνία επόμενου τιμολογίου (μετά την παραγωγή) -GraphInBarsAreLimitedToNMeasures=Τα Grapics περιορίζονται σε μετρήσεις %s σε λειτουργία "Bars". Η λειτουργία «Γραμμές» επιλέχθηκε αυτόματα. -OnlyOneFieldForXAxisIsPossible=Μόνο 1 πεδίο είναι επί του παρόντος δυνατός ως Άξονας Χ. Έχει επιλεγεί μόνο το πρώτο επιλεγμένο πεδίο. +YearOfInvoice=Έτος ημερομηνίας τιμολογίου +PreviousYearOfInvoice=Προηγούμενο έτος ημερομηνίας τιμολογίου +NextYearOfInvoice=Επόμενο έτος ημερομηνίας τιμολογίου +DateNextInvoiceBeforeGen=Ημερομηνία επόμενου τιμολογίου (πριν από την δημιουργία) +DateNextInvoiceAfterGen=Ημερομηνία επόμενου τιμολογίου (μετά την δημιουργία) +GraphInBarsAreLimitedToNMeasures=Τα γραφικά περιορίζονται σε %s μετρήσεις στη λειτουργία "Μπάρες". Αντ' αυτού, επιλέχθηκε αυτόματα η λειτουργία "Γραμμές". +OnlyOneFieldForXAxisIsPossible=Μόνο 1 πεδίο είναι προς το παρόν δυνατό στον Άξονα X. Έχει χρησιμοποιηθεί μόνο το πρώτο επιλεγμένο πεδίο. AtLeastOneMeasureIsRequired=Απαιτείται τουλάχιστον 1 πεδίο για μέτρηση AtLeastOneXAxisIsRequired=Απαιτείται τουλάχιστον 1 πεδίο για τον άξονα Χ LatestBlogPosts=Τελευταίες δημοσιεύσεις ιστολογίου @@ -39,63 +39,63 @@ notiftouser=Προς χρήστες notiftofixedemail=Προς συγκεκριμένο email notiftouserandtofixedemail=Προς χρήστη και συγκεκριμένο email Notify_ORDER_VALIDATE=Η εντολή πώλησης έχει επικυρωθεί -Notify_ORDER_SENTBYMAIL=Η εντολή πωλήσεων αποστέλλεται μέσω ταχυδρομείου -Notify_ORDER_SUPPLIER_SENTBYMAIL=Η εντολή αγοράς στάλθηκε μέσω ηλεκτρονικού ταχυδρομείου -Notify_ORDER_SUPPLIER_VALIDATE=Καταγράφεται η εντολή αγοράς -Notify_ORDER_SUPPLIER_APPROVE=Η παραγγελία εγκρίθηκε -Notify_ORDER_SUPPLIER_REFUSE=Η παραγγελία αγοράς απορρίφθηκε -Notify_PROPAL_VALIDATE=Η εμπ. πρόταση πελάτη επικυρώθηκε -Notify_PROPAL_CLOSE_SIGNED=Η πρόταση πελάτη έκλεισε υπογεγραμμένη -Notify_PROPAL_CLOSE_REFUSED=Η πρόταση πελάτη έκλεισε -Notify_PROPAL_SENTBYMAIL=Εμπορικές προτάσεις που αποστέλλονται ταχυδρομικώς -Notify_WITHDRAW_TRANSMIT=Μετάδοση απόσυρση -Notify_WITHDRAW_CREDIT=Πιστωτικές απόσυρση -Notify_WITHDRAW_EMIT=Εκτελέστε την απόσυρση -Notify_COMPANY_CREATE=Τρίτο κόμμα δημιουργήθηκε +Notify_ORDER_SENTBYMAIL=Η εντολή πωλήσεων στάλθηκε μέσω ταχυδρομείου +Notify_ORDER_SUPPLIER_SENTBYMAIL=Η εντολή αγοράς στάλθηκε μέσω email +Notify_ORDER_SUPPLIER_VALIDATE=Η εντολή αγοράς καταγράφηκε +Notify_ORDER_SUPPLIER_APPROVE=Η εντολή αγοράς εγκρίθηκε +Notify_ORDER_SUPPLIER_REFUSE=Η εντολή αγοράς απορρίφθηκε +Notify_PROPAL_VALIDATE=Η πρόσφορα πελάτη επικυρώθηκε +Notify_PROPAL_CLOSE_SIGNED=Η πρόσφορα πελάτη έκλεισε υπογεγραμμένη +Notify_PROPAL_CLOSE_REFUSED=Η πρόσφορα πελάτη έκλεισε, απορρίφθηκε +Notify_PROPAL_SENTBYMAIL=Η Εμπορική προσφορά απεστάλη ταχυδρομικώς +Notify_WITHDRAW_TRANSMIT=Μετάδοση ανάληψης +Notify_WITHDRAW_CREDIT=Πίστωση ανάληψης +Notify_WITHDRAW_EMIT=Εκτέλεση ανάληψης +Notify_COMPANY_CREATE=Τρίτο μέρος δημιουργήθηκε Notify_COMPANY_SENTBYMAIL=Μηνύματα που αποστέλλονται από την κάρτα Πελ./Προμ. Notify_BILL_VALIDATE=Το τιμολόγιο πελάτη επικυρώθηκε -Notify_BILL_UNVALIDATE=Τιμολόγιο του Πελάτη μη επικυρωμένο -Notify_BILL_PAYED=Πληρωμή τιμολογίου πελάτη -Notify_BILL_CANCEL=Τιμολογίου Πελατών ακυρώσεις -Notify_BILL_SENTBYMAIL=Τιμολογίου Πελατών σταλούν ταχυδρομικώς -Notify_BILL_SUPPLIER_VALIDATE=Το τιμολόγιο πωλητή επικυρώθηκε -Notify_BILL_SUPPLIER_PAYED=Πληρωμή τιμολογίου προμηθευτή -Notify_BILL_SUPPLIER_SENTBYMAIL=Τιμολόγιο πωλητή αποστέλλεται μέσω ταχυδρομείου -Notify_BILL_SUPPLIER_CANCELED=Το τιμολόγιο πωλητή ακυρώθηκε -Notify_CONTRACT_VALIDATE=Επικυρωμένη σύμβαση -Notify_FICHINTER_VALIDATE=Επικυρωθεί Παρέμβαση +Notify_BILL_UNVALIDATE=Το τιμολόγιο πελάτη δεν είναι επικυρωμένο +Notify_BILL_PAYED=Το τιμολόγιο πελάτη πληρώθηκε +Notify_BILL_CANCEL=Το τιμολόγιο πελάτη ακυρώθηκε +Notify_BILL_SENTBYMAIL=Το τιμολόγιο πελάτη στάλθηκε με mail +Notify_BILL_SUPPLIER_VALIDATE=Το τιμολόγιο προμηθευτή επικυρώθηκε +Notify_BILL_SUPPLIER_PAYED=Το τιμολόγιο προμηθευτή πληρώθηκε +Notify_BILL_SUPPLIER_SENTBYMAIL=Το τιμολόγιο προμηθευτή στάλθηκε με mail +Notify_BILL_SUPPLIER_CANCELED=Το τιμολόγιο προμηθευτή ακυρώθηκε +Notify_CONTRACT_VALIDATE=Η σύμβαση επικυρώθηκε +Notify_FICHINTER_VALIDATE=Η παρέμβαση επικυρώθηκε Notify_FICHINTER_ADD_CONTACT=Προσθήκη επαφής στην παρέμβαση -Notify_FICHINTER_SENTBYMAIL=Παρέμβαση αποστέλλεται μέσω ταχυδρομείου -Notify_SHIPPING_VALIDATE=Αποστολή επικυρωθεί -Notify_SHIPPING_SENTBYMAIL=Αποστολές αποστέλλονται με το ταχυδρομείο -Notify_MEMBER_VALIDATE=Επικυρωθεί μέλη +Notify_FICHINTER_SENTBYMAIL=Η παρέμβαση στάλθηκε με mail +Notify_SHIPPING_VALIDATE=Η Αποστολή επικυρώθηκε +Notify_SHIPPING_SENTBYMAIL=Η αποστολή απεστάλη ταχυδρομικώς +Notify_MEMBER_VALIDATE=Το μέλος επικυρώθηκε Notify_MEMBER_MODIFY=Το μέλος τροποποιήθηκε -Notify_MEMBER_SUBSCRIPTION=Εγγραφεί μέλος -Notify_MEMBER_RESILIATE=Το μέλος τερμάτισε -Notify_MEMBER_DELETE=Διαγράφεται μέλη +Notify_MEMBER_SUBSCRIPTION=Το μέλος εγγράφηκε +Notify_MEMBER_RESILIATE=Το μέλος αποχώρησε +Notify_MEMBER_DELETE=Το μέλος διαγράφηκε Notify_PROJECT_CREATE=Δημιουργία έργου Notify_TASK_CREATE=Η εργασία δημιουργήθηκε Notify_TASK_MODIFY=Η εργασία τροποποιήθηκε Notify_TASK_DELETE=Η εργασία διαγράφηκε -Notify_EXPENSE_REPORT_VALIDATE=Έκθεση εξόδων επικυρωμένη (απαιτείται έγκριση) -Notify_EXPENSE_REPORT_APPROVE=Η έκθεση εξόδων εγκρίθηκε -Notify_HOLIDAY_VALIDATE=Ακύρωση αίτησης επικυρωμένου (απαιτείται έγκριση) -Notify_HOLIDAY_APPROVE=Αφήστε την αίτηση να εγκριθεί +Notify_EXPENSE_REPORT_VALIDATE=Η αναφορά εξόδων επικυρώθηκε (απαιτείται έγκριση) +Notify_EXPENSE_REPORT_APPROVE=Η αναφορά εξόδων εγκρίθηκε +Notify_HOLIDAY_VALIDATE=Το αίτημα άδειας επικυρώθηκε (απαιτείται έγκριση) +Notify_HOLIDAY_APPROVE=Το αίτημα άδειας εγκρίθηκε Notify_ACTION_CREATE=Προστέθηκε ενέργεια στην Ατζέντα SeeModuleSetup=Δείτε την ρύθμιση του module %s -NbOfAttachedFiles=Πλήθος επισυναπτώμενων αρχείων/εγγράφων -TotalSizeOfAttachedFiles=Συνολικό μέγεθος επισυναπτώμενων αρχείων/εγγράφων +NbOfAttachedFiles=Αριθμός συνημμένων αρχείων/εγγράφων +TotalSizeOfAttachedFiles=Συνολικό μέγεθος συνημμένων αρχείων/εγγράφων MaxSize=Μέγιστο μέγεθος AttachANewFile=Επισύναψη νέου αρχείου/εγγράφου -LinkedObject=Συνδεδεμένα αντικείμενα -NbOfActiveNotifications=Αριθμός ειδοποιήσεων (αριθμός μηνυμάτων ηλεκτρονικού ταχυδρομείου παραλήπτη) +LinkedObject=Συνδεδεμένο αντικείμενο +NbOfActiveNotifications=Αριθμός ειδοποιήσεων (αριθμός ληφθέντων μηνυμάτων email) PredefinedMailTest=__(Hello)__\nΑυτό είναι ένα δοκιμαστικό μήνυμα που στάλθηκε στη διεύθυνση __EMAIL__.\nΟι γραμμές χωρίζονται με επιστροφή φορέα.\n\n__USER_SGNATURE__ PredefinedMailTestHtml=__(Hello)__
Αυτή είναι μια δοκιμαστική αλληλογραφία στη διεύθυνση __EMAIL__ (η λέξη δοκιμαστική πρέπει να είναι με έντονη γραφή).
Οι γραμμές χωρίζονται με επιστροφή φορέα.

__USER_SIGNATURE__ -PredefinedMailContentContract=__ (Γεια σας) __ __ (ειλικρινά) __ __USER_SIGNATURE__ -PredefinedMailContentSendInvoice=__ (Γεια σας) __ Βρείτε τιμολόγιο __REF__ επισυνάπτεται __ONLINE_PAYMENT_TEXT_AND_URL__ __ (ειλικρινά) __ __USER_SIGNATURE__ -PredefinedMailContentSendInvoiceReminder=__ (Γεια σας) __ Θα θέλαμε να σας υπενθυμίσουμε ότι το τιμολόγιο __REF__ φαίνεται να μην έχει πληρωθεί. Ένα αντίγραφο του τιμολογίου επισυνάπτεται ως υπενθύμιση. __ONLINE_PAYMENT_TEXT_AND_URL__ __ (ειλικρινά) __ __USER_SIGNATURE__ -PredefinedMailContentSendProposal=__ (Γεια σας) __ Παρακαλούμε βρείτε την εμπορική πρόταση __REF__ επισυνάπτεται __ (ειλικρινά) __ __USER_SIGNATURE__ -PredefinedMailContentSendSupplierProposal=__ (Γεια σας) __ Παρακαλούμε βρείτε αίτημα τιμής __REF__ επισυνάπτεται __ (ειλικρινά) __ __USER_SIGNATURE__ +PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoice=__(Hello)__\n\nΠαρακαλώ δείτε το τιμολόγιο __REF__ που επισυνάπτεται \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nΘα θέλαμε να σας υπενθυμίσουμε ότι το τιμολόγιο __REF__ φαίνεται να μην έχει πληρωθεί. Ένα αντίγραφο του τιμολογίου επισυνάπτεται ως υπενθύμιση.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendProposal=__(Hello)__\n\nΠαρακαλώ δείτε την προσφορά __REF__ που επισυνάπτεται \n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nΠαρακαλώ δείτε την προσφορά __REF__ που επισυνάπτεται\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ PredefinedMailContentSendOrder=__ (Γεια σας) __ Βρείτε εντολή __REF__ επισυνάπτεται __ (ειλικρινά) __ __USER_SIGNATURE__ PredefinedMailContentSendSupplierOrder=__ (Γεια σας) __ Βρείτε την παραγγελία σας __REF__ επισυνάπτεται __ (ειλικρινά) __ __USER_SIGNATURE__ PredefinedMailContentSendSupplierInvoice=__ (Γεια σας) __ Βρείτε το τιμολόγιο __REF__ επισυνάπτεται __ (ειλικρινά) __ __USER_SIGNATURE__ @@ -104,18 +104,18 @@ PredefinedMailContentSendFichInter=__ (Γεια σας) __ Βρείτε την PredefinedMailContentLink=Μπορείτε να κάνετε κλικ στον παρακάτω σύνδεσμο για να πραγματοποιήσετε την πληρωμή σας, αν δεν έχει γίνει ήδη. %s PredefinedMailContentGeneric=__ (Γεια σας) __ __ (ειλικρινά) __ __USER_SIGNATURE__ PredefinedMailContentSendActionComm=Υπενθύμιση συμβάντος "__EVENT_LABEL__" στην __EVENT_DATE__ στις __EVENT_TIME__

Αυτό είναι ένα αυτόματο μήνυμα, μην απαντήσετε. -DemoDesc=Το Dolibarr είναι ένα συμπαγές ERP / CRM που υποστηρίζει διάφορες λειτουργικές μονάδες. Ένα demo που παρουσιάζει όλες τις μονάδες δεν έχει νόημα καθώς το σενάριο αυτό δεν εμφανίζεται ποτέ (αρκετές εκατοντάδες διαθέσιμες). Έτσι, πολλά προφίλ επίδειξης είναι διαθέσιμα. +DemoDesc=Το Dolibarr είναι ένα συμπαγές ERP/CRM που υποστηρίζει πολλές επιχειρηματικές ενότητες. Μια επίδειξη που παρουσιάζει όλες τις ενότητες δεν έχει νόημα, καθώς αυτό το σενάριο δεν συμβαίνει ποτέ (πολλές εκατοντάδες διαθέσιμες). Έτσι, πολλά προφίλ επίδειξης είναι διαθέσιμα. ChooseYourDemoProfil=Επιλέξτε το προφίλ επίδειξης που ταιριάζει καλύτερα στις ανάγκες σας ... -ChooseYourDemoProfilMore=... ή να δημιουργήσετε το δικό σας προφίλ
(επιλογή χειροκίνητης μονάδας) -DemoFundation=Διαχειριστείτε τα μέλη του ιδρύματος -DemoFundation2=Διαχειριστείτε τα μέλη και τον τραπεζικό λογαριασμό του ιδρύματος -DemoCompanyServiceOnly=Εταιρική ή ανεξάρτητη υπηρεσία πώλησης +ChooseYourDemoProfilMore=...ή δημιουργήστε το δικό σας προφίλ
(μη αυτόματη επιλογή ενότητας) +DemoFundation=Διαχείριση μελών ενός ιδρύματος +DemoFundation2=Διαχείριση μελών και τραπεζικού λογαριασμού ενός ιδρύματος +DemoCompanyServiceOnly=Εταιρική ή ανεξάρτητη υπηρεσία πώλησης μόνο DemoCompanyShopWithCashDesk=Διαχειριστείτε ένα κατάστημα με ταμείο DemoCompanyProductAndStocks=Κατάστημα πώλησης προϊόντων με σημείο πώλησης DemoCompanyManufacturing=Εταιρεία κατασκευής προϊόντων -DemoCompanyAll=Εταιρεία με πολλαπλές δραστηριότητες (όλες τις κύριες ενότητες) +DemoCompanyAll=Εταιρεία με πολλαπλές δραστηριότητες (όλες οι κύριες ενότητες) CreatedBy=Δημιουργήθηκε από %s -ModifiedBy=Τροποποίηθηκε από %s +ModifiedBy=Τροποποιήθηκε από %s ValidatedBy=Επικυρώθηκε από %s SignedBy=Υπογεγραμμένο από %s ClosedBy=Έκλεισε από %s @@ -129,18 +129,18 @@ ModifiedByLogin=Εγγραφή χρήστη που έκανε την τελευ ValidatedByLogin=Χρήστης σύνδεσης που επικύρωσε CanceledByLogin=Χρήστης σύνδεσης που ακύρωσε ClosedByLogin=Χρήστης σύνδεσης που έκλεισε -FileWasRemoved=File %s was removed -DirWasRemoved=Directory %s was removed -FeatureNotYetAvailable=Δεν υπάρχει ακόμα διαθέσιμη λειτουργία στην τρέχουσα έκδοση +FileWasRemoved=Το αρχείο %s καταργήθηκε +DirWasRemoved=Ο κατάλογος %s καταργήθηκε +FeatureNotYetAvailable=Η δυνατότητα δεν είναι ακόμη διαθέσιμη στην τρέχουσα έκδοση FeatureNotAvailableOnDevicesWithoutMouse=Η δυνατότητα δεν είναι διαθέσιμη σε συσκευές χωρίς ποντίκι -FeaturesSupported=Υποστηριζόμενα χαρακτηριστικά +FeaturesSupported=Υποστηριζόμενες λειτουργίες Width=Πλάτος Height=Ύψος Depth=Βάθος Top=Κορυφή Bottom=Κάτω μέρος Left=Αριστερά -Right=Δικαίωμα +Right=Δεξιά CalculatedWeight=Υπολογισμένο βάρος CalculatedVolume=Υπολογισμένος όγκος Weight=Βάρος @@ -148,30 +148,30 @@ WeightUnitton=τόνος WeightUnitkg=kg WeightUnitg=g WeightUnitmg=mg -WeightUnitpound=Λίβρες +WeightUnitpound=λίβρα WeightUnitounce=ουγκιά Length=Μήκος LengthUnitm=m LengthUnitdm=dm LengthUnitcm=cm LengthUnitmm=mm -Surface=Εμβαδό -SurfaceUnitm2=μ² +Surface=Επιφάνεια +SurfaceUnitm2=m² SurfaceUnitdm2=dm² -SurfaceUnitcm2=εκ² -SurfaceUnitmm2=χιλ² +SurfaceUnitcm2=cm² +SurfaceUnitmm2=mm² SurfaceUnitfoot2=ft² SurfaceUnitinch2=in² Volume=Όγκος -VolumeUnitm3=μ³ +VolumeUnitm3=m³ VolumeUnitdm3=dm³ (L) -VolumeUnitcm3=εκ³ (μλ) -VolumeUnitmm3=χιλ³ +VolumeUnitcm3=cm³ (ml) +VolumeUnitmm3=mm³ (µl) VolumeUnitfoot3=ft³ VolumeUnitinch3=in³ VolumeUnitounce=ουγκιά VolumeUnitlitre=λίτρο -VolumeUnitgallon=gallon +VolumeUnitgallon=γαλόνι SizeUnitm=m SizeUnitdm=dm SizeUnitcm=cm @@ -179,8 +179,8 @@ SizeUnitmm=mm SizeUnitinch=ίντσα SizeUnitfoot=πόδι SizeUnitpoint=σημείο -BugTracker=Tracker Bug -SendNewPasswordDesc=Αυτή η φόρμα σάς επιτρέπει να ζητήσετε νέο κωδικό πρόσβασης. Θα σταλεί στη διεύθυνση ηλεκτρονικού ταχυδρομείου σας.
Η αλλαγή θα τεθεί σε ισχύ μόλις κάνετε κλικ στον σύνδεσμο επιβεβαίωσης στο μήνυμα ηλεκτρονικού ταχυδρομείου.
Ελέγξτε τα εισερχόμενά σας. +BugTracker=Παρακολούθηση σφαλμάτων +SendNewPasswordDesc=Αυτή η φόρμα σάς επιτρέπει να ζητήσετε νέο κωδικό πρόσβασης. Θα σταλεί στη διεύθυνση email σας.
Η αλλαγή θα τεθεί σε ισχύ μόλις κάνετε κλικ στον σύνδεσμο επιβεβαίωσης στο email.
Ελέγξτε τα εισερχόμενά σας. BackToLoginPage=Επιστροφή στην σελίδα εισόδου AuthenticationDoesNotAllowSendNewPassword=Λειτουργία ελέγχου ταυτότητας είναι %s.
Σε αυτή τη λειτουργία, Dolibarr δεν μπορεί να γνωρίζει ούτε αλλαγή του κωδικού πρόσβασής σας.
Επικοινωνήστε με το διαχειριστή του συστήματός σας, εάν θέλετε να αλλάξετε τον κωδικό πρόσβασής σας. EnableGDLibraryDesc=Εγκαταστήστε ή ενεργοποιήστε τη βιβλιοθήκη GD στην εγκατάσταση της PHP για να χρησιμοποιήσετε αυτήν την επιλογή. @@ -196,8 +196,8 @@ NumberOfSupplierOrders=Αριθμός εντολών αγοράς NumberOfSupplierInvoices=Αριθμός τιμολογίων προμηθευτή NumberOfContracts=Αριθμός συμβάσεων NumberOfMos=Αριθμός παραγγελιών κατασκευής -NumberOfUnitsProposals=Αριθμός μονάδων για προτάσεις -NumberOfUnitsCustomerOrders=Αριθμός μονάδων επί παραγγελιών πωλήσεων +NumberOfUnitsProposals=Αριθμός μονάδων στις προτάσεις +NumberOfUnitsCustomerOrders=Αριθμός μονάδων σε παραγγελίες πώλησης NumberOfUnitsCustomerInvoices=Αριθμός μονάδων σε τιμολόγια πελατών NumberOfUnitsSupplierProposals=Αριθμός μονάδων σε προτάσεις πωλητών NumberOfUnitsSupplierOrders=Αριθμός μονάδων στις εντολές αγοράς @@ -205,46 +205,46 @@ NumberOfUnitsSupplierInvoices=Αριθμός μονάδων σε τιμολόγ NumberOfUnitsContracts=Αριθμός μονάδων στις συμβάσεις NumberOfUnitsMos=Αριθμός μονάδων προς παραγωγή σε παραγγελίες κατασκευής EMailTextInterventionAddedContact=Μια νέα παρέμβαση %s σας έχει εκχωρηθεί. -EMailTextInterventionValidated=Η %s παρέμβαση έχει επικυρωθεί. +EMailTextInterventionValidated=Η παρέμβαση %s έχει επικυρωθεί. EMailTextInvoiceValidated=Το τιμολόγιο %s έχει επικυρωθεί. EMailTextInvoicePayed=Το τιμολόγιο %s έχει καταβληθεί. EMailTextProposalValidated=Η πρόταση %s έχει επικυρωθεί. EMailTextProposalClosedSigned=Η πρόταση %s έχει κλείσει υπογεγραμμένη. EMailTextOrderValidated=Η παραγγελία %s έχει επικυρωθεί. EMailTextOrderApproved=Η παραγγελία %s έχει εγκριθεί. -EMailTextOrderValidatedBy=Η παραγγελία %s έχει εγγραφεί από %s. +EMailTextOrderValidatedBy=Η παραγγελία %s έχει καταγραφεί από τον %s. EMailTextOrderApprovedBy=Η παραγγελία %s έχει εγκριθεί από %s. EMailTextOrderRefused=Η παραγγελία %s απορρίφθηκε. EMailTextOrderRefusedBy=Η παραγγελία %s απορρίφθηκε από %s. EMailTextExpeditionValidated=Η αποστολή %s έχει επικυρωθεί. -EMailTextExpenseReportValidated=Η έκθεση δαπανών %s έχει επικυρωθεί. -EMailTextExpenseReportApproved=Η έκθεση δαπανών %s έχει εγκριθεί. -EMailTextHolidayValidated=Ακύρωση αίτησης %s έχει επικυρωθεί. +EMailTextExpenseReportValidated=Η αναφορά εξόδων %s έχει επικυρωθεί. +EMailTextExpenseReportApproved=Η αναφορά εξόδων %s έχει εγκριθεί. +EMailTextHolidayValidated=Το αίτημα άδειας %s έχει επικυρωθεί. EMailTextHolidayApproved=Το αίτημα άδειας %s έχει εγκριθεί. EMailTextActionAdded=Η ενέργεια %s προστέθηκε στην Ατζέντα. ImportedWithSet=Η εισαγωγή των δεδομένων που DolibarrNotification=Αυτόματη ειδοποίηση -ResizeDesc=Εισάγετε το νέο πλάτος ή το νέο ύψος. Λόγος θα διατηρηθούν κατά τη διάρκεια της αλλαγής μεγέθους ... -NewLength=Νέο βάρος +ResizeDesc=Εισαγάγετε νέο πλάτος Ή νέο ύψος. Η αναλογία θα διατηρηθεί κατά την αλλαγή μεγέθους... +NewLength=Νέο πλάτος NewHeight=Νέο ύψος NewSizeAfterCropping=Νέο μέγεθος μετά το ψαλίδισμα -DefineNewAreaToPick=Ορίστε νέα περιοχή στην εικόνα για να πάρει (αριστερό κλικ στην εικόνα στη συνέχεια σύρετε μέχρι να φτάσετε στην απέναντι γωνία) -CurrentInformationOnImage=Αυτό το εργαλείο έχει σχεδιαστεί για να σας βοηθήσει να αλλάξετε το μέγεθος ή την περικοπή μιας εικόνας. Αυτές είναι οι πληροφορίες σχετικά με την τρέχουσα επεξεργασμένη εικόνα +DefineNewAreaToPick=Ορίστε νέα περιοχή στην εικόνα για επιλογή (αριστερό κλικ στην εικόνα και μετά σύρετε μέχρι να φτάσετε στην απέναντι γωνία) +CurrentInformationOnImage=Αυτό το εργαλείο σχεδιάστηκε για να σας βοηθήσει να αλλάξετε το μέγεθος ή να περικόψετε μια εικόνα. Αυτές είναι οι πληροφορίες για την τρέχουσα επεξεργασμένη εικόνα ImageEditor=Επεξεργαστής εικόνας -YouReceiveMailBecauseOfNotification=Αυτό το μήνυμα επειδή το email σας έχει προστεθεί στη λίστα των στόχων που πρέπει να ενημερώνεται για συγκεκριμένα γεγονότα σε %s λογισμικό της %s. -YouReceiveMailBecauseOfNotification2=Το γεγονός είναι το ακόλουθο: +YouReceiveMailBecauseOfNotification=Λαμβάνετε αυτό το μήνυμα επειδή το email σας έχει προστεθεί στη λίστα επαφών που πρέπει να ενημερώνεται για συγκεκριμένα συμβάντα στο λογισμικό %s της %s. +YouReceiveMailBecauseOfNotification2=Η εκδήλωση αυτή είναι η εξής: ThisIsListOfModules=Αυτή είναι μια λίστα των modules που έχουν επιλέξει αυτό το προφίλ demo (μόνο οι περισσότερες κοινές ενότητες είναι ορατά σε αυτό το demo). Επεξεργασία αυτό να έχει μια πιο εξατομικευμένη επίδειξη και κάντε κλικ στο "Start". -UseAdvancedPerms=Χρησιμοποιήστε την προηγμένη δικαιώματα κάποιων ενοτήτων +UseAdvancedPerms=Χρησιμοποιήστε τα προηγμένα δικαιώματα ορισμένων ενοτήτων FileFormat=Μορφή αρχείου SelectAColor=Επιλέξτε ένα χρώμα AddFiles=Προσθήκη αρχείων StartUpload=Έναρξη μεταφόρτωσης -CancelUpload=Ακύρωση ανεβάσετε -FileIsTooBig=Τα αρχεία είναι πολύ μεγάλο -PleaseBePatient=Please be patient... +CancelUpload=Ακύρωση μεταφόρτωσης +FileIsTooBig=Τα αρχεία είναι πολύ μεγάλα +PleaseBePatient=Παρακαλώ να είστε υπομονετικοί... NewPassword=Νέος Κωδικός ResetPassword=Επαναφέρετε τον κωδικό πρόσβασης -RequestToResetPasswordReceived=Ζητήθηκε να αλλάξετε τον κωδικό πρόσβασής σας. +RequestToResetPasswordReceived=Έχει ληφθεί ένα αίτημα για αλλαγή του κωδικού πρόσβασης σας. NewKeyIs=Αυτό είναι το νέο σας κλειδί για να συνδεθείτε NewKeyWillBe=Το νέο σας κλειδί για να συνδεθείτε με το λογισμικό είναι ClickHereToGoTo=Κάντε κλικ εδώ για να μεταβείτε στο %s @@ -256,15 +256,15 @@ SourcesRepository=Αποθετήριο για τις πηγές Chart=Γράφημα PassEncoding=Κωδικοποίηση κωδικού πρόσβασης PermissionsAdd=Προστέθηκαν δικαιώματα -PermissionsDelete=Οι άδειες έχουν καταργηθεί -YourPasswordMustHaveAtLeastXChars=Ο κωδικός πρόσβασής σας πρέπει να έχει τουλάχιστον %s χαρακτήρες +PermissionsDelete=Τα δικαιώματα καταργήθηκαν +YourPasswordMustHaveAtLeastXChars=Ο κωδικός πρόσβασης σας πρέπει να έχει τουλάχιστον %s χαρακτήρες PasswordNeedAtLeastXUpperCaseChars=Ο κωδικός πρόσβασης χρειάζεται τουλάχιστον %s κεφαλαίους χαρακτήρες PasswordNeedAtLeastXDigitChars=Ο κωδικός πρόσβασης χρειάζεται τουλάχιστον %s αριθμητικούς χαρακτήρες PasswordNeedAtLeastXSpecialChars=Ο κωδικός πρόσβασης χρειάζεται τουλάχιστον %s ειδικούς χαρακτήρες PasswordNeedNoXConsecutiveChars=Ο κωδικός πρόσβασης δεν πρέπει να έχει %s διαδοχικούς παρόμοιους χαρακτήρες -YourPasswordHasBeenReset=Ο κωδικός πρόσβασής σας έχει επαναφερθεί με επιτυχία +YourPasswordHasBeenReset=Ο κωδικός πρόσβασης σας επαναφέρθηκε με επιτυχία ApplicantIpAddress=Διεύθυνση IP του αιτούντος -SMSSentTo=Τα SMS αποστέλλονται στο %s +SMSSentTo=Το SMS εστάλη στο %s MissingIds=Λείπει IDs ThirdPartyCreatedByEmailCollector=Το τρίτο μέρος δημιουργήθηκε από τον συλλέκτη ηλεκτρονικού ταχυδρομείου από το MSGID e-mail %s ContactCreatedByEmailCollector=Επαφή / διεύθυνση που δημιουργήθηκε από τον συλλέκτη ηλεκτρονικού ταχυδρομείου από το ηλεκτρονικό ταχυδρομείο MSGID %s @@ -276,10 +276,10 @@ LoginWith=Συνδεθείτε με %s ##### Export ##### ExportsArea=Exports area -AvailableFormats=Available formats +AvailableFormats=Διαθέσιμες μορφές LibraryUsed=Library used LibraryVersion=Έκδοση βιβλιοθήκης -ExportableDatas=Exportable data +ExportableDatas=Εξαγώγιμα δεδομένα NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) ##### External sites ##### WebsiteSetup=Εγκατάσταση δικτυακού τόπου ενότητας @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Είστε σίγουροι ότι θέλετε να " ConfirmBtnCommonTitle = Επιβεβαιώστε την ενέργειά σας CloseDialog = Κλείσιμο Autofill = Αυτόματη συμπλήρωση + +# externalsite +ExternalSiteSetup=Ρύθμιση συνδέσμου σε εξωτερικό ιστότοπο +ExternalSiteURL=Διεύθυνση URL εξωτερικού ιστότοπου περιεχομένου HTML iframe +ExternalSiteModuleNotComplete=Η ενότητα Εξωτερικός Ιστότοπος δεν έχει ρυθμιστεί σωστά. +ExampleMyMenuEntry=Το μενού μου + +# FTP +FTPClientSetup=Ρύθμιση μονάδας FTP ή SFTP Client +NewFTPClient=Ρύθμιση νέας σύνδεσης FTP/FTPS +FTPArea=Περιοχή FTP/FTPS +FTPAreaDesc=Αυτή η οθόνη εμφανίζει μια προβολή ενός διακομιστή FTP ή SFTP. +SetupOfFTPClientModuleNotComplete=Η εγκατάσταση της μονάδας πελάτη FTP ή SFTP φαίνεται να είναι ελλιπής +FTPFeatureNotSupportedByYourPHP=Η PHP σας δεν υποστηρίζει λειτουργίες FTP ή SFTP +FailedToConnectToFTPServer=Απέτυχε η σύνδεση με τον διακομιστή (διακομιστής %s, θύρα %s) +FailedToConnectToFTPServerWithCredentials=Απέτυχε η σύνδεση στο διακομιστή με καθορισμένη σύνδεση/κωδικό πρόσβασης +FTPFailedToRemoveFile=Αποτυχία διαγραφής αρχείου%s. +FTPFailedToRemoveDir=Αποτυχία κατάργησης του καταλόγου %s : ελέγξτε τα δικαιώματα και ότι ο κατάλογος είναι κενός. +FTPPassiveMode=Passive mode +ChooseAFTPEntryIntoMenu=Επιλέξτε μια τοποθεσία FTP/SFTP από το μενού... +FailedToGetFile=Αποτυχία λήψης αρχείων %s diff --git a/htdocs/langs/el_GR/partnership.lang b/htdocs/langs/el_GR/partnership.lang index 16649b4b5d3..305cba8f54b 100644 --- a/htdocs/langs/el_GR/partnership.lang +++ b/htdocs/langs/el_GR/partnership.lang @@ -42,7 +42,7 @@ PARTNERSHIP_BACKLINKS_TO_CHECK=Backlinks για έλεγχο PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Αριθμός ημερών πριν από την κατάσταση ακύρωσης μιας συνεργασίας όταν έχει λήξει μια συνδρομή ReferingWebsiteCheck=Έλεγχος αναφοράς ιστότοπου ReferingWebsiteCheckDesc=Μπορείτε να ενεργοποιήσετε μια δυνατότητα για να ελέγχετε ότι οι συνεργάτες σας έχουν προσθέσει έναν σύνδεσμο backlink του ιστότοπου σας στον δικό τους ιστότοπο. -PublicFormRegistrationPartnerDesc=Το Dolibarr μπορεί να σας παρέχει μια δημόσια διεύθυνση URL/ιστότοπο για να επιτρέπετε σε εξωτερικούς επισκέπτες η αίτηση συμμετοχής στο πρόγραμμα συνεργασίας. +PublicFormRegistrationPartnerDesc=Το Dolibarr μπορεί να σας παρέχει μια δημόσια διεύθυνση URL/ιστότοπο για να επιτρέπεται σε εξωτερικούς επισκέπτες η αίτηση συμμετοχής στο πρόγραμμα συνεργασίας. # # Object @@ -55,7 +55,7 @@ DatePartnershipEnd=Ημερομηνία λήξης ReasonDecline=Λόγος απόρριψης ReasonDeclineOrCancel=Λόγος απόρριψης PartnershipAlreadyExist=Υπάρχει ήδη Συνεργασία -ManagePartnership=Διαχειριστείτε τη συνεργασία +ManagePartnership=Διαχείριση της συνεργασίας BacklinkNotFoundOnPartnerWebsite=Ο σύνδεσμος Backlink δεν βρέθηκε στον ιστότοπο του συνεργάτη ConfirmClosePartnershipAsk=Είστε σίγουροι ότι θέλετε να ακυρώσετε αυτήν τη συνεργασία; PartnershipType=Τύπος συνεργασίας diff --git a/htdocs/langs/el_GR/paypal.lang b/htdocs/langs/el_GR/paypal.lang index 3bdb26a3bb0..5fe01fead73 100644 --- a/htdocs/langs/el_GR/paypal.lang +++ b/htdocs/langs/el_GR/paypal.lang @@ -1,36 +1,36 @@ # Dolibarr language file - Source file is en_US - paypal -PaypalSetup=Άμεση εγκατάσταση μονάδας +PaypalSetup=Ρύθμιση ενότητας PayPal PaypalDesc=Αυτή η ενότητα επιτρέπει την πληρωμή από πελάτες μέσω του PayPal . Αυτό μπορεί να χρησιμοποιηθεί για μια ad-hoc πληρωμή ή για μια πληρωμή που σχετίζεται με ένα αντικείμενο Dolibarr (τιμολόγιο, παραγγελία, ...) -PaypalOrCBDoPayment=Πληρώστε με PayPal (Κάρτα ή PayPal) -PaypalDoPayment=Πληρώστε με PayPal +PaypalOrCBDoPayment=Πληρωμή με PayPal (Κάρτα ή PayPal) +PaypalDoPayment=Πληρωμή με PayPal PAYPAL_API_SANDBOX=Λειτουργία δοκιμής / sandbox -PAYPAL_API_USER=API όνομα χρήστη -PAYPAL_API_PASSWORD=API κωδικό πρόσβασης -PAYPAL_API_SIGNATURE=API υπογραφή -PAYPAL_SSLVERSION=Curl SSL Version -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Προσφορά "ολοκληρωμένης" πληρωμής (Πιστωτική κάρτα + PayPal) ή "PayPal" μόνο -PaypalModeIntegral=Ενσωματωμένο -PaypalModeOnlyPaypal=PayPal μόνο +PAYPAL_API_USER=Όνομα χρήστη API +PAYPAL_API_PASSWORD=Κωδικός πρόσβασης API +PAYPAL_API_SIGNATURE=Υπογραφή API +PAYPAL_SSLVERSION=Έκδοση Curl SSL +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Προσφορά "ολοκληρωμένης" πληρωμής (Πιστωτική κάρτα + PayPal) ή μόνο "PayPal" +PaypalModeIntegral=Ολοκληρωμένη +PaypalModeOnlyPaypal=Μόνο PayPal ONLINE_PAYMENT_CSS_URL=Προαιρετική διεύθυνση URL του φύλλου στυλ CSS στη σελίδα ηλεκτρονικών πληρωμών -ThisIsTransactionId=Αυτό είναι id της συναλλαγής: %s -PAYPAL_ADD_PAYMENT_URL=Συμπεριλάβετε τη διεύθυνση URL πληρωμής του PayPal όταν στέλνετε ένα έγγραφο μέσω ηλεκτρονικού ταχυδρομείου -NewOnlinePaymentReceived=Υποβλήθηκε νέα ηλεκτρονική πληρωμή -NewOnlinePaymentFailed=Η νέα ηλεκτρονική πληρωμή προσπάθησε αλλά απέτυχε -ONLINE_PAYMENT_SENDEMAIL=Διεύθυνση ηλεκτρονικού ταχυδρομείου για ειδοποιήσεις μετά από κάθε απόπειρα πληρωμής (για επιτυχία και αποτυχία) -ReturnURLAfterPayment=Επιστροφή στο URL μετά από την πληρωμή +ThisIsTransactionId=Αυτό είναι το αναγνωριστικό της συναλλαγής: %s +PAYPAL_ADD_PAYMENT_URL=Συμπεριλάβετε τη διεύθυνση URL πληρωμής του PayPal όταν στέλνετε ένα έγγραφο μέσω Email +NewOnlinePaymentReceived=Λήφθηκε νέα ηλεκτρονική πληρωμή +NewOnlinePaymentFailed=Η νέα ηλεκτρονική πληρωμή απέτυχε +ONLINE_PAYMENT_SENDEMAIL=Email για ειδοποιήσεις μετά από κάθε απόπειρα πληρωμής (για επιτυχία και αποτυχία) +ReturnURLAfterPayment=URL επιστροφής μετά από την πληρωμή ValidationOfOnlinePaymentFailed=Η επικύρωση της ηλεκτρονικής πληρωμής απέτυχε -PaymentSystemConfirmPaymentPageWasCalledButFailed=Η σελίδα επιβεβαίωσης πληρωμής κλήθηκε από το σύστημα πληρωμών επέστρεψε λάθος +PaymentSystemConfirmPaymentPageWasCalledButFailed=Η σελίδα επιβεβαίωσης πληρωμής που κλήθηκε από το σύστημα πληρωμών επέστρεψε ένα σφάλμα SetExpressCheckoutAPICallFailed=Η κλήση API SetExpressCheckout απέτυχε. DoExpressCheckoutPaymentAPICallFailed=Η κλήση API DoExpressCheckoutPayment απέτυχε. DetailedErrorMessage=Λεπτομερές μήνυμα λάθους ShortErrorMessage=Σύντομο μήνυμα σφάλματος -ErrorCode=Λάθος κωδικός +ErrorCode=Κωδικός λάθους ErrorSeverityCode=Κωδικός σοβαρότητας σφάλματος OnlinePaymentSystem=Ηλεκτρονικό σύστημα πληρωμών -PaypalLiveEnabled=PayPal "ζωντανή" λειτουργία ενεργοποιημένη (διαφορετικά δοκιμή / mode sandbox) +PaypalLiveEnabled=Η λειτουργία "live" του PayPal είναι ενεργοποιημένη (αλλιώς λειτουργία δοκιμής/δοκιμών δοκιμών) PaypalImportPayment=Εισαγωγή πληρωμών PayPal -PostActionAfterPayment=Δημοσίευση ενεργειών μετά από πληρωμές -ARollbackWasPerformedOnPostActions=Έγινε επαναφορά σε όλες τις ενέργειες Post. Πρέπει να ολοκληρώσετε μη αυτόματα τις ενέργειες αν είναι απαραίτητες. +PostActionAfterPayment=Post actions μετά από πληρωμές +ARollbackWasPerformedOnPostActions=Έγινε επαναφορά σε όλες τις Post actions. Πρέπει να ολοκληρώσετε μη αυτόματα τις Post actions αν είναι απαραίτητες. ValidationOfPaymentFailed=Η επικύρωση της πληρωμής απέτυχε CardOwner=Κάτοχος κάρτας -PayPalBalance=Paypal πίστωσης +PayPalBalance=Πίστωση Paypal diff --git a/htdocs/langs/el_GR/products.lang b/htdocs/langs/el_GR/products.lang index b1ac16ce02b..ac8eac8a0da 100644 --- a/htdocs/langs/el_GR/products.lang +++ b/htdocs/langs/el_GR/products.lang @@ -84,7 +84,7 @@ EditSellingPriceLabel=Επεξεργασία ετικέτας τιμής πώλ CantBeLessThanMinPrice=Η τιμή πώλησης δεν μπορεί να είναι χαμηλότερη από την ελάχιστη επιτρεπόμενη για αυτό το προϊόν (%s χωρίς Φ.Π.Α). Αυτό το μήνυμα μπορεί επίσης να εμφανιστεί εάν πληκτρολογήσετε μια πολύ σημαντική έκπτωση. ContractStatusClosed=Κλειστό ErrorProductAlreadyExists=Ένα προϊόν με κωδικό %s υπάρχει ήδη. -ErrorProductBadRefOrLabel=Λάθος τιμή για την αναφορά ή την ετικέτα. +ErrorProductBadRefOrLabel=Λανθασμένη τιμή για αναφορά ή ετικέτα. ErrorProductClone=Παρουσιάστηκε πρόβλημα κατά την προσπάθεια κλωνοποίησης του προϊόντος ή της υπηρεσίας. ErrorPriceCantBeLowerThanMinPrice=Σφάλμα, η τιμή δεν μπορεί να είναι χαμηλότερη από την ελάχιστη τιμή. Suppliers=Προμηθευτές @@ -136,7 +136,7 @@ DeleteProductLine=Διαγραφή σειράς προϊόντων ConfirmDeleteProductLine=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη γραμμή προϊόντος; ProductSpecial=Ειδικό QtyMin=Ελάχιστη. ποσότητα αγοράς -PriceQtyMin=Τιμή ελάχιστη ποσότητα. +PriceQtyMin=Τιμή ελάχιστης ποσότητας. PriceQtyMinCurrency=Τιμή (νόμισμα) για αυτήν την ποσότητα. WithoutDiscount=Χωρίς έκπτωση VATRateForSupplierProduct=ΦΠΑ (για αυτόν τον προμηθευτή / προϊόν) @@ -165,7 +165,7 @@ CloneCategoriesProduct=Επαναχρησιμοποιήστε συνδεδεμέ CloneCompositionProduct=Επαναχρησιμοποιήστε εικονικα προϊόντα/υπηρεσιες CloneCombinationsProduct=Επαναχρησιμοποιήστε τις παραλλαγές προϊόντων ProductIsUsed=Μεταχειρισμένο -NewRefForClone=Ref. of new product/service +NewRefForClone=Αναφ. νέου προϊόντος/υπηρεσίας SellingPrices=Τιμές Πώλησης BuyingPrices=Τιμές Αγοράς CustomerPrices=Τιμές Πελατών @@ -237,8 +237,8 @@ unitFT3=ft³ unitIN3=in³ unitOZ3=ουγκιά unitgallon=γαλόνι -ProductCodeModel=Προϊόν κωδ. Πρότυπο -ServiceCodeModel=Υπηρεσία κωδ. Πρότυπο +ProductCodeModel=Πρότυπο αναφοράς προϊόντος +ServiceCodeModel=Πρότυπο αναφοράς υπηρεσίας CurrentProductPrice=Τρέχουσα Τιμή AlwaysUseNewPrice=Να χρησιμοποιείτε πάντα την τρέχουσα τιμή προϊόντος/υπηρεσίας AlwaysUseFixedPrice=Χρησιμοποιήστε τη σταθερή τιμή @@ -255,7 +255,7 @@ VariantLabelExample=Παραδείγματα: Χρώμα, Μέγεθος ### composition fabrication Build=Παράγω ProductsMultiPrice=Προϊόντα και τιμές για κάθε τμήμα τιμών -ProductsOrServiceMultiPrice=Τιμές πελατών (προϊόντων ή υπηρεσιών, πολυ-τιμές) +ProductsOrServiceMultiPrice=Τιμές πελατών (προϊόντων ή υπηρεσιών, πολλαπλές τιμές) ProductSellByQuarterHT=Κύκλος εργασιών τριμηνιαία πριν από τη φορολογία ServiceSellByQuarterHT=Κύκλος εργασιών ανά τρίμηνο προ φόρων Quarter1=1ο. Τέταρτο @@ -282,7 +282,7 @@ AddCustomerPrice=Προσθήκη τιμής ανά πελάτη ForceUpdateChildPriceSoc=Ορίστε την ίδια τιμή στις θυγατρικές του πελάτη PriceByCustomerLog=Καταγραφή προηγούμενων τιμών πελατών MinimumPriceLimit=Η ελάχιστη τιμή δεν μπορεί να είναι χαμηλότερη από %s -MinimumRecommendedPrice=Η ελάχιστη συνιστώμενη τιμή είναι: %s +MinimumRecommendedPrice=Η ελάχιστη προτεινόμενη τιμή είναι: %s PriceExpressionEditor=Επεξεργαστής συνάρτησης τιμών PriceExpressionSelected=Επιλεγμένη έκφραση τιμής PriceExpressionEditorHelp1="τιμή = 2 + 2" ή "2 + 2" για τον καθορισμό της τιμής. Χρησιμοποιήστε ; για να διαχωρίσετε τις εκφράσεις @@ -330,13 +330,13 @@ TranslatedNote=Μεταφρασμένες σημειώσεις ProductWeight=Βάρος για 1 προϊόν ProductVolume=Όγκος για 1 προϊόν WeightUnits=Μονάδα βάρους -VolumeUnits=Μονάδα έντασης ήχου +VolumeUnits=Μονάδα όγκου WidthUnits=Πλάτος LengthUnits=Μήκος HeightUnits=Ύψος SurfaceUnits=Μονάδα επιφάνειας SizeUnits=Μονάδα μεγέθους -DeleteProductBuyPrice=Διαγράψτε την τιμή αγοράς +DeleteProductBuyPrice=Διαγραφή τιμής αγοράς ConfirmDeleteProductBuyPrice=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την τιμή αγοράς; SubProduct=Υποπροϊόν ProductSheet=Φύλλο προϊόντος @@ -344,7 +344,7 @@ ServiceSheet=Φύλλο εξυπηρέτησης PossibleValues=Πιθανές τιμές GoOnMenuToCreateVairants=Πηγαίνετε στο μενού %s - %s για να προετοιμάσετε παραλλαγές χαρακτηριστικών (όπως χρώματα, μέγεθος, ...) UseProductFournDesc=Προσθέστε μια δυνατότητα για να ορίσετε την περιγραφή του προϊόντος που ορίστηκε από τους προμηθευτές (για κάθε αναφορά προμηθευτή) επιπρόσθετα της περιγραφής για τους πελάτες -ProductSupplierDescription=Περιγραφή του πωλητή για το προϊόν +ProductSupplierDescription=Περιγραφή προμηθευτή για το προϊόν UseProductSupplierPackaging=Χρησιμοποιήστε τη συσκευασία στις τιμές προμηθευτή (επανυπολογίστε τις ποσότητες σύμφωνα με τη συσκευασία που καθορίζεται στην τιμή προμηθευτή κατά την προσθήκη / ενημέρωση της γραμμής στα έγγραφα προμηθευτών) PackagingForThisProduct=Συσκευασία PackagingForThisProductDesc=Θα αγοράσετε αυτόματα ένα πολλαπλάσιο αυτής της ποσότητας. @@ -362,7 +362,7 @@ ProductCombinationAlreadyUsed=Παρουσιάστηκε σφάλμα κατά ProductCombinations=Παραλλαγές PropagateVariant=Διαφορετικές παραλλαγές HideProductCombinations=Απόκρυψη παραλλαγών προϊόντων στον επιλογέα προϊόντων -ProductCombination=Παραλαγή +ProductCombination=Παραλλαγή NewProductCombination=Νέα παραλλαγή EditProductCombination=Επεξεργασία παραλλαγής NewProductCombinations=Νέες παραλλαγές @@ -378,9 +378,9 @@ WeightImpact=Επιπτώσεις στο βάρος NewProductAttribute=Νέο χαρακτηριστικό NewProductAttributeValue=Νέα τιμή χαρακτηριστικού ErrorCreatingProductAttributeValue=Παρουσιάστηκε σφάλμα κατά τη δημιουργία της τιμής του χαρακτηριστικού. Θα μπορούσε να είναι επειδή υπάρχει ήδη μια υπάρχουσα τιμή με αυτή την αναφορά -ProductCombinationGeneratorWarning=Εάν συνεχίσετε, προτού δημιουργήσετε νέες παραλλαγές, όλες οι προηγούμενες θα διαγραφούν. Οι ήδη υπάρχοντες θα ενημερωθούν με τις νέες τιμές -TooMuchCombinationsWarning=Η παραγωγή πολλών παραλλαγών μπορεί να οδηγήσει σε υψηλή CPU, χρήση μνήμης και Dolibarr δεν είναι σε θέση να τα δημιουργήσει. Η ενεργοποίηση της επιλογής "%s" μπορεί να βοηθήσει στη μείωση της χρήσης της μνήμης. -DoNotRemovePreviousCombinations=Μην αφαιρέσετε προηγούμενες παραλλαγές +ProductCombinationGeneratorWarning=Εάν συνεχίσετε, πριν δημιουργήσετε νέες παραλλαγές, όλες οι προηγούμενες θα ΔΙΑΓΡΑΦΟΥΝ. Οι ήδη υπάρχουσες θα ενημερωθούν με τις νέες τιμές +TooMuchCombinationsWarning=Η δημιουργία πολλών παραλλαγών μπορεί να έχει ως αποτέλεσμα υψηλή χρήση CPU και μνήμης με συνέπεια το Dolibarr να μην μπορεί να τις δημιουργήσει. Η ενεργοποίηση της επιλογής "%s" μπορεί να βοηθήσει στη μείωση της χρήσης μνήμης. +DoNotRemovePreviousCombinations=Μην αφαιρείτε προηγούμενες παραλλαγές UsePercentageVariations=Χρησιμοποιήστε ποσοστιαίες παραλλαγές PercentageVariation=Ποσοστιαία μεταβολή ErrorDeletingGeneratedProducts=Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής των υπαρχουσών παραλλαγών προϊόντων @@ -394,13 +394,13 @@ ConfirmCloneProductCombinations=Θέλετε να αντιγράψετε όλε CloneDestinationReference=Παραπομπή προϊόντος προορισμού ErrorCopyProductCombinations=Παρουσιάστηκε σφάλμα κατά την αντιγραφή των παραλλαγών του προϊόντος ErrorDestinationProductNotFound=Το προϊόν προορισμού δεν βρέθηκε -ErrorProductCombinationNotFound=Παραλλαγή προϊόντος δεν βρέθηκε -ActionAvailableOnVariantProductOnly=Δράση διαθέσιμη μόνο για την παραλλαγή του προϊόντος +ErrorProductCombinationNotFound=Η παραλλαγή προϊόντος δεν βρέθηκε +ActionAvailableOnVariantProductOnly=Η ενέργεια είναι διαθέσιμη μόνο για την παραλλαγή του προϊόντος ProductsPricePerCustomer=Τιμές προϊόντων ανά πελάτη ProductSupplierExtraFields=Πρόσθετα χαρακτηριστικά (τιμές προμηθευτή) DeleteLinkedProduct=Διαγράψτε το θυγατρικό προϊόν που συνδέεται με τον συνδυασμό AmountUsedToUpdateWAP=Ποσό που θα χρησιμοποιηθεί για την ενημέρωση της σταθμισμένης μέσης τιμής -PMPValue=Μέση σταθμική τιμή +PMPValue=Σταθμισμένη μέση τιμή PMPValueShort=WAP mandatoryperiod=Υποχρεωτικές περίοδοι mandatoryPeriodNeedTobeSet=Σημείωση: Πρέπει να καθοριστεί η περίοδος (ημερομηνία έναρξης και λήξης). diff --git a/htdocs/langs/el_GR/projects.lang b/htdocs/langs/el_GR/projects.lang index f8f49d5e233..b9af08448d1 100644 --- a/htdocs/langs/el_GR/projects.lang +++ b/htdocs/langs/el_GR/projects.lang @@ -1,9 +1,9 @@ # Dolibarr language file - Source file is en_US - projects -RefProject=Κωδ. έργου -ProjectRef=Αναφορά έργου. -ProjectId=Id Έργου +RefProject=Αναφ. έργου +ProjectRef=Αναφ. έργου. +ProjectId=Αναγνωριστικό έργου ProjectLabel=Ετικέτα έργου -ProjectsArea=Περιοχή έργων +ProjectsArea=Τομέας Έργων ProjectStatus=Κατάσταση έργου SharedProject=Όλοι PrivateProject=Εκχωρημένες επαφές @@ -11,50 +11,50 @@ ProjectsImContactFor=Έργα για τα οποία είμαι αποκλεισ AllAllowedProjects=Όλα τα έργα που μπορώ να διαβάσω (δικά μου + δημόσια) AllProjects=Όλα τα έργα MyProjectsDesc=Αυτή η προβολή περιορίζεται στα έργα για τα οποία είστε επαφή -ProjectsPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα σας επιτρέπεται να διαβάσετε. +ProjectsPublicDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα που επιτρέπεται να διαβάσετε. TasksOnProjectsPublicDesc=Αυτή η προβολή παρουσιάζει όλες τις εργασίες στα έργα που επιτρέπεται να διαβάσετε. -ProjectsPublicTaskDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα και τα καθήκοντα που επιτρέπεται να δείτε. -ProjectsDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). +ProjectsPublicTaskDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα και τις εργασίες που επιτρέπεται να διαβάσετε. +ProjectsDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα (τα δικαιώματα χρήστη σας δίνουν την άδεια να βλέπετε τα πάντα). TasksOnProjectsDesc=Αυτή η προβολή παρουσιάζει όλες τις εργασίες σε όλα τα έργα (οι άδειες χρήστη σας επιτρέπουν να δείτε τα πάντα). MyTasksDesc=Αυτή η προβολή περιορίζεται στα έργα ή εργασίες για τα οποία είστε επαφή -OnlyOpenedProject=Είναι ορατά μόνο τα ανοιχτά έργα (δεν εμφανίζονται έργα σε μορφή πρόχειρης ή κλειστής). +OnlyOpenedProject=Είναι ορατά μόνο τα ανοιχτά έργα (δεν εμφανίζονται τα προσχέδια ή τα κλειστά εργα). ClosedProjectsAreHidden=Τα κλειστά έργα δεν είναι ορατά. -TasksPublicDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα που επιτρέπεται να διαβάζουν. -TasksDesc=Η άποψη αυτή παρουσιάζει όλα τα έργα και τα καθήκοντα (δικαιώματα χρήστη να δώσει δικαίωμα για να δείτε τα πάντα). -AllTaskVisibleButEditIfYouAreAssigned=Όλες οι εργασίες για πιστοποιημένα έργα είναι ορατές, αλλά μπορείτε να εισάγετε χρόνο μόνο για εργασία που έχει εκχωρηθεί σε επιλεγμένο χρήστη. Εκχωρήστε εργασία αν χρειαστεί να εισαγάγετε χρόνο σε αυτήν. -OnlyYourTaskAreVisible=Μόνο εργασίες που σας έχουν ανατεθεί είναι ορατές. Αν χρειάζεται να εισάγετε χρόνο στην εργασία και η εργασία δεν είναι ορατή, πρέπει να αντιστοιχίσετε την εργασία στον εαυτό σας. +TasksPublicDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα και τις εργασίες που επιτρέπεται να διαβάσετε. +TasksDesc=Αυτή η προβολή παρουσιάζει όλα τα έργα και τις εργασίες (τα δικαιώματα χρήστη σας δίνουν την άδεια να βλέπετε τα πάντα). +AllTaskVisibleButEditIfYouAreAssigned=Όλες οι εργασίες για πιστοποιημένα έργα είναι ορατές, αλλά μπορείτε να εισάγετε χρόνο μόνο για εργασία που έχει εκχωρηθεί σε επιλεγμένο χρήστη. Εκχωρήστε εργασία αν χρειαστεί να εισάγετε χρόνο σε αυτήν. +OnlyYourTaskAreVisible=Μόνο εργασίες που σας έχουν ανατεθεί είναι ορατές. Αν χρειάζεται να εισάγετε χρόνο στην εργασία και η εργασία δεν είναι ορατή, πρέπει να αναθέσετε την εργασία στον εαυτό σας. ImportDatasetTasks=Καθήκοντα έργων -ProjectCategories=Ετικέτες / κατηγορίες έργου +ProjectCategories=Ετικέτες/κατηγορίες έργου NewProject=Νέο Έργο AddProject=Δημιουργία έργου DeleteAProject=Διαγραφή Έργου DeleteATask=Διαγραφή Εργασίας -ConfirmDeleteAProject=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το έργο; -ConfirmDeleteATask=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την εργασία; +ConfirmDeleteAProject=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το έργο; +ConfirmDeleteATask=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την εργασία; OpenedProjects=Ανοιχτά έργα -OpenedTasks=Άνοιγμα εργασιών +OpenedTasks=Ανοιχτές εργασίες OpportunitiesStatusForOpenedProjects=Ποσό προοπτικών ανοιχτών έργων ανά κατάσταση OpportunitiesStatusForProjects=Ποσό προοπτικών έργων ανά κατάσταση ShowProject=Εμφάνιση έργου ShowTask=Εμφάνιση Εργασίας -SetProject=Set project -NoProject=No project defined or owned +SetProject=Ορισμός έργου +NoProject=Κανένα έργο δεν έχει οριστεί ή εκχωρηθεί NbOfProjects=Αριθμός έργων NbOfTasks=Αριθμός εργασιών -TimeSpent=Χρόνος που δαπανήθηκε -TimeSpentByYou=Χρόνος που δαπανάται από εσάς -TimeSpentByUser=Χρόνος που δαπανάται από τον χρήστη -TimesSpent=Ο χρόνος που δαπανάται +TimeSpent=Χρόνος που ξοδεύτηκε +TimeSpentByYou=Χρόνος που ξοδεύτηκε από εσάς +TimeSpentByUser=Χρόνος που ξοδεύτηκε από χρήστη +TimesSpent=Χρόνος που δαπανήθηκε TaskId=Αναγνωριστικό εργασίας RefTask=Αναφορά εργασίας LabelTask=Ετικέτα εργασιών -TaskTimeSpent=Ο χρόνος που δαπανάται σε εργασίες +TaskTimeSpent=Χρόνος που ξοδεύτηκε σε εργασίες TaskTimeUser=Χρήστης TaskTimeNote=Σημείωση TaskTimeDate=Ημερομηνία -TasksOnOpenedProject=Καθήκοντα σε ανοικτά έργα -WorkloadNotDefined=Ο φόρτος εργασίας δεν ορίζεται -NewTimeSpent=Ο χρόνος που δαπανάται +TasksOnOpenedProject=Εργασίες σε ανοιχτά έργα +WorkloadNotDefined=Ο φόρτος εργασίας δεν έχει καθοριστεί +NewTimeSpent=Χρόνος που ξοδεύτηκε MyTimeSpent=Ο χρόνος μου πέρασε BillTime=Ο χρόνος που πέρασε BillTimeShort=Χρόνος λογαριασμού @@ -72,11 +72,11 @@ AddHereTimeSpentForDay=Προσθέστε εδώ χρόνο που δαπανά AddHereTimeSpentForWeek=Προσθέστε εδώ χρόνο που δαπανάται για αυτήν την εβδομάδα / εργασία Activity=Δραστηριότητα Activities=Εργασίες/Δραστηριότητες -MyActivities=Οι εργασίες/δραστηρ. μου +MyActivities=Οι εργασίες/δραστηρίοτητες μου MyProjects=Τα έργα μου -MyProjectsArea=Τα έργα μου Περιοχή +MyProjectsArea=Τομέας έργων μου DurationEffective=Αποτελεσματική διάρκεια -ProgressDeclared=Ορίστε την πραγματική πρόοδο +ProgressDeclared=Δηλώθηκε πραγματική πρόοδος TaskProgressSummary=Πρόοδος εργασιών CurentlyOpenedTasks=Ανοιχτές εργασίες TheReportedProgressIsLessThanTheCalculatedProgressionByX=Η δηλωμένη πραγματική πρόοδος είναι μικρότερη κατά %s από την πρόοδο που έχει καταναλωθεί @@ -86,59 +86,59 @@ WhichIamLinkedTo=με το οποίο είμαι συνδεδεμένος WhichIamLinkedToProject=που είμαι συνδεδεμένος με το έργο Time=Χρόνος TimeConsumed=Έχει καταναλωθεί -ListOfTasks=Κατάλογος εργασιών +ListOfTasks=Λίστα εργασιών GoToListOfTimeConsumed=Μεταβείτε στη λίστα του χρόνου που έχει καταναλωθεί GanttView=Gantt View ListWarehouseAssociatedProject=Λίστα αποθηκών που σχετίζονται με το έργο -ListProposalsAssociatedProject=Κατάλογος των εμπορικών προτάσεων που σχετίζονται με το έργο -ListOrdersAssociatedProject=Κατάλογος παραγγελιών πωλήσεων που σχετίζονται με το έργο -ListInvoicesAssociatedProject=Κατάλογος των τιμολογίων πελατών που σχετίζονται με το έργο +ListProposalsAssociatedProject=Λίστα των εμπορικών προσφορών που σχετίζονται με το έργο +ListOrdersAssociatedProject=Λίστα εντολών πωλήσεων που σχετίζονται με το έργο +ListInvoicesAssociatedProject=Λίστα τιμολογίων πελατών που σχετίζονται με το έργο ListPredefinedInvoicesAssociatedProject=Λίστα πρότυπων τιμολογίων πελάτη που σχετίζονται με το έργο ListSupplierOrdersAssociatedProject=Κατάλογος εντολών αγοράς που σχετίζονται με το έργο -ListSupplierInvoicesAssociatedProject=Λίστα τιμολογίων πωλητών που σχετίζονται με το έργο -ListContractAssociatedProject=Κατάλογος των συμβάσεων που σχετίζονται με το έργο -ListShippingAssociatedProject=Κατάλογος αποστολών που σχετίζονται με το έργο -ListFichinterAssociatedProject=Κατάλογος παρεμβάσεων που σχετίζονται με το έργο -ListExpenseReportsAssociatedProject=Κατάλογος εκθέσεων δαπανών που σχετίζονται με το έργο -ListDonationsAssociatedProject=Κατάλογος δωρεών που σχετίζονται με το έργο -ListVariousPaymentsAssociatedProject=Κατάλογος των διαφόρων πληρωμών που σχετίζονται με το έργο -ListSalariesAssociatedProject=Κατάλογος των μισθών που σχετίζονται με το σχέδιο -ListActionsAssociatedProject=Κατάλογος συμβάντων που σχετίζονται με το έργο -ListMOAssociatedProject=Κατάλογος παραγγελιών κατασκευής που σχετίζονται με το έργο -ListTaskTimeUserProject=Κατάλογος του χρόνου που καταναλώνεται για τα καθήκοντα του έργου -ListTaskTimeForTask=Κατάλογος του χρόνου που καταναλώνεται στην εργασία +ListSupplierInvoicesAssociatedProject=Λίστα τιμολογίων προμηθευτών που σχετίζονται με το έργο +ListContractAssociatedProject=Λίστα συμβάσεων που σχετίζονται με το έργο +ListShippingAssociatedProject=Λίστα αποστολών που σχετίζονται με το έργο +ListFichinterAssociatedProject=Λίστα παρεμβάσεων που σχετίζονται με το έργο +ListExpenseReportsAssociatedProject=Λίστα εκθέσεων δαπανών που σχετίζονται με το έργο +ListDonationsAssociatedProject=Λίστα δωρεών που σχετίζονται με το έργο +ListVariousPaymentsAssociatedProject=Λίστα διαφόρων πληρωμών που σχετίζονται με το έργο +ListSalariesAssociatedProject=Λίστα πληρωμών μισθών που σχετίζονται με το σχέδιο +ListActionsAssociatedProject=Λίστα ενεργειών που σχετίζονται με το έργο +ListMOAssociatedProject=Λίστα παραγγελιών κατασκευής που σχετίζονται με το έργο +ListTaskTimeUserProject=Λίστα χρόνου που καταναλώθηκε σε καθήκοντα του έργου +ListTaskTimeForTask=Λίστα χρόνου που καταναλώθηκε στην εργασία ActivityOnProjectToday=Δραστηριότητα στο έργο σήμερα ActivityOnProjectYesterday=Δραστηριότητα στο έργο χθες ActivityOnProjectThisWeek=Δραστηριότητα στο έργο αυτή την εβδομάδα ActivityOnProjectThisMonth=Δραστηριότητα στο έργο αυτό το μήνα -ActivityOnProjectThisYear=Δραστηριότητα στο έργο αυτού του έτους +ActivityOnProjectThisYear=Δραστηριότητα στο έργο φέτος ChildOfProjectTask=Παιδί του έργου / εργασίας ChildOfTask=Παιδί της αποστολής TaskHasChild=Η εργασία έχει παιδί -NotOwnerOfProject=Δεν ιδιοκτήτης αυτού του ιδιωτικού έργου, +NotOwnerOfProject=Δεν είστε υπεύθυνος αυτού του ιδιωτικού έργου AffectedTo=Κατανέμονται σε -CantRemoveProject=Το έργο δεν μπορεί να διαγραφεί καθώς συνδέεται με κάποιο άλλο αντικείμενο (τιμολόγιο, εντολές ή αντίστοιχο). Δείτε την καρτέλα '%s'. -ValidateProject=Επικύρωση projet -ConfirmValidateProject=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτό το έργο; +CantRemoveProject=Το έργο δεν μπορεί να διαγραφεί καθώς συνδέεται με κάποιο άλλο αντικείμενο (τιμολόγιο, εντολές ή αλλο). Δείτε την καρτέλα '%s'. +ValidateProject=Επικύρωση έργου +ConfirmValidateProject=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτό το έργο; CloseAProject=Κλείσιμο έργου -ConfirmCloseAProject=Είστε βέβαιοι ότι θέλετε να κλείσετε αυτό το έργο; -AlsoCloseAProject=Επίσης, κλείστε το έργο (κρατήστε το ανοιχτό αν εξακολουθείτε να χρειαστεί να ακολουθήσετε τα καθήκοντα παραγωγής σε αυτό) +ConfirmCloseAProject=Είστε σίγουροι ότι θέλετε να κλείσετε αυτό το έργο; +AlsoCloseAProject=Επίσης κλείστε το έργο (διατηρήστε το ανοιχτό εάν εξακολουθείτε να χρειάζεστε να ακολουθείτε εργασίες παραγωγής σε αυτό) ReOpenAProject=Άνοιγμα έργου -ConfirmReOpenAProject=Είστε βέβαιοι ότι θέλετε να ανοίξετε ξανά αυτό το έργο; -ProjectContact=Αντιπρόσωποι του έργου +ConfirmReOpenAProject=Είστε σίγουροι ότι θέλετε να ανοίξετε ξανά αυτό το έργο; +ProjectContact=Επαφές έργου TaskContact=Επαφές εργασιών -ActionsOnProject=Δράσεις για το έργο -YouAreNotContactOfProject=Δεν έχετε μια επαφή του ιδιωτικού έργου, -UserIsNotContactOfProject=Ο χρήστης δεν είναι μια επαφή αυτού του ιδιωτικού έργου +ActionsOnProject=Ενέργειες για το έργο +YouAreNotContactOfProject=Δεν είστε επαφή αυτού του ιδιωτικού έργου +UserIsNotContactOfProject=Ο χρήστης δεν είναι επαφή αυτού του ιδιωτικού έργου DeleteATimeSpent=Διαγράψτε το χρόνο που δαπανάται ConfirmDeleteATimeSpent=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον χρόνο; DoNotShowMyTasksOnly=Δείτε επίσης τα καθήκοντα που δεν ανατέθηκαν σε μένα ShowMyTasksOnly=Δείτε τα καθήκοντα που σας έχουν ανατεθεί TaskRessourceLinks=Επαφές της εργασίας -ProjectsDedicatedToThisThirdParty=Έργα που αφορούν αυτό το στοιχείο +ProjectsDedicatedToThisThirdParty=Έργα που αφορούν αυτό το τρίτο μέρος NoTasks=Δεν υπάρχουν εργασίες για αυτό το έργο LinkedToAnotherCompany=Συνδέεται με άλλο τρίτο μέρος -TaskIsNotAssignedToUser=Εργασία δεν έχει εκχωρηθεί στο χρήστη. Χρησιμοποιήστε το κουμπί ' %s ' για να εκχωρήσετε εργασία τώρα. +TaskIsNotAssignedToUser=Η εργασία δεν έχει ανατεθεί στον χρήστη. Χρησιμοποιήστε το κουμπί ' %s ' για να αναθέσετε την εργασία τώρα. ErrorTimeSpentIsEmpty=Χρόνος που δαπανάται είναι άδειο TimeRecordingRestrictedToNMonthsBack=Η καταγραφή χρόνου περιορίζεται σε %s μήνες πίσω ThisWillAlsoRemoveTasks=Αυτή η ενέργεια θα διαγράψει επίσης όλα τα καθήκοντα του έργου (%s καθηκόντων προς το παρόν) και όλες οι είσοδοι του χρόνου. @@ -151,14 +151,14 @@ CloneTaskFiles=Ο κλώνος εργασία (ες) εντάχθηκαν αρχ CloneMoveDate=Ενημέρωση έργου / εργασιών που χρονολογούνται από τώρα; ConfirmCloneProject=Είστε σίγουροι ότι θα κλωνοποιήσετε αυτό το έργο; ProjectReportDate=Αλλάξτε τις ημερομηνίες των εργασιών σύμφωνα με την ημερομηνία έναρξης του νέου έργου -ErrorShiftTaskDate=Impossible to shift task date according to new project start date -ProjectsAndTasksLines=Projects and tasks -ProjectCreatedInDolibarr=Έργο %s δημιουργήθηκε +ErrorShiftTaskDate=Αδύνατη η αλλαγή της ημερομηνίας εργασίας σύμφωνα με την ημερομηνία έναρξης του νέου έργου +ProjectsAndTasksLines=Έργα και εργασίες +ProjectCreatedInDolibarr=Το έργο %s δημιουργήθηκε ProjectValidatedInDolibarr=Το έργο %s επικυρώθηκε ProjectModifiedInDolibarr=Το έργο %s τροποποιήθηκε -TaskCreatedInDolibarr=Εργασία %s δημιουργήθηκε -TaskModifiedInDolibarr=Εργασία %s τροποποιήθηκε -TaskDeletedInDolibarr=Εργασία %s διαγράφηκε +TaskCreatedInDolibarr=Δημιουργήθηκε η εργασία %s +TaskModifiedInDolibarr=Η εργασία %s τροποποιήθηκε +TaskDeletedInDolibarr=Η εργασία %s διαγράφηκε OpportunityStatus=Κατάσταση προοπτικής OpportunityStatusShort=Κατάσταση προοπτικής OpportunityProbability=Πιθανότητα προοπτικής @@ -166,10 +166,10 @@ OpportunityProbabilityShort=Πιθαν. προοπτικής OpportunityAmount=Ποσό προοπτικής OpportunityAmountShort=Ποσό προοπτικής OpportunityWeightedAmount=Σταθμισμένο ποσό ευκαιρίας -OpportunityWeightedAmountShort=Αντί. σταθμισμένο ποσό +OpportunityWeightedAmountShort=Σταθμ. ποσό ευκαιρίας OpportunityAmountAverageShort=Μέσο ποσό προοπτικής OpportunityAmountWeigthedShort=Σταθμισμένο ποσό προοπτικής -WonLostExcluded=Κερδισμένο / Lost αποκλεισμένο +WonLostExcluded=Κερδισμένες/χαμένες εξαιρούνται ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Επικεφαλής του έργου TypeContact_project_external_PROJECTLEADER=Επικεφαλής του έργου @@ -181,16 +181,16 @@ TypeContact_project_task_internal_TASKCONTRIBUTOR=Συνεισφέρων TypeContact_project_task_external_TASKCONTRIBUTOR=Συνεισφέρων SelectElement=Επιλέξτε το στοιχείο AddElement=Σύνδεση με το στοιχείο -LinkToElementShort=Σύνδεση σε +LinkToElementShort=Σύνδεση με # Documents models DocumentModelBeluga=Πρότυπο εγγράφου έργου για επισκόπηση συνδεδεμένων αντικειμένων DocumentModelBaleine=Πρότυπο εγγράφου έργου για εργασίες -DocumentModelTimeSpent=Πρότυπο αναφοράς έργου για το χρόνο που δαπανάται -PlannedWorkload=Σχέδιο φόρτου εργασίας +DocumentModelTimeSpent=Πρότυπο αναφοράς έργου για το χρόνο που δαπανήθηκε +PlannedWorkload=Προγραμματισμένος φόρτος εργασίας PlannedWorkloadShort=Φόρτος εργασίας ProjectReferers=Σχετικά αντικείμενα ProjectMustBeValidatedFirst=Το έργο πρέπει να επικυρωθεί πρώτα -MustBeValidatedToBeSigned=Το %s πρέπει πρώτα να επικυρωθεί για να οριστεί σε Υπογεγραμμένο. +MustBeValidatedToBeSigned=Το %s πρέπει πρώτα να επικυρωθεί για να οριστεί ως Υπογεγραμμένο. FirstAddRessourceToAllocateTime=Ορίστε έναν πόρο χρήστη ως επαφή του έργου για να διαθέσετε χρόνο InputPerDay=Εισαγωγή ανά ημέρα InputPerWeek=Εισαγωγή ανά εβδομάδα @@ -199,29 +199,29 @@ InputDetail=Λεπτομέρειες εισόδου TimeAlreadyRecorded=Αυτός είναι ο χρόνος που έχει ήδη εγγραφεί για αυτήν την εργασία / ημέρα και ο χρήστης %s ProjectsWithThisUserAsContact=Έργα με αυτόν τον χρήστη ως επαφή ProjectsWithThisContact=Έργα με αυτήν την επαφή -TasksWithThisUserAsContact=Εργασίες που έχουν εκχωρηθεί σε αυτόν τον χρήστη +TasksWithThisUserAsContact=Εργασίες που έχουν ανατεθεί σε αυτόν τον χρήστη ResourceNotAssignedToProject=Δεν έχει ανατεθεί σε έργο ResourceNotAssignedToTheTask=Δεν έχει ανατεθεί στην εργασία -NoUserAssignedToTheProject=Δεν έχουν ανατεθεί χρήστες σε αυτό το έργο +NoUserAssignedToTheProject=Δεν έχουν εκχωρηθεί χρήστες σε αυτό το έργο TimeSpentBy=Χρόνος που πέρασε -TasksAssignedTo=Οι εργασίες που έχουν εκχωρηθεί στο -AssignTaskToMe=Αντιστοίχηση εργασίας στον εαυτό μου -AssignTaskToUser=Αναθέστε εργασία σε %s -SelectTaskToAssign=Επιλέξτε εργασία για εκχώρηση ... +TasksAssignedTo=Οι εργασίες που έχουν ανατεθεί στο +AssignTaskToMe=Ανάθεση εργασίας στον εαυτό μου +AssignTaskToUser=Ανάθεση εργασία στο %s +SelectTaskToAssign=Επιλέξτε εργασία για ανάθεση... AssignTask=Ανάθεση ProjectOverview=Επισκόπηση ManageTasks=Χρησιμοποιήστε έργα για να παρακολουθήσετε εργασίες και / ή να αναφέρετε το χρόνο που ξοδεύετε (φύλλα εργασίας) -ManageOpportunitiesStatus=Χρησιμοποιήστε τα έργα για να παρακολουθήσετε τις προοπτικές / ευκαιρίες +ManageOpportunitiesStatus=Χρησιμοποιήστε τα έργα για να παρακολουθήσετε τις προοπτικές/ευκαιρίες ProjectNbProjectByMonth=Αριθμός δημιουργηθέντων έργων ανά μήνα ProjectNbTaskByMonth=Αριθμός δημιουργημένων εργασιών ανά μήνα ProjectOppAmountOfProjectsByMonth=Ποσό προοπτικών ανά μήνα -ProjectWeightedOppAmountOfProjectsByMonth=Σταθμισμένο ποσό προοπτικών κατά μήνα +ProjectWeightedOppAmountOfProjectsByMonth=Σταθμισμένο ποσό προοπτικών ανά μήνα ProjectOpenedProjectByOppStatus=Ανοιχτές προοπτικές έργων ανά κατάσταση προοπτικής ProjectsStatistics=Στατιστικά έργων ή προοπτικών TasksStatistics=Στατιστικά εργασιών των έργων ή των προοπτικών TaskAssignedToEnterTime=Η εργασία έχει εκχωρηθεί. Πρέπει να είναι δυνατή η εισαγωγή του χρόνου αυτού του έργου. -IdTaskTime=Χρόνος εργασίας Id -YouCanCompleteRef=Εάν θέλετε να συμπληρώσετε το ref με κάποιο επίθημα, συνιστάται να προσθέσετε ένα χαρακτήρα για να το διαχωρίσετε, οπότε η αυτόματη αρίθμηση θα εξακολουθήσει να λειτουργεί σωστά για τα επόμενα έργα. Για παράδειγμα %s-MYSUFFIX +IdTaskTime=Αναγνωριστικό χρόνου εργασίας +YouCanCompleteRef=Εάν θέλετε να συμπληρώσετε την αναφορά με κάποιο επίθημα, συνιστάται να προσθέσετε έναν χαρακτήρα - για να το διαχωρίσετε, έτσι η αυτόματη αρίθμηση θα εξακολουθεί να λειτουργεί σωστά για τα επόμενα έργα. Για παράδειγμα %s-MYSUFFIX OpenedProjectsByThirdparties=Ανοίξτε έργα από τρίτους OnlyOpportunitiesShort=Μόνο προοπτικές OpenedOpportunitiesShort=Ανοιχτές προοπτικές @@ -232,34 +232,34 @@ OpportunityPonderatedAmount=Σταθμισμένο ποσό προοπτικών OpportunityPonderatedAmountDesc=Ποσό προοπτικών σταθμισμένο με βάση την πιθανότητα OppStatusPROSP=Προοπτική OppStatusQUAL=Προσόν -OppStatusPROPO=Πρόταση +OppStatusPROPO=Προσφορά OppStatusNEGO=Διαπραγμάτευση OppStatusPENDING=Εκκρεμεί -OppStatusWON=Κέρδισε -OppStatusLOST=Χαμένος +OppStatusWON=Έκλεισε +OppStatusLOST=Χάθηκε Budget=Προϋπολογισμός AllowToLinkFromOtherCompany=Επιτρέψτε τη σύνδεση του έργου με άλλη εταιρεία

Υποστηριζόμενες τιμές:
- Κρατήστε κενό: Μπορεί να συνδέσει οποιοδήποτε έργο της εταιρείας (προεπιλογή)
- "όλα": Μπορεί να συνδέσει οποιαδήποτε έργα, ακόμα και έργα άλλων εταιρειών
- Μια λίστα με IDs τρίτων που χωρίζονται με κόμματα: μπορούν να συνδέσουν όλα τα έργα αυτών των τρίτων μερών (Παράδειγμα: 123,4795,53)
-LatestProjects=Τελευταία έργα %s -LatestModifiedProjects=Τελευταία τροποποιημένα έργα %s +LatestProjects=Τελευταία %s έργα +LatestModifiedProjects=Τελευταία %s τροποποιημένα έργα OtherFilteredTasks=Άλλες φιλτραρισμένες εργασίες -NoAssignedTasks=Δεν εντοπίστηκαν καθήκοντα που έχουν ανατεθεί (αναθέστε το έργο / εργασίες στον τρέχοντα χρήστη από το κορυφαίο πλαίσιο επιλογής για να εισάγετε χρόνο σε αυτό) -ThirdPartyRequiredToGenerateInvoice=Ένα τρίτο μέρος πρέπει να οριστεί στο έργο για να μπορεί να το τιμολογεί. -ThirdPartyRequiredToGenerateInvoice=Ένα τρίτο μέρος πρέπει να οριστεί στο έργο για να μπορεί να το τιμολογεί. +NoAssignedTasks=Δεν βρέθηκαν ανατεθειμένες εργασίες (αναθέστε έργο/εργασίες στον τρέχοντα χρήστη από το επάνω πλαίσιο επιλογής για να εισαγάγετε χρόνο σε αυτό) +ThirdPartyRequiredToGenerateInvoice=Ένα τρίτο μέρος πρέπει να έχει οριστεί στο έργο για να μπορεί να τιμολογηθεί. +ThirdPartyRequiredToGenerateInvoice=Ένα τρίτο μέρος πρέπει να έχει οριστεί στο έργο για να μπορεί να τιμολογηθεί. ChooseANotYetAssignedTask=Επιλέξτε μια εργασία που δεν σας έχει ανατεθεί ακόμη # Comments trans AllowCommentOnTask=Επιτρέψτε στα σχόλια των χρηστών τις εργασίες -AllowCommentOnProject=Να επιτρέπεται στα σχόλια των χρηστών τα έργα +AllowCommentOnProject=Επιτρέψτε τα σχόλια των χρηστών σε έργα DontHavePermissionForCloseProject=Δεν έχετε δικαιώματα για να κλείσετε το έργο %s DontHaveTheValidateStatus=Το έργο %s πρέπει να είναι ανοικτό για να κλείσει RecordsClosed=%s κλειστά έργα SendProjectRef=Πληροφορίες έργου %s ModuleSalaryToDefineHourlyRateMustBeEnabled=Η ενότητα "Μισθοί" πρέπει να είναι ενεργοποιημένη για να καθορίζει την ωριαία τιμή του εργαζόμενου ώστε να έχει αξιοποιηθεί ο χρόνος που δαπανάται -NewTaskRefSuggested=Η αναφορά εργασίας που έχει ήδη χρησιμοποιηθεί, απαιτείται νέα αναφορά εργασίας +NewTaskRefSuggested=Η αναφορά εργασίας χρησιμοποιείται ήδη, απαιτείται νέα αναφορά εργασίας TimeSpentInvoiced=Χρόνος που δαπανήθηκε χρεώνεται TimeSpentForIntervention=Ο χρόνος που δαπανάται TimeSpentForInvoice=Ο χρόνος που δαπανάται OneLinePerUser=Μια γραμμή ανά χρήστη -ServiceToUseOnLines=Υπηρεσία για χρήση σε γραμμές +ServiceToUseOnLines=Service to use on lines InvoiceGeneratedFromTimeSpent=Το τιμολόγιο %s δημιουργήθηκε από το χρόνο που αφιερώσατε στο έργο InterventionGeneratedFromTimeSpent=Η παρέμβαση %s έχει δημιουργηθεί από τον χρόνο που δαπανήθηκε στο έργο ProjectBillTimeDescription=Επιλέξτε στην περίπτωση που εισάγετε φύλλο κατανομής χρόνου για τα καθήκοντα του έργου και σχεδιάζετε να δημιουργήσετε τιμολόγιο(α) από το δελτίο χρόνου για να χρεώσετε τον πελάτη του έργου (μην το επιλέξετε αν σκοπεύετε να δημιουργήσετε τιμολόγιο που δεν βασίζεται σε καταγεγραμμένα φύλλα χρόνου). Σημείωση: Για να δημιουργήσετε τιμολόγιο, μεταβείτε στην καρτέλα 'Χρόνος που δαπανήθηκε' του έργου και επιλέξτε τις γραμμές που θα συμπεριληφθούν. @@ -280,7 +280,7 @@ AddDetailDateAndDuration=Με ημερομηνία και διάρκεια στ RefTaskParent=Αναφ. Γονική εργασία ProfitIsCalculatedWith=Το κέρδος υπολογίζεται χρησιμοποιώντας AddPersonToTask=Προσθήκη και στις εργασίες -UsageOrganizeEvent=Χρήση: Οργάνωση συμβάντος +UsageOrganizeEvent=Χρήση: Οργάνωση εκδήλωσης PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Καταχώρηση του έργου ως ολοκληρωμένου όταν όλες οι εργασίες έχουν ολοκληρωθεί (100 %% πρόοδος) PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Σημείωση: τα υπάρχοντα έργα με όλες τις εργασίες τους σε 100 %% πρόοδο δεν θα επηρεαστούν: θα χρειαστεί να τα κλείσετε χειροκίνητα. Η επιλογή αυτή επηρεάζει μόνο τα ανοιχτά έργα. SelectLinesOfTimeSpentToInvoice=Επιλέξτε τις γραμμές κατανάλωσης χρόνου που δεν έχουν τιμολογηθεί και έπειτα την μαζική εντολή "Δημιουργία τιμολογίου" για να τα τιμολογήσετε. diff --git a/htdocs/langs/el_GR/sendings.lang b/htdocs/langs/el_GR/sendings.lang index 9300aed40a2..df8e0a2746d 100644 --- a/htdocs/langs/el_GR/sendings.lang +++ b/htdocs/langs/el_GR/sendings.lang @@ -1,76 +1,76 @@ # Dolibarr language file - Source file is en_US - sendings -RefSending=Ref. αποστολή +RefSending=Αναφ. αποστολής Sending=Αποστολή Sendings=Αποστολές AllSendings=Όλες οι αποστολές Shipment=Αποστολή Shipments=Αποστολές -ShowSending=Εμφάνιση μεταφορικών +ShowSending=Εμφάνιση Αποστολών Receivings=Απόδειξεις παράδοσης -SendingsArea=Περιοχή αποστολών -ListOfSendings=Κατάλογος των αποστολών +SendingsArea=Τομέας αποστολών +ListOfSendings=Λίστα αποστολών SendingMethod=Μέθοδο αποστολής LastSendings=Τελευταίες %s αποστολές -StatisticsOfSendings=Στατιστικά στοιχεία για τις αποστολές +StatisticsOfSendings=Στατιστικά στοιχεία αποστολών NbOfSendings=Αριθμός των αποστολών NumberOfShipmentsByMonth=Αριθμός αποστολών ανά μήνα -SendingCard=Κάρτα αποστολής +SendingCard=Καρτέλα αποστολών NewSending=Νέα αποστολή CreateShipment=Δημιουργία αποστολής -QtyShipped=Ποσότητα που αποστέλλεται -QtyShippedShort=Ποσότητα πλοίου. -QtyPreparedOrShipped=Ποσότητα ετοιμάζεται ή αποστέλλεται +QtyShipped=Απεσταλμένη ποσότητα +QtyShippedShort=Απεσταλμένη ποσότητα +QtyPreparedOrShipped=Ποσότητα προς αποστολή ή απεσταλμένη QtyToShip=Ποσότητα προς αποστολή -QtyToReceive=Ποσότητα για να λάβετε -QtyReceived=Ποσότητα παραλαβής +QtyToReceive=Ποσότητα προς παραλαβή +QtyReceived=Ποσότητα που παρελήφθη QtyInOtherShipments=Ποσότητα σε άλλες αποστολές -KeepToShip=Αναμένει για αποστολή +KeepToShip=Παραμένει για αποστολή KeepToShipShort=Παραμένει -OtherSendingsForSameOrder=Άλλες αποστολές για αυτό το σκοπό -SendingsAndReceivingForSameOrder=Αποστολές και αποδείξεις για αυτήν την παραγγελία +OtherSendingsForSameOrder=Άλλες αποστολές για αυτήν την παραγγελία +SendingsAndReceivingForSameOrder=Αποστολές και παραλαβές για αυτήν την παραγγελία SendingsToValidate=Αποστολές για επικύρωση StatusSendingCanceled=Ακυρώθηκε StatusSendingCanceledShort=Ακυρώθηκε -StatusSendingDraft=Σχέδιο +StatusSendingDraft=Προσχέδιο StatusSendingValidated=Επικυρωμένη (προϊόντα για αποστολή ή που έχουν ήδη αποσταλεί) -StatusSendingProcessed=Επεξεργασμένα -StatusSendingDraftShort=Σχέδιο +StatusSendingProcessed=Σε εξέλιξη +StatusSendingDraftShort=Προσχέδιο StatusSendingValidatedShort=Επικυρωμένη -StatusSendingProcessedShort=Επεξεργασμένα +StatusSendingProcessedShort=Σε εξέλιξη SendingSheet=Φύλλο αποστολής -ConfirmDeleteSending=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την αποστολή; -ConfirmValidateSending=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτήν την αποστολή με αναφορά %s ? -ConfirmCancelSending=Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την αποστολή; -DocumentModelMerou=Mérou A5 μοντέλο -WarningNoQtyLeftToSend=Προσοχή, δεν υπάρχουν είδη που περιμένουν να σταλούν. +ConfirmDeleteSending=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την αποστολή; +ConfirmValidateSending=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την αποστολή με αναφορά %s ? +ConfirmCancelSending=Είστε σίγουροι ότι θέλετε να ακυρώσετε αυτήν την αποστολή; +DocumentModelMerou=Μοντέλο Mérou A5 +WarningNoQtyLeftToSend=Προειδοποίηση, κανένα προϊόν δεν ειναι σε αναμονή για αποστολή. StatsOnShipmentsOnlyValidated=Τα στατιστικά αφορούν μόνο επικυρωμένες αποστολές. Η ημερομηνία που χρησιμοποιείται είναι η ημερομηνία επικύρωσης της αποστολής (η προγραμματισμένη ημερομηνία παράδοσης δεν είναι πάντα γνωστή) DateDeliveryPlanned=Προγραμματισμένη ημερομηνία παράδοσης RefDeliveryReceipt=Παραλαβή παράδοσης αναφοράς StatusReceipt=Κατάσταση παραλαβής κατάστασης DateReceived=Παράδοση Ημερομηνία παραλαβής -ClassifyReception=Ταξινόμηση της λήψης +ClassifyReception=Ταξινόμηση παραλαβής SendShippingByEMail=Αποστολή αποστολής μέσω ηλεκτρονικού ταχυδρομείου SendShippingRef=Υποβολή της αποστολής %s -ActionsOnShipping=Εκδηλώσεις για την αποστολή +ActionsOnShipping=Ενέργειες κατά την αποστολή LinkToTrackYourPackage=Σύνδεσμος για να παρακολουθείτε το πακέτο σας ShipmentCreationIsDoneFromOrder=Προς το παρόν, η δημιουργία νέας αποστολής γίνεται από το αρχείο Παραγγελίας Πωλήσεων. -ShipmentLine=Σειρά αποστολής -ProductQtyInCustomersOrdersRunning=Ποσότητα προϊόντος από ανοικτές παραγγελίες πώλησης -ProductQtyInSuppliersOrdersRunning=Ποσότητα προϊόντος από ανοικτές εντολές αγοράς +ShipmentLine=Γραμμή αποστολής +ProductQtyInCustomersOrdersRunning=Ποσότητα προϊόντος από ανοιχτείς εντολές πωλήσεων +ProductQtyInSuppliersOrdersRunning=Ποσότητα προϊόντος από ανοιχτές παραγγελίες αγοράς ProductQtyInShipmentAlreadySent=Ποσότητα προϊόντος από ανοικτή εντολή πωλήσεων που έχει ήδη αποσταλεί ProductQtyInSuppliersShipmentAlreadyRecevied=Ποσότητα προϊόντος από ανοικτές παραγγελίες αγοράς που έχουν ήδη παραληφθεί -NoProductToShipFoundIntoStock=Δεν βρέθηκε προϊόν στο πλοίο στην αποθήκη %s . Διορθώστε το απόθεμα ή επιστρέψτε για να επιλέξετε μια άλλη αποθήκη. -WeightVolShort=Βάρος / Τόμ. +NoProductToShipFoundIntoStock=Δεν βρέθηκε προϊόν προς αποστολή στην αποθήκη %s . Διορθώστε το απόθεμα ή επιλέξτε άλλη αποθήκη. +WeightVolShort=Βάρος/Όγκος ValidateOrderFirstBeforeShipment=Θα πρέπει πρώτα να επικυρώσετε την παραγγελία πριν να μπορέσετε να πραγματοποιήσετε αποστολές. # Sending methods # ModelDocument DocumentModelTyphon=Πληρέστερο πρότυπο έγγραφο για αποδεικτικά παράδοσης (logo. ..) -DocumentModelStorm=Πιο πλήρες μοντέλο εγγράφου για αποδείξεις παράδοσης και συμβατότητα με επιπλέον πεδία (λογότυπο...) -Error_EXPEDITION_ADDON_NUMBER_NotDefined=Σταθερή EXPEDITION_ADDON_NUMBER δεν ορίζεται +DocumentModelStorm=Πληρέστερο πρότυπο έγγραφο για αποδεικτικά παράδοσης και συμβατότητα με επιπλέον πεδία (λογότυπο...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Η σταθερά EXPEDITION_ADDON_NUMBER δεν έχει οριστεί SumOfProductVolumes=Άθροισμα όγκου του προϊόντος -SumOfProductWeights=Άθροισμα το βάρος των προϊόντων +SumOfProductWeights=Άθροισμα βάρους προϊόντων # warehouse details DetailWarehouseNumber= Λεπτομέρειες Αποθήκης -DetailWarehouseFormat= W: %s (Ποσότητα: %d) +DetailWarehouseFormat= Α: %s (Ποσότητα: %d) diff --git a/htdocs/langs/el_GR/stocks.lang b/htdocs/langs/el_GR/stocks.lang index 7fb1dbe0b93..cc8ac9feab1 100644 --- a/htdocs/langs/el_GR/stocks.lang +++ b/htdocs/langs/el_GR/stocks.lang @@ -1,41 +1,41 @@ # Dolibarr language file - Source file is en_US - stocks -WarehouseCard=Κάρτα Αποθήκης +WarehouseCard=Καρτέλα Αποθήκης Warehouse=Αποθήκη Warehouses=Αποθήκες -ParentWarehouse=Μητρική αποθήκη +ParentWarehouse=Κεντρική αποθήκη NewWarehouse=Νέα αποθήκη / τοποθεσία αποθέματος -WarehouseEdit=Τροποποιήστε την αποθήκη +WarehouseEdit=Τροποποίηση αποθήκης MenuNewWarehouse=Νέα αποθήκη WarehouseSource=Πηγή αποθήκευσης WarehouseSourceNotDefined=Δεν έχει οριστεί αποθήκη, AddWarehouse=Δημιουργία αποθήκης -AddOne=Προσθέστε ένα +AddOne=Προσθήκη μιας DefaultWarehouse=Προκαθορισμένη αποθήκη -WarehouseTarget=Στόχος αποθήκη -ValidateSending=Επιβεβαιώστε την αποστολή +WarehouseTarget=Αποθήκη προορισμού +ValidateSending=Επιβεβαίωση αποστολής CancelSending=Ακύρωση αποστολής DeleteSending=Διαγραφή αποστολής -Stock=Στοκ +Stock=Απόθεμα Stocks=Αποθέματα -MissingStocks=Λείπει απόθεμα +MissingStocks=Χαμένα αποθέματα StockAtDate=Αποθέματα κατά την ημερομηνία StockAtDateInPast=Ημερομηνία στο παρελθόν StockAtDateInFuture=Ημερομηνία στο μέλλον -StocksByLotSerial=Αποθέματα ανά παρτίδα / σειρά -LotSerial=Lots / Serials -LotSerialList=Κατάλογος παρτίδων / περιοδικών +StocksByLotSerial=Αποθέματα ανά παρτίδα / σειριακό αριθμό +LotSerial=Παρτίδες/Σειριακοί αριθμοί +LotSerialList=Λίστα παρτίδων / σειριακών αριθμών Movements=Κινήσεις -ErrorWarehouseRefRequired=Αποθήκη όνομα αναφοράς απαιτείται -ListOfWarehouses=Κατάλογος των αποθηκών -ListOfStockMovements=Κατάλογος των κινήσεων των αποθεμάτων -ListOfInventories=Κατάλογος απογραφών -MovementId=Αναγνώριση κίνησης +ErrorWarehouseRefRequired=Απαιτείται όνομα αναφοράς αποθήκης +ListOfWarehouses=Λίστα αποθηκών +ListOfStockMovements=Λίστα κινήσεων των αποθεμάτων +ListOfInventories=Λίστα απογραφών +MovementId=Αναγνωριστικό κίνησης StockMovementForId=Αναγνωριστικό κίνησης %d -ListMouvementStockProject=Κατάλογος των κινήσεων αποθεμάτων που σχετίζονται με το έργο -StocksArea=Περιοχή αποθηκών +ListMouvementStockProject=Λίστα των κινήσεων αποθεμάτων που σχετίζονται με το έργο +StocksArea=Τομέας αποθηκών AllWarehouses=Όλες οι αποθήκες IncludeEmptyDesiredStock=Συμπεριλάβετε επίσης αρνητικό απόθεμα με απροσδιόριστο επιθυμητό απόθεμα -IncludeAlsoDraftOrders=Συμπεριλάβετε επίσης σχέδια παραγγελιών +IncludeAlsoDraftOrders=Συμπεριλάβετε επίσης προσχέδια παραγγελιών Location=Τοποθεσία LocationSummary=Σύντομο όνομα τοποθεσίας NumberOfDifferentProducts=Αριθμός μοναδικών προϊόντων @@ -45,23 +45,23 @@ LastMovements=Τελευταίες κινήσεις Units=Μονάδες Unit=Μονάδα StockCorrection=Διόρθωση αποθέματος -CorrectStock=Σωστή απόθεμα -StockTransfer=Stock Μεταφορά -TransferStock=Μεταφορά μετοχών +CorrectStock=Διόρθωση απόθεματος +StockTransfer=Μεταφορά αποθέματος +TransferStock=Μεταφορά αποθέματος MassStockTransferShort=Μαζική μεταφορά αποθέματος -StockMovement=Μετακίνηση αποθεμάτων +StockMovement=Μετακίνηση αποθέματος StockMovements=Μετακινήσεις αποθεμάτων NumberOfUnit=Αριθμός μονάδων -UnitPurchaseValue=Unit purchase price -StockTooLow=Χρηματιστήριο πολύ χαμηλή +UnitPurchaseValue=Τιμή αγοράς μονάδας +StockTooLow=Το απόθεμα είναι πολύ χαμηλό StockLowerThanLimit=Απόθεμα χαμηλότερο από το όριο συναγερμού (%s) EnhancedValue=Αξία -EnhancedValueOfWarehouses=Αποθήκες αξία +EnhancedValueOfWarehouses=Αξία αποθηκών UserWarehouseAutoCreate=Δημιουργήστε αυτόματα μια αποθήκη χρήστη κατά τη δημιουργία ενός χρήστη -AllowAddLimitStockByWarehouse=Διαχειριστείτε επίσης την τιμή για το ελάχιστο και το επιθυμητό απόθεμα ανά ζεύγος (αποθήκη προϊόντων) επιπλέον της τιμής για το ελάχιστο και το επιθυμητό απόθεμα ανά προϊόν +AllowAddLimitStockByWarehouse=Διαχειριστείτε επίσης την τιμή για το ελάχιστο και το επιθυμητό απόθεμα ανά ζεύγος (αποθήκης- προϊόντων) επιπλέον της τιμής για το ελάχιστο και το επιθυμητό απόθεμα ανά προϊόν RuleForWarehouse=Κανόνας για τις αποθήκες WarehouseAskWarehouseOnThirparty=Ορίστε μια αποθήκη σε τρίτα μέρη -WarehouseAskWarehouseDuringPropal=Ορίστε μια αποθήκη για εμπορικές προτάσεις +WarehouseAskWarehouseDuringPropal=Ορίστε μια αποθήκη για εμπορικές προσφορές WarehouseAskWarehouseDuringOrder=Ορίστε μια αποθήκη για παραγγελίες πωλήσεων WarehouseAskWarehouseDuringProject=Ορίστε μια αποθήκη για Έργα UserDefaultWarehouse=Ορίστε μια αποθήκη στους Χρήστες @@ -69,61 +69,61 @@ MainDefaultWarehouse=Προεπιλεγμένη αποθήκη MainDefaultWarehouseUser=Χρησιμοποιήστε μια προεπιλεγμένη αποθήκη για κάθε χρήστη MainDefaultWarehouseUserDesc=Με την ενεργοποίηση αυτής της επιλογής, κατά τη δημιουργία ενός προϊόντος, η αποθήκη που έχει εκχωρηθεί στο προϊόν θα οριστεί σε αυτήν. Εάν δεν έχει οριστεί αποθήκη στον χρήστη, ορίζεται η προεπιλεγμένη αποθήκη. IndependantSubProductStock=Το απόθεμα προϊόντων και το απόθεμα υποπροϊόντων είναι ανεξάρτητα -QtyDispatched=Ποσότητα αποστέλλονται +QtyDispatched=Απεσταλμένη ποσότητα QtyDispatchedShort=Απεσταλμένη ποσότητα QtyToDispatchShort=Ποσότητα για αποστολή -OrderDispatch=Στοιχεία παραστατικών -RuleForStockManagementDecrease=Επιλέξτε τον Κανόνα για την αυτόματη μείωση των αποθεμάτων (η χειρωνακτική μείωση είναι πάντοτε δυνατή, ακόμη και αν ενεργοποιηθεί ένας κανόνας αυτόματης μείωσης) -RuleForStockManagementIncrease=Επιλέξτε τον Κανόνα για την αυτόματη αύξηση των μετοχών (η χειροκίνητη αύξηση είναι πάντα δυνατή, ακόμη και αν ενεργοποιηθεί ένας κανόνας αυτόματης αύξησης) -DeStockOnBill=Μείωση των πραγματικών αποθεμάτων κατά την επικύρωση του τιμολογίου πελάτη / πιστωτικού σημείου +OrderDispatch=Παραλαβές αντικειμένων +RuleForStockManagementDecrease=Επιλέξτε τον Κανόνα για την αυτόματη μείωση του αποθέματος (η χειρωνακτική μείωση είναι πάντοτε δυνατή, ακόμη και αν ενεργοποιηθεί ένας κανόνας αυτόματης μείωσης) +RuleForStockManagementIncrease=Επιλέξτε τον Κανόνα για την αυτόματη αύξηση του αποθέματος (η χειροκίνητη αύξηση είναι πάντα δυνατή, ακόμη και αν ενεργοποιηθεί ένας κανόνας αυτόματης αύξησης) +DeStockOnBill=Μείωση των πραγματικών αποθεμάτων κατά την επικύρωση του τιμολογίου πελάτη / πιστωτικού σημειώματος DeStockOnValidateOrder=Μείωση των πραγματικών αποθεμάτων κατά την επικύρωση της εντολής πώλησης -DeStockOnShipment=Μειώστε τα πραγματικά αποθέματα κατά την επικύρωση της ναυτιλίας -DeStockOnShipmentOnClosing=Μείωση πραγματικών αποθεμάτων όταν η ναυτιλία είναι κλειστή -ReStockOnBill=Αύξηση των πραγματικών αποθεμάτων κατά την επικύρωση του τιμολογίου πωλητή / πιστωτικού σημειώματος +DeStockOnShipment=Μείωση των πραγματικών αποθεμάτων κατά την επικύρωση της αποστολής +DeStockOnShipmentOnClosing=Μείωση πραγματικών αποθεμάτων όταν η αποστολη είναι κλειστή +ReStockOnBill=Αύξηση των πραγματικών αποθεμάτων κατά την επικύρωση του τιμολογίου προμηθευτή / πιστωτικού σημειώματος ReStockOnValidateOrder=Αύξηση των πραγματικών αποθεμάτων με την έγκριση της εντολής αγοράς ReStockOnDispatchOrder=Αύξηση των πραγματικών αποθεμάτων κατά τη χειρωνακτική αποστολή στην αποθήκη, μετά την παραλαβή της παραγγελίας αγοράς αγαθών StockOnReception=Αύξηση των πραγματικών αποθεμάτων κατά την επικύρωση της παραλαβής -StockOnReceptionOnClosing=Αύξηση των πραγματικών αποθεμάτων όταν η λήψη είναι κλειστή -OrderStatusNotReadyToDispatch=Παραγγελία δεν έχει ακόμη ή όχι περισσότερο μια κατάσταση που επιτρέπει την αποστολή των προϊόντων σε αποθήκες αποθεμάτων. +StockOnReceptionOnClosing=Αύξηση των πραγματικών αποθεμάτων όταν η παραλαβή είναι κλειστή +OrderStatusNotReadyToDispatch=Η παραγγελία δεν είναι ακόμη ή δεν είναι πλέον σε κατάσταση που να επιτρέπει την αποστολή προϊόντων σε αποθήκες αποθεμάτων. StockDiffPhysicTeoric=Επεξήγηση διαφοράς μεταξύ φυσικού και εικονικού αποθέματος -NoPredefinedProductToDispatch=Δεν προκαθορισμένα προϊόντα για αυτό το αντικείμενο. Έτσι, δεν έχει αποστολή σε απόθεμα είναι απαραίτητη. +NoPredefinedProductToDispatch=Δεν υπάρχουν προκαθορισμένα προϊόντα για αυτό το αντικείμενο. Επομένως, δεν απαιτείται αποστολή σε απόθεμα. DispatchVerb=Αποστολή StockLimitShort=Όριο για ειδοποιήσεις StockLimit=Όριο ειδοποιήσεων για το απόθεμα -StockLimitDesc=(κενό) σημαίνει καμία προειδοποίηση.
 Το 0 μπορεί να χρησιμοποιηθεί για την ενεργοποίηση μιας προειδοποίησης μόλις αδειάσει το απόθεμα. +StockLimitDesc=(κενό) σημαίνει καμία προειδοποίηση. Το
0 μπορεί να χρησιμοποιηθεί για την ενεργοποίηση μιας προειδοποίησης μόλις αδειάσει το απόθεμα. PhysicalStock=Φυσικό απόθεμα -RealStock=Real Χρηματιστήριο +RealStock=Πραγματικό απόθεμα RealStockDesc=Το φυσικό / πραγματικό απόθεμα είναι το απόθεμα που βρίσκεται σήμερα στις αποθήκες. RealStockWillAutomaticallyWhen=Το πραγματικό απόθεμα θα τροποποιηθεί σύμφωνα με αυτόν τον κανόνα (όπως ορίζεται στην ενότητα του αποθέματος): -VirtualStock=Εικονική απόθεμα +VirtualStock=Εικονικό απόθεμα VirtualStockAtDate=Εικονικό απόθεμα σε μελλοντική ημερομηνία VirtualStockAtDateDesc=Εικονικό απόθεμα μόλις ολοκληρωθούν όλες οι εκκρεμείς παραγγελίες που έχουν προγραμματιστεί να διεκπεραιωθούν πριν από την επιλεγμένη ημερομηνία VirtualStockDesc=Το εικονικό απόθεμα είναι το υπολογισμένο απόθεμα που είναι διαθέσιμο μόλις κλείσουν όλες οι ανοιχτές/εκκρεμείς ενέργειες (που επηρεάζουν τα αποθέματα) (ληφθείσες εντολές αγοράς, απεσταλμένες εντολές πωλήσεων, εκτελεσμένες παραγγελίες κατασκευής κ.λπ.) AtDate=Κατά την ημερομηνία -IdWarehouse=Id αποθήκη -DescWareHouse=Αποθήκη Περιγραφή -LieuWareHouse=Αποθήκη Localisation -WarehousesAndProducts=Αποθήκες και τα προϊόντα -WarehousesAndProductsBatchDetail=Αποθήκες και προϊόντα (με λεπτομέρεια ανά παρτίδα / σειρά) +IdWarehouse=Αναγνωριστικό αποθήκης +DescWareHouse=Περιγραφή αποθήκης +LieuWareHouse=Τοποθεσία αποθήκης +WarehousesAndProducts=Αποθήκες και προϊόντα +WarehousesAndProductsBatchDetail=Αποθήκες και προϊόντα (με λεπτομέρεια ανά παρτίδα / σειριακό αριθμό) AverageUnitPricePMPShort=Μέση σταθμική τιμή AverageUnitPricePMPDesc=Η μέση τιμή μονάδας εισόδου που έπρεπε να δαπανήσουμε για να πάρουμε 1 μονάδα προϊόντος στο απόθεμα μας. -SellPriceMin=Πώληση Τιμή μονάδας -EstimatedStockValueSellShort=Τιμή για πώληση -EstimatedStockValueSell=Τιμή για πώληση -EstimatedStockValueShort=Είσοδος αξία μετοχών -EstimatedStockValue=Είσοδος αξία μετοχών +SellPriceMin=Τιμή μονάδας πώλησης +EstimatedStockValueSellShort=Αξία πώλησης +EstimatedStockValueSell=Αξία πώλησης +EstimatedStockValueShort=Εισαγωγή αξίας αποθέματος +EstimatedStockValue=Εισαγωγή αξίας αποθέματος DeleteAWarehouse=Διαγραφή μιας αποθήκης -ConfirmDeleteWarehouse=Είστε βέβαιοι ότι θέλετε να διαγράψετε την αποθήκη %s ? -PersonalStock=Προσωπικά %s απόθεμα -ThisWarehouseIsPersonalStock=Αυτή η αποθήκη αποτελεί προσωπική απόθεμα %s %s -SelectWarehouseForStockDecrease=Επιλέξτε αποθήκη που θα χρησιμοποιηθεί για μείωση αποθεμάτων -SelectWarehouseForStockIncrease=Επιλέξτε αποθήκη που θα χρησιμοποιηθεί για αύξηση των αποθεμάτων -NoStockAction=No stock action +ConfirmDeleteWarehouse=Είστε σίγουροι ότι θέλετε να διαγράψετε την αποθήκη %s ? +PersonalStock=Προσωπικό απόθεμα %s +ThisWarehouseIsPersonalStock=Αυτή η αποθήκη αποτελεί προσωπική απόθεμα του %s %s +SelectWarehouseForStockDecrease=Επιλογή αποθήκης που θα χρησιμοποιηθεί για μείωση αποθεμάτων +SelectWarehouseForStockIncrease=Επιλογή αποθήκης που θα χρησιμοποιηθεί για αύξηση των αποθεμάτων +NoStockAction=Καμία ενέργεια στα αποθέματα DesiredStock=Επιθυμητό απόθεμα -DesiredStockDesc=Αυτό το ποσό μετοχών θα είναι η τιμή που χρησιμοποιείται για τη συμπλήρωση του αποθέματος με τη λειτουργία αναπλήρωσης. +DesiredStockDesc=Αυτό το ποσό αποθέματος θα είναι η αξία που χρησιμοποιείται για την πλήρωση του αποθέματος ανά δυνατότητα αναπλήρωσης. StockToBuy=Για να παραγγείλετε Replenishment=Αναπλήρωση -ReplenishmentOrders=Αναπλήρωση παραγγελίων +ReplenishmentOrders=Παραγγελίες αναπλήρωσης VirtualDiffersFromPhysical=Ανάλογα με τις επιλογές αύξησης/μείωσης αποθέματος, το φυσικό απόθεμα και το εικονικό απόθεμα (φυσικό απόθεμα + ανοιχτές παραγγελίες) ενδέχεται να διαφέρουν UseRealStockByDefault=Χρησιμοποιήστε πραγματικό απόθεμα, αντί για εικονικό απόθεμα, για τη δυνατότητα αναπλήρωσης ReplenishmentCalculation=Η ποσότητα παραγγελίας θα είναι (επιθυμητή ποσότητα - πραγματικό απόθεμα) αντί για (επιθυμητή ποσότητα - εικονικό απόθεμα) @@ -132,50 +132,50 @@ UsePhysicalStock=Χρησιμοποιήστε το φυσικό απόθεμα CurentSelectionMode=Τρέχουσα μέθοδος επιλογής CurentlyUsingVirtualStock=Εικονικό απόθεμα CurentlyUsingPhysicalStock=Φυσικό απόθεμα -RuleForStockReplenishment=Κανόνας για τα αποθέματα αναπλήρωσης -SelectProductWithNotNullQty=Επιλέξτε τουλάχιστον ένα προϊόν με μη τετραγωνικό μηδενικό και έναν προμηθευτή +RuleForStockReplenishment=Κανόνας για την αναπλήρωση των αποθεμάτων +SelectProductWithNotNullQty=Επιλέξτε τουλάχιστον ένα προϊόν με ποσότητα όχι μηδενική και προμηθευτή AlertOnly= Ειδοποιήσεις μόνο IncludeProductWithUndefinedAlerts = Συμπεριλάβετε επίσης αρνητικό απόθεμα για προϊόντα χωρίς καθορισμένη επιθυμητή ποσότητα, για να τα επαναφέρετε στο 0 -WarehouseForStockDecrease=Η αποθήκη %s να να χρησιμοποιηθεί για μείωση αποθεμάτων +WarehouseForStockDecrease=Η αποθήκη %s θα χρησιμοποιηθεί για μείωση αποθεμάτων WarehouseForStockIncrease=Η αποθήκη %s θα χρησιμοποιηθεί για την αύξηση των αποθεμάτων ForThisWarehouse=Για αυτή την αποθήκη -ReplenishmentStatusDesc=Πρόκειται για μια λίστα με όλα τα προϊόντα με αποθέματα χαμηλότερα από τα επιθυμητά αποθέματα (ή χαμηλότερα από την τιμή προειδοποίησης αν έχει επιλεγεί το πλαίσιο ελέγχου "Μόνο προειδοποίηση"). Χρησιμοποιώντας το πλαίσιο ελέγχου, μπορείτε να δημιουργήσετε εντολές αγοράς για να γεμίσετε τη διαφορά. -ReplenishmentStatusDescPerWarehouse=Εάν θέλετε μια αναπλήρωση με βάση την επιθυμητή ποσότητα που ορίζεται ανά αποθήκη, πρέπει να προσθέσετε ένα φίλτρο στην αποθήκη. -ReplenishmentOrdersDesc=Αυτή είναι μια λίστα όλων των ανοιχτών παραγγελιών αγοράς, συμπεριλαμβανομένων προκαθορισμένων προϊόντων. Μόνο ανοιχτές παραγγελίες με προκαθορισμένα προϊόντα, έτσι ώστε παραγγελίες που μπορεί να επηρεάσουν τα αποθέματα, είναι ορατές εδώ. +ReplenishmentStatusDesc=Αυτή είναι μια λίστα με όλα τα προϊόντα με απόθεμα χαμηλότερο από το επιθυμητό (ή χαμηλότερη από την τιμή ειδοποίησης εάν είναι επιλεγμένο το πλαίσιο ελέγχου "μόνο ειδοποίηση"). Χρησιμοποιώντας το πλαίσιο ελέγχου, μπορείτε να δημιουργήσετε εντολές αγοράς για να συμπληρώσετε τη διαφορά. +ReplenishmentStatusDescPerWarehouse=Εάν θέλετε μια αναπλήρωση με βάση την επιθυμητή ποσότητα που έχει οριστεί ανά αποθήκη, πρέπει να προσθέσετε ένα φίλτρο στην αποθήκη. +ReplenishmentOrdersDesc=Αυτή είναι μια λίστα με όλες τις ανοιχτές εντολές αγοράς συμπεριλαμβανομένων των προκαθορισμένων προϊόντων. Μόνο ανοιχτές παραγγελίες με προκαθορισμένα προϊόντα, επομένως οι παραγγελίες που ενδέχεται να επηρεάσουν τα αποθέματα, είναι ορατές εδώ. Replenishments=Αναπληρώσεις NbOfProductBeforePeriod=Ποσότητα του προϊόντος %s σε απόθεμα πριν από την επιλεγμένη περίοδο (< %s) -NbOfProductAfterPeriod=Ποσότητα του προϊόντος %s σε απόθεμα πριν από την επιλεγμένη περίοδο (> %s) +NbOfProductAfterPeriod=Ποσότητα προϊόντος %s σε απόθεμα μετά την επιλεγμένη περίοδο (> %s) MassMovement=Μαζική μετακίνηση -SelectProductInAndOutWareHouse=Επιλέξτε μια αποθήκη προέλευσης και μια αποθήκη-στόχο, ένα προϊόν και μια ποσότητα και, στη συνέχεια, κάντε κλικ στο "%s". Μόλις γίνει αυτό για όλες τις απαιτούμενες κινήσεις, κάντε κλικ στο "%s". -RecordMovement=Μεταφορά εγγραφών -ReceivingForSameOrder=Αποδείξεις για αυτή την παραγγελία -StockMovementRecorded=Οι κινήσεις των αποθεμάτων καταγράφονται -RuleForStockAvailability=Κανόνες σχετικά με τις απαιτήσεις του αποθέματος -StockMustBeEnoughForInvoice=Το επίπεδο αποθεμάτων πρέπει να είναι αρκετό για να προσθέσει το προϊόν / υπηρεσία στο τιμολόγιο (ο έλεγχος γίνεται με βάση το τρέχον πραγματικό απόθεμα όταν προστίθεται μια γραμμή στο τιμολόγιο, ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή μετοχών) -StockMustBeEnoughForOrder=Το επίπεδο των αποθεμάτων πρέπει να είναι αρκετό για να προσθέσετε το προϊόν / την υπηρεσία στην παραγγελία (ο έλεγχος γίνεται με βάση το τρέχον πραγματικό απόθεμα όταν προσθέτετε μια γραμμή σε παραγγελία ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή μετοχών) -StockMustBeEnoughForShipment= Το επίπεδο αποθεμάτων πρέπει να είναι αρκετό για να προστεθεί το προϊόν / η υπηρεσία στην αποστολή (ο έλεγχος γίνεται σε τρέχον πραγματικό απόθεμα κατά την προσθήκη μιας γραμμής στην αποστολή ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή μετοχών) +SelectProductInAndOutWareHouse=Επιλέξτε μια αποθήκη προέλευσης και μια αποθήκη προορισμού, ένα προϊόν και μια ποσότητα και, στη συνέχεια, κάντε κλικ στο "%s". Μόλις γίνει αυτό για όλες τις απαιτούμενες κινήσεις, κάντε κλικ στο "%s". +RecordMovement=Εγγραφή μεταφοράς +ReceivingForSameOrder=Παραλαβές για αυτήν την παραγγελία +StockMovementRecorded=Καταγράφηκαν κινήσεις μετοχών +RuleForStockAvailability=Κανόνες σχετικά με τις απαιτήσεις στο απόθεμα +StockMustBeEnoughForInvoice=Το επίπεδο αποθεμάτων πρέπει να είναι αρκετό για να προσθέσει το προϊόν / υπηρεσία στο τιμολόγιο (ο έλεγχος γίνεται με βάση το τρέχον πραγματικό απόθεμα όταν προστίθεται μια γραμμή στο τιμολόγιο, ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή αποθέματος) +StockMustBeEnoughForOrder=Το επίπεδο των αποθεμάτων πρέπει να είναι αρκετό για να προσθέσετε το προϊόν / την υπηρεσία στην παραγγελία (ο έλεγχος γίνεται με βάση το τρέχον πραγματικό απόθεμα όταν προσθέτετε μια γραμμή σε παραγγελία ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή αποθέματος) +StockMustBeEnoughForShipment= Το επίπεδο αποθέματος πρέπει να είναι αρκετό για την προσθήκη προϊόντος/υπηρεσίας στην αποστολή (ο έλεγχος πραγματοποιείται στο τρέχον πραγματικό απόθεμα κατά την προσθήκη γραμμής στην αποστολή, ανεξάρτητα από τον κανόνα για την αυτόματη αλλαγή αποθεμάτων) MovementLabel=Ετικέτα λογιστικής κίνησης -TypeMovement=Κατεύθυνση κίνησης -DateMovement=Ημερομηνία μετακίνησης +TypeMovement=Τύπος κίνησης +DateMovement=Ημερομηνία κίνησης InventoryCode=Λογιστική κίνηση ή κωδικός απογραφής IsInPackage=Περιεχόμενα συσκευασίας WarehouseAllowNegativeTransfer=Το απόθεμα μπορεί να είναι αρνητικό -qtyToTranferIsNotEnough=Δεν έχετε αρκετό απόθεμα από την αποθήκη προέλευσης και η ρύθμισή σας δεν επιτρέπει αρνητικά αποθέματα. -qtyToTranferLotIsNotEnough=Δεν έχετε αρκετό απόθεμα, για αυτόν τον αριθμό παρτίδας, από την αποθήκη προέλευσης και οι ρυθμίσεις δεν επιτρέπουν αρνητικά αποθέματα (Ποσότητα για το προϊόν '%s' με παρτίδα '%s' είναι %s στην αποθήκη '%s'). +qtyToTranferIsNotEnough=Δεν έχετε αρκετό απόθεμα στην αποθήκη προέλευσης και η ρύθμισή σας δεν επιτρέπει αρνητικά αποθέματα. +qtyToTranferLotIsNotEnough=Δεν έχετε αρκετό απόθεμα, για αυτόν τον αριθμό παρτίδας, από την αποθήκη προέλευσης και η ρύθμισή σας δεν επιτρέπει αρνητικά αποθέματα (ποσότητα για το προϊόν '%s' με την παρτίδα '%s' είναι %s στην αποθήκη '%s). ShowWarehouse=Εμφάνιση αποθήκης MovementCorrectStock=Διόρθωση αποθέματος για το προϊόν %s -MovementTransferStock=Μετακίνηση του προϊόντος %s σε μια άλλη αποθήκη -InventoryCodeShort=Inv./Mov. κώδικας -NoPendingReceptionOnSupplierOrder=Δεν υπάρχει εκκρεμότητα λήψης λόγω ανοικτής εντολής αγοράς +MovementTransferStock=Μετακίνηση αποθέματος του προϊόντος %s σε μια άλλη αποθήκη +InventoryCodeShort=Κωδικός Αποθεμ./Κιν. +NoPendingReceptionOnSupplierOrder=Δεν υπάρχει αναμενόμενη παραλαβή λόγω ανοικτής εντολής αγοράς ThisSerialAlreadyExistWithDifferentDate=Αυτός ο αριθμός παρτίδας / αύξων αριθμός ( %s ) υπάρχει ήδη αλλά με διαφορετική ημερομηνία κατανάλωσης ή πώλησης (βρέθηκε %s αλλά εισάγετε %s ). -OpenAnyMovement=Άνοιξε (όλες οι κινήσεις) +OpenAnyMovement=Ανοιχτό (όλες οι κινήσεις) OpenInternal=Ανοιχτό (μόνο εσωτερική κίνηση) -UseDispatchStatus=Χρησιμοποιήστε την κατάσταση αποστολής (έγκριση / απόρριψη) για τις σειρές προϊόντων κατά τη λήψη της παραγγελίας αγοράς -OptionMULTIPRICESIsOn=Η επιλογή "διάφορες τιμές ανά τμήμα" είναι ενεργοποιημένη. Σημαίνει ότι ένα προϊόν έχει πολλές τιμές πώλησης, ώστε να μην μπορεί να υπολογιστεί η τιμή πώλησης -ProductStockWarehouseCreated=Το όριο αποθεμάτων για την ειδοποίηση και το επιθυμητό βέλτιστο απόθεμα που δημιουργήθηκε σωστά -ProductStockWarehouseUpdated=Το όριο αποθεμάτων για την ειδοποίηση και το επιθυμητό βέλτιστο απόθεμα ενημερώνονται σωστά -ProductStockWarehouseDeleted=Το όριο αποθεμάτων για προειδοποίηση και το επιθυμητό βέλτιστο απόθεμα διαγράφονται σωστά -AddNewProductStockWarehouse=Ορίστε νέο όριο για την προειδοποίηση και το επιθυμητό βέλτιστο απόθεμα +UseDispatchStatus=Χρησιμοποιήστε μια κατάσταση αποστολής (έγκριση/απόρριψη) για γραμμές προϊόντων κατά την παραλαβή παραγγελίας +OptionMULTIPRICESIsOn=Η επιλογή "πολλές τιμές ανά τμήμα" είναι ενεργοποιημένη. Σημαίνει ότι ένα προϊόν έχει πολλές τιμές πώλησης, επομένως η αξία για την πώληση δεν μπορεί να υπολογιστεί +ProductStockWarehouseCreated=Όριο αποθέματος για ειδοποίηση και το επιθυμητό βέλτιστο απόθεμα δημιουργήθηκαν σωστά +ProductStockWarehouseUpdated=Το όριο αποθέματος για ειδοποίηση και το επιθυμητό βέλτιστο απόθεμα ενημερώθηκαν σωστά +ProductStockWarehouseDeleted=Το όριο αποθέματος για ειδοποίηση και το επιθυμητό βέλτιστο απόθεμα διαγράφηκαν σωστά +AddNewProductStockWarehouse=Ορίστε νέο όριο για ειδοποίηση και επιθυμητό βέλτιστο απόθεμα AddStockLocationLine=Μειώστε την ποσότητα και μετά κάντε κλικ για να χωρίσετε τη γραμμή InventoryDate=Ημερομηνία απογραφής Inventories=Απογραφές @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=Προϊόν με barcode δεν υπάρχει WarehouseId=ID αποθήκης WarehouseRef=Αναφορά Αποθήκης SaveQtyFirst=Αποθηκεύστε πρώτα τις πραγματικές ποσότητες που έχουν απογραφεί, πριν ζητήσετε τη δημιουργία της κίνησης των αποθεμάτων. +ToStart=Έναρξη InventoryStartedShort=Σε εξέλιξη ErrorOnElementsInventory=Η λειτουργία ακυρώθηκε για τον ακόλουθο λόγο: ErrorCantFindCodeInInventory=Δεν είναι δυνατή η εύρεση του παρακάτω κωδικού στο απόθεμα @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Επιτυχία !! Η ποσότητα προσ StockChangeDisabled=Η αλλαγή στο απόθεμα είναι απενεργοποιημένη NoWarehouseDefinedForTerminal=Δεν έχει καθοριστεί αποθήκη για το τερματικό ClearQtys=Καθαρίστε όλες τις ποσότητες +ModuleStockTransferName=Προηγμένη Μεταφορά Αποθεμάτων +ModuleStockTransferDesc=Προηγμένη διαχείριση Μεταφοράς Αποθεμάτων, με δημιουργία φύλλου μεταφοράς +StockTransferNew=Νέα μεταφορά αποθέματος +StockTransferList=Λίστα μεταφοράς αποθεμάτων +ConfirmValidateStockTransfer=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν τη μεταφορά αποθεμάτων με αναφορά %s ; +ConfirmDestock=Μείωση αποθεμάτων με τη μεταφορά %s +ConfirmDestockCancel=Ακύρωση μείωσης αποθεμάτων με τη μεταφορά %s +DestockAllProduct=Μείωση των αποθεμάτων +DestockAllProductCancel=Ακύρωση μείωσης των αποθεμάτων +ConfirmAddStock=Αυξήστε τα αποθέματα με τη μεταφορά %s +ConfirmAddStockCancel=Ακύρωση αύξησης αποθεμάτων με τη μεταφορά %s +AddStockAllProduct=Αύξηση αποθεμάτων +AddStockAllProductCancel=Ακύρωση αύξησης των αποθεμάτων +DatePrevueDepart=Προβλεπόμενη ημερομηνία αναχώρησης +DateReelleDepart=Πραγματική ημερομηνία αναχώρησης +DatePrevueArrivee=Προβλεπόμενη ημερομηνία άφιξης +DateReelleArrivee=Πραγματική ημερομηνία άφιξης +HelpWarehouseStockTransferSource=Εάν οριστεί αυτή η αποθήκη, μόνο η ίδια και οι θυγατρικές της θα είναι διαθέσιμες ως αποθήκες πηγής +HelpWarehouseStockTransferDestination=Εάν οριστεί αυτή η αποθήκη, μόνο η ίδια και οι θυγατρικές της θα είναι διαθέσιμες ως αποθήκες προορισμού +LeadTimeForWarning=Χρόνος παράδοσης πριν από την ειδοποίηση (σε ημέρες) +TypeContact_stocktransfer_internal_STFROM=Αποστολέας μεταφοράς αποθεμάτων +TypeContact_stocktransfer_internal_STDEST=Αποδέκτης μεταφοράς αποθεμάτων +TypeContact_stocktransfer_internal_STRESP=Υπεύθυνος μεταφοράς αποθεμάτων +StockTransferSheet=Φύλλο μεταφοράς αποθεμάτων +StockTransferSheetProforma=Φύλλο Proforma μεταφοράς αποθεμάτων +StockTransferDecrementation=Μείωση των αποθηκών πηγής +StockTransferIncrementation=Αύξηση των αποθηκών προορισμού +StockTransferDecrementationCancel=Ακύρωση μείωσης αποθηκών πηγής +StockTransferIncrementationCancel=Ακύρωση αύξησης αποθηκών προορισμού +StockStransferDecremented=Οι αποθήκες πηγών μειώθηκαν +StockStransferDecrementedCancel=Η μείωση των αποθηκών πηγής ακυρώθηκε +StockStransferIncremented=Κλειστό - Τα αποθέματα μεταφέρθηκαν +StockStransferIncrementedShort=Τα αποθέματα μεταφέρθηκαν +StockStransferIncrementedShortCancel=Ακυρώθηκε η αύξηση των αποθηκών προορισμού +StockTransferNoBatchForProduct=Το προϊόν %s δεν χρησιμοποιεί παρτίδα, διαγράψτε την παρτίδα στη γραμμή και δοκιμάστε ξανά +StockTransferSetup = Διαμόρφωση ενότητας Μεταφοράς Αποθεμάτων +Settings=Ρυθμίσεις +StockTransferSetupPage = Σελίδα διαμόρφωσης ενότητας μεταφοράς αποθεμάτων +StockTransferRightRead=Ανάγνωση μεταφορών αποθεμάτων +StockTransferRightCreateUpdate=Δημιουργία/Ενημέρωση μεταφορών μετοχών +StockTransferRightDelete=Διαγραφή μεταφορών αποθεμάτων +BatchNotFound=Δεν βρέθηκε παρτίδα / σειριακός αριθμός για αυτό το προϊόν diff --git a/htdocs/langs/el_GR/stripe.lang b/htdocs/langs/el_GR/stripe.lang index bb5e5358709..8cd53bcd79e 100644 --- a/htdocs/langs/el_GR/stripe.lang +++ b/htdocs/langs/el_GR/stripe.lang @@ -1,71 +1,72 @@ # Dolibarr language file - Source file is en_US - stripe -StripeSetup=Ρύθμιση μονάδας ταινιών +StripeSetup=Ρύθμιση ενότητας Stripe StripeDesc=Προσφέρετε στους πελάτες σας μια σελίδα διαδικτυακών πληρωμών για πληρωμές με πιστωτικές/χρεωστικές κάρτες μέσω του Stripe . Αυτό μπορεί να χρησιμοποιηθεί για να επιτρέψετε στους πελάτες σας να πραγματοποιούν πληρωμές για συγκεκριμένο σκοπό ή για πληρωμές που σχετίζονται με ένα συγκεκριμένο αντικείμενο του Dolibarr (τιμολόγιο, παραγγελία, ...) StripeOrCBDoPayment=Πληρώστε με πιστωτική κάρτα ή Stripe -FollowingUrlAreAvailableToMakePayments=Μετά από τις διευθύνσεις URL είναι διαθέσιμοι να προσφέρουν μια σελίδα σε έναν πελάτη να προβεί σε πληρωμή σε Dolibarr αντικείμενα -PaymentForm=Έντυπο πληρωμής -WelcomeOnPaymentPage=Καλώς ήλθατε στην ηλεκτρονική υπηρεσία πληρωμών μας +FollowingUrlAreAvailableToMakePayments=Οι ακόλουθες διευθύνσεις URL είναι διαθέσιμες για να προσφέρουν σε έναν πελάτη μια σελίδα για να πραγματοποιήσει μια πληρωμή σε αντικείμενα του Dolibarr +PaymentForm=Φόρμα πληρωμής +WelcomeOnPaymentPage=Καλώς ήλθατε στην υπηρεσία διαδικτυακών πληρωμών μας ThisScreenAllowsYouToPay=Αυτή η οθόνη σας επιτρέπει να κάνετε μια online πληρωμή %s. -ThisIsInformationOnPayment=Πρόκειται για πληροφορίες σχετικά με την πληρωμή να γίνει -ToComplete=Για να ολοκληρώσετε +ThisIsInformationOnPayment=Αυτές είναι πληροφορίες σχετικά με την πληρωμή θέλετε να κάνετε +ToComplete=Προς ολοκλήρωση YourEMail=E-mail για να λάβετε επιβεβαίωση της πληρωμής STRIPE_PAYONLINE_SENDEMAIL=Ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου μετά από απόπειρα πληρωμής (επιτυχία ή αποτυχία) Creditor=Πιστωτής PaymentCode=Κωδικός Πληρωμής -StripeDoPayment=Πληρώστε με λωρίδα -YouWillBeRedirectedOnStripe=Θα μεταφερθείτε στη σελίδα Ασφαλής σελίδα Stripe για να εισαγάγετε τις πληροφορίες της πιστωτικής σας κάρτας -Continue=Επόμενη -ToOfferALinkForOnlinePayment=URL για %s πληρωμής -ToOfferALinkForOnlinePaymentOnOrder=URL για την προσφορά %sμιας online πληρωμής σελίδας, για μια παραγγελία πώλησης -ToOfferALinkForOnlinePaymentOnInvoice=URL για την προσφορά %s μιας online πληρωμής, για ένα τιμολόγιο πελάτη -ToOfferALinkForOnlinePaymentOnContractLine=URL για την προσφορά %s μιας online πληρωμής, για μια γραμμή συμβολαίου -ToOfferALinkForOnlinePaymentOnFreeAmount=URL για την προσφορά%s μας online πληρωμής οποιουδήποτε ποσού χωρίς υπάρχον αντικείμενο -ToOfferALinkForOnlinePaymentOnMemberSubscription=URL για την προσφορά %s μιας απευθείας ηλεκτρονικής πληρωμής, για μια συνδρομή μέλους -ToOfferALinkForOnlinePaymentOnDonation=URL για την προσφορά%s μιας online πληρωμής, για την πληρωμή μιας δωρεάς -YouCanAddTagOnUrl=Μπορείτε επίσης να προσθέσετε την παράμετρο url &tag=value σε ένα από αυτά τα URL (απαιτείται μόνο για την ελεύθερη πληρωμής) για να προσθέσετε το δικό σας σχόλιο ετικέτα πληρωμής. .
Για το URL πληρωμών χωρίς να υπάρχει αντικείμενο, μπορείτε να προσθέσετε την παράμετρο &noidempotency=1 όπως το ίδιο σύνδεσμο με το ίδιο tag μπορεί να χρησιμοποιηθεί πολλές φορές (μερικές πληρωμές μπορούν να οριοθετούνται με όριο πληρωμης το 1 για κάθε διαφορετικό σύνδεσμο χωρίς παραμέτρους) +StripeDoPayment=Πληρώστε με Stripe +YouWillBeRedirectedOnStripe=Θα ανακατευθυνθείτε στην ασφαλή σελίδα Stripe για να εισάγετε τα στοιχεία της πιστωτικής σας κάρτας +Continue=Επόμενο +ToOfferALinkForOnlinePayment=URL για πληρωμή %s +ToOfferALinkForOnlinePaymentOnOrder=URL για να παρέχετε μιας σελίδα online πληρωμής %s για μια παραγγελία πώλησης +ToOfferALinkForOnlinePaymentOnInvoice=URL για να παρέχετε μιας σελίδα online πληρωμής %s για ένα τιμολόγιο πελάτη +ToOfferALinkForOnlinePaymentOnContractLine=URL για να παρέχετε μιας σελίδα online πληρωμής %sγια μια γραμμή συμβολαίου +ToOfferALinkForOnlinePaymentOnFreeAmount=URL για να παρέχετε μιας σελίδα online πληρωμής %s οποιουδήποτε ποσού χωρίς υπάρχον αντικείμενο +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL για να παρέχετε μιας σελίδα online πληρωμής %s για μια συνδρομή μέλους +ToOfferALinkForOnlinePaymentOnDonation=URL για να παρέχετε μιας σελίδα online πληρωμής%s για την πληρωμή μιας δωρεάς +YouCanAddTagOnUrl=Μπορείτε επίσης να προσθέσετε την παράμετρο url &tag= τιμή σε οποιαδήποτε από αυτές τις διευθύνσεις URL (υποχρεωτικό μόνο για πληρωμή που δεν συνδέεται με κάποιο αντικείμενο) για να προσθέσετε το δικό σας σχόλιο tag.
Για τη διεύθυνση URL των πληρωμών χωρίς υπάρχον αντικείμενο, μπορείτε επίσης να προσθέσετε την παράμετρο &noidempotency=1 , ώστε ο ίδιος σύνδεσμος με την ίδια ετικέτα να μπορεί να χρησιμοποιηθεί πολλές φορές (κάποιος τρόπος πληρωμής μπορεί να περιορίσει την πληρωμή σε 1 για κάθε διαφορετικό σύνδεσμο χωρίς αυτή την παραμετρο) SetupStripeToHavePaymentCreatedAutomatically=Ρυθμίστε το Stripe με url %s για να δημιουργηθεί αυτόματα πληρωμή όταν επικυρωθεί από το Stripe. AccountParameter=Παράμετροι λογαριασμού UsageParameter=Παράμετροι χρήσης -InformationToFindParameters=Βοήθεια για να βρείτε %s τα στοιχεία του λογαριασμού σας +InformationToFindParameters=Βοήθεια για να βρείτε τα στοιχεία του λογαριασμού σας %s STRIPE_CGI_URL_V2=Διεύθυνση Url της ενότητας CGI Stripe για πληρωμή -CSSUrlForPaymentForm=Url CSS φύλλο στυλ για το έντυπο πληρωμής -NewStripePaymentReceived=Πληρωμή της νέας ταινίας Stripe -NewStripePaymentFailed=Η πληρωμή του νέου Stripe προσπάθησε αλλά απέτυχε +CSSUrlForPaymentForm=URL CSS style sheet για φόρμα πληρωμής +NewStripePaymentReceived=Νέα πληρωμή Stripe ελήφθη +NewStripePaymentFailed=Νέα πληρωμή Stripe απέτυχε FailedToChargeCard=Αποτυχία χρέωσης κάρτας -STRIPE_TEST_SECRET_KEY=Μυστικό κλειδί δοκιμής -STRIPE_TEST_PUBLISHABLE_KEY=Κλειδί ελέγχου δοκιμαστικής έκδοσης -STRIPE_TEST_WEBHOOK_KEY=Πλήκτρο δοκιμής Webhook -STRIPE_LIVE_SECRET_KEY=Μυστικό ζωντανό κλειδί -STRIPE_LIVE_PUBLISHABLE_KEY=Δημοσιεύσιμο ζωντανό κλειδί -STRIPE_LIVE_WEBHOOK_KEY=Ζωντανό κλειδί Webhook -ONLINE_PAYMENT_WAREHOUSE=Το απόθεμα που χρησιμοποιείται για μείωση μετοχών όταν γίνεται η ηλεκτρονική πληρωμή
(TODO Όταν η επιλογή για μείωση του αποθέματος πραγματοποιείται με μια ενέργεια στο τιμολόγιο και η ηλεκτρονική πληρωμή παράγει το τιμολόγιο;) -StripeLiveEnabled=Η λειτουργία Stripe ζωντανά είναι ενεργοποιημένη (διαφορετικά η λειτουργία test / sandbox) +STRIPE_TEST_SECRET_KEY=Δοκιμή μυστικού κλειδιού +STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key +STRIPE_TEST_WEBHOOK_KEY=Webhook test key +STRIPE_LIVE_SECRET_KEY=Secret live key +STRIPE_LIVE_PUBLISHABLE_KEY=Publishable live key +STRIPE_LIVE_WEBHOOK_KEY=Webhook live key +ONLINE_PAYMENT_WAREHOUSE=Απόθεμα προς χρήση για μείωση αποθεμάτων όταν πραγματοποιείται η ηλεκτρονική πληρωμή
(TODO Όταν η επιλογή μείωσης αποθεμάτων γίνεται σε μια ενέργεια στο τιμολόγιο και η ηλεκτρονική πληρωμή δημιουργεί από μόνη της το τιμολόγιο;) +StripeLiveEnabled=Η λειτουργία Stripe live είναι ενεργοποιημένη (διαφορετικά η λειτουργία test / sandbox) StripeImportPayment=Εισαγωγή πληρωμών Stripe -ExampleOfTestCreditCard=Παράδειγμα πιστωτικής κάρτας για δοκιμή: %s => έγκυρο, %s => σφάλμα CVC, %s => έληξε, %s => αποτυχία χρέωσης -StripeGateways=Πύλες ταινιών +ExampleOfTestCreditCard=Παράδειγμα πιστωτικής κάρτας για δοκιμή: %s => έγκυρο, %s => σφάλμα CVC, %s => έληξε, %s => η χρέωση αποτυγχάνει +StripeGateways=Stripe gateways OAUTH_STRIPE_TEST_ID=Το αναγνωριστικό πελάτη Stripe Connect (ca _...) OAUTH_STRIPE_LIVE_ID=Το αναγνωριστικό πελάτη Stripe Connect (ca _...) -BankAccountForBankTransfer=Τραπεζικός λογαριασμός για πληρωμές αμοιβαίων κεφαλαίων +BankAccountForBankTransfer=Τραπεζικός λογαριασμός για πληρωμές StripeAccount=Λογαριασμός Stripe StripeChargeList=Λίστα χρεώσεων Stripe StripeTransactionList=Κατάλογος των συναλλαγών Stripe -StripeCustomerId=Στοιχείο id του πελάτη -StripePaymentModes=Λειτουργίες πληρωμής με λωρίδες +StripeCustomerId=Αναγνωριστικό πελάτη Sripe +StripePaymentModes=Λειτουργίες πληρωμής Stripe LocalID=Τοπικό αναγνωριστικό -StripeID=Αναγνωριστικό ταινίας -NameOnCard=όνομα στην κάρτα +StripeID=Αναγνωριστικό Stripe +NameOnCard=Ονοματεπώνυμο κατόχου κάρτας CardNumber=Αριθμός κάρτας ExpiryDate=Ημερομηνία λήξης -CVN=CVN +CVN=CVV DeleteACard=Διαγραφή κάρτας -ConfirmDeleteCard=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την πιστωτική ή χρεωστική κάρτα; +ConfirmDeleteCard=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την πιστωτική ή χρεωστική κάρτα; CreateCustomerOnStripe=Δημιουργία πελάτη στο Stripe CreateCardOnStripe=Δημιουργία κάρτας στο Stripe ShowInStripe=Εμφάνιση στο Stripe -StripeUserAccountForActions=Λογαριασμός χρήστη που θα χρησιμοποιηθεί για την ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου ορισμένων συμβάντων Stripe (πληρωμές Stripe) +StripeUserAccountForActions=Λογαριασμός χρήστη που θα χρησιμοποιηθεί για την ειδοποίηση μέσω ηλεκτρονικού ταχυδρομείου ορισμένων ενεργειών Stripe (πληρωμές Stripe) StripePayoutList=Λίστα των πληρωμών Stripe -ToOfferALinkForTestWebhook=Σύνδεση με τη ρύθμιση Stripe WebHook για κλήση του IPN (λειτουργία δοκιμής) -ToOfferALinkForLiveWebhook=Σύνδεση στη ρύθμιση Stripe WebHook για κλήση του IPN (ζωντανή λειτουργία) +ToOfferALinkForTestWebhook=Σύνδεσμος για τη ρύθμιση του Stripe WebHook για κλήση του IPN (δοκιμαστική λειτουργία) +ToOfferALinkForLiveWebhook=Σύνδεσμος για τη ρύθμιση του Stripe WebHook για κλήση του IPN (κανονική λειτουργία) PaymentWillBeRecordedForNextPeriod=Η πληρωμή θα καταγραφεί για την επόμενη περίοδο. ClickHereToTryAgain=Κάντε κλικ εδώ για να δοκιμάσετε ξανά ... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Λόγω των κανόνων ισχυρού ελέγχου ταυτότητας πελατών, η δημιουργία κάρτας πρέπει να γίνει από την υποστηριξη του Stripe. Μπορείτε να κάνετε κλικ εδώ για να ενεργοποιήσετε την εγγραφή πελατών Stripe: %s +CreationOfPaymentModeMustBeDoneFromStripeInterface=Λόγω των κανόνων ισχυρού ελέγχου ταυτότητας πελατών, η δημιουργία κάρτας πρέπει να γίνει από την Stripe. Μπορείτε να κάνετε κλικ εδώ για να ενεργοποιήσετε την εγγραφή πελατών Stripe: %s +TERMINAL_LOCATION=Τοποθεσία (διεύθυνση) για τερματικά diff --git a/htdocs/langs/el_GR/supplier_proposal.lang b/htdocs/langs/el_GR/supplier_proposal.lang index 20698923b63..84ef2b03e77 100644 --- a/htdocs/langs/el_GR/supplier_proposal.lang +++ b/htdocs/langs/el_GR/supplier_proposal.lang @@ -1,58 +1,58 @@ # Dolibarr language file - Source file is en_US - supplier_proposal -SupplierProposal=Προτάσεις εμπορικών πωλητών +SupplierProposal=Προσφορές προμηθευτών supplier_proposalDESC=Διαχειριστείτε τα αιτήματα των τιμών προς τους προμηθευτές -SupplierProposalNew=Νέα αίτηση τιμής -CommRequest=Αίτηση τιμής +SupplierProposalNew=Νέο αίτημα τιμής +CommRequest=Αίτημα τιμής CommRequests=Αιτήματα τιμών SearchRequest=Αναζήτηση αιτήματος -DraftRequests=Πρόχειρα αιτήματα -SupplierProposalsDraft=Σχέδια προτάσεων πωλητών -LastModifiedRequests=Τελευταίες %s τροποποιημένες αιτήσεις τιμών -RequestsOpened=Ανοιχτές αιτήσεις τιμών -SupplierProposalArea=Τομέας προτάσεων πωλητών -SupplierProposalShort=Πρόταση πωλητή -SupplierProposals=Προτάσεις πωλητών -SupplierProposalsShort=Προτάσεις πωλητών -AskPrice=Αίτηση τιμής +DraftRequests=Προσχέδια αιτημάτων +SupplierProposalsDraft=Προσχέδια προσφορών προμηθευτών +LastModifiedRequests=Τελευταία %s τροποποιημένα αιτήματα τιμών +RequestsOpened=Ανοιχτά αιτήματα τιμών +SupplierProposalArea=Τομέας προσφορών προμηθευτών +SupplierProposalShort=Προσφορά προμηθευτή +SupplierProposals=Προσφορές προμηθευτών +SupplierProposalsShort=Προσφορές προμηθευτών +AskPrice=Αίτημα τιμής NewAskPrice=Νέα αίτηση τιμής ShowSupplierProposal=Προβολή αίτησης τιμής AddSupplierProposal=Δημιουργία μίας αίτησης τιμής SupplierProposalRefFourn=Αναφορά προμηθευτή SupplierProposalDate=Ημερομηνία παράδοσης -SupplierProposalRefFournNotice=Πριν κλείσετε το "Αποδεκτό", σκεφτείτε να κατανοήσετε τις αναφορές των προμηθευτών. +SupplierProposalRefFournNotice=Πριν κλείσετε σε "Αποδεκτή", μελετήστε τις αναφορές προμηθευτών. ConfirmValidateAsk=Είστε σίγουροι ότι θέλετε να επικυρώσετε την αίτηση τιμής στο όνομα %s ; DeleteAsk=Διαγραφή αίτησης ValidateAsk=Επικύρωση αίτησης -SupplierProposalStatusDraft=Πρόχειρο (Χρειάζεται επικύρωση) +SupplierProposalStatusDraft=Προσχέδιο (Χρειάζεται επικύρωση) SupplierProposalStatusValidated=Επικυρωμένη (η αίτηση είναι ανοικτή) -SupplierProposalStatusClosed=Κλειστό +SupplierProposalStatusClosed=Κλειστή SupplierProposalStatusSigned=Αποδεκτή SupplierProposalStatusNotSigned=Απορρίφθηκε -SupplierProposalStatusDraftShort=Πρόχειρο +SupplierProposalStatusDraftShort=Προσχέδιο SupplierProposalStatusValidatedShort=Επικυρώθηκε -SupplierProposalStatusClosedShort=Κλειστό +SupplierProposalStatusClosedShort=Κλειστή SupplierProposalStatusSignedShort=Αποδεκτή -SupplierProposalStatusNotSignedShort=Αρνήθηκε -CopyAskFrom=Δημιουργήστε ένα αίτημα τιμής, αντιγράφοντας ένα υπάρχον αίτημα +SupplierProposalStatusNotSignedShort=Απορρίφθηκε +CopyAskFrom=Δημιουργήστε ένα αίτημα τιμής αντιγράφοντας ένα υπάρχον αίτημα CreateEmptyAsk=Δημιουργία κενής αίτησης τιμής -ConfirmCloneAsk=Είστε σίγουροι πως θέλετε να κλωνοποιήσετε την αίτηση τιμής %s; -ConfirmReOpenAsk=Είστε σίγουροι πως θέλετε να ξαναανοίξετε την αίτηση τιμής %s; +ConfirmCloneAsk=Είστε σίγουροι πως θέλετε να αντιγράψετε την αίτηση τιμής %s; +ConfirmReOpenAsk=Είστε βέβαιοι ότι θέλετε να ανοίξετε πάλι την αίτηση τιμής %s ; SendAskByMail=Αποστολή αίτησης τιμής με email -SendAskRef=Αποστέλεται η αίτηση τιμής %s -SupplierProposalCard=Ζητήστε κάρτα +SendAskRef=Αποστολή της αίτησης τιμής %s +SupplierProposalCard=Καρτέλα αιτήσεων ConfirmDeleteAsk=Είστε σίγουροι πως θέλετε να διαγράψετε την αίτηση τιμής %s; -ActionsOnSupplierProposal=Εκδηλώσεις σχετικά με την αίτηση τιμής +ActionsOnSupplierProposal=Ενέργειες κατόπιν αιτήσεως τιμής DocModelAuroreDescription=Ένα πλήρες μοντέλο αίτησης τιμής (logo. ..) CommercialAsk=Αίτηση τιμής -DefaultModelSupplierProposalCreate=Δημιουργία προεπιλεγμένων μοντέλων +DefaultModelSupplierProposalCreate=Δημιουργία προεπιλεγμένου μοντέλου DefaultModelSupplierProposalToBill=Προκαθορισμένο πρότυπο κατά το κλείσιμο αιτήματος τιμής (αποδεκτό) DefaultModelSupplierProposalClosed=Προκαθορισμένο πρότυπο κατά το κλείσιμο αίτησης τιμής (απορρίφθηκε) -ListOfSupplierProposals=Λίστα αιτημάτων για προτάσεις πωλητών -ListSupplierProposalsAssociatedProject=Κατάλογος προτάσεων πωλητών που σχετίζονται με το έργο -SupplierProposalsToClose=Προτάσεις πωλητών να κλείσουν -SupplierProposalsToProcess=Προτάσεις πωλητών για επεξεργασία -LastSupplierProposals=Τελευταία αιτήματα τιμών %s +ListOfSupplierProposals=Λίστα αιτημάτων προσφορών προμηθευτή +ListSupplierProposalsAssociatedProject=Λίστα προσφορών προμηθευτών που σχετίζονται με το έργο +SupplierProposalsToClose=Προσφορές προμηθευτών προς κλείσιμο +SupplierProposalsToProcess=Προσφορές προμηθευτών προς επεξεργασία +LastSupplierProposals=Τελευταίες %s αιτήσεις τιμών AllPriceRequests=Όλες οι αιτήσεις -TypeContact_supplier_proposal_external_SHIPPING=Στοιχεία επικοινωνίας προμηθευτή για παράδοση -TypeContact_supplier_proposal_external_BILLING=Στοιχεία επικοινωνίας προμηθευτή για τιμολόγηση -TypeContact_supplier_proposal_external_SERVICE=Εκπρόσωπος που παρακολουθεί την Προσφορά +TypeContact_supplier_proposal_external_SHIPPING=Επαφή προμηθευτή για παράδοση +TypeContact_supplier_proposal_external_BILLING=Επαφή προμηθευτή για τιμολόγηση +TypeContact_supplier_proposal_external_SERVICE=Εκπρόσωπος επικοινωνίας μετά την προσφορά diff --git a/htdocs/langs/el_GR/suppliers.lang b/htdocs/langs/el_GR/suppliers.lang index cb3d6df65bc..14de098199a 100644 --- a/htdocs/langs/el_GR/suppliers.lang +++ b/htdocs/langs/el_GR/suppliers.lang @@ -5,7 +5,7 @@ SupplierInvoices=Τιμολόγια προμηθευτή ShowSupplierInvoice=Εμφάνιση τιμολογίου προμηθευτή NewSupplier=Νέος προμηθευτής History=Ιστορικό -ListOfSuppliers=Κατάλογος προμηθευτών +ListOfSuppliers=Λίστα προμηθευτών ShowSupplier=Εμφάνιση προμηθευτή OrderDate=Ημερομηνία παραγγελίας BuyingPriceMin=Καλύτερη τιμή αγοράς @@ -19,7 +19,7 @@ SupplierPrices=Τιμές προμηθευτών ReferenceSupplierIsAlreadyAssociatedWithAProduct=Η συγκεκριμένη αναφορά αυτού του προμηθευτή έχει ήδη συσχετιστεί με ένα προϊόν: %s NoRecordedSuppliers=Δεν έχει καταγραφεί προμηθευτής SupplierPayment=Πληρωμή προμηθευτή -SuppliersArea=Τομεας προμηθευτή +SuppliersArea=Τομέας προμηθευτή RefSupplierShort=Κωδ. Προμηθευτή Availability=Διαθεσιμότητα ExportDataset_fournisseur_1=Τιμολόγια προμηθευτών και λεπτομέρειες τιμολογίων @@ -28,13 +28,13 @@ ExportDataset_fournisseur_3=Παραγγελίες αγοράς και λεπτ ApproveThisOrder=Έγκριση της παραγγελίας ConfirmApproveThisOrder=Είστε σίγουροι πως θέλετε να επικυρώσετε την παραγγελία %s; DenyingThisOrder=Απόρριψη παραγγελίας -ConfirmDenyingThisOrder=Είστε σίγουροι πως θέλετε να αρνηθείτε αυτή την παραγγελία %s; +ConfirmDenyingThisOrder=Είστε σίγουροι πως θέλετε να απορρίψετε αυτή την παραγγελία %s; ConfirmCancelThisOrder=Είστε σίγουροι πως θέλετε να ακυρώσετε αυτή την παραγγελία %s; AddSupplierOrder=Δημιουργία εντολής αγοράς AddSupplierInvoice=Δημιουργία τιμολογίου προμηθευτή -ListOfSupplierProductForSupplier=Κατάλογος προϊόντων και τιμών για τον προμηθευτή %s -SentToSuppliers=Απεσταλμένο στους προμηθευτές -ListOfSupplierOrders=Κατάλογος παραγγελιών αγοράς +ListOfSupplierProductForSupplier=Λίστα προϊόντων και τιμών για τον προμηθευτή %s +SentToSuppliers=Απεσταλμένες στους προμηθευτές +ListOfSupplierOrders=Λίστα παραγγελιών αγοράς MenuOrdersSupplierToBill=Παραγγελίες αγοράς προς τιμολόγηση NbDaysToDelivery=Καθυστέρηση παράδοσης (ημέρες) DescNbDaysToDelivery=Η μεγαλύτερη καθυστέρηση παράδοσης των προϊόντων από αυτήν την παραγγελία diff --git a/htdocs/langs/el_GR/ticket.lang b/htdocs/langs/el_GR/ticket.lang index c1bf370da4f..46cca1c2e7e 100644 --- a/htdocs/langs/el_GR/ticket.lang +++ b/htdocs/langs/el_GR/ticket.lang @@ -19,7 +19,7 @@ # Module56000Name=Tickets -Module56000Desc=Σύστημα ticket για διαχείριση θεμάτων ή αιτήσεων +Module56000Desc=Σύστημα ticket για υποστήριξη αιτημάτων ή προβλημάτων Permission56001=Δείτε τα tickets Permission56002=Τροποποίηση tickets @@ -29,7 +29,7 @@ Permission56005=Δείτε τα tickets όλων των τρίτων (δεν ι TicketDictType=Ticket - Τύποι TicketDictCategory=Ticket - Ομάδες -TicketDictSeverity=Ticket - Σημαντικότητα +TicketDictSeverity=Ticket - Κρισιμότητα TicketDictResolution=Ticket - Επίλυση TicketTypeShortCOM=Εμπορική ερώτηση @@ -41,7 +41,7 @@ TicketTypeShortPROJET=Έργο TicketTypeShortOTHER=Άλλο TicketSeverityShortLOW=Χαμηλή -TicketSeverityShortNORMAL=Κανονικός +TicketSeverityShortNORMAL=Κανονική TicketSeverityShortHIGH=Υψηλή TicketSeverityShortBLOCKING=Κρίσιμο, Blocking @@ -50,7 +50,7 @@ TicketCategoryShortOTHER=Άλλο ErrorBadEmailAddress=Το πεδίο '%s' είναι εσφαλμένο MenuTicketMyAssign=Τα tickets μου MenuTicketMyAssignNonClosed=Τα ανοιχτά tickets μου -MenuListNonClosed=Ανοίξτε ticket +MenuListNonClosed=Ανοιχτά tickets TypeContact_ticket_internal_CONTRIBUTOR=Συνεισφέρων TypeContact_ticket_internal_SUPPORTTEC=Χρήστης σε ανάθεση @@ -89,96 +89,96 @@ TicketSetupPage= TicketPublicAccess=Μια δημόσια διεπαφή που δεν απαιτεί αναγνώριση είναι διαθέσιμη στην παρακάτω διεύθυνση URL TicketSetupDictionaries=Ο τύπος του ticket, ο βαθμός σοβαρότητας και οι αναλυτικοί κωδικοί ρυθμίζονται από λεξικά TicketParamModule=Ρύθμιση μεταβλητής μονάδας -TicketParamMail=Ρύθμιση ηλεκτρονικού ταχυδρομείου -TicketEmailNotificationFrom=E-mail αποστολέα για απαντήσεις εισιτηρίων -TicketEmailNotificationFromHelp=E-mail αποστολέα για απαντήσεις εισιτηρίων που στάλθηκαν από το Dolibarr -TicketEmailNotificationTo=Ειδοποίηση για τη δημιουργία εισιτηρίου σε αυτήν τη διεύθυνση e-mail -TicketEmailNotificationToHelp=Εάν υπάρχει, αυτή η διεύθυνση e-mail θα ειδοποιηθεί για τη δημιουργία εισιτηρίου +TicketParamMail=Ρύθμιση email +TicketEmailNotificationFrom=E-mail αποστολέα για ειδοποίηση σχετικά με τις απαντήσεις +TicketEmailNotificationFromHelp=E-mail αποστολέα που θα χρησιμοποιηθεί για την αποστολή του email ειδοποίησης όταν μια απάντηση παρέχεται από την υποστήριξη. Για παράδειγμα noreply@example.com +TicketEmailNotificationTo=Ειδοποίηση για τη δημιουργία ticket σε αυτήν τη διεύθυνση e-mail +TicketEmailNotificationToHelp=Εάν υπάρχει, αυτή η διεύθυνση e-mail θα ειδοποιηθεί για τη δημιουργία ticket TicketNewEmailBodyLabel=Μήνυμα κειμένου που αποστέλλεται μετά τη δημιουργία ενός ticket TicketNewEmailBodyHelp=Το κείμενο που καθορίζεται εδώ θα εισαχθεί στο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει τη δημιουργία νέου ticket από το δημόσιο περιβάλλον. Οι πληροφορίες σχετικά με τη διαβούλευση με το ticket προστίθενται αυτόματα. TicketParamPublicInterface=Ρύθμιση δημόσιας διεπαφής -TicketsEmailMustExist=Απαιτήστε μια υπάρχουσα διεύθυνση ηλεκτρονικού ταχυδρομείου για να δημιουργήσετε ένα ticket -TicketsEmailMustExistHelp=Στη δημόσια διεπαφή, η διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει ήδη να συμπληρωθεί στη βάση δεδομένων για να δημιουργηθεί ένα νέο ticket. +TicketsEmailMustExist=Απαιτείται μια υπάρχουσα διεύθυνση email για να δημιουργήσετε ένα εισιτήριο +TicketsEmailMustExistHelp=Στη δημόσια διεπαφή, η διεύθυνση email θα πρέπει να έχει ήδη συμπληρωθεί στη βάση δεδομένων για να δημιουργηθεί ένα νέο ticket. TicketCreateThirdPartyWithContactIfNotExist=Ζητήστε όνομα και όνομα εταιρείας για άγνωστα email. TicketCreateThirdPartyWithContactIfNotExistHelp=Ελέγξτε εάν υπάρχει τρίτο μέρος ή επαφή για το email που καταχωρίσατε. Εάν όχι, ζητήστε ένα όνομα και ένα όνομα εταιρείας για να δημιουργήσετε ένα τρίτο μέρος με επαφή. PublicInterface=Δημόσια διεπαφή -TicketUrlPublicInterfaceLabelAdmin=Εναλλακτική διεύθυνση URL για δημόσια διασύνδεση +TicketUrlPublicInterfaceLabelAdmin=Εναλλακτική διεύθυνση URL για δημόσια διεπαφή TicketUrlPublicInterfaceHelpAdmin=Είναι δυνατόν να ορίσετε ένα ψευδώνυμο στον διακομιστή ιστού και έτσι να διαθέσετε τη δημόσια διασύνδεση με μια άλλη διεύθυνση URL (ο διακομιστής πρέπει να ενεργεί ως διακομιστής μεσολάβησης σε αυτήν τη νέα διεύθυνση URL) -TicketPublicInterfaceTextHomeLabelAdmin=Καλωσόρισμα κειμένου της δημόσιας διασύνδεσης +TicketPublicInterfaceTextHomeLabelAdmin=Κείμενο καλωσορίσματος της δημόσιας διεπαφής TicketPublicInterfaceTextHome=Μπορείτε να δημιουργήσετε ένα ticket υποστήριξης ή να προβάλετε ένα υπάρχον από το αναγνωριστικό παρακολούθησης ticket. -TicketPublicInterfaceTextHomeHelpAdmin=Το κείμενο που ορίζεται εδώ θα εμφανιστεί στην αρχική σελίδα της δημόσιας διασύνδεσης. +TicketPublicInterfaceTextHomeHelpAdmin=Το κείμενο που ορίζεται εδώ θα εμφανιστεί στην αρχική σελίδα της δημόσιας διεπαφής. TicketPublicInterfaceTopicLabelAdmin=Τίτλος διεπαφής -TicketPublicInterfaceTopicHelp=Αυτό το κείμενο θα εμφανιστεί ως ο τίτλος της δημόσιας διασύνδεσης. +TicketPublicInterfaceTopicHelp=Αυτό το κείμενο θα εμφανιστεί ως τίτλος της δημόσιας διεπαφής. TicketPublicInterfaceTextHelpMessageLabelAdmin=Βοήθεια κειμένου στην καταχώρηση μηνύματος TicketPublicInterfaceTextHelpMessageHelpAdmin=Αυτό το κείμενο θα εμφανιστεί πάνω από την περιοχή εισαγωγής μηνυμάτων του χρήστη. ExtraFieldsTicket=Επιπλέον χαρακτηριστικά TicketCkEditorEmailNotActivated=Ο επεξεργαστής HTML δεν είναι ενεργοποιημένος. Καταχωρίστε το περιεχόμενο FCKEDITOR_ENABLE_MAIL σε 1 για να το αποκτήσετε. TicketsDisableEmail=Μην αποστέλλετε μηνύματα ηλεκτρονικού ταχυδρομείου για τη δημιουργία εισιτηρίων ή την εγγραφή μηνυμάτων -TicketsDisableEmailHelp=Από προεπιλογή, αποστέλλονται μηνύματα ηλεκτρονικού ταχυδρομείου όταν δημιουργούνται νέα εισιτήρια ή μηνύματα. Ενεργοποιήστε αυτήν την επιλογή για να απενεργοποιήσετε όλες τις * ειδοποιήσεις ηλεκτρονικού ταχυδρομείου -TicketsLogEnableEmail=Ενεργοποιήστε το αρχείο καταγραφής μέσω ηλεκτρονικού ταχυδρομείου -TicketsLogEnableEmailHelp=Σε κάθε αλλαγή, θα σταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου ** σε κάθε επαφή ** που σχετίζεται με το εισιτήριο. -TicketParams=Params +TicketsDisableEmailHelp=Από προεπιλογή, αποστέλλονται μηνύματα ηλεκτρονικού ταχυδρομείου όταν δημιουργούνται νέα εισιτήρια ή μηνύματα. Ενεργοποιήστε αυτήν την επιλογή για να απενεργοποιήσετε *όλες τις * ειδοποιήσεις ηλεκτρονικού ταχυδρομείου +TicketsLogEnableEmail=Ενεργοποίηση καταγραφής μέσω email +TicketsLogEnableEmailHelp=Σε κάθε αλλαγή, θα σταλεί ένα μήνυμα ηλεκτρονικού ταχυδρομείου ** σε κάθε επαφή ** που σχετίζεται με το ticket. +TicketParams=Παράμετροι TicketsShowModuleLogo=Εμφανίστε το λογότυπο της ενότητας στη δημόσια διεπαφή TicketsShowModuleLogoHelp=Ενεργοποιήστε αυτήν την επιλογή για να αποκρύψετε τη λειτουργική μονάδα λογότυπου στις σελίδες της δημόσιας διασύνδεσης -TicketsShowCompanyLogo=Εμφανίστε το λογότυπο της εταιρείας στο δημόσιο περιβάλλον -TicketsShowCompanyLogoHelp=Ενεργοποιήστε αυτήν την επιλογή για να αποκρύψετε το λογότυπο της κύριας εταιρείας στις σελίδες της δημόσιας διασύνδεσης +TicketsShowCompanyLogo=Εμφανίστε το λογότυπο της εταιρείας στη δημόσια διεπαφή +TicketsShowCompanyLogoHelp=Ενεργοποιήστε αυτήν την επιλογή για να αποκρύψετε το λογότυπο της κύριας εταιρείας στις σελίδες της δημόσιας διεπαφής TicketsEmailAlsoSendToMainAddress=Στείλτε επίσης μια ειδοποίηση στην κύρια διεύθυνση email TicketsEmailAlsoSendToMainAddressHelp=Ενεργοποιήστε αυτήν την επιλογή για να στείλετε επίσης ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση που ορίστηκε στη ρύθμιση "%s" (δείτε την καρτέλα "%s") TicketsLimitViewAssignedOnly=Περιορίστε την εμφάνιση σε tickets που έχουν εκχωρηθεί στον τρέχοντα χρήστη (δεν έχει εφαρμογή για εξωτερικούς χρήστες, πάντα περιορίζονται στο τρίτο μέρος από το οποίο εξαρτώνται) TicketsLimitViewAssignedOnlyHelp=Μόνο tickets που έχουν εκχωρηθεί στον τρέχοντα χρήστη θα είναι ορατά. Δεν ισχύει για χρήστη με δικαιώματα διαχείρισης tickets. -TicketsActivatePublicInterface=Ενεργοποιήστε τη δημόσια διεπαφή +TicketsActivatePublicInterface=Ενεργοποίηση δημόσιας διεπαφής TicketsActivatePublicInterfaceHelp=Η δημόσια διεπαφή επιτρέπει στους επισκέπτες να δημιουργούν tickets. TicketsAutoAssignTicket=Ορίστε αυτόματα τον χρήστη που δημιούργησε το ticket TicketsAutoAssignTicketHelp=Κατά τη δημιουργία ενός ticket, ο χρήστης μπορεί να αντιστοιχιστεί αυτόματα στο ticket. -TicketNumberingModules=Μονάδα αρίθμησης tickets -TicketsModelModule=Πρότυπο έγγραφο για tickets -TicketNotifyTiersAtCreation=Ειδοποιήστε τρίτο μέρος στη δημιουργία -TicketsDisableCustomerEmail=Πάντα να απενεργοποιείτε τα μηνύματα ηλεκτρονικού ταχυδρομείου όταν δημιουργείται ένα ticket από τη δημόσια διασύνδεση -TicketsPublicNotificationNewMessage=Στείλτε email όταν ένα νέο μήνυμα/σχόλιο προστεθεί σε ένα εισιτήριο -TicketsPublicNotificationNewMessageHelp=Αποστολή email όταν προστίθεται νέο μήνυμα από τη δημόσια διεπαφή (στον εκχωρημένο χρήστη ή το email ειδοποιήσεων προς (ενημέρωση) ή/και το email ειδοποιήσεων στο) -TicketPublicNotificationNewMessageDefaultEmail=email ειδοποιήσεων(ενημέρωση) -TicketPublicNotificationNewMessageDefaultEmailHelp=Στείλτε ένα μήνυμα ηλεκτρονικού ταχυδρομείου σε αυτήν τη διεύθυνση για ειδοποιήσεις κάθε νέο μηνύματος, εάν στο εισιτήριο δεν έχει εκχωρηθεί χρήστης ή εάν ο χρήστης δεν έχει κάποιο γνωστό email. -TicketsAutoReadTicket=Αυτόματη επισήμανση του εισιτηρίου ως αναγνωσμένου (όταν δημιουργείται από την υποστήριξη) -TicketsAutoReadTicketHelp=Αυτόματη επισήμανση του εισιτηρίου ως αναγνωσμένου όταν έχει δημιουργηθεί από την υποστήριξη. Όταν το εισιτήριο δημιουργείται από τη δημόσια διεπαφή, το εισιτήριο παραμένει στην κατάσταση "Μη αναγνωσμένο". -TicketsDelayBeforeFirstAnswer=Ένα νέο εισιτήριο θα πρέπει να λάβει μια πρώτη απάντηση πριν από (σε ώρες): -TicketsDelayBeforeFirstAnswerHelp=Εάν ένα νέο εισιτήριο δεν έχει λάβει απάντηση μετά από αυτό το χρονικό διάστημα (σε ώρες), θα εμφανιστεί ένα εικονίδιο προειδοποίησης σημαντικού γεγονότος στην προβολή λίστας. -TicketsDelayBetweenAnswers=Ένα εισιτήριο που δεν έχει επιλυθεί δεν πρέπει να είναι ανενεργό κατά τη διάρκεια (ώρες): -TicketsDelayBetweenAnswersHelp=Εάν ένα εισιτήριο που δεν έχει επιλυθεί που έχει ήδη λάβει απάντηση δεν έχει περαιτέρω αλληλεπίδραση μετά από αυτήν τη χρονική περίοδο (σε ώρες), θα εμφανιστεί ένα εικονίδιο προειδοποίησης στην προβολή λίστας. -TicketsAutoNotifyClose=Αυτόματη ειδοποίηση του τρίτου μέρους κατά το κλείσιμο ενός εισιτηρίου -TicketsAutoNotifyCloseHelp=Όταν κλείνετε ένα εισιτήριο, θα σας προταθεί να στείλετε ένα μήνυμα σε μία από τις επαφές τρίτων. Κατά το μαζικό κλείσιμο, θα σταλεί ένα μήνυμα σε μια επαφή του τρίτου μέρους που είναι συνδεδεμένο με το εισιτήριο. -TicketWrongContact=Η παρεχόμενη επαφή δεν αποτελεί μέρος των επαφών του τρέχοντος εισιτηρίου. Το email δεν στάλθηκε. -TicketChooseProductCategory=Κατηγορία προϊόντος για υποστήριξη εισιτηρίων -TicketChooseProductCategoryHelp=Επιλέξτε την κατηγορία προϊόντων υποστήριξης εισιτηρίων. Αυτό θα χρησιμοποιηθεί για την αυτόματη σύνδεση ενός συμβολαίου με ένα εισιτήριο. +TicketNumberingModules=Ενότητα αρίθμησης εισιτηρίων +TicketsModelModule=Πρότυπα εγγράφων για tickets +TicketNotifyTiersAtCreation=Ειδοποιήστε το τρίτο μέρος κατά τη δημιουργία +TicketsDisableCustomerEmail=Πάντα να απενεργοποιείτε τα email όταν δημιουργείται ένα εισιτήριο από δημόσια διεπαφή +TicketsPublicNotificationNewMessage=Στείλτε email όταν ένα νέο μήνυμα/σχόλιο προστεθεί σε ένα ticket +TicketsPublicNotificationNewMessageHelp=Στείλτε email όταν προστίθεται νέο μήνυμα από τη δημόσια διεπαφή (στον εκχωρημένο χρήστη ή το email ειδοποιήσεων προς (ενημέρωση) ή/και το email ειδοποιήσεων προς) +TicketPublicNotificationNewMessageDefaultEmail=email ειδοποιήσεων προς (ενημέρωση) +TicketPublicNotificationNewMessageDefaultEmailHelp=Στείλτε ένα μήνυμα email σε αυτήν τη διεύθυνση για ειδοποιήσεις κάθε νέου μηνύματος, εάν στο ticket δεν έχει εκχωρηθεί χρήστης ή εάν ο χρήστης δεν έχει κάποιο γνωστό email. +TicketsAutoReadTicket=Αυτόματη επισήμανση του ticket ως αναγνωσμένου (όταν δημιουργείται από την υποστήριξη) +TicketsAutoReadTicketHelp=Αυτόματη επισήμανση του ticket ως αναγνωσμένου όταν έχει δημιουργηθεί από την υποστήριξη. Όταν το εισιτήριο δημιουργείται από τη δημόσια διεπαφή, το εισιτήριο παραμένει στην κατάσταση "Μη αναγνωσμένο". +TicketsDelayBeforeFirstAnswer=Ένα νέο ticket θα πρέπει να λάβει μια πρώτη απάντηση πριν από (σε ώρες): +TicketsDelayBeforeFirstAnswerHelp=Εάν ένα νέο ticket δεν έχει λάβει απάντηση μετά από αυτό το χρονικό διάστημα (σε ώρες), θα εμφανιστεί ένα εικονίδιο ειδοποίησης σημαντικού γεγονότος στην προβολή λίστας. +TicketsDelayBetweenAnswers=Ένα ticket που δεν έχει επιλυθεί δεν πρέπει να είναι ανενεργό κατά τη διάρκεια (ώρες): +TicketsDelayBetweenAnswersHelp=Εάν ένα ticket που δεν έχει επιλυθεί που έχει ήδη λάβει απάντηση δεν έχει περαιτέρω αλληλεπίδραση μετά από αυτήν τη χρονική περίοδο (σε ώρες), θα εμφανιστεί ένα εικονίδιο προειδοποίησης στην προβολή λίστας. +TicketsAutoNotifyClose=Αυτόματη ειδοποίηση του τρίτου μέρους κατά το κλείσιμο ενός ticket +TicketsAutoNotifyCloseHelp=Κατά το κλείσιμο ενός ticket, θα σας προταθεί να στείλετε ένα μήνυμα σε μία από τις επαφές τρίτων. Κατά το μαζικό κλείσιμο, θα σταλεί ένα μήνυμα σε μια επαφή του τρίτου μέρους που είναι συνδεδεμένο με το ticket. +TicketWrongContact=Η παρεχόμενη επαφή δεν αποτελεί μέρος των επαφών του τρέχοντος ticket. Το email δεν στάλθηκε. +TicketChooseProductCategory=Κατηγορία προϊόντος για υποστήριξη ticket +TicketChooseProductCategoryHelp=Επιλέξτε την κατηγορία προϊόντων υποστήριξης ticket Αυτό θα χρησιμοποιηθεί για την αυτόματη σύνδεση μιας σύμβασης με ένα ticket # # Index & list page # -TicketsIndex=Περιοχή tickets +TicketsIndex=Τομέας ticket TicketList=Λίστα tickets TicketAssignedToMeInfos=Αυτή η σελίδα εμφανίζει τη λίστα tickets που έχει δημιουργηθεί ή έχει εκχωρηθεί στον τρέχοντα χρήστη NoTicketsFound=Δεν βρέθηκε ticket -NoUnreadTicketsFound=Δεν βρέθηκαν αδιάβατα ticket -TicketViewAllTickets=Δείτε όλα τα tickets -TicketViewNonClosedOnly=Δείτε μόνο ανοιχτά ticket +NoUnreadTicketsFound=Δεν βρέθηκε αδιάβαστο ticket +TicketViewAllTickets=Εμφάνιση όλων των ticket +TicketViewNonClosedOnly=Εμφάνιση μόνο ανοιχτών ticket TicketStatByStatus=Tickets ανά κατάσταση OrderByDateAsc=Ταξινόμηση κατά αύξουσα ημερομηνία OrderByDateDesc=Ταξινόμηση κατά φθίνουσα ημερομηνία ShowAsConversation=Εμφάνιση ως λίστα συνομιλιών MessageListViewType=Εμφάνιση ως λίστα πίνακα -ConfirmMassTicketClosingSendEmail=Αυτόματη αποστολή email κατά το κλείσιμο εισιτηρίων -ConfirmMassTicketClosingSendEmailQuestion=Θέλετε να ειδοποιήσετε τρίτους όταν κλείνετε αυτά τα εισιτήρια; +ConfirmMassTicketClosingSendEmail=Αυτόματη αποστολή email κατά το κλείσιμο ticket +ConfirmMassTicketClosingSendEmailQuestion=Θέλετε να ειδοποιήσετε τρίτους όταν κλείνετε αυτά τα ticket; # # Ticket card # Ticket=Ticket -TicketCard=Κάρτα ticket -CreateTicket=Δημιουργήστε ticket +TicketCard=Καρτέλα ticket +CreateTicket=Δημιουργία ticket EditTicket=Επεξεργασία ticket TicketsManagement=Διαχείριση tickets CreatedBy=Δημιουργήθηκε από NewTicket=Νέο ticket -SubjectAnswerToTicket=Το ticket απαντήθηκε +SubjectAnswerToTicket=Απάντηση εισιτηρίου TicketTypeRequest=Τύπος αιτήματος TicketCategory=Κατηγοριοποίηση ticket SeeTicket=Δείτε το ticket @@ -187,11 +187,11 @@ TicketReadOn=Συνέχισε να διαβάζεις TicketCloseOn=Ημερομηνία Κλεισίματος MarkAsRead=Μαρκάρετε το ticket ως αναγνωσμένο TicketHistory=Ιστορικό ticket -AssignUser=Αναθέστε στον χρήστη +AssignUser=Εκχώρηση στον χρήστη TicketAssigned=Το ticket έχει πλέον εκχωρηθεί -TicketChangeType=Αλλάξτε τον τύπο -TicketChangeCategory=Αλλάξτε τον αναλυτικό κώδικα -TicketChangeSeverity=Αλλάξτε τη σοβαρότητα +TicketChangeType=Αλλαγή τύπου +TicketChangeCategory=Αλλαγή αναλυτικού κώδικα +TicketChangeSeverity=Αλλαγή κρισιμότητας TicketAddMessage=Προσθήκη μηνύματος AddMessage=Προσθήκη μηνύματος MessageSuccessfullyAdded=Το ticket προστέθηκε @@ -201,46 +201,46 @@ NoMsgForThisTicket=Δεν υπάρχει μήνυμα για αυτό το ticke TicketProperties=Κατηγοριοποίηση LatestNewTickets=Τελευταία %s πιο πρόσφατα tickets (δεν έχουν διαβαστεί) TicketSeverity=Κρισιμότητα -ShowTicket=Δείτε το ticket -RelatedTickets=Σχετικό ticket +ShowTicket=Εμφάνιση ticket +RelatedTickets=Σχετικά ticket TicketAddIntervention=Δημιουργία παρέμβασης -CloseTicket=Κλείστε|Επιλύστε το ticket -AbandonTicket=Εγκαταλείψτε το ticket -CloseATicket=Κλείστε|Επιλύστε ένα ticket -ConfirmCloseAticket=Επιβεβαιώστε το κλείσιμο του ticket -ConfirmAbandonTicket=Επιβεβαιώνετε το κλείσιμο του ticket με κατάσταση 'Εγκαταλελειμμένο' -ConfirmDeleteTicket=Επιβεβαιώστε τη διαγραφή του ticket +CloseTicket=Κλείσιμο|Επίλυση ticket +AbandonTicket=Εγκατάλειψη ticket +CloseATicket=Κλείσιμο|Επίλυση ticket +ConfirmCloseAticket=Επιβεβαίωση κλεισίματος ticket +ConfirmAbandonTicket=Επιβεβαιώνετε το κλείσιμο του ticket σε κατάσταση 'Εγκαταλελειμμένο' +ConfirmDeleteTicket=Παρακαλώ επιβεβαιώστε τη διαγραφή του ticket TicketDeletedSuccess=Το ticket διαγράφηκε με επιτυχία -TicketMarkedAsClosed=Το ticket επισημαίνεται ως κλειστό +TicketMarkedAsClosed=Το ticket επισημάνθηκε ως κλειστό TicketDurationAuto=Υπολογισμένη διάρκεια TicketDurationAutoInfos=Διάρκεια υπολογίζεται αυτόματα από την παρέμβαση TicketUpdated=Το ticket ενημερώθηκε -SendMessageByEmail=Αποστολή μηνύματος μέσω ηλεκτρονικού ταχυδρομείου +SendMessageByEmail=Στείλτε μήνυμα με email TicketNewMessage=Νέο μήνυμα ErrorMailRecipientIsEmptyForSendTicketMessage=Ο παραλήπτης είναι κενός. Δεν στέλνεται μήνυμα ηλεκτρονικού ταχυδρομείου -TicketGoIntoContactTab=Μεταβείτε στην καρτέλα "Επαφές" για να τις επιλέξετε +TicketGoIntoContactTab=Μεταβείτε στην καρτέλα "Επαφές" για να τις επιλέξετε TicketMessageMailIntro=Εισαγωγή -TicketMessageMailIntroHelp=Αυτό το κείμενο προστίθεται μόνο στην αρχή του μηνύματος ηλεκτρονικού ταχυδρομείου και δεν θα αποθηκευτεί. -TicketMessageMailIntroLabelAdmin=Εισαγωγικό κείμενο για όλες τις απαντήσεις εισιτηρίων -TicketMessageMailIntroText=Γεια σας,
Μια νέα απάντηση προστέθηκε σε ένα εισιτήριο που ακολουθείτε. Εδώ είναι το μήνυμα:
-TicketMessageMailIntroHelpAdmin=Αυτό το κείμενο θα εισαχθεί πριν από την απάντηση όταν απαντάτε σε ένα εισιτήριο από το Dolibarr +TicketMessageMailIntroHelp=Αυτό το κείμενο προστίθεται μόνο στην αρχή του email και δεν θα αποθηκευτεί. +TicketMessageMailIntroLabelAdmin=Εισαγωγικό κείμενο για όλες τις απαντήσεις ticket +TicketMessageMailIntroText=Γεια σας,
Μια νέα απάντηση προστέθηκε σε ένα ticket που ακολουθείτε. Εδώ είναι το μήνυμα:
+TicketMessageMailIntroHelpAdmin=Αυτό το κείμενο θα εισαχθεί πριν από την απάντηση όταν απαντάτε σε ένα ticket από το Dolibarr TicketMessageMailSignature=Υπογραφή -TicketMessageMailSignatureHelp=Αυτό το κείμενο προστίθεται μόνο στο τέλος του μηνύματος ηλεκτρονικού ταχυδρομείου και δεν θα αποθηκευτεί. +TicketMessageMailSignatureHelp=Αυτό το κείμενο προστίθεται μόνο στο τέλος του email και δεν θα αποθηκευτεί. TicketMessageMailSignatureText=Το μήνυμα στάλθηκε από %s μέσω Dolibarr -TicketMessageMailSignatureLabelAdmin=Υπογραφή ηλεκτρονικού ταχυδρομείου απάντησης +TicketMessageMailSignatureLabelAdmin=Υπογραφή email απάντησης TicketMessageMailSignatureHelpAdmin=Αυτό το κείμενο θα εισαχθεί μετά το μήνυμα απάντησης. -TicketMessageHelp=Μόνο αυτό το κείμενο θα αποθηκευτεί στη λίστα μηνυμάτων της κάρτας tickets. +TicketMessageHelp=Μόνο αυτό το κείμενο θα αποθηκευτεί στη λίστα μηνυμάτων της κάρτας ticket. TicketMessageSubstitutionReplacedByGenericValues=Οι μεταβλητές αντικατάστασης αντικαθίστανται από γενικές τιμές. -TimeElapsedSince=Χρόνος που πέρασε από τότε -TicketTimeToRead=Ο χρόνος που παρέμενε πριν διαβάσετε +TimeElapsedSince=Ο χρόνος πέρασε από +TicketTimeToRead=Ο χρόνος που πέρασε πριν από την ανάγνωση TicketTimeElapsedBeforeSince=Χρόνος που πέρασε πριν / από TicketContacts=Επαφές ticket TicketDocumentsLinked=Έγγραφα που συνδέονται με το ticket -ConfirmReOpenTicket=Επιβεβαιώστε ανοίγματος ξανά σε αυτό το ticket; +ConfirmReOpenTicket=Επιβεβαιώνετε το άνοιγμα εκ νέου αυτού του ticket; TicketMessageMailIntroAutoNewPublicMessage=Ένα νέο μήνυμα αναρτήθηκε στο ticket με το θέμα %s: -TicketAssignedToYou=Το ticket έχει ανατεθεί -TicketAssignedEmailBody=Σας έχει ανατεθεί το ticket # %s από %s -MarkMessageAsPrivate=Σημειώστε το μήνυμα ως ιδιωτικό +TicketAssignedToYou=Το ticket σας έχει ανατεθεί +TicketAssignedEmailBody=Σας έχει εκχωρηθεί το ticket #%s από τον %s +MarkMessageAsPrivate=Επισήμανση μηνύματος ως απόρρητου TicketMessagePrivateHelp=Αυτό το μήνυμα δεν θα εμφανίζεται σε εξωτερικούς χρήστες TicketEmailOriginIssuer=Δημιουργός στην αρχή των tickets InitialMessage=Αρχικό μήνυμα @@ -248,31 +248,31 @@ LinkToAContract=Σύνδεση με σύμβαση TicketPleaseSelectAContract=Επιλέξτε μια σύμβαση UnableToCreateInterIfNoSocid=Δεν είναι δυνατή η δημιουργία παρέμβασης όταν δεν ορίζεται κάποιο τρίτο μέρος TicketMailExchanges=Ανταλλαγές αλληλογραφίας -TicketInitialMessageModified=Αρχικό μήνυμα τροποποιήθηκε +TicketInitialMessageModified=Το αρχικό μήνυμα τροποποιήθηκε TicketMessageSuccesfullyUpdated=Το μήνυμα ενημερώθηκε με επιτυχία TicketChangeStatus=Αλλαγή κατάστασης TicketConfirmChangeStatus=Επιβεβαιώστε την αλλαγή κατάστασης: %s? -TicketLogStatusChanged=Η κατάσταση άλλαξε: %s to %s +TicketLogStatusChanged=Η κατάσταση άλλαξε: απο%s σε %s TicketNotNotifyTiersAtCreate=Μην ειδοποιείτε την εταιρεία στη δημιουργία -NotifyThirdpartyOnTicketClosing=Επαφές για ειδοποίηση κατά το κλείσιμο του εισιτηρίου +NotifyThirdpartyOnTicketClosing=Επαφές για ειδοποίηση κατά το κλείσιμο του ticket TicketNotifyAllTiersAtClose=Όλες οι σχετικές επαφές TicketNotNotifyTiersAtClose=Καμία σχετική επαφή -Unread=Αδιάβαστος -TicketNotCreatedFromPublicInterface=Μη διαθέσιμος. Το εισιτήριο δεν δημιουργήθηκε από το δημόσιο περιβάλλον. -ErrorTicketRefRequired=Το όνομα αναφοράς Eισιτηρίου είναι υποχρεωτικό -TicketsDelayForFirstResponseTooLong=Έχει περάσει πάρα πολύς χρόνος από το άνοιγμα του εισιτηρίου χωρίς καμία απάντηση. -TicketsDelayFromLastResponseTooLong=Έχει περάσει πάρα πολύς χρόνος από την τελευταία απάντηση σε αυτό το εισιτήριο. -TicketNoContractFoundToLink=Δεν βρέθηκε συμβόλαιο που να συνδέεται αυτόματα με αυτό το εισιτήριο. Συνδέστε ένα συμβόλαιο χειροκίνητα. -TicketManyContractsLinked=Πολλά συμβόλαια έχουν συνδεθεί αυτόματα με αυτό το εισιτήριο. Βεβαιωθείτε ότι έχετε επαληθεύσει ποιο πρέπει να επιλεγεί. +Unread=Αδιάβαστο +TicketNotCreatedFromPublicInterface=Μη διαθέσιμο. Το ticket δεν δημιουργήθηκε από δημόσια διεπαφή. +ErrorTicketRefRequired=Απαιτείται όνομα αναφοράς ticket +TicketsDelayForFirstResponseTooLong=Έχει περάσει πάρα πολύς χρόνος από το άνοιγμα του ticket χωρίς καμία απάντηση. +TicketsDelayFromLastResponseTooLong=Έχει περάσει πάρα πολύς χρόνος από την τελευταία απάντηση σε αυτό το ticket. +TicketNoContractFoundToLink=Δεν βρέθηκε σύμβαση που να συνδέεται αυτόματα με αυτό το εισιτήριο. Συνδέστε μια σύμβαση μη αυτόματα. +TicketManyContractsLinked=Πολλές συμβάσεις έχουν συνδεθεί αυτόματα με αυτό το ticket. Βεβαιωθείτε ότι έχετε επαληθεύσει ποιο πρέπει να επιλεγεί. # # Logs # TicketLogMesgReadBy=Το ticket %s διαβάστηκε από %s -NoLogForThisTicket=Δεν υπάρχει καταγραφή για αυτό το ticket ακόμα +NoLogForThisTicket=Δεν υπάρχει αρχείο καταγραφής για αυτό το ticket ακόμα TicketLogAssignedTo=Το ticket %s ανατέθηκε στο %s TicketLogPropertyChanged=Το ticket %s τροποποιήθηκε: ταξινόμηση από %s σε %s -TicketLogClosedBy=Το ticket %s έκλεισε με %s +TicketLogClosedBy=Το ticket %s έκλεισε απο %s TicketLogReopen=Εκ νέου άνοιγμα του ticket %s # @@ -291,13 +291,13 @@ TicketNewEmailBody=Αυτό είναι ένα αυτόματο μήνυμα ηλ TicketNewEmailBodyCustomer=Αυτό είναι ένα αυτόματο μήνυμα ηλεκτρονικού ταχυδρομείου που επιβεβαιώνει ότι μόλις δημιουργήθηκε νέο ticket στο λογαριασμό σας. TicketNewEmailBodyInfosTicket=Πληροφορίες για την παρακολούθηση του ticket TicketNewEmailBodyInfosTrackId=Αριθμός παρακολούθησης ticket: %s -TicketNewEmailBodyInfosTrackUrl=Μπορείτε να δείτε την εξέλιξη του εισιτηρίου κάνοντας κλικ στον παρακάτω σύνδεσμο +TicketNewEmailBodyInfosTrackUrl=Μπορείτε να δείτε την εξέλιξη του ticket κάνοντας κλικ στον παρακάτω σύνδεσμο TicketNewEmailBodyInfosTrackUrlCustomer=Μπορείτε να δείτε την πρόοδο του ticket στη συγκεκριμένη διεπαφή κάνοντας κλικ στον ακόλουθο σύνδεσμο -TicketCloseEmailBodyInfosTrackUrlCustomer=Μπορείτε να δείτε το ιστορικό αυτού του εισιτηρίου κάνοντας κλικ στον παρακάτω σύνδεσμο +TicketCloseEmailBodyInfosTrackUrlCustomer=Μπορείτε να δείτε το ιστορικό αυτού του ticket κάνοντας κλικ στον παρακάτω σύνδεσμο TicketEmailPleaseDoNotReplyToThisEmail=Παρακαλώ μην απαντήσετε απευθείας σε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου! Χρησιμοποιήστε το σύνδεσμο για να απαντήσετε μέσω της διεπαφής. TicketPublicInfoCreateTicket=Αυτή η φόρμα σάς επιτρέπει να καταγράψετε ένα ticket υποστήριξης στο σύστημα διαχείρισης. TicketPublicPleaseBeAccuratelyDescribe=Παρακαλούμε περιγράψτε με ακρίβεια το πρόβλημα. Παρέχετε τις περισσότερες πληροφορίες που είναι δυνατόν να μας επιτρέψουν να προσδιορίσουμε σωστά το αίτημά σας. -TicketPublicMsgViewLogIn=Εισαγάγετε το αναγνωριστικό παρακολούθησης ticket +TicketPublicMsgViewLogIn=Παρακαλώ εισαγάγετε το αναγνωριστικό παρακολούθησης ticket TicketTrackId=Δημόσιο αναγνωριστικό παρακολούθησης OneOfTicketTrackId=Ένα από τα αναγνωριστικά παρακολούθησης ErrorTicketNotFound=Δεν βρέθηκε ticket με αναγνωριστικό παρακολούθησης %s! @@ -307,7 +307,7 @@ ViewMyTicketList=Δείτε τη λίστα των tickets μου ErrorEmailMustExistToCreateTicket=Σφάλμα: η διεύθυνση ηλεκτρονικού ταχυδρομείου δεν βρέθηκε στη βάση δεδομένων μας TicketNewEmailSubjectAdmin=Δημιουργήθηκε νέο ticket - Ref %s (δημόσιο ticket ID %s) TicketNewEmailBodyAdmin=

Το ticket μόλις δημιουργήθηκε με την ID # %s, δείτε τις πληροφορίες:

-SeeThisTicketIntomanagementInterface=Δείτε το εισιτήριο στη διεπαφή διαχείρισης +SeeThisTicketIntomanagementInterface=Δείτε το Παρακαλώ εισαγάγετε το αναγνωριστικό παρακολούθησης ticket στη διεπαφή διαχείρισης TicketPublicInterfaceForbidden=Η δημόσια διεπαφή για τα tickets δεν ήταν ενεργοποιημένη ErrorEmailOrTrackingInvalid=Λάθος τιμή ID παρακολούθηση ή ηλεκτρονικού ταχυδρομείου OldUser=Παλιός χρήστης @@ -315,18 +315,18 @@ NewUser=Νέος χρήστης NumberOfTicketsByMonth=Αριθμός tickets ανά μήνα NbOfTickets=Αριθμός tickets # notifications -TicketCloseEmailSubjectCustomer=Το εισιτήριο έκλεισε -TicketCloseEmailBodyCustomer=Αυτό είναι ένα αυτόματο μήνυμα για να σας ειδοποιήσει ότι το εισιτήριο %s μόλις έκλεισε. +TicketCloseEmailSubjectCustomer=Το Παρακαλώ εισαγάγετε το αναγνωριστικό παρακολούθησης ticket έκλεισε +TicketCloseEmailBodyCustomer=Αυτό είναι ένα αυτόματο μήνυμα για να σας ενημερώσουμε ότι το ticket %s μόλις έκλεισε. TicketCloseEmailSubjectAdmin=Το εισιτήριο έκλεισε - Réf %s (δημόσιο ID εισιτηρίου %s) -TicketCloseEmailBodyAdmin=Ένα εισιτήριο με ID #%s μόλις έκλεισε, δείτε πληροφορίες: +TicketCloseEmailBodyAdmin=Ένα ticket με ID #%s μόλις έκλεισε, δείτε πληροφορίες: TicketNotificationEmailSubject=Το ticket %s ενημερώθηκε TicketNotificationEmailBody=Αυτό είναι ένα αυτόματο μήνυμα που σας ειδοποιεί ότι το ticket %s μόλις ενημερώθηκε TicketNotificationRecipient=Αποδέκτης ειδοποίησης -TicketNotificationLogMessage=Μηνύματα καταγραφής +TicketNotificationLogMessage=Μήνυμα καταγραφής TicketNotificationEmailBodyInfosTrackUrlinternal=Προβολή ticket σε διεπαφή TicketNotificationNumberEmailSent=Ειδοποίηση ηλεκτρονικού ταχυδρομείου αποστολή: %s -ActionsOnTicket=Συμβάντα του ticket +ActionsOnTicket=Ενέργειες στο ticket # # Boxes @@ -339,14 +339,14 @@ BoxLastModifiedTicket=Τελευταία τροποποιημένα tickets BoxLastModifiedTicketDescription=Τα τελευταία %s τροποποιημένα tickets BoxLastModifiedTicketContent= BoxLastModifiedTicketNoRecordedTickets=Δεν υπάρχουν πρόσφατα τροποποιημένα tickets -BoxTicketType=Κατανομή ανοιχτών εισιτηρίων ανά τύπο -BoxTicketSeverity=Αριθμός ανοιχτών εισιτηρίων κατά προτεραιότητα -BoxNoTicketSeverity=Δεν υπάρχουν ανοιχτά εισιτήρια -BoxTicketLastXDays=Αριθμός νέων εισιτηρίων ανά ημέρα τις τελευταίες %s ημέρες -BoxTicketLastXDayswidget = Αριθμός νέων εισιτηρίων ανά ημέρα τις τελευταίες Χ ημέρες -BoxNoTicketLastXDays=Κανένα νέο εισιτήριο τις τελευταίες %s ημέρες -BoxNumberOfTicketByDay=Αριθμός νέων εισιτηρίων ανά ημέρα -BoxNewTicketVSClose=Αριθμός νέων εισιτηρίων έναντι κλειστών εισιτηρίων (σήμερα) -TicketCreatedToday=Το εισιτήριο δημιουργήθηκε σήμερα -TicketClosedToday=Το εισιτήριο έκλεισε σήμερα -KMFoundForTicketGroup=Βρήκαμε θέματα και συχνές ερωτήσεις που μπορεί να απαντήσουν την ερώτησή σας, Παρακαλούμε να τα ελέγξετε πριν υποβάλετε το εισιτήριο +BoxTicketType=Κατανομή ανοιχτών ticket ανά τύπο +BoxTicketSeverity=Αριθμός ανοιχτών ticket κατά κρισιμότητα +BoxNoTicketSeverity=Δεν υπάρχουν ανοιχτά ticket +BoxTicketLastXDays=Αριθμός νέων ticket ανά ημέρα τις τελευταίες %s ημέρες +BoxTicketLastXDayswidget = Αριθμός νέων ticket ανά ημέρα τις τελευταίες Χ ημέρες +BoxNoTicketLastXDays=Κανένα νέο ticket τις τελευταίες %s ημέρες +BoxNumberOfTicketByDay=Αριθμός νέων ticket ανά ημέρα +BoxNewTicketVSClose=Αριθμός νέων ticket έναντι κλειστών ticket (σήμερα) +TicketCreatedToday=Το ticket δημιουργήθηκε σήμερα +TicketClosedToday=Το ticket έκλεισε σήμερα +KMFoundForTicketGroup=Βρήκαμε θέματα και συχνές ερωταπαντήσεις που μπορεί να σας βοηθήσουν, Παρακαλούμε να τα ελέγξετε πριν υποβάλετε το ticket σας diff --git a/htdocs/langs/el_GR/trips.lang b/htdocs/langs/el_GR/trips.lang index da19b185b24..0a2d8ba5aac 100644 --- a/htdocs/langs/el_GR/trips.lang +++ b/htdocs/langs/el_GR/trips.lang @@ -3,43 +3,43 @@ ShowExpenseReport=Εμφάνιση αναφοράς εξόδων Trips=Αναφορές εξόδων TripsAndExpenses=Αναφορές εξόδων TripsAndExpensesStatistics=Στατιστικές αναφορές εξόδων -TripCard=Κάρτα αναφοράς εξόδων +TripCard=Καρτέλα αναφοράς εξόδων AddTrip=Δημιουργία αναφοράς εξόδων ListOfTrips=Λίστα αναφορών εξόδων ListOfFees=Λίστα φόρων TypeFees=Είδη αμοιβών ShowTrip=Εμφάνιση αναφοράς εξόδων NewTrip=Νέα αναφορά εξόδων -LastExpenseReports=Τελευταίες αναφορές δαπανών %s +LastExpenseReports=Τελευταίες %s αναφορές εξόδων AllExpenseReports=Όλες οι αναφορές εξόδων CompanyVisited=Εταιρεία / οργανισμός επισκέφθηκε -FeesKilometersOrAmout=Σύνολο χλμ +FeesKilometersOrAmout=Ποσότητα ή χιλιόμετρα DeleteTrip=Διαγραφή αναφοράς εξόδων -ConfirmDeleteTrip=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την αναφορά εξόδων; +ConfirmDeleteTrip=Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την αναφορά εξόδων; ListTripsAndExpenses=Λίστα αναφορών εξόδων -ListToApprove=Αναμονή έγγρισης -ExpensesArea=Περιοχή αναφοράς εξόδων -ClassifyRefunded=Κατηγοριοποίηση ως «επιστράφει» -ExpenseReportWaitingForApproval=Μια νέα έκθεση δαπανών έχει υποβληθεί προς έγκριση -ExpenseReportWaitingForApprovalMessage=Έχει υποβληθεί νέα αναφορά δαπανών και περιμένει έγκριση.
- Χρήστης: %s
- Περίοδος: %s
Κάντε κλικ εδώ για να επικυρώσετε: %s -ExpenseReportWaitingForReApproval=Έχει υποβληθεί μια έκθεση δαπανών για επανέγκριση -ExpenseReportWaitingForReApprovalMessage=Έχει υποβληθεί αναφορά δαπανών και αναμένει επανέγκριση.
Το %s, αρνηθήκατε να εγκρίνετε την αναφορά εξόδων για το λόγο αυτό: %s.
Έχει προταθεί μια νέα έκδοση και περιμένει την έγκρισή σας.
- Χρήστης: %s
- Περίοδος: %s
Κάντε κλικ εδώ για να επικυρώσετε: %s -ExpenseReportApproved=Έχει εγκριθεί έκθεση δαπανών -ExpenseReportApprovedMessage=Η έκθεση δαπανών %s εγκρίθηκε.
- Χρήστης: %s
- Εγκρίθηκε από: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s -ExpenseReportRefused=Η αναφορά δαπανών απορρίφθηκε -ExpenseReportRefusedMessage=Η αναφορά δαπανών %s απορρίφθηκε.
- Χρήστης: %s
- αρνήθηκε από: %s
- Αιτιολόγηση απόρριψης: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s +ListToApprove=Σε αναμονή για έγκριση +ExpensesArea=Τομέας αναφοράς εξόδων +ClassifyRefunded=Ταξινόμηση ως "Επιστροφή χρημάτων" +ExpenseReportWaitingForApproval=Μια νέα αναφορά εξόδων έχει υποβληθεί προς έγκριση +ExpenseReportWaitingForApprovalMessage=Έχει υποβληθεί νέα αναφορά εξόδων και είναι σε αναμονή έγκρισης.
- Χρήστης: %s
- Περίοδος: %s
Κάντε κλικ εδώ για επικύρωση: %s +ExpenseReportWaitingForReApproval=Έχει υποβληθεί μια αναφορά εξόδων για επανέγκριση +ExpenseReportWaitingForReApprovalMessage=Έχει υποβληθεί αναφορά εξόδων και αναμένει επανέγκριση.
Την %s, αρνηθήκατε να εγκρίνετε την αναφορά εξόδων για το λόγο αυτό: %s.
Έχει προταθεί μια νέα έκδοση και περιμένει την έγκρισή σας.
- Χρήστης: %s
- Περίοδος: %s
Κάντε κλικ εδώ για να επικυρώσετε: %s +ExpenseReportApproved=Έχει εγκριθεί η αναφορά εξόδων +ExpenseReportApprovedMessage=Η αναφορά εξόδων %s εγκρίθηκε.
- Χρήστης: %s
- Εγκρίθηκε από: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s +ExpenseReportRefused=Η αναφορά εξόδων απορρίφθηκε +ExpenseReportRefusedMessage=Η αναφορά εξόδων %s απορρίφθηκε.
- Χρήστης: %s
- απορρίφθηκε από: %s
- Αιτιολόγηση απόρριψης: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s ExpenseReportCanceled=Η αναφορά εξόδων ακυρώθηκε -ExpenseReportCanceledMessage=Η αναφορά δαπανών %s ακυρώθηκε.
- Χρήστης: %s
- Ακυρώθηκε από: %s
- Αιτιολόγηση για ακύρωση: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s -ExpenseReportPaid=Καταγράφηκε μια αναφορά εξόδων -ExpenseReportPaidMessage=Η αναφορά δαπανών %s καταβλήθηκε.
- Χρήστης: %s
- Πληρωμή από: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s -TripId=Αναφορά εξόδων ταυτότητας +ExpenseReportCanceledMessage=Η αναφορά εξόδων %s ακυρώθηκε.
- Χρήστης: %s
- Ακυρώθηκε από: %s
- Αιτιολόγηση για ακύρωση: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s +ExpenseReportPaid=Καταβλήθηκε ποσό αναφοράς εξόδων +ExpenseReportPaidMessage=Η αναφορά εξόδων %s καταβλήθηκε.
- Χρήστης: %s
- Πληρωμή από: %s
Κάντε κλικ εδώ για να εμφανίσετε την αναφορά εξόδων: %s +TripId=Αναγνωριστικό αναφοράς εξόδων AnyOtherInThisListCanValidate=Πρόσωπο που πρέπει να ενημερωθεί για την επικύρωση του αιτήματος. TripSociete=Πληροφορίες εταιρίας -TripNDF=Αναφορά εξόδων πληροφοριών -PDFStandardExpenseReports=Πρότυπο πρότυπο για τη δημιουργία ενός εγγράφου PDF για αναφορά εξόδων -ExpenseReportLine=Γραμμή αναφοράς δαπανών +TripNDF=Πληροφορίες αναφοράς εξόδων +PDFStandardExpenseReports=Τυπικό πρότυπο για τη δημιουργία ενός εγγράφου PDF για την αναφορά εξόδων +ExpenseReportLine=Γραμμή αναφοράς εξόδων TF_OTHER=Άλλο -TF_TRIP=Μεταφορά +TF_TRIP=Μεταφορικά TF_LUNCH=Γεύμα TF_METRO=Μετρό TF_TRAIN=Τρένο @@ -49,11 +49,11 @@ TF_PEAGE=Διόδια TF_ESSENCE=Καύσιμα TF_HOTEL=Ξενοδοχείο TF_TAXI=Ταξί -EX_KME=Χιλιόμετρα κόστος -EX_FUE=Βιογραφικό σημείωμα καυσίμου +EX_KME=κόστος ανά χιλιόμετρο +EX_FUE=καύσιμα EX_HOT=Ξενοδοχείο -EX_PAR=Χώρος στάθμευσης αυτοκινήτου -EX_TOL=Toll CV +EX_PAR=Χώρος στάθμευσης +EX_TOL=Διόδια EX_TAX=Διάφοροι φόροι EX_IND=Αποζημίωση μεταφοράς αποζημιώσεων EX_SUM=Συντήρηση @@ -66,51 +66,51 @@ EX_POS=Ταχυδρομικά τέλη EX_CAM=Συντήρηση και επισκευή βιογραφικού σημειώματος EX_EMM=Γεύμα εργαζομένων EX_GUM=Γεύμα φιλοξενουμένων -EX_BRE=ΠΡΩΙΝΟ ΓΕΥΜΑ +EX_BRE=Πρωινό γεύμα EX_FUE_VP=Fuel PV EX_TOL_VP=Toll PV EX_PAR_VP=Πάρκινγκ PV EX_CAM_VP=PV συντήρηση και επισκευή DefaultCategoryCar=Προεπιλεγμένη λειτουργία μεταφοράς DefaultRangeNumber=Αριθμός προεπιλεγμένου εύρους τιμών -UploadANewFileNow=Μεταφορτώστε τώρα ένα νέο έγγραφο -Error_EXPENSEREPORT_ADDON_NotDefined=Σφάλμα, ο κανόνας για την αναφορά αριθμών αναφορών εξόδων δεν καθορίστηκε στη ρύθμιση της ενότητας 'Έκθεση δαπανών' -ErrorDoubleDeclaration=Έχετε δηλώσει μια άλλη αναφορά εξόδων σε ένα παρόμοιο εύρος ημερομηνιών. -AucuneLigne=Δεν έχει ακόμη δηλωθεί αναφορά δαπανών +UploadANewFileNow=Μεταφορτώστε ένα νέο έγγραφο τώρα +Error_EXPENSEREPORT_ADDON_NotDefined=Σφάλμα, ο κανόνας για την αρίθμηση αναφοράς εξόδων δεν ορίστηκε στη ρύθμιση της ενότητας "Αναφορά εξόδων" +ErrorDoubleDeclaration=Έχετε δηλώσει άλλη αναφορά εξόδων σε παρόμοιο εύρος ημερομηνιών. +AucuneLigne=Δεν έχει δηλωθεί ακόμη αναφορά εξόδων ModePaiement=Τρόπος πληρωμής -VALIDATOR=Ο χρήστης είναι υπεύθυνος για την έγκριση +VALIDATOR=Χρήστης υπεύθυνος για την έγκριση VALIDOR=Εγκρίθηκε από AUTHOR=Αποθηκεύτηκε από AUTHORPAIEMENT=Πληρώθηκε από REFUSEUR=Απορρίφθηκε από CANCEL_USER=Διαγράφηκε από -MOTIF_REFUS=Αιτία -MOTIF_CANCEL=Αιτία +MOTIF_REFUS=Λόγος +MOTIF_CANCEL=Λόγος DATE_REFUS=Ημερομηνία απόρριψης DATE_SAVE=Ημερομηνία Επικύρωσης DATE_CANCEL=Ημερομηνία ακύρωσης DATE_PAIEMENT=Ημερομηνία πληρωμής -ExpenseReportRef=Αναφ. ΑΝΑΦΟΡΑ ΕΞΟΔΩΝ +ExpenseReportRef=Αναφ. αναφοράς εξόδων ValidateAndSubmit=Επικύρωση και υποβολή για έγκριση -ValidatedWaitingApproval=Επικύρωση (αναμονή για έγκριση) -NOT_AUTHOR=Δεν είστε ο συντάκτης αυτής της έκθεσης δαπανών. Η λειτουργία ακυρώθηκε. -ConfirmRefuseTrip=Είστε βέβαιοι ότι θέλετε να αρνηθείτε αυτήν την αναφορά εξόδων; -ValideTrip=Εγκρίνετε την αναφορά εξόδων -ConfirmValideTrip=Είστε βέβαιοι ότι θέλετε να εγκρίνετε αυτή την αναφορά εξόδων; +ValidatedWaitingApproval=Επικυρώθηκε (αναμονή για έγκριση) +NOT_AUTHOR=Δεν είστε ο συντάκτης αυτής της αναφοράς εξόδων. Η λειτουργία ακυρώθηκε. +ConfirmRefuseTrip=Είστε σίγουροι ότι θέλετε να απορρίψετε αυτήν την αναφορά εξόδων; +ValideTrip=Έγκριση αναφοράς εξόδων +ConfirmValideTrip=Είστε σιγουροι ότι θέλετε να εγκρίνετε αυτή την αναφορά εξόδων; PaidTrip=Πληρώστε μια αναφορά εξόδων -ConfirmPaidTrip=Είστε βέβαιοι ότι θέλετε να αλλάξετε την κατάσταση αυτής της αναφοράς εξόδων σε "Paid"; +ConfirmPaidTrip=Είστε βέβαιοι ότι θέλετε να αλλάξετε την κατάσταση αυτής της αναφοράς εξόδων σε "Πληρωμένη"; ConfirmCancelTrip=Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την αναφορά εξόδων; -BrouillonnerTrip=Μεταφέρετε την αναφορά δαπανών στην κατάσταση "Σχέδιο" -ConfirmBrouillonnerTrip=Είστε βέβαιοι ότι θέλετε να μετακινήσετε αυτή την αναφορά δαπανών στην κατάσταση "Σχέδιο"; +BrouillonnerTrip=Μετακίνηση αναφοράς εξόδων στην κατάσταση "Προσχέδιο" +ConfirmBrouillonnerTrip=Είστε σίγουροι ότι θέλετε να μετακινήσετε αυτήν την αναφορά εξόδων στην κατάσταση "Προσχέδιο"; SaveTrip=Επικύρωση αναφοράς εξόδων -ConfirmSaveTrip=Είστε βέβαιοι ότι θέλετε να επικυρώσετε αυτήν την αναφορά εξόδων; +ConfirmSaveTrip=Είστε σίγουροι ότι θέλετε να επικυρώσετε αυτήν την αναφορά εξόδων; NoTripsToExportCSV=Δεν υπάρχει αναφορά εξόδων για εξαγωγή για αυτήν την περίοδο. -ExpenseReportPayment=Πληρωμή αναφορών εξόδων +ExpenseReportPayment=Πληρωμή αναφοράς εξόδων ExpenseReportsToApprove=Αναφορές εξόδων για έγκριση ExpenseReportsToPay=Αναφορές εξόδων για πληρωμή ConfirmCloneExpenseReport=Είστε βέβαιοι ότι θέλετε να κλωνοποιήσετε αυτήν την αναφορά εξόδων; ExpenseReportsIk=Διαμόρφωση χιλιομετρικών χρεώσεων -ExpenseReportsRules=Κανόνες έκθεσης δαπανών +ExpenseReportsRules=Κανόνες αναφοράς εξόδων ExpenseReportIkDesc=Μπορείτε να τροποποιήσετε τον υπολογισμό των εξόδων χιλιομέτρων ανά κατηγορία και εύρος που έχουν οριστεί προηγουμένως. d είναι η απόσταση σε χιλιόμετρα ExpenseReportRulesDesc=Μπορείτε να ορίσετε κανόνες μέγιστου ποσού για αναφορές εξόδων. Αυτοί οι κανόνες θα εφαρμόζονται όταν ένα νέο έξοδο προστίθεται σε μια αναφορά εξόδων expenseReportOffset=Απόκλιση @@ -118,33 +118,33 @@ expenseReportCoef=Συντελεστής expenseReportTotalForFive=Παράδειγμα με d = 5 expenseReportRangeFromTo=από %d σε %d expenseReportRangeMoreThan=περισσότερο από %d -expenseReportCoefUndefined=(τιμή δεν ορίζεται) +expenseReportCoefUndefined=(η τιμή δεν έχει καθοριστεί) expenseReportCatDisabled=Απενεργοποιημένη κατηγορία - δείτε το λεξικό c_exp_tax_cat -expenseReportRangeDisabled=Η εμβέλεια είναι απενεργοποιημένη - ανατρέξτε στη λέξη c_exp_tax_range -expenseReportPrintExample=αντιστάθμιση + (dx coef) = %s -ExpenseReportApplyTo=Εφαρμόζω σε -ExpenseReportDomain=Τομέας για την εφαρμογή -ExpenseReportLimitOn=Περιορίστε το +expenseReportRangeDisabled=Το εύρος είναι απενεργοποιημένο - ανατρέξτε στο λεξικό c_exp_tax_range +expenseReportPrintExample=Απόκλιση + (d x συντελεστής) = %s +ExpenseReportApplyTo=Εφαρμογή σε +ExpenseReportDomain=Τομέας για εφαρμογή +ExpenseReportLimitOn=Περιορισμός σε ExpenseReportDateStart=Ημερομηνία Έναρξης ExpenseReportDateEnd=Ημερομηνία λήξης ExpenseReportLimitAmount=Μέγιστο ποσό ExpenseReportRestrictive=Η υπέρβαση απαγορεύεται -AllExpenseReport=Όλες οι εκθέσεις δαπανών -OnExpense=Γραμμή δαπανών -ExpenseReportRuleSave=Ο κανόνας αναφοράς δαπανών αποθηκεύτηκε +AllExpenseReport=Όλοι οι τύποι αναφορών εξόδων +OnExpense=Γραμμή εξόδων +ExpenseReportRuleSave=Ο κανόνας αναφοράς εξόδων αποθηκεύτηκε ExpenseReportRuleErrorOnSave=Σφάλμα: %s RangeNum=Εύρος %d ExpenseReportConstraintViolationError=Υπέρβαση του μέγιστου ποσού (κανόνας %s): το %s είναι υψηλότερο από το %s (Η υπέρβαση απαγορεύεται) -byEX_DAY=ανά ημέρα (περιορισμός στο %s) -byEX_MON=ανά μήνα (περιορισμός στο %s) -byEX_YEA=ανά έτος (περιορισμός στο %s) -byEX_EXP=ανά γραμμή (περιορισμός στο %s) +byEX_DAY=ανά ημέρα (περιορισμός σε %s) +byEX_MON=ανά μήνα (περιορισμός σε %s) +byEX_YEA=ανά έτος (περιορισμός σε %s) +byEX_EXP=ανά γραμμή (περιορισμός σε %s) ExpenseReportConstraintViolationWarning=Υπέρβαση του μέγιστου ποσού (κανόνας %s): το %s είναι υψηλότερο από το %s (Υπέρβαση εξουσιοδοτημένου) nolimitbyEX_DAY=ανά ημέρα (χωρίς περιορισμό) nolimitbyEX_MON=ανά μήνα (χωρίς περιορισμό) nolimitbyEX_YEA=ανά έτος (χωρίς περιορισμό) nolimitbyEX_EXP=κατά γραμμή (χωρίς περιορισμό) CarCategory=Κατηγορία οχήματος -ExpenseRangeOffset=Ποσό αντιστάθμισης: %s +ExpenseRangeOffset=Ποσό απόκλισης: %s RangeIk=Εύρος χιλιομέτρων -AttachTheNewLineToTheDocument=Συνδέστε τη γραμμή σε ένα φορτωμένο έγγραφο +AttachTheNewLineToTheDocument=Συνδέστε τη γραμμή με ένα μεταφορτωμένο έγγραφο diff --git a/htdocs/langs/el_GR/users.lang b/htdocs/langs/el_GR/users.lang index 378d76f415f..24f318bfb6e 100644 --- a/htdocs/langs/el_GR/users.lang +++ b/htdocs/langs/el_GR/users.lang @@ -1,18 +1,18 @@ # Dolibarr language file - Source file is en_US - users -HRMArea=Περιοχή HRM +HRMArea=Τομέας HRM UserCard=Καρτέλα Χρήστη GroupCard=Καρτέλα Ομάδας Permission=Άδεια Permissions=Άδειες -EditPassword=Επεξεργασία κωδικού -SendNewPassword=Επαναδημιουργία και αποστολή κωδικού -SendNewPasswordLink=Αποστολή URL για επαναφορά κωδικού -ReinitPassword=Επαναδημιουργία κωδικού -PasswordChangedTo=Ο κωδικός άλλαξε σε: %s -SubjectNewPassword=Ο νέος σας κωδικός για %s -GroupRights=Άδειες ομάδας -UserRights=Άδειες χρήστη -Credentials=Προσόντα +EditPassword=Επεξεργασία κωδικού πρόσβασης +SendNewPassword=Επαναδημιουργία και αποστολή κωδικού πρόσβασης +SendNewPasswordLink=Αποστολή συνδέσμου για επαναφορά κωδικού πρόσβασης +ReinitPassword=Επαναδημιουργία κωδικού πρόσβασης +PasswordChangedTo=Ο κωδικός πρόσβασης άλλαξε σε: %s +SubjectNewPassword=Ο νέος σας κωδικός πρόσβασης για %s +GroupRights=Δικαιώματα ομάδας +UserRights=Δικαιώματα χρήστη +Credentials=Διαπιστευτήρια UserGUISetup=Ρύθμιση εμφάνισης χρήστη DisableUser=Απενεργοποίηση DisableAUser=Απενεργοποίηση ενός χρήστη @@ -21,22 +21,22 @@ DeleteAUser=Διαγραφή ενός χρήστη EnableAUser=Ενεργοποίηση ενός χρήστη DeleteGroup=Διαγραφή DeleteAGroup=Διαγραφή μιας ομάδας -ConfirmDisableUser=Είστε σίγουρος ότι θέλετε να απενεργοποιήσετε το χρήστη %s; -ConfirmDeleteUser=Είστε σίγουρος ότι θέλετε να διαγράψετε το χρήστη %s; -ConfirmDeleteGroup=Είστε σίγουρος ότι θέλετε να διαγράψετε την ομάδα %s; -ConfirmEnableUser=Είστε σίγουρος ότι θέλετε να ενεργοποιήσετε τον χρήστη %s; -ConfirmReinitPassword=Είστε σίγουρος ότι θέλετε να δημιουργήσετε καινούριο κωδικό για τον χρήστη %s; -ConfirmSendNewPassword=Είστε σίγουρος ότι θέλετε να δημιουργήσετε και να αποστείλετε καινούριο κωδικό για τον χρήστη %s; +ConfirmDisableUser=Είστε σίγουροι ότι θέλετε να απενεργοποιήσετε το χρήστη %s; +ConfirmDeleteUser=Είστε σίγουροι ότι θέλετε να διαγράψετε το χρήστη %s; +ConfirmDeleteGroup=Είστε σίγουροι ότι θέλετε να διαγράψετε την ομάδα %s; +ConfirmEnableUser=Είστε σίγουροι ότι θέλετε να ενεργοποιήσετε τον χρήστη %s; +ConfirmReinitPassword=Είστε σίγουροι ότι θέλετε να δημιουργήσετε καινούριο κωδικό για τον χρήστη %s; +ConfirmSendNewPassword=Είστε σίγουροι ότι θέλετε να δημιουργήσετε και να αποστείλετε καινούριο κωδικό για τον χρήστη %s; NewUser=Νέος χρήστης CreateUser=Δημιουργία χρήστη -LoginNotDefined=Το όνομα χρήστη δεν είναι καθορισμένο -NameNotDefined=Το όνομα δεν είναι καθορισμένο +LoginNotDefined=Το όνομα χρήστη δεν έχει οριστεί. +NameNotDefined=Το όνομα δεν έχει οριστεί. ListOfUsers=Λίστα χρηστών SuperAdministrator=Υπερδιαχειριστής -SuperAdministratorDesc=Διαχειριστής με όλα τα δικαιώματα +SuperAdministratorDesc=Καθολικός διαχειριστής AdministratorDesc=Διαχειριστής DefaultRights=Προεπιλεγμένα δικαιώματα -DefaultRightsDesc=Καθορίστε εδώ τα προεπιλεγμένα δικαιώματα που χορηγούνται αυτόματα σε ένα νέο χρήστη (για να τροποποιήσετε τα δικαιώματα για τους υπάρχοντες χρήστες, πηγαίνετε στην κάρτα χρήστη). +DefaultRightsDesc=Καθορίστε εδώ τα προεπιλεγμένα δικαιώματα που χορηγούνται αυτόματα σε ένα νέο χρήστη (για να τροποποιήσετε τα δικαιώματα για τους υπάρχοντες χρήστες, πηγαίνετε στην καρτέλα χρήστη). DolibarrUsers=Χρήστες Dolibarr LastName=Επίθετο FirstName=Όνομα @@ -44,83 +44,83 @@ ListOfGroups=Λίστα ομάδων NewGroup=Νέα ομάδα CreateGroup=Δημιουργία ομάδας RemoveFromGroup=Αφαίρεση από την ομάδα -PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangedAndSentTo=Ο κωδικός πρόσβασης άλλαξε και στάλθηκε στο %s . PasswordChangeRequest=Αίτημα αλλαγής κωδικού πρόσβασης για %s -PasswordChangeRequestSent=Request to change password for %s sent to %s. +PasswordChangeRequestSent=Το αίτημα για αλλαγή κωδικού πρόσβασης για %s στάλθηκε στο %s . IfLoginExistPasswordRequestSent=Εάν αυτή η σύνδεση αφορά έγκυρο λογαριασμό, έχει σταλεί ένα email για επαναφορά του κωδικού πρόσβασης. IfEmailExistPasswordRequestSent=Εάν αυτό το email είναι έγκυρος λογαριασμός, έχει σταλεί ένα email για επαναφορά του κωδικού πρόσβασης. -ConfirmPasswordReset=Επιβεβαιώστε την επαναφορά κωδικού πρόσβασης +ConfirmPasswordReset=Επιβεβαίωση της επαναφοράς κωδικού πρόσβασης MenuUsersAndGroups=Χρήστες και Ομάδες -LastGroupsCreated=Οι τελευταίες ομάδες %s δημιουργήθηκαν -LastUsersCreated=Τελευταίοι %s χρήστε που δημιουργήθηκαν +LastGroupsCreated=Οι τελευταίες %s ομάδες που δημιουργήθηκαν +LastUsersCreated=Τελευταίοι %s χρήστες που δημιουργήθηκαν ShowGroup=Εμφάνιση ομάδας ShowUser=Εμφάνιση χρήστη NonAffectedUsers=Non affected users -UserModified=User modified successfully -PhotoFile=Photo file -ListOfUsersInGroup=List of users in this group -ListOfGroupsForUser=List of groups for this user -LinkToCompanyContact=Link to third party / contact -LinkedToDolibarrMember=Link to member +UserModified=Ο χρήστης τροποποιήθηκε με επιτυχία +PhotoFile=Αρχείο φωτογραφίας +ListOfUsersInGroup=Λίστα χρηστών σε αυτήν την ομάδα +ListOfGroupsForUser=Λίστα ομάδων για αυτόν τον χρήστη +LinkToCompanyContact=Σύνδεσμος προς τρίτο μέρος / επαφή +LinkedToDolibarrMember=Σύνδεσμος με μέλος LinkedToDolibarrUser=Σύνδεσμος προς χρήστη LinkedToDolibarrThirdParty=Σύνδεσμος προς τρίτο μέρος -CreateDolibarrLogin=Create a user -CreateDolibarrThirdParty=Create a third party -LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +CreateDolibarrLogin=Δημιουργία ενός χρήστη +CreateDolibarrThirdParty=Δημιουργία τρίτου μέρους +LoginAccountDisableInDolibarr=Ο λογαριασμός απενεργοποιήθηκε στο Dolibarr. UsePersonalValue=Use personal value -InternalUser=Internal user -ExportDataset_user_1=Χρήστες και τις ιδιότητές τους +InternalUser=Εσωτερικός χρήστης +ExportDataset_user_1=Οι χρήστες και οι ιδιότητές τους DomainUser=Domain user %s -Reactivate=Reactivate -CreateInternalUserDesc=Αυτή η φόρμα σάς επιτρέπει να δημιουργήσετε έναν εσωτερικό χρήστη στην εταιρεία / οργανισμό σας. Για να δημιουργήσετε έναν εξωτερικό χρήστη (πελάτη, προμηθευτή κ.λπ.), χρησιμοποιήστε το κουμπί "Δημιουργία χρήστη Dolibarr" από την κάρτα επαφών του τρίτου μέρους. -InternalExternalDesc=Ένας εσωτερικός χρήστης είναι ένας χρήστης που ανήκει στην εταιρεία/οργανισμό σας ή είναι συνεργάτης χρήστης εκτός του οργανισμού σας που μπορεί να χρειάζεται να δει περισσότερα δεδομένα από τα δεδομένα που σχετίζονται με την εταιρεία του (το σύστημα αδειών θα καθορίσει τι μπορεί ή τι δεν μπορεί να δει ή να κάνει).
Ένας εξωτερικός χρήστης είναι ένας πελάτης, προμηθευτής ή άλλος που πρέπει να βλέπει ΜΟΝΟ δεδομένα που σχετίζονται με τον εαυτό του (Η δημιουργία εξωτερικού χρήστη για τρίτο μέρος μπορεί να γίνει από την εγγραφή επαφής του τρίτου μέρους).

Και στις δύο περιπτώσεις, πρέπει να εκχωρήσετε δικαιώματα για τις δυνατότητες που χρειάζεται ο χρήστης. -PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. -Inherited=Inherited +Reactivate=Επανενεργοποίηση +CreateInternalUserDesc=Αυτή η φόρμα σάς επιτρέπει να δημιουργήσετε έναν εσωτερικό χρήστη στην εταιρεία/οργανισμό σας. Για να δημιουργήσετε έναν εξωτερικό χρήστη (πελάτη, προμηθευτή κ.λπ. ..), χρησιμοποιήστε το κουμπί "Δημιουργία χρήστη Dolibarr" από την κάρτα επικοινωνίας αυτού του τρίτου μέρους. +InternalExternalDesc=Ένας εσωτερικός χρήστης είναι ένας χρήστης που ανήκει στην εταιρεία/οργανισμό σας ή είναι συνεργάτης χρήστης εκτός του οργανισμού σας που μπορεί να χρειάζεται να δει περισσότερα δεδομένα από τα δεδομένα που σχετίζονται με την εταιρεία του (το σύστημα δικαιωμάτων θα καθορίσει τι μπορεί ή τι δεν μπορεί να δει ή να κάνει).
Ένας εξωτερικός χρήστης είναι ένας πελάτης, προμηθευτής ή άλλος που πρέπει να βλέπει ΜΟΝΟ δεδομένα που σχετίζονται με τον εαυτό του (Η δημιουργία εξωτερικού χρήστη για τρίτο μέρος μπορεί να γίνει από την εγγραφή επαφής του τρίτου μέρους).

Και στις δύο περιπτώσεις, πρέπει να εκχωρήσετε δικαιώματα για τις δυνατότητες που χρειάζεται ο χρήστης. +PermissionInheritedFromAGroup=Η άδεια παραχωρήθηκε επειδή κληρονομήθηκε από μια ομάδα του χρήστη +Inherited=Κληρονομήθηκε UserWillBe=Ο χρήστης που δημιουργήθηκε θα είναι -UserWillBeInternalUser=Δημιουργήθηκε χρήστη θα είναι ένας εσωτερικός χρήστης (επειδή δεν συνδέεται με ένα συγκεκριμένο τρίτο μέρος) -UserWillBeExternalUser=Δημιουργήθηκε χρήστης θα είναι μια εξωτερική χρήστη (επειδή συνδέονται με μια συγκεκριμένη τρίτο μέρος) +UserWillBeInternalUser=Ο χρήστης που δημιουργήθηκε θα είναι εσωτερικός χρήστης (επειδή δεν συνδέεται με συγκεκριμένο τρίτο μέρος) +UserWillBeExternalUser=Ο χρήστης που δημιουργήθηκε θα είναι εξωτερικός χρήστης (επειδή συνδέεται με ένα συγκεκριμένο τρίτο μέρος) IdPhoneCaller=Id phone caller -NewUserCreated=User %s created -NewUserPassword=Password change for %s +NewUserCreated=Ο χρήστης %s δημιουργήθηκε +NewUserPassword=Αλλαγή κωδικού πρόσβασης για %s NewPasswordValidated=Ο νέος σας κωδικός έχει επικυρωθεί και πρέπει να χρησιμοποιηθεί τώρα για να συνδεθείτε. -EventUserModified=User %s modified -UserDisabled=User %s disabled -UserEnabled=User %s activated -UserDeleted=User %s removed -NewGroupCreated=Group %s created -GroupModified=Ομάδα %s τροποποιημένη -GroupDeleted=Group %s removed -ConfirmCreateContact=Είστε σίγουρος ότι θέλετε να δημιουργήσετε καινούριο λογαριασμό Dolibarr γι΄ αυτή την επαφή; -ConfirmCreateLogin=Είστε σίγουρος ότι θέλετε να δημιουργήσετε καινούριο λογαριασμό Dolibarr γι΄ αυτό το μέλος; -ConfirmCreateThirdParty=Είστε βέβαιοι ότι θέλετε να δημιουργήσετε ένα τρίτο μέρος για αυτό το μέλος; +EventUserModified=Ο χρήστης %s τροποποιήθηκε +UserDisabled=Ο χρήστης %s απενεργοποιήθηκε +UserEnabled=Ο χρήστης %s ενεργοποιήθηκε +UserDeleted=Ο χρήστης %s καταργήθηκε +NewGroupCreated=Δημιουργήθηκε η ομάδα %s +GroupModified=Η ομάδα %s τροποποιήθηκε +GroupDeleted=Η ομάδα %s καταργήθηκε +ConfirmCreateContact=Είστε σίγουροι ότι θέλετε να δημιουργήσετε καινούριο λογαριασμό Dolibarr γι΄ αυτή την επαφή; +ConfirmCreateLogin=Είστε σίγουροι ότι θέλετε να δημιουργήσετε καινούριο λογαριασμό Dolibarr γι΄ αυτό το μέλος; +ConfirmCreateThirdParty=Είστε σίγουροι ότι θέλετε να δημιουργήσετε ένα τρίτο μέρος για αυτό το μέλος; LoginToCreate=Login to create -NameToCreate=Name of third party to create -YourRole=Your roles -YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NameToCreate=Όνομα τρίτου μέρους προς δημιουργία +YourRole=Οι ρόλοι σας +YourQuotaOfUsersIsReached=Συμπληρώθηκε το όριο ενεργών χρηστών σας! NbOfUsers=Αριθμός χρηστών NbOfPermissions=Αριθμός αδειών -DontDowngradeSuperAdmin=Μόνο μια superadmin μπορεί να προβεί στην ανακατάταξη ενός superadmin +DontDowngradeSuperAdmin=Μόνο ένας υπερδιαχειριστής μπορεί να υποβαθμίσει έναν υπερδιαχειριστή HierarchicalResponsible=Επόπτης HierarchicView=Ιεραρχική προβολή -UseTypeFieldToChange=Χρησιμοποιήστε είδος πεδίου για να αλλάξετε -OpenIDURL=OpenID URL +UseTypeFieldToChange=Χρησιμοποιήστε τύπο πεδίου προς αλλαγή +OpenIDURL=Διεύθυνση URL OpenID LoginUsingOpenID=Χρησιμοποιήστε το OpenID για να συνδεθείτε WeeklyHours=Ώρες εργασίας (ανά εβδομάδα) -ExpectedWorkedHours=Αναμενόμενες ώρες εργασίας την εβδομάδα -ColorUser=Χρώμα του χρήστη +ExpectedWorkedHours=Αναμενόμενες ώρες εργασίας ανά εβδομάδα +ColorUser=Χρώμα χρήστη DisabledInMonoUserMode=Απενεργοποιημένο σε κατάσταση συντήρησης -UserAccountancyCode=Κωδικός λογαριασμού χρήστη +UserAccountancyCode=Λογιστικός κωδικός χρήστη UserLogoff=Αποσύνδεση χρήστη UserLogged=Ο χρήστης καταγράφηκε DateOfEmployment=Ημερομηνία πρόσληψης -DateEmployment=Θέση εργασίας +DateEmployment=Εργασία DateEmploymentStart=Ημερομηνία Έναρξης Απασχόλησης DateEmploymentEnd=Ημερομηνία λήξης απασχόλησης RangeOfLoginValidity=Εύρος διάρκειας εγκυρότητας πρόσβασης CantDisableYourself=Δεν μπορείτε να απενεργοποιήσετε το δικό σας αρχείο χρήστη -ForceUserExpenseValidator=Έγκριση έκθεσης εξόδου ισχύος -ForceUserHolidayValidator=Έγκριση αίτησης για άδεια εξόδου -ValidatorIsSupervisorByDefault=Από προεπιλογή, ο επικυρωτής είναι ο επόπτης του χρήστη. Κρατήστε κενό για να διατηρήσετε αυτή τη συμπεριφορά. +ForceUserExpenseValidator=Επιβολή επικύρωσης αναφοράς εξόδων +ForceUserHolidayValidator=Επιβολή επικύρωσης αιτήματος άδειας +ValidatorIsSupervisorByDefault=Από προεπιλογή, ο επικυρωτής είναι ο επόπτης του χρήστη. Αφήστε κενό για να διατηρήσετε αυτή τη συμπεριφορά. UserPersonalEmail=Προσωπικό email UserPersonalMobile=Προσωπικό κινητό τηλέφωνο WarningNotLangOfInterface=Προειδοποίηση, αυτή είναι η κύρια γλώσσα που μιλά ο χρήστης και όχι η γλώσσα της διεπαφής που επέλεξε να δει. Για να αλλάξετε τη γλώσσα διεπαφής που είναι ορατή από αυτόν τον χρήστη, μεταβείτε στην καρτέλα %s diff --git a/htdocs/langs/el_GR/website.lang b/htdocs/langs/el_GR/website.lang index 46c04f3276a..83585f34b55 100644 --- a/htdocs/langs/el_GR/website.lang +++ b/htdocs/langs/el_GR/website.lang @@ -1,45 +1,45 @@ # Dolibarr language file - Source file is en_US - website Shortname=Κώδικας WebsiteSetupDesc=Δημιουργήστε εδώ τις ιστοσελίδες που θέλετε να χρησιμοποιήσετε. Στη συνέχεια, μεταβείτε στο μενού Websites για να τις επεξεργαστείτε. -DeleteWebsite=Διαγραφή ιστοχώρου -ConfirmDeleteWebsite=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον ιστότοπο; Όλες οι σελίδες και το περιεχόμενό της θα καταργηθούν επίσης. Τα αρχεία που μεταφορτώνονται (όπως στον κατάλογο medias, στην ενότητα ECM, ...) θα παραμείνουν. -WEBSITE_TYPE_CONTAINER=Τύπος σελίδας / δοχείο +DeleteWebsite=Διαγραφή ιστότοπου +ConfirmDeleteWebsite=Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον ιστότοπο; Όλες οι σελίδες και το περιεχόμενό του θα αφαιρεθούν επίσης. Τα μεταφορτωμένα αρχεία (όπως στον κατάλογο μέσων, στη μονάδα ECM, ...) θα παραμείνουν. +WEBSITE_TYPE_CONTAINER=Τύπος σελίδας/κοντέινερ WEBSITE_PAGE_EXAMPLE=Web σελίδα που θα χρησιμοποιηθεί ως παράδειγμα WEBSITE_PAGENAME=Όνομα / ψευδώνυμο σελίδας WEBSITE_ALIASALT=Εναλλακτικά ονόματα σελίδων / ψευδώνυμα WEBSITE_ALIASALTDesc=Χρησιμοποιήστε εδώ μια λίστα με άλλα ονόματα / ψευδώνυμα, ώστε η σελίδα να είναι επίσης προσπελάσιμη χρησιμοποιώντας αυτά τα άλλα ονόματα / ψευδώνυμα (για παράδειγμα το παλιό όνομα μετά τη μετονομασία του ψευδωνύμου για να κρατήσει backlink σε παλιές συνδέσεις / ονόματα εργασίας). Η σύνταξη είναι:
εναλλακτικήεπιλογή1, εναλλακτικήεπιλογή2, ... -WEBSITE_CSS_URL=URL του εξωτερικού αρχείου CSS +WEBSITE_CSS_URL=URL εξωτερικού αρχείου CSS WEBSITE_CSS_INLINE=Περιεχόμενο αρχείου CSS (κοινό σε όλες τις σελίδες) WEBSITE_JS_INLINE=Περιεχόμενο αρχείου Javascript (κοινό σε όλες τις σελίδες) WEBSITE_HTML_HEADER=Προσθήκη στο κάτω μέρος της κεφαλίδας HTML (κοινό σε όλες τις σελίδες) WEBSITE_ROBOT=Αρχείο ρομπότ (robots.txt) -WEBSITE_HTACCESS=Ιστοσελίδα .htaccess +WEBSITE_HTACCESS=Αρχείο .htaccess ιστότοπου WEBSITE_MANIFEST_JSON=Αρχείο manifest.json ιστότοπου WEBSITE_README=Αρχείο README.md WEBSITE_KEYWORDSDesc=Χρησιμοποιήστε κόμμα για να διαχωρίσετε τιμές EnterHereLicenseInformation=Εισάγετε εδώ μεταδεδομένα ή πληροφορίες άδειας χρήσης για να συμπληρώσετε ένα αρχείο README.md. εάν διανέμετε τον ιστότοπό σας ως πρότυπο, το αρχείο θα συμπεριληφθεί στο πακέτο πειρασμών. -HtmlHeaderPage=Κεφαλίδα HTML (ειδικά για αυτή τη σελίδα) +HtmlHeaderPage=Κεφαλίδα HTML (συγκεκριμένη μόνο για αυτήν τη σελίδα) PageNameAliasHelp=Όνομα ή ψευδώνυμο της σελίδας.
Αυτό το ψευδώνυμο χρησιμοποιείται επίσης για τη δημιουργία μιας διεύθυνσης SEO όταν ο ιστότοπος έτρεξε από ένα Virtual host ενός διακομιστή Web (όπως Apacke, Nginx, ...). Χρησιμοποιήστε το κουμπί " %s " για να επεξεργαστείτε αυτό το ψευδώνυμο. EditTheWebSiteForACommonHeader=Σημείωση: Εάν θέλετε να ορίσετε μια εξατομικευμένη κεφαλίδα για όλες τις σελίδες, επεξεργαστείτε την κεφαλίδα σε επίπεδο ιστότοπου αντί για σελίδα / κοντέινερ. MediaFiles=Βιβλιοθήκη πολυμέσων EditCss=Επεξεργασία ιδιοτήτων ιστοτόπου EditMenu=Επεξεργασία μενού -EditMedias=Επεξεργασία μέσων +EditMedias=Επεξεργασία πολυμέσων EditPageMeta=Επεξεργασία ιδιοτήτων σελίδας / κοντέινερ EditInLine=Επεξεργασία εν σειρά AddWebsite=Προσθήκη ιστοτόπου -Webpage=Ιστοσελίδα / δοχείο -AddPage=Προσθήκη σελίδας / δοχείου +Webpage=Ιστοσελίδα/κοντέινερ +AddPage=Προσθήκη σελίδας/κοντέινερ PageContainer=Σελίδα -PreviewOfSiteNotYetAvailable=Η προεπισκόπηση του ιστότοπου σας %s δεν είναι ακόμη διαθέσιμη. Πρέπει πρώτα να ' Εισαγάγετε ένα πλήρες πρότυπο ιστότοπου ' ή απλώς ' Προσθέστε μια σελίδα/κοντέινερ '. +PreviewOfSiteNotYetAvailable=Η προ επισκόπηση του ιστότοπου σας %s δεν είναι ακόμη διαθέσιμη. Πρέπει πρώτα να ' Εισαγετε ένα πλήρες πρότυπο ιστότοπου ' ή απλώς ' Προσθέστε μια σελίδα/κοντέινερ '. RequestedPageHasNoContentYet=Η σελίδα που ζητήθηκε με id %s δεν έχει ακόμα περιεχόμενο, ή το αρχείο cache .tpl.php καταργήθηκε. Επεξεργαστείτε το περιεχόμενο της σελίδας για να το επιλύσετε. -SiteDeleted=Ο ιστότοπος "%s" διαγράφηκε +SiteDeleted=Ο ιστότοπος '%s' διαγράφηκε PageContent=Σελίδα / Contenair PageDeleted=Σελίδα / Contenair '%s' της ιστοσελίδας %s διαγράφεται PageAdded=Σελίδα / Contenair '%s' προστέθηκε -ViewSiteInNewTab=Προβολή χώρου σε νέα καρτέλα +ViewSiteInNewTab=Προβολή ιστότοπου σε νέα καρτέλα ViewPageInNewTab=Προβολή σελίδας σε νέα καρτέλα -SetAsHomePage=Ορισμός σαν αρχική σελίδα +SetAsHomePage=Ορισμός ως αρχική σελίδα RealURL=Πραγματική διεύθυνση URL ViewWebsiteInProduction=Προβάλετε τον ιστότοπο χρησιμοποιώντας τις διευθύνσεις URL για το σπίτι SetHereVirtualHost= Χρήση με Apache / Nginx / ...
Δημιουργήστε στον διακομιστή σας (Apache, Nginx, ...) ένα αποκλειστικό Virtual Host με το PHP ενεργοποιημένο και έναν ριζικό κατάλογο αρχείων στο
%s @@ -65,7 +65,7 @@ ClonePage=Σελίδα κλωνοποίησης / κοντέινερ CloneSite=Κλωνήστε τον ιστότοπο SiteAdded=Προστέθηκε ιστότοπος ConfirmClonePage=Εισαγάγετε τον κωδικό / ψευδώνυμο της νέας σελίδας και αν πρόκειται για μετάφραση της κλωνοποιημένης σελίδας. -PageIsANewTranslation=Η νέα σελίδα είναι μια μετάφραση της τρέχουσας σελίδας; +PageIsANewTranslation=Η νέα σελίδα είναι μετάφραση της τρέχουσας σελίδας; LanguageMustNotBeSameThanClonedPage=Κλωνίζετε μια σελίδα ως μετάφραση. Η γλώσσα της νέας σελίδας πρέπει να είναι διαφορετική από τη γλώσσα της σελίδας πηγής. ParentPageId=Αναγνωριστικό σελίδας γονέων WebsiteId=Αναγνωριστικό ιστοτόπου @@ -75,19 +75,19 @@ FetchAndCreate=Λήψη και Δημιουργία ExportSite=Εξαγωγή ιστότοπου ImportSite=Εισαγωγή προτύπου ιστότοπου IDOfPage=Αναγνωριστικό σελίδας -Banner=Πανό -BlogPost=Ανάρτηση -WebsiteAccount=Λογαριασμός ιστοτόπου +Banner=Banner +BlogPost=Blog post +WebsiteAccount=Λογαριασμός ιστότοπου WebsiteAccounts=Λογαριασμοί ιστοτόπων AddWebsiteAccount=Δημιουργία λογαριασμού ιστότοπου BackToListForThirdParty=Επιστροφή στη λίστα για το τρίτο μέρος DisableSiteFirst=Απενεργοποιήστε πρώτα τον ιστότοπο MyContainerTitle=Ο τίτλος ιστότοπού μου AnotherContainer=Αυτός είναι ο τρόπος με τον οποίο μπορείτε να συμπεριλάβετε περιεχόμενο μιας άλλης σελίδας / κοντέινερ (ενδεχομένως να έχετε ένα σφάλμα αν ενεργοποιήσετε τον δυναμικό κώδικα επειδή ο ενσωματωμένος υποελεγχος δεν υπάρχει) -SorryWebsiteIsCurrentlyOffLine=Λυπούμαστε, αυτός ο ιστότοπος είναι εκτός σύνδεσης. Παρακαλώ ξανασκέδασε αργότερα ... +SorryWebsiteIsCurrentlyOffLine=Λυπούμαστε, αυτός ο ιστότοπος είναι προς το παρόν εκτός σύνδεσης. Παρακαλώ επιστρέψτε αργότερα... WEBSITE_USE_WEBSITE_ACCOUNTS=Ενεργοποιήστε τον πίνακα λογαριασμού web site WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Ενεργοποιήστε τον πίνακα για να αποθηκεύσετε λογαριασμούς ιστότοπων (login / pass) για κάθε ιστότοπο / τρίτο μέρος -YouMustDefineTheHomePage=Πρέπει πρώτα να ορίσετε την προεπιλεγμένη Αρχική σελίδα +YouMustDefineTheHomePage=Πρέπει πρώτα να ορίσετε την Αρχική σελίδα OnlyEditionOfSourceForGrabbedContentFuture=Προειδοποίηση: Η δημιουργία ιστοσελίδας με εισαγωγή εξωτερικής ιστοσελίδας προορίζεται για έμπειρους χρήστες. Ανάλογα με την πολυπλοκότητα της σελίδας προέλευσης, το αποτέλεσμα της εισαγωγής ενδέχεται να διαφέρει από το πρωτότυπο. Επίσης, εάν η σελίδα προέλευσης χρησιμοποιεί κοινά στυλ CSS ή javascript σε διένεξη, ενδέχεται να σπάσει την εμφάνιση ή τις δυνατότητες του προγράμματος επεξεργασίας ιστότοπου όταν εργάζεστε σε αυτήν τη σελίδα. Αυτή η μέθοδος είναι ένας πιο γρήγορος τρόπος για να δημιουργήσετε μια σελίδα, αλλά συνιστάται να δημιουργήσετε τη νέα σας σελίδα από το μηδέν ή από ένα προτεινόμενο πρότυπο σελίδας.
Σημειώστε επίσης ότι ο ενσωματωμένος επεξεργαστής ενδέχεται να μην λειτουργεί σωστά όταν χρησιμοποιείται σε μια αρπαγή εξωτερική σελίδα. OnlyEditionOfSourceForGrabbedContent=Μόνο έκδοση πηγής HTML είναι δυνατή όταν το περιεχόμενο έχει ληφθεί από έναν εξωτερικό ιστότοπο GrabImagesInto=Πιάσε επίσης τις εικόνες που βρέθηκαν στο css και τη σελίδα. @@ -127,7 +127,7 @@ YouTryToAccessToAFileThatIsNotAWebsitePage=Προσπαθείτε να αποκ UseTextBetween5And70Chars=Για καλές πρακτικές SEO, χρησιμοποιήστε ένα κείμενο μεταξύ 5 και 70 χαρακτήρων MainLanguage=Κύρια γλώσσα OtherLanguages=Άλλες γλώσσες -UseManifest=Καταχωρίστε ένα αρχείο manifest.json +UseManifest=Παρέχετε ένα αρχείο manifest.json PublicAuthorAlias=Δημόσιο συντάκτης ψευδώνυμο AvailableLanguagesAreDefinedIntoWebsiteProperties=Οι διαθέσιμες γλώσσες ορίζονται σε ιδιότητες ιστότοπου ReplacementDoneInXPages=Η αντικατάσταση έγινε σε σελίδες ή κοντέινερ %s diff --git a/htdocs/langs/el_GR/withdrawals.lang b/htdocs/langs/el_GR/withdrawals.lang index 3785deefb9f..670fd54b818 100644 --- a/htdocs/langs/el_GR/withdrawals.lang +++ b/htdocs/langs/el_GR/withdrawals.lang @@ -45,8 +45,8 @@ MakeWithdrawRequest=Υποβάλετε αίτημα πληρωμής με άμε MakeBankTransferOrder=Υποβάλετε αίτημα μεταφοράς πίστωσης WithdrawRequestsDone=%s αιτήματα πληρωμής άμεσης χρέωσης καταγράφηκαν BankTransferRequestsDone=%s αιτήματα μεταφοράς πίστωσης καταγράφηκαν -ThirdPartyBankCode=Τραπεζικός κωδικός τρίτου μέρους -NoInvoiceCouldBeWithdrawed=Κανένα τιμολόγιο δεν χρεώθηκε με επιτυχία. Βεβαιωθείτε ότι τα τιμολόγια είναι σε εταιρείες με έγκυρο αριθμό IBAN και ότι ο IBAN έχει UMR (Unique Mandate Reference) με τον τρόπο %s . +ThirdPartyBankCode=Κωδικός τράπεζας τρίτου μέρους +NoInvoiceCouldBeWithdrawed=Κανένα τιμολόγιο δεν χρεώθηκε με επιτυχία. Ελέγξτε ότι τα τιμολόγια είναι σε εταιρείες με έγκυρο IBAN και ότι το IBAN διαθέτει UMR (Μοναδική αναφορά εντολής) με λειτουργία %s . WithdrawalCantBeCreditedTwice=Αυτή η απόδειξη ανάληψης έχει ήδη επισημανθεί ως πιστωμένη. Αυτό δεν μπορεί να γίνει δύο φορές, καθώς αυτό ενδέχεται να δημιουργήσει διπλές πληρωμές και εγγραφές τραπεζών. ClassCredited=Ταξινόμηση ως πιστωμένη ClassDebited=Ταξινόμηση ως χρεωμένη @@ -86,7 +86,7 @@ CreateForSepaRCUR=Δημιουργία αρχείου άμεσης χρέωση CreateAll=Δημιουργία αρχείου άμεσης χρέωσης CreateFileForPaymentByBankTransfer=Δημιουργία αρχείου μεταφορά πίστωσης CreateSepaFileForPaymentByBankTransfer=Δημιουργία αρχείου μεταφοράς πίστωσης (SEPA) -CreateGuichet=Μόνο το γραφείο +CreateGuichet=Μόνο ταμείο CreateBanque=Μόνο τράπεζα OrderWaiting=Αναμονή για επεξεργασία NotifyTransmision=Καταγραφή αποστολής αρχείου της παραγγελίας @@ -138,19 +138,19 @@ ExecutionDate=Ημερομηνία εκτέλεσης CreateForSepa=Δημιουργήστε αρχείο άμεσης χρέωσης ICS=Αναγνωριστικό Πιστωτή - ICS IDS=Αναγνωριστικό οφειλέτη -END_TO_END="EndToEndId" Ετικέτα XML SEPA - Μοναδική ταυτότητα που αντιστοιχεί σε κάθε συναλλαγή -USTRD="Μη δομημένη" ετικέτα XML SEPA +END_TO_END=Ετικέτα SEPA XML "EndToEndId" - Εκχωρείται μοναδικό αναγνωριστικό ανά συναλλαγή +USTRD="Μη δομημένη" ετικέτα XML SEPA ADDDAYS=Προσθήκη ημερών στην Ημερομηνία Εκτέλεσης NoDefaultIBANFound=Δεν βρέθηκε προεπιλεγμένο IBAN για αυτό το τρίτο μέρος ### Notifications InfoCreditSubject=Πληρωμή εντολής πληρωμής άμεσης χρέωσης %s από την τράπεζα -InfoCreditMessage=Η εντολή πληρωμής άμεσης χρέωσης %s έχει καταβληθεί από την τράπεζα
Στοιχεία πληρωμής: %s +InfoCreditMessage=Η εντολή πληρωμής άμεσης χρέωσης %s έχει πληρωθεί από την τράπεζα
Δεδομένα πληρωμής: %s InfoTransSubject=Διαβίβαση εντολής πληρωμής άμεσης χρέωσης %s στην τράπεζα InfoTransMessage=Η εντολή πληρωμής άμεσης χρέωσης %s έχει σταλεί στην τράπεζα από %s %s.

InfoTransData=Ποσό: %s
Μέθοδος: %s
Ημερομηνία: %s InfoRejectSubject=Η εντολή πληρωμής άμεσης χρέωσης απορρίφθηκε -InfoRejectMessage=Γεια σας,

η εντολή πληρωμής άμεσης χρέωσης του τιμολογίου %s σχετικά με την εταιρεία %s, με το ποσό %s απορρίφθηκε από την τράπεζα.

-
%s -ModeWarning=Επιλογή για την πραγματική κατάσταση, δεν είχε καθοριστεί, σταματάμε μετά από αυτή την προσομοίωση +InfoRejectMessage=Γεια σας,

η εντολή πληρωμής άμεσης χρέωσης του τιμολογίου %s που σχετίζεται με την εταιρεία %s, με ποσό %s απορρίφθηκε από την τράπεζα.

--
%s +ModeWarning=Η επιλογή για πραγματική λειτουργία δεν ορίστηκε, σταματάμε μετά από αυτήν την προσομοίωση ErrorCompanyHasDuplicateDefaultBAN=Η εταιρεία με αναγνωριστικό %s έχει περισσότερους από έναν προεπιλεγμένους τραπεζικούς λογαριασμούς. Δεν υπάρχει τρόπος να ξέρετε ποιο θα χρησιμοποιηθεί. ErrorICSmissing=Λείπει το ICS στον τραπεζικό λογαριασμό %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=Το συνολικό ποσό της εντολής πάγιας εντολής διαφέρει από το άθροισμα των γραμμών diff --git a/htdocs/langs/en_AE/members.lang b/htdocs/langs/en_AE/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_AE/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_AE/projects.lang b/htdocs/langs/en_AE/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_AE/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/en_AU/members.lang b/htdocs/langs/en_AU/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_AU/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_AU/projects.lang b/htdocs/langs/en_AU/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_AU/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/en_CA/members.lang b/htdocs/langs/en_CA/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_CA/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_CA/projects.lang b/htdocs/langs/en_CA/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_CA/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/en_GB/admin.lang b/htdocs/langs/en_GB/admin.lang index 140e92f0fcc..d185f42b80b 100644 --- a/htdocs/langs/en_GB/admin.lang +++ b/htdocs/langs/en_GB/admin.lang @@ -47,5 +47,3 @@ GenbarcodeLocation=Barcode generation command line tool (used by internal engine FormatZip=Postcode OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
-IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/en_GB/externalsite.lang b/htdocs/langs/en_GB/externalsite.lang deleted file mode 100644 index 1febedb9fed..00000000000 --- a/htdocs/langs/en_GB/externalsite.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteModuleNotComplete=Module "External Site" was not configured properly. diff --git a/htdocs/langs/en_GB/ftp.lang b/htdocs/langs/en_GB/ftp.lang deleted file mode 100644 index f1ea309c715..00000000000 --- a/htdocs/langs/en_GB/ftp.lang +++ /dev/null @@ -1,2 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPFailedToRemoveFile=Failed to delete file %s. diff --git a/htdocs/langs/en_GB/members.lang b/htdocs/langs/en_GB/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_GB/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_GB/other.lang b/htdocs/langs/en_GB/other.lang new file mode 100644 index 00000000000..42139bcfa76 --- /dev/null +++ b/htdocs/langs/en_GB/other.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - other +ExternalSiteModuleNotComplete=Module "External Site" was not configured properly. +FTPFailedToRemoveFile=Failed to delete file %s. diff --git a/htdocs/langs/en_GB/projects.lang b/htdocs/langs/en_GB/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_GB/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/en_IN/members.lang b/htdocs/langs/en_IN/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_IN/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_SG/members.lang b/htdocs/langs/en_SG/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_SG/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_SG/projects.lang b/htdocs/langs/en_SG/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_SG/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index b059cc9952a..d95791111cd 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -48,8 +48,9 @@ CountriesNotInEEC=Countries not in EEC CountriesInEECExceptMe=Countries in EEC except %s CountriesExceptMe=All countries except %s AccountantFiles=Export source documents -ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). ExportAccountingSourceDocHelp2=To export your journals, use the menu entry %s - %s. +ExportAccountingProjectHelp=Specify a project if you need an accounting report only for a specific project. Expense reports and loan payments are not included in project reports. VueByAccountAccounting=View by accounting account VueBySubAccountAccounting=View by accounting subaccount @@ -183,6 +184,8 @@ ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Accounting account to register subscript ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) +ACCOUNTING_ACCOUNT_SUPPLIER_DEPOSIT=Accounting account by default to register supplier deposit +UseAuxiliaryAccountOnSupplierDeposit=Store supplier account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for the bought products (used if not defined in the product sheet) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet) @@ -279,7 +282,7 @@ DescVentilExpenseReportMore=If you setup accounting account on type of expense r DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account Closure=Annual closure -DescClosure=Consult here the number of movements by month who are not yet validated & locked +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Overview of movements not validated and locked AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked @@ -332,7 +335,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accou ## Export NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) -NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Date validation and lock ConfirmExportFile=Confirmation of the generation of the accounting export file ? ExportDraftJournal=Export draft journal diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 698ade8b8d1..f34d0a17e15 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Next value (replacements) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) -UseCaptchaCode=Use graphical code (CAPTCHA) on login page +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Full path to antivirus command AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line @@ -477,7 +477,7 @@ InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Init value for next %s empty records +InitEmptyBarCode=Init value for the %s empty barcodes EraseAllCurrentBarCode=Erase all current barcode values ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values? AllBarcodeReset=All barcode values have been removed @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -714,6 +714,7 @@ Permission27=Delete commercial proposals Permission28=Export commercial proposals Permission31=Read products Permission32=Create/modify products +Permission33=Read prices products Permission34=Delete products Permission36=See/manage hidden products Permission38=Export products @@ -739,6 +740,7 @@ Permission79=Create/modify subscriptions Permission81=Read customers orders Permission82=Create/modify customers orders Permission84=Validate customers orders +Permission85=Generate the documents sales orders Permission86=Send customers orders Permission87=Close customers orders Permission88=Cancel customers orders @@ -874,6 +876,7 @@ Permission525=Access loan calculator Permission527=Export loans Permission531=Read services Permission532=Create/modify services +Permission533=Read prices services Permission534=Delete services Permission536=See/manage hidden services Permission538=Export services @@ -897,7 +900,7 @@ Permission701=Read donations Permission702=Create/modify donations Permission703=Delete donations Permission771=Read expense reports (yours and your subordinates) -Permission772=Create/modify expense reports (for you and your subordinates) +Permission772=Create/modify expense reports (for you and your subordinates) Permission773=Delete expense reports Permission775=Approve expense reports Permission776=Pay expense reports @@ -1129,7 +1132,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=At end of month -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Offset AlwaysActive=Always active Upgrade=Upgrade @@ -1977,6 +1980,7 @@ MailToSendSupplierOrder=Purchase orders MailToSendSupplierInvoice=Vendor invoices MailToSendContract=Contracts MailToSendReception=Receptions +MailToExpenseReport=Expense reports MailToThirdparty=Third parties MailToMember=Members MailToUser=Users @@ -2030,6 +2034,7 @@ MAIN_PDF_MARGIN_RIGHT=Right margin on PDF MAIN_PDF_MARGIN_TOP=Top margin on PDF MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF +DOC_SHOW_FIRST_SALES_REP=Show first sales representative MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame @@ -2063,6 +2068,12 @@ EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server +EMailHostPort=Port of email IMAP server +loginPassword=Login/Password +oauthToken=Oauth2 token +accessType=Acces type +oauthService=Oauth service +TokenMustHaveBeenCreated=Module OAuth2 must be enabled and an oauth2 token must have been created with the correct permissions (for example scope "gmail_full" with OAuth for Gmail). MailboxSourceDirectory=Mailbox source directory MailboxTargetDirectory=Mailbox target directory EmailcollectorOperations=Operations to do by collector @@ -2106,7 +2117,7 @@ CreateCandidature=Create job application FormatZip=Zip MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\s*([^\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. +OperationParamDesc=Define the rules to use to extract some data or set values to use for operation.

Example to extract a company name from email subject into a temporary variable:
tmp_var=EXTRACT:SUBJECT:Message from company ([^\n]*)

Examples to set the properties of an object to create:
objproperty1=SET:a hard coded value
objproperty2=SET:__tmp_var__
objproperty3=SETIFEMPTY:a value (value is set only if property is not already defined)
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\s*([^\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\s([^\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Opening hours OpeningHoursDesc=Enter here the regular opening hours of your company. ResourceSetup=Configuration of Resource module @@ -2169,7 +2180,7 @@ EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name -THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF @@ -2212,6 +2223,7 @@ NoExternalModuleWithUpdate=No updates found for external modules SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. RandomlySelectedIfSeveral=Randomly selected if several pictures are available +SalesRepresentativeInfo=For Proposals, Orders, Invoces. DatabasePasswordObfuscated=Database password is obfuscated in conf file DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file APIsAreNotEnabled=APIs modules are not enabled @@ -2277,4 +2289,20 @@ INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their i INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. IfThisCategoryIsChildOfAnother=If this category is a child of another one +DarkThemeMode=Dark theme mode +AlwaysDisabled=Always disabled +AccordingToBrowser=According to browser +AlwaysEnabled=Always Enabled +DoesNotWorkWithAllThemes=Will not work with all themes NoName=No name +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +OauthNotAvailableForAllAndHadToBeCreatedBefore=OAUTH2 authentication is not available for all hosts, and a token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_OAUTH_SERVICE=OAUTH2 authentication service +DontForgetCreateTokenOauthMod=A token with the right permissions must have been created upstream with the OAUTH module +MAIN_MAIL_SMTPS_AUTH_TYPE=Authentification method +UsePassword=Use a password +UseOauth=Use a OAUTH token +Images=Images +MaxNumberOfImagesInGetPost=Max number of images allowed in GETPOST check \ No newline at end of file diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 272ec22df5c..9dffacf774c 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -57,6 +57,7 @@ MemberValidatedInDolibarr=Member %s validated MemberModifiedInDolibarr=Member %s modified MemberResiliatedInDolibarr=Member %s terminated MemberDeletedInDolibarr=Member %s deleted +MemberExcludedInDolibarr=Member %s excluded MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted @@ -135,7 +136,7 @@ AgendaUrlOptionsNotAdmin=logina=!%s to restrict output to actions not own AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s (owner and others). AgendaUrlOptionsProject=project=__PROJECT_ID__ to restrict output to actions linked to project __PROJECT_ID__. AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto to exclude automatic events. -AgendaUrlOptionsIncludeHolidays=includeholidays=1 to include events of holidays. +AgendaUrlOptionsIncludeHolidays=includeholidays=1 to include events of holidays. AgendaShowBirthdayEvents=Birthdays of contacts AgendaHideBirthdayEvents=Hide birthdays of contacts Busy=Busy @@ -159,6 +160,7 @@ DateActionBegin=Start event date ConfirmCloneEvent=Are you sure you want to clone the event %s? RepeatEvent=Repeat event OnceOnly=Once only +EveryDay=Every day EveryWeek=Every week EveryMonth=Every month DayOfMonth=Day of month @@ -174,3 +176,4 @@ AddReminder=Create an automatic reminder notification for this event ErrorReminderActionCommCreation=Error creating the reminder notification for this event BrowserPush=Browser Popup Notification ActiveByDefault=Enabled by default +Until=until \ No newline at end of file diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang index 22ca3f4cec1..7af765216d9 100644 --- a/htdocs/langs/en_US/bills.lang +++ b/htdocs/langs/en_US/bills.lang @@ -446,6 +446,7 @@ ErrorPaymentConditionsNotEligibleToDepositCreation=The chose payment conditions PaymentTypeVIR=Bank transfer PaymentTypeShortVIR=Bank transfer PaymentTypePRE=Direct debit payment order +PaymentTypePREdetails=(on account *-%s) PaymentTypeShortPRE=Debit payment order PaymentTypeLIQ=Cash PaymentTypeShortLIQ=Cash @@ -620,4 +621,4 @@ NoPaymentAvailable=No payment available for %s PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices MakePaymentAndClassifyPayed=Record payment -BulkPaymentNotPossibleForInvoice=Bulk payment is not possible for invoice %s (bad type or status) \ No newline at end of file +BulkPaymentNotPossibleForInvoice=Bulk payment is not possible for invoice %s (bad type or status) diff --git a/htdocs/langs/en_US/boxes.lang b/htdocs/langs/en_US/boxes.lang index 2ace1eb97e1..4173d5e4c7e 100644 --- a/htdocs/langs/en_US/boxes.lang +++ b/htdocs/langs/en_US/boxes.lang @@ -46,6 +46,7 @@ BoxMyLastBookmarks=Bookmarks: latest %s BoxOldestExpiredServices=Oldest active expired services BoxLastExpiredServices=Latest %s oldest contacts with active expired services BoxTitleLastActionsToDo=Latest %s actions to do +BoxTitleOldestActionsToDo=Oldest %s event to do not completed BoxTitleLastContracts=Latest %s contracts which were modified BoxTitleLastModifiedDonations=Latest %s donations which were modified BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified diff --git a/htdocs/langs/en_US/cashdesk.lang b/htdocs/langs/en_US/cashdesk.lang index b53eb235c29..9cde66460d3 100644 --- a/htdocs/langs/en_US/cashdesk.lang +++ b/htdocs/langs/en_US/cashdesk.lang @@ -59,7 +59,7 @@ BillsCoinsPad=Coins and banknotes Pad DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr TakeposNeedsCategories=TakePOS needs at least one product categorie to work TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category %s to work -OrderNotes=Can add some notes to each ordered items +OrderNotes=Can add some notes to each ordered items CashDeskBankAccountFor=Default account to use for payments in NoPaimementModesDefined=No paiment mode defined in TakePOS configuration TicketVatGrouped=Group VAT by rate in tickets|receipts @@ -118,7 +118,7 @@ ScanToOrder=Scan QR code to order Appearance=Appearance HideCategoryImages=Hide Category Images HideProductImages=Hide Product Images -NumberOfLinesToShow=Number of lines of images to show +NumberOfLinesToShow=Number of lines of images to show DefineTablePlan=Define tables plan GiftReceiptButton=Add a "Gift receipt" button GiftReceipt=Gift receipt @@ -136,4 +136,12 @@ PrintWithoutDetails=Print without details YearNotDefined=Year is not defined TakeposBarcodeRuleToInsertProduct=Barcode rule to insert product TakeposBarcodeRuleToInsertProductDesc=Rule to extract the product reference + a quantity from a scanned barcode.
If empty (default value), application will use the full barcode scanned to find the product.

If defined, syntax must be:
ref:NB+qu:NB+qd:NB+other:NB
where NB is the number of characters to use to extract data from the scanned barcode with:
  • ref : product reference
  • qu : quantity to set when inserting item (units)
  • qd : quantity to set when inserting item (decimals)
  • other : others characters
-AlreadyPrinted=Already printed \ No newline at end of file +AlreadyPrinted=Already printed +HideCategories=Hide categories +HideStockOnLine=Hide stock on line +ShowOnlyProductInStock=Show the products in stock +ShowCategoryDescription=Show category description +ShowProductReference=Show reference of products +UsePriceHT=Use price excl. taxes and not price incl. taxes +TerminalName=Terminal %s +TerminalNameDesc=Terminal name diff --git a/htdocs/langs/en_US/categories.lang b/htdocs/langs/en_US/categories.lang index 62c2752ff9f..1b39825d4ac 100644 --- a/htdocs/langs/en_US/categories.lang +++ b/htdocs/langs/en_US/categories.lang @@ -100,3 +100,4 @@ ActionCommCategoriesArea=Event Categories WebsitePagesCategoriesArea=Page-Container Categories KnowledgemanagementsCategoriesArea=KM article Categories UseOrOperatorForCategories=Use 'OR' operator for categories +AddObjectIntoCategory=Add object into category diff --git a/htdocs/langs/en_US/companies.lang b/htdocs/langs/en_US/companies.lang index c4a964b6b62..996c98c203a 100644 --- a/htdocs/langs/en_US/companies.lang +++ b/htdocs/langs/en_US/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Address State=State/Province +StateId=State ID StateCode=State/Province code StateShort=State Region=Region Region-State=Region - State Country=Country CountryCode=Country code -CountryId=Country id +CountryId=Country ID Phone=Phone PhoneShort=Phone Skype=Skype @@ -443,7 +444,7 @@ AddAddress=Add address SupplierCategory=Vendor category JuridicalStatus200=Independent DeleteFile=Delete file -ConfirmDeleteFile=Are you sure you want to delete this file? +ConfirmDeleteFile=Are you sure you want to delete this file %s? AllocateCommercial=Assigned to sales representative Organization=Organization FiscalYearInformation=Fiscal Year diff --git a/htdocs/langs/en_US/contracts.lang b/htdocs/langs/en_US/contracts.lang index 8d209623c1b..ab94a63bcc3 100644 --- a/htdocs/langs/en_US/contracts.lang +++ b/htdocs/langs/en_US/contracts.lang @@ -80,7 +80,7 @@ ConfirmDeleteContractLine=Are you sure you want to delete this contract line? MoveToAnotherContract=Move service into another contract. ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to? -PaymentRenewContractId=Renew contract line (number %s) +PaymentRenewContractId=Renew contract %s (service %s) ExpiredSince=Expiration date NoExpiredServices=No expired active services ListOfServicesToExpireWithDuration=List of Services to expire in %s days diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 2857d7a3f54..b47199e8fe2 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript must not be disabled to have this featur ErrorPasswordsMustMatch=Both typed passwords must match each other ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s errors found @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -288,11 +289,14 @@ ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=Request failed ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory - +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s +ErrorFailedToLoadThirdParty=Failed to find/load thirdparty from id=%s, email=%s, name=%s + # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=Click here to setup mandatory parameters +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Click here to enable your modules and applications WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. @@ -323,7 +327,8 @@ WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connec WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME - +WarningPagesWillBeDeleted=Warning, this will also delete all existing pages/containers of the website. You should export your website before, so you have a backup to re-import it later. + # Validate RequireValidValue = Value not valid RequireAtLeastXString = Requires at least %s character(s) diff --git a/htdocs/langs/en_US/eventorganization.lang b/htdocs/langs/en_US/eventorganization.lang index 858e0937788..b4179b04be6 100644 --- a/htdocs/langs/en_US/eventorganization.lang +++ b/htdocs/langs/en_US/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Conference Or Booth AmountPaid = Amount paid DateOfRegistration = Date of registration ConferenceOrBoothAttendee = Conference Or Booth Attendee +ApplicantOrVisitor=Applicant or visitor +Speaker=Speaker # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Your payment for your event re OrganizationEventBulkMailToAttendees=This is a remind about your participation in the event as an attendee OrganizationEventBulkMailToSpeakers=This is a reminder on your participation in the event as a speaker OrganizationEventLinkToThirdParty=Link to third party (customer, supplier or partner) +OrganizationEvenLabelName=Public name of the conference or booth NewSuggestionOfBooth=Application for a booth NewSuggestionOfConference=Application for a conference diff --git a/htdocs/langs/en_US/externalsite.lang b/htdocs/langs/en_US/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/en_US/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/en_US/ftp.lang b/htdocs/langs/en_US/ftp.lang deleted file mode 100644 index 254a2a698ce..00000000000 --- a/htdocs/langs/en_US/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP or SFTP Client module setup -NewFTPClient=New FTP/FTPS connection setup -FTPArea=FTP/FTPS Area -FTPAreaDesc=This screen shows a view of an FTP et SFTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions -FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index 3d0ae64be0f..0ab79985ea7 100644 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -4,6 +4,7 @@ Holidays=Leave CPTitreMenu=Leave MenuReportMonth=Monthly statement MenuAddCP=New leave request +MenuCollectiveAddCP=New collective leave request NotActiveModCP=You must enable the module Leave to view this page. AddCP=Make a leave request DateDebCP=Start date @@ -79,6 +80,8 @@ MotifCP=Reason UserCP=User ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. AddEventToUserOkCP=The addition of the exceptional leave has been completed. +ErrorFieldRequiredUserOrGroup=The "group" field or the "user" field must be filled in +fusionGroupsUsers=The groups field and the user field will be merged MenuLogCP=View change logs LogCP=Log of all updates made to "Balance of Leave" ActionByCP=Updated by @@ -86,6 +89,13 @@ UserUpdateCP=Updated for PrevSoldeCP=Previous Balance NewSoldeCP=New Balance alreadyCPexist=A leave request has already been done on this period. +UseralreadyCPexist=A leave request has already been done on this period for %s. +groups=Groups +users=Users +AutoSendMail=Automatic mailing +NewHolidayForGroup=New collective leave request +SendRequestCollectiveCP=Send collective leave request +AutoValidationOnCreate=Automatic validation FirstDayOfHoliday=Beginning day of leave request LastDayOfHoliday=Ending day of leave request BoxTitleLastLeaveRequests=Latest %s modified leave requests @@ -137,3 +147,4 @@ XIsAUsualNonWorkingDay=%s is usualy a NON working day BlockHolidayIfNegative=Block if balance negative LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +HolidayQtyNotModified=Balance of remaining days for %s has not been changed \ No newline at end of file diff --git a/htdocs/langs/en_US/hrm.lang b/htdocs/langs/en_US/hrm.lang index a45028aba60..cbd3dc91663 100644 --- a/htdocs/langs/en_US/hrm.lang +++ b/htdocs/langs/en_US/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Open establishment CloseEtablishment=Close establishment # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Department list +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Employees @@ -88,4 +88,5 @@ DeleteSkill = Skill removed SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Attributs supplémentaires (Evaluations) -NeedBusinessTravels=Need business travels \ No newline at end of file +NeedBusinessTravels=Need business travels +NoDescription=No description \ No newline at end of file diff --git a/htdocs/langs/en_US/install.lang b/htdocs/langs/en_US/install.lang index a6716034c2d..1b9eb767416 100644 --- a/htdocs/langs/en_US/install.lang +++ b/htdocs/langs/en_US/install.lang @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. ErrorFailedToCreateDatabase=Failed to create database '%s'. ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. -ErrorPHPVersionTooLow=PHP version too old. Version %s is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Database '%s' already exists. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. @@ -49,7 +51,6 @@ DatabaseName=Database name DatabasePrefix=Database table prefix DatabasePrefixDescription=Database table prefix. If empty, defaults to llx_. AdminLogin=User account for the Dolibarr database owner. -PasswordAgain=Retype password confirmation AdminPassword=Password for Dolibarr database owner. CreateDatabase=Create database CreateUser=Create user account or grant user account permission on the Dolibarr database @@ -211,3 +212,5 @@ ClickHereToGoToApp=Click here to go to your application ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. Loaded=Loaded FunctionTest=Function test +NodoUpgradeAfterDB=No action requested by external modules after upgrade of database +NodoUpgradeAfterFiles=No action requested by external modules after upgrade of files or directories \ No newline at end of file diff --git a/htdocs/langs/en_US/interventions.lang b/htdocs/langs/en_US/interventions.lang index a57a84fc4c8..767688a4ce8 100644 --- a/htdocs/langs/en_US/interventions.lang +++ b/htdocs/langs/en_US/interventions.lang @@ -68,3 +68,4 @@ ConfirmReopenIntervention=Are you sure you want to open back the intervention %s. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota. diff --git a/htdocs/langs/en_US/main.lang b/htdocs/langs/en_US/main.lang index 9241120c9db..1cc05709471 100644 --- a/htdocs/langs/en_US/main.lang +++ b/htdocs/langs/en_US/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=. @@ -216,7 +222,7 @@ UserGroup=User group UserGroups=User groups NoUserGroupDefined=No user group defined Password=Password -PasswordRetype=Retype your password +PasswordRetype=Repeat your password NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. Name=Name NameSlashCompany=Name / Company @@ -345,7 +351,7 @@ KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes TeraBytes=Terabytes -UserAuthor=Ceated by +UserAuthor=Created by UserModif=Updated by b=b. Kb=Kb @@ -712,6 +718,7 @@ FeatureDisabled=Feature disabled MoveBox=Move widget Offered=Offered NotEnoughPermissions=You don't have permission for this action +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Session name Method=Method Receive=Receive @@ -801,6 +808,7 @@ URLPhoto=URL of photo/logo SetLinkToAnotherThirdParty=Link to another third party LinkTo=Link to LinkToProposal=Link to proposal +LinkToExpedition= Link to expedition LinkToOrder=Link to order LinkToInvoice=Link to invoice LinkToTemplateInvoice=Link to template invoice @@ -1177,4 +1185,7 @@ CommercialAffected=Sales representative affected YourMessage=Your message YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. UrlToCheck=Url to check -Automation=Automation \ No newline at end of file +Automation=Automation +CreatedByEmailCollector=Created by Email collector +CreatedByPublicPortal=Created from Public portal +UserAgent=User Agent \ No newline at end of file diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang index 22060706a36..e4ca610c44f 100644 --- a/htdocs/langs/en_US/members.lang +++ b/htdocs/langs/en_US/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Member id +MemberId=Member Id +MemberRef=Member Ref NewMember=New member MemberType=Member type MemberTypeId=Member type id @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Member type can not be deleted NewSubscription=New contribution NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. Subscription=Contribution +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Contributions SubscriptionLate=Late SubscriptionNotReceived=Contribution never received @@ -135,7 +142,7 @@ CardContent=Content of your member card # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=We want to let you know that your membership request was received.

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

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

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest @@ -198,7 +205,8 @@ NbOfSubscriptions=Number of contributions AmountOfSubscriptions=Amount collected from contributions TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) DefaultAmount=Default amount of contribution -CanEditAmount=Visitor can choose/edit amount of its contribution +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page ByProperties=By nature MembersStatisticsByProperties=Members statistics by nature diff --git a/htdocs/langs/en_US/modulebuilder.lang b/htdocs/langs/en_US/modulebuilder.lang index b17ab4fdeb2..cab8fa37f16 100644 --- a/htdocs/langs/en_US/modulebuilder.lang +++ b/htdocs/langs/en_US/modulebuilder.lang @@ -1,7 +1,8 @@ # Dolibarr language file - Source file is en_US - loan +IdModule= Module id ModuleBuilderDesc=This tool must be used only by experienced users or developers. It provides utilities to build or edit your own module. Documentation for alternative manual development is here. EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. +EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, the pages to list/add/edit/delete the object and the SQL files will be generated. EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s ModuleBuilderDesc3=Generated/editable modules found: %s @@ -9,6 +10,7 @@ ModuleBuilderDesc4=A module is detected as 'editable' when the file %s$this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +BadValueForType=Bad value for type %s \ No newline at end of file diff --git a/htdocs/langs/en_US/oauth.lang b/htdocs/langs/en_US/oauth.lang index 08f7956f455..b7f7c0c2c1a 100644 --- a/htdocs/langs/en_US/oauth.lang +++ b/htdocs/langs/en_US/oauth.lang @@ -9,8 +9,9 @@ HasAccessToken=A token was generated and saved into local database NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token deleted +GetAccess=Click here to get a token RequestAccess=Click here to request/renew access and receive a new token -DeleteAccess=Click here to delete token +DeleteAccess=Click here to delete the token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens @@ -33,4 +34,6 @@ OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live OAUTH_ID=OAuth ID OAUTH_SECRET=OAuth secret OAuthProviderAdded=OAuth provider added -AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists \ No newline at end of file +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists +URLOfServiceForAuthorization=URL provided by OAuth service for authentication +Scopes=Scopes \ No newline at end of file diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index a4261f8e62c..aa7dd934ede 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=An order was already open linked to this proposal, so no other order was created automatically OrdersArea=Customers orders area SuppliersOrdersArea=Purchase orders area OrderCard=Order card diff --git a/htdocs/langs/en_US/other.lang b/htdocs/langs/en_US/other.lang index 9857ad821ed..46cb61ff3f0 100644 --- a/htdocs/langs/en_US/other.lang +++ b/htdocs/langs/en_US/other.lang @@ -304,3 +304,30 @@ ConfirmBtnCommonContent = Are you sure you want to "%s" ? ConfirmBtnCommonTitle = Confirm your action CloseDialog = Close Autofill = Autofill + +# externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL of HTML iframe content +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry + +# ftp +FTPClientSetup=FTP or SFTP Client module setup +NewFTPClient=New FTP/SFTP connection setup +FTPArea=FTP/SFTP Area +FTPAreaDesc=This screen shows a view of an FTP et SFTP server. +SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions +FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. +FTPPassiveMode=Passive mode +ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... +FailedToGetFile=Failed to get files %s +ErrorFTPNodisconnect=Error to disconnect FTP/SFTP server +FileWasUpload=File %s was uploaded +FTPFailedToUploadFile=Failed to upload the file %s. +AddFolder=Create folder +FileWasCreateFolder=Folder %s has been created +FTPFailedToCreateFolder=Failed to create folder %s. diff --git a/htdocs/langs/en_US/paypal.lang b/htdocs/langs/en_US/paypal.lang index beaf9a5ea3f..a935cd38434 100644 --- a/htdocs/langs/en_US/paypal.lang +++ b/htdocs/langs/en_US/paypal.lang @@ -34,3 +34,4 @@ ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. ValidationOfPaymentFailed=Validation of payment has failed CardOwner=Card holder PayPalBalance=Paypal credit +OnlineSubscriptionPaymentLine=Online subscription recorded on %s
Paid via %s
Originating IP address: %s
Transaction ID: %s diff --git a/htdocs/langs/en_US/products.lang b/htdocs/langs/en_US/products.lang index 94d77315217..bf2dabf5a0a 100644 --- a/htdocs/langs/en_US/products.lang +++ b/htdocs/langs/en_US/products.lang @@ -345,7 +345,7 @@ PossibleValues=Possible values GoOnMenuToCreateVairants=Go on menu %s - %s to prepare attribute variants (like colors, size, ...) UseProductFournDesc=Add a feature to define the product description defined by the vendors (for each vendor reference) in addition to the description for customers ProductSupplierDescription=Vendor description for the product -UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) +UseProductSupplierPackaging=Use packaging for prices rounded to multiples for purchase prices (recalculate quantities according to multiples set on purchase prices when adding/updating line in a vendor documents) PackagingForThisProduct=Packaging PackagingForThisProductDesc=You will automaticaly purchase a multiple of this quantity. QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging @@ -427,3 +427,4 @@ RealValuation=Real Valuation ConfirmEditExtrafield = Select the extrafield you want modify ConfirmEditExtrafieldQuestion = Are you sure you want to modify this extrafield? ModifyValueExtrafields = Modify value of an extrafield +OrProductsWithCategories=Or products with tags/categories diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index e0fa85dd273..037ddd1c4e1 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Time spent billed TimeSpentForIntervention=Time spent TimeSpentForInvoice=Time spent OneLinePerUser=One line per user -ServiceToUseOnLines=Service to use on lines +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on project InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project ProjectBillTimeDescription=Check if you enter timesheet on tasks of project AND you plan to generate invoice(s) from the timesheet to bill the customer of the project (do not check if you plan to create invoice that is not based on entered timesheets). Note: To generate invoice, go on tab 'Time spent' of the project and select lines to include. @@ -293,4 +293,5 @@ LeadPublicFormDesc=You can enable here a public page to allow your prospects to EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form \ No newline at end of file +LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report \ No newline at end of file diff --git a/htdocs/langs/en_US/stocks.lang b/htdocs/langs/en_US/stocks.lang index f28151c9efe..47483bb8f3b 100644 --- a/htdocs/langs/en_US/stocks.lang +++ b/htdocs/langs/en_US/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Started ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory diff --git a/htdocs/langs/en_US/stripe.lang b/htdocs/langs/en_US/stripe.lang index 0a376ca9fb1..3ea0cf2354b 100644 --- a/htdocs/langs/en_US/stripe.lang +++ b/htdocs/langs/en_US/stripe.lang @@ -68,4 +68,5 @@ ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mo ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. ClickHereToTryAgain=Click here to try again... -CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s \ No newline at end of file +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s +TERMINAL_LOCATION=Location (address) for terminals \ No newline at end of file diff --git a/htdocs/langs/en_US/suppliers.lang b/htdocs/langs/en_US/suppliers.lang index 15da3f0638a..08895194016 100644 --- a/htdocs/langs/en_US/suppliers.lang +++ b/htdocs/langs/en_US/suppliers.lang @@ -4,6 +4,7 @@ SuppliersInvoice=Vendor invoice SupplierInvoices=Vendor invoices ShowSupplierInvoice=Show Vendor Invoice NewSupplier=New vendor +NewSupplierInvoice = New vendor invoice History=History ListOfSuppliers=List of vendors ShowSupplier=Show vendor diff --git a/htdocs/langs/en_US/ticket.lang b/htdocs/langs/en_US/ticket.lang index 8ff20570316..f34f338c931 100644 --- a/htdocs/langs/en_US/ticket.lang +++ b/htdocs/langs/en_US/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=A public interface requiring no identification is available a TicketSetupDictionaries=The type of ticket, severity and analytic codes are configurable from dictionaries TicketParamModule=Module variable setup TicketParamMail=Email setup -TicketEmailNotificationFrom=Sender e-mail for ticket answers -TicketEmailNotificationFromHelp=Sender e-mail for ticket answers sent from Dolibarr +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Notify ticket creation to this e-mail address TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation TicketNewEmailBodyLabel=Text message sent after creating a ticket diff --git a/htdocs/langs/en_US/website.lang b/htdocs/langs/en_US/website.lang index b5ef14bd118..3d5a57e91d3 100644 --- a/htdocs/langs/en_US/website.lang +++ b/htdocs/langs/en_US/website.lang @@ -1,5 +1,6 @@ # Dolibarr language file - Source file is en_US - website Shortname=Code +WebsiteName=Name of the website WebsiteSetupDesc=Create here the websites you wish to use. Then go into menu Websites to edit them. DeleteWebsite=Delete website ConfirmDeleteWebsite=Are you sure you want to delete this web site? All its pages and content will also be removed. The files uploaded (like into the medias directory, the ECM module, ...) will remain. @@ -42,6 +43,8 @@ ViewPageInNewTab=View page in new tab SetAsHomePage=Set as Home page RealURL=Real URL ViewWebsiteInProduction=View web site using home URLs +Virtualhost=Virtual host or domain name +VirtualhostDesc=The name of the Virtual host or domain (For example: www.mywebsite.com, mybigcompany.net, ...) SetHereVirtualHost=Use with Apache/NGinx/...
Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on
%s ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: YouCanAlsoTestWithPHPS=Use with PHP embedded server
On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running
php -S 0.0.0.0:8080 -t %s @@ -145,3 +148,6 @@ ImportFavicon=Favicon ErrorFaviconType=Favicon must be png ErrorFaviconSize=Favicon must be sized 16x16, 32x32 or 64x64 FaviconTooltip=Upload an image which needs to be a png (16x16, 32x32 or 64x64) +NextContainer=Next page/container +PreviousContainer=Previous page/container +WebsiteMustBeDisabled=The website must have the status "Disabled" diff --git a/htdocs/langs/en_ZA/members.lang b/htdocs/langs/en_ZA/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/en_ZA/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/en_ZA/projects.lang b/htdocs/langs/en_ZA/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/en_ZA/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_AR/admin.lang b/htdocs/langs/es_AR/admin.lang index e01b13955c1..d4c97462b25 100644 --- a/htdocs/langs/es_AR/admin.lang +++ b/htdocs/langs/es_AR/admin.lang @@ -76,7 +76,6 @@ NextValueForDeposit=Siguiente valor (pago inicial) NextValueForReplacements=Siguiente valor (reemplazos) NoMaxSizeByPHPLimit=Nota: no hay límite establecido en su configuración de PHP MaxSizeForUploadedFiles=Tamaño máximo para archivos cargados (0 para no permitir ninguna carga) -UseCaptchaCode=Use el código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa al comando antivirus AntiVirusCommandExample=Ejemplo para ClamAv Daemon (requiere clamav-daemon): /usr/bin/clamdscan
Ejemplo para ClamWin (muy muy lento): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam=Más parámetros en la línea de comando @@ -302,7 +301,6 @@ LabelUsedByDefault=Etiqueta utilizada de forma predeterminada si no se puede enc LabelOnDocuments=Etiqueta en los documentos LabelOrTranslationKey=Etiqueta o clave de traducción NbOfDays=Numero de dias -CurrentNext=Actual / Siguiente Offset=Compensar Upgrade=Mejorar MenuUpgrade=Actualizar / Extender @@ -515,7 +513,6 @@ LDAPFieldZip=Cremallera LDAPFieldCompany=Compañía Target=Destino Sell=Vender -TopMenuDisableImages=Hide images in Top menu PositionIntoComboList=Posición de la línea en las listas de combo RecuperableOnly=Sí, para el IVA "No percibido pero recuperable" dedicado a algún estado de Francia. Mantenga el valor en "No" en todos los demás casos. UrlTrackingDesc=Si el proveedor o el servicio de transporte ofrece una página o sitio web para verificar el estado de sus envíos, puede ingresar aquí. Puede usar la clave {TRACKID} en los parámetros de la URL para que el sistema la reemplace con el número de seguimiento que el usuario ingresó en la ficha del viaje. @@ -589,7 +586,6 @@ EMailHost=Host de correo electrónico del servidor IMAP EmailcollectorOperations=Operaciones a realizar por coleccionista. EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) CodeLastResult=Último código de resultado ECMAutoTree=Mostrar arbol ECM automatico OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. @@ -600,3 +596,4 @@ DisabledResourceLinkContact=Deshabilitar función para vincular un recurso a con ConfirmUnactivation=Confirmar el reinicio del módulo OnMobileOnly=Solo en pantalla pequeña (teléfono inteligente) EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+Settings =Ajustes diff --git a/htdocs/langs/es_AR/companies.lang b/htdocs/langs/es_AR/companies.lang index de5dfa2801f..7abdd92ce94 100644 --- a/htdocs/langs/es_AR/companies.lang +++ b/htdocs/langs/es_AR/companies.lang @@ -41,7 +41,6 @@ Address=Drección State=Estado/Provincia StateCode=Código postal del Estado/Provincia CountryCode=Código de País -CountryId=ID de País Chat=Chate PhonePerso=Teléfono Persona PhoneMobile=Celular @@ -89,8 +88,6 @@ ProfId3BR=IM (Inscripción Municipal) ProfId3CH=ID Prof 1 (Número federal) ProfId4CH=ID Prof 2 (Número de registro comercial) ProfId1CL=ID Prof 1 (RUT) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId3ShortCM=Decree of creation ProfId1CO=ID Prof 1 (RUT) ProfId1DE=ID Prof 1 (USt.-IdNr) ProfId2DE=ID Prof 2 (Ust.-Nr) diff --git a/htdocs/langs/es_AR/externalsite.lang b/htdocs/langs/es_AR/externalsite.lang deleted file mode 100644 index b7942f1500e..00000000000 --- a/htdocs/langs/es_AR/externalsite.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Establezca un enlace al sitio web externo -ExternalSiteModuleNotComplete=El módulo SitioExterno no fue configurado apropiadamente. diff --git a/htdocs/langs/es_AR/ftp.lang b/htdocs/langs/es_AR/ftp.lang deleted file mode 100644 index 2ccb645c797..00000000000 --- a/htdocs/langs/es_AR/ftp.lang +++ /dev/null @@ -1,13 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuración de módulo de cliente FTP -NewFTPClient=Configuración de nueva conexión FTP -FTPArea=Area FTP -FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP. -SetupOfFTPClientModuleNotComplete=La configuración del módulo de cliente FTP parece estar incompleta -FTPFeatureNotSupportedByYourPHP=Tu versión de PHP no soporta funciones FTP -FailedToConnectToFTPServer=Error al conectar al servidor FTP (servidor %s, puerto %s) -FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor FTP con el usuario/contraseña definidos -FTPFailedToRemoveFile=Error al remover archivo %s. -FTPFailedToRemoveDir=Error al remover carpeta %s: revise los permisos y que la carpeta esté vacía. -ChooseAFTPEntryIntoMenu=Elija un sitio FTP desde el menú... -FailedToGetFile=Error al obtener archivos %s diff --git a/htdocs/langs/es_AR/hrm.lang b/htdocs/langs/es_AR/hrm.lang index cd3446fed36..00f72f952ca 100644 --- a/htdocs/langs/es_AR/hrm.lang +++ b/htdocs/langs/es_AR/hrm.lang @@ -1,4 +1,3 @@ # Dolibarr language file - Source file is en_US - hrm HRM_EMAIL_EXTERNAL_SERVICE=E-mail para evitar el servicio externo de gestión de RRHH ConfirmDeleteEstablishment=¿Está seguro que quiere eliminar este establecimiento? -DictionaryDepartment=Gestión de RRHH - Departamentos diff --git a/htdocs/langs/es_AR/members.lang b/htdocs/langs/es_AR/members.lang index db2b184df62..a05e329cdb3 100644 --- a/htdocs/langs/es_AR/members.lang +++ b/htdocs/langs/es_AR/members.lang @@ -16,7 +16,6 @@ MembersListQualified=Lista de miembros calificados MenuMembersToValidate=Miembros en Borrador MenuMembersValidated=Miembros válidos MenuMembersResiliated=Miembros terminados -MemberId=ID Miembro MemberTypeId=ID Tipo de Miembro MemberTypeLabel=Etiqueta Tipo de miembro MemberStatusDraft=Borrador (necesita ser validado) diff --git a/htdocs/langs/es_BO/members.lang b/htdocs/langs/es_BO/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_BO/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_BO/projects.lang b/htdocs/langs/es_BO/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_BO/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_CL/admin.lang b/htdocs/langs/es_CL/admin.lang index 162f856b508..9c16cf60e83 100644 --- a/htdocs/langs/es_CL/admin.lang +++ b/htdocs/langs/es_CL/admin.lang @@ -76,7 +76,6 @@ NextValueForReplacements=Siguiente valor (reemplazos) MustBeLowerThanPHPLimit=Nota: su configuración de PHP actualmente limita el máximo para cargar a %s %s, independientemente del valor de este parámetro NoMaxSizeByPHPLimit=Nota: no hay límite establecido en su configuración de PHP MaxSizeForUploadedFiles=Tamaño máximo para los archivos cargados (0 para no permitir ninguna carga) -UseCaptchaCode=Use el código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa al comando de antivirus AntiVirusCommandExample=Ejemplo de ClamAv Daemon (requiere clamav-daemon): / usr / bin / clamdscan
Ejemplo de ClamWin (muy, muy lento): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam=Más parámetros en la línea de comando @@ -341,7 +340,6 @@ DefaultLink=Enlace predeterminado ValueOverwrittenByUserSetup=Advertencia, este valor puede ser sobrescrito por la configuración específica del usuario (cada usuario puede establecer su propia URL de clicktodial) BarcodeInitForProductsOrServices=Inicialización o reinicio masivo del código de barras para productos o servicios CurrentlyNWithoutBarCode=Actualmente, tiene %s registros en %s %s sin código de barras definido. -InitEmptyBarCode=Valor inicial para los próximos %s registros vacíos EraseAllCurrentBarCode=Borrar todos los valores actuales del código de barras ConfirmEraseAllCurrentBarCode=¿Seguro que quieres borrar todos los valores actuales del código de barras? AllBarcodeReset=Todos los valores del código de barras han sido eliminados @@ -728,7 +726,6 @@ LabelOnDocuments=Etiqueta en documentos LabelOrTranslationKey=Etiqueta o clave de traducción NbOfDays=Numero de dias AtEndOfMonth=Al final del mes -CurrentNext=Actual / Siguiente Offset=Compensar Upgrade=Mejorar MenuUpgrade=Actualizar / Extender @@ -1255,7 +1252,6 @@ LinkColor=Color de enlaces PressF5AfterChangingThis=Presione CTRL + F5 en el teclado o borre la caché de su navegador después de cambiar este valor para que sea efectivo NotSupportedByAllThemes=Will trabaja con temas centrales, puede no ser compatible con temas externos TopMenuBackgroundColor=Color de fondo para el menú superior -TopMenuDisableImages=Ocultar imágenes en el menú superior LeftMenuBackgroundColor=Color de fondo para el menú izquierdo BackgroundTableTitleColor=Color de fondo para la línea de título de la tabla BackgroundTableLineOddColor=Color de fondo para las líneas de mesa impares @@ -1338,7 +1334,6 @@ EmailcollectorOperations=Operaciones a realizar por coleccionista. MaxEmailCollectPerCollect=Número máximo de correos electrónicos recogidos por cobro EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar -XEmailsDoneYActionsDone=correos electrónicos %s calificados, correos electrónicos %s procesados con éxito (para %s registro / acciones realizadas) CodeLastResult=Código de resultado más reciente NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen LoadThirdPartyFromName=Cargar búsqueda de terceros en %s (solo carga) diff --git a/htdocs/langs/es_CL/companies.lang b/htdocs/langs/es_CL/companies.lang index 8e083e8f86b..b609dfd5eaf 100644 --- a/htdocs/langs/es_CL/companies.lang +++ b/htdocs/langs/es_CL/companies.lang @@ -40,7 +40,6 @@ Firstname=Primer nombre NatureOfThirdParty=Naturaleza de un tercero State=Estado / Provincia CountryCode=Código de país -CountryId=Identificación del país Call=Llamada PhonePerso=Pers. teléfono No_Email=Rechazar correos electrónicos a granel @@ -68,8 +67,6 @@ ProfId1AR=Prof Id 1 (CUIT / CUIL) ProfId1BE=Prof Id 1 (Número profesional) ProfId3CH=Prof Id 1 (número federal) ProfId4CH=Prof Id 2 (Número de registro comercial) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId3ShortCM=Decree of creation ProfId1ES=Prof Id 1 (CIF / NIF) ProfId2ES=Prof Id 2 (Número de seguridad social) ProfId4ES=Prof Id 4 (Número colegiado) @@ -182,7 +179,6 @@ ImportDataset_company_4=Representantes de ventas de terceros (asignar representa DeliveryAddress=Dirección de entrega SupplierCategory=Categoría del vendedor DeleteFile=Borrar archivo -ConfirmDeleteFile=¿Seguro que quieres eliminar este archivo? AllocateCommercial=Asignado al representante de ventas Organization=Organización FiscalYearInformation=Año fiscal diff --git a/htdocs/langs/es_CL/errors.lang b/htdocs/langs/es_CL/errors.lang index a558bcdd773..8c45fd1469b 100644 --- a/htdocs/langs/es_CL/errors.lang +++ b/htdocs/langs/es_CL/errors.lang @@ -44,7 +44,6 @@ ErrorDirAlreadyExists=Ya existe un directorio con este nombre. ErrorPartialFile=Archivo no recibido por completo por el servidor. ErrorNoTmpDir=La directiva temporal %s no existe. ErrorUploadBlockedByAddon=Carga bloqueada por un plugin PHP / Apache. -ErrorFileSizeTooLarge=El tamaño del archivo es demasiado grande. ErrorSizeTooLongForIntType=Tamaño demasiado largo para el tipo int (%s dígitos máximo) ErrorSizeTooLongForVarcharType=Tamaño demasiado largo para el tipo de cadena (%s caracteres máximo) ErrorNoValueForSelectType=Por favor complete el valor para la lista de selección diff --git a/htdocs/langs/es_CL/externalsite.lang b/htdocs/langs/es_CL/externalsite.lang deleted file mode 100644 index d9fc1b5c46b..00000000000 --- a/htdocs/langs/es_CL/externalsite.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Enlace de configuración al sitio web externo -ExternalSiteModuleNotComplete=El módulo ExternalSite no se configuró correctamente. diff --git a/htdocs/langs/es_CL/ftp.lang b/htdocs/langs/es_CL/ftp.lang deleted file mode 100644 index 57e90e9ac58..00000000000 --- a/htdocs/langs/es_CL/ftp.lang +++ /dev/null @@ -1,13 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuración del módulo FTP Client -NewFTPClient=Nueva configuración de conexión FTP -FTPArea=Área de FTP -FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP. -SetupOfFTPClientModuleNotComplete=La configuración del módulo de cliente FTP parece estar incompleta -FTPFeatureNotSupportedByYourPHP=Su PHP no es compatible con funciones de FTP -FailedToConnectToFTPServer=Error al conectarse al servidor FTP (servidor %s, puerto %s) -FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor FTP con inicio de sesión / contraseña definidos -FTPFailedToRemoveFile=Falló al eliminar el archivo %s. -FTPFailedToRemoveDir=Error al eliminar el directorio %s : verifique los permisos y que el directorio esté vacío. -ChooseAFTPEntryIntoMenu=Elija un sitio FTP del menú ... -FailedToGetFile=Error al obtener los archivos %s diff --git a/htdocs/langs/es_CL/hrm.lang b/htdocs/langs/es_CL/hrm.lang index 9ad29250e7f..842656e85c7 100644 --- a/htdocs/langs/es_CL/hrm.lang +++ b/htdocs/langs/es_CL/hrm.lang @@ -2,4 +2,4 @@ HRM_EMAIL_EXTERNAL_SERVICE=Correo electrónico para evitar el servicio externo de RRHH ConfirmDeleteEstablishment=¿Estás seguro de que deseas eliminar este establecimiento? OpenEtablishment=Establecimiento abierto -DictionaryDepartment=RRHH - Lista de departamentos +HrmSetup=Configuración del módulo RRHH diff --git a/htdocs/langs/es_CL/install.lang b/htdocs/langs/es_CL/install.lang index 5143b94ad59..e78c1cc8aea 100644 --- a/htdocs/langs/es_CL/install.lang +++ b/htdocs/langs/es_CL/install.lang @@ -19,7 +19,6 @@ ErrorGoBackAndCorrectParameters=Regresa y revisa / corrige los parámetros. ErrorWrongValueForParameter=Puede haber escrito un valor incorrecto para el parámetro '%s'. ErrorFailedToConnectToDatabase=Error al conectarse a la base de datos '%s'. ErrorDatabaseVersionTooLow=La versión de la base de datos (%s) es demasiado antigua. Se requiere la versión %s o superior. -ErrorPHPVersionTooLow=La versión de PHP es muy antigua. La versión %s es obligatoria. ErrorConnectedButDatabaseNotFound=La conexión al servidor se realizó correctamente, pero no se encontró la base de datos '%s'. IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de datos no existe, regrese y marque la opción "Crear base de datos". IfDatabaseExistsGoBackAndCheckCreate=Si la base de datos ya existe, retroceda y desmarque la opción "Crear base de datos". diff --git a/htdocs/langs/es_CL/members.lang b/htdocs/langs/es_CL/members.lang index f890213e394..a226d236563 100644 --- a/htdocs/langs/es_CL/members.lang +++ b/htdocs/langs/es_CL/members.lang @@ -15,7 +15,6 @@ MembersListValid=Lista de miembros válidos MembersListResiliated=Lista de miembros finalizados MembersListQualified=Lista de miembros calificados MenuMembersResiliated=Miembros finalizados -MemberId=Identificación de miembro MemberTypeId=ID de tipo de miembro MemberTypeLabel=Etiqueta de tipo de miembro MemberStatusDraft=Borrador (debe ser validado) @@ -54,6 +53,7 @@ YourMembershipWasValidated=Su membresía fue validada YourMembershipWasCanceled=Su membresía fue cancelada CardContent=Contenido de su tarjeta de miembro ThisIsContentOfYourMembershipRequestWasReceived=Queremos informarle que se recibió su solicitud de membresía.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Queremos informarle que su suscripción está a punto de caducar o ya ha caducado (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Esperamos que lo renueven.

ThisIsContentOfYourCard=Este es un resumen de la información que tenemos sobre usted. Por favor, póngase en contacto con nosotros si algo es incorrecto.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Asunto de la notificación por correo electrónico recibida en caso de autoinscripción de un invitado @@ -85,6 +85,7 @@ MenuMembersStats=Estadística NewMemberbyWeb=Nuevo miembro agregado. Esperando aprobacion NewMemberForm=Nueva forma de miembro TurnoverOrBudget=Volumen de ventas (empresa) o Cotización (asociación o colectivo) +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type MEMBER_NEWFORM_PAYONLINE=Salte en la página integrada de pago en línea MembersStatisticsByProperties=Estadísticas de miembros por naturaleza NoEmailSentToMember=No se envió ningún correo electrónico al miembro diff --git a/htdocs/langs/es_CL/oauth.lang b/htdocs/langs/es_CL/oauth.lang index 779555f86ab..a42c3017f03 100644 --- a/htdocs/langs/es_CL/oauth.lang +++ b/htdocs/langs/es_CL/oauth.lang @@ -6,17 +6,11 @@ IsTokenGenerated=¿Se genera token? NoAccessToken=No token de acceso guardado en la base de datos local HasAccessToken=Se generó un token y se guardó en la base de datos local ToCheckDeleteTokenOnProvider=Haga clic aquí para verificar / eliminar la autorización guardada por %s proveedor OAuth -RequestAccess=Haga clic aquí para solicitar / renovar el acceso y recibir un nuevo token para guardar -DeleteAccess=Haga clic aquí para borrar el token UseTheFollowingUrlAsRedirectURI=Use la siguiente URL como el URI de redireccionamiento cuando cree sus credenciales con su proveedor de OAuth: -ListOfSupportedOauthProviders=Ingrese las credenciales proporcionadas por su proveedor OAuth2. Sólo se enumeran aquí los proveedores OAuth2 compatibles. Estos servicios pueden ser utilizados por otros módulos que necesitan autenticación OAuth2. -OAuthSetupForLogin=Página para generar una ficha OAuth SeePreviousTab=Ver la pestaña anterior OAuthIDSecret=ID de OAuth y secreto TOKEN_EXPIRED=Token expiró TOKEN_EXPIRE_AT=Token caduca a las OAUTH_GOOGLE_NAME=OAuth servicio de Google -OAUTH_GOOGLE_DESC=Vaya a esta página y luego "Credenciales" para crear las credenciales de OAuth OAUTH_GITHUB_NAME=Servicio OAuth GitHub OAUTH_GITHUB_ID=Identificación de OAuth GitHub -OAUTH_GITHUB_DESC=Vaya a esta página y luego "Registre una nueva aplicación" para crear las credenciales de OAuth diff --git a/htdocs/langs/es_CL/projects.lang b/htdocs/langs/es_CL/projects.lang index 7afb36f5a70..aaae5a794c4 100644 --- a/htdocs/langs/es_CL/projects.lang +++ b/htdocs/langs/es_CL/projects.lang @@ -156,5 +156,6 @@ ModuleSalaryToDefineHourlyRateMustBeEnabled=El módulo 'Salarios' debe e NewTaskRefSuggested=Referencia de tarea ya utilizada, se requiere una nueva referencia de tarea TimeSpentForIntervention=Tiempo dedicado TimeSpentForInvoice=Tiempo dedicado +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=La factura %s se ha generado desde el tiempo invertido en el proyecto UsageBillTimeShort=Uso: Bill time diff --git a/htdocs/langs/es_CO/accountancy.lang b/htdocs/langs/es_CO/accountancy.lang index aa96013bb1d..8e9afa1c3f8 100644 --- a/htdocs/langs/es_CO/accountancy.lang +++ b/htdocs/langs/es_CO/accountancy.lang @@ -33,6 +33,7 @@ GroupIsEmptyCheckSetup=El grupo está vacío, verifique la configuración del gr DetailByAccount=Mostrar detalle por cuenta AccountWithNonZeroValues=Cuentas con valores distintos de cero. CountriesInEECExceptMe=Países en EEC excepto %s +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). MainAccountForCustomersNotDefined=Cuenta contable principal para clientes no definidos en la configuración. MainAccountForSuppliersNotDefined=Cuenta de contabilidad principal para proveedores no definidos en la configuración. MainAccountForUsersNotDefined=Cuenta de contabilidad principal para usuarios no definidos en la configuración. @@ -184,6 +185,7 @@ DescVentilTodoExpenseReport=Líneas de informe de gastos de enlace no vinculadas DescVentilExpenseReport=Consulte aquí la lista de líneas de informe de gastos vinculadas (o no) a una cuenta de contabilidad de comisiones. DescVentilExpenseReportMore=Si configura una cuenta contable según el tipo de líneas de informe de gastos, la aplicación podrá realizar toda la vinculación entre sus líneas de informe de gastos y la cuenta contable de su plan de cuentas, solo con un clic con el botón "%s" . Si la cuenta no se estableció en el diccionario de tarifas o si todavía tiene algunas líneas no vinculadas a ninguna cuenta, deberá realizar un enlace manual desde el menú " %s ". DescVentilDoneExpenseReport=Consulte aquí la lista de líneas de informes de gastos y sus cuentas contables. +DescClosure=Consult here the number of movements by month who are not yet validated & locked DescValidateMovements=Se prohíbe cualquier modificación o eliminación de la escritura, las letras y las eliminaciones. Todas las entradas para un ejercicio deben ser validadas, de lo contrario no será posible cerrar AutomaticBindingDone=Enlaces automáticos realizados (%s) - El enlace automático no es posible para algunos registros (%s) ErrorAccountancyCodeIsAlreadyUse=Error, no puede eliminar esta cuenta de contabilidad porque se usa @@ -213,6 +215,7 @@ AccountingAccountForSalesTaxAreDefinedInto=Nota: la cuenta contable del impuesto NumberOfAccountancyMovements=Numero de movimientos ACCOUNTING_DISABLE_BINDING_ON_SALES=Deshabilitar la vinculación y la transferencia en la contabilidad de las ventas (las facturas de los clientes no se tendrán en cuenta en la contabilidad) ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Deshabilite la vinculación y transferencia en contabilidad en compras (las facturas de proveedores no se tendrán en cuenta en la contabilidad) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) ExportDraftJournal=Exportar borrador de revista Selectmodelcsv=Selecciona un modelo de exportación. Modelcsv_CEGID=Exportación para CEGID Expert Comptabilité diff --git a/htdocs/langs/es_CO/admin.lang b/htdocs/langs/es_CO/admin.lang index 0216fa063c8..91a01d2e5db 100644 --- a/htdocs/langs/es_CO/admin.lang +++ b/htdocs/langs/es_CO/admin.lang @@ -80,7 +80,6 @@ NextValueForReplacements=Siguiente valor (reemplazos) MustBeLowerThanPHPLimit=Nota: su configuración de PHP actualmente limita el máximo para cargar a %s %s, independientemente del valor de este parámetro NoMaxSizeByPHPLimit=Nota: en la configuración de su PHP no está definido un límite MaxSizeForUploadedFiles=Tamaño máximo para archivos importados (0 para desactivar cualquier importación) -UseCaptchaCode=Usar código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa para el comando del antivirus AntiVirusCommandExample=Ejemplo de ClamAv Daemon (requiere clamav-daemon): /usr/bin/clamdscan
Ejemplo de ClamWin (muy, muy lento): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam=Más parámetros en la línea de comando @@ -363,7 +362,6 @@ ValueOverwrittenByUserSetup=Advertencia, este valor puede ser sobrescrito por la BarcodeInitForThirdparties=init para código de barras masivo para terceros BarcodeInitForProductsOrServices=Código de barras masivo de inicio o reinicio para productos o servicios. CurrentlyNWithoutBarCode=Actualmente, tienes el registro %s en %s %s sin un código de barras definido. -InitEmptyBarCode=Valor de inicio para los siguientes registros vacíos %s EraseAllCurrentBarCode=Borrar todos los valores de código de barras actuales ConfirmEraseAllCurrentBarCode=¿Está seguro de que desea borrar todos los valores de código de barras actuales? AllBarcodeReset=Todos los valores de código de barras han sido eliminados @@ -385,7 +383,6 @@ WarningPHPMail=ADVERTENCIA: La configuración para enviar correos electrónicos WarningPHPMailD=Además, por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela configurando MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constante en 1 en Inicio - Configuración - Otro. WarningPHPMail2=Si su proveedor de correo electrónico SMTP necesita restringir el cliente de correo electrónico a algunas direcciones IP (muy raro), esta es la dirección IP del agente de usuario de correo (MUA) para su aplicación ERP CRM: %s . WarningPHPMailSPF=Si el nombre de dominio en su dirección de correo electrónico del remitente está protegido por un registro SPF (pregunte a su registrador de nombre de dominio), debe agregar las siguientes IP en el registro SPF del DNS de su dominio: %s . -ActualMailSPFRecordFound=Registro de SPF real encontrado: %s ClickToShowDescription=Haga clic para mostrar la descripción DependsOn=Este módulo necesita el módulo (s) RequiredBy=Este módulo es requerido por el módulo (s) @@ -847,7 +844,6 @@ LabelUsedByDefault=Etiqueta utilizada de forma predeterminada si no se puede enc LabelOnDocuments=Etiqueta en los documentos LabelOrTranslationKey=Etiqueta o clave de traducción NbOfDays=Numero de dias -CurrentNext=Actual / Siguiente Offset=Compensar Upgrade=Mejorar MenuUpgrade=Actualizar / Extender @@ -1466,7 +1462,6 @@ LinkColor=Color de enlaces PressF5AfterChangingThis=Presione CTRL + F5 en el teclado o borre la caché de su navegador después de cambiar este valor para que sea efectivo NotSupportedByAllThemes=Will trabaja con temas centrales, puede que no sea compatible con temas externos TopMenuBackgroundColor=Color de fondo para el menú superior -TopMenuDisableImages=Ocultar imágenes en el menú superior LeftMenuBackgroundColor=Color de fondo para el menú de la izquierda. BackgroundTableTitleColor=Color de fondo para la línea de título de la tabla BackgroundTableTitleTextColor=Color del texto para la línea del título de la tabla. @@ -1567,7 +1562,6 @@ MaxEmailCollectPerCollect=Número máximo de correos electrónicos recolectados DateLastcollectResultOk=Fecha del último éxito de recolección EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar -XEmailsDoneYActionsDone=%s correos electrónicos calificados, %s correos electrónicos procesados correctamente (para %s registro/acciones realizadas) CreateLeadAndThirdParty=Cree un cliente potencial (y un tercero si es necesario) CodeLastResult=Último código de resultado NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen diff --git a/htdocs/langs/es_CO/companies.lang b/htdocs/langs/es_CO/companies.lang index f740d495d5d..15f3dfcdfd7 100644 --- a/htdocs/langs/es_CO/companies.lang +++ b/htdocs/langs/es_CO/companies.lang @@ -42,7 +42,6 @@ ProfId2AT=Id prof. 2 (USt.-Nr) ProfId3AT=Id prof. 3 (Handelsregister-Nr.) ProfId1CM=Prueba de ID 1 (Registro de Comercio) ProfId2CM=Prueba de ID 2 (Nº de Contribuyente) -ProfId3CM=Prueba de ID 3 (Decreto de creación) ProfId2ShortCM=Contribuyente No. ProfId2CO=Identificación (CC, NIT, CE) ProfId3CO=CIIU diff --git a/htdocs/langs/es_CO/errors.lang b/htdocs/langs/es_CO/errors.lang index d7ee4fe6ffd..2e958b678d9 100644 --- a/htdocs/langs/es_CO/errors.lang +++ b/htdocs/langs/es_CO/errors.lang @@ -18,6 +18,7 @@ ErrorFailToGenerateFile=Error al generar el archivo ' %s '. ErrorCashAccountAcceptsOnlyCashMoney=Esta cuenta bancaria es una cuenta de efectivo, por lo que acepta pagos de tipo efectivo únicamente. ErrorFromToAccountsMustDiffers=Las cuentas bancarias de origen y destino deben ser diferentes. ErrorBadThirdPartyName=Valor incorrecto para el nombre de un tercero +ForbiddenBySetupRules=Prohibido por las reglas de configuración ErrorBadCustomerCodeSyntax=Sintaxis incorrecta para el código del cliente ErrorBadBarCodeSyntax=Sintaxis incorrecta para el código de barras. Puede ser que haya configurado un tipo de código de barras incorrecto o haya definido una máscara de código de barras para la numeración que no coincide con el valor escaneado. ErrorCustomerCodeRequired=Se requiere código de cliente @@ -48,7 +49,6 @@ ErrorDirAlreadyExists=Ya existe un directorio con este nombre. ErrorPartialFile=Archivo no recibido completamente por el servidor. ErrorNoTmpDir=La directiva temporal %s no existe. ErrorUploadBlockedByAddon=Carga bloqueada por un complemento PHP / Apache. -ErrorFileSizeTooLarge=El tamaño del archivo es demasiado grande. ErrorSizeTooLongForIntType=Tamaño demasiado largo para el tipo int (%s dígitos como máximo) ErrorSizeTooLongForVarcharType=Tamaño demasiado largo para el tipo de cadena (%s caracteres como máximo) ErrorNoValueForSelectType=Por favor complete el valor de la lista de selección diff --git a/htdocs/langs/es_CO/externalsite.lang b/htdocs/langs/es_CO/externalsite.lang deleted file mode 100644 index d29b234afae..00000000000 --- a/htdocs/langs/es_CO/externalsite.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteURL=URL del sitio externo del iframe HTML -ExampleMyMenuEntry=Mi entrada en el menú diff --git a/htdocs/langs/es_CO/ftp.lang b/htdocs/langs/es_CO/ftp.lang deleted file mode 100644 index f021b8f4b8b..00000000000 --- a/htdocs/langs/es_CO/ftp.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPFeatureNotSupportedByYourPHP=Su PHP no es compatible con las funciones FTP o SFTP -FailedToConnectToFTPServerWithCredentials=No se pudo ingresar al servidor con el usuario/contraseña definidos -FTPFailedToRemoveFile=No se pudo eliminar el archivo %s . -FTPFailedToRemoveDir=No se pudo eliminar el directorio %s : verifique los permisos y que el directorio esté vacío. diff --git a/htdocs/langs/es_CO/holiday.lang b/htdocs/langs/es_CO/holiday.lang index ad7bd301a26..1a794c336aa 100644 --- a/htdocs/langs/es_CO/holiday.lang +++ b/htdocs/langs/es_CO/holiday.lang @@ -105,4 +105,6 @@ FreeLegalTextOnHolidays=Texto libre en PDF WatermarkOnDraftHolidayCards=Marcas de agua en solicitudes de licencia de borrador HolidaysToApprove=Días festivos para aprobar NobodyHasPermissionToValidateHolidays=Nadie tiene permiso para validar las vacaciones. +BlockHolidayIfNegative=Bloquear si el balance es negativo +LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creación de esta solicitud de licencia está bloqueada porque su balance es negativo ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La solicitud de licencia %s debe ser borrador, cancelada o rechazada para ser eliminada diff --git a/htdocs/langs/es_CO/hrm.lang b/htdocs/langs/es_CO/hrm.lang index c39867bc755..7342c5324de 100644 --- a/htdocs/langs/es_CO/hrm.lang +++ b/htdocs/langs/es_CO/hrm.lang @@ -4,7 +4,6 @@ ConfirmDeleteEstablishment=¿Estás seguro de que deseas eliminar este estableci OpenEtablishment=Establecimiento abierto CloseEtablishment=Establecimiento cerrado DictionaryPublicHolidays=Licencia - Días festivos -DictionaryDepartment=HRM - Lista de departamentos DictionaryFunction=HRM - Puestos de trabajo ListOfEmployees=Lista de empleados HrmSetup=Configuración del módulo HRM diff --git a/htdocs/langs/es_CO/install.lang b/htdocs/langs/es_CO/install.lang index bce0e620c12..137155f8791 100644 --- a/htdocs/langs/es_CO/install.lang +++ b/htdocs/langs/es_CO/install.lang @@ -22,7 +22,6 @@ ErrorGoBackAndCorrectParameters=Regresa y revisa / corrige los parámetros. ErrorWrongValueForParameter=Es posible que haya escrito un valor incorrecto para el parámetro '%s'. ErrorFailedToConnectToDatabase=Error al conectarse a la base de datos '%s'. ErrorDatabaseVersionTooLow=Versión de la base de datos (%s) demasiado antigua. Se requiere la versión %s o superior. -ErrorPHPVersionTooLow=La versión de PHP es muy antigua. Se requiere la versión %s. ErrorConnectedButDatabaseNotFound=La conexión al servidor fue exitosa pero no se encontró la base de datos '%s'. IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de datos no existe, vuelva atrás y marque la opción "Crear base de datos". IfDatabaseExistsGoBackAndCheckCreate=Si la base de datos ya existe, vuelva atrás y desmarque la opción "Crear base de datos". diff --git a/htdocs/langs/es_CO/knowledgemanagement.lang b/htdocs/langs/es_CO/knowledgemanagement.lang index bc5540d9bec..f083c8b99f8 100644 --- a/htdocs/langs/es_CO/knowledgemanagement.lang +++ b/htdocs/langs/es_CO/knowledgemanagement.lang @@ -8,5 +8,6 @@ KnowledgeManagementAboutPage =Gestión del conocimiento sobre la página KnowledgeManagementArea =Conocimiento administrativo MenuKnowledgeRecord =Base de conocimientos GroupOfTicket=Grupo de entradas -YouCanLinkArticleToATicketCategory=Puede vincular un artículo a un grupo de entradas (por lo que el artículo se sugerirá durante la calificación de nuevas entradas) SuggestedForTicketsInGroup=Sugerido para boletos cuando el grupo es +SetObsolete=Establecer como obsoleto +ConfirmReopenKM=¿Desea restaurar este artículo al estado "Validado"? diff --git a/htdocs/langs/es_CO/mails.lang b/htdocs/langs/es_CO/mails.lang index 701711719d6..53c9f7a990a 100644 --- a/htdocs/langs/es_CO/mails.lang +++ b/htdocs/langs/es_CO/mails.lang @@ -42,7 +42,6 @@ RemoveRecipient=Quitar destinatario YouCanAddYourOwnPredefindedListHere=Para crear su módulo selector de correo electrónico, consulte htdocs / core / modules / mailings / README. EMailTestSubstitutionReplacedByGenericValues=Cuando se usa el modo de prueba, las variables de sustitución se reemplazan por valores genéricos BadEMail=Mal valor para el correo electrónico -EMailNotDefined=Correo electrónico no definido ConfirmCloneEMailing=¿Está seguro de que desea clonar este e-mailing? CloneReceivers=Destinatarios del clonador DateSending=Envío de fecha diff --git a/htdocs/langs/es_CO/members.lang b/htdocs/langs/es_CO/members.lang index 2e0f1c0ac0a..39db94df1a0 100644 --- a/htdocs/langs/es_CO/members.lang +++ b/htdocs/langs/es_CO/members.lang @@ -26,7 +26,6 @@ DateEndSubscription=Fecha de finalización de la membresía EndSubscription=Fin de la membresía SubscriptionId=ID de contribución WithoutSubscription=Sin aporte -MemberId=Identificación de miembro MemberTypeId=ID de tipo de miembro MemberTypeLabel=Etiqueta de tipo de miembro MemberStatusDraft=Borrador (necesita ser validado) @@ -93,7 +92,6 @@ YourMembershipWasCanceled=Tu membresía fue cancelada CardContent=Contenido de su tarjeta de miembro ThisIsContentOfYourMembershipRequestWasReceived=Queremos informarle que se recibió su solicitud de membresía.

ThisIsContentOfYourMembershipWasValidated=Queremos informarle que su membresía fue validada con la siguiente información:

-ThisIsContentOfYourSubscriptionWasRecorded=Queremos informarle que se registró su nueva suscripción.

ThisIsContentOfSubscriptionReminderEmail=Queremos informarle que su suscripción está a punto de caducar o que ya ha caducado (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Esperamos que lo renueve.

ThisIsContentOfYourCard=Este es un resumen de la información que tenemos sobre usted. Por favor contáctenos si algo es incorrecto.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Asunto del correo electrónico de notificación recibido en caso de autoinscripción de un invitado @@ -137,7 +135,6 @@ NbOfSubscriptions=Numero de contribuciones AmountOfSubscriptions=Monto recaudado de las contribuciones TurnoverOrBudget=Facturación (para una empresa) o Presupuesto (para una fundación) DefaultAmount=Importe predeterminado de la contribución -CanEditAmount=El visitante puede elegir / editar la cantidad de su contribución MEMBER_NEWFORM_PAYONLINE=Ir a la página de pago en línea integrada MembersStatisticsByProperties=Estadísticas de miembros por naturaleza VATToUseForSubscriptions=Tasa de IVA a utilizar para las contribuciones diff --git a/htdocs/langs/es_CO/oauth.lang b/htdocs/langs/es_CO/oauth.lang index 6005bedbaf5..4cc5705833c 100644 --- a/htdocs/langs/es_CO/oauth.lang +++ b/htdocs/langs/es_CO/oauth.lang @@ -5,9 +5,7 @@ TokenManager=Administrador de tokens IsTokenGenerated=¿Se genera el token? HasAccessToken=Se generó un token y se guardó en la base de datos local ToCheckDeleteTokenOnProvider=Haga clic aquí para verificar / eliminar la autorización guardada por un proveedor de OAuth %s -RequestAccess=Haga clic aquí para solicitar / renovar el acceso y recibir un nuevo token para guardar UseTheFollowingUrlAsRedirectURI=Utilice la siguiente URL como URI de redireccionamiento al crear sus credenciales con su proveedor de OAuth: -ListOfSupportedOauthProviders=Ingrese las credenciales proporcionadas por su proveedor de OAuth2. Aquí solo se enumeran los proveedores de OAuth2 compatibles. Estos servicios pueden ser utilizados por otros módulos que necesitan autenticación OAuth2. SeePreviousTab=Ver pestaña anterior OAuthIDSecret=ID y secreto de OAuth TOKEN_REFRESH=Actualización de Token Presente @@ -15,9 +13,7 @@ TOKEN_EXPIRED=Token caducado TOKEN_EXPIRE_AT=El token vence a las OAUTH_GOOGLE_NAME=Servicio OAuth de Google OAUTH_GOOGLE_ID=ID de Google de OAuth -OAUTH_GOOGLE_DESC=Vaya a esta página y luego a "Credenciales" para crear credenciales de OAuth OAUTH_GITHUB_NAME=Servicio OAuth GitHub OAUTH_GITHUB_ID=ID de GitHub de OAuth -OAUTH_GITHUB_DESC=Vaya a en esta página y luego a "Registrar una nueva aplicación" para crear credenciales de OAuth. OAUTH_STRIPE_TEST_NAME=Prueba de banda de OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe en vivo diff --git a/htdocs/langs/es_CO/projects.lang b/htdocs/langs/es_CO/projects.lang index f4eeb0b6b2c..d7d0f29d616 100644 --- a/htdocs/langs/es_CO/projects.lang +++ b/htdocs/langs/es_CO/projects.lang @@ -186,7 +186,7 @@ NewTaskRefSuggested=La referencia de tarea ya se usó, se requiere una nueva ref TimeSpentInvoiced=Tiempo invertido facturado TimeSpentForIntervention=Tiempo usado TimeSpentForInvoice=Tiempo usado -ServiceToUseOnLines=Servicio para usar en líneas +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=La factura %s se ha generado a partir del tiempo dedicado al proyecto InterventionGeneratedFromTimeSpent=La intervención %s se ha generado a partir del tiempo dedicado al proyecto ProjectBillTimeDescription=Verifique si ingresa la hoja de tiempo en las tareas del proyecto Y planea generar factura(s) a partir de la hoja de tiempo para facturar al cliente del proyecto (no verifique si planea crear una factura que no se base en las hojas de tiempo ingresadas). Nota: Para generar factura, vaya a la pestaña 'Tiempo invertido' del proyecto y seleccione las líneas para incluir. diff --git a/htdocs/langs/es_CO/receptions.lang b/htdocs/langs/es_CO/receptions.lang index fb9a67d8272..67d2f3c817c 100644 --- a/htdocs/langs/es_CO/receptions.lang +++ b/htdocs/langs/es_CO/receptions.lang @@ -25,5 +25,4 @@ ProductQtyInSuppliersReceptionAlreadyRecevied=Cantidad de producto de la orden d ValidateOrderFirstBeforeReception=Primero debes validar el pedido antes de poder realizar recepciones. ReceptionsReceiptModel=Plantillas de documentos para recepciones NoMorePredefinedProductToDispatch=No más productos predefinidos para enviar -ByingPrice=Precio de oferta ReceptionUnClassifyCloseddInDolibarr=Recepción %s re-abrir diff --git a/htdocs/langs/es_DO/members.lang b/htdocs/langs/es_DO/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_DO/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_DO/projects.lang b/htdocs/langs/es_DO/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_DO/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_EC/admin.lang b/htdocs/langs/es_EC/admin.lang index 08c988ea83e..db2124e23b8 100644 --- a/htdocs/langs/es_EC/admin.lang +++ b/htdocs/langs/es_EC/admin.lang @@ -69,7 +69,6 @@ NextValueForDeposit=Siguiente valor NextValueForReplacements=Siguiente valor (sustituciones) NoMaxSizeByPHPLimit=Nota: No hay límite en tu configuración de PHP MaxSizeForUploadedFiles=Tamaño máximo de los archivos cargados (0 para rechazar cualquier subida) -UseCaptchaCode=Utilizar código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand= Ruta completa al comando antivirus AntiVirusCommandExample=Ejemplo para ClamAv Daemon (requiere clamav-daemon): /usr/bin/clamdscan
Ejemplo para ClamWin (muy muy lento): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Más parámetros de línea de comandos @@ -755,7 +754,6 @@ LabelOnDocuments=Etiqueta en los documentos LabelOrTranslationKey=Etiqueta o clave de traducción NbOfDays=Numero de dias AtEndOfMonth=Al final del mes -CurrentNext=Actual / Siguiente Offset=Compensar Upgrade=Actualizar / Mejorar MenuUpgrade=Actualizar / Ampliar @@ -1308,7 +1306,6 @@ LinkColor=Color de los enlaces PressF5AfterChangingThis=Presione CTRL + F5 en el teclado o la memoria del navegador después de cambiar este valor para tenerlo efectivo NotSupportedByAllThemes=Trabajar con temas centrales, no puede ser apoyado por temas externos TopMenuBackgroundColor=Color de fondo para el menú superior -TopMenuDisableImages=Ocultar imágenes en el menú principal LeftMenuBackgroundColor=Color de fondo para el menú de la izquierda BackgroundTableTitleColor=Color de fondo para la línea de título de la tabla BackgroundTableLineOddColor=Color de fondo para líneas de tabla de impares @@ -1395,7 +1392,6 @@ EmailcollectorOperations=Operaciones a realizar por coleccionista. MaxEmailCollectPerCollect=Número máximo de correos electrónicos recopilados por recopilación EmailCollectorConfirmCollectTitle=Correo electrónico recoger confirmación NoNewEmailToProcess=No hay correo electrónico nuevo (filtros coincidentes) para procesar -XEmailsDoneYActionsDone=%s correos electrónicos calificados, %s correos electrónicos procesados con éxito (para %s registro/acciones realizadas) CodeLastResult=Último código de resultado NbOfEmailsInInbox=Número de correos electrónicos en el directorio de origen LoadThirdPartyFromName=Cargue la búsqueda de terceros en %s (solo carga) diff --git a/htdocs/langs/es_EC/companies.lang b/htdocs/langs/es_EC/companies.lang index 55ff9fca4a6..dbad8245274 100644 --- a/htdocs/langs/es_EC/companies.lang +++ b/htdocs/langs/es_EC/companies.lang @@ -44,7 +44,6 @@ StateCode=Código de estado / provincia StateShort=Provincia Region-State=Región - Provincia CountryCode=Código de país -CountryId=ID del país Call=Llamada PhonePerso=Teléfono Personal PhoneMobile=Celular @@ -92,8 +91,6 @@ ProfId3BR=IM (Inscripción Municipal) ProfId3CH=ID Prof. 1 (Federal number) ProfId4CH=ID Prof. 2 (Commercial Record number) ProfId1CL=ID Prof. 1 (R.U.T.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId3ShortCM=Decree of creation ProfId1CO=ID Prof. 1 (R.U.T.) ProfId1DE=ID Prof. 1 (USt.-IdNr) ProfId2DE=ID Prof. 2 (USt.-Nr) diff --git a/htdocs/langs/es_EC/errors.lang b/htdocs/langs/es_EC/errors.lang index 16ec651f406..87dd8507320 100644 --- a/htdocs/langs/es_EC/errors.lang +++ b/htdocs/langs/es_EC/errors.lang @@ -40,7 +40,6 @@ ErrorDirAlreadyExists=Ya existe un directorio con este nombre. ErrorPartialFile=Archivo no recibido completamente por el servidor. ErrorNoTmpDir=La dirección temporal%s no existe. ErrorUploadBlockedByAddon=Carga bloqueada por un complemento PHP/Apache. -ErrorFileSizeTooLarge=El tamaño del archivo es demasiado grande. ErrorSizeTooLongForIntType=Tamaño demasiado largo para el tipo int (dígitos%s máximo) ErrorSizeTooLongForVarcharType=Tamaño demasiado largo para el tipo de cadena (%s caracteres máximo) ErrorNoValueForSelectType=Por favor, rellene el valor de la lista de selección @@ -188,7 +187,6 @@ ErrorOnlyOneFieldForGroupByIsPossible=Solo es posible 1 campo para 'Agrupar por' ErrorTooManyDifferentValueForSelectedGroupBy=Se encontraron demasiados valores diferentes (más de %s) para el campo '%s', por lo que no podemos usarlo para los gráficos. El campo 'Agrupar por' ha sido eliminado. ¿Puede ser que quieras usarlo como un eje X? WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Su parámetro PHP upload_max_filesize (%s) es más alto que el parámetro PHP post_max_size (%s). Esta no es una configuración consistente. WarningPasswordSetWithNoAccount=Se ha establecido una contraseña para este miembro. Sin embargo, no se creó ninguna cuenta de usuario. Por lo tanto, esta contraseña está almacenada pero no puede utilizarse para iniciar sesión en Dolibarr. Puede ser utilizado por un módulo / interfaz externo, pero si no necesita definir ningún inicio de sesión ni contraseña para un miembro, puede desactivar la opción "Administrar un inicio de sesión para cada miembro" desde la instalación del módulo miembro. Si necesita administrar un inicio de sesión pero no necesita ninguna contraseña, puede mantener este campo vacío para evitar esta advertencia. Nota: El correo electrónico también se puede utilizar como inicio de sesión si el miembro está vinculado a un usuario. -WarningMandatorySetupNotComplete=Haga clic aquí para configurar los parámetros obligatorios. WarningEnableYourModulesApplications=Haga clic aquí para habilitar sus módulos y aplicaciones. WarningSafeModeOnCheckExecDir=Advertencia, la opción PHP safe_mode está activada para que el comando se almacene dentro de un directorio declarado por el parámetro php safe_mode_exec_dir . WarningBookmarkAlreadyExists=Ya existe un marcador con este título o este destino (URL). diff --git a/htdocs/langs/es_EC/externalsite.lang b/htdocs/langs/es_EC/externalsite.lang deleted file mode 100644 index 2ebc56b30e5..00000000000 --- a/htdocs/langs/es_EC/externalsite.lang +++ /dev/null @@ -1,4 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configurar enlace a un sitio web externo -ExternalSiteModuleNotComplete=El módulo SitioExterno no estaba configurado correctamente. -ExampleMyMenuEntry=Mi entrada en el menú diff --git a/htdocs/langs/es_EC/ftp.lang b/htdocs/langs/es_EC/ftp.lang deleted file mode 100644 index 6a3ad20d130..00000000000 --- a/htdocs/langs/es_EC/ftp.lang +++ /dev/null @@ -1,12 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -NewFTPClient=Nueva configuración de conexión FTP -FTPArea=Área de FTP -FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP. -SetupOfFTPClientModuleNotComplete=La configuración del módulo de cliente FTP parece estar incompleta -FTPFeatureNotSupportedByYourPHP=Su PHP no admite funciones FTP -FailedToConnectToFTPServer=Error al conectarse al servidor FTP (servidor%s, puerto%s) -FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor FTP con nombre de usuario/contraseña definidos -FTPFailedToRemoveFile=Error al eliminar el archivo %s. -FTPFailedToRemoveDir=Error al eliminar el directorio %s: verifique los permisos y que el directorio esté vacío. -ChooseAFTPEntryIntoMenu=Elija un sitio FTP del menú ... -FailedToGetFile=Error al obtener los archivos %s diff --git a/htdocs/langs/es_EC/hrm.lang b/htdocs/langs/es_EC/hrm.lang index e98d3dd3801..4e07ce80a63 100644 --- a/htdocs/langs/es_EC/hrm.lang +++ b/htdocs/langs/es_EC/hrm.lang @@ -2,4 +2,5 @@ HRM_EMAIL_EXTERNAL_SERVICE=Correo electrónico para prevenir el servicio externo de RRHH ConfirmDeleteEstablishment=¿Estás seguro de que deseas eliminar este establecimiento? OpenEtablishment=Establecimiento abierto -DictionaryDepartment=RRHH - Lista de departamento +HrmSetup=Configuración del módulo de RRHH (Recursos Humanos) +JobPosition=Trabajo diff --git a/htdocs/langs/es_EC/install.lang b/htdocs/langs/es_EC/install.lang index a7eaf5622a3..97e3b8346ca 100644 --- a/htdocs/langs/es_EC/install.lang +++ b/htdocs/langs/es_EC/install.lang @@ -22,7 +22,6 @@ ErrorGoBackAndCorrectParameters=Regresa y revisa/corrige los parámetros. ErrorWrongValueForParameter=Es posible que haya escrito un valor incorrecto para el parámetro '%s'. ErrorFailedToConnectToDatabase=Error al conectarse a la base de datos '%s'. ErrorDatabaseVersionTooLow=Versión de base de datos (%s) demasiado antigua. Se requiere la versión%s o superior. -ErrorPHPVersionTooLow=La versión de PHP es demasiado antigua. Se requiere la versión%s. ErrorConnectedButDatabaseNotFound=La conexión al servidor fue exitosa pero la base de datos '%s' no se encontró IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de datos no existe, vuelva atrás y marque la opción "Crear base de datos". IfDatabaseExistsGoBackAndCheckCreate=Si la base de datos ya existe, vuelva atrás y desactive la opción "Crear base de datos". diff --git a/htdocs/langs/es_EC/main.lang b/htdocs/langs/es_EC/main.lang index 7256f58d602..267de4cddeb 100644 --- a/htdocs/langs/es_EC/main.lang +++ b/htdocs/langs/es_EC/main.lang @@ -554,3 +554,5 @@ ContactDefault_propal=Propuesta ContactDefault_supplier_proposal=Propuesta de proveedor ContactAddedAutomatically=Contacto agregado de roles de terceros de contacto ClientTZ=Zona horaria del cliente +Terminate=Terminar +Terminated=Terminado diff --git a/htdocs/langs/es_EC/members.lang b/htdocs/langs/es_EC/members.lang index 3cc65105296..cef882cd636 100644 --- a/htdocs/langs/es_EC/members.lang +++ b/htdocs/langs/es_EC/members.lang @@ -16,7 +16,6 @@ MembersListResiliated=Lista de miembros terminados MembersListQualified=Lista de miembros calificados MenuMembersToValidate=Miembros del draft MenuMembersResiliated=Miembros terminados -MemberId=Identificación de miembro MemberTypeId=ID del tipo de miembro MemberTypeLabel=Etiqueta del tipo de miembro MemberStatusDraft=Proyecto (necesita ser validado) diff --git a/htdocs/langs/es_EC/oauth.lang b/htdocs/langs/es_EC/oauth.lang index bcc7139dc28..39d92c63928 100644 --- a/htdocs/langs/es_EC/oauth.lang +++ b/htdocs/langs/es_EC/oauth.lang @@ -7,10 +7,8 @@ IsTokenGenerated=¿El token se genero? NoAccessToken=Ningún token de acceso guardado en la base de datos local HasAccessToken=Se generó un token y se guardó en la base de datos local ToCheckDeleteTokenOnProvider=Haga clic aquí para comprobar/eliminar la autorización guardada por%s Proveedor de OAuth -RequestAccess=Haga clic aquí para solicitar/renovar el acceso y reciba un nuevo token para guardar DeleteAccess=Haga clic aquí para eliminar token UseTheFollowingUrlAsRedirectURI=Use la siguiente URL como URI de redireccionamiento al crear sus credenciales con su proveedor de OAuth: -ListOfSupportedOauthProviders=Ingrese las credenciales proporcionadas por su proveedor de OAuth2. Aquí solo se enumeran los proveedores de OAuth2 compatibles. Estos servicios pueden ser utilizados por otros módulos que necesitan autenticación OAuth2. SeePreviousTab=Ver pestaña anterior OAuthIDSecret=OAuth ID y secreto TOKEN_REFRESH=Actualizar Token Presente @@ -18,6 +16,4 @@ TOKEN_EXPIRE_AT=El token expira en TOKEN_DELETE=Eliminar el token guardado OAUTH_GOOGLE_NAME=Servicio de Google OAuth OAUTH_GOOGLE_ID=ID de Google de OAuth -OAUTH_GOOGLE_DESC=Vaya a esta página y luego a "Credenciales" para crear credenciales de OAuth OAUTH_GITHUB_NAME=Servicio OAuth GitHub -OAUTH_GITHUB_DESC=Vaya a esta página y luego "Registre una nueva aplicación" para crear credenciales de OAuth diff --git a/htdocs/langs/es_EC/projects.lang b/htdocs/langs/es_EC/projects.lang index c2b71f5ef81..7ac28478c77 100644 --- a/htdocs/langs/es_EC/projects.lang +++ b/htdocs/langs/es_EC/projects.lang @@ -165,7 +165,7 @@ NewTaskRefSuggested=Referencia de tarea ya utilizada, se requiere una nueva refe TimeSpentInvoiced=Tiempo gastado facturado TimeSpentForIntervention=Tiempo usado TimeSpentForInvoice=Tiempo usado -ServiceToUseOnLines=Servicio a utilizar en líneas +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=La factura %s se ha generado a partir del tiempo dedicado al proyecto ProjectBillTimeDescription=Verifique si ingresa la hoja de tiempo en las tareas del proyecto Y planea generar factura(s) de la hoja de tiempo para facturar al cliente del proyecto (no verifique si planea crear una factura que no se base en las hojas de tiempo ingresadas). Nota: Para generar la factura, vaya a la pestaña 'Tiempo empleado' del proyecto y seleccione las líneas para incluir. UsageBillTimeShort=Uso: Tiempo a facturar diff --git a/htdocs/langs/es_EC/stocks.lang b/htdocs/langs/es_EC/stocks.lang index 4c33e5346ad..a7df10ebb98 100644 --- a/htdocs/langs/es_EC/stocks.lang +++ b/htdocs/langs/es_EC/stocks.lang @@ -119,7 +119,6 @@ ProductStockWarehouseCreated=Límite de inventario para alerta e inventario ópt ProductStockWarehouseUpdated=Límite de inventario para alerta e inventario óptimo deseado correctamente actualizado ProductStockWarehouseDeleted=Límite de inventario para alerta e inventario óptimo deseado correctamente eliminado AddNewProductStockWarehouse=Establecer un nuevo límite para la alerta y el inventario óptimo deseado -AddStockLocationLine=Disminuir la cantidad a continuación, haga clic para agregar otro almacén para este producto InventoryDate=Fecha del inventario inventorySetup =Configuración del inventario inventoryWritePermission=Actualizar los inventarios @@ -151,4 +150,5 @@ StockIncrease=Aumento de existencias StockDecrease=Disminución de existencias InventoryForASpecificWarehouse=Inventario para un almacén específico InventoryForASpecificProduct=Inventario para un producto específico +ToStart=Comienzo InventoryStartedShort=Empezado diff --git a/htdocs/langs/es_ES/accountancy.lang b/htdocs/langs/es_ES/accountancy.lang index 806acd62556..31819bb6355 100644 --- a/htdocs/langs/es_ES/accountancy.lang +++ b/htdocs/langs/es_ES/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Desactivar transacciones directas en cuenta bancaria ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Habilitar exportación de borradores al diario ACCOUNTANCY_COMBO_FOR_AUX=Habilite la lista combinada para la cuenta subsidiaria (puede ser lento si tiene muchos terceros, rompa la capacidad de buscar en una parte del valor) ACCOUNTING_DATE_START_BINDING=Defina una fecha para comenzar a vincular y transferir en contabilidad. Por debajo de esta fecha, las transacciones no se transferirán a contabilidad. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferencia de contabilidad, seleccione el período que se muestra de forma predeterminada +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=En la transferencia de contabilidad, ¿cuál es el período seleccionado por defecto? ACCOUNTING_SELL_JOURNAL=Diario de ventas ACCOUNTING_PURCHASE_JOURNAL=Diario de compras @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Cuenta contable para registrar donaciones ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Cuenta contable para registrar subscripciones ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Cuenta contable por defecto para registrar el anticipo del cliente -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Almacene la cuenta del cliente como cuenta individual en el libro mayor auxiliar para las líneas de anticipos (si está deshabilitada, la cuenta individual para las líneas de anticipos permanecerá vacía) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Cuenta contable predeterminada para los productos comprados (usada si no se define en el producto) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Cuenta contable por defecto para los productos comprados en CEE (usada si no se define en el producto) @@ -279,10 +279,10 @@ DescVentilExpenseReportMore=Si configura la cuentas contables de los tipos de in DescVentilDoneExpenseReport=Consulte aquí las líneas de informes de gastos y sus cuentas contables Closure=Cierre anual -DescClosure=Consult here the number of movements by month who are not yet validated & locked -OverviewOfMovementsNotValidated=Overview of movements not validated and locked -AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked +DescClosure=Consulta aquí el número de movimientos por mes aún no validados y bloqueados +OverviewOfMovementsNotValidated=Resumen de movimientos no validados y bloqueados +AllMovementsWereRecordedAsValidated=Todos los movimientos fueron registrados como validados y bloqueados. +NotAllMovementsCouldBeRecordedAsValidated=No todos los movimientos se pudieron registrar como validados y bloqueados ValidateMovements=Validar y bloquear registro... DescValidateMovements=Se prohíbe cualquier modificación o eliminación de registros. Todas las entradas para un ejercicio deben validarse; de lo contrario, no será posible cerrarlo @@ -290,7 +290,7 @@ ValidateHistory=Vincular automáticamente AutomaticBindingDone=Vinculaciones automáticas realizadas (%s) - La vinculación automática no es posible para algunos registros (%s) ErrorAccountancyCodeIsAlreadyUse=Error, no puede eliminar esta cuenta ya que está siendo usada -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +MvtNotCorrectlyBalanced=Movimiento no equilibrado correctamente. Débito = %s & Crédito = %s Balancing=Saldo FicheVentilation=Ficha contable GeneralLedgerIsWritten=Transacciones escritas en el Libro Mayor @@ -303,7 +303,7 @@ NotYetAccounted=Aún no contabilizado en el libro mayor ShowTutorial=Ver Tutorial NotReconciled=No reconciliado WarningRecordWithoutSubledgerAreExcluded=Advertencia, todas las líneas sin cuenta de libro mayor auxiliar definida se filtran y excluyen de esta vista -AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts +AccountRemovedFromCurrentChartOfAccount=Cuenta contable que no existe en el plan de cuentas actual ## Admin BindingOptions=Opciones de enlace @@ -398,19 +398,19 @@ Calculated=Calculado Formula=Fórmula ## Reconcile -Unlettering=Unreconcile -AccountancyNoLetteringModified=No reconcile modified -AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified -AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified -AccountancyNoUnletteringModified=No unreconcile modified -AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified -AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified +Unlettering=No reconciliar +AccountancyNoLetteringModified=Sin reconciliación modificada +AccountancyOneLetteringModifiedSuccessfully=Una conciliación modificada con éxito +AccountancyLetteringModifiedSuccessfully=%s reconciliación modificada con éxito +AccountancyNoUnletteringModified=Sin modificación no reconciliada +AccountancyOneUnletteringModifiedSuccessfully=Una no reconciliada modificada con éxito +AccountancyUnletteringModifiedSuccessfully=%s no reconciliado modificado con éxito ## Confirm box -ConfirmMassUnlettering=Bulk Unreconcile confirmation -ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassUnlettering=Confirmación masiva de no conciliación +ConfirmMassUnletteringQuestion=¿Está seguro de que desea anular la conciliación de los registros seleccionados %s? ConfirmMassDeleteBookkeepingWriting=Confirmación de borrado en lote -ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? +ConfirmMassDeleteBookkeepingWritingQuestion=Esto eliminará la transacción de la contabilidad (se eliminarán todas las líneas relacionadas con la misma transacción). ¿Está seguro de que desea eliminar los %s registros seleccionados? ## Error SomeMandatoryStepsOfSetupWereNotDone=Algunos pasos necesarios de la configuración no están realizados, por favor complételos. @@ -424,9 +424,10 @@ Binded=Líneas contabilizadas ToBind=Líneas a contabilizar UseMenuToSetBindindManualy=No es posible autodetectar, utilice el menú %s para realizar el apunte manualmente SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Lo sentimos, este módulo no es compatible con la función experimental de facturas de situación. -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code -AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 -AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +AccountancyErrorMismatchLetterCode=Discrepancia en el código de conciliación +AccountancyErrorMismatchBalanceAmount=El saldo (%s) no es igual a 0 +AccountancyErrorLetteringBookkeeping=Se han producido errores con respecto a las transacciones: %s +ErrorAccountNumberAlreadyExists=El número de contabilidad %s ya existe ## Import ImportAccountingEntries=Entradas contables diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang index 93b8193acf6..de25207efd4 100644 --- a/htdocs/langs/es_ES/admin.lang +++ b/htdocs/langs/es_ES/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Próximo valor (rectificativas) MustBeLowerThanPHPLimit=Nota: Su PHP limita el tamaño máximo de archivos a subir a %s %s, cualquiera que sea el valor de este parámetro NoMaxSizeByPHPLimit=Ninguna limitación interna en su servidor PHP MaxSizeForUploadedFiles=Tamaño máximo de los documentos a subir (0 para prohibir la subida) -UseCaptchaCode=Utilización de código gráfico (CAPTCHA) en la página de inicio de sesión +UseCaptchaCode=Use código gráfico (CAPTCHA) en la página de inicio de sesión y algunas páginas públicas AntiVirusCommand=Ruta completa hacia el comando del antivirus AntiVirusCommandExample=Ejemplo para ClamAv Daemon (requiere clamav-daemon): /usr/bin/clamdscan
Ejemplo para ClamWin (muy lento): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe\n  AntiVirusParam= Parámetros complementarios en la línea de comandos @@ -504,7 +504,7 @@ WarningPHPMailC=- El uso del servidor SMTP de su propio proveedor de servicios d WarningPHPMailD=Además, por lo tanto, se recomienda cambiar el método de envío de correos electrónicos al valor "SMTP". Si realmente desea mantener el método "PHP" predeterminado para enviar correos electrónicos, simplemente ignore esta advertencia o elimínela configurando la constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP a 1 en Inicio - Configuración - Otras Configuraciones. WarningPHPMail2=Si su proveedor SMTP de correo electrónico necesita restringir el cliente de correo electrónico a algunas direcciones IP (muy raro), esta es la dirección IP de su aplicación ERP CRM: %s. WarningPHPMailSPF=Si el nombre de dominio en su dirección de correo electrónico del remitente está protegido por un registro SPF (pregunte a su registrador de nombre de dominio), debe agregar las siguientes IP en el registro SPF del DNS de su dominio: %s. -ActualMailSPFRecordFound=Registro de SPF actual encontrado: %s +ActualMailSPFRecordFound=Registro SPF real encontrado (para el correo electrónico %s): %s ClickToShowDescription=Clic para ver la descripción DependsOn=Este módulo necesita el módulo(s) RequiredBy=Este módulo es requerido por los módulos @@ -718,9 +718,9 @@ Permission34=Eliminar productos Permission36=Ver/gestionar los productos ocultos Permission38=Exportar productos Permission39=Ignorar precio mínimo -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission41=Leer proyectos y tareas (proyectos compartidos y proyectos de los que soy contacto). +Permission42=Crear/modificar proyectos (proyectos compartidos y proyectos de los que soy contacto). También puede asignar usuarios a proyectos y tareas. +Permission44=Eliminar proyectos (proyectos compartidos y proyectos de los que soy contacto) Permission45=Exportar proyectos Permission61=Consultar intervenciones Permission62=Crear/modificar intervenciones @@ -766,10 +766,10 @@ Permission122=Crear/modificar empresas Permission125=Eliminar empresas Permission126=Exportar las empresas Permission130=Crear/modificar información de pago de terceros -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission141=Leer todos los proyectos y tareas (así como los proyectos privados para los que no soy un contacto) +Permission142=Crear/modificar todos los proyectos y tareas (así como los proyectos privados para los que no soy un contacto) +Permission144=Eliminar todos los proyectos y tareas (así como los proyectos privados no soy un contacto) +Permission145=Puede ingresar el tiempo consumido, para mí o mi jerarquía, en tareas asignadas (Hoja de tiempo) Permission146=Consultar proveedores Permission147=Consultar estadísticas Permission151=Leer domiciliaciones @@ -884,9 +884,9 @@ Permission564=Registrar Abonos/Devoluciones de transferencias bancarias Permission601=Leer etiquetas autoadhesivas Permission602=Crear/modificar etiquetas autoadhesivas Permission609=Eliminar etiquetas autoadhesivas -Permission611=Read attributes of variants -Permission612=Create/Update attributes of variants -Permission613=Delete attributes of variants +Permission611=Leer atributos de variantes +Permission612=Crear/Actualizar atributos de variantes +Permission613=Eliminar atributos de variantes Permission650=Leer lista de materiales Permission651=Crear/Actualizar lista de material Permission652=Eliminar lista de material @@ -973,8 +973,8 @@ Permission4021=Crear/modificar tu evaluación Permission4022=Validar evaluación Permission4023=Eliminar evaluación Permission4030=Ver menú de comparación -Permission4031=Read personal information -Permission4032=Write personal information +Permission4031=Leer información personal +Permission4032=escribir información personal Permission10001=Leer contenido del sitio web Permission10002=Crear modificar contenido del sitio web (contenido html y javascript) Permission10003=Crear/modificar contenido del sitio web (código php dinámico). Peligroso, debe reservarse a desarrolladores restringidos. @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valor de una constante de configuración ConstantIsOn=La opción %s está activada NbOfDays=Nº de días AtEndOfMonth=A fin de mes -CurrentNext=Actual/Siguiente +CurrentNext=Un día dado en el mes Offset=Decálogo AlwaysActive=Siempre activo Upgrade=Actualización @@ -1346,7 +1346,7 @@ TransKeyWithoutOriginalValue=Forzó una nueva traducción para la clave de tradu TitleNumberOfActivatedModules=Módulos activados TotalNumberOfActivatedModules=Módulos activados: %s / %s YouMustEnableOneModule=Debe activar al menos un módulo. -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +YouMustEnableTranslationOverwriteBefore=Primero debe habilitar la sobrescritura de traducción para poder reemplazar una traducción ClassNotFoundIntoPathWarning=No se ha encontrado la clase %s en su path PHP YesInSummer=Sí en verano OnlyFollowingModulesAreOpenedToExternalUsers=Atención: únicamente los módulos siguientes están disponibles a usuarios externos (sea cual sea el permiso de dichos usuarios) y solo si se otorgan permisos:
@@ -1428,8 +1428,8 @@ WatermarkOnDraftInvoices=Marca de agua en las facturas borrador (en caso de esta PaymentsNumberingModule=Numeración de modelos de pagos SuppliersPayment=Pagos a proveedor SupplierPaymentSetup=Configuración de pagos a proveedores -InvoiceCheckPosteriorDate=Check facture date before validation -InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceCheckPosteriorDate=Verifique la fecha de fabricación antes de la validación +InvoiceCheckPosteriorDateHelp=Estará prohibida la validación de una factura si su fecha es anterior a la fecha de la última factura del mismo tipo. ##### Proposals ##### PropalSetup=Configuración del módulo Presupuestos ProposalsNumberingModules=Módulos de numeración de presupuestos @@ -1927,7 +1927,7 @@ ConfFileMustContainCustom=La instalación o construcción de un módulo externo HighlightLinesOnMouseHover=Resaltar líneas de los listados cuando el ratón pasa por encima de ellas HighlightLinesColor=Resalta el color de la línea cuando el ratón pasa por encima (usar 'ffffff' para no resaltar) HighlightLinesChecked=Resalta el color de la línea cuando se marca (use 'ffffff' para no resaltar) -UseBorderOnTable=Show left-right borders on tables +UseBorderOnTable=Mostrar bordes de izquierda a derecha en las tablas BtnActionColor=Color del botón de acción TextBtnActionColor=Color del texto del botón de acción TextTitleColor=Color para la página de título @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Para que sea eficaz el cambio, presione CTRL+F5 en el t NotSupportedByAllThemes=Funciona con temas del core, puede no funcionar con temas externos BackgroundColor=Color de fondo TopMenuBackgroundColor=Color de fondo para el Menú superior -TopMenuDisableImages=Ocultar imágenes en el Menú superior +TopMenuDisableImages=Icono o texto en el menú superior LeftMenuBackgroundColor=Color de fondo para el Menú izquierdo BackgroundTableTitleColor=Color de fondo para Tabla título línea BackgroundTableTitleTextColor=Color del texto para la línea de título de la tabla @@ -1949,7 +1949,7 @@ EnterAnyCode=Este campo contiene una referencia para identificar la línea. Ingr Enter0or1=Introduzca 0 ó 1 UnicodeCurrency=Ingrese aquí entre llaves, lista con número de byte que representa el símbolo de moneda. Por ejemplo: para $, introduzca [36] - para Brasil Real R$ [82,36] - para €, introduzca [8364] ColorFormat=El color RGB es en formato HEX, ej: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Nombre del icono en formato:
- image.png para un archivo de imagen en el directorio del tema actual
- image.png@module si el archivo está en el directorio /img/ de un módulo
- fa-xxx para un pictograma FontAwesome fa-xxx
- fonwtawesome_xxx_fa_color_size para un pictograma FontAwesome fa-xxx (con prefijo, color y tamaño establecidos) PositionIntoComboList=Posición de la línea en listas de combo SellTaxRate=Tasa de IVA RecuperableOnly=Sí para el IVA "Non Perçue Récupérable" usados en algunas provincias en Francia. Mantenga el valor a "No" en los demás casos. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Filtro Regex para limpiar el valor (COMPANY_AQUARIU COMPANY_DIGITARIA_CLEAN_REGEX=Filtro de expresiones regulares para limpiar el valor (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicado no permitido GDPRContact=Oficina Protección de datos (DPO, Políticas de privacidad o contacto GDPR) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Si almacena datos personales en su Sistema de Información, puede nombrar al contacto responsable del Reglamento General de Protección de Datos aquí HelpOnTooltip=Texto de ayuda a mostrar en la ventana emergente HelpOnTooltipDesc=Coloque aquí un texto o una clave de traducción para mostrar información emergente cuando este campo aparezca en un formulario YouCanDeleteFileOnServerWith=Puede eliminar este archivo del servidor con la línea de comandos:
%s @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Nota: La opción de usar el IVA se ha establecido como De SwapSenderAndRecipientOnPDF=Intercambiar dirección de remitente y destinatario en documentos PDF FeatureSupportedOnTextFieldsOnly=Advertencia, función compatible solo con campos de texto y listas desplegables. Además, se debe establecer un parámetro de URL action=create o action=edit O el nombre de la página debe terminar con 'new.php' para activar esta función. EmailCollector=Recolector de correo +EmailCollectors=Recolectores de correo electrónico EmailCollectorDescription=Añade una tarea programada y una página de configuración para escanear los buzones de e-mail con regularidad (utilizando el protocolo IMAP) y registra los e-mails recibidos en su aplicación, en el lugar correcto y/o crea registros automáticamente (como leads). NewEmailCollector=Nuevo recolector de e-mail EMailHost=Host del servidor de e-mail IMAP @@ -2068,30 +2069,30 @@ EmailcollectorOperations=Operaciones a realizar por el colector EmailcollectorOperationsDesc=Las operaciones se ejecutan de arriba hacia abajo. MaxEmailCollectPerCollect=Número máximo de e-mails recolectados por la recolección CollectNow=Recoger ahora -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +ConfirmCloneEmailCollector=¿Está seguro de que desea clonar el recopilador de correo electrónico %s? DateLastCollectResult=Fecha del último intento de recolección DateLastcollectResultOk=Fecha de la última recolección con éxito LastResult=Último resultado -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeaders=No incluya el contenido del encabezado del correo electrónico en el contenido guardado de los correos electrónicos recopilados +EmailCollectorHideMailHeadersHelp=Cuando está habilitado, los encabezados de correo electrónico no se agregan al final del contenido del correo electrónico que se guarda como un evento de agenda. EmailCollectorConfirmCollectTitle=Confirmación recolección e-mail -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +EmailCollectorConfirmCollect=¿Desea ejecutar este recopilador ahora? +EmailCollectorExampleToCollectTicketRequestsDesc=Recopile correos electrónicos que coincidan con algunas reglas y cree automáticamente un ticket (el módulo Ticket debe estar habilitado) con la información del correo electrónico. Puede usar este recopilador si brinda algún tipo de soporte por correo electrónico, por lo que su solicitud de boleto se generará automáticamente. Active también Collect_Responses para recopilar las respuestas de su cliente directamente en la vista del ticket (debe responder desde Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Ejemplo de recopilación de la solicitud de ticket (solo el primer mensaje) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Escanee el directorio "Enviado" de su buzón para encontrar correos electrónicos que se enviaron como respuesta a otro correo electrónico directamente desde su software de correo electrónico y no desde Dolibarr. Si se encuentra dicho correo electrónico, el evento de respuesta se registra en Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Ejemplo de recopilación de respuestas de correo electrónico enviadas desde un software de correo electrónico externo +EmailCollectorExampleToCollectDolibarrAnswersDesc=Recopile todos los correos electrónicos que sean una respuesta de un correo electrónico enviado desde su aplicación. Un evento (el Módulo Agenda debe estar habilitado) con la respuesta del correo electrónico se registrará en el buen lugar. Por ejemplo, si envías una propuesta comercial, pedido, factura o mensaje de ticket por email desde la aplicación, y el destinatario responde a tu email, el sistema captará automáticamente la respuesta y la añadirá a tu ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Ejemplo recopilando todos los mensajes entrantes como respuestas a mensajes enviados desde Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Recopile correos electrónicos que coincidan con algunas reglas y cree automáticamente un cliente potencial (el Proyecto del módulo debe estar habilitado) con la información del correo electrónico. Puedes usar este recopilador si quieres seguir tu lead usando el módulo Proyecto (1 lead = 1 proyecto), por lo que tus leads se generarán automáticamente. Si el recopilador Collect_Responses también está habilitado, cuando envía un correo electrónico desde sus clientes potenciales, propuestas o cualquier otro objeto, también puede ver las respuestas de sus clientes o socios directamente en la aplicación.
Nota: Con este ejemplo inicial se genera el título del lead incluyendo el email. Si no se puede encontrar al tercero en la base de datos (nuevo cliente), el cliente potencial se adjuntará al tercero con ID 1. +EmailCollectorExampleToCollectLeads=Ejemplo de recopilación de clientes potenciales +EmailCollectorExampleToCollectJobCandidaturesDesc=Recopile los correos electrónicos que solicitan ofertas de trabajo (el Módulo de Reclutamiento debe estar habilitado). Puede completar este recopilador si desea crear automáticamente una candidatura para una solicitud de trabajo. Nota: Con este ejemplo inicial se genera el título de la candidatura incluyendo el correo electrónico. +EmailCollectorExampleToCollectJobCandidatures=Ejemplo de recogida de candidaturas de trabajo recibidas por correo electrónico NoNewEmailToProcess=No hay e-mails nuevos (filtros coincidentes) para procesar NothingProcessed=Nada hecho -XEmailsDoneYActionsDone=%s e-mails analizados, %s e-mails procesados ​​con éxito (para %s registro/acciones realizadas) +XEmailsDoneYActionsDone=%s correos electrónicos precalificados, %s correos electrónicos procesados con éxito (para %s registro/acciones realizadas) RecordEvent=Registrar un evento en agenda (con tipo Email enviado o recibido) CreateLeadAndThirdParty=Crear un cliente potencial (y un tercero si es necesario) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +CreateTicketAndThirdParty=Cree un ticket (vinculado a un tercero si el tercero se cargó mediante una operación anterior o se adivinó a partir de un rastreador en el encabezado del correo electrónico, sin tercero de lo contrario) CodeLastResult=Resultado último código NbOfEmailsInInbox=Número de emails en el directorio fuente LoadThirdPartyFromName=Cargar terceros buscando en %s (solo carga) @@ -2112,7 +2113,7 @@ ResourceSetup=Configuración del módulo Recursos UseSearchToSelectResource=Utilice un formulario de búsqueda para elegir un recurso (en lugar de una lista desplegable). DisabledResourceLinkUser=Desactivar funcionalidad de enlazar recursos a usuarios DisabledResourceLinkContact=Desactivar funcionalidad de enlazar recurso a contactos -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Prohibir el uso del mismo recurso al mismo tiempo en la agenda ConfirmUnactivation=Confirme el restablecimiento del módulo OnMobileOnly=Sólo en pantalla pequeña (smartphone) DisableProspectCustomerType=Deshabilite el tipo de tercero "Cliente potencial + Cliente" (por lo que el tercero debe ser "Cliente potencial" o "Cliente", pero no puede ser ambos) @@ -2157,7 +2158,7 @@ DeleteEmailCollector=Eliminar el recolector de e-mail ConfirmDeleteEmailCollector=¿Está seguro de que querer eliminar este recolector de e-mail? RecipientEmailsWillBeReplacedWithThisValue=Los e-mails del destinatario siempre serán reemplazados por este valor AtLeastOneDefaultBankAccountMandatory=Se debe definir al menos una cuenta bancaria predeterminada -RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. +RESTRICT_ON_IP=Permita el acceso a la API solo a ciertas direcciones IP de clientes (comodín no permitido, use espacio entre valores). Vacío significa que todos los clientes pueden acceder. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Basado en la versión de la biblioteca SabreDAV NotAPublicIp=No es una IP pública @@ -2167,6 +2168,9 @@ EmailTemplate=Plantilla para e-mail EMailsWillHaveMessageID=Los e-mais tendrán una etiqueta 'Referencias' que coincida con esta sintaxis PDF_SHOW_PROJECT=Mostrar proyecto en documento ShowProjectLabel=Etiqueta del proyecto +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Incluir alias en nombre de terceros +THIRDPARTY_ALIAS=Nombre de tercero - Alias de tercero +ALIAS_THIRDPARTY=Alias de tercero - Nombre de tercero PDF_USE_ALSO_LANGUAGE_CODE=Si desea duplicar algunos textos en su PDF en 2 idiomas diferentes en el mismo PDF generado, debe establecer aquí este segundo idioma para que el PDF generado contenga 2 idiomas diferentes en la misma página, el elegido al generar el PDF y este ( solo unas pocas plantillas PDF lo admiten). Mantener vacío para 1 idioma por PDF. PDF_USE_A=Generar documentos PDF con formato PDF/A en lugar del formato PDF predeterminado FafaIconSocialNetworksDesc=Ingrese aquí el código de un ícono FontAwesome. Si no sabe qué es FontAwesome, puede usar el valor genérico fa-address-book. @@ -2248,18 +2252,30 @@ TemplateforBusinessCards=Plantilla para una tarjeta de presentación en diferent InventorySetup= Configuración inventario ExportUseLowMemoryMode=Usar un modo de poca memoria ExportUseLowMemoryModeHelp=Use el modo de memoria baja para ejecutar el archivo ejecutable del volcado (la compresión se realiza a través de una canalización en lugar de en la memoria PHP). Este método no permite verificar que el archivo esté completo y no se puede informar un mensaje de error si falla. -ShowQuickAddLink=Show a button to quickly add an element in top right menu -HashForPing=Hash used for ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interfaz para capturar disparadores de dolibarr y enviarlo a una URL +WebhookSetup = Configuración de webhook +Settings = Configuraciones +WebhookSetupPage = Página de configuración del webhook +ShowQuickAddLink=Mostrar un botón para agregar rápidamente un elemento en el menú superior derecho + +HashForPing=Hash utilizado para hacer ping +ReadOnlyMode=¿Está la instancia en modo "Solo lectura"? +DEBUGBAR_USE_LOG_FILE=Use el archivo dolibarr.log para capturar registros +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilice el archivo dolibarr.log para atrapar registros en lugar de capturar la memoria en vivo. Permite capturar todos los registros en lugar de solo el registro del proceso actual (incluido el de las páginas de subsolicitudes de ajax), pero hará que su instancia sea muy lenta. No recomendado. +FixedOrPercent=Fijo (use la palabra clave 'fixed') o porcentaje (use la palabra clave 'percent') +DefaultOpportunityStatus=Estado de oportunidad predeterminado (primer estado cuando se crea el cliente potencial) + +IconAndText=Icono y texto +TextOnly=Solo texto +IconOnlyAllTextsOnHover=Solo ícono: todos los textos aparecen debajo del ícono en la barra de menú de desplazamiento del mouse +IconOnlyTextOnHover=Solo ícono: el texto del ícono aparece debajo del ícono al pasar el mouse sobre el ícono +IconOnly=Solo icono: solo texto en la información sobre herramientas +INVOICE_ADD_ZATCA_QR_CODE=Mostrar el código QR de ZATCA en las facturas +INVOICE_ADD_ZATCA_QR_CODEMore=Algunos países árabes necesitan este código QR en sus facturas +INVOICE_ADD_SWISS_QR_CODE=Mostrar el código QR-Bill suizo en las facturas +UrlSocialNetworksDesc=Enlace URL de la red social. Use {socialid} para la parte variable que contiene la identificación de la red social. +IfThisCategoryIsChildOfAnother=Si esta categoría es hija de otra +NoName=Sin nombre +CIDLookupURL=El módulo trae una URL que puede ser utilizada por una herramienta externa para obtener el nombre de un tercero o contacto a partir de su número de teléfono. La URL a utilizar es: diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang index d1b89436a17..277678721a4 100644 --- a/htdocs/langs/es_ES/agenda.lang +++ b/htdocs/langs/es_ES/agenda.lang @@ -45,7 +45,7 @@ CONTRACT_DELETEInDolibarr=Contrato %s eliminado PropalClosedSignedInDolibarr=Presupuesto %s firmado PropalClosedRefusedInDolibarr=Presupuesto %s rechazado PropalValidatedInDolibarr=Presupuesto %s validado -PropalBackToDraftInDolibarr=Proposal %s go back to draft status +PropalBackToDraftInDolibarr=Propuesta %s volver al estado de borrador PropalClassifiedBilledInDolibarr=Presupuesto %s clasificado facturado InvoiceValidatedInDolibarr=Factura %s validada InvoiceValidatedInDolibarrFromPos=Factura %s validada desde TPV @@ -67,7 +67,7 @@ ShipmentBackToDraftInDolibarr=Envío %s ha sido devuelto al estado de borrador ShipmentDeletedInDolibarr=Expedición %s eliminada ShipmentCanceledInDolibarr=Envío %s cancelado ReceptionValidatedInDolibarr=Recepción %s validada -ReceptionClassifyClosedInDolibarr=Reception %s classified closed +ReceptionClassifyClosedInDolibarr=Recepción %s clasificado cerrado OrderCreatedInDolibarr=Pedido %s creado OrderValidatedInDolibarr=Pedido %s validado OrderDeliveredInDolibarr=Pedido %s clasificado como enviado diff --git a/htdocs/langs/es_ES/boxes.lang b/htdocs/langs/es_ES/boxes.lang index f3142cb5242..7e6988c40c8 100644 --- a/htdocs/langs/es_ES/boxes.lang +++ b/htdocs/langs/es_ES/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Últimas suscripciones de miembros BoxFicheInter=Últimas intervenciones BoxCurrentAccounts=Balance de cuentas abiertas BoxTitleMemberNextBirthdays=Cumpleaños de este mes (miembros) -BoxTitleMembersByType=Miembros por tipo +BoxTitleMembersByType=Miembros por tipo y estado BoxTitleMembersSubscriptionsByYear=Suscripciones de miembros por año BoxTitleLastRssInfos=Últimas %s noticias de %s BoxTitleLastProducts=Productos/Servicios: últimos %s modificados diff --git a/htdocs/langs/es_ES/cashdesk.lang b/htdocs/langs/es_ES/cashdesk.lang index 30f630595a4..0204a62b549 100644 --- a/htdocs/langs/es_ES/cashdesk.lang +++ b/htdocs/langs/es_ES/cashdesk.lang @@ -50,8 +50,8 @@ Footer=Pié de página AmountAtEndOfPeriod=Importe al final del período (día, mes o año) TheoricalAmount=Importe teórico RealAmount=Importe real -CashFence=Cash box closing -CashFenceDone=Cash box closing done for the period +CashFence=Cierre de caja +CashFenceDone=Cierre de caja realizado para el período NbOfInvoices=Nº de facturas Paymentnumpad=Tipo de Pad para introducir el pago. Numberspad=Teclado numérico @@ -102,8 +102,8 @@ CashDeskGenericMaskCodes6 =
{TN} tag es usado para añadir el número TakeposGroupSameProduct=Agrupar mismas líneas de producto StartAParallelSale=Nueva venta simultánea  SaleStartedAt=Oferta comenzada en %s -ControlCashOpening=Open the "Control cash box" popup when opening the POS -CloseCashFence=Close cash box control +ControlCashOpening=Abra la ventana emergente "Control de caja de efectivo" al abrir el POS +CloseCashFence=Cerrar control de caja CashReport=Arqueo MainPrinterToUse=Impresora principal OrderPrinterToUse=Impresora de pedido @@ -136,3 +136,4 @@ PrintWithoutDetails=Imprimir sin detalles YearNotDefined=El año no está definido TakeposBarcodeRuleToInsertProduct=Regla de código de barras para insertar producto TakeposBarcodeRuleToInsertProductDesc=Regla para extraer la referencia del producto + una cantidad de un código de barras escaneado.
Si está vacío (valor predeterminado), la aplicación utilizará el código de barras completo escaneado para encontrar el producto.

Si se define, sintaxis debe ser:
ref:NB+qu:NB+qd:NB+other:NB
donde NB es el número de caracteres a utilizar para extraer datos del código de barras escaneado con:
  • ref : referencia del producto
  • qu : cantidad de conjunto al insertar elementos (unidades)
  • qd : cantidad de conjunto al insertar artículo (decimales)
  • otra : otros caracteres
+AlreadyPrinted=Ya impreso diff --git a/htdocs/langs/es_ES/categories.lang b/htdocs/langs/es_ES/categories.lang index 3b97fb4ffb2..ae1eb6261a8 100644 --- a/htdocs/langs/es_ES/categories.lang +++ b/htdocs/langs/es_ES/categories.lang @@ -90,11 +90,14 @@ CategorieRecursivHelp=Si la opción está activada, cuando agrega un producto a AddProductServiceIntoCategory=Añadir el siguiente producto/servicio AddCustomerIntoCategory=Asignar categoría al cliente AddSupplierIntoCategory=Asignar categoría a proveedor +AssignCategoryTo=Asignar categoría a ShowCategory=Mostrar etiqueta/categoría ByDefaultInList=Por defecto en lista ChooseCategory=Elija una categoría StocksCategoriesArea=Categorías de almacén +TicketsCategoriesArea=Categorías de Tickets ActionCommCategoriesArea=Categorías de eventos WebsitePagesCategoriesArea=Categorías de contenedor de página KnowledgemanagementsCategoriesArea=Categorías de artículos de KM UseOrOperatorForCategories=Utilice el operador 'OR' para las categorías +AddObjectIntoCategory=Agregar objeto a la categoría diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index d0e50c90c44..e12c0e84e1f 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -19,7 +19,7 @@ ProspectionArea=Área de prospección IdThirdParty=ID tercero IdCompany=Id empresa IdContact=Id contacto -ThirdPartyAddress=Third-party address +ThirdPartyAddress=Dirección de terceros ThirdPartyContacts=Contactos terceros ThirdPartyContact=Contactos/direcciones terceros Company=Empresa @@ -52,21 +52,22 @@ CivilityCode=Código cortesía RegisteredOffice=Domicilio social Lastname=Apellidos Firstname=Nombre -RefEmployee=Employee reference -NationalRegistrationNumber=National registration number +RefEmployee=Referencia del empleado +NationalRegistrationNumber=Número de registro nacional PostOrFunction=Puesto de trabajo UserTitle=Título de cortesía NatureOfThirdParty=Naturaleza del tercero NatureOfContact=Naturaleza del contacto Address=Dirección State=Provincia +StateId=ID Estado StateCode=Código de estado/provincia StateShort=Estado Region=Región Region-State=Región - Estado Country=País CountryCode=Código país -CountryId=Id país +CountryId=ID País Phone=Teléfono PhoneShort=Teléfono Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=Código proveedor incorrecto CustomerCodeModel=Modelo de código cliente SupplierCodeModel=Modelo de código proveedor Gencod=Código de barras -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Código de barras de precio ref ##### Professional ID ##### ProfId1Short=Prof. id 1 ProfId2Short=Prof. id 2 @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Identificación. profe. 1 (Registro Mercantil) ProfId2CM=Identificación. profe. 2 (Número de Identificación Fiscal ) -ProfId3CM=Identificación. profe. 3 (Decreto de creación) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=Identificación. prof. 3 (Nº de Decreto de creación) +ProfId4CM=Identificación. profe. 4 (Certificado de depósito No.) +ProfId5CM=Identificación. profe. 5 (Otros) ProfId6CM=- ProfId1ShortCM=Registro Mercantil ProfId2ShortCM=NIF (Número de Identificación Fiscal) -ProfId3ShortCM=Decreto de creación -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=Nº de decreto de creación +ProfId4ShortCM=Certificado de depósito No. ProfId5ShortCM=Otros ProfId6ShortCM=- ProfId1CO=R.U.T. @@ -363,7 +364,7 @@ ListOfThirdParties=Listado de terceros ShowCompany=Tercero ShowContact=Contacto/Dirección ContactsAllShort=Todos (sin filtro) -ContactType=Contact role +ContactType=Rol de contacto ContactForOrders=Contacto de pedidos ContactForOrdersOrShipments=Contacto de pedidos o envíos ContactForProposals=Contacto de presupuestos diff --git a/htdocs/langs/es_ES/errors.lang b/htdocs/langs/es_ES/errors.lang index 1c8597c2b51..b1ac1c7ff3d 100644 --- a/htdocs/langs/es_ES/errors.lang +++ b/htdocs/langs/es_ES/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript no debe estar desactivado para que esta ErrorPasswordsMustMatch=Las 2 contraseñas indicadas deben corresponderse ErrorContactEMail=Se ha producido un error técnico. Contacte con el administrador al e-mail %s, indicando el código de error %s en su mensaje, o puede también adjuntar una copia de pantalla de esta página. ErrorWrongValueForField=Valor incorrecto para el campo número %s: '%s' no cumple con la regla %s +ErrorHtmlInjectionForField=Campo %s : El valor ' %s ' contiene datos maliciosos no permitidos ErrorFieldValueNotIn=Valor incorrecto del campo número %s: '%s' no es un valor disponible en el campo %s de la tabla %s ErrorFieldRefNotIn=Valor incorrecto para el campo número %s: '%s' no es una referencia existente en %s ErrorsOnXLines=%s errores encontrados @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Primero debe configurar su plan de cuen ErrorFailedToFindEmailTemplate=No se pudo encontrar la plantilla con el nombre de código %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duración no definida en el servicio. No hay forma de calcular el precio por hora. ErrorActionCommPropertyUserowneridNotDefined=Se requiere el propietario del usuario -ErrorActionCommBadType=El tipo de evento seleccionado (id: %n, código: %s) no existe en el diccionario de tipo de evento +ErrorActionCommBadType=El tipo de evento seleccionado (id: %s, código: %s) no existe en el diccionario de tipo de evento CheckVersionFail=Error de verificación de versión ErrorWrongFileName=El nombre del archivo no puede contener __SOMETHING__ ErrorNotInDictionaryPaymentConditions=No está en el Diccionario de términos de pago, modifíquelo. @@ -281,17 +282,20 @@ ErrorRequestTooLarge=Error, solicitud demasiado grande ErrorNotApproverForHoliday=Usted no es el aprobador del día libre %s ErrorAttributeIsUsedIntoProduct=Este atributo se utiliza en una o más variantes de producto ErrorAttributeValueIsUsedIntoProduct=Este valor de atributo se utiliza en una o más variantes de producto -ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column -ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s -ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" -ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by actual object status -ErrorAjaxRequestFailed=Request failed +ErrorPaymentInBothCurrency=Error, todos los montos deben ingresarse en la misma columna +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Intenta pagar facturas en la moneda %s desde una cuenta con la moneda %s +ErrorInvoiceLoadThirdParty=No se puede cargar el objeto de terceros para la factura "%s" +ErrorInvoiceLoadThirdPartyKey=Clave de terceros "%s" no configurada para la factura "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Eliminar línea no está permitido por el estado actual del objeto +ErrorAjaxRequestFailed=Solicitud fallida +ErrorThirpdartyOrMemberidIsMandatory=Tercero o Miembro de la sociedad es obligatorio +ErrorFailedToWriteInTempDirectory=Error al escribir en el directorio temporal +ErrorQuantityIsLimitedTo=La cantidad está limitada a %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=El parámetro PHP upload_max_filesize (%s) es más alto que el parámetro PHP post_max_size (%s). Esta no es una configuración consistente. WarningPasswordSetWithNoAccount=Se fijó una contraseña para este miembro. Sin embargo, no se ha creado ninguna cuenta de usuario. Así que esta contraseña no se puede utilizar para acceder a Dolibarr. Puede ser utilizada por un módulo/interfaz externo, pero si no necesitar definir accesos de un miembro, puede desactivar la opción "Administrar un inicio de sesión para cada miembro" en la configuración del módulo miembros. Si necesita administrar un inicio de sesión, pero no necesita ninguna contraseña, puede dejar este campo vacío para evitar esta advertencia. Nota: También puede usarse el correo electrónico como inicio de sesión si el miembro está vinculada a un usuario. -WarningMandatorySetupNotComplete=Haga clic aquí para configurar los parámetros obligatorios +WarningMandatorySetupNotComplete=Haga clic aquí para configurar los parámetros principales WarningEnableYourModulesApplications=Haga clic aquí para activar sus módulos y aplicaciones WarningSafeModeOnCheckExecDir=Atención, está activada la opción PHP safe_mode, el comando deberá estar dentro de un directorio declarado dentro del parámetro php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Ya existe un marcador con este título o esta URL. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Advertencia, no puede crear directamente una subcuenta, WarningAvailableOnlyForHTTPSServers=Disponible solo si usa una conexión segura HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=El módulo %s no se ha habilitado. Así que puede perderse muchos eventos aquí. WarningPaypalPaymentNotCompatibleWithStrict=El valor 'Estricto' hace que las funciones de pago en línea no funcionen correctamente. Utilice 'Lax' en su lugar. +WarningThemeForcedTo=Advertencia, el tema ha sido forzado a %s por la constante oculta MAIN_FORCETHEME -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Valor no válido RequireAtLeastXString = Requiere al menos %s carácter(es) @@ -347,12 +347,3 @@ BadSetupOfField = Error de configuración incorrecta del campo BadSetupOfFieldClassNotFoundForValidation = Error de configuración incorrecta del campo: clase no encontrada para validación BadSetupOfFieldFileNotFound = Error de configuración incorrecta del campo: no se encontró el archivo para su inclusión BadSetupOfFieldFetchNotCallable = Error de configuración incorrecta del campo: la recuperación no se puede llamar en la clase -<<<<<<< HEAD -======= -======= -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/es_ES/eventorganization.lang b/htdocs/langs/es_ES/eventorganization.lang index 8ea50dc2eb1..6b69256cb59 100644 --- a/htdocs/langs/es_ES/eventorganization.lang +++ b/htdocs/langs/es_ES/eventorganization.lang @@ -38,6 +38,7 @@ Settings=Configuraciones EventOrganizationSetupPage = Página de configuración de organización de eventos EVENTORGANIZATION_TASK_LABEL = Etiqueta de tareas para crear automáticamente cuando se valida el proyecto EVENTORGANIZATION_TASK_LABELTooltip = Cuando valida un evento organizado, algunas tareas se pueden crear automáticamente en el proyecto

Por ejemplo:
Enviar llamada para conferencia
Enviar llamada para cabina
Recibir llamada para conferencias
Recibir llamada para cabina
Abrir suscripciones a eventos para asistentes
Enviar recordatorio del evento a los oradores
Enviar recordatorio del evento al anfitrión del stand
Enviar recordatorio del evento a los asistentes +EVENTORGANIZATION_TASK_LABELTooltip2=Manténgalo vacío si no necesita crear tareas automáticamente. EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Categoría para agregar a terceros creada automáticamente cuando alguien sugiere una conferencia EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Categoría para agregar a terceros creada automáticamente cuando sugieren un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Plantilla de correo electrónico para enviar después de recibir una sugerencia de conferencia. @@ -59,6 +60,8 @@ ConferenceOrBoothTab = Conferencia o cabina AmountPaid = Importe pagado DateOfRegistration = Fecha de registro ConferenceOrBoothAttendee = Asistente a la conferencia o al stand +ApplicantOrVisitor=Solicitante o visitante +Speaker=Altavoz # # Template Mail @@ -138,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Se ha registrado el pago de la OrganizationEventBulkMailToAttendees=Este es un recordatorio sobre su participación en el evento como asistente. OrganizationEventBulkMailToSpeakers=Este es un recordatorio sobre su participación en el evento como ponente. OrganizationEventLinkToThirdParty=Enlace a un tercero (cliente, proveedor o socio) +OrganizationEvenLabelName=Nombre público de la conferencia o stand NewSuggestionOfBooth=Solicitud de stand NewSuggestionOfConference=Solicitud de conferencia @@ -165,3 +169,4 @@ EmailCompanyForInvoice=E-mailde la empresa (para la factura, si es diferente del ErrorSeveralCompaniesWithEmailContactUs=Se han encontrado varias empresas con este e-mail, por lo que no podemos validar automáticamente su registro. Póngase en contacto con nosotros en %s para una validación manual ErrorSeveralCompaniesWithNameContactUs=Se han encontrado varias empresas con este nombre por lo que no podemos validar automáticamente su registro. Póngase en contacto con nosotros en %s para una validación manual NoPublicActionsAllowedForThisEvent=No hay acciones públicas abiertas al público para este evento. +MaxNbOfAttendees=Número máximo de asistentes diff --git a/htdocs/langs/es_ES/externalsite.lang b/htdocs/langs/es_ES/externalsite.lang deleted file mode 100644 index d66d608abbf..00000000000 --- a/htdocs/langs/es_ES/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configuración del enlace al sitio web externo -ExternalSiteURL=URL del sitio externo de contenido de iframe HTML -ExternalSiteModuleNotComplete=El módulo Sitio web externo no ha sido configurado correctamente. -ExampleMyMenuEntry=Mi entrada de menú diff --git a/htdocs/langs/es_ES/ftp.lang b/htdocs/langs/es_ES/ftp.lang deleted file mode 100644 index 4dcb9e6c0ce..00000000000 --- a/htdocs/langs/es_ES/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuración del módulo de cliente FTP o SFTP -NewFTPClient=Nueva configuración de conexión FTP / FTPS -FTPArea=Área FTP / FTPS -FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP y SFTP. -SetupOfFTPClientModuleNotComplete=La configuración del módulo de cliente FTP o SFTP parece estar incompleta -FTPFeatureNotSupportedByYourPHP=Su PHP no admite funciones FTP o SFTP -FailedToConnectToFTPServer=No se pudo conectar al servidor (servidor %s, puerto %s) -FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor con inicio de sesión/contraseña definidos -FTPFailedToRemoveFile=No se pudo eliminar el archivo %s. -FTPFailedToRemoveDir=No se pudo eliminar el directorio %s (Compruebe los permisos y que el directorio está vacío). -FTPPassiveMode=Modo pasivo -ChooseAFTPEntryIntoMenu=Elija un sitio FTP / SFTP del menú ... -FailedToGetFile=No se pudieron obtener los archivos %s diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index 48fb8be6ac9..e6262965eed 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -134,6 +134,6 @@ HolidaysToApprove=Vacaciones para aprobar NobodyHasPermissionToValidateHolidays=Nadie tiene permiso para validar días libres HolidayBalanceMonthlyUpdate=Actualización mensual del saldo de vacaciones XIsAUsualNonWorkingDay=%s es normalmente un día NO laborable -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative +BlockHolidayIfNegative=Bloquear si saldo negativo +LeaveRequestCreationBlockedBecauseBalanceIsNegative=La creación de esta solicitud de licencia está bloqueada porque su saldo es negativo ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La solicitud de abandono %s debe ser borrador, cancelada o rechazada para ser eliminada diff --git a/htdocs/langs/es_ES/hrm.lang b/htdocs/langs/es_ES/hrm.lang index 722722a2f4d..501f717ec88 100644 --- a/htdocs/langs/es_ES/hrm.lang +++ b/htdocs/langs/es_ES/hrm.lang @@ -70,12 +70,23 @@ RequiredSkills=Habilidades requeridas para este trabajo UserRank=Rango de usuario SkillList=Lista de habilidades SaveRank=Guardar rango -knowHow=Saber como -HowToBe=Cómo ser -knowledge=Conocimiento +TypeKnowHow=Saber como +TypeHowToBe=Cómo ser +TypeKnowledge=Conocimiento AbandonmentComment=Comentario de abandono DateLastEval=Fecha última evaluación NoEval=No se ha realizado ninguna evaluación para este empleado HowManyUserWithThisMaxNote=Número de usuarios con este rango HighestRank=Rango más alto SkillComparison=Comparación de habilidades +ActionsOnJob=Eventos en este trabajo +VacantPosition=vacante de trabajo +VacantCheckboxHelper=Al marcar esta opción, se mostrarán los puestos vacantes (vacante de trabajo) +SaveAddSkill = Habilidad(es) añadidas +SaveLevelSkill = Nivel de habilidad(es) guardado +DeleteSkill = Habilidad eliminada +SkillsExtraFields=Atributos suplementarios (Competencias) +JobsExtraFields=Atributos complementarios (Trabajos) +EvaluationsExtraFields=Atributos complementarios (Evaluaciones) +NeedBusinessTravels=Necesita viajes de negocios +NoDescription=Sin descripción diff --git a/htdocs/langs/es_ES/install.lang b/htdocs/langs/es_ES/install.lang index 38d131de05d..a547fdfe6b7 100644 --- a/htdocs/langs/es_ES/install.lang +++ b/htdocs/langs/es_ES/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=El archivo %s no es modificable. Para una primera i ConfFileIsWritable=El archivo %s es modificable. ConfFileMustBeAFileNotADir=El archivo de configuración %s tiene que ser un archivo, no un directorio. ConfFileReload=Recargar toda la información del archivo de configuración. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=El archivo de configuración conf/conf.php no existe o no se puede leer. Ejecutaremos el proceso de instalación para intentar inicializarlo. PHPSupportPOSTGETOk=Este PHP soporta bien las variables POST y GET. PHPSupportPOSTGETKo=Es posible que este PHP no soporte las variables POST y/o GET. Compruebe el parámetro variables_order del php.ini. PHPSupportSessions=Este PHP soporta sesiones @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Indicó quizá un valor incorrecto para el parámetr ErrorFailedToCreateDatabase=Error al crear la base de datos '%s'. ErrorFailedToConnectToDatabase=Error de conexión a la base de datos '%s'. ErrorDatabaseVersionTooLow=Versión de la base de datos (%s) demasiado antigua. Se requiere versión %s o superior. -ErrorPHPVersionTooLow=Versión de PHP demasiado antigua. Se requiere versión %s o superior. +ErrorPHPVersionTooLow=Versión de PHP demasiado antigua. Se requiere la versión %s o superior. +ErrorPHPVersionTooHigh=Versión de PHP demasiado alta. Se requiere la versión %s o anterior. ErrorConnectedButDatabaseNotFound=La conexión al servidor es correcta pero no se encuentra la base de datos '%s' ErrorDatabaseAlreadyExists=La base de datos '%s' ya existe. IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base de datos no existe, vuelva atrás y active la opción "Crear base de datos" diff --git a/htdocs/langs/es_ES/knowledgemanagement.lang b/htdocs/langs/es_ES/knowledgemanagement.lang index 2c0c2c3797b..2029a596f18 100644 --- a/htdocs/langs/es_ES/knowledgemanagement.lang +++ b/htdocs/langs/es_ES/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artículos KnowledgeRecord = Artículo KnowledgeRecordExtraFields = Campos adicionales para el artículo GroupOfTicket=Grupo de tickets -YouCanLinkArticleToATicketCategory=Puede vincular un artículo a un grupo de tickets (por lo que el artículo se sugerirá durante la calificación de nuevos tickets) +YouCanLinkArticleToATicketCategory=Puede vincular el artículo a un grupo de tickets (para que el artículo se resalte en cualquier ticket de este grupo) SuggestedForTicketsInGroup=Sugerido para tickets cuando el grupo es SetObsolete=Marcar como obsoleto diff --git a/htdocs/langs/es_ES/languages.lang b/htdocs/langs/es_ES/languages.lang index 34495b20bb8..5d67299fa1b 100644 --- a/htdocs/langs/es_ES/languages.lang +++ b/htdocs/langs/es_ES/languages.lang @@ -1,8 +1,9 @@ # Dolibarr language file - Source file is en_US - languages Language_am_ET=Etíope Language_ar_AR=Árabe -Language_ar_DZ=Arabic (Algeria) +Language_ar_DZ=Árabe (Argelia) Language_ar_EG=Árabe (Egipto) +Language_ar_JO=Árabe (Jordania) Language_ar_MA=Árabe (marruecos) Language_ar_SA=Árabe Language_ar_TN=Árabe (Túnez) @@ -12,9 +13,11 @@ Language_az_AZ=Azerbaiyano Language_bn_BD=Bengalí Language_bn_IN=Bengalí (India) Language_bg_BG=Búlgaro +Language_bo_CN=Tibetano Language_bs_BA=Bosnio Language_ca_ES=Catalán Language_cs_CZ=Checo +Language_cy_GB=Galés Language_da_DA=Danés Language_da_DK=Danés Language_de_DE=Alemán @@ -22,6 +25,7 @@ Language_de_AT=Alemán (Austria) Language_de_CH=Alemán (Suiza) Language_el_GR=Griego Language_el_CY=Griego (Chipre) +Language_en_AE=Inglés (Emiratos Árabes Unidos) Language_en_AU=Inglés (Australia) Language_en_CA=Inglés (Canadá) Language_en_GB=Inglés (Reino Unido) @@ -36,6 +40,7 @@ Language_es_AR=Español (Argentina) Language_es_BO=Español (Bolivia) Language_es_CL=Español (Chile) Language_es_CO=Español (Colombia) +Language_es_CR=Español (Costa Rica) Language_es_DO=Español (República Dominicana) Language_es_EC=Español (Ecuador) Language_es_GT=Español (Guatemala) @@ -83,18 +88,21 @@ Language_lt_LT=Lituano Language_lv_LV=Latvio Language_mk_MK=Macedonio Language_mn_MN=Mongol +Language_my_MM=Birmano Language_nb_NO=Noruego (Bokmål) Language_ne_NP=Nepalí Language_nl_BE=Neerlandés (Bélgica) Language_nl_NL=Holandés Language_pl_PL=Polaco Language_pt_AO=Portugués (Angola) +Language_pt_MZ=Portugués (Mozambique) Language_pt_BR=Portugués (Brasil) Language_pt_PT=Portugués Language_ro_MD=Rumano (Moldavia) Language_ro_RO=Rumano Language_ru_RU=Ruso Language_ru_UA=Ruso (Ucrania) +Language_ta_IN=Tamil Language_tg_TJ=Tayiko Language_tr_TR=Turco Language_sl_SI=Esloveno @@ -106,6 +114,7 @@ Language_sr_RS=Serbio Language_sw_SW=Kiswahili Language_th_TH=Tailandés Language_uk_UA=Ucranio +Language_ur_PK=Urdu Language_uz_UZ=Uzbeco Language_vi_VN=Vietnamita Language_zh_CN=Chino diff --git a/htdocs/langs/es_ES/loan.lang b/htdocs/langs/es_ES/loan.lang index 45cadda49d5..a40c0739249 100644 --- a/htdocs/langs/es_ES/loan.lang +++ b/htdocs/langs/es_ES/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Prestamo InterestAmount=Interés CapitalRemain=Capital restante TermPaidAllreadyPaid = Este plazo ya está pagado -CantUseScheduleWithLoanStartedToPaid = No se puede usar el programador para un préstamo con el pago iniciado +CantUseScheduleWithLoanStartedToPaid = No se puede generar una línea de tiempo para un préstamo con un pago iniciado CantModifyInterestIfScheduleIsUsed = No puede modificar el interés si usa el programador # Admin ConfigLoan=Configuración del módulo préstamos diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang index ae24ec982fd..d79f9eeeea8 100644 --- a/htdocs/langs/es_ES/mails.lang +++ b/htdocs/langs/es_ES/mails.lang @@ -60,7 +60,7 @@ EMailTestSubstitutionReplacedByGenericValues=En modo prueba, las variables de su MailingAddFile=Adjuntar este archivo NoAttachedFiles=Sin archivos adjuntos BadEMail=E-Mail incorrecto -EMailNotDefined=Email not defined +EMailNotDefined=Correo electrónico no definido ConfirmCloneEMailing=¿Está seguro de querer clonar este e-mailing? CloneContent=Clonar mensaje CloneReceivers=Clonar destinatarios @@ -178,3 +178,4 @@ IsAnAnswer=Es una respuesta de un e-mail inicial. RecordCreatedByEmailCollector=Registro creado por el Recopilador de E-Mails %s del e-mail %s DefaultBlacklistMailingStatus=Valor predeterminado para el campo '%s' al crear un nuevo contacto DefaultStatusEmptyMandatory=Vacío pero obligatorio +WarningLimitSendByDay=ADVERTENCIA: La configuración o el contrato de su instancia limita su número de correos electrónicos por día a %s . Intentar enviar más puede provocar que su instancia se ralentice o se suspenda. Póngase en contacto con su soporte si necesita una cuota más alta. diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang index 94d5ac2923e..2af1c00c5cf 100644 --- a/htdocs/langs/es_ES/main.lang +++ b/htdocs/langs/es_ES/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -244,7 +250,7 @@ Designation=Descripción DescriptionOfLine=Descripción de línea DateOfLine=Fecha de la línea DurationOfLine=Duración de la línea -ParentLine=Parent line ID +ParentLine=ID de línea principal Model=Plantilla documento DefaultModel=Plantilla por defecto Action=Acción @@ -621,7 +627,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Archivos y documentos adjuntos JoinMainDoc=Unir al documento principal -JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found +JoinMainDocOrLastGenerated=Enviar el documento principal o el último generado si no se encuentra DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -712,6 +718,7 @@ FeatureDisabled=Función desactivada MoveBox=Mover panel Offered=Oferta NotEnoughPermissions=No tiene permisos para esta acción +UserNotInHierachy=Esta acción está reservada a los supervisores de este usuario. SessionName=Nombre sesión Method=Método Receive=Recepción @@ -1169,11 +1176,14 @@ CanceledHidden=Ocultar cancelado CanceledShown=Mostrar cancelado Terminate=Cancelar Terminated=De baja -AddLineOnPosition=Add line on position (at the end if empty) -ConfirmAllocateCommercial=Assign sales representative confirmation -ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? -CommercialsAffected=Sales representatives affected -CommercialAffected=Sales representative affected -YourMessage=Votre message -YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. -UrlToCheck=Url to check +AddLineOnPosition=Agregar línea en la posición (al final si está vacío) +ConfirmAllocateCommercial=Asignar confirmación de representante de ventas +ConfirmAllocateCommercialQuestion=¿Está seguro de que desea asignar los %sregistros seleccionados? +CommercialsAffected=Representantes de ventas afectados +CommercialAffected=Representante de ventas afectado +YourMessage=Tu mensaje +YourMessageHasBeenReceived=Tu mensaje ha sido recibido. Le responderemos o contactaremos con usted lo antes posible. +UrlToCheck=URL para comprobar +Automation=Automatización +CreatedByEmailCollector=Creado por el recopilador de correo electrónico +CreatedByPublicPortal=Creado desde el portal público diff --git a/htdocs/langs/es_ES/members.lang b/htdocs/langs/es_ES/members.lang index 35d298fca8c..d18c1e0136b 100644 --- a/htdocs/langs/es_ES/members.lang +++ b/htdocs/langs/es_ES/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Otro miembro (nombre: %s, logi ErrorUserPermissionAllowsToLinksToItselfOnly=Por razones de seguridad, debe poseer los derechos de modificación de todos los usuarios para poder vincular un miembro a un usuario que no sea usted mismo. SetLinkToUser=Vincular a un usuario Dolibarr SetLinkToThirdParty=Vincular a un tercero Dolibarr -MembersCards=Generation of cards for members +MembersCards=Generación de tarjetas para socios MembersList=Listado de miembros MembersListToValid=Listado de miembros borrador (a validar) MembersListValid=Listado de miembros validados @@ -35,7 +35,8 @@ DateEndSubscription=Fecha fin afiliación EndSubscription=Fin afiliación SubscriptionId=ID afiliación WithoutSubscription=Sin suscripción -MemberId=ID miembro +MemberId=Miembro ID +MemberRef=Ref de miembro NewMember=Nuevo miembro MemberType=Tipo de miembro MemberTypeId=ID tipo de miembro @@ -163,7 +164,7 @@ MoreActionsOnSubscription=Acción complementaria sugerida por defecto al registr MoreActionBankDirect=Crear un registro directo en la cuenta bancaria MoreActionBankViaInvoice=Crear una factura y un pago en la cuenta bancaria MoreActionInvoiceOnly=Creación factura sin pago -LinkToGeneratedPages=Generation of business cards or address sheets +LinkToGeneratedPages=Generación de tarjetas de presentación u hojas de direcciones LinkToGeneratedPagesDesc=Esta pantalla le permite crear plantillas de tarjetas de presentación para los miembros o para cada miembro en particular. DocForAllMembersCards=Generación de tarjetas para todos los miembros DocForOneMemberCards=Generación de tarjetas para un miembro en particular @@ -218,3 +219,5 @@ XExternalUserCreated=%s usuarios externos creados ForceMemberNature=Naturaleza del miembro de la fuerza (individual o corporativo) CreateDolibarrLoginDesc=La creación de un login de usuario para los miembros les permite conectarse a la aplicación. En función de las autorizaciones otorgadas, podrán, por ejemplo, consultar o modificar ellos mismos su expediente. CreateDolibarrThirdPartyDesc=Un tercero es la entidad legal que se utilizará en la factura si decide generar una factura para cada contribución. Podrá crearlo más tarde durante el proceso de registro de la contribución. +MemberFirstname=Nombre del miembro +MemberLastname=Apellido del miembro diff --git a/htdocs/langs/es_ES/modulebuilder.lang b/htdocs/langs/es_ES/modulebuilder.lang index 39891fba3e0..12f0fb3e1b9 100644 --- a/htdocs/langs/es_ES/modulebuilder.lang +++ b/htdocs/langs/es_ES/modulebuilder.lang @@ -1,17 +1,17 @@ # Dolibarr language file - Source file is en_US - loan ModuleBuilderDesc=Esta herramienta solo debe ser utilizada por usuarios o desarrolladores experimentados. Proporciona utilidades para crear o editar su propio módulo. La documentación para el desarrollo manual alternativo está aquí . -EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +EnterNameOfModuleDesc=Ingrese el nombre del módulo/aplicación para crear sin espacios. Use mayúsculas para separar palabras (por ejemplo: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Ingrese el nombre del objeto a crear sin espacios. Use mayúsculas para separar palabras (Por ejemplo: MiObjeto, Estudiante, Profesor...). Se generarán el archivo de clase CRUD, pero también el archivo API, las páginas para enumerar/agregar/editar/eliminar objetos y archivos SQL. +EnterNameOfDictionaryDesc=Ingrese el nombre del diccionario para crear sin espacios. Use mayúsculas para separar palabras (Por ejemplo: MyDico...). Se generará el archivo de clase, pero también el archivo SQL. ModuleBuilderDesc2=Ruta donde los módulos son generados/editados (primer directorio para módulos externos definido en %s): %s ModuleBuilderDesc3=Módulos generados/editables encontrados: %s ModuleBuilderDesc4=Un módulo se detecta como 'editable' cuando el archivo %s existe en la raíz del directorio del módulo NewModule=Nuevo módulo NewObjectInModulebuilder=Nuevo objeto -NewDictionary=New dictionary +NewDictionary=Nuevo diccionario ModuleKey=Clave del módulo ObjectKey=Clave del objeto -DicKey=Dictionary key +DicKey=Clave de diccionario ModuleInitialized=Módulo inicializado FilesForObjectInitialized=Ficheros para el nuevo objeto '%s' inicializado FilesForObjectUpdated=Ficheros del objeto '%s' actualizado (ficheros .sql y fichero .class.php) @@ -55,7 +55,7 @@ LanguageFile=Archivo para el idioma ObjectProperties=Propiedades del objeto ConfirmDeleteProperty=¿Está seguro de querer eliminar la propiedad %s? Esto cambiará código en la clase PHP pero también eliminará la columna de la definición de la tabla del objeto. NotNull=No NULL -NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) +NotNullDesc=1=Establecer la base de datos en NO NULL, 0=Permitir valores nulos, -1=Permitir valores nulos forzando el valor a NULL si está vacío ('' o 0) SearchAll=Usada para 'buscar todo' DatabaseIndex=Indice de la base de datos FileAlreadyExists=Fichero %s ya existe @@ -130,9 +130,9 @@ UseSpecificEditorURL = Usar un editor específico URL UseSpecificFamily = Usar una familia específica UseSpecificAuthor = Usar un autor especifico UseSpecificVersion = Usar una versión inicial específica -IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules -IncludeDocGeneration=I want to generate some documents from templates for the object +IncludeRefGeneration=La referencia del objeto debe generarse automáticamente mediante reglas de numeración personalizadas. +IncludeRefGenerationHelp=Marque esto si desea incluir código para administrar la generación de la referencia automáticamente usando reglas de numeración personalizadas +IncludeDocGeneration=Quiero generar algunos documentos a partir de plantillas para el objeto. IncludeDocGenerationHelp=Si marca esto, se generará código para agregar un panel "Generar documento" en el registro. ShowOnCombobox=Mostrar valor en el combobox KeyForTooltip=Clave para tooltip @@ -147,9 +147,10 @@ AsciiToPdfConverter=Conversor de ASCII a PDF TableNotEmptyDropCanceled=La tabla no está vacía. La eliminación ha sido cancelada. ModuleBuilderNotAllowed=El constructor de módulos está disponible pero no permitido para su usuario. ImportExportProfiles=Importar y exportar perfiles -ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required. +ValidateModBuilderDesc=Establézcalo en 1 si desea que se llame al método $this->validateField() del objeto para validar el contenido del campo durante la inserción o la actualización. Establezca 0 si no se requiere validación. WarningDatabaseIsNotUpdated=Advertencia: la base de datos no se actualiza automáticamente, debe destruir las tablas y deshabilitar-habilitar el módulo para que se vuelvan a crear las tablas LinkToParentMenu=Menú principal (fk_xxxxmenu) -ListOfTabsEntries=List of tab entries -TabsDefDesc=Define here the tabs provided by your module -TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +ListOfTabsEntries=Lista de entradas de pestañas +TabsDefDesc=Defina aquí las pestañas proporcionadas por su módulo +TabsDefDescTooltip=Las pestañas proporcionadas por su módulo/aplicación se definen en la matriz $this->tabs en el archivo descriptor del módulo. Puede editar manualmente este archivo o usar el editor incorporado. +BadValueForType=Valor incorrecto para el tipo %s diff --git a/htdocs/langs/es_ES/oauth.lang b/htdocs/langs/es_ES/oauth.lang index 5ab2c5d0e02..c013fee5b5e 100644 --- a/htdocs/langs/es_ES/oauth.lang +++ b/htdocs/langs/es_ES/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Se ha generado y guardado en la base de datos local un token NewTokenStored=Token recibido y guardado ToCheckDeleteTokenOnProvider=Haga clic aquí para comprobar/eliminar la autorización guardada por el proveedor de OAuth %s TokenDeleted=Token eliminado -RequestAccess=Haga clic aquí para consultar/renovar acceso y recibir un nuevo token a guardar +RequestAccess=Haga clic aquí para solicitar/renovar el acceso y recibir un nuevo token DeleteAccess=Haga clic aquí para eliminar el token UseTheFollowingUrlAsRedirectURI=Utilice la siguiente dirección URL como redireccionamiento URI al crear su credencial de su proveedor OAuth: -ListOfSupportedOauthProviders=Indique aquí la credencial proporcionada por su proveedor de OAuth2. Sólo son mostrados los proveedores OAuth2 soportados. Esta configuración puede ser usada por otros módulos que requieren autenticación OAuth2. -OAuthSetupForLogin=Página para generar un token OAuth +ListOfSupportedOauthProviders=Agregue sus proveedores de tokens OAuth2. Luego, vaya a la página de administración de su proveedor de OAuth para crear/obtener una ID y un secreto de OAuth y guárdelos aquí. Una vez hecho esto, cambie a la otra pestaña para generar su token. +OAuthSetupForLogin=Página para administrar (generar/eliminar) tokens OAuth SeePreviousTab=Ver la pestaña previa +OAuthProvider=Proveedor de OAuth OAuthIDSecret=ID OAuth y contraseña TOKEN_REFRESH=Refresco del token actual TOKEN_EXPIRED=Token expirado @@ -23,10 +24,13 @@ TOKEN_DELETE=Eliminar token guardado OAUTH_GOOGLE_NAME=Servicio Oauth Google OAUTH_GOOGLE_ID=Id Oauth Google OAUTH_GOOGLE_SECRET=Oauth Google Secret -OAUTH_GOOGLE_DESC=Vaya a esta página y luego "Credenciales" para crear credenciales de OAuth OAUTH_GITHUB_NAME=Servicio Oauth GitHub OAUTH_GITHUB_ID=Id Oauth Github OAUTH_GITHUB_SECRET=Oauth GitHub Secret -OAUTH_GITHUB_DESC=Vaya a en esta página y luego "Registrar una nueva aplicación" para crear credenciales de OAuth. +OAUTH_URL_FOR_CREDENTIAL=Vaya a esta página para crear u obtener su ID y secreto de OAuth OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=ID de OAuth +OAUTH_SECRET=Secreto OAuth +OAuthProviderAdded=Proveedor de OAuth agregado +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ya existe una entrada de OAuth para este proveedor y etiqueta diff --git a/htdocs/langs/es_ES/orders.lang b/htdocs/langs/es_ES/orders.lang index 7244aed6e6b..ca42b8cba96 100644 --- a/htdocs/langs/es_ES/orders.lang +++ b/htdocs/langs/es_ES/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=Ya había un pedido abierto vinculado a este presupuesto, por lo que no se ha creado ningún otro pedido automáticamente OrdersArea=Área pedidos de clientes SuppliersOrdersArea=Área pedidos a proveedores OrderCard=Ficha pedido @@ -68,6 +69,8 @@ CreateOrder=Crear pedido RefuseOrder=Rechazar el pedido ApproveOrder=Aprobar pedido Approve2Order=Aprobar pedido (segundo nivel) +UserApproval=Usuario para aprobación +UserApproval2=Usuario para aprobación (segundo nivel) ValidateOrder=Validar el pedido UnvalidateOrder=Desvalidar el pedido DeleteOrder=Eliminar el pedido @@ -102,6 +105,8 @@ ConfirmCancelOrder=¿Está seguro de querer anular este pedido? ConfirmMakeOrder=¿Está seguro de querer confirmar este pedido en fecha de %s ? GenerateBill=Facturar ClassifyShipped=Clasificar enviado +PassedInShippedStatus=clasificado entregado +YouCantShipThis=No puedo clasificar esto. Por favor, compruebe los permisos de usuario DraftOrders=Pedidos borrador DraftSuppliersOrders=Pedidos a proveedor en borrador OnProcessOrders=Pedidos en proceso diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang index ef32ec62163..93be155cdcd 100644 --- a/htdocs/langs/es_ES/other.lang +++ b/htdocs/langs/es_ES/other.lang @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=... o construya su perfil
(modo de selección manual DemoFundation=Gestión de miembros de una asociación DemoFundation2=Gestión de miembros y tesorería de una asociación DemoCompanyServiceOnly=Empresa o trabajador por cuenta propia realizando servicios -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Administrar una tienda con una caja de efectivo DemoCompanyProductAndStocks=Tienda de venta de productos con punto de venta DemoCompanyManufacturing=Empresa de fabricación de productos DemoCompanyAll=Empresa con actividades múltiples (todos los módulos principales) @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = ¿Está seguro de que desea "%s"? ConfirmBtnCommonTitle = Confirme su acción CloseDialog = Cerrar Autofill = Autorellenar + +# externalsite +ExternalSiteSetup=Configuración del enlace al sitio web externo +ExternalSiteURL=URL del sitio externo de contenido de iframe HTML +ExternalSiteModuleNotComplete=El módulo Sitio web externo no ha sido configurado correctamente. +ExampleMyMenuEntry=Mi entrada de menú + +# FTP +FTPClientSetup=Configuración del módulo de cliente FTP o SFTP +NewFTPClient=Nueva configuración de conexión FTP / FTPS +FTPArea=Área FTP / FTPS +FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP y SFTP. +SetupOfFTPClientModuleNotComplete=La configuración del módulo de cliente FTP o SFTP parece estar incompleta +FTPFeatureNotSupportedByYourPHP=Su PHP no admite funciones FTP o SFTP +FailedToConnectToFTPServer=No se pudo conectar al servidor (servidor %s, puerto %s) +FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor con inicio de sesión/contraseña definidos +FTPFailedToRemoveFile=No se pudo eliminar el archivo %s. +FTPFailedToRemoveDir=No se pudo eliminar el directorio %s (Compruebe los permisos y que el directorio está vacío). +FTPPassiveMode=Modo pasivo +ChooseAFTPEntryIntoMenu=Elija un sitio FTP / SFTP del menú ... +FailedToGetFile=No se pudieron obtener los archivos %s diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang index c11249bb2cf..0cb9839ff64 100644 --- a/htdocs/langs/es_ES/products.lang +++ b/htdocs/langs/es_ES/products.lang @@ -137,7 +137,8 @@ ConfirmDeleteProductLine=¿Está seguro de querer eliminar esta línea de produc ProductSpecial=Especial QtyMin=Cantidad mínima PriceQtyMin=Precio cantidad mínima -PriceQtyMinCurrency=Precio (moneda) para esta cantidad mínima (sin descuento) +PriceQtyMinCurrency=Precio (moneda) para esta cantidad +WithoutDiscount=Sin descuento VATRateForSupplierProduct=Tasa IVA (para este producto/proveedor) DiscountQtyMin=Descuento para esta cantidad NoPriceDefinedForThisSupplier=Ningún precio/cant. definido para este proveedor/producto @@ -346,7 +347,7 @@ UseProductFournDesc=Añade una funcionalidad para definir la descripción del pr ProductSupplierDescription=Descripción del proveedor para el producto. UseProductSupplierPackaging=Utilice el embalaje según los precios del proveedor (recalcule las cantidades según el conjunto de envases según el precio del proveedor al agregar / actualizar la línea en los documentos del proveedor) PackagingForThisProduct=Embalaje -PackagingForThisProductDesc=En el pedido del proveedor, solicitará automáticamente esta cantidad (o un múltiplo de esta cantidad). No puede ser inferior a la cantidad mínima de compra +PackagingForThisProductDesc=Automáticamente comprará un múltiplo de esta cantidad. QtyRecalculatedWithPackaging=La cantidad de la línea se recalculó de acuerdo con el embalaje del proveedor. #Attributes @@ -408,6 +409,21 @@ mandatoryHelper=Marque esto si desea un mensaje para el usuario al crear/validar DefaultBOM=Lista de materiales predeterminada DefaultBOMDesc=La lista de materiales predeterminada que se recomienda utilizar para fabricar este producto. Este campo solo se puede establecer si la naturaleza del producto es '%s'. Rank=Rango +MergeOriginProduct=Producto duplicado (producto que desea eliminar) +MergeProducts=Fusionar productos +ConfirmMergeProducts=¿Está seguro de que desea fusionar el producto elegido con el actual? Todos los objetos vinculados (facturas, pedidos, ...) se moverán al producto actual, después de lo cual se eliminará el producto elegido. +ProductsMergeSuccess=Los productos se han fusionado +ErrorsProductsMerge=Errores en la fusión de productos SwitchOnSaleStatus=Cambiar estado de oferta SwitchOnPurchaseStatus=Activar el estado de la compra StockMouvementExtraFields= Campos adicionales (movimientos de stock) +InventoryExtraFields= Campos adicionales (inventario) +ScanOrTypeOrCopyPasteYourBarCodes=Escanee o escriba o copie/pegue sus códigos de barras +PuttingPricesUpToDate=Actualizar precios con precios actuales conocidos +PMPExpected=PMP esperado +ExpectedValuation=Valoración Esperada +PMPReal=PMP real +RealValuation=Valoración real +ConfirmEditExtrafield = Seleccione el campo extra que desea modificar +ConfirmEditExtrafieldQuestion = ¿Está seguro de que desea modificar este campo adicional? +ModifyValueExtrafields = Modificar valor de un campo extra diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang index b96058a2106..c82be3e68e5 100644 --- a/htdocs/langs/es_ES/projects.lang +++ b/htdocs/langs/es_ES/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Etiqueta proyecto ProjectsArea=Área Proyectos ProjectStatus=Estado del proyecto SharedProject=Proyecto compartido -PrivateProject=Assigned contacts +PrivateProject=Contactos asignados ProjectsImContactFor=Proyectos de los que soy contacto explícito AllAllowedProjects=Todos los proyectos que puedo leer (míos + públicos) AllProjects=Todos los proyectos @@ -289,8 +289,8 @@ FormForNewLeadDesc=Gracias por llenar el siguiente formulario para contactarnos. ProjectsHavingThisContact=Proyectos que tienen este contacto StartDateCannotBeAfterEndDate=La fecha de finalizacion no puede ser anterior a la fecha de inicio ErrorPROJECTLEADERRoleMissingRestoreIt=Falta el rol "PROJECTLEADER" o se ha desactivado, restablezcalo en el diccionario de tipos de contacto -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +LeadPublicFormDesc=Puede habilitar aquí una página pública para permitir que sus prospectos hagan un primer contacto con usted desde un formulario público en línea +EnablePublicLeadForm=Habilitar el formulario público de contacto +NewLeadbyWeb=Su mensaje o solicitud ha sido grabada. Le responderemos o contactaremos con usted pronto. +NewLeadForm=Nuevo formulario de contacto +LeadFromPublicForm=Cliente potencial en línea desde un formulario público diff --git a/htdocs/langs/es_ES/stocks.lang b/htdocs/langs/es_ES/stocks.lang index e6b8c861172..364a6259321 100644 --- a/htdocs/langs/es_ES/stocks.lang +++ b/htdocs/langs/es_ES/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Límite stock para alertas y stock óptimo deseado ProductStockWarehouseUpdated=Límite stock para alertas y stock óptimo deseado actualizado correctamente ProductStockWarehouseDeleted=Límite stock para alertas y stock óptimo deseado eliminado correctamente AddNewProductStockWarehouse=Indicar nuevo límite para alertas y stock óptimo deseado -AddStockLocationLine=Disminuya la cantidad, y a continuación, haga clic para agregar otro almacén para este producto +AddStockLocationLine=Disminuya la cantidad y luego haga clic para dividir la línea InventoryDate=Fecha inventario Inventories=Inventarios NewInventory=Nuevo inventario @@ -254,7 +254,7 @@ ReOpen=Reabrir ConfirmFinish=¿Confirmas el cierre del inventario? Esto generará todos los movimientos de stock para actualizar su stock a la cantidad real que ingresó en el inventario. ObjectNotFound=%s no encontrado MakeMovementsAndClose=Generar movimientos y cerrar -AutofillWithExpected=Reemplazar la cantidad real con la cantidad esperada +AutofillWithExpected=Llene la cantidad real con la cantidad esperada ShowAllBatchByDefault=De forma predeterminada, muestra los detalles del lote en la pestaña "stock" del producto CollapseBatchDetailHelp=Puede establecer la visualización predeterminada de los detalles del lote en la configuración del módulo de existencias ErrorWrongBarcodemode=Modo de código de barras desconocido @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=El producto con código de barras no existe WarehouseId=ID de almacén WarehouseRef=Ref de almacén SaveQtyFirst=Guarde primero las cantidades reales inventariadas, antes de solicitar la creación del movimiento de existencias. +ToStart=Comenzar InventoryStartedShort=Pago parcial ErrorOnElementsInventory=Operación cancelada por el siguiente motivo: ErrorCantFindCodeInInventory=No puedo encontrar el siguiente código en el inventario QtyWasAddedToTheScannedBarcode=Éxito !! La cantidad se agregó a todo el código de barras solicitado. Puede cerrar la herramienta del escáner. StockChangeDisabled=Cambio en stock desactivado NoWarehouseDefinedForTerminal=Sin almacén definido para terminal +ClearQtys=Borrar todas las cantidades +ModuleStockTransferName=Transferencia avanzada de Stock +ModuleStockTransferDesc=Gestión avanzada de Transferencia de Stock, con generación de ficha de transferencia +StockTransferNew=Nueva transferencia de stock +StockTransferList=Lista de transferencias de stock +ConfirmValidateStockTransfer=¿Está seguro de que desea validar esta transferencia de stock con la referencia %s ? +ConfirmDestock=Disminución de existencias con transferencia %s +ConfirmDestockCancel=Cancelar disminución de existencias con transferencia %s +DestockAllProduct=Disminución de existencias +DestockAllProductCancel=Cancelar disminución de existencias +ConfirmAddStock=Aumentar existencias con transferencia %s +ConfirmAddStockCancel=Cancelar aumento de existencias con transferencia %s +AddStockAllProduct=Aumento de existencias +AddStockAllProductCancel=Cancelar aumento de existencias +DatePrevueDepart=Fecha prevista de salida +DateReelleDepart=Fecha real de salida +DatePrevueArrivee=Fecha prevista de llegada +DateReelleArrivee=Fecha real de llegada +HelpWarehouseStockTransferSource=Si se establece este almacén, solo él mismo y sus elementos secundarios estarán disponibles como almacén de origen +HelpWarehouseStockTransferDestination=Si se establece este almacén, solo él mismo y sus hijos estarán disponibles como almacén de destino +LeadTimeForWarning=Plazo antes de la alerta (en días) +TypeContact_stocktransfer_internal_STFROM=Remitente de la transferencia de existencias +TypeContact_stocktransfer_internal_STDEST=Destinatario de la transferencia de existencias +TypeContact_stocktransfer_internal_STRESP=Responsable de transferencia de existencias. +StockTransferSheet=Hoja de transferencia de existencias +StockTransferSheetProforma=Hoja de transferencia de existencias proforma +StockTransferDecrementation=Reducir los almacenes de origen +StockTransferIncrementation=Aumentar los almacenes de destino +StockTransferDecrementationCancel=Cancelar disminución de almacenes de origen +StockTransferIncrementationCancel=Cancelar aumento de almacenes de destino +StockStransferDecremented=Los almacenes de origen disminuyeron +StockStransferDecrementedCancel=Disminución de almacenes de origen cancelada +StockStransferIncremented=Cerrado - Existencias transferidas +StockStransferIncrementedShort=Existencias transferidas +StockStransferIncrementedShortCancel=Ampliación de almacenes de destino cancelada +StockTransferNoBatchForProduct=El producto %s no usa el lote, borre el lote en línea y vuelva a intentarlo +StockTransferSetup = Configuración del módulo de transferencia de existencias +Settings=Configuraciones +StockTransferSetupPage = Página de configuración del módulo de transferencia de existencias +StockTransferRightRead=Leer transferencias de existencias +StockTransferRightCreateUpdate=Crear/Actualizar transferencias de existencias +StockTransferRightDelete=Eliminar transferencias de existencias +BatchNotFound=Lote/serie no encontrado para este producto diff --git a/htdocs/langs/es_ES/stripe.lang b/htdocs/langs/es_ES/stripe.lang index a3967805873..eccb8b77b3b 100644 --- a/htdocs/langs/es_ES/stripe.lang +++ b/htdocs/langs/es_ES/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Enlace para configurar Stripe WebHook para llamar a l PaymentWillBeRecordedForNextPeriod=El pago se registrará para el próximo período. ClickHereToTryAgain=Haga clic aquí para volver a intentarlo ... CreationOfPaymentModeMustBeDoneFromStripeInterface=Debido a las fuertes reglas de autenticación del cliente, la creación de una tarjeta debe hacerse desde la oficina administrativa de Stripe. Puede hacer clic aquí para activar el registro de cliente de Stripe: %s +TERMINAL_LOCATION=Ubicación (dirección) para terminales diff --git a/htdocs/langs/es_ES/suppliers.lang b/htdocs/langs/es_ES/suppliers.lang index 3ca5ccc0155..f643cb49028 100644 --- a/htdocs/langs/es_ES/suppliers.lang +++ b/htdocs/langs/es_ES/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Nombre del comprador AllProductServicePrices=Todos los precios de producto / servicio AllProductReferencesOfSupplier=Todas las referencias del proveedor BuyingPriceNumShort=Precios de proveedores +RepeatableSupplierInvoice=Plantilla de factura de proveedor +RepeatableSupplierInvoices=Plantilla de facturas de proveedores +RepeatableSupplierInvoicesList=Plantilla de facturas de proveedores +RecurringSupplierInvoices=Facturas recurrentes de proveedores +ToCreateAPredefinedSupplierInvoice=Para crear una plantilla de factura de proveedor, debe crear una factura estándar, luego, sin validarla, haga clic en el botón "%s". +GeneratedFromSupplierTemplate=Generado a partir de la plantilla de factura de proveedor %s +SupplierInvoiceGeneratedFromTemplate=Factura de proveedor %s Generada a partir de la plantilla de factura de proveedor %s diff --git a/htdocs/langs/es_ES/ticket.lang b/htdocs/langs/es_ES/ticket.lang index 2bbd0a8bad9..59d5e735045 100644 --- a/htdocs/langs/es_ES/ticket.lang +++ b/htdocs/langs/es_ES/ticket.lang @@ -90,15 +90,17 @@ TicketPublicAccess=Una interfaz pública que no requiere identificación está d TicketSetupDictionaries=Los tipos de categorías y los niveles de gravedad se pueden configurar en los diccionarios TicketParamModule=Configuración de variables del módulo TicketParamMail=Configuración de E-Mail -TicketEmailNotificationFrom=Sender e-mail for ticket answers -TicketEmailNotificationFromHelp=Sender e-mail for ticket answers sent from Dolibarr -TicketEmailNotificationTo=Notify ticket creation to this e-mail address -TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation +TicketEmailNotificationFrom=E-mail del remitente para notificación de respuestas +TicketEmailNotificationFromHelp=Correo electrónico del remitente para usar para enviar el correo electrónico de notificación cuando se proporciona una respuesta desde Dolibarr. Por ejemplo noreply@example.com +TicketEmailNotificationTo=Notificar creación de ticket a esta dirección de correo electrónico +TicketEmailNotificationToHelp=Si está presente, esta dirección de correo electrónico será notificada de la creación de un ticket. TicketNewEmailBodyLabel=Mensaje de texto enviado después de crear un ticket TicketNewEmailBodyHelp=El texto especificado aquí se insertará en el e-mail de confirmación de creación de un nuevo ticket desde la interfaz pública. La información sobre la consulta del ticket se agrega automáticamente. TicketParamPublicInterface=Configuración de interfaz pública TicketsEmailMustExist=Requerir una dirección de e-mail existente para crear un ticket TicketsEmailMustExistHelp=En la interfaz pública, la dirección de email debe ser rellenada en la base de datos para crear un nuevo ticket. +TicketCreateThirdPartyWithContactIfNotExist=Pregunte el nombre y el nombre de la empresa para correos electrónicos desconocidos. +TicketCreateThirdPartyWithContactIfNotExistHelp=Compruebe si existe un tercero o un contacto para el correo electrónico ingresado. Si no, pide un nombre y una razón social para crear un tercero con contacto. PublicInterface=Interfaz pública. TicketUrlPublicInterfaceLabelAdmin=URL alternativa de interfaz pública TicketUrlPublicInterfaceHelpAdmin=Es posible definir un alias para el servidor web y así poner a disposición la interfaz pública a otra dirección IP. @@ -145,8 +147,8 @@ TicketsDelayBetweenAnswersHelp=Si un ticket sin resolver que ya recibió una res TicketsAutoNotifyClose=Notificar automáticamente a un tercero al cerrar un ticket TicketsAutoNotifyCloseHelp=Al cerrar un ticket, se le propondrá enviar un mensaje a uno de los contactos de un tercero. En el cierre masivo, se enviará un mensaje a un contacto del tercero vinculado al ticket. TicketWrongContact=El contacto proporcionado no forma parte de los contactos del ticket actual. E-Mail no enviado. -TicketChooseProductCategory=Product category for ticket support -TicketChooseProductCategoryHelp=Select the product category of ticket support. This will be used to automatically link a contract to a ticket. +TicketChooseProductCategory=Categoría de producto para soporte de tickets +TicketChooseProductCategoryHelp=Seleccione la categoría de producto de soporte de tickets. Esto se usará para vincular automáticamente un contrato a un boleto. # # Index & list page @@ -219,12 +221,12 @@ ErrorMailRecipientIsEmptyForSendTicketMessage=El destinatario está vacío. No s TicketGoIntoContactTab=Vaya a la pestaña "Contactos" para seleccionarlos TicketMessageMailIntro=Introducción TicketMessageMailIntroHelp=Este texto es añadido solo al principio del email y no será salvado. -TicketMessageMailIntroLabelAdmin=Introduction text to all ticket answers -TicketMessageMailIntroText=Hello,
A new answer has been added to a ticket that you follow. Here is the message:
-TicketMessageMailIntroHelpAdmin=This text will be inserted before the answer when replying to a ticket from Dolibarr +TicketMessageMailIntroLabelAdmin=Texto de introducción a todas las respuestas del ticket +TicketMessageMailIntroText=Hola,
Se ha agregado una nueva respuesta a un ticket que sigues. Aquí está el mensaje:
+TicketMessageMailIntroHelpAdmin=Este texto se insertará antes de la respuesta al responder a un ticket de Dolibarr TicketMessageMailSignature=Firma TicketMessageMailSignatureHelp=Este texto se agrega solo al final del e-mail y no se guardará. -TicketMessageMailSignatureText=Message sent by %s via Dolibarr +TicketMessageMailSignatureText=Mensaje enviado por %s vía Dolibarr TicketMessageMailSignatureLabelAdmin=Firma del e-mail de respuesta TicketMessageMailSignatureHelpAdmin=Este texto se insertará después del mensaje de respuesta. TicketMessageHelp=Solo este texto se guardará en la lista de mensajes en la ficha del ticket @@ -260,8 +262,8 @@ TicketNotCreatedFromPublicInterface=No disponible. El ticket no se creó desde l ErrorTicketRefRequired=La referencia del ticket es obligatoria TicketsDelayForFirstResponseTooLong=Ha transcurrido demasiado tiempo desde la apertura del ticket sin ninguna respuesta. TicketsDelayFromLastResponseTooLong=Ha transcurrido demasiado tiempo desde la última respuesta en este ticket. -TicketNoContractFoundToLink=No contract was found to be automatically linked to this ticket. Please link a contract manually. -TicketManyContractsLinked=Many contracts have been automatically linked to this ticket. Make sure to verify which should be chosen. +TicketNoContractFoundToLink=No se encontró ningún contrato vinculado automáticamente a este ticket. Vincule un contrato manualmente. +TicketManyContractsLinked=Muchos contratos se han vinculado automáticamente a este ticket. Asegúrese de verificar cuál debe elegir. # # Logs @@ -289,7 +291,7 @@ TicketNewEmailBody=Este es un e-mail automático para confirmar que ha registrad TicketNewEmailBodyCustomer=Este es un e-mail automático para confirmar que se acaba de crear un nuevo ticket en su cuenta. TicketNewEmailBodyInfosTicket=Información para monitorear el ticket TicketNewEmailBodyInfosTrackId=Número de seguimiento del ticket: %s -TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the following link +TicketNewEmailBodyInfosTrackUrl=Puede ver el progreso del ticket haciendo clic en el siguiente enlace TicketNewEmailBodyInfosTrackUrlCustomer=Puede ver el progreso del ticket en la interfaz específica haciendo clic en el siguiente enlace TicketCloseEmailBodyInfosTrackUrlCustomer=Puede consultar el historial de este ticket haciendo clic en el siguiente enlace TicketEmailPleaseDoNotReplyToThisEmail=¡Por favor no responda directamente a este correo! Use el enlace para responder. diff --git a/htdocs/langs/es_GT/members.lang b/htdocs/langs/es_GT/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_GT/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_GT/projects.lang b/htdocs/langs/es_GT/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_GT/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_HN/main.lang b/htdocs/langs/es_HN/main.lang index 0d6b013ca18..7f44762de77 100644 --- a/htdocs/langs/es_HN/main.lang +++ b/htdocs/langs/es_HN/main.lang @@ -3,19 +3,22 @@ DIRECTION=ltr FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=. -SeparatorThousand=None -FormatDateShort=%m/%d/%Y -FormatDateShortInput=%m/%d/%Y -FormatDateShortJava=MM/dd/yyyy -FormatDateShortJavaInput=MM/dd/yyyy -FormatDateShortJQuery=mm/dd/yy -FormatDateShortJQueryInput=mm/dd/yy +SeparatorThousand=, +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d, %Y FormatDateText=%B %d, %Y -FormatDateHourShort=%m/%d/%Y %I:%M %p -FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourShort=%d/%m/%Y %I:%M %p +FormatDateHourSecShort=%d/%m/%Y %I:%M:%S %p FormatDateHourTextShort=%b %d, %Y, %I:%M %p FormatDateHourText=%B %d, %Y, %I:%M %p +DateFormatYYYYMM=AAAA-MM +DateFormatYYYYMMDD=AAAA-MM-DD +DateFormatYYYYMMDDHHMM=AAAA-MM-DD HH:SS diff --git a/htdocs/langs/es_HN/members.lang b/htdocs/langs/es_HN/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_HN/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_HN/projects.lang b/htdocs/langs/es_HN/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_HN/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_MX/admin.lang b/htdocs/langs/es_MX/admin.lang index 504bddb9753..080b427cb40 100644 --- a/htdocs/langs/es_MX/admin.lang +++ b/htdocs/langs/es_MX/admin.lang @@ -71,7 +71,6 @@ NextValueForDeposit=Valor siguiente (pago inicial) NextValueForReplacements=Valor siguiente (sustituciones) NoMaxSizeByPHPLimit=Nota: No hay límite establecido en la configuración de PHP MaxSizeForUploadedFiles=El tamaño máximo para los archivos subidos (0 para no permitir ninguna carga) -UseCaptchaCode=Utilizar el código gráfico (CAPTCHA) en la página de inicio de sesión AntiVirusCommand=Ruta completa del comando del antivirus AntiVirusParam=Más parámetros de línea de comandos ComptaSetup=Establecer modulo de Contabilidad @@ -278,5 +277,4 @@ ShowProjectLabel=Etiqueta de proyecto TemplateAdded=Plantilla agregada MailToSendEventOrganization=Organización de Eventos ModuleUpdateAvailable=Una actualización está disponible -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +Settings =Configuración diff --git a/htdocs/langs/es_MX/companies.lang b/htdocs/langs/es_MX/companies.lang index 5994d9bd951..311aef483f7 100644 --- a/htdocs/langs/es_MX/companies.lang +++ b/htdocs/langs/es_MX/companies.lang @@ -26,7 +26,6 @@ Lastname=Apellido Firstname=Nombre(s) State=Estado/Provincia CountryCode=Código de país -CountryId=ID de país PhonePerso=Teléfono particular PhoneMobile=Celular No_Email=Rechazar correos masivos @@ -74,9 +73,7 @@ ProfId5CH=número EORI ProfId1CL=ID Prof 1 (R.U.T.) ProfId1CM=Identificación prof. 1 (Registro de Comercio) ProfId2CM=Identificación prof. 2 (Nº de Contribuyente) -ProfId3CM=Identificación prof. 3 (Decreto de creación) ProfId2ShortCM=Contribuyente No. -ProfId3ShortCM=Decree of creation ProfId1CO=ID Prof 1 (R.U.T) ProfId1DE=ID Prof 1 (USt.-IdNr) ProfId2DE=ID Prof 2 (USt.-Nr) diff --git a/htdocs/langs/es_MX/externalsite.lang b/htdocs/langs/es_MX/externalsite.lang deleted file mode 100644 index 0576f5b0be1..00000000000 --- a/htdocs/langs/es_MX/externalsite.lang +++ /dev/null @@ -1,4 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configurar vínculo a un sitio web externo -ExternalSiteModuleNotComplete=El módulo ExternalSite no estaba configurado correctamente. -ExampleMyMenuEntry=Mi entrada en el menú diff --git a/htdocs/langs/es_MX/ftp.lang b/htdocs/langs/es_MX/ftp.lang deleted file mode 100644 index 68ba0a1ab91..00000000000 --- a/htdocs/langs/es_MX/ftp.lang +++ /dev/null @@ -1,11 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuración del módulo Cliente FTP -NewFTPClient=Configuración de nueva conexión FTP -FTPAreaDesc=Esta pantalla muestra una vista de un servidor FTP -SetupOfFTPClientModuleNotComplete=La configuración del módulo Cliente FTP parece estar incompleta -FailedToConnectToFTPServer=Error al conectarse al servidor FTP (servidor %s, puerto %s) -FailedToConnectToFTPServerWithCredentials=Error al iniciar sesión en el servidor FTP con el login/password definidos -FTPFailedToRemoveFile=Error al eliminar el archivo %s . -FTPFailedToRemoveDir=Error al eliminar el directorio %s : verifique los permisos y que el directorio esté vacío. -ChooseAFTPEntryIntoMenu=Elija un sitio FTP del menú... -FailedToGetFile=Error al obtener archivos %s diff --git a/htdocs/langs/es_MX/install.lang b/htdocs/langs/es_MX/install.lang index a936800f65d..c79b58e2009 100644 --- a/htdocs/langs/es_MX/install.lang +++ b/htdocs/langs/es_MX/install.lang @@ -10,7 +10,6 @@ ErrorDirDoesNotExists=El directorio %s no existe. ErrorWrongValueForParameter=Puede haber escrito un valor incorrecto para el parámetro '%s'. ErrorFailedToConnectToDatabase=Error al conectar con la base de datos '%s'. ErrorDatabaseVersionTooLow=La versión de base de datos (%s) es demasiado antigua. Se requiere la versión %s o superior. -ErrorPHPVersionTooLow=La versión de PHP es demasiado antigua. Se requiere la versión %s. IfDatabaseExistsGoBackAndCheckCreate=Si ya existe la base de datos, vuelva atrás y desmarque la opción "Crear base de datos". License=Uso de licencia WebPagesDirectory=Directorio donde se almacenan las páginas web diff --git a/htdocs/langs/es_MX/oauth.lang b/htdocs/langs/es_MX/oauth.lang index 922201394e7..8463f33d959 100644 --- a/htdocs/langs/es_MX/oauth.lang +++ b/htdocs/langs/es_MX/oauth.lang @@ -7,16 +7,12 @@ IsTokenGenerated=¿Se generó el token? NoAccessToken=Ningún token de acceso guardado en la base de datos local HasAccessToken=Se generó un token y se guardó en la base de datos local. ToCheckDeleteTokenOnProvider=Haga clic aquí para verificar / eliminar la autorización guardada por el proveedor de OAuth %s -RequestAccess=Haga clic aquí para solicitar / renovar el acceso y recibir un nuevo token para guardar UseTheFollowingUrlAsRedirectURI=Use la siguiente URL como URI de redireccionamiento al crear sus credenciales con su proveedor de OAuth: -ListOfSupportedOauthProviders=Ingrese las credenciales proporcionadas por su proveedor de OAuth2. Aquí solo se enumeran los proveedores de OAuth2 compatibles. Estos servicios pueden ser utilizados por otros módulos que necesitan autenticación OAuth2. SeePreviousTab=Ver pestaña anterior OAuthIDSecret=ID OAuth y Secret TOKEN_EXPIRED=Token caducado TOKEN_EXPIRE_AT=El token caduca a las OAUTH_GOOGLE_NAME=Servicio de Google OAuth OAUTH_GOOGLE_ID=ID de Google OAuth -OAUTH_GOOGLE_DESC=Vaya a esta página y luego a "Credenciales" para crear credenciales de OAuth OAUTH_GITHUB_NAME=Servicio OAuth GitHub OAUTH_GITHUB_ID=Id OAuth GitHub -OAUTH_GITHUB_DESC=Vaya a esta página y luego "Registre una nueva aplicación" para crear credenciales de OAuth diff --git a/htdocs/langs/es_MX/stocks.lang b/htdocs/langs/es_MX/stocks.lang index 8e9b1e95980..3b13c6c09d3 100644 --- a/htdocs/langs/es_MX/stocks.lang +++ b/htdocs/langs/es_MX/stocks.lang @@ -3,4 +3,5 @@ Location=Ubicación inventoryEdit=Editar inventoryDeleteLine=Borrar línea ListInventory=Lista +ToStart=Iniciar InventoryStartedShort=Iniciado diff --git a/htdocs/langs/es_PA/members.lang b/htdocs/langs/es_PA/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_PA/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_PA/projects.lang b/htdocs/langs/es_PA/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_PA/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_PE/members.lang b/htdocs/langs/es_PE/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_PE/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_PE/externalsite.lang b/htdocs/langs/es_PE/other.lang similarity index 75% rename from htdocs/langs/es_PE/externalsite.lang rename to htdocs/langs/es_PE/other.lang index 5250a01cd56..f0d2c0c5feb 100644 --- a/htdocs/langs/es_PE/externalsite.lang +++ b/htdocs/langs/es_PE/other.lang @@ -1,4 +1,4 @@ -# Dolibarr language file - Source file is en_US - externalsite +# Dolibarr language file - Source file is en_US - other ExternalSiteSetup=Configurar enlace al sitio web externo ExternalSiteModuleNotComplete=El modulo Sitio Web Externo no esta configurado apropiadamente ExampleMyMenuEntry=Mi entrada al menú diff --git a/htdocs/langs/es_PY/members.lang b/htdocs/langs/es_PY/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_PY/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_PY/projects.lang b/htdocs/langs/es_PY/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_PY/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_US/members.lang b/htdocs/langs/es_US/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_US/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_US/projects.lang b/htdocs/langs/es_US/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_US/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_UY/members.lang b/htdocs/langs/es_UY/members.lang new file mode 100644 index 00000000000..5f7a2ff4020 --- /dev/null +++ b/htdocs/langs/es_UY/members.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - members +ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type diff --git a/htdocs/langs/es_UY/projects.lang b/htdocs/langs/es_UY/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_UY/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/es_VE/admin.lang b/htdocs/langs/es_VE/admin.lang index 785d24f60e4..f011f5e634c 100644 --- a/htdocs/langs/es_VE/admin.lang +++ b/htdocs/langs/es_VE/admin.lang @@ -31,7 +31,5 @@ WatermarkOnDraftSupplierProposal=Marca de agua en solicitudes de precios a prove LDAPMemberObjectClassListExample=Lista de ObjectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) LDAPUserObjectClassListExample=Lista de ObjectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) LDAPContactObjectClassListExample=Lista de objectClass que definen los atributos de un registro (ej: top,inetOrgPerson o top,user for active directory) -TopMenuDisableImages=Hide images in Top menu -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
diff --git a/htdocs/langs/es_VE/companies.lang b/htdocs/langs/es_VE/companies.lang index f5eac2411df..0bc5270fc2a 100644 --- a/htdocs/langs/es_VE/companies.lang +++ b/htdocs/langs/es_VE/companies.lang @@ -7,9 +7,7 @@ LocalTax2IsUsed=Sujeto ProfId1AT=Id prof. 1 (USt.-IdNr) ProfId2AT=Id prof. 2 (USt.-Nr) ProfId3AT=Id prof. 3 (Handelsregister-Nr.) -ProfId3CM=Id. prof. 3 (Decree of creation) ProfId2ShortCM=R.I.F. -ProfId3ShortCM=Decree of creation ProfId1ES=CI/ RIF ProfId2ES=- ProfId3ES=- diff --git a/htdocs/langs/es_VE/projects.lang b/htdocs/langs/es_VE/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/es_VE/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/et_EE/admin.lang b/htdocs/langs/et_EE/admin.lang index 1de664e36f6..84f2efe5f71 100644 --- a/htdocs/langs/et_EE/admin.lang +++ b/htdocs/langs/et_EE/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Järgmine väärtus (asendused) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Märkus: PHP seadistustes pole piiri määratletud MaxSizeForUploadedFiles=Üleslaetava faili maksimaalne suurus (0 keelab failide üleslaadimise) -UseCaptchaCode=Kasuta sisselogimise lehel graafilist koodi (CAPTCHA) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Täielik süsteemi rada antiviiruse käsuni AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Lisaparameetrid, mida käsureal edastada @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klõpsake kirjelduse nägemiseks DependsOn=See moodul vajab moodulit RequiredBy=See moodul on mooduli(te) poolt nõutav @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=Kuu lõpus -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Nihe AlwaysActive=Alati aktiivne Upgrade=Uuenda @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Seaded +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/et_EE/companies.lang b/htdocs/langs/et_EE/companies.lang index 1527d83086c..9e04b905e3b 100644 --- a/htdocs/langs/et_EE/companies.lang +++ b/htdocs/langs/et_EE/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Aadress State=Osariik/provints +StateId=State ID StateCode=State/Province code StateShort=State Region=Piirkond Region-State=Region - State Country=Riik CountryCode=Riigi kood -CountryId=Riigi ID +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Teised ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/et_EE/errors.lang b/htdocs/langs/et_EE/errors.lang index e6cb1458234..3e4e7b3638a 100644 --- a/htdocs/langs/et_EE/errors.lang +++ b/htdocs/langs/et_EE/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/et_EE/externalsite.lang b/htdocs/langs/et_EE/externalsite.lang deleted file mode 100644 index 7295cbd8936..00000000000 --- a/htdocs/langs/et_EE/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Seadista link välisele lehele -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=ExternalSite moodul ei ole õigesti seadistatud. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/et_EE/ftp.lang b/htdocs/langs/et_EE/ftp.lang deleted file mode 100644 index d945955a986..00000000000 --- a/htdocs/langs/et_EE/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP kliendi mooduli seadistamine -NewFTPClient=Uue FTP ühenduse seadistamine -FTPArea=FTP ala -FTPAreaDesc=See ekraan näitab FTP serveri vaate sisu -SetupOfFTPClientModuleNotComplete=FTP kliendi mooduli seadistus ei paista olevat täielik -FTPFeatureNotSupportedByYourPHP=Sinu PHP ei toeta FTP funktsioone -FailedToConnectToFTPServer=FTP serveriga ühenduse loomine ebaõnnestus (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Määratletud kasutajanime/parooliga FTP serverisse sisse logimine ebaõnnestus -FTPFailedToRemoveFile=Faili %s kustutamine ebaõnnestus. -FTPFailedToRemoveDir=Kausta %s kustutamine ebaõnnestus (kontrolli õigusi ja seda, et kataloog on tühi). -FTPPassiveMode=Passiivne režiim -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/et_EE/install.lang b/htdocs/langs/et_EE/install.lang index dca9094b78c..ab9898d7bd5 100644 --- a/htdocs/langs/et_EE/install.lang +++ b/htdocs/langs/et_EE/install.lang @@ -8,6 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Seadistusfail %s on kirjutatav. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Antud PHP toetab POST ja GET muutujaid. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Antud PHP toetab sessioone. @@ -16,13 +17,6 @@ PHPMemoryOK=Antud PHP poolt kasutatav sessiooni maksimaalne mälu on %s. PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. Recheck=Click here for a more detailed test ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. -ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. -ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. -ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. -ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Kausta %s ei ole olemas. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -30,9 +24,11 @@ ErrorWrongValueForParameter=Parameetri "%s" väärtus on ilmselt vales ErrorFailedToCreateDatabase=Ei suutnud luua andmebaasi '%s ". ErrorFailedToConnectToDatabase=Ei suutnud ühenduda andmebaasiga "%s". ErrorDatabaseVersionTooLow=Andmebaasi versioon (%s) on liiga vana. Vaja on versiooni %s või kõrgemat. -ErrorPHPVersionTooLow=PHP versioon on liiga vana. Vaja on versiooni %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Andmebaas '%s " on juba olemas. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Kui andmebaas on juba olemas, mine tagasi ja võta märge "Loo andmebaas" maha. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/et_EE/members.lang b/htdocs/langs/et_EE/members.lang index d9d8a787afd..323d0be26cf 100644 --- a/htdocs/langs/et_EE/members.lang +++ b/htdocs/langs/et_EE/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Liikme ID +MemberId=Member Id +MemberRef=Member Ref NewMember=Uus liige MemberType=Liikme tüüp MemberTypeId=Liikmetüübi ID @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/et_EE/stocks.lang b/htdocs/langs/et_EE/stocks.lang index 8de88ac3c69..1082daa52af 100644 --- a/htdocs/langs/et_EE/stocks.lang +++ b/htdocs/langs/et_EE/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Alusta InventoryStartedShort=Alustatud ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Seaded +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/eu_ES/admin.lang b/htdocs/langs/eu_ES/admin.lang index f18097cd7fc..ab80d04586d 100644 --- a/htdocs/langs/eu_ES/admin.lang +++ b/htdocs/langs/eu_ES/admin.lang @@ -5,8 +5,8 @@ Foundation=Fundazioa Version=Bertsioa Publisher=Publisher VersionProgram=Programa bertsioa -VersionLastInstall=Initial install version -VersionLastUpgrade=Latest version upgrade +VersionLastInstall=Hasierako instalazioaren bertsioa +VersionLastUpgrade=Azken bertsioa berritzea VersionExperimental=Esperimentala VersionDevelopment=Garapena VersionUnknown=Ezezaguna @@ -29,27 +29,27 @@ AvailableOnlyOnPackagedVersions=The local file for integrity checking is only av XmlNotFound=Xml Integrity File of application not found SessionId=Sesioaren ID SessionSaveHandler=Kudeatzailea sesioak gordetzeko -SessionSavePath=Session save location +SessionSavePath=Saioa gordetzeko kokapena PurgeSessions=Sesio garbiketa -ConfirmPurgeSessions=Do you really want to purge all sessions? This will disconnect every user (except yourself). -NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow listing all running sessions. +ConfirmPurgeSessions=Benetan nahi dituzu saio guztiak garbitu? Honek erabiltzaile guztiak deskonektatuko ditu (zu izan ezik). +NoSessionListWithThisHandler=Zure PHPn konfiguratutako gorde saioaren kudeatzaileak ez du onartzen martxan dauden saio guztiak zerrendatzea. LockNewSessions=Konexio berriak blokeatu -ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself? Only user %s will be able to connect after that. +ConfirmLockNewSessions=Ziur Dolibarr-eko konexio berri bat zuregana mugatu nahi duzula? %s erabiltzailea bakarrik konektatu ahal izango da horren ondoren. UnlockNewSessions=Konexioaren blokeoa kendu YourSession=Zure sesioa -Sessions=Users Sessions +Sessions=Erabiltzaileen saioak WebUserGroup=Web-zerbitzariaren erabiltzailea/taldea PermissionsOnFiles=Permissions on files PermissionsOnFilesInWebRoot=Permissions on files in web root directory PermissionsOnFile=Permissions on file %s -NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). -DBStoringCharset=Database charset to store data -DBSortingCharset=Database charset to sort data +NoSessionFound=Zure PHP konfigurazioak ez du onartzen saio aktiboen zerrenda. Saioak gordetzeko erabiltzen den direktorioa ( %s ) babestuta egon daiteke (adibidez, OS baimenen bidez edo PHP zuzentarauaren open_basedir). +DBStoringCharset=Datu-baseko karaktere multzoa datuak gordetzeko +DBSortingCharset=Datu-baseko karaktere multzoa datuak ordenatzeko HostCharset=Host charset ClientCharset=Client charset ClientSortingCharset=Client collation WarningModuleNotActive=%s moduluak gaituta egon behar du -WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +WarningOnlyPermissionOfActivatedModules=Aktibatutako moduluekin erlazionatutako baimenak bakarrik erakusten dira hemen. Beste modulu batzuk aktibatu ditzakezu Hasiera->Konfigurazioa->Moduluak orrian. DolibarrSetup=Dolibarr instalatu edo eguneratu InternalUser=Barneko erabiltzailea ExternalUser=Kanpoko erabiltzailea @@ -59,24 +59,24 @@ UserInterface=User interface GUISetup=Itxura SetupArea=Konfigurazioa UploadNewTemplate=Upload new template(s) -FormToTestFileUploadForm=Form to test file upload (according to setup) +FormToTestFileUploadForm=Fitxategien igoera probatzeko inprimakia (konfigurazioaren arabera) ModuleMustBeEnabled=The module/application %s must be enabled ModuleIsEnabled=The module/application %s has been enabled -IfModuleEnabled=Note: yes is effective only if module %s is enabled -RemoveLock=Remove/rename file %s if it exists, to allow usage of the Update/Install tool. -RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. +IfModuleEnabled=Oharra: bai eraginkorra da %s gaituta badago bakarrik +RemoveLock=Kendu/aldatu izena fitxategia %s badago, Eguneratu/Instalatu tresna erabiltzeko. +RestoreLock=Leheneratu %s fitxategia, irakurtzeko baimenarekin soilik, Eguneratu/Instalatu tresnaren erabilera gehiago desgaitzeko. SecuritySetup=Segurtasunaren konfigurazioa PHPSetup=PHP setup OSSetup=OS setup SecurityFilesDesc=Define here options related to security about uploading files. ErrorModuleRequirePHPVersion=Errorea, modulu honek PHP-ren %s bertsioa -edo handiagoa- behar du ErrorModuleRequireDolibarrVersion=Errorea, modulu honek Dolibarr-en %s bertsioa -edo handiagoa- behar du -ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +ErrorDecimalLargerThanAreForbidden=Errore bat, %s baino zehaztasun handiagoa ez da onartzen. DictionarySetup=Dictionary setup Dictionary=Dictionaries -ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorReservedTypeSystemSystemAuto=Motetarako 'system' eta 'systemauto' balioa erreserbatuta dago. 'erabiltzailea' erabil dezakezu balio gisa zure erregistroa gehitzeko ErrorCodeCantContainZero=Kodeak ezin du 0 balioa izan -DisableJavascript=Disable JavaScript and Ajax functions +DisableJavascript=Desgaitu JavaScript eta Ajax funtzioak DisableJavascriptNote=Note: For test or debug purpose only. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. @@ -109,7 +109,7 @@ NextValueForReplacements=Next value (replacements) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Oharra: zure PHP konfigurazioan ez da limiterik ezarri MaxSizeForUploadedFiles=Igotako fitxategien tamaina maximoa (0 fitxategiak igotzea ezgaitzeko) -UseCaptchaCode=Sarrera orrian kode grafikoa (CAPTCHA) erabili +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Biruskontrako komandoaren kokapen osoa AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= More parameters on command line @@ -408,7 +408,7 @@ PDF=PDF PDFDesc=Global options for PDF generation PDFOtherDesc=PDF Option specific to some modules PDFAddressForging=Rules for address section -HideAnyVATInformationOnPDF=Hide all information related to Sales Tax / VAT +HideAnyVATInformationOnPDF=Ezkutatu Salmenten gaineko Zergarekin / BEZarekin lotutako informazio guztia PDFRulesForSalesTax=Rules for Sales Tax / VAT PDFLocaltax=Rules for %s HideLocalTaxOnPDF=Hide %s rate in column Sale Tax / VAT @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -718,9 +718,9 @@ Permission34=Produktuak ezabatu Permission36=See/manage hidden products Permission38=Produktuak esportatu Permission39=Ignore minimum price -Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) -Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks -Permission44=Delete projects (shared project and projects I'm contact for) +Permission41=Read projects and tasks (shared projects and projects of which I am a contact). +Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks +Permission44=Delete projects (shared projects and projects of which I am a contact) Permission45=Export projects Permission61=Read interventions Permission62=Create/modify interventions @@ -766,9 +766,10 @@ Permission122=Create/modify third parties linked to user Permission125=Delete third parties linked to user Permission126=Export third parties Permission130=Create/modify third parties payment information -Permission141=Read all projects and tasks (also private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) -Permission144=Delete all projects and tasks (also private projects i am not contact for) +Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) +Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) +Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) Permission146=Read providers Permission147=Read stats Permission151=Read direct debit payment orders @@ -883,6 +884,9 @@ Permission564=Record Debits/Rejections of credit transfer Permission601=Read stickers Permission602=Create/modify stickers Permission609=Delete stickers +Permission611=Read attributes of variants +Permission612=Create/Update attributes of variants +Permission613=Delete attributes of variants Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials @@ -969,6 +973,8 @@ Permission4021=Create/modify your evaluation Permission4022=Validate evaluation Permission4023=Delete evaluation Permission4030=See comparison menu +Permission4031=Read personal information +Permission4032=Write personal information Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1068,6 +1074,7 @@ DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category DictionaryTransportMode=Intracomm report - Transport mode DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Setup saved SetupNotSaved=Setup not saved @@ -1122,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=At end of month -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Offset AlwaysActive=Always active Upgrade=Upgrade @@ -1187,7 +1194,7 @@ BankModuleNotActive=Bank accounts module not enabled ShowBugTrackLink=Show the link "%s" ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' Alerts=Alerts -DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time @@ -1339,6 +1346,7 @@ TransKeyWithoutOriginalValue=You forced a new translation for the translation ke TitleNumberOfActivatedModules=Activated modules TotalNumberOfActivatedModules=Activated modules: %s / %s YouMustEnableOneModule=You must at least enable 1 module +YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Yes in summer OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
@@ -1420,6 +1428,8 @@ WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) PaymentsNumberingModule=Payments numbering model SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup +InvoiceCheckPosteriorDate=Check facture date before validation +InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. ##### Proposals ##### PropalSetup=Commercial proposals module setup ProposalsNumberingModules=Commercial proposal numbering models @@ -1464,7 +1474,7 @@ MembersSetup=Kideak moduluaren konfigurazioa MemberMainOptions=Aukera nagusiak AdherentLoginRequired= Kide bakoitzarentzat Sarrera bat kudeatu AdherentMailRequired=Email required to create a new member -MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +MemberSendInformationByMailByDefault=Kideei posta berrespena bidaltzeko kontrol-laukia (balioztapena edo harpidetza berria) aktibatuta dago lehenespenez MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes MEMBER_REMINDER_EMAIL=Enable automatic reminder by email of expired subscriptions. Note: Module %s must be enabled and correctly setup to send reminders. @@ -1675,11 +1685,11 @@ DonationsSetup=Donation module setup DonationsReceiptModel=Template of donation receipt ##### Barcode ##### BarcodeSetup=Barcode setup -PaperFormatModule=Print format module +PaperFormatModule=Inprimatzeko formatuaren modulua BarcodeEncodeModule=Barcode encoding type CodeBarGenerator=Barcode generator ChooseABarCode=No generator defined -FormatNotSupportedByGenerator=Format not supported by this generator +FormatNotSupportedByGenerator=Sorgailu honek ez du formatua onartzen BarcodeDescEAN8=EAN8 motako barra-kodea BarcodeDescEAN13=EAN13 motako barra-kodea BarcodeDescUPC=UPC motako barra-kodea @@ -1917,6 +1927,7 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +UseBorderOnTable=Show left-right borders on tables BtnActionColor=Color of the action button TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title @@ -1925,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -1938,7 +1949,7 @@ EnterAnyCode=This field contains a reference to identify the line. Enter any val Enter0or1=Enter 0 or 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=The RGB color is in HEX format, eg: FF0000 -PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module) +PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) PositionIntoComboList=Position of line into combo lists SellTaxRate=Sales tax rate RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. @@ -2037,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s @@ -2048,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2057,18 +2069,30 @@ EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ? +ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result +EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? +EmailCollectorConfirmCollect=Do you want to run this collector now? +EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. +EmailCollectorExampleToCollectLeads=Example collecting leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. +EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) @@ -2089,7 +2113,7 @@ ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users DisabledResourceLinkContact=Disable feature to link a resource to contacts -EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event +EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda ConfirmUnactivation=Confirm module reset OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) @@ -2134,7 +2158,7 @@ DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow access to some host IP only (wildcard not allowed, use space between values). Empty means every hosts can access. +RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Based on the library SabreDAV version NotAPublicIp=Not a public IP @@ -2144,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2206,12 +2233,12 @@ DashboardDisableBlockAdherent=Disable the thumb for memberships DashboardDisableBlockExpenseReport=Disable the thumb for expense reports DashboardDisableBlockHoliday=Disable the thumb for leaves EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax LanguageAndPresentation=Language and presentation SkinAndColors=Skin and colors -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax PDF_USE_1A=Generate PDF with PDF/A-1b format MissingTranslationForConfKey = Missing translation for %s NativeModules=Native modules @@ -2220,3 +2247,35 @@ API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first PreviousHash=Previous hash +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size +InventorySetup= Inventory Setup +ExportUseLowMemoryMode=Use a low memory mode +ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + +HashForPing=Hash used for ping +ReadOnlyMode=Is instance in "Read Only" mode +DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + +IconAndText=Icon and text +TextOnly=Text only +IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar +IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon +IconOnly=Icon only - Text on tooltip only +INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices +INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/eu_ES/errors.lang b/htdocs/langs/eu_ES/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/eu_ES/errors.lang +++ b/htdocs/langs/eu_ES/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/eu_ES/externalsite.lang b/htdocs/langs/eu_ES/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/eu_ES/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/eu_ES/ftp.lang b/htdocs/langs/eu_ES/ftp.lang deleted file mode 100644 index 8d58b5e69db..00000000000 --- a/htdocs/langs/eu_ES/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP bezero modulua konfiguratu -NewFTPClient=FTP konexio berria konfiguratu -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/fa_IR/admin.lang b/htdocs/langs/fa_IR/admin.lang index 06c8610568f..4c0b6d79043 100644 --- a/htdocs/langs/fa_IR/admin.lang +++ b/htdocs/langs/fa_IR/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=ارزش بعدی (جایگزینی) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=توجه: هیچ محدودیتی در پیکربندی PHP شما وجود ندارد MaxSizeForUploadedFiles=حداکثر اندازۀ فایل بارگذاری شده ( برای عدم اجازۀ ارسال فایل عدد 0 را وارد نمائید) -UseCaptchaCode=استفاده از کدهای گرافیکی (CAPTCHA) در صفحۀ ورود +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=مسیر کامل خط‌فرمان ویروس‌کش AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= پارامترهای بیشتر در خط فرمان @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=در صورتی که ارائۀ خدمات رایانامۀ SMTP شما نیازمند محدود کردن مشتری خدمات رایانامه به درگاه‌های اینترنتی خاص است (در موارد معدود)، این نشانی درگاه اینترنتی کاربر رایانامه (MUA) برای برنامۀ ERP CRM شماست: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=برای دریافت توضیحات کلیک کنید DependsOn=این واحد نیازمند فعالیت واحد‌(های) دیگر است RequiredBy=این واحد توسط واحد(های) دیگر مورد نیاز است @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=تعداد روزها AtEndOfMonth=در پایان ماه -CurrentNext=فعلی/بعدی +CurrentNext=A given day in month Offset=جابجائی AlwaysActive=همیشه فعال Upgrade=به‌هنگام‌سازی @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=کلیدهای CTRL+F5 را روی صفحه‌کلید NotSupportedByAllThemes=با پوسته‌های هسته کار می‌کند اما ممکن است در پوسته‌های خارجی پشتیبانی نشود BackgroundColor=رنگ پس‌زمینه TopMenuBackgroundColor=رنگ پس‌زمینۀ فهرست بالا -TopMenuDisableImages=پنهان کردن تصاویر فهرست بالا +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=رنگ پس‌زمینۀ فهرست سمت چپ BackgroundTableTitleColor=رنگ پس‌زمیۀ سطر عنوان جدول BackgroundTableTitleTextColor=رنگ نوشتۀ سطر عنوان جدول @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=نکته: این گزینه برای استفاده از مالی SwapSenderAndRecipientOnPDF=جابه‌جا کردن محل ارسال‌کننده و دریافت کننده در سندهای PDF FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=جمع‌کنندۀ رایانامه +EmailCollectors=Email collectors EmailCollectorDescription=افزودن یک وظیفۀ زمان‌بندی شده و یک صفحۀ برپاسازی برای پویش منظم بخش‌های رایانامه (با استفاده از از پرتکل IMAP) و ثبت رایانامه‌هائی که در برنامۀ شما دریافت شده در محل درست و/یا ایجاد خودکار چند ردیف (مثل سرنخ‌ها). NewEmailCollector=یک جمع‌کنندۀ رایانامۀ جدید EMailHost=میزبان سرور IMAP رایانامه @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=آخرین نتیجه EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=تائید جمع‌آوری رایانامه EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=رایانامۀ جدیدی (با توجه به گزینش‌ها و صافی‌ها) پیدا نشد که پردازش شود NothingProcessed=کاری انجام نشد -XEmailsDoneYActionsDone=%s رایانامه دارای شرایط لازم بود، %s رایانامه با موفقیت پردازش شد ( برای %s مورد ثبت/کنش انجام شد) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= برپاسازی فهرست‌موجودی ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = تنظیمات +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/fa_IR/companies.lang b/htdocs/langs/fa_IR/companies.lang index 8c127d8648e..45a36aca7b1 100644 --- a/htdocs/langs/fa_IR/companies.lang +++ b/htdocs/langs/fa_IR/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=طبیعت شخص‌سوم NatureOfContact=Nature of Contact Address=نشانی State=ایالت / استان +StateId=State ID StateCode=State/Province code StateShort=استان Region=منطقه Region-State=منطقه - استان Country=کشور CountryCode=کد کشور -CountryId=شناسه کشور +CountryId=Country ID Phone=تلفن PhoneShort=تلفن Skype=اسکایپ @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=دیگران ProfId6ShortCM=- ProfId1CO=شناسۀ کاری 1 (R.U.T.) diff --git a/htdocs/langs/fa_IR/errors.lang b/htdocs/langs/fa_IR/errors.lang index 1231bb9e621..3f78f1adb4f 100644 --- a/htdocs/langs/fa_IR/errors.lang +++ b/htdocs/langs/fa_IR/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=برای مؤلفۀ موردنظر مقدار خطائی وارد شده است. عموما در هنگام فقدان ترجمه، الحاق می‌شود. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=نام‌کاربری %s قبلا وجود داشته است. ErrorGroupAlreadyExists=گروه %s قبلا وجود داشته است. ErrorEmailAlreadyExists=Email %s already exists. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=فایل به طور کامل توسط سرور دریافت نشده است. ErrorNoTmpDir=پوشۀ موقت %s وجود ندارد. ErrorUploadBlockedByAddon=امکان ارسال توسط یک افزونۀ PHP/Apache مسدود شده است -ErrorFileSizeTooLarge=حجم فایل بسیار بزرگ است. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=برای این نوع عددصحیح اندازه بسیار بلند است (حداکثر %s رقم) ErrorSizeTooLongForVarcharType=برای این نوع رشتۀ حروقی اندازه بسیار بزرگ است (حداکثر %s نویسه) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=برای کار کردن این قابلیت، جا ErrorPasswordsMustMatch=هر دو گذرواژۀ وارد شده باید مطابق با هم باشند ErrorContactEMail=یک خطای فنی رخ داد، لطفا با سرپرست سامانه با این نشانی %s تماس حاصل نموده و شمارۀ خطای %s را در میان بگذارید، یا یک نسخه از این صفحه را ارسال نمائید. ErrorWrongValueForField=بخش %s:'%s' با قواعد عبارات‌منظم %s نمی‌خواند +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=بخش %s:'%s' جزو مقادیری که در بخش %s از %s هستند نیست. ErrorFieldRefNotIn=بخش %s:'%s' یک ارجاع موجود %s نیست ErrorsOnXLines=%s خطا بروز کرد @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=یک گذرواژه برای این عضو تنظیم شده است. با این‌حال هیچ حساب کاربری‌ای ساخته نشده است. بنابراین این گذرواژه برای ورود به Dolibarr قابل استفاده نیست. ممکن است برای یک رابط/واحد بیرونی قابل استفاده باشد، اما اگر شما نخواهید هیچ نام کاربری ورود و گذرواژه‌ای برای یک عضو استفاده کنید، شما می‌توانید گزینۀ "ایجاد یک نام‌ورد برای هر عضو" را از برپاسازی واحد اعضاء غیرفعال کنید. در صورتی که نیاز دارید که نام‌ورود داشته باشید اما گذرواژه نداشته باشید، می‌توانید این بخش را خالی گذاشته تا از این هشدار بر حذر باشید. نکته: همچنین نشانی رایانامه می‌تواند در صورتی که عضو به یک‌کاربر متصل باشد، می‌‌تواند مورد استفاده قرار گیرد -WarningMandatorySetupNotComplete=این گزینه را برای برپاسازی مؤلفه‌های الزامی کلیک کنید +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=این گزینه را برای فعال کردن واحدها و برنامه‌های مختلف کلیک کنید WarningSafeModeOnCheckExecDir=هشدار، قابلیت safe_mode در PHP روشن است، بنابراین این دستور باید درون یک پوشه که با استفاده از مؤلفۀ PHP با عنوان safe_mode_exec_dir تعریف شده است، قرار گیرد. WarningBookmarkAlreadyExists=یک نشانه با این عنوان یا مقصد نشانی اینترنتی (URL) قبلا وجود داشته است. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/fa_IR/externalsite.lang b/htdocs/langs/fa_IR/externalsite.lang deleted file mode 100644 index 8fde4592056..00000000000 --- a/htdocs/langs/fa_IR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=تنظیم پیوند به وبگاه بیرونی -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=واحد ExternalSite  به درستی پیکربندی نشده است -ExampleMyMenuEntry=عنوان فهرست من diff --git a/htdocs/langs/fa_IR/ftp.lang b/htdocs/langs/fa_IR/ftp.lang deleted file mode 100644 index 83a59f293b6..00000000000 --- a/htdocs/langs/fa_IR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=برپاسازی واحد متقاضی FTP -NewFTPClient=برپاسازی اتصال جدید FTP -FTPArea=بخش FTP -FTPAreaDesc=این صفحه نمائی از سرور FTP را نمایش می‌دهد. -SetupOfFTPClientModuleNotComplete=ظاهرا برپاسازی واحد متقاضی FTP ناقص است -FTPFeatureNotSupportedByYourPHP=PHP شما از توابع FTP پشتیبانی نمی‌کن -FailedToConnectToFTPServer=امکان اتصال به سرور FTP نبود (سرور %s، درگاه %s) -FailedToConnectToFTPServerWithCredentials=امکان ورود به سرور FTP با نام‌ورود/گذرواژه تعریف شده نبود -FTPFailedToRemoveFile=حذف فایل %s مقدور نبود -FTPFailedToRemoveDir=حذف پوشۀ %s مقدور نبود: مجوزها را بررسی کرده و مطمئن شوید پوشه خالی است. -FTPPassiveMode=حالت انفعالی -ChooseAFTPEntryIntoMenu=یک سایت FTP از فهرست انتخاب کنید... -FailedToGetFile=عدم امکان دریافت فایل‌های %s diff --git a/htdocs/langs/fa_IR/hrm.lang b/htdocs/langs/fa_IR/hrm.lang index ff72d85abc5..b282799ddc5 100644 --- a/htdocs/langs/fa_IR/hrm.lang +++ b/htdocs/langs/fa_IR/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=باز‌کردن بنگاه CloseEtablishment=بستن بنگاه # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=مدیریت منابع انسانی - فهرست بخش‌ها +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=کارمندان @@ -20,13 +20,14 @@ Employee=کارمند NewEmployee=کارمند جدید ListOfEmployees=List of employees HrmSetup=برپاسازی واحد مدیریت منابع انسانی -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=وظیفه -Jobs=Jobs +JobPosition=وظیفه +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=سمت -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/fa_IR/install.lang b/htdocs/langs/fa_IR/install.lang index c5ec977fd63..9418dc5ba06 100644 --- a/htdocs/langs/fa_IR/install.lang +++ b/htdocs/langs/fa_IR/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=فایل پیکربندی %s قابل نوشتن ن ConfFileIsWritable=فایل پیکربندی %s قابل نوشتن است ConfFileMustBeAFileNotADir=فایل پیکربندی %sباید یک فایل باشد، نه یک پوشه. ConfFileReload=بارگذاری مجدد مقادیر از فایل پیکربندی. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=این PHP از قابلیت GET و POST متغیرها پشتیبانی می‌کند. PHPSupportPOSTGETKo=ممکن است برپاسازی PHP شما از قابلیت POST و یا GET متغیرها پشتیبانی نمی‌کند. در php.ini مقدار variables_order را بررسی کنید. PHPSupportSessions=این PHP از قابلیت نشست‌ پشتیبانی می‌کند. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=ممکن است شما یک مقدار اشتباه ErrorFailedToCreateDatabase=امکان ساخت پایگاه‌داده '%s' وجود نداشت. ErrorFailedToConnectToDatabase=امکان اتصال به پایگاه‌داده '%s' وجود نداشت. ErrorDatabaseVersionTooLow=نسخۀ پایگاه داده (%s) بسیار قدیمی است. برای کار نسخۀ %s یا بالاتر احتیاج است -ErrorPHPVersionTooLow=نسخۀ PHP بسیار قدیمی است. برای کار نسخۀ %s نیاز است. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=اتصال به سرویس‌دهنده با موفقیت انجام شد اما پایگاه داده '%s'  پیدا نشد. ErrorDatabaseAlreadyExists=پایگاه دادۀ '%s' از قبل وجود دارد +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=در صورتی که پایگاه داده وجود نداشته باشد، به عقب برگشته و گزینۀ "ساخت پایگاه داده" را کلیک نمائید. IfDatabaseExistsGoBackAndCheckCreate=در صورتی که پایگاه داده از قبل وجود داشته، به عقب بازگشته و گزینۀ "ساخت پایگاه داده" را از حالت تائید بردارید. WarningBrowserTooOld=نسخۀ مرورگر بسیار قدیمی است، ارتقای مرورگر به نسخه‌های اخیر فایرفاکس، کروم یا اپرا به شدت پیشنهاد می‌شود diff --git a/htdocs/langs/fa_IR/main.lang b/htdocs/langs/fa_IR/main.lang index 989faeb7c9f..9e142144bba 100644 --- a/htdocs/langs/fa_IR/main.lang +++ b/htdocs/langs/fa_IR/main.lang @@ -244,6 +244,7 @@ Designation=توضیحات DescriptionOfLine=توضیحات سط DateOfLine=تاریخ سطر DurationOfLine=مدت‌زمان سطر +ParentLine=Parent line ID Model=قالب سن DefaultModel=قابل پیش‌فرض برای سن Action=رویداد @@ -344,7 +345,7 @@ KiloBytes=کیلوبایت MegaBytes=مگابایت GigaBytes=گیگابایت TeraBytes=ترابایت -UserAuthor=Ceated by +UserAuthor=ساخته‌شده توسط UserModif=Updated by b=ب. Kb=کیلوبایت @@ -517,6 +518,7 @@ or=یا Other=دیگر Others=دیگران OtherInformations=سایر اطلاعات +Workflow=گردش‌کار Quantity=تعداد Qty=تعداد ChangedBy=تغییر توسط @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=اسناد و فایل‌های پیوست شده JoinMainDoc=ملحق شدن سند اصلی +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=این قابلیت غیرفعال است MoveBox=جابجا کردن وسیله Offered=پیشنهادشده NotEnoughPermissions=شما مجاز به انجام این کار نیستید +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=نام نشست Method=روش Receive=دریافت @@ -798,6 +802,7 @@ URLPhoto=نشانی تصویر/نماد SetLinkToAnotherThirdParty=پیوند به شخص‌سوم دیگر LinkTo=پیوند به LinkToProposal=پیوند به پیشنهاد +LinkToExpedition= Link to expedition LinkToOrder=پیوند به سفارش LinkToInvoice=پیوند به صورت‌حساب LinkToTemplateInvoice=پیوند به قالب صورت‌حساب @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=از بین بردن +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/fa_IR/members.lang b/htdocs/langs/fa_IR/members.lang index 1cc3c0fd56f..52bc144e179 100644 --- a/htdocs/langs/fa_IR/members.lang +++ b/htdocs/langs/fa_IR/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=نام کاربری +MemberId=Member Id +MemberRef=Member Ref NewMember=عضو جدید MemberType=نوع کاربران MemberTypeId=نوع شناسه عضو @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/fa_IR/stocks.lang b/htdocs/langs/fa_IR/stocks.lang index b6cffc97b0e..6d40fbcb7df 100644 --- a/htdocs/langs/fa_IR/stocks.lang +++ b/htdocs/langs/fa_IR/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=محدودیت موجودی برای هشدار و ProductStockWarehouseUpdated=محدودیت موجودی برای هشدار و محدودیت مطلوب به دقت روز‌آمد شد ProductStockWarehouseDeleted=محدودیت موجودی برای هشدار و محدودیت مطلوب به دقت حذف شد AddNewProductStockWarehouse=تعیین یک حد جدید موجودی و موجودی مطلوب برای هشدار -AddStockLocationLine=تعداد را کاهش داده و سپس برای ایجاد یک انبار جدید برای این محصول کلیک نمائید +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=تاریخ فهرست‌موجودی‌کالا Inventories=فهرست‌های‌موجودی NewInventory=فهرست‌موجودی جدید @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=شروع InventoryStartedShort=آغاز شده ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=تنظیمات +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/fi_FI/admin.lang b/htdocs/langs/fi_FI/admin.lang index d16b7ca048d..e88c94cb448 100644 --- a/htdocs/langs/fi_FI/admin.lang +++ b/htdocs/langs/fi_FI/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Seuraava arvo (korvaavat) MustBeLowerThanPHPLimit=Huomaa: PHP-kokoonpanosi rajoittaa tällä hetkellä lähetettävien tiedostojen enimmäiskokoa %s %s tämän parametrin arvosta riippumatta. NoMaxSizeByPHPLimit=Huom: Rajaa ei ole asetettu PHP-asetuksissa MaxSizeForUploadedFiles=Lähetettävien tiedostojen enimmäiskoko (0 estää lähetykset) -UseCaptchaCode=Käytä graafista koodia (CAPTCHA) kirjautumissivulla +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Virustorjuntaohjelman polku AntiVirusCommandExample=Esimerkki ClamAv-daemonille (vaatii clamav-daemonin): /usr/bin/clamdscan
Esimerkki ClamWinille (erittäin hidas): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Lisää parametreja komentorivillä @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klikkaa näyttääksesi kuvaus DependsOn=Tämä moduuli tarvitsee moduulit RequiredBy=Moduuli (t) vaativat tämän moduulin @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Vaihtoehto %s on päällä NbOfDays=Päivien lukumäärä AtEndOfMonth=Kuukauden lopussa -CurrentNext=Nykyinen / Seuraava +CurrentNext=A given day in month Offset=Offset AlwaysActive=Aina aktiivinen Upgrade=Päivitys @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Paina näppäimistön CTRL + F5 tai tyhjennä selaimen NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Taustaväri TopMenuBackgroundColor=Taustaväri ylävalikolle -TopMenuDisableImages=Piilota kuvat ylävalikosta +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Taustaväri alavalikolle BackgroundTableTitleColor=Taulukon otsikkorivin taustaväri BackgroundTableTitleTextColor=Taulukon otsikkorivin tekstin väri @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Sähköpostin kerääjä +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=Uusi postinkerääjä EMailHost=IMAP-palvelin @@ -2073,14 +2074,14 @@ DateLastCollectResult=Viimeisimmän keräysyrityksen päivämäärä DateLastcollectResultOk=Viimeisimmän onnistuneen keräyksen päivämäärä LastResult=Viimeisin tulos EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Sähköpostikeräyksen vahvistus EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Ei uutta käsiteltävää sähköpostia (vastaavat suodattimet) NothingProcessed=Mitään ei tehty -XEmailsDoneYActionsDone=%s -sähköpostia hyväksytty, %s sähköpostien käsittely onnistuneesti (%s-tietuetta / tehtävää suoritettu) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Mallisähköposti EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Asetukset +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/fi_FI/companies.lang b/htdocs/langs/fi_FI/companies.lang index 036a383eac0..8f949866099 100644 --- a/htdocs/langs/fi_FI/companies.lang +++ b/htdocs/langs/fi_FI/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Sidosryhmän luonne NatureOfContact=Yhteyshenkilön luonne Address=Osoite State=Postialue +StateId=State ID StateCode=Postinumero StateShort=Valtio Region=Alue Region-State=Alue - Osavaltio Country=Maa CountryCode=Maakoodi -CountryId=Maatunnus +CountryId=Country ID Phone=Puhelin PhoneShort=Puhelin Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Muut ProfId6ShortCM=- ProfId1CO=Professori Id 1 (RUT) diff --git a/htdocs/langs/fi_FI/errors.lang b/htdocs/langs/fi_FI/errors.lang index bbbace60e76..9a5148d92c3 100644 --- a/htdocs/langs/fi_FI/errors.lang +++ b/htdocs/langs/fi_FI/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/fi_FI/externalsite.lang b/htdocs/langs/fi_FI/externalsite.lang deleted file mode 100644 index 1926b6e7f01..00000000000 --- a/htdocs/langs/fi_FI/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup linkki ulkoiseen sivustoon -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Ulkoisen sivuston Moduuli ei ole oikein konfiguroitu. -ExampleMyMenuEntry=Omassa valikossa diff --git a/htdocs/langs/fi_FI/ftp.lang b/htdocs/langs/fi_FI/ftp.lang deleted file mode 100644 index ea3b84ad187..00000000000 --- a/htdocs/langs/fi_FI/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client-moduuli asennus -NewFTPClient=Uusi FTP-yhteys asetukset -FTPArea=FTP Area -FTPAreaDesc=Tämä ruutu näyttää sisällön FTP-palvelimen mieltä -SetupOfFTPClientModuleNotComplete=Asennus ja FTP-moduuli näyttää ole täydellinen -FTPFeatureNotSupportedByYourPHP=PHP ei tue FTP toiminnot -FailedToConnectToFTPServer=Yhteyden muodostaminen epäonnistui FTP-palvelimen (palvelin %s, portti %s) -FailedToConnectToFTPServerWithCredentials=Epäonnistui kirjautua FTP-palvelimeen on määritelty / salasana -FTPFailedToRemoveFile=Ole poistanut tiedoston %s. -FTPFailedToRemoveDir=Ole poistanut hakemistoon %s (Tarkista oikeudet ja että hakemisto on tyhjä). -FTPPassiveMode=Passiivisena -ChooseAFTPEntryIntoMenu=Valitse FTP osoite valikosta -FailedToGetFile=Tiedostojen %s lataus epäonnistui diff --git a/htdocs/langs/fi_FI/hrm.lang b/htdocs/langs/fi_FI/hrm.lang index ea0084467a7..bfd23860d29 100644 --- a/htdocs/langs/fi_FI/hrm.lang +++ b/htdocs/langs/fi_FI/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Avaa laitos CloseEtablishment=Sulje laitos # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Osastolista +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Työntekijät @@ -20,13 +20,14 @@ Employee=Työntekijä NewEmployee=Uusi työntekijä ListOfEmployees=List of employees HrmSetup=Henkilöstöhallinta moduulin asetukset -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Sijainti -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/fi_FI/install.lang b/htdocs/langs/fi_FI/install.lang index 8c282db2d83..b04fead3436 100644 --- a/htdocs/langs/fi_FI/install.lang +++ b/htdocs/langs/fi_FI/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Configuration file %s on kirjoitettavissa. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Tämä PHP tukee muuttujat POST ja GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Tämä PHP tukee istuntoja. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Olet ehkä kirjoittanut väärän arvon parametri ' ErrorFailedToCreateDatabase=Luominen epäonnistui tietokanta ' %s'. ErrorFailedToConnectToDatabase=Epäonnistui muodostaa tietokanta ' %s'. ErrorDatabaseVersionTooLow=Tietokannan versio (%s) on liian vanha. Versio %s tai korkeampi on tarpeen. -ErrorPHPVersionTooLow=PHP versio liian vanha. Versio %s on tarpeen. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Database ' %s' on jo olemassa. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Jos tietokanta on jo olemassa, mene takaisin ja poista "Luo tietokanta" vaihtoehto. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/fi_FI/main.lang b/htdocs/langs/fi_FI/main.lang index 8e4a8be635c..2665e5e68c3 100644 --- a/htdocs/langs/fi_FI/main.lang +++ b/htdocs/langs/fi_FI/main.lang @@ -244,6 +244,7 @@ Designation=Kuvaus DescriptionOfLine=Kuvaus linja DateOfLine=Date of line DurationOfLine=Duration of line +ParentLine=Parent line ID Model=Doc-pohja DefaultModel=Oletus doc-pohja Action=Tapahtuma @@ -344,7 +345,7 @@ KiloBytes=Kilotavua MegaBytes=Megatavua GigaBytes=Gigatavua TeraBytes=Teratavua -UserAuthor=Ceated by +UserAuthor=Luonut UserModif=Updated by b=b. Kb=Kb @@ -517,6 +518,7 @@ or=tai Other=Muu Others=Muut OtherInformations=Other information +Workflow=Työtehtävät Quantity=Määrä Qty=Kpl ChangedBy=Muuttanut @@ -619,6 +621,7 @@ MonthVeryShort11=Mar MonthVeryShort12=J AttachedFiles=Liitetyt tiedostot ja asiakirjat JoinMainDoc=Join main document +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=VVVV-KK DateFormatYYYYMMDD=VVVV-KK-PP DateFormatYYYYMMDDHHMM=YYYY-KK-PP HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=Ominaisuus pois päältä MoveBox=Siirrä widget Offered=Tarjottu NotEnoughPermissions=Sinulla ei ole lupaa tätä toimintaa varten +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Istunnon nimi Method=Menetelmä Receive=Vastaanota @@ -798,6 +802,7 @@ URLPhoto=Kuvan tai logon url SetLinkToAnotherThirdParty=Linkki toiseen sidosryhmään LinkTo=Linkki LinkToProposal=Linkki Tarjoukseen +LinkToExpedition= Link to expedition LinkToOrder=Linkki Tilauksiin LinkToInvoice=Linkki Laskuihin LinkToTemplateInvoice=Linkki mallilaskuun @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Lopeta +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/fi_FI/members.lang b/htdocs/langs/fi_FI/members.lang index fdd6297dc74..4a819ff6665 100644 --- a/htdocs/langs/fi_FI/members.lang +++ b/htdocs/langs/fi_FI/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Jäsen id +MemberId=Member Id +MemberRef=Member Ref NewMember=Uusi jäsen MemberType=Jäsen tyyppi MemberTypeId=Jäsen tyyppi id @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/fi_FI/stocks.lang b/htdocs/langs/fi_FI/stocks.lang index e19a9593166..b82ec5a8304 100644 --- a/htdocs/langs/fi_FI/stocks.lang +++ b/htdocs/langs/fi_FI/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Uudelleenavaa ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Alku InventoryStartedShort=Aloitettu ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Asetukset +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/fr_CA/admin.lang b/htdocs/langs/fr_CA/admin.lang index a948bec589d..ebfa1d5ffc5 100644 --- a/htdocs/langs/fr_CA/admin.lang +++ b/htdocs/langs/fr_CA/admin.lang @@ -119,7 +119,6 @@ DictionaryVAT=Taux de TPS/TVH ou de Taxes de Ventes DictionaryAccountancyJournal=Revues comptables SetupNotSaved=Le programme d'installation n'a pas été enregistré LocalTax2Management=Gestion 3ème type de tax -CurrentNext=Actuel / Suivant DefaultMaxSizeList=Longueur maximale des listes CompanyObject=Objet de la compagnie InfoDolibarr=À propos de Dolibarr @@ -198,7 +197,6 @@ HighlightLinesOnMouseHover=Mettez en surbrillance les lignes de table lorsque d PressF5AfterChangingThis=Appuyez sur CTRL + F5 sur le clavier ou effacez votre cache de navigateur après avoir changé cette valeur pour l'avoir efficace NotSupportedByAllThemes=Will fonctionne avec des thèmes de base, peut ne pas être pris en charge par des thèmes externes TopMenuBackgroundColor=Couleur de fond du menu haut -TopMenuDisableImages=Masquer les images dans le menu principal LeftMenuBackgroundColor=Couleur de fond gauche BackgroundTableTitleColor=Couleur de fond pour le tableau ligne de titre BackgroundTableLineOddColor=Couleur de fond pour les lignes impaires @@ -236,7 +234,6 @@ ListOfAvailableAPIs=Liste des API disponibles LandingPage=Page d'atterrissage ModuleEnabledAdminMustCheckRights=Le module a été activé. Les autorisations pour les modules activés ont été données uniquement aux utilisateurs administratifs. Vous devrez peut-être accorder des autorisations aux autres utilisateurs ou groupes manuellement si nécessaire. BaseCurrency=Monnaie de référence de la société (entrer dans la configuration de l'entreprise pour modifier cela) -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) FormatZip=Code postal OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. UseSearchToSelectResource=Utilisez un formulaire de recherche pour choisir une ressource (plutôt qu'une liste déroulante). diff --git a/htdocs/langs/fr_CA/companies.lang b/htdocs/langs/fr_CA/companies.lang index cf83b494929..9651cc0af4c 100644 --- a/htdocs/langs/fr_CA/companies.lang +++ b/htdocs/langs/fr_CA/companies.lang @@ -12,8 +12,6 @@ LocalTax1IsUsed=Assujeti à la TVQ LocalTax2IsUsed=Assujeti à une troisième taxe ProfId6Short=TVQ ProfId6=TVQ -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId3ShortCM=Decree of creation ProfId1MX=Id. Prof. 1 (R.F.C). ProfId2MX=ID. Prof. 2 (R..P. IMSS) ProfId3MX=Id. Prof. 3 (Charte Profesionnelle) diff --git a/htdocs/langs/fr_CA/externalsite.lang b/htdocs/langs/fr_CA/externalsite.lang deleted file mode 100644 index 01d000d22e0..00000000000 --- a/htdocs/langs/fr_CA/externalsite.lang +++ /dev/null @@ -1,4 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Lien de configuration vers un site Web externe -ExternalSiteModuleNotComplete=Module ExternalSite n'a pas été configuré correctement. -ExampleMyMenuEntry=Entrée de mon menu diff --git a/htdocs/langs/fr_CA/ftp.lang b/htdocs/langs/fr_CA/ftp.lang deleted file mode 100644 index 7b50188c38b..00000000000 --- a/htdocs/langs/fr_CA/ftp.lang +++ /dev/null @@ -1,11 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuration du module client FTP -FTPArea=Zone FTP -FTPAreaDesc=Cet écran vous montre le contenu d'une vue du serveur FTP -SetupOfFTPClientModuleNotComplete=La configuration du module client FTP semble ne pas être complète -FailedToConnectToFTPServer=Impossible de se connecter au serveur FTP (serveur %s, port %s) -FailedToConnectToFTPServerWithCredentials=Échec de la connexion au serveur FTP avec login / mot de passe défini -FTPFailedToRemoveFile=Impossible d'enlever le fichier %s. -FTPFailedToRemoveDir=Impossible de supprimer le répertoire %s (Vérifiez les autorisations et ce répertoire est vide). -ChooseAFTPEntryIntoMenu=Choisissez une entrée FTP dans le menu ... -FailedToGetFile=Impossible d'obtenir des fichiers %s diff --git a/htdocs/langs/fr_CA/hrm.lang b/htdocs/langs/fr_CA/hrm.lang index 84a5e513279..82ec6d751fc 100644 --- a/htdocs/langs/fr_CA/hrm.lang +++ b/htdocs/langs/fr_CA/hrm.lang @@ -4,7 +4,7 @@ Establishments=Établissements Establishment=Établissement OpenEtablishment=Établissement ouvert CloseEtablishment=Établissement proche -DictionaryDepartment=HRM - liste du département Employees=Employés Employee=Employé NewEmployee=Nouvel employé +HrmSetup=Configuration du module de GRH diff --git a/htdocs/langs/fr_CA/install.lang b/htdocs/langs/fr_CA/install.lang index 98fcea448a1..8d8237ae1a4 100644 --- a/htdocs/langs/fr_CA/install.lang +++ b/htdocs/langs/fr_CA/install.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - install +PHPSupportPOSTGETOk=Ce PHP prend bien en charge les variables POST et GET. AdminLoginCreatedSuccessfuly=Connexion administrateur Dolibarr '%s' créé avec succès. FailedToCreateAdminLogin=Impossible de créer un compte administrateur Dolibarr. MigrationContractsIncoherentCreationDateUpdateSuccess=Correction mauvaise valeur de la date de création du contrat effectuée avec succès diff --git a/htdocs/langs/fr_CA/members.lang b/htdocs/langs/fr_CA/members.lang index 291f2a8737d..a07f2e193ce 100644 --- a/htdocs/langs/fr_CA/members.lang +++ b/htdocs/langs/fr_CA/members.lang @@ -21,7 +21,6 @@ MembersListQualified=Liste des membres qualifiés MenuMembersToValidate=Ébauche de membres MenuMembersValidated=Membres validés MenuMembersResiliated=Membres résiliés -MemberId=ID membres NewMember=Nouveau membre MemberType=Type de membre MemberTypeId=Id. De type membre diff --git a/htdocs/langs/fr_CA/oauth.lang b/htdocs/langs/fr_CA/oauth.lang index 6b3a2a7d1b9..5812eed5532 100644 --- a/htdocs/langs/fr_CA/oauth.lang +++ b/htdocs/langs/fr_CA/oauth.lang @@ -6,9 +6,6 @@ HasAccessToken=Un jeton a été généré et enregistré dans la base de donnée NewTokenStored=Jeton reçu et enregistré ToCheckDeleteTokenOnProvider=Cliquez ici pour vérifier / supprimer l'autorisation enregistrée par %s OAuth provider TokenDeleted=Jeton supprimé -RequestAccess=Cliquez ici pour demander / renouveler l'accès et recevoir un nouveau jeton à sauvegarder -DeleteAccess=Cliquez ici pour supprimer le jeton -OAuthSetupForLogin=Page pour générer un jeton OAuth SeePreviousTab=Voir l'onglet précédent TOKEN_EXPIRED=Jeton expiré TOKEN_EXPIRE_AT=Token expire à diff --git a/htdocs/langs/fr_CA/projects.lang b/htdocs/langs/fr_CA/projects.lang index 1a6534f6492..db0b3e29f94 100644 --- a/htdocs/langs/fr_CA/projects.lang +++ b/htdocs/langs/fr_CA/projects.lang @@ -11,7 +11,6 @@ ProjectsPublicTaskDesc=Cette vue présente tous les projets et tâches que vous ProjectsDesc=Cette vue présente tous les projets (vos autorisations d'utilisateur vous permettent d'afficher tout). TasksOnProjectsDesc=Cette vue présente toutes les tâches sur tous les projets (vos autorisations d'utilisateur vous permettent d'afficher tout). OnlyOpenedProject=Seuls les projets ouverts sont visibles (les projets en ébauche ou l'état fermé ne sont pas visibles). -ClosedProjectsAreHidden=Les projets fermés ne sont pas visibles. TasksPublicDesc=Cette vue présente tous les projets et tâches que vous pouvez lire. TasksDesc=Cette vue présente tous les projets et les tâches (vos autorisations d'utilisateur vous accordent l'autorisation de voir tout). ProjectCategories=Étiquettes / catégories de projet diff --git a/htdocs/langs/fr_CA/stocks.lang b/htdocs/langs/fr_CA/stocks.lang index 0d48acac911..39679b84055 100644 --- a/htdocs/langs/fr_CA/stocks.lang +++ b/htdocs/langs/fr_CA/stocks.lang @@ -69,7 +69,6 @@ ProductStockWarehouseCreated=Limite de stock pour l'alerte et le stock optimal s ProductStockWarehouseUpdated=La limite de stock pour l'alerte et le stock optimal souhaité est correctement mis à jour ProductStockWarehouseDeleted=La limite de stock pour l'alerte et le stock optimal souhaité sont correctement supprimés AddNewProductStockWarehouse=Définir une nouvelle limite pour l'alerte et le stock optimal souhaité -AddStockLocationLine=Diminuez la quantité, puis cliquez pour ajouter un autre entrepôt pour ce produit inventorySetup =Configuration de l'inventaire inventoryReadPermission=Voir les stocks inventoryWritePermission=Mise à jour des inventaires diff --git a/htdocs/langs/fr_FR/accountancy.lang b/htdocs/langs/fr_FR/accountancy.lang index 190905c760d..a58f1642bb5 100644 --- a/htdocs/langs/fr_FR/accountancy.lang +++ b/htdocs/langs/fr_FR/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Désactiver la saisie directe de transactions en banqu ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Activer l'export brouillon sur les journaux comptables ACCOUNTANCY_COMBO_FOR_AUX=Activer la liste déroulante pour les comptes auxiliaires (des lenteurs peuvent être rencontrées si vous avez de nombreux tiers) ACCOUNTING_DATE_START_BINDING=Définissez une date pour commencer la liaison et le transfert en comptabilité. En dessous de cette date, les transactions ne seront jamais transférées à la comptabilité. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Choix de la période des factures pour le transfert en comptabilité +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Sur virement comptable, quelle est la période sélectionnée par défaut ACCOUNTING_SELL_JOURNAL=Journal des ventes ACCOUNTING_PURCHASE_JOURNAL=Journal des achats @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Compte comptable pour l'enregistrement des dons ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Compte comptable pour enregistrer les adhésions ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Compte comptable par défaut pour les acomptes clients -UseAuxiliaryAccountOnCustomerDeposit=Utiliser des sous-comptes pour les lignes de dépôt des clients +UseAuxiliaryAccountOnCustomerDeposit=Enregistrer le compte client comme compte individuel dans le grand livre auxiliaire pour les lignes d'acompte (si désactivé, le compte individuel pour les lignes d'acompte restera vide) 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_BUY_INTRA_ACCOUNT=Compte comptable par défaut pour les produits achetés dans la CEE (utilisé si non défini dans la fiche produit) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Si vous avez défini des comptes comptables au nivea DescVentilDoneExpenseReport=Consultez ici la liste des lignes des notes de frais et leur compte comptable Closure=Clôture annuelle -DescClosure=Consulter le nombre de mouvements par mois non validés et les périodes fiscales déjà ouvertes +DescClosure=Consultez ici le nombre de mouvements par mois non encore validés & verrouillés OverviewOfMovementsNotValidated=Aperçu des mouvements non validés et verrouillés AllMovementsWereRecordedAsValidated=Tous les mouvements ont été enregistrés comme validés et ont été verrouillés NotAllMovementsCouldBeRecordedAsValidated=Certains mouvements n'ont pas pu être enregistrés comme validés et n'ont pas été verrouillés @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Désactiver la liaison et le transf ## Export NotifiedExportDate=Marquer les lignes exportées comme Exportées (pour modifier une ligne, vous devrez supprimer toute la transaction et la retransférer en comptabilité) -NotifiedValidationDate=Validez et verrouillez les entrées exportées (même effet que la fonction "Fermeture", la modification et la suppression des lignes ne seront CERTAINEMENT pas possibles) +NotifiedValidationDate=Validez et verrouillez les entrées exportées (même effet que la fonction "%s", la modification et la suppression des lignes ne seront CERTAINEMENT pas possibles) DateValidationAndLock=Validation et verrouillage de la date ConfirmExportFile=Confirmation de la génération du fichier d'export comptable ? ExportDraftJournal=Exporter le journal brouillon @@ -424,9 +424,10 @@ Binded=Lignes liées ToBind=Lignes à lier UseMenuToSetBindindManualy=Lignes non encore liées, utilisez le menu %s pour effectuer la liaison manuellement. SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Désolé ce module n'est pas compatible avec la fonctionnalité expérimentale des factures de situation -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code +AccountancyErrorMismatchLetterCode=Non-concordance dans le code de réconciliation AccountancyErrorMismatchBalanceAmount=Le solde (%s) n'est pas égal à 0 AccountancyErrorLetteringBookkeeping=Des erreurs sont survenues concernant les transactions : %s +ErrorAccountNumberAlreadyExists=Le code comptable %s existe déjà ## Import ImportAccountingEntries=Écritures comptables diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 7ac18213e1e..1f1bcd899af 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Prochaine valeur (factures de remplacement) MustBeLowerThanPHPLimit=Remarque: La configuration de votre PHP limite la taille des envois à %s %s, quelle que soit la valeur de ce paramètre NoMaxSizeByPHPLimit=Aucune limite configurée dans votre serveur PHP MaxSizeForUploadedFiles=Taille maximum des fichiers envoyés (0 pour interdire l'envoi) -UseCaptchaCode=Utilisation du code graphique (CAPTCHA) sur la page de connexion +UseCaptchaCode=Utiliser le code graphique (CAPTCHA) sur la page de connexion et certaines pages publiques AntiVirusCommand=Chemin complet vers la commande antivirus AntiVirusCommandExample=Exemple pour ClamAv Daemon (nécessite clamav-daemon): /usr/bin/clamdscan
Exemple pour ClamWin (très très lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Paramètres supplémentaires sur la ligne de commande @@ -190,7 +190,7 @@ Compression=Compression CommandsToDisableForeignKeysForImport=Commande pour désactiver les clés étrangères à l'importation CommandsToDisableForeignKeysForImportWarning=Requis si vous voulez être en mesure de restaurer votre « dump » SQL plus tard ExportCompatibility=Compatibilité du fichier d'exportation généré -ExportUseMySQLQuickParameter=Utiliser le paramètre --quick +ExportUseMySQLQuickParameter=Utiliser le paramètre --quick ExportUseMySQLQuickParameterHelp=Le paramètre '--quick' aide à réduire la consommation de RAM pour les longues listes MySqlExportParameters=Paramètres de l'exportation MySQL PostgreSqlExportParameters= Paramètres de l'exportation PostgreSQL @@ -248,7 +248,7 @@ UsedOnlyWithTypeOption=Utilisé par certaines options de l'agenda uniquement Security=Sécurité Passwords=Mots de passe DoNotStoreClearPassword=Chiffrer les mots de passe stockés dans la base de données (PAS en texte brut). Il est fortement recommandé d'activer cette option. -MainDbPasswordFileConfEncrypted=Chiffrer le mot de passe de la base dans le fichier conf.php . Il est fortement recommandé d'activer cette option. +MainDbPasswordFileConfEncrypted=Chiffrer le mot de passe de la base dans le fichier conf.php. Il est fortement recommandé d'activer cette option. InstrucToEncodePass=Pour avoir le mot de passe de la base encodé dans le fichier de configuration conf.php, remplacer dans ce fichier la ligne
$dolibarr_main_db_pass="...";
par
$dolibarr_main_db_pass="crypted:%s"; InstrucToClearPass=Pour avoir le mot de passe de la base décodé (en clair) dans le fichier de configuration conf.php, remplacer dans ce fichier la ligne
$dolibarr_main_db_pass="crypted:...";
par
$dolibarr_main_db_pass="%s"; ProtectAndEncryptPdfFiles=Protection des PDF générés. Activation NON recommandée (rend inopérante la génération de PDF de masse) @@ -338,7 +338,7 @@ MenuHandlers=Gestionnaires de menu MenuAdmin=Édition menu DoNotUseInProduction=Ne pas utiliser en production ThisIsProcessToFollow=Procédure de mise à jour: -ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative +ThisIsAlternativeProcessToFollow=Voici une procédure de configuration alternative StepNb=Étape %s FindPackageFromWebSite=Rechercher le paquet qui répond à votre besoin (par exemple sur le site web %s). DownloadPackageFromWebSite=Télécharger le package (par exemple depuis le site web officiel %s) @@ -504,7 +504,7 @@ WarningPHPMailC=- Utiliser le serveur SMTP de votre propre fournisseur de servic WarningPHPMailD=Aussi, il est recommandé de changer le mode d'envoi des e-mails à la valeur "SMTP". Si vous souhaitez vraiment conserver la méthode "PHP" par défaut pour envoyer des e-mails, ignorez simplement cet avertissement ou supprimez-le en définissant la constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP sur 1 dans Accueil - Configuration - Autre. WarningPHPMail2=Si votre fournisseur de messagerie SMTP a besoin de restreindre le client de messagerie à certaines adresses IP (très rare), voici l'adresse IP du mail user agent (MUA) de votre application CRM ERP : %s . WarningPHPMailSPF=Si le nom de domaine de votre adresse e-mail d'expéditeur est protégé par un enregistrement SPF (demandez à votre fournisseur de nom de domaine), vous devez inclure les adresses IP suivantes dans l'enregistrement SPF du DNS de votre domaine: %s. -ActualMailSPFRecordFound=Enregistrement SPF réel trouvé : %s +ActualMailSPFRecordFound=Enregistrement SPF réel trouvé (pour l'e-mail %s) : %s ClickToShowDescription=Cliquer pour afficher la description DependsOn=Ce module a besoin du(des) module(s) RequiredBy=Ce module est requis par le ou les module(s) @@ -718,9 +718,9 @@ Permission34=Supprimer les produits Permission36=Voir/gérer les produits cachés Permission38=Exporter les produits Permission39=Ignorer le prix minimum -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission41=Lire les projets et les tâches (projets partagés et projets dont je suis un contact). +Permission42=Créer/modifier des projets (projets partagés et projets dont je suis un interlocuteur). Peut également affecter des utilisateurs à des projets et des tâches +Permission44=Supprimer des projets (projets partagés et projets dont je suis un contact) Permission45=Exporter les projets Permission61=Consulter les interventions Permission62=Créer/modifier les interventions @@ -766,10 +766,10 @@ Permission122=Créer/modifier les tiers (sociétés) liés à l'utilisateur Permission125=Supprimer les tiers (sociétés) liés à l'utilisateur Permission126=Exporter les tiers (sociétés) Permission130=Créer/modifier les informations de paiement des tiers -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission141=Lire tous les projets et tâches (ainsi que les projets privés pour lesquels je ne suis pas un contact) +Permission142=Créer/modifier tous les projets et tâches (ainsi que les projets privés pour lesquels je ne suis pas un contact) +Permission144=Supprimer tous les projets et tâches (ainsi que les projets privés dont je ne suis pas un contact) +Permission145=Peut saisir le temps consommé, pour moi ou ma hiérarchie, sur les tâches assignées (Timesheet) Permission146=Consulter les fournisseurs Permission147=Consulter les stats Permission151=Consulter les prélèvements @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valeur de constante de configuration ConstantIsOn=L'option %s est activée NbOfDays=Nb. de jours AtEndOfMonth=En fin de mois -CurrentNext=Current/Next +CurrentNext=Un jour donné du mois Offset=Décalage AlwaysActive=Toujours actif Upgrade=Mise à jour @@ -1346,7 +1346,7 @@ TransKeyWithoutOriginalValue=Vous avez forcé une nouvelle traduction pour la cl TitleNumberOfActivatedModules=Modules activés TotalNumberOfActivatedModules=Modules activés : %s / %s YouMustEnableOneModule=Vous devez activer au moins une fonctionnalité -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +YouMustEnableTranslationOverwriteBefore=Vous devez d'abord activer l'écrasement de la traduction pour être autorisé à remplacer une traduction 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) et seulement si les permissions leur ont été données:
@@ -1377,7 +1377,7 @@ NumberingModules=Modèles de numérotation DocumentModules=Modèles de documents ##### Module password generation PasswordGenerationStandard=Renvoie un mot de passe généré selon l'algorythme interne de Dolibarr :%s caractères contenant chiffres et minuscules -PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement. +PasswordGenerationNone=Ne pas suggérer un mot de passe généré. Le mot de passe doit être entré manuellement. PasswordGenerationPerso=Renvoie un mot de passe en fonction d'une configuration personnalisée. SetupPerso=Selon votre configuration PasswordPatternDesc=Description du masque du mot de passe @@ -1455,7 +1455,7 @@ OrdersNumberingModules=Modèles de numérotation des commandes OrdersModelModule=Modèles de document des commandes FreeLegalTextOnOrders=Mention complémentaire sur les commandes WatermarkOnDraftOrders=Filigrane sur les brouillons de commandes (aucun si vide) -ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable. +ShippableOrderIconInList=Ajouter une icône dans la liste des commandes qui indique si la commande est expédiable. BANK_ASK_PAYMENT_BANK_DURING_ORDER=Demander le compte bancaire cible durant la commande ##### Interventions ##### InterventionsSetup=Configuration du module Interventions @@ -1645,7 +1645,7 @@ TestNotPossibleWithCurrentBrowsers=Une détection automatique n'est pas possible DefaultValuesDesc=Vous pouvez définir/forcer ici la valeur par défaut que vous voulez obtenir lorsque vous créez un nouvel enregistrement, et/ou les filtres par défaut ou ordre de tri des listes. DefaultCreateForm=Valeurs par défaut (sur les formulaires de création) DefaultSearchFilters=Filtres de recherche par défaut -DefaultSortOrder=Ordre de tri par défaut +DefaultSortOrder=Ordre de tri par défaut DefaultFocus=Champs par défaut ayant le focus DefaultMandatory=Champs de formulaire obligatoires ##### Products ##### @@ -1864,7 +1864,7 @@ ChequeReceiptsNumberingModule=Module de numérotation des bordereaux de remises MultiCompanySetup=Configuration du module Multi-société ##### Suppliers ##### SuppliersSetup=Configuration du module Fournisseurs -SuppliersCommandModel=Modèle de commande fournisseur complet +SuppliersCommandModel=Modèle de commande fournisseur complet SuppliersCommandModelMuscadet=Modèle de commande fournisseur complet (ancienne implémentation du modèle Cornas) SuppliersInvoiceModel=Modèle de facture fournisseur complet SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur @@ -1899,7 +1899,7 @@ NbMajMin=Nombre minimal de caractères majuscules NbNumMin=Nombre minimal de caractères numériques NbSpeMin=Nombre minimal de caractères spéciaux NbIteConsecutive=Nombre maximal de répétition des mêmes caractères -NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique +NoAmbiCaracAutoGeneration=Ne pas utiliser des caractères ambigus ("1","l","i","|","0","O") pour la génération automatique SalariesSetup=Configuration du module salaires SortOrder=Ordre de tri Format=Format @@ -1920,7 +1920,7 @@ GoOntoContactCardToAddMore=Rendez-vous sur l'onglet "Notifications" d'un tiers p Threshold=Seuil BackupDumpWizard=Assistant pour créer le fichier dump de la base de données BackupZipWizard=Assistant pour générer l'archive du répertoire documents -SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante : +SomethingMakeInstallFromWebNotPossible=L'installation de module externe est impossible depuis l'interface web pour la raison suivante : SomethingMakeInstallFromWebNotPossible2=Pour cette raison, le processus de mise à jour décrit ici est une processus manuel que seul un utilisateur ayant des droits privilégiés peut réaliser. InstallModuleFromWebHasBeenDisabledByFile=L'installation de module externe depuis l'application a été désactivé par l'administrator. Vous devez lui demander de supprimer le fichier %s pour permettre cette fonctionnalité. ConfFileMustContainCustom=Installer ou créer un module externe à partir de l'application nécessite de sauvegarder les fichiers du module dans le répertoire %s. Pour que ce répertoire soit reconnu par Dolibarr, vous devez paramétrer le fichier de configuration conf/conf.php en ajoutant les 2 lignes suivantes :
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='%s/custom'; @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Appuyez sur la touche CTRL+F5 ou videz le cache de votr NotSupportedByAllThemes=Fonctionne avec les thèmes natifs. Non garanti avec d'autres BackgroundColor=Couleur de fond TopMenuBackgroundColor=Couleur de fond pour le menu Haut -TopMenuDisableImages=Cacher les images du menu principal +TopMenuDisableImages=Icône ou texte dans le menu supérieur LeftMenuBackgroundColor=Couleur de fond pour le menu Gauche BackgroundTableTitleColor=Couleur de fond pour la ligne de titres des listes/tableaux BackgroundTableTitleTextColor=Couleur du texte pour la ligne de titre des tableaux @@ -1949,7 +1949,7 @@ EnterAnyCode=Ce champ contient une référence pour identifier l'enregistrement. Enter0or1=Saisir 0 ou 1  UnicodeCurrency=Saisissez ici entre accolades, la liste du numéro des octets qui représentent le symbole de la monnaie. Pour exemple: pour $, entrez [36] - pour le Real Brésilien R$ [82,36] - pour l'euro €, entrez [8364] ColorFormat=La couleur RVB au format HEX est, par exemple: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Nom de l'icône au format :
- image.png pour un fichier image dans le répertoire du thème courant
- image.png@module si le fichier est dans le répertoire /img/ d'un module
- fa-xxx pour un picto FontAwesome fa-xxx
- fonwtawesome_xxx_fa_color_size pour un picto FontAwesome fa-xxx (avec préfixe, couleur et taille définis) PositionIntoComboList=Position de la ligne dans des listes déroulantes SellTaxRate=Taux de TVA RecuperableOnly=Oui pour une TVA "Non Perçue mais Récupérable" dédiée à certains pays comme la France. Gardez la valeur à "Non" dans tous les autres cas. @@ -2020,7 +2020,7 @@ LandingPage=Page d'accueil SamePriceAlsoForSharedCompanies=Si vous utilisez un module multi-société, avec le choix «prix unique», le prix sera aussi le même pour toutes les sociétés si les produits sont partagés entre les environnements 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 ou groupes 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 "%s")
Utilisez "À la fin du mois", si, après le delta, la date doit être augmentée pour atteindre la fin du mois (+ un optionnel "%s" en jours)
Utilisez "Coutant/Suivant" pour que la date du terme de paiement soit la premier Nième jour du mois après le delta le delta est le champ "%s", N est stocké dans le champ "%s") +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 "%s")
Utilisez "À la fin du mois", si, après le delta, la date doit être augmentée pour atteindre la fin du mois (+ un optionnel "%s" en jours)
Utilisez "Courant/Suivant" pour que la date du terme de paiement soit la premier Nième jour du mois après le delta (le delta est le champ "%s", N est stocké dans le champ "%s") BaseCurrency=Devise par défaut de votre société/institution (Voir Accueil > configuration > Société/Institution) WarningNoteModuleInvoiceForFrenchLaw=Ce module %s permet d'être conforme aux lois françaises (Loi Finance 2016 par exemple). WarningNoteModulePOSForFrenchLaw=Le module %s est conforme à la législation française ( Loi Finance 2016 ) car les logs non réversibles sont automatiquement activés. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Filtre Regex pour nettoyer la valeur (COMPANY_AQUAR COMPANY_DIGITARIA_CLEAN_REGEX=Filtre de regex pour nettoyer la valeur (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Doublons non autorisés GDPRContact=Responsable de la protection des données (DPO ou contact RGPD) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Si vous stockez des données personnelles dans votre système d'information, vous pouvez nommer ici le contact responsable du règlement général sur la protection des données HelpOnTooltip=Texte d'aide à afficher dans l'info-bulle HelpOnTooltipDesc=Mettez du texte ou une clé de traduction ici pour que le texte apparaisse dans une info-bulle lorsque ce champ apparaît dans un formulaire YouCanDeleteFileOnServerWith=Vous pouvez supprimer ce fichier sur le serveur avec la ligne de commande:
%s @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Remarque: l'option d'utilisation de la taxe de vente ou de la TVA SwapSenderAndRecipientOnPDF=Inverser la position des adresses expéditeurs et destinataires sur les documents PDF FeatureSupportedOnTextFieldsOnly=Attention, fonctionnalité prise en charge sur les champs de texte et les listes déroulantes uniquement. De plus, un paramètre d'URL action=create ou action=edit doit être défini OU le nom de la page doit se terminer par 'new.php' pour déclencher cette fonctionnalité. EmailCollector=Collecteur de courrier électronique +EmailCollectors=Collecteurs d'e-mails EmailCollectorDescription=Ajoute un travail planifié et une page de configuration pour analyser régulièrement les boîtes aux lettres (à l'aide du protocole IMAP) et enregistrer les courriers électroniques reçus dans votre application, au bon endroit et/ou créer automatiquement certains enregistrements (comme des opportunités). NewEmailCollector=Nouveau collecteur d'email EMailHost=Hôte du serveur de messagerie IMAP @@ -2068,27 +2069,27 @@ EmailcollectorOperations=Opérations à effectuer par le collecteur EmailcollectorOperationsDesc=Les opérations sont exécutées de haut en bas MaxEmailCollectPerCollect=Nombre maximum d'emails collectés par collecte CollectNow=Collecter maintenant -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +ConfirmCloneEmailCollector=Voulez-vous vraiment cloner le collecteur d'e-mails %s ? DateLastCollectResult=Date de la dernière tentative de collecte DateLastcollectResultOk=Date de la dernière collecte réussie LastResult=Dernier résultat -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeaders=Ne pas inclure le contenu de l'en-tête de l'e-mail dans le contenu enregistré des e-mails collectés +EmailCollectorHideMailHeadersHelp=Lorsque cette option est activée, les en-têtes d'e-mail ne sont pas ajoutés à la fin du contenu de l'e-mail enregistré en tant qu'événement de l'agenda. EmailCollectorConfirmCollectTitle=Confirmation de la collecte Email -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +EmailCollectorConfirmCollect=Voulez-vous exécuter ce collecteur maintenant ? +EmailCollectorExampleToCollectTicketRequestsDesc=Collectez les e-mails qui correspondent à certaines règles et créez automatiquement un ticket (Module Ticket doit être activé) avec les informations de l'e-mail. Vous pouvez utiliser ce collecteur si vous fournissez une assistance par e-mail, ainsi votre demande de ticket sera automatiquement générée. Activez également Collect_Responses pour collecter les réponses de votre client directement sur la vue du ticket (vous devez répondre depuis Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Exemple de collecte de d'email pour ticket (premier message uniquement) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scannez le répertoire "Envoyés" de votre boîte mail pour retrouver les emails qui ont été envoyés en réponse à un autre email directement depuis votre logiciel de messagerie et non depuis Dolibarr. Si un tel email est trouvé, l'événement de réponse est enregistré dans Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Exemple de collecte de réponses par e-mail envoyées depuis un logiciel de messagerie externe +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collectez tous les e-mails qui sont une réponse à un e-mail envoyé depuis votre application. Un événement (le module Agenda doit être activé) avec la réponse par e-mail sera enregistré au bon endroit. Par exemple, si vous envoyez une proposition commerciale, une commande, une facture ou un message pour un ticket par email depuis l'application, et que le destinataire répond à votre email, le système captera automatiquement la réponse et l'ajoutera dans votre ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Exemple de collecte de tous les messages entrants étant des réponses aux messages envoyés depuis Dolibarr +EmailCollectorExampleToCollectLeadsDesc=Collectez les e-mails qui correspondent à certaines règles et créez automatiquement un prospect (Module Project doit être activé) avec les informations d'e-mail. Vous pouvez utiliser ce collecteur si vous souhaitez suivre votre lead à l'aide du module Project (1 lead = 1 projet), ainsi vos leads seront automatiquement générés. Si le collecteur Collect_Responses est également activé, lorsque vous envoyez un email depuis vos leads, propositions ou tout autre objet, vous pouvez également voir les réponses de vos clients ou partenaires directement sur l'application.
Remarque : Avec cet exemple initial, le titre du prospect est généré, y compris l'e-mail. Si le tiers est introuvable dans la base de données (nouveau client), le prospect sera associé au tiers avec l'ID 1. +EmailCollectorExampleToCollectLeads=Exemple de collecte de leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collectez les e-mails postulant aux offres d'emploi (le module Recrutement doit être activé). Vous pouvez compléter ce collecteur si vous souhaitez créer automatiquement une candidature pour une demande d'emploi. Remarque : Avec ce premier exemple, le titre de la candidature est généré avec l'e-mail. +EmailCollectorExampleToCollectJobCandidatures=Exemple de collecte de candidatures reçues par e-mail NoNewEmailToProcess=Aucun nouvel email (correspondants aux filtres) à traiter NothingProcessed=Aucune action faite -XEmailsDoneYActionsDone=%s e-mails qualifiés, %s e-mails traités avec succès (pour %s enregistrements/actions réalisés) +XEmailsDoneYActionsDone=%s e-mails pré-qualifiés, %s e-mails traités avec succès (pour %s enregistrement/actions effectuées) RecordEvent=Enregistrer un événement dans l'agenda (avec le type Email envoyé ou reçu) CreateLeadAndThirdParty=Créer un prospect (et un tiers si nécessaire) CreateTicketAndThirdParty=Créer un ticket (lié à un tiers si le tiers a été chargé par une opération précédente ou a été deviné à partir d'un tracker en en-tête d'email, sans tiers sinon) @@ -2112,7 +2113,7 @@ 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=Désactiver la fonctionnalité pour lier une ressource aux utilisateurs DisabledResourceLinkContact=Désactiver la fonctionnalité pour lier une ressource aux contacts/adresses -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Interdire l'utilisation d'une même ressource au même moment dans l'agenda ConfirmUnactivation=Confirmer réinitialisation du module OnMobileOnly=Sur petit écran (smartphone) uniquement DisableProspectCustomerType=Désactive le type de tiers "Prospect + Client" (les tiers seront donc "Prospect" OU "Client", mais ne peuvent être les deux). @@ -2167,6 +2168,9 @@ EmailTemplate=Modèle d'e-mail EMailsWillHaveMessageID=Les e-mails auront une étiquette 'References' correspondant à cette syntaxe PDF_SHOW_PROJECT=Afficher le projet sur le document ShowProjectLabel=Libellé du projet +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Inclure un alias dans le nom du tiers +THIRDPARTY_ALIAS=Nom du tiers - Alias du tiers +ALIAS_THIRDPARTY=Alias du tiers - Nom du tiers PDF_USE_ALSO_LANGUAGE_CODE=Si vous souhaitez que certains textes de votre PDF soient dupliqués dans 2 langues différentes dans le même PDF généré, vous devez définir ici cette deuxième langue pour que le PDF généré contienne 2 langues différentes dans la même page, celle choisie lors de la génération du PDF et celle-ci (seuls quelques modèles PDF prennent en charge cette fonction). Gardez vide pour 1 langue par PDF. PDF_USE_A=Générer document PDF avec le format PDF/A à la place du format PDF standard FafaIconSocialNetworksDesc=Entrez ici le code d'une icône FontAwesome. Si vous ne savez pas ce qu'est FontAwesome, vous pouvez utiliser la valeur générique fa-address-book. @@ -2248,18 +2252,40 @@ TemplateforBusinessCards=Modèles de cartes de visite dans différents formats InventorySetup= Configuration du module Inventaire ExportUseLowMemoryMode=Utiliser un mode mémoire faible ExportUseLowMemoryModeHelp=Utilisez le mode mémoire faible pour exécuter l'exécution du vidage (la compression se fait via un tube plutôt que dans la mémoire PHP). Cette méthode ne permet pas de vérifier que le fichier est terminé et le message d'erreur ne peut pas être signalé en cas d'échec. -ShowQuickAddLink=Show a button to quickly add an element in top right menu + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface pour déclencher un appel d'URL externe suite à un événement Dolibarr +WebhookSetup = Configuration du webhook +Settings = Paramètres +WebhookSetupPage = Page de configuration du webhook +ShowQuickAddLink=Afficher un bouton pour ajouter rapidement un élément, dans le menu en haut à droite + HashForPing=Hash utilisé pour ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +ReadOnlyMode=L'instance est-elle en mode "Lecture seule" +DEBUGBAR_USE_LOG_FILE=Utilisez le fichier dolibarr.log pour récupérer les traces +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilisez le fichier dolibarr.log pour récupérer les traces au lieu de capture live en mémoire. Cela permet de récupérer toutes les traces au lieu des seules traces du processus en cours (donc, y compris celles des pages de sous-requêtes ajax) mais rendra votre instance très très lente. Non recommandé. +FixedOrPercent=Fixe (utilisez le mot-clé 'fixed') ou pourcentage (utilisez le mot-clé 'percent') +DefaultOpportunityStatus=Statut de l'opportunité par défaut (premier statut lors de la création du prospect) + +IconAndText=Icône et texte +TextOnly=Texte seulement +IconOnlyAllTextsOnHover=Icône uniquement - Tous les textes apparaissent sous l'icône sur la barre de menu du survol de la souris +IconOnlyTextOnHover=Icône uniquement - Le texte de l'icône apparaît sous l'icône à la souris survolez l'icône +IconOnly=Icône uniquement - Texte sur l'info-bulle uniquement +INVOICE_ADD_ZATCA_QR_CODE=Afficher le code QR ZATCA sur les factures +INVOICE_ADD_ZATCA_QR_CODEMore=Certains pays arabes ont besoin de ce code QR sur leurs factures +INVOICE_ADD_SWISS_QR_CODE=Afficher la QR-facture suisse sur les factures +UrlSocialNetworksDesc=Lien url du réseau social. Utilisez {socialid} pour la partie variable qui contient l'identifiant du réseau social. +IfThisCategoryIsChildOfAnother=Si cette catégorie est un enfant d'une autre +NoName=Sans nom +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: +DoesNotWorkWithAllThemes=Ne fonctionne pas avec tous les thèmes +OauthNotAvailableForAllAndHadToBeCreatedBefore=L'authentification OAUTH2 n'est pas disponible pour tous les hôtes, de plus, un jeton avec les bonnes permissions doit avoir été créé en amont avec le module OAUTH +MAIN_MAIL_SMTPS_OAUTH_SERVICE=Service d'authentification OAUTH2 +DontForgetCreateTokenOauthMod=Un jeton avec les bonnes permissions doit avoir été créé en amont avec le module OAUTH +MAIN_MAIL_SMTPS_AUTH_TYPE=Méthode d'authentication +UsePassword=Utiliser un mot de passe +UseOauth=Utiliser un jeton d'authentification OAUTH +CIDLookupURL=Le module apporte une URL qui peut être utilisée par un outil externe pour obtenir le nom d'un tiers ou d'un contact à partir de son numéro de téléphone. L'URL à utiliser est : diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index 65e06587e88..81fb4982d95 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -45,6 +45,7 @@ CONTRACT_DELETEInDolibarr=Contrat %s supprimé PropalClosedSignedInDolibarr=Proposition %s signée PropalClosedRefusedInDolibarr=Proposition %s refusée PropalValidatedInDolibarr=Proposition %s validée +PropalBackToDraftInDolibarr=Proposition %s de retour au statut de brouillon PropalClassifiedBilledInDolibarr=Proposition %s classée payée InvoiceValidatedInDolibarr=Facture %s validée InvoiceValidatedInDolibarrFromPos=Facture %s validée depuis le Point de Vente @@ -66,6 +67,7 @@ ShipmentBackToDraftInDolibarr=Expédition %s remise au statut brouillon ShipmentDeletedInDolibarr=Expédition %s supprimée ShipmentCanceledInDolibarr=Expédition %s annulée ReceptionValidatedInDolibarr=Réception %s validée +ReceptionClassifyClosedInDolibarr=Réception %s classée fermée OrderCreatedInDolibarr=Commande %s créée OrderValidatedInDolibarr=Commande %s validée OrderDeliveredInDolibarr=Commande %s classée Livrée @@ -96,7 +98,7 @@ PRODUCT_MODIFYInDolibarr=Produit %s modifié PRODUCT_DELETEInDolibarr=Produit%ssupprimé HOLIDAY_CREATEInDolibarr=Demande de congé %s créée HOLIDAY_MODIFYInDolibarr=Demande de congé %s modifiée -HOLIDAY_APPROVEInDolibarr=Demande de congé %s approuvée +HOLIDAY_APPROVEInDolibarr=Demande de congé %s approuvée HOLIDAY_VALIDATEInDolibarr=Demande de congé %s validée HOLIDAY_DELETEInDolibarr=Demande de congé %s supprimée EXPENSE_REPORT_CREATEInDolibarr=Note de frais %s créée @@ -157,6 +159,7 @@ DateActionBegin=Date début événément ConfirmCloneEvent=Êtes-vous sûr de vouloir cloner cet événement %s ? RepeatEvent=Evénement répétitif OnceOnly=Une seule fois +EveryDay=Chaque jour EveryWeek=Chaque semaine EveryMonth=Chaque mois DayOfMonth=Jour du mois @@ -172,3 +175,4 @@ AddReminder=Créer une notification de rappel automatique pour cet événement ErrorReminderActionCommCreation=Erreur lors de la création de la notification de rappel pour cet événement BrowserPush=Notification par Popup navigateur ActiveByDefault=Activé par défaut +Until=jusqu'à diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 21163098b48..b3af3031266 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -437,6 +437,7 @@ VarAmountAllLines=Montant variable (%% tot.) - toutes les lignes identiques PaymentTypeVIR=Virement bancaire PaymentTypeShortVIR=Virement bancaire PaymentTypePRE=Ordre de prélèvement +PaymentTypePREdetails=(compte *-%s) PaymentTypeShortPRE=Ordre de prélèvement PaymentTypeLIQ=Espèce PaymentTypeShortLIQ=Espèce diff --git a/htdocs/langs/fr_FR/boxes.lang b/htdocs/langs/fr_FR/boxes.lang index 801785a4427..75c6ccb9ed9 100644 --- a/htdocs/langs/fr_FR/boxes.lang +++ b/htdocs/langs/fr_FR/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Dernières cotisations d'adhérents BoxFicheInter=Dernières interventions BoxCurrentAccounts=Balance des comptes ouverts BoxTitleMemberNextBirthdays=Anniversaires de ce mois (adhérents) -BoxTitleMembersByType=Adhérents par type +BoxTitleMembersByType=Adhérents par type et par statut BoxTitleMembersSubscriptionsByYear=Cotisations des adhérents par année BoxTitleLastRssInfos=Les %s dernières informations de %s BoxTitleLastProducts=Les %s derniers produits/services modifiés diff --git a/htdocs/langs/fr_FR/cashdesk.lang b/htdocs/langs/fr_FR/cashdesk.lang index 24d35d56a06..244718df17d 100644 --- a/htdocs/langs/fr_FR/cashdesk.lang +++ b/htdocs/langs/fr_FR/cashdesk.lang @@ -50,8 +50,8 @@ Footer=Bas de page AmountAtEndOfPeriod=Montant en fin de période (jour, mois ou année) TheoricalAmount=Montant théorique RealAmount=Montant réel -CashFence=Cash box closing -CashFenceDone=Cash box closing done for the period +CashFence=Fermeture de caisse +CashFenceDone=Clôture de caisse effectuée pour la période NbOfInvoices=Nb de factures Paymentnumpad=Type de pavé pour entrer le paiement Numberspad=Pavé numérique @@ -102,8 +102,8 @@ CashDeskGenericMaskCodes6 =
La balise {TN} est utilisée pour ajout TakeposGroupSameProduct=Regrouper les mêmes lignes de produits StartAParallelSale=Lancer une nouvelle vente en parallèle SaleStartedAt=Ventes démarrées à %s -ControlCashOpening=Open the "Control cash box" popup when opening the POS -CloseCashFence=Close cash box control +ControlCashOpening=Ouvrez la fenêtre contextuelle "Contrôle de caisse" lors de l'ouverture du point de vente +CloseCashFence=Fermeture de caisse CashReport=Rapport de caisse MainPrinterToUse=Imprimante principale à utiliser OrderPrinterToUse=Imprimante à utiliser @@ -136,3 +136,10 @@ PrintWithoutDetails=Générer sans les détails YearNotDefined=L'année n'est pas définie TakeposBarcodeRuleToInsertProduct=Règle de lecture du code barre des produits TakeposBarcodeRuleToInsertProductDesc=Règle pour extraire la référence produit + une quantité d'un code barre scanné.
Si vide (valeur par défaut), l'application utilisera le code-barres complet scanné pour trouver le produit.

Si elle est définie, la syntaxe doit être:
ref: NB + Qu: NB + QD: NB + autres: NB
où NB est le nombre de caractères à utiliser pour extraire les données du code à barres scannés avec:
  • ref : référence produit
  • qu : quantité de jeu lors de l'insertion article (unités)
  • qd: quantité de jeu lors de l'insertion article (décimaux)
  • autre : autres caractères
+HideCategories=Masquer les catégories +HideStockOnLine=Masquer le stock en ligne +ShowOnlyProductInStock=Affficher les produits en stock +ShowCategoryDescription=Afficher la description des catégories +ShowProductReference=Afficher la référence des produits +UsePriceHT= Utiliser le prix HT et non en TTC +AlreadyPrinted=Déjà imprimé diff --git a/htdocs/langs/fr_FR/categories.lang b/htdocs/langs/fr_FR/categories.lang index feabfac2d3c..5f478aabc7f 100644 --- a/htdocs/langs/fr_FR/categories.lang +++ b/htdocs/langs/fr_FR/categories.lang @@ -90,11 +90,14 @@ CategorieRecursivHelp=Si l'option est activé, quand un produit est ajouté dans AddProductServiceIntoCategory=Ajouter le produit/service suivant AddCustomerIntoCategory=Assigner cette catégorie au client AddSupplierIntoCategory=Assigner cette catégorie au fournisseur +AssignCategoryTo=Attribuer une catégorie à ShowCategory=Afficher tag/catégorie ByDefaultInList=Par défaut dans la liste ChooseCategory=Choisissez une catégorie StocksCategoriesArea=Catégories d’entrepôt +TicketsCategoriesArea=Catégories de billets ActionCommCategoriesArea=Catégories d’événements WebsitePagesCategoriesArea=Catégories des pages-conteneurs KnowledgemanagementsCategoriesArea=Catégories d'articles KM UseOrOperatorForCategories=Utiliser l'opérateur 'ou' pour les catégories +AddObjectIntoCategory=Ajouter un objet dans la catégorie diff --git a/htdocs/langs/fr_FR/companies.lang b/htdocs/langs/fr_FR/companies.lang index 889f16b3f75..e875ef168fd 100644 --- a/htdocs/langs/fr_FR/companies.lang +++ b/htdocs/langs/fr_FR/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature de tiers NatureOfContact=Nature du contact Address=Adresse State=Département / Canton +StateId=ID d'état StateCode=Code État / Province StateShort=Département Region=Région Region-State=Région - État Country=Pays CountryCode=Code pays -CountryId=Identifiant pays +CountryId=Identifiant du pays Phone=Téléphone PhoneShort=Tél. Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=Code fournisseur incorrect CustomerCodeModel=Modèle de code client SupplierCodeModel=Modèle de code fournisseur Gencod=Code-barres -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Code barre de la référence prix ##### Professional ID ##### ProfId1Short=Id. prof. 1 ProfId2Short=Id. prof. 2 @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Identifiant. prof. 1 (Registre de Commerce) ProfId2CM=Identifiant. prof. 2 (numéro de contribuable) -ProfId3CM=Identifiant. prof. 3 (Décret de création) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=Id. prof. 3 (N° Arrêté de création) +ProfId4CM=Id. prof. 4 (N° Attestation de dépôts) +ProfId5CM=Id. prof. 5 (Autres) ProfId6CM=- ProfId1ShortCM=Registre du commerce ProfId2ShortCM=Numéro de contribuable -ProfId3ShortCM=Décret de création -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=N° du décret de création +ProfId4ShortCM=Certificat de dépôt n° ProfId5ShortCM=Autres ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Créer adresse SupplierCategory=Catégorie du fournisseur JuridicalStatus200=Indépendant DeleteFile=Suppression d'un fichier -ConfirmDeleteFile=Êtes-vous sûr de vouloir supprimer ce fichier ? +ConfirmDeleteFile=Êtes-vous sûr de vouloir supprimer ce fichier %s? AllocateCommercial=Affecter un commercial Organization=Organisme FiscalYearInformation=Exercice fiscal diff --git a/htdocs/langs/fr_FR/compta.lang b/htdocs/langs/fr_FR/compta.lang index 178efeee8f3..ba43bdcd74e 100644 --- a/htdocs/langs/fr_FR/compta.lang +++ b/htdocs/langs/fr_FR/compta.lang @@ -300,3 +300,4 @@ InvoiceToPay15Days=A payer (d'ici 15 à 30 jours) InvoiceToPay30Days=A payer (dans plus de 30 jours) ConfirmPreselectAccount=Présélectionner le code comptable ConfirmPreselectAccountQuestion=Êtes-vous sûr de vouloir présélectionner les %s lignes sélectionnées avec ce code comptable ? +AmountPaidMustMatchAmountOfDownPayment=Le montant payé doit correspondre au montant de l'acompte diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index 234dc56941c..f043c5b5afc 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Le javascript ne doit pas être désactivé pour qu ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre ErrorContactEMail=Une erreur technique est apparue. Merci de contacter l'administrateur à l'email suivant %s en lui indiquant le code erreur %s dans votre message ou mieux en fournissant une copie d'écran de cette page. ErrorWrongValueForField=Champ %s: '%s' ne respecte pas la règle %s +ErrorHtmlInjectionForField=Champ %s : La valeur ' %s ' contient une donnée malveillante non autorisée ErrorFieldValueNotIn=Champ %s: '%s' n'est pas une valeur disponible dans le champ %s de la table %s ErrorFieldRefNotIn=Champ %s: '%s' n'est pas une référence existante comme %s ErrorsOnXLines=Erreurs sur %s enregistrement(s) source @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Vous devez d’abord configurer votre p ErrorFailedToFindEmailTemplate=Aucun gabarit trouvé avec le code %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durée non définie sur le service. Pas moyen de calculer le prix horaire. ErrorActionCommPropertyUserowneridNotDefined=Le propriétaire de l'utilisateur est requis -ErrorActionCommBadType=Le type d'événement sélectionné (id: %n, code: %s) n'existe pas dans le dictionnaire des types d'événement +ErrorActionCommBadType=Le type d'événement sélectionné (id : %s, code : %s) n'existe pas dans le dictionnaire des types d'événements CheckVersionFail=Échec de la vérification de version ErrorWrongFileName=Le nom du fichier ne peut pas contenir __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Pas dans le dictionnaire des conditions de paiement, veuillez modifier. @@ -283,12 +284,18 @@ ErrorAttributeIsUsedIntoProduct=Cet attribut est utilisé dans une ou plusieurs ErrorAttributeValueIsUsedIntoProduct=Cette valeur d'attribut est utilisée dans une ou plusieurs variantes de produit ErrorPaymentInBothCurrency=Erreur, tous les montants doivent être entrés dans la même colonne. ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Vous essayez de payer une facture en monnaie %s depuis un compte en %s -ErrorAjaxRequestFailed=La requête a échoué +ErrorInvoiceLoadThirdParty=Impossible de charger l'objet tiers pour la facture "%s" +ErrorInvoiceLoadThirdPartyKey=Clé tiers "%s" non définie pour la facture "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Supprimer une ligne n'est pas autorisée par l'état actuel de l'objet +ErrorAjaxRequestFailed=Demande échouée +ErrorThirpdartyOrMemberidIsMandatory=Définir un tiers ou un adhérent dans le partenariat est obligatoire +ErrorFailedToWriteInTempDirectory=Impossible d'écrire dans le répertoire temporaire +ErrorQuantityIsLimitedTo=La quantité est limitée à %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Votre paramètre PHP upload_max_filesize (%s) est supérieur au paramètre PHP post_max_size (%s). Ceci n'est pas une configuration cohérente. WarningPasswordSetWithNoAccount=Un mot de passe a été fixé pour cet adhérent. Cependant, aucun compte d'utilisateur n'a été créé. Donc, ce mot de passe est stocké, mais ne peut être utilisé pour accéder à Dolibarr. Il peut être utilisé par un module/interface externe, mais si vous n'avez pas besoin de définir ni login ni mot de passe pour un adhérent, vous pouvez désactiver l'option «Gérer un login pour chaque adhérent" depuis la configuration du module Adhérents. Si vous avez besoin de gérer un login, mais pas de mot de passe, vous pouvez laisser ce champ vide pour éviter cet avertissement. Remarque: L'email peut également être utilisé comme login si l'adhérent est lié à un utilisateur. -WarningMandatorySetupNotComplete=Cliquez ici pour configurer les paramètres obligatoires +WarningMandatorySetupNotComplete=Cliquez ici pour configurer les paramètres principaux WarningEnableYourModulesApplications=Cliquez ici pour activer vos modules et applications WarningSafeModeOnCheckExecDir=Attention, l'option PHP safe_mode est active, la commande doit dont être dans un répertoire déclaré dans le paramètre php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Un marque-page avec ce titre ou cette destination (URL) existe déjà. @@ -318,6 +325,7 @@ WarningCreateSubAccounts=Attention, vous ne pouvez pas créer directement un com WarningAvailableOnlyForHTTPSServers=Disponible uniquement si une connexion sécurisée HTTPS est utilisée WarningModuleXDisabledSoYouMayMissEventHere=Le module %s n’a pas été activé. Par conséquent, il se peut que vous manquiez beaucoup d’événements ici. WarningPaypalPaymentNotCompatibleWithStrict=La valeur 'Strict' fait que les fonctionnalités de paiement en ligne ne fonctionnent pas correctement. Utilisez plutôt 'Lax'. +WarningThemeForcedTo=Attention, le choix du thème a été forcé à %s par la constante cachée MAIN_FORCETHEME # Validate RequireValidValue = Valeur non valide diff --git a/htdocs/langs/fr_FR/eventorganization.lang b/htdocs/langs/fr_FR/eventorganization.lang index 496afa7d9e2..1481d54b46c 100644 --- a/htdocs/langs/fr_FR/eventorganization.lang +++ b/htdocs/langs/fr_FR/eventorganization.lang @@ -32,12 +32,13 @@ PaymentEvent=Paiement de l'événement # Admin page # NewRegistration=Inscription -EventOrganizationSetup=Configuration de l’organisation de l’événement +EventOrganizationSetup=Configuration de l’Organisation d’événements EventOrganization=Organisation d'événements Settings=Paramètres -EventOrganizationSetupPage = Page de configuration de l’organisation de l’événement +EventOrganizationSetupPage = Page de configuration de l’Organisation d’événements EVENTORGANIZATION_TASK_LABEL = Libellé des tâches à créer automatiquement lors de la validation du projet -EVENTORGANIZATION_TASK_LABELTooltip = Lorsque vous validez un événement organisé, certaines tâches peuvent être automatiquement créées dans le projet

Par exemple :
Envoyer un appel de conférence
Envoyer un appel pour le stand
Recevoir un appel de conférences
Recevoir un appel de stand
Ouvrir les inscriptions aux événements pour les participants
Envoyer un rappel de l’événement aux conférenciers
Envoyer un rappel de l’événement à l’animateur du stand
Envoyer un rappel de l’événement aux participants +EVENTORGANIZATION_TASK_LABELTooltip = Lorsque vous validez un événement à organiser, certaines tâches peuvent être créées automatiquement dans le projet

Par exemple:
Envoyer Appel à conférences
Envoyer Appel à Kiosques
Valider les suggestions des conférences
Valider les demandes de stand
Ouvrir les inscriptions aux participants
Envoyer un rappel de l'événement aux conférenciers
Envoyer un rappel de l'événement aux hôtes de stands
Envoyer un rappel de l'événement aux participants +EVENTORGANIZATION_TASK_LABELTooltip2=Laissez vide si vous n'avez pas besoin de créer des tâches automatiquement. EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Catégorie à ajouter à des tiers automatiquement créée lorsque quelqu’un suggère une conférence EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Catégorie à ajouter à des tiers automatiquement créée lorsque quelqu’un suggère un stand EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Modèle de courriel à envoyer après avoir reçu une suggestion de conférence. @@ -59,6 +60,8 @@ ConferenceOrBoothTab = Conférence ou stand AmountPaid = Montant payé DateOfRegistration = Date d'inscription ConferenceOrBoothAttendee = Participant à la conférence ou au stand +ApplicantOrVisitor=Demandeur ou visiteur +Speaker=Conférencier # # Template Mail @@ -138,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Le règlement de votre partici OrganizationEventBulkMailToAttendees=Ceci est une rappel de votre participation à l'événement en tant que participant OrganizationEventBulkMailToSpeakers=Ceci est un rappel de votre participation à l'événement en tant que conférencier OrganizationEventLinkToThirdParty=Lier à un tiers (client, fournisseur ou partenaire) +OrganizationEvenLabelName=Nom public de la conférence ou du stand NewSuggestionOfBooth=Proposition de stand NewSuggestionOfConference=Candidature à une conférence @@ -165,3 +169,4 @@ EmailCompanyForInvoice=E-mail de la société pour la facturation (si différent ErrorSeveralCompaniesWithEmailContactUs=Plusieurs entreprises avec cet email ont été trouvées donc nous ne pouvons pas valider automatiquement votre inscription. Veuillez nous contacter à %s pour une validation manuelle ErrorSeveralCompaniesWithNameContactUs=Plusieurs sociétés portant ce nom ont été trouvées, nous ne pouvons donc pas valider automatiquement votre inscription. Veuillez nous contacter à %s pour une validation manuelle NoPublicActionsAllowedForThisEvent=Aucune action publique n'est ouverte au public pour cet événement +MaxNbOfAttendees=Nombre maximum de participants diff --git a/htdocs/langs/fr_FR/exports.lang b/htdocs/langs/fr_FR/exports.lang index 731d05f14ea..6460fa7e5b1 100644 --- a/htdocs/langs/fr_FR/exports.lang +++ b/htdocs/langs/fr_FR/exports.lang @@ -18,6 +18,7 @@ ExportableFields=Champs exportables ExportedFields=Champs à exporter ImportModelName=Nom du profil d'import ImportModelSaved=Profil d'export sauvegardé sous le nom %s. +ImportProfile=Profil d'import DatasetToExport=Lot de données à exporter DatasetToImport=Importer fichier dans la table de ChooseFieldsOrdersAndTitle=Choisissez l'ordre des champs… @@ -53,8 +54,9 @@ TypeOfLineServiceOrProduct=Type de ligne (0=produit, 1=service) FileWithDataToImport=Fichier contenant les données à importer FileToImport=Fichier source à importer FileMustHaveOneOfFollowingFormat=Le fichier à importer doit avoir un des formats suivants -DownloadEmptyExample=Download a template file with examples and information on fields you can import -StarAreMandatory=Into the template file, all fields with a * are mandatory fields +DownloadEmptyExampleShort=Télécharger un fichier d'exemple +DownloadEmptyExample=Téléchargez un fichier modèle avec des exemples et des informations sur les champs que vous pouvez importer +StarAreMandatory=Dans le fichier modèle, tous les champs avec un * sont des champs obligatoires ChooseFormatOfFileToImport=Choisissez le format de fichier à importer en cliquant sur le pictogramme %s pour le sélectionner… ChooseFileToImport=Ajoutez le fichier à importer puis cliquez sur le pictogramme %s pour le sélectionner comme fichier source d'import… SourceFileFormat=Format du fichier source @@ -82,7 +84,7 @@ SelectFormat=Choisir ce format de fichier import RunImportFile=Importer les données NowClickToRunTheImport=Vérifiez le résultat de la simulation. Corriger les erreurs et retester.
Si tout est bon, lancez l'import définitif en base. DataLoadedWithId=Toutes les données seront chargées avec l'id d'importation suivant: %s pour permettre une recherche sur ce lot de donnée en cas de découverte de problèmes futurs. -ErrorMissingMandatoryValue=Donnée obligatoire non renseignée dans le fichier source, champ numéro %s. +ErrorMissingMandatoryValue=Les données obligatoires sont vides dans le fichier source dans la colonne %s. TooMuchErrors=Il y a encore %s autres lignes en erreur mais leur affichage a été limité. TooMuchWarnings=Il y a encore %s autres lignes en avertissement mais leur affichage a été limité. EmptyLine=Ligne vide (sera ignorée) @@ -92,9 +94,9 @@ YouCanUseImportIdToFindRecord=Vous pourrez retrouver les enregistrements issus d NbOfLinesOK=Nombre de lignes sans erreur ni avertissement : %s. NbOfLinesImported=Nombre de lignes importées avec succès : %s. DataComeFromNoWhere=La valeur à insérer n'est issue d'aucun champ du fichier source. -DataComeFromFileFieldNb=La valeur à insérer sera issue du champ numéro %s du fichier source. -DataComeFromIdFoundFromRef=La valeur issue du champ numéro %s du fichier source sera utilisée pour trouver l'identifiant de l'objet père à utiliser (L'objet %s ayant la réf. issue du fichier source doit donc exister dans Dolibarr). -DataComeFromIdFoundFromCodeId=Le code issu du champ numéro %s du fichier source sera utilisée pour trouver l'id de l'objet père à utiliser (Le code issue du fichier source doit donc exister dans le dictionnaire %s). Notons que si vous connaissez cet id, vous pouvez l'utiliser dans le fichier source au lieu du code. L'import fonctionnera dans les 2 cas. +DataComeFromFileFieldNb=La valeur à insérer provient de la colonne %s dans le fichier source. +DataComeFromIdFoundFromRef=La valeur provenant de la colonne %s du fichier source sera utilisée pour trouver l'identifiant de l'objet parent à utiliser (donc l'objet %s qui a la référence du fichier source doit exister dans la base de données). +DataComeFromIdFoundFromCodeId=Le code provenant de la colonne %s du fichier source sera utilisé pour trouver l'id de l'objet parent à utiliser (donc le code du fichier source doit exister dans le dictionnaire %s ). Notez que si vous connaissez l'identifiant, vous pouvez également l'utiliser dans le fichier source à la place du code. L'importation devrait fonctionner dans les deux cas. DataIsInsertedInto=La donnée issue du fichier source sera insérée dans le champ suivant: DataIDSourceIsInsertedInto=L'identifiant de l'objet père, retrouvé à partir de la donnée dans le fichier source, sera inséré dans le champ suivant : DataCodeIDSourceIsInsertedInto=L'identifiant de la ligne père, retrouvé à partir du code, sera inséré dans le champ suivant : @@ -135,6 +137,9 @@ NbInsert=Nombre de lignes insérées: %s NbUpdate=Nombre de lignes mises à jour: %s MultipleRecordFoundWithTheseFilters=Plusieurs enregistrements ont été trouvés avec ces filtres: %s StocksWithBatch=Stocks et entrepôts des produits avec numéro de lot/série -WarningFirstImportedLine=The first line(s) will not be imported with the current selection -NotUsedFields=Fields of database not used -SelectImportFieldsSource = Choose the source file fields you want to import and their target field in database by choosing the fields in each select boxes, or select a predefined import profile: +WarningFirstImportedLine=La ou les premières lignes ne seront pas importées avec la sélection actuelle +NotUsedFields=Champs de la base de données non utilisés +SelectImportFieldsSource = Choisissez les champs du fichier source que vous souhaitez importer et leur champ cible dans la base de données en choisissant les champs dans chaque zone de sélection, ou sélectionnez un profil d'importation prédéfini : +MandatoryTargetFieldsNotMapped=Certains champs cibles obligatoires ne sont pas mis en correspondance +AllTargetMandatoryFieldsAreMapped=Tous les champs cibles qui ont besoin d'une valeur obligatoire sont affectés. +ResultOfSimulationNoError=Résultat de la simulation : Aucune erreur diff --git a/htdocs/langs/fr_FR/externalsite.lang b/htdocs/langs/fr_FR/externalsite.lang deleted file mode 100644 index 04f3ebd8fc8..00000000000 --- a/htdocs/langs/fr_FR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configuration du lien vers le site externe -ExternalSiteURL=URL du site externe du contenu iFrame HTML -ExternalSiteModuleNotComplete=La configuration du module "Site externe" est incomplète. -ExampleMyMenuEntry=Mon entrée de menu diff --git a/htdocs/langs/fr_FR/ftp.lang b/htdocs/langs/fr_FR/ftp.lang deleted file mode 100644 index b28f7f57e03..00000000000 --- a/htdocs/langs/fr_FR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuration du module Client FTP -NewFTPClient=Nouvelle configuration de connexion FTP -FTPArea=Espace FTP -FTPAreaDesc=Cet écran vous présente une vue de serveur FTP -SetupOfFTPClientModuleNotComplete=La configuration du module Client FTP semble incomplète -FTPFeatureNotSupportedByYourPHP=Votre PHP ne prend pas en charge les fonctions FTP -FailedToConnectToFTPServer=Échec de connexion au serveur FTP (serveur: %s, port %s) -FailedToConnectToFTPServerWithCredentials=Échec de connexion avec l'identifiant/mot de passe FTP configuré -FTPFailedToRemoveFile=Échec suppression fichier %s. -FTPFailedToRemoveDir=Échec suppression répertoire %s (Vérifiez les permissions et que le répertoire soit vide). -FTPPassiveMode=Mode passif -ChooseAFTPEntryIntoMenu=Choisissez une entrée FTP dans le menu... -FailedToGetFile=Echec à la récupération du fichier %s diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index 061eb3b5c77..c6671f9f6a3 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -134,6 +134,6 @@ HolidaysToApprove=Vacances à approuver NobodyHasPermissionToValidateHolidays=Aucun utilisateur ne dispose des permissions pour valider les demandes de congés HolidayBalanceMonthlyUpdate=Mise à jour mensuelle du solde des congés XIsAUsualNonWorkingDay=%s est généralement un jour NON ouvrable -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative +BlockHolidayIfNegative=Bloqué lorsque le solde est négatif +LeaveRequestCreationBlockedBecauseBalanceIsNegative=La création de cette demande de congé est bloquée car votre solde est négatif ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=La demande de congé %s doit être brouillon, annulée ou refusée pour être supprimée diff --git a/htdocs/langs/fr_FR/hrm.lang b/htdocs/langs/fr_FR/hrm.lang index c812afa1fc9..62b5d2126b8 100644 --- a/htdocs/langs/fr_FR/hrm.lang +++ b/htdocs/langs/fr_FR/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Etablissement ouvert CloseEtablishment=Etablissement fermé # Dictionary DictionaryPublicHolidays=Congés - jours fériés -DictionaryDepartment=GRH - Liste des départements +DictionaryDepartment=HRM - Unité organisationnelle DictionaryFunction=GRH - Liste des fonctions # Module Employees=Salariés @@ -88,3 +88,5 @@ DeleteSkill = Compétence supprimée SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Besoin de déplacements professionnels +NoDescription=Pas de description diff --git a/htdocs/langs/fr_FR/install.lang b/htdocs/langs/fr_FR/install.lang index 5c926a4b5da..5e520547352 100644 --- a/htdocs/langs/fr_FR/install.lang +++ b/htdocs/langs/fr_FR/install.lang @@ -4,12 +4,12 @@ MiscellaneousChecks=Vérification des prérequis ConfFileExists=Le fichier de configuration %s existe. ConfFileDoesNotExistsAndCouldNotBeCreated=Le fichier de configuration %s n'existe pas et n'a pu être créé ! ConfFileCouldBeCreated=Le fichier de configuration %s a pu être créé. -ConfFileIsNotWritable=Le fichier %s n'est pas modifiable. Pour une première installation, modifiez ses permissions. Le serveur Web doit avoir le droit d'écrire dans ce fichier le temps de la configuration ("chmod 666" par exemple sur un OS compatible Unix). +ConfFileIsNotWritable=Le fichier de configuration %s n'est pas modifiable. Pour une première installation, votre serveur web doit avoir le droit d'écrire dans ce fichier le temps de la configuration ("chmod 666" par exemple sur un OS compatible Unix). ConfFileIsWritable=Le fichier %s est modifiable. ConfFileMustBeAFileNotADir=Le fichier de configuration %s doit être un fichier, pas un répertoire. ConfFileReload=Rechargement des paramètres depuis le fichier de configuration. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. -PHPSupportPOSTGETOk=Ce PHP prend bien en charge les variables POST et GET. +NoReadableConfFileSoStartInstall=Le fichier de configuration conf/conf.php n'existe pas ou n'est pas lisible. Le processus d'installation va être lancé pour essayer de l'initialiser. +PHPSupportPOSTGETOk=Ce PHP prend en charge les variables POST et GET. PHPSupportPOSTGETKo=Il est possible que votre configuration PHP ne supporte pas les variables POST et / ou GET. Vérifiez le paramètre variables_order dans le fichier php.ini. PHPSupportSessions=Ce PHP prend en charge les sessions. PHPSupport=Ce PHP prend en charge les fonctions %s. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Vous avez peut-être saisi une mauvaise valeur pour ErrorFailedToCreateDatabase=Échec de la création de la base '%s'. ErrorFailedToConnectToDatabase=Échec de connexion à la base '%s'. ErrorDatabaseVersionTooLow=Version de base de donnée (%s) trop ancienne. La version %s ou supérieure est requise. -ErrorPHPVersionTooLow=Version de PHP trop ancienne. La version %s est requise. +ErrorPHPVersionTooLow=Version PHP trop ancienne. La version %s ou supérieure est requise. +ErrorPHPVersionTooHigh=Version PHP trop élevée. La version %s ou inférieure est requise. ErrorConnectedButDatabaseNotFound=Connexion au serveur réussie mais base '%s' introuvable. ErrorDatabaseAlreadyExists=La base de données '%s' existe déjà. IfDatabaseNotExistsGoBackAndUncheckCreate=Si la base n'existe pas, revenez en arrière et cochez l'option "Créer la base de données". diff --git a/htdocs/langs/fr_FR/knowledgemanagement.lang b/htdocs/langs/fr_FR/knowledgemanagement.lang index 28d69785450..e11d8815174 100644 --- a/htdocs/langs/fr_FR/knowledgemanagement.lang +++ b/htdocs/langs/fr_FR/knowledgemanagement.lang @@ -45,8 +45,8 @@ ValidateReply = Valider la réponse KnowledgeRecords = Articles KnowledgeRecord = Article KnowledgeRecordExtraFields = Atribut supplémentaires (articles) -GroupOfTicket=Groupe de tickets -YouCanLinkArticleToATicketCategory=Vous pouvez lier un article à un groupe de tickets (ainsi l'article sera proposé lors de la qualification de nouveaux tickets) +GroupOfTicket=Catégorisation de tickets +YouCanLinkArticleToATicketCategory=Vous pouvez lier l'article à un groupe de tickets (ainsi l'article sera mis en évidence sur tous les tickets de ce groupe) SuggestedForTicketsInGroup=Suggéré pour les tickets lorsque le groupe est SetObsolete=Définir comme obsolète diff --git a/htdocs/langs/fr_FR/languages.lang b/htdocs/langs/fr_FR/languages.lang index 75465b9118f..f2e15588719 100644 --- a/htdocs/langs/fr_FR/languages.lang +++ b/htdocs/langs/fr_FR/languages.lang @@ -3,6 +3,7 @@ Language_am_ET=Ethiopien Language_ar_AR=Arabe Language_ar_DZ=Arabe (Algérie) Language_ar_EG=Arabe (Egypte) +Language_ar_JO=Arabe (Jordanie) Language_ar_MA=Arabe (Maroc) Language_ar_SA=Arabe Language_ar_TN=Arabe (Tunisie) @@ -12,9 +13,11 @@ Language_az_AZ=Azerbaïdjanais Language_bn_BD=Bengalais Language_bn_IN=Bengali (Inde) Language_bg_BG=Bulgare +Language_bo_CN=Tibétain Language_bs_BA=Bosniaque Language_ca_ES=Catalan Language_cs_CZ=Tcheque +Language_cy_GB=Gallois Language_da_DA=Danois Language_da_DK=Danois Language_de_DE=Allemand @@ -22,6 +25,7 @@ Language_de_AT=Allemand (Autriche) Language_de_CH=Allemand (Suisse) Language_el_GR=Grèque Language_el_CY=Grec (Chypre) +Language_en_AE=Anglais (EAU) Language_en_AU=Anglais (Australie) Language_en_CA=Anglais (Canada) Language_en_GB=Anglais (Royaume-Uni) @@ -36,6 +40,7 @@ Language_es_AR=Espagnol (Argentine) Language_es_BO=Espagnol (Bolivie) Language_es_CL=Espagnol (Chili) Language_es_CO=Espagnol (Colombie) +Language_es_CR=Espagnol (Costa Rica) Language_es_DO=Espagnol (République dominicaine) Language_es_EC=Espagnol (Équateur) Language_es_GT=Espagnol (Guatemala) @@ -83,18 +88,21 @@ Language_lt_LT=Lituanien Language_lv_LV=Léton Language_mk_MK=Macédonien Language_mn_MN=Mongol +Language_my_MM=Birman Language_nb_NO=Norvégien (Bokmal) Language_ne_NP=Népalais Language_nl_BE=Néerlandais (Belgique) Language_nl_NL=Néerlandais Language_pl_PL=Polonais Language_pt_AO=Portugais (Angola) +Language_pt_MZ=Portugais (Mozambique) Language_pt_BR=Portugais (Brésil) Language_pt_PT=Portugais Language_ro_MD=Roumain (Moldavie) Language_ro_RO=Roumain Language_ru_RU=Russe Language_ru_UA=Russe (Ukraine) +Language_ta_IN=Tamoul Language_tg_TJ=Tajik Language_tr_TR=Turque Language_sl_SI=Slovène @@ -106,6 +114,7 @@ Language_sr_RS=Serbe Language_sw_SW=Kiswahili Language_th_TH=Thaï Language_uk_UA=Ukrainien +Language_ur_PK=Ourdou Language_uz_UZ=Ouzbek Language_vi_VN=Vietnamien Language_zh_CN=Chinois diff --git a/htdocs/langs/fr_FR/loan.lang b/htdocs/langs/fr_FR/loan.lang index 29f99d9d464..64791da1eaf 100644 --- a/htdocs/langs/fr_FR/loan.lang +++ b/htdocs/langs/fr_FR/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Echéancier InterestAmount=Intérêt CapitalRemain=Capital restant TermPaidAllreadyPaid = Ce terme est déjà payé -CantUseScheduleWithLoanStartedToPaid = Impossible d'utiliser l'échéancier sur un prêt commencé à être payé +CantUseScheduleWithLoanStartedToPaid = Impossible de générer un échéancier pour un prêt avec un paiement commencé CantModifyInterestIfScheduleIsUsed = Vous ne pouvez pas modifier l'intérêt si vous utilisez le calendrier # Admin ConfigLoan=Configuration du module Emprunt diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index e65962d1ffd..bac26e86f73 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=Est une réponse à un e-mail initial RecordCreatedByEmailCollector=Enregistrement créé par le Collecteur d'e-mails %s depuis l'email %s DefaultBlacklistMailingStatus=Valeur par défaut du champ '%s' lors de la création d'un nouveau contact DefaultStatusEmptyMandatory=Vide mais obligatoire +WarningLimitSendByDay=ATTENTION : La configuration ou le contrat de votre instance limite votre nombre d'e-mails par jour à %s . Essayer d'en envoyer plus peut entraîner le ralentissement ou la suspension de votre instance. Veuillez contacter votre support si vous avez besoin d'un quota plus élevé. diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 41b6188e16e..6d852468492 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -621,7 +627,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Fichiers et documents joints JoinMainDoc=Joindre le document principal -JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found +JoinMainDocOrLastGenerated=Envoyer le document principal ou le dernier généré s'il n'est pas trouvé DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -712,6 +718,7 @@ FeatureDisabled=Fonction désactivée MoveBox=Déplacer le widget Offered=Offert NotEnoughPermissions=Vous n'avez pas les permissions pour cette action +UserNotInHierachy=Cette action est réservée aux superviseurs de cet utilisateur SessionName=Nom session Method=Méthode Receive=Réceptionner @@ -801,6 +808,7 @@ URLPhoto=URL de la photo/logo SetLinkToAnotherThirdParty=Lier vers un autre tiers LinkTo=Lier à LinkToProposal=Lier à une proposition commerciale +LinkToExpedition=Lier à une expédition LinkToOrder=Lier à une commande LinkToInvoice=Lier à une facture LinkToTemplateInvoice=Lien vers le modèle de facture @@ -1176,4 +1184,7 @@ CommercialsAffected=Commercial affecté au tiers CommercialAffected=Commercial affecté au tiers YourMessage=Votre message YourMessageHasBeenReceived=Votre message a été reçu. Nous vous répondrons ou vous contacterons dans les plus brefs délais. -UrlToCheck=Url to check +UrlToCheck=URL à vérifier +Automation=Automatisation +CreatedByEmailCollector=Créé par Collecteur d'e-mails +CreatedByPublicPortal=Créé à partir du portail public diff --git a/htdocs/langs/fr_FR/members.lang b/htdocs/langs/fr_FR/members.lang index a6f805daca6..d2d9de5e682 100644 --- a/htdocs/langs/fr_FR/members.lang +++ b/htdocs/langs/fr_FR/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Un autre adhérent (nom: %s, i ErrorUserPermissionAllowsToLinksToItselfOnly=Pour des raisons de sécurité, il faut posséder les droits de modification de tous les utilisateurs pour pouvoir lier un adhérent à un utilisateur autre que vous même. SetLinkToUser=Lier à un utilisateur Dolibarr SetLinkToThirdParty=Lier à un tiers Dolibarr -MembersCards=Generation of cards for members +MembersCards=Génération de cartes pour les membres MembersList=Liste des adhérents MembersListToValid=Liste des adhérents brouillons (à valider) MembersListValid=Liste des adhérents valides @@ -35,7 +35,8 @@ DateEndSubscription=Date fin adhésion EndSubscription=Fin adhésion SubscriptionId=Id adhésion WithoutSubscription=Sans adhésion -MemberId=Id adhérent +MemberId=ID adhérent +MemberRef=Réf adhérent NewMember=Nouvel adhérent MemberType=Type d'adhérent MemberTypeId=Id type adhérent @@ -163,7 +164,7 @@ MoreActionsOnSubscription=Action complémentaire proposée par défaut lors de l 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=Generation of business cards or address sheets +LinkToGeneratedPages=Génération de cartes de visite ou de feuilles 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. DocForAllMembersCards=Génération de cartes pour tous les adhérents DocForOneMemberCards=Génération de cartes pour un adhérent particulier @@ -198,7 +199,14 @@ NbOfSubscriptions=Nombre de cotisations AmountOfSubscriptions=Montant des cotisations TurnoverOrBudget=Chiffre affaire (pour société) ou Budget (asso ou collectivité) DefaultAmount=Montant par défaut de la cotisation -CanEditAmount=Le visiteur peut modifier / choisir le montant de sa cotisation +CanEditAmount=Le visiteur peut modifier / choisir le montant de sa cotisation quel que soit le type d'adhésion +AmountIsLowerToMinimumNotice=sur un dû total de %s +AnyAmountWithAdvisedAmount=Montant libre avec un montant recommandé de %s %s +AnyAmountWithoutAdvisedAmount=Montant libre +CanEditAmountShortForValues=conseillé, montant libre +MembershipDuration=Durée +GetMembershipButtonLabel=Adhérer +CanEditAmountShort=Montant libre MEMBER_NEWFORM_PAYONLINE=Rediriger sur la page intégrée de paiement en ligne ByProperties=Par nature MembersStatisticsByProperties=Statistiques des adhérents par nature @@ -218,3 +226,5 @@ XExternalUserCreated=%s utilisateur(s) externe(s) créé(s) ForceMemberNature=Forcer la nature de l'adhérent (personne physique ou morale) CreateDolibarrLoginDesc=La création d'un login utilisateur pour les membres leur permet de se connecter à l'application. En fonction des autorisations accordées, ils pourront par exemple consulter ou modifier eux-mêmes leur dossier. CreateDolibarrThirdPartyDesc=Un tiers est l'entité juridique qui sera utilisée sur la facture si vous décidez de générer une facture pour chaque cotisation. Vous pourrez le créer plus tard au cours du processus d'enregistrement de la cotisation. +MemberFirstname=Prénom du membre +MemberLastname=Nom de famille du membre diff --git a/htdocs/langs/fr_FR/modulebuilder.lang b/htdocs/langs/fr_FR/modulebuilder.lang index c7781d948ce..d29c9f2164b 100644 --- a/htdocs/langs/fr_FR/modulebuilder.lang +++ b/htdocs/langs/fr_FR/modulebuilder.lang @@ -1,17 +1,17 @@ # Dolibarr language file - Source file is en_US - loan ModuleBuilderDesc=Cet outil ne doit être utilisé que par des utilisateurs ou des développeurs expérimentés. Il fournit des utilitaires pour construire ou éditer votre propre module. La documentation pour le développement manuel alternatif est ici . -EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +EnterNameOfModuleDesc=Entrez le nom du module/application à créer sans espaces. Utilisez des majuscules pour séparer les mots (Par exemple: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Entrez le nom de l'objet à créer sans espaces. Utilisez des majuscules pour séparer les mots (par exemple: MyObject, Student, Teacher...). Le fichier de classe CRUD, mais aussi le fichier d'API, les pages pour lister/ajouter/modifier/supprimer l'objet et les fichiers SQL seront générés. +EnterNameOfDictionaryDesc=Entrez le nom du dictionnaire à créer sans espaces. Utilisez des majuscules pour séparer les mots (Par exemple : MyDico...). Le fichier de classe, mais aussi le fichier SQL seront générés. ModuleBuilderDesc2=Chemin ou les modules sont générés/modifiés (premier répertoire pour les modules externes défini dans %s):%s ModuleBuilderDesc3=Modules générés/éditables trouvés : %s ModuleBuilderDesc4=Un module est détecté comme 'modifiable' quand le fichier %s existe à la racine du répertoire du module NewModule=Nouveau module NewObjectInModulebuilder=Nouvel objet -NewDictionary=New dictionary +NewDictionary=Nouveau dictionnaire ModuleKey=Clé du module ObjectKey=Clé de l'objet -DicKey=Dictionary key +DicKey=Clé du dictionnaire ModuleInitialized=Module initialisé FilesForObjectInitialized=Fichiers pour le nouvel objet '%s' initialisés FilesForObjectUpdated=Les fichiers pour l'objet '%s' ont été mis à jour ( fichiers .sql et .class.php ) @@ -55,7 +55,7 @@ LanguageFile=Fichier langue ObjectProperties=Propriétés de l'objet ConfirmDeleteProperty=Voulez-vous vraiment supprimer la propriété %s ? Cela modifiera le code de la classe PHP, mais supprimera également la colonne de la définition de la table de l'objet. NotNull=Non NULL -NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) +NotNullDesc=1=Définir la base de données sur NOT NULL, 0=Autoriser les valeurs nulles, -1=Autoriser les valeurs nulles en forçant la valeur à NULL si vide ('' ou 0) SearchAll=Utilisé par la "recherche globale" DatabaseIndex=Index en base FileAlreadyExists=Le fichier %s existe déjà @@ -130,9 +130,9 @@ UseSpecificEditorURL = Utiliser une URL d'éditeur spécifique UseSpecificFamily = Utiliser une famille spécifique UseSpecificAuthor = Utiliser un auteur spécifique UseSpecificVersion = Utiliser une version initiale spécifique -IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules -IncludeDocGeneration=I want to generate some documents from templates for the object +IncludeRefGeneration=La référence de l'objet doit être générée automatiquement par des règles de numérotation personnalisées +IncludeRefGenerationHelp=Cochez cette case si vous souhaitez inclure du code pour gérer automatiquement la génération de la référence à l'aide de règles de numérotation personnalisées +IncludeDocGeneration=Je souhaite générer des documents à partir de modèles pour l'objet IncludeDocGenerationHelp=Si vous cochez cette case, du code sera généré pour ajouter une section "Générer un document" sur la fiche de l'objet. ShowOnCombobox=Afficher la valeur dans la liste déroulante KeyForTooltip=Clé pour l'info-bulle @@ -147,9 +147,10 @@ AsciiToPdfConverter=Convertisseur Ascii en PDF TableNotEmptyDropCanceled=La table n’est pas vide. La suppression a été annulée. ModuleBuilderNotAllowed=Le module builder est activé mais son accès n'est pas autorisé pour votre utilisateur ImportExportProfiles=Profils d'import et d'export -ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required. +ValidateModBuilderDesc=Définissez ceci sur 1 si vous souhaitez que la méthode $this->validateField() de l'objet soit appelée pour valider le contenu du champ lors de l'insertion ou de la mise à jour. Définissez 0 si aucune validation n'est requise. WarningDatabaseIsNotUpdated=Attention : La base de données n'est pas mise à jour automatiquement, vous devez détruire les tables et désactiver-activer le module pour que les tables soient recréées LinkToParentMenu=Menu parent (fk_xxxxmenu) -ListOfTabsEntries=List of tab entries -TabsDefDesc=Define here the tabs provided by your module -TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +ListOfTabsEntries=Liste des entrées d'onglet +TabsDefDesc=Définissez ici les onglets proposés par votre module +TabsDefDescTooltip=Les onglets fournis par votre module/application sont définis dans le tableau $this->tabs dans le fichier descripteur de module. Vous pouvez modifier manuellement ce fichier ou utiliser l'éditeur intégré. +BadValueForType=Mauvaise valeur pour le type %s diff --git a/htdocs/langs/fr_FR/oauth.lang b/htdocs/langs/fr_FR/oauth.lang index e412ee0b9b9..493cf00deb9 100644 --- a/htdocs/langs/fr_FR/oauth.lang +++ b/htdocs/langs/fr_FR/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Un jeton a été généré et sauvegardé dans la base de donnée NewTokenStored=Jeton reçu et sauvegardé ToCheckDeleteTokenOnProvider=Cliquer ici pour vérifier/effacer les autorisations sauvées par le fournisseur OAuth %s TokenDeleted=Jeton effacé -RequestAccess=Cliquez ici pour demander/renouveler un accès et recevoir un nouveau jeton à sauvegarder +RequestAccess=Cliquez ici pour demander/renouveler l'accès et recevoir un nouveau jeton DeleteAccess=Cliquez ici pour effacer le jeton -UseTheFollowingUrlAsRedirectURI=Utilisez l'URL suivante comme URI de redirection quand vous créez un crédit avec votre fournisseur OAuth : -ListOfSupportedOauthProviders=Saisissez ici les identifiants fournis par votre fournisseur OAuth2. Seuls les fournisseurs OAuth2 supportés sont visibles ici. Ce paramétrage est potentiellement utilisé par d'autres modules qui nécessitent une authentification OAuth2. -OAuthSetupForLogin=Page pour générer le jeton OAuth +UseTheFollowingUrlAsRedirectURI=Utilisez l'URL suivante comme URI de redirection quand vous créez des identifiants d'accès chez votre fournisseur OAuth : +ListOfSupportedOauthProviders=Ajoutez vos fournisseurs de jetons OAuth2. Ensuite, rendez-vous sur la page d'administration de votre fournisseur OAuth pour créer/obtenir un identifiant et un secret OAuth et enregistrez-les ici. Une fois cela fait, basculez sur l'autre onglet pour générer votre jeton. +OAuthSetupForLogin=Page pour gérer (générer/supprimer) les jetons OAuth SeePreviousTab=Voir onglet précédent +OAuthProvider=Fournisseur OAuth OAuthIDSecret=OAuth ID et secret TOKEN_REFRESH=Token Refresh présent TOKEN_EXPIRED=Token expiré @@ -23,10 +24,13 @@ TOKEN_DELETE=Supprimer jeton enregistré OAUTH_GOOGLE_NAME=Service Oauth Google OAUTH_GOOGLE_ID=Oauth Google Id OAUTH_GOOGLE_SECRET=Oauth Google secret -OAUTH_GOOGLE_DESC=Allez sur cette page puis "Identifiants" pour créer des identifiants OAuth OAUTH_GITHUB_NAME=Service Oauth GitHub OAUTH_GITHUB_ID=Oauth GitHub Id OAUTH_GITHUB_SECRET=Secret Oauth GitHub -OAUTH_GITHUB_DESC=Allez sur cette page puis "Enregistrer une nouvelle application" pour créer des identifiants OAuth +OAUTH_URL_FOR_CREDENTIAL=Accédez à cette page pour créer ou obtenir votre identifiant OAuth et votre secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=ID OAuth +OAUTH_SECRET=Code secret OAuth +OAuthProviderAdded=Fournisseur OAuth ajouté +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Une entrée OAuth pour ce fournisseur et ce libellé existe déjà diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index 8b8ffd0337f..06c090a5f30 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=Une commande était déjà ouverte liée à cette proposition, donc aucune autre commande n'a été créée automatiquement OrdersArea=Espace commandes clients SuppliersOrdersArea=Espace commandes fournisseurs OrderCard=Fiche commande diff --git a/htdocs/langs/fr_FR/other.lang b/htdocs/langs/fr_FR/other.lang index 97abc958da2..7617085348e 100644 --- a/htdocs/langs/fr_FR/other.lang +++ b/htdocs/langs/fr_FR/other.lang @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=...ou construisez votre propre profil
(sélection ma DemoFundation=Gestion des adhérents d'une association DemoFundation2=Gestion des adhérents et trésorerie d'une association DemoCompanyServiceOnly=Société ou indépendant faisant du service uniquement -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Gérer une boutique avec caisse DemoCompanyProductAndStocks=Magasin vendant des produits via points de vente DemoCompanyManufacturing=Société de fabrication de produits DemoCompanyAll=Société avec de multiples activités (tous les modules principaux) @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Êtes-vous sûr de vouloir "%s" ? ConfirmBtnCommonTitle = Confirmer votre action CloseDialog = Fermer Autofill = Remplissage automatique + +# externalsite +ExternalSiteSetup=Configuration du lien vers le site externe +ExternalSiteURL=URL du site externe du contenu iFrame HTML +ExternalSiteModuleNotComplete=La configuration du module "Site externe" est incomplète. +ExampleMyMenuEntry=Mon entrée de menu + +# FTP +FTPClientSetup=Connexion client FTP/FTPS +NewFTPClient=Nouvelle connexion FTP/FTPS +FTPArea=Zone des connexions FTP/FTPS +FTPAreaDesc=Vue d'un serveur FTP/FTPS +SetupOfFTPClientModuleNotComplete=La configuration du client FTP/FTPS semble incomplète +FTPFeatureNotSupportedByYourPHP=Votre version de PHP ne supporte pas les fonctions FTP/FTPS +FailedToConnectToFTPServer=Échec de connexion au serveur (serveur %s, port %s) +FailedToConnectToFTPServerWithCredentials=Échec de l'identification sur le serveur avec l'identifiant et le mot de passe saisis +FTPFailedToRemoveFile=Échec suppression fichier %s. +FTPFailedToRemoveDir=Échec suppression répertoire %s (Vérifiez les permissions et que le répertoire soit vide). +FTPPassiveMode=Mode passif +ChooseAFTPEntryIntoMenu=Sélection d'un site FTP/FTPS depuis le menu +FailedToGetFile=Echec à la récupération du fichier %s diff --git a/htdocs/langs/fr_FR/products.lang b/htdocs/langs/fr_FR/products.lang index b0073665fc2..3e7eece5d0e 100644 --- a/htdocs/langs/fr_FR/products.lang +++ b/htdocs/langs/fr_FR/products.lang @@ -137,7 +137,8 @@ ConfirmDeleteProductLine=Êtes-vous sûr de vouloir effacer cette ligne produit ProductSpecial=Special QtyMin=Qté achat minimum PriceQtyMin=Prix quantité min. -PriceQtyMinCurrency=Prix ​​(devise) pour cette quantité min. (sans remise) +PriceQtyMinCurrency=Prix (devise) pour cette quantité. +WithoutDiscount=Sans remise VATRateForSupplierProduct=Taux TVA (pour ce produit/fournisseur) DiscountQtyMin=Remise par défaut quantité min. NoPriceDefinedForThisSupplier=Aucun prix/qté défini pour ce fournisseur/produit @@ -261,7 +262,7 @@ Quarter1=1er trimestre Quarter2=2eme trimestre Quarter3=3eme trimestre Quarter4=4eme trimestre -BarCodePrintsheet=Imprimer le code barre +BarCodePrintsheet=Imprimer des codes-barres PageToGenerateBarCodeSheets=Avec cet outils, vous pouvez imprimer une planche d'étiquette de code-barres. Sélectionner votre format de planche d'étiquette, le type de code-barre et la valeur du code-barre puis cliquer sur le bouton %s. NumberOfStickers=Nombre d'étiquettes à imprimer sur la/les planches PrintsheetForOneBarCode=Imprimer des étiquettes d'un code barre particulier @@ -345,8 +346,8 @@ GoOnMenuToCreateVairants=Allez sur le menu %s - %s pour ajouter les attributs de UseProductFournDesc=Ajouter une fonctionnalité pour définir la description produit définie par les vendeurs (pour chaque référence vendeur) en plus de la description pour les clients ProductSupplierDescription=Description du fournisseur du produit UseProductSupplierPackaging=Utiliser le conditionnement/emballage sur les prix fournisseur (recalculer les quantités en fonction de l'emballage défini sur le prix fournisseur lors de l'ajout / mise à jour de la ligne dans les documents fournisseurs) -PackagingForThisProduct=Emballage -PackagingForThisProductDesc=Sur une commande fournisseur, vous commanderez automatiquement cette quantité ou un multiple. +PackagingForThisProduct=Conditionnement +PackagingForThisProductDesc=Vous achèterez automatiquement un multiple de cette quantité. QtyRecalculatedWithPackaging=La quantité de la ligne a été recalculée en fonction de l'emballage du fournisseur #Attributes @@ -408,7 +409,22 @@ mandatoryHelper=Cochez cette case si vous souhaitez un message à l'utilisateur DefaultBOM=Nomenclature par défaut DefaultBOMDesc=La nomenclature par défaut qu'il est recommandé d'utiliser pour fabriquer ce produit. Ce champ ne peut être défini que si la nature du produit est '%s'. Rank=Classement +MergeOriginProduct=Produit à fusionner (produit qui sera supprimé) +MergeProducts=Fusionner les produits +ConfirmMergeProducts=Etes vous certains de vouloir fusionner le produit sélectionné avec le produit en cours ? Tous les objets (factures, commandes, ...) seront liés au produits en en cours, le produit sélectionné sera ensuite effacé. +ProductsMergeSuccess=Produits fusionnés +ErrorsProductsMerge=Erreur lors de la fusion des produits SwitchOnSaleStatus=Basculer le statut En vente SwitchOnPurchaseStatus=Basculer le statut En achat StockMouvementExtraFields= Champs supplémentaires (mouvement de stock) -PuttingPricesUpToDate=Mettre à jour les prix +OrProductsWithCategories=Ou produits avec tags/categories +InventoryExtraFields= Attributs supplémentaires (inventaire) +ScanOrTypeOrCopyPasteYourBarCodes=Scannez ou tapez ou copiez/collez vos codes-barres +PuttingPricesUpToDate=Mise à jour des prix avec les prix connus actuels +PMPExpected=PMP prévu +ExpectedValuation=Valorisation prévue +PMPReal=PMP réel +RealValuation=Valorisation réelle +ConfirmEditExtrafield = Sélectionnez l'extrafield que vous souhaitez modifier +ConfirmEditExtrafieldQuestion = Voulez-vous vraiment modifier cet extrafield ? +ModifyValueExtrafields = Modifier la valeur d'un extrafield diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index ca8f1e518aa..af97ce451bb 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Libellé projet ProjectsArea=Espace projets ProjectStatus=Statut projet SharedProject=Tout le monde -PrivateProject=Assigned contacts +PrivateProject=Contacts assignés ProjectsImContactFor=Projets dont je suis un contact explicite AllAllowedProjects=Tout projet que je peux lire (les miens + public) AllProjects=Tous les projets @@ -18,7 +18,7 @@ ProjectsDesc=Cette vue présente tous les projets (vos habilitations vous offran TasksOnProjectsDesc=Cette vue présente toutes les tâches sur tous les projets (vos permissions d'utilisateur vous accordent la permission de voir tout). MyTasksDesc=Cette vue est restreinte aux projets ou tâches pour lesquels vous êtes un contact affecté. OnlyOpenedProject=Seuls les projets ouverts sont visibles (les projets à l'état brouillon ou fermé ne sont pas visibles). -ClosedProjectsAreHidden=Les projets fermés ne sont pas visible. +ClosedProjectsAreHidden=Les projets fermés ne sont pas visibles. TasksPublicDesc=Cette vue présente tous les projets et tâches pour lesquels vous êtes habilité à avoir une visibilité. TasksDesc=Cette vue présente tous les projets et tâches (vos habilitations vous offrant une vue exhaustive). AllTaskVisibleButEditIfYouAreAssigned=Toutes les tâches des projets sont visibles mais il n'est possible de saisir du temps passé que sur celles assignées à l'utilisateur sélectionné.\nAssignez la tâche si elle ne l'est pas déjà pour pouvoir saisir du temps dessus. @@ -81,7 +81,7 @@ TaskProgressSummary=Progression de tâche CurentlyOpenedTasks=Tâches actuellement ouvertes TheReportedProgressIsLessThanTheCalculatedProgressionByX=L'avancement réel déclaré est %s moins important que l'avancement de la consommation TheReportedProgressIsMoreThanTheCalculatedProgressionByX=L'avancement réel déclaré est %splus important que l'avancement de la consommation -ProgressCalculated=Avancement sur consommation +ProgressCalculated=Avancement consommation WhichIamLinkedTo=dont je suis contact WhichIamLinkedToProject=dont je suis contact de projet Time=Temps @@ -289,8 +289,8 @@ FormForNewLeadDesc=Veuillez remplir ce formulaire de contact ou écrivez un e-ma ProjectsHavingThisContact=Projets ayant ce contact StartDateCannotBeAfterEndDate=La date de fin ne peux être avant la date de début ErrorPROJECTLEADERRoleMissingRestoreIt=Le rôle "PROJECTLEADER" est manquant ou a été désactivé, merci de le restaurer dans le dictionnaire des types de contacts -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +LeadPublicFormDesc=Vous pouvez activer ici une page publique pour permettre à vos prospects d'établir un premier contact avec vous depuis un formulaire public en ligne +EnablePublicLeadForm=Activer le formulaire public de contact +NewLeadbyWeb=Votre message ou votre demande a été enregistré. Nous vous répondrons ou vous contacterons bientôt. +NewLeadForm=Nouveau formulaire de contact +LeadFromPublicForm=Lead en ligne à partir d'un formulaire public diff --git a/htdocs/langs/fr_FR/stocks.lang b/htdocs/langs/fr_FR/stocks.lang index 65a7495880e..a0642c4c627 100644 --- a/htdocs/langs/fr_FR/stocks.lang +++ b/htdocs/langs/fr_FR/stocks.lang @@ -265,51 +265,53 @@ ProductBarcodeDoesNotExist=Le produit avec ce code-barres n'existe pas WarehouseId=ID entrepôt WarehouseRef=Réf entrepôt SaveQtyFirst=Enregistrez d'abord les quantités réelles inventoriées, avant de demander la création du mouvement de stock. +ToStart=Démarrer InventoryStartedShort=En cours ErrorOnElementsInventory=Opération annulée pour la raison suivante : ErrorCantFindCodeInInventory=Impossible de trouver le code suivant dans l'inventaire QtyWasAddedToTheScannedBarcode=Succès !! La quantité a été ajoutée à tous les codes-barres demandés. Vous pouvez fermer l'outil Scanner. StockChangeDisabled=Changement sur stock désactivé NoWarehouseDefinedForTerminal=Aucun entrepôt défini pour le terminal -ModuleStockTransferName = Transferts de stocks -ModuleStockTransferDesc = Création d'objets transfert de stocks, avec génération de bons de transfert -StockTransferNew=Nouveau transfert de stocks -StockTransferList=Liste des transferts de stocks -ConfirmValidateStockTransfer=Êtes-vous sûr de vouloir valider ce transfert de stocks sous la référence %s ? -ConfirmDestock=Décrémentation des stocks via transfert %s -ConfirmDestockCancel=Annulation décrémentation des stocks via transfert %s -DestockAllProduct=Décrémentation des stocks -DestockAllProductCancel=Annulation décrémentation des stocks -ConfirmAddStock=Incrémentation des stocks via transfert %s -ConfirmAddStockCancel=Annulation incrémentation des stocks via transfert %s -AddStockAllProduct=Incrémentation des stocks -AddStockAllProductCancel=Annulation incrémentation des stocks -DatePrevueDepart=Date prévue de départ +ClearQtys=Effacer toutes les quantités +ModuleStockTransferName=Transfert de Stock Avancé +ModuleStockTransferDesc=Gestion avancée des transferts de stock, avec génération de feuille de transfert +StockTransferNew=Nouveau transfert de stock +StockTransferList=Liste des transferts de stock +ConfirmValidateStockTransfer=Êtes-vous sûr de vouloir valider ce transfert de stocks avec la référence %s ? +ConfirmDestock=Diminution des stocks avec transfert %s +ConfirmDestockCancel=Annuler la diminution des stocks avec transfert %s +DestockAllProduct=Diminution des stocks +DestockAllProductCancel=Annuler la baisse des stocks +ConfirmAddStock=Augmenter les stocks avec le transfert %s +ConfirmAddStockCancel=Annuler l'augmentation des stocks avec transfert %s +AddStockAllProduct=Augmentation des stocks +AddStockAllProductCancel=Annuler l'augmentation des stocks +DatePrevueDepart=Date de départ prévue DateReelleDepart=Date réelle de départ DatePrevueArrivee=Date prévue d'arrivée -DateReelleArrivee=Date réelle d'arrivée -HelpWarehouseStockTransferSource=Si renseigné, seul cet entrepôt source et ses enfants seront sélectionnables pour l'ajout des lignes -HelpWarehouseStockTransferDestination=Si renseigné, seul cet entrepôt de destination et ses enfants seront sélectionnables pour l'ajout des lignes -LeadTimeForWarning=Délai pour alerte (en jours) -TypeContact_stocktransfer_internal_STFROM=Contact expéditeur transfert de stocks -TypeContact_stocktransfer_internal_STDEST=Contact destinataire transfert de stocks -TypeContact_stocktransfer_internal_STRESP=Responsable du transfert de stocks -StockTransferSheet=Bon de transfert -StockTransferSheetProforma=Bon de transfert proforma -StockTransferDecrementation=Décrémenter les entrepôts sources -StockTransferIncrementation=Incrémenter les entrepôts de destination -StockTransferDecrementationCancel=Annuler décrémentation des entrepôts sources -StockTransferIncrementationCancel=Annuler incrémentation des entrepôts de destination -StockStransferDecremented=Entrepôts sources décrémentés -StockStransferDecrementedCancel=Décrémentation entrepôts source annulée -StockStransferIncremented=Clôturé - Stocks transférés -StockStransferIncrementedShort=Stocks transférés -StockStransferIncrementedShortCancel=Incrémentation entrepôts de destination annulée -StockTransferNoBatchForProduct=Le produit %s ne gère pas les numéros de lot, retirez le lot sur la ligne avant d'exécuter à nouveau cette action -StockTransferSetup = Configuration du module transferts de stocks -StockTransferSetupPage = Page de configuration du module transferts de stocks +DateReelleArrivee=Date d'arrivée réelle +HelpWarehouseStockTransferSource=Si cet entrepôt est défini, seuls lui-même et ses enfants seront disponibles en tant qu'entrepôt source +HelpWarehouseStockTransferDestination=Si cet entrepôt est défini, seul lui-même et ses enfants seront disponibles comme entrepôt de destination +LeadTimeForWarning=Délai avant alerte (en jours) +TypeContact_stocktransfer_internal_STFROM=Expéditeur de transfert de stocks +TypeContact_stocktransfer_internal_STDEST=Bénéficiaire du transfert de stocks +TypeContact_stocktransfer_internal_STRESP=Responsable du transfert des stocks +StockTransferSheet=Feuille de transfert de stocks +StockTransferSheetProforma=Feuille de transferts de stock proforma +StockTransferDecrementation=Diminuer les entrepôts sources +StockTransferIncrementation=Augmenter les entrepôts de destination +StockTransferDecrementationCancel=Annuler la diminution des entrepôts sources +StockTransferIncrementationCancel=Annuler l'augmentation des entrepôts de destination +StockStransferDecremented=Les entrepôts sources ont diminué +StockStransferDecrementedCancel=Diminution des entrepôts sources annulée +StockStransferIncremented=Fermé - Stocks transférés +StockStransferIncrementedShort=Stocks transférées +StockStransferIncrementedShortCancel=Augmentation des entrepôts de destination annulée +StockTransferNoBatchForProduct=Le produit %s n'utilise pas le lot, effacez le lot et réessayez +StockTransferSetup = Configuration du module de Transfert de stocks avancé +Settings=Paramètres +StockTransferSetupPage = Page de configuration du module de Transfert de stocks avancé StockTransferRightRead=Lire les transferts de stocks StockTransferRightCreateUpdate=Créer/Mettre à jour les transferts de stocks StockTransferRightDelete=Supprimer les transferts de stocks -BatchNotFound=Lot / série non trouvé(e) pour ce produit -ClearQtys=Effacer toutes les quantités +BatchNotFound=Lot/série introuvable pour ce produit diff --git a/htdocs/langs/fr_FR/stripe.lang b/htdocs/langs/fr_FR/stripe.lang index 15837306612..cc873f0acdb 100644 --- a/htdocs/langs/fr_FR/stripe.lang +++ b/htdocs/langs/fr_FR/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Lien pour la configuration de Stripe WebHook pour app PaymentWillBeRecordedForNextPeriod=Le paiement sera enregistré pour la prochaine période. ClickHereToTryAgain=Cliquez ici pour essayer à nouveau... CreationOfPaymentModeMustBeDoneFromStripeInterface=En raison des règles d'Authentification Client Forte, la création d'une carte doit être effectuée à partir du backoffice de Stripe. Vous pouvez cliquer ici pour basculer sur la fiche client Stripe: %s +TERMINAL_LOCATION=Emplacement (adresse) des terminaux diff --git a/htdocs/langs/fr_FR/suppliers.lang b/htdocs/langs/fr_FR/suppliers.lang index dd5402d66ae..0998191b0a2 100644 --- a/htdocs/langs/fr_FR/suppliers.lang +++ b/htdocs/langs/fr_FR/suppliers.lang @@ -32,7 +32,7 @@ ConfirmDenyingThisOrder=Êtes-vous sûr de vouloir refuser la commande fournisse ConfirmCancelThisOrder=Êtes-vous sûr de vouloir annuler la commande fournisseur %s ? AddSupplierOrder=Créer commande fournisseur AddSupplierInvoice=Créer facture fournisseur -ListOfSupplierProductForSupplier=Liste des produits et prix du fournisseurs %s +ListOfSupplierProductForSupplier=Liste des produits et prix du fournisseur %s SentToSuppliers=Envoyés aux fournisseurs ListOfSupplierOrders=Liste des commandes fournisseurs MenuOrdersSupplierToBill=Commandes fournisseurs en facture @@ -46,4 +46,11 @@ ReputationForThisProduct=Réputation BuyerName=Nom de l'acheteur AllProductServicePrices=Tous les prix du produits / service AllProductReferencesOfSupplier=Toutes les références du fournisseur -BuyingPriceNumShort=Prix fournisseurs \ No newline at end of file +BuyingPriceNumShort=Prix fournisseurs +RepeatableSupplierInvoice=Modèle de facture fournisseur +RepeatableSupplierInvoices=Modèle de facture fournisseur +RepeatableSupplierInvoicesList=Modèle de factures fournisseurs +RecurringSupplierInvoices=Factures fournisseurs récurrentes +ToCreateAPredefinedSupplierInvoice=Afin de créer un modèle de facture fournisseur, vous devez créer une facture standard, puis, sans la valider, cliquer sur le bouton "%s". +GeneratedFromSupplierTemplate=Généré(e) depuis le modèle de facture fournisseur %s +SupplierInvoiceGeneratedFromTemplate=Facture fournisseur %s générée depui le modèle de facture fournisseur %s diff --git a/htdocs/langs/fr_FR/ticket.lang b/htdocs/langs/fr_FR/ticket.lang index 486e3799f72..3f5be72e1d9 100644 --- a/htdocs/langs/fr_FR/ticket.lang +++ b/htdocs/langs/fr_FR/ticket.lang @@ -90,17 +90,17 @@ TicketPublicAccess=Une interface publique ne nécessitant aucune identification TicketSetupDictionaries=Les types de ticket, sévérité et codes analytiques sont paramétrables à partir des dictionnaires TicketParamModule=Configuration des variables du module TicketParamMail=Configuration de la messagerie -TicketEmailNotificationFrom=Sender e-mail for ticket answers -TicketEmailNotificationFromHelp=Sender e-mail for ticket answers sent from Dolibarr -TicketEmailNotificationTo=Notify ticket creation to this e-mail address -TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation +TicketEmailNotificationFrom=E-mail de l'expéditeur pour la notification des réponses +TicketEmailNotificationFromHelp=E-mail de l'expéditeur à utiliser pour envoyer l'e-mail de notification lorsqu'une réponse est fournie dans le backoffice. Par exemple noreply@example.com +TicketEmailNotificationTo=Notifier la création du ticket à cette adresse e-mail +TicketEmailNotificationToHelp=Si elle est présente, cette adresse e-mail sera notifiée de la création d'un ticket TicketNewEmailBodyLabel=Texte du message envoyé après la création d'un ticket TicketNewEmailBodyHelp=Le texte spécifié ici sera inséré dans l'e-mail confirmant la création d'un nouveau ticket depuis l'interface publique. Les informations sur la consultation du ticket sont automatiquement ajoutées. TicketParamPublicInterface=Configuration de l'interface publique\n TicketsEmailMustExist=Une adresse e-mail existante est requise pour créer un ticket TicketsEmailMustExistHelp=Pour accéder à l'interface publique et créer un nouveau ticket, votre compte doit déjà être existant. -TicketCreateThirdPartyWithContactIfNotExist=Créer un tiers avec contact s'il n'existe pas avec l'email saisi -TicketCreateThirdPartyWithContactIfNotExistHelp=Créer un tiers avec contact s'il n'existe pas avec l'email saisi +TicketCreateThirdPartyWithContactIfNotExist=Demandez le nom et le nom de l'entreprise pour les e-mails inconnus. +TicketCreateThirdPartyWithContactIfNotExistHelp=Vérifiez si un tiers ou un contact existe pour l'e-mail saisi. Sinon, demandez un nom et une raison sociale pour créer un tiers avec contact. PublicInterface=Interface publique TicketUrlPublicInterfaceLabelAdmin=URL alternative pour l'interface publique TicketUrlPublicInterfaceHelpAdmin=Il est possible de définir un alias vers le serveur et de rendre ainsi l'interface publique accessible avec une autre URL (le serveur doit agir comme un proxy sur cette nouvelle URL) @@ -148,7 +148,7 @@ TicketsAutoNotifyClose=Avertir automatiquement un tiers lors de la fermeture d'u TicketsAutoNotifyCloseHelp=Lors de la clôture d'un ticket, il vous sera proposé d'envoyer un message à l'un des contacts tiers. Lors de la fermeture massive, un message sera envoyé à un contact du tiers lié au ticket. TicketWrongContact=Le contact fourni ne fait pas partie des contacts actuels du ticket. E-mail non envoyé. TicketChooseProductCategory=Catégorie de produit pour les tickets -TicketChooseProductCategoryHelp=Select the product category of ticket support. This will be used to automatically link a contract to a ticket. +TicketChooseProductCategoryHelp=Sélectionnez la catégorie de produit du support de ticket. Celui-ci sera utilisé pour lier automatiquement un contrat à un ticket. # # Index & list page @@ -221,12 +221,12 @@ ErrorMailRecipientIsEmptyForSendTicketMessage=Le destinataire est vide. Aucun e- TicketGoIntoContactTab=Rendez-vous dans le tableau "Contacts" pour les sélectionner TicketMessageMailIntro=Introduction TicketMessageMailIntroHelp=Ce texte est ajouté seulement au début de l'email et ne sera pas sauvegardé. -TicketMessageMailIntroLabelAdmin=Introduction text to all ticket answers -TicketMessageMailIntroText=Hello,
A new answer has been added to a ticket that you follow. Here is the message:
-TicketMessageMailIntroHelpAdmin=This text will be inserted before the answer when replying to a ticket from Dolibarr +TicketMessageMailIntroLabelAdmin=Texte d'introduction à toutes les réponses aux tickets +TicketMessageMailIntroText=Bonjour,
Une nouvelle réponse a été ajoutée à un ticket que vous suivez. Voici le message :
+TicketMessageMailIntroHelpAdmin=Ce texte sera inséré avant la réponse lors d'une réponse à un ticket depuis Dolibarr TicketMessageMailSignature=Signature TicketMessageMailSignatureHelp=Ce texte est ajouté seulement à la fin de l'email et ne sera pas sauvegardé. -TicketMessageMailSignatureText=Message sent by %s via Dolibarr +TicketMessageMailSignatureText=Message envoyé par %s via Dolibarr TicketMessageMailSignatureLabelAdmin=Signature de l'email de réponse TicketMessageMailSignatureHelpAdmin=Ce texte sera inséré après le message de réponse. TicketMessageHelp=Seul ce texte sera sauvegardé dans la liste des messages sur la fiche ticket. @@ -262,8 +262,8 @@ TicketNotCreatedFromPublicInterface=Non disponible. Le ticket n’a pas été cr ErrorTicketRefRequired=La référence du ticket est requise TicketsDelayForFirstResponseTooLong=Trop de temps écoulé entre l'ouverture du ticket et une première réponse. TicketsDelayFromLastResponseTooLong=Trop de temps écoulé depuis la dernière réponse de ce ticket. -TicketNoContractFoundToLink=No contract was found to be automatically linked to this ticket. Please link a contract manually. -TicketManyContractsLinked=Many contracts have been automatically linked to this ticket. Make sure to verify which should be chosen. +TicketNoContractFoundToLink=Aucun contrat n'a été trouvé pour être automatiquement lié à ce ticket. Veuillez lier un contrat manuellement. +TicketManyContractsLinked=De nombreux contrats ont été automatiquement liés à ce ticket. Assurez-vous de vérifier ce qui doit être choisi. # # Logs @@ -291,7 +291,7 @@ TicketNewEmailBody=Ceci est un message automatique pour confirmer l'enregistreme TicketNewEmailBodyCustomer=Ceci est un email automatique pour confirmer qu'un nouveau ticket vient d'être créé dans votre compte. TicketNewEmailBodyInfosTicket=Informations pour la surveillance du ticket TicketNewEmailBodyInfosTrackId=Numéro de suivi du ticket : %s -TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the following link +TicketNewEmailBodyInfosTrackUrl=Vous pouvez voir la progression du ticket en cliquant sur le lien suivant TicketNewEmailBodyInfosTrackUrlCustomer=Vous pouvez voir la progression du ticket en cliquant sur le lien ci-dessus. TicketCloseEmailBodyInfosTrackUrlCustomer=Vous pouvez consulter l'historique de ce ticket en cliquant sur le lien suivant TicketEmailPleaseDoNotReplyToThisEmail=Merci de ne pas répondre directement à ce courriel ! Utilisez le lien pour répondre via l'interface. diff --git a/htdocs/langs/fr_FR/users.lang b/htdocs/langs/fr_FR/users.lang index b380258fc99..5888332a820 100644 --- a/htdocs/langs/fr_FR/users.lang +++ b/htdocs/langs/fr_FR/users.lang @@ -76,7 +76,7 @@ CreateInternalUserDesc=Ce formulaire permet de créer un utilisateur interne à InternalExternalDesc=Un utilisateur interne est un utilisateur qui fait partie de votre société/institution ou un partenaire en dehors de votre organisation qui peut avoir besoin de voir plus de données que les données en rapport avec sa société (le système de permission définira ce qu'il peut ou ne peut pas voir).
Un utilisateur externe est un compte utilisateur pour un client, fournisseur ou autre qui ne doit voir QUE les données en rapport avec lui même (La création d'un utilisateur externe pour un tiers peut etre fait depuis la fiche d'un contact de tiers).

Dans les deux cas, vous devez définir les permissions des fonctionnalités dont l'utilisateur a besoin. PermissionInheritedFromAGroup=La permission est accordée car héritée d'un groupe auquel appartient l'utilisateur. Inherited=Hérité -UserWillBe=Créé par l'utilisateur +UserWillBe=L'utilisateur créé sera UserWillBeInternalUser=L'utilisateur créé sera un utilisateur interne (car non lié à un tiers en particulier) UserWillBeExternalUser=L'utilisateur créé sera un utilisateur externe (car lié à un tiers en particulier) IdPhoneCaller=Identifiant appelant (téléphone) @@ -124,7 +124,7 @@ ValidatorIsSupervisorByDefault=Par défaut, le valideur est le responsable hiér UserPersonalEmail=Email personnel UserPersonalMobile=Téléphone portable personnel WarningNotLangOfInterface=Attention, c'est la langue principale parlée par l'utilisateur, pas la langue de l'interface qu'il a choisi de voir. Pour changer la langue de l'interface visible par cet utilisateur, allez sur l'onglet %s -DateLastLogin=Date last login -DatePreviousLogin=Date previous login -IPLastLogin=IP last login -IPPreviousLogin=IP previous login +DateLastLogin=Date de la dernière connexion +DatePreviousLogin=Date de connexion précédente +IPLastLogin=IP dernière connexion +IPPreviousLogin=Connexion précédente IP diff --git a/htdocs/langs/gl_ES/accountancy.lang b/htdocs/langs/gl_ES/accountancy.lang index 6616dc76f96..5194834e74e 100644 --- a/htdocs/langs/gl_ES/accountancy.lang +++ b/htdocs/langs/gl_ES/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Desactivar transaccións directas en conta bancaria ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Habilitar exportación de borradores al diario ACCOUNTANCY_COMBO_FOR_AUX=Activar a listaxe combinada para a conta subsidiaria (pode ser lento se ten moitos terceiros, rompe coa capacidade de buscar unha parte do valor) ACCOUNTING_DATE_START_BINDING=Define unha data para comezar a ligar e transferir na contabilidade. Por debaixo desta data, as transaccións non se transferirán á contabilidade. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Na transferencia de contabilidade, selecciona amosar o período por defecto +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Na transferencia de contabilidade, cal é o período seleccionado por defecto ACCOUNTING_SELL_JOURNAL=Diario de vendas ACCOUNTING_PURCHASE_JOURNAL=Diario de compras @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Conta contable de rexistro de doacións/subvencións ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Conta contable de rexistro subscricións ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Conta contable por defecto para rexistrar os ingresos realizados polo cliente -UseAuxiliaryAccountOnCustomerDeposit=Use subcontas nas liñas de depósito de clientes +UseAuxiliaryAccountOnCustomerDeposit=Almacenar a conta do cliente como unha conta individual para as liñas de anicipo no Libro Maior subsidiario (se está desactivada, a conta individual para as liñas de anticipo permanecerá baleira) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conta contable predeterminada para os produtos comprados (usada se non está definida na folla de produtos) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Conta contable predeterminada para os produtos comprados na CEE (usada se non está definida na folla de produto) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Se configura as contas contables dos tipos de inform DescVentilDoneExpenseReport=Consulte aquí as liñas de informes de gastos e as súas contas contables Closure=Peche anual -DescClosure=Consulte aquí o número de movementos por mes que aínda non están validados e bloqueados +DescClosure=Consulte aquí o número de movementos por mes aínda non validados e bloqueados OverviewOfMovementsNotValidated=Visión xeral dos movementos non validados e bloqueados AllMovementsWereRecordedAsValidated=Todos os movementos rexistráronse como validados e bloqueados NotAllMovementsCouldBeRecordedAsValidated=Non se puideron rexistrar todos os movementos como validados e bloqueados @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sent AccountancyErrorMismatchLetterCode=Erro no código de conciliación AccountancyErrorMismatchBalanceAmount=O saldo (%s) non é igual a 0 AccountancyErrorLetteringBookkeeping=Producíronse erros nas transaccións: %s +ErrorAccountNumberAlreadyExists=O número contable %s xa existe ## Import ImportAccountingEntries=Entradas contables diff --git a/htdocs/langs/gl_ES/admin.lang b/htdocs/langs/gl_ES/admin.lang index c1cd56fe1bd..2d1c533cd4b 100644 --- a/htdocs/langs/gl_ES/admin.lang +++ b/htdocs/langs/gl_ES/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Próximo valor (rectificativas) MustBeLowerThanPHPLimit=Nota: A configuración actual do PHP limita o tamaño máximo de subida a %s %s, calquera que sexa o valor deste parámetro NoMaxSizeByPHPLimit=Ningunha limitación interna configurada no seu servidor PHP MaxSizeForUploadedFiles=Tamaño máximo dos ficheiros a subir (0 para desactivar a subida) -UseCaptchaCode=Utilización de código gráfico (CAPTCHA) na página de inicio de sesión +UseCaptchaCode=Use código gráfico (CAPTCHA) na páxina de inicio de sesión e nalgunhas páxinas públicas AntiVirusCommand=Ruta completa ao comando do antivirus AntiVirusCommandExample=Exemplo para ClamAv (require clamav-daemon):/usr/bin/clamdscan
Exemplo para ClamWin (moi moi lento): c::\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Mais parámetors na liña de comandos @@ -504,7 +504,7 @@ WarningPHPMailC=- Tamén é interesante usar o servidor SMTP do seu propio forne WarningPHPMailD=Porén, recoméndase cambiar o método de envío de correos electrónicos ao valor "SMTP". Se realmente desexa manter o método predeterminado "PHP" para enviar correos electrónicos, simplemente ignore este aviso ou elimíneo configurando a constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP en 1 en Inicio-Configuración-Outro. WarningPHPMail2=Se o seu fornecedorr SMTP de correo electrónico precisa restrinxir o cliente de correo electrónico a algúns enderezos IP (moi raro), este é o seu enderezo IP do seu axente de usuario de correo (MUA) da súa aplicación ERP CRM: %s. WarningPHPMailSPF=Se o nome de dominio do enderezo de correo electrónico do seu remitente está protexido por un rexistro SPF (pregúntarlle ao rexistrador do seu nome de dominio), se debe engadir as seguintes IP no rexistro SPF do DNS do seu dominio: %s -ActualMailSPFRecordFound=Atopouse o actual rexistro SPF; %s +ActualMailSPFRecordFound=Atopouse o rexistro SPF actual (para o correo electrónico %s): %s ClickToShowDescription=Clic para ver a descrición DependsOn=Este módulo precisa o módulo(s) RequiredBy=Este módulo é requirido polo(s) módulo(s) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valor da constante ConstantIsOn=Opción %s está activada NbOfDays=Nº de días AtEndOfMonth=A fin de mes -CurrentNext=Actual/Seguinte +CurrentNext=Un día determinado no mes Offset=Decálogo AlwaysActive=Sempre activo Upgrade=Actualización @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Prema CTRL+F5 no teclado ou limpe a caché do navegador NotSupportedByAllThemes=Traballará con temas core, pode que non sexan compatibles con temas externos BackgroundColor=Cor de fondo TopMenuBackgroundColor=Cor de fondo para o Menú superior -TopMenuDisableImages=Ocultar imaxes no Menú superior +TopMenuDisableImages=Icona ou texto no menú superior LeftMenuBackgroundColor=Cor de fondo para o Menú esquerdo BackgroundTableTitleColor=Cor de fondo para a Taboa título líña BackgroundTableTitleTextColor=Cor do texto para a liña de título da taboa @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Nota: A opción para usar Vendas IVE ou IVE configurouse como Nota: con este exemplo inicial, xérase o título do cliente potencial incluíndo o correo electrónico. Se o terceiro non se atopa na base de datos (novo cliente), o cliente potencial unirase ao terceiro co ID 1. EmailCollectorExampleToCollectLeads=Exemplo de recollida de clientes potenciais @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Recoller correos electrónicos EmailCollectorExampleToCollectJobCandidatures=Exemplo de recollida de candidaturas de emprego recibidas por correo electrónico NoNewEmailToProcess=Non hai ningún correo electrónico novo (filtros coincidentes) para procesar NothingProcessed=Nada feito -XEmailsDoneYActionsDone=%s correos electrónicos cualificados, %s correos electrónicos procesados ​​correctamente (para %s rexistro/accións feitas) +XEmailsDoneYActionsDone=Correos electrónicos %s precalificados, correos electrónicos %s procesados correctamente (para %s rexistro/accións realizadas) RecordEvent=Gravar un evento na axenda (co tipo de correo electrónico enviado ou recibido) CreateLeadAndThirdParty=Crear un cliente potencial (e un terceiro se é preciso) CreateTicketAndThirdParty=Crear un ticket (ligado a un terceiro se o terceiro foi cargado por unha operación anterior ou se adiviñou a partir dun rastreador na cabeceira do correo electrónico, sen que o terceiro sexa o contrario) @@ -2167,6 +2168,9 @@ EmailTemplate=Modelo para correo electrónico EMailsWillHaveMessageID=Os correos electrónicos terán unha etiqueta "Referencias" que coincide con esta sintaxe PDF_SHOW_PROJECT=Amosar proxecto no documento ShowProjectLabel=Etiqueta do proxecto +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Incluír o alias no nome de terceiros +THIRDPARTY_ALIAS=Nome do terceiro - Alias do terceiro +ALIAS_THIRDPARTY=Alias do terceiros- Nome do terceiro PDF_USE_ALSO_LANGUAGE_CODE=Se desexa ter algúns textos no seu PDF duplicados en 2 idiomas diferentes no mesmo PDF xerado, debe configurar aquí este segundo idioma para que o PDF xerado conteña 2 idiomas diferentes na mesma páxina, o elixido ao xerar PDF e este (só algúns modelos PDF soportan isto). Mantéñase baleiro por un idioma por PDF. PDF_USE_A=Xera documentos PDF co formato PDF/A en lugar do formato PDF predeterminado FafaIconSocialNetworksDesc=Introduza aquí o código dunha icona FontAwesome. Se non sabe o que é FontAwesome, pode usar o valor xenérico fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Padrón para unha tarxeta de visita de diferentes tama InventorySetup= Configuración do inventario ExportUseLowMemoryMode=Use un modo de memoria baixa ExportUseLowMemoryModeHelp=Use o modo de memoria baixa para executar o exec do volcado (a compresión faise a través dunha tubería en lugar de na memoria PHP). Este método non permite comprobar que o ficheiro está completo e non se pode informar coa mensaxe de erro se falla. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface para capturar os disparadores (triggers) dolibarr e envialos a un URL +WebhookSetup = Configuración de webhook +Settings = Configuracións +WebhookSetupPage = Páxina de configuración de webhook ShowQuickAddLink=Amosa un botón para engadir rapidamente un elemento no menú superior dereito + HashForPing=Hash usado para facer ping ReadOnlyMode=É unha instancia en modo "Só lectura". DEBUGBAR_USE_LOG_FILE=Use o ficheiro dolibarr.log para capturar rexistros UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use o ficheiro dolibarr.log para capturar rexistros en lugar de capturar na memoria en directo. Permite capturar todos os rexistros en lugar de só o rexistro do proceso actual (incluíndo o das páxinas de subsolicitudes ajax), pero fará que a súa instancia sexa moi lenta. Non recomendado. FixedOrPercent=Fixo (use a palabra clave "fixo") ou porcentaxe (use a palabra clave "porcentaxe") DefaultOpportunityStatus=Estado de oportunidade predeterminado (primeiro estado cando se crea un cliente potencial) + IconAndText=Icona e texto TextOnly=Só texto IconOnlyAllTextsOnHover=Só icona: todos os textos aparecen debaixo da icona ao pasar o rato na barra de menú @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Só icona: o texto da icona aparece debaixo da icona ao pasa IconOnly=Só icona: só texto na información sobre ferramentas INVOICE_ADD_ZATCA_QR_CODE=Mostra o código QR ZATCA nas facturas INVOICE_ADD_ZATCA_QR_CODEMore=Algúns países árabes necesitan este código QR nas súas facturas +INVOICE_ADD_SWISS_QR_CODE=Amosa o código suizo QR-Bill nas facturas UrlSocialNetworksDesc=Ligazón URL da rede social. Use {socialid} para a parte variable que contén o ID da rede social. +IfThisCategoryIsChildOfAnother=Se esta categoría é filla doutra +NoName=Sen nome +CIDLookupURL=O módulo trae un URL que pode ser usado por unha ferramenta externa para obter o nome dun terceiro ou contacto do seu número de teléfono. O URL a usar é: diff --git a/htdocs/langs/gl_ES/boxes.lang b/htdocs/langs/gl_ES/boxes.lang index 4f3e0c6580a..ba4db75b8d4 100644 --- a/htdocs/langs/gl_ES/boxes.lang +++ b/htdocs/langs/gl_ES/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Últimas subscricións de membros BoxFicheInter=Últimas intervencións BoxCurrentAccounts=Balance de contas abertas BoxTitleMemberNextBirthdays=Cumpreanos neste mes (Membros) -BoxTitleMembersByType=Membros por tipo +BoxTitleMembersByType=Membros por tipo e estado BoxTitleMembersSubscriptionsByYear=Subscricións de membros por ano BoxTitleLastRssInfos=Últimas %s novas de %s BoxTitleLastProducts=Produtos/Servizos: Últimos %s modificados diff --git a/htdocs/langs/gl_ES/cashdesk.lang b/htdocs/langs/gl_ES/cashdesk.lang index 5663d5839a7..440c855c674 100644 --- a/htdocs/langs/gl_ES/cashdesk.lang +++ b/htdocs/langs/gl_ES/cashdesk.lang @@ -136,3 +136,4 @@ PrintWithoutDetails=Imprimir sen detalles YearNotDefined=O ano non está establecido TakeposBarcodeRuleToInsertProduct=Regra de código de barras para inserir o produto TakeposBarcodeRuleToInsertProductDesc=Regra para extraer a referencia do produto + unha cantidade dun código de barras escaneado.
Se está baleiro (valor predeterminado), a aplicación usará o código de barras escaneado completo para atopar o produto.

Se é definido, a sintaxe debe ser:
Ref:NB+qu:NB+qd:NB+outro:NB
onde RN é o número de caracteres a establecer para extraer os datos a partir do código de barras escaneado con:
  • ref : referencia produto
  • qu : cantidade de conxunto cando a inserción de elementos (unidades)
  • qd : cantidade de conxunto cando da inserción de elemento (decimais)
  • outro : outros caracteres
+AlreadyPrinted=Xa impreso diff --git a/htdocs/langs/gl_ES/categories.lang b/htdocs/langs/gl_ES/categories.lang index 57c51ba8727..f41099a4e99 100644 --- a/htdocs/langs/gl_ES/categories.lang +++ b/htdocs/langs/gl_ES/categories.lang @@ -95,7 +95,9 @@ ShowCategory=Amosar etiqueta/categoría ByDefaultInList=Por defecto na listaxe ChooseCategory=Escoller categoría StocksCategoriesArea=Categorías de almacén +TicketsCategoriesArea=Categorías de Tickets ActionCommCategoriesArea=Categorías de evento WebsitePagesCategoriesArea=Categorías de contedores de páxina KnowledgemanagementsCategoriesArea=Categorías do artigo KM UseOrOperatorForCategories=Use o operador "OR" para as categorías +AddObjectIntoCategory=Engada un obxecto á categoría diff --git a/htdocs/langs/gl_ES/companies.lang b/htdocs/langs/gl_ES/companies.lang index 577d5591489..8061a2900be 100644 --- a/htdocs/langs/gl_ES/companies.lang +++ b/htdocs/langs/gl_ES/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Natureza do terceiro NatureOfContact=Natureza do contacto Address=Enderezo State=Provincia/Estado +StateId=ID do Estado StateCode=Código Provincia/Estado StateShort=Provincia/Estado Region=Rexión Region-State=Rexión - Estado Country=País CountryCode=Código país -CountryId=Id país +CountryId=ID do País Phone=Teléfono PhoneShort=Teléfono Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Rexistro Mercantil) ProfId2CM=Id. prof. 2 (Número de Contribuínte) -ProfId3CM=Id. prof. 3 (Acta de creación) -ProfId4CM=Id. prof. 4 (Certificado de depósitos) +ProfId3CM=Id. prof. 3 (Nº decreto de creación) +ProfId4CM=Id. prof. 4 (Certificado de depósito núm.) ProfId5CM=Id. prof. 5 (Numero EORI) ProfId6CM=- ProfId1ShortCM=Rexistro Mercantil ProfId2ShortCM=Contribuínte Núm. -ProfId3ShortCM=Acta de creación -ProfId4ShortCM=Certificado de depósitos +ProfId3ShortCM=Nº decreto de creación +ProfId4ShortCM=Certificado de depósito núm. ProfId5ShortCM=Outros ProfId6ShortCM=- ProfId1CO=Id Prof 1 (R.U.T.) diff --git a/htdocs/langs/gl_ES/errors.lang b/htdocs/langs/gl_ES/errors.lang index eda9523d233..f3418ae9c7c 100644 --- a/htdocs/langs/gl_ES/errors.lang +++ b/htdocs/langs/gl_ES/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Non se debe desactivar Javascript para que esta fun ErrorPasswordsMustMatch=Os dous contrasinais escritos deben coincidir entre si ErrorContactEMail=Produciuse un erro técnico. Póñase en contacto co administrador no seguinte correo electrónico %s e proporcione o código de erro %s na súa mensaxe ou engada unha copia desta páxina. ErrorWrongValueForField=O campo %s:'%s' non coincide coa regra %s +ErrorHtmlInjectionForField=Campo %s : O valor ' %s non contén datos perigosos ' ErrorFieldValueNotIn=Campo %s:'%s' non é un valor atopado no campo %s de %s ErrorFieldRefNotIn=Campo %s:'%s' non é unha referencia %s existente ErrorsOnXLines=Atopáronse %s erros @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Primeiro debe configurar o seu plan de ErrorFailedToFindEmailTemplate=Fallo ao atopar o modelo co nome de código %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duración non definida no servizo. Non hai forma de calcular o prezo por hora. ErrorActionCommPropertyUserowneridNotDefined=É preciso o supervisor do usuario -ErrorActionCommBadType=O tipo de evento seleccionado (id: %n, código: %s) non existe no diccionario Tipo de Evento +ErrorActionCommBadType=O tipo de evento seleccionado (id: %s, código: %s) non existe no dicionario de tipo de evento CheckVersionFail=Fallou a comprobación da versión ErrorWrongFileName=O nome do ficheiro non pode conte __SOMETHING__ nel ErrorNotInDictionaryPaymentConditions=Non está no Dicionario de Condicións de Pagamento. Modifíqueo. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Erro, todas as cantidades deben introducirse na mesma ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Tenta pagar facturas na moeda %s desde unha conta coa moeda %s ErrorInvoiceLoadThirdParty=Non se pode cargar o obxecto de terceiros para a factura "%s" ErrorInvoiceLoadThirdPartyKey=Chave de terceiros "%s" non definida para a factura "%s" -ErrorDeleteLineNotAllowedByObjectStatus=O estado real do obxecto non permite eliminar a liña +ErrorDeleteLineNotAllowedByObjectStatus=O estado actual do obxecto non permite eliminar a liña ErrorAjaxRequestFailed=Produciuse un erro na solicitude +ErrorThirpdartyOrMemberidIsMandatory=Terceiro ou membro da sociedade é obrigatorio +ErrorFailedToWriteInTempDirectory=Produciuse un erro ao escribir no directorio temporal +ErrorQuantityIsLimitedTo=A cantidade está limitada a %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=O seu parámetro PHP upload_max_filesize (%s) é superior ao parámetro PHP post_max_size (%s). Esta non é unha configuración consistente. WarningPasswordSetWithNoAccount=Estableceuse un contrasinal para este membro. En calquera caso, non se creou ningunha conta de usuario. Polo tanto, este contrasinal está almacenado pero non se pode usar para iniciar sesión en Dolibarr. Pode ser usado por un módulo/interface externo, pero se non precisa definir ningún login ou contrasinal para un membro, pode desactivar a opción "Xestionar un inicio de sesión para cada membro" desde a configuración do módulo Membros. Se precisa xestionar un inicio de sesión pero non precisa ningún contrasinal, pode manter este campo baleiro para evitar este aviso. Nota: o correo electrónico tamén pode ser usado como inicio de sesión se o membro está ligado a un usuario. -WarningMandatorySetupNotComplete=Faga clic aquí para configurar os parámetros obrigatorios +WarningMandatorySetupNotComplete=Prema aquí para configurar os parámetros principais WarningEnableYourModulesApplications=Faga clic aquí para habilitar os seus módulos e aplicacións WarningSafeModeOnCheckExecDir=Aviso, a opción PHP safe_mode está activada polo que o comando debe almacenarse dentro dun directorio declarado polo parámetro php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Xa existe un marcador con este título ou este destino (URL). @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Aviso, non pode crear directamente unha subconta, debe WarningAvailableOnlyForHTTPSServers=Dispoñible só se usa conexión segura HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Non foi activado o módulo %s . Pode que perda moitos eventos aquí WarningPaypalPaymentNotCompatibleWithStrict=O valor "Estricto" fai que as funcións de pago en liña non funcionen correctamente. Use "Laxo" no seu lugar. +WarningThemeForcedTo=Aviso, o tema foi forzado a %s pola constante oculta MAIN_FORCETHEME -<<<<<<< CABECEIRA -======= -<<<<<<< CABECEIRA -<<<<<<< CABECEIRA ->>>>>>> rama '15.0' de git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Valor non válido RequireAtLeastXString = Require polo menos %s caracter(es) @@ -347,12 +347,3 @@ BadSetupOfField = Erro de configuración do campo BadSetupOfFieldClassNotFoundForValidation = Erro de configuración do campo: Non se atopou a clase para validación BadSetupOfFieldFileNotFound = Erro de configuración do campo: Non se atopou o ficheiro para a súa inclusión  BadSetupOfFieldFetchNotCallable = Erro de configuración do campo: A recuperación non se pode chamar na clase -<<<<<<< CABECEIRA -======= -======= -======= ->>>>>>> rama '15.0' de git@github.com:Dolibarr/dolibarr.git ->>>>>>> rama '15.0' de git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> rama '15.0' de git@github.com:Dolibarr/dolibarr.git ->>>>>>> rama '15.0' de git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/gl_ES/eventorganization.lang b/htdocs/langs/gl_ES/eventorganization.lang index e540221b042..76e3f4b916a 100644 --- a/htdocs/langs/gl_ES/eventorganization.lang +++ b/htdocs/langs/gl_ES/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Conferencia ou Stand AmountPaid = Cantidade xa paga DateOfRegistration = Data de rexistro ConferenceOrBoothAttendee = Asistente á conferencia ou stand +ApplicantOrVisitor=Solicitante ou visitante +Speaker=Ponente # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=O seu pagamento pola inscrici OrganizationEventBulkMailToAttendees=Esta é unha lembranza da súa participación no evento como asistente OrganizationEventBulkMailToSpeakers=Esta é unha lembranza da súa participación no evento como ponente OrganizationEventLinkToThirdParty=Ligazón a terceiros (cliente, provedor ou asociado) +OrganizationEvenLabelName=Nome público da conferencia ou posto NewSuggestionOfBooth=Solicitude de stand NewSuggestionOfConference=Solicitude para unha conferencia diff --git a/htdocs/langs/gl_ES/externalsite.lang b/htdocs/langs/gl_ES/externalsite.lang deleted file mode 100644 index 660ce32365c..00000000000 --- a/htdocs/langs/gl_ES/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configuración da ligazón ao sitio web externo -ExternalSiteURL=URL do sitio externo do contido iframe HTML -ExternalSiteModuleNotComplete=O módulo do sitio externo non foi configurado correctamente. -ExampleMyMenuEntry=O meu menú de entrada diff --git a/htdocs/langs/gl_ES/ftp.lang b/htdocs/langs/gl_ES/ftp.lang deleted file mode 100644 index ec3838e9007..00000000000 --- a/htdocs/langs/gl_ES/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuración do módulo cliente FTP ou SFTP -NewFTPClient=Nova configuración de conexión FTP/SFTP -FTPArea=Área FTP/SFTP -FTPAreaDesc=Esta pantalla amosa unha vista dun servidor FTP/SFTP -SetupOfFTPClientModuleNotComplete=A configuración do módulo cliente FTP ou SFTP parece estar imcompleta -FTPFeatureNotSupportedByYourPHP=O seu PHP non soporta funcións FTP/SFTP' -FailedToConnectToFTPServer=Fallo ao conectar ao servidor (servidor %s, porto %s) -FailedToConnectToFTPServerWithCredentials=Fallo ao iniciar sesión no servidor co inicio de sesión/contrasinal -FTPFailedToRemoveFile=Non foi posible eliminar o ficheiro %s. -FTPFailedToRemoveDir=Non foi posible eliminar o directorio %s (Comprobe os permisos e que o directorio está baleiro). -FTPPassiveMode=Modo pasivo -ChooseAFTPEntryIntoMenu=Escolla un sitio FTP/SFTM no menú ... -FailedToGetFile=Non foi posible acadar os ficheiros %s diff --git a/htdocs/langs/gl_ES/hrm.lang b/htdocs/langs/gl_ES/hrm.lang index 46542bdd313..5e3a257ceaf 100644 --- a/htdocs/langs/gl_ES/hrm.lang +++ b/htdocs/langs/gl_ES/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Abrir establecemento CloseEtablishment=Pechar establecemento # Dictionary DictionaryPublicHolidays=Permisos- Días Festivos -DictionaryDepartment=RRHH - Listaxe Departamentos +DictionaryDepartment=HRM - Unidade Organizativa DictionaryFunction=RRHH - Postos de traballo # Module Employees=Empregados @@ -70,9 +70,9 @@ RequiredSkills=Competencias precisas para este traballo UserRank=Rango de usuario SkillList=Listaxe de competencias SaveRank=Gardar rango -knowHow=Coñecemento -HowToBe=Como ser -knowledge=Coñecemento +TypeKnowHow=Coñecemento +TypeHowToBe=Como ser +TypeKnowledge=Coñecemento AbandonmentComment=Comentario de abandono DateLastEval=Data da última avaliación NoEval=Non se fixo ningunha avaliación para este empregado @@ -88,3 +88,5 @@ DeleteSkill = Competencia eliminada SkillsExtraFields=Atributos adicionais (Competencias) JobsExtraFields=Atributos adicionais (Postos) EvaluationsExtraFields=Atributos adicionais (avaliacións) +NeedBusinessTravels=Precisa viaxes de negocios +NoDescription=Sen descrición diff --git a/htdocs/langs/gl_ES/install.lang b/htdocs/langs/gl_ES/install.lang index 81eb34ea2f4..7fd233ea2e3 100644 --- a/htdocs/langs/gl_ES/install.lang +++ b/htdocs/langs/gl_ES/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=O ficheiro de configuración %s non se pode escribi ConfFileIsWritable=O ficheiro de configuración %s é escribíbel. ConfFileMustBeAFileNotADir=O ficheiro de configuración %s debe ser un ficheiro, non un directorio. ConfFileReload=Recargando parámetros do ficheiro de configuración. -NoReadableConfFileSoStartInstall=O ficheiro de configuración conf/conf.php non existe ou non se pode recuperar. Realizaremos o proceso de instalación para tentar inicializalo. +NoReadableConfFileSoStartInstall=O ficheiro de configuración conf/conf.php non existe ou non se pode ler. Realizaremos o proceso de instalación para tentar inicializalo. PHPSupportPOSTGETOk=Este PHP admite variables POST e GET. PHPSupportPOSTGETKo=É posible que a súa configuración de PHP non admita variables POST e/ou GET. Comprobe o parámetro variables_order en php.ini. PHPSupportSessions=Este PHP admite sesións. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Pode que escribise un valor incorrecto para o parám ErrorFailedToCreateDatabase=Fallo ao crear a base de datos '%s'. ErrorFailedToConnectToDatabase=Produciuse un fallo ao conectarse á base de datos '%s'. ErrorDatabaseVersionTooLow=A versión da base de datos (%s) é antiga de mais. É precisa a versión %s ou superior. -ErrorPHPVersionTooLow=A versión de PHP é antiga de mais. É precisa a versión %s. +ErrorPHPVersionTooLow=A versión de PHP é moi antiga. Requírese a versión %s ou superior. +ErrorPHPVersionTooHigh=Versión de PHP demasiado alta. Requírese a versión %s ou inferior. ErrorConnectedButDatabaseNotFound=Conexión correcta ao servidor pero non se atopou a base de datos '%s'. ErrorDatabaseAlreadyExists=A base de datos '%s' xa existe. IfDatabaseNotExistsGoBackAndUncheckCreate=Se a base de datos non existe, volte atrás e marque a opción "Crear base de datos". diff --git a/htdocs/langs/gl_ES/knowledgemanagement.lang b/htdocs/langs/gl_ES/knowledgemanagement.lang index 32e2d1c05dd..01faed8a48c 100644 --- a/htdocs/langs/gl_ES/knowledgemanagement.lang +++ b/htdocs/langs/gl_ES/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artigos KnowledgeRecord = Artigo KnowledgeRecordExtraFields = Campos extras para Artigos GroupOfTicket=Grupo de tickets -YouCanLinkArticleToATicketCategory=Pode ligar un artigo a un grupo de tickets (polo que o artigo suxerirase durante a cualificación de novos tickets) +YouCanLinkArticleToATicketCategory=Pode ligar o artigo a un grupo de entradas (polo que o artigo destacará en calquera entrada deste grupo) SuggestedForTicketsInGroup=Suxerido para tickes cando o grupo é SetObsolete=Establécese como obsoleto diff --git a/htdocs/langs/gl_ES/languages.lang b/htdocs/langs/gl_ES/languages.lang index f420e7470fd..9bcd20be684 100644 --- a/htdocs/langs/gl_ES/languages.lang +++ b/htdocs/langs/gl_ES/languages.lang @@ -3,6 +3,7 @@ Language_am_ET=Etíope Language_ar_AR=Árabe Language_ar_DZ=Árabe (Alxeria) Language_ar_EG=Árabe (Exipto) +Language_ar_JO=Árabe (Xordania) Language_ar_MA=Árabe (Marrocos) Language_ar_SA=Árabe Language_ar_TN=Arabe (Tunez) @@ -12,9 +13,11 @@ Language_az_AZ=Azerí Language_bn_BD=Bengalí Language_bn_IN=Bengali (India) Language_bg_BG=Búlgaro +Language_bo_CN=Tibetano Language_bs_BA=Bosnio Language_ca_ES=Catalán Language_cs_CZ=Checo +Language_cy_GB=Galés Language_da_DA=Danés Language_da_DK=Danés Language_de_DE=Alemán @@ -22,6 +25,7 @@ Language_de_AT=Alemán (Austria) Language_de_CH=Alemán (Suíza) Language_el_GR=Grego Language_el_CY=Grego (Chipre) +Language_en_AE=Inglés (Emiratos Árabes Unidos) Language_en_AU=Inglés (Australia) Language_en_CA=Inglés (Canadá) Language_en_GB=Inglés (Reino Unido) @@ -36,6 +40,7 @@ Language_es_AR=Español (Arxentina) Language_es_BO=Español (Bolivia) Language_es_CL=Español (Chile) Language_es_CO=Español (Colombia) +Language_es_CR=Español (Costa Rica) Language_es_DO=Español (República Dominicana) Language_es_EC=Español (Ecuador) Language_es_GT=Español (Guatemala) @@ -83,18 +88,21 @@ Language_lt_LT=Lituano Language_lv_LV=Letón Language_mk_MK=Macedonio Language_mn_MN=Mongol +Language_my_MM=Birmano Language_nb_NO=Noruegués (Bokmål) Language_ne_NP=Nepali Language_nl_BE=Holandés (Bélxica) Language_nl_NL=Alemán Language_pl_PL=Polaco Language_pt_AO=Portugués (Ángola) +Language_pt_MZ=Portugués (Mozambique) Language_pt_BR=Portugués (Brasil) Language_pt_PT=Portugués Language_ro_MD=Rumano (Moldavia) Language_ro_RO=Romanés Language_ru_RU=Ruso Language_ru_UA=Ruso (Ucraína) +Language_ta_IN=Tamil Language_tg_TJ=Taxico Language_tr_TR=Turco Language_sl_SI=Esloveno @@ -106,6 +114,7 @@ Language_sr_RS=Serbio Language_sw_SW=Kiswahili Language_th_TH=Tailandés Language_uk_UA=Ucraíno +Language_ur_PK=Urdú Language_uz_UZ=Usbeco Language_vi_VN=Vietnamita Language_zh_CN=Chinés diff --git a/htdocs/langs/gl_ES/loan.lang b/htdocs/langs/gl_ES/loan.lang index 5f3de7a9ab7..7e12acc786f 100644 --- a/htdocs/langs/gl_ES/loan.lang +++ b/htdocs/langs/gl_ES/loan.lang @@ -16,7 +16,7 @@ LoanAccountancyInsuranceCode=Conta contable seguro LoanAccountancyInterestCode=Conta contable interese ConfirmDeleteLoan=¿Está certo de querer eliminar este empréstito? LoanDeleted=Empréstito eliminado correctamente -ConfirmPayLoan=¿Esta certo de querer clasificar como pagado este empréstito? +ConfirmPayLoan=¿Está certo de querer clasificar como pagado este empréstito? LoanPaid=Empréstito pagado ListLoanAssociatedProject=Listaxe de empréstitos asociados ao proxecto AddLoan=Crear empréstito @@ -24,7 +24,7 @@ FinancialCommitment=Compromiso financieiro InterestAmount=Interese CapitalRemain=Capital restante TermPaidAllreadyPaid = Este prazo xa está pago -CantUseScheduleWithLoanStartedToPaid = Non pode usar o planificador para un emprétito con pago iniciado +CantUseScheduleWithLoanStartedToPaid = Non se pode xerar un cronograma para un rmpréstito cun pago iniciado CantModifyInterestIfScheduleIsUsed = Non pode modificar os intereses se xa está planificado # Admin ConfigLoan=Configuración do módulo empréstitos diff --git a/htdocs/langs/gl_ES/mails.lang b/htdocs/langs/gl_ES/mails.lang index c07d760d06c..fe60a5ecd61 100644 --- a/htdocs/langs/gl_ES/mails.lang +++ b/htdocs/langs/gl_ES/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=É unha resposta de un coreo electrónico recibido RecordCreatedByEmailCollector=Rexistro creado polo receptor de correo electrónico %s a partir do correo electrónico %s DefaultBlacklistMailingStatus=Valor predeterminado para o campo '%s' ao crear un novo contacto DefaultStatusEmptyMandatory=Baleiro pero obrigatorio +WarningLimitSendByDay=ADVERTENCIA: a configuración ou o contrato da súa instancia limita o seu número de correos electrónicos ao día a %s . Se tenta enviar máis, pode que a súa instancia se ralentice ou se suspenda. Poñase en contacto co seu servizo de asistencia se precisa unha cota máis alta. diff --git a/htdocs/langs/gl_ES/main.lang b/htdocs/langs/gl_ES/main.lang index 4b818e1fb4e..3c0a86274b9 100644 --- a/htdocs/langs/gl_ES/main.lang +++ b/htdocs/langs/gl_ES/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -712,6 +718,7 @@ FeatureDisabled=Función desactivada MoveBox=Mover panel Offered=S/Custo NotEnoughPermissions=Non ten permisos para esta acción +UserNotInHierachy=Esta acción está reservada aos supervisores deste usuario SessionName=Nome sesión Method=Método Receive=Recepción @@ -1177,3 +1184,6 @@ CommercialAffected=Representante de vendas afectado YourMessage=A súa mensaxe YourMessageHasBeenReceived=Recibiuse a súa mensaxe. Atenderemos ou contactaremos con vostede canto antes. UrlToCheck=URL para comprobar +Automation=Automatización +CreatedByEmailCollector=Creado por Recolector de Correo +CreatedByPublicPortal=Creado a partir do portal público diff --git a/htdocs/langs/gl_ES/members.lang b/htdocs/langs/gl_ES/members.lang index 87d54b4007c..89cdbb00ba5 100644 --- a/htdocs/langs/gl_ES/members.lang +++ b/htdocs/langs/gl_ES/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Data de finalización da filiación EndSubscription=Finalización da filiación SubscriptionId=ID de achega WithoutSubscription=Sen achega -MemberId=ID membro +MemberId=Id. do membro +MemberRef=Ref. Membro NewMember=Novo membro MemberType=Tipo de membro MemberTypeId=ID tipo de membro diff --git a/htdocs/langs/gl_ES/modulebuilder.lang b/htdocs/langs/gl_ES/modulebuilder.lang index 69d0c02b528..4fdb87efd4d 100644 --- a/htdocs/langs/gl_ES/modulebuilder.lang +++ b/htdocs/langs/gl_ES/modulebuilder.lang @@ -153,3 +153,4 @@ LinkToParentMenu=Menú principal (fk_xxxxmenu) ListOfTabsEntries=Lista de entradas de pestanas TabsDefDesc=Defina aquí as pestanas que proporciona o seu módulo TabsDefDescTooltip=As pestanas proporcionadas polo seu módulo/aplicación defínense na matriz $this->tabs no ficheiro descritor do módulo. Pode editar este ficheiro manualmente ou usar o editor incorporado. +BadValueForType=Valor incorrecto para o tipo %s diff --git a/htdocs/langs/gl_ES/oauth.lang b/htdocs/langs/gl_ES/oauth.lang index 1355842921f..5fbff98dd7f 100644 --- a/htdocs/langs/gl_ES/oauth.lang +++ b/htdocs/langs/gl_ES/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Foi xerado e gardado na base de datos local un token NewTokenStored=Token recibido e gardado ToCheckDeleteTokenOnProvider=Faga clic aquí para comprobar/eliminar a autorización gardada polo fornecedor de OAuth %s TokenDeleted=Token eliminado -RequestAccess=Faga clic aquí para consultar/renovar acceso e recibir un novo token a gardar +RequestAccess=Prema aquí para solicitar/renovar o acceso e recibir un novo token DeleteAccess=Faga clic aquí para eliminar o token UseTheFollowingUrlAsRedirectURI=Utilice o seguinte URL como redirección URI cando cree as súas credenciais co seu provedor de OAuth: -ListOfSupportedOauthProviders=Introduza as credenciais proporcionadas polo seu provedor OAuth2. Aquí só figuran os provedores compatibles con OAuth2. Estes servizos poden ser empregados por outros módulos que precisan autenticación OAuth2. -OAuthSetupForLogin=Páxina para xerar un token OAuth +ListOfSupportedOauthProviders=Engada os seus provedores de tokens OAuth2. A continuación, vaia á páxina de administración do seu provedor de OAuth para crear/obter un ID de OAuth e un Segredo e gárdeos aquí. Unha vez feito isto, active a outra pestana para xerar o seu token. +OAuthSetupForLogin=Páxina para xestionar (xerar/eliminar) tokens OAuth SeePreviousTab=Ver a lapela previa +OAuthProvider=Provedor de OAuth OAuthIDSecret=ID OAuth e contrasinal TOKEN_REFRESH=Actualizar o token actual TOKEN_EXPIRED=Token expirado @@ -23,10 +24,13 @@ TOKEN_DELETE=Eliminar token gardado OAUTH_GOOGLE_NAME=Servicio Oauth Google OAUTH_GOOGLE_ID=Id Oauth Google OAUTH_GOOGLE_SECRET=Oauth Google Secret -OAUTH_GOOGLE_DESC=Vaia a esta páxina e a "Credenciais" para crear credenciais Oauth OAUTH_GITHUB_NAME=Servizo Oauth GitHub OAUTH_GITHUB_ID=Id Oauth Github OAUTH_GITHUB_SECRET=Oauth GitHub Secret -OAUTH_GITHUB_DESC=Vaia a esta páxina e a "Rexistrar unha nova aplicación" para crear crecenciais Oauth +OAUTH_URL_FOR_CREDENTIAL=Vaia a esta páxina para crear ou obter o seu ID e Segredo de OAuth OAUTH_STRIPE_TEST_NAME=Test OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=ID de OAuth +OAUTH_SECRET=Segredo de OAuth +OAuthProviderAdded=Engadiuse o provedor de OAuth +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Xa existe unha entrada de OAuth e etiqueta para este provedor diff --git a/htdocs/langs/gl_ES/orders.lang b/htdocs/langs/gl_ES/orders.lang index b7b0abc7a20..f507393d4fc 100644 --- a/htdocs/langs/gl_ES/orders.lang +++ b/htdocs/langs/gl_ES/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=Xa estaba aberta un pedimento ligado a este orzamento, polo que non se creou outro pedimento automaticamente OrdersArea=Área pedimentos de clientes SuppliersOrdersArea=Área pedimentos a provedores OrderCard=Ficha pedimento diff --git a/htdocs/langs/gl_ES/other.lang b/htdocs/langs/gl_ES/other.lang index b85a36abaca..64bba2a89bd 100644 --- a/htdocs/langs/gl_ES/other.lang +++ b/htdocs/langs/gl_ES/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Está certo de querer "%s"? ConfirmBtnCommonTitle = Confirma a súa acción CloseDialog = Peche Autofill = Cubre automáticamente + +# externalsite +ExternalSiteSetup=Configuración da ligazón ao sitio web externo +ExternalSiteURL=URL do sitio externo do contido iframe HTML +ExternalSiteModuleNotComplete=O módulo do sitio externo non foi configurado correctamente. +ExampleMyMenuEntry=O meu menú de entrada + +# FTP +FTPClientSetup=Configuración do módulo cliente FTP ou SFTP +NewFTPClient=Nova configuración de conexión FTP/SFTP +FTPArea=Área FTP/SFTP +FTPAreaDesc=Esta pantalla amosa unha vista dun servidor FTP/SFTP +SetupOfFTPClientModuleNotComplete=A configuración do módulo cliente FTP ou SFTP parece estar imcompleta +FTPFeatureNotSupportedByYourPHP=O seu PHP non soporta funcións FTP/SFTP' +FailedToConnectToFTPServer=Fallo ao conectar ao servidor (servidor %s, porto %s) +FailedToConnectToFTPServerWithCredentials=Fallo ao iniciar sesión no servidor co inicio de sesión/contrasinal +FTPFailedToRemoveFile=Non foi posible eliminar o ficheiro %s. +FTPFailedToRemoveDir=Non foi posible eliminar o directorio %s (Comprobe os permisos e que o directorio está baleiro). +FTPPassiveMode=Modo pasivo +ChooseAFTPEntryIntoMenu=Escolla un sitio FTP/SFTM no menú ... +FailedToGetFile=Non foi posible acadar os ficheiros %s diff --git a/htdocs/langs/gl_ES/paypal.lang b/htdocs/langs/gl_ES/paypal.lang index 1544765cc29..02f64c1faf9 100644 --- a/htdocs/langs/gl_ES/paypal.lang +++ b/htdocs/langs/gl_ES/paypal.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=Configuración do módulo PayPal -PaypalDesc=Este módulo permite pagos de clientes vía Paypal. Isto pode usarse para realizar calquera pago en relación cun obxecto Dolibarr (facturas, pedimentos ...) +PaypalDesc=Este módulo permite o pagamento dos clientes vía PayPal. Pódese utilizar para un pagamento ad-hoc ou para un pagamento relacionado cun obxecto Dolibarr (factura, pedidmento, ...) PaypalOrCBDoPayment=Pagar con Paypal (tarxeta ou Paypal) PaypalDoPayment=Pago mediante Paypal PAYPAL_API_SANDBOX=Modo de probas/sandbox diff --git a/htdocs/langs/gl_ES/products.lang b/htdocs/langs/gl_ES/products.lang index e33ef8c5f12..7dd2ca5f92f 100644 --- a/htdocs/langs/gl_ES/products.lang +++ b/htdocs/langs/gl_ES/products.lang @@ -262,7 +262,7 @@ Quarter1=1º trimestre Quarter2=2º trimestre Quarter3=3º trimestre Quarter4=4º trimestre -BarCodePrintsheet=Imprimir código de barras +BarCodePrintsheet=Imprimir códigos de barras PageToGenerateBarCodeSheets=Con esta ferramenta pode imprimir follas de pegatinas de código de barras. Escolla o formato da páxina da pegatina, o tipo de código de barras e o valor do código de barras e prema no botón %s. NumberOfStickers=Número de pegatinas para imprimir na páxina PrintsheetForOneBarCode=Imprimir varias pegatinas para un código de barras diff --git a/htdocs/langs/gl_ES/stocks.lang b/htdocs/langs/gl_ES/stocks.lang index 191fd19bedf..0d6311a63a3 100644 --- a/htdocs/langs/gl_ES/stocks.lang +++ b/htdocs/langs/gl_ES/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Límite stock para alertas e stock óptimo desxeado ProductStockWarehouseUpdated=Límite stock para alertas e stock óptimo desexado actualizado correctamente ProductStockWarehouseDeleted=Límite stock para alertas e stock óptimo desexado eliminado correctamente AddNewProductStockWarehouse=Indicar novo límite para alertas e stock óptimo desexado -AddStockLocationLine=Disminúa a cantidade, e a continuación, prema para agregar outro almacén para este produto +AddStockLocationLine=Diminua a cantidade e prema para dividir a liña InventoryDate=Data inventario Inventories=Inventarios NewInventory=Novo inventario @@ -254,7 +254,7 @@ ReOpen=Abrir de novo ConfirmFinish=Está certo de querer pechar o inventario? Isto xerará todos os movementos de stock para actualizar o stock á cantidade real que ingresou no inventario. ObjectNotFound=%s non foi atopado MakeMovementsAndClose=Xera movementos e pecha -AutofillWithExpected=Substitúe a cantidade real pola cantidade agardada +AutofillWithExpected=Encher a cantidade real coa cantidade agardada ShowAllBatchByDefault=De xeito predeterminado, amosa os detalles do lote na lapela "stock" do produto CollapseBatchDetailHelp=Pode configurar a visualización predeterminada do detalle do lote na configuración do modulo stocks ErrorWrongBarcodemode=Modo de código de barras descoñecido @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Produtos con código de barras inexistente WarehouseId=Id do almacén WarehouseRef=Referencia do almacén SaveQtyFirst=Garda primeiro as cantidades reais inventariadas, antes de solicitar a creación do movemento de stock. +ToStart=Inciciar InventoryStartedShort=Pagamento parcial ErrorOnElementsInventory=A operación cancelouse polo seguinte motivo: ErrorCantFindCodeInInventory=Non se pode atopar o seguinte código no inventario QtyWasAddedToTheScannedBarcode=Feito!! Engadiuse a cantidade a todos os códigos de barras solicitados. Pode pechar a ferramenta de escáner. StockChangeDisabled=Cambio de stock desactivado NoWarehouseDefinedForTerminal=Non hai un almacén definido para a terminal +ClearQtys=Borrar todas as cantidades +ModuleStockTransferName=Transferencia de stock avanzada +ModuleStockTransferDesc=Xestión avanzada de Transferencia de Stocks, con xeración de folla de transferencia +StockTransferNew=Nova transferencia de existencias +StockTransferList=Lista de transferencias de existencias +ConfirmValidateStockTransfer=Está certo de querer validar esta transferencia de stocks coa referencia %s ? +ConfirmDestock=Diminución de stocks con transferencia %s +ConfirmDestockCancel=Cancelar diminución de existéncias con transferencia %s +DestockAllProduct=Diminución de existéncias +DestockAllProductCancel=Cancelar diminución de existéncias +ConfirmAddStock=Aumenta as existéncias coa transferencia %s +ConfirmAddStockCancel=Cancelar aumento de existéncias coa transferencia %s +AddStockAllProduct=Aumento de existéncias +AddStockAllProductCancel=Cancelar aumento de existéncias +DatePrevueDepart=Data prevista de saída +DateReelleDepart=Data real de saída +DatePrevueArrivee=Data prevista de chegada +DateReelleArrivee=Data real de chegada +HelpWarehouseStockTransferSource=Se este almacén está configurado, só estarán dispoñibles el mesmo e os seus fillos como almacén de orixe +HelpWarehouseStockTransferDestination=Se este almacén está configurado, só estarán dispoñibles el mesmo e os seus fillos como almacén de destino +LeadTimeForWarning=Prazo de execución antes da alerta (en días) +TypeContact_stocktransfer_internal_STFROM=Remitente da transferencia de existéncias +TypeContact_stocktransfer_internal_STDEST=Destinatario da transferencia de existéncias +TypeContact_stocktransfer_internal_STRESP=Responsable de transferencia de existencias +StockTransferSheet=Folla de transferencia de existéncias +StockTransferSheetProforma=Proforma da folla de transferencia de existéncias +StockTransferDecrementation=Diminuír os almacéns orixe +StockTransferIncrementation=Aumentar os almacéns de destino +StockTransferDecrementationCancel=Cancelar a diminución dos almacéns orixe +StockTransferIncrementationCancel=Cancelar aumento de almacéns de destino +StockStransferDecremented=Os almacéns orixe diminuíron +StockStransferDecrementedCancel=Cancelouse a diminución dos almacéns orixe +StockStransferIncremented=Pechado - As existéncias foron transferidas +StockStransferIncrementedShort=Existéncias transferidas +StockStransferIncrementedShortCancel=Aumento de almacéns de destino cancelados +StockTransferNoBatchForProduct=O produto %s non usa lote, borre o lote en liña e ténteo de novo +StockTransferSetup = Configuración do módulo de transferencia de existéncias +Settings=Configuracións +StockTransferSetupPage = Páxina de configuración do módulo de transferencia de existéncias +StockTransferRightRead=Ler transferencias de existéncias +StockTransferRightCreateUpdate=Crear/Actualizar transferencias de existéncias +StockTransferRightDelete=Eliminar transferencias de existéncias +BatchNotFound=Lote/serie non atopada para este produto diff --git a/htdocs/langs/gl_ES/stripe.lang b/htdocs/langs/gl_ES/stripe.lang index 93c5177ca4a..a661bca00b4 100644 --- a/htdocs/langs/gl_ES/stripe.lang +++ b/htdocs/langs/gl_ES/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Ligazón para configurar Stripe WebHook para chamar a PaymentWillBeRecordedForNextPeriod=O pago será rexistrado para o seguinte período. ClickHereToTryAgain= Faga clic aquí para tentalo de novo ... CreationOfPaymentModeMustBeDoneFromStripeInterface=Debido a fortes regras de autenticación do cliente, a creación dunha tarxeta debe facerse desde o backoffice de Stripe. Pode facer clic aquí para activar o rexistro de cliente de Stripe:%s +TERMINAL_LOCATION=Localización (enderezo) dos terminais diff --git a/htdocs/langs/gl_ES/suppliers.lang b/htdocs/langs/gl_ES/suppliers.lang index b49ac0b2e86..f16a8c6694f 100644 --- a/htdocs/langs/gl_ES/suppliers.lang +++ b/htdocs/langs/gl_ES/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Nome do comprador AllProductServicePrices=Todos os prezos de produto/servizo AllProductReferencesOfSupplier=Todas as referencias de provedores de produto/servizo BuyingPriceNumShort=Prezos provedor +RepeatableSupplierInvoice=Padrón de factura do provedor +RepeatableSupplierInvoices=Padrón de facturas de provedores +RepeatableSupplierInvoicesList=Padrón de facturas de provedores +RecurringSupplierInvoices=Facturas de provedores recorrentes +ToCreateAPredefinedSupplierInvoice=Para crear un padrón de factura de provedor, debe crear unha factura estándar, despois, sen validala, premer no botón "%s". +GeneratedFromSupplierTemplate=Xerado a partir do modelo de factura do provedor %s +SupplierInvoiceGeneratedFromTemplate=Factura de provedor %s Xerada a partir do padrón de factura do provedor %s diff --git a/htdocs/langs/gl_ES/ticket.lang b/htdocs/langs/gl_ES/ticket.lang index acf19a6f6d0..d266ef22e0c 100644 --- a/htdocs/langs/gl_ES/ticket.lang +++ b/htdocs/langs/gl_ES/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Na seguinte url está dispoñible unha interface pública que TicketSetupDictionaries=Os tipos de categorías e os niveis de gravidade podense configurar nos diccionarios TicketParamModule=Configuración de variables do módulo TicketParamMail=Configuración de correo electrónicol -TicketEmailNotificationFrom=Correo electrónico do remitente para as respostas dos tickets -TicketEmailNotificationFromHelp=Correo electrónico do remitente para as respostas dos tickets enviadas desde Dolibarr +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Notificar a creación do ticket a este enderezo de correo electrónico TicketEmailNotificationToHelp=Se está presente, este enderezo de correo electrónico será notificado da creación dun ticket TicketNewEmailBodyLabel=Mensaxe de texto enviado despois de crear un ticket diff --git a/htdocs/langs/gl_ES/website.lang b/htdocs/langs/gl_ES/website.lang index cb01e726bb7..464e789d967 100644 --- a/htdocs/langs/gl_ES/website.lang +++ b/htdocs/langs/gl_ES/website.lang @@ -45,7 +45,7 @@ ViewWebsiteInProduction=Ver o sitio web usando URL de inicio SetHereVirtualHost= Usar con Apache/NGinx/...
Cree no seu servidor web (Apache, Nginx, ...) un host virtual adicado con PHP habilitado e un directorio raíz en
%s ExampleToUseInApacheVirtualHostConfig=Exemplo para usar na configuración do host virtual Apache: YouCanAlsoTestWithPHPS= Usar con servidor incorporado PHP
No entorno de desenvolvemento, pode que prefira probar o sitio co servidor web incorporado PHP (é preciso PHP 5.5) executando
php -S 0.0.0.0:8080 -t %s -YouCanAlsoDeployToAnotherWHP= Execute o seu sitio web con outro provedor de hospedaxe Dolibarr
Se non ten un servidor web como Apache ou NGinx dispoñible en internet, pode exportar e importar o seu sitio web a outro Dolibarr por outro provedor de hospedaxe Dolibarr que proporciona unha integración completa co módulo do sitio web. Pode atopar unha lista dalgúns provedores de hospedaxe Dolibarr en https://saas.dolibarr.org +YouCanAlsoDeployToAnotherWHP= Execute o seu sitio web con outro provedor de hospedaxe Dolibarr
Se non ten un servidor web como Apache ou NGinx dispoñible en internet, pode exportar e importar o seu sitio web a outro Dolibarr proporcionado por outro provedor de hospedaxe Dolibarr que permite unha integración completa co módulo do sitio web. Pode atopar unha listaxe dalgúns provedores de hospedaxe Dolibarr en https://saas.dolibarr.org CheckVirtualHostPerms=Comprobe tamén que o usuario do host virtual (por exemplo, www-data) ten permisos de %s nos ficheiros en
%s ReadPerm=Ler WritePerm=Escribir @@ -60,7 +60,7 @@ YouCanEditHtmlSourceckeditor=Pode editar o código fonte HTML empregando o botó YouCanEditHtmlSource=
Pode incluír código PHP nesta fonte empregando etiquetas <?php ?>. Están dispoñibles as seguintes variables: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Tamén podes incluír contido doutra páxina/contedor coa seguinte sintaxe:
<?php includeContainer('alias_of_container_to_include'); ?>

Pode facer unha redirección a outra páxina / contedor coa seguinte sintaxe (Nota: non publique ningún contido antes dunha redirección):
<?php redirectToContainer('alias_of_container_to_redirect_to'); ?>

Para engadir unha ligazón a outra páxina, use a sintaxe: :
<a href="alias_of_page_to_link_to.php">mylink<a>

Para incluír unha ligazón para descargar un ficheiro almacenado no directorio documentos , use o envoltorio document.php wrapper:
Exemplo, para un ficheiro en documentos / ecm (hai que rexistralo), a sintaxe é :
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Para un ficheiro en documentos/medios (abrir o directorio para acceso público), a sintaxe é:
<a href="/document.php?modulepart=medias&file=[relative_dir/]filename.ext">
Para un ficheiro compartido con unha ligazón para compartir (acceso aberto empregando a chave hash para compartir ficheiro), a sintaxe é:
<a href="/document.php?hashp=publicsharekeyoffile">

Para incluír unha imaxe almacenada no directorio documentos , use o envoltorio viewimage.php
Exemplo, para unha imaxe en documentos/medios (directorio aberto para acceso público), a sintaxe é:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
#YouCanEditHtmlSource2=
To include a image shared publicaly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource2=Para unha imaxe compartida cunha ligazón de uso compartido (acceso aberto mediante a chave hash para compartir ficheiro), a sintaxe é:
<img src =" viewimage.php? Hashp=12345679012 ...">
-YouCanEditHtmlSourceMore=
Máis exemplos de código HTML ou dinámico dispoñibles na documentación wiki
+YouCanEditHtmlSourceMore=
Máis exemplos de código HTML ou dinámico dispoñibles na documentación wiki
ClonePage=Clonar páxina/contedor CloneSite=Clonar sitio SiteAdded=Sitio web engadido diff --git a/htdocs/langs/he_IL/admin.lang b/htdocs/langs/he_IL/admin.lang index 9a3360b7938..9d9e1c5fccd 100644 --- a/htdocs/langs/he_IL/admin.lang +++ b/htdocs/langs/he_IL/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Next value (replacements) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=הערה: אין גבול מוגדר בתצורת שלך PHP MaxSizeForUploadedFiles=הגודל המקסימלי של קבצים שאפשר להעלות (0 לאסור על כל ההעלאה) -UseCaptchaCode=השתמש בקוד גרפי (CAPTCHA) בדף הכניסה +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=הנתיב המלא האנטי וירוס הפקודה AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= פרמטרים נוספים על שורת הפקודה @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -718,9 +718,9 @@ Permission34=מחק מוצרים Permission36=ראה / ניהול מוצרים מוסתרים Permission38=ייצוא מוצרים Permission39=Ignore minimum price -Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) -Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks -Permission44=Delete projects (shared project and projects I'm contact for) +Permission41=Read projects and tasks (shared projects and projects of which I am a contact). +Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks +Permission44=Delete projects (shared projects and projects of which I am a contact) Permission45=Export projects Permission61=לקרוא התערבויות Permission62=צור / לשנות התערבויות @@ -766,9 +766,10 @@ Permission122=ליצור / לשנות צדדים שלישיים קשורה המ Permission125=מחק צדדים שלישיים הקשורים המשתמש Permission126=ייצוא צדדים שלישיים Permission130=Create/modify third parties payment information -Permission141=Read all projects and tasks (also private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) -Permission144=Delete all projects and tasks (also private projects i am not contact for) +Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) +Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) +Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) Permission146=לקרוא ספקי Permission147=קרא את סטטיסטיקת Permission151=Read direct debit payment orders @@ -883,6 +884,9 @@ Permission564=Record Debits/Rejections of credit transfer Permission601=Read stickers Permission602=Create/modify stickers Permission609=Delete stickers +Permission611=Read attributes of variants +Permission612=Create/Update attributes of variants +Permission613=Delete attributes of variants Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials @@ -969,6 +973,8 @@ Permission4021=Create/modify your evaluation Permission4022=Validate evaluation Permission4023=Delete evaluation Permission4030=See comparison menu +Permission4031=Read personal information +Permission4032=Write personal information Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1068,6 +1074,7 @@ DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category DictionaryTransportMode=Intracomm report - Transport mode DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=הגדרת הציל SetupNotSaved=Setup not saved @@ -1122,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=בסוף החודש -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=לקזז AlwaysActive=פעיל תמיד Upgrade=שדרוג @@ -1187,7 +1194,7 @@ BankModuleNotActive=חשבונות בנק המודול לא מופעל ShowBugTrackLink=Show the link "%s" ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' Alerts=התראות -DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time @@ -1339,6 +1346,7 @@ TransKeyWithoutOriginalValue=You forced a new translation for the translation ke TitleNumberOfActivatedModules=Activated modules TotalNumberOfActivatedModules=Activated modules: %s / %s YouMustEnableOneModule=You must at least enable 1 module +YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Yes in summer OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
@@ -1420,6 +1428,8 @@ WatermarkOnDraftInvoices=סימן מים על חשבוניות טיוטה (כל PaymentsNumberingModule=Payments numbering model SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup +InvoiceCheckPosteriorDate=Check facture date before validation +InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. ##### Proposals ##### PropalSetup=מודול הצעות מסחרי ההתקנה ProposalsNumberingModules=הצעה מסחרית המונה מודולים @@ -1917,6 +1927,7 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +UseBorderOnTable=Show left-right borders on tables BtnActionColor=Color of the action button TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title @@ -1925,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -1938,7 +1949,7 @@ EnterAnyCode=This field contains a reference to identify the line. Enter any val Enter0or1=Enter 0 or 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=The RGB color is in HEX format, eg: FF0000 -PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module) +PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) PositionIntoComboList=Position of line into combo lists SellTaxRate=Sales tax rate RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. @@ -2037,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s @@ -2048,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2057,18 +2069,30 @@ EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ? +ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result +EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? +EmailCollectorConfirmCollect=Do you want to run this collector now? +EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. +EmailCollectorExampleToCollectLeads=Example collecting leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. +EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) @@ -2089,7 +2113,7 @@ ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users DisabledResourceLinkContact=Disable feature to link a resource to contacts -EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event +EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda ConfirmUnactivation=Confirm module reset OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) @@ -2134,7 +2158,7 @@ DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow access to some host IP only (wildcard not allowed, use space between values). Empty means every hosts can access. +RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Based on the library SabreDAV version NotAPublicIp=Not a public IP @@ -2144,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2206,12 +2233,12 @@ DashboardDisableBlockAdherent=Disable the thumb for memberships DashboardDisableBlockExpenseReport=Disable the thumb for expense reports DashboardDisableBlockHoliday=Disable the thumb for leaves EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax LanguageAndPresentation=Language and presentation SkinAndColors=Skin and colors -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax PDF_USE_1A=Generate PDF with PDF/A-1b format MissingTranslationForConfKey = Missing translation for %s NativeModules=Native modules @@ -2220,3 +2247,35 @@ API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first PreviousHash=Previous hash +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size +InventorySetup= Inventory Setup +ExportUseLowMemoryMode=Use a low memory mode +ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + +HashForPing=Hash used for ping +ReadOnlyMode=Is instance in "Read Only" mode +DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + +IconAndText=Icon and text +TextOnly=Text only +IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar +IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon +IconOnly=Icon only - Text on tooltip only +INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices +INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/he_IL/errors.lang b/htdocs/langs/he_IL/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/he_IL/errors.lang +++ b/htdocs/langs/he_IL/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/he_IL/externalsite.lang b/htdocs/langs/he_IL/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/he_IL/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/he_IL/ftp.lang b/htdocs/langs/he_IL/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/he_IL/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/hi_IN/errors.lang b/htdocs/langs/hi_IN/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/hi_IN/errors.lang +++ b/htdocs/langs/hi_IN/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/hi_IN/externalsite.lang b/htdocs/langs/hi_IN/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/hi_IN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/hi_IN/ftp.lang b/htdocs/langs/hi_IN/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/hi_IN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/hr_HR/accountancy.lang b/htdocs/langs/hr_HR/accountancy.lang index 383c8595b33..2a67266e2bc 100644 --- a/htdocs/langs/hr_HR/accountancy.lang +++ b/htdocs/langs/hr_HR/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Onemogućite izravno bilježenje transakcije na bankov ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value) ACCOUNTING_DATE_START_BINDING=Define a date to start binding & transfer in accountancy. Below this date, the transactions will not be transferred to accounting. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, select period show by default +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Sell journal ACCOUNTING_PURCHASE_JOURNAL=Purchase journal @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Accounting account to register donations ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Accounting account to register subscriptions ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for the bought products (used if not defined in the product sheet) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=If you setup accounting account on type of expense r DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account Closure=Godišnje zatvaranje -DescClosure=Consult here the number of movements by month who are not yet validated & locked +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Overview of movements not validated and locked AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Naž AccountancyErrorMismatchLetterCode=Mismatch in reconcile code AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Accounting entries diff --git a/htdocs/langs/hr_HR/admin.lang b/htdocs/langs/hr_HR/admin.lang index 1c6f33d0ac9..d3b008d537c 100644 --- a/htdocs/langs/hr_HR/admin.lang +++ b/htdocs/langs/hr_HR/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Sljedeća vrijednost (zamjene) MustBeLowerThanPHPLimit=Napomena: vaša PHP konfiguracija trenutno ograničava maksimalnu veličinu datoteke za prijenos na %s %s, bez obzira na vrijednost ovog parametra NoMaxSizeByPHPLimit=Napomena: Limit nije podešen u vašoj PHP konfiguraciji MaxSizeForUploadedFiles=Maksimalna veličina datoteka za upload (0 onemogučuje bilokakav upload) -UseCaptchaCode=Koristi grafički kod (CAPTCHA) na stranici za prijavu +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Puna putanja do antivirusne komande AntiVirusCommandExample=Primjer za ClamAv Daemon (zahtijeva clamav-daemon): /usr/bin/clamdscan
Primjer za ClamWin (vrlo vrlo spor): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Dodatni parametri za komandnu liniju @@ -504,7 +504,7 @@ WarningPHPMailC=- Korištenje SMTP poslužitelja vašeg vlastitog davatelja uslu WarningPHPMailD=Također, stoga se preporuča promijeniti način slanja e-mailova na vrijednost "SMTP". Ako stvarno želite zadržati zadanu "PHP" metodu za slanje e-pošte, jednostavno zanemarite ovo upozorenje ili ga uklonite postavljanjem MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP konstante na 1 u Početna - Postavljanje - Ostalo. WarningPHPMail2=Ako vaš SMTP davatelj usluge e-pošte treba ograničiti klijenta e-pošte na neke IP adrese (vrlo rijetko), ovo je IP adresa korisničkog agenta e-pošte (MUA) za vašu ERP CRM aplikaciju: %s . WarningPHPMailSPF=Ako je naziv domene u adresi e-pošte pošiljatelja zaštićen SPF zapisom (pitajte svoj registar imena domene), morate dodati sljedeće IP adrese u SPF zapis DNS-a vaše domene: %s . -ActualMailSPFRecordFound=Pronađen je stvarni SPF zapis: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Kliknite za prikaz opisa DependsOn=Ovaj modul treba modul(e) RequiredBy=Ovaj modul je potreban za modul(i) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Vrijednost konfiguracijske konstante ConstantIsOn=Opcija %s je uključena NbOfDays=Broj dana AtEndOfMonth=Na kraju mjeseca -CurrentNext=Trenutni/Sljedeći +CurrentNext=A given day in month Offset=Offset AlwaysActive=Uvjek aktivno Upgrade=Nadogradnja @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Pritisnite CTRL+F5 na tipkovnici ili izbrišite predmem NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Boja pozadine TopMenuBackgroundColor=Boja pozadine za gornji izbornik -TopMenuDisableImages=Sakrij slike u gornjem izborniku +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Boja pozadine lijevog izbornika BackgroundTableTitleColor=Boja pozadine za zaglavlje tablica BackgroundTableTitleTextColor=Boja teksta za naslovni redak tablice @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Zamijenite položaj adrese pošiljatelja i primatelja na PDF dokumentima FeatureSupportedOnTextFieldsOnly=Upozorenje, značajka je podržana samo u tekstualnim poljima i kombiniranim popisima. Također se mora postaviti parametar URL-a action=create ili action=edit ILI naziv stranice mora završavati s 'new.php' da bi se aktivirala ova značajka. EmailCollector=Sakupljač e-pošte +EmailCollectors=Email collectors EmailCollectorDescription=Dodajte zakazani posao i stranicu za postavljanje za redovito skeniranje sandučića e-pošte (pomoću IMAP protokola) i snimanje e-pošte primljenih u vašu aplikaciju, na pravom mjestu i/ili kreiranje nekih zapisa automatski (poput potencijalnih klijenata). NewEmailCollector=Novi sakupljač e-pošte EMailHost=Host IMAP poslužitelja e-pošte @@ -2073,14 +2074,14 @@ DateLastCollectResult=Datum posljednjeg pokušaja prikupljanja DateLastcollectResultOk=Datum posljednjeg uspjeha prikupljanja LastResult=Najnoviji rezultat EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Nema nove e-pošte (odgovarajući filteri) za obradu NothingProcessed=Ništa nije učinjeno -XEmailsDoneYActionsDone=%s e-poruke kvalificirane, %s e-poruke uspješno obrađene (za %s zapis/radnje izvršene) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Zabilježite događaj u dnevnom redu (s vrstom Email poslana ili primljena) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Email predložak EMailsWillHaveMessageID=E-poruke će imati oznaku "Reference" koja odgovara ovoj sintaksi PDF_SHOW_PROJECT=Prikaži projekt na dokumentu ShowProjectLabel=Oznaka projekta +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Generirajte PDF dokumente u formatu PDF/A umjesto zadanog formata PDF FafaIconSocialNetworksDesc=Ovdje unesite kod ikone FontAwesome. Ako ne znate što je FontAwesome, možete koristiti generičku vrijednost fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Predložak za posjetnicu u različitim veličinama InventorySetup= Postavljanje zaliha ExportUseLowMemoryMode=Koristite način rada s malo memorije ExportUseLowMemoryModeHelp=Upotrijebite način rada s malo memorije da izvršite exec ispis (komprimiranje se vrši kroz cijev umjesto u PHP memoriju). Ova metoda ne dopušta provjeru je li datoteka dovršena i poruka o pogrešci se ne može prijaviti ako ne uspije. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Postavke +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/hr_HR/companies.lang b/htdocs/langs/hr_HR/companies.lang index 6f64e142770..fbc3866f715 100644 --- a/htdocs/langs/hr_HR/companies.lang +++ b/htdocs/langs/hr_HR/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Priroda treće strane NatureOfContact=Priroda kontakta Address=Adresa State=Država/provincija +StateId=State ID StateCode=Šifra države/pokrajine StateShort=Država Region=Regija Region-State=Regija - Država Country=Država CountryCode=Šifra države -CountryId=ID države +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trgovački registar ProfId2ShortCM=Porezni obveznik br. -ProfId3ShortCM=Dekret o stvaranju -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Ostali ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/hr_HR/errors.lang b/htdocs/langs/hr_HR/errors.lang index 1d6bf9b2ee0..d406d214388 100644 --- a/htdocs/langs/hr_HR/errors.lang +++ b/htdocs/langs/hr_HR/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript se ne smije onemogućiti da bi ova znač ErrorPasswordsMustMatch=Obje upisane lozinke moraju se međusobno podudarati ErrorContactEMail=Došlo je do tehničke pogreške. Molimo kontaktirajte administratora na sljedeću e-poštu %s i navedite šifru pogreške %s na ovoj stranici ili dodajte ovu stranicu na ekran. ErrorWrongValueForField=Polje %s : ' %s ' ne odgovara regex pravilu %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Polje %s : ' %s ' nije vrijednost koja se nalazi u polju %s tabele %s ErrorFieldRefNotIn=Polje %s: ' %s ' nije %s postojeći ref ErrorsOnXLines=%s pronađene pogreške @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Nije uspjelo pronaći predložak s kodnim nazivom %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Trajanje nije definirano na usluzi. Nema načina da se izračuna satnica. ErrorActionCommPropertyUserowneridNotDefined=Potreban je vlasnik korisnika -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Provjera verzije nije uspjela ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -283,11 +284,18 @@ ErrorAttributeIsUsedIntoProduct=Ovaj se atribut koristi u jednoj ili više varij ErrorAttributeValueIsUsedIntoProduct=Ova vrijednost atributa koristi se u jednoj ili više varijanti proizvoda ErrorPaymentInBothCurrency=Greška, svi iznosi moraju biti upisani u isti stupac ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Pokušavate plaćati fakture u valuti %s s računa u valuti %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=Kliknite ovdje za postavljanje obaveznih parametara +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Kliknite ovdje da biste omogućili svoje module i aplikacije WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. WarningBookmarkAlreadyExists=Oznaka s ovim naslovom ili ovim ciljem (URL) već postoji. @@ -317,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Dostupno samo ako koristite zaštićenu HTTPS vezu. WarningModuleXDisabledSoYouMayMissEventHere=Modul %s nije omogućen. Stoga možete propustiti mnogo događaja ovdje. WarningPaypalPaymentNotCompatibleWithStrict=Vrijednost "Strict" čini da značajke online plaćanja ne rade ispravno. Umjesto toga upotrijebite 'Lax'. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Vrijednost nije važeća diff --git a/htdocs/langs/hr_HR/externalsite.lang b/htdocs/langs/hr_HR/externalsite.lang deleted file mode 100644 index 1c3fb21742a..00000000000 --- a/htdocs/langs/hr_HR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Postavljanje linkova na vanjske web stranice -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul ExternalSite nije ispravno podešen. -ExampleMyMenuEntry=Moj izbornik unos diff --git a/htdocs/langs/hr_HR/ftp.lang b/htdocs/langs/hr_HR/ftp.lang deleted file mode 100644 index f44222fdeba..00000000000 --- a/htdocs/langs/hr_HR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Postavljanje modula FTP ili SFTP klijenta -NewFTPClient=Nova postavka FTP/FTPS veze -FTPArea=FTP/FTPS sučelje -FTPAreaDesc=Ovaj zaslon prikazuje prikaz FTP i SFTP poslužitelja. -SetupOfFTPClientModuleNotComplete=Čini se da postavljanje FTP ili SFTP klijentskog modula nije dovršeno -FTPFeatureNotSupportedByYourPHP=Vaš PHP ne podržava FTP ili SFTP funkcije -FailedToConnectToFTPServer=Povezivanje s poslužiteljem nije uspjelo (poslužitelj %s, port %s) -FailedToConnectToFTPServerWithCredentials=Prijava na poslužitelj s definiranom prijavom/lozinkom nije uspjela -FTPFailedToRemoveFile=Neuspješno brisanje datoteke %s. -FTPFailedToRemoveDir=Uklanjanje direktorija %s nije uspjelo: provjerite dopuštenja i je li direktorij prazan. -FTPPassiveMode=Pasivni mod -ChooseAFTPEntryIntoMenu=Odaberite FTP/SFTP stranicu s izbornika... -FailedToGetFile=Neuspješno preuzimanje datoteka %s diff --git a/htdocs/langs/hr_HR/hrm.lang b/htdocs/langs/hr_HR/hrm.lang index ef7455c6bc0..97ebcf09c91 100644 --- a/htdocs/langs/hr_HR/hrm.lang +++ b/htdocs/langs/hr_HR/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Otvori ustanovu CloseEtablishment=Zatvori ustanovu # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - popis odjela +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Zaposlenici @@ -70,9 +70,9 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Popis vještina SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Znanje +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Znanje AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee @@ -88,3 +88,4 @@ DeleteSkill = Vještina uklonjena SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/hr_HR/install.lang b/htdocs/langs/hr_HR/install.lang index 2bfd21a7d5b..5195a2e170d 100644 --- a/htdocs/langs/hr_HR/install.lang +++ b/htdocs/langs/hr_HR/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=U konfiguracijsku datoteku %s nije moguće pisati ConfFileIsWritable=U konfiguracijsku datoteku %s može se pisati. ConfFileMustBeAFileNotADir=Konfiguracijska datoteka %s mora biti datoteka, a ne direktorij. ConfFileReload=Ponovno učitavanje parametara iz konfiguracijske datoteke. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Ovaj PHP podržava varijable POST i GET. PHPSupportPOSTGETKo=Moguće je da vaša PHP postavka ne podržava varijable POST i/ili GET. Provjerite parametar variables_order u php.ini. PHPSupportSessions=Ovaj PHP podržava sesije. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Možda ste upisali pogrešnu vrijednost za parametar ErrorFailedToCreateDatabase=Kreiranje baze podataka '%s' nije uspjelo. ErrorFailedToConnectToDatabase=Povezivanje s bazom podataka '%s' nije uspjelo. ErrorDatabaseVersionTooLow=Verzija baze podataka (%s) prestara. Potrebna je verzija %s ili novija. -ErrorPHPVersionTooLow=PHP verzija prestara. Potrebna je verzija %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Povezivanje s poslužiteljem uspjelo, ali baza podataka '%s' nije pronađena. ErrorDatabaseAlreadyExists=Baza podataka '%s' već postoji. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Ako baza podataka ne postoji, vratite se i označite opciju "Kreiraj bazu podataka". IfDatabaseExistsGoBackAndCheckCreate=Ako baza podataka već postoji, vratite se i poništite opciju "Kreiraj bazu podataka". WarningBrowserTooOld=Verzija preglednika je prestara. Preporuča se nadogradnja preglednika na najnoviju verziju Firefoxa, Chromea ili Opera. diff --git a/htdocs/langs/hr_HR/main.lang b/htdocs/langs/hr_HR/main.lang index 232675f84c9..f4cb6a922b8 100644 --- a/htdocs/langs/hr_HR/main.lang +++ b/htdocs/langs/hr_HR/main.lang @@ -345,7 +345,7 @@ KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes TeraBytes=Terabytes -UserAuthor=Kreirao +UserAuthor=Izradio UserModif=Ažurirao b=b. Kb=Kb @@ -712,6 +712,7 @@ FeatureDisabled=Mogućnost isključena MoveBox=Pomakni prozorčić Offered=Ponuđeno NotEnoughPermissions=Nemate dozvolu za ovu radnju +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Naziv sjednice Method=Način Receive=Primi @@ -801,6 +802,7 @@ URLPhoto=URL slike/loga SetLinkToAnotherThirdParty=Poveži s drugom trećom osobom LinkTo=Poveži s LinkToProposal=Poveži s ponudom +LinkToExpedition= Link to expedition LinkToOrder=Poveži s narudžbom LinkToInvoice=Poveži s računom LinkToTemplateInvoice=Poveznica na predložak računa @@ -1174,3 +1176,7 @@ ConfirmAllocateCommercial=Dodijelite potvrdu prodajnog predstavnika ConfirmAllocateCommercialQuestion=Jeste li sigurni da želite dodijeliti %s odabrane zapise? CommercialsAffected=Pogođeni su prodajni predstavnici CommercialAffected=Pogođen prodajni predstavnik +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/hr_HR/members.lang b/htdocs/langs/hr_HR/members.lang index c9f9e655789..9285a5a287a 100644 --- a/htdocs/langs/hr_HR/members.lang +++ b/htdocs/langs/hr_HR/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Datum završetka članstva EndSubscription=Kraj članstva SubscriptionId=Pretplata ID WithoutSubscription=Bez pretplate -MemberId=Član ID +MemberId=Member Id +MemberRef=Member Ref NewMember=Novi član MemberType=Vrsta člana MemberTypeId=Vrsta ID člana @@ -218,3 +219,5 @@ XExternalUserCreated=Stvoreni su %s vanjski korisnik(i). ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/hr_HR/oauth.lang b/htdocs/langs/hr_HR/oauth.lang index eb04d6d4ea7..d48b3e8f90d 100644 --- a/htdocs/langs/hr_HR/oauth.lang +++ b/htdocs/langs/hr_HR/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token je generiran i pohranjen u lokalnu bazu NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token obrisan -RequestAccess=Kliknite ovdje za zahtjev/obnavljanje i primanje novog tokena za pohranu +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Kliknite ovdje za brisanje tokena UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=See previous tab +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token expired @@ -23,10 +24,13 @@ TOKEN_DELETE=Delete saved token OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/hr_HR/other.lang b/htdocs/langs/hr_HR/other.lang index bbe683729bb..693c9f0edc1 100644 --- a/htdocs/langs/hr_HR/other.lang +++ b/htdocs/langs/hr_HR/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Jeste li sigurni da želite "%s"? ConfirmBtnCommonTitle = Potvrdite svoju radnju CloseDialog = Zatvori Autofill = Automatsko popunjavanje + +# externalsite +ExternalSiteSetup=Postavljanje linkova na vanjske web stranice +ExternalSiteURL=URL vanjske web-lokacije HTML iframe sadržaja +ExternalSiteModuleNotComplete=Modul ExternalSite nije ispravno podešen. +ExampleMyMenuEntry=Moj izbornik unos + +# FTP +FTPClientSetup=Postavljanje modula FTP ili SFTP klijenta +NewFTPClient=Nova postavka FTP/FTPS veze +FTPArea=FTP/FTPS sučelje +FTPAreaDesc=Ovaj zaslon prikazuje prikaz FTP i SFTP poslužitelja. +SetupOfFTPClientModuleNotComplete=Čini se da postavljanje FTP ili SFTP klijentskog modula nije dovršeno +FTPFeatureNotSupportedByYourPHP=Vaš PHP ne podržava FTP ili SFTP funkcije +FailedToConnectToFTPServer=Povezivanje s poslužiteljem nije uspjelo (poslužitelj %s, port %s) +FailedToConnectToFTPServerWithCredentials=Prijava na poslužitelj s definiranom prijavom/lozinkom nije uspjela +FTPFailedToRemoveFile=Neuspješno brisanje datoteke %s. +FTPFailedToRemoveDir=Uklanjanje direktorija %s nije uspjelo: provjerite dopuštenja i je li direktorij prazan. +FTPPassiveMode=Pasivni mod +ChooseAFTPEntryIntoMenu=Odaberite FTP/SFTP stranicu s izbornika... +FailedToGetFile=Neuspješno preuzimanje datoteka %s diff --git a/htdocs/langs/hr_HR/stocks.lang b/htdocs/langs/hr_HR/stocks.lang index 25ade6808fb..e08ea88cd01 100644 --- a/htdocs/langs/hr_HR/stocks.lang +++ b/htdocs/langs/hr_HR/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=Proizvod s bar kodom ne postoji WarehouseId=ID skladišta WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Početak InventoryStartedShort=Započeto ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requ StockChangeDisabled=Promjena zaliha onemogućena NoWarehouseDefinedForTerminal=No warehouse defined for terminal ClearQtys=Očistite sve količine +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Postavke +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/hu_HU/accountancy.lang b/htdocs/langs/hu_HU/accountancy.lang index 22aeeef35d9..c0a9fb93a66 100644 --- a/htdocs/langs/hu_HU/accountancy.lang +++ b/htdocs/langs/hu_HU/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Tranzakció közvetlen rögzítésének letiltása a b ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Piszkozatexport engedélyezése a naplóban ACCOUNTANCY_COMBO_FOR_AUX=Kombinációs lista engedélyezése a leányfiókhoz (lassú lehet, ha sok harmadik fél van, és megszakad az érték egy részének keresése) ACCOUNTING_DATE_START_BINDING=Határozzon meg egy dátumot a könyvelésben a kötés és átvitel megkezdéséhez. Ezen időpont alatt a tranzakciók nem kerülnek át a könyvelésbe. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=A könyvelési átutaláshoz válassza ki az időszakot alapértelmezés szerint +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=A könyvelési átutalásnál mi az alapértelmezetten kiválasztott időszak ACCOUNTING_SELL_JOURNAL=Eladó napló ACCOUNTING_PURCHASE_JOURNAL=Vásárlási napló @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Számviteli fiók az adományok regisztrálásához ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Számviteli fiók az előfizetések regisztrálásához ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Alapértelmezés szerint számlaszámla az ügyfél befizetésének regisztrálásához -UseAuxiliaryAccountOnCustomerDeposit=Használjon alszámlákat az ügyfelek betéti sorain +UseAuxiliaryAccountOnCustomerDeposit=Ügyfélszámla tárolása egyéni számlaként a leányfőkönyvben az előlegsorokhoz (ha le van tiltva, az előlegsorokhoz tartozó egyéni számla üres marad) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Alapértelmezés szerint a vásárolt termékek számviteli fiókja (használjuk, ha nincs megadva a terméklapon) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Alapértelmezés szerint az EGK-ban vásárolt termékek számviteli fiókja (használjuk, ha nincs megadva a terméklapon) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Ha a számviteli számlát a költségjelentés-soro DescVentilDoneExpenseReport=Itt megtekintheti a költségjelentések sorainak listáját és a díjak elszámolási számláját Closure=Éves zárás -DescClosure=Tekintse meg itt a még nem érvényesített és zárolatlan mozgások számát havi bontásban +DescClosure=Itt tekintheti meg a még nem érvényesített és zárolt mozgások számát havi bontásban OverviewOfMovementsNotValidated=Nem érvényesített és zárolt mozgások áttekintése AllMovementsWereRecordedAsValidated=Minden mozgást érvényesítettként és zárolva rögzítettünk NotAllMovementsCouldBeRecordedAsValidated=Nem minden mozgást lehetett érvényesítettként és zároltként rögzíteni @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sajn AccountancyErrorMismatchLetterCode=Nem egyezik az egyeztető kód AccountancyErrorMismatchBalanceAmount=Az egyenleg (%s) nem egyenlő 0-val AccountancyErrorLetteringBookkeeping=Hibák történtek a következő tranzakciókkal kapcsolatban: %s +ErrorAccountNumberAlreadyExists=Az %s számviteli szám már létezik ## Import ImportAccountingEntries=Számviteli bejegyzések diff --git a/htdocs/langs/hu_HU/admin.lang b/htdocs/langs/hu_HU/admin.lang index d98168ad193..2390421ecd1 100644 --- a/htdocs/langs/hu_HU/admin.lang +++ b/htdocs/langs/hu_HU/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Következő érték (pótlások) MustBeLowerThanPHPLimit=Megjegyzés: a PHP konfigurációja jelenleg korlátozza a feltöltés maximális fájlméretét %s %s, függetlenül a paraméter értékétől NoMaxSizeByPHPLimit=Megjegyzés: A PHP konfigurációban nincs beállítva korlátozás MaxSizeForUploadedFiles=A feltöltött fájlok maximális mérete (0 megtiltja a feltöltést) -UseCaptchaCode=Grafikus kód (CAPTCHA) használata a bejelentkezési oldalon +UseCaptchaCode=Használjon grafikus kódot (CAPTCHA) a bejelentkezési oldalon és néhány nyilvános oldalon AntiVirusCommand=A vírusirtó parancs teljes elérési útvonala AntiVirusCommandExample=Példa ClamAv démonra (clamav-démon szükséges): /usr/bin/clamdscan
Példa ClamWin-re (nagyon nagyon lassú): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= A parancssor további paraméterei @@ -504,7 +504,7 @@ WarningPHPMailC=- A saját e-mail szolgáltatója SMTP szerverének használata WarningPHPMailD=Ezért javasolt az e-mailek küldési módját az „SMTP” értékre módosítani. Ha valóban meg szeretné tartani az alapértelmezett „PHP” módszert az e-mailek küldéséhez, hagyja figyelmen kívül ezt a figyelmeztetést, vagy távolítsa el a MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP konstans 1-re állításával a Kezdőlap - Beállítás - Egyéb részben. WarningPHPMail2=Ha az e-mail SMTP-szolgáltatójának bizonyos IP-címekre kell korlátoznia az e-mail klienst (nagyon ritka), akkor ez az ERP CRM-alkalmazás mail felhasználói ügynökének (MUA) IP-címe: %s. WarningPHPMailSPF=Ha a küldő e-mail címében szereplő domain nevet SPF rekord védi (kérdezze meg a domain név regisztrátorát), akkor a következő IP-címeket kell hozzáadnia a domain DNS SPF rekordjához: %s. -ActualMailSPFRecordFound=A tényleges SPF rekord itt található: %s +ActualMailSPFRecordFound=A tényleges SPF rekord található (a %s e-mailhez): %s ClickToShowDescription=Kattintson a leírás megjelenítéséhez DependsOn=Ehhez a modulhoz szükséges modul(ok) RequiredBy=Ezt a modult más modulok igénylik @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Egy konfigurációs konstans értéke ConstantIsOn=A %s opció be van kapcsolva NbOfDays=Napok száma AtEndOfMonth=A hónap végén -CurrentNext=Jelenlegi / Következő +CurrentNext=Egy adott nap a hónapban Offset=Offset AlwaysActive=Mindig aktív Upgrade=Upgrade @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Nyomja meg a CTRL+F5 billentyűkombinációt a billenty NotSupportedByAllThemes=Alaptémákkal működik, külső témák esetleg nem támogatják BackgroundColor=Háttérszín TopMenuBackgroundColor=A felső menü háttérszíne -TopMenuDisableImages=Képek elrejtése a felső menüben +TopMenuDisableImages=Ikon vagy szöveg a felső menüben LeftMenuBackgroundColor=A bal oldali menü háttérszíne BackgroundTableTitleColor=A bal oldali menü háttérszíne BackgroundTableTitleTextColor=A táblázat címsorának szövegszíne @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Megjegyzés: A forgalmi adó vagy áfa használatának lehetősé SwapSenderAndRecipientOnPDF=Cserélje fel a feladó és a címzett címét a PDF dokumentumokon FeatureSupportedOnTextFieldsOnly=Figyelem, a funkció csak szövegmezőkben és kombinált listákon támogatott. A funkció aktiválásához be kell állítani egy action=create vagy action=edit URL-paramétert is, VAGY az oldal nevének "new.php"-re kell végződnie. EmailCollector=E-mail gyűjtő +EmailCollectors=E-mail gyűjtők EmailCollectorDescription=Adjon hozzá egy ütemezett feladatot és egy beállítási oldalt az e-mail fiókok rendszeres ellenőrzéséhez (IMAP protokoll használatával), és rögzítse a kapott e-maileket az alkalmazásba, a megfelelő helyre, és/vagy automatikusan hozzon létre néhány rekordot (például leadeket). NewEmailCollector=Új e-mail gyűjtő EMailHost=E-mail IMAP szerver gazdája @@ -2073,14 +2074,14 @@ DateLastCollectResult=A legutóbbi gyűjtési kísérlet dátuma DateLastcollectResultOk=A legutóbbi sikeres gyűjtés dátuma LastResult=Legfrissebb eredmény EmailCollectorHideMailHeaders=Ne foglalja bele az e-mail fejléc tartalmát az összegyűjtött e-mailek mentett tartalmába -EmailCollectorHideMailHeadersHelp=Ha engedélyezve van, az e-mail fejlécek nem kerülnek az eseményként mentett e-mail tartalom végére. +EmailCollectorHideMailHeadersHelp=Ha engedélyezve van, az e-mail fejlécek nem kerülnek a napirendi eseményként mentett e-mail tartalom végére. EmailCollectorConfirmCollectTitle=E-mail gyűjtési megerősítés EmailCollectorConfirmCollect=Szeretnéd most működtetni ezt a gyűjtőt? EmailCollectorExampleToCollectTicketRequestsDesc=Gyűjtse össze az egyes szabályoknak megfelelő e-maileket, és hozzon létre automatikusan jegyet (a moduljegyet engedélyezni kell) az e-mail információival. Használhatja ezt a gyűjtőt, ha e-mailben nyújt támogatást, így a jegykérelme automatikusan generálásra kerül. Aktiválja a Collect_Responses funkciót is, hogy közvetlenül a jegynézetben gyűjtse össze ügyfele válaszait (a Dolibarrtól kell válaszolnia). EmailCollectorExampleToCollectTicketRequests=Példa a jegykérés összegyűjtésére (csak az első üzenet) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Vizsgálja át a postafiók "Elküldött" könyvtárát, hogy megtalálja azokat az e-maileket, amelyeket egy másik e-mail válaszaként küldtek közvetlenül az e-mail szoftveréből, és nem a Dolibarrtól. Ha ilyen e-mailt talál, a válasz eseményét rögzíti a Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Példa egy külső levelező szoftverből küldött e-mail válaszok összegyűjtésére -EmailCollectorExampleToCollectDolibarrAnswersDesc=Gyűjtse össze az összes olyan e-mailt, amely válasz az alkalmazásából küldött e-mailekre. Az e-mailes választ tartalmazó eseményt (a modul napirendjét engedélyezni kell) a megfelelő helyen rögzítjük. Például, ha Ön kereskedelmi ajánlatot, megrendelést, számlát vagy jegyüzenetet küld e-mailben az alkalmazásból, és az ügyfél válaszol az e-mailre, a rendszer automatikusan elkapja a választ, és hozzáadja az ERP-hez. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Gyűjtse össze az összes olyan e-mailt, amely válasz az alkalmazásából küldött e-mailekre. Az e-mail választ tartalmazó eseményt (a modul napirendjét engedélyezni kell) a megfelelő helyen rögzítjük. Ha például kereskedelmi ajánlatot, megrendelést, számlát vagy jegyüzenetet küld e-mailben az alkalmazásból, és a címzett válaszol az e-mailre, a rendszer automatikusan elkapja a választ, és hozzáadja az ERP-hez. EmailCollectorExampleToCollectDolibarrAnswers=Példa az összes bejövő üzenet összegyűjtésére, amely válasz a Dolibarrtól küldött üzenetekre. EmailCollectorExampleToCollectLeadsDesc=Gyűjtse össze a bizonyos szabályoknak megfelelő e-maileket, és hozzon létre automatikusan egy lehetőséget (a projekt modult engedélyezni kell) az e-mail információkkal. Használhatja ezt a gyűjtőt, ha követni szeretné a vezető szerepet a Projekt (1 lehetőség = 1 projekt) modul használatával, így a lehetőségek automatikusan generálásra kerülnek. Ha a Collect_Responses gyűjtő is be van kapcsolva, amikor e-mailt küld a potenciális ügyfelektől, ajánlatoktól vagy bármely más objektumtól, akkor közvetlenül az alkalmazáson is láthatja ügyfelei vagy partnerei válaszait.
Megjegyzés: Ebben a kezdeti példában a lehetőség címe jön létre, beleértve az e-mailt is. Ha a harmadik fél nem található az adatbázisban (új ügyfél), a lehetőség az 1-es azonosítójú harmadik félhez lesz csatolva. EmailCollectorExampleToCollectLeads=Példa lehetőségek gyűjtésére @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Gyűjtse össze az állásajá EmailCollectorExampleToCollectJobCandidatures=Példa az e-mailben kapott álláspályázatok összegyűjtésére NoNewEmailToProcess=Nincs feldolgozandó új e-mail (megfelelő szűrők). NothingProcessed=Semmi sem történt -XEmailsDoneYActionsDone=%s e-mail minősítve, %s e-mail sikeresen feldolgozva (%s rekord/művelet kész) +XEmailsDoneYActionsDone=%s e-mailek előminősítettek, %s e-mailek sikeresen feldolgozva (az %s rekord/műveletek elvégzése esetén) RecordEvent=Esemény rögzítése a napirendben (az elküldött vagy fogadott e-mail típussal) CreateLeadAndThirdParty=Potenciális ügyfél (és szükség esetén harmadik fél) létrehozása CreateTicketAndThirdParty=Jegy létrehozása (harmadik félhez kapcsolva, ha a harmadik felet egy korábbi művelet töltötte be, vagy az e-mail fejlécében lévő nyomkövetőből származik, harmadik fél nélkül) @@ -2167,6 +2168,9 @@ EmailTemplate=Sablon az e-mailekhez EMailsWillHaveMessageID=Az e-mailekben a szintaxisnak megfelelő "References" címke található PDF_SHOW_PROJECT=Projekt megjelenítése a dokumentumon ShowProjectLabel=Projektcímke +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Adja meg az álnevet a harmadik fél nevében +THIRDPARTY_ALIAS=Harmadik fél neve – Alias harmadik fél +ALIAS_THIRDPARTY=Alias, harmadik fél – Harmadik fél neve PDF_USE_ALSO_LANGUAGE_CODE=Ha azt szeretné, hogy a PDF-ben lévő szövegek egy része 2 különböző nyelven legyen megkettőzve ugyanabban a generált PDF-ben, itt be kell állítania ezt a második nyelvet, így a létrehozott PDF 2 különböző nyelvet fog tartalmazni ugyanazon az oldalon, a PDF generálásakor választott nyelvet és ezt egy (csak néhány PDF-sablon támogatja ezt). Tartsa üresen PDF-enként 1 nyelv esetén. PDF_USE_A=PDF dokumentumok generálása PDF/A formátumban az alapértelmezett PDF formátum helyett FafaIconSocialNetworksDesc=Írja be ide a FontAwesome ikon kódját. Ha nem tudja, mi az a FontAwesome, használhatja az általános érték fa-címjegyzékét. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Sablon különböző méretű névjegykártyákhoz InventorySetup= Készlet beállítása ExportUseLowMemoryMode=Használjon alacsony memória módot ExportUseLowMemoryModeHelp=Használja az alacsony memória módot a dump végrehajtásához (a tömörítés csövön keresztül történik, nem pedig a PHP memóriájába). Ez a módszer nem teszi lehetővé annak ellenőrzését, hogy a fájl elkészült-e, és nem lehet hibaüzenetet jelenteni, ha meghiúsul. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interfész a dolibarr triggerek elkapásához és egy URL-re küldéséhez +WebhookSetup = Webhook beállítása +Settings = Beállítások +WebhookSetupPage = Webhook beállítási oldal ShowQuickAddLink=Egy gomb megjelenítése elem gyors hozzáadásához a jobb felső menüben + HashForPing=A pinghez használt hash ReadOnlyMode=A példány "Csak olvasható" módban van DEBUGBAR_USE_LOG_FILE=Használja az dolibarr.log fájlt a naplók csapdába ejtéséhez UsingLogFileShowAllRecordOfSubrequestButIsSlower=Használja a dolibarr.log fájlt a naplók csapdába ejtéséhez az élő memória elfogása helyett. Lehetővé teszi az összes napló elkapását, nem csak az aktuális folyamat naplózását (így az ajax alkérelmek oldalát is), de nagyon lelassítja a példányt. Nem ajánlott. FixedOrPercent=Rögzített (használja a "fix" kulcsszót) vagy százalékos (használja a "százalék" kulcsszót) DefaultOpportunityStatus=Alapértelmezett lehetőség állapota (első állapot a potenciális ügyfelek létrehozásakor) + IconAndText=Ikon és szöveg TextOnly=Csak szöveg IconOnlyAllTextsOnHover=Csak ikon – Minden szöveg az ikon alatt jelenik meg az egérmutató menüsorán @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Csak ikon – Az ikon szövege az ikon alatt jelenik meg, vi IconOnly=Csak ikon – Csak szöveg az eszköztippen INVOICE_ADD_ZATCA_QR_CODE=Mutassa meg a ZATCA QR kódot a számlákon INVOICE_ADD_ZATCA_QR_CODEMore=Egyes arab országoknak szüksége van erre a QR-kódra a számláikon +INVOICE_ADD_SWISS_QR_CODE=Mutassa meg a svájci QR-Bill kódot a számlákon UrlSocialNetworksDesc=A közösségi hálózat URL-címe. Használja az {socialid} változót a közösségi hálózat azonosítóját tartalmazó változó részhez. +IfThisCategoryIsChildOfAnother=Ha ez a kategória egy másik gyermeke +NoName=Névtelen +CIDLookupURL=A modul egy URL-t hoz, amelyet egy külső eszköz felhasználhat egy harmadik fél vagy kapcsolat nevének lekérésére a telefonszámából. A használandó URL: diff --git a/htdocs/langs/hu_HU/cashdesk.lang b/htdocs/langs/hu_HU/cashdesk.lang index de9f9af61b6..ebd55bf4814 100644 --- a/htdocs/langs/hu_HU/cashdesk.lang +++ b/htdocs/langs/hu_HU/cashdesk.lang @@ -136,3 +136,4 @@ PrintWithoutDetails=Nyomtatás részletek nélkül YearNotDefined=Az év nincs megadva TakeposBarcodeRuleToInsertProduct=Vonalkód szabály a termék beillesztéséhez TakeposBarcodeRuleToInsertProductDesc=Szabály a termékreferencia + mennyiség kinyerésére a beolvasott vonalkódból.
Ha üres (alapértelmezett érték), az alkalmazás a teljes beolvasott vonalkódot használja a termék megtalálásához.

Ha definiálva van, szintaxis kell:
hiv.: NB + qu: NB + qd NB + egyéb: NB
ahol NB karakterek száma használni kinyeri az adatokat a beszkennelt vonalkód:
  • hiv. : termék hivatkozási
  • qu : mennyiség beillesztés közben tétel (egység)
  • qd : mennyiség beillesztés közben tétel (tizedes)
  • más : mások karakter
+AlreadyPrinted=Már kinyomtatva diff --git a/htdocs/langs/hu_HU/categories.lang b/htdocs/langs/hu_HU/categories.lang index 631341fbd12..25f02517fca 100644 --- a/htdocs/langs/hu_HU/categories.lang +++ b/htdocs/langs/hu_HU/categories.lang @@ -95,7 +95,9 @@ ShowCategory=Címke/kategória megjelenítése ByDefaultInList=Alapértelmezés szerint a listában ChooseCategory=Válasszon kategóriát StocksCategoriesArea=Raktári kategóriák +TicketsCategoriesArea=Jegyek kategóriái ActionCommCategoriesArea=Esemény kategóriák WebsitePagesCategoriesArea=Oldal-tároló kategóriák KnowledgemanagementsCategoriesArea=KM cikk kategóriák UseOrOperatorForCategories=Használja az „OR” operátort a kategóriákhoz +AddObjectIntoCategory=Objektum hozzáadása a kategóriába diff --git a/htdocs/langs/hu_HU/companies.lang b/htdocs/langs/hu_HU/companies.lang index e69dd275237..c4de327829b 100644 --- a/htdocs/langs/hu_HU/companies.lang +++ b/htdocs/langs/hu_HU/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Harmadik fél természete NatureOfContact=A kapcsolattartás jellege Address=Cím State=Állam / Tartomány +StateId=Állami azonosító StateCode=Állam/Tartomány kódja StateShort=Állam/Megye Region=Régió Region-State=Régió - Állam Country=Ország CountryCode=Az ország hívószáma -CountryId=Ország id +CountryId=Országazonosító Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=1. szakmai azonosító (kereskedelmi nyilvántartás) ProfId2CM=2. szakmai azonosító (adózó száma) -ProfId3CM=3. szakmai azonosító (Létrehozási rendelési szám) -ProfId4CM=Id. prof. 4 (Betétigazolás) +ProfId3CM=Id. prof. 3 (Létrehozási rendelet száma) +ProfId4CM=Id. prof. 4 (betéti igazolás sz.) ProfId5CM=Id. prof. 5 (egyéb) ProfId6CM=- ProfId1ShortCM=Kereskedelmi nyilvántartás ProfId2ShortCM=Adófizető sz. -ProfId3ShortCM=Létrehozási rendelési szám. -ProfId4ShortCM=Betéti igazolás +ProfId3ShortCM=Létrehozási rendelet sz. +ProfId4ShortCM=számú letéti igazolás ProfId5ShortCM=Mások ProfId6ShortCM=- ProfId1CO=Szakma ID 1 (RUT) diff --git a/htdocs/langs/hu_HU/errors.lang b/htdocs/langs/hu_HU/errors.lang index 6e46cdadd26..ac8af20bdc5 100644 --- a/htdocs/langs/hu_HU/errors.lang +++ b/htdocs/langs/hu_HU/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=A szolgáltatás működéséhez a JavaScriptet nem ErrorPasswordsMustMatch=Mindkét beírt jelszónak meg kell egyeznie egymással ErrorContactEMail=Technikai hiba történt. Kérjük, forduljon a rendszergazdához a következő e-mail címre: %s, és adja meg üzenetében a %s hibakódot, vagy adja hozzá az oldal képernyőpéldányát. ErrorWrongValueForField=Mező: %s: '%s' nem egyezik a %s reguláris kifejezéssel +ErrorHtmlInjectionForField= %s mező : Az ' %s a09a4b739f17f értéket nem tartalmazó ErrorFieldValueNotIn=Mező: %s: "%s" nem található a %s/%s mezőben ErrorFieldRefNotIn=Mező: %s: '%s' nem %s létező hivatkozás ErrorsOnXLines=%s hiba található @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Először be kell állítania a számla ErrorFailedToFindEmailTemplate=Nem sikerült megtalálni a %s kódnevű sablont ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=A szolgáltatás időtartama nincs meghatározva. Nincs mód az óraárak kiszámítására. ErrorActionCommPropertyUserowneridNotDefined=A felhasználó tulajdonosa kötelező -ErrorActionCommBadType=A kiválasztott eseménytípus (azonosító: %n, kód: %s) nem létezik az Eseménytípus szótárban +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=A verzióellenőrzés sikertelen ErrorWrongFileName=A fájl nevében nem lehet __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Nem szerepel a Fizetési feltételek szótárban, kérjük módosítsa. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Hiba, minden összeget ugyanabba az oszlopba kell be ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Ön %s pénznemben próbálja kifizetni a számlákat %s pénznemű számláról ErrorInvoiceLoadThirdParty=Nem lehet betölteni harmadik féltől származó objektumot az „%s” számlához ErrorInvoiceLoadThirdPartyKey=Harmadik féltől származó „%s” kulcs nincs beállítva az „%s” számlához -ErrorDeleteLineNotAllowedByObjectStatus=A sor törlését az objektum tényleges állapota nem teszi lehetővé +ErrorDeleteLineNotAllowedByObjectStatus=A sor törlését az objektum aktuális állapota nem teszi lehetővé ErrorAjaxRequestFailed=Kérés sikertelen +ErrorThirpdartyOrMemberidIsMandatory=Harmadik fél vagy partnerségi tag kötelező +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=A PHP paraméter upload_max_filesize (%s) magasabb, mint a PHP post_max_size (%s) paramétere. Ez nem következetes beállítás. WarningPasswordSetWithNoAccount=Jelszó lett beállítva ehhez a taghoz. Felhasználói fiók azonban nem jött létre. Tehát ez a jelszó tárolva van, de nem használható a Dolibarr-ba való bejelentkezéshez. Külső modul/interfész használhatja, de ha nem kell bejelentkezési nevet vagy jelszót megadnia egy taghoz, akkor letilthatja a "Bejelentkezés kezelése minden taghoz" opciót a Tagmodul beállításainál. Ha kezelnie kell a bejelentkezést, de nincs szüksége jelszóra, a figyelmeztetés elkerülése érdekében hagyja üresen ezt a mezőt. Megjegyzés: Az e-mail bejelentkezésként is használható, ha a tag egy felhasználóhoz kapcsolódik. -WarningMandatorySetupNotComplete=Kattintson ide a kötelező paraméterek beállításához +WarningMandatorySetupNotComplete=Kattintson ide a fő paraméterek beállításához WarningEnableYourModulesApplications=Kattintson ide a modulok és alkalmazások engedélyezéséhez WarningSafeModeOnCheckExecDir=Figyelem, a PHP safe_mode opciója be van kapcsolva, ezért a parancsot a safe_mode_exec_dir php paraméter által deklarált könyvtárban kell tárolni. WarningBookmarkAlreadyExists=Már létezik egy könyvjelző ezzel a címmel vagy ezzel a céllal (URL). @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Figyelem, nem hozhat létre közvetlenül alfiókot, l WarningAvailableOnlyForHTTPSServers=Csak HTTPS biztonságos kapcsolat használata esetén érhető el. WarningModuleXDisabledSoYouMayMissEventHere=A %s modul nincs engedélyezve. Így sok eseményről lemaradhat itt. WarningPaypalPaymentNotCompatibleWithStrict=A 'Strict' érték miatt az online fizetési funkciók nem működnek megfelelően. Használja helyette a „Lax” szót. +WarningThemeForcedTo=Figyelmeztetés, a témát a MAIN_FORCETHEME rejtett állandó az %s értékre kényszerítette -<<<<<<< FEJ -======= -<<<<<<< FEJ -<<<<<<< FEJ ->>>>>>> git@github.com:Dolibarr/dolibarr.git '15.0' ága # Validate RequireValidValue = Az érték nem érvényes RequireAtLeastXString = Legalább %s karakter szükséges @@ -347,12 +347,3 @@ BadSetupOfField = Hiba a mező rossz beállításában BadSetupOfFieldClassNotFoundForValidation = Hiba a mező rossz beállításában: Az osztály nem található az ellenőrzéshez BadSetupOfFieldFileNotFound = Hiba a mező rossz beállításában: A fájl nem található a felvételhez BadSetupOfFieldFetchNotCallable = Hiba a mező rossz beállításában: A lekérés nem hívható az osztályban -<<<<<<< FEJ -======= -======= -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.git '15.0' ága ->>>>>>> git@github.com:Dolibarr/dolibarr.git '15.0' ága -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.git '15.0' ága ->>>>>>> git@github.com:Dolibarr/dolibarr.git '15.0' ága diff --git a/htdocs/langs/hu_HU/externalsite.lang b/htdocs/langs/hu_HU/externalsite.lang deleted file mode 100644 index 73ab6fbae3a..00000000000 --- a/htdocs/langs/hu_HU/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Külső weboldalra mutató link beállítása -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Az ExternalSite modul nincs megfelelően beállítva. -ExampleMyMenuEntry=A menüpontom diff --git a/htdocs/langs/hu_HU/ftp.lang b/htdocs/langs/hu_HU/ftp.lang deleted file mode 100644 index 9d666b1ade1..00000000000 --- a/htdocs/langs/hu_HU/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Kliens modul beállítása -NewFTPClient=Új FTP kapcsolat beállítása -FTPArea=FTP terület -FTPAreaDesc=A képernyő egy FTP-kiszolgáló egy nézetét mutatja. -SetupOfFTPClientModuleNotComplete=Az FTP kliens modul telepítése hiányosnak tűnik -FTPFeatureNotSupportedByYourPHP=A PHP beállítása nem támogatja az FTP funkciókat -FailedToConnectToFTPServer=Nem sikerült csatlakozni az FTP szerverhez (szerver %s, port %s) -FailedToConnectToFTPServerWithCredentials=Nem sikerült bejelentkezni FTP szerverre a megadott felhasználó névvel/jelszóval. -FTPFailedToRemoveFile=Nem sikerült eltávolítani: %s. -FTPFailedToRemoveDir=Az %s könyvtár eltávolítása nem sikerült: ellenőrizze az engedélyeket és hogy a könyvtár üres. -FTPPassiveMode=Passzív mód -ChooseAFTPEntryIntoMenu=Válasszon FTP-helyet a menüből ... -FailedToGetFile=Nem sikerült a %s fájlokat letölteni diff --git a/htdocs/langs/hu_HU/hrm.lang b/htdocs/langs/hu_HU/hrm.lang index 575398a8e3a..9d63812f9fd 100644 --- a/htdocs/langs/hu_HU/hrm.lang +++ b/htdocs/langs/hu_HU/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Nyitott létesítmény CloseEtablishment=Létesítmény bezárása # Dictionary DictionaryPublicHolidays=Szabadság - Munkaszüneti napok -DictionaryDepartment=HRM - Osztálylista +DictionaryDepartment=HRM - Szervezeti egység DictionaryFunction=HRM – Munkaköri pozíciók # Module Employees=Alkalmazottak @@ -70,9 +70,9 @@ RequiredSkills=Szükséges készségek ehhez a munkához UserRank=Felhasználói rang SkillList=Képességlista SaveRank=Rang mentése -knowHow=Szakértelem -HowToBe=Hogyan legyünk -knowledge=tudás +TypeKnowHow=Szakértelem +TypeHowToBe=Hogyan legyünk +TypeKnowledge=tudás AbandonmentComment=Elhagyó megjegyzés DateLastEval=Utolsó értékelés dátuma NoEval=Nem történt értékelés ehhez az alkalmazotthoz @@ -88,3 +88,5 @@ DeleteSkill = Képesség eltávolítva SkillsExtraFields=További tulajdonságok (készségek) JobsExtraFields=További tulajdonságok (munkahelyek) EvaluationsExtraFields=További tulajdonságok (értékelések) +NeedBusinessTravels=Üzleti utakra van szükség +NoDescription=Nincs leírás diff --git a/htdocs/langs/hu_HU/install.lang b/htdocs/langs/hu_HU/install.lang index b14d3c68dfc..ecc3ba04460 100644 --- a/htdocs/langs/hu_HU/install.lang +++ b/htdocs/langs/hu_HU/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=A %s konfigurációs fájl nem írható. Ellenőriz ConfFileIsWritable=%s konfigurációs fájl írható. ConfFileMustBeAFileNotADir=A %s konfigurációs fájlnak fájlnak kell lennie, nem könyvtárnak. ConfFileReload=Paraméterek újratöltése a konfigurációs fájlból. -NoReadableConfFileSoStartInstall=Az conf/conf.php konfigurációs fájl nem létezik, vagy nem használható újra. Futtatjuk a telepítési folyamatot, hogy megpróbáljuk inicializálni. +NoReadableConfFileSoStartInstall=Az conf/conf.php konfigurációs fájl nem létezik vagy nem olvasható. Futtatjuk a telepítési folyamatot, hogy megpróbáljuk inicializálni. PHPSupportPOSTGETOk=Ez a PHP verzió támogatja POST és GET változókat. PHPSupportPOSTGETKo=Lehetséges, hogy a PHP beállítása nem támogatja a POST és/vagy GET változókat. Ellenőrizze a variables_order paramétert a php.ini fájlban. PHPSupportSessions=Ez a PHP verzió támogatja a munkameneteket. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Lehet, hogy rossz értéket adott meg a(z) '%s' para ErrorFailedToCreateDatabase=Nem sikerült létrehozni a(z) '%s' adatbázist. ErrorFailedToConnectToDatabase=Nem sikerült csatlakozni a(z) '%s' adatbázishoz. ErrorDatabaseVersionTooLow=Az adatbázis (%s) verziója túl alacsony. %s verzió vagy magasabb szükséges -ErrorPHPVersionTooLow=Túl régi a PHP verzió. Legalább %s kell. +ErrorPHPVersionTooLow=A PHP verzió túl régi. Az %s vagy újabb verzió szükséges. +ErrorPHPVersionTooHigh=A PHP verzió túl magas. Az %s vagy régebbi verzió szükséges. ErrorConnectedButDatabaseNotFound=A kiszolgálóhoz való csatlakozás sikeres, de a '%s' adatbázis nem található. ErrorDatabaseAlreadyExists='%s' adatbázis már létezik. IfDatabaseNotExistsGoBackAndUncheckCreate=Ha az adatbázis nem létezik, menjen vissza és jelölje be az "Adatbázis létrehozása" opciót. diff --git a/htdocs/langs/hu_HU/knowledgemanagement.lang b/htdocs/langs/hu_HU/knowledgemanagement.lang index 4f8d74a2f96..7c23f29b925 100644 --- a/htdocs/langs/hu_HU/knowledgemanagement.lang +++ b/htdocs/langs/hu_HU/knowledgemanagement.lang @@ -18,37 +18,37 @@ # # Module label 'ModuleKnowledgeManagementName' -ModuleKnowledgeManagementName = Knowledge Management System +ModuleKnowledgeManagementName = Tudásmenedzsment rendszer # Module description 'ModuleKnowledgeManagementDesc' -ModuleKnowledgeManagementDesc=Manage a Knowledge Management (KM) or Help-Desk base +ModuleKnowledgeManagementDesc=Tudásmenedzsment (KM) vagy Help-Desk bázis kezelése # # Admin page # -KnowledgeManagementSetup = Knowledge Management System setup +KnowledgeManagementSetup = Tudáskezelő rendszer beállítása Settings = Beállítások -KnowledgeManagementSetupPage = Knowledge Management System setup page +KnowledgeManagementSetupPage = Tudáskezelő rendszer beállítási oldala # # About page # About = Névjegy -KnowledgeManagementAbout = About Knowledge Management -KnowledgeManagementAboutPage = Knowledge Management about page +KnowledgeManagementAbout = A tudásmenedzsmentről +KnowledgeManagementAboutPage = Tudáskezelés az oldalról KnowledgeManagementArea = Tudásmenedzsment MenuKnowledgeRecord = Tudásbázis -ListKnowledgeRecord = List of articles -NewKnowledgeRecord = New article -ValidateReply = Validate solution -KnowledgeRecords = Articles -KnowledgeRecord = Árucikk -KnowledgeRecordExtraFields = Extrafields for Article +ListKnowledgeRecord = Cikkek listája +NewKnowledgeRecord = Új cikk +ValidateReply = A megoldás érvényesítése +KnowledgeRecords = Cikkek +KnowledgeRecord = Cikk +KnowledgeRecordExtraFields = Extra mezők a cikkhez GroupOfTicket=Jegyek csoportjai -YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) -SuggestedForTicketsInGroup=Suggested for tickets when group is +YouCanLinkArticleToATicketCategory=A cikket összekapcsolhatja egy jegycsoporttal (így a cikk kiemelve lesz a csoport minden jegyén) +SuggestedForTicketsInGroup=Jegyekhez ajánlott, ha csoport van -SetObsolete=Set as obsolete -ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? -ConfirmReopenKM=Do you want to restore this article to status "Validated" ? +SetObsolete=Beállítás elavultként +ConfirmCloseKM=Megerősíti, hogy a cikk elavultként zárult be? +ConfirmReopenKM=Szeretné visszaállítani ezt a cikket "Érvényesített" állapotba? diff --git a/htdocs/langs/hu_HU/loan.lang b/htdocs/langs/hu_HU/loan.lang index 1efd439d66f..3d5fd3e8baf 100644 --- a/htdocs/langs/hu_HU/loan.lang +++ b/htdocs/langs/hu_HU/loan.lang @@ -1,34 +1,34 @@ # Dolibarr language file - Source file is en_US - loan Loan=Hitel -Loans=Kölcsönök -NewLoan=Új hitel\n -ShowLoan=Hitel megjelenítése\n -PaymentLoan=Hiteltörlesztés -LoanPayment=Hiteltörlesztés -ShowLoanPayment=Mutasd a kölcsön kifizetését\n +Loans=Hitelek +NewLoan=Új hitel +ShowLoan=Hitel megjelenítése +PaymentLoan=Hitelfizetés +LoanPayment=Hitelfizetés +ShowLoanPayment=Hitelfizetés megjelenítése LoanCapital=Tőke Insurance=Biztosítás Interest=Kamat -Nbterms=Number of terms -Term=Term -LoanAccountancyCapitalCode=Accounting account capital -LoanAccountancyInsuranceCode=Accounting account insurance -LoanAccountancyInterestCode=Accounting account interest -ConfirmDeleteLoan=Confirm deleting this loan -LoanDeleted=Loan Deleted Successfully -ConfirmPayLoan=Confirm classify paid this loan -LoanPaid=Fizetett kölcsön\n -ListLoanAssociatedProject=List of loan associated with the project -AddLoan=Hitel létrehozása\n -FinancialCommitment=Financial commitment +Nbterms=Kifejezések száma +Term=Határidő +LoanAccountancyCapitalCode=Számviteli számla tőke +LoanAccountancyInsuranceCode=Számviteli számlabiztosítás +LoanAccountancyInterestCode=Számviteli számla kamatai +ConfirmDeleteLoan=Erősítse meg a hitel törlését +LoanDeleted=A hitel sikeresen törölve +ConfirmPayLoan=A hitel kifizetésének megerősítése +LoanPaid=Hitel fizetve +ListLoanAssociatedProject=A projekthez társított hitelek listája +AddLoan=Hitel létrehozása +FinancialCommitment=Pénzügyi kötelezettségvállalás InterestAmount=Kamat -CapitalRemain=Capital remain -TermPaidAllreadyPaid = This term is allready paid -CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started -CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule +CapitalRemain=Tőke maradt +TermPaidAllreadyPaid = Ez a kifejezés már ki van fizetve +CantUseScheduleWithLoanStartedToPaid = Nem lehet ütemtervet létrehozni egy hitelhez, ha a fizetés megkezdődött +CantModifyInterestIfScheduleIsUsed = Nem módosíthatja az érdeklődést, ha ütemezést használ # Admin -ConfigLoan=Configuration of the module loan -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accounting account interest by default -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accounting account insurance by default -CreateCalcSchedule=Edit financial commitment +ConfigLoan=A hitel modul konfigurálása +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Alapértelmezés szerint a számviteli tőke +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Alapértelmezés szerint a számla kamatai +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Alapértelmezés szerint a könyvelési számlabiztosítás +CreateCalcSchedule=Pénzügyi kötelezettségvállalás szerkesztése diff --git a/htdocs/langs/hu_HU/main.lang b/htdocs/langs/hu_HU/main.lang index c70d8ad2a89..0184ec8d184 100644 --- a/htdocs/langs/hu_HU/main.lang +++ b/htdocs/langs/hu_HU/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -345,7 +351,7 @@ KiloBytes=Kilobyte-ok MegaBytes=Megabyte-ok GigaBytes=Gigabyte-ok TeraBytes=TB -UserAuthor=Készítette +UserAuthor=Létrehozta UserModif=Frissítette b=b. Kb=Kb @@ -712,6 +718,7 @@ FeatureDisabled=Tiltott funkció MoveBox=Mozgassa a widgetet Offered=Felajánlott NotEnoughPermissions=Nincs jogosultsága ehhez a művelethez +UserNotInHierachy=Ez a művelet a felhasználó felügyelői számára van fenntartva SessionName=Munkamenet neve Method=Módszer Receive=Kap @@ -1177,3 +1184,6 @@ CommercialAffected=Az értékesítési képviselő érintett YourMessage=Az üzeneted YourMessageHasBeenReceived=Üzenete megérkezett. A lehető leghamarabb válaszolunk vagy felvesszük Önnel a kapcsolatot. UrlToCheck=Az ellenőrizendő URL +Automation=Automatizálás +CreatedByEmailCollector=Created by Email collector +CreatedByPublicPortal=Created from Public portal diff --git a/htdocs/langs/hu_HU/members.lang b/htdocs/langs/hu_HU/members.lang index 714cdea08d1..b3b0abda26f 100644 --- a/htdocs/langs/hu_HU/members.lang +++ b/htdocs/langs/hu_HU/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=A tagság befejezésének dátuma EndSubscription=A tagság vége SubscriptionId=Hozzájárulás azonosítója WithoutSubscription=Hozzájárulás nélkül -MemberId=Tagazonosító +MemberId=Tag-azonosító +MemberRef=Tag Ref NewMember=Új tag MemberType=Tag típusa MemberTypeId=Tag típusazonosító diff --git a/htdocs/langs/hu_HU/modulebuilder.lang b/htdocs/langs/hu_HU/modulebuilder.lang index 0313939715e..cb229dc49f9 100644 --- a/htdocs/langs/hu_HU/modulebuilder.lang +++ b/htdocs/langs/hu_HU/modulebuilder.lang @@ -153,3 +153,4 @@ LinkToParentMenu=Szülőmenü (fk_xxxxmenu) ListOfTabsEntries=A lapbejegyzések listája TabsDefDesc=Itt határozhatja meg a modulja által biztosított füleket TabsDefDescTooltip=A modul/alkalmazás által biztosított lapok az $this->tabs tömbben vannak meghatározva a modulleíró fájlban. Ezt a fájlt manuálisan szerkesztheti, vagy használhatja a beágyazott szerkesztőt. +BadValueForType=Rossz érték az %s típushoz diff --git a/htdocs/langs/hu_HU/oauth.lang b/htdocs/langs/hu_HU/oauth.lang index 075ff49a895..3e9309da2cd 100644 --- a/htdocs/langs/hu_HU/oauth.lang +++ b/htdocs/langs/hu_HU/oauth.lang @@ -1,32 +1,36 @@ # Dolibarr language file - Source file is en_US - oauth -ConfigOAuth=OAuth Configuration -OAuthServices=OAuth Services -ManualTokenGeneration=Manual token generation +ConfigOAuth=OAuth konfiguráció +OAuthServices=OAuth szolgáltatások +ManualTokenGeneration=Manuális token generálás TokenManager=Token Manager -IsTokenGenerated=Is token generated ? -NoAccessToken=No access token saved into local database -HasAccessToken=A token was generated and saved into local database -NewTokenStored=Token received and saved -ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider -TokenDeleted=Token deleted -RequestAccess=Click here to request/renew access and receive a new token to save -DeleteAccess=Click here to delete token -UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token -SeePreviousTab=See previous tab -OAuthIDSecret=OAuth ID and Secret -TOKEN_REFRESH=Token Refresh Present -TOKEN_EXPIRED=Token expired -TOKEN_EXPIRE_AT=Token expire at -TOKEN_DELETE=Delete saved token -OAUTH_GOOGLE_NAME=OAuth Google service +IsTokenGenerated=Létrejött a token? +NoAccessToken=Nincs hozzáférési token mentve a helyi adatbázisba +HasAccessToken=A tokent létrehozta és elmentette a helyi adatbázisba +NewTokenStored=Token fogadva és elmentve +ToCheckDeleteTokenOnProvider=Kattintson ide a %s OAuth szolgáltató által mentett jogosultság ellenőrzéséhez/törléséhez +TokenDeleted=Token törölve +RequestAccess=Kattintson ide a hozzáférés kéréséhez/megújításához és új token fogadásához +DeleteAccess=Kattintson ide a token törléséhez +UseTheFollowingUrlAsRedirectURI=Használja a következő URL-t átirányítási URI-ként, amikor létrehozza hitelesítő adatait az OAuth-szolgáltatóval: +ListOfSupportedOauthProviders=Adja hozzá OAuth2-token-szolgáltatóit. Ezután lépjen az OAuth-szolgáltató rendszergazdai oldalára, és hozzon létre/szerezzen be egy OAuth-azonosítót és -titkot, majd mentse el őket ide. Ha elkészült, kapcsolja be a másik lapot a token létrehozásához. +OAuthSetupForLogin=Oldal az OAuth-jogkivonatok kezelésére (generálására/törlésére). +SeePreviousTab=Lásd az előző lapot +OAuthProvider=OAuth-szolgáltató +OAuthIDSecret=OAuth-azonosító és titkos +TOKEN_REFRESH=Token frissítése +TOKEN_EXPIRED=Token lejárt +TOKEN_EXPIRE_AT=Token lejárati dátuma +TOKEN_DELETE=Elmentett token törlése +OAUTH_GOOGLE_NAME=OAuth Google szolgáltatás OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials -OAUTH_GITHUB_NAME=OAuth GitHub service -OAUTH_GITHUB_ID=OAuth GitHub Id -OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials -OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test -OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_GITHUB_NAME=OAuth GitHub szolgáltatás +OAUTH_GITHUB_ID=OAuth GitHub-azonosító +OAUTH_GITHUB_SECRET=OAuth GitHub titkos +OAUTH_URL_FOR_CREDENTIAL=Nyissa meg ezt az oldalt az OAuth-azonosító és a titkosság létrehozásához vagy lekéréséhez +OAUTH_STRIPE_TEST_NAME=OAuth kapcsolat teszt +OAUTH_STRIPE_LIVE_NAME=OAuth kapcsolat élő +OAUTH_ID=OAuth-azonosító +OAUTH_SECRET=OAuth titkos +OAuthProviderAdded=OAuth-szolgáltató hozzáadva +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Ehhez a szolgáltatóhoz és címkéhez már létezik OAuth-bejegyzés diff --git a/htdocs/langs/hu_HU/other.lang b/htdocs/langs/hu_HU/other.lang index f29b80bb26c..37a0ed74e12 100644 --- a/htdocs/langs/hu_HU/other.lang +++ b/htdocs/langs/hu_HU/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Biztos, hogy "%s"? ConfirmBtnCommonTitle = Erősítse meg a műveletet CloseDialog = Bezárás Autofill = Automatikus kitöltés + +# externalsite +ExternalSiteSetup=Külső weboldalra mutató link beállítása +ExternalSiteURL=A HTML iframe tartalom külső webhely URL-je +ExternalSiteModuleNotComplete=Az ExternalSite modul nincs megfelelően beállítva. +ExampleMyMenuEntry=A menüpontom + +# FTP +FTPClientSetup=FTP vagy SFTP kliens modul beállítása +NewFTPClient=Új FTP/FTPS kapcsolat beállítása +FTPArea=FTP/FTPS terület +FTPAreaDesc=Ez a képernyő egy FTP és SFTP szerver nézetét mutatja. +SetupOfFTPClientModuleNotComplete=Úgy tűnik, az FTP vagy SFTP kliens modul beállítása nem teljes +FTPFeatureNotSupportedByYourPHP=A PHP-d nem támogatja az FTP vagy SFTP funkciókat +FailedToConnectToFTPServer=Nem sikerült csatlakozni a szerverhez (%s szerver, %s port) +FailedToConnectToFTPServerWithCredentials=Nem sikerült bejelentkezni a szerverre meghatározott bejelentkezési névvel/jelszóval +FTPFailedToRemoveFile=Nem sikerült eltávolítani a(z) %s fájlt. +FTPFailedToRemoveDir=Nem sikerült eltávolítani a(z) %s könyvtárat: ellenőrizze a jogosultságokat és azt, hogy a könyvtár üres-e. +FTPPassiveMode=Passzív mód +ChooseAFTPEntryIntoMenu=Válasszon FTP/SFTP webhelyet a menüből... +FailedToGetFile=A %s fájlok letöltése sikertelen diff --git a/htdocs/langs/hu_HU/paypal.lang b/htdocs/langs/hu_HU/paypal.lang index 64cc9381a8b..666611d5167 100644 --- a/htdocs/langs/hu_HU/paypal.lang +++ b/htdocs/langs/hu_HU/paypal.lang @@ -1,36 +1,36 @@ # Dolibarr language file - Source file is en_US - paypal PaypalSetup=PayPal modul beállítása -PaypalDesc=This module allows payment by customers via PayPal. This can be used for a ad-hoc payment or for a payment related to a Dolibarr object (invoice, order, ...) -PaypalOrCBDoPayment=Pay with PayPal (Card or PayPal) -PaypalDoPayment=Fizess Paypallal -PAYPAL_API_SANDBOX=Üzemmódban végzett vizsgálat / homokozó +PaypalDesc=Ez a modul lehetővé teszi az ügyfelek számára a PayPal keresztül történő fizetést. Ez felhasználható eseti vagy Dolibarr objektumhoz kapcsolódó fizetésre (számla, megrendelés, ...) +PaypalOrCBDoPayment=Fizetés PayPal-lal (kártya vagy PayPal) +PaypalDoPayment=Fizetés PayPal-lal +PAYPAL_API_SANDBOX=Mód teszt/sandbox PAYPAL_API_USER=API felhasználónév PAYPAL_API_PASSWORD=API jelszó PAYPAL_API_SIGNATURE=API aláírás -PAYPAL_SSLVERSION=Curl SSL Version -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer "integral" payment (Credit card+PayPal) or "PayPal" only +PAYPAL_SSLVERSION=Curl SSL verzió +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Csak "integrált" fizetés (hitelkártya+PayPal) vagy "PayPal" ajánlat PaypalModeIntegral=Integrál PaypalModeOnlyPaypal=Csak PayPal -ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page -ThisIsTransactionId=Ez a tranzakció id: %s -PAYPAL_ADD_PAYMENT_URL=Include the PayPal payment url when you send a document by email -NewOnlinePaymentReceived=New online payment received -NewOnlinePaymentFailed=New online payment tried but failed -ONLINE_PAYMENT_SENDEMAIL=Email address for notifications after each payment attempt (for success and fail) -ReturnURLAfterPayment=Return URL after payment -ValidationOfOnlinePaymentFailed=Az online fizetés ellenőrzése sikertelen -PaymentSystemConfirmPaymentPageWasCalledButFailed=Payment confirmation page was called by payment system returned an error -SetExpressCheckoutAPICallFailed=SetExpressCheckout API call failed. -DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API call failed. -DetailedErrorMessage=Detailed Error Message +ONLINE_PAYMENT_CSS_URL=A CSS-stíluslap opcionális URL-je az online fizetési oldalon +ThisIsTransactionId=Ez a tranzakció azonosítója: %s +PAYPAL_ADD_PAYMENT_URL=A PayPal fizetési URL-címet is adja meg, amikor e-mailben küld dokumentumot +NewOnlinePaymentReceived=Új online fizetés érkezett +NewOnlinePaymentFailed=Új online fizetés próbálkozott, de sikertelen +ONLINE_PAYMENT_SENDEMAIL=E-mail cím minden fizetési kísérlet után (siker és sikertelenség esetén) +ReturnURLAfterPayment=Visszaküldési URL fizetés után +ValidationOfOnlinePaymentFailed=Az online fizetés ellenőrzése nem sikerült +PaymentSystemConfirmPaymentPageWasCalledButFailed=A fizetést megerősítő oldalt a fizetési rendszer hívta meg, és hibát adott vissza +SetExpressCheckoutAPICallFailed=SetExpressCheckout API hívás sikertelen. +DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API hívás sikertelen. +DetailedErrorMessage=Részletes hibaüzenet ShortErrorMessage=Rövid hibaüzenet -ErrorCode=Error Code -ErrorSeverityCode=Error Severity Code -OnlinePaymentSystem=Online payment system -PaypalLiveEnabled=PayPal "live" mode enabled (otherwise test/sandbox mode) -PaypalImportPayment=Import PayPal payments -PostActionAfterPayment=Post actions after payments -ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. You must complete post actions manually if they are necessary. -ValidationOfPaymentFailed=Validation of payment has failed -CardOwner=Card holder -PayPalBalance=Paypal credit +ErrorCode=Hibakód +ErrorSeverityCode=Hiba súlyossági kódja +OnlinePaymentSystem=Online fizetési rendszer +PaypalLiveEnabled=A PayPal "élő" mód engedélyezve (ellenkező esetben teszt/sandbox mód) +PaypalImportPayment=PayPal fizetések importálása +PostActionAfterPayment=Műveletek a kifizetések után +ARollbackWasPerformedOnPostActions=Minden közzétételi művelet visszaállítása megtörtént. Szükség esetén kézzel kell végrehajtania a bejegyzési műveleteket. +ValidationOfPaymentFailed=A fizetés ellenőrzése nem sikerült +CardOwner=Kártyatartó +PayPalBalance=Paypal jóváírás diff --git a/htdocs/langs/hu_HU/products.lang b/htdocs/langs/hu_HU/products.lang index cef25a5efd6..f9f3cebf843 100644 --- a/htdocs/langs/hu_HU/products.lang +++ b/htdocs/langs/hu_HU/products.lang @@ -262,7 +262,7 @@ Quarter1=1. Negyed Quarter2=2. Negyed Quarter3=3. Negyed Quarter4=4. Negyed -BarCodePrintsheet=Vonalkód nyomtatása +BarCodePrintsheet=Vonalkódok nyomtatása PageToGenerateBarCodeSheets=Ezzel az eszközzel vonalkódmatricákat nyomtathat ki. Válassza ki a matricaoldal formátumát, a vonalkód típusát és a vonalkód értékét, majd kattintson a %s gombra. NumberOfStickers=Az oldalon nyomtatandó matricák száma PrintsheetForOneBarCode=Több matrica nyomtatása egy vonalkódhoz diff --git a/htdocs/langs/hu_HU/projects.lang b/htdocs/langs/hu_HU/projects.lang index 30d0c08766e..878583e027f 100644 --- a/htdocs/langs/hu_HU/projects.lang +++ b/htdocs/langs/hu_HU/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Kiszámlázott idő TimeSpentForIntervention=Eltöltött idő TimeSpentForInvoice=Eltöltött idő OneLinePerUser=Felhasználónként egy sor -ServiceToUseOnLines=A vonalakon használható szolgáltatás +ServiceToUseOnLines=Service to use on lines InvoiceGeneratedFromTimeSpent=A %s számla a projektben eltöltött időből készült InterventionGeneratedFromTimeSpent=A %s beavatkozás a projektben eltöltött időből jött létre ProjectBillTimeDescription=Ellenőrizze, hogy megad-e munkaidő-nyilvántartást a projekt feladatairól ÉS azt tervezi, hogy számlá(ka)t generál az időnyilvántartásból, hogy kiszámlázza a projekt ügyfelét (ne ellenőrizze, hogy nem a megadott munkaidő-nyilvántartásokon alapuló számlát tervez-e készíteni). Megjegyzés: Számla generálásához lépjen a projekt „Eltöltött idő” lapjára, és válassza ki a bevonni kívánt sorokat. diff --git a/htdocs/langs/hu_HU/stocks.lang b/htdocs/langs/hu_HU/stocks.lang index 70f08d06502..a660ffaf59f 100644 --- a/htdocs/langs/hu_HU/stocks.lang +++ b/htdocs/langs/hu_HU/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=A vonalkóddal rendelkező termék nem létezik WarehouseId=Raktárazonosító WarehouseRef=Raktári szám SaveQtyFirst=Először mentse el a valós készletezett mennyiségeket, mielőtt a készletmozgás létrehozását kérné. +ToStart=START InventoryStartedShort=Elindult ErrorOnElementsInventory=A művelet a következő ok miatt megszakadt: ErrorCantFindCodeInInventory=Nem található a következő kód a leltárban @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Siker!! A mennyiség hozzá lett adva az összes StockChangeDisabled=A készlet módosítása letiltva NoWarehouseDefinedForTerminal=Nincs raktár definiálva a terminálhoz ClearQtys=Törölje az összes mennyiséget +ModuleStockTransferName=Speciális készlettranszfer +ModuleStockTransferDesc=A készlettranszfer fejlett kezelése transzfer lap generálásával +StockTransferNew=Új készlet átadása +StockTransferList=Készlettranszferek listája +ConfirmValidateStockTransfer=Biztosan érvényesíteni szeretné ezt a készletátruházást az %s hivatkozással? +ConfirmDestock=Készletek csökkenése átutalással %s +ConfirmDestockCancel=Törölje a készletcsökkentést %s átutalással +DestockAllProduct=A készletek csökkenése +DestockAllProductCancel=Törölje a készletcsökkenést +ConfirmAddStock=A készletek növelése %s átutalással +ConfirmAddStockCancel=Törölje a készlet növelését %s átutalással +AddStockAllProduct=A készletek növekedése +AddStockAllProductCancel=Törölje a készletek növelését +DatePrevueDepart=Az indulás tervezett időpontja +DateReelleDepart=Valódi indulás dátuma +DatePrevueArrivee=Tervezett Érkezés +DateReelleArrivee=Valódi érkezési dátum +HelpWarehouseStockTransferSource=Ha ez a raktár be van állítva, csak ő maga és gyermekei lesznek elérhetőek forrásraktárként +HelpWarehouseStockTransferDestination=Ha ez a raktár be van állítva, csak ő maga és gyermekei lesznek elérhetőek célraktárként +LeadTimeForWarning=Átfutási idő a riasztás előtt (napokban) +TypeContact_stocktransfer_internal_STFROM=Készlet átadás feladója +TypeContact_stocktransfer_internal_STDEST=A készlet átruházás címzettje +TypeContact_stocktransfer_internal_STRESP=A készletek átviteléért felelős +StockTransferSheet=Készlet átadási lap +StockTransferSheetProforma=Proforma részvény átadási lap +StockTransferDecrementation=Csökkentse a forrásraktárak számát +StockTransferIncrementation=Növelje a célraktárak számát +StockTransferDecrementationCancel=Törölje a forrásraktárak csökkentését +StockTransferIncrementationCancel=Törölje a rendeltetési raktárak növelését +StockStransferDecremented=A forrás raktárak csökkentek +StockStransferDecrementedCancel=A forrás raktárak csökkenése törölve +StockStransferIncremented=Lezárva – A készletek átadva +StockStransferIncrementedShort=Átruházott készletek +StockStransferIncrementedShortCancel=A célraktárak számának növelése törölve +StockTransferNoBatchForProduct=Az %s termék nem használja a kötegelt, törölje a tételt a vonalon, és próbálja újra +StockTransferSetup = Készletátviteli modul konfigurációja +Settings=Beállítások +StockTransferSetupPage = A készletátviteli modul konfigurációs oldala +StockTransferRightRead=Olvassa el a készlettranszfereket +StockTransferRightCreateUpdate=Készlettranszferek létrehozása/frissítése +StockTransferRightDelete=Törölje a készlettranszfereket +BatchNotFound=A tétel/sorozat nem található ehhez a termékhez diff --git a/htdocs/langs/hu_HU/stripe.lang b/htdocs/langs/hu_HU/stripe.lang index b4c5b7d90e4..1444c2bfd58 100644 --- a/htdocs/langs/hu_HU/stripe.lang +++ b/htdocs/langs/hu_HU/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Link a Stripe WebHook beállításához az IPN hívá PaymentWillBeRecordedForNextPeriod=A fizetés a következő időszakra kerül rögzítésre. ClickHereToTryAgain=Kattintson ide az újrapróbálkozáshoz... CreationOfPaymentModeMustBeDoneFromStripeInterface=Az erős ügyfél-hitelesítési szabályok miatt a kártyát a Stripe backoffice-ból kell létrehozni. Ide kattintva bekapcsolhatja a Stripe ügyfélrekordot: %s +TERMINAL_LOCATION=A terminálok helye (címe). diff --git a/htdocs/langs/hu_HU/ticket.lang b/htdocs/langs/hu_HU/ticket.lang index 2a28eca0db7..edb3da6045c 100644 --- a/htdocs/langs/hu_HU/ticket.lang +++ b/htdocs/langs/hu_HU/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=A következő URL-címen elérhető egy nyilvános interfész TicketSetupDictionaries=A jegy típusa, súlyossága és az analitikai kódok szótárakból konfigurálhatók TicketParamModule=Modulváltozó beállítása TicketParamMail=E-mail beállítása -TicketEmailNotificationFrom=A jegyekre adott válaszokért küldjön e-mailt -TicketEmailNotificationFromHelp=A Dolibarrtól küldött jegyekre adott válaszok küldő e-mailje +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Értesítés a jegy létrehozásáról erre az e-mail címre TicketEmailNotificationToHelp=Ha van, ez az e-mail cím értesítést kap a jegy létrehozásáról TicketNewEmailBodyLabel=Szöveges üzenet a jegy létrehozása után diff --git a/htdocs/langs/id_ID/admin.lang b/htdocs/langs/id_ID/admin.lang index 107706e511f..a8b7aff6e9b 100644 --- a/htdocs/langs/id_ID/admin.lang +++ b/htdocs/langs/id_ID/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Nilai berikutnya (pengganti) MustBeLowerThanPHPLimit=Catatan: konfigurasi PHP Anda saat ini membatasi ukuran file maksimum untuk diunggah ke %s%s, terlepas dari nilai parameter ini NoMaxSizeByPHPLimit=Catatan: Tidak ada batas diatur dalam konfigurasi PHP Anda MaxSizeForUploadedFiles=Ukuran maksimal untuk file upload (0 untuk melarang pengunggahan ada) -UseCaptchaCode=Gunakan kode grafis (CAPTCHA) pada halaman login +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Path lengkap ke perintah antivirus AntiVirusCommandExample=Contoh untuk ClamAv Daemon (memerlukan clamav-daemon): / usr / bin / clamdscan
Contoh untuk ClamWin (sangat sangat lambat): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Lebih lanjut tentang parameter baris perintah @@ -477,7 +477,7 @@ InstalledInto=Diinstal ke direktori %s BarcodeInitForThirdparties=Init barcode massal untuk pihak ketiga BarcodeInitForProductsOrServices=Kode batang massal init atau reset untuk produk atau layanan CurrentlyNWithoutBarCode=Saat ini, Anda memiliki catatan %s pada %s %s tanpa kode barcode yang ditentukan. -InitEmptyBarCode=Nilai init untuk catatan kosong %s berikutnya +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Hapus semua nilai barcode saat ini ConfirmEraseAllCurrentBarCode=Anda yakin ingin menghapus semua nilai barcode saat ini? AllBarcodeReset=Semua nilai barcode telah dihapus @@ -504,7 +504,7 @@ WarningPHPMailC=- Menggunakan server SMTP milik Penyedia Layanan Email Anda send WarningPHPMailD=Selain itu, disarankan untuk mengubah metode pengiriman email ke "SMTP". Jika Anda benar-benar ingin mempertahankan metode "PHP" default untuk mengirim email, abaikan peringatan ini, atau hapus dengan menyetel konstanta MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ke 1 di Beranda - Pengaturan - Lainnya. WarningPHPMail2=Jika penyedia SMTP email Anda perlu membatasi klien email ke beberapa alamat IP (sangat jarang), ini adalah alamat IP dari agen pengguna email (MUA) untuk aplikasi ERP CRM Anda:%s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klik untuk menampilkan deskripsi DependsOn=Modul ini membutuhkan modul RequiredBy=Modul ini diperlukan oleh modul @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Nilai konstanta konfigurasi ConstantIsOn=Opsi %s aktif NbOfDays=Jumlah hari AtEndOfMonth=diakhir bulan -CurrentNext=Sekarang / selanjutnya +CurrentNext=A given day in month Offset=Mengimbangi AlwaysActive=Selalu Aktif Upgrade=Pemutakhiran @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Tekan CTRL + F5 pada keyboard atau kosongkan cache brow NotSupportedByAllThemes=Akan berfungsi dengan tema inti, mungkin tidak didukung oleh tema eksternal BackgroundColor=Warna latar belakang TopMenuBackgroundColor=Warna latar untuk menu Top -TopMenuDisableImages=Sembunyikan gambar di menu Atas +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Warna latar belakang untuk menu Kiri BackgroundTableTitleColor=Warna latar belakang untuk garis judul tabel BackgroundTableTitleTextColor=Warna teks untuk baris judul Tabel @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Catatan: Opsi untuk menggunakan Pajak Penjualan atau PPN telah di SwapSenderAndRecipientOnPDF=Tukar posisi pengirim dan alamat penerima pada dokumen PDF FeatureSupportedOnTextFieldsOnly=Peringatan, fitur hanya didukung pada bidang teks dan daftar kombo. Juga parameter URL action = create atau action = edit harus disetel ATAU nama halaman harus diakhiri dengan 'new.php' untuk memicu fitur ini. EmailCollector=Kolektor email +EmailCollectors=Email collectors EmailCollectorDescription=Tambahkan pekerjaan terjadwal dan halaman pengaturan untuk memindai secara teratur kotak email (menggunakan protokol IMAP) dan merekam email yang diterima ke dalam aplikasi Anda, di tempat yang tepat dan / atau membuat beberapa catatan secara otomatis (seperti lead). NewEmailCollector=Kolektor Email Baru EMailHost=Host server IMAP email @@ -2073,14 +2074,14 @@ DateLastCollectResult=Tanggal percobaan koleksi terbaru DateLastcollectResultOk=Tanggal keberhasilan koleksi terbaru LastResult=Hasil terbaru EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Konfirmasi pengumpulan email EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Tidak ada email baru (filter yang cocok) untuk diproses NothingProcessed=Tidak ada yang dilakukan -XEmailsDoneYActionsDone=email %s memenuhi syarat, email %s berhasil diproses (untuk catatan / tindakan %s dilakukan) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template untuk email EMailsWillHaveMessageID=Email akan memiliki tag 'Referensi' yang cocok dengan sintaks ini PDF_SHOW_PROJECT=Tampilkan proyek di dokumen ShowProjectLabel=Label Proyek +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Jika Anda ingin agar beberapa teks dalam PDF Anda digandakan dalam 2 bahasa berbeda dalam PDF yang dihasilkan sama, Anda harus mengatur di sini bahasa kedua ini sehingga PDF yang dihasilkan akan berisi 2 bahasa berbeda di halaman yang sama, yang dipilih saat membuat PDF dan yang ini ( hanya beberapa templat PDF yang mendukung ini). Biarkan kosong untuk 1 bahasa per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Masukkan di sini kode ikon FontAwesome. Jika Anda tidak tahu apa itu FontAwesome, Anda dapat menggunakan fa-address-book nilai umum. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Pengaturan +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/id_ID/companies.lang b/htdocs/langs/id_ID/companies.lang index 528d734d872..669da132c78 100644 --- a/htdocs/langs/id_ID/companies.lang +++ b/htdocs/langs/id_ID/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Sifat pihak ketiga NatureOfContact=Sifat kontak Address=Alamat State=Negara bagian/Provinsi +StateId=State ID StateCode=Kode Negara Bagian/Provinsi StateShort=Negara Region=Wilayah Region-State=Wilayah - Negara Bagian Country=Negara CountryCode=Kode negara -CountryId=ID negara +CountryId=Country ID Phone=Telepon PhoneShort=Telepon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Id Prof 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Tambahkan alamat SupplierCategory=Kategori vendor JuridicalStatus200=Independen DeleteFile=Menghapus berkas -ConfirmDeleteFile=Anda yakin ingin menghapus file ini? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Ditugaskan ke perwakilan penjualan Organization=Organisasi FiscalYearInformation=Tahun fiskal diff --git a/htdocs/langs/id_ID/errors.lang b/htdocs/langs/id_ID/errors.lang index bbe8da704b3..900cd9ef031 100644 --- a/htdocs/langs/id_ID/errors.lang +++ b/htdocs/langs/id_ID/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript tidak boleh dinonaktifkan agar fitur ini ErrorPasswordsMustMatch=Kedua kata sandi yang diketik harus cocok satu sama lain ErrorContactEMail=Terjadi kesalahan teknis. Silakan, hubungi administrator untuk mengikuti email%sdan berikan kode kesalahan%sdi pesan Anda, atau tambahkan halaman ini pada halaman pesan ini, atau tambahkan salinan layar ini pada halaman Anda, atau tambahkan salinan layar ini ke halaman pesan Anda, atau tambahkan salinan layar ini ke halaman pesan Anda, atau tambahkan salinan layar ini ke halaman pesan Anda, atau tambahkan salinan dari layar ini pada halaman pesan Anda, atau tambahkan salinan halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman pesan ini, atau tambahkan salinan dari layar ini pada halaman pesan ini, atau tambahkan salinan dari layar ini pada halaman pesan ini, atau tambahkan salinan dari halaman ini pada halaman ini, atau tambahkan sebuah salinan dari halaman ini pada halaman pesan Anda. ErrorWrongValueForField=Baris %s: '%s' tidak cocok dengan aturan regex %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Bidang%s : ' %s ' bukan nilai yang ditemukan di lapangan%sdari%s ErrorFieldRefNotIn=Baris %s: '%s' bukan sebuah %s ref yang telah ada ErrorsOnXLines=kesalahan %s ditemukan @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Anda harus terlebih dahulu mengatur bag ErrorFailedToFindEmailTemplate=Gagal menemukan template dengan nama kode %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durasi tidak ditentukan pada layanan. Tidak ada cara untuk menghitung harga per jam. ErrorActionCommPropertyUserowneridNotDefined=Pemilik pengguna diperlukan -ErrorActionCommBadType=Jenis peristiwa yang dipilih (id: %n, kode: %s) tidak ada di kamus Jenis Peristiwa +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Pemeriksaan versi gagal ErrorWrongFileName=Nama file tidak boleh memiliki __SOMETHING__ di dalamnya ErrorNotInDictionaryPaymentConditions=Tidak ada dalam Kamus Istilah Pembayaran, harap ubah. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by actual object status +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Parameter PHP Anda upload_max_filesize (%s) lebih tinggi dari parameter PHP post_max_size (%s). Ini bukan pengaturan yang konsisten. WarningPasswordSetWithNoAccount=Kata sandi ditetapkan untuk anggota ini. Namun, tidak ada akun pengguna yang dibuat. Jadi kata sandi ini disimpan tetapi tidak dapat digunakan untuk masuk ke Dolibarr. Ini dapat digunakan oleh modul / antarmuka eksternal tetapi jika Anda tidak perlu mendefinisikan login atau kata sandi untuk anggota, Anda dapat menonaktifkan opsi "Kelola login untuk setiap anggota" dari pengaturan modul Anggota. Jika Anda perlu mengelola login tetapi tidak memerlukan kata sandi, Anda dapat mengosongkan isian ini untuk menghindari peringatan ini. Catatan: Email juga dapat digunakan sebagai login jika anggota tersebut tertaut ke pengguna. -WarningMandatorySetupNotComplete=Klik di sini untuk mengatur parameter wajib +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Klik di sini untuk mengaktifkan modul dan aplikasi Anda WarningSafeModeOnCheckExecDir=Peringatan, opsi PHPsafe_modeaktif sehingga perintah harus disimpan di dalam direktori yang dideklarasikan dengan parameter phpsafe_mode_exec_dir . WarningBookmarkAlreadyExists=Bookmark dengan judul ini atau target (URL) ini sudah ada. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Peringatan, Anda tidak dapat membuat sub-akun secara la WarningAvailableOnlyForHTTPSServers=Hanya tersedia jika menggunakan koneksi aman HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Modul %s belum diaktifkan. Jadi Anda mungkin melewatkan banyak acara di sini. WarningPaypalPaymentNotCompatibleWithStrict=Nilai 'Strict' membuat fitur pembayaran online tidak berfungsi dengan baik. Gunakan 'Lax' sebagai gantinya. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME -<<<<<<< KEPALA -======= -<<<<<<< KEPALA -<<<<<<< KEPALA ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Nilai tidak valid RequireAtLeastXString = Memerlukan setidaknya %s karakter @@ -347,12 +347,3 @@ BadSetupOfField = Salah pengaturan bidang yang buruk BadSetupOfFieldClassNotFoundForValidation = Salah pengaturan bidang yang buruk: Kelas tidak ditemukan untuk validasi BadSetupOfFieldFileNotFound = Salah pengaturan bidang yang buruk: File tidak ditemukan untuk dimasukkan BadSetupOfFieldFetchNotCallable = Salah pengaturan bidang yang buruk: Ambil tidak dapat dipanggil di kelas -<<<<<<< KEPALA -======= -======= -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/id_ID/externalsite.lang b/htdocs/langs/id_ID/externalsite.lang deleted file mode 100644 index d634bdb6786..00000000000 --- a/htdocs/langs/id_ID/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Atur tautan ke situs web eksternal -ExternalSiteURL=URL Situs Eksternal dari konten iframe HTML -ExternalSiteModuleNotComplete=Modul ExternalSite tidak dikonfigurasi dengan benar. -ExampleMyMenuEntry=Entri menu saya diff --git a/htdocs/langs/id_ID/ftp.lang b/htdocs/langs/id_ID/ftp.lang deleted file mode 100644 index 41f331bbf14..00000000000 --- a/htdocs/langs/id_ID/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Pengaturan modul Klien FTP atau SFTP -NewFTPClient=Pengaturan koneksi FTP / FTPS baru -FTPArea=Area FTP / FTPS -FTPAreaDesc=Layar ini menunjukkan tampilan server FTP dan SFTP. -SetupOfFTPClientModuleNotComplete=Penyiapan modul klien FTP atau SFTP tampaknya tidak lengkap -FTPFeatureNotSupportedByYourPHP=PHP Anda tidak mendukung fungsi FTP atau SFTP -FailedToConnectToFTPServer=Gagal terhubung ke server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Gagal masuk ke server dengan login / kata sandi yang ditentukan -FTPFailedToRemoveFile=Gagal menghapus file%s . -FTPFailedToRemoveDir=Gagal menghapus direktori%s : periksa izin dan direktori tersebut kosong. -FTPPassiveMode=Mode pasif -ChooseAFTPEntryIntoMenu=Pilih situs FTP/SFTP dari menu... -FailedToGetFile=Gagal mendapatkan file %s diff --git a/htdocs/langs/id_ID/hrm.lang b/htdocs/langs/id_ID/hrm.lang index 9e00d361ec6..59dea3f0e29 100644 --- a/htdocs/langs/id_ID/hrm.lang +++ b/htdocs/langs/id_ID/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Pembentukan terbuka CloseEtablishment=Pembentukan tertutup # Dictionary DictionaryPublicHolidays=Cuti - Hari libur nasional -DictionaryDepartment=HRM - Daftar Departement +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Posisi pekerjaan # Module Employees=karyawan @@ -20,14 +20,15 @@ Employee=karyawan NewEmployee=Karyawan Baru ListOfEmployees=Daftar Karyawan HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs -NewSkill=New Skill +JobPosition=Job +JobsPosition=Jobs +NewSkill=Skill baru SkillType=Skill type Skilldets=List of ranks for this skill Skilldet=Skill level @@ -39,17 +40,16 @@ skill=Skill Skills=Skills SkillCard=Skill card EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) -Eval=Evaluation -Evals=Evaluations -NewEval=New evaluation -ValidateEvaluation=Validate evaluation +Eval=Evaluasi +Evals=Evaluasi +NewEval=Evaluasi baru +ValidateEvaluation=Validasi evaluasi ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference %s? EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Posisi -Positions=Positions -PositionCard=Position card +EmployeePosition=Jabatan karyawan +EmployeePositions=Jabatan karyawan EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank -HighestRank=Highest rank -SkillComparison=Skill comparison +HighestRank=Peringkat tertinggi +SkillComparison=Perbandingan skill +ActionsOnJob=Events on this job +VacantPosition=lowongan pekerjaan +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/id_ID/install.lang b/htdocs/langs/id_ID/install.lang index 0b60aa47c40..8aac1bb7f95 100644 --- a/htdocs/langs/id_ID/install.lang +++ b/htdocs/langs/id_ID/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=File konfigurasi%stidak dapat ditulis. Periksa izin ConfFileIsWritable=File konfigurasi%sdapat ditulis. ConfFileMustBeAFileNotADir=File konfigurasi %s harus berupa berkas, bukan direktori. ConfFileReload=Memuat ulang parameter dari file konfigurasi. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP ini mendukung variabel POST dan GET PHPSupportPOSTGETKo=Mungkin pengaturan PHP Anda tidak mendukung variabel POST dan / atau GET. Periksa parametervariable_orderdi php.ini. PHPSupportSessions=PHP ini mendukung sesi. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Anda mungkin telah mengetik nilai yang salah untuk p ErrorFailedToCreateDatabase=Gagal membuat basis data '%s'. ErrorFailedToConnectToDatabase=Gagal untuk terhubung pada basis data '%s' ErrorDatabaseVersionTooLow=Versi basis data (%s) terlalu lama. Dibutuhkan versi %s atau lebih -ErrorPHPVersionTooLow=Versi PHP terlalu lama. Dibutuhkan versi %s +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Koneksi ke server berhasil tetapi database '%s' tidak ditemukan. ErrorDatabaseAlreadyExists=Database '%s' sudah ada. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Jika database tidak ada, kembali dan centang opsi "Buat database". IfDatabaseExistsGoBackAndCheckCreate=Jika database sudah ada, kembali dan hapus centang opsi "Buat database". WarningBrowserTooOld=Versi browser terlalu lama. Memutakhirkan browser Anda ke versi terbaru dari Firefox, Chrome atau Opera sangat disarankan. diff --git a/htdocs/langs/id_ID/knowledgemanagement.lang b/htdocs/langs/id_ID/knowledgemanagement.lang index 640e4c857f0..bd0abf8c6d8 100644 --- a/htdocs/langs/id_ID/knowledgemanagement.lang +++ b/htdocs/langs/id_ID/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artikel KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Extrafields untuk Artikel GroupOfTicket=Kelompok tiket -YouCanLinkArticleToATicketCategory=Anda dapat menautkan artikel ke grup tiket (sehingga artikel akan disarankan selama kualifikasi tiket baru) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Disarankan untuk tiket saat grup SetObsolete=Set as obsolete diff --git a/htdocs/langs/id_ID/loan.lang b/htdocs/langs/id_ID/loan.lang index a7075015bb9..5bd1f86c599 100644 --- a/htdocs/langs/id_ID/loan.lang +++ b/htdocs/langs/id_ID/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Komitmen keuangan InterestAmount=Bunga CapitalRemain=Modal tersisa TermPaidAllreadyPaid = Istilah ini sudah dibayar -CantUseScheduleWithLoanStartedToPaid = Tidak dapat menggunakan penjadwalan untuk pinjaman ketika pembayaran telah dimulai +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Anda tidak dapat mengubah minat jika Anda menggunakan jadwal # Admin ConfigLoan=Konfigurasi pinjaman modul diff --git a/htdocs/langs/id_ID/main.lang b/htdocs/langs/id_ID/main.lang index 23fbd8255cb..21b62af26c7 100644 --- a/htdocs/langs/id_ID/main.lang +++ b/htdocs/langs/id_ID/main.lang @@ -244,6 +244,7 @@ Designation=Keterangan DescriptionOfLine=Deskripsi garis DateOfLine=Tanggal baris DurationOfLine=Durasi garis +ParentLine=Parent line ID Model=Templat dokumen DefaultModel=Template dokumen default Action=Peristiwa @@ -344,7 +345,7 @@ KiloBytes=Kilobyte MegaBytes=Megabita GigaBytes=Gigabytes TeraBytes=Terabyte -UserAuthor=Dibuat oleh +UserAuthor=Created by UserModif=Diperbaharui oleh b=b. Kb=Kb @@ -517,6 +518,7 @@ or=atau Other=Lainnya Others=Lainnya OtherInformations=Informasi lain +Workflow=Workflow Quantity=Kuantitas Qty=Jumlah ChangedBy=Diubah oleh @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=File dan dokumen terlampir JoinMainDoc=Bergabunglah dengan dokumen utama +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=Fitur dinonaktifkan MoveBox=Pindahkan widget Offered=Ditawarkan NotEnoughPermissions=Anda tidak memiliki izin untuk tindakan ini +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Nama sesi Method=Metode Receive=Menerima @@ -798,6 +802,7 @@ URLPhoto=URL foto / logo SetLinkToAnotherThirdParty=Tautan ke pihak ketiga lain LinkTo=Tautan ke LinkToProposal=Tautan ke proposal +LinkToExpedition= Link to expedition LinkToOrder=Tautan ke pesanan LinkToInvoice=Tautan ke faktur LinkToTemplateInvoice=Tautan ke faktur templat @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/id_ID/members.lang b/htdocs/langs/id_ID/members.lang index 2ee63ea41df..898cda41a78 100644 --- a/htdocs/langs/id_ID/members.lang +++ b/htdocs/langs/id_ID/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Tanggal akhir keanggotaan EndSubscription=Akhir keanggotaan SubscriptionId=ID Kontribusi WithoutSubscription=Tanpa kontribusi -MemberId=Tanda Anggota +MemberId=Member Id +MemberRef=Member Ref NewMember=Anggota baru MemberType=Tipe anggota MemberTypeId=ID tipe anggota @@ -135,7 +136,7 @@ CardContent=Konten kartu anggota Anda # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Kami ingin memberi tahu Anda bahwa permintaan keanggotaan Anda telah diterima.

ThisIsContentOfYourMembershipWasValidated=Kami ingin memberi tahu Anda bahwa keanggotaan Anda telah divalidasi dengan informasi berikut:

-ThisIsContentOfYourSubscriptionWasRecorded=Kami ingin memberi tahu Anda bahwa langganan baru Anda telah direkam.

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

ThisIsContentOfSubscriptionReminderEmail=Kami ingin memberi tahu Anda bahwa langganan Anda akan kedaluwarsa atau telah kedaluwarsa (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Kami harap Anda akan memperbaruinya.

ThisIsContentOfYourCard=Ini adalah ringkasan informasi yang kami miliki tentang Anda. Silakan hubungi kami jika ada yang salah.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subjek dari email pemberitahuan yang diterima jika ada tulisan otomatis dari seorang tamu @@ -218,3 +219,5 @@ XExternalUserCreated=%s pengguna eksternal yang dibuat ForceMemberNature=Sifat anggota paksa (Perorangan atau Perusahaan) CreateDolibarrLoginDesc=Pembuatan login pengguna untuk anggota memungkinkan mereka terhubung ke aplikasi. Tergantung pada otorisasi yang diberikan, mereka akan dapat, misalnya, berkonsultasi atau memodifikasi file mereka sendiri. CreateDolibarrThirdPartyDesc=Pihak ketiga adalah badan hukum yang akan digunakan pada faktur jika Anda memutuskan untuk membuat faktur untuk setiap kontribusi. Anda akan dapat membuatnya nanti selama proses pencatatan kontribusi. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/id_ID/oauth.lang b/htdocs/langs/id_ID/oauth.lang index 32b86a91831..b16c0a83160 100644 --- a/htdocs/langs/id_ID/oauth.lang +++ b/htdocs/langs/id_ID/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token dibuat dan disimpan ke dalam basis data lokal NewTokenStored=Token diterima dan disimpan ToCheckDeleteTokenOnProvider=Klik di sini untuk memeriksa / menghapus otorisasi yang disimpan oleh penyedia OAuth %s TokenDeleted=Token dihapus -RequestAccess=Klik di sini untuk meminta / memperbarui akses dan menerima token baru untuk disimpan -DeleteAccess=Klik di sini untuk menghapus token +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Gunakan URL berikut sebagai Redirect URI saat membuat kredensial Anda dengan penyedia OAuth Anda: -ListOfSupportedOauthProviders=Masukkan kredensial yang disediakan oleh penyedia OAuth2 Anda. Hanya penyedia OAuth2 yang didukung yang terdaftar di sini. Layanan ini dapat digunakan oleh modul lain yang membutuhkan otentikasi OAuth2. -OAuthSetupForLogin=Halaman untuk menghasilkan token OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Lihat tab sebelumnya +OAuthProvider=OAuth provider OAuthIDSecret=ID dan Rahasia OAuth TOKEN_REFRESH=Token Segarkan Sekarang TOKEN_EXPIRED=Token kedaluwarsa @@ -23,10 +24,13 @@ TOKEN_DELETE=Hapus token yang disimpan OAUTH_GOOGLE_NAME=Layanan Google OAuth OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Pergi ke halaman ini lalu "Kredensial" untuk membuat kredensial OAuth OAUTH_GITHUB_NAME=Layanan GitHub OAuth OAUTH_GITHUB_ID=Id GitHub OAuth OAUTH_GITHUB_SECRET=Rahasia GitHub OAuth -OAUTH_GITHUB_DESC=Pergi ke halaman ini lalu "Daftarkan aplikasi baru" untuk membuat kredensial OAuth +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=Tes Strip OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/id_ID/projects.lang b/htdocs/langs/id_ID/projects.lang index 39110503739..8ef2b56090c 100644 --- a/htdocs/langs/id_ID/projects.lang +++ b/htdocs/langs/id_ID/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Waktu yang dihabiskan ditagih TimeSpentForIntervention=Waktu yang dihabiskan TimeSpentForInvoice=Waktu yang dihabiskan OneLinePerUser=Satu baris per pengguna -ServiceToUseOnLines=Layanan untuk digunakan secara on line +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Faktur %s telah dihasilkan dari waktu yang dihabiskan untuk proyek InterventionGeneratedFromTimeSpent=Intervensi %s telah dihasilkan dari waktu yang dihabiskan untuk proyek ProjectBillTimeDescription=Periksa apakah Anda memasukkan kartu absen pada tugas proyek DAN Anda berencana untuk membuat faktur dari kartu absen untuk menagih pelanggan proyek (jangan periksa apakah Anda berencana untuk membuat faktur yang tidak didasarkan pada timeshe yang dimasukkan). Catatan: Untuk membuat faktur, buka tab 'Waktu yang dihabiskan' dari proyek dan pilih baris untuk disertakan. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/id_ID/stocks.lang b/htdocs/langs/id_ID/stocks.lang index 3dea2654b8d..5715bf5476e 100644 --- a/htdocs/langs/id_ID/stocks.lang +++ b/htdocs/langs/id_ID/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Batas stok untuk peringatan dan stok optimal yang d ProductStockWarehouseUpdated=Batas stok untuk peringatan dan stok optimal yang diinginkan diperbarui dengan benar ProductStockWarehouseDeleted=Batas stok untuk peringatan dan stok optimal yang diinginkan dihapus dengan benar AddNewProductStockWarehouse=Tetapkan batas baru untuk waspada dan stok optimal yang diinginkan -AddStockLocationLine=Kurangi kuantitas kemudian klik untuk menambahkan gudang lain untuk produk ini +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Tanggal inventaris Inventories=Inventories NewInventory=Inventaris baru @@ -254,7 +254,7 @@ ReOpen=Buka kembali ConfirmFinish=Apakah Anda mengkonfirmasi penutupan persediaan? Ini akan menghasilkan semua pergerakan stok untuk memperbarui stok Anda ke jumlah sebenarnya yang Anda masukkan ke dalam inventaris. ObjectNotFound=%s tidak ditemukan MakeMovementsAndClose=Hasilkan gerakan dan tutup -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Isi kuantitas nyata dengan kuantitas yang diharapkan ShowAllBatchByDefault=Secara default, tampilkan detail batch pada tab "stok" produk CollapseBatchDetailHelp=Anda dapat mengatur tampilan default detail batch dalam konfigurasi modul saham ErrorWrongBarcodemode=Mode Kode Batang Tidak Dikenal @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Produk dengan barcode tidak ada WarehouseId=ID Gudang WarehouseRef=Referensi Gudang SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Mulai InventoryStartedShort=Dimulai ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Pengaturan +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/is_IS/admin.lang b/htdocs/langs/is_IS/admin.lang index 540d764bad6..e08f54e6424 100644 --- a/htdocs/langs/is_IS/admin.lang +++ b/htdocs/langs/is_IS/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Next value (replacements) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Ath: Ekki eru sett lágmörk á PHP uppsetningu þína MaxSizeForUploadedFiles=Hámarks stærð fyrir skrár (0 til banna allir senda) -UseCaptchaCode=Nota myndræna kóða (Kapteinn) á innskráningarsíðu +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Full slóð að antivirus stjórn AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Fleiri breytur á lína @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -718,9 +718,9 @@ Permission34=Eyða vöru Permission36=Sjá / stjórna falinn vörur Permission38=Útflutningur vöru Permission39=Ignore minimum price -Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) -Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks -Permission44=Delete projects (shared project and projects I'm contact for) +Permission41=Read projects and tasks (shared projects and projects of which I am a contact). +Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks +Permission44=Delete projects (shared projects and projects of which I am a contact) Permission45=Export projects Permission61=Lesa inngrip Permission62=Búa til / breyta inngrip @@ -766,9 +766,10 @@ Permission122=Búa til / breyta þriðja aðila sem tengist notandi Permission125=Eyða þriðja aðila sem tengist notandi Permission126=Útflutningur þriðja aðila Permission130=Create/modify third parties payment information -Permission141=Read all projects and tasks (also private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) -Permission144=Delete all projects and tasks (also private projects i am not contact for) +Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) +Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) +Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) Permission146=Lesa þjónustuveitenda Permission147=Lesa Stats Permission151=Read direct debit payment orders @@ -883,6 +884,9 @@ Permission564=Record Debits/Rejections of credit transfer Permission601=Read stickers Permission602=Create/modify stickers Permission609=Delete stickers +Permission611=Read attributes of variants +Permission612=Create/Update attributes of variants +Permission613=Delete attributes of variants Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials @@ -969,6 +973,8 @@ Permission4021=Create/modify your evaluation Permission4022=Validate evaluation Permission4023=Delete evaluation Permission4030=See comparison menu +Permission4031=Read personal information +Permission4032=Write personal information Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1068,6 +1074,7 @@ DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category DictionaryTransportMode=Intracomm report - Transport mode DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Skipulag vistuð SetupNotSaved=Setup not saved @@ -1122,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=Í lok mánaðar -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Offset AlwaysActive=Alltaf virkar Upgrade=Uppfærsla @@ -1187,7 +1194,7 @@ BankModuleNotActive=Bankareikninga mát ekki virkt ShowBugTrackLink=Show the link "%s" ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' Alerts=Alerts -DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time @@ -1339,6 +1346,7 @@ TransKeyWithoutOriginalValue=You forced a new translation for the translation ke TitleNumberOfActivatedModules=Activated modules TotalNumberOfActivatedModules=Activated modules: %s / %s YouMustEnableOneModule=You must at least enable 1 module +YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Yes in summer OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
@@ -1420,6 +1428,8 @@ WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) PaymentsNumberingModule=Payments numbering model SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup +InvoiceCheckPosteriorDate=Check facture date before validation +InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. ##### Proposals ##### PropalSetup=Auglýsing tillögur mát skipulag ProposalsNumberingModules=Auglýsing tillögu tala mát @@ -1917,6 +1927,7 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +UseBorderOnTable=Show left-right borders on tables BtnActionColor=Color of the action button TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title @@ -1925,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -1938,7 +1949,7 @@ EnterAnyCode=This field contains a reference to identify the line. Enter any val Enter0or1=Enter 0 or 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=The RGB color is in HEX format, eg: FF0000 -PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module) +PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) PositionIntoComboList=Position of line into combo lists SellTaxRate=Sales tax rate RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. @@ -2037,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s @@ -2048,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2057,18 +2069,30 @@ EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ? +ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result +EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? +EmailCollectorConfirmCollect=Do you want to run this collector now? +EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. +EmailCollectorExampleToCollectLeads=Example collecting leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. +EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) @@ -2089,7 +2113,7 @@ ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users DisabledResourceLinkContact=Disable feature to link a resource to contacts -EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event +EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda ConfirmUnactivation=Confirm module reset OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) @@ -2134,7 +2158,7 @@ DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow access to some host IP only (wildcard not allowed, use space between values). Empty means every hosts can access. +RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Based on the library SabreDAV version NotAPublicIp=Not a public IP @@ -2144,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2206,12 +2233,12 @@ DashboardDisableBlockAdherent=Disable the thumb for memberships DashboardDisableBlockExpenseReport=Disable the thumb for expense reports DashboardDisableBlockHoliday=Disable the thumb for leaves EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax LanguageAndPresentation=Language and presentation SkinAndColors=Skin and colors -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax PDF_USE_1A=Generate PDF with PDF/A-1b format MissingTranslationForConfKey = Missing translation for %s NativeModules=Native modules @@ -2220,3 +2247,35 @@ API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first PreviousHash=Previous hash +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size +InventorySetup= Inventory Setup +ExportUseLowMemoryMode=Use a low memory mode +ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + +HashForPing=Hash used for ping +ReadOnlyMode=Is instance in "Read Only" mode +DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + +IconAndText=Icon and text +TextOnly=Text only +IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar +IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon +IconOnly=Icon only - Text on tooltip only +INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices +INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/is_IS/companies.lang b/htdocs/langs/is_IS/companies.lang index d7e1a85f6e1..f4d4a1f7b2a 100644 --- a/htdocs/langs/is_IS/companies.lang +++ b/htdocs/langs/is_IS/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Heimilisfang State=Ríki / Hérað +StateId=State ID StateCode=State/Province code StateShort=State Region=Svæði Region-State=Region - State Country=Land CountryCode=Landsnúmer -CountryId=Land id +CountryId=Country ID Phone=Sími PhoneShort=Sími Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Aðrir ProfId6ShortCM=- ProfId1CO=Prof Id 1 (Rut) diff --git a/htdocs/langs/is_IS/errors.lang b/htdocs/langs/is_IS/errors.lang index a6d3ae56134..d8282e3e62a 100644 --- a/htdocs/langs/is_IS/errors.lang +++ b/htdocs/langs/is_IS/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/is_IS/externalsite.lang b/htdocs/langs/is_IS/externalsite.lang deleted file mode 100644 index 871f44e7367..00000000000 --- a/htdocs/langs/is_IS/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Skipulag tengjast ytri vef -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/is_IS/ftp.lang b/htdocs/langs/is_IS/ftp.lang deleted file mode 100644 index b5a002890ed..00000000000 --- a/htdocs/langs/is_IS/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Viðskiptavinur mát skipulag -NewFTPClient=Nýr FTP tengingu skipulag -FTPArea=FTP svæði -FTPAreaDesc=Þessi skjár sýnir þér innihald FTP þjóninum að skoða -SetupOfFTPClientModuleNotComplete=Uppsetning á FTP viðskiptavinur eining virðist ekki vera heill -FTPFeatureNotSupportedByYourPHP=Your PHP styður ekki FTP aðgerðir -FailedToConnectToFTPServer=Tókst ekki að tengjast FTP miðlara (miðlara %s, höfn %s) -FailedToConnectToFTPServerWithCredentials=Ekki tókst að skrá þig inn á FTP þjóninum með skilgreint tenging / lykilorð -FTPFailedToRemoveFile=Ekki tókst að fjarlægja skrá %s. -FTPFailedToRemoveDir=Ekki tókst að fjarlægja skrá %s (Athugaðu heimildir og skrá er tóm). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/is_IS/install.lang b/htdocs/langs/is_IS/install.lang index 538f6d35faf..640969835b4 100644 --- a/htdocs/langs/is_IS/install.lang +++ b/htdocs/langs/is_IS/install.lang @@ -8,6 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Stillingarskráin %s er writable. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Þetta PHP styður breytur POST og FÁ. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Þetta PHP styður fundur. @@ -16,13 +17,6 @@ PHPMemoryOK=Your PHP max fundur minnið er stillt á %s . Þetta ætti a PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. Recheck=Click here for a more detailed test ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. -ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. -ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. -ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. -ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Listinn %s er ekki til. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -30,9 +24,11 @@ ErrorWrongValueForParameter=Þú gætir hafa slegið rangt gildi fyrir breytu ' ErrorFailedToCreateDatabase=Ekki tókst að búa til gagnagrunn ' %s '. ErrorFailedToConnectToDatabase=Tókst ekki að tengjast við gagnagrunn ' %s '. ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. -ErrorPHPVersionTooLow=PHP útgáfa of gamall. Útgáfa %s er krafist. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=%s Database 'er þegar til. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Ef skráð er þegar til, farðu til baka og veljið "Create gagnagrunninum" valmöguleikann. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/is_IS/members.lang b/htdocs/langs/is_IS/members.lang index 14b9bce68fc..33fd7c7a5cd 100644 --- a/htdocs/langs/is_IS/members.lang +++ b/htdocs/langs/is_IS/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Aðildarríkin persónuskilríki +MemberId=Member Id +MemberRef=Member Ref NewMember=Nýr meðlimur MemberType=Aðildarríkin tegund MemberTypeId=Aðildarríkin Auðkenni @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/is_IS/stocks.lang b/htdocs/langs/is_IS/stocks.lang index 2c70b2404ab..64a5fccd3d3 100644 --- a/htdocs/langs/is_IS/stocks.lang +++ b/htdocs/langs/is_IS/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Byrja InventoryStartedShort=Started ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/it_CH/admin.lang b/htdocs/langs/it_CH/admin.lang index c5ab56cb8d8..3b3a8d2c685 100644 --- a/htdocs/langs/it_CH/admin.lang +++ b/htdocs/langs/it_CH/admin.lang @@ -1,5 +1,4 @@ # Dolibarr language file - Source file is en_US - admin -OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax diff --git a/htdocs/langs/it_IT/accountancy.lang b/htdocs/langs/it_IT/accountancy.lang index b9f2e8501ad..d3f1d5242e6 100644 --- a/htdocs/langs/it_IT/accountancy.lang +++ b/htdocs/langs/it_IT/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Paesi al di fuori della CEE CountriesInEECExceptMe=Paesi nella CEE eccetto %s CountriesExceptMe=Tutti i paesi eccetto %s AccountantFiles=Esporta documenti di origine -ExportAccountingSourceDocHelp=Con questo strumento puoi esportare gli eventi di origine (elenco in CSV e PDF) utilizzati per generare la tua contabilità. +ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. ExportAccountingSourceDocHelp2=Per esportare i tuoi diari, usa la voce di menu %s - %s. VueByAccountAccounting=Visualizza per conto contabile VueBySubAccountAccounting=Visualizza per conto secondario contabile @@ -62,24 +62,24 @@ MainAccountForSubscriptionPaymentNotDefined=Account principale di contabilità p AccountancyArea=Area di contabilità AccountancyAreaDescIntro=L'utilizzo del modulo di contabilità è effettuato in diversi step: AccountancyAreaDescActionOnce=Le seguenti azioni vengono di solito eseguite una volta sola, o una volta all'anno... -AccountancyAreaDescActionOnceBis=Next steps should be done to save you time in future by suggesting you automaticaly the correct default accounting account when transferring data in accounting +AccountancyAreaDescActionOnceBis=I passaggi successivi dovrebbero essere eseguiti per farti risparmiare tempo in futuro suggerendoti automaticamente l'account di contabilità predefinito corretto durante il trasferimento dei dati nella contabilità AccountancyAreaDescActionFreq=Le seguenti azioni vengono di solito eseguite ogni mese, settimana o giorno per le grandi compagnie... -AccountancyAreaDescJournalSetup=STEP %s: Check content of your journal list from menu %s +AccountancyAreaDescJournalSetup=PASSO %s: controlla il contenuto dell'elenco del tuo diario dal menu %s AccountancyAreaDescChartModel=PASSAGGIO %s: verifica l'esistenza di un modello di piano dei conti o creane uno dal menu %s AccountancyAreaDescChart=PASSAGGIO %s: selezionare e/o completare il piano dei conti dal menu %s AccountancyAreaDescVat=STEP %s: Definisci le voci del piano dei conti per ogni IVA/tassa. Per fare ciò usa il menu %s. AccountancyAreaDescDefault=STEP %s: Definisci gli account di contabilità di default. Per questo, usa la voce menù %s. -AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of Expense report. For this, use the menu entry %s. +AccountancyAreaDescExpenseReport=PASSAGGIO %s: definire i conti contabili predefiniti per ogni tipo di nota spese. A tale scopo, utilizzare la voce di menu %s. AccountancyAreaDescSal=STEP %s: Definisci le voci del piano dei conti per gli stipendi. Per fare ciò usa il menu %s. -AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for Taxes (special expenses). For this, use the menu entry %s. +AccountancyAreaDescContrib=PASSAGGIO %s: Definire i conti contabili predefiniti per le imposte (spese speciali). A tale scopo, utilizzare la voce di menu %s. AccountancyAreaDescDonation=STEP %s: Definisci le voci del piano dei conti per le donazioni. Per fare ciò usa il menu %s. AccountancyAreaDescSubscription=STEP %s: Definisci gli account di contabilità di default per le sottoscrizioni membro. Per questo, usa la voce di menù %s. AccountancyAreaDescMisc=STEP %s: Definisci l'account obbligatorio e gli account di contabilità per le transazioni varie. Per questo, usa la voce di menù %s AccountancyAreaDescLoan=STEP %s: Definisci gli account di contabilità di default per i prestiti. Per questo, usa la voce di menù %s. AccountancyAreaDescBank=STEP %s: Definisci le voci del piano dei conti per i giornali per ogni banca o conto finanziario. Per fare ciò usa il menu %s. -AccountancyAreaDescProd=STEP %s: Define accounting accounts on your Products/Services. For this, use the menu entry %s. +AccountancyAreaDescProd=PASSO %s: Definisci conti contabili sui tuoi prodotti/servizi. A tale scopo, utilizzare la voce di menu %s. AccountancyAreaDescBind=STEP %s: Controlla i legami fra queste %s linee esistenti e l'account di contabilità, così che l'applicazione sarà in grado di registrare le transazioni nel Libro contabile in un click. Completa i legami mancanti. Per questo, usa la voce di menù %s. AccountancyAreaDescWriteRecords=STEP %s: Scrivi le transazioni nel piano contabile. Per fare ciò, vai nel menu %s, e clicca sul bottone %s. @@ -112,7 +112,7 @@ MenuAccountancyClosure=Chiusura MenuAccountancyValidationMovements=Convalida i movimenti ProductsBinding=Conti prodotti TransferInAccounting=Trasferimento in contabilità -RegistrationInAccounting=Recording in accounting +RegistrationInAccounting=Registrazione in contabilità Binding=Associazione ai conti CustomersVentilation=Collegamento fatture attive SuppliersVentilation=Associa fattura fornitore @@ -120,7 +120,7 @@ ExpenseReportsVentilation=Associa nota spese CreateMvts=Crea nuova transazione UpdateMvts=Modifica una transazione ValidTransaction=Valida transazione -WriteBookKeeping=Record transactions in accounting +WriteBookKeeping=Registra le transazioni in contabilità Bookkeeping=Libro contabile BookkeepingSubAccount=Subledger AccountBalance=Saldo @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Disabilita la registrazione diretta della transazione ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Abilita la bozza di esportazione sul giornale ACCOUNTANCY_COMBO_FOR_AUX=Abilita l'elenco combinato per l'account sussidiario (potrebbe essere lento se hai molte terze parti, interrompere la capacità di cercare su una parte del valore) ACCOUNTING_DATE_START_BINDING=Definisci una data per iniziare la rilegatura e il trasferimento in contabilità. Al di sotto di tale data, le transazioni non saranno trasferite in contabilità. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Al momento del trasferimento contabile, selezionare la visualizzazione del periodo per impostazione predefinita +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Al momento del trasferimento contabile, qual è il periodo selezionato di default ACCOUNTING_SELL_JOURNAL=Giornale Vendite ACCOUNTING_PURCHASE_JOURNAL=Giornale Acquisti @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Conto di contabilità per registrare le donazioni ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Conto contabile per registrare gli abbonamenti ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Conto contabile per impostazione predefinita per registrare il deposito del cliente -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Memorizzare il conto cliente come conto individuale nel libro mastro sussidiario per le righe di acconto (se disabilitato, il conto individuale per le righe di acconto rimarrà vuoto) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conto di contabilità predefinito per i prodotti acquistati (se non definito nella scheda prodotto) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Conto contabile predefinito per i prodotti acquistati in CEE (usato se non definito nella scheda prodotto) @@ -220,12 +220,12 @@ ByPredefinedAccountGroups=Per gruppi predefiniti ByPersonalizedAccountGroups=Gruppi personalizzati ByYear=Per anno NotMatch=Non impostato -DeleteMvt=Delete some lines from accounting +DeleteMvt=Elimina alcune righe dalla contabilità DelMonth=Mese da cancellare DelYear=Anno da cancellare DelJournal=Giornale da cancellare -ConfirmDeleteMvt=This will delete all lines in accountancy for the year/month and/or for a specific journal (At least one criterion is required). You will have to reuse the feature '%s' to have the deleted record back in the ledger. -ConfirmDeleteMvtPartial=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) +ConfirmDeleteMvt=Ciò cancellerà tutte le righe contabili per l'anno/mese e/o per un giornale di registrazione specifico (è richiesto almeno un criterio). Dovrai riutilizzare la funzione '%s' per riportare il record eliminato nel libro mastro. +ConfirmDeleteMvtPartial=Questo cancellerà la transazione dalla contabilità (tutte le righe relative alla stessa transazione verranno eliminate) FinanceJournal=Giornale delle finanze ExpenseReportsJournal=Rapporto spese DescFinanceJournal=Giornale finanziario che include tutti i tipi di pagamenti per conto bancario @@ -279,31 +279,31 @@ DescVentilExpenseReportMore=If you setup accounting account on type of expense r DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account Closure=Chiusura annuale -DescClosure=Consult here the number of movements by month who are not yet validated & locked -OverviewOfMovementsNotValidated=Overview of movements not validated and locked -AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked -ValidateMovements=Validate and lock record... +DescClosure=Consult here the number of movements by month not yet validated & locked +OverviewOfMovementsNotValidated=Panoramica dei movimenti non convalidati e bloccati +AllMovementsWereRecordedAsValidated=Tutti i movimenti sono stati registrati come convalidati e bloccati +NotAllMovementsCouldBeRecordedAsValidated=Non tutti i movimenti possono essere registrati come convalidati e bloccati +ValidateMovements=Convalida e blocca record... DescValidateMovements=Qualsiasi modifica o cancellazione di scrittura, lettura e cancellazione sarà vietata. Tutte le voci per un esercizio devono essere convalidate altrimenti la chiusura non sarà possibile ValidateHistory=Collega automaticamente AutomaticBindingDone=Associazioni automatiche eseguite (%s) - Associazioni automatiche non possibili per alcuni record (%s) ErrorAccountancyCodeIsAlreadyUse=Errore, non puoi cancellare la voce del piano dei conti perché è utilizzata -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +MvtNotCorrectlyBalanced=Movimento non correttamente bilanciato. Debito = %s e credito = %s Balancing=Balancing FicheVentilation=Binding card GeneralLedgerIsWritten=Transazioni scritte nel libro contabile GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized. -NoNewRecordSaved=No more record to transfer +NoNewRecordSaved=Nessun record da trasferire ListOfProductsWithoutAccountingAccount=Lista di prodotti non collegati a nessun piano dei conti ChangeBinding=Cambia il piano dei conti Accounted=Accounted in ledger NotYetAccounted=Non ancora trasferito in contabilità ShowTutorial=Mostra tutorial NotReconciled=Non conciliata -WarningRecordWithoutSubledgerAreExcluded=Warning, all lines without subledger account defined are filtered and excluded from this view -AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts +WarningRecordWithoutSubledgerAreExcluded=Attenzione, tutte le righe senza conto subledger definito vengono filtrate ed escluse da questa visualizzazione +AccountRemovedFromCurrentChartOfAccount=Conto contabile che non esiste nel piano dei conti corrente ## Admin BindingOptions=Opzioni di rilegatura @@ -331,9 +331,9 @@ ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disabilita vincolante e trasferimento in ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disabilita binding e trasferimento in contabilità sulle note spese (le note spese non verranno prese in considerazione in contabilità) ## Export -NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) +NotifiedExportDate=Contrassegna le righe esportate come Esportate (per modificare una riga è necessario eliminare l'intera transazione e ritrasferirla in contabilità) NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) -DateValidationAndLock=Date validation and lock +DateValidationAndLock=Convalida e blocco della data ConfirmExportFile=Conferma della generazione del file di esportazione contabile? ExportDraftJournal=Export draft journal Modelcsv=Modello di esportazione @@ -398,19 +398,19 @@ Calculated=Calcolato Formula=Formula ## Reconcile -Unlettering=Unreconcile -AccountancyNoLetteringModified=No reconcile modified -AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified -AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified -AccountancyNoUnletteringModified=No unreconcile modified -AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified -AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified +Unlettering=Non riconciliarsi +AccountancyNoLetteringModified=Nessuna riconciliazione modificata +AccountancyOneLetteringModifiedSuccessfully=Una riconciliazione modificata con successo +AccountancyLetteringModifiedSuccessfully=%s riconcilia modificato con successo +AccountancyNoUnletteringModified=Nessuna riconciliazione modificata +AccountancyOneUnletteringModifiedSuccessfully=Una riconciliazione modificata con successo +AccountancyUnletteringModifiedSuccessfully=%s annulla la riconciliazione modificata con successo ## Confirm box -ConfirmMassUnlettering=Bulk Unreconcile confirmation -ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassUnlettering=Bulk Conferma di non riconciliazione +ConfirmMassUnletteringQuestion=Sei sicuro di voler annullare la riconciliazione dei record selezionati %s? ConfirmMassDeleteBookkeepingWriting=Conferma eliminazione massiva -ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? +ConfirmMassDeleteBookkeepingWritingQuestion=Questo cancellerà la transazione dalla contabilità (tutte le righe relative alla stessa transazione verranno eliminate) Sei sicuro di voler eliminare i record %s selezionati? ## Error SomeMandatoryStepsOfSetupWereNotDone=Some mandatory steps of setup was not done, please complete them @@ -424,9 +424,10 @@ Binded=Linee collegate ToBind=Linee da vincolare UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Spiacenti, questo modulo non è compatibile con la funzione sperimentale delle fatture di situazione -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code -AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 -AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +AccountancyErrorMismatchLetterCode=Mancata corrispondenza nel codice di riconciliazione +AccountancyErrorMismatchBalanceAmount=Il saldo (%s) non è uguale a 0 +AccountancyErrorLetteringBookkeeping=Si sono verificati errori relativi alle transazioni: %s +ErrorAccountNumberAlreadyExists=Il numero contabile %s esiste già ## Import ImportAccountingEntries=Accounting entries diff --git a/htdocs/langs/it_IT/admin.lang b/htdocs/langs/it_IT/admin.lang index a3ec23d915e..3ed46eda0f3 100644 --- a/htdocs/langs/it_IT/admin.lang +++ b/htdocs/langs/it_IT/admin.lang @@ -63,8 +63,8 @@ FormToTestFileUploadForm=Modulo per provare il caricamento file (secondo la conf ModuleMustBeEnabled=Il modulo/applicazione %s deve essere abilitata ModuleIsEnabled=Il modulo/applicazione %s è stato abilitato IfModuleEnabled=Nota: funziona solo se il modulo %s è attivo -RemoveLock=Remove/rename file %s if it exists, to allow usage of the Update/Install tool. -RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. +RemoveLock=Rimuovere/rinominare il file %s se esiste, per consentire l'utilizzo dello strumento Aggiorna/Installa. +RestoreLock=Ripristina file %s con autorizzazione di sola lettura, per disabilitare qualsiasi ulteriore utilizzo dello strumento Aggiorna/Installa. SecuritySetup=Impostazioni per la sicurezza PHPSetup=Impostazioni PHP OSSetup=Impostazioni OS @@ -83,7 +83,7 @@ UseSearchToSelectContactTooltip=Also if you have a large number of third parties DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.
This may increase performance if you have a large number of third parties, but it is less convenient. DelaiedFullListToSelectContact=Attendi fino a quando non viene premuto un tasto prima di caricare il contenuto della lista di contatti.
Questo può migliorare le prestazioni se hai un numero elevato di contatti, ma può essere meno conveniente. NumberOfKeyToSearch=Numero di caratteri per attivare la ricerca: %s -NumberOfBytes=Number of Bytes +NumberOfBytes=Numero di byte SearchString=Search string NotAvailableWhenAjaxDisabled=Non disponibile quando Ajax è disabilitato AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a project linked to another third party @@ -109,7 +109,7 @@ NextValueForReplacements=Valore successivo (sostituzioni) MustBeLowerThanPHPLimit=Nota: la tua configurazione PHP attualmente limita la dimensione massima per il caricamento dei file %s %s, indipendentemente dal valore di questo parametro NoMaxSizeByPHPLimit=Nota: nessun limite impostato nella configurazione PHP MaxSizeForUploadedFiles=Dimensione massima dei file caricati (0 per disabilitare l'upload) -UseCaptchaCode=Utilizzare verifica captcha nella pagina di login +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Percorso completo programma antivirus AntiVirusCommandExample=Esempio per ClamAv Daemon (richiede clamav-daemon): / usr / bin / clamdscan
Esempio per ClamWin (molto molto lento): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Più parametri sulla riga di comando @@ -504,7 +504,7 @@ WarningPHPMailC=- Anche l'utilizzo del server SMTP del tuo provider di servizi d WarningPHPMailD=Inoltre, si consiglia quindi di modificare il metodo di invio delle e-mail sul valore "SMTP". Se vuoi davvero mantenere il metodo "PHP" predefinito per inviare e-mail, ignora questo avviso o rimuovilo impostando la costante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP su 1 in Home - Configurazione - Altro. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=Se il nome a dominio dell'indirizzo email del tuo mittente è protetto da un record SPF (chiedi al tuo registar del nome a dominio), devi aggiungere i seguenti IP nel record SPF del DNS del tuo dominio: %s . -ActualMailSPFRecordFound=Trovato record SPF effettivo: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Clicca per mostrare la descrizione DependsOn=This module needs the module(s) RequiredBy=Questo modulo è richiesto dal modulo @@ -718,9 +718,9 @@ Permission34=Eliminare prodotti Permission36=Vedere/gestire prodotti nascosti Permission38=Esportare prodotti Permission39=Ignora il prezzo minimo -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission41=Leggi progetti e attività (progetti condivisi e progetti di cui sono contatto). +Permission42=Creare/modificare progetti (progetti condivisi e progetti di cui sono contatto). Può anche assegnare utenti a progetti e attività +Permission44=Elimina progetti (progetti condivisi e progetti di cui sono contatto) Permission45=Esporta progetti Permission61=Vedere gli interventi Permission62=Creare/modificare gli interventi @@ -766,10 +766,10 @@ Permission122=Creare/modificare terzi legati all'utente Permission125=Eliminare terzi legati all'utente Permission126=Esportare terzi Permission130=Crea/modifica le informazioni di pagamento di terze parti -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission141=Leggi tutti i progetti e le attività (nonché i progetti privati ​​per i quali non sono un contatto) +Permission142=Crea/modifica tutti i progetti e le attività (così come i progetti privati ​​per i quali non sono un contatto) +Permission144=Elimina tutti i progetti e le attività (così come i progetti privati ​​Non sono un contatto) +Permission145=Può inserire il tempo impiegato, per me o per la mia gerarchia, sulle attività assegnate (Timesheet) Permission146=Vedere provider Permission147=Vedere statistiche Permission151=Vedere ordini permanenti @@ -884,9 +884,9 @@ Permission564=Registrare addebiti/rifiuti di bonifici Permission601=Leggi gli adesivi Permission602=Crea/modifica adesivi Permission609=Elimina adesivi -Permission611=Read attributes of variants -Permission612=Create/Update attributes of variants -Permission613=Delete attributes of variants +Permission611=Leggi gli attributi delle varianti +Permission612=Crea/aggiorna gli attributi delle varianti +Permission613=Elimina gli attributi delle varianti Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials @@ -973,8 +973,8 @@ Permission4021=Crea/modifica la tua valutazione Permission4022=Convalida la valutazione Permission4023=Elimina valutazione Permission4030=Vedi menu di confronto -Permission4031=Read personal information -Permission4032=Write personal information +Permission4031=Leggi le informazioni personali +Permission4032=Scrivi informazioni personali Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1074,7 +1074,7 @@ DictionaryExpenseTaxCat=Note spesa - Categorie di trasporto DictionaryExpenseTaxRange=Note spesa: intervallo per categoria di trasporto DictionaryTransportMode=Rapporto intracomm - Modalità di trasporto DictionaryBatchStatus=Stato del controllo qualità del lotto/serie del prodotto -DictionaryAssetDisposalType=Type of disposal of assets +DictionaryAssetDisposalType=Tipologia di dismissione dei beni TypeOfUnit=Tipo di unità SetupSaved=Impostazioni salvate SetupNotSaved=Impostazioni non salvate @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valore di una costante ConstantIsOn=L'opzione %s è attiva NbOfDays=Numero di giorni AtEndOfMonth=Alla fine del mese -CurrentNext=Corrente/Successivo +CurrentNext=A given day in month Offset=Scostamento AlwaysActive=Sempre attivo Upgrade=Aggiornamento @@ -1194,7 +1194,7 @@ BankModuleNotActive=Modulo conti bancari non attivato ShowBugTrackLink=Mostra il link " %s " ShowBugTrackLinkDesc=Lascia vuoto per non visualizzare questo link, usa il valore 'github' per il link al progetto Dolibarr o definisci direttamente un url 'https://...' Alerts=Avvisi e segnalazioni -DelaysOfToleranceBeforeWarning=Displaying a warning alert for... +DelaysOfToleranceBeforeWarning=Visualizzazione di un avviso di avviso per... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Progetto non chiuso in tempo @@ -1346,7 +1346,7 @@ TransKeyWithoutOriginalValue=You forced a new translation for the translation ke TitleNumberOfActivatedModules=Moduli attivati TotalNumberOfActivatedModules=Moduli attivati: %s / %s YouMustEnableOneModule=Devi abilitare almeno un modulo -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +YouMustEnableTranslationOverwriteBefore=Devi prima abilitare la sovrascrittura della traduzione per poter sostituire una traduzione ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Si in estate OnlyFollowingModulesAreOpenedToExternalUsers=Nota, solo i seguenti moduli sono disponibili per gli utenti esterni (indipendentemente dalle autorizzazioni di tali utenti) e solo se le autorizzazioni sono concesse:
@@ -1428,8 +1428,8 @@ WatermarkOnDraftInvoices=Bozze delle fatture filigranate (nessuna filigrana se v PaymentsNumberingModule=Modello per la numerazione dei documenti SuppliersPayment=Pagamenti fornitori SupplierPaymentSetup=Impostazioni pagamenti fornitori -InvoiceCheckPosteriorDate=Check facture date before validation -InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceCheckPosteriorDate=Controllare la data di fabbricazione prima della convalida +InvoiceCheckPosteriorDateHelp=La convalida di una fattura sarà vietata se la sua data è anteriore alla data dell'ultima fattura dello stesso tipo. ##### Proposals ##### PropalSetup=Impostazioni proposte commerciali ProposalsNumberingModules=Modelli di numerazione della proposta commerciale @@ -1927,7 +1927,7 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Evidenzia il colore della linea quando passa il mouse (usa 'ffffff' per nessuna evidenziazione) HighlightLinesChecked=Evidenzia il colore della linea quando è selezionata (usa 'ffffff' per nessuna evidenziazione) -UseBorderOnTable=Show left-right borders on tables +UseBorderOnTable=Mostra i bordi sinistro-destro sulle tabelle BtnActionColor=Colore del pulsante di azione TextBtnActionColor=Colore del testo del pulsante di azione TextTitleColor=Colore del testo del titolo della pagina @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Premi CTRL + F5 sulla tastiera o cancella la cache del NotSupportedByAllThemes=Funziona con il tema Eldy ma non è supportato da tutti gli altri temi BackgroundColor=Colore di sfondo TopMenuBackgroundColor=Colore di sfondo menù in alto -TopMenuDisableImages=Nascondi le icone nel menu superiore +TopMenuDisableImages=Icona o testo nel menu in alto LeftMenuBackgroundColor=Colore di sfondo menù laterale BackgroundTableTitleColor=Colore di sfondo della riga di intestazione BackgroundTableTitleTextColor=Colore del testo per la riga del titolo delle tabelle @@ -1949,7 +1949,7 @@ EnterAnyCode=Questo campo contiene un riferimento per identificare la linea. Ins Enter0or1=Inserire 0 o 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=Il colore RGB è nel formato HEX, es:FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Nome dell'icona nel formato:
- image.png per un file immagine nella directory del tema corrente
- image.png@module se il file è nella directory /img/ di un modulo
- fa-xxx per un'immagine FontAwesome fa-xxx
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (con prefisso, colore e dimensione impostati) PositionIntoComboList=Posizione di questo modello nella menu a tendina SellTaxRate=Aliquota dell'imposta sulle vendite RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter su clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicazione non consentita GDPRContact=DPO (Data Protection Officer) o in italiano RPD (Responsabile della Protezione dei Dati) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Se memorizzi dati personali nel tuo Sistema Informativo, puoi nominare qui il contatto responsabile del Regolamento generale sulla protezione dei dati HelpOnTooltip=Testo di aiuto da mostrare come tooltip HelpOnTooltipDesc=Inserisci qui il testo o una chiave di traduzione affinché il testo sia mostrato nel tooltip quando questo campo appare in un form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Scambia la posizione dell'indirizzo del mittente e del destinatario sui documenti PDF FeatureSupportedOnTextFieldsOnly=Attenzione, funzionalità supportata solo su campi di testo ed elenchi combinati. Anche un parametro URL action=create o action=edit deve essere impostato OPPURE il nome della pagina deve terminare con 'new.php' per attivare questa funzione. EmailCollector=Email collector +EmailCollectors=Collezionisti di posta elettronica EmailCollectorDescription=Aggiungi un lavoro programmato e una pagina di configurazione per scansionare regolarmente caselle di posta elettronica (usando il protocollo IMAP) e registrare le email ricevute nella tua applicazione, nel posto giusto e / o creare automaticamente alcuni record (come i lead). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2068,30 +2069,30 @@ EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Le operazioni vengono eseguite dall'alto verso il basso MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +ConfirmCloneEmailCollector=Sei sicuro di voler clonare il raccoglitore email %s? DateLastCollectResult=Data dell'ultimo tentativo di ritiro DateLastcollectResultOk=Data dell'ultimo successo di raccolta LastResult=Latest result -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeaders=Non includere il contenuto dell'intestazione dell'e-mail nel contenuto salvato delle e-mail raccolte +EmailCollectorHideMailHeadersHelp=Se abilitate, le intestazioni e-mail non vengono aggiunte alla fine del contenuto e-mail salvato come evento dell'agenda. EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +EmailCollectorConfirmCollect=Vuoi eseguire questo raccoglitore ora? +EmailCollectorExampleToCollectTicketRequestsDesc=Raccogli le email che corrispondono ad alcune regole e crea automaticamente un ticket (il Modulo Ticket deve essere abilitato) con le informazioni email. Puoi utilizzare questo raccoglitore se fornisci supporto via e-mail, quindi la tua richiesta di ticket verrà generata automaticamente. Attiva anche Collect_Responses per raccogliere le risposte del tuo cliente direttamente nella visualizzazione del ticket (devi rispondere da Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Esempio di ritiro della richiesta del biglietto (solo primo messaggio) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scansiona la directory "Inviati" della tua casella di posta per trovare le e-mail che sono state inviate come risposta a un'altra e-mail direttamente dal tuo software di posta elettronica e non da Dolibarr. Se viene trovata tale e-mail, l'evento di risposta viene registrato in Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Esempio di raccolta di risposte e-mail inviate da un software di posta elettronica esterno +EmailCollectorExampleToCollectDolibarrAnswersDesc=Raccogli tutte le e-mail che sono una risposta a un'e-mail inviata dalla tua applicazione. Un evento (deve essere abilitato Modulo Agenda) con l'e-mail di risposta verrà registrato nella buona posizione. Ad esempio, se invii una proposta commerciale, un ordine, una fattura o un messaggio per un biglietto tramite e-mail dall'applicazione e il destinatario risponde alla tua e-mail, il sistema catturerà automaticamente la risposta e la aggiungerà al tuo ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Esempio che raccoglie tutti i messaggi in entrata come risposte ai messaggi inviati da Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Raccogli le email che corrispondono ad alcune regole e crea automaticamente un lead (il progetto modulo deve essere abilitato) con le informazioni email. Puoi utilizzare questo raccoglitore se vuoi seguire il tuo lead utilizzando il modulo Progetto (1 lead = 1 progetto), quindi i tuoi lead verranno generati automaticamente. Se è abilitato anche il raccoglitore Collect_Responses, quando invii un'e-mail dai tuoi lead, proposte o qualsiasi altro oggetto, potresti anche vedere le risposte dei tuoi clienti o partner direttamente sull'applicazione.
Nota: con questo esempio iniziale, viene generato il titolo del lead che include l'e-mail. Se la terza parte non può essere trovata nel database (nuovo cliente), il lead sarà allegato alla terza parte con ID 1. +EmailCollectorExampleToCollectLeads=Esempio di raccolta di lead +EmailCollectorExampleToCollectJobCandidaturesDesc=Raccogli le email relative alle offerte di lavoro (il modulo Reclutamento deve essere abilitato). Puoi completare questo raccoglitore se desideri creare automaticamente una candidatura per una richiesta di lavoro. Nota: Con questo primo esempio viene generato il titolo della candidatura comprensivo di email. +EmailCollectorExampleToCollectJobCandidatures=Esempio di raccolta delle candidature ricevute via e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s email prequalificate, %s email elaborate correttamente (per %s record/azioni eseguite) RecordEvent=Registra un evento in agenda (con tipo Email inviata o ricevuta) CreateLeadAndThirdParty=Crea un lead (e una terza parte se necessario) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +CreateTicketAndThirdParty=Crea un ticket (collegato a una terza parte se la terza parte è stata caricata da un'operazione precedente o è stata indovinata da un tracker nell'intestazione dell'e-mail, altrimenti senza terza parte) CodeLastResult=Ultimo codice risultato NbOfEmailsInInbox=Numero di e-mail nella directory di origine LoadThirdPartyFromName=Load third party searching on %s (load only) @@ -2105,14 +2106,14 @@ CreateCandidature=Crea domanda di lavoro FormatZip=CAP MainMenuCode=Menu entry code (mainmenu) ECMAutoTree=Show automatic ECM tree -OperationParamDesc=Definire le regole da utilizzare per estrarre o impostare valori.
Esempio per operazioni che richiedono l'estrazione di un nome dall'oggetto dell'e-mail:
name=EXTRACT:SUBJECT:Message from company ([^\n] *)
Esempio di operazioni che creano oggetti:
objproperty1 = SET: il valore impostato
objproperty2 = SET: un valore compreso valore __objproperty1__
objproperty3 = SETIFEMPTY: valore utilizzato se objproperty3 non è già definito
objproperty4 = ESTRATTO: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Il nome della mia azienda è\\s( [^\\s]*)

Usa a ; char come separatore per estrarre o impostare più proprietà. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Orari di apertura OpeningHoursDesc=Inserisci gli orari di apertura regolare della tua azienda. ResourceSetup=Configurazione del modulo Risorse UseSearchToSelectResource=Utilizza il form di ricerca per scegliere una risorsa (invece della lista a tendina) DisabledResourceLinkUser=Disattiva funzionalità per collegare una risorsa agli utenti DisabledResourceLinkContact=Disattiva funzionalità per collegare una risorsa ai contatti -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Vietare l'utilizzo della stessa risorsa contemporaneamente all'ordine del giorno ConfirmUnactivation=Conferma reset del modulo OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disabilita il tipo di terza parte "Prospect + Cliente" (quindi la terza parte deve essere "Prospect" o "Cliente", ma non può essere entrambi) @@ -2157,7 +2158,7 @@ DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. +RESTRICT_ON_IP=Consenti l'accesso API solo a determinati IP client (carattere jolly non consentito, usa lo spazio tra i valori). Vuoto significa che tutti i client possono accedere. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Based on the library SabreDAV version NotAPublicIp=Not a public IP @@ -2167,6 +2168,9 @@ EmailTemplate=Modello per le e-mail EMailsWillHaveMessageID=Le e-mail avranno un tag "Riferimenti" corrispondente a questa sintassi PDF_SHOW_PROJECT=Mostra progetto su documento ShowProjectLabel=Etichetta del progetto +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Includi alias nel nome di terze parti +THIRDPARTY_ALIAS=Nome terza parte - Alias terza parte +ALIAS_THIRDPARTY=Alias terza parte - Nome terza parte PDF_USE_ALSO_LANGUAGE_CODE=Se vuoi avere alcuni testi nel tuo PDF duplicato in 2 lingue diverse nello stesso PDF generato, devi impostare qui la seconda lingua in modo che il PDF generato contenga 2 lingue diverse nella stessa pagina, quella scelta durante la generazione del PDF e questa ( solo pochi modelli PDF supportano questa opzione). Mantieni vuoto per 1 lingua per PDF. PDF_USE_A=Genera documenti PDF in formato PDF/A anziché in formato PDF predefinito FafaIconSocialNetworksDesc=Inserisci qui il codice di un'icona FontAwesome. Se non sai cos'è FontAwesome, puoi utilizzare il valore generico fa-address-book. @@ -2229,12 +2233,12 @@ DashboardDisableBlockAdherent=Disabilita il pollice per gli abbonamenti DashboardDisableBlockExpenseReport=Disattiva il pollice per le note spese DashboardDisableBlockHoliday=Disattiva il pollice per le foglie EnabledCondition=Condizione per avere il campo abilitato (se non abilitato, la visibilità sarà sempre disattivata) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una seconda imposta, devi abilitare anche la prima imposta sulle vendite +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una terza imposta, devi abilitare anche la prima imposta sulle vendite LanguageAndPresentation=Linguaggio e presentazione -SkinAndColors=Pelle e colori -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax +SkinAndColors=Grafica e colori +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una seconda imposta, devi abilitare anche la prima imposta sulle vendite +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Se vuoi utilizzare una terza imposta, devi abilitare anche la prima imposta sulle vendite PDF_USE_1A=Genera PDF in formato PDF/A-1b MissingTranslationForConfKey = Traduzione mancante per %s NativeModules=Moduli nativi @@ -2244,22 +2248,34 @@ EachTerminalHasItsOwnCounter=Ogni terminale utilizza il proprio contatore. FillAndSaveAccountIdAndSecret=Compila e salva prima l'ID account e il segreto PreviousHash=Hash precedente LateWarningAfter=Avviso di "ritardo" dopo -TemplateforBusinessCards=Template for a business card in different size +TemplateforBusinessCards=Modello per biglietto da visita di diverse dimensioni InventorySetup= Inventory Setup -ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. -ShowQuickAddLink=Show a button to quickly add an element in top right menu -HashForPing=Hash used for ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +ExportUseLowMemoryMode=Utilizzare una modalità di memoria insufficiente +ExportUseLowMemoryModeHelp=Utilizzare la modalità di memoria insufficiente per eseguire l'exec del dump (la compressione viene eseguita tramite una pipe anziché nella memoria PHP). Questo metodo non consente di verificare che il file sia completato e non è possibile segnalare un messaggio di errore in caso di errore. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interfaccia per catturare i trigger di dolibarr e inviarlo a un URL +WebhookSetup = Configurazione del webhook +Settings = Impostazioni +WebhookSetupPage = Pagina di configurazione del webhook +ShowQuickAddLink=Mostra un pulsante per aggiungere rapidamente un elemento nel menu in alto a destra + +HashForPing=Hash usato per il ping +ReadOnlyMode=L'istanza è in modalità "Sola lettura". +DEBUGBAR_USE_LOG_FILE=Utilizzare il file dolibarr.log per intercettare i log +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Utilizzare il file dolibarr.log per intercettare i registri invece di intercettare la memoria live. Permette di catturare tutti i log invece del solo log del processo corrente (incluso quindi quello delle pagine delle sottorichieste ajax) ma renderà la tua istanza molto molto lenta. Non consigliato. +FixedOrPercent=Fisso (usa la parola chiave 'fisso') o percentuale (usa la parola chiave 'percentuale') +DefaultOpportunityStatus=Stato opportunità predefinito (primo stato al momento della creazione del lead) + +IconAndText=Icona e testo +TextOnly=Solo testo +IconOnlyAllTextsOnHover=Solo icona - Tutti i testi vengono visualizzati sotto l'icona sulla barra dei menu al passaggio del mouse +IconOnlyTextOnHover=Solo icona - Il testo dell'icona viene visualizzato sotto l'icona al passaggio del mouse sull'icona +IconOnly=Solo icona: solo testo nella descrizione comando +INVOICE_ADD_ZATCA_QR_CODE=Mostra il codice QR ZATCA sulle fatture +INVOICE_ADD_ZATCA_QR_CODEMore=Alcuni paesi arabi necessitano di questo codice QR sulle loro fatture +INVOICE_ADD_SWISS_QR_CODE=Mostra il codice QR-Bill svizzero sulle fatture +UrlSocialNetworksDesc=Link URL del social network. Utilizza {socialid} per la parte variabile che contiene l'ID del social network. +IfThisCategoryIsChildOfAnother=Se questa categoria è figlia di un'altra +NoName=Senza nome +CIDLookupURL=Il modulo porta un URL che può essere utilizzato da uno strumento esterno per ottenere il nome di una terza parte o un contatto dal suo numero di telefono. L'URL da utilizzare è: diff --git a/htdocs/langs/it_IT/agenda.lang b/htdocs/langs/it_IT/agenda.lang index 59afe414529..04d8bab70da 100644 --- a/htdocs/langs/it_IT/agenda.lang +++ b/htdocs/langs/it_IT/agenda.lang @@ -45,6 +45,7 @@ CONTRACT_DELETEInDolibarr=Contratto %s cancellato PropalClosedSignedInDolibarr=Proposta %s firmata PropalClosedRefusedInDolibarr=Proposta %s rifiutata PropalValidatedInDolibarr=Proposta convalidata +PropalBackToDraftInDolibarr=Proposta %s torna allo stato di bozza PropalClassifiedBilledInDolibarr=Proposta %s classificata fatturata InvoiceValidatedInDolibarr=Fattura convalidata InvoiceValidatedInDolibarrFromPos=Ricevute %s validate dal POS @@ -66,6 +67,7 @@ ShipmentBackToDraftInDolibarr=La spedizione %s torna allo stato bozza ShipmentDeletedInDolibarr=Spedizione %s eliminata ShipmentCanceledInDolibarr=Spedizione %s annullata ReceptionValidatedInDolibarr=Ricezione %s convalidata +ReceptionClassifyClosedInDolibarr=Ricevimento %s classificato chiuso OrderCreatedInDolibarr=Ordine %s creato OrderValidatedInDolibarr=Ordine convalidato OrderDeliveredInDolibarr=Ordine %s classificato consegnato diff --git a/htdocs/langs/it_IT/boxes.lang b/htdocs/langs/it_IT/boxes.lang index 4f7bb3f5d3a..217c7056940 100644 --- a/htdocs/langs/it_IT/boxes.lang +++ b/htdocs/langs/it_IT/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Ultimi abbonamenti dei membri BoxFicheInter=Ultimi interventi BoxCurrentAccounts=Saldo conti aperti BoxTitleMemberNextBirthdays=Compleanni di questo mese (membri) -BoxTitleMembersByType=Membri per tipo +BoxTitleMembersByType=Membri per tipo e stato BoxTitleMembersSubscriptionsByYear=Abbonamenti membri per anno BoxTitleLastRssInfos=Ultime %s notizie da %s BoxTitleLastProducts=Prodotti/Servizi: ultimi %s modificati diff --git a/htdocs/langs/it_IT/cashdesk.lang b/htdocs/langs/it_IT/cashdesk.lang index 81475390bd1..cd023006979 100644 --- a/htdocs/langs/it_IT/cashdesk.lang +++ b/htdocs/langs/it_IT/cashdesk.lang @@ -50,8 +50,8 @@ Footer=Footer AmountAtEndOfPeriod=Amount at end of period (day, month or year) TheoricalAmount=Importo teorico RealAmount=Real amount -CashFence=Cash box closing -CashFenceDone=Cash box closing done for the period +CashFence=Chiusura cassa +CashFenceDone=Chiusura cassa effettuata per il periodo NbOfInvoices=Numero di fatture Paymentnumpad=Type of Pad to enter payment Numberspad=Numbers Pad @@ -102,8 +102,8 @@ CashDeskGenericMaskCodes6 =
Il tag {TN} viene utilizzato per aggi TakeposGroupSameProduct=Raggruppa le stesse linee di prodotti StartAParallelSale=Inizia una nuova vendita parallela SaleStartedAt=La vendita è iniziata a %s -ControlCashOpening=Open the "Control cash box" popup when opening the POS -CloseCashFence=Close cash box control +ControlCashOpening=Apri il popup "Controllo cassa" quando apri il POS +CloseCashFence=Chiudere il controllo della cassa CashReport=Rapporto di cassa MainPrinterToUse=Stampante principale da utilizzare OrderPrinterToUse=Ordine stampante da utilizzare @@ -134,5 +134,6 @@ PrintWithoutDetailsButton=Aggiungi il pulsante "Stampa senza dettagli". PrintWithoutDetailsLabelDefault=Etichetta di linea per impostazione predefinita sulla stampa senza dettagli PrintWithoutDetails=Stampa senza dettagli YearNotDefined=L'anno non è definito -TakeposBarcodeRuleToInsertProduct=Barcode rule to insert product -TakeposBarcodeRuleToInsertProductDesc=Rule to extract the product reference + a quantity from a scanned barcode.
If empty (default value), application will use the full barcode scanned to find the product.

If defined, syntax must be:
ref:NB+qu:NB+qd:NB+other:NB
where NB is the number of characters to use to extract data from the scanned barcode with:
  • ref : product reference
  • qu : quantity to set when inserting item (units)
  • qd : quantity to set when inserting item (decimals)
  • other : others characters
+TakeposBarcodeRuleToInsertProduct=Regola del codice a barre per inserire il prodotto +TakeposBarcodeRuleToInsertProductDesc=Regola per estrarre il riferimento del prodotto + una quantità da un codice a barre scansionato.
Se vuoto (valore predefinito), l'applicazione utilizzerà il codice a barre completo scansionato per trovare il prodotto.

If defined, syntax must be:
ref:NB+qu:NB+qd:NB+other:NB
where NB is the number of characters to use to extract data from the scanned barcode with:
  • ref : product reference
  • qu : quantity to set when inserting item (units)
  • qd : quantity to set when inserting item (decimals)
  • other : others characters
+AlreadyPrinted=Già stampato diff --git a/htdocs/langs/it_IT/categories.lang b/htdocs/langs/it_IT/categories.lang index 191d7d1fe51..a70d6d67865 100644 --- a/htdocs/langs/it_IT/categories.lang +++ b/htdocs/langs/it_IT/categories.lang @@ -90,10 +90,12 @@ CategorieRecursivHelp=If option is on, when you add a product into a subcategory AddProductServiceIntoCategory=Aggiungi il seguente prodotto/servizio AddCustomerIntoCategory=Assegna la categoria al cliente AddSupplierIntoCategory=Assegna la categoria al fornitore +AssignCategoryTo=Assegna categoria a ShowCategory=Mostra tag/categoria ByDefaultInList=Default nella lista ChooseCategory=Choose category StocksCategoriesArea=Categorie di magazzino +TicketsCategoriesArea=Categorie dei ticket ActionCommCategoriesArea=Categorie di eventi WebsitePagesCategoriesArea=Pagina-Contenitore delle Categorie KnowledgemanagementsCategoriesArea=Categorie di articoli KM diff --git a/htdocs/langs/it_IT/companies.lang b/htdocs/langs/it_IT/companies.lang index d712751a0aa..86f02c34c0c 100644 --- a/htdocs/langs/it_IT/companies.lang +++ b/htdocs/langs/it_IT/companies.lang @@ -19,7 +19,7 @@ ProspectionArea=Area clienti potenziali IdThirdParty=Id soggetto terzo IdCompany=Id società IdContact=Id contatto -ThirdPartyAddress=Third-party address +ThirdPartyAddress=Indirizzo di terze parti ThirdPartyContacts=Contatti del soggetto terzo ThirdPartyContact=Contatto/indirizzo del soggetto terzo Company=Società @@ -52,21 +52,22 @@ CivilityCode=Titolo RegisteredOffice=Sede legale Lastname=Cognome Firstname=Nome -RefEmployee=Employee reference -NationalRegistrationNumber=National registration number +RefEmployee=Riferimento dipendente +NationalRegistrationNumber=Numero di registrazione nazionale PostOrFunction=Posizione lavorativa UserTitle=Titolo NatureOfThirdParty=Natura NatureOfContact=Natura del contatto Address=Indirizzo State=Provincia/Cantone/Stato +StateId=ID di stato StateCode=Stato / Provincia StateShort=Stato Region=Regione Region-State=Regione - Stato Country=Paese CountryCode=Codice del paese -CountryId=Id paese +CountryId=ID Paese Phone=Telefono PhoneShort=Telefono Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=Codice fornitore non valido CustomerCodeModel=Modello codice cliente SupplierCodeModel=Modello codice fornitore Gencod=Codice a barre -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Codice a barre del prezzo rif ##### Professional ID ##### ProfId1Short=C.C.I.A.A. ProfId2Short=R.E.A. @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=ID. prof. 1 (Registro delle imprese) ProfId2CM=ID. prof. 2 (n. contribuente) -ProfId3CM=ID. prof. 3 (Decreto di creazione) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=Id. prof. 3 (n. del decreto di creazione) +ProfId4CM=Id. prof. 4 (Certificato di deposito n.) +ProfId5CM=Id. prof. 5 (Altri) ProfId6CM=Id Professionale 6 ProfId1ShortCM=Registro delle Imprese ProfId2ShortCM=contribuente n. -ProfId3ShortCM=Decreto di creazione -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=N. di decreto di creazione +ProfId4ShortCM=Certificato di deposito n. ProfId5ShortCM=Altri ProfId6ShortCM=Id Professionale 6 ProfId1CO=RUT @@ -363,7 +364,7 @@ ListOfThirdParties=Elenco dei soggetti terzi ShowCompany=Terze parti ShowContact=Contatto-Indirizzo ContactsAllShort=Tutti (Nessun filtro) -ContactType=Contact role +ContactType=Ruolo di contatto ContactForOrders=Contatto per gli ordini ContactForOrdersOrShipments=Contatto per ordini o spedizioni ContactForProposals=Contatto per le proposte commerciali @@ -443,7 +444,7 @@ AddAddress=Aggiungi un indirizzo SupplierCategory=Categoria fornitore JuridicalStatus200=Indipendente DeleteFile=Cancella il file -ConfirmDeleteFile=Vuoi davvero cancellare questo file? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Assegna un commerciale Organization=Organizzazione FiscalYearInformation=Anno fiscale diff --git a/htdocs/langs/it_IT/contracts.lang b/htdocs/langs/it_IT/contracts.lang index 1df943aee02..0698c8058e2 100644 --- a/htdocs/langs/it_IT/contracts.lang +++ b/htdocs/langs/it_IT/contracts.lang @@ -20,6 +20,7 @@ ContractsSubscriptions=Contratto/sottoscrizione ContractsAndLine=Contratti e righe di contratto Contract=Contratto ContractLine=Riga di contratto +ContractLines=Linee contrattuali Closing=In chiusura NoContracts=Nessun contratto MenuServices=Servizi @@ -102,3 +103,5 @@ TypeContact_contrat_external_SALESREPSIGN=Contatto per la firma dei contratti HideClosedServiceByDefault=Nascondi i servizi chiusi di default ShowClosedServices=Mostra servizi chiusi HideClosedServices=Nascondi servizi chiusi +UserStartingService=Servizio di avvio dell'utente +UserClosingService=Servizio di chiusura dell'utente diff --git a/htdocs/langs/it_IT/errors.lang b/htdocs/langs/it_IT/errors.lang index f784773bb16..006e711a8d3 100644 --- a/htdocs/langs/it_IT/errors.lang +++ b/htdocs/langs/it_IT/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=L'e-mail %s sembra errata (il dominio non ha un record MX valid ErrorBadUrl=L'URL %s non è corretto ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. ErrorRefAlreadyExists=Il riferimento %s esiste già. +ErrorTitleAlreadyExists=Il titolo %s esiste già. ErrorLoginAlreadyExists=L'utente %s esiste già. ErrorGroupAlreadyExists=Il gruppo %s esiste già ErrorEmailAlreadyExists=L'e-mail %s esiste già. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Esiste già un altro file con il nome %s . ErrorPartialFile=File non completamente ricevuto dal server. ErrorNoTmpDir=La directory temporanea %s non esiste. ErrorUploadBlockedByAddon=Upload bloccato da un plugin di Apache/PHP -ErrorFileSizeTooLarge=La dimensione del file è troppo grande. +ErrorFileSizeTooLarge=La dimensione del file è troppo grande o il file non è fornito. ErrorFieldTooLong=Il campo %s è troppo lungo. ErrorSizeTooLongForIntType=Numero troppo lungo (massimo %s cifre) ErrorSizeTooLongForVarcharType=Stringa troppo lunga (limite di %s caratteri) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Per questa funzionalità Javascript deve essere att ErrorPasswordsMustMatch=Le due password digitate devono essere identiche ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Campo %s : Il valore ' %s ' contiene dati dannosi non consentiti ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s errors found @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Devi prima impostare il tuo piano dei c ErrorFailedToFindEmailTemplate=Impossibile trovare il modello con nome in codice %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durata non definita in servizio. Non c'è modo di calcolare il prezzo orario. ErrorActionCommPropertyUserowneridNotDefined=Il proprietario dell'utente è obbligatorio -ErrorActionCommBadType=Il tipo di evento selezionato (id: %n, codice: %s) non esiste nel dizionario del tipo di evento +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Controllo della versione fallito ErrorWrongFileName=Il nome del file non può contenere __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Non nel dizionario dei termini di pagamento, modificare. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s non è una bozza ErrorExecIdFailed=Impossibile eseguire il comando "id" ErrorBadCharIntoLoginName=Carattere non autorizzato nel nome di accesso ErrorRequestTooLarge=Errore, richiesta troppo grande +ErrorNotApproverForHoliday=Non sei l'approvatore per il congedo %s +ErrorAttributeIsUsedIntoProduct=Questo attributo viene utilizzato in una o più varianti di prodotto +ErrorAttributeValueIsUsedIntoProduct=Questo valore di attributo viene utilizzato in una o più varianti di prodotto +ErrorPaymentInBothCurrency=Errore, tutti gli importi devono essere inseriti nella stessa colonna +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Si tenta di pagare le fatture nella valuta %s da un conto con la valuta %s +ErrorInvoiceLoadThirdParty=Impossibile caricare l'oggetto di terze parti per la fattura "%s" +ErrorInvoiceLoadThirdPartyKey=Chiave di terze parti "%s" non impostata per la fattura "%s" +ErrorDeleteLineNotAllowedByObjectStatus=L'eliminazione della riga non è consentita dallo stato dell'oggetto corrente +ErrorAjaxRequestFailed=Richiesta fallita +ErrorThirpdartyOrMemberidIsMandatory=Terza parte o Membro di partnership è obbligatorio +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=I parametri di configurazione obbligatori non sono ancora stati definiti. +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Attiva i moduli/applicazioni per iniziare ad utilizzare il software WarningSafeModeOnCheckExecDir=Attenzione: quando è attiva l'opzione safe_mode, il comando deve essere contenuto in una directory dichiarata dal parametro safe_mode_exec_dir. WarningBookmarkAlreadyExists=Un segnalibro per questo link (URL) o con lo stesso titolo esiste già. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Attenzione, non puoi creare direttamente un sub account WarningAvailableOnlyForHTTPSServers=Disponibile solo se si utilizza una connessione protetta HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Il modulo %s non è stato abilitato. Quindi potresti perdere molti eventi qui. WarningPaypalPaymentNotCompatibleWithStrict=Il valore "Strict" fa sì che le funzioni di pagamento online non funzionino correttamente. Usa invece "Lax". +WarningThemeForcedTo=Attenzione, il tema è stato forzato a %s dalla costante nascosta MAIN_FORCETHEME # Validate RequireValidValue = Valore non valido diff --git a/htdocs/langs/it_IT/externalsite.lang b/htdocs/langs/it_IT/externalsite.lang deleted file mode 100644 index 8be64cda26a..00000000000 --- a/htdocs/langs/it_IT/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Imposta collegamento a sito esterno -ExternalSiteURL=URL del sito esterno del contenuto iframe HTML -ExternalSiteModuleNotComplete=Il modulo ExternalSite non è configurato correttamente. -ExampleMyMenuEntry=La mia voce di menu diff --git a/htdocs/langs/it_IT/ftp.lang b/htdocs/langs/it_IT/ftp.lang deleted file mode 100644 index e641576f638..00000000000 --- a/htdocs/langs/it_IT/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configurazione del modulo client FTP o SFTP -NewFTPClient=Nuova configurazione della connessione FTP/FTPS -FTPArea=Area FTP/FTPS -FTPAreaDesc=Questa schermata mostra una vista di un server FTP e SFTP. -SetupOfFTPClientModuleNotComplete=La configurazione del modulo client FTP o SFTP sembra essere incompleta -FTPFeatureNotSupportedByYourPHP=Il tuo PHP non supporta le funzioni FTP o SFTP -FailedToConnectToFTPServer=Impossibile connettersi al server (server %s, porta %s) -FailedToConnectToFTPServerWithCredentials=Impossibile accedere al server con login/password definiti -FTPFailedToRemoveFile=Impossibile rimuovere il file %s -FTPFailedToRemoveDir=Impossibile rimuovere la directory %s (Controlla i permessi e che la directory sia vuota) -FTPPassiveMode=Modalità passiva -ChooseAFTPEntryIntoMenu=Scegli un sito FTP/SFTP dal menu... -FailedToGetFile=Errore nell'accesso ai file %s diff --git a/htdocs/langs/it_IT/hrm.lang b/htdocs/langs/it_IT/hrm.lang index b4028530d38..921b35c179f 100644 --- a/htdocs/langs/it_IT/hrm.lang +++ b/htdocs/langs/it_IT/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Apri azienda CloseEtablishment=Chiudi azienda # Dictionary DictionaryPublicHolidays=Congedo - Giorni festivi -DictionaryDepartment=HRM - Lista dipartimenti +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Posizioni di lavoro # Module Employees=Dipendenti @@ -70,12 +70,22 @@ RequiredSkills=Competenze richieste per questo lavoro UserRank=Classifica utente SkillList=Elenco delle abilità SaveRank=Salva classifica -knowHow=Competenza -HowToBe=Come essere -knowledge=Conoscenza +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Commento sull'abbandono DateLastEval=Data ultima valutazione NoEval=Nessuna valutazione effettuata per questo dipendente HowManyUserWithThisMaxNote=Numero di utenti con questo rango HighestRank=Grado più alto SkillComparison=Confronto delle abilità +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/it_IT/install.lang b/htdocs/langs/it_IT/install.lang index a5d63a75907..8fbb9eca9cb 100644 --- a/htdocs/langs/it_IT/install.lang +++ b/htdocs/langs/it_IT/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Il file di configurazione %s non è scrivibile, bis ConfFileIsWritable=Il file di configurazione %s è scrivibile. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=Il file di configurazione conf/conf.php non esiste o non è leggibile. Eseguiremo il processo di installazione per provare a inizializzarlo. PHPSupportPOSTGETOk=PHP supporta le variabili GET e POST. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=PHP supporta le sessioni. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Potresti aver digitato un valore errato per il param ErrorFailedToCreateDatabase=Impossibile creare il database %s. ErrorFailedToConnectToDatabase=Impossibile collegarsi al database %s. ErrorDatabaseVersionTooLow=La versione del database (%s) è troppo vecchia. È richiesta la versione %s o superiori. -ErrorPHPVersionTooLow=Versione PHP troppo vecchia. E' obbligatoria la versione %s o superiori. +ErrorPHPVersionTooLow=Versione PHP troppo vecchia. È richiesta la versione %s o successiva. +ErrorPHPVersionTooHigh=Versione PHP troppo alta. È richiesta la versione %s o precedente. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Il database %s esiste già. IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". diff --git a/htdocs/langs/it_IT/knowledgemanagement.lang b/htdocs/langs/it_IT/knowledgemanagement.lang index 17629ad035f..84d7d5eb577 100644 --- a/htdocs/langs/it_IT/knowledgemanagement.lang +++ b/htdocs/langs/it_IT/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Articoli KnowledgeRecord = Articolo KnowledgeRecordExtraFields = Extracampi per l'art GroupOfTicket=Gruppo di biglietti -YouCanLinkArticleToATicketCategory=Puoi collegare un articolo a un gruppo di biglietti (quindi l'articolo verrà suggerito durante la qualificazione dei nuovi biglietti) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Consigliato per i biglietti quando il gruppo è SetObsolete=Imposta come obsoleto diff --git a/htdocs/langs/it_IT/loan.lang b/htdocs/langs/it_IT/loan.lang index 8b6f0dae914..76d1d5e1637 100644 --- a/htdocs/langs/it_IT/loan.lang +++ b/htdocs/langs/it_IT/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Financial commitment InterestAmount=Interesse CapitalRemain=Capital remain TermPaidAllreadyPaid = Questo termine è già pagato -CantUseScheduleWithLoanStartedToPaid = Impossibile utilizzare lo scheduler per un prestito con pagamento avviato +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Non è possibile modificare l'interesse se si utilizza la pianificazione # Admin ConfigLoan=Configurazione del modulo prestiti diff --git a/htdocs/langs/it_IT/mails.lang b/htdocs/langs/it_IT/mails.lang index f732e5789e8..5074f48e307 100644 --- a/htdocs/langs/it_IT/mails.lang +++ b/htdocs/langs/it_IT/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=È la risposta di una prima email RecordCreatedByEmailCollector=Record creato da Email Collector %s dall'email %s DefaultBlacklistMailingStatus=Valore predefinito per il campo '%s' durante la creazione di un nuovo contatto DefaultStatusEmptyMandatory=Vuoto ma obbligatorio +WarningLimitSendByDay=ATTENZIONE: la configurazione o il contratto della tua istanza limita il numero di email al giorno a %s . Il tentativo di inviarne di più potrebbe comportare un rallentamento o la sospensione dell'istanza. Contatta il tuo supporto se hai bisogno di una quota più alta. diff --git a/htdocs/langs/it_IT/main.lang b/htdocs/langs/it_IT/main.lang index 8d94a066667..39b2f954cf4 100644 --- a/htdocs/langs/it_IT/main.lang +++ b/htdocs/langs/it_IT/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -244,6 +250,7 @@ Designation=Descrizione DescriptionOfLine=Linea Descrizione DateOfLine=Data DurationOfLine=Durata +ParentLine=ID linea padre Model=Modello DefaultModel=Modello predefinito Action=Azione @@ -344,7 +351,7 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Ceato da +UserAuthor=Creato da UserModif=Aggiornato da b=b Kb=Kb @@ -517,6 +524,7 @@ or=o Other=Altro Others=Altri OtherInformations=Altre informazioni +Workflow=Flusso di lavoro Quantity=Quantità Qty=Qtà ChangedBy=Cambiato da @@ -619,6 +627,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=File e documenti allegati JoinMainDoc=Iscriviti al documento principale +JoinMainDocOrLastGenerated=Invia il documento principale o l'ultimo generato se non trovato DateFormatYYYYMM=AAAA-MM DateFormatYYYYMMDD=AAAA-MM-GG DateFormatYYYYMMDDHHMM=AAAA-MM-GG HH:MM @@ -709,6 +718,7 @@ FeatureDisabled=Funzionalità disabilitata MoveBox=Sposta widget Offered=Offerto NotEnoughPermissions=Non hai l'autorizzazione per svolgere questa azione +UserNotInHierachy=Questa azione è riservata ai supervisori di questo utente SessionName=Nome sessione Method=Metodo Receive=Ricevi @@ -1164,3 +1174,16 @@ NotClosedYet=Non ancora chiuso ClearSignature=Reimposta firma CanceledHidden=Nascosto annullato CanceledShown=Annullato mostrato +Terminate=Termina +Terminated=Terminated +AddLineOnPosition=Aggiungi riga sulla posizione (alla fine se vuota) +ConfirmAllocateCommercial=Assegna la conferma del rappresentante di vendita +ConfirmAllocateCommercialQuestion=Sei sicuro di voler assegnare i record selezionati %s? +CommercialsAffected=Rappresentanti di vendita interessati +CommercialAffected=Rappresentante di vendita interessato +YourMessage=Il tuo messaggio +YourMessageHasBeenReceived=Il tuo messaggio è stato ricevuto. Ti risponderemo o ti contatteremo al più presto. +UrlToCheck=URL da controllare +Automation=Automazione +CreatedByEmailCollector=Created by Email collector +CreatedByPublicPortal=Created from Public portal diff --git a/htdocs/langs/it_IT/members.lang b/htdocs/langs/it_IT/members.lang index a6bdcf90829..3b74c46b7c1 100644 --- a/htdocs/langs/it_IT/members.lang +++ b/htdocs/langs/it_IT/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Un altro membro (nome: %s, log ErrorUserPermissionAllowsToLinksToItselfOnly=Per motivi di sicurezza, è necessario possedere permessi di modifica di tutti gli utenti per poter modificare un membro diverso da sé stessi. SetLinkToUser=Link a un utente Dolibarr SetLinkToThirdParty=Link ad un soggetto terzo -MembersCards=Generation of cards for members +MembersCards=Generazione di tessere per i membri MembersList=Elenco dei membri MembersListToValid=Elenco dei membri del progetto (da convalidare) MembersListValid=Elenco dei membri validi @@ -35,7 +35,8 @@ DateEndSubscription=Data di fine adesione EndSubscription=Fine adesione SubscriptionId=ID contributo WithoutSubscription=Senza contributo -MemberId=ID +MemberId=ID membro +MemberRef=Membro Rif NewMember=Nuovo membro MemberType=Tipo membro MemberTypeId=Id membro @@ -159,11 +160,11 @@ HTPasswordExport=Esporta htpassword NoThirdPartyAssociatedToMember=Nessuna terza parte associata a questo membro MembersAndSubscriptions=Membri e contributi MoreActions=Azioni complementari alla registrazione -MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution +MoreActionsOnSubscription=Azione complementare suggerita di default in sede di registrazione di un contributo, effettuata anche in automatico al momento del pagamento online di un contributo MoreActionBankDirect=Create a direct entry on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionInvoiceOnly=Creare una fattura senza pagamento -LinkToGeneratedPages=Generation of business cards or address sheets +LinkToGeneratedPages=Generazione di biglietti da visita o fogli di indirizzi LinkToGeneratedPagesDesc=Questa schermata permette di generare file PDF contenenti i biglietti da visita di tutti i membri o di un determinato membro. DocForAllMembersCards=Genera schede per tutti i membri (formato di output impostato: %s) DocForOneMemberCards=Genera scheda per un membro (formato di output impostato: %s) @@ -198,7 +199,7 @@ NbOfSubscriptions=Numero di contributi AmountOfSubscriptions=Importo raccolto dai contributi TurnoverOrBudget=Giro d'affari (aziende) o Budget (fondazione) DefaultAmount=Importo predefinito del contributo -CanEditAmount=Il visitatore può scegliere/modificare l'importo del suo contributo +CanEditAmount=Visitor can choose/edit amount of its contribution MEMBER_NEWFORM_PAYONLINE=Saltate sulla integrato pagina di pagamento online ByProperties=By nature MembersStatisticsByProperties=Members statistics by nature @@ -218,3 +219,5 @@ XExternalUserCreated=%s utenti esterni creati ForceMemberNature=Natura del membro forzato (individuo o società) CreateDolibarrLoginDesc=La creazione di un login utente per i membri consente loro di connettersi all'applicazione. A seconda delle autorizzazioni concesse, potranno, ad esempio, consultare o modificare autonomamente il proprio fascicolo. CreateDolibarrThirdPartyDesc=Una terza parte è la persona giuridica che verrà utilizzata nella fattura se si decide di generare la fattura per ogni contributo. Potrai crearlo in seguito durante il processo di registrazione del contributo. +MemberFirstname=Nome del membro +MemberLastname=Cognome membro diff --git a/htdocs/langs/it_IT/modulebuilder.lang b/htdocs/langs/it_IT/modulebuilder.lang index 0febc4d00b6..7f20fe542c4 100644 --- a/htdocs/langs/it_IT/modulebuilder.lang +++ b/htdocs/langs/it_IT/modulebuilder.lang @@ -1,17 +1,17 @@ # Dolibarr language file - Source file is en_US - loan ModuleBuilderDesc=Questo strumento deve essere utilizzato solo da utenti esperti o sviluppatori. Fornisce utilità per creare o modificare il proprio modulo. La documentazione per lo sviluppo manuale alternativo è qui . -EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +EnterNameOfModuleDesc=Immettere il nome del modulo/applicazione da creare senza spazi. Usa maiuscolo per separare le parole (ad esempio: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Immettere il nome dell'oggetto da creare senza spazi. Usa maiuscolo per separare le parole (ad esempio: MioOggetto, Studente, Insegnante...). Verranno generati il file di classe CRUD, ma anche il file API, le pagine per elencare/aggiungere/modificare/eliminare oggetti e file SQL. +EnterNameOfDictionaryDesc=Immettere il nome del dizionario da creare senza spazi. Usa maiuscolo per separare le parole (ad esempio: MyDico...). Verrà generato il file di classe, ma anche il file SQL. ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s ModuleBuilderDesc3=Generated/editable modules found: %s ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory NewModule=Nuovo modulo NewObjectInModulebuilder=Nuovo oggetto -NewDictionary=New dictionary +NewDictionary=Nuovo dizionario ModuleKey=Module key ObjectKey=Object key -DicKey=Dictionary key +DicKey=Chiave del dizionario ModuleInitialized=Modulo inizializzato FilesForObjectInitialized=Files for new object '%s' initialized FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) @@ -55,7 +55,7 @@ LanguageFile=File for language ObjectProperties=Object Properties ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. NotNull=Not NULL -NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) +NotNullDesc=1=Imposta il database su NOT NULL, 0=Consenti valori nulli, -1=Consenti valori null forzando il valore su NULL se vuoto ('' o 0) SearchAll=Used for 'search all' DatabaseIndex=Database index FileAlreadyExists=File %s already exists @@ -97,7 +97,7 @@ LanguageDefDesc=Enter in this files, all the key and the translation for each la MenusDefDesc=Define here the menus provided by your module DictionariesDefDesc=Definisci qui i dizionari forniti dal tuo modulo PermissionsDefDesc=Define here the new permissions provided by your module -MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and the module re-activated), the menus are also visible into the menu editor available to administrator users on %s. +MenusDefDescTooltip=I menu forniti dal modulo/applicazione sono definiti nell'array $this->menus nel file di descrizione del modulo. Puoi modificare manualmente questo file o utilizzare l'editor incorporato.

Nota: Una volta definiti (e riattivato il modulo), i menu sono visibili anche nell'editor di menu disponibile per gli utenti amministratori su %s. DictionariesDefDescTooltip=I dizionari forniti dal modulo / applicazione sono definiti nell'array $this->dictionaries nel file descrittore del modulo. Puoi modificare manualmente questo file o utilizzare l'editor incorporato.

Nota: una volta definiti (e riattivato il modulo), i dizionari sono visibili nell'area di configurazione anche agli utenti amministratori su %s. PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array $this->rights into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s. HooksDefDesc=Define in the module_parts['hooks'] property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on 'initHooks(' in core code).
Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on 'executeHooks' in core code). @@ -113,7 +113,7 @@ DropTableIfEmpty=(Distruggi la tabella se vuota) TableDoesNotExists=The table %s does not exists TableDropped=Table %s deleted InitStructureFromExistingTable=Build the structure array string of an existing table -UseAboutPage=Do not generate the About page +UseAboutPage=Non generare la pagina Informazioni UseDocFolder=Disable the documentation folder UseSpecificReadme=Use a specific ReadMe ContentOfREADMECustomized=Nota: il contenuto del file README.md è stato sostituito con il valore specifico definito nell'installazione di ModuleBuilder. @@ -130,9 +130,9 @@ UseSpecificEditorURL = Use a specific editor URL UseSpecificFamily = Use a specific family UseSpecificAuthor = Use a specific author UseSpecificVersion = Use a specific initial version -IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules -IncludeDocGeneration=I want to generate some documents from templates for the object +IncludeRefGeneration=Il riferimento dell'oggetto deve essere generato automaticamente da regole di numerazione personalizzate +IncludeRefGenerationHelp=Selezionare questa opzione se si desidera includere il codice per gestire la generazione del riferimento automaticamente utilizzando regole di numerazione personalizzate +IncludeDocGeneration=Voglio generare alcuni documenti da modelli per l'oggetto IncludeDocGenerationHelp=Se selezioni questa opzione, verrà generato del codice per aggiungere una casella "Genera documento" al record. ShowOnCombobox=Mostra il valore dentro il combobox KeyForTooltip=Chiave per tooltip @@ -141,15 +141,16 @@ CSSViewClass=CSS per il modulo di lettura CSSListClass=CSS per l'elenco NotEditable=Non modificabile ForeignKey=Chiave esterna -TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' means we add a + button after the combo to create the record
'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +TypeOfFieldsHelp=Tipo di campi:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' significa che aggiungiamo un pulsante + dopo la combinazione per creare il record
'filtro' è una condizione sql, esempio: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' AsciiToHtmlConverter=Convertitore da Ascii a HTML AsciiToPdfConverter=Convertitore da Ascii a PDF TableNotEmptyDropCanceled=Tabella non vuota. Il rilascio è stato annullato. ModuleBuilderNotAllowed=Il generatore di moduli è disponibile ma non è consentito all'utente. ImportExportProfiles=Importa ed esporta profili -ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required. -WarningDatabaseIsNotUpdated=Warning: The database is not updated automatically, you must destroy tables and disable-enable the module to have tables recreated -LinkToParentMenu=Parent menu (fk_xxxxmenu) -ListOfTabsEntries=List of tab entries -TabsDefDesc=Define here the tabs provided by your module -TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +ValidateModBuilderDesc=Impostalo a 1 se vuoi che il metodo $this->validateField() dell'oggetto venga chiamato per convalidare il contenuto del campo durante l'inserimento o l'aggiornamento. Impostare 0 se non è richiesta alcuna convalida. +WarningDatabaseIsNotUpdated=Avvertenza: il database non viene aggiornato automaticamente, è necessario distruggere le tabelle e disabilitare il modulo per consentire la ricreazione delle tabelle +LinkToParentMenu=Menu principale (fk_xxxxmenu) +ListOfTabsEntries=Elenco delle voci delle schede +TabsDefDesc=Definisci qui le schede fornite dal tuo modulo +TabsDefDescTooltip=Le schede fornite dal modulo/applicazione sono definite nell'array $this->tabs nel file descrittore del modulo. Puoi modificare manualmente questo file o utilizzare l'editor incorporato. +BadValueForType=Valore errato per il tipo %s diff --git a/htdocs/langs/it_IT/oauth.lang b/htdocs/langs/it_IT/oauth.lang index 1f6d871c7ac..70284f51e10 100644 --- a/htdocs/langs/it_IT/oauth.lang +++ b/htdocs/langs/it_IT/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Un token è stato generato e salvato nel database locale NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token eliminato -RequestAccess=Click qui per richiedere/rinnovare l'accesso e ricevere un nuovo token da salvare -DeleteAccess=Click qui per eliminare il token +RequestAccess=Clicca qui per richiedere/rinnovare l'accesso e ricevere un nuovo token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Usa il seguente indirizzo come Redirect URI quando crei le credenziali sul tuo provider OAuth: -ListOfSupportedOauthProviders=Inserisci qui le credenziali fornite dal tuo provider OAuth. Vengono visualizzati solo i provider supportati. Questa configurazione può essere usata ache dagli altri moduli che necessitano di autenticazione OAuth2. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Aggiungi i tuoi provider di token OAuth2. Quindi, vai sulla pagina di amministrazione del tuo provider OAuth per creare/ottenere un ID OAuth e un segreto e salvarli qui. Una volta terminato, passa all'altra scheda per generare il tuo token. +OAuthSetupForLogin=Pagina per gestire (generare/eliminare) i token OAuth SeePreviousTab=Vedi la scheda precedente +OAuthProvider=Provider OAuth OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token scaduto @@ -23,10 +24,13 @@ TOKEN_DELETE=Elimina il token salvato OAUTH_GOOGLE_NAME=Oauth Google service OAUTH_GOOGLE_ID=Oauth Google Id OAUTH_GOOGLE_SECRET=Oauth Google Secret -OAUTH_GOOGLE_DESC=Vai a questa pagina quindi "Credenziali" per creare credenziali OAuth OAUTH_GITHUB_NAME=Oauth GitHub service OAUTH_GITHUB_ID=Oauth GitHub Id OAUTH_GITHUB_SECRET=Oauth GitHub Secret -OAUTH_GITHUB_DESC=Vai a questa pagina quindi "Registra una nuova applicazione" per creare le credenziali OAuth +OAUTH_URL_FOR_CREDENTIAL=Vai a questa pagina per creare o ottenere il tuo ID OAuth e Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth segreto +OAuthProviderAdded=Aggiunto provider OAuth +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Esiste già una voce OAuth per questo provider ed etichetta diff --git a/htdocs/langs/it_IT/other.lang b/htdocs/langs/it_IT/other.lang index 11e531f7219..4ac0ee1b02c 100644 --- a/htdocs/langs/it_IT/other.lang +++ b/htdocs/langs/it_IT/other.lang @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=...or build your own profile
(manual module selectio DemoFundation=Gestisci i membri di una Fondazione DemoFundation2=Gestisci i membri e un conto bancario di una Fondazione DemoCompanyServiceOnly=Gestire un'attività freelance di vendita di soli servizi -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Gestisci un negozio con una cassa DemoCompanyProductAndStocks=Negozio di vendita di prodotti con punto vendita DemoCompanyManufacturing=Azienda produttrice di prodotti DemoCompanyAll=Gestire una piccola o media azienda con più attività (tutti i moduli principali) @@ -303,4 +303,25 @@ SelectTheTypeOfObjectToAnalyze=Seleziona un oggetto per visualizzarne le statist ConfirmBtnCommonContent = Sei sicuro di voler "%s"? ConfirmBtnCommonTitle = Conferma la tua azione CloseDialog = Chiudere -Autofill = Autofill +Autofill = Riempimento automatico + +# externalsite +ExternalSiteSetup=Imposta collegamento a sito esterno +ExternalSiteURL=URL del sito esterno del contenuto iframe HTML +ExternalSiteModuleNotComplete=Il modulo ExternalSite non è configurato correttamente. +ExampleMyMenuEntry=La mia voce di menu + +# FTP +FTPClientSetup=Configurazione del modulo client FTP o SFTP +NewFTPClient=Nuova configurazione della connessione FTP/FTPS +FTPArea=Area FTP/FTPS +FTPAreaDesc=Questa schermata mostra una vista di un server FTP e SFTP. +SetupOfFTPClientModuleNotComplete=La configurazione del modulo client FTP o SFTP sembra essere incompleta +FTPFeatureNotSupportedByYourPHP=Il tuo PHP non supporta le funzioni FTP o SFTP +FailedToConnectToFTPServer=Impossibile connettersi al server (server %s, porta %s) +FailedToConnectToFTPServerWithCredentials=Impossibile accedere al server con login/password definiti +FTPFailedToRemoveFile=Impossibile rimuovere il file %s +FTPFailedToRemoveDir=Impossibile rimuovere la directory %s (Controlla i permessi e che la directory sia vuota) +FTPPassiveMode=Modalità passiva +ChooseAFTPEntryIntoMenu=Scegli un sito FTP/SFTP dal menu... +FailedToGetFile=Errore nell'accesso ai file %s diff --git a/htdocs/langs/it_IT/productbatch.lang b/htdocs/langs/it_IT/productbatch.lang index 277322df786..89144d3a587 100644 --- a/htdocs/langs/it_IT/productbatch.lang +++ b/htdocs/langs/it_IT/productbatch.lang @@ -43,3 +43,4 @@ HideLots=Nascondi un sacco OutOfOrder=Fuori servizio InWorkingOrder=Funzionante ToReplace=Sostituire +CantMoveNonExistantSerial=Errore. Chiedi una mossa su un record per un seriale che non esiste più. È possibile che tu abbia preso lo stesso numero di serie nello stesso magazzino più volte nella stessa spedizione o sia stato utilizzato da un'altra spedizione. Rimuovi questa spedizione e preparane un'altra. diff --git a/htdocs/langs/it_IT/projects.lang b/htdocs/langs/it_IT/projects.lang index 8699e982a39..b8a3c829254 100644 --- a/htdocs/langs/it_IT/projects.lang +++ b/htdocs/langs/it_IT/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Etichetta progetto ProjectsArea=Sezione progetti ProjectStatus=Stato del progetto SharedProject=Progetto condiviso -PrivateProject=Assigned contacts +PrivateProject=Contatti assegnati ProjectsImContactFor=Progetti per i quali sono esplicitamente un contatto AllAllowedProjects=Tutti i progetti che posso vedere (miei + pubblici) AllProjects=Tutti i progetti @@ -190,12 +190,12 @@ PlannedWorkload=Carico di lavoro previsto PlannedWorkloadShort=Carico di lavoro ProjectReferers=Elementi correlati ProjectMustBeValidatedFirst=I progetti devono prima essere validati -MustBeValidatedToBeSigned=%s must be validated first to be set to Signed. +MustBeValidatedToBeSigned=%s deve essere prima convalidato per essere impostato su Signed. FirstAddRessourceToAllocateTime=Assegnare una risorsa utente come contatto del progetto per allocare il tempo InputPerDay=Input per giorno InputPerWeek=Input per settimana InputPerMonth=Input per mese -InputDetail=Dettagli di input +InputDetail=Dettagli di ingresso TimeAlreadyRecorded=Questo lasso di tempo è già stato registrato per questa attività/giorno e l'utente%s ProjectsWithThisUserAsContact=Progetti con questo utente come contatto ProjectsWithThisContact=Progetti con questo contatto @@ -288,9 +288,9 @@ ProjectTasksWithoutTimeSpent=Attività di progetto senza tempo speso FormForNewLeadDesc=Grazie per aver compilato il seguente modulo per contattarci. Puoi anche inviarci un'e-mail direttamente a %s . ProjectsHavingThisContact=Progetti che hanno questo contatto StartDateCannotBeAfterEndDate=La data di fine non può essere precedente a quella di inizio -ErrorPROJECTLEADERRoleMissingRestoreIt=The "PROJECTLEADER" role is missing or has been de-activited, please restore in the dictionary of contact types -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +ErrorPROJECTLEADERRoleMissingRestoreIt=Il ruolo "PROJECTLEADER" è mancante o è stato disattivato, ripristinare nel dizionario dei tipi di contatto +LeadPublicFormDesc=Puoi abilitare qui una pagina pubblica per consentire ai tuoi potenziali clienti di stabilire un primo contatto con te da un modulo online pubblico +EnablePublicLeadForm=Abilita il modulo pubblico per il contatto +NewLeadbyWeb=Il tuo messaggio o richiesta è stato registrato. Ti risponderemo o ti contatteremo presto. +NewLeadForm=Nuovo modulo di contatto +LeadFromPublicForm=Lead online da modulo pubblico diff --git a/htdocs/langs/it_IT/stocks.lang b/htdocs/langs/it_IT/stocks.lang index 4a1c3b32740..449ef8f72af 100644 --- a/htdocs/langs/it_IT/stocks.lang +++ b/htdocs/langs/it_IT/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventari NewInventory=Nuovo inventario @@ -254,7 +254,7 @@ ReOpen=Riapri ConfirmFinish=Confermi la chiusura dell'inventario? Questa azione genererà tutti i movimenti di magazzino per aggiornare le quantità reali dei prodotti inserite nell'inventario. ObjectNotFound=%s non trovato MakeMovementsAndClose=Genera movimenti e chiudi -AutofillWithExpected=Sostituisci la quantità reale con la quantità prevista +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=Per impostazione predefinita, mostra i dettagli del lotto nella scheda "stock" del prodotto CollapseBatchDetailHelp=È possibile impostare la visualizzazione predefinita dei dettagli del lotto nella configurazione del modulo scorte ErrorWrongBarcodemode=Modalità codice a barre sconosciuto @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Il prodotto con codice a barre non esiste WarehouseId=ID magazzino WarehouseRef=Rif. Magazzino SaveQtyFirst=Salva prima le quantità reali inventariate, prima di chiedere la creazione del movimento stock. +ToStart=Avvio InventoryStartedShort=Iniziata ErrorOnElementsInventory=Operazione annullata per il seguente motivo: ErrorCantFindCodeInInventory=Impossibile trovare il codice seguente nell'inventario QtyWasAddedToTheScannedBarcode=Successo !! La quantità è stata aggiunta a tutto il codice a barre richiesto. È possibile chiudere lo strumento Scanner. StockChangeDisabled=Cambio su stock disabilitato NoWarehouseDefinedForTerminal=Nessun magazzino definito per il terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Impostazioni +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/it_IT/suppliers.lang b/htdocs/langs/it_IT/suppliers.lang index c963ccaa797..eed214b9556 100644 --- a/htdocs/langs/it_IT/suppliers.lang +++ b/htdocs/langs/it_IT/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Nome acquirente AllProductServicePrices=Prezzi dei prodotti / servizi AllProductReferencesOfSupplier=Tutti i riferimenti del fornitore BuyingPriceNumShort=Prezzi fornitore +RepeatableSupplierInvoice=Modello di fattura fornitore +RepeatableSupplierInvoices=Modello fatture fornitore +RepeatableSupplierInvoicesList=Modello fatture fornitore +RecurringSupplierInvoices=Fatture fornitori ricorrenti +ToCreateAPredefinedSupplierInvoice=Per creare un modello di fattura fornitore, è necessario creare una fattura standard, quindi, senza convalidarla, fare clic sul pulsante "%s". +GeneratedFromSupplierTemplate=Generato dal modello di fattura fornitore %s +SupplierInvoiceGeneratedFromTemplate=Fattura fornitore %s Generata dal modello di fattura fornitore %s diff --git a/htdocs/langs/it_IT/users.lang b/htdocs/langs/it_IT/users.lang index 0f45273b8b0..bc2975754e9 100644 --- a/htdocs/langs/it_IT/users.lang +++ b/htdocs/langs/it_IT/users.lang @@ -124,7 +124,7 @@ ValidatorIsSupervisorByDefault=Per impostazione predefinita, il validatore è il UserPersonalEmail=E-mail personale UserPersonalMobile=Cellulare personale WarningNotLangOfInterface=Attenzione, questa è la lingua principale che l'utente parla, non la lingua dell'interfaccia che ha scelto di vedere. Per cambiare la lingua dell'interfaccia visibile da questo utente, vai sulla scheda %s -DateLastLogin=Date last login -DatePreviousLogin=Date previous login -IPLastLogin=IP last login -IPPreviousLogin=IP previous login +DateLastLogin=Data ultimo accesso +DatePreviousLogin=Data di accesso precedente +IPLastLogin=IP ultimo accesso +IPPreviousLogin=IP di accesso precedente diff --git a/htdocs/langs/it_IT/withdrawals.lang b/htdocs/langs/it_IT/withdrawals.lang index 9792251ccbe..2d6a6b05113 100644 --- a/htdocs/langs/it_IT/withdrawals.lang +++ b/htdocs/langs/it_IT/withdrawals.lang @@ -31,6 +31,7 @@ SupplierInvoiceWaitingWithdraw=Fattura fornitore in attesa di pagamento tramite InvoiceWaitingWithdraw=Invoice waiting for direct debit InvoiceWaitingPaymentByBankTransfer=Fattura in attesa di bonifico AmountToWithdraw=Importo da prelevare +AmountToTransfer=Importo da trasferire NoInvoiceToWithdraw=Nessuna fattura aperta per '%s' è in attesa. Vai sulla scheda '%s' sulla scheda fattura per effettuare una richiesta. NoSupplierInvoiceToWithdraw=Nessuna fattura fornitore con "Richieste di credito diretto" aperte è in attesa. Vai sulla scheda '%s' sulla scheda fattura per effettuare una richiesta. ResponsibleUser=User Responsible @@ -136,6 +137,7 @@ SEPAFRST=SEPA FRST ExecutionDate=Execution date CreateForSepa=Create direct debit file ICS=Identificatore del creditore - ICS +IDS=Identificatore debitore END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction USTRD="Unstructured" SEPA XML tag ADDDAYS=Add days to Execution Date @@ -154,3 +156,4 @@ ErrorICSmissing=ICS mancante nel conto bancario %s TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=L'importo totale dell'ordine di addebito diretto differisce dalla somma delle righe WarningSomeDirectDebitOrdersAlreadyExists=Avvertenza: sono già stati richiesti ordini di addebito diretto in sospeso (%s) per un importo di %s WarningSomeCreditTransferAlreadyExists=Avvertenza: è già stato richiesto un trasferimento di credito in sospeso (%s) per un importo di %s +UsedFor=Usato per %s diff --git a/htdocs/langs/ja_JP/accountancy.lang b/htdocs/langs/ja_JP/accountancy.lang index cb7843259e1..bd1c799ef29 100644 --- a/htdocs/langs/ja_JP/accountancy.lang +++ b/htdocs/langs/ja_JP/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=銀行口座での取引の直接記録を無効にす ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=仕訳帳で下書きエクスポートを有効にする ACCOUNTANCY_COMBO_FOR_AUX=子会社アカウントのコンボリストを有効にする (取引先が多数あると遅くなるだろうし、値の一部検索機能は壊れる) ACCOUNTING_DATE_START_BINDING=会計で結合と転記を開始する日付を定義する。この日付を下回ると、取引は会計に転記されない。 -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=会計転送では、デフォルトで期間表示を選択する +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=会計転送では、デフォルトで選択される期間は何か ACCOUNTING_SELL_JOURNAL=販売仕訳帳 ACCOUNTING_PURCHASE_JOURNAL=購買仕訳帳 @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=寄付を登録するための勘定科目 ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=サブスクリプションを登録するための勘定科目 ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=顧客入金を登録するためのデフォルトの勘定科目 -UseAuxiliaryAccountOnCustomerDeposit=顧客の入金ラインでサブアカウントを使用する +UseAuxiliaryAccountOnCustomerDeposit=顧客アカウントを頭金ラインの補助元帳に個人アカウントとして保存する(無効にした場合、頭金ラインの個人アカウントは空のままになる) ACCOUNTING_PRODUCT_BUY_ACCOUNT=購入した製品のデフォルトの勘定科目(製品シートで定義されていない場合に使用) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=EEC域内で購入した製品のデフォルト勘定科目(製品シートで定義されていない場合に使用) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=経費報告行の種別で勘定科目を設定す DescVentilDoneExpenseReport=経費報告書sの行とその手数料勘定科目のリストをここで参照すること Closure=年次閉鎖 -DescClosure=まだ検証およびロックされていない月ごとの動きの数をここで参照すること +DescClosure=まだ検証されておらずロックされていない月ごとの動きの数はこちらを参照すること OverviewOfMovementsNotValidated=検証およびロックされていない動きの概要 AllMovementsWereRecordedAsValidated=全動きは検証され、ロックされたものとして記録された NotAllMovementsCouldBeRecordedAsValidated=全動きを検証済みおよびロック済みとして記録できるわけではない @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=御 AccountancyErrorMismatchLetterCode=調整コードの不一致 AccountancyErrorMismatchBalanceAmount=残高(%s)が0に等しくない AccountancyErrorLetteringBookkeeping=トランザクションに関してエラーが発生しました:%s +ErrorAccountNumberAlreadyExists=会計番号%sはすでに存在する ## Import ImportAccountingEntries=会計仕訳 diff --git a/htdocs/langs/ja_JP/admin.lang b/htdocs/langs/ja_JP/admin.lang index 64ad5341086..a185416be61 100644 --- a/htdocs/langs/ja_JP/admin.lang +++ b/htdocs/langs/ja_JP/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=次の値 ( 置換 ) MustBeLowerThanPHPLimit=注:現在、PHP構成では、このパラメーターの値に関係なく、アップロードの最大ファイルサイズが %s %sに制限されている。 NoMaxSizeByPHPLimit=注:お使いのPHP設定では無制限 MaxSizeForUploadedFiles=アップロードファイルの最大サイズ ( 0 で、全アップロード禁止 ) -UseCaptchaCode=ログインページで、グラフィカルコード ( CAPTCHA ) を使用して +UseCaptchaCode=ログインページと一部の公開ページでグラフィカルコード (CAPTCHA) を使用する AntiVirusCommand=アンチウイルスのコマンドへのフルパス AntiVirusCommandExample=ClamAvデーモンの例: ( clamav-daemonが必要 ) /usr/bin/clamdscan
ClamWinの例: ( 非常に非常に遅い ) c:\\Program~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= コマンドラインで複数のパラメータ @@ -477,7 +477,7 @@ InstalledInto=ディレクトリ%sにインストールされた BarcodeInitForThirdparties=取引先向けの大量バーコード初期化 BarcodeInitForProductsOrServices=製品またはサービスの大量バーコードの初期化またはリセット CurrentlyNWithoutBarCode=現在、%s%sにバーコードが定義されていない%sレコードがある。 -InitEmptyBarCode=次の%s空レコードの初期値 +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=現在のバーコード値をすべて消去する ConfirmEraseAllCurrentBarCode=現在のバーコード値をすべて消去してもよいか? AllBarcodeReset=全バーコード値が削除された @@ -504,7 +504,7 @@ WarningPHPMailC=-独自の電子メールサービスプロバイダーのSMTP WarningPHPMailD=また、メールの送信方法を「SMTP」に変更することを推奨。メールを送信するためにデフォルトの「PHP」メソッドを本当に維持したい場合、この警告を無視するか、ホーム - 設定 - その他 で MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP 定数を1に設定して削除すること。 WarningPHPMail2=電子メールSMTPプロバイダーが電子メールクライアントをいくつかのIPアドレスに制限する必要がある場合 ( 非常にまれ ) 、これはERP CRMアプリケーションのメールユーザエージェント ( MUA ) のIPアドレス : %s。 WarningPHPMailSPF=送信者のメールアドレスのドメイン名がSPFレコードで保護されている場合(ドメイン名登録者に問い合わせる)、自ドメインのDNSのSPFレコードに次のIPを追加する必要がある: %s。 -ActualMailSPFRecordFound=見つかった実際のSPFレコード:%s +ActualMailSPFRecordFound=実際の SPF レコードが見つかった (電子メール %s の場合): %s ClickToShowDescription=クリックして説明を表示 DependsOn=このモジュールにはモジュールが必要 RequiredBy=このモジュールはモジュールに必要 @@ -682,7 +682,7 @@ Module50150Name=POS TakePOS Module50150Desc=POSモジュールTakePOS ( タッチスクリーンPOS、ショップ、バー、レストラン用 ) 。 Module50200Name=ペイパル Module50200Desc=顧客にPayPalオンライン支払ページ ( PayPalアカウントまたはクレジット/デビットカード ) を提供する。これを使用して、顧客がアドホック支払または特定のDolibarrオブジェクト ( 請求書、注文など ) に関連する支払を行えるようにすることができる。 -Module50300Name=縞 +Module50300Name=ストライプ Module50300Desc=Stripeオンライン支払ページ ( クレジット/デビットカード ) を顧客に提供する。これを使用して、顧客がアドホック支払または特定のDolibarrオブジェクト ( 請求書、注文など ) に関連する支払を行えるようにすることができる。 Module50400Name=会計 ( 複式簿記 ) Module50400Desc=会計管理 ( ダブルエントリ、一般および子会社の元帳をサポート ) 。元帳を他のいくつかの会計ソフトウェア形式でエクスポートする。 @@ -1058,7 +1058,7 @@ DictionarySendingMethods=配送方法 DictionaryStaff=就業者数 DictionaryAvailability=配達遅延 DictionaryOrderMethods=注文方法 -DictionarySource=提案/受注の起源 +DictionarySource=提案/受注の出処 DictionaryAccountancyCategory=報告書s用にパーソナライズされたグループ DictionaryAccountancysystem=勘定科目表のモデル DictionaryAccountancyJournal=会計仕訳帳 @@ -1129,7 +1129,7 @@ ValueOfConstantKey=構成定数の値 ConstantIsOn=オプション%sがオンになっている NbOfDays=日数 AtEndOfMonth=今月末に -CurrentNext=現在/次へ +CurrentNext=月の指定日 Offset=オフセット AlwaysActive=常にアクティブ Upgrade=アップグレード @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=キーボードのCTRL + F5を押すか、この値を NotSupportedByAllThemes=コアテーマで動作するが、外部テーマではサポートされていない可能性がある BackgroundColor=背景色 TopMenuBackgroundColor=トップメニューの背景色 -TopMenuDisableImages=トップメニューで画像を非表示 +TopMenuDisableImages=トップメニューのアイコンまたはテキスト LeftMenuBackgroundColor=左メニューの背景色 BackgroundTableTitleColor=表のタイトル行の背景色 BackgroundTableTitleTextColor=表のタイトル行のテキストの色 @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=注:消費税またはVATを使用するオプションは、 SwapSenderAndRecipientOnPDF=PDFドキュメントの送信者と受信者のアドレス位置を入れ替える FeatureSupportedOnTextFieldsOnly=警告、機能性はテキストフィールドとコンボリストでのみサポートされる。また、この機能性を引き出すには、URLパラメータ action=create または action=edit を設定するか、ページ名が 'new.php' で終わる必要がある。 EmailCollector=メールコレクター +EmailCollectors=メールコレクター EmailCollectorDescription=スケジュールされたジョブと設定ページを追加して、 ( IMAPプロトコルを使用して ) 定期的に電子メールボックスをスキャンし、アプリケーションに受信した電子メールを適切な場所で記録したり、いくつかの記録を自動的に作成したりする ( 引合など ) 。 NewEmailCollector=新規Eメールコレクター EMailHost=電子メールIMAPサーバーのホスト @@ -2073,14 +2074,14 @@ DateLastCollectResult=最新の取得試行の日付 DateLastcollectResultOk=最新の取得成功の日付 LastResult=最新の結果 EmailCollectorHideMailHeaders=収集された電子メールの保存されたコンテンツに電子メールヘッダーのコンテンツを含めないこと -EmailCollectorHideMailHeadersHelp=有効にすると、イベントとして保存される電子メールコンテンツの最後に電子メールヘッダーが追加されない。 +EmailCollectorHideMailHeadersHelp=有効にすると、アジェンダイベントとして保存される電子メールコンテンツの最後に電子メールヘッダーは追加されない。 EmailCollectorConfirmCollectTitle=メール収集確定 EmailCollectorConfirmCollect=このコレクタを今すぐ実行するか? EmailCollectorExampleToCollectTicketRequestsDesc=いくつかのルールに一致する電子メールを収集し、電子メール情報を含むチケットを自動的に作成する(モジュールチケットを有効化する必要がある)。電子メールでサポートを提供する場合は、このコレクタを使用できるため、チケット要求が自動的に生成される。 Collect_Responsesも有効化して、チケットビューで直接クライアントの回答を収集する(Dolibarrから返信する必要がある)。 EmailCollectorExampleToCollectTicketRequests=チケット要求の収集例(最初のメッセージのみ) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=メールボックスの「送信済み」ディレクトリをスキャンして、Dolibarrからではなく、電子メールソフトウェアから直接別の電子メールの応答として送信された電子メールを見つけます。そのような電子メールが見つかった場合、回答のイベントはDolibarrに記録される EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=外部の電子メールソフトウェアから送信された電子メールの回答を収集する例 -EmailCollectorExampleToCollectDolibarrAnswersDesc=アプリケーションから送信された電子メールの回答である全電子メールを収集する。電子メール応答を含むイベント(モジュールアジェンダを有効にする必要がある)は、適切な場所に記録される。たとえば、アプリケーションから電子メールでチケットの商業提案、注文、請求書、またはメッセージを送信し、顧客が電子メールに応答した場合、システムは自動的に応答をキャッチしてERPに追加する。 +EmailCollectorExampleToCollectDolibarrAnswersDesc=アプリケーションから送信された電子メールの回答であるすべての電子メールを収集する。電子メール応答を含むイベント(モジュールアジェンダを有効にする必要があ)は、適切な場所に記録される。たとえば、アプリケーションから電子メールでチケットの商取引提案、注文、請求書、またはメッセージを送信し、受信者が電子メールに応答すると、システムは自動的に応答をキャッチしてERPに追加する。 EmailCollectorExampleToCollectDolibarrAnswers=Dolibarrから送信されたメッセージへの回答である全受信メッセージを収集する例 EmailCollectorExampleToCollectLeadsDesc=いくつかのルールに一致する電子メールを収集し、電子メール情報を使用してリードを自動的に作成する(モジュールプロジェクトを有効にする必要がある)。モジュールプロジェクト(1リード= 1プロジェクト)を使用してリードをフォローする場合は、このコレクタを使用できる。これにより、リードが自動的に生成される。コレクタのCollect_Responsesも有効になっている場合、リード、プロポーザル、またはその他のオブジェクトから電子メールを送信すると、アプリケーションに直接顧客またはパートナーの回答が表示される場合がある。
注:この最初の例では、リードのタイトルが電子メールを含めて生成される。サードパーティがデータベース(新規顧客)で見つからない場合、リードはID1のサードパーティに接続される。 EmailCollectorExampleToCollectLeads=リードの収集例 @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=求人に応募するメール EmailCollectorExampleToCollectJobCandidatures=電子メールで受け取った求職者の収集例 NoNewEmailToProcess=処理する新規電子メール ( 一致するフィルタ ) はない NothingProcessed=何もしていない -XEmailsDoneYActionsDone=%s電子メールが修飾され、%s電子メールが正常に処理された ( %sレコード/アクションが実行された場合 ) +XEmailsDoneYActionsDone=%s電子メールは事前に認定され、%s電子メールは正常に処理されました(%sレコード/アクションが実行された場合) RecordEvent=議題にイベントを記録する(送信または受信した電子メールの種類を使用) CreateLeadAndThirdParty=リード(および必要なら取引先)を作成する CreateTicketAndThirdParty=チケットを作成する(取引先が以前の操作によってロードされた場合、またはメールヘッダーのトラッカーから推測された場合は、取引先にリンクされる。それ以外の場合は取引先は含まれない) @@ -2167,6 +2168,9 @@ EmailTemplate=メールのテンプレート EMailsWillHaveMessageID=電子メールには、この構文に一致するタグ「参照」がある PDF_SHOW_PROJECT=ドキュメントにプロジェクトを表示 ShowProjectLabel=プロジェクトラベル +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=取引先名にエイリアスを含める +THIRDPARTY_ALIAS=取引先に名前を付ける-エイリアス取引先 +ALIAS_THIRDPARTY=エイリアス取引先-取引先に名前を付ける PDF_USE_ALSO_LANGUAGE_CODE=PDF内の一部のテキストを同じ生成PDFで2つの異なる言語で複製する場合は、ここでこの2番目の言語を設定して、生成されたPDFに同じページに2つの異なる言語が含まれるようにする必要がある。1つはPDFの生成時に選択され、もう1つは ( これをサポートしているPDFテンプレートはごくわずか ) 。 PDFごとに1つの言語を空のままにする。 PDF_USE_A=デフォルト形式のPDFではなくPDF / A形式のPDFドキュメントを生成する FafaIconSocialNetworksDesc=FontAwesomeアイコンのコードをここに入力する。 FontAwesomeとは何かわからない場合は、一般的な値fa-address-bookを使用できる。 @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=異なるサイズの名刺のテンプレート InventorySetup= 目録設定 ExportUseLowMemoryMode=低メモリモードを使用する ExportUseLowMemoryModeHelp=低メモリモードを使用して、ダンプのexecを実行する(圧縮は、PHPメモリではなくパイプを介して行われる)。この方法では、ファイルが完了したことを確認できず、失敗した場合はエラーメッセージを報告できない。 + +ModuleWebhookName = Webhook +ModuleWebhookDesc = dolibarrトリガーをキャッチしてURLに送信するためのインターフェース +WebhookSetup = Webhookのセットアップ +Settings = 設定 +WebhookSetupPage = Webhookセットアップページ ShowQuickAddLink=右上のメニューに要素をすばやく追加するためのボタンを表示する + HashForPing=pingに使用されるハッシュ ReadOnlyMode=インスタンスは「読取り専用」モードか DEBUGBAR_USE_LOG_FILE= dolibarr.log ファイルを使用して、ログをトラップする UsingLogFileShowAllRecordOfSubrequestButIsSlower=ライブメモリをキャッチする代わりに、dolibarr.logファイルを使用してログをトラップする。現在のプロセスのログだけでなく(ajaxサブ要求ページの1つを含む)全ログをキャッチできるが、インスタンスの速度が非常に遅くなる。推奨されない。 FixedOrPercent=固定(キーワード'fixed'を使用)またはパーセント(キーワード'percent'を使用) DefaultOpportunityStatus=デフォルトの商談ステータス(リードが作成されたときの最初のステータス) + IconAndText=アイコンとテキスト TextOnly=テキストのみ IconOnlyAllTextsOnHover=アイコンのみ-すべてのテキストはマウスがメニューバー上にある時アイコン下に表示される @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=アイコンのみ-アイコンのテキストはマウス IconOnly=アイコンのみ-ツールチップのみのテキスト INVOICE_ADD_ZATCA_QR_CODE=請求書にZATCAQRコードを表示する INVOICE_ADD_ZATCA_QR_CODEMore=一部のアラビア語の国では、請求書にこのQRコードが必要 +INVOICE_ADD_SWISS_QR_CODE=請求書にスイスのQR-Billコードを表示する UrlSocialNetworksDesc=ソーシャルネットワークのURLリンク。ソーシャルネットワークIDを含む可変部分には{socialid}を使用する。 +IfThisCategoryIsChildOfAnother=このカテゴリが別カテゴリの子である場合 +NoName=ノーネーム +CIDLookupURL=このモジュールは、外部ツールがサードパーティの名前またはその電話番号から連絡先を取得するために使用できるURLを提供する。使用するURLは次のとおり。 diff --git a/htdocs/langs/ja_JP/cashdesk.lang b/htdocs/langs/ja_JP/cashdesk.lang index 0066fd2f620..b7ce14ca2ff 100644 --- a/htdocs/langs/ja_JP/cashdesk.lang +++ b/htdocs/langs/ja_JP/cashdesk.lang @@ -136,3 +136,4 @@ PrintWithoutDetails=詳細なしで印刷 YearNotDefined=年は未定義 TakeposBarcodeRuleToInsertProduct=製品を挿入するためのバーコードルール TakeposBarcodeRuleToInsertProductDesc=スキャン済バーコードから製品参照+数量を抽出するルール。
空(デフォルト値)の場合、アプリケーションはスキャンされたバーコードのみを使用して製品を検索する。

定義済の場合の構文規則:
ref:NB+qu:NB+qd:NB+other:NB
上記 NB はスキャン済バーコードからデータ抽出するときに使用する文字数であり:
  • ref : 製品参照
  • qu : 項目追加時の設定数量(units)
  • qd : 項目追加時の設定数量 (decimals)
  • other : その他の文字列
+AlreadyPrinted=すでに印刷されている diff --git a/htdocs/langs/ja_JP/categories.lang b/htdocs/langs/ja_JP/categories.lang index 311146b8e1e..3a6c0fba446 100644 --- a/htdocs/langs/ja_JP/categories.lang +++ b/htdocs/langs/ja_JP/categories.lang @@ -95,7 +95,9 @@ ShowCategory=タグ/カテゴリを表示 ByDefaultInList=デフォルトでリストに ChooseCategory=カテゴリを選択 StocksCategoriesArea=倉庫カテゴリ +TicketsCategoriesArea=チケットカテゴリ ActionCommCategoriesArea=イベントカテゴリ WebsitePagesCategoriesArea=ページ-コンテナカテゴリ KnowledgemanagementsCategoriesArea=KM項目カテゴリー UseOrOperatorForCategories=カテゴリには「OR」演算子を使用する +AddObjectIntoCategory=オブジェクトをカテゴリに追加 diff --git a/htdocs/langs/ja_JP/companies.lang b/htdocs/langs/ja_JP/companies.lang index 4299b4e0248..d6f1e81f0d8 100644 --- a/htdocs/langs/ja_JP/companies.lang +++ b/htdocs/langs/ja_JP/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=取引先の性質 NatureOfContact=連絡の性質 Address=住所 State=州/地方 +StateId=州ID StateCode=州/地方コード StateShort=州 Region=地域 Region-State=地域 - 州 Country=国 CountryCode=国コード -CountryId=国番号 +CountryId=国ID Phone=電話 PhoneShort=電話 Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. プロフ 1(貿易登録) ProfId2CM=Id. プロフ 2(納税者番号) -ProfId3CM=Id. プロフ 3(作成指令) -ProfId4CM=Id. プロフ 4(譲渡性預金) +ProfId3CM=Id. プロフ3(作成命令の数) +ProfId4CM=Id. プロフ4(預託金証書番号) ProfId5CM=Id. プロフ 5(その他) ProfId6CM=- ProfId1ShortCM=貿易登録 ProfId2ShortCM=納税者番号 -ProfId3ShortCM=作成指令 -ProfId4ShortCM=預金残高証明書 +ProfId3ShortCM=作成令の数 +ProfId4ShortCM=預託金証書番号 ProfId5ShortCM=他人 ProfId6ShortCM=- ProfId1CO=プロフID 1 (R.U.T.) diff --git a/htdocs/langs/ja_JP/errors.lang b/htdocs/langs/ja_JP/errors.lang index d415243148a..551b2872ad8 100644 --- a/htdocs/langs/ja_JP/errors.lang +++ b/htdocs/langs/ja_JP/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascriptがこの機能が動作しているた ErrorPasswordsMustMatch=両方入力したパスワードは、互いに一致している必要がある ErrorContactEMail=技術的なエラーが発生した。次の電子メール%s に管理者に連絡し、メッセージにエラーコード %s を入力するか、このページの画面コピーを追加すること。 ErrorWrongValueForField=フィールド%s : ' %s ' は、正規表現ルール%s に不適合 +ErrorHtmlInjectionForField=フィールド%s: 値 ' %s 'には、許可されない悪意あるデータが含まれる ErrorFieldValueNotIn=フィールド%s:'%s' はフィールド %s である %s にあるものの値とは異なる ErrorFieldRefNotIn=フィールド%s : ' %s' は存在する %s 参照ではない ErrorsOnXLines=%sエラーが見つかった @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=最初に勘定科目表を設定する ErrorFailedToFindEmailTemplate=コードネーム%sのテンプレートが見つからない ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=サービスで期間が定義されていない。時給計算する方法がない。 ErrorActionCommPropertyUserowneridNotDefined=ユーザの所有者が必要 -ErrorActionCommBadType=選択したイベント種別 (id: %n, code: %s) がイベント種別辞書に存在しない +ErrorActionCommBadType=選択したイベント タイプ (ID: %s、コード: %s) がイベント タイプ ディクショナリに存在しない CheckVersionFail=バージョンチェックに失敗する ErrorWrongFileName=ファイル名に__SOMETHING__を含めることはできない ErrorNotInDictionaryPaymentConditions=支払条件辞書にないので、変更すること。 @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=エラー、全金額を同じ列に入力する必 ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=通貨%sのアカウントから通貨%sで請求書を支払おうとした ErrorInvoiceLoadThirdParty=請求書「%s」の取引先オブジェクトを読み込めない ErrorInvoiceLoadThirdPartyKey=取引先のキー「%s」が請求書「%s」に設定されていない -ErrorDeleteLineNotAllowedByObjectStatus=実際のオブジェクトステータスでは行の削除は許可されていません +ErrorDeleteLineNotAllowedByObjectStatus=現在のオブジェクトステータスでは行の削除は許可されていない ErrorAjaxRequestFailed=申請が失敗 +ErrorThirpdartyOrMemberidIsMandatory=取引先またはパートナーシップのメンバーは必須 +ErrorFailedToWriteInTempDirectory=一時ディレクトリへの書き込みに失敗 +ErrorQuantityIsLimitedTo=数量限定 %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHPパラメータ upload_max_filesize(%s)は、PHPパラメータ post_max_size(%s)よりも大きくなっている。これは一貫した設定ではない。 WarningPasswordSetWithNoAccount=この構成員にパスワードが設定された。ただし、ユーザアカウントは作成されなかった。したがって、このパスワードは保存されるが、Dolibarrへのログインには使用できない。外部モジュール/インターフェースで使用できるが、構成員のログインやパスワードを定義する必要がない場合は、構成員モジュールの設定から "各構成員のログインを管理する" オプションを無効にすることができる。ログインを管理する必要があるがパスワードは必要ない場合は、このフィールドを空のままにして、この警告を回避できる。注:構成員がユーザにリンクされている場合は、電子メールをログインとして使用することもできる。 -WarningMandatorySetupNotComplete=必須パラメータ を設定するには、ここをクリックすること +WarningMandatorySetupNotComplete=主なパラメータの設定はこちら WarningEnableYourModulesApplications=モジュールとアプリケーションを有効にするには、ここをクリックすること WarningSafeModeOnCheckExecDir=警告、PHPのオプションセーフモードは、PHPのパラメータ safe_mode_exec_dirの宣言されたディレクトリ内に格納する必要があるので、コマンドにある。 WarningBookmarkAlreadyExists=この職種またはこのターゲットを使用して、ブックマーク(URL)が既に存在している。 @@ -321,12 +325,8 @@ WarningCreateSubAccounts=警告、補助勘定科目を直接作成すること WarningAvailableOnlyForHTTPSServers=HTTPSで保護された接続を使用している場合にのみ使用できる。 WarningModuleXDisabledSoYouMayMissEventHere=モジュール%sが有効になっていない。そのため、ここでは多くのイベントを見逃す可能性がある。 WarningPaypalPaymentNotCompatibleWithStrict=値「Strict」では、現在はオンライン支払機能が正常動作せず。代わりに「Lax」を使用すること。 +WarningThemeForcedTo=警告、テーマは隠し定数 MAIN_FORCETHEME によって%sに強制された -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> git@github.com:Dolibarr/dolibarr.gitのブランチ「15.0」 # Validate RequireValidValue = 値が無効. RequireAtLeastXString = 少なくとも%s文字(s)が必要 @@ -347,12 +347,3 @@ BadSetupOfField = フィールドの設定エラー BadSetupOfFieldClassNotFoundForValidation = フィールドの設定エラー:検証用のクラスが見つからない BadSetupOfFieldFileNotFound = フィールドの設定が正しくない:含めるファイルが見つからない BadSetupOfFieldFetchNotCallable = フィールドの設定不正エラー:クラスでフェッチを呼び出せない -<<<<<<< HEAD -======= -======= -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.gitのブランチ「15.0」 ->>>>>>> git@github.com:Dolibarr/dolibarr.gitのブランチ「15.0」 -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.gitのブランチ「15.0」 ->>>>>>> git@github.com:Dolibarr/dolibarr.gitのブランチ「15.0」 diff --git a/htdocs/langs/ja_JP/eventorganization.lang b/htdocs/langs/ja_JP/eventorganization.lang index bc313d0ce82..1ebd624b0f7 100644 --- a/htdocs/langs/ja_JP/eventorganization.lang +++ b/htdocs/langs/ja_JP/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = 会議またはブース AmountPaid = 払込金額 DateOfRegistration = 登録日 ConferenceOrBoothAttendee = 会議またはブースの参加者 +ApplicantOrVisitor=申請者または訪問者 +Speaker=スピーカー # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=イベント登録の支払が OrganizationEventBulkMailToAttendees=これは、参加者としてのイベントへの参加を思い出させるものだ。 OrganizationEventBulkMailToSpeakers=これは、スピーカーとしてのイベントへの参加を思い出させるものだ。 OrganizationEventLinkToThirdParty=サードパーティ(顧客、サプライヤー、またはパートナー)へのリンク +OrganizationEvenLabelName=会議またはブースの公開名 NewSuggestionOfBooth=ブース申請 NewSuggestionOfConference=会議申請 diff --git a/htdocs/langs/ja_JP/externalsite.lang b/htdocs/langs/ja_JP/externalsite.lang deleted file mode 100644 index 7be2ce5f257..00000000000 --- a/htdocs/langs/ja_JP/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=外部ウェブサイトへのリンクを設定 -ExternalSiteURL=HTMLiframeコンテンツの外部サイトURL -ExternalSiteModuleNotComplete=モジュールExternalSite(外部サイト)が正しく構成されていない。 -ExampleMyMenuEntry=私のメニューエントリ diff --git a/htdocs/langs/ja_JP/ftp.lang b/htdocs/langs/ja_JP/ftp.lang deleted file mode 100644 index a455763d587..00000000000 --- a/htdocs/langs/ja_JP/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTPまたはSFTPクライアントモジュールの設定 -NewFTPClient=新規FTP / FTPS接続の設定 -FTPArea=FTP / FTPSエリア -FTPAreaDesc=この画面には、FTPおよびSFTPサーバのビューが表示される。 -SetupOfFTPClientModuleNotComplete=FTPまたはSFTPクライアントモジュールの設定が不完全なようだ -FTPFeatureNotSupportedByYourPHP=お使いのPHPはFTPまたはSFTP機能をサポートしていない -FailedToConnectToFTPServer=サーバ(サーバ%s、ポート%s)への接続に失敗した -FailedToConnectToFTPServerWithCredentials=定義されたログイン/パスワードでサーバにログインできなかった -FTPFailedToRemoveFile=ファイルの%sを削除できなかった。 -FTPFailedToRemoveDir=ディレクトリ%s の削除に失敗した:権限を確認し、ディレクトリが空であることを確認すること。 -FTPPassiveMode=パッシブモード -ChooseAFTPEntryIntoMenu=メニューからFTP / SFTPサイトを選択する... -FailedToGetFile=ファイル%sの取得に失敗した diff --git a/htdocs/langs/ja_JP/hrm.lang b/htdocs/langs/ja_JP/hrm.lang index b3835267ecc..86d9b71ea52 100644 --- a/htdocs/langs/ja_JP/hrm.lang +++ b/htdocs/langs/ja_JP/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=事業所を開く CloseEtablishment=事業所を閉じる # Dictionary DictionaryPublicHolidays=休暇-祝日 -DictionaryDepartment=HRM - 部門一覧 +DictionaryDepartment=HRM-組織単位 DictionaryFunction=HRM - 役職 # Module Employees=従業員s @@ -70,9 +70,9 @@ RequiredSkills=この仕事に必要なスキル UserRank=ユーザランク SkillList=スキルリスト SaveRank=ランクを保存 -knowHow=ノーハウ -HowToBe=なる方法 -knowledge=知識 +TypeKnowHow=ノーハウ +TypeHowToBe=あるべき姿 +TypeKnowledge=知識 AbandonmentComment=放棄コメント DateLastEval=最終評価日 NoEval=この従業員の評価は行われていない @@ -88,3 +88,5 @@ DeleteSkill = スキルが削除された SkillsExtraFields=追加属性(コンピテンシー) JobsExtraFields=追加属性(求人情報) EvaluationsExtraFields=追加属性(評価) +NeedBusinessTravels=出張が必要 +NoDescription=説明なし diff --git a/htdocs/langs/ja_JP/install.lang b/htdocs/langs/ja_JP/install.lang index 5ae97fb50d2..6983572ab28 100644 --- a/htdocs/langs/ja_JP/install.lang +++ b/htdocs/langs/ja_JP/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=構成ファイル%sは書き込み可能ではな ConfFileIsWritable=コンフィギュレーションファイルの%sは書き込み可能。 ConfFileMustBeAFileNotADir=構成ファイル%s は、ディレクトリーではなくファイルでなければならない。 ConfFileReload=構成ファイルからパラメーターを再ロードする。 -NoReadableConfFileSoStartInstall=構成ファイルconf/ conf.php が存在しないか、再取得できない。インストールプロセスを実行して、初期化を試みる。 +NoReadableConfFileSoStartInstall=構成ファイルconf/ conf.php が存在しないか、読み取り可能ではない。インストールプロセスを実行して、初期化を試みる。 PHPSupportPOSTGETOk=このPHPは、変数POSTとGETをサポートする。 PHPSupportPOSTGETKo=PHP設定が変数POSTやGETをサポートしない可能性がある。 php.iniのパラメーターvariables_orderを確認すること。 PHPSupportSessions=このPHPは、セッションをサポートする。 @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=あなたは、パラメータ '%s' に間違った ErrorFailedToCreateDatabase=データベース %s を作成できなかった。 ErrorFailedToConnectToDatabase=データベース %s への接続に失敗した。 ErrorDatabaseVersionTooLow=データベースのバージョン (%s) が古すぎる。 バージョン %s 以降が必要。 -ErrorPHPVersionTooLow=PHPのバージョンが古すぎる。バージョン%sが必要。 +ErrorPHPVersionTooLow=PHPバージョンが古すぎ。バージョン%s以降が必要。 +ErrorPHPVersionTooHigh=PHPバージョンが高すぎる。バージョン%s以下が必要。 ErrorConnectedButDatabaseNotFound=サーバーへの接続は成功したが、データベース '%s'が見つからない。 ErrorDatabaseAlreadyExists=データベース %s は既に存在する。 IfDatabaseNotExistsGoBackAndUncheckCreate=データベースが存在しない場合は、戻って "データベースの作成" オプションをオンにする。 diff --git a/htdocs/langs/ja_JP/knowledgemanagement.lang b/htdocs/langs/ja_JP/knowledgemanagement.lang index 98ea30c8cb9..7a7e4d63afe 100644 --- a/htdocs/langs/ja_JP/knowledgemanagement.lang +++ b/htdocs/langs/ja_JP/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = 項目s KnowledgeRecord = 項目 KnowledgeRecordExtraFields = 項目のエクストラフィールド GroupOfTicket=チケットのグループ -YouCanLinkArticleToATicketCategory=項目をチケットグループにリンクできる(新規チケット認定時に項目が提案されるようになる) +YouCanLinkArticleToATicketCategory=記事をチケット グループにリンクできる(すると、記事はこのグループのすべてのチケットで強調表示される)。 SuggestedForTicketsInGroup=チケットに対して提案されるのは、グループが SetObsolete=廃止として設定 diff --git a/htdocs/langs/ja_JP/languages.lang b/htdocs/langs/ja_JP/languages.lang index e1d982e8391..b099dd63c48 100644 --- a/htdocs/langs/ja_JP/languages.lang +++ b/htdocs/langs/ja_JP/languages.lang @@ -13,6 +13,7 @@ Language_az_AZ=アゼルバイジャン語 Language_bn_BD=ベンガル語 Language_bn_IN=ベンガル語(インド) Language_bg_BG=ブルガリア語 +Language_bo_CN=チベット人 Language_bs_BA=ボスニア語 Language_ca_ES=カタロニア語 Language_cs_CZ=チェコ語 @@ -39,6 +40,7 @@ Language_es_AR=スペイン語 (アルゼンチン) Language_es_BO=スペイン語 (ボリビア) Language_es_CL=スペイン語 (チリ) Language_es_CO=スペイン語 (コロンビア) +Language_es_CR=スペイン語(コスタリカ) Language_es_DO=スペイン語 (ドミニカ共和国) Language_es_EC=スペイン語 (エクアドル) Language_es_GT=スペイン語(グアテマラ) @@ -93,6 +95,7 @@ Language_nl_BE=オランダ語 (ベルギー) Language_nl_NL=オランダ語 Language_pl_PL=ポーランド語 Language_pt_AO=ポルトガル語(アンゴラ) +Language_pt_MZ=ポルトガル語(モザンビーク) Language_pt_BR=ポルトガル語 (ブラジル) Language_pt_PT=ポルトガル語 Language_ro_MD=ルーマニア語 (モルダビア) diff --git a/htdocs/langs/ja_JP/loan.lang b/htdocs/langs/ja_JP/loan.lang index ee614ce26e4..3cb194418ad 100644 --- a/htdocs/langs/ja_JP/loan.lang +++ b/htdocs/langs/ja_JP/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=財政的コミットメント InterestAmount=興味 CapitalRemain=資本は残る TermPaidAllreadyPaid = この期間は既に支払われている -CantUseScheduleWithLoanStartedToPaid = 支払が開始されたローンにスケジューラを使用できない +CantUseScheduleWithLoanStartedToPaid = 支払いが開始されたローンのタイムラインを生成できません CantModifyInterestIfScheduleIsUsed = スケジュールを使用する場合、利息を変更することはできない # Admin ConfigLoan=モジュールローンの構成 diff --git a/htdocs/langs/ja_JP/mails.lang b/htdocs/langs/ja_JP/mails.lang index 86b956761da..d3b4be716b5 100644 --- a/htdocs/langs/ja_JP/mails.lang +++ b/htdocs/langs/ja_JP/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=最初のメールの回答 RecordCreatedByEmailCollector=電子メールコレクター%sによって電子メール%sから作成されたレコード DefaultBlacklistMailingStatus=新しい連絡先を作成するときのフィールド「%s」のデフォルト値 DefaultStatusEmptyMandatory=空だが必須 +WarningLimitSendByDay=警告:インスタンスのセットアップまたはコントラクトにより、1日あたりのメール数が%sに制限される。さらに送信しようとすると、インスタンスの速度が低下したり、停止したりする可能性があります。より高い割り当てが必要な場合は、サポートに連絡すること。 diff --git a/htdocs/langs/ja_JP/main.lang b/htdocs/langs/ja_JP/main.lang index 73c7bae47f3..f55325b6daa 100644 --- a/htdocs/langs/ja_JP/main.lang +++ b/htdocs/langs/ja_JP/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=cid0jp FONTSIZEFORPDF=10 SeparatorDecimal=. @@ -345,7 +351,7 @@ KiloBytes=キロバイト MegaBytes=メガバイト GigaBytes=ギガバイト TeraBytes=テラバイト -UserAuthor=によってCeated +UserAuthor=により作成済 UserModif=更新済の原因 b=B。 Kb=KB @@ -712,6 +718,7 @@ FeatureDisabled=機能が無効に MoveBox=ウィジェットの移動 Offered=提供 NotEnoughPermissions=このアクションの権限を持っていない +UserNotInHierachy=このアクションは、このユーザのスーパーバイザに予約された SessionName=セッション名 Method=方法 Receive=受け取る @@ -1174,6 +1181,9 @@ ConfirmAllocateCommercial=営業担当者の確認を割り当てる ConfirmAllocateCommercialQuestion=選択した%sレコード(s)を割り当ててもよいか? CommercialsAffected=影響を受ける営業担当者 CommercialAffected=影響を受ける営業担当者 -YourMessage=貴方のメッセージ +YourMessage=あなたのメッセージ YourMessageHasBeenReceived=貴方のメッセージは受理済。できるだけ早く回答または連絡する予定。 UrlToCheck=チェックするURL +Automation=オートメーション +CreatedByEmailCollector=メールコレクターによって作成された +CreatedByPublicPortal=公開ポータルから作成 diff --git a/htdocs/langs/ja_JP/members.lang b/htdocs/langs/ja_JP/members.lang index b327d984bdb..cb1bc7224fa 100644 --- a/htdocs/langs/ja_JP/members.lang +++ b/htdocs/langs/ja_JP/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=成員資格終了日 EndSubscription=成員資格終了 SubscriptionId=拠出金 ID WithoutSubscription=拠出金なし -MemberId=構成員ID +MemberId=メンバーID +MemberRef=メンバー参照 NewMember=新構成員 MemberType=構成員種別 MemberTypeId=構成員種別ID diff --git a/htdocs/langs/ja_JP/modulebuilder.lang b/htdocs/langs/ja_JP/modulebuilder.lang index 63eeacf005a..47e28f19dbc 100644 --- a/htdocs/langs/ja_JP/modulebuilder.lang +++ b/htdocs/langs/ja_JP/modulebuilder.lang @@ -153,3 +153,4 @@ LinkToParentMenu=親メニュー(fk_xxxxmenu) ListOfTabsEntries=タブエントリのリスト TabsDefDesc=モジュールによって提供されるタブをここで定義する TabsDefDescTooltip=モジュール/アプリケーションによって提供されるタブは、配列 $this->tabsにおいてモジュール記述子ファイルに定義される。このファイルを手動で編集できるし、埋め込みエディターの使用もできる。 +BadValueForType=タイプ%sの値が正しくない diff --git a/htdocs/langs/ja_JP/oauth.lang b/htdocs/langs/ja_JP/oauth.lang index ba235145f19..86639c898c3 100644 --- a/htdocs/langs/ja_JP/oauth.lang +++ b/htdocs/langs/ja_JP/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=トークンを生成し、ローカルデータベースに保 NewTokenStored=トークンを受け取り、保存した ToCheckDeleteTokenOnProvider=ここをクリックすると %s OAuth プロバイダによって保存された承認を確認/削除する TokenDeleted=トークンを削除した -RequestAccess=ここをクリックすると、アクセスを要求/更新し、新規トークンを受け取って保存する +RequestAccess=アクセスをリクエスト/更新して新しいトークンを受け取るには、ここをクリックすること DeleteAccess=ここをクリックするとトークンを削除する UseTheFollowingUrlAsRedirectURI=OAuthプロバイダーで認証情報を作成するときは、リダイレクトURIとして次のURLを使用する。 -ListOfSupportedOauthProviders=OAuth2プロバイダーから提供された資格情報を入力する。サポートされているOAuth2プロバイダーのみがここにリストされている。これらのサービスは、OAuth2認証を必要とする他のモジュールによって使用される場合がある。 -OAuthSetupForLogin=OAuth トークンを生成するページ +ListOfSupportedOauthProviders=OAuth2トークンプロバイダーを追加する。次に、OAuthプロバイダーの管理ページに移動してOAuth IDとシークレットを作成/取得し、ここに保存する。完了したら、他のタブをオンにしてトークンを生成する。 +OAuthSetupForLogin=OAuthトークンを管理(生成/削除)するページ SeePreviousTab=前のタブを表示 +OAuthProvider=OAuthプロバイダー OAuthIDSecret=OAuth ID とシークレット TOKEN_REFRESH=現在のトークンを更新 TOKEN_EXPIRED=トークンの有効期限切れ @@ -23,10 +24,13 @@ TOKEN_DELETE=保存されたトークンを削除 OAUTH_GOOGLE_NAME=OAuthGoogleサービス OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuthGoogleシークレット -OAUTH_GOOGLE_DESC=このページに移動し、次に「Credentials」に移動してOAuthクレデンシャルを作成する OAUTH_GITHUB_NAME=OAuthGitHubサービス OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuthGitHubシークレット -OAUTH_GITHUB_DESC=このページに移動し、次に「新しいアプリケーションを登録する」に移動して、OAuthクレデンシャルを作成する +OAUTH_URL_FOR_CREDENTIAL=このページに移動する OAuthIDとシークレットを作成または取得するには OAUTH_STRIPE_TEST_NAME=OAuthストライプテスト OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuthシークレット +OAuthProviderAdded=OAuthプロバイダーが追加された +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=このプロバイダーとラベルのOAuthエントリは既に存在する diff --git a/htdocs/langs/ja_JP/orders.lang b/htdocs/langs/ja_JP/orders.lang index a30aeeae540..79d1c47c9d9 100644 --- a/htdocs/langs/ja_JP/orders.lang +++ b/htdocs/langs/ja_JP/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=この提案にリンクされた注文はすでに開かれているため、他の注文は自動的に作成されませんでした OrdersArea=お客様の注文エリア SuppliersOrdersArea=購買発注エリア OrderCard=注文カード diff --git a/htdocs/langs/ja_JP/other.lang b/htdocs/langs/ja_JP/other.lang index d31e7dfcaa2..2130e94c730 100644 --- a/htdocs/langs/ja_JP/other.lang +++ b/htdocs/langs/ja_JP/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = 「%s」を実行してもよいか? ConfirmBtnCommonTitle = アクションを確定する CloseDialog = 閉じる Autofill = オートフィル + +# externalsite +ExternalSiteSetup=外部ウェブサイトへのリンクを設定 +ExternalSiteURL=HTMLiframeコンテンツの外部サイトURL +ExternalSiteModuleNotComplete=モジュールExternalSite(外部サイト)が正しく構成されていない。 +ExampleMyMenuEntry=私のメニューエントリ + +# FTP +FTPClientSetup=FTPまたはSFTPクライアントモジュールの設定 +NewFTPClient=新規FTP / FTPS接続の設定 +FTPArea=FTP/FTPS Area +FTPAreaDesc=この画面には、FTPおよびSFTPサーバのビューが表示される。 +SetupOfFTPClientModuleNotComplete=FTPまたはSFTPクライアントモジュールの設定が不完全なようだ +FTPFeatureNotSupportedByYourPHP=お使いのPHPはFTPまたはSFTP機能をサポートしていない +FailedToConnectToFTPServer=サーバ(サーバ%s、ポート%s)への接続に失敗した +FailedToConnectToFTPServerWithCredentials=定義されたログイン/パスワードでサーバにログインできなかった +FTPFailedToRemoveFile=ファイルの%sを削除できなかった。 +FTPFailedToRemoveDir=ディレクトリ%s の削除に失敗した:権限を確認し、ディレクトリが空であることを確認すること。 +FTPPassiveMode=パッシブモード +ChooseAFTPEntryIntoMenu=メニューからFTP / SFTPサイトを選択する... +FailedToGetFile=ファイル%sの取得に失敗した diff --git a/htdocs/langs/ja_JP/products.lang b/htdocs/langs/ja_JP/products.lang index 7835bd59c73..2b96b855f85 100644 --- a/htdocs/langs/ja_JP/products.lang +++ b/htdocs/langs/ja_JP/products.lang @@ -262,7 +262,7 @@ Quarter1=第 1 四半期 Quarter2=第 2 四半期 Quarter3=第 3 四半期 Quarter4=第 4 四半期 -BarCodePrintsheet=バーコードを印刷 +BarCodePrintsheet=バーコードを印刷する PageToGenerateBarCodeSheets=このツールを使用すると、バーコードステッカーのシートを印刷できる。ステッカーページの形式、バーコードの種別、バーコードの値を選択し、ボタン %sをクリック。 NumberOfStickers=ページに印刷するステッカーの数 PrintsheetForOneBarCode=1つのバーコードに複数のステッカーを印刷 diff --git a/htdocs/langs/ja_JP/stocks.lang b/htdocs/langs/ja_JP/stocks.lang index 6530ad80408..bee56bf56d2 100644 --- a/htdocs/langs/ja_JP/stocks.lang +++ b/htdocs/langs/ja_JP/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=バーコード付き製品は存在しない WarehouseId=倉庫ID WarehouseRef=倉庫参照 SaveQtyFirst=在庫推移の作成を依頼する前に、最初に実際の在庫数量を保存する。 +ToStart=スタート InventoryStartedShort=開始済 ErrorOnElementsInventory=次の理由により、操作がキャンセルされた。 ErrorCantFindCodeInInventory=インベントリに次のコードが見つからない @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=成功 !!数量は、要求された全バー StockChangeDisabled=在庫変更は無効化済 NoWarehouseDefinedForTerminal=ターミナル用に倉庫が定義されていない ClearQtys=全数量をクリアする +ModuleStockTransferName=高度な在庫移動 +ModuleStockTransferDesc=移動シートの生成による在庫移動の高度な管理 +StockTransferNew=新規在庫移動 +StockTransferList=在庫移動リスト +ConfirmValidateStockTransfer=参照%sを使用して、この在庫移動を検証するか? +ConfirmDestock=移動%sによる在庫の減少 +ConfirmDestockCancel=移動%sで在庫の減少をキャンセルする +DestockAllProduct=在庫の減少 +DestockAllProductCancel=在庫の減少をキャンセルする +ConfirmAddStock=移動%sで在庫を増やす +ConfirmAddStockCancel=移動%sで在庫の増加をキャンセルする +AddStockAllProduct=在庫の増加 +AddStockAllProductCancel=在庫の増加をキャンセルする +DatePrevueDepart=出発予定日 +DateReelleDepart=実際の出発日 +DatePrevueArrivee=到着の予定日 +DateReelleArrivee=実際の到着日 +HelpWarehouseStockTransferSource=このウェアハウスが設定されている場合、それ自体とその子のみがソースウェアハウスとして使用可能になる +HelpWarehouseStockTransferDestination=このウェアハウスが設定されている場合、それ自体とその子のみが宛先ウェアハウスとして使用可能になる +LeadTimeForWarning=アラートまでのリードタイム(日数) +TypeContact_stocktransfer_internal_STFROM=在庫移動の差出人 +TypeContact_stocktransfer_internal_STDEST=在庫移動の受領者 +TypeContact_stocktransfer_internal_STRESP=在庫移転を担当 +StockTransferSheet=在庫移動シート +StockTransferSheetProforma=見積在庫移動シート +StockTransferDecrementation=ソースウェアハウスを減らす +StockTransferIncrementation=仕向地の倉庫を増やす +StockTransferDecrementationCancel=ソース倉庫の減少をキャンセルする +StockTransferIncrementationCancel=仕向倉庫の増設をキャンセル +StockStransferDecremented=ソースウェアハウスが減少した +StockStransferDecrementedCancel=ソース倉庫の減少がキャンセルされた +StockStransferIncremented=閉鎖済 - 在庫は移動済 +StockStransferIncrementedShort=移動済在庫 +StockStransferIncrementedShortCancel=仕向地倉庫の増設キャンセル +StockTransferNoBatchForProduct=製品%sはバッチを使用せず、オンラインでバッチをクリアして再試行する +StockTransferSetup = 在庫移動モジュールの構成 +Settings=設定 +StockTransferSetupPage = 在庫移動モジュールの設定ページ +StockTransferRightRead=在庫移動を読込む +StockTransferRightCreateUpdate=在庫移動の作成/更新 +StockTransferRightDelete=在庫移動を削除 +BatchNotFound=この製品のロット/シリアルが見つからない diff --git a/htdocs/langs/ja_JP/stripe.lang b/htdocs/langs/ja_JP/stripe.lang index 53195f7903f..68a15282dee 100644 --- a/htdocs/langs/ja_JP/stripe.lang +++ b/htdocs/langs/ja_JP/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=IPNを呼び出すためのStripeWebHookの設定へ PaymentWillBeRecordedForNextPeriod=支払は次の期間に記録される。 ClickHereToTryAgain= ここをクリックして再試行すること... CreationOfPaymentModeMustBeDoneFromStripeInterface=強力な顧客認証ルールにより、カードの作成はStripeバックオフィスから行う必要がある。 Stripeの顧客レコードをオンにするには、ここをクリックすること:%s +TERMINAL_LOCATION=端末の場所(住所) diff --git a/htdocs/langs/ja_JP/ticket.lang b/htdocs/langs/ja_JP/ticket.lang index 1613a79a92b..d1ba081b31e 100644 --- a/htdocs/langs/ja_JP/ticket.lang +++ b/htdocs/langs/ja_JP/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=IDを必要としない公開インターフェイスは、 TicketSetupDictionaries=チケットのタイプ、重大度、および分析コードは辞書から構成できる TicketParamModule=モジュール変数の設定 TicketParamMail=メールの設定 -TicketEmailNotificationFrom=チケットの回答については、電子メールを送信すること -TicketEmailNotificationFromHelp=Dolibarrから送信されたチケット回答の電子メールを送信する +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=このメールアドレスにチケット作成を通知する TicketEmailNotificationToHelp=存在する場合、この電子メールアドレスにチケット作成が通知される TicketNewEmailBodyLabel=チケット作成後に送信されるテキストメッセージ diff --git a/htdocs/langs/ka_GE/errors.lang b/htdocs/langs/ka_GE/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/ka_GE/errors.lang +++ b/htdocs/langs/ka_GE/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ka_GE/externalsite.lang b/htdocs/langs/ka_GE/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ka_GE/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ka_GE/ftp.lang b/htdocs/langs/ka_GE/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/ka_GE/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/kk_KZ/admin.lang b/htdocs/langs/kk_KZ/admin.lang index 93a8584ea9c..825bd6eab5f 100644 --- a/htdocs/langs/kk_KZ/admin.lang +++ b/htdocs/langs/kk_KZ/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Келесі мән (ауыстырулар) MustBeLowerThanPHPLimit=Ескерту: сіздің PHP конфигурациясы қазіргі уақытта %s %s жүктеуге арналған ең үлкен файл өлшемін шектейді, бұл параметрдің мәніне қарамастан. NoMaxSizeByPHPLimit=Ескерту: PHP конфигурациясында шектеу қойылмайды MaxSizeForUploadedFiles=Жүктелген файлдардың максималды өлшемі (0 жүктеуге тыйым салу үшін) -UseCaptchaCode=Кіру бетінде графикалық кодты (CAPTCHA) пайдаланыңыз +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Антивирустық команданың толық жолы AntiVirusCommandExample=ClamAv Daemon үлгісі (clamav-демон қажет):/usr/bin/clamdscan
ClamWin мысалы (өте баяу): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Пәрмен жолында қосымша параметрлер @@ -477,7 +477,7 @@ InstalledInto=%s каталогына орнатылды BarcodeInitForThirdparties=Үшінші тараптар үшін жаппай штрих-код BarcodeInitForProductsOrServices=Штрих -кодтың жаппай басталуы немесе өнімдерге немесе қызметтерге қалпына келтіру CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Келесі %s бос жазбалардың бастапқы мәні +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Штрих -кодтың барлық ағымдағы мәндерін өшіріңіз ConfirmEraseAllCurrentBarCode=Штрих -кодтың барлық ағымдағы мәндерін шынымен өшіргіңіз келе ме? AllBarcodeReset=Штрих -кодтың барлық мәндері жойылды @@ -504,7 +504,7 @@ WarningPHPMailC=- Электрондық поштаны жіберу үшін ө WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Егер сіздің электрондық пошта SMTP провайдеріңізге электрондық пошта клиентін кейбір IP мекенжайларымен шектеу қажет болса (өте сирек), бұл сіздің ERP CRM қосымшасына арналған пошта пайдаланушы агентінің (MUA) IP мекенжайы: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Сипаттаманы көрсету үшін басыңыз DependsOn=Бұл модульге модульдер қажет RequiredBy=Бұл модуль модульдер үшін қажет @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Конфигурация константасының мән ConstantIsOn=%s опциясы қосулы NbOfDays=Күндер саны AtEndOfMonth=Айдың соңында -CurrentNext=Ағымдағы/Келесі +CurrentNext=A given day in month Offset=Офсет AlwaysActive=Әрқашан белсенді Upgrade=Жаңалау @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Бұл мәнді өзгерткеннен кейін NotSupportedByAllThemes=Уилл негізгі тақырыптармен жұмыс істейді, сыртқы тақырыптармен қолдау көрсетілмеуі мүмкін BackgroundColor=Фон түсі TopMenuBackgroundColor=Жоғарғы мәзір үшін фон түсі -TopMenuDisableImages=Жоғарғы мәзірде суреттерді жасыру +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Сол жақ мәзір үшін фон түсі BackgroundTableTitleColor=Кестенің тақырып жолының фон түсі BackgroundTableTitleTextColor=Кестенің тақырып жолының мәтін түсі @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=PDF құжаттарында жіберуші мен алушының мекенжайын ауыстырыңыз FeatureSupportedOnTextFieldsOnly=Ескерту, мүмкіндік тек мәтін өрістерінде және құрама тізімдерде қолдау көрсетеді. Сонымен қатар URL параметрі action = create немесе action = edit орнатылуы керек НЕМЕСЕ беттің атауы бұл мүмкіндікті іске қосу үшін 'new.php' деп аяқталуы керек. EmailCollector=Электрондық пошта жинаушы +EmailCollectors=Email collectors EmailCollectorDescription=Электрондық пошта жәшіктерін үнемі сканерлеу (IMAP протоколы арқылы) және қабылданған электрондық хаттарды қажет жерде жазу және/немесе автоматты түрде кейбір жазбаларды жасау үшін жоспарланған жұмыс пен орнату бетін қосыңыз. NewEmailCollector=Жаңа электрондық пошта жинаушысы EMailHost=IMAP серверінің электрондық пошта хосты @@ -2073,14 +2074,14 @@ DateLastCollectResult=Соңғы жинау күні DateLastcollectResultOk=Табыстың соңғы жиналған күні LastResult=Соңғы нәтиже EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Растауды растау туралы электрондық пошта EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Өңделетін жаңа электрондық пошта (сәйкес келетін сүзгілер) жоқ NothingProcessed=Ештеңе жасалмады -XEmailsDoneYActionsDone=%s электрондық поштасы жарамды, %s электрондық поштасы сәтті өңделді (%s жазбасы/әрекеттері үшін) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Электрондық поштаға арналған шабло EMailsWillHaveMessageID=Электрондық хаттарда осы синтаксиске сәйкес келетін 'Әдебиеттер' тегі болады PDF_SHOW_PROJECT=Құжаттағы жобаны көрсету ShowProjectLabel=Жоба белгісі +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Егер сіз PDF -тегі кейбір мәтіндерді бір PDF форматында 2 түрлі тілде қайталағыңыз келсе, мұнда осы екінші тілді орнатуыңыз керек, осылайша жасалған PDF бір бетте 2 түрлі тілді қамтиды, PDF жасау кезінде таңдалған және осы PDF -тің бірнеше үлгілері ғана қолдайды). PDF үшін 1 тіл үшін бос қалдырыңыз. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Мұнда FontAwesome белгішесінің кодын енгізіңіз. Егер сіз FontAwesome деген не екенін білмесеңіз, fa-address-book жалпы мәнін пайдалана аласыз. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/kk_KZ/companies.lang b/htdocs/langs/kk_KZ/companies.lang index 12f3c65731e..23c7efee851 100644 --- a/htdocs/langs/kk_KZ/companies.lang +++ b/htdocs/langs/kk_KZ/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Үшінші тараптың табиғаты NatureOfContact=Байланыс сипаты Address=Мекенжай State=Штат/провинция +StateId=State ID StateCode=Мемлекет/провинция коды StateShort=Мемлекет Region=Аймақ Region-State=Аймақ - Мемлекет Country=Ел CountryCode=Ел коды -CountryId=Ел идентификаторы +CountryId=Country ID Phone=Телефон PhoneShort=Телефон Skype=Skype @@ -105,6 +106,7 @@ WrongSupplierCode=Сатушы коды жарамсыз CustomerCodeModel=Тұтынушы кодының моделі SupplierCodeModel=Сатушы кодының моделі Gencod=Штрих -код +GencodBuyPrice=Barcode of price ref ##### Professional ID ##### ProfId1Short=Проф. Идентификаторы 1 ProfId2Short=Проф. Идентификаторы 2 @@ -162,15 +164,15 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=- -ProfId5CM=- +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) +ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=- -ProfId5ShortCM=- +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. +ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Профессор 1 (R.U.T.) ProfId2CO=- @@ -442,7 +444,7 @@ AddAddress=Мекенжай қосу SupplierCategory=Сатушы санаты JuridicalStatus200=Тәуелсіз DeleteFile=Файлды жою -ConfirmDeleteFile=Бұл файлды шынымен жойғыңыз келе ме? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Сату өкіліне тағайындалды Organization=Ұйым FiscalYearInformation=Қаржы жылы diff --git a/htdocs/langs/kk_KZ/errors.lang b/htdocs/langs/kk_KZ/errors.lang index e10bb476fff..d3286e7ea4e 100644 --- a/htdocs/langs/kk_KZ/errors.lang +++ b/htdocs/langs/kk_KZ/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=%s электрондық поштасы дұрыс емес с ErrorBadUrl=%s url дұрыс емес ErrorBadValueForParamNotAString=Параметр үшін нашар мән. Ол әдетте аударма болмаған кезде қосылады. ErrorRefAlreadyExists= %s сілтемесі бұрыннан бар. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=%s логині бұрыннан бар. ErrorGroupAlreadyExists=%s тобы бұрыннан бар. ErrorEmailAlreadyExists=%s электрондық поштасы бұрыннан бар. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists= %s атымен басқа файл бұ ErrorPartialFile=Файл серверге толық қабылданбады. ErrorNoTmpDir=%s уақытша директивасы жоқ. ErrorUploadBlockedByAddon=PHP/Apache плагині жүктеуді бұғаттады. -ErrorFileSizeTooLarge=Файл өлшемі тым үлкен. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=%s өрісі тым ұзын. ErrorSizeTooLongForIntType=Int түріне арналған өлшем тым ұзын (%s сандар максимум) ErrorSizeTooLongForVarcharType=Жол түрі үшін өлшем тым ұзын (%s таңбасының максимумы) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Бұл функция жұмыс істеуі үш ErrorPasswordsMustMatch=Екі терілген пароль бір -біріне сәйкес келуі керек ErrorContactEMail=Техникалық қате пайда болды. Хабарламаның %s электрондық поштасын жіберу үшін әкімшіге хабарласыңыз және %s хабарламаңызды жіберіңіз. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Өріс %s : « %s » мән %s %s саласында табылған жоқ ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s қателері табылды @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Алдымен сіз өзіңізді ErrorFailedToFindEmailTemplate=%s коды бар үлгі табылмады ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Қызмет көрсету мерзімі анықталмаған. Сағаттық бағаны есептеуге болмайды. ErrorActionCommPropertyUserowneridNotDefined=Пайдаланушының иесі қажет -ErrorActionCommBadType=Таңдалған оқиға түрі (идентификатор: %n, код: %s) оқиға түрі сөздігінде жоқ +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Нұсқаны тексеру сәтсіз аяқталды ErrorWrongFileName=Файл атауында __SOMETHING__ болмайды ErrorNotInDictionaryPaymentConditions=Төлем шарттары сөздігінде жоқ, өзгертіңіз. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Сіздің PHP параметрі upload_max_filesize (%s) PHP параметрі post_max_size (%s) қарағанда жоғары. Бұл дәйекті орнату емес. WarningPasswordSetWithNoAccount=Бұл мүшеге құпия сөз орнатылды. Дегенмен, пайдаланушы тіркелгісі жасалмады. Сондықтан бұл құпия сөз сақталады, бірақ оны Dolibarr жүйесіне кіру үшін қолдануға болмайды. Оны сыртқы модуль/интерфейс қолдануы мүмкін, бірақ егер сіз мүшеге логин мен парольді анықтаудың қажеті болмаса, мүше модулін орнатудан «Әр мүшеге кіруді басқару» опциясын өшіруге болады. Егер сізге логинді басқару қажет болса, бірақ пароль қажет болмаса, бұл ескертуді болдырмау үшін бұл өрісті бос қалдыруға болады. Ескерту: егер мүше пайдаланушыға сілтеме жасаса, электрондық поштаны логин ретінде пайдалануға болады. -WarningMandatorySetupNotComplete=Міндетті параметрлерді орнату үшін мына жерді басыңыз +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Модульдер мен қосымшаларды қосу үшін мына жерді басыңыз WarningSafeModeOnCheckExecDir=Ескерту, PHP safe_mode қосулы, сондықтан пәрмен safe_mode_exec_dir php параметрімен жарияланған каталогта сақталуы керек. WarningBookmarkAlreadyExists=Бұл атауы немесе осы мақсатты (URL) бар бетбелгі бұрыннан бар. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Ескерту, сіз тікелей қосалқы е WarningAvailableOnlyForHTTPSServers=HTTPS қорғалған қосылымы қолданылған жағдайда ғана қол жетімді. WarningModuleXDisabledSoYouMayMissEventHere=%s модулі қосылмаған. Сондықтан сіз мұнда көптеген оқиғаларды жіберіп алуыңыз мүмкін. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/kk_KZ/externalsite.lang b/htdocs/langs/kk_KZ/externalsite.lang deleted file mode 100644 index a087c46078f..00000000000 --- a/htdocs/langs/kk_KZ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Сыртқы веб -сайтқа сілтеме орнату -ExternalSiteURL=HTML iframe мазмұнының сыртқы сайт URL мекенжайы -ExternalSiteModuleNotComplete=ExternalSite модулі дұрыс конфигурацияланбаған. -ExampleMyMenuEntry=Менің мәзірге кіру diff --git a/htdocs/langs/kk_KZ/ftp.lang b/htdocs/langs/kk_KZ/ftp.lang deleted file mode 100644 index 9d586217aae..00000000000 --- a/htdocs/langs/kk_KZ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP немесе SFTP клиент модулін орнату -NewFTPClient=Жаңа FTP/FTPS қосылымын орнату -FTPArea=FTP/FTPS аймағы -FTPAreaDesc=Бұл экран FTP және SFTP серверінің көрінісін көрсетеді. -SetupOfFTPClientModuleNotComplete=FTP немесе SFTP клиенттік модулін орнату аяқталмаған сияқты -FTPFeatureNotSupportedByYourPHP=Сіздің PHP FTP немесе SFTP функцияларын қолдамайды -FailedToConnectToFTPServer=Серверге қосылу мүмкін болмады (%s сервері, %s порты) -FailedToConnectToFTPServerWithCredentials=Анықталған логин/парольмен серверге кіру сәтсіз аяқталды -FTPFailedToRemoveFile= %s файлы жойылмады. -FTPFailedToRemoveDir= %s каталогын жою мүмкін болмады: рұқсаттарды тексеріңіз және каталог бос екенін тексеріңіз. -FTPPassiveMode=Пассивті режим -ChooseAFTPEntryIntoMenu=Мәзірден FTP/SFTP сайтын таңдаңыз ... -FailedToGetFile=%s файлдары алынбады diff --git a/htdocs/langs/kk_KZ/hrm.lang b/htdocs/langs/kk_KZ/hrm.lang index 9a4beea5ca4..a48ea239aa9 100644 --- a/htdocs/langs/kk_KZ/hrm.lang +++ b/htdocs/langs/kk_KZ/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Ашық мекеме CloseEtablishment=Жақын мекеме # Dictionary DictionaryPublicHolidays=Демалыс - мереке күндері -DictionaryDepartment=HRM - Бөлімдер тізімі +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - жұмыс орындары # Module Employees=Қызметкерлер @@ -20,13 +20,14 @@ Employee=Қызметкер NewEmployee=Жаңа қызметкер ListOfEmployees=Жұмысшылардың тізімі HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Position -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/kk_KZ/install.lang b/htdocs/langs/kk_KZ/install.lang index cfcabaa481e..b16cace5e25 100644 --- a/htdocs/langs/kk_KZ/install.lang +++ b/htdocs/langs/kk_KZ/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable= %s конфигурация файлы жазыл ConfFileIsWritable= %s конфигурация файлы жазылады. ConfFileMustBeAFileNotADir= %s конфигурация файлы каталог емес, файл болуы керек. ConfFileReload=Конфигурация файлынан параметрлерді қайта жүктеу. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Бұл PHP POST және GET айнымалыларын қолдайды. PHPSupportPOSTGETKo=Мүмкін сіздің PHP орнату POST және/немесе GET айнымалы мәндерін қолдамайды. variables_order параметрін php.ini ішінен тексеріңіз. PHPSupportSessions=Бұл PHP сеанстарды қолдайды. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Сіз '%s' параметріне қате мән ErrorFailedToCreateDatabase='%s' дерекқоры жасалмады. ErrorFailedToConnectToDatabase='%s' дерекқорына қосылу сәтсіз аяқталды. ErrorDatabaseVersionTooLow=Деректер базасының нұсқасы (%s) тым ескі. %s немесе одан жоғары нұсқасы қажет. -ErrorPHPVersionTooLow=PHP нұсқасы тым ескі. %s нұсқасы қажет. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Серверге қосылу сәтті болды, бірақ «%s» дерекқоры табылмады. ErrorDatabaseAlreadyExists='%s' дерекқоры бұрыннан бар. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Егер деректер базасы жоқ болса, қайтып оралыңыз және «Деректер қорын жасау» опциясын тексеріңіз. IfDatabaseExistsGoBackAndCheckCreate=Егер деректер базасы бұрыннан бар болса, қайтып оралыңыз және «Дерекқор құру» опциясын алып тастаңыз. WarningBrowserTooOld=Браузердің нұсқасы тым ескі. Браузерді Firefox, Chrome немесе Opera -ның соңғы нұсқасына жаңарту ұсынылады. diff --git a/htdocs/langs/kk_KZ/knowledgemanagement.lang b/htdocs/langs/kk_KZ/knowledgemanagement.lang index 6edef9a061a..e60076b61c1 100644 --- a/htdocs/langs/kk_KZ/knowledgemanagement.lang +++ b/htdocs/langs/kk_KZ/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Мақалалар KnowledgeRecord = Мақала KnowledgeRecordExtraFields = Мақалаға арналған экстра өрістер GroupOfTicket=Билеттер тобы -YouCanLinkArticleToATicketCategory=Сіз мақаланы билеттер тобына байланыстыра аласыз (сондықтан мақала жаңа билеттерді іріктеу кезінде ұсынылады) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Suggested for tickets when group is SetObsolete=Set as obsolete diff --git a/htdocs/langs/kk_KZ/loan.lang b/htdocs/langs/kk_KZ/loan.lang index 15805658151..9d004eeee5b 100644 --- a/htdocs/langs/kk_KZ/loan.lang +++ b/htdocs/langs/kk_KZ/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Қаржылық міндеттеме InterestAmount=Қызығушылық CapitalRemain=Капитал қалады TermPaidAllreadyPaid = Бұл мерзім толығымен төленген -CantUseScheduleWithLoanStartedToPaid = Төлем басталған кезде несие үшін жоспарлаушыны пайдалану мүмкін емес +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Егер сіз кестені қолдансаңыз, қызығушылықты өзгерте алмайсыз # Admin ConfigLoan=Кредиттік модульді конфигурациялау diff --git a/htdocs/langs/kk_KZ/main.lang b/htdocs/langs/kk_KZ/main.lang index 83448cb7eae..071c4ac9834 100644 --- a/htdocs/langs/kk_KZ/main.lang +++ b/htdocs/langs/kk_KZ/main.lang @@ -244,6 +244,7 @@ Designation=Сипаттама DescriptionOfLine=Сызық сипаттамасы DateOfLine=Жолдың күні DurationOfLine=Жолдың ұзақтығы +ParentLine=Parent line ID Model=Құжат үлгісі DefaultModel=Әдепкі құжат үлгісі Action=Оқиға @@ -344,7 +345,7 @@ KiloBytes=Килобайт MegaBytes=Мегабайт GigaBytes=Гигабайт TeraBytes=Терабайт -UserAuthor=Күткен +UserAuthor=Created by UserModif=Жаңартқан b=б. Kb=Kb @@ -517,6 +518,7 @@ or=немесе Other=Басқа Others=Басқалар OtherInformations=Басқа ақпарат +Workflow=Workflow Quantity=Саны Qty=Саны ChangedBy=Өзгерткен @@ -619,6 +621,7 @@ MonthVeryShort11=Н. MonthVeryShort12=D AttachedFiles=Қосылған файлдар мен құжаттар JoinMainDoc=Негізгі құжатқа қосылыңыз +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=ЖЖЖЖ-АА DateFormatYYYYMMDD=ЖЖЖЖ-АА-КК DateFormatYYYYMMDDHHMM=ЖЖЖЖ-АА-КК СС: SS @@ -709,6 +712,7 @@ FeatureDisabled=Мүмкіндік өшірілген MoveBox=Виджетті жылжыту Offered=Ұсынылған NotEnoughPermissions=Сізде бұл әрекетке рұқсат жоқ +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Сеанстың атауы Method=Әдіс Receive=Қабылдау @@ -798,6 +802,7 @@ URLPhoto=Фотосуреттің/логотиптің URL мекенжайы SetLinkToAnotherThirdParty=Басқа үшінші тарапқа сілтеме LinkTo=Сілтеме LinkToProposal=Ұсынысқа сілтеме +LinkToExpedition= Link to expedition LinkToOrder=Тапсырысқа сілтеме LinkToInvoice=Шот -фактураға сілтеме LinkToTemplateInvoice=Шот -фактураның үлгісіне сілтеме @@ -1164,3 +1169,14 @@ NotClosedYet=Әлі жабылмаған ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/kk_KZ/members.lang b/htdocs/langs/kk_KZ/members.lang index 16ade0cca3e..7186cd35c9a 100644 --- a/htdocs/langs/kk_KZ/members.lang +++ b/htdocs/langs/kk_KZ/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Мүше идентификаторы +MemberId=Member Id +MemberRef=Member Ref NewMember=Жаңа мүше MemberType=Мүше түрі MemberTypeId=Мүше түрінің идентификаторы @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Мүше түрін жою мүмкін емес NewSubscription=New contribution NewSubscriptionDesc=Бұл форма жазылымды қордың жаңа мүшесі ретінде жазуға мүмкіндік береді. Егер сіз жазылымды жаңартқыңыз келсе (егер оның мүшесі болса), оның орнына %s электрондық поштасына хабарласыңыз. Subscription=Contribution +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Contributions SubscriptionLate=Кеш SubscriptionNotReceived=Contribution never received @@ -135,7 +142,7 @@ CardContent=Мүшелік картаның мазмұны # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Сізге мүшелік сұрауыңыз қабылданғанын хабарлаймыз.

ThisIsContentOfYourMembershipWasValidated=Сізге мүшелігіңіз келесі ақпаратпен расталғанын хабарлаймыз:

-ThisIsContentOfYourSubscriptionWasRecorded=Сізге жаңа жазылымыңыз жазылғанын хабарлаймыз.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Жазылымыңыздың мерзімі бітуге жақын немесе аяқталғанын хабарлаймыз (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Сіз оны жаңартасыз деп үміттенеміз.

ThisIsContentOfYourCard=Бұл сіз туралы бізде бар ақпараттың қысқаша мазмұны. Егер бірдеңе дұрыс болмаса, бізге хабарласыңыз.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Қонақтың автоматты түрде жазылуы кезінде алынған хабарлама электрондық поштасының тақырыбы @@ -198,7 +205,8 @@ NbOfSubscriptions=Number of contributions AmountOfSubscriptions=Amount collected from contributions TurnoverOrBudget=Айналым (компания үшін) немесе бюджет (іргетас үшін) DefaultAmount=Default amount of contribution -CanEditAmount=Visitor can choose/edit amount of its contribution +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Біріктірілген онлайн төлем бетіне өтіңіз ByProperties=Табиғаты бойынша MembersStatisticsByProperties=Мүшелердің статистикасы табиғаты бойынша @@ -218,3 +226,5 @@ XExternalUserCreated=%s сыртқы пайдаланушылар жасалды ForceMemberNature=Мүшелік сипат (жеке немесе корпоративтік) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/kk_KZ/oauth.lang b/htdocs/langs/kk_KZ/oauth.lang index 8bdb8b1540c..303c260cf55 100644 --- a/htdocs/langs/kk_KZ/oauth.lang +++ b/htdocs/langs/kk_KZ/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Таңбалауыш жасалды және жергілікті NewTokenStored=Токен алды және сақтады ToCheckDeleteTokenOnProvider=%s OAuth провайдері сақтаған авторизацияны тексеру/жою үшін мына жерді басыңыз TokenDeleted=Белгі жойылды -RequestAccess=Кіруді сұрау/жаңарту және сақтау үшін жаңа белгі алу үшін мына жерді басыңыз -DeleteAccess=Белгіні жою үшін мына жерді басыңыз +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=OAuth провайдерімен тіркелгі деректерін жасау кезінде келесі URL мекенжайын қайта бағыттау URI ретінде пайдаланыңыз: -ListOfSupportedOauthProviders=OAuth2 провайдері берген тіркелгі деректерін енгізіңіз. Мұнда тек қолдау көрсетілетін OAuth2 провайдерлері көрсетілген. Бұл қызметтерді OAuth2 аутентификациясын қажет ететін басқа модульдер қолдануы мүмкін. -OAuthSetupForLogin=OAuth таңбалауышын жасауға арналған бет +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Алдыңғы қойындыны қараңыз +OAuthProvider=OAuth provider OAuthIDSecret=OAuth идентификаторы мен құпиясы TOKEN_REFRESH=Жаңарту белгісі TOKEN_EXPIRED=Токеннің мерзімі бітті @@ -23,10 +24,13 @@ TOKEN_DELETE=Сақталған белгіні жою OAUTH_GOOGLE_NAME=OAuth Google қызметі OAUTH_GOOGLE_ID=OAuth Google идентификаторы OAUTH_GOOGLE_SECRET=OAuth Google құпиясы -OAUTH_GOOGLE_DESC= осы бетке өтіңіз содан кейін OAuth тіркелгі деректерін жасау үшін «Тіркелу деректері» OAUTH_GITHUB_NAME=OAuth GitHub қызметі OAUTH_GITHUB_ID=OAuth GitHub идентификаторы OAUTH_GITHUB_SECRET=OAuth GitHub құпиясы -OAUTH_GITHUB_DESC= осы бетке өтіңіз содан кейін OAuth тіркелгі деректерін жасау үшін «Жаңа қосымшаны тіркеңіз». +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth жолақ сынағы OAUTH_STRIPE_LIVE_NAME=OAuth Stripe тікелей эфирі +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/kk_KZ/projects.lang b/htdocs/langs/kk_KZ/projects.lang index 6c4c637acdf..6e3cab5d57c 100644 --- a/htdocs/langs/kk_KZ/projects.lang +++ b/htdocs/langs/kk_KZ/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Есепке жұмсалатын уақыт TimeSpentForIntervention=Өткізілген уақыт TimeSpentForInvoice=Өткізілген уақыт OneLinePerUser=Бір пайдаланушыға бір жол -ServiceToUseOnLines=Желіде қолдануға арналған қызмет +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=%s шот -фактурасы жобаға жұмсалған уақыттан құрылды InterventionGeneratedFromTimeSpent=%s интервенциясы жобаға жұмсалған уақыттан құрылды ProjectBillTimeDescription=Жобаның тапсырмалары бойынша уақыт кестесін енгізгеніңізді тексеріңіз және жобаның тапсырыс берушісіне есеп айырысу үшін уақыт кестесінен шот -фактураларды құруды жоспарлап отырғаныңызды тексеріңіз (енгізілген уақыт кестелеріне негізделмеген шот -фактураны құруды жоспарлап отырғаныңызды тексермеңіз). Ескерту: Шот -фактураны құру үшін, жобаның «Өткізілген уақыт» қойындысына өтіп, қосылатын жолдарды таңдаңыз. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/km_KH/errors.lang b/htdocs/langs/km_KH/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/km_KH/errors.lang +++ b/htdocs/langs/km_KH/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/km_KH/externalsite.lang b/htdocs/langs/km_KH/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/km_KH/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/km_KH/ftp.lang b/htdocs/langs/km_KH/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/km_KH/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/kn_IN/companies.lang b/htdocs/langs/kn_IN/companies.lang index e4033b9731e..4060aec5cc0 100644 --- a/htdocs/langs/kn_IN/companies.lang +++ b/htdocs/langs/kn_IN/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=ವಿಳಾಸ State=ರಾಜ್ಯ / ಪ್ರಾಂತ್ಯ +StateId=State ID StateCode=State/Province code StateShort=State Region=ಪ್ರದೇಶ Region-State=Region - State Country=ದೇಶ CountryCode=ದೇಶ ಕೋಡ್ -CountryId=ದೇಶ ಐಡಿ +CountryId=Country ID Phone=ದೂರವಾಣಿ PhoneShort=ದೂರವಾಣಿ Skype=ಸ್ಕೈಪ್ @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/kn_IN/errors.lang b/htdocs/langs/kn_IN/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/kn_IN/errors.lang +++ b/htdocs/langs/kn_IN/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/kn_IN/externalsite.lang b/htdocs/langs/kn_IN/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/kn_IN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/kn_IN/ftp.lang b/htdocs/langs/kn_IN/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/kn_IN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ko_KR/companies.lang b/htdocs/langs/ko_KR/companies.lang index d96fdcb98fb..2c70c284ad2 100644 --- a/htdocs/langs/ko_KR/companies.lang +++ b/htdocs/langs/ko_KR/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=주소 State=시 /도 +StateId=State ID StateCode=State/Province code StateShort=상태 Region=지방 Region-State=Region - State Country=국가 CountryCode=국가 코드 -CountryId=국가 ID +CountryId=Country ID Phone=전화 PhoneShort=전화 Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=기타 ProfId6ShortCM=- ProfId1CO=프로필 Id 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=주소 추가 SupplierCategory=Vendor category JuridicalStatus200=독립적인 DeleteFile=파일 삭제 -ConfirmDeleteFile=이 파일을 정말로 삭제 하시겠습니까? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=영업 담당자에게 할당 됨 Organization=조직 FiscalYearInformation=Fiscal Year diff --git a/htdocs/langs/ko_KR/errors.lang b/htdocs/langs/ko_KR/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/ko_KR/errors.lang +++ b/htdocs/langs/ko_KR/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ko_KR/externalsite.lang b/htdocs/langs/ko_KR/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ko_KR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ko_KR/ftp.lang b/htdocs/langs/ko_KR/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/ko_KR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ko_KR/members.lang b/htdocs/langs/ko_KR/members.lang index 77ba9afee60..c5f2948a4d6 100644 --- a/htdocs/langs/ko_KR/members.lang +++ b/htdocs/langs/ko_KR/members.lang @@ -15,7 +15,7 @@ ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, logi 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. SetLinkToUser=Link to a Dolibarr user SetLinkToThirdParty=Link to a Dolibarr third party -MembersCards=Business cards for members +MembersCards=Generation of cards for members MembersList=List of members MembersListToValid=List of draft members (to be validated) MembersListValid=List of valid members @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Member id +MemberId=Member Id +MemberRef=Member Ref NewMember=New member MemberType=Member type MemberTypeId=Member type id @@ -159,11 +160,11 @@ HTPasswordExport=htpassword file generation NoThirdPartyAssociatedToMember=No third party associated with this member MembersAndSubscriptions=Members and Contributions MoreActions=Complementary action on recording -MoreActionsOnSubscription=Complementary action, suggested by default when recording a contribution +MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution MoreActionBankDirect=Create a direct entry on bank account MoreActionBankViaInvoice=Create an invoice, and a payment on bank account MoreActionInvoiceOnly=Create an invoice with no payment -LinkToGeneratedPages=Generate visit cards +LinkToGeneratedPages=Generation of business cards or address sheets LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. DocForAllMembersCards=Generate business cards for all members DocForOneMemberCards=Generate business cards for a particular member @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/lo_LA/admin.lang b/htdocs/langs/lo_LA/admin.lang index 69df3c3e9ab..fba067ff1d9 100644 --- a/htdocs/langs/lo_LA/admin.lang +++ b/htdocs/langs/lo_LA/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=ຄ່າຕໍ່ໄປ (ການປ່ຽນແທ MustBeLowerThanPHPLimit=Noteາຍເຫດ: ການຕັ້ງຄ່າ PHP ຂອງເຈົ້າໃນປັດຈຸບັນຈໍາກັດຂະ ໜາດ ໄຟລສູງສຸດສໍາລັບອັບໂຫລດໃສ່ %s %s, ໂດຍບໍ່ຄໍານຶງເຖິງຄ່າຂອງພາຣາມິເຕີນີ້. NoMaxSizeByPHPLimit=Noteາຍເຫດ: ບໍ່ມີການ ກຳ ນົດຂອບເຂດໃນການຕັ້ງຄ່າ PHP ຂອງເຈົ້າ MaxSizeForUploadedFiles=ຂະ ໜາດ ສູງສຸດ ສຳ ລັບໄຟລ uploaded ທີ່ອັບໂຫລດ (0 ເພື່ອບໍ່ອະນຸຍາດໃຫ້ອັບໂຫລດໃດ) -UseCaptchaCode=ໃຊ້ລະຫັດກຣາຟິກ (CAPTCHA) ຢູ່ໃນ ໜ້າ ເຂົ້າສູ່ລະບົບ +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=ເສັ້ນທາງອັນເຕັມທີ່ກັບຄໍາສັ່ງ antivirus AntiVirusCommandExample=ຕົວຢ່າງສໍາລັບ ClamAv Daemon (ຕ້ອງການ clamav-daemon):/usr/bin/clamdscan
ຕົວຢ່າງສໍາລັບ ClamWin (ຊ້າຫຼາຍ): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= ຕົວກໍານົດການເພີ່ມເຕີມໃນບັນທັດຄໍາສັ່ງ @@ -477,7 +477,7 @@ InstalledInto=ຕິດຕັ້ງໃສ່ໄດເຣັກທໍຣີ %s BarcodeInitForThirdparties=ການລິເລີ່ມບາໂຄດ ຈຳ ນວນຫຼາຍ ສຳ ລັບພາກສ່ວນທີສາມ BarcodeInitForProductsOrServices=ເລີ່ມຫຼືຕັ້ງບາໂຄດຄືນໃfor່ ສຳ ລັບຜະລິດຕະພັນຫຼືການບໍລິການ CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=ຄ່າ ທຳ ອິດ ສຳ ລັບບັນທຶກເປົ່າ %s ຖັດໄປ +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=ລຶບຄ່າ barcode ປັດຈຸບັນທັງົດ ConfirmEraseAllCurrentBarCode=ເຈົ້າແນ່ໃຈບໍວ່າເຈົ້າຕ້ອງການລຶບຄ່າ barcode ປັດຈຸບັນທັງ?ົດ? AllBarcodeReset=ຄ່າ barcode ທັງົດຖືກລຶບອອກແລ້ວ @@ -504,7 +504,7 @@ WarningPHPMailC=- ການໃຊ້ເຊີບເວີ SMTP ຂອງຜູ WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=ຖ້າຜູ້ໃຫ້ບໍລິການ SMTP ອີເມລຂອງເຈົ້າຕ້ອງການຈໍາກັດລູກຄ້າອີເມລ to ຫາບາງທີ່ຢູ່ IP (ຫາຍາກຫຼາຍ), ນີ້ແມ່ນທີ່ຢູ່ IP ຂອງຕົວແທນຜູ້ໃຊ້ຈົດ(າຍ (MUA) ສໍາລັບການສະEັກ ERP CRM ຂອງເຈົ້າ: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=ຄລິກເພື່ອສະແດງລາຍລະອຽດ DependsOn=ໂມດູນນີ້ຕ້ອງການໂມດູນ RequiredBy=ໂມດູນນີ້ຕ້ອງການໂດຍໂມດູນ @@ -1129,7 +1129,7 @@ ValueOfConstantKey=ຄ່າຂອງຄ່າຄົງທີ່ການ ກຳ ConstantIsOn=ຕົວເລືອກ %s ເປີດຢູ່ NbOfDays=ຈຳ ນວນມື້ AtEndOfMonth=ໃນທ້າຍເດືອນ -CurrentNext=ປັດຈຸບັນ/ຕໍ່ໄປ +CurrentNext=A given day in month Offset=ການຊົດເຊີຍ AlwaysActive=ເຄື່ອນໄຫວສະເີ Upgrade=ຍົກລະດັບ @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=ກົດ CTRL+F5 ຢູ່ເທິງແປ້ນພ NotSupportedByAllThemes=ຈະໃຊ້ໄດ້ກັບຫົວຂໍ້ຫຼັກ, ອາດຈະບໍ່ຮອງຮັບໂດຍຮູບແບບພາຍນອກ BackgroundColor=ສີພື້ນຫຼັງ TopMenuBackgroundColor=ສີພື້ນຫຼັງ ສຳ ລັບເມນູທາງເທີງ -TopMenuDisableImages=ເຊື່ອງຮູບຢູ່ໃນເມນູດ້ານເທິງ +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=ສີພື້ນຫຼັງ ສຳ ລັບເມນູຊ້າຍ BackgroundTableTitleColor=ສີພື້ນຫຼັງ ສຳ ລັບແຖວຫົວຂໍ້ຕາຕະລາງ BackgroundTableTitleTextColor=ສີຂໍ້ຄວາມ ສຳ ລັບແຖວຫົວຂໍ້ຕາຕະລາງ @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=າຍເຫດ: ທາງເລືອກທີ່ຈະໃຊ້ SwapSenderAndRecipientOnPDF=ສະຫຼັບ ຕຳ ແໜ່ງ ຜູ້ສົ່ງແລະທີ່ຢູ່ຜູ້ຮັບໃນເອກະສານ PDF FeatureSupportedOnTextFieldsOnly=ຄຳ ເຕືອນ, ຄຸນສົມບັດທີ່ຮອງຮັບໃນຊ່ອງຂໍ້ຄວາມແລະລາຍການຄອມໂບເທົ່ານັ້ນ. ການປະຕິບັດຕົວກໍານົດການ URL = ສ້າງຫຼືການປະຕິບັດ = ດັດແກ້ຕ້ອງຖືກກໍານົດຫຼືຊື່ ໜ້າ ຈະຕ້ອງລົງທ້າຍດ້ວຍ 'new.php' ເພື່ອເປີດໃຊ້ຄຸນສົມບັດນີ້. EmailCollector=ຜູ້ເກັບອີເມລ +EmailCollectors=Email collectors EmailCollectorDescription=ເພີ່ມ ໜ້າ ວຽກທີ່ໄດ້ກໍານົດໄວ້ແລະ ໜ້າ ຕິດຕັ້ງເພື່ອສະແກນກ່ອງອີເມວເປັນປະຈໍາ (ໂດຍໃຊ້ໂປຣໂຕຄໍ IMAP) ແລະບັນທຶກອີເມວທີ່ໄດ້ຮັບເຂົ້າໃນໃບສະັກຂອງເຈົ້າ, ຢູ່ບ່ອນທີ່ຖືກຕ້ອງແລະ/ຫຼືສ້າງບັນທຶກຈໍານວນ ໜຶ່ງ ໂດຍອັດຕະໂນມັດ (ເຊັ່ນ: ນໍາ). NewEmailCollector=ຜູ້ເກັບອີເມລ New ໃຫມ່ EMailHost=ໂຮສຂອງເຊີບເວີ IMAP ຂອງອີເມວ @@ -2073,14 +2074,14 @@ DateLastCollectResult=ວັນທີຂອງການພະຍາຍາມເ DateLastcollectResultOk=ວັນທີຂອງຜົນສໍາເລັດເກັບກໍາຫຼ້າສຸດ LastResult=ຜົນໄດ້ຮັບຫຼ້າສຸດ EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=ອີເມລ collect ເກັບກໍາຂໍ້ຢືນຢັນ EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=ບໍ່ມີອີເມວໃ(່ (ການກັ່ນຕອງທີ່ກົງກັນ) ເພື່ອປະມວນຜົນ NothingProcessed=ບໍ່ມີຫຍັງເຮັດ -XEmailsDoneYActionsDone=ອີເມລ %s ມີຄຸນສົມບັດ, ອີເມລ %s ປະສົບຜົນສໍາເລັດ (ສໍາລັບບັນທຶກ/ການກະທໍາ %s ສໍາເລັດ) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=ແມ່ແບບສໍາລັບອີເມລ EMailsWillHaveMessageID=ອີເມວຈະມີແທັກ 'ການອ້າງອີງ' ທີ່ກົງກັບຫຼັກໄວຍາກອນນີ້ PDF_SHOW_PROJECT=ສະແດງໂຄງການຢູ່ໃນເອກະສານ ShowProjectLabel=ປ້າຍຊື່ໂຄງການ +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=ຖ້າເຈົ້າຕ້ອງການໃຫ້ມີຕົວ ໜັງ ສືບາງອັນຢູ່ໃນ PDF ຂອງເຈົ້າຊໍ້າກັນຢູ່ໃນ 2 ພາສາທີ່ແຕກຕ່າງກັນຢູ່ໃນ PDF ທີ່ສ້າງຂຶ້ນອັນດຽວກັນ, ເຈົ້າຕ້ອງຕັ້ງເປັນພາສາທີສອງຢູ່ທີ່ນີ້ເພື່ອໃຫ້ PDF ທີ່ສ້າງຂຶ້ນຈະມີ 2 ພາສາແຕກຕ່າງກັນຢູ່ໃນ ໜ້າ ດຽວ, ອັນທີ່ເລືອກເມື່ອສ້າງ PDF ແລະອັນນີ້ ( ມີພຽງແຕ່ແມ່ແບບ PDF ບາງອັນທີ່ສະ ໜັບ ສະ ໜູນ ອັນນີ້). ຮັກສາຫວ່າງເປົ່າສໍາລັບ 1 ພາສາຕໍ່ PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=ໃສ່ທີ່ນີ້ລະຫັດຂອງໄອຄອນ FontAwesome. ຖ້າເຈົ້າບໍ່ຮູ້ວ່າ FontAwesome ແມ່ນຫຍັງ, ເຈົ້າສາມາດໃຊ້ຄ່າທົ່ວໄປ fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/lo_LA/companies.lang b/htdocs/langs/lo_LA/companies.lang index 0bfac672240..44b8706202c 100644 --- a/htdocs/langs/lo_LA/companies.lang +++ b/htdocs/langs/lo_LA/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=ລັກສະນະຂອງພາກສ່ວນທີສ NatureOfContact=ລັກສະນະຂອງການຕິດຕໍ່ Address=ທີ່ຢູ່ State=ລັດ/ແຂວງ +StateId=State ID StateCode=ລະຫັດລັດ/ແຂວງ StateShort=ລັດ Region=ພາກພື້ນ Region-State=ພາກພື້ນ - ລັດ Country=ປະເທດ CountryCode=ລະ​ຫັດ​ປະ​ເທດ -CountryId=ລະຫັດປະເທດ +CountryId=Country ID Phone=ໂທລະສັບ PhoneShort=ໂທລະສັບ Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T. ) @@ -443,7 +444,7 @@ AddAddress=ເພີ່ມທີ່ຢູ່ SupplierCategory=categoryວດູ່ຜູ້ຂາຍ JuridicalStatus200=ເອກະລາດ DeleteFile=ລຶບໄຟລ -ConfirmDeleteFile=ເຈົ້າແນ່ໃຈບໍ່ວ່າເຈົ້າຕ້ອງການລຶບໄຟລນີ້? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=ມອບtoາຍໃຫ້ຕົວແທນ່າຍຂາຍ Organization=ການຈັດຕັ້ງ FiscalYearInformation=ປີການເງິນ diff --git a/htdocs/langs/lo_LA/errors.lang b/htdocs/langs/lo_LA/errors.lang index be5f507a576..459f4f84ace 100644 --- a/htdocs/langs/lo_LA/errors.lang +++ b/htdocs/langs/lo_LA/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=ອີເມວ %s ເບິ່ງຄືວ່າບໍ່ຖ ErrorBadUrl=Url %s ບໍ່ຖືກຕ້ອງ ErrorBadValueForParamNotAString=ຄ່າບໍ່ດີ ສຳ ລັບພາຣາມິເຕີຂອງເຈົ້າ. ມັນຕໍ່ທ້າຍໂດຍທົ່ວໄປເມື່ອຂາດການແປພາສາ. ErrorRefAlreadyExists=ມີການອ້າງອີງ %s ຢູ່ແລ້ວ. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=ເຂົ້າສູ່ລະບົບ %s ມີຢູ່ແລ້ວ. ErrorGroupAlreadyExists=ກຸ່ມ %s ມີຢູ່ແລ້ວ. ErrorEmailAlreadyExists=ອີເມວ %s ມີຢູ່ແລ້ວ. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=ໄຟລ Another ອື່ນທີ່ມີຊ ErrorPartialFile=ໄຟລ not ບໍ່ໄດ້ຮັບໂດຍເຊີບເວີ. ErrorNoTmpDir=ບໍ່ມີ directy ຊົ່ວຄາວ %s. ErrorUploadBlockedByAddon=ການອັບໂຫຼດຖືກບລັອກໂດຍປລັກອິນ PHP/Apache. -ErrorFileSizeTooLarge=ຂະ ໜາດ ໄຟລ is ໃຫຍ່ເກີນໄປ. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=ຊ່ອງຂໍ້ມູນ %s ຍາວເກີນໄປ. ErrorSizeTooLongForIntType=ຂະ ໜາດ ຍາວເກີນໄປ ສຳ ລັບປະເພດ int (ຕົວເລກສູງສຸດ %s) ErrorSizeTooLongForVarcharType=ຂະ ໜາດ ຍາວເກີນໄປ ສຳ ລັບປະເພດສະຕຣິງ (ຕົວອັກສອນສູງສຸດ %s) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript ບໍ່ຕ້ອງຖືກປິດ ErrorPasswordsMustMatch=ລະຫັດຜ່ານທີ່ພິມທັງສອງອັນຕ້ອງກົງກັນ ErrorContactEMail=ເກີດຄວາມຜິດພາດທາງເທັກນິກ. ກະລຸນາຕິດຕໍ່ຫາຜູ້ບໍລິຫານເພື່ອຕິດຕາມອີເມລ a %s ແລະໃຫ້ລະຫັດຄວາມຜິດພາດ %s ຢູ່ໃນຂໍ້ຄວາມຂອງເຈົ້າ, ຫຼືເພີ່ມ ໜ້າ ນີ້ໃສ່ ໜ້າ ຈໍສໍາເນົາຂອງເຈົ້າ, ຫຼືເພີ່ມ ໜ້າ ນີ້. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=ພາກສະຫນາມ %s : ' %s ' ບໍ່ແມ່ນມູນຄ່າທີ່ພົບເຫັນໃນພາກສະຫນາມ %s ຂອງ %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=ພົບຂໍ້ຜິດພາດ %s @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=ກ່ອນອື່ນmustົດທ ErrorFailedToFindEmailTemplate=ການຊອກຫາແມ່ແບບທີ່ມີລະຫັດຊື່ %s ລົ້ມເຫລວ ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=ບໍ່ໄດ້ ກຳ ນົດໄລຍະເວລາການບໍລິການ. ບໍ່ມີທາງທີ່ຈະຄິດໄລ່ລາຄາຊົ່ວໂມງ. ErrorActionCommPropertyUserowneridNotDefined=ເຈົ້າຂອງຜູ້ໃຊ້ແມ່ນຕ້ອງການ -ErrorActionCommBadType=ປະເພດເຫດການທີ່ເລືອກ (id: %n, ລະຫັດ: %s) ບໍ່ມີຢູ່ໃນວັດຈະນານຸກົມປະເພດເຫດການ +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=ກວດສອບເວີຊັນບໍ່ ສຳ ເລັດ ErrorWrongFileName=ຊື່ຂອງໄຟລ cannot ບໍ່ສາມາດມີ __SOMETHING__ ໃນມັນໄດ້ ErrorNotInDictionaryPaymentConditions=ບໍ່ຢູ່ໃນວັດຈະນານຸກົມເງື່ອນໄຂການຈ່າຍເງິນ, ກະລຸນາແກ້ໄຂ. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=ພາຣາມິເຕີ PHP ຂອງເຈົ້າ upload_max_filesize (%s) ສູງກວ່າພາລາມິເຕີ PHP post_max_size (%s). ອັນນີ້ບໍ່ແມ່ນການຕັ້ງທີ່ສອດຄ່ອງ. WarningPasswordSetWithNoAccount=ລະຫັດຜ່ານຖືກຕັ້ງໃຫ້ສະມາຊິກນີ້. ຢ່າງໃດກໍ່ຕາມ, ບໍ່ໄດ້ສ້າງບັນຊີຜູ້ໃຊ້. ສະນັ້ນລະຫັດຜ່ານນີ້ຖືກເກັບໄວ້ແຕ່ບໍ່ສາມາດໃຊ້ເພື່ອເຂົ້າສູ່ລະບົບຫາ Dolibarr ໄດ້. ມັນອາດຈະຖືກໃຊ້ໂດຍໂມດູນ/ອິນເຕີເຟດພາຍນອກແຕ່ຖ້າເຈົ້າບໍ່ຈໍາເປັນຕ້ອງກໍານົດການເຂົ້າສູ່ລະບົບຫຼືລະຫັດຜ່ານສໍາລັບສະມາຊິກ, ເຈົ້າສາມາດປິດຕົວເລືອກ "ຈັດການການເຂົ້າສູ່ລະບົບສໍາລັບສະມາຊິກແຕ່ລະຄົນ" ຈາກການຕັ້ງຄ່າໂມດູນສະມາຊິກ. ຖ້າເຈົ້າຕ້ອງການຈັດການການເຂົ້າສູ່ລະບົບແຕ່ບໍ່ຕ້ອງການລະຫັດຜ່ານໃດ,, ເຈົ້າສາມາດເກັບຊ່ອງນີ້ຫວ່າງໄວ້ເພື່ອຫຼີກເວັ້ນການເຕືອນນີ້. Noteາຍເຫດ: ອີເມລ also ຍັງສາມາດໃຊ້ເປັນການເຂົ້າສູ່ລະບົບໄດ້ຖ້າສະມາຊິກເຊື່ອມໂຍງກັບຜູ້ໃຊ້. -WarningMandatorySetupNotComplete=ຄລິກບ່ອນນີ້ເພື່ອຕັ້ງຄ່າຕົວກໍານົດການບັງຄັບ +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=ຄລິກບ່ອນນີ້ເພື່ອເປີດໃຊ້ໂມດູນແລະການສະັກຂອງເຈົ້າ WarningSafeModeOnCheckExecDir=ຄຳ ເຕືອນ, ຕົວເລືອກ PHP safe_mode ຢູ່ເທິງສະນັ້ນ ຄຳ ສັ່ງຕ້ອງຖືກເກັບໄວ້ພາຍໃນໄດເຣັກທໍຣີທີ່ປະກາດໂດຍ php parameter safe_mode_exec_dir . WarningBookmarkAlreadyExists=ບຸກມາກທີ່ມີຊື່ນີ້ຫຼືເປົ້າ(າຍນີ້ (URL) ມີຢູ່ແລ້ວ. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=ຄຳ ເຕືອນ, ເຈົ້າບໍ່ສາ WarningAvailableOnlyForHTTPSServers=ສາມາດໃຊ້ໄດ້ສະເພາະການໃຊ້ການເຊື່ອມຕໍ່ທີ່ປອດໄພ HTTPS ເທົ່ານັ້ນ. WarningModuleXDisabledSoYouMayMissEventHere=ໂມດູນ %s ບໍ່ໄດ້ຖືກເປີດ ນຳ ໃຊ້. ດັ່ງນັ້ນເຈົ້າອາດຈະພາດເຫດການຫຼາຍຢ່າງຢູ່ທີ່ນີ້. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/lo_LA/externalsite.lang b/htdocs/langs/lo_LA/externalsite.lang deleted file mode 100644 index e28d475a5e9..00000000000 --- a/htdocs/langs/lo_LA/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=ຕັ້ງການເຊື່ອມຕໍ່ກັບເວັບໄຊທ external ພາຍນອກ -ExternalSiteURL=URL ເວັບໄຊພາຍນອກຂອງເນື້ອຫາ iframe ຂອງ HTML -ExternalSiteModuleNotComplete=ໂມດູນ ExternalSite ບໍ່ໄດ້ຖືກຕັ້ງຄ່າຢ່າງຖືກຕ້ອງ. -ExampleMyMenuEntry=ລາຍການເມນູຂອງຂ້ອຍ diff --git a/htdocs/langs/lo_LA/ftp.lang b/htdocs/langs/lo_LA/ftp.lang deleted file mode 100644 index d675b92a370..00000000000 --- a/htdocs/langs/lo_LA/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=ການຕັ້ງຄ່າໂມດູນລູກຄ້າ FTP ຫຼື SFTP -NewFTPClient=ການຕັ້ງຄ່າການເຊື່ອມຕໍ່ FTP/FTPS ໃ່ -FTPArea=ພື້ນທີ່ FTP/FTPS -FTPAreaDesc=ໜ້າ ຈໍນີ້ສະແດງໃຫ້ເຫັນມຸມມອງຂອງເຊີບເວີ FTP ແລະ SFTP. -SetupOfFTPClientModuleNotComplete=ການຕັ້ງຄ່າໂມດູນລູກຄ້າ FTP ຫຼື SFTP ເບິ່ງຄືວ່າບໍ່ສົມບູນ -FTPFeatureNotSupportedByYourPHP=PHP ຂອງເຈົ້າບໍ່ຮອງຮັບຟັງຊັນ FTP ຫຼື SFTP -FailedToConnectToFTPServer=ເຊື່ອມຕໍ່ກັບເຊີບເວີບໍ່ໄດ້ (ເຊີບເວີ %s, ຜອດ %s) -FailedToConnectToFTPServerWithCredentials=ເຂົ້າສູ່ລະບົບເຊີບເວີບໍ່ສໍາເລັດດ້ວຍການເຂົ້າສູ່ລະບົບ/ລະຫັດຜ່ານທີ່ກໍານົດໄວ້ -FTPFailedToRemoveFile=ລຶບໄຟລ a %s ບໍ່ ສຳ ເລັດ. -FTPFailedToRemoveDir=ການລຶບບັນຊີລາຍຊື່ %s ລົ້ມເຫລວ: ກວດເບິ່ງການອະນຸຍາດແລະວ່າບັນຊີລາຍການຫວ່າງເປົ່າ. -FTPPassiveMode=ໂiveດຕົວຕັ້ງຕົວຕີ -ChooseAFTPEntryIntoMenu=ເລືອກເວັບໄຊ FTP/SFTP ຈາກເມນູ ... -FailedToGetFile=ຮັບເອົາໄຟລ a %s ບໍ່ ສຳ ເລັດ diff --git a/htdocs/langs/lo_LA/hrm.lang b/htdocs/langs/lo_LA/hrm.lang index 05584bdc080..8acb1942d00 100644 --- a/htdocs/langs/lo_LA/hrm.lang +++ b/htdocs/langs/lo_LA/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=ເປີດການສ້າງຕັ້ງ CloseEtablishment=ປິດການສ້າງຕັ້ງ # Dictionary DictionaryPublicHolidays=ພັກ - ວັນພັກລັດຖະການ -DictionaryDepartment=HRM - ລາຍຊື່ພະແນກ +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - ຕຳ ແໜ່ງ ວຽກ # Module Employees=ພະນັກງານ @@ -20,13 +20,14 @@ Employee=ລູກ​ຈ້າງ NewEmployee=ພະນັກງານໃ່ ListOfEmployees=ລາຍຊື່ພະນັກງານ HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Position -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/lo_LA/install.lang b/htdocs/langs/lo_LA/install.lang index be72302b56d..10d3f90736d 100644 --- a/htdocs/langs/lo_LA/install.lang +++ b/htdocs/langs/lo_LA/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=ໄຟລ Conf ການຕັ້ງຄ່າ %s ConfFileIsWritable=ໄຟລ Conf ການຕັ້ງຄ່າ %s ແມ່ນສາມາດຂຽນໄດ້. ConfFileMustBeAFileNotADir=ໄຟລ Conf ການຕັ້ງຄ່າ %s ຕ້ອງເປັນໄຟລ,, ບໍ່ແມ່ນບັນຊີລາຍຊື່. ConfFileReload=ກຳ ລັງໂຫຼດຕົວ ກຳ ນົດການຄືນໃfrom່ຈາກໄຟລ configuration ການຕັ້ງຄ່າ. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP ນີ້ຮອງຮັບຕົວແປ POST ແລະ GET. PHPSupportPOSTGETKo=ມັນເປັນໄປໄດ້ວ່າການຕັ້ງ PHP ຂອງເຈົ້າບໍ່ສະ ໜັບ ສະ ໜູນ ຕົວແປ POST ແລະ/ຫຼື GET. ກວດເບິ່ງຕົວກໍານົດການ variables_order ໃນ php.ini. PHPSupportSessions=PHP ນີ້ສະ ໜັບ ສະ ໜູນ ເຊດຊັນຕ່າງ. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=ເຈົ້າອາດຈະພິມຄ່າຜ ErrorFailedToCreateDatabase=ສ້າງຖານຂໍ້ມູນ '%s' ບໍ່ ສຳ ເລັດ. ErrorFailedToConnectToDatabase=ເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນ '%s ບໍ່ສໍາເລັດ. ErrorDatabaseVersionTooLow=ເວີຊັນຖານຂໍ້ມູນ (%s) ເກົ່າເກີນໄປ. ຕ້ອງການເວີຊັນ %s ຫຼືສູງກວ່າ. -ErrorPHPVersionTooLow=ເວີຊັນ PHP ເກົ່າເກີນໄປ. ຕ້ອງການເວີຊັນ %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=ການເຊື່ອມຕໍ່ຫາເຊີບເວີ ສຳ ເລັດແຕ່ບໍ່ພົບຖານຂໍ້ມູນ '%s'. ErrorDatabaseAlreadyExists=ຖານຂໍ້ມູນ '%s' ມີຢູ່ແລ້ວ. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=ຖ້າຖານຂໍ້ມູນບໍ່ມີຢູ່, ໃຫ້ກັບຄືນແລະກວດເບິ່ງຕົວເລືອກ "ສ້າງຖານຂໍ້ມູນ". IfDatabaseExistsGoBackAndCheckCreate=ຖ້າຖານຂໍ້ມູນມີຢູ່ແລ້ວ, ກັບຄືນໄປແລະຍົກເລີກການເລືອກ "ສ້າງຖານຂໍ້ມູນ" ທາງເລືອກ. WarningBrowserTooOld=ເວີຊັນຂອງໂປຣແກຣມທ່ອງເວັບເກົ່າເກີນໄປ. ການອັບເກຣດໂປຣແກຣມທ່ອງເວັບຂອງເຈົ້າເປັນ Firefox, Chrome ຫຼື Opera ລຸ້ນລ້າສຸດແມ່ນແນະ ນຳ ໃຫ້ສູງ. diff --git a/htdocs/langs/lo_LA/knowledgemanagement.lang b/htdocs/langs/lo_LA/knowledgemanagement.lang index 475ddd287d8..384148f05a6 100644 --- a/htdocs/langs/lo_LA/knowledgemanagement.lang +++ b/htdocs/langs/lo_LA/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = ບົດຄວາມ KnowledgeRecord = ມາດຕາ KnowledgeRecordExtraFields = Extrafields ສໍາລັບບົດຄວາມ GroupOfTicket=ກຸ່ມຂອງປີ້ -YouCanLinkArticleToATicketCategory=ເຈົ້າສາມາດເຊື່ອມຕໍ່ບົດຄວາມ ໜຶ່ງ ກັບກຸ່ມປີ້ (ສະນັ້ນບົດຄວາມຈະຖືກແນະນໍາໃນລະຫວ່າງຄຸນສົມບັດຂອງປີ້ໃ)່) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Suggested for tickets when group is SetObsolete=Set as obsolete diff --git a/htdocs/langs/lo_LA/loan.lang b/htdocs/langs/lo_LA/loan.lang index 8d9ec8d7e96..ae6a86cfcfe 100644 --- a/htdocs/langs/lo_LA/loan.lang +++ b/htdocs/langs/lo_LA/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=ຄໍາຫມັ້ນສັນຍາທາງດ້ານ InterestAmount=ດອກເບ້ຍ CapitalRemain=ທຶນຍັງຄົງຢູ່ TermPaidAllreadyPaid = ໄລຍະນີ້ແມ່ນໄດ້ຈ່າຍເງິນົດແລ້ວ -CantUseScheduleWithLoanStartedToPaid = ບໍ່ສາມາດໃຊ້ ກຳ ນົດເວລາ ສຳ ລັບເງິນກູ້ທີ່ມີການຈ່າຍເງິນເລີ່ມຕົ້ນແລ້ວ +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = ເຈົ້າບໍ່ສາມາດແກ້ໄຂຄວາມສົນໃຈໄດ້ຖ້າເຈົ້າໃຊ້ ກຳ ນົດເວລາ # Admin ConfigLoan=ການ ກຳ ນົດຄ່າເງິນກູ້ຂອງໂມດູນ diff --git a/htdocs/langs/lo_LA/main.lang b/htdocs/langs/lo_LA/main.lang index e929be052f5..8f0b1e13018 100644 --- a/htdocs/langs/lo_LA/main.lang +++ b/htdocs/langs/lo_LA/main.lang @@ -244,6 +244,7 @@ Designation=ລາຍລະອຽດ DescriptionOfLine=ລາຍລະອຽດຂອງ DateOfLine=ວັນທີແຖວ DurationOfLine=ໄລຍະເວລາຂອງເສັ້ນ +ParentLine=Parent line ID Model=ແມ່ແບບເອກະສານ DefaultModel=ແມ່ແບບເອກະສານເລີ່ມຕົ້ນ Action=ເຫດການ @@ -344,7 +345,7 @@ KiloBytes=ກິໂລໄບ MegaBytes=ເມກາໄບ GigaBytes=ກິກະໄບ TeraBytes=ເທຣາໄບຕ -UserAuthor=ແຕ່ງຕັ້ງໂດຍ +UserAuthor=Created by UserModif=ອັບເດດໂດຍ b=ຂ Kb=ກ @@ -517,6 +518,7 @@ or=ຫຼື Other=ອື່ນ Others=ອື່ນ OtherInformations=ຂໍ້​ມູນ​ອື່ນ ໆ +Workflow=Workflow Quantity=ປະລິມານ Qty=ຈຳ ນວນ ChangedBy=ປ່ຽນໂດຍ @@ -619,6 +621,7 @@ MonthVeryShort11=ນ MonthVeryShort12=ງ AttachedFiles=ໄຟລ and ແລະເອກະສານທີ່ຕິດຄັດມາ JoinMainDoc=ເຂົ້າຮ່ວມເອກະສານຫຼັກ +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=ປປປປ-ດດ DateFormatYYYYMMDD=ປປປປ-ດດ-ວວ DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=ປິດການ ນຳ ໃຊ້ຄຸນສົມບັດ MoveBox=ຍ້າຍວິດເຈັດ Offered=ສະ ເໜີ ໃຫ້ NotEnoughPermissions=ເຈົ້າບໍ່ມີສິດອະນຸຍາດ ສຳ ລັບການກະ ທຳ ນີ້ +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=ຊື່ເຊດຊັນ Method=ວິທີການ Receive=ຮັບ @@ -798,6 +802,7 @@ URLPhoto=URL ຂອງຮູບ/ໂລໂກ້ SetLinkToAnotherThirdParty=ເຊື່ອມຕໍ່ຫາພາກສ່ວນທີສາມອື່ນ LinkTo=ເຊື່ອມຕໍ່ກັບ LinkToProposal=ເຊື່ອມຕໍ່ກັບຂໍ້ສະ ເໜີ +LinkToExpedition= Link to expedition LinkToOrder=ການເຊື່ອມຕໍ່ກັບຄໍາສັ່ງ LinkToInvoice=ລິ້ງຫາໃບຮຽກເກັບເງິນ LinkToTemplateInvoice=ເຊື່ອມຕໍ່ກັບໃບຮຽກເກັບເງິນແມ່ແບບ @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/lo_LA/members.lang b/htdocs/langs/lo_LA/members.lang index e7af7227828..32a51826792 100644 --- a/htdocs/langs/lo_LA/members.lang +++ b/htdocs/langs/lo_LA/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID ສະມາຊິກ +MemberId=Member Id +MemberRef=Member Ref NewMember=ສະມາຊິກໃ່ MemberType=ປະເພດສະມາຊິກ MemberTypeId=typeາຍເລກປະເພດສະມາຊິກ @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=ປະເພດສະມາຊິກບໍ່ສາມ NewSubscription=New contribution NewSubscriptionDesc=ແບບຟອມນີ້ອະນຸຍາດໃຫ້ເຈົ້າບັນທຶກການສະyourັກຂອງເຈົ້າເປັນສະມາຊິກໃof່ຂອງມູນນິທິ. ຖ້າເຈົ້າຕ້ອງການຕໍ່ອາຍຸການສະyourັກໃຊ້ຂອງເຈົ້າ (ຖ້າເປັນສະມາຊິກຢູ່ແລ້ວ), ກະລຸນາຕິດຕໍ່ຄະນະກໍາມະການຮາກຖານແທນທາງອີເມລ a %s. Subscription=Contribution +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Contributions SubscriptionLate=ຊ້າ SubscriptionNotReceived=Contribution never received @@ -135,7 +142,7 @@ CardContent=ເນື້ອໃນຂອງບັດສະມາຊິກຂອ # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=ພວກເຮົາຕ້ອງການແຈ້ງໃຫ້ເຈົ້າຮູ້ວ່າ ຄຳ ຮ້ອງຂໍເປັນສະມາຊິກຂອງເຈົ້າໄດ້ຮັບແລ້ວ.

ThisIsContentOfYourMembershipWasValidated=ພວກເຮົາຕ້ອງການແຈ້ງໃຫ້ເຈົ້າຮູ້ວ່າການເປັນສະມາຊິກຂອງເຈົ້າໄດ້ຮັບການກວດສອບດ້ວຍຂໍ້ມູນຕໍ່ໄປນີ້:

-ThisIsContentOfYourSubscriptionWasRecorded=ພວກເຮົາຕ້ອງການແຈ້ງໃຫ້ເຈົ້າຮູ້ວ່າການສະsubscriptionັກສະມາຊິກໃyour່ຂອງເຈົ້າໄດ້ຖືກບັນທຶກໄວ້.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=ພວກເຮົາຕ້ອງການແຈ້ງໃຫ້ທ່ານຮູ້ວ່າການສະັກໃຊ້ຂອງທ່ານກໍາລັງຈະireົດອາຍຸຫຼືexpົດອາຍຸໄປແລ້ວ (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). ພວກເຮົາຫວັງວ່າເຈົ້າຈະຕໍ່ອາຍຸມັນໃ່.

ThisIsContentOfYourCard=ນີ້ແມ່ນສະຫຼຸບຂໍ້ມູນທີ່ພວກເຮົາມີກ່ຽວກັບເຈົ້າ. ກະລຸນາຕິດຕໍ່ຫາພວກເຮົາຖ້າມີອັນໃດບໍ່ຖືກຕ້ອງ.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=ຫົວຂໍ້ຂອງອີເມວແຈ້ງເຕືອນທີ່ໄດ້ຮັບໃນກໍລະນີທີ່ມີການໃສ່ຊື່ຂອງແຂກຄົນໂດຍອັດຕະໂນມັດ @@ -198,7 +205,8 @@ NbOfSubscriptions=Number of contributions AmountOfSubscriptions=Amount collected from contributions TurnoverOrBudget=ລາຍຮັບ (ສໍາລັບບໍລິສັດ) ຫຼືງົບປະມານ (ສໍາລັບພື້ນຖານ) DefaultAmount=Default amount of contribution -CanEditAmount=Visitor can choose/edit amount of its contribution +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=ໂດດໄປຫາ ໜ້າ ການຊໍາລະເງິນອອນໄລນ integrated ທີ່ປະສົມປະສານ ByProperties=ໂດຍທໍາມະຊາດ MembersStatisticsByProperties=ສະຖິຕິສະມາຊິກໂດຍ ທຳ ມະຊາດ @@ -218,3 +226,5 @@ XExternalUserCreated=ສ້າງຜູ້ໃຊ້ພາຍນອກ %s ForceMemberNature=ລັກສະນະສະມາຊິກບັງຄັບ (ບຸກຄົນຫຼືບໍລິສັດ) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/lo_LA/oauth.lang b/htdocs/langs/lo_LA/oauth.lang index 8053ffe4d14..c8d87ec0911 100644 --- a/htdocs/langs/lo_LA/oauth.lang +++ b/htdocs/langs/lo_LA/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=ໂທເຄັນໄດ້ຖືກສ້າງຂຶ້ນແ NewTokenStored=Token ໄດ້ຮັບແລະບັນທຶກໄວ້ ToCheckDeleteTokenOnProvider=ຄລິກບ່ອນນີ້ເພື່ອກວດເບິ່ງ/ລຶບການອະນຸຍາດທີ່ບັນທຶກໄວ້ໂດຍຜູ້ໃຫ້ບໍລິການ OAuth %s TokenDeleted=Token ຖືກລຶບແລ້ວ -RequestAccess=ຄລິກບ່ອນນີ້ເພື່ອຮ້ອງຂໍ/ຕໍ່ອາຍຸການເຂົ້າເຖິງແລະຮັບເອົາໂທເຄັນໃto່ເພື່ອບັນທຶກ -DeleteAccess=ຄລິກທີ່ນີ້ເພື່ອລຶບ token +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=ໃຊ້ URL ຕໍ່ໄປນີ້ເປັນ URI ປ່ຽນເສັ້ນທາງເມື່ອສ້າງຂໍ້ມູນປະຈໍາຕົວຂອງເຈົ້າກັບຜູ້ໃຫ້ບໍລິການ OAuth ຂອງເຈົ້າ: -ListOfSupportedOauthProviders=ປ້ອນຂໍ້ມູນປະ ຈຳ ຕົວທີ່ສະ ໜອງ ໃຫ້ໂດຍຜູ້ໃຫ້ບໍລິການ OAuth2 ຂອງເຈົ້າ. ມີແຕ່ຜູ້ໃຫ້ບໍລິການ OAuth2 ທີ່ຮອງຮັບເທົ່ານັ້ນທີ່ມີລາຍຊື່ຢູ່ທີ່ນີ້. ການບໍລິການເຫຼົ່ານີ້ອາດຈະຖືກໃຊ້ໂດຍໂມດູນອື່ນທີ່ຕ້ອງການການກວດຮັບຮອງຄວາມຖືກຕ້ອງ OAuth2. -OAuthSetupForLogin=ໜ້າ ເພື່ອສ້າງໂທເຄັນ OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=ເບິ່ງແຖບກ່ອນ ໜ້າ +OAuthProvider=OAuth provider OAuthIDSecret=ລະຫັດ OAuth ແລະຄວາມລັບ TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=ໂທເຄັນiredົດອາຍຸແລ້ວ @@ -23,10 +24,13 @@ TOKEN_DELETE=ລຶບໂທເຄັນທີ່ບັນທຶກໄວ້ OAUTH_GOOGLE_NAME=ບໍລິການ OAuth Google OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=ໄປທີ່ ໜ້າ ນີ້ ຈາກນັ້ນ "ຂໍ້ມູນປະຈໍາຕົວ" ເພື່ອສ້າງຂໍ້ມູນປະຈໍາຕົວ OAuth OAUTH_GITHUB_NAME=ບໍລິການ OAuth GitHub OAUTH_GITHUB_ID=ID OAuth GitHub OAUTH_GITHUB_SECRET=ຄວາມລັບ OAuth GitHub -OAUTH_GITHUB_DESC=ໄປທີ່ ໜ້າ ນີ້ ຈາກນັ້ນ "ລົງທະບຽນສະັກໃnew່" ເພື່ອສ້າງຂໍ້ມູນປະຈໍາຕົວ OAuth +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=ການທົດສອບ OAuth Stripe OAUTH_STRIPE_LIVE_NAME=ການຖ່າຍທອດສົດ OAuth Stripe +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/lo_LA/projects.lang b/htdocs/langs/lo_LA/projects.lang index 421ef1f833d..147a4a4071d 100644 --- a/htdocs/langs/lo_LA/projects.lang +++ b/htdocs/langs/lo_LA/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=ເວລາທີ່ໃຊ້ຈ່າຍໃບບິນ TimeSpentForIntervention=ເວລາທີ່ໃຊ້ TimeSpentForInvoice=ເວລາທີ່ໃຊ້ OneLinePerUser=ໜຶ່ງ ແຖວຕໍ່ຜູ້ໃຊ້ -ServiceToUseOnLines=ການບໍລິການການນໍາໃຊ້ໃນສາຍ +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=ໃບເກັບເງິນ %s ໄດ້ຖືກສ້າງຂຶ້ນຈາກເວລາທີ່ໃຊ້ຢູ່ໃນໂຄງການ InterventionGeneratedFromTimeSpent=ການແຊກແຊງ %s ໄດ້ຖືກສ້າງຂຶ້ນຈາກເວລາທີ່ໃຊ້ຢູ່ໃນໂຄງການ ProjectBillTimeDescription=ກວດເບິ່ງວ່າເຈົ້າໃສ່ຕາຕະລາງເວລາໃນ ໜ້າ ວຽກຂອງໂຄງການຫຼືບໍ່ແລະເຈົ້າວາງແຜນທີ່ຈະສ້າງໃບແຈ້ງ ໜີ້ ຈາກຕາຕະລາງເວລາເພື່ອຮຽກເກັບເງິນລູກຄ້າຂອງໂຄງການ (ບໍ່ກວດເບິ່ງວ່າເຈົ້າວາງແຜນທີ່ຈະສ້າງໃບແຈ້ງ ໜີ້ ທີ່ບໍ່ອີງໃສ່ຕາຕະລາງເວລາທີ່ປ້ອນເຂົ້າໄປ). Noteາຍເຫດ: ເພື່ອສ້າງໃບແຈ້ງ ໜີ້, ໃຫ້ໄປທີ່ແຖບ 'ເວລາທີ່ໃຊ້' ຂອງໂຄງການແລະເລືອກແຖວເພື່ອລວມເອົາ. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/lt_LT/admin.lang b/htdocs/langs/lt_LT/admin.lang index 4c95f955423..b66dcb53ce0 100644 --- a/htdocs/langs/lt_LT/admin.lang +++ b/htdocs/langs/lt_LT/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Kita vertė (papildymas) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=PHP konfiguracijoje ribos nepritaikytos MaxSizeForUploadedFiles=Didžiausias įkeliamo failo dydis (0 - uždrausti betkokius įkėlimus) -UseCaptchaCode=Prisijungimo puslapyje naudoti grafinį kodą (CAPTCHA) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Pilnas maršrutas iki antivirusinės programos komandos AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Daugiau parametrų komandinėje eilutėje @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -718,9 +718,9 @@ Permission34=Ištrinti produktus Permission36=Žiūrėti/tvarkyti paslėptus produktus Permission38=Eksportuoti produktus Permission39=Ignore minimum price -Permission41=Read projects and tasks (shared project and projects I'm contact for). Can also enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) -Permission42=Create/modify projects (shared project and projects I'm contact for). Can also create tasks and assign users to project and tasks -Permission44=Delete projects (shared project and projects I'm contact for) +Permission41=Read projects and tasks (shared projects and projects of which I am a contact). +Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks +Permission44=Delete projects (shared projects and projects of which I am a contact) Permission45=Export projects Permission61=Skaityti intervencijas Permission62=Sukurti/keisti intervencijas @@ -766,9 +766,10 @@ Permission122=Sukurti/pakeisti trečiąsias šalis, susijusias su vartotoju Permission125=Ištrinti trečiąsias šalis, susijusias su vartotoju Permission126=Eksportuoti trečiąsias šalis Permission130=Create/modify third parties payment information -Permission141=Read all projects and tasks (also private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (also private projects for which I am not a contact) -Permission144=Delete all projects and tasks (also private projects i am not contact for) +Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) +Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) +Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) Permission146=Skaityti teikėjus Permission147=Skaityti statistinius duomenis Permission151=Read direct debit payment orders @@ -883,6 +884,9 @@ Permission564=Record Debits/Rejections of credit transfer Permission601=Read stickers Permission602=Create/modify stickers Permission609=Delete stickers +Permission611=Read attributes of variants +Permission612=Create/Update attributes of variants +Permission613=Delete attributes of variants Permission650=Read Bills of Materials Permission651=Create/Update Bills of Materials Permission652=Delete Bills of Materials @@ -969,6 +973,8 @@ Permission4021=Create/modify your evaluation Permission4022=Validate evaluation Permission4023=Delete evaluation Permission4030=See comparison menu +Permission4031=Read personal information +Permission4032=Write personal information Permission10001=Read website content Permission10002=Create/modify website content (html and javascript content) Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. @@ -1068,6 +1074,7 @@ DictionaryExpenseTaxCat=Expense report - Transportation categories DictionaryExpenseTaxRange=Expense report - Range by transportation category DictionaryTransportMode=Intracomm report - Transport mode DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryAssetDisposalType=Type of disposal of assets TypeOfUnit=Type of unit SetupSaved=Nustatymai išsaugoti SetupNotSaved=Setup not saved @@ -1122,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=Mėnesio pabaigoje -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Nuokrypis AlwaysActive=Visada aktyvus Upgrade=Atnaujinti @@ -1187,7 +1194,7 @@ BankModuleNotActive=Banko sąskaitos modulis neįjungtas ShowBugTrackLink=Show the link "%s" ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' Alerts=Įspėjimai -DelaysOfToleranceBeforeWarning=Delay before displaying a warning alert for: +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time @@ -1339,6 +1346,7 @@ TransKeyWithoutOriginalValue=You forced a new translation for the translation ke TitleNumberOfActivatedModules=Activated modules TotalNumberOfActivatedModules=Activated modules: %s / %s YouMustEnableOneModule=Jūs turite įjungti bent 1 modulį +YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation ClassNotFoundIntoPathWarning=Class %s not found in PHP path YesInSummer=Taip vasarą OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
@@ -1420,6 +1428,8 @@ WatermarkOnDraftInvoices=Vandens ženklas ant sąskaitos-faktūros projekto (neb PaymentsNumberingModule=Payments numbering model SuppliersPayment=Vendor payments SupplierPaymentSetup=Vendor payments setup +InvoiceCheckPosteriorDate=Check facture date before validation +InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. ##### Proposals ##### PropalSetup=Komercinių pasiūlymų modulio nuostatos ProposalsNumberingModules=Komercinių pasiūlymų numeracijos modeliai @@ -1917,6 +1927,7 @@ ConfFileMustContainCustom=Installing or building an external module from applica HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +UseBorderOnTable=Show left-right borders on tables BtnActionColor=Color of the action button TextBtnActionColor=Text color of the action button TextTitleColor=Text color of Page title @@ -1925,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -1938,7 +1949,7 @@ EnterAnyCode=This field contains a reference to identify the line. Enter any val Enter0or1=Enter 0 or 1 UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] ColorFormat=The RGB color is in HEX format, eg: FF0000 -PictoHelp=Icon name in dolibarr format ('image.png' if into the current theme directory, 'image.png@nom_du_module' if into the directory /img/ of a module) +PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) PositionIntoComboList=Position of line into combo lists SellTaxRate=Sales tax rate RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. @@ -2037,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) -GDPRContactDesc=If you store data about European companies/citizens, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here HelpOnTooltip=Help text to show on tooltip HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s @@ -2048,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2057,18 +2069,30 @@ EmailcollectorOperations=Operations to do by collector EmailcollectorOperationsDesc=Operations are executed from top to bottom order MaxEmailCollectPerCollect=Max number of emails collected per collect CollectNow=Collect now -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s ? +ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result +EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation -EmailCollectorConfirmCollect=Do you want to run the collection for this collector now ? +EmailCollectorConfirmCollect=Do you want to run this collector now? +EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. +EmailCollectorExampleToCollectLeads=Example collecting leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. +EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation, with no third party otherwise) +CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) CodeLastResult=Latest result code NbOfEmailsInInbox=Number of emails in source directory LoadThirdPartyFromName=Load third party searching on %s (load only) @@ -2089,7 +2113,7 @@ ResourceSetup=Configuration of Resource module UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). DisabledResourceLinkUser=Disable feature to link a resource to users DisabledResourceLinkContact=Disable feature to link a resource to contacts -EnableResourceUsedInEventCheck=Enable feature to check if a resource is in use in an event +EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda ConfirmUnactivation=Confirm module reset OnMobileOnly=On small screen (smartphone) only DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) @@ -2134,7 +2158,7 @@ DeleteEmailCollector=Delete email collector ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined -RESTRICT_ON_IP=Allow access to some host IP only (wildcard not allowed, use space between values). Empty means every hosts can access. +RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. IPListExample=127.0.0.1 192.168.0.2 [::1] BaseOnSabeDavVersion=Based on the library SabreDAV version NotAPublicIp=Not a public IP @@ -2144,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2206,12 +2233,12 @@ DashboardDisableBlockAdherent=Disable the thumb for memberships DashboardDisableBlockExpenseReport=Disable the thumb for expense reports DashboardDisableBlockHoliday=Disable the thumb for leaves EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax LanguageAndPresentation=Language and presentation SkinAndColors=Skin and colors -IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sale tax -IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sale tax +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax PDF_USE_1A=Generate PDF with PDF/A-1b format MissingTranslationForConfKey = Missing translation for %s NativeModules=Native modules @@ -2220,3 +2247,35 @@ API_DISABLE_COMPRESSION=Disable compression of API responses EachTerminalHasItsOwnCounter=Each terminal use its own counter. FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first PreviousHash=Previous hash +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size +InventorySetup= Inventory Setup +ExportUseLowMemoryMode=Use a low memory mode +ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + +HashForPing=Hash used for ping +ReadOnlyMode=Is instance in "Read Only" mode +DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + +IconAndText=Icon and text +TextOnly=Text only +IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar +IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon +IconOnly=Icon only - Text on tooltip only +INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices +INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/lt_LT/companies.lang b/htdocs/langs/lt_LT/companies.lang index 3740b3c9689..b14fb23d2b3 100644 --- a/htdocs/langs/lt_LT/companies.lang +++ b/htdocs/langs/lt_LT/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Adresas State=Valstybė/Regionas +StateId=State ID StateCode=State/Province code StateShort=Būklė Region=Regionas Region-State=Region - State Country=Šalis CountryCode=Šalies kodas -CountryId=Šalies ID +CountryId=Country ID Phone=Telefonas PhoneShort=Telefonas Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Kiti ProfId6ShortCM=- ProfId1CO=Prof ID 1 (R.U.T.) diff --git a/htdocs/langs/lt_LT/errors.lang b/htdocs/langs/lt_LT/errors.lang index 7155a7694df..cff79292d37 100644 --- a/htdocs/langs/lt_LT/errors.lang +++ b/htdocs/langs/lt_LT/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/lt_LT/externalsite.lang b/htdocs/langs/lt_LT/externalsite.lang deleted file mode 100644 index 863500a456c..00000000000 --- a/htdocs/langs/lt_LT/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Nustatymų nuoroda į išorinę interneto svetainę -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modulis ExternalSite nebuvo tinkamai sukonfigūruotas. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/lt_LT/ftp.lang b/htdocs/langs/lt_LT/ftp.lang deleted file mode 100644 index 9470fed927c..00000000000 --- a/htdocs/langs/lt_LT/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP kliento modulio nustatymai -NewFTPClient=Naujo FTP prisijungimo nustatymai -FTPArea=FTP sritis -FTPAreaDesc=Šis ekranas rodo FTP serverio vaizdo turinį -SetupOfFTPClientModuleNotComplete=FTP kliento modulio nustatymai yra nepilni -FTPFeatureNotSupportedByYourPHP=Jūsų PHP nepalaiko FTP funkcijos -FailedToConnectToFTPServer=Nepavyko prisijungti prie FTP serverio (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Nepavyko prisijungti prie FTP serverio su nustatytu prisijungimo vardu/slaptažodžiu -FTPFailedToRemoveFile=Nepavyko pašalinti failo %s. -FTPFailedToRemoveDir=Nepavyko pašalinti direktorijos %s (patikrinkite leidimus ir, kad katalogas yra tuščias). -FTPPassiveMode=Pasyvus būdas -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/lt_LT/install.lang b/htdocs/langs/lt_LT/install.lang index 4eada4e4109..b5c7b9f69e4 100644 --- a/htdocs/langs/lt_LT/install.lang +++ b/htdocs/langs/lt_LT/install.lang @@ -8,6 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Konfigūracijos failas %s įrašomas. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Šis PHP palaiko kintamuosius POST ir GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Šis PHP palaiko sesijas. @@ -16,13 +17,6 @@ PHPMemoryOK=Jūsų PHP maksimali sesijos atmintis yra nustatyta į %s. To PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. Recheck=Click here for a more detailed test ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. -ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. -ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. -ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. -ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Katalogas %s neegzistuoja. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -30,9 +24,11 @@ ErrorWrongValueForParameter=Galbūt įvedėte neteisingą parametro '%s' reikšm ErrorFailedToCreateDatabase=Nepavyko sukurti duomenų bazės '%s'. ErrorFailedToConnectToDatabase=Nepavyko prisijungti prie duomenų bazės '%s'. ErrorDatabaseVersionTooLow=Duomenų bazės versija (%s) per sena. Reikalinga versija %s arba naujesnė. -ErrorPHPVersionTooLow=PHP versija pernelyg sena. Reikalinga versija %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Duomenų bazė '%s' jau egzistuoja. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Jei duomenų bazė jau yra, eikite atgal ir nuimkite "Sukurti duomenų bazę" opciją. WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/lt_LT/members.lang b/htdocs/langs/lt_LT/members.lang index 1e6d0d3e61c..f1fbdd9ba2b 100644 --- a/htdocs/langs/lt_LT/members.lang +++ b/htdocs/langs/lt_LT/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Nario ID +MemberId=Member Id +MemberRef=Member Ref NewMember=Naujas narys MemberType=Nario tipas MemberTypeId=Nario tipo ID @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/lt_LT/stocks.lang b/htdocs/langs/lt_LT/stocks.lang index 5524ca80de3..a565fd73391 100644 --- a/htdocs/langs/lt_LT/stocks.lang +++ b/htdocs/langs/lt_LT/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Atidaryti iš naujo ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Pradžia InventoryStartedShort=Pradėtas ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/lv_LV/accountancy.lang b/htdocs/langs/lv_LV/accountancy.lang index ab8121e0de5..8903bac917d 100644 --- a/htdocs/langs/lv_LV/accountancy.lang +++ b/htdocs/langs/lv_LV/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Valstis, kas nav EEK valstīs CountriesInEECExceptMe=Valstis EEK, izņemot %s CountriesExceptMe=Visas valstis, izņemot %s AccountantFiles=Eksportēt pirmdokumentus -ExportAccountingSourceDocHelp=Izmantojot šo rīku, varat eksportēt avota notikumus (sarakstu CSV un PDF formātā), kas tiek izmantoti jūsu grāmatvedības uzskaitei. +ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. ExportAccountingSourceDocHelp2=Lai eksportētu žurnālus, izmantojiet izvēlnes ierakstu %s - %s. VueByAccountAccounting=Skatīt pēc grāmatvedības konta VueBySubAccountAccounting=Skatīt pēc grāmatvedības apakškonta @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Atspējot tiešu darījumu reģistrāciju bankas kont ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Iespējot eksporta projektu žurnālā ACCOUNTANCY_COMBO_FOR_AUX=Iespējot kombinēto sarakstu meitas kontam (tas var būt lēns, ja jums ir daudz trešo pušu, pārtraukt iespēju meklēt daļu vērtības) ACCOUNTING_DATE_START_BINDING=Definējiet datumu, lai sāktu iesiešanu un pārskaitīšanu grāmatvedībā. Zem šī datuma darījumi netiks pārnesti uz grāmatvedību. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Pārsūtot grāmatvedību, pēc noklusējuma atlasiet periodu +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Kāds ir grāmatvedības pārskaitījuma periods, kas atlasīts pēc noklusējuma ACCOUNTING_SELL_JOURNAL=Pārdošanas žurnāls ACCOUNTING_PURCHASE_JOURNAL=Pirkuma žurnāls @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Accounting account to register donations ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Grāmatvedības konts, lai reģistrētu abonementus ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Grāmatvedības konts pēc noklusējuma reģistrē klientu depozītu -UseAuxiliaryAccountOnCustomerDeposit=Izmantojiet apakškontus klientu noguldījumu līnijās +UseAuxiliaryAccountOnCustomerDeposit=Saglabājiet klienta kontu kā individuālu kontu meitas virsgrāmatā pirmo iemaksu rindām (ja tas ir atspējots, individuālais konts pirmās iemaksas rindām paliks tukšs) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Nopirkto produktu grāmatvedības konts pēc noklusējuma (tiek izmantots, ja tas nav definēts produktu lapā) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Grāmatvedības konts pēc noklusējuma nopirktajiem produktiem EEK (lietots, ja nav definēts produktu lapā) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Ja jūs izveidojat grāmatvedības kontu uz izdevumu DescVentilDoneExpenseReport=Konsultējieties šeit ar izdevumu pārskatu rindu sarakstu un to maksu grāmatvedības kontu Closure=Gada slēgšana -DescClosure=Šeit skatiet to kustību skaitu pa mēnešiem, kas vēl nav apstiprinātas un bloķētas +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Pārskats par kustībām, kas nav apstiprinātas un bloķētas AllMovementsWereRecordedAsValidated=Visas kustības tika reģistrētas kā apstiprinātas un bloķētas NotAllMovementsCouldBeRecordedAsValidated=Ne visas kustības varēja reģistrēt kā apstiprinātas un bloķētas @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Atspējojiet grāmatvedībā iesie ## Export NotifiedExportDate=Atzīmējiet eksportētās rindas kā Eksportētas (lai mainītu rindu, jums būs jāizdzēš viss darījums un atkārtoti jāpārsūta uz grāmatvedību) -NotifiedValidationDate=Apstipriniet un bloķējiet eksportētos ierakstus (tāds pats efekts kā funkcijai "Aizvērt", rindu modifikācija un dzēšana NOTEIKTI nebūs iespējama) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Datuma apstiprināšana un bloķēšana ConfirmExportFile=Apstiprinājums par grāmatvedības eksporta faila ģenerēšanu? ExportDraftJournal=Eksporta žurnāla projekts @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Diem AccountancyErrorMismatchLetterCode=Saskaņošanas koda neatbilstība AccountancyErrorMismatchBalanceAmount=Atlikums (%s) nav vienāds ar 0 AccountancyErrorLetteringBookkeeping=Ir radušās kļūdas saistībā ar darījumiem: %s +ErrorAccountNumberAlreadyExists=Grāmatvedības numurs %s jau pastāv ## Import ImportAccountingEntries=Grāmatvedības ieraksti diff --git a/htdocs/langs/lv_LV/admin.lang b/htdocs/langs/lv_LV/admin.lang index e2abc15a6bc..911d8a152a8 100644 --- a/htdocs/langs/lv_LV/admin.lang +++ b/htdocs/langs/lv_LV/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Tālāk vērtība (nomaiņa) MustBeLowerThanPHPLimit=Piezīme: jūsu PHP konfigurācija šobrīd ierobežo maksimālo augšupielādējamā faila lielumu līdz %s %s, neatkarīgi no šī parametra vērtības NoMaxSizeByPHPLimit=Piezīme: Nav limits tiek noteikts jūsu PHP konfigurācijā MaxSizeForUploadedFiles=Maksimālais augšupielādējamo failu izmērs (0 nepieļaut failu augšupielādi) -UseCaptchaCode=Izmantot grafisko kodu (CAPTCHA) pieteikšanās lapā +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Pilns ceļš antivīrusa komandai AntiVirusCommandExample=ClamAv Daemon piemērs (nepieciešams clamav-daemon): / usr / bin / clamdscan
ClamWin piemērs (ļoti ļoti lēns): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Papildus komandrindas parametri @@ -504,7 +504,7 @@ WarningPHPMailC=- Arī sava e-pasta pakalpojumu sniedzēja SMTP servera izmanto WarningPHPMailD=Tāpēc arī ieteicams mainīt e-pasta sūtīšanas metodi uz vērtību "SMTP". Ja jūs patiešām vēlaties saglabāt noklusējuma PHP metodi e -pasta ziņojumu sūtīšanai, vienkārši ignorējiet šo brīdinājumu vai noņemiet to, iestatot iestatījumu MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP uz 1 - Sākums - Iestatīšana - Citi. WarningPHPMail2=Ja jūsu e-pasta SMTP pakalpojumu sniedzējs ierobežo e-pasta klientus uz dažām IP adresēm (ļoti reti), tad jūsu ERP CRM lietojumprogrammas e-pasta lietotāja aģenta (MUA) IP adrese ir: %s. WarningPHPMailSPF=Ja domēna vārds jūsu sūtītāja e-pasta adresē ir aizsargāts ar SPF ierakstu (jautājiet savam domēna vārda reģistratoram), sava domēna DNS SPF ierakstā ir jāpievieno šādi IP: %s . -ActualMailSPFRecordFound=Faktiskais SPF ieraksts atrasts: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Noklikšķiniet, lai parādītu aprakstu DependsOn=Šim modulim nepieciešams modulis(-i) RequiredBy=Šis modulis nepieciešams modulim (-ļiem) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Konfigurācijas konstantes vērtība ConstantIsOn=Iespējota opcija %s NbOfDays=Dienu skaits AtEndOfMonth=mēneša beigās -CurrentNext=Pašreizējais / nākamais +CurrentNext=A given day in month Offset=Kompensācija AlwaysActive=Vienmēr aktīvs Upgrade=Atjaunināt @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Nospiediet CTRL + F5 uz tastatūras vai dzēsiet pārl NotSupportedByAllThemes=Darbosies ar galvenajām tēmām, to nevar atbalstīt ārējās tēmas BackgroundColor=Fona krāsa TopMenuBackgroundColor=Fona krāsa augšējai izvēlnei -TopMenuDisableImages=Slēpt attēlus augšējā izvēlnē +TopMenuDisableImages=Ikona vai teksts augšējā izvēlnē LeftMenuBackgroundColor=Fona krāsa kreisajai izvēlnei BackgroundTableTitleColor=Fona krāsa tabulas virsraksta līnijai BackgroundTableTitleTextColor=Teksta krāsa tabulas virsraksta rindai @@ -1949,7 +1949,7 @@ EnterAnyCode=Šajā laukā ir norāde, lai identificētu līniju. Ievadiet jebku Enter0or1=Ievadiet 0 vai 1 UnicodeCurrency=Ievadiet šeit starp aplikācijām, baitu skaitļu sarakstu, kas attēlo valūtas simbolu. Piemēram: attiecībā uz $ ievadiet [36] - Brazīlijas reālajam R $ [82,36] - par € ievadiet [8364] ColorFormat=RGB krāsa ir HEX formātā, piemēram: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Ikonas nosaukums formātā:
- image.png attēla failam pašreizējā motīva direktorijā
- image.png@module, ja fails ir moduļa direktorijā /img/
— fonwtawesome_xxx_fa_color_size FontAwesome fa-xxx attēlam (ar prefiksu, krāsu un izmēru komplektu) PositionIntoComboList=Līnijas novietojums kombinētajos sarakstos SellTaxRate=Pārdošanas nodokļa likme RecuperableOnly=Jā par PVN "Neuztverams, bet atgūstams", kas paredzēts dažai Francijas valstij. Uzturiet vērtību "Nē" visos citos gadījumos. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex filtrs tīrajai vērtībai (COMPANY_AQUARIUM_ COMPANY_DIGITARIA_CLEAN_REGEX=Regex filtrs, lai notīrītu vērtību (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Dublikāts nav atļauts GDPRContact=Datu aizsardzības inspektors (DPO, datu konfidencialitāte vai GDPR kontakts) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Ja glabājat personas datus savā Informācijas sistēmā, šeit varat nosaukt kontaktpersonu, kas ir atbildīga par Vispārīgo datu aizsardzības regulu HelpOnTooltip=Palīdzības teksts tiek parādīts rīka padomā HelpOnTooltipDesc=Ievietojiet tekstu vai tulkošanas atslēgu šeit, lai teksts tiktu rādīts rīkā, kad šis lauks parādās formā YouCanDeleteFileOnServerWith=Šo failu var dzēst serverī ar komandrindu:
%s @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Piezīme. Izvēlnē %s - %s izvēlētā pārdošanas nodokļa vai SwapSenderAndRecipientOnPDF=Pārsūtīt sūtītāja un adresāta adreses pozīciju PDF dokumentos FeatureSupportedOnTextFieldsOnly=Brīdinājums, funkcija tiek atbalstīta tikai teksta laukos un kombinētajos sarakstos. Lai aktivizētu šo funkciju, ir jāiestata arī URL parametrs action = create vai action = edit. VAI lapas nosaukumam jābeidzas ar “new.php”. EmailCollector=E-pasta savācējs +EmailCollectors=E-pasta kolekcionāri EmailCollectorDescription=Pievienojiet ieplānoto darbu un iestatīšanas lapu, lai regulāri skenētu e-pasta kastes (izmantojot IMAP protokolu) un ierakstītu savā pieteikumā saņemtos e-pasta ziņojumus pareizajā vietā un / vai automātiski izveidotu ierakstus (piemēram, vadus). NewEmailCollector=Jauns e-pasta savācējs EMailHost=E-pasta IMAP serveris @@ -2073,14 +2074,14 @@ DateLastCollectResult=Pēdējā savākšanas mēģinājuma datums DateLastcollectResultOk=Pēdējo savākšanas panākumu datums LastResult=Jaunākais rezultāts EmailCollectorHideMailHeaders=Neiekļaujiet e-pasta galvenes saturu apkopoto e-pastu saglabātajā saturā -EmailCollectorHideMailHeadersHelp=Ja tas ir iespējots, e-pasta galvenes netiek pievienotas e-pasta satura beigās, kas tiek saglabāts kā notikumi. +EmailCollectorHideMailHeadersHelp=Ja tas ir iespējots, e-pasta galvenes netiek pievienotas e-pasta satura beigās, kas tiek saglabāts kā dienas kārtības notikums. EmailCollectorConfirmCollectTitle=E-pasts apkopo apstiprinājumu EmailCollectorConfirmCollect=Vai vēlaties vadīt šo kolekcionāru tagad? EmailCollectorExampleToCollectTicketRequestsDesc=Apkopojiet e-pasta ziņojumus, kas atbilst dažiem noteikumiem, un automātiski izveidojiet biļeti (jābūt iespējotai moduļa biļetei) ar e-pasta informāciju. Varat izmantot šo savācēju, ja sniedzat atbalstu pa e-pastu, tāpēc jūsu biļešu pieprasījums tiks automātiski ģenerēts. Aktivizējiet arī Collect_Responses, lai savāktu klienta atbildes tieši biļešu skatā (jums ir jāatbild no Dolibarr). EmailCollectorExampleToCollectTicketRequests=Biļešu pieprasījuma apkopošanas piemērs (tikai pirmā ziņa) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Skenējiet pastkastes direktoriju "Nosūtītie", lai atrastu e-pasta ziņojumus, kas tika nosūtīti kā atbilde uz citu e-pasta ziņojumu tieši no jūsu e-pasta programmatūras, nevis no Dolibarr. Ja šāds e-pasts tiek atrasts, atbildes notikums tiek ierakstīts Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Piemērs e-pasta atbilžu apkopošanai, kas nosūtītas no ārējas e-pasta programmatūras -EmailCollectorExampleToCollectDolibarrAnswersDesc=Apkopojiet visus e-pasta ziņojumus, kas ir atbilde uz e-pasta ziņojumu, kas nosūtīts no jūsu pieteikuma. Notikums (jābūt iespējotam moduļa darba kārtībai) ar e-pasta atbildi tiks ierakstīts pareizajā vietā. Piemēram, ja no lietojumprogrammas pa e-pastu nosūtāt komerciālu piedāvājumu, pasūtījumu, rēķinu vai ziņojumu par biļeti un klients atbild uz jūsu e-pastu, sistēma automātiski uztvers atbildi un pievienos to jūsu ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Apkopojiet visus e-pasta ziņojumus, kas ir atbilde uz e-pasta ziņojumu, kas nosūtīts no jūsu pieteikuma. Notikums (jābūt iespējotam moduļa darba kārtībai) ar e-pasta atbildi tiks ierakstīts pareizajā vietā. Piemēram, ja no lietojumprogrammas e-pastā nosūtāt komerciālu piedāvājumu, pasūtījumu, rēķinu vai biļetes ziņojumu un saņēmējs atbild uz jūsu e-pastu, sistēma automātiski uztvers atbildi un pievienos to jūsu ERP. EmailCollectorExampleToCollectDolibarrAnswers=Piemērs, kurā apkopoti visi ienākošie ziņojumi, kas ir atbildes uz ziņojumiem, kas nosūtīti no Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Apkopojiet e-pasta ziņojumus, kas atbilst dažiem noteikumiem, un automātiski izveidojiet potenciālo pirkumu (jābūt iespējotam moduļa projektam) ar e-pasta informāciju. Varat izmantot šo savācēju, ja vēlaties sekot savai vadībai, izmantojot moduli Projekts (1 potenciālais pirkums = 1 projekts), tāpēc jūsu potenciālie pirkumi tiks ģenerēti automātiski. Ja ir iespējots arī savācējs Collect_Responses, sūtot e-pastu no saviem potenciālajiem pirkumiem, priekšlikumiem vai jebkura cita objekta, jūs varat redzēt arī savu klientu vai partneru atbildes tieši lietojumprogrammā.
Piezīme. Šajā sākotnējā piemērā tiek ģenerēts potenciālā pirkuma nosaukums, ieskaitot e-pastu. Ja trešo pusi nevar atrast datu bāzē (jauns klients), potenciālais pirkums tiks pievienots trešajai pusei ar ID 1. EmailCollectorExampleToCollectLeads=Potenciālo pirkumu apkopošanas piemērs @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Savāciet e-pasta ziņojumus, EmailCollectorExampleToCollectJobCandidatures=Piemērs e-pastā saņemto darba kandidatūru apkopošanai NoNewEmailToProcess=Nav apstrādāts jauns e-pasts (atbilstošie filtri) NothingProcessed=Nekas nav paveikts -XEmailsDoneYActionsDone=%s kvalificēti e-pasta ziņojumi, %s veiksmīgi apstrādāti e-pasta ziņojumi (par %s ierakstu / veiktajām darbībām) +XEmailsDoneYActionsDone=%s e-pasta ziņojumi ir iepriekš kvalificēti, %s e-pasta ziņojumi ir veiksmīgi apstrādāti (par %s ierakstu/darbības veiktas) RecordEvent=Ierakstiet notikumu dienas kārtībā (ar veidu E-pasts nosūtīts vai saņemts) CreateLeadAndThirdParty=Izveidojiet potenciālo pirkumu (un, ja nepieciešams, trešo pusi) CreateTicketAndThirdParty=Izveidojiet biļeti (saistītu ar trešo pusi, ja trešā puse tika ielādēta ar iepriekšējo darbību vai tika uzminēta no izsekotāja e-pasta galvenē, bez trešās puses citādi) @@ -2105,14 +2106,14 @@ CreateCandidature=Izveidot darba pieteikumu FormatZip=Pasta indekss MainMenuCode=Izvēlnes ievades kods (mainmenu) ECMAutoTree=Rādīt automātisko ECM koku -OperationParamDesc=Definējiet noteikumus, kas jāizmanto, lai iegūtu vai iestatītu vērtības.
Piemērs darbībām, kurām nepieciešams izvilkt nosaukumu no e-pasta tēmas:
name=EXTRACT:SUBJECT:Ziņojums no uzņēmuma ([^\n] *)
Piemērs darbībām, kas rada objekti:
objproperty1 = SET: vērtība, kas noteikta
objproperty2 = SET: vērtība, ieskaitot vērtības __objproperty1__
objproperty3 = SETIFEMPTY: vērtība, ko izmanto, ja objproperty3 jau nav definēts
objproperty4 = ekstrakts: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:s(uzņēmums [^\\s]*)

Izmantojiet ; char kā atdalītājs, lai iegūtu vai iestatītu vairākas īpašības. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Darba laiks OpeningHoursDesc=Ievadiet šeit sava uzņēmuma pastāvīgo darba laiku. ResourceSetup=Resursu moduļa konfigurēšana UseSearchToSelectResource=Izmantojiet meklēšanas formu, lai izvēlētos resursu (nevis nolaižamo sarakstu). DisabledResourceLinkUser=Atspējot funkciju, lai resursus saistītu ar lietotājiem DisabledResourceLinkContact=Atspējot funkciju, lai resursu saistītu ar kontaktpersonām -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Aizliegt izmantot vienu un to pašu resursu vienlaikus darba kārtībā ConfirmUnactivation=Apstipriniet moduļa atiestatīšanu OnMobileOnly=Tikai mazam ekrānam (viedtālrunim) DisableProspectCustomerType=Atspējojiet trešās puses veidu “Persona + klients” (tātad trešajai pusei ir jābūt “Persona” vai “Klients”, taču tā nevar būt abas) @@ -2167,6 +2168,9 @@ EmailTemplate=E-pasta veidne EMailsWillHaveMessageID=E-pastam būs tags “Atsauces”, kas atbilst šai sintaksei PDF_SHOW_PROJECT=Parādīt projektu dokumentā ShowProjectLabel=Projekta etiķete +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Iekļaujiet aizstājvārdu trešās puses nosaukumā +THIRDPARTY_ALIAS=Trešās puses nosaukums — trešās puses aizstājvārds +ALIAS_THIRDPARTY=Trešās puses aizstājvārds — trešās puses nosaukums PDF_USE_ALSO_LANGUAGE_CODE=Ja vēlaties, lai daži PDF faili tiktu dublēti 2 dažādās valodās tajā pašā ģenerētajā PDF failā, jums šeit ir jāiestata šī otrā valoda, lai ģenerētais PDF saturētu vienā un tajā pašā lappusē 2 dažādas valodas, vienu izvēloties, ģenerējot PDF, un šo ( tikai dažas PDF veidnes to atbalsta). Vienā PDF formātā atstājiet tukšumu 1 valodā. PDF_USE_A=Ģenerējiet PDF dokumentus PDF/A formātā, nevis noklusējuma formātā PDF FafaIconSocialNetworksDesc=Šeit ievadiet FontAwesome ikonas kodu. Ja jūs nezināt, kas ir FontAwesome, varat izmantot vispārīgo vērtību fa-adrešu grāmata. @@ -2248,18 +2252,30 @@ TemplateforBusinessCards=Veidne vizītkartei dažādos izmēros InventorySetup= Inventāra iestatīšana ExportUseLowMemoryMode=Izmantojiet mazas atmiņas režīmu ExportUseLowMemoryModeHelp=Izmantojiet mazas atmiņas režīmu, lai izpildītu izgāztuves izpildi (saspiešana tiek veikta caur cauruli, nevis PHP atmiņā). Šī metode neļauj pārbaudīt, vai fails ir pabeigts, un kļūdas ziņojumu nevar ziņot, ja tas neizdodas. -ShowQuickAddLink=Parādiet pogu, lai augšējā labajā izvēlnē ātri pievienotu elementu + +ModuleWebhookName = Web aizķere +ModuleWebhookDesc = Interfeiss, lai uztvertu dolibarr aktivizētājus un nosūtītu to uz URL +WebhookSetup = Tīmekļa aizķeres iestatīšana +Settings = Iestatījumi +WebhookSetupPage = Web aizķeres iestatīšanas lapa +ShowQuickAddLink=Rādīt pogu, lai ātri pievienotu elementu augšējā labajā izvēlnē + HashForPing=Hash izmantots ping ReadOnlyMode=Instancē ir tikai lasīšanas režīms DEBUGBAR_USE_LOG_FILE=Izmantojiet failu dolibarr.log , lai notvertu žurnālus UsingLogFileShowAllRecordOfSubrequestButIsSlower=Izmantojiet failu dolibarr.log, lai slazdītu žurnālus, nevis reāllaika atmiņu. Tas ļauj noķert visus žurnālus, nevis tikai pašreizējā procesa žurnālu (tātad, ieskaitot ajax apakšpieprasījumu lapas), taču tas padarīs jūsu gadījumu ļoti lēnu. Nav ieteicams. FixedOrPercent=Fiksēts (izmantojiet atslēgvārdu "labots") vai procenti (izmantojiet atslēgvārdu "procenti") -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +DefaultOpportunityStatus=Noklusējuma iespējas statuss (pirmais statuss, kad tiek izveidots potenciālais pirkums) + +IconAndText=Ikona un teksts +TextOnly=Tikai teksts +IconOnlyAllTextsOnHover=Tikai ikona — visi teksti tiek rādīti zem ikonas peles kursora izvēlņu joslā +IconOnlyTextOnHover=Tikai ikona — ikonas teksts tiek parādīts zem ikonas, novietojot peles kursoru uz ikonas +IconOnly=Tikai ikona — teksts tikai rīka padomos +INVOICE_ADD_ZATCA_QR_CODE=Rādīt ZATCA QR kodu rēķinos +INVOICE_ADD_ZATCA_QR_CODEMore=Dažām arābu valstīm šis QR kods ir nepieciešams savos rēķinos +INVOICE_ADD_SWISS_QR_CODE=Rādīt Šveices QR-rēķina kodu uz rēķiniem +UrlSocialNetworksDesc=Sociālā tīkla URL saite. Mainīgajai daļai, kas satur sociālā tīkla ID, izmantojiet {socialid}. +IfThisCategoryIsChildOfAnother=Ja šī kategorija ir citas kategorijas bērns +NoName=Nav vārda +CIDLookupURL=Modulis nodrošina URL, ko var izmantot ārējs rīks, lai iegūtu trešās puses vai kontaktpersonas vārdu no tā tālruņa numura. Izmantojamais URL ir: diff --git a/htdocs/langs/lv_LV/banks.lang b/htdocs/langs/lv_LV/banks.lang index 6c1c66f86d1..29553d7e47e 100644 --- a/htdocs/langs/lv_LV/banks.lang +++ b/htdocs/langs/lv_LV/banks.lang @@ -172,8 +172,8 @@ SEPAMandate=SEPA mandāts YourSEPAMandate=Jūsu SEPA mandāts FindYourSEPAMandate=Tas ir jūsu SEPA mandāts, lai pilnvarotu mūsu uzņēmumu veikt tiešā debeta pasūtījumu savai bankai. Atgriezt to parakstu (skenēt parakstīto dokumentu) vai nosūtīt pa pastu uz AutoReportLastAccountStatement=Veicot saskaņošanu, automātiski aizpildiet lauka “bankas izraksta numurs” ar pēdējo izraksta numuru -CashControl=POS cash control -NewCashFence=New cash control (opening or closing) +CashControl=POS skaidras naudas kontrole +NewCashFence=Jauna skaidras naudas kontrole (atvēršana vai aizvēršana) BankColorizeMovement=Krāsojiet kustības BankColorizeMovementDesc=Ja šī funkcija ir iespējota, jūs varat izvēlēties īpašu fona krāsu debeta vai kredīta pārvietošanai BankColorizeMovementName1=Debeta kustības fona krāsa diff --git a/htdocs/langs/lv_LV/boxes.lang b/htdocs/langs/lv_LV/boxes.lang index 2615d12ce7b..ea6e1fe36aa 100644 --- a/htdocs/langs/lv_LV/boxes.lang +++ b/htdocs/langs/lv_LV/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Jaunākie dalībnieku abonementi BoxFicheInter=Jaunākās intervences BoxCurrentAccounts=Atvērto kontu atlikums BoxTitleMemberNextBirthdays=Šī mēneša dzimšanas dienas (dalībnieki) -BoxTitleMembersByType=Locekļi pēc veida +BoxTitleMembersByType=Dalībnieki pēc veida un statusa BoxTitleMembersSubscriptionsByYear=Dalībnieku abonēšana pēc gada BoxTitleLastRssInfos=Jaunākās %s ziņas no %s BoxTitleLastProducts=Produkti / Pakalpojumi: pēdējais %s modificēts diff --git a/htdocs/langs/lv_LV/cashdesk.lang b/htdocs/langs/lv_LV/cashdesk.lang index c278e21496a..281188962f6 100644 --- a/htdocs/langs/lv_LV/cashdesk.lang +++ b/htdocs/langs/lv_LV/cashdesk.lang @@ -50,8 +50,8 @@ Footer=Kājene AmountAtEndOfPeriod=Summa perioda beigās (diena, mēnesis vai gads) TheoricalAmount=Teorētiskā summa RealAmount=Reālā summa -CashFence=Cash box closing -CashFenceDone=Cash box closing done for the period +CashFence=Kases aizvēršana +CashFenceDone=Par periodu veikta kases slēgšana NbOfInvoices=Rēķinu skaits Paymentnumpad=Padeves veids maksājuma ievadīšanai Numberspad=Numbers Pad @@ -102,8 +102,8 @@ CashDeskGenericMaskCodes6 =  
{TN} tagu izmanto, lai pievienotu te TakeposGroupSameProduct=Grupējiet tās pašas produktu līnijas StartAParallelSale=Sāciet jaunu paralēlu izpārdošanu SaleStartedAt=Pārdošana sākās vietnē %s -ControlCashOpening=Open the "Control cash box" popup when opening the POS -CloseCashFence=Close cash box control +ControlCashOpening=Atverot POS, atveriet uznirstošo logu "Control cash box". +CloseCashFence=Aizveriet naudas kastes kontroli CashReport=Skaidras naudas pārskats MainPrinterToUse=Galvenais izmantojamais printeris OrderPrinterToUse=Pasūtiet printeri izmantošanai @@ -136,3 +136,4 @@ PrintWithoutDetails=Drukāt bez detaļām YearNotDefined=Gads nav noteikts TakeposBarcodeRuleToInsertProduct=Svītrkoda noteikums produkta ievietošanai TakeposBarcodeRuleToInsertProductDesc=Noteikums produkta atsauces + daudzuma izņemšanai no skenēta svītrkoda.
Ja tas ir tukšs (noklusējuma vērtība), lietojumprogramma izmantos pilnu skenēto svītrkodu, lai atrastu produktu.

Ja noteikts, sintakse ir:
ref: NB + qu: NB + QD: NB uc: NB
kur NB ir rakstzīmju skaits izmantot, lai iegūtu datus no skenētā svītrkodu ar:
  • ref : produkts atsauce
  • qu : daudzumu kopumu, ievietojot objektu (vienības)
  • QD : daudzumu kopumu, ievietojot objektu (decimāldaļskaitlis)
  • otra : citi simboli
+AlreadyPrinted=Jau izdrukāts diff --git a/htdocs/langs/lv_LV/categories.lang b/htdocs/langs/lv_LV/categories.lang index 8190b86f2e7..2da314699a5 100644 --- a/htdocs/langs/lv_LV/categories.lang +++ b/htdocs/langs/lv_LV/categories.lang @@ -95,6 +95,7 @@ ShowCategory=Show tag/category ByDefaultInList=By default in list ChooseCategory=Izvēlies sadaļu StocksCategoriesArea=Noliktavas kategorijas +TicketsCategoriesArea=Biļešu kategorijas ActionCommCategoriesArea=Pasākumu kategorijas WebsitePagesCategoriesArea=Lapu konteineru kategorijas KnowledgemanagementsCategoriesArea=KM raksts Kategorijas diff --git a/htdocs/langs/lv_LV/companies.lang b/htdocs/langs/lv_LV/companies.lang index dd2f5268f35..c151320b07d 100644 --- a/htdocs/langs/lv_LV/companies.lang +++ b/htdocs/langs/lv_LV/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Trešo personu būtība NatureOfContact=Kontakta raksturs Address=Adrese State=Valsts / province +StateId=Valsts ID StateCode=Valsts/provinces kods StateShort=Valsts Region=Rajons Region-State=Reģions - valsts Country=Valsts CountryCode=Valsts kods -CountryId=Valsts id +CountryId=Valsts ID Phone=Telefons PhoneShort=Telefons Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=Pārdevēja kods nav derīgs CustomerCodeModel=Klienta koda modelis SupplierCodeModel=Pārdevēja koda modelis Gencod=Svītrkods -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Svītrkods cenas ref ##### Professional ID ##### ProfId1Short=Prof. id 1 ProfId2Short=Prof. id 2 @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Tirdzniecības reģistrs) ProfId2CM=Id. prof. 2 (nodokļu maksātāja Nr.) -ProfId3CM=Id. prof. 3 (dibināšanas dekrēts) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=Id. prof. 3 (Izveides dekrēta Nr.) +ProfId4CM=Id. prof. 4 (Depozīta sertifikāta Nr.) +ProfId5CM=Id. prof. 5 (citi) ProfId6CM=- ProfId1ShortCM=Tirdzniecības reģistrs ProfId2ShortCM=Nodokļu maksātājs Nr. -ProfId3ShortCM=Radīšanas dekrēts -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=izveides dekrēta Nr +ProfId4ShortCM=Depozīta sertifikāts Nr. ProfId5ShortCM=Citi ProfId6ShortCM=- ProfId1CO=Prof ID 1 (RUT) diff --git a/htdocs/langs/lv_LV/compta.lang b/htdocs/langs/lv_LV/compta.lang index 338d6aff053..6cb9919eb81 100644 --- a/htdocs/langs/lv_LV/compta.lang +++ b/htdocs/langs/lv_LV/compta.lang @@ -300,3 +300,4 @@ InvoiceToPay15Days=Lai samaksātu (15 līdz 30 dienas) InvoiceToPay30Days=Lai samaksātu (> 30 dienas) ConfirmPreselectAccount=Iepriekš atlasiet grāmatvedības kodu ConfirmPreselectAccountQuestion=Vai tiešām vēlaties iepriekš atlasīt %s atlasītās rindas ar šo grāmatvedības kodu? +AmountPaidMustMatchAmountOfDownPayment=Samaksātajai summai ir jāatbilst pirmās iemaksas summai diff --git a/htdocs/langs/lv_LV/errors.lang b/htdocs/langs/lv_LV/errors.lang index 44aec08f2da..7a0e8cc365b 100644 --- a/htdocs/langs/lv_LV/errors.lang +++ b/htdocs/langs/lv_LV/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript nedrīkst tikt izslēgti, ka šī funkci ErrorPasswordsMustMatch=Abām ievadītām parolēm jāsakrīt ErrorContactEMail=Radās tehniska kļūda. Lūdzu, sazinieties ar administratoru uz šādu e-pastu %s un savā ziņojumā uzrakstiet kļūdas kodu %s vai pievienojiet šīs lapas ekrāna kopiju. ErrorWrongValueForField=Lauks %s : “ %s ” neatbilst regex noteikumam %s +ErrorHtmlInjectionForField=Lauks %s : Vērtība ' %s a09a4b739f17f satur mazlicious data'nav atļauts ErrorFieldValueNotIn=Lauks %s : “ %s ” nav vērtība, kas norādīta laukā %s no %s ErrorFieldRefNotIn=Lauks %s : “ %s ” nav esošais ref. %s ErrorsOnXLines=atrastas %s kļūdas @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Vispirms jums ir jāiestata konta plān ErrorFailedToFindEmailTemplate=Neizdevās atrast veidni ar koda nosaukumu %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Ilgums pakalpojumā nav noteikts. Nav iespējams aprēķināt stundas cenu. ErrorActionCommPropertyUserowneridNotDefined=Nepieciešams lietotāja īpašnieks -ErrorActionCommBadType=Atlasītais notikuma veids (id: %n, kods: %s) nepastāv notikuma veida vārdnīcā +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Versijas pārbaude neizdevās ErrorWrongFileName=Faila nosaukumā nedrīkst būt __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Nav Maksājumu nosacījumu vārdnīcā, lūdzu, modificējiet. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Kļūda, visas summas jāievada vienā kolonnā ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Jūs mēģināt apmaksāt rēķinus valūtā %s no konta ar valūtu %s ErrorInvoiceLoadThirdParty=Nevar ielādēt trešās puses objektu rēķinam "%s" ErrorInvoiceLoadThirdPartyKey=Trešās puses atslēga "%s" nav iestatīta rēķinam "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Dzēst rindu nav atļauts faktiskais objekta statuss -ErrorAjaxRequestFailed=Request failed +ErrorDeleteLineNotAllowedByObjectStatus=Pašreizējais objekta statuss neļauj dzēst rindu +ErrorAjaxRequestFailed=Pieprasījums neizdevās +ErrorThirpdartyOrMemberidIsMandatory=Trešās puses vai partnerības dalībnieka dalība ir obligāta +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Jūsu PHP parametrs upload_max_filesize (%s) ir augstāks nekā PHP parametrs post_max_size (%s). Šī nav konsekventa iestatīšana. WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. -WarningMandatorySetupNotComplete=Noklikšķiniet šeit, lai iestatītu obligātos parametrus +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Noklikšķiniet šeit, lai iespējotu moduļus un lietojumprogrammas WarningSafeModeOnCheckExecDir=Uzmanību, PHP iespēja safe_mode ir par tik komanda jāuzglabā iekšpusē direktorijā deklarēto php parametru safe_mode_exec_dir. WarningBookmarkAlreadyExists=Ar šo nosaukumu, vai šī mērķa grāmatzīmes (URL) jau pastāv. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Brīdinājums: jūs nevarat izveidot tieši apakškontu WarningAvailableOnlyForHTTPSServers=Pieejams tikai tad, ja tiek izmantots HTTPS drošais savienojums. WarningModuleXDisabledSoYouMayMissEventHere=Modulis %s nav iespējots. Tāpēc jūs varat izlaist daudz notikumu šeit. WarningPaypalPaymentNotCompatibleWithStrict=Vērtība “Stingrs” neļauj tiešsaistes maksājumu funkcijām darboties pareizi. Tā vietā izmantojiet “Lax”. +WarningThemeForcedTo=Brīdinājums! Motīvs ir spiests uz %s , izmantojot slēpto konstanti MAIN_FORCETHEME -<<<<<<< GALVA -======= -<<<<<<< GALVA -<<<<<<< GALVA ->>>>>>> git@github.com:Dolibarr/dolibarr.git filiāle “15.0” # Validate RequireValidValue = Vērtība nav derīga RequireAtLeastXString = Nepieciešama vismaz %s rakstzīme (s) @@ -347,12 +347,3 @@ BadSetupOfField = Kļūda, nepareizi iestatot lauku BadSetupOfFieldClassNotFoundForValidation = Kļūda, nepareizi iestatot lauku: klase nav atrasta validācijai BadSetupOfFieldFileNotFound = Kļūda, nepareizi iestatot lauku: fails netika atrasts iekļaušanai BadSetupOfFieldFetchNotCallable = Kļūda, nepareizi iestatot lauku: izgūšana nav izsaucama klasē -<<<<<<< GALVA -======= -======= -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.git filiāle “15.0” ->>>>>>> git@github.com:Dolibarr/dolibarr.git filiāle “15.0” -======= ->>>>>>> git@github.com:Dolibarr/dolibarr.git filiāle “15.0” ->>>>>>> git@github.com:Dolibarr/dolibarr.git filiāle “15.0” diff --git a/htdocs/langs/lv_LV/exports.lang b/htdocs/langs/lv_LV/exports.lang index 0ecbf77fc2c..3268fd7cf15 100644 --- a/htdocs/langs/lv_LV/exports.lang +++ b/htdocs/langs/lv_LV/exports.lang @@ -18,6 +18,7 @@ ExportableFields=Eksportējami lauki ExportedFields=Eksportēti lauki ImportModelName=Importēšanas profila nosaukums ImportModelSaved=Importa profils tiek saglabāts kā %s. +ImportProfile=Importēt profilu DatasetToExport=Datu kopas eksports DatasetToImport=Importēt failu datu kopā ChooseFieldsOrdersAndTitle=Izvēlieties lauku secību ... @@ -53,8 +54,9 @@ TypeOfLineServiceOrProduct=Veids (0=produkts, 1=pakalpojums) FileWithDataToImport=Fails ar datiem, lai importētu FileToImport=Avota fails, kas jāimportē FileMustHaveOneOfFollowingFormat=Importa failam ir jābūt šādam formātam -DownloadEmptyExample=Download a template file with examples and information on fields you can import -StarAreMandatory=Into the template file, all fields with a * are mandatory fields +DownloadEmptyExampleShort=Lejupielādējiet faila paraugu +DownloadEmptyExample=Lejupielādējiet veidnes failu ar piemēriem un informāciju par laukiem, kurus varat importēt +StarAreMandatory=Veidnes failā visi lauki ar * ir obligāti aizpildāmie lauki ChooseFormatOfFileToImport=Izvēlieties faila formātu, ko izmantot kā importa faila formātu, noklikšķinot uz %s ikonas, lai to atlasītu ... ChooseFileToImport=Augšupielādējiet failu, pēc tam noklikšķiniet uz %s ikonas, lai atlasītu failu kā avota importa failu ... SourceFileFormat=Avota faila formāts @@ -82,7 +84,7 @@ SelectFormat=Izvēlieties šo importa failu formātu RunImportFile=Importēt datus NowClickToRunTheImport=Pārbaudiet importa simulācijas rezultātus. Labojiet kļūdas un atkārtojiet testu.
Kad simulācijā nav kļūdu, jūs varat turpināt importēt datus datu bāzē. DataLoadedWithId=Importētajiem datiem katrā datu bāzes tabulā būs papildu lauks ar šo ievešanas ID: %s , lai ļautu tai atrast meklēšanu, ja tiek izmeklēta ar šo importu saistīta problēma. -ErrorMissingMandatoryValue=Obligātie dati avota failā ir tukši laukā %s . +ErrorMissingMandatoryValue=Obligātie dati ir tukši avota failā kolonnā %s . TooMuchErrors=Vēl ir %s citas avota līnijas ar kļūdām, taču izlaide ir ierobežota. TooMuchWarnings=Vēl ir %s citas avota līnijas ar brīdinājumiem, bet izlaide ir ierobežota. EmptyLine=Tukšas līnijas (tiks izmestas) @@ -92,9 +94,9 @@ YouCanUseImportIdToFindRecord=Visus importētos ierakstus varat atrast savā dat NbOfLinesOK=Skaits līniju bez kļūdām un bez brīdinājumiem: %s. NbOfLinesImported=Skaits līniju veiksmīgi importēto: %s. DataComeFromNoWhere=Vērtību, lai ievietotu nāk no nekur avota failā. -DataComeFromFileFieldNb=Vērtību, lai ievietotu nāk no lauka skaits %s, kas avota failā. -DataComeFromIdFoundFromRef=Sākotnējā faila lauka skaitļa %s vērtība tiks izmantota, lai atrastu izmantotā vecā objekta ID (tādēļ objekts %s , kuram ir atsauces no avota faila jābūt datu bāzē). -DataComeFromIdFoundFromCodeId=Avota faila lauka skaitļa kods %s tiks izmantots, lai atrastu izmantojamā vecāka objekta ID (tādēļ vārdnīcas kodam jābūt eksemplāram %s ) Ņemiet vērā, ka, ja jūs zināt id, varat to izmantot arī avota failā, nevis kodu. Importam jādarbojas abos gadījumos. +DataComeFromFileFieldNb=Ievietojamā vērtība nāk no avota faila kolonnas %s . +DataComeFromIdFoundFromRef=Vērtība, kas nāk no avota faila kolonnas %s , tiks izmantota, lai atrastu izmantojamā vecākobjekta ID (tātad objektam a0ecb2ecz07f4 ir7f fails, kas ir7 ref.7 avota fails7.7fz0 a0ecb2ec87f4). +DataComeFromIdFoundFromCodeId=Kods, kas nāk no avota faila kolonnas %s , tiks izmantots, lai atrastu izmantojamā vecākobjekta ID (tātad kodam no avota faila ir jābūt vārdnīcā a0aee8336 a0837f2fzf79037f49fz07f49fz07f49fzfz07fzfz07f49fz17fzfz07f49fz07fzfz07fzfz07fzfz07fzfz07fzfz07fzfz07f49fz07fzfz07fzfz07fzfz07fzfz07fzfz07f49fz07f49fz07fzfz07fzfz07f49fz07f49fz0. Ņemiet vērā: ja zināt ID, varat to izmantot arī avota failā koda vietā. Importam vajadzētu darboties abos gadījumos. DataIsInsertedInto=Dati, kas nāk no avota faila tiks ievietota sekojošā laukā: DataIDSourceIsInsertedInto=Galvenā objekta ID, kas tika atrasts, izmantojot avota faila datus, tiks ievietots šādā laukā: DataCodeIDSourceIsInsertedInto=Galvenās līnijas ID, kas tika atrasts no koda, tiks ievietots šādā laukā: @@ -138,3 +140,6 @@ StocksWithBatch=Produktu krājumi un atrašanās vieta (noliktava) ar partijas / WarningFirstImportedLine=Pirmā rindiņa(-as) netiks importēta(-as) ar pašreizējo atlasi NotUsedFields=Datu bāzes lauki netiek izmantoti SelectImportFieldsSource = Izvēlieties avota faila laukus, kurus vēlaties importēt, un to mērķa lauku datu bāzē, izvēloties laukus katrā atlases lodziņā, vai atlasiet iepriekš definētu importēšanas profilu: +MandatoryTargetFieldsNotMapped=Daži obligātie mērķa lauki nav kartēti +AllTargetMandatoryFieldsAreMapped=Visi mērķa lauki, kuriem nepieciešama obligāta vērtība, ir kartēti +ResultOfSimulationNoError=Simulācijas rezultāts: nav kļūdu diff --git a/htdocs/langs/lv_LV/externalsite.lang b/htdocs/langs/lv_LV/externalsite.lang deleted file mode 100644 index 23725bd616a..00000000000 --- a/htdocs/langs/lv_LV/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Ārējo vietņu iestatīšana -ExternalSiteURL=HTML iframe satura ārējās vietnes URL -ExternalSiteModuleNotComplete=Modulis ExternalSite nav pareizi konfigurēts. -ExampleMyMenuEntry=Manas izvēlnes ieraksti diff --git a/htdocs/langs/lv_LV/ftp.lang b/htdocs/langs/lv_LV/ftp.lang deleted file mode 100644 index 6fcdaf66e4b..00000000000 --- a/htdocs/langs/lv_LV/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP vai SFTP klienta moduļa iestatīšana -NewFTPClient=Jauna FTP / FTPS savienojuma iestatīšana -FTPArea=FTP/FTPS sadaļa -FTPAreaDesc=Šajā ekrānā tiek parādīts FTP un SFTP servera skats. -SetupOfFTPClientModuleNotComplete=Šķiet, ka FTP vai SFTP klienta moduļa iestatīšana nav pilnīga -FTPFeatureNotSupportedByYourPHP=Jūsu PHP neatbalsta FTP vai SFTP funkcijas -FailedToConnectToFTPServer=Neizdevās izveidot savienojumu ar serveri (serveris %s, ports %s) -FailedToConnectToFTPServerWithCredentials=Neizdevās pieteikties serverī ar noteiktu pieteikšanās vārdu / paroli -FTPFailedToRemoveFile=Neizdevās noņemt failu %s. -FTPFailedToRemoveDir=Neizdevās noņemt direktoriju %s: pārbaudīt atļaujas un ka katalogs ir tukšs. -FTPPassiveMode=Pasīvais režīms -ChooseAFTPEntryIntoMenu=Izvēlnē izvēlieties FTP / SFTP vietni ... -FailedToGetFile=Neizdevās iegūt failus %s diff --git a/htdocs/langs/lv_LV/holiday.lang b/htdocs/langs/lv_LV/holiday.lang index 5b29fb9dd97..951c5184a20 100644 --- a/htdocs/langs/lv_LV/holiday.lang +++ b/htdocs/langs/lv_LV/holiday.lang @@ -134,6 +134,6 @@ HolidaysToApprove=Brīvdienas, kas jāapstiprina NobodyHasPermissionToValidateHolidays=Nevienam nav atļaujas apstiprināt brīvdienas HolidayBalanceMonthlyUpdate=Ikmēneša brīvdienu bilances atjauninājums XIsAUsualNonWorkingDay=%s parasti ir NAV darba diena -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative +BlockHolidayIfNegative=Bloķēt, ja atlikums ir negatīvs +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Šī atvaļinājuma pieprasījuma izveide ir bloķēta, jo jūsu bilance ir negatīva ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Atstāšanas pieprasījumam %s jābūt melnrakstam, tas ir jāatceļ vai jāatsakās dzēst diff --git a/htdocs/langs/lv_LV/hrm.lang b/htdocs/langs/lv_LV/hrm.lang index e14ef1e6379..da441146c33 100644 --- a/htdocs/langs/lv_LV/hrm.lang +++ b/htdocs/langs/lv_LV/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Atvērts uzņēmums CloseEtablishment=Aizvērt uzņēmumu # Dictionary DictionaryPublicHolidays=Atvaļinājums - svētku dienas -DictionaryDepartment=HRM - Department list +DictionaryDepartment=HRM - Organizatoriskā vienība DictionaryFunction=HRM - darba vietas # Module Employees=Darbinieki @@ -70,9 +70,9 @@ RequiredSkills=Nepieciešamās prasmes šim darbam UserRank=Lietotāja rangs SkillList=Prasmju saraksts SaveRank=Saglabāt rangu -knowHow=Zināt, kā -HowToBe=Kā būt -knowledge=Zināšanas +TypeKnowHow=Zināt, kā +TypeHowToBe=Kā būt +TypeKnowledge=Zināšanas AbandonmentComment=Atteikšanās komentārs DateLastEval=Pēdējās vērtēšanas datums NoEval=Šim darbiniekam nav veikts novērtējums @@ -88,3 +88,4 @@ DeleteSkill = Prasme noņemta SkillsExtraFields=Attributs supplémentaires (kompetences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Atribūti supplémentaires (novērtējumi) +NeedBusinessTravels=Nepieciešami biznesa ceļojumi diff --git a/htdocs/langs/lv_LV/install.lang b/htdocs/langs/lv_LV/install.lang index 0710c1b4bdf..a4c2ba6519b 100644 --- a/htdocs/langs/lv_LV/install.lang +++ b/htdocs/langs/lv_LV/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurācijas failā %s nevar ierakstīt. Pārba ConfFileIsWritable=Konfigurācijas failā %s var ierakstīt. ConfFileMustBeAFileNotADir=Konfigurācijas failam %s jābūt failam, nevis direktorijai. ConfFileReload=Pārsūtot parametrus no konfigurācijas faila. -NoReadableConfFileSoStartInstall=Konfigurācijas fails conf/conf.php neeksistē vai nav atjaunojams. Mēs veiksim instalēšanas procesu, lai mēģinātu to inicializēt. +NoReadableConfFileSoStartInstall=Konfigurācijas fails conf/conf.php neeksistē vai nav lasāms. Mēs veiksim instalēšanas procesu, lai mēģinātu to inicializēt. PHPSupportPOSTGETOk=PHP atbalsta mainīgos POST un GET. PHPSupportPOSTGETKo=Iespējams, ka jūsu PHP iestatīšana neatbalsta mainīgos POST un/vai GET. Pārbaudiet parametru variables_order php.ini. PHPSupportSessions=PHP atbalsta sesijas. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Iespējams, esat ievadījis nepareizu vērtību para ErrorFailedToCreateDatabase=Neizdevās izveidot datubāzi '%s'. ErrorFailedToConnectToDatabase=Neizdevās izveidot savienojumu ar datu bāzi '%s'. ErrorDatabaseVersionTooLow=Datu bāzes versija (%s) pārāk veca. Versija %s vai augstāka ir nepieciešama. -ErrorPHPVersionTooLow=PHP versija ir pārāk veca. Versija %s ir nepieciešama. +ErrorPHPVersionTooLow=PHP versija ir pārāk veca. Nepieciešama versija %s vai jaunāka versija. +ErrorPHPVersionTooHigh=PHP versija ir pārāk augsta. Nepieciešama versija %s vai vecāka versija. ErrorConnectedButDatabaseNotFound=Savienojums ar serveri ir veiksmīgs, bet datubāze '%s' nav atrasta. ErrorDatabaseAlreadyExists=Datubāze '%s' jau eksistē. IfDatabaseNotExistsGoBackAndUncheckCreate=Ja datubāze neeksistē, atgriezieties un atzīmējiet opciju "Izveidot datubāzi". diff --git a/htdocs/langs/lv_LV/knowledgemanagement.lang b/htdocs/langs/lv_LV/knowledgemanagement.lang index 007279c1986..47f7f963f99 100644 --- a/htdocs/langs/lv_LV/knowledgemanagement.lang +++ b/htdocs/langs/lv_LV/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Raksti KnowledgeRecord = Raksts KnowledgeRecordExtraFields = Raksta paplašinājumi GroupOfTicket=Biļešu grupa -YouCanLinkArticleToATicketCategory=Rakstu var saistīt ar biļešu grupu (tāpēc raksts tiks ieteikts jauno biļešu kvalifikācijas iegūšanas laikā) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Ieteicams biļetēm, kad grupa ir SetObsolete=Iestatīt kā novecojušu diff --git a/htdocs/langs/lv_LV/languages.lang b/htdocs/langs/lv_LV/languages.lang index 077ff51c375..0c7107b8bf7 100644 --- a/htdocs/langs/lv_LV/languages.lang +++ b/htdocs/langs/lv_LV/languages.lang @@ -3,6 +3,7 @@ Language_am_ET=Etiopietis Language_ar_AR=Arābu Language_ar_DZ=arābu (Alžīrija) Language_ar_EG=Arābu (Ēģipte) +Language_ar_JO=arābu (Jordānija) Language_ar_MA=Arābu (Maroka) Language_ar_SA=Arābu Language_ar_TN=Arābu (Tunisija) @@ -12,9 +13,11 @@ Language_az_AZ=Azerbaidžāņi Language_bn_BD=Bengali Language_bn_IN=Bengāļu (Indija) Language_bg_BG=Bulgāru +Language_bo_CN=tibetietis Language_bs_BA=Bosniešu Language_ca_ES=Katalāņu Language_cs_CZ=Čehu +Language_cy_GB=velsiešu Language_da_DA=Dāņu Language_da_DK=Dāņu Language_de_DE=Vācu @@ -22,6 +25,7 @@ Language_de_AT=Vācu (Austrija) Language_de_CH=Vācu (Šveice) Language_el_GR=Grieķu Language_el_CY=Grieķu (Kipra) +Language_en_AE=angļu (Apvienotie Arābu Emirāti) Language_en_AU=Angļu (Austrālija) Language_en_CA=Angļu (Kanāda) Language_en_GB=Angļu (Apvienotā Karaliste) @@ -36,6 +40,7 @@ Language_es_AR=Spāņu (Argentīna) Language_es_BO=Spāņu (Bolīvija) Language_es_CL=Spāņu (Ķīle) Language_es_CO=Spāņu (Kolumbija) +Language_es_CR=spāņu (Kostarika) Language_es_DO=Spāņu (Dominikānas Republika) Language_es_EC=Spāņu (Ekvadora) Language_es_GT=Spāņu (Gvatemala) @@ -83,18 +88,21 @@ Language_lt_LT=Lietuviešu Language_lv_LV=Latviešu Language_mk_MK=Maķedoniešu Language_mn_MN=Mongoļu +Language_my_MM=birmietis Language_nb_NO=Norvēģu (bukmols) Language_ne_NP=Nepālietis Language_nl_BE=Holandiešu (Beļģijas) Language_nl_NL=Holandiešu Language_pl_PL=Poļu Language_pt_AO=Portugāļu (Angola) +Language_pt_MZ=portugāļu (Mozambika) Language_pt_BR=Portugāļu (Brazīlija) Language_pt_PT=Portugāļu Language_ro_MD=Rumāņu (Moldāvija) Language_ro_RO=Rumāņu Language_ru_RU=Krievu Language_ru_UA=Krievu (Ukraina) +Language_ta_IN=tamilu Language_tg_TJ=Tadžiku Language_tr_TR=Turku Language_sl_SI=Slovēņu @@ -106,6 +114,7 @@ Language_sr_RS=Serbu Language_sw_SW=Kiswahili Language_th_TH=Thai Language_uk_UA=Ukraiņu +Language_ur_PK=urdu Language_uz_UZ=Uzbeku Language_vi_VN=Vjetnamiešu Language_zh_CN=Ķīniešu diff --git a/htdocs/langs/lv_LV/loan.lang b/htdocs/langs/lv_LV/loan.lang index 8063c52b091..24ac9a01d8f 100644 --- a/htdocs/langs/lv_LV/loan.lang +++ b/htdocs/langs/lv_LV/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Finanšu saistības InterestAmount=Interese CapitalRemain=Kapitāls paliek TermPaidAllreadyPaid = Šis termiņš jau ir samaksāts -CantUseScheduleWithLoanStartedToPaid = Nevar izmantot plānotāju aizdevumam ar sāktu maksājumu +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Jūs nevarat mainīt interesi, ja izmantojat grafiku # Admin ConfigLoan=Configuration of the module loan diff --git a/htdocs/langs/lv_LV/mails.lang b/htdocs/langs/lv_LV/mails.lang index 6afe2eb584f..4d01ceeecac 100644 --- a/htdocs/langs/lv_LV/mails.lang +++ b/htdocs/langs/lv_LV/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer=Vai ir atbilde uz sākotnējo e-pastu RecordCreatedByEmailCollector=Ierakstu izveidojis e-pasta savācējs %s no e-pasta %s DefaultBlacklistMailingStatus=Lauka %s noklusējuma vērtība, veidojot jaunu kontaktpersonu DefaultStatusEmptyMandatory=Tukšs, bet obligāts +WarningLimitSendByDay=BRĪDINĀJUMS. Jūsu instances iestatīšana vai līgums ierobežo jūsu e-pasta ziņojumu skaitu dienā līdz %s . Mēģinot sūtīt vairāk, jūsu instance var tikt palēnināta vai apturēta. Lūdzu, sazinieties ar atbalsta dienestu, ja jums nepieciešama lielāka kvota. diff --git a/htdocs/langs/lv_LV/main.lang b/htdocs/langs/lv_LV/main.lang index 2d2f7994cf2..3613aa3e808 100644 --- a/htdocs/langs/lv_LV/main.lang +++ b/htdocs/langs/lv_LV/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -345,7 +351,7 @@ KiloBytes=Kilobaiti MegaBytes=Megabaiti GigaBytes=Gigabaiti TeraBytes=Terabaiti -UserAuthor=Apkrāpts ar +UserAuthor=Izveidojis UserModif=Atjaunināja b=b. Kb=Kb @@ -712,6 +718,7 @@ FeatureDisabled=Funkcija bloķēta MoveBox=Pārvietot logrīku Offered=Piedāvāts NotEnoughPermissions=Jums nav atļauta šī darbība +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Sesijas nosaukums Method=Metode Receive=Saņemt @@ -1174,6 +1181,9 @@ ConfirmAllocateCommercial=Piešķiriet tirdzniecības pārstāvja apstiprinājum ConfirmAllocateCommercialQuestion=Vai tiešām vēlaties piešķirt %s atlasītos ierakstus? CommercialsAffected=Ietekmēti tirdzniecības pārstāvji CommercialAffected=Ietekmēts tirdzniecības pārstāvis -YourMessage=Votre message -YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. -UrlToCheck=Url to check +YourMessage=Tava ziņa +YourMessageHasBeenReceived=Jūsu ziņojums ir saņemts. Mēs atbildēsim vai sazināsimies ar jums pēc iespējas ātrāk. +UrlToCheck=Pārbaudāmais URL +Automation=Automatizācija +CreatedByEmailCollector=Created by Email collector +CreatedByPublicPortal=Created from Public portal diff --git a/htdocs/langs/lv_LV/members.lang b/htdocs/langs/lv_LV/members.lang index 44c68cdaa8b..a1bb699573b 100644 --- a/htdocs/langs/lv_LV/members.lang +++ b/htdocs/langs/lv_LV/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Dalības beigu datums EndSubscription=Dalības beigas SubscriptionId=Iemaksas ID WithoutSubscription=Bez ieguldījuma -MemberId=Dalībnieka id +MemberId=Dalībnieka ID +MemberRef=Biedru Ref NewMember=Jauns dalībnieks MemberType=Dalībnieka veids MemberTypeId=Dalībnieka veida id @@ -198,7 +199,7 @@ NbOfSubscriptions=Iemaksu skaits AmountOfSubscriptions=No iemaksām iekasētā summa TurnoverOrBudget=Apgrozījums (uzņēmumam) vai budžets (par pamatu) DefaultAmount=Iemaksas noklusējuma summa -CanEditAmount=Apmeklētājs var izvēlēties/rediģēt savu ieguldījumu +CanEditAmount=Visitor can choose/edit amount of its contribution MEMBER_NEWFORM_PAYONLINE=Pārlēkt uz integrētu tiešsaistes maksājumu lapā ByProperties=Pēc būtības MembersStatisticsByProperties=Dalībnieku statistika pēc būtības @@ -218,5 +219,5 @@ XExternalUserCreated=%s izveidots (-i) ārējs (-i) lietotājs (i) ForceMemberNature=Spēka locekļa raksturs (indivīds vai korporācija) CreateDolibarrLoginDesc=Izveidojot lietotājvārdu dalībniekiem, viņi var izveidot savienojumu ar lietojumprogrammu. Atkarībā no piešķirtajām atļaujām viņi, piemēram, varēs paši iepazīties vai mainīt savu failu. CreateDolibarrThirdPartyDesc=Trešā puse ir juridiska persona, kas tiks izmantota rēķinā, ja jūs nolemjat ģenerēt rēķinu par katru ieguldījumu. To varēsit izveidot vēlāk, ieguldījuma ierakstīšanas procesa laikā. -MemberFirstname=Member firstname -MemberLastname=Member lastname +MemberFirstname=Dalībnieka vārds +MemberLastname=Dalībnieka uzvārds diff --git a/htdocs/langs/lv_LV/modulebuilder.lang b/htdocs/langs/lv_LV/modulebuilder.lang index 9c91bf1333d..9a6c77fa63f 100644 --- a/htdocs/langs/lv_LV/modulebuilder.lang +++ b/htdocs/langs/lv_LV/modulebuilder.lang @@ -1,17 +1,17 @@ # Dolibarr language file - Source file is en_US - loan ModuleBuilderDesc=Šo rīku drīkst izmantot tikai pieredzējuši lietotāji vai izstrādātāji. Tas nodrošina utilītas, lai izveidotu vai rediģētu savu moduli. Dokumentācija alternatīvai manuālai izstrādei ir pieejama šeit . -EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. -EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +EnterNameOfModuleDesc=Ievadiet izveidojamā moduļa/lietojumprogrammas nosaukumu bez atstarpēm. Izmantojiet lielos burtus, lai atdalītu vārdus (piemēram, MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Ievadiet izveidojamā objekta nosaukumu bez atstarpēm. Izmantojiet lielos burtus, lai atdalītu vārdus (piemēram: MyObject, Student, Teacher...). Tiks ģenerēts CRUD klases fails, kā arī API fails, lapas, lai uzskaitītu/pievienotu/rediģētu/dzēstu objektu un SQL faili. +EnterNameOfDictionaryDesc=Ievadiet izveidojamās vārdnīcas nosaukumu bez atstarpēm. Izmantojiet lielos burtus, lai atdalītu vārdus (piemēram, MyDico...). Tiks ģenerēts klases fails, kā arī SQL fails. ModuleBuilderDesc2=Ceļš, kurā tiek ģenerēti / rediģēti moduļi (pirmais ārējo moduļu katalogs, kas definēts %s): %s ModuleBuilderDesc3=Atrastie / rediģējamie moduļi: %s ModuleBuilderDesc4=Modulis identificēts kā "rediģējams", kad moduļa saknes direktorijā atrodas fails %s NewModule=Jauns modulis NewObjectInModulebuilder=Jauns objekts -NewDictionary=New dictionary +NewDictionary=Jauna vārdnīca ModuleKey=Moduļa atslēga ObjectKey=Objekta atslēga -DicKey=Dictionary key +DicKey=Vārdnīcas atslēga ModuleInitialized=Modulis inicializēts FilesForObjectInitialized=Files for new object '%s' initialized FilesForObjectUpdated=Atjaunots objektu '%s' faili (.sql faili un .class.php fails) @@ -153,3 +153,4 @@ LinkToParentMenu=Vecāku izvēlne (fk_xxxxmenu) ListOfTabsEntries=Cilņu ierakstu saraksts TabsDefDesc=Šeit definējiet moduļa nodrošinātās cilnes TabsDefDescTooltip=Jūsu moduļa/lietojumprogrammas nodrošinātās cilnes ir definētas masīvā $this->tabs moduļa deskriptora failā. Varat manuāli rediģēt šo failu vai izmantot iegulto redaktoru. +BadValueForType=Nepareiza vērtība tipam %s diff --git a/htdocs/langs/lv_LV/mrp.lang b/htdocs/langs/lv_LV/mrp.lang index d38e1e5294c..d0a3d3af907 100644 --- a/htdocs/langs/lv_LV/mrp.lang +++ b/htdocs/langs/lv_LV/mrp.lang @@ -109,6 +109,6 @@ THMEstimatedHelp=Šī likme ļauj noteikt objekta prognozētās izmaksas BOM=Materiālu rēķins CollapseBOMHelp=Nomenklatūras detaļu noklusējuma displeju var definēt MK moduļa konfigurācijā MOAndLines=Ražošanas pasūtījumi un līnijas -MoChildGenerate=Generate Child Mo -ParentMo=MO Parent -MOChild=MO Child +MoChildGenerate=Ģenerēt Child Mo +ParentMo=MO Vecāks +MOChild=MO bērns diff --git a/htdocs/langs/lv_LV/oauth.lang b/htdocs/langs/lv_LV/oauth.lang index ba808ac55e7..9e5967fbb0f 100644 --- a/htdocs/langs/lv_LV/oauth.lang +++ b/htdocs/langs/lv_LV/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Tika izveidots marķieris un saglabāts lokālajā datu bāzē NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Tokens dzēsts -RequestAccess=Click here to request/renew access and receive a new token to save +RequestAccess=Noklikšķiniet šeit, lai pieprasītu/atjaunotu piekļuvi un saņemtu jaunu pilnvaru DeleteAccess=Noklikšķiniet šeit, lai izdzēstu marķieri UseTheFollowingUrlAsRedirectURI=Izmantot savu akreditācijas datus ar OAuth pakalpojumu sniedzēju, izmantojiet šādu URL kā novirzīšanas URI: -ListOfSupportedOauthProviders=Ievadiet OAuth2 sniedzēja sniegtos akreditācijas datus. Šeit ir uzskaitīti tikai atbalstītie OAuth2 pakalpojumu sniedzēji. Šos pakalpojumus var izmantot citi moduļi, kuriem nepieciešama OAuth2 autentifikācija. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Pievienojiet savus OAuth2 pilnvaras nodrošinātājus. Pēc tam atveriet savu OAuth nodrošinātāja administratora lapu, lai izveidotu/iegūtu OAuth ID un noslēpumu un saglabātu tos šeit. Kad tas ir izdarīts, ieslēdziet otru cilni, lai ģenerētu marķieri. +OAuthSetupForLogin=Lapa, kurā pārvaldīt (ģenerēt/dzēst) OAuth pilnvaras SeePreviousTab=Skatīt iepriekšējo cilni +OAuthProvider=OAuth nodrošinātājs OAuthIDSecret=OAuth ID un slepenais TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Derīguma termiņš ir beidzies @@ -23,10 +24,13 @@ TOKEN_DELETE=Dzēst saglabāto pilnvaru OAUTH_GOOGLE_NAME=OAuth Google pakalpojums OAUTH_GOOGLE_ID=OAuth Google ID OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Dodieties uz šo lapu un pēc tam uz "Akreditācijas dati", lai izveidotu OAuth akreditācijas datus. OAUTH_GITHUB_NAME=OAuth GitHub pakalpojums OAUTH_GITHUB_ID=OAuth GitHub ID OAUTH_GITHUB_SECRET=OAuth GitHub noslēpums -OAUTH_GITHUB_DESC=Dodieties uz šo lapu un pēc tam "Reģistrējiet jaunu lietojumprogrammu", lai izveidotu OAuth akreditācijas datus. +OAUTH_URL_FOR_CREDENTIAL=Dodieties uz šo lapu , lai izveidotu vai iegūtu savu OAuth ID un noslēpumu OAUTH_STRIPE_TEST_NAME=OAuth svītras tests OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth noslēpums +OAuthProviderAdded=Pievienots OAuth nodrošinātājs +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=OAuth ieraksts šim nodrošinātājam un iezīmei jau pastāv diff --git a/htdocs/langs/lv_LV/orders.lang b/htdocs/langs/lv_LV/orders.lang index afc336f7da4..6f8c400775c 100644 --- a/htdocs/langs/lv_LV/orders.lang +++ b/htdocs/langs/lv_LV/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=Ar šo piedāvājumu saistīts pasūtījums jau bija atvērts, tāpēc neviens cits pasūtījums netika izveidots automātiski OrdersArea=Klienti pasūtījumu sadaļa SuppliersOrdersArea=Pirkumu pasūtījumu apgabals OrderCard=Pasūtījumu kartiņa diff --git a/htdocs/langs/lv_LV/other.lang b/htdocs/langs/lv_LV/other.lang index 9e68485120a..3559bd983df 100644 --- a/htdocs/langs/lv_LV/other.lang +++ b/htdocs/langs/lv_LV/other.lang @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=... vai izveidojiet savu profilu
(manuālā moduļ DemoFundation=Pārvaldīt nodibinājuma dalībniekus DemoFundation2=Pārvaldīt dalībniekus un bankas kontu nodibinājumam DemoCompanyServiceOnly=Tikai uzņēmuma vai ārštata pārdošanas pakalpojums -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Pārvaldiet veikalu ar naudas kasti DemoCompanyProductAndStocks=Veikals, kas pārdod produktus, izmantojot tirdzniecības vietu DemoCompanyManufacturing=Uzņēmums, kas ražo produktus DemoCompanyAll=Uzņēmums ar vairākām darbībām (visi galvenie moduļi) @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Vai tiešām vēlaties "%s"? ConfirmBtnCommonTitle = Apstipriniet savu darbību CloseDialog = Aizvērt Autofill = Automātiskā aizpilde + +# externalsite +ExternalSiteSetup=Ārējo vietņu iestatīšana +ExternalSiteURL=HTML iframe satura ārējās vietnes URL +ExternalSiteModuleNotComplete=Modulis ExternalSite nav pareizi konfigurēts. +ExampleMyMenuEntry=Manas izvēlnes ieraksti + +# FTP +FTPClientSetup=FTP vai SFTP klienta moduļa iestatīšana +NewFTPClient=Jauna FTP / FTPS savienojuma iestatīšana +FTPArea=FTP/FTPS sadaļa +FTPAreaDesc=Šajā ekrānā ir redzams FTP un SFTP servera skats. +SetupOfFTPClientModuleNotComplete=Šķiet, ka FTP vai SFTP klienta moduļa iestatīšana ir nepilnīga +FTPFeatureNotSupportedByYourPHP=Jūsu PHP neatbalsta FTP vai SFTP funkcijas +FailedToConnectToFTPServer=Neizdevās izveidot savienojumu ar serveri (serveris %s, ports %s) +FailedToConnectToFTPServerWithCredentials=Neizdevās pieteikties serverī ar definētu pieteikšanās vārdu/paroli +FTPFailedToRemoveFile=Neizdevās noņemt failu %s. +FTPFailedToRemoveDir=Neizdevās noņemt direktoriju %s: pārbaudīt atļaujas un ka katalogs ir tukšs. +FTPPassiveMode=Pasīvais režīms +ChooseAFTPEntryIntoMenu=Izvēlnē izvēlieties FTP/SFTP vietni... +FailedToGetFile=Neizdevās iegūt failus %s diff --git a/htdocs/langs/lv_LV/products.lang b/htdocs/langs/lv_LV/products.lang index df0e318a44f..161b4bbebb0 100644 --- a/htdocs/langs/lv_LV/products.lang +++ b/htdocs/langs/lv_LV/products.lang @@ -262,7 +262,7 @@ Quarter1=1. Ceturksnis Quarter2=2. Ceturksnis Quarter3=3. Ceturksnis Quarter4=4. Ceturksnis -BarCodePrintsheet=Drukāt svītrukodu +BarCodePrintsheet=Drukāt svītrkodus PageToGenerateBarCodeSheets=Izmantojot šo rīku, varat drukāt svītrkodu uzlīmes. Izvēlieties uzlīmes lapas formātu, svītrkodu veidu un svītrkoda vērtību, pēc tam noklikšķiniet uz pogas %s . NumberOfStickers=Number of stickers to print on page PrintsheetForOneBarCode=Drukāt vairākas svītrkoda uzlīmes diff --git a/htdocs/langs/lv_LV/projects.lang b/htdocs/langs/lv_LV/projects.lang index f06d1167d8e..e9771d9d624 100644 --- a/htdocs/langs/lv_LV/projects.lang +++ b/htdocs/langs/lv_LV/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Projekta nosaukums ProjectsArea=Projektu sadaļa ProjectStatus=Projekta statuss SharedProject=Visi -PrivateProject=Assigned contacts +PrivateProject=Piešķirtie kontakti ProjectsImContactFor=Projekti, par kuriem tieši esmu kontaktpersona AllAllowedProjects=All project I can read (mine + public) AllProjects=Visi projekti @@ -259,7 +259,7 @@ TimeSpentInvoiced=Norēķinātais laiks TimeSpentForIntervention=Laiks, kas patērēts TimeSpentForInvoice=Laiks, kas patērēts OneLinePerUser=Viena līnija katram lietotājam -ServiceToUseOnLines=Pakalpojums, ko izmantot līnijās +ServiceToUseOnLines=Service to use on lines InvoiceGeneratedFromTimeSpent=Rēķins %s ir radīts no projekta pavadīta laika InterventionGeneratedFromTimeSpent=Intervence %s ir izveidota no projektam pavadītā laika ProjectBillTimeDescription=Pārbaudiet, vai projekta uzdevumos ievadāt laika kontrolsarakstu UN Plānojat no laika kontrolsaraksta ģenerēt rēķinu (rēķinus), lai projekta klientam izrakstītu rēķinu (nepārbaudiet, vai plānojat izveidot rēķinu, kas nav balstīts uz ievadītajām laika kontrollapām). Piezīme. Lai ģenerētu rēķinu, dodieties uz projekta cilni “Pavadītais laiks” un atlasiet iekļaujamās līnijas. @@ -289,8 +289,8 @@ FormForNewLeadDesc=Paldies, ka aizpildījāt šo veidlapu, lai sazinātos ar mum ProjectsHavingThisContact=Projekti ar šo kontaktpersonu StartDateCannotBeAfterEndDate=Beigu datums nevar būt pirms sākuma datuma ErrorPROJECTLEADERRoleMissingRestoreIt=Trūkst lomas "PROJECTLEADER" vai tā ir deaktivizēta. Lūdzu, atjaunojiet kontaktpersonu veidu vārdnīcā -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +LeadPublicFormDesc=Šeit varat iespējot publisku lapu, lai potenciālie klienti varētu pirmo reizi sazināties ar jums, izmantojot publisku tiešsaistes veidlapu +EnablePublicLeadForm=Iespējojiet publisko saziņas veidlapu +NewLeadbyWeb=Jūsu ziņojums vai pieprasījums ir ierakstīts. Mēs drīzumā atbildēsim vai sazināsimies ar jums. +NewLeadForm=Jauna kontaktu forma +LeadFromPublicForm=Tiešsaistes potenciāls no publiskās veidlapas diff --git a/htdocs/langs/lv_LV/receiptprinter.lang b/htdocs/langs/lv_LV/receiptprinter.lang index 4527dbfadb0..1eeae818913 100644 --- a/htdocs/langs/lv_LV/receiptprinter.lang +++ b/htdocs/langs/lv_LV/receiptprinter.lang @@ -7,7 +7,7 @@ TestSentToPrinter=Pārbaude nosūtīta printerim %s ReceiptPrinter=Čeku printeri ReceiptPrinterDesc=Iestatījumi čeku printeriem ReceiptPrinterTemplateDesc=Veidņu iestatīšana -ReceiptPrinterTypeDesc=Description of Receipt Printer's type +ReceiptPrinterTypeDesc=Lauka "Parametri" iespējamo vērtību piemērs atbilstoši draivera veidam ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile ListPrinters=Printeru saraksts SetupReceiptTemplate=Veidņu iestatīšana @@ -54,7 +54,9 @@ DOL_DOUBLE_WIDTH=Dubultā platuma izmērs DOL_DEFAULT_HEIGHT_WIDTH=Noklusējuma augstums un platums DOL_UNDERLINE=Iespējot pasvītrojumu DOL_UNDERLINE_DISABLED=Atspējot pasvītrojumu -DOL_BEEP=Bēdas skaņa +DOL_BEEP=Pīkstiena skaņa +DOL_BEEP_ALTERNATIVE=Pīkstiens (alternatīvais režīms) +DOL_PRINT_CURR_DATE=Drukāt pašreizējo datumu/laiku DOL_PRINT_TEXT=Drukāt tekstu DateInvoiceWithTime=Rēķina datums un laiks YearInvoice=Rēķina gads diff --git a/htdocs/langs/lv_LV/stocks.lang b/htdocs/langs/lv_LV/stocks.lang index 536bcf9e53e..7391a084ec1 100644 --- a/htdocs/langs/lv_LV/stocks.lang +++ b/htdocs/langs/lv_LV/stocks.lang @@ -142,13 +142,13 @@ ForThisWarehouse=Šai noliktavai ReplenishmentStatusDesc=Šis ir saraksts ar visiem produktiem, kuru krājumi ir mazāki par vēlamo krājumu (vai ir zemāka par brīdinājuma vērtību, ja ir atzīmēta izvēles rūtiņa "tikai brīdinājums"). Izmantojot izvēles rūtiņu, varat izveidot pirkuma pasūtījumus, lai aizpildītu starpību. ReplenishmentStatusDescPerWarehouse=Ja vēlaties papildināšanu, pamatojoties uz vēlamo daudzumu, kas noteikts katrā noliktavā, jums jāpievieno filtrs noliktavā. ReplenishmentOrdersDesc=Šis ir visu atvērto pirkumu pasūtījumu saraksts, ieskaitot iepriekš definētus produktus. Atveriet pasūtījumus tikai ar iepriekš definētiem produktiem, tāpēc šeit ir redzami pasūtījumi, kas var ietekmēt krājumus. -Replenishments=Papildinājumus +Replenishments=Papildinājumi NbOfProductBeforePeriod=Produktu daudzums %s noliktavā pirms izvēlētā perioda (< %s) NbOfProductAfterPeriod=Produktu daudzums %s krājumā pēc izvēlētā perioda (>%s) MassMovement=Masveida pārvietošana SelectProductInAndOutWareHouse=Atlasiet avota noliktavu un mērķa noliktavu, produktu un daudzumu, pēc tam noklikšķiniet uz "%s". Kad tas ir izdarīts visām nepieciešamajām kustībām, noklikšķiniet uz "%s". RecordMovement=Ierakstīt pārvietošanu -ReceivingForSameOrder=Receipts for this order +ReceivingForSameOrder=Kvītis par šo pasūtījumu StockMovementRecorded=Krājumu pārvietošana saglabāta RuleForStockAvailability=Noteikumi krājumu nepieciešamībai StockMustBeEnoughForInvoice=Krājumu līmenim ir jābūt pietiekamam, lai produktu / pakalpojumu pievienotu rēķinam (pārbaudiet, vai pašreizējā reālā krājumā tiek pievienota rinda rēķinā neatkarīgi no automātiskās krājumu maiņas noteikuma) @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Brīdinājuma krājuma limits un pareizi izveidots ProductStockWarehouseUpdated=Uzturvērtības ierobežojums brīdinājumam un vēlamais optimālais krājums ir pareizi atjaunināts ProductStockWarehouseDeleted=Brīdinājuma krājumu limits un vēlamais optimālais krājums ir pareizi svītrots AddNewProductStockWarehouse=Iestatiet jaunu ierobežojumu brīdinājumam un vēlamo optimālo krājumu -AddStockLocationLine=Samaziniet daudzumu, pēc tam noklikšķiniet, lai pievienotu citu izstrādājumu noliktavu +AddStockLocationLine=Samaziniet daudzumu, pēc tam noklikšķiniet, lai sadalītu līniju InventoryDate=Inventāra datums Inventories=Inventāri NewInventory=Jauns inventārs @@ -254,7 +254,7 @@ ReOpen=Atvērt pa jaunu ConfirmFinish=Vai jūs apstiprināt inventāra slēgšanu? Tas ģenerēs visas krājumu kustības, lai atjauninātu krājumus līdz reālajam daudzumam, kuru ievadījāt krājumā. ObjectNotFound=%s nav atrasts MakeMovementsAndClose=Ģenerējiet kustības un aizveriet -AutofillWithExpected=Aizstāt reālo daudzumu ar paredzamo daudzumu +AutofillWithExpected=Aizpildiet reālo daudzumu ar paredzamo daudzumu ShowAllBatchByDefault=Pēc noklusējuma parādīt partijas informāciju cilnē “Akciju” CollapseBatchDetailHelp=Krājumu moduļa konfigurācijā varat iestatīt partijas detaļu noklusējuma attēlojumu ErrorWrongBarcodemode=Nezināms svītrkoda režīms @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Produkts ar svītrkodu neeksistē WarehouseId=Noliktavas ID WarehouseRef=Noliktavas atsauce SaveQtyFirst=Vispirms saglabājiet reālos inventarizētos daudzumus, pirms lūdzat izveidot krājumu kustību. +ToStart=Sākt InventoryStartedShort=Sākts ErrorOnElementsInventory=Operācija tika atcelta šāda iemesla dēļ: ErrorCantFindCodeInInventory=Krājumā nevar atrast šādu kodu QtyWasAddedToTheScannedBarcode=Veiksmi!! Daudzums tika pievienots visam pieprasītajam svītrkodam. Varat aizvērt skenera rīku. StockChangeDisabled=Izmaiņas krājumā ir atspējotas NoWarehouseDefinedForTerminal=Terminālim nav noteikta noliktava +ClearQtys=Notīriet visus daudzumus +ModuleStockTransferName=Uzlabota akciju pārsūtīšana +ModuleStockTransferDesc=Uzlabota krājumu pārsūtīšanas pārvaldība ar pārsūtīšanas lapas ģenerēšanu +StockTransferNew=Jaunu akciju nodošana +StockTransferList=Krājumu pārvedumu saraksts +ConfirmValidateStockTransfer=Vai tiešām vēlaties apstiprināt šo akciju nodošanu ar atsauci %s ? +ConfirmDestock=Krājumu samazinājums ar pārskaitījumu %s +ConfirmDestockCancel=Atcelt krājumu samazināšanu ar pārskaitījumu %s +DestockAllProduct=Krājumu samazināšanās +DestockAllProductCancel=Atcelt krājumu samazināšanu +ConfirmAddStock=Palieliniet krājumus ar pārskaitījumu %s +ConfirmAddStockCancel=Atcelt krājumu palielināšanu ar pārskaitījumu %s +AddStockAllProduct=Krājumu palielināšana +AddStockAllProductCancel=Atcelt krājumu palielināšanu +DatePrevueDepart=Paredzētais izbraukšanas datums +DateReelleDepart=Īstais izbraukšanas datums +DatePrevueArrivee=Paredzētais ierašanās datums +DateReelleArrivee=Īstais ierašanās datums +HelpWarehouseStockTransferSource=Ja šī noliktava ir iestatīta, kā avota noliktava būs pieejama tikai pati un tās atvasinājumi +HelpWarehouseStockTransferDestination=Ja šī noliktava ir iestatīta, kā galamērķa noliktava būs pieejama tikai tā pati un tās bērni +LeadTimeForWarning=Izpildes laiks pirms brīdinājuma (dienās) +TypeContact_stocktransfer_internal_STFROM=Krājumu nodošanas sūtītājs +TypeContact_stocktransfer_internal_STDEST=Krājumu nodošanas saņēmējs +TypeContact_stocktransfer_internal_STRESP=Atbildīgs par krājumu nodošanu +StockTransferSheet=Krājumu nodošanas lapa +StockTransferSheetProforma=Proforma akciju nodošanas lapa +StockTransferDecrementation=Samaziniet avotu noliktavas +StockTransferIncrementation=Palieliniet galamērķa noliktavas +StockTransferDecrementationCancel=Atcelt avota noliktavu samazināšanu +StockTransferIncrementationCancel=Atcelt galamērķa noliktavu palielināšanu +StockStransferDecremented=Avotu noliktavas samazinājās +StockStransferDecrementedCancel=Avota noliktavu samazinājums ir atcelts +StockStransferIncremented=Slēgts — Krājumi nodoti +StockStransferIncrementedShort=Krājumi nodoti +StockStransferIncrementedShortCancel=Galamērķa noliktavu palielināšana ir atcelta +StockTransferNoBatchForProduct=Produktam %s netiek izmantota partija, notīriet sēriju tiešsaistē un mēģiniet vēlreiz +StockTransferSetup = Krājumu pārsūtīšanas moduļa konfigurācija +Settings=Iestatījumi +StockTransferSetupPage = Krājumu nodošanas moduļa konfigurācijas lapa +StockTransferRightRead=Lasīt akciju pārskaitījumus +StockTransferRightCreateUpdate=Izveidot/atjaunināt akciju pārvedumus +StockTransferRightDelete=Dzēst akciju pārskaitījumus +BatchNotFound=Šim produktam partija/sērija nav atrasta diff --git a/htdocs/langs/lv_LV/suppliers.lang b/htdocs/langs/lv_LV/suppliers.lang index 1282d01fc9a..d0e74c3fed9 100644 --- a/htdocs/langs/lv_LV/suppliers.lang +++ b/htdocs/langs/lv_LV/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Pircēja vārds AllProductServicePrices=Visas produktu / pakalpojumu cenas AllProductReferencesOfSupplier=Visas pārdevēja atsauces BuyingPriceNumShort=Pārdevēja cenas +RepeatableSupplierInvoice=Piegādātāja rēķina veidne +RepeatableSupplierInvoices=Piegādātāja rēķinu veidne +RepeatableSupplierInvoicesList=Piegādātāja rēķinu veidne +RecurringSupplierInvoices=Atkārtoti piegādātāju rēķini +ToCreateAPredefinedSupplierInvoice=Lai izveidotu piegādātāja rēķina veidni, jums ir jāizveido standarta rēķins, pēc tam bez apstiprināšanas noklikšķiniet uz pogas "%s". +GeneratedFromSupplierTemplate=Ģenerēts no piegādātāja rēķina veidnes %s +SupplierInvoiceGeneratedFromTemplate=Piegādātāja rēķins %s Ģenerēts no piegādātāja rēķina veidnes %s diff --git a/htdocs/langs/lv_LV/ticket.lang b/htdocs/langs/lv_LV/ticket.lang index 0f0ea7186a4..e376d2dbb4f 100644 --- a/htdocs/langs/lv_LV/ticket.lang +++ b/htdocs/langs/lv_LV/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Publiska saskarne, kurai nav nepieciešama identifikācija, i TicketSetupDictionaries=Pieteikumu, svarīgums un analītiskie kodi ir konfigurējami no vārdnīcās TicketParamModule=Moduļa mainīgā iestatīšana TicketParamMail=E-pasta iestatīšana -TicketEmailNotificationFrom=Biļešu atbildēm sūtīt e-pastu -TicketEmailNotificationFromHelp=Sūtītāja e-pasta atbildes uz biļešu atbildēm, kas nosūtītas no Dolibarr +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Paziņot par biļetes izveidi uz šo e-pasta adresi TicketEmailNotificationToHelp=Ja tāda ir, šī e-pasta adrese tiks informēta par biļetes izveidi TicketNewEmailBodyLabel=Īsziņa, kas nosūtīta pēc pieteikuma izveides @@ -99,8 +99,8 @@ TicketNewEmailBodyHelp=Šeit norādītais teksts tiks ievietots e-pastā, apstip TicketParamPublicInterface=Publiskās saskarnes iestatīšana TicketsEmailMustExist=Pieprasīt esošu e-pasta adresi, lai izveidotu pieteikumu TicketsEmailMustExistHelp=Publiskā interfeisa e-pasta adrese jau ir jāaizpilda datu bāzē, lai izveidotu jaunu biļeti. -TicketCreateThirdPartyWithContactIfNotExist=Ask name and company name for unknown emails. -TicketCreateThirdPartyWithContactIfNotExistHelp=Check if a thirdparty or a contact exists for the email entered. If not, ask a name and a company name to create a third party with contact. +TicketCreateThirdPartyWithContactIfNotExist=Nezināmiem e-pastiem jautājiet vārdu un uzņēmuma nosaukumu. +TicketCreateThirdPartyWithContactIfNotExistHelp=Pārbaudiet, vai ievadītajam e-pastam ir trešā puse vai kontaktpersona. Ja nē, lūdziet vārdu un uzņēmuma nosaukumu, lai izveidotu trešo pusi ar kontaktpersonu. PublicInterface=Publiskā saskarne TicketUrlPublicInterfaceLabelAdmin=Alternatīvs publiskā interfeisa URL TicketUrlPublicInterfaceHelpAdmin=Web serverī ir iespējams definēt pseidonīmus un tādējādi padarīt publisko saskarni pieejamu ar citu URL (serverim šajā jaunajā URL jādarbojas kā starpniekserverim) diff --git a/htdocs/langs/mk_MK/errors.lang b/htdocs/langs/mk_MK/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/mk_MK/errors.lang +++ b/htdocs/langs/mk_MK/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/mk_MK/externalsite.lang b/htdocs/langs/mk_MK/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/mk_MK/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/mk_MK/ftp.lang b/htdocs/langs/mk_MK/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/mk_MK/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/mk_MK/hrm.lang b/htdocs/langs/mk_MK/hrm.lang index 44ca9187486..56248824820 100644 --- a/htdocs/langs/mk_MK/hrm.lang +++ b/htdocs/langs/mk_MK/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Отвори компанија CloseEtablishment=Затвори компанија # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Список на оддели +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Вработени @@ -20,13 +20,14 @@ Employee=Вработен NewEmployee=Нов вработен ListOfEmployees=List of employees HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Position -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/mk_MK/oauth.lang b/htdocs/langs/mk_MK/oauth.lang index 075ff49a895..e3af5592a0e 100644 --- a/htdocs/langs/mk_MK/oauth.lang +++ b/htdocs/langs/mk_MK/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=A token was generated and saved into local database NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token deleted -RequestAccess=Click here to request/renew access and receive a new token to save +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=See previous tab +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token expired @@ -23,10 +24,13 @@ TOKEN_DELETE=Delete saved token OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/mn_MN/errors.lang b/htdocs/langs/mn_MN/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/mn_MN/errors.lang +++ b/htdocs/langs/mn_MN/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/mn_MN/externalsite.lang b/htdocs/langs/mn_MN/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/mn_MN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/mn_MN/ftp.lang b/htdocs/langs/mn_MN/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/mn_MN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ms_MY/accountancy.lang b/htdocs/langs/ms_MY/accountancy.lang new file mode 100644 index 00000000000..2ee700e5af0 --- /dev/null +++ b/htdocs/langs/ms_MY/accountancy.lang @@ -0,0 +1,460 @@ +# Dolibarr language file - en_US - Accountancy (Double entries) +Accountancy=Accountancy +Accounting=Accounting +ACCOUNTING_EXPORT_SEPARATORCSV=Column separator for export file +ACCOUNTING_EXPORT_DATE=Date format for export file +ACCOUNTING_EXPORT_PIECE=Export the number of piece +ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Export with global account +ACCOUNTING_EXPORT_LABEL=Export label +ACCOUNTING_EXPORT_AMOUNT=Export amount +ACCOUNTING_EXPORT_DEVISE=Export currency +Selectformat=Select the format for the file +ACCOUNTING_EXPORT_FORMAT=Select the format for the file +ACCOUNTING_EXPORT_ENDLINE=Select the carriage return type +ACCOUNTING_EXPORT_PREFIX_SPEC=Specify the prefix for the file name +ThisService=This service +ThisProduct=This product +DefaultForService=Default for service +DefaultForProduct=Default for product +ProductForThisThirdparty=Product for this thirdparty +ServiceForThisThirdparty=Service for this thirdparty +CantSuggest=Can't suggest +AccountancySetupDoneFromAccountancyMenu=Most setup of the accountancy is done from the menu %s +ConfigAccountingExpert=Configuration of the module accounting (double entry) +Journalization=Journalization +Journals=Journals +JournalFinancial=Financial journals +BackToChartofaccounts=Return chart of accounts +Chartofaccounts=Chart of accounts +ChartOfSubaccounts=Chart of individual accounts +ChartOfIndividualAccountsOfSubsidiaryLedger=Chart of individual accounts of the subsidiary ledger +CurrentDedicatedAccountingAccount=Current dedicated account +AssignDedicatedAccountingAccount=New account to assign +InvoiceLabel=Invoice label +OverviewOfAmountOfLinesNotBound=Overview of amount of lines not bound to an accounting account +OverviewOfAmountOfLinesBound=Overview of amount of lines already bound to an accounting account +OtherInfo=Other information +DeleteCptCategory=Remove accounting account from group +ConfirmDeleteCptCategory=Are you sure you want to remove this accounting account from the accounting account group? +JournalizationInLedgerStatus=Status of journalization +AlreadyInGeneralLedger=Already transferred to accounting journals and ledger +NotYetInGeneralLedger=Not yet transferred to accouting journals and ledger +GroupIsEmptyCheckSetup=Group is empty, check setup of the personalized accounting group +DetailByAccount=Show detail by account +AccountWithNonZeroValues=Accounts with non-zero values +ListOfAccounts=List of accounts +CountriesInEEC=Countries in EEC +CountriesNotInEEC=Countries not in EEC +CountriesInEECExceptMe=Countries in EEC except %s +CountriesExceptMe=All countries except %s +AccountantFiles=Export source documents +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). +ExportAccountingSourceDocHelp2=To export your journals, use the menu entry %s - %s. +ExportAccountingProjectHelp=Specify a project if you need an accounting report only for a specific project. Expense reports and loan payments are not included in project reports. +VueByAccountAccounting=View by accounting account +VueBySubAccountAccounting=View by accounting subaccount + +MainAccountForCustomersNotDefined=Main accounting account for customers not defined in setup +MainAccountForSuppliersNotDefined=Main accounting account for vendors not defined in setup +MainAccountForUsersNotDefined=Main accounting account for users not defined in setup +MainAccountForVatPaymentNotDefined=Main accounting account for VAT payment not defined in setup +MainAccountForSubscriptionPaymentNotDefined=Main accounting account for subscription payment not defined in setup + +AccountancyArea=Accounting 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 steps should be done to save you time in future by suggesting you automaticaly the correct default accounting account when transferring data in accounting +AccountancyAreaDescActionFreq=The following actions are usually executed every month, week or day for very large companies... + +AccountancyAreaDescJournalSetup=STEP %s: Check content of your journal list from menu %s +AccountancyAreaDescChartModel=STEP %s: Check that a model of chart of account exists or create one from menu %s +AccountancyAreaDescChart=STEP %s: Select and|or complete your chart of account from menu %s + +AccountancyAreaDescVat=STEP %s: Define accounting accounts for each VAT Rates. For this, use the menu entry %s. +AccountancyAreaDescDefault=STEP %s: Define default accounting accounts. For this, use the menu entry %s. +AccountancyAreaDescExpenseReport=STEP %s: Define default accounting accounts for each type of Expense report. For this, use the menu entry %s. +AccountancyAreaDescSal=STEP %s: Define default accounting accounts for payment of salaries. For this, use the menu entry %s. +AccountancyAreaDescContrib=STEP %s: Define default accounting accounts for Taxes (special expenses). For this, use the menu entry %s. +AccountancyAreaDescDonation=STEP %s: Define default accounting accounts for donation. For this, use the menu entry %s. +AccountancyAreaDescSubscription=STEP %s: Define default accounting accounts for member subscription. For this, use the menu entry %s. +AccountancyAreaDescMisc=STEP %s: Define mandatory default account and default accounting accounts for miscellaneous transactions. For this, use the menu entry %s. +AccountancyAreaDescLoan=STEP %s: Define default accounting accounts for loans. For this, use the menu entry %s. +AccountancyAreaDescBank=STEP %s: Define accounting accounts and journal code for each bank and financial accounts. For this, use the menu entry %s. +AccountancyAreaDescProd=STEP %s: Define accounting accounts on your Products/Services. For this, use the menu entry %s. + +AccountancyAreaDescBind=STEP %s: Check the binding between existing %s lines and accounting account is done, so application will be able to journalize transactions in Ledger in one click. Complete missing bindings. For this, use the menu entry %s. +AccountancyAreaDescWriteRecords=STEP %s: Write transactions into the Ledger. For this, go into menu %s, and click into button %s. +AccountancyAreaDescAnalyze=STEP %s: Add or edit existing transactions and generate reports and exports. + +AccountancyAreaDescClosePeriod=STEP %s: Close period so we can't make modification in a future. + +TheJournalCodeIsNotDefinedOnSomeBankAccount=A mandatory step in setup has not been completed (accounting code journal not defined for all bank accounts) +Selectchartofaccounts=Select active chart of accounts +ChangeAndLoad=Change and load +Addanaccount=Add an accounting account +AccountAccounting=Accounting account +AccountAccountingShort=Account +SubledgerAccount=Subledger account +SubledgerAccountLabel=Subledger account label +ShowAccountingAccount=Show accounting account +ShowAccountingJournal=Show accounting journal +ShowAccountingAccountInLedger=Show accounting account in ledger +ShowAccountingAccountInJournals=Show accounting account in journals +AccountAccountingSuggest=Accounting account suggested +MenuDefaultAccounts=Default accounts +MenuBankAccounts=Bank accounts +MenuVatAccounts=Vat accounts +MenuTaxAccounts=Tax accounts +MenuExpenseReportAccounts=Expense report accounts +MenuLoanAccounts=Loan accounts +MenuProductsAccounts=Product accounts +MenuClosureAccounts=Closure accounts +MenuAccountancyClosure=Closure +MenuAccountancyValidationMovements=Validate movements +ProductsBinding=Products accounts +TransferInAccounting=Transfer in accounting +RegistrationInAccounting=Recording in accounting +Binding=Binding to accounts +CustomersVentilation=Customer invoice binding +SuppliersVentilation=Vendor invoice binding +ExpenseReportsVentilation=Expense report binding +CreateMvts=Create new transaction +UpdateMvts=Modification of a transaction +ValidTransaction=Validate transaction +WriteBookKeeping=Record transactions in accounting +Bookkeeping=Ledger +BookkeepingSubAccount=Subledger +AccountBalance=Account balance +ObjectsRef=Source object ref +CAHTF=Total purchase vendor before tax +TotalExpenseReport=Total expense report +InvoiceLines=Lines of invoices to bind +InvoiceLinesDone=Bound lines of invoices +ExpenseReportLines=Lines of expense reports to bind +ExpenseReportLinesDone=Bound lines of expense reports +IntoAccount=Bind line with the accounting account +TotalForAccount=Total accounting account + + +Ventilate=Bind +LineId=Id line +Processing=Processing +EndProcessing=Process terminated. +SelectedLines=Selected lines +Lineofinvoice=Line of invoice +LineOfExpenseReport=Line of expense report +NoAccountSelected=No accounting account selected +VentilatedinAccount=Binded successfully to the accounting account +NotVentilatedinAccount=Not bound to the accounting account +XLineSuccessfullyBinded=%s products/services successfully bound to an accounting account +XLineFailedToBeBinded=%s products/services were not bound to any accounting account + +ACCOUNTING_LIMIT_LIST_VENTILATION=Maximum number of lines on list and bind page (recommended: 50) +ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the page "Binding to do" by the most recent elements +ACCOUNTING_LIST_SORT_VENTILATION_DONE=Begin the sorting of the page "Binding done" by the most recent elements + +ACCOUNTING_LENGTH_DESCRIPTION=Truncate product & services description in listings after x chars (Best = 50) +ACCOUNTING_LENGTH_DESCRIPTION_ACCOUNT=Truncate product & services account description form in listings after x chars (Best = 50) +ACCOUNTING_LENGTH_GACCOUNT=Length of the general accounting accounts (If you set value to 6 here, the account '706' will appear like '706000' on screen) +ACCOUNTING_LENGTH_AACCOUNT=Length of the third-party accounting accounts (If you set value to 6 here, the account '401' will appear like '401000' on screen) +ACCOUNTING_MANAGE_ZERO=Allow to manage different number of zeros at the end of an accounting account. Needed by some countries (like Switzerland). If set to off (default), you can set the following two parameters to ask the application to add virtual zeros. +BANK_DISABLE_DIRECT_INPUT=Disable direct recording of transaction in bank account +ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Enable draft export on journal +ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value) +ACCOUNTING_DATE_START_BINDING=Define a date to start binding & transfer in accountancy. Below this date, the transactions will not be transferred to accounting. +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default + +ACCOUNTING_SELL_JOURNAL=Sell journal +ACCOUNTING_PURCHASE_JOURNAL=Purchase journal +ACCOUNTING_MISCELLANEOUS_JOURNAL=Miscellaneous journal +ACCOUNTING_EXPENSEREPORT_JOURNAL=Expense report journal +ACCOUNTING_SOCIAL_JOURNAL=Social journal +ACCOUNTING_HAS_NEW_JOURNAL=Has new Journal + +ACCOUNTING_RESULT_PROFIT=Result accounting account (Profit) +ACCOUNTING_RESULT_LOSS=Result accounting account (Loss) +ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Journal of closure + +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Accounting account of transitional bank transfer +TransitionalAccount=Transitional bank transfer account + +ACCOUNTING_ACCOUNT_SUSPENSE=Accounting account of wait +DONATION_ACCOUNTINGACCOUNT=Accounting account to register donations +ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Accounting account to register subscriptions + +ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Accounting account by default to register customer deposit +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) + +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Accounting account by default for the bought products (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Accounting account by default for the bought products in EEC (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought products and imported out of EEC (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Accounting account by default for the sold products (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Accounting account by default for the products sold in EEC (used if not defined in the product sheet) +ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Accounting account by default for the products sold and exported out of EEC (used if not defined in the product sheet) + +ACCOUNTING_SERVICE_BUY_ACCOUNT=Accounting account by default for the bought services (used if not defined in the service sheet) +ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Accounting account by default for the bought services in EEC (used if not defined in the service sheet) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Accounting account by default for the bought services and imported out of EEC (used if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Accounting account by default for the sold services (used if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Accounting account by default for the services sold in EEC (used if not defined in the service sheet) +ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Accounting account by default for the services sold and exported out of EEC (used if not defined in the service sheet) + +Doctype=Type of document +Docdate=Date +Docref=Reference +LabelAccount=Label account +LabelOperation=Label operation +Sens=Direction +AccountingDirectionHelp=For an accounting account of a customer, use Credit to record a payment you have received
For an accounting account of a supplier, use Debit to record a payment you made +LetteringCode=Lettering code +Lettering=Lettering +Codejournal=Journal +JournalLabel=Journal label +NumPiece=Piece number +TransactionNumShort=Num. transaction +AccountingCategory=Custom group +GroupByAccountAccounting=Group by general ledger account +GroupBySubAccountAccounting=Group by subledger account +AccountingAccountGroupsDesc=You can define here some groups of accounting account. They will be used for personalized accounting reports. +ByAccounts=By accounts +ByPredefinedAccountGroups=By predefined groups +ByPersonalizedAccountGroups=By personalized groups +ByYear=By year +NotMatch=Not Set +DeleteMvt=Delete some lines from accounting +DelMonth=Month to delete +DelYear=Year to delete +DelJournal=Journal to delete +ConfirmDeleteMvt=This will delete all lines in accountancy for the year/month and/or for a specific journal (At least one criterion is required). You will have to reuse the feature '%s' to have the deleted record back in the ledger. +ConfirmDeleteMvtPartial=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) +FinanceJournal=Finance journal +ExpenseReportsJournal=Expense reports journal +DescFinanceJournal=Finance journal including all the types of payments by bank account +DescJournalOnlyBindedVisible=This is a view of record that are bound to an accounting account and can be recorded into the Journals and Ledger. +VATAccountNotDefined=Account for VAT not defined +ThirdpartyAccountNotDefined=Account for third party not defined +ProductAccountNotDefined=Account for product not defined +FeeAccountNotDefined=Account for fee not defined +BankAccountNotDefined=Account for bank not defined +CustomerInvoicePayment=Payment of invoice customer +ThirdPartyAccount=Third-party account +NewAccountingMvt=New transaction +NumMvts=Numero of transaction +ListeMvts=List of movements +ErrorDebitCredit=Debit and Credit cannot have a value at the same time +AddCompteFromBK=Add accounting accounts to the group +ReportThirdParty=List third-party account +DescThirdPartyReport=Consult here the list of third-party customers and vendors and their accounting accounts +ListAccounts=List of the accounting accounts +UnknownAccountForThirdparty=Unknown third-party account. We will use %s +UnknownAccountForThirdpartyBlocking=Unknown third-party account. Blocking error +ThirdpartyAccountNotDefinedOrThirdPartyUnknown=Subledger account not defined or third party or user unknown. We will use %s +ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Third-party unknown and subledger not defined on the payment. We will keep the subledger account value empty. +ThirdpartyAccountNotDefinedOrThirdPartyUnknownBlocking=Subledger account not defined or third party or user unknown. Blocking error. +UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Unknown third-party account and waiting account not defined. Blocking error +PaymentsNotLinkedToProduct=Payment not linked to any product / service +OpeningBalance=Opening balance +ShowOpeningBalance=Show opening balance +HideOpeningBalance=Hide opening balance +ShowSubtotalByGroup=Show subtotal by level + +Pcgtype=Group of account +PcgtypeDesc=Group of account are used as predefined 'filter' and 'grouping' criteria for some accounting reports. For example, 'INCOME' or 'EXPENSE' are used as groups for accounting accounts of products to build the expense/income report. + +Reconcilable=Reconcilable + +TotalVente=Total turnover before tax +TotalMarge=Total sales margin + +DescVentilCustomer=Consult here the list of customer invoice lines bound (or not) to a product accounting account +DescVentilMore=In most cases, if you use predefined products or services and you set the account number on the product/service card, the application will be able to make all the binding between your invoice lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on product/service cards or if you still have some lines not bound to an account, you will have to make a manual binding from the menu "%s". +DescVentilDoneCustomer=Consult here the list of the lines of invoices customers and their product accounting account +DescVentilTodoCustomer=Bind invoice lines not already bound with a product accounting account +ChangeAccount=Change the product/service accounting account for selected lines with the following accounting account: +Vide=- +DescVentilSupplier=Consult here the list of vendor invoice lines bound or not yet bound to a product accounting account (only record not already transfered in accountancy are visible) +DescVentilDoneSupplier=Consult here the list of the lines of vendor invoices and their accounting account +DescVentilTodoExpenseReport=Bind expense report lines not already bound with a fee accounting account +DescVentilExpenseReport=Consult here the list of expense report lines bound (or not) to a fee accounting account +DescVentilExpenseReportMore=If you setup accounting account on type of expense report lines, the application will be able to make all the binding between your expense report lines and the accounting account of your chart of accounts, just in one click with the button "%s". If account was not set on fees dictionary or if you still have some lines not bound to any account, you will have to make a manual binding from the menu "%s". +DescVentilDoneExpenseReport=Consult here the list of the lines of expenses reports and their fees accounting account + +Closure=Annual closure +DescClosure=Consult here the number of movements by month who are not yet validated & locked +OverviewOfMovementsNotValidated=Overview of movements not validated and locked +AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked +NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked +ValidateMovements=Validate and lock record... +DescValidateMovements=Any modification or deletion of writing, lettering and deletes will be prohibited. All entries for an exercise must be validated otherwise closing will not be possible + +ValidateHistory=Bind Automatically +AutomaticBindingDone=Automatic bindings done (%s) - Automatic binding not possible for some record (%s) + +ErrorAccountancyCodeIsAlreadyUse=Error, you cannot delete this accounting account because it is used +MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +Balancing=Balancing +FicheVentilation=Binding card +GeneralLedgerIsWritten=Transactions are written in the Ledger +GeneralLedgerSomeRecordWasNotRecorded=Some of the transactions could not be journalized. If there is no other error message, this is probably because they were already journalized. +NoNewRecordSaved=No more record to transfer +ListOfProductsWithoutAccountingAccount=List of products not bound to any accounting account +ChangeBinding=Change the binding +Accounted=Accounted in ledger +NotYetAccounted=Not yet transferred to accounting +ShowTutorial=Show Tutorial +NotReconciled=Not reconciled +WarningRecordWithoutSubledgerAreExcluded=Warning, all lines without subledger account defined are filtered and excluded from this view +AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts + +## Admin +BindingOptions=Binding options +ApplyMassCategories=Apply mass categories +AddAccountFromBookKeepingWithNoCategories=Available account not yet in the personalized group +CategoryDeleted=Category for the accounting account has been removed +AccountingJournals=Accounting journals +AccountingJournal=Accounting journal +NewAccountingJournal=New accounting journal +ShowAccountingJournal=Show accounting journal +NatureOfJournal=Nature of Journal +AccountingJournalType1=Miscellaneous operations +AccountingJournalType2=Sales +AccountingJournalType3=Purchases +AccountingJournalType4=Bank +AccountingJournalType5=Expenses report +AccountingJournalType8=Inventory +AccountingJournalType9=Has-new +ErrorAccountingJournalIsAlreadyUse=This journal is already use +AccountingAccountForSalesTaxAreDefinedInto=Note: Accounting account for Sales tax are defined into menu %s - %s +NumberOfAccountancyEntries=Number of entries +NumberOfAccountancyMovements=Number of movements +ACCOUNTING_DISABLE_BINDING_ON_SALES=Disable binding & transfer in accountancy on sales (customer invoices will not be taken into account in accounting) +ACCOUNTING_DISABLE_BINDING_ON_PURCHASES=Disable binding & transfer in accountancy on purchases (vendor invoices will not be taken into account in accounting) +ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Disable binding & transfer in accountancy on expense reports (expense reports will not be taken into account in accounting) + +## Export +NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) +DateValidationAndLock=Date validation and lock +ConfirmExportFile=Confirmation of the generation of the accounting export file ? +ExportDraftJournal=Export draft journal +Modelcsv=Model of export +Selectmodelcsv=Select a model of export +Modelcsv_normal=Classic export +Modelcsv_CEGID=Export for CEGID Expert Comptabilité +Modelcsv_COALA=Export for Sage Coala +Modelcsv_bob50=Export for Sage BOB 50 +Modelcsv_ciel=Export for Sage50, Ciel Compta or Compta Evo. (Format XIMPORT) +Modelcsv_quadratus=Export for Quadratus QuadraCompta +Modelcsv_ebp=Export for EBP +Modelcsv_cogilog=Export for Cogilog +Modelcsv_agiris=Export for Agiris Isacompta +Modelcsv_LDCompta=Export for LD Compta (v9) (Test) +Modelcsv_LDCompta10=Export for LD Compta (v10 & higher) +Modelcsv_openconcerto=Export for OpenConcerto (Test) +Modelcsv_configurable=Export CSV Configurable +Modelcsv_FEC=Export FEC +Modelcsv_FEC2=Export FEC (With dates generation writing / document reversed) +Modelcsv_Sage50_Swiss=Export for Sage 50 Switzerland +Modelcsv_winfic=Export for Winfic - eWinfic - WinSis Compta +Modelcsv_Gestinumv3=Export for Gestinum (v3) +Modelcsv_Gestinumv5=Export for Gestinum (v5) +Modelcsv_charlemagne=Export for Aplim Charlemagne +ChartofaccountsId=Chart of accounts Id + +## Tools - Init accounting account on product / service +InitAccountancy=Init accountancy +InitAccountancyDesc=This page can be used to initialize an accounting account on products and services that does not have accounting account defined for sales and purchases. +DefaultBindingDesc=This page can be used to set a default account to use to link transactions record about payment salaries, donation, taxes and vat when no specific accounting account were already set. +DefaultClosureDesc=This page can be used to set parameters used for accounting closures. +Options=Options +OptionModeProductSell=Mode sales +OptionModeProductSellIntra=Mode sales exported in EEC +OptionModeProductSellExport=Mode sales exported in other countries +OptionModeProductBuy=Mode purchases +OptionModeProductBuyIntra=Mode purchases imported in EEC +OptionModeProductBuyExport=Mode purchased imported from other countries +OptionModeProductSellDesc=Show all products with accounting account for sales. +OptionModeProductSellIntraDesc=Show all products with accounting account for sales in EEC. +OptionModeProductSellExportDesc=Show all products with accounting account for other foreign sales. +OptionModeProductBuyDesc=Show all products with accounting account for purchases. +OptionModeProductBuyIntraDesc=Show all products with accounting account for purchases in EEC. +OptionModeProductBuyExportDesc=Show all products with accounting account for other foreign purchases. +CleanFixHistory=Remove accounting code from lines that not exists into charts of account +CleanHistory=Reset all bindings for selected year +PredefinedGroups=Predefined groups +WithoutValidAccount=Without valid dedicated account +WithValidAccount=With valid dedicated account +ValueNotIntoChartOfAccount=This value of accounting account does not exist into chart of account +AccountRemovedFromGroup=Account removed from group +SaleLocal=Local sale +SaleExport=Export sale +SaleEEC=Sale in EEC +SaleEECWithVAT=Sale in EEC with a VAT not null, so we suppose this is NOT an intracommunautary sale and the suggested account is the standard product account. +SaleEECWithoutVATNumber=Sale in EEC with no VAT but the VAT ID of thirdparty is not defined. We fallback on the product account for standard sales. You can fix the VAT ID of thirdparty or the product account if needed. +ForbiddenTransactionAlreadyExported=Forbidden: The transaction has been validated and/or exported. +ForbiddenTransactionAlreadyValidated=Forbidden: The transaction has been validated. +## Dictionary +Range=Range of accounting account +Calculated=Calculated +Formula=Formula + +## Reconcile +Unlettering=Unreconcile +AccountancyNoLetteringModified=No reconcile modified +AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified +AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified +AccountancyNoUnletteringModified=No unreconcile modified +AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified +AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified + +## Confirm box +ConfirmMassUnlettering=Bulk Unreconcile confirmation +ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassDeleteBookkeepingWriting=Bulk Delete confirmation +ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? + +## Error +SomeMandatoryStepsOfSetupWereNotDone=Some mandatory steps of setup was not done, please complete them +ErrorNoAccountingCategoryForThisCountry=No accounting account group available for country %s (See Home - Setup - Dictionaries) +ErrorInvoiceContainsLinesNotYetBounded=You try to journalize some lines of the invoice %s, but some other lines are not yet bounded to accounting account. Journalization of all invoice lines for this invoice are refused. +ErrorInvoiceContainsLinesNotYetBoundedShort=Some lines on invoice are not bound to accounting account. +ExportNotSupported=The export format setuped is not supported into this page +BookeppingLineAlreayExists=Lines already existing into bookkeeping +NoJournalDefined=No journal defined +Binded=Lines bound +ToBind=Lines to bind +UseMenuToSetBindindManualy=Lines not yet bound, use menu %s to make the binding manually +SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry this module is not compatible with the experimental feature of situation invoices +AccountancyErrorMismatchLetterCode=Mismatch in reconcile code +AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 +AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists + +## Import +ImportAccountingEntries=Accounting entries +ImportAccountingEntriesFECFormat=Accounting entries - FEC format +FECFormatJournalCode=Code journal (JournalCode) +FECFormatJournalLabel=Label journal (JournalLib) +FECFormatEntryNum=Piece number (EcritureNum) +FECFormatEntryDate=Piece date (EcritureDate) +FECFormatGeneralAccountNumber=General account number (CompteNum) +FECFormatGeneralAccountLabel=General account label (CompteLib) +FECFormatSubledgerAccountNumber=Subledger account number (CompAuxNum) +FECFormatSubledgerAccountLabel=Subledger account number (CompAuxLib) +FECFormatPieceRef=Piece ref (PieceRef) +FECFormatPieceDate=Piece date creation (PieceDate) +FECFormatLabelOperation=Label operation (EcritureLib) +FECFormatDebit=Debit (Debit) +FECFormatCredit=Credit (Credit) +FECFormatReconcilableCode=Reconcilable code (EcritureLet) +FECFormatReconcilableDate=Reconcilable date (DateLet) +FECFormatValidateDate=Piece date validated (ValidDate) +FECFormatMulticurrencyAmount=Multicurrency amount (Montantdevise) +FECFormatMulticurrencyCode=Multicurrency code (Idevise) + +DateExport=Date export +WarningReportNotReliable=Warning, this report is not based on the Ledger, so does not contains transaction modified manually in the Ledger. If your journalization is up to date, the bookkeeping view is more accurate. +ExpenseReportJournal=Expense Report Journal +InventoryJournal=Inventory Journal + +NAccounts=%s accounts diff --git a/htdocs/langs/ms_MY/admin.lang b/htdocs/langs/ms_MY/admin.lang new file mode 100644 index 00000000000..0b178806c88 --- /dev/null +++ b/htdocs/langs/ms_MY/admin.lang @@ -0,0 +1,2288 @@ +# Dolibarr language file - Source file is en_US - admin +BoldRefAndPeriodOnPDF=Print reference and period of product item in PDF +BoldLabelOnPDF=Print label of product item in Bold in PDF +Foundation=Foundation +Version=Version +Publisher=Publisher +VersionProgram=Version program +VersionLastInstall=Initial install version +VersionLastUpgrade=Latest version upgrade +VersionExperimental=Experimental +VersionDevelopment=Development +VersionUnknown=Unknown +VersionRecommanded=Recommended +FileCheck=Fileset Integrity Checks +FileCheckDesc=This tool allows you to check the integrity of files and the setup of your application, comparing each file with the official one. The value of some setup constants may also be checked. You can use this tool to determine if any files have been modified (e.g by a hacker). +FileIntegrityIsStrictlyConformedWithReference=Files integrity is strictly conformed with the reference. +FileIntegrityIsOkButFilesWereAdded=Files integrity check has passed, however some new files have been added. +FileIntegritySomeFilesWereRemovedOrModified=Files integrity check has failed. Some files were modified, removed or added. +GlobalChecksum=Global checksum +MakeIntegrityAnalysisFrom=Make integrity analysis of application files from +LocalSignature=Embedded local signature (less reliable) +RemoteSignature=Remote distant signature (more reliable) +FilesMissing=Missing Files +FilesUpdated=Updated Files +FilesModified=Modified Files +FilesAdded=Added Files +FileCheckDolibarr=Check integrity of application files +AvailableOnlyOnPackagedVersions=The local file for integrity checking is only available when the application is installed from an official package +XmlNotFound=Xml Integrity File of application not found +SessionId=Session ID +SessionSaveHandler=Handler to save sessions +SessionSavePath=Session save location +PurgeSessions=Purge of sessions +ConfirmPurgeSessions=Do you really want to purge all sessions? This will disconnect every user (except yourself). +NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow listing all running sessions. +LockNewSessions=Lock new connections +ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself? Only user %s will be able to connect after that. +UnlockNewSessions=Remove connection lock +YourSession=Your session +Sessions=Users Sessions +WebUserGroup=Web server user/group +PermissionsOnFiles=Permissions on files +PermissionsOnFilesInWebRoot=Permissions on files in web root directory +PermissionsOnFile=Permissions on file %s +NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). +DBStoringCharset=Database charset to store data +DBSortingCharset=Database charset to sort data +HostCharset=Host charset +ClientCharset=Client charset +ClientSortingCharset=Client collation +WarningModuleNotActive=Module %s must be enabled +WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. +DolibarrSetup=Dolibarr install or upgrade +InternalUser=Internal user +ExternalUser=External user +InternalUsers=Internal users +ExternalUsers=External users +UserInterface=User interface +GUISetup=Display +SetupArea=Setup +UploadNewTemplate=Upload new template(s) +FormToTestFileUploadForm=Form to test file upload (according to setup) +ModuleMustBeEnabled=The module/application %s must be enabled +ModuleIsEnabled=The module/application %s has been enabled +IfModuleEnabled=Note: yes is effective only if module %s is enabled +RemoveLock=Remove/rename file %s if it exists, to allow usage of the Update/Install tool. +RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. +SecuritySetup=Security setup +PHPSetup=PHP setup +OSSetup=OS setup +SecurityFilesDesc=Define here options related to security about uploading files. +ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher +ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher +ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +DictionarySetup=Dictionary setup +Dictionary=Dictionaries +ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record +ErrorCodeCantContainZero=Code can't contain value 0 +DisableJavascript=Disable JavaScript and Ajax functions +DisableJavascriptNote=Note: For test or debug purpose only. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user +UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.
This may increase performance if you have a large number of third parties, but it is less convenient. +DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.
This may increase performance if you have a large number of contacts, but it is less convenient. +NumberOfKeyToSearch=Number of characters to trigger search: %s +NumberOfBytes=Number of Bytes +SearchString=Search string +NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a project linked to another third party +TimesheetPreventAfterFollowingMonths=Prevent recording time spent after the following number of months +JavascriptDisabled=JavaScript disabled +UsePreviewTabs=Use preview tabs +ShowPreview=Show preview +ShowHideDetails=Show-Hide details +PreviewNotAvailable=Preview not available +ThemeCurrentlyActive=Theme currently active +MySQLTimeZone=TimeZone MySql (database) +TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submitted string. The timezone has effect only when using the UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). +Space=Space +Table=Table +Fields=Fields +Index=Index +Mask=Mask +NextValue=Next value +NextValueForInvoices=Next value (invoices) +NextValueForCreditNotes=Next value (credit notes) +NextValueForDeposit=Next value (down payment) +NextValueForReplacements=Next value (replacements) +MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter +NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration +MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page +AntiVirusCommand=Full path to antivirus command +AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParam= More parameters on command line +AntiVirusParamExample=Example for ClamAv Daemon: --fdpass
Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Accounting module setup +UserSetup=User management setup +MultiCurrencySetup=Multi-currency setup +MenuLimits=Limits and accuracy +MenuIdParent=Parent menu ID +DetailMenuIdParent=ID of parent menu (empty for a top menu) +ParentID=Parent ID +DetailPosition=Sort number to define menu position +AllMenus=All +NotConfigured=Module/Application not configured +Active=Active +SetupShort=Setup +OtherOptions=Other options +OtherSetup=Other Setup +CurrentValueSeparatorDecimal=Decimal separator +CurrentValueSeparatorThousand=Thousand separator +Destination=Destination +IdModule=Module ID +IdPermissions=Permissions ID +LanguageBrowserParameter=Parameter %s +LocalisationDolibarrParameters=Localization parameters +ClientHour=Client time (user) +OSTZ=Server OS Time Zone +PHPTZ=PHP server Time Zone +DaylingSavingTime=Daylight saving time +CurrentHour=PHP Time (server) +CurrentSessionTimeOut=Current session timeout +YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a .htaccess file with a line like this "SetEnv TZ Europe/Paris" +HoursOnThisPageAreOnServerTZ=Warning, in contrary of other screens, hours on this page are not in your local timezone, but of the timezone of the server. +Box=Widget +Boxes=Widgets +MaxNbOfLinesForBoxes=Max. number of lines for widgets +AllWidgetsWereEnabled=All available widgets are enabled +PositionByDefault=Default order +Position=Position +MenusDesc=Menu managers set content of the two menu bars (horizontal and vertical). +MenusEditorDesc=The menu editor allows you to define custom menu entries. Use it carefully to avoid instability and permanently unreachable menu entries.
Some modules add menu entries (in menu All mostly). If you remove some of these entries by mistake, you can restore them disabling and reenabling the module. +MenuForUsers=Menu for users +LangFile=.lang file +Language_en_US_es_MX_etc=Language (en_US, es_MX, ...) +System=System +SystemInfo=System information +SystemToolsArea=System tools area +SystemToolsAreaDesc=This area provides administration functions. Use the menu to choose the required feature. +Purge=Purge +PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server. +PurgeDeleteLogFile=Delete log files, including %s defined for Syslog module (no risk of losing data) +PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Parameter can be 'tempfilesold', 'logfiles' or both 'tempfilesold+logfiles'. Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago. +PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data) +PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: %s.
This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files. +PurgeRunNow=Purge now +PurgeNothingToDelete=No directory or files to delete. +PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeNDirectoriesFailed=Failed to delete %s files or directories. +PurgeAuditEvents=Purge all security events +ConfirmPurgeAuditEvents=Are you sure you want to purge all security events? All security logs will be deleted, no other data will be removed. +GenerateBackup=Generate backup +Backup=Backup +Restore=Restore +RunCommandSummary=Backup has been launched with the following command +BackupResult=Backup result +BackupFileSuccessfullyCreated=Backup file successfully generated +YouCanDownloadBackupFile=The generated file can now be downloaded +NoBackupFileAvailable=No backup files available. +ExportMethod=Export method +ImportMethod=Import method +ToBuildBackupFileClickHere=To build a backup file, click here. +ImportMySqlDesc=To import a MySQL backup file, you may use phpMyAdmin via your hosting or use the mysql command from the Command line.
For example: +ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +ImportMySqlCommand=%s %s < mybackupfile.sql +ImportPostgreSqlCommand=%s %s mybackupfile.sql +FileNameToGenerate=Filename for backup: +Compression=Compression +CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import +CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later +ExportCompatibility=Compatibility of generated export file +ExportUseMySQLQuickParameter=Use the --quick parameter +ExportUseMySQLQuickParameterHelp=The '--quick' parameter helps limit RAM consumption for large tables. +MySqlExportParameters=MySQL export parameters +PostgreSqlExportParameters= PostgreSQL export parameters +UseTransactionnalMode=Use transactional mode +FullPathToMysqldumpCommand=Full path to mysqldump command +FullPathToPostgreSQLdumpCommand=Full path to pg_dump command +AddDropDatabase=Add DROP DATABASE command +AddDropTable=Add DROP TABLE command +ExportStructure=Structure +NameColumn=Name columns +ExtendedInsert=Extended INSERT +NoLockBeforeInsert=No lock commands around INSERT +DelayedInsert=Delayed insert +EncodeBinariesInHexa=Encode binary data in hexadecimal +IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE) +AutoDetectLang=Autodetect (browser language) +FeatureDisabledInDemo=Feature disabled in demo +FeatureAvailableOnlyOnStable=Feature only available on official stable versions +BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the trashcan to disable it. +OnlyActiveElementsAreShown=Only elements from enabled modules are shown. +ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button %s of each module to enable or disable a module/application. +ModulesDesc2=Click the wheel button %s to configure the module/application. +ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet... +ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. +ModulesMarketPlaces=Find external app/modules +ModulesDevelopYourModule=Develop your own app/modules +ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you. +DOLISTOREdescriptionLong=Instead of switching on www.dolistore.com web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)... +NewModule=New module +FreeModule=Free +CompatibleUpTo=Compatible with version %s +NotCompatible=This module does not seem compatible with your Dolibarr %s (Min %s - Max %s). +CompatibleAfterUpdate=This module requires an update to your Dolibarr %s (Min %s - Max %s). +SeeInMarkerPlace=See in Market place +SeeSetupOfModule=See setup of module %s +SetOptionTo=Set option %s to %s +Updated=Updated +AchatTelechargement=Buy / Download +GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %s. +DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliPartnersDesc=List of companies providing custom-developed modules or features.
Note: since Dolibarr is an open source application, anyone experienced in PHP programming should be able to develop a module. +WebSiteDesc=External websites for more add-on (non-core) modules... +DevelopYourModuleDesc=Some solutions to develop your own module... +URL=URL +RelativeURL=Relative URL +BoxesAvailable=Widgets available +BoxesActivated=Widgets activated +ActivateOn=Activate on +ActiveOn=Activated on +ActivatableOn=Activatable on +SourceFile=Source file +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled +Required=Required +UsedOnlyWithTypeOption=Used by some agenda option only +Security=Security +Passwords=Passwords +DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. +MainDbPasswordFileConfEncrypted=Encrypt database password stored in conf.php. It is strongly recommended to activate this option. +InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="...";
by
$dolibarr_main_db_pass="crypted:%s"; +InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:...";
by
$dolibarr_main_db_pass="%s"; +ProtectAndEncryptPdfFiles=Protect generated PDF files. This is NOT recommended as it breaks bulk PDF generation. +ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature makes building of a global merged PDFs not working. +Feature=Feature +DolibarrLicense=License +Developpers=Developers/contributors +OfficialWebSite=Dolibarr official web site +OfficialWebSiteLocal=Local web site (%s) +OfficialWiki=Dolibarr documentation / Wiki +OfficialDemo=Dolibarr online demo +OfficialMarketPlace=Official market place for external modules/addons +OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +ReferencedPreferredPartners=Preferred Partners +OtherResources=Other resources +ExternalResources=External Resources +SocialNetworks=Social Networks +SocialNetworkId=Social Network ID +ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s +ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s +HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. +HelpCenterDesc2=Some of these resources are only available in english. +CurrentMenuHandler=Current menu handler +MeasuringUnit=Measuring unit +LeftMargin=Left margin +TopMargin=Top margin +PaperSize=Paper type +Orientation=Orientation +SpaceX=Space X +SpaceY=Space Y +FontSize=Font size +Content=Content +ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) +NoticePeriod=Notice period +NewByMonth=New by month +Emails=Emails +EMailsSetup=Emails setup +EMailsDesc=This page allows you to set parameters or options for email sending. +EmailSenderProfiles=Emails sender profiles +EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email. +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) +MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) +MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) +MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to +MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) +MAIN_MAIL_FORCE_SENDTO=Send all emails to (instead of real recipients, for test purposes) +MAIN_MAIL_ENABLED_USER_DEST_SELECT=Suggest emails of employees (if defined) into the list of predefined recipient when writing a new email +MAIN_MAIL_SENDMODE=Email sending method +MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication) +MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication) +MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption +MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorise les certificats auto-signés +MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature +MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim +MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector +MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing +MAIN_DISABLE_ALL_SMS=Disable all SMS sending (for test purposes or demos) +MAIN_SMS_SENDMODE=Method to use to send SMS +MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending +MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) +UserEmail=User email +CompanyEmail=Company Email +FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +FixOnTransifex=Fix the translation on the online translation platform of project +SubmitTranslation=If the translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or, if you are a developer, with a PR on github.com/Dolibarr/dolibarr +ModuleSetup=Module setup +ModulesSetup=Modules/Application setup +ModuleFamilyBase=System +ModuleFamilyCrm=Customer Relationship Management (CRM) +ModuleFamilySrm=Vendor Relationship Management (VRM) +ModuleFamilyProducts=Product Management (PM) +ModuleFamilyHr=Human Resource Management (HR) +ModuleFamilyProjects=Projects/Collaborative work +ModuleFamilyOther=Other +ModuleFamilyTechnic=Multi-modules tools +ModuleFamilyExperimental=Experimental modules +ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) +ModuleFamilyECM=Electronic Content Management (ECM) +ModuleFamilyPortal=Websites and other frontal application +ModuleFamilyInterface=Interfaces with external systems +MenuHandlers=Menu handlers +MenuAdmin=Menu editor +DoNotUseInProduction=Do not use in production +ThisIsProcessToFollow=Upgrade procedure: +ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: +StepNb=Step %s +FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). +DownloadPackageFromWebSite=Download package (for example from the official web site %s). +UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s +UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s +SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. +NotExistsDirect=The alternative root directory is not defined to an existing directory.
+InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
+InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
If these lines are commented with "#", to enable them, just uncomment by removing the "#" character. +YouCanSubmitFile=You can upload the .zip file of module package from here: +CurrentVersion=Dolibarr current version +CallUpdatePage=Browse to the page that updates the database structure and data: %s. +LastStableVersion=Latest stable version +LastActivationDate=Latest activation date +LastActivationAuthor=Latest activation author +LastActivationIP=Latest activation IP +LastActivationVersion=Latest activation version +UpdateServerOffline=Update server offline +WithCounter=Manage a counter +GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags can be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as the previous one but an offset corresponding to the number to the right of the + sign is applied starting on the first %s.
{000000@x} same as the previous one but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then the sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
+GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated to the customer. This counter dedicated to customer is reset at same time as the global counter.
{tttt} The code of third party type on n characters (see menu Home - Setup - Dictionary - Types of third parties). If you add this tag, the counter will be different for each type of third party.
+GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes3EAN=All other characters in the mask will remain intact (except * or ? in 13th position in EAN13).
Spaces are not allowed.
In EAN13, the last character after the last } in 13th position should be * or ? . It will be replaced by the calculated key.
+GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany, with date 2007-01-31:
+GenericMaskCodes4b=Example on third party created on 2007-03-01:
+GenericMaskCodes4c=Example on product created on 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} will give IN0701-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' +GenericNumRefModelDesc=Returns a customizable number according to a defined mask. +ServerAvailableOnIPOrPort=Server is available at address %s on port %s +ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s +DoTestServerAvailability=Test server connectivity +DoTestSend=Test sending +DoTestSendHTML=Test sending HTML +ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. +UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. +UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. +SeeWikiForAllTeam=Take a look at the Wiki page for a list of contributors and their organization +UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) +DisableLinkToHelpCenter=Hide the link "Need help or support" on the login page +DisableLinkToHelp=Hide the link to the online help "%s" +AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed. +ConfirmPurge=Are you sure you want to execute this purge?
This will permanently delete all your data files with no way to restore them (ECM files, attached files...). +MinLength=Minimum length +LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +LanguageFile=Language file +ExamplesWithCurrentSetup=Examples with current configuration +ListOfDirectories=List of OpenDocument templates directories +ListOfDirectoriesForModelGenODT=List of directories containing templates files with OpenDocument format.

Put here full path of directories.
Add a carriage return between eah directory.
To add a directory of the GED module, add here DOL_DATA_ROOT/ecm/yourdirectoryname.

Files in those directories must end with .odt or .ods. +NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories +ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template +FirstnameNamePosition=Position of Name/Lastname +DescWeather=The following images will be shown on the dashboard when the number of late actions reach the following values: +KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) +TestSubmitForm=Input test form +ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever the user choice. Also this menu manager specialized for smartphones does not work on all smartphone. Use another menu manager if you experience problems with yours. +ThemeDir=Skins directory +ConnectionTimeout=Connection timeout +ResponseTimeout=Response timeout +SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +ModuleMustBeEnabledFirst=Module %s must be enabled first if you need this feature. +SecurityToken=Key to secure URLs +NoSmsEngine=No SMS sender manager available. A SMS sender manager is not installed with the default distribution because they depend on an external vendor, but you can find some on %s +PDF=PDF +PDFDesc=Global options for PDF generation +PDFOtherDesc=PDF Option specific to some modules +PDFAddressForging=Rules for address section +HideAnyVATInformationOnPDF=Hide all information related to Sales Tax / VAT +PDFRulesForSalesTax=Rules for Sales Tax / VAT +PDFLocaltax=Rules for %s +HideLocalTaxOnPDF=Hide %s rate in column Sale Tax / VAT +HideDescOnPDF=Hide products description +HideRefOnPDF=Hide products ref. +HideDetailsOnPDF=Hide product lines details +PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position +Library=Library +UrlGenerationParameters=Parameters to secure URLs +SecurityTokenIsUnique=Use a unique securekey parameter for each URL +EnterRefToBuildUrl=Enter reference for object %s +GetSecuredUrl=Get calculated URL +ButtonHideUnauthorized=Hide unauthorized action buttons also for internal users (just greyed otherwise) +OldVATRates=Old VAT rate +NewVATRates=New VAT rate +PriceBaseTypeToChange=Modify on prices with base reference value defined on +MassConvert=Launch bulk conversion +PriceFormatInCurrentLanguage=Price Format In Current Language +String=String +String1Line=String (1 line) +TextLong=Long text +TextLongNLines=Long text (n lines) +HtmlText=Html text +Int=Integer +Float=Float +DateAndTime=Date and hour +Unique=Unique +Boolean=Boolean (one checkbox) +ExtrafieldPhone = Phone +ExtrafieldPrice = Price +ExtrafieldMail = Email +ExtrafieldUrl = Url +ExtrafieldSelect = Select list +ExtrafieldSelectList = Select from table +ExtrafieldSeparator=Separator (not a field) +ExtrafieldPassword=Password +ExtrafieldRadio=Radio buttons (one choice only) +ExtrafieldCheckBox=Checkboxes +ExtrafieldCheckBoxFromList=Checkboxes from table +ExtrafieldLink=Link to an object +ComputedFormula=Computed field +ComputedFormulaDesc=You can enter here a formula using other properties of object or any PHP coding to get a dynamic computed value. You can use any PHP compatible formulas including the "?" condition operator, and following global object: $db, $conf, $langs, $mysoc, $user, $object.
WARNING: Only some properties of $object may be available. If you need a properties not loaded, just fetch yourself the object into your formula like in the second example.
Using a computed field means you can't enter yourself any value from interface. Also, if there is a syntax error, the formula may return nothing.

Example of formula:
$object->id < 10 ? round($object->id / 2, 2): ($object->id + 2 * $user->id) * (int) substr($mysoc->zip, 1, 2)

Example to reload object
(($reloadedobj = new Societe($db)) && ($reloadedobj->fetchNoCompute($obj->id ? $obj->id: ($obj->rowid ? $obj->rowid: $object->id)) > 0)) ? $reloadedobj->array_options['options_extrafieldkey'] * $reloadedobj->capital / 5: '-1'

Other example of formula to force load of object and its parent object:
(($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref: 'Parent project not found' +Computedpersistent=Store computed field +ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! +ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).
Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) +ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
code3,value3
...

In order to have the list depending on another complementary attribute list:
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

In order to have the list depending on another list:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key +ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarly a primary int key
- filtersql is a SQL condition. It can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter which is the current id of current object
To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter +ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath +ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) +LibraryToBuildPDF=Library used for PDF generation +LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:
1: local tax apply on products and services without vat (localtax is calculated on amount without tax)
2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3: local tax apply on products without vat (localtax is calculated on amount without tax)
4: local tax apply on products including vat (localtax is calculated on amount + main vat)
5: local tax apply on services without vat (localtax is calculated on amount without tax)
6: local tax apply on services including vat (localtax is calculated on amount + tax) +SMS=SMS +LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s +RefreshPhoneLink=Refresh link +LinkToTest=Clickable link generated for user %s (click phone number to test) +KeepEmptyToUseDefault=Keep empty to use default value +KeepThisEmptyInMostCases=In most cases, you can keep this field empy. +DefaultLink=Default link +SetAsDefault=Set as default +ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ExternalModule=External module +InstalledInto=Installed into directory %s +BarcodeInitForThirdparties=Mass barcode init for third-parties +BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services +CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. +InitEmptyBarCode=Init value for next %s empty records +EraseAllCurrentBarCode=Erase all current barcode values +ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values? +AllBarcodeReset=All barcode values have been removed +NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled in the Barcode module setup. +EnableFileCache=Enable file cache +ShowDetailsInPDFPageFoot=Add more details into footer, such as company address or manager names (in addition to professional ids, company capital and VAT number). +NoDetails=No additional details in footer +DisplayCompanyInfo=Display company address +DisplayCompanyManagers=Display manager names +DisplayCompanyInfoAndManagers=Display company address and manager names +EnableAndSetupModuleCron=If you want to have this recurring invoice generated automatically, module *%s* must be enabled and correctly setup. Otherwise, generation of invoices must be done manually from this template using the *Create* button. Note that even if you enabled automatic generation, you can still safely launch manual generation. Generation of duplicates for the same period is not possible. +ModuleCompanyCodeCustomerAquarium=%s followed by customer code for a customer accounting code +ModuleCompanyCodeSupplierAquarium=%s followed by vendor code for a vendor accounting code +ModuleCompanyCodePanicum=Return an empty accounting code. +ModuleCompanyCodeDigitaria=Returns a compound accounting code according to the name of the third party. The code consists of a prefix that can be defined in the first position followed by the number of characters defined in the third party code. +ModuleCompanyCodeCustomerDigitaria=%s followed by the truncated customer name by the number of characters: %s for the customer accounting code. +ModuleCompanyCodeSupplierDigitaria=%s followed by the truncated supplier name by the number of characters: %s for the supplier accounting code. +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).
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... +WarningPHPMail=WARNING: The setup to send emails from the application is using the default generic setup. It is often better to setup outgoing emails to use the email server of your Email Service Provider instead of the default setup for several reasons: +WarningPHPMailA=- Using the server of the Email Service Provider increases the trustability of your email, so it increases the deliverablity without being flagged as SPAM +WarningPHPMailB=- Some Email Service Providers (like Yahoo) do not allow you to send an email from another server than their own server. Your current setup uses the server of the application to send email and not the server of your email provider, so some recipients (the one compatible with the restrictive DMARC protocol), will ask your email provider if they can accept your email and some email providers (like Yahoo) may respond "no" because the server is not theirs, so few of your sent Emails may not be accepted for delivery (be careful also of your email provider's sending quota). +WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to send emails is also interesting so all emails sent from application will also be saved into your "Sent" directory of your mailbox. +WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. +WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. +WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. +ActualMailSPFRecordFound=Actual SPF record found : %s +ClickToShowDescription=Click to show description +DependsOn=This module needs the module(s) +RequiredBy=This module is required by module(s) +TheKeyIsTheNameOfHtmlField=This is the name of the HTML field. Technical knowledge is required to read the content of the HTML page to get the key name of a field. +PageUrlForDefaultValues=You must enter the relative path of the page URL. If you include parameters in URL, the default values will be effective if all parameters are set to same value. +PageUrlForDefaultValuesCreate=
Example:
For the form to create a new third party, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/", so use path like mymodule/mypage.php and not custom/mymodule/mypage.php.
If you want default value only if url has some parameter, you can use %s +PageUrlForDefaultValuesList=
Example:
For the page that lists third parties, it is %s.
For URL of external modules installed into custom directory, do not include the "custom/" so use a path like mymodule/mypagelist.php and not custom/mymodule/mypagelist.php.
If you want default value only if url has some parameter, you can use %s +AlsoDefaultValuesAreEffectiveForActionCreate=Also note that overwritting default values for form creation works only for pages that were correctly designed (so with parameter action=create or presend...) +EnableDefaultValues=Enable customization of default values +EnableOverwriteTranslation=Enable usage of overwritten translation +GoIntoTranslationMenuToChangeThis=A translation has been found for the key with this code. To change this value, you must edit it from Home-Setup-translation. +WarningSettingSortOrder=Warning, setting a default sort order may result in a technical error when going on the list page if field is an unknown field. If you experience such an error, come back to this page to remove the default sort order and restore default behavior. +Field=Field +ProductDocumentTemplates=Document templates to generate product document +FreeLegalTextOnExpenseReports=Free legal text on expense reports +WatermarkOnDraftExpenseReports=Watermark on draft expense reports +ProjectIsRequiredOnExpenseReports=The project is mandatory for entering an expense report +PrefillExpenseReportDatesWithCurrentMonth=Pre-fill start and end dates of new expense report with start and end dates of the current month +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Force the entry of expense report amounts always in amount with taxes +AttachMainDocByDefault=Set this to 1 if you want to attach main document to email by default (if applicable) +FilesAttachedToEmail=Attach file +SendEmailsReminders=Send agenda reminders by emails +davDescription=Setup a WebDAV server +DAVSetup=Setup of module DAV +DAV_ALLOW_PRIVATE_DIR=Enable the generic private directory (WebDAV dedicated directory named "private" - login required) +DAV_ALLOW_PRIVATE_DIRTooltip=The generic private directory is a WebDAV directory anybody can access with its application login/pass. +DAV_ALLOW_PUBLIC_DIR=Enable the generic public directory (WebDAV dedicated directory named "public" - no login required) +DAV_ALLOW_PUBLIC_DIRTooltip=The generic public directory is a WebDAV directory anybody can access (in read and write mode), with no authorization required (login/password account). +DAV_ALLOW_ECM_DIR=Enable the DMS/ECM private directory (root directory of the DMS/ECM module - login required) +DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploaded when using the DMS/ECM module. Similarly as access from the web interface, you will need a valid login/password with adecuate permissions to access it. +# Modules +Module0Name=Users & Groups +Module0Desc=Users / Employees and Groups management +Module1Name=Third Parties +Module1Desc=Companies and contacts management (customers, prospects...) +Module2Name=Commercial +Module2Desc=Commercial management +Module10Name=Accounting (simplified) +Module10Desc=Simple accounting reports (journals, turnover) based on database content. Does not use any ledger table. +Module20Name=Proposals +Module20Desc=Commercial proposal management +Module22Name=Mass Emailings +Module22Desc=Manage bulk emailing +Module23Name=Energy +Module23Desc=Monitoring the consumption of energies +Module25Name=Sales Orders +Module25Desc=Sales order management +Module30Name=Invoices +Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers +Module40Name=Vendors +Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices) +Module42Name=Debug Logs +Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes. +Module43Name=Debug Bar +Module43Desc=A tool for developper adding a debug bar in your browser. +Module49Name=Editors +Module49Desc=Editor management +Module50Name=Products +Module50Desc=Management of Products +Module51Name=Mass mailings +Module51Desc=Mass paper mailing management +Module52Name=Stocks +Module52Desc=Stock management +Module53Name=Services +Module53Desc=Management of Services +Module54Name=Contracts/Subscriptions +Module54Desc=Management of contracts (services or recurring subscriptions) +Module55Name=Barcodes +Module55Desc=Barcode or QR code management +Module56Name=Payment by credit transfer +Module56Desc=Management of payment of suppliers by Credit Transfer orders. It includes generation of SEPA file for European countries. +Module57Name=Payments by Direct Debit +Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries. +Module58Name=ClickToDial +Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module60Name=Stickers +Module60Desc=Management of stickers +Module70Name=Interventions +Module70Desc=Intervention management +Module75Name=Expense and trip notes +Module75Desc=Expense and trip notes management +Module80Name=Shipments +Module80Desc=Shipments and delivery note management +Module85Name=Banks & Cash +Module85Desc=Management of bank or cash accounts +Module100Name=External Site +Module100Desc=Add a link to an external website as a main menu icon. Website is shown in a frame under the top menu. +Module105Name=Mailman and SPIP +Module105Desc=Mailman or SPIP interface for member module +Module200Name=LDAP +Module200Desc=LDAP directory synchronization +Module210Name=PostNuke +Module210Desc=PostNuke integration +Module240Name=Data exports +Module240Desc=Tool to export Dolibarr data (with assistance) +Module250Name=Data imports +Module250Desc=Tool to import data into Dolibarr (with assistance) +Module310Name=Members +Module310Desc=Foundation members management +Module320Name=RSS Feed +Module320Desc=Add a RSS feed to Dolibarr pages +Module330Name=Bookmarks & Shortcuts +Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access +Module400Name=Projects or Leads +Module400Desc=Management of projects, leads/opportunities and/or tasks. You can also assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. +Module410Name=Webcalendar +Module410Desc=Webcalendar integration +Module500Name=Taxes & Special Expenses +Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...) +Module510Name=Salaries +Module510Desc=Record and track employee payments +Module520Name=Loans +Module520Desc=Management of loans +Module600Name=Notifications on business event +Module600Desc=Send email notifications triggered by a business event: per user (setup defined on each user), per third-party contacts (setup defined on each third party) or by specific emails +Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders for agenda events, go into the setup of module Agenda. +Module610Name=Product Variants +Module610Desc=Creation of product variants (color, size etc.) +Module700Name=Donations +Module700Desc=Donation management +Module770Name=Expense Reports +Module770Desc=Manage expense reports claims (transportation, meal, ...) +Module1120Name=Vendor Commercial Proposals +Module1120Desc=Request vendor commercial proposal and prices +Module1200Name=Mantis +Module1200Desc=Mantis integration +Module1520Name=Document Generation +Module1520Desc=Mass email document generation +Module1780Name=Tags/Categories +Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module2000Name=WYSIWYG editor +Module2000Desc=Allow text fields to be edited/formatted using CKEditor (html) +Module2200Name=Dynamic Prices +Module2200Desc=Use maths expressions for auto-generation of prices +Module2300Name=Scheduled jobs +Module2300Desc=Scheduled jobs management (alias cron or chrono table) +Module2400Name=Events/Agenda +Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2500Name=DMS / ECM +Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need. +Module2600Name=API/Web services (SOAP server) +Module2600Desc=Enable the Dolibarr SOAP server providing API services +Module2610Name=API/Web services (REST server) +Module2610Desc=Enable the Dolibarr REST server providing API services +Module2660Name=Call WebServices (SOAP client) +Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) +Module2700Name=Gravatar +Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access +Module2800Desc=FTP Client +Module2900Name=GeoIPMaxmind +Module2900Desc=GeoIP Maxmind conversions capabilities +Module3200Name=Unalterable Archives +Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. +Module3400Name=Social Networks +Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). +Module4000Name=HRM +Module4000Desc=Human resources management (management of department, employee contracts and feelings) +Module5000Name=Multi-company +Module5000Desc=Allows you to manage multiple companies +Module6000Name=Inter-modules Workflow +Module6000Desc=Workflow management between different modules (automatic creation of object and/or automatic status change) +Module10000Name=Websites +Module10000Desc=Create websites (public) with a WYSIWYG editor. This is a webmaster or developer oriented CMS (it is better to know HTML and CSS language). Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the internet with your own domain name. +Module20000Name=Leave Request Management +Module20000Desc=Define and track employee leave requests +Module39000Name=Product Lots +Module39000Desc=Lots, serial numbers, eat-by/sell-by date management for products +Module40000Name=Multicurrency +Module40000Desc=Use alternative currencies in prices and documents +Module50000Name=PayBox +Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50100Name=POS SimplePOS +Module50100Desc=Point of Sale module SimplePOS (simple POS). +Module50150Name=POS TakePOS +Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). +Module50200Name=Paypal +Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50300Name=Stripe +Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50400Name=Accounting (double entry) +Module50400Desc=Accounting management (double entries, support General and Subsidiary Ledgers). Export the ledger in several other accounting software formats. +Module54000Name=PrintIPP +Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server). +Module55000Name=Poll, Survey or Vote +Module55000Desc=Create online polls, surveys or votes (like Doodle, Studs, RDVz etc...) +Module59000Name=Margins +Module59000Desc=Module to follow margins +Module60000Name=Commissions +Module60000Desc=Module to manage commissions +Module62000Name=Incoterms +Module62000Desc=Add features to manage Incoterms +Module63000Name=Resources +Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events +Permission11=Read customer invoices +Permission12=Create/modify customer invoices +Permission13=Invalidate customer invoices +Permission14=Validate customer invoices +Permission15=Send customer invoices by email +Permission16=Create payments for customer invoices +Permission19=Delete customer invoices +Permission21=Read commercial proposals +Permission22=Create/modify commercial proposals +Permission24=Validate commercial proposals +Permission25=Send commercial proposals +Permission26=Close commercial proposals +Permission27=Delete commercial proposals +Permission28=Export commercial proposals +Permission31=Read products +Permission32=Create/modify products +Permission34=Delete products +Permission36=See/manage hidden products +Permission38=Export products +Permission39=Ignore minimum price +Permission41=Read projects and tasks (shared projects and projects of which I am a contact). +Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks +Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission45=Export projects +Permission61=Read interventions +Permission62=Create/modify interventions +Permission64=Delete interventions +Permission67=Export interventions +Permission68=Send interventions by email +Permission69=Validate interventions +Permission70=Invalidate interventions +Permission71=Read members +Permission72=Create/modify members +Permission74=Delete members +Permission75=Setup types of membership +Permission76=Export data +Permission78=Read subscriptions +Permission79=Create/modify subscriptions +Permission81=Read customers orders +Permission82=Create/modify customers orders +Permission84=Validate customers orders +Permission86=Send customers orders +Permission87=Close customers orders +Permission88=Cancel customers orders +Permission89=Delete customers orders +Permission91=Read social or fiscal taxes and vat +Permission92=Create/modify social or fiscal taxes and vat +Permission93=Delete social or fiscal taxes and vat +Permission94=Export social or fiscal taxes +Permission95=Read reports +Permission101=Read sendings +Permission102=Create/modify sendings +Permission104=Validate sendings +Permission105=Send sendings by email +Permission106=Export sendings +Permission109=Delete sendings +Permission111=Read financial accounts +Permission112=Create/modify/delete and compare transactions +Permission113=Setup financial accounts (create, manage categories of bank transactions) +Permission114=Reconcile transactions +Permission115=Export transactions and account statements +Permission116=Transfers between accounts +Permission117=Manage checks dispatching +Permission121=Read third parties linked to user +Permission122=Create/modify third parties linked to user +Permission125=Delete third parties linked to user +Permission126=Export third parties +Permission130=Create/modify third parties payment information +Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) +Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) +Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) +Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission146=Read providers +Permission147=Read stats +Permission151=Read direct debit payment orders +Permission152=Create/modify a direct debit payment orders +Permission153=Send/Transmit direct debit payment orders +Permission154=Record Credits/Rejections of direct debit payment orders +Permission161=Read contracts/subscriptions +Permission162=Create/modify contracts/subscriptions +Permission163=Activate a service/subscription of a contract +Permission164=Disable a service/subscription of a contract +Permission165=Delete contracts/subscriptions +Permission167=Export contracts +Permission171=Read trips and expenses (yours and your subordinates) +Permission172=Create/modify trips and expenses +Permission173=Delete trips and expenses +Permission174=Read all trips and expenses +Permission178=Export trips and expenses +Permission180=Read suppliers +Permission181=Read purchase orders +Permission182=Create/modify purchase orders +Permission183=Validate purchase orders +Permission184=Approve purchase orders +Permission185=Order or cancel purchase orders +Permission186=Receive purchase orders +Permission187=Close purchase orders +Permission188=Cancel purchase orders +Permission192=Create lines +Permission193=Cancel lines +Permission194=Read the bandwidth lines +Permission202=Create ADSL connections +Permission203=Order connections orders +Permission204=Order connections +Permission205=Manage connections +Permission206=Read connections +Permission211=Read Telephony +Permission212=Order lines +Permission213=Activate line +Permission214=Setup Telephony +Permission215=Setup providers +Permission221=Read emailings +Permission222=Create/modify emailings (topic, recipients...) +Permission223=Validate emailings (allows sending) +Permission229=Delete emailings +Permission237=View recipients and info +Permission238=Manually send mailings +Permission239=Delete mailings after validation or sent +Permission241=Read categories +Permission242=Create/modify categories +Permission243=Delete categories +Permission244=See the contents of the hidden categories +Permission251=Read other users and groups +PermissionAdvanced251=Read other users +Permission252=Read permissions of other users +Permission253=Create/modify other users, groups and permissions +PermissionAdvanced253=Create/modify internal/external users and permissions +Permission254=Create/modify external users only +Permission255=Modify other users password +Permission256=Delete or disable other users +Permission262=Extend access to all third parties AND their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission263=Extend access to all third parties WITHOUT their objects (not only third parties for which the user is a sale representative).
Not effective for external users (always limited to themselves for proposals, orders, invoices, contracts, etc.).
Not effective for projects (only rules on project permissions, visibility and assignment matters). +Permission271=Read CA +Permission272=Read invoices +Permission273=Issue invoices +Permission281=Read contacts +Permission282=Create/modify contacts +Permission283=Delete contacts +Permission286=Export contacts +Permission291=Read tariffs +Permission292=Set permissions on the tariffs +Permission293=Modify customer's tariffs +Permission300=Read barcodes +Permission301=Create/modify barcodes +Permission302=Delete barcodes +Permission311=Read services +Permission312=Assign service/subscription to contract +Permission331=Read bookmarks +Permission332=Create/modify bookmarks +Permission333=Delete bookmarks +Permission341=Read its own permissions +Permission342=Create/modify his own user information +Permission343=Modify his own password +Permission344=Modify its own permissions +Permission351=Read groups +Permission352=Read groups permissions +Permission353=Create/modify groups +Permission354=Delete or disable groups +Permission358=Export users +Permission401=Read discounts +Permission402=Create/modify discounts +Permission403=Validate discounts +Permission404=Delete discounts +Permission430=Use Debug Bar +Permission511=Read salaries and payments (yours and subordinates) +Permission512=Create/modify salaries and payments +Permission514=Delete salaries and payments +Permission517=Read salaries and payments everybody +Permission519=Export salaries +Permission520=Read Loans +Permission522=Create/modify loans +Permission524=Delete loans +Permission525=Access loan calculator +Permission527=Export loans +Permission531=Read services +Permission532=Create/modify services +Permission534=Delete services +Permission536=See/manage hidden services +Permission538=Export services +Permission561=Read payment orders by credit transfer +Permission562=Create/modify payment order by credit transfer +Permission563=Send/Transmit payment order by credit transfer +Permission564=Record Debits/Rejections of credit transfer +Permission601=Read stickers +Permission602=Create/modify stickers +Permission609=Delete stickers +Permission611=Read attributes of variants +Permission612=Create/Update attributes of variants +Permission613=Delete attributes of variants +Permission650=Read Bills of Materials +Permission651=Create/Update Bills of Materials +Permission652=Delete Bills of Materials +Permission660=Read Manufacturing Order (MO) +Permission661=Create/Update Manufacturing Order (MO) +Permission662=Delete Manufacturing Order (MO) +Permission701=Read donations +Permission702=Create/modify donations +Permission703=Delete donations +Permission771=Read expense reports (yours and your subordinates) +Permission772=Create/modify expense reports (for you and your subordinates) +Permission773=Delete expense reports +Permission775=Approve expense reports +Permission776=Pay expense reports +Permission777=Read all expense reports (even those of user not subordinates) +Permission778=Create/modify expense reports of everybody +Permission779=Export expense reports +Permission1001=Read stocks +Permission1002=Create/modify warehouses +Permission1003=Delete warehouses +Permission1004=Read stock movements +Permission1005=Create/modify stock movements +Permission1011=View inventories +Permission1012=Create new inventory +Permission1014=Validate inventory +Permission1015=Allow to change PMP value for a product +Permission1016=Delete inventory +Permission1101=Read delivery receipts +Permission1102=Create/modify delivery receipts +Permission1104=Validate delivery receipts +Permission1109=Delete delivery receipts +Permission1121=Read supplier proposals +Permission1122=Create/modify supplier proposals +Permission1123=Validate supplier proposals +Permission1124=Send supplier proposals +Permission1125=Delete supplier proposals +Permission1126=Close supplier price requests +Permission1181=Read suppliers +Permission1182=Read purchase orders +Permission1183=Create/modify purchase orders +Permission1184=Validate purchase orders +Permission1185=Approve purchase orders +Permission1186=Order purchase orders +Permission1187=Acknowledge receipt of purchase orders +Permission1188=Delete purchase orders +Permission1189=Check/Uncheck a purchase order reception +Permission1190=Approve (second approval) purchase orders +Permission1191=Export supplier orders and their attributes +Permission1201=Get result of an export +Permission1202=Create/Modify an export +Permission1231=Read vendor invoices +Permission1232=Create/modify vendor invoices +Permission1233=Validate vendor invoices +Permission1234=Delete vendor invoices +Permission1235=Send vendor invoices by email +Permission1236=Export vendor invoices, attributes and payments +Permission1237=Export purchase orders and their details +Permission1251=Run mass imports of external data into database (data load) +Permission1321=Export customer invoices, attributes and payments +Permission1322=Reopen a paid bill +Permission1421=Export sales orders and attributes +Permission1521=Read documents +Permission1522=Delete documents +Permission2401=Read actions (events or tasks) linked to his user account (if owner of event or just assigned to) +Permission2402=Create/modify actions (events or tasks) linked to his user account (if owner of event) +Permission2403=Delete actions (events or tasks) linked to his user account (if owner of event) +Permission2411=Read actions (events or tasks) of others +Permission2412=Create/modify actions (events or tasks) of others +Permission2413=Delete actions (events or tasks) of others +Permission2414=Export actions/tasks of others +Permission2501=Read/Download documents +Permission2502=Download documents +Permission2503=Submit or delete documents +Permission2515=Setup documents directories +Permission2801=Use FTP client in read mode (browse and download only) +Permission2802=Use FTP client in write mode (delete or upload files) +Permission3200=Read archived events and fingerprints +Permission3301=Generate new modules +Permission4001=Read skill/job/position +Permission4002=Create/modify skill/job/position +Permission4003=Delete skill/job/position +Permission4020=Read evaluations +Permission4021=Create/modify your evaluation +Permission4022=Validate evaluation +Permission4023=Delete evaluation +Permission4030=See comparison menu +Permission4031=Read personal information +Permission4032=Write personal information +Permission10001=Read website content +Permission10002=Create/modify website content (html and javascript content) +Permission10003=Create/modify website content (dynamic php code). Dangerous, must be reserved to restricted developers. +Permission10005=Delete website content +Permission20001=Read leave requests (your leave and those of your subordinates) +Permission20002=Create/modify your leave requests (your leave and those of your subordinates) +Permission20003=Delete leave requests +Permission20004=Read all leave requests (even those of user not subordinates) +Permission20005=Create/modify leave requests for everybody (even those of user not subordinates) +Permission20006=Administer leave requests (setup and update balance) +Permission20007=Approve leave requests +Permission23001=Read Scheduled job +Permission23002=Create/update Scheduled job +Permission23003=Delete Scheduled job +Permission23004=Execute Scheduled job +Permission50101=Use Point of Sale (SimplePOS) +Permission50151=Use Point of Sale (TakePOS) +Permission50152=Edit sales lines +Permission50153=Edit ordered sales lines +Permission50201=Read transactions +Permission50202=Import transactions +Permission50330=Read objects of Zapier +Permission50331=Create/Update objects of Zapier +Permission50332=Delete objects of Zapier +Permission50401=Bind products and invoices with accounting accounts +Permission50411=Read operations in ledger +Permission50412=Write/Edit operations in ledger +Permission50414=Delete operations in ledger +Permission50415=Delete all operations by year and journal in ledger +Permission50418=Export operations of the ledger +Permission50420=Report and export reports (turnover, balance, journals, ledger) +Permission50430=Define fiscal periods. Validate transactions and close fiscal periods. +Permission50440=Manage chart of accounts, setup of accountancy +Permission51001=Read assets +Permission51002=Create/Update assets +Permission51003=Delete assets +Permission51005=Setup types of asset +Permission54001=Print +Permission55001=Read polls +Permission55002=Create/modify polls +Permission59001=Read commercial margins +Permission59002=Define commercial margins +Permission59003=Read every user margin +Permission63001=Read resources +Permission63002=Create/modify resources +Permission63003=Delete resources +Permission63004=Link resources to agenda events +Permission64001=Allow direct printing +Permission67000=Allow printing of receipts +Permission68001=Read intracomm report +Permission68002=Create/modify intracomm report +Permission68004=Delete intracomm report +Permission941601=Read receipts +Permission941602=Create and modify receipts +Permission941603=Validate receipts +Permission941604=Send receipts by email +Permission941605=Export receipts +Permission941606=Delete receipts +DictionaryCompanyType=Third-party types +DictionaryCompanyJuridicalType=Third-party legal entities +DictionaryProspectLevel=Prospect potential level for companies +DictionaryProspectContactLevel=Prospect potential level for contacts +DictionaryCanton=States/Provinces +DictionaryRegion=Regions +DictionaryCountry=Countries +DictionaryCurrency=Currencies +DictionaryCivility=Honorific titles +DictionaryActions=Types of agenda events +DictionarySocialContributions=Types of social or fiscal taxes +DictionaryVAT=VAT Rates or Sales Tax Rates +DictionaryRevenueStamp=Amount of tax stamps +DictionaryPaymentConditions=Payment Terms +DictionaryPaymentModes=Payment Modes +DictionaryTypeContact=Contact/Address types +DictionaryTypeOfContainer=Website - Type of website pages/containers +DictionaryEcotaxe=Ecotax (WEEE) +DictionaryPaperFormat=Paper formats +DictionaryFormatCards=Card formats +DictionaryFees=Expense report - Types of expense report lines +DictionarySendingMethods=Shipping methods +DictionaryStaff=Number of Employees +DictionaryAvailability=Delivery delay +DictionaryOrderMethods=Order methods +DictionarySource=Origin of proposals/orders +DictionaryAccountancyCategory=Personalized groups for reports +DictionaryAccountancysystem=Models for chart of accounts +DictionaryAccountancyJournal=Accounting journals +DictionaryEMailTemplates=Email Templates +DictionaryUnits=Units +DictionaryMeasuringUnits=Measuring Units +DictionarySocialNetworks=Social Networks +DictionaryProspectStatus=Prospect status for companies +DictionaryProspectContactStatus=Prospect status for contacts +DictionaryHolidayTypes=Leave - Types of leave +DictionaryOpportunityStatus=Lead status for project/lead +DictionaryExpenseTaxCat=Expense report - Transportation categories +DictionaryExpenseTaxRange=Expense report - Range by transportation category +DictionaryTransportMode=Intracomm report - Transport mode +DictionaryBatchStatus=Product lot/serial Quality Control status +DictionaryAssetDisposalType=Type of disposal of assets +TypeOfUnit=Type of unit +SetupSaved=Setup saved +SetupNotSaved=Setup not saved +BackToModuleList=Back to Module list +BackToDictionaryList=Back to Dictionaries list +TypeOfRevenueStamp=Type of tax stamp +VATManagement=Sales Tax Management +VATIsUsedDesc=By default when creating prospects, invoices, orders etc. the Sales Tax rate follows the active standard rule:
If the seller is not subject to Sales tax, then Sales tax defaults to 0. End of rule.
If the (seller's country = buyer's country), then the Sales tax by default equals the Sales tax of the product in the seller's country. End of rule.
If the seller and buyer are both in the European Community and goods are transport-related products (haulage, shipping, airline), the default VAT is 0. This rule is dependant on the seller's country - please consult with your accountant. The VAT should be paid by the buyer to the customs office in their country and not to the seller. End of rule.
If the seller and buyer are both in the European Community and the buyer is not a company (with a registered intra-Community VAT number) then the VAT defaults to the VAT rate of the seller's country. End of rule.
If the seller and buyer are both in the European Community and the buyer is a company (with a registered intra-Community VAT number), then the VAT is 0 by default. End of rule.
In any other case the proposed default is Sales tax=0. End of rule. +VATIsNotUsedDesc=By default the proposed Sales tax is 0 which can be used for cases like associations, individuals or small companies. +VATIsUsedExampleFR=In France, it means companies or organizations having a real fiscal system (Simplified real or normal real). A system in which VAT is declared. +VATIsNotUsedExampleFR=In France, it means associations that are non Sales tax declared or companies, organizations or liberal professions that have chosen the micro enterprise fiscal system (Sales tax in franchise) and paid a franchise Sales tax without any Sales tax declaration. This choice will display the reference "Non applicable Sales tax - art-293B of CGI" on invoices. +##### Local Taxes ##### +TypeOfSaleTaxes=Type of sales tax +LTRate=Rate +LocalTax1IsNotUsed=Do not use second tax +LocalTax1IsUsedDesc=Use a second type of tax (other than first one) +LocalTax1IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax1Management=Second type of tax +LocalTax1IsUsedExample= +LocalTax1IsNotUsedExample= +LocalTax2IsNotUsed=Do not use third tax +LocalTax2IsUsedDesc=Use a third type of tax (other than first one) +LocalTax2IsNotUsedDesc=Do not use other type of tax (other than first one) +LocalTax2Management=Third type of tax +LocalTax2IsUsedExample= +LocalTax2IsNotUsedExample= +LocalTax1ManagementES=RE Management +LocalTax1IsUsedDescES=The RE rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
If the buyer is not subjected to RE, RE by default=0. End of rule.
If the buyer is subjected to RE then the RE by default. End of rule.
+LocalTax1IsNotUsedDescES=By default the proposed RE is 0. End of rule. +LocalTax1IsUsedExampleES=In Spain they are professionals subject to some specific sections of the Spanish IAE. +LocalTax1IsNotUsedExampleES=In Spain they are professional and societies and subject to certain sections of the Spanish IAE. +LocalTax2ManagementES=IRPF Management +LocalTax2IsUsedDescES=The IRPF rate by default when creating prospects, invoices, orders etc. follow the active standard rule:
If the seller is not subjected to IRPF, then IRPF by default=0. End of rule.
If the seller is subjected to IRPF then the IRPF by default. End of rule.
+LocalTax2IsNotUsedDescES=By default the proposed IRPF is 0. End of rule. +LocalTax2IsUsedExampleES=In Spain, freelancers and independent professionals who provide services and companies who have chosen the tax system of modules. +LocalTax2IsNotUsedExampleES=In Spain they are businesses not subject to tax system of modules. +RevenueStampDesc=The "tax stamp" or "revenue stamp" is a fixed tax you per invoice (It does not depend on amount of invoice). It can also be a percent tax but using the second or third type of tax is better for percent taxes as tax stamps does not provide any reporting. Only few countries uses this type of tax. +UseRevenueStamp=Use a tax stamp +UseRevenueStampExample=The value of tax stamp is defined by default into the setup of dictionaries (%s - %s - %s) +CalcLocaltax=Reports on local taxes +CalcLocaltax1=Sales - Purchases +CalcLocaltax1Desc=Local Taxes reports are calculated with the difference between localtaxes sales and localtaxes purchases +CalcLocaltax2=Purchases +CalcLocaltax2Desc=Local Taxes reports are the total of localtaxes purchases +CalcLocaltax3=Sales +CalcLocaltax3Desc=Local Taxes reports are the total of localtaxes sales +NoLocalTaxXForThisCountry=According to the setup of taxes (See %s - %s - %s), your country does not need to use such type of tax +LabelUsedByDefault=Label used by default if no translation can be found for code +LabelOnDocuments=Label on documents +LabelOrTranslationKey=Label or translation key +ValueOfConstantKey=Value of a configuration constant +ConstantIsOn=Option %s is on +NbOfDays=No. of days +AtEndOfMonth=At end of month +CurrentNext=Current/Next +Offset=Offset +AlwaysActive=Always active +Upgrade=Upgrade +MenuUpgrade=Upgrade / Extend +AddExtensionThemeModuleOrOther=Deploy/install external app/module +WebServer=Web server +DocumentRootServer=Web server's root directory +DataRootServer=Data files directory +IP=IP +Port=Port +VirtualServerName=Virtual server name +OS=OS +PhpWebLink=Web-Php link +Server=Server +Database=Database +DatabaseServer=Database host +DatabaseName=Database name +DatabasePort=Database port +DatabaseUser=Database user +DatabasePassword=Database password +Tables=Tables +TableName=Table name +NbOfRecord=No. of records +Host=Server +DriverType=Driver type +SummarySystem=System information summary +SummaryConst=List of all Dolibarr setup parameters +MenuCompanySetup=Company/Organization +DefaultMenuManager= Standard menu manager +DefaultMenuSmartphoneManager=Smartphone menu manager +Skin=Skin theme +DefaultSkin=Default skin theme +MaxSizeList=Max length for list +DefaultMaxSizeList=Default max length for lists +DefaultMaxSizeShortList=Default max length for short lists (i.e. in customer card) +MessageOfDay=Message of the day +MessageLogin=Login page message +LoginPage=Login page +BackgroundImageLogin=Background image +PermanentLeftSearchForm=Permanent search form on left menu +DefaultLanguage=Default language +EnableMultilangInterface=Enable multilanguage support for customer or vendor relationships +EnableShowLogo=Show the company logo in the menu +CompanyInfo=Company/Organization +CompanyIds=Company/Organization identities +CompanyName=Name +CompanyAddress=Address +CompanyZip=Zip +CompanyTown=Town +CompanyCountry=Country +CompanyCurrency=Main currency +CompanyObject=Object of the company +IDCountry=ID country +Logo=Logo +LogoDesc=Main logo of company. Will be used into generated documents (PDF, ...) +LogoSquarred=Logo (squarred) +LogoSquarredDesc=Must be a squarred icon (width = height). This logo will be used as the favorite icon or other need like for the top menu bar (if not disabled into display setup). +DoNotSuggestPaymentMode=Do not suggest +NoActiveBankAccountDefined=No active bank account defined +OwnerOfBankAccount=Owner of bank account %s +BankModuleNotActive=Bank accounts module not enabled +ShowBugTrackLink=Show the link "%s" +ShowBugTrackLinkDesc=Keep empty to not display this link, use value 'github' for the link to the Dolibarr project or define directly an url 'https://...' +Alerts=Alerts +DelaysOfToleranceBeforeWarning=Displaying a warning alert for... +DelaysOfToleranceDesc=Set the delay before an alert icon %s is shown onscreen for the late element. +Delays_MAIN_DELAY_ACTIONS_TODO=Planned events (agenda events) not completed +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Project not closed in time +Delays_MAIN_DELAY_TASKS_TODO=Planned task (project tasks) not completed +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Order not processed +Delays_MAIN_DELAY_SUPPLIER_ORDERS_TO_PROCESS=Purchase order not processed +Delays_MAIN_DELAY_PROPALS_TO_CLOSE=Proposal not closed +Delays_MAIN_DELAY_PROPALS_TO_BILL=Proposal not billed +Delays_MAIN_DELAY_NOT_ACTIVATED_SERVICES=Service to activate +Delays_MAIN_DELAY_RUNNING_SERVICES=Expired service +Delays_MAIN_DELAY_SUPPLIER_BILLS_TO_PAY=Unpaid vendor invoice +Delays_MAIN_DELAY_CUSTOMER_BILLS_UNPAYED=Unpaid customer invoice +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Pending bank reconciliation +Delays_MAIN_DELAY_MEMBERS=Delayed membership fee +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Check deposit not done +Delays_MAIN_DELAY_EXPENSEREPORTS=Expense report to approve +Delays_MAIN_DELAY_HOLIDAYS=Leave requests to approve +SetupDescription1=Before starting to use Dolibarr some initial parameters must be defined and modules enabled/configured. +SetupDescription2=The following two sections are mandatory (the two first entries in the Setup menu): +SetupDescription3=%s -> %s

Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4=%s -> %s

This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +SetupDescription5=Other Setup menu entries manage optional parameters. +SetupDescriptionLink=%s - %s +SetupDescription3b=Basic parameters used to customize the default behavior of your application (e.g for country-related features). +SetupDescription4b=This software is a suite of many modules/applications. The modules related to your needs must be enabled and configured. Menu entries will appears with the activation of these modules. +AuditedSecurityEvents=Security events that are audited +NoSecurityEventsAreAduited=No security events are audited. You can enable them from menu %s +Audit=Security events +InfoDolibarr=About Dolibarr +InfoBrowser=About Browser +InfoOS=About OS +InfoWebServer=About Web Server +InfoDatabase=About Database +InfoPHP=About PHP +InfoPerf=About Performances +InfoSecurity=About Security +BrowserName=Browser name +BrowserOS=Browser OS +ListOfSecurityEvents=List of Dolibarr security events +SecurityEventsPurged=Security events purged +LogEventDesc=Enable logging for specific security events. Administrators the log via menu %s - %s. Warning, this feature can generate a large amount of data in the database. +AreaForAdminOnly=Setup parameters can be set by administrator users only. +SystemInfoDesc=System information is miscellaneous technical information you get in read only mode and visible for administrators only. +SystemAreaForAdminOnly=This area is available to administrator users only. Dolibarr user permissions cannot change this restriction. +CompanyFundationDesc=Edit the information of your company/organization. Click on "%s" button at the bottom of the page when done. +AccountantDesc=If you have an external accountant/bookkeeper, you can edit here its information. +AccountantFileNumber=Accountant code +DisplayDesc=Parameters affecting the look and presentation of the application can be modified here. +AvailableModules=Available app/modules +ToActivateModule=To activate modules, go on setup Area (Home->Setup->Modules). +SessionTimeOut=Time out for session +SessionExplanation=This number guarantees that the session will never expire before this delay, if the session cleaner is done by Internal PHP session cleaner (and nothing else). Internal PHP session cleaner does not guarantee that the session will expire after this delay. It will expire, after this delay, and when the session cleaner is run, so every %s/%s access, but only during access made by other sessions (if value is 0, it means clearing of session is done only by an external process).
Note: on some servers with an external session cleaning mechanism (cron under debian, ubuntu ...), the sessions can be destroyed after a period defined by an external setup, no matter what the value entered here is. +SessionsPurgedByExternalSystem=Sessions on this server seems to be cleaned by an external mechanism (cron under debian, ubuntu ...), probably every %s seconds (= value of parameter session.gc_maxlifetime), so changing the value here has no effect. You must ask the server administrator to change session delay. +TriggersAvailable=Available triggers +TriggersDesc=Triggers are files that will modify the behavior of Dolibarr workflow once copied into the directory htdocs/core/triggers. They realize new actions, activated on Dolibarr events (new company creation, invoice validation, ...). +TriggerDisabledByName=Triggers in this file are disabled by the -NORUN suffix in their name. +TriggerDisabledAsModuleDisabled=Triggers in this file are disabled as module %s is disabled. +TriggerAlwaysActive=Triggers in this file are always active, whatever are the activated Dolibarr modules. +TriggerActiveAsModuleActive=Triggers in this file are active as module %s is enabled. +GeneratedPasswordDesc=Choose the method to be used for auto-generated passwords. +DictionaryDesc=Insert all reference data. You can add your values to the default. +ConstDesc=This page allows you to edit (override) parameters not available in other pages. These are mostly reserved parameters for developers/advanced troubleshooting only. +MiscellaneousDesc=All other security related parameters are defined here. +LimitsSetup=Limits/Precision setup +LimitsDesc=You can define limits, precisions and optimizations used by Dolibarr here +MAIN_MAX_DECIMALS_UNIT=Max. decimals for unit prices +MAIN_MAX_DECIMALS_TOT=Max. decimals for total prices +MAIN_MAX_DECIMALS_SHOWN=Max. decimals for prices shown on screen. Add an ellipsis ... after this parameter (e.g. "2...") if you want to see "..." suffixed to the truncated price. +MAIN_ROUNDING_RULE_TOT=Step of rounding range (for countries where rounding is done on something other than base 10. For example, put 0.05 if rounding is done by 0.05 steps) +UnitPriceOfProduct=Net unit price of a product +TotalPriceAfterRounding=Total price (excl/vat/incl tax) after rounding +ParameterActiveForNextInputOnly=Parameter effective for next input only +NoEventOrNoAuditSetup=No security event has been logged. This is normal if Audit has not been enabled in the "Setup - Security - Events" page. +NoEventFoundWithCriteria=No security event has been found for this search criteria. +SeeLocalSendMailSetup=See your local sendmail setup +BackupDesc=A complete backup of a Dolibarr installation requires two steps. +BackupDesc2=Backup the contents of the "documents" directory (%s) containing all uploaded and generated files. This will also include all the dump files generated in Step 1. This operation may last several minutes. +BackupDesc3=Backup the structure and contents of your database (%s) into a dump file. For this, you can use the following assistant. +BackupDescX=The archived directory should be stored in a secure place. +BackupDescY=The generated dump file should be stored in a secure place. +BackupPHPWarning=Backup cannot be guaranteed with this method. Previous one recommended. +RestoreDesc=To restore a Dolibarr backup, two steps are required. +RestoreDesc2=Restore the backup file (zip file for example) of the "documents" directory to a new Dolibarr installation or into this current documents directory (%s). +RestoreDesc3=Restore the database structure and data from a backup dump file into the database of the new Dolibarr installation or into the database of this current installation (%s). Warning, once the restore is complete, you must use a login/password, that existed from the backup time/installation to connect again.
To restore a backup database into this current installation, you can follow this assistant. +RestoreMySQL=MySQL import +ForcedToByAModule=This rule is forced to %s by an activated module +ValueIsForcedBySystem=This value is forced by the system. You can't change it. +PreviousDumpFiles=Existing backup files +PreviousArchiveFiles=Existing archive files +WeekStartOnDay=First day of the week +RunningUpdateProcessMayBeRequired=Running the upgrade process seems to be required (Program version %s differs from Database version %s) +YouMustRunCommandFromCommandLineAfterLoginToUser=You must run this command from command line after login to a shell with user %s or you must add -W option at end of command line to provide %s password. +YourPHPDoesNotHaveSSLSupport=SSL functions not available in your PHP +DownloadMoreSkins=More skins to download +SimpleNumRefModelDesc=Returns the reference number in the format %syymm-nnnn where yy is the year, mm is the month and nnnn is a sequential auto-incrementing number with no reset +SimpleNumRefNoDateModelDesc=Returns the reference number in the format %s-nnnn where nnnn is a sequential auto-incrementing number with no reset +ShowProfIdInAddress=Show professional ID with addresses +ShowVATIntaInAddress=Hide intra-Community VAT number +TranslationUncomplete=Partial translation +MAIN_DISABLE_METEO=Disable weather thumb +MeteoStdMod=Standard mode +MeteoStdModEnabled=Standard mode enabled +MeteoPercentageMod=Percentage mode +MeteoPercentageModEnabled=Percentage mode enabled +MeteoUseMod=Click to use %s +TestLoginToAPI=Test login to API +ProxyDesc=Some features of Dolibarr require internet access. Define here the internet connection parameters such as access through a proxy server if necessary. +ExternalAccess=External/Internet Access +MAIN_PROXY_USE=Use a proxy server (otherwise access is direct to the internet) +MAIN_PROXY_HOST=Proxy server: Name/Address +MAIN_PROXY_PORT=Proxy server: Port +MAIN_PROXY_USER=Proxy server: Login/User +MAIN_PROXY_PASS=Proxy server: Password +DefineHereComplementaryAttributes=Define any additional / custom attributes that must be added to: %s +ExtraFields=Complementary attributes +ExtraFieldsLines=Complementary attributes (lines) +ExtraFieldsLinesRec=Complementary attributes (templates invoices lines) +ExtraFieldsSupplierOrdersLines=Complementary attributes (order lines) +ExtraFieldsSupplierInvoicesLines=Complementary attributes (invoice lines) +ExtraFieldsThirdParties=Complementary attributes (third party) +ExtraFieldsContacts=Complementary attributes (contacts/address) +ExtraFieldsMember=Complementary attributes (member) +ExtraFieldsMemberType=Complementary attributes (member type) +ExtraFieldsCustomerInvoices=Complementary attributes (invoices) +ExtraFieldsCustomerInvoicesRec=Complementary attributes (templates invoices) +ExtraFieldsSupplierOrders=Complementary attributes (orders) +ExtraFieldsSupplierInvoices=Complementary attributes (invoices) +ExtraFieldsProject=Complementary attributes (projects) +ExtraFieldsProjectTask=Complementary attributes (tasks) +ExtraFieldsSalaries=Complementary attributes (salaries) +ExtraFieldHasWrongValue=Attribute %s has a wrong value. +AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space +SendmailOptionNotComplete=Warning, on some Linux systems, to send email from your email, sendmail execution setup must contains option -ba (parameter mail.force_extra_parameters into your php.ini file). If some recipients never receive emails, try to edit this PHP parameter with mail.force_extra_parameters = -ba). +PathToDocuments=Path to documents +PathDirectory=Directory +SendmailOptionMayHurtBuggedMTA=Feature to send mails using method "PHP mail direct" will generate a mail message that might not be parsed correctly by some receiving mail servers. The result is that some mails can't be read by people hosted by those bugged platforms. This is the case for some Internet providers (Ex: Orange in France). This is not a problem with Dolibarr or PHP but with the receiving mail server. You can however add an option MAIN_FIX_FOR_BUGGED_MTA to 1 in Setup - Other to modify Dolibarr to avoid this. However, you may experience problems with other servers that strictly use the SMTP standard. The other solution (recommended) is to use the method "SMTP socket library" which has no disadvantages. +TranslationSetup=Setup of translation +TranslationKeySearch=Search a translation key or string +TranslationOverwriteKey=Overwrite a translation string +TranslationDesc=How to set the display language:
* Default/Systemwide: menu Home -> Setup -> Display
* Per user: Click on the username at the top of the screen and modify the User Display Setup tab on the user card. +TranslationOverwriteDesc=You can also override strings filling the following table. Choose your language from "%s" dropdown, insert the translation key string into "%s" and your new translation into "%s" +TranslationOverwriteDesc2=You can use the other tab to help you know which translation key to use +TranslationString=Translation string +CurrentTranslationString=Current translation string +WarningAtLeastKeyOrTranslationRequired=A search criteria is required at least for key or translation string +NewTranslationStringToShow=New translation string to show +OriginalValueWas=The original translation is overwritten. Original value was:

%s +TransKeyWithoutOriginalValue=You forced a new translation for the translation key '%s' that does not exist in any language files +TitleNumberOfActivatedModules=Activated modules +TotalNumberOfActivatedModules=Activated modules: %s / %s +YouMustEnableOneModule=You must at least enable 1 module +YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +ClassNotFoundIntoPathWarning=Class %s not found in PHP path +YesInSummer=Yes in summer +OnlyFollowingModulesAreOpenedToExternalUsers=Note, only the following modules are available to external users (irrespective of the permissions of such users) and only if permissions are granted:
+SuhosinSessionEncrypt=Session storage encrypted by Suhosin +ConditionIsCurrently=Condition is currently %s +YouUseBestDriver=You use driver %s which is the best driver currently available. +YouDoNotUseBestDriver=You use driver %s but driver %s is recommended. +NbOfObjectIsLowerThanNoPb=You have only %s %s in the database. This does not require any particular optimization. +ComboListOptim=Combo list loading optimization +SearchOptim=Search optimization +YouHaveXObjectUseComboOptim=You have %s %s in the database. You can go into setup of module to enable loading of combo list on key pressed event. +YouHaveXObjectUseSearchOptim=You have %s %s in the database. You can add the constant %s to 1 in Home-Setup-Other. +YouHaveXObjectUseSearchOptimDesc=This limits the search to the beginning of strings which makes it possible for the database to use indexes and you should get an immediate response. +YouHaveXObjectAndSearchOptimOn=You have %s %s in the database and constant %s is set to %s in Home-Setup-Other. +BrowserIsOK=You are using the %s web browser. This browser is ok for security and performance. +BrowserIsKO=You are using the %s web browser. This browser is known to be a bad choice for security, performance and reliability. We recommend using Firefox, Chrome, Opera or Safari. +PHPModuleLoaded=PHP component %s is loaded +PreloadOPCode=Preloaded OPCode is used +AddRefInList=Display Customer/Vendor ref. into combo lists.
Third Parties will appear with a name format of "CC12345 - SC45678 - The Big Company corp." instead of "The Big Company corp". +AddVatInList=Display Customer/Vendor VAT number into combo lists. +AddAdressInList=Display Customer/Vendor adress into combo lists.
Third Parties will appear with a name format of "The Big Company corp. - 21 jump street 123456 Big town - USA" instead of "The Big Company corp". +AddEmailPhoneTownInContactList=Display Contact email (or phones if not defined) and town info list (select list or combobox)
Contacts will appear with a name format of "Dupond Durand - dupond.durand@email.com - Paris" or "Dupond Durand - 06 07 59 65 66 - Paris" instead of "Dupond Durand". +AskForPreferredShippingMethod=Ask for preferred shipping method for Third Parties. +FieldEdition=Edition of field %s +FillThisOnlyIfRequired=Example: +2 (fill only if timezone offset problems are experienced) +GetBarCode=Get barcode +NumberingModules=Numbering models +DocumentModules=Document models +##### Module password generation +PasswordGenerationStandard=Return a password generated according to internal Dolibarr algorithm: %s characters containing shared numbers and characters in lowercase. +PasswordGenerationNone=Do not suggest a generated password. Password must be typed in manually. +PasswordGenerationPerso=Return a password according to your personally defined configuration. +SetupPerso=According to your configuration +PasswordPatternDesc=Password pattern description +##### Users setup ##### +RuleForGeneratedPasswords=Rules to generate and validate passwords +DisableForgetPasswordLinkOnLogonPage=Do not show the "Password Forgotten" link on the Login page +UsersSetup=Users module setup +UserMailRequired=Email required to create a new user +UserHideInactive=Hide inactive users from all combo lists of users (Not recommended: this may means you won't be able to filter or search on old users on some pages) +UsersDocModules=Document templates for documents generated from user record +GroupsDocModules=Document templates for documents generated from a group record +##### HRM setup ##### +HRMSetup=HRM module setup +##### Company setup ##### +CompanySetup=Companies module setup +CompanyCodeChecker=Options for automatic generation of customer/vendor codes +AccountCodeManager=Options for automatic generation of customer/vendor accounting codes +NotificationsDesc=Email notifications can be sent automatically for some Dolibarr events.
Recipients of notifications can be defined: +NotificationsDescUser=* per user, one user at a time. +NotificationsDescContact=* per third-party contacts (customers or vendors), one contact at a time. +NotificationsDescGlobal=* or by setting global email addresses in the setup page of the module. +ModelModules=Document Templates +DocumentModelOdt=Generate documents from OpenDocument templates (.ODT / .ODS files from LibreOffice, OpenOffice, KOffice, TextEdit,...) +WatermarkOnDraft=Watermark on draft document +JSOnPaimentBill=Activate feature to autofill payment lines on payment form +CompanyIdProfChecker=Rules for Professional IDs +MustBeUnique=Must be unique? +MustBeMandatory=Mandatory to create third parties (if VAT number or type of company defined) ? +MustBeInvoiceMandatory=Mandatory to validate invoices? +TechnicalServicesProvided=Technical services provided +#####DAV ##### +WebDAVSetupDesc=This is the link to access the WebDAV directory. It contains a "public" dir open to any user knowing the URL (if public directory access allowed) and a "private" directory that needs an existing login account/password for access. +WebDavServer=Root URL of %s server: %s +##### Webcal setup ##### +WebCalUrlForVCalExport=An export link to %s format is available at following link: %s +##### Invoices ##### +BillsSetup=Invoices module setup +BillsNumberingModule=Invoices and credit notes numbering model +BillsPDFModules=Invoice documents models +BillsPDFModulesAccordindToInvoiceType=Invoice documents models according to invoice type +PaymentsPDFModules=Payment documents models +ForceInvoiceDate=Force invoice date to validation date +SuggestedPaymentModesIfNotDefinedInInvoice=Suggested payments mode on invoice by default if not defined on the invoice +SuggestPaymentByRIBOnAccount=Suggest payment by withdrawal on account +SuggestPaymentByChequeToAddress=Suggest payment by check to +FreeLegalTextOnInvoices=Free text on invoices +WatermarkOnDraftInvoices=Watermark on draft invoices (none if empty) +PaymentsNumberingModule=Payments numbering model +SuppliersPayment=Vendor payments +SupplierPaymentSetup=Vendor payments setup +InvoiceCheckPosteriorDate=Check facture date before validation +InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +##### Proposals ##### +PropalSetup=Commercial proposals module setup +ProposalsNumberingModules=Commercial proposal numbering models +ProposalsPDFModules=Commercial proposal documents models +SuggestedPaymentModesIfNotDefinedInProposal=Suggested payments mode on proposal by default if not defined on the proposal +FreeLegalTextOnProposal=Free text on commercial proposals +WatermarkOnDraftProposal=Watermark on draft commercial proposals (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Ask for bank account destination of proposal +##### SupplierProposal ##### +SupplierProposalSetup=Price requests suppliers module setup +SupplierProposalNumberingModules=Price requests suppliers numbering models +SupplierProposalPDFModules=Price requests suppliers documents models +FreeLegalTextOnSupplierProposal=Free text on price requests suppliers +WatermarkOnDraftSupplierProposal=Watermark on draft price requests suppliers (none if empty) +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_PROPOSAL=Ask for bank account destination of price request +WAREHOUSE_ASK_WAREHOUSE_DURING_ORDER=Ask for Warehouse Source for order +##### Suppliers Orders ##### +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Ask for bank account destination of purchase order +##### Orders ##### +SuggestedPaymentModesIfNotDefinedInOrder=Suggested payments mode on sales order by default if not defined on the order +OrdersSetup=Sales Orders management setup +OrdersNumberingModules=Orders numbering models +OrdersModelModule=Order documents models +FreeLegalTextOnOrders=Free text on orders +WatermarkOnDraftOrders=Watermark on draft orders (none if empty) +ShippableOrderIconInList=Add an icon in Orders list which indicate if order is shippable +BANK_ASK_PAYMENT_BANK_DURING_ORDER=Ask for bank account destination of order +##### Interventions ##### +InterventionsSetup=Interventions module setup +FreeLegalTextOnInterventions=Free text on intervention documents +FicheinterNumberingModules=Intervention numbering models +TemplatePDFInterventions=Intervention card documents models +WatermarkOnDraftInterventionCards=Watermark on intervention card documents (none if empty) +##### Contracts ##### +ContractsSetup=Contracts/Subscriptions module setup +ContractsNumberingModules=Contracts numbering modules +TemplatePDFContracts=Contracts documents models +FreeLegalTextOnContracts=Free text on contracts +WatermarkOnDraftContractCards=Watermark on draft contracts (none if empty) +##### Members ##### +MembersSetup=Members module setup +MemberMainOptions=Main options +AdherentLoginRequired= Manage a Login for each member +AdherentMailRequired=Email required to create a new member +MemberSendInformationByMailByDefault=Checkbox to send mail confirmation to members (validation or new subscription) is on by default +MemberCreateAnExternalUserForSubscriptionValidated=Create an external user login for each new member subscription validated +VisitorCanChooseItsPaymentMode=Visitor can choose from available payment modes +MEMBER_REMINDER_EMAIL=Enable automatic reminder by email of expired subscriptions. Note: Module %s must be enabled and correctly setup to send reminders. +MembersDocModules=Document templates for documents generated from member record +##### LDAP setup ##### +LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersSynchro=Users +LDAPGroupsSynchro=Groups +LDAPContactsSynchro=Contacts +LDAPMembersSynchro=Members +LDAPMembersTypesSynchro=Members types +LDAPSynchronization=LDAP synchronisation +LDAPFunctionsNotAvailableOnPHP=LDAP functions are not available on your PHP +LDAPToDolibarr=LDAP -> Dolibarr +DolibarrToLDAP=Dolibarr -> LDAP +LDAPNamingAttribute=Key in LDAP +LDAPSynchronizeUsers=Organization of users in LDAP +LDAPSynchronizeGroups=Organization of groups in LDAP +LDAPSynchronizeContacts=Organization of contacts in LDAP +LDAPSynchronizeMembers=Organization of foundation's members in LDAP +LDAPSynchronizeMembersTypes=Organization of foundation's members types in LDAP +LDAPPrimaryServer=Primary server +LDAPSecondaryServer=Secondary server +LDAPServerPort=Server port +LDAPServerPortExample=Standard or StartTLS: 389, LDAPs: 636 +LDAPServerProtocolVersion=Protocol version +LDAPServerUseTLS=Use TLS +LDAPServerUseTLSExample=Your LDAP server use StartTLS +LDAPServerDn=Server DN +LDAPAdminDn=Administrator DN +LDAPAdminDnExample=Complete DN (ex: cn=admin,dc=example,dc=com or cn=Administrator,cn=Users,dc=example,dc=com for active directory) +LDAPPassword=Administrator password +LDAPUserDn=Users' DN +LDAPUserDnExample=Complete DN (ex: ou=users,dc=example,dc=com) +LDAPGroupDn=Groups' DN +LDAPGroupDnExample=Complete DN (ex: ou=groups,dc=example,dc=com) +LDAPServerExample=Server address (ex: localhost, 192.168.0.2, ldaps://ldap.example.com/) +LDAPServerDnExample=Complete DN (ex: dc=example,dc=com) +LDAPDnSynchroActive=Users and groups synchronization +LDAPDnSynchroActiveExample=LDAP to Dolibarr or Dolibarr to LDAP synchronization +LDAPDnContactActive=Contacts' synchronization +LDAPDnContactActiveExample=Activated/Unactivated synchronization +LDAPDnMemberActive=Members' synchronization +LDAPDnMemberActiveExample=Activated/Unactivated synchronization +LDAPDnMemberTypeActive=Members types' synchronization +LDAPDnMemberTypeActiveExample=Activated/Unactivated synchronization +LDAPContactDn=Dolibarr contacts' DN +LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=example,dc=com) +LDAPMemberDn=Dolibarr members DN +LDAPMemberDnExample=Complete DN (ex: ou=members,dc=example,dc=com) +LDAPMemberObjectClassList=List of objectClass +LDAPMemberObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPMemberTypeDn=Dolibarr members types DN +LDAPMemberTypepDnExample=Complete DN (ex: ou=memberstypes,dc=example,dc=com) +LDAPMemberTypeObjectClassList=List of objectClass +LDAPMemberTypeObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPUserObjectClassList=List of objectClass +LDAPUserObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPGroupObjectClassList=List of objectClass +LDAPGroupObjectClassListExample=List of objectClass defining record attributes (ex: top,groupOfUniqueNames) +LDAPContactObjectClassList=List of objectClass +LDAPContactObjectClassListExample=List of objectClass defining record attributes (ex: top,inetOrgPerson or top,user for active directory) +LDAPTestConnect=Test LDAP connection +LDAPTestSynchroContact=Test contacts synchronization +LDAPTestSynchroUser=Test user synchronization +LDAPTestSynchroGroup=Test group synchronization +LDAPTestSynchroMember=Test member synchronization +LDAPTestSynchroMemberType=Test member type synchronization +LDAPTestSearch= Test a LDAP search +LDAPSynchroOK=Synchronization test successful +LDAPSynchroKO=Failed synchronization test +LDAPSynchroKOMayBePermissions=Failed synchronization test. Check that the connection to the server is correctly configured and allows LDAP updates +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPBindOK=Connect/Authenticate to LDAP server successful (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPBindKO=Connect/Authenticate to LDAP server failed (Server=%s, Port=%s, Admin=%s, Password=%s) +LDAPSetupForVersion3=LDAP server configured for version 3 +LDAPSetupForVersion2=LDAP server configured for version 2 +LDAPDolibarrMapping=Dolibarr Mapping +LDAPLdapMapping=LDAP Mapping +LDAPFieldLoginUnix=Login (unix) +LDAPFieldLoginExample=Example: uid +LDAPFilterConnection=Search filter +LDAPFilterConnectionExample=Example: &(objectClass=inetOrgPerson) +LDAPGroupFilterExample=Example: &(objectClass=groupOfUsers) +LDAPFieldLoginSamba=Login (samba, activedirectory) +LDAPFieldLoginSambaExample=Example: samaccountname +LDAPFieldFullname=Full name +LDAPFieldFullnameExample=Example: cn +LDAPFieldPasswordNotCrypted=Password not encrypted +LDAPFieldPasswordCrypted=Password encrypted +LDAPFieldPasswordExample=Example: userPassword +LDAPFieldCommonNameExample=Example: cn +LDAPFieldName=Name +LDAPFieldNameExample=Example: sn +LDAPFieldFirstName=First name +LDAPFieldFirstNameExample=Example: givenName +LDAPFieldMail=Email address +LDAPFieldMailExample=Example: mail +LDAPFieldPhone=Professional phone number +LDAPFieldPhoneExample=Example: telephonenumber +LDAPFieldHomePhone=Personal phone number +LDAPFieldHomePhoneExample=Example: homephone +LDAPFieldMobile=Cellular phone +LDAPFieldMobileExample=Example: mobile +LDAPFieldFax=Fax number +LDAPFieldFaxExample=Example: facsimiletelephonenumber +LDAPFieldAddress=Street +LDAPFieldAddressExample=Example: street +LDAPFieldZip=Zip +LDAPFieldZipExample=Example: postalcode +LDAPFieldTown=Town +LDAPFieldTownExample=Example: l +LDAPFieldCountry=Country +LDAPFieldDescription=Description +LDAPFieldDescriptionExample=Example: description +LDAPFieldNotePublic=Public Note +LDAPFieldNotePublicExample=Example: publicnote +LDAPFieldGroupMembers= Group members +LDAPFieldGroupMembersExample= Example: uniqueMember +LDAPFieldBirthdate=Birthdate +LDAPFieldCompany=Company +LDAPFieldCompanyExample=Example: o +LDAPFieldSid=SID +LDAPFieldSidExample=Example: objectsid +LDAPFieldEndLastSubscription=Date of subscription end +LDAPFieldTitle=Job position +LDAPFieldTitleExample=Example: title +LDAPFieldGroupid=Group id +LDAPFieldGroupidExample=Exemple : gidnumber +LDAPFieldUserid=User id +LDAPFieldUseridExample=Exemple : uidnumber +LDAPFieldHomedirectory=Home directory +LDAPFieldHomedirectoryExample=Exemple : homedirectory +LDAPFieldHomedirectoryprefix=Home directory prefix +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=No administrator or password provided. LDAP access will be anonymous and in read only mode. +LDAPDescContact=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr contacts. +LDAPDescUsers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr users. +LDAPDescGroups=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr groups. +LDAPDescMembers=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members module. +LDAPDescMembersTypes=This page allows you to define LDAP attributes name in LDAP tree for each data found on Dolibarr members types. +LDAPDescValues=Example values are designed for OpenLDAP with following loaded schemas: core.schema, cosine.schema, inetorgperson.schema). If you use thoose values and OpenLDAP, modify your LDAP config file slapd.conf to have all thoose schemas loaded. +ForANonAnonymousAccess=For an authenticated access (for a write access for example) +PerfDolibarr=Performance setup/optimizing report +YouMayFindPerfAdviceHere=This page provides some checks or advice related to performance. +NotInstalled=Not installed. +NotSlowedDownByThis=Not slowed down by this. +NotRiskOfLeakWithThis=Not risk of leak with this. +ApplicativeCache=Applicative cache +MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server.
More information here http://wiki.dolibarr.org/index.php/Module_MemCached_EN.
Note that a lot of web hosting provider does not provide such cache server. +MemcachedModuleAvailableButNotSetup=Module memcached for applicative cache found but setup of module is not complete. +MemcachedAvailableAndSetup=Module memcached dedicated to use memcached server is enabled. +OPCodeCache=OPCode cache +NoOPCodeCacheFound=No OPCode cache found. Maybe you are using an OPCode cache other than XCache or eAccelerator (good), or maybe you don't have OPCode cache (very bad). +HTTPCacheStaticResources=HTTP cache for static resources (css, img, javascript) +FilesOfTypeCached=Files of type %s are cached by HTTP server +FilesOfTypeNotCached=Files of type %s are not cached by HTTP server +FilesOfTypeCompressed=Files of type %s are compressed by HTTP server +FilesOfTypeNotCompressed=Files of type %s are not compressed by HTTP server +CacheByServer=Cache by server +CacheByServerDesc=For example using the Apache directive "ExpiresByType image/gif A2592000" +CacheByClient=Cache by browser +CompressionOfResources=Compression of HTTP responses +CompressionOfResourcesDesc=For example using the Apache directive "AddOutputFilterByType DEFLATE" +TestNotPossibleWithCurrentBrowsers=Such an automatic detection is not possible with current browsers +DefaultValuesDesc=Here you may define the default value you wish to use when creating a new record, and/or default filters or the sort order when you list records. +DefaultCreateForm=Default values (to use on forms) +DefaultSearchFilters=Default search filters +DefaultSortOrder=Default sort orders +DefaultFocus=Default focus fields +DefaultMandatory=Mandatory form fields +##### Products ##### +ProductSetup=Products module setup +ServiceSetup=Services module setup +ProductServiceSetup=Products and Services modules setup +NumberOfProductShowInSelect=Maximum number of products to show in combo select lists (0=no limit) +ViewProductDescInFormAbility=Display product descriptions in lines of items (otherwise show description in a tooltip popup) +OnProductSelectAddProductDesc=How to use the description of the products when adding a product as a line of a document +AutoFillFormFieldBeforeSubmit=Auto fill the description input field with the description of product +DoNotAutofillButAutoConcat=Do not autofill the input field with description of product. Description of the product will be concatenated to the entered description automatically. +DoNotUseDescriptionOfProdut=Description of the product will never be included into the description of lines of documents +MergePropalProductCard=Activate in product/service Attached Files tab an option to merge product PDF document to proposal PDF azur if product/service is in the proposal +ViewProductDescInThirdpartyLanguageAbility=Display products descriptions in forms in the language of the third party (otherwise in the language of the user) +UseSearchToSelectProductTooltip=Also if you have a large number of products (> 100 000), you can increase speed by setting constant PRODUCT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. +UseSearchToSelectProduct=Wait until you press a key before loading content of product combo list (This may increase performance if you have a large number of products, but it is less convenient) +SetDefaultBarcodeTypeProducts=Default barcode type to use for products +SetDefaultBarcodeTypeThirdParties=Default barcode type to use for third parties +UseUnits=Define a unit of measure for Quantity during order, proposal or invoice lines edition +ProductCodeChecker= Module for product code generation and checking (product or service) +ProductOtherConf= Product / Service configuration +IsNotADir=is not a directory! +##### Syslog ##### +SyslogSetup=Logs module setup +SyslogOutput=Logs outputs +SyslogFacility=Facility +SyslogLevel=Level +SyslogFilename=File name and path +YouCanUseDOL_DATA_ROOT=You can use DOL_DATA_ROOT/dolibarr.log for a log file in Dolibarr "documents" directory. You can set a different path to store this file. +ErrorUnknownSyslogConstant=Constant %s is not a known Syslog constant +OnlyWindowsLOG_USER=On Windows, only the LOG_USER facility will be supported +CompressSyslogs=Compression and backup of debug log files (generated by module Log for debug) +SyslogFileNumberOfSaves=Number of backup logs to keep +ConfigureCleaningCronjobToSetFrequencyOfSaves=Configure cleaning scheduled job to set log backup frequency +##### Donations ##### +DonationsSetup=Donation module setup +DonationsReceiptModel=Template of donation receipt +##### Barcode ##### +BarcodeSetup=Barcode setup +PaperFormatModule=Print format module +BarcodeEncodeModule=Barcode encoding type +CodeBarGenerator=Barcode generator +ChooseABarCode=No generator defined +FormatNotSupportedByGenerator=Format not supported by this generator +BarcodeDescEAN8=Barcode of type EAN8 +BarcodeDescEAN13=Barcode of type EAN13 +BarcodeDescUPC=Barcode of type UPC +BarcodeDescISBN=Barcode of type ISBN +BarcodeDescC39=Barcode of type C39 +BarcodeDescC128=Barcode of type C128 +BarcodeDescDATAMATRIX=Barcode of type Datamatrix +BarcodeDescQRCODE=Barcode of type QR code +GenbarcodeLocation=Bar code generation command line tool (used by internal engine for some bar code types). Must be compatible with "genbarcode".
For example: /usr/local/bin/genbarcode +BarcodeInternalEngine=Internal engine +BarCodeNumberManager=Manager to auto define barcode numbers +##### Prelevements ##### +WithdrawalsSetup=Setup of module Direct Debit payments +##### ExternalRSS ##### +ExternalRSSSetup=External RSS imports setup +NewRSS=New RSS Feed +RSSUrl=RSS URL +RSSUrlExample=An interesting RSS feed +##### Mailing ##### +MailingSetup=EMailing module setup +MailingEMailFrom=Sender email (From) for emails sent by emailing module +MailingEMailError=Return Email (Errors-to) for emails with errors +MailingDelay=Seconds to wait after sending next message +##### Notification ##### +NotificationSetup=Email Notification module setup +NotificationEMailFrom=Sender email (From) for emails sent by the Notifications module +FixedEmailTarget=Recipient +NotificationDisableConfirmMessageContact=Hide the list of recipients (subscribed as contact) of notifications into the confirmation message +NotificationDisableConfirmMessageUser=Hide the list of recipients (subscribed as user) of notifications into the confirmation message +NotificationDisableConfirmMessageFix=Hide the list of recipients (subscribed as global email) of notifications into the confirmation message +##### Sendings ##### +SendingsSetup=Shipping module setup +SendingsReceiptModel=Sending receipt model +SendingsNumberingModules=Sendings numbering modules +SendingsAbility=Support shipping sheets for customer deliveries +NoNeedForDeliveryReceipts=In most cases, shipping sheets are used both as sheets for customer deliveries (list of products to send) and sheets that are received and signed by customer. Hence the product deliveries receipt is a duplicated feature and is rarely activated. +FreeLegalTextOnShippings=Free text on shipments +##### Deliveries ##### +DeliveryOrderNumberingModules=Products deliveries receipt numbering module +DeliveryOrderModel=Products deliveries receipt model +DeliveriesOrderAbility=Support products deliveries receipts +FreeLegalTextOnDeliveryReceipts=Free text on delivery receipts +##### FCKeditor ##### +AdvancedEditor=Advanced editor +ActivateFCKeditor=Activate advanced editor for: +FCKeditorForNotePublic=WYSIWIG creation/edition of the field "public notes" of elements +FCKeditorForNotePrivate=WYSIWIG creation/edition of the field "private notes" of elements +FCKeditorForCompany=WYSIWIG creation/edition of the field description of elements (except products/services) +FCKeditorForProduct=WYSIWIG creation/edition of the field description of products/services +FCKeditorForProductDetails=WYSIWIG creation/edition of products details lines for all entities (proposals, orders, invoices, etc...). Warning: Using this option for this case is seriously not recommended as it can create problems with special characters and page formatting when building PDF files. +FCKeditorForMailing= WYSIWIG creation/edition for mass eMailings (Tools->eMailing) +FCKeditorForUserSignature=WYSIWIG creation/edition of user signature +FCKeditorForMail=WYSIWIG creation/edition for all mail (except Tools->eMailing) +FCKeditorForTicket=WYSIWIG creation/edition for tickets +##### Stock ##### +StockSetup=Stock module setup +IfYouUsePointOfSaleCheckModule=If you use the Point of Sale module (POS) provided by default or an external module, this setup may be ignored by your POS module. Most POS modules are designed by default to create an invoice immediately and decrease stock irrespective of the options here. So if you need or not to have a stock decrease when registering a sale from your POS, check also your POS module setup. +##### Menu ##### +MenuDeleted=Menu deleted +Menu=Menu +Menus=Menus +TreeMenuPersonalized=Personalized menus +NotTopTreeMenuPersonalized=Personalized menus not linked to a top menu entry +NewMenu=New menu +MenuHandler=Menu handler +MenuModule=Source module +HideUnauthorizedMenu=Hide unauthorized menus also for internal users (just greyed otherwise) +DetailId=Id menu +DetailMenuHandler=Menu handler where to show new menu +DetailMenuModule=Module name if menu entry come from a module +DetailType=Type of menu (top or left) +DetailTitre=Menu label or label code for translation +DetailUrl=URL where menu send you (Absolute URL link or external link with http://) +DetailEnabled=Condition to show or not entry +DetailRight=Condition to display unauthorized grey menus +DetailLangs=Lang file name for label code translation +DetailUser=Intern / Extern / All +Target=Target +DetailTarget=Target for links (_blank top opens a new window) +DetailLevel=Level (-1:top menu, 0:header menu, >0 menu and sub menu) +ModifMenu=Menu change +DeleteMenu=Delete menu entry +ConfirmDeleteMenu=Are you sure you want to delete menu entry %s? +FailedToInitializeMenu=Failed to initialize menu +##### Tax ##### +TaxSetup=Taxes, social or fiscal taxes and dividends module setup +OptionVatMode=VAT due +OptionVATDefault=Standard basis +OptionVATDebitOption=Accrual basis +OptionVatDefaultDesc=VAT is due:
- on delivery of goods (based on invoice date)
- on payments for services +OptionVatDebitOptionDesc=VAT is due:
- on delivery of goods (based on invoice date)
- on invoice (debit) for services +OptionPaymentForProductAndServices=Cash basis for products and services +OptionPaymentForProductAndServicesDesc=VAT is due:
- on payment for goods
- on payments for services +SummaryOfVatExigibilityUsedByDefault=Time of VAT eligibility by default according to chosen option: +OnDelivery=On delivery +OnPayment=On payment +OnInvoice=On invoice +SupposedToBePaymentDate=Payment date used +SupposedToBeInvoiceDate=Invoice date used +Buy=Buy +Sell=Sell +InvoiceDateUsed=Invoice date used +YourCompanyDoesNotUseVAT=Your company has been defined to not use VAT (Home - Setup - Company/Organization), so there is no VAT options to setup. +AccountancyCode=Accounting Code +AccountancyCodeSell=Sale account. code +AccountancyCodeBuy=Purchase account. code +CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Keep the checkbox “Automatically create the payment” empty by default when creating a new tax +##### Agenda ##### +AgendaSetup=Events and agenda module setup +PasswordTogetVCalExport=Key to authorize export link +SecurityKey = Security Key +PastDelayVCalExport=Do not export event older than +AGENDA_USE_EVENT_TYPE=Use events types (managed in menu Setup -> Dictionaries -> Type of agenda events) +AGENDA_USE_EVENT_TYPE_DEFAULT=Automatically set this default value for type of event in event create form +AGENDA_DEFAULT_FILTER_TYPE=Automatically set this type of event in search filter of agenda view +AGENDA_DEFAULT_FILTER_STATUS=Automatically set this status for events in search filter of agenda view +AGENDA_DEFAULT_VIEW=Which view do you want to open by default when selecting menu Agenda +AGENDA_REMINDER_BROWSER=Enable event reminder on user's browser (When remind date is reached, a popup is shown by the browser. Each user can disable such notifications from its browser notification setup). +AGENDA_REMINDER_BROWSER_SOUND=Enable sound notification +AGENDA_REMINDER_EMAIL=Enable event reminder by emails (remind option/delay can be defined on each event). +AGENDA_REMINDER_EMAIL_NOTE=Note: The frequency of the scheduled job %s must be enough to be sure that the remind are sent at the correct moment. +AGENDA_SHOW_LINKED_OBJECT=Show linked object into agenda view +##### Clicktodial ##### +ClickToDialSetup=Click To Dial module setup +ClickToDialUrlDesc=Url called when a click on phone picto is done. In URL, you can use tags
__PHONETO__ that will be replaced with the phone number of person to call
__PHONEFROM__ that will be replaced with phone number of calling person (yours)
__LOGIN__ that will be replaced with clicktodial login (defined on user card)
__PASS__ that will be replaced with clicktodial password (defined on user card). +ClickToDialDesc=This module change phone numbers, when using a desktop computer, into clickable links. A click will call the number. This can be used to start the phone call when using a soft phone on your desktop or when using a CTI system based on SIP protocol for example. Note: When using a smartphone, phone numbers are always clickable. +ClickToDialUseTelLink=Use just a link "tel:" on phone numbers +ClickToDialUseTelLinkDesc=Use this method if your users have a softphone or a software interface, installed on the same computer as the browser, and called when you click on a link starting with "tel:" in your browser. If you need a link that start with "sip:" or a full server solution (no need of local software installation), you must set this to "No" and fill the next field. +##### Point Of Sale (CashDesk) ##### +CashDesk=Point of Sale +CashDeskSetup=Point of Sales module setup +CashDeskThirdPartyForSell=Default generic third party to use for sales +CashDeskBankAccountForSell=Default account to use to receive cash payments +CashDeskBankAccountForCheque=Default account to use to receive payments by check +CashDeskBankAccountForCB=Default account to use to receive payments by credit cards +CashDeskBankAccountForSumup=Default bank account to use to receive payments by SumUp +CashDeskDoNotDecreaseStock=Disable stock decrease when a sale is done from Point of Sale (if "no", stock decrease is done for each sale done from POS, irrespective of the option set in module Stock). +CashDeskIdWareHouse=Force and restrict warehouse to use for stock decrease +StockDecreaseForPointOfSaleDisabled=Stock decrease from Point of Sale disabled +StockDecreaseForPointOfSaleDisabledbyBatch=Stock decrease in POS is not compatible with module Serial/Lot management (currently active) so stock decrease is disabled. +CashDeskYouDidNotDisableStockDecease=You did not disable stock decrease when making a sale from Point of Sale. Hence a warehouse is required. +CashDeskForceDecreaseStockLabel=Stock decrease for batch products was forced. +CashDeskForceDecreaseStockDesc=Decrease first by the oldest eatby and sellby dates. +CashDeskReaderKeyCodeForEnter=Key code for "Enter" defined in barcode reader (Example: 13) +##### Bookmark ##### +BookmarkSetup=Bookmark module setup +BookmarkDesc=This module allows you to manage bookmarks. You can also add shortcuts to any Dolibarr pages or external web sites on your left menu. +NbOfBoomarkToShow=Maximum number of bookmarks to show in left menu +##### WebServices ##### +WebServicesSetup=Webservices module setup +WebServicesDesc=By enabling this module, Dolibarr become a web service server to provide miscellaneous web services. +WSDLCanBeDownloadedHere=WSDL descriptor files of provided services can be download here +EndPointIs=SOAP clients must send their requests to the Dolibarr endpoint available at URL +##### API #### +ApiSetup=API module setup +ApiDesc=By enabling this module, Dolibarr become a REST server to provide miscellaneous web services. +ApiProductionMode=Enable production mode (this will activate use of a cache for services management) +ApiExporerIs=You can explore and test the APIs at URL +OnlyActiveElementsAreExposed=Only elements from enabled modules are exposed +ApiKey=Key for API +WarningAPIExplorerDisabled=The API explorer has been disabled. API explorer is not required to provide API services. It is a tool for developer to find/test REST APIs. If you need this tool, go into setup of module API REST to activate it. +##### Bank ##### +BankSetupModule=Bank module setup +FreeLegalTextOnChequeReceipts=Free text on check receipts +BankOrderShow=Display order of bank accounts for countries using "detailed bank number" +BankOrderGlobal=General +BankOrderGlobalDesc=General display order +BankOrderES=Spanish +BankOrderESDesc=Spanish display order +ChequeReceiptsNumberingModule=Check Receipts Numbering Module +##### Multicompany ##### +MultiCompanySetup=Multi-company module setup +##### Suppliers ##### +SuppliersSetup=Vendor module setup +SuppliersCommandModel=Complete template of Purchase Order +SuppliersCommandModelMuscadet=Complete template of Purchase Order (old implementation of cornas template) +SuppliersInvoiceModel=Complete template of Vendor Invoice +SuppliersInvoiceNumberingModel=Vendor invoices numbering models +IfSetToYesDontForgetPermission=If set to a non null value, don't forget to provide permissions to groups or users allowed for the second approval +##### GeoIPMaxmind ##### +GeoIPMaxmindSetup=GeoIP Maxmind module setup +PathToGeoIPMaxmindCountryDataFile=Path to file containing Maxmind ip to country translation.
Examples:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +NoteOnPathLocation=Note that your ip to country data file must be inside a directory your PHP can read (Check your PHP open_basedir setup and filesystem permissions). +YouCanDownloadFreeDatFileTo=You can download a free demo version of the Maxmind GeoIP country file at %s. +YouCanDownloadAdvancedDatFileTo=You can also download a more complete version, with updates, of the Maxmind GeoIP country file at %s. +TestGeoIPResult=Test of a conversion IP -> country +##### Projects ##### +ProjectsNumberingModules=Projects numbering module +ProjectsSetup=Project module setup +ProjectsModelModule=Project reports document model +TasksNumberingModules=Tasks numbering module +TaskModelModule=Tasks reports document model +UseSearchToSelectProject=Wait until a key is pressed before loading content of Project combo list.
This may improve performance if you have a large number of projects, but it is less convenient. +##### ECM (GED) ##### +##### Fiscal Year ##### +AccountingPeriods=Accounting periods +AccountingPeriodCard=Accounting period +NewFiscalYear=New accounting period +OpenFiscalYear=Open accounting period +CloseFiscalYear=Close accounting period +DeleteFiscalYear=Delete accounting period +ConfirmDeleteFiscalYear=Are you sure to delete this accounting period? +ShowFiscalYear=Show accounting period +AlwaysEditable=Can always be edited +MAIN_APPLICATION_TITLE=Force visible name of application (warning: setting your own name here may break autofill login feature when using DoliDroid mobile application) +NbMajMin=Minimum number of uppercase characters +NbNumMin=Minimum number of numeric characters +NbSpeMin=Minimum number of special characters +NbIteConsecutive=Maximum number of repeating same characters +NoAmbiCaracAutoGeneration=Do not use ambiguous characters ("1","l","i","|","0","O") for automatic generation +SalariesSetup=Setup of module salaries +SortOrder=Sort order +Format=Format +TypePaymentDesc=0:Customer payment type, 1:Vendor payment type, 2:Both customers and suppliers payment type +IncludePath=Include path (defined into variable %s) +ExpenseReportsSetup=Setup of module Expense Reports +TemplatePDFExpenseReports=Document templates to generate expense report document +ExpenseReportsRulesSetup=Setup of module Expense Reports - Rules +ExpenseReportNumberingModules=Expense reports numbering module +NoModueToManageStockIncrease=No module able to manage automatic stock increase has been activated. Stock increase will be done on manual input only. +YouMayFindNotificationsFeaturesIntoModuleNotification=You may find options for email notifications by enabling and configuring the module "Notification". +TemplatesForNotifications=Templates for notifications +ListOfNotificationsPerUser=List of automatic notifications per user* +ListOfNotificationsPerUserOrContact=List of possible automatic notifications (on business event) available per user* or per contact** +ListOfFixedNotifications=List of automatic fixed notifications +GoOntoUserCardToAddMore=Go to the tab "Notifications" of a user to add or remove notifications for users +GoOntoContactCardToAddMore=Go to the tab "Notifications" of a third party to add or remove notifications for contacts/addresses +Threshold=Threshold +BackupDumpWizard=Wizard to build the database dump file +BackupZipWizard=Wizard to build the archive of documents directory +SomethingMakeInstallFromWebNotPossible=Installation of external module is not possible from the web interface for the following reason: +SomethingMakeInstallFromWebNotPossible2=For this reason, process to upgrade described here is a manual process only a privileged user may perform. +InstallModuleFromWebHasBeenDisabledByFile=Install of external module from application has been disabled by your administrator. You must ask him to remove the file %s to allow this feature. +ConfFileMustContainCustom=Installing or building an external module from application need to save the module files into directory %s. To have this directory processed by Dolibarr, you must setup your conf/conf.php to add the 2 directive lines:
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; +HighlightLinesOnMouseHover=Highlight table lines when mouse move passes over +HighlightLinesColor=Highlight color of the line when the mouse passes over (use 'ffffff' for no highlight) +HighlightLinesChecked=Highlight color of the line when it is checked (use 'ffffff' for no highlight) +UseBorderOnTable=Show left-right borders on tables +BtnActionColor=Color of the action button +TextBtnActionColor=Text color of the action button +TextTitleColor=Text color of Page title +LinkColor=Color of links +PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache after changing this value to have it effective +NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes +BackgroundColor=Background color +TopMenuBackgroundColor=Background color for Top menu +TopMenuDisableImages=Icon or Text in Top menu +LeftMenuBackgroundColor=Background color for Left menu +BackgroundTableTitleColor=Background color for Table title line +BackgroundTableTitleTextColor=Text color for Table title line +BackgroundTableTitleTextlinkColor=Text color for Table title link line +BackgroundTableLineOddColor=Background color for odd table lines +BackgroundTableLineEvenColor=Background color for even table lines +MinimumNoticePeriod=Minimum notice period (Your leave request must be done before this delay) +NbAddedAutomatically=Number of days added to counters of users (automatically) each month +EnterAnyCode=This field contains a reference to identify the line. Enter any value of your choice, but without special characters. +Enter0or1=Enter 0 or 1 +UnicodeCurrency=Enter here between braces, list of byte number that represent the currency symbol. For example: for $, enter [36] - for brazil real R$ [82,36] - for €, enter [8364] +ColorFormat=The RGB color is in HEX format, eg: FF0000 +PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PositionIntoComboList=Position of line into combo lists +SellTaxRate=Sales tax rate +RecuperableOnly=Yes for VAT "Not Perceived but Recoverable" dedicated for some state in France. Keep value to "No" in all other cases. +UrlTrackingDesc=If the provider or transport service offers a page or web site to check the status of your shipments, you may enter it here. You can use the key {TRACKID} in the URL parameters so the system will replace it with the tracking number the user entered into the shipment card. +OpportunityPercent=When you create a lead, you will define an estimated amount of project/lead. According to status of the lead, this amount may be multiplied by this rate to evaluate a total amount all your leads may generate. Value is a percentage (between 0 and 100). +TemplateForElement=This mail template is related to what type of object? An email template is available only when using the "Send Email" button from the related object. +TypeOfTemplate=Type of template +TemplateIsVisibleByOwnerOnly=Template is visible to owner only +VisibleEverywhere=Visible everywhere +VisibleNowhere=Visible nowhere +FixTZ=TimeZone fix +FillFixTZOnlyIfRequired=Example: +2 (fill only if problem experienced) +ExpectedChecksum=Expected Checksum +CurrentChecksum=Current Checksum +ExpectedSize=Expected size +CurrentSize=Current size +ForcedConstants=Required constant values +MailToSendProposal=Customer proposals +MailToSendOrder=Sales orders +MailToSendInvoice=Customer invoices +MailToSendShipment=Shipments +MailToSendIntervention=Interventions +MailToSendSupplierRequestForQuotation=Quotation request +MailToSendSupplierOrder=Purchase orders +MailToSendSupplierInvoice=Vendor invoices +MailToSendContract=Contracts +MailToSendReception=Receptions +MailToThirdparty=Third parties +MailToMember=Members +MailToUser=Users +MailToProject=Projects +MailToTicket=Tickets +ByDefaultInList=Show by default on list view +YouUseLastStableVersion=You use the latest stable version +TitleExampleForMajorRelease=Example of message you can use to announce this major release (feel free to use it on your web sites) +TitleExampleForMaintenanceRelease=Example of message you can use to announce this maintenance release (feel free to use it on your web sites) +ExampleOfNewsMessageForMajorRelease=Dolibarr ERP & CRM %s is available. Version %s is a major release with a lot of new features for both users and developers. You can download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read ChangeLog for complete list of changes. +ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s is available. Version %s is a maintenance version, so contains only bug fixes. We recommend all users to upgrade to this version. A maintenance release does not introduce new features or changes to the database. You may download it from the download area of https://www.dolibarr.org portal (subdirectory Stable versions). You can read the ChangeLog for complete list of changes. +MultiPriceRuleDesc=When option "Several levels of prices per product/service" is enabled, you can define different prices (one per price level) for each product. To save you time, here you may enter a rule to autocalculate a price for each level based on the price of the first level, so you will have to only enter a price for the first level for each product. This page is designed to save you time but is useful only if your prices for each level are relative to first level. You can ignore this page in most cases. +ModelModulesProduct=Templates for product documents +WarehouseModelModules=Templates for documents of warehouses +ToGenerateCodeDefineAutomaticRuleFirst=To be able to generate codes automatically, you must first define a manager to auto-define the barcode number. +SeeSubstitutionVars=See * note for list of possible substitution variables +SeeChangeLog=See ChangeLog file (english only) +AllPublishers=All publishers +UnknownPublishers=Unknown publishers +AddRemoveTabs=Add or remove tabs +AddDataTables=Add object tables +AddDictionaries=Add dictionaries tables +AddData=Add objects or dictionaries data +AddBoxes=Add widgets +AddSheduledJobs=Add scheduled jobs +AddHooks=Add hooks +AddTriggers=Add triggers +AddMenus=Add menus +AddPermissions=Add permissions +AddExportProfiles=Add export profiles +AddImportProfiles=Add import profiles +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 in 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 correctly. Please install module "%2$s" or disable module "%1$s" if you want to be safe from any surprise +CommandIsNotInsideAllowedCommands=The command you are trying to run is not in the list of allowed commands defined in parameter $dolibarr_main_restrict_os_commands in the conf.php file. +LandingPage=Landing page +SamePriceAlsoForSharedCompanies=If you use a multicompany module, with the choice "Single price", the price will also be the same for all companies if products are shared between environments +ModuleEnabledAdminMustCheckRights=Module has been activated. Permissions for activated module(s) were given to admin users only. You may need to grant permissions to other users or groups manually if necessary. +UserHasNoPermissions=This user has no permissions defined +TypeCdr=Use "None" if the date of payment term is date of invoice plus a delta in days (delta is field "%s")
Use "At end of month", if, after delta, the date must be increased to reach the end of month (+ an optional "%s" in days)
Use "Current/Next" to have payment term date being the first Nth of the month after delta (delta is field "%s", N is stored into field "%s") +BaseCurrency=Reference currency of the company (go into setup of company to change this) +WarningNoteModuleInvoiceForFrenchLaw=This module %s is compliant with French laws (Loi Finance 2016). +WarningNoteModulePOSForFrenchLaw=This module %s is compliant with French laws (Loi Finance 2016) because module Non Reversible Logs is automatically activated. +WarningInstallationMayBecomeNotCompliantWithLaw=You are trying to install module %s that is an external module. Activating an external module means you trust the publisher of that module and that you are sure that this module does not adversely impact the behavior of your application, and is compliant with laws of your country (%s). If the module introduces an illegal feature, you become responsible for the use of illegal software. +MAIN_PDF_MARGIN_LEFT=Left margin on PDF +MAIN_PDF_MARGIN_RIGHT=Right margin on PDF +MAIN_PDF_MARGIN_TOP=Top margin on PDF +MAIN_PDF_MARGIN_BOTTOM=Bottom margin on PDF +MAIN_DOCUMENTS_LOGO_HEIGHT=Height for logo on PDF +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Add column for picture on proposal lines +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Width of the column if a picture is added on lines +MAIN_PDF_NO_SENDER_FRAME=Hide borders on sender address frame +MAIN_PDF_NO_RECIPENT_FRAME=Hide borders on recipent address frame +MAIN_PDF_HIDE_CUSTOMER_CODE=Hide customer code +MAIN_PDF_HIDE_SENDER_NAME=Hide sender/company name in address block +PROPOSAL_PDF_HIDE_PAYMENTTERM=Hide payments conditions +PROPOSAL_PDF_HIDE_PAYMENTMODE=Hide payment mode +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Add electronic sign in PDF +NothingToSetup=There is no specific setup required for this module. +SetToYesIfGroupIsComputationOfOtherGroups=Set this to yes if this group is a computation of other groups +EnterCalculationRuleIfPreviousFieldIsYes=Enter calculation rule if previous field was set to Yes.
For example:
CODEGRP1+CODEGRP2 +SeveralLangugeVariatFound=Several language variants found +RemoveSpecialChars=Remove special characters +COMPANY_AQUARIUM_CLEAN_REGEX=Regex filter to clean value (COMPANY_AQUARIUM_CLEAN_REGEX) +COMPANY_DIGITARIA_CLEAN_REGEX=Regex filter to clean value (COMPANY_DIGITARIA_CLEAN_REGEX) +COMPANY_DIGITARIA_UNIQUE_CODE=Duplicate not allowed +GDPRContact=Data Protection Officer (DPO, Data Privacy or GDPR contact) +GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +HelpOnTooltip=Help text to show on tooltip +HelpOnTooltipDesc=Put text or a translation key here for the text to show in a tooltip when this field appears in a form +YouCanDeleteFileOnServerWith=You can delete this file on the server with Command Line:
%s +ChartLoaded=Chart of account loaded +SocialNetworkSetup=Setup of module Social Networks +EnableFeatureFor=Enable features for %s +VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to Off in the menu %s - %s, so Sales tax or Vat used will always be 0 for sales. +SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents +FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. +EmailCollector=Email collector +EmailCollectors=Email collectors +EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). +NewEmailCollector=New Email Collector +EMailHost=Host of email IMAP server +MailboxSourceDirectory=Mailbox source directory +MailboxTargetDirectory=Mailbox target directory +EmailcollectorOperations=Operations to do by collector +EmailcollectorOperationsDesc=Operations are executed from top to bottom order +MaxEmailCollectPerCollect=Max number of emails collected per collect +CollectNow=Collect now +ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +DateLastCollectResult=Date of latest collect try +DateLastcollectResultOk=Date of latest collect success +LastResult=Latest result +EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. +EmailCollectorConfirmCollectTitle=Email collect confirmation +EmailCollectorConfirmCollect=Do you want to run this collector now? +EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. +EmailCollectorExampleToCollectLeads=Example collecting leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. +EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +NoNewEmailToProcess=No new email (matching filters) to process +NothingProcessed=Nothing done +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) +RecordEvent=Record an event in agenda (with type Email sent or received) +CreateLeadAndThirdParty=Create a lead (and a third party if necessary) +CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +CodeLastResult=Latest result code +NbOfEmailsInInbox=Number of emails in source directory +LoadThirdPartyFromName=Load third party searching on %s (load only) +LoadThirdPartyFromNameOrCreate=Load third party searching on %s (create if not found) +AttachJoinedDocumentsToObject=Save attached files into object documents if a ref of an object is found into email topic. +WithDolTrackingID=Message from a conversation initiated by a first email sent from Dolibarr +WithoutDolTrackingID=Message from a conversation initiated by a first email NOT sent from Dolibarr +WithDolTrackingIDInMsgId=Message sent from Dolibarr +WithoutDolTrackingIDInMsgId=Message NOT sent from Dolibarr +CreateCandidature=Create job application +FormatZip=Zip +MainMenuCode=Menu entry code (mainmenu) +ECMAutoTree=Show automatic ECM tree +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. +OpeningHours=Opening hours +OpeningHoursDesc=Enter here the regular opening hours of your company. +ResourceSetup=Configuration of Resource module +UseSearchToSelectResource=Use a search form to choose a resource (rather than a drop-down list). +DisabledResourceLinkUser=Disable feature to link a resource to users +DisabledResourceLinkContact=Disable feature to link a resource to contacts +EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +ConfirmUnactivation=Confirm module reset +OnMobileOnly=On small screen (smartphone) only +DisableProspectCustomerType=Disable the "Prospect + Customer" third party type (so third party must be "Prospect" or "Customer", but can't be both) +MAIN_OPTIMIZEFORTEXTBROWSER=Simplify interface for blind person +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Enable this option if you are a blind person, or if you use the application from a text browser like Lynx or Links. +MAIN_OPTIMIZEFORCOLORBLIND=Change interface's color for color blind person +MAIN_OPTIMIZEFORCOLORBLINDDesc=Enable this option if you are a color blind person, in some case interface will change color setup to increase contrast. +Protanopia=Protanopia +Deuteranopes=Deuteranopes +Tritanopes=Tritanopes +ThisValueCanOverwrittenOnUserLevel=This value can be overwritten by each user from its user page - tab '%s' +DefaultCustomerType=Default thirdparty type for "New customer" creation form +ABankAccountMustBeDefinedOnPaymentModeSetup=Note: The bank account must be defined on the module of each payment mode (Paypal, Stripe, ...) to have this feature working. +RootCategoryForProductsToSell=Root category of products to sell +RootCategoryForProductsToSellDesc=If defined, only products inside this category or childs of this category will be available in the Point Of Sale +DebugBar=Debug Bar +DebugBarDesc=Toolbar that comes with a plenty of tools to simplify debugging +DebugBarSetup=DebugBar Setup +GeneralOptions=General Options +LogsLinesNumber=Number of lines to show on logs tab +UseDebugBar=Use the debug bar +DEBUGBAR_LOGS_LINES_NUMBER=Number of last log lines to keep in console +WarningValueHigherSlowsDramaticalyOutput=Warning, higher values slows dramaticaly output +ModuleActivated=Module %s is activated and slows the interface +ModuleActivatedWithTooHighLogLevel=Module %s is activated with a too high logging level (try to use a lower level for better performances and security) +ModuleSyslogActivatedButLevelNotTooVerbose=Module %s is activated and log level (%s) is correct (not too verbose) +IfYouAreOnAProductionSetThis=If you are on a production environment, you should set this property to %s. +AntivirusEnabledOnUpload=Antivirus enabled on uploaded files +SomeFilesOrDirInRootAreWritable=Some files or directories are not in a read-only mode +EXPORTS_SHARE_MODELS=Export models are share with everybody +ExportSetup=Setup of module Export +ImportSetup=Setup of module Import +InstanceUniqueID=Unique ID of the instance +SmallerThan=Smaller than +LargerThan=Larger than +IfTrackingIDFoundEventWillBeLinked=Note that If a tracking ID of an object is found into email, or if the email is an answer of an email aready collected and linked to an object, the created event will be automatically linked to the known related object. +WithGMailYouCanCreateADedicatedPassword=With a GMail account, if you enabled the 2 steps validation, it is recommanded to create a dedicated second password for the application instead of using your own account passsword from https://myaccount.google.com/. +EmailCollectorTargetDir=It may be a desired behaviour to move the email into another tag/directory when it was processed successfully. Just set name of directory here to use this feature (Do NOT use special characters in name). Note that you must also use a read/write login account. +EmailCollectorLoadThirdPartyHelp=You can use this action to use the email content to find and load an existing thirdparty in your database. The found (or created) thirdparty will be used for following actions that need it.
For example, if you want to create a thirdparty with a name extracted from a string 'Name: name to find' present into the body, use the sender email as email, you can set the parameter field like this:
'email=HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EndPointFor=End point for %s : %s +DeleteEmailCollector=Delete email collector +ConfirmDeleteEmailCollector=Are you sure you want to delete this email collector? +RecipientEmailsWillBeReplacedWithThisValue=Recipient emails will be always replaced with this value +AtLeastOneDefaultBankAccountMandatory=At least 1 default bank account must be defined +RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. +IPListExample=127.0.0.1 192.168.0.2 [::1] +BaseOnSabeDavVersion=Based on the library SabreDAV version +NotAPublicIp=Not a public IP +MakeAnonymousPing=Make an anonymous Ping '+1' to the Dolibarr foundation server (done 1 time only after installation) to allow the foundation to count the number of Dolibarr installation. +FeatureNotAvailableWithReceptionModule=Feature not available when module Reception is enabled +EmailTemplate=Template for email +EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax +PDF_SHOW_PROJECT=Show project on document +ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty +PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. +PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF +FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. +RssNote=Note: Each RSS feed definition provides a widget that you must enable to have it available in dashboard +JumpToBoxes=Jump to Setup -> Widgets +MeasuringUnitTypeDesc=Use here a value like "size", "surface", "volume", "weight", "time" +MeasuringScaleDesc=The scale is the number of places you have to move the decimal part to match the default reference unit. For "time" unit type, it is the number of seconds. Values between 80 and 99 are reserved values. +TemplateAdded=Template added +TemplateUpdated=Template updated +TemplateDeleted=Template deleted +MailToSendEventPush=Event reminder email +SwitchThisForABetterSecurity=Switching this value to %s is recommended for more security +DictionaryProductNature= Nature of product +CountryIfSpecificToOneCountry=Country (if specific to a given country) +YouMayFindSecurityAdviceHere=You may find security advisory here +ModuleActivatedMayExposeInformation=This PHP extension may expose sensitive data. If you don't need it, disable it. +ModuleActivatedDoNotUseInProduction=A module designed for the development has been enabled. Do not enable it on a production environment. +CombinationsSeparator=Separator character for product combinations +SeeLinkToOnlineDocumentation=See link to online documention on top menu for examples +SHOW_SUBPRODUCT_REF_IN_PDF=If the feature "%s" of module %s is used, show details of subproducts of a kit on PDF. +AskThisIDToYourBank=Contact your bank to get this ID +AdvancedModeOnly=Permision available in Advanced permission mode only +ConfFileIsReadableOrWritableByAnyUsers=The conf file is readable or writable by any users. Give permission to web server user and group only. +MailToSendEventOrganization=Event Organization +MailToPartnership=Partnership +AGENDA_EVENT_DEFAULT_STATUS=Default event status when creating a event from the form +YouShouldDisablePHPFunctions=You should disable PHP functions +IfCLINotRequiredYouShouldDisablePHPFunctions=Except if you need to run system commands in custom code, you shoud disable PHP functions +PHPFunctionsRequiredForCLI=For shell purpose (like scheduled job backup or running an anitivurs program), you must keep PHP functions +NoWritableFilesFoundIntoRootDir=No writable files or directories of the common programs were found into your root directory (Good) +RecommendedValueIs=Recommended: %s +Recommended=Recommended +NotRecommended=Not recommended +ARestrictedPath=Some restricted path +CheckForModuleUpdate=Check for external modules updates +CheckForModuleUpdateHelp=This action will connect to editors of external modules to check if a new version is available. +ModuleUpdateAvailable=An update is available +NoExternalModuleWithUpdate=No updates found for external modules +SwaggerDescriptionFile=Swagger API description file (for use with redoc for example) +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=You enabled deprecated WS API. You should use REST API instead. +RandomlySelectedIfSeveral=Randomly selected if several pictures are available +DatabasePasswordObfuscated=Database password is obfuscated in conf file +DatabasePasswordNotObfuscated=Database password is NOT obfuscated in conf file +APIsAreNotEnabled=APIs modules are not enabled +YouShouldSetThisToOff=You should set this to 0 or off +InstallAndUpgradeLockedBy=Install and upgrades are locked by the file %s +OldImplementation=Old implementation +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=If some online payment modules are enabled (Paypal, Stripe, ...), add a link on the PDF to make the online payment +DashboardDisableGlobal=Disable globally all the thumbs of open objects +BoxstatsDisableGlobal=Disable totally box statistics +DashboardDisableBlocks=Thumbs of open objects (to process or late) on main dashboard +DashboardDisableBlockAgenda=Disable the thumb for agenda +DashboardDisableBlockProject=Disable the thumb for projects +DashboardDisableBlockCustomer=Disable the thumb for customers +DashboardDisableBlockSupplier=Disable the thumb for suppliers +DashboardDisableBlockContract=Disable the thumb for contracts +DashboardDisableBlockTicket=Disable the thumb for tickets +DashboardDisableBlockBank=Disable the thumb for banks +DashboardDisableBlockAdherent=Disable the thumb for memberships +DashboardDisableBlockExpenseReport=Disable the thumb for expense reports +DashboardDisableBlockHoliday=Disable the thumb for leaves +EnabledCondition=Condition to have field enabled (if not enabled, visibility will always be off) +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax +LanguageAndPresentation=Language and presentation +SkinAndColors=Skin and colors +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=If you want to use a second tax, you must enable also the first sales tax +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=If you want to use a third tax, you must enable also the first sales tax +PDF_USE_1A=Generate PDF with PDF/A-1b format +MissingTranslationForConfKey = Missing translation for %s +NativeModules=Native modules +NoDeployedModulesFoundWithThisSearchCriteria=No modules found for these search criteria +API_DISABLE_COMPRESSION=Disable compression of API responses +EachTerminalHasItsOwnCounter=Each terminal use its own counter. +FillAndSaveAccountIdAndSecret=Fill and save account ID and secret first +PreviousHash=Previous hash +LateWarningAfter="Late" warning after +TemplateforBusinessCards=Template for a business card in different size +InventorySetup= Inventory Setup +ExportUseLowMemoryMode=Use a low memory mode +ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + +HashForPing=Hash used for ping +ReadOnlyMode=Is instance in "Read Only" mode +DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. +FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') +DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + +IconAndText=Icon and text +TextOnly=Text only +IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar +IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon +IconOnly=Icon only - Text on tooltip only +INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices +INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices +UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +DarkThemeMode=Dark theme mode +AlwaysDisabled=Always disabled +AccordingToBrowser=According to browser +AlwaysEnabled=Always Enabled +DoesNotWorkWithAllThemes=Will not work with all themes +NoName=No name +ShowAdvancedOptions= Show advanced options +HideAdvancedoptions= Hide advanced options +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/ms_MY/agenda.lang b/htdocs/langs/ms_MY/agenda.lang new file mode 100644 index 00000000000..d2d63b3a8e4 --- /dev/null +++ b/htdocs/langs/ms_MY/agenda.lang @@ -0,0 +1,177 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID event +Actions=Events +Agenda=Agenda +TMenuAgenda=Agenda +Agendas=Agendas +LocalAgenda=Default calendar +ActionsOwnedBy=Event owned by +ActionsOwnedByShort=Owner +AffectedTo=Assigned to +Event=Event +Events=Events +EventsNb=Number of events +ListOfActions=List of events +EventReports=Event reports +Location=Location +ToUserOfGroup=Event assigned to any user in the group +EventOnFullDay=Event on all day(s) +MenuToDoActions=All incomplete events +MenuDoneActions=All terminated events +MenuToDoMyActions=My incomplete events +MenuDoneMyActions=My terminated events +ListOfEvents=List of events (default calendar) +ActionsAskedBy=Events reported by +ActionsToDoBy=Events assigned to +ActionsDoneBy=Events done by +ActionAssignedTo=Event assigned to +ViewCal=Month view +ViewDay=Day view +ViewWeek=Week view +ViewPerUser=Per user view +ViewPerType=Per type view +AutoActions= Automatic filling +AgendaAutoActionDesc= Here you may define events which you want Dolibarr to create automatically in Agenda. If nothing is checked, only manual actions will be included in logs and displayed in Agenda. Automatic tracking of business actions done on objects (validation, status change) will not be saved. +AgendaSetupOtherDesc= This page provides options to allow the export of your Dolibarr events into an external calendar (Thunderbird, Google Calendar etc...) +AgendaExtSitesDesc=This page allows to declare external sources of calendars to see their events into Dolibarr agenda. +ActionsEvents=Events for which Dolibarr will create an action in agenda automatically +EventRemindersByEmailNotEnabled=Event reminders by email was not enabled into %s module setup. +##### Agenda event labels ##### +NewCompanyToDolibarr=Third party %s created +COMPANY_MODIFYInDolibarr=Third party %s modified +COMPANY_DELETEInDolibarr=Third party %s deleted +ContractValidatedInDolibarr=Contract %s validated +CONTRACT_DELETEInDolibarr=Contract %s deleted +PropalClosedSignedInDolibarr=Proposal %s signed +PropalClosedRefusedInDolibarr=Proposal %s refused +PropalValidatedInDolibarr=Proposal %s validated +PropalBackToDraftInDolibarr=Proposal %s go back to draft status +PropalClassifiedBilledInDolibarr=Proposal %s classified billed +InvoiceValidatedInDolibarr=Invoice %s validated +InvoiceValidatedInDolibarrFromPos=Invoice %s validated from POS +InvoiceBackToDraftInDolibarr=Invoice %s go back to draft status +InvoiceDeleteDolibarr=Invoice %s deleted +InvoicePaidInDolibarr=Invoice %s changed to paid +InvoiceCanceledInDolibarr=Invoice %s canceled +MemberValidatedInDolibarr=Member %s validated +MemberModifiedInDolibarr=Member %s modified +MemberResiliatedInDolibarr=Member %s terminated +MemberDeletedInDolibarr=Member %s deleted +MemberExcludedInDolibarr=Member %s excluded +MemberSubscriptionAddedInDolibarr=Subscription %s for member %s added +MemberSubscriptionModifiedInDolibarr=Subscription %s for member %s modified +MemberSubscriptionDeletedInDolibarr=Subscription %s for member %s deleted +ShipmentValidatedInDolibarr=Shipment %s validated +ShipmentClassifyClosedInDolibarr=Shipment %s classified billed +ShipmentUnClassifyCloseddInDolibarr=Shipment %s classified re-open +ShipmentBackToDraftInDolibarr=Shipment %s go back to draft status +ShipmentDeletedInDolibarr=Shipment %s deleted +ShipmentCanceledInDolibarr=Shipment %s canceled +ReceptionValidatedInDolibarr=Reception %s validated +ReceptionClassifyClosedInDolibarr=Reception %s classified closed +OrderCreatedInDolibarr=Order %s created +OrderValidatedInDolibarr=Order %s validated +OrderDeliveredInDolibarr=Order %s classified delivered +OrderCanceledInDolibarr=Order %s canceled +OrderBilledInDolibarr=Order %s classified billed +OrderApprovedInDolibarr=Order %s approved +OrderRefusedInDolibarr=Order %s refused +OrderBackToDraftInDolibarr=Order %s go back to draft status +ProposalSentByEMail=Commercial proposal %s sent by email +ContractSentByEMail=Contract %s sent by email +OrderSentByEMail=Sales order %s sent by email +InvoiceSentByEMail=Customer invoice %s sent by email +SupplierOrderSentByEMail=Purchase order %s sent by email +ORDER_SUPPLIER_DELETEInDolibarr=Purchase order %s deleted +SupplierInvoiceSentByEMail=Vendor invoice %s sent by email +ShippingSentByEMail=Shipment %s sent by email +ShippingValidated= Shipment %s validated +InterventionSentByEMail=Intervention %s sent by email +ProposalDeleted=Proposal deleted +OrderDeleted=Order deleted +InvoiceDeleted=Invoice deleted +DraftInvoiceDeleted=Draft invoice deleted +CONTACT_CREATEInDolibarr=Contact %s created +CONTACT_MODIFYInDolibarr=Contact %s modified +CONTACT_DELETEInDolibarr=Contact %s deleted +PRODUCT_CREATEInDolibarr=Product %s created +PRODUCT_MODIFYInDolibarr=Product %s modified +PRODUCT_DELETEInDolibarr=Product %s deleted +HOLIDAY_CREATEInDolibarr=Request for leave %s created +HOLIDAY_MODIFYInDolibarr=Request for leave %s modified +HOLIDAY_APPROVEInDolibarr=Request for leave %s approved +HOLIDAY_VALIDATEInDolibarr=Request for leave %s validated +HOLIDAY_DELETEInDolibarr=Request for leave %s deleted +EXPENSE_REPORT_CREATEInDolibarr=Expense report %s created +EXPENSE_REPORT_VALIDATEInDolibarr=Expense report %s validated +EXPENSE_REPORT_APPROVEInDolibarr=Expense report %s approved +EXPENSE_REPORT_DELETEInDolibarr=Expense report %s deleted +EXPENSE_REPORT_REFUSEDInDolibarr=Expense report %s refused +PROJECT_CREATEInDolibarr=Project %s created +PROJECT_MODIFYInDolibarr=Project %s modified +PROJECT_DELETEInDolibarr=Project %s deleted +TICKET_CREATEInDolibarr=Ticket %s created +TICKET_MODIFYInDolibarr=Ticket %s modified +TICKET_ASSIGNEDInDolibarr=Ticket %s assigned +TICKET_CLOSEInDolibarr=Ticket %s closed +TICKET_DELETEInDolibarr=Ticket %s deleted +BOM_VALIDATEInDolibarr=BOM validated +BOM_UNVALIDATEInDolibarr=BOM unvalidated +BOM_CLOSEInDolibarr=BOM disabled +BOM_REOPENInDolibarr=BOM reopen +BOM_DELETEInDolibarr=BOM deleted +MRP_MO_VALIDATEInDolibarr=MO validated +MRP_MO_UNVALIDATEInDolibarr=MO set to draft status +MRP_MO_PRODUCEDInDolibarr=MO produced +MRP_MO_DELETEInDolibarr=MO deleted +MRP_MO_CANCELInDolibarr=MO canceled +PAIDInDolibarr=%s paid +##### End agenda events ##### +AgendaModelModule=Document templates for event +DateActionStart=Start date +DateActionEnd=End date +AgendaUrlOptions1=You can also add following parameters to filter output: +AgendaUrlOptions3=logina=%s to restrict output to actions owned by a user %s. +AgendaUrlOptionsNotAdmin=logina=!%s to restrict output to actions not owned by user %s. +AgendaUrlOptions4=logint=%s to restrict output to actions assigned to user %s (owner and others). +AgendaUrlOptionsProject=project=__PROJECT_ID__ to restrict output to actions linked to project __PROJECT_ID__. +AgendaUrlOptionsNotAutoEvent=notactiontype=systemauto to exclude automatic events. +AgendaUrlOptionsIncludeHolidays=includeholidays=1 to include events of holidays. +AgendaShowBirthdayEvents=Birthdays of contacts +AgendaHideBirthdayEvents=Hide birthdays of contacts +Busy=Busy +ExportDataset_event1=List of agenda events +DefaultWorkingDays=Default working days range in week (Example: 1-5, 1-6) +DefaultWorkingHours=Default working hours in day (Example: 9-18) +# External Sites ical +ExportCal=Export calendar +ExtSites=Import external calendars +ExtSitesEnableThisTool=Show external calendars (defined in global setup) in Agenda. Does not affect external calendars defined by users. +ExtSitesNbOfAgenda=Number of calendars +AgendaExtNb=Calendar no. %s +ExtSiteUrlAgenda=URL to access .ical file +ExtSiteNoLabel=No Description +VisibleTimeRange=Visible time range +VisibleDaysRange=Visible days range +AddEvent=Create event +MyAvailability=My availability +ActionType=Event type +DateActionBegin=Start event date +ConfirmCloneEvent=Are you sure you want to clone the event %s? +RepeatEvent=Repeat event +OnceOnly=Once only +EveryWeek=Every week +EveryMonth=Every month +DayOfMonth=Day of month +DayOfWeek=Day of week +DateStartPlusOne=Date start + 1 hour +SetAllEventsToTodo=Set all events to todo +SetAllEventsToInProgress=Set all events to in progress +SetAllEventsToFinished=Set all events to finished +ReminderTime=Reminder period before the event +TimeType=Duration type +ReminderType=Callback type +AddReminder=Create an automatic reminder notification for this event +ErrorReminderActionCommCreation=Error creating the reminder notification for this event +BrowserPush=Browser Popup Notification +ActiveByDefault=Enabled by default diff --git a/htdocs/langs/ms_MY/assets.lang b/htdocs/langs/ms_MY/assets.lang new file mode 100644 index 00000000000..fd7185d93c0 --- /dev/null +++ b/htdocs/langs/ms_MY/assets.lang @@ -0,0 +1,186 @@ +# Copyright (C) 2018-2022 Alexandre Spangaro +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +# +# Generic +# +NewAsset=New asset +AccountancyCodeAsset=Accounting code (asset) +AccountancyCodeDepreciationAsset=Accounting code (depreciation asset account) +AccountancyCodeDepreciationExpense=Accounting code (depreciation expense account) +AssetsLines=Assets +DeleteType=Delete +DeleteAnAssetType=Delete an asset model +ConfirmDeleteAssetType=Are you sure you want to delete this asset model? +ShowTypeCard=Show model '%s' + +# Module label 'ModuleAssetsName' +ModuleAssetsName=Assets +# Module description 'ModuleAssetsDesc' +ModuleAssetsDesc=Assets description + +# +# Admin page +# +AssetSetup=Assets setup +AssetSetupPage=Assets setup page +ExtraFieldsAssetModel=Complementary attributes (Asset's model) + +AssetsType=Asset model +AssetsTypeId=Asset model id +AssetsTypeLabel=Asset model label +AssetsTypes=Assets models +ASSET_ACCOUNTANCY_CATEGORY=Fixed asset accounting group + +# +# Menu +# +MenuAssets=Assets +MenuNewAsset=New asset +MenuAssetModels=Model assets +MenuListAssets=List +MenuNewAssetModel=New asset's model +MenuListAssetModels=List + +# +# Module +# +ConfirmDeleteAsset=Do you really want to remove this asset? + +# +# Tab +# +AssetDepreciationOptions=Depreciation options +AssetAccountancyCodes=Accounting accounts +AssetDepreciation=Depreciation + +# +# Asset +# +Asset=Asset +Assets=Assets +AssetReversalAmountHT=Reversal amount (without taxes) +AssetAcquisitionValueHT=Acquisition amount (without taxes) +AssetRecoveredVAT=Recovered VAT +AssetReversalDate=Reversal date +AssetDateAcquisition=Acquisition date +AssetDateStart=Date of start-up +AssetAcquisitionType=Type of acquisition +AssetAcquisitionTypeNew=New +AssetAcquisitionTypeOccasion=Used +AssetType=Type of asset +AssetTypeIntangible=Intangible +AssetTypeTangible=Tangible +AssetTypeInProgress=In progress +AssetTypeFinancial=Financial +AssetNotDepreciated=Not depreciated +AssetDisposal=Disposal +AssetConfirmDisposalAsk=Are you sure you want to dispose of the asset %s? +AssetConfirmReOpenAsk=Are you sure you want to reopen the asset %s? + +# +# Asset status +# +AssetInProgress=In progress +AssetDisposed=Disposed +AssetRecorded=Accounted + +# +# Asset disposal +# +AssetDisposalDate=Date of disposal +AssetDisposalAmount=Disposal value +AssetDisposalType=Type of disposal +AssetDisposalDepreciated=Depreciate the year of transfer +AssetDisposalSubjectToVat=Disposal subject to VAT + +# +# Asset model +# +AssetModel=Asset's model +AssetModels=Asset's models + +# +# Asset depreciation options +# +AssetDepreciationOptionEconomic=Economic depreciation +AssetDepreciationOptionAcceleratedDepreciation=Accelerated depreciation (tax) +AssetDepreciationOptionDepreciationType=Depreciation type +AssetDepreciationOptionDepreciationTypeLinear=Linear +AssetDepreciationOptionDepreciationTypeDegressive=Degressive +AssetDepreciationOptionDepreciationTypeExceptional=Exceptional +AssetDepreciationOptionDegressiveRate=Degressive rate +AssetDepreciationOptionAcceleratedDepreciation=Accelerated depreciation (tax) +AssetDepreciationOptionDuration=Duration +AssetDepreciationOptionDurationType=Type duration +AssetDepreciationOptionDurationTypeAnnual=Annual +AssetDepreciationOptionDurationTypeMonthly=Monthly +AssetDepreciationOptionDurationTypeDaily=Daily +AssetDepreciationOptionRate=Rate (%%) +AssetDepreciationOptionAmountBaseDepreciationHT=Depreciation base (excl. VAT) +AssetDepreciationOptionAmountBaseDeductibleHT=Deductible base (excl. VAT) +AssetDepreciationOptionTotalAmountLastDepreciationHT=Total amount last depreciation (excl. VAT) + +# +# Asset accountancy codes +# +AssetAccountancyCodeDepreciationEconomic=Economic depreciation +AssetAccountancyCodeAsset=Asset +AssetAccountancyCodeDepreciationAsset=Depreciation +AssetAccountancyCodeDepreciationExpense=Depreciation expense +AssetAccountancyCodeValueAssetSold=Value of asset disposed +AssetAccountancyCodeReceivableOnAssignment=Receivable on disposal +AssetAccountancyCodeProceedsFromSales=Proceeds from disposal +AssetAccountancyCodeVatCollected=Collected VAT +AssetAccountancyCodeVatDeductible=Recovered VAT on assets +AssetAccountancyCodeDepreciationAcceleratedDepreciation=Accelerated depreciation (tax) +AssetAccountancyCodeAcceleratedDepreciation=Account +AssetAccountancyCodeEndowmentAcceleratedDepreciation=Depreciation expense +AssetAccountancyCodeProvisionAcceleratedDepreciation=Repossession/Provision + +# +# Asset depreciation +# +AssetBaseDepreciationHT=Depreciation basis (excl. VAT) +AssetDepreciationBeginDate=Start of depreciation on +AssetDepreciationDuration=Duration +AssetDepreciationRate=Rate (%%) +AssetDepreciationDate=Depreciation date +AssetDepreciationHT=Depreciation (excl. VAT) +AssetCumulativeDepreciationHT=Cumulative depreciation (excl. VAT) +AssetResidualHT=Residual value (excl. VAT) +AssetDispatchedInBookkeeping=Depreciation recorded +AssetFutureDepreciationLine=Future depreciation +AssetDepreciationReversal=Reversal + +# +# Errors +# +AssetErrorAssetOrAssetModelIDNotProvide=Id of the asset or the model sound has not been provided +AssetErrorFetchAccountancyCodesForMode=Error when retrieving the accounting accounts for the '%s' depreciation mode +AssetErrorDeleteAccountancyCodesForMode=Error when deleting accounting accounts from the '%s' depreciation mode +AssetErrorInsertAccountancyCodesForMode=Error when inserting the accounting accounts of the depreciation mode '%s' +AssetErrorFetchDepreciationOptionsForMode=Error when retrieving options for the '%s' depreciation mode +AssetErrorDeleteDepreciationOptionsForMode=Error when deleting the '%s' depreciation mode options +AssetErrorInsertDepreciationOptionsForMode=Error when inserting the '%s' depreciation mode options +AssetErrorFetchDepreciationLines=Error when retrieving recorded depreciation lines +AssetErrorClearDepreciationLines=Error when purging recorded depreciation lines (reversal and future) +AssetErrorAddDepreciationLine=Error when adding a depreciation line +AssetErrorCalculationDepreciationLines=Error when calculating the depreciation lines (recovery and future) +AssetErrorReversalDateNotProvidedForMode=The reversal date is not provided for the '%s' depreciation method +AssetErrorReversalDateNotGreaterThanCurrentBeginFiscalDateForMode=The reversal date must be greater than or equal to the beginning of the current fiscal year for the '%s' depreciation method +AssetErrorReversalAmountNotProvidedForMode=The reversal amount is not provided for the depreciation mode '%s'. +AssetErrorFetchCumulativeDepreciation=Error when retrieving the accumulated depreciation amount from the depreciation line +AssetErrorSetLastCumulativeDepreciation=Error when recording the last accumulated depreciation amount diff --git a/htdocs/langs/ms_MY/banks.lang b/htdocs/langs/ms_MY/banks.lang new file mode 100644 index 00000000000..10ba859e71f --- /dev/null +++ b/htdocs/langs/ms_MY/banks.lang @@ -0,0 +1,187 @@ +# Dolibarr language file - Source file is en_US - banks +Bank=Bank +MenuBankCash=Banks | Cash +MenuVariousPayment=Miscellaneous payments +MenuNewVariousPayment=New Miscellaneous payment +BankName=Bank name +FinancialAccount=Account +BankAccount=Bank account +BankAccounts=Bank accounts +BankAccountsAndGateways=Bank accounts | Gateways +ShowAccount=Show Account +AccountRef=Financial account ref +AccountLabel=Financial account label +CashAccount=Cash account +CashAccounts=Cash accounts +CurrentAccounts=Current accounts +SavingAccounts=Savings accounts +ErrorBankLabelAlreadyExists=Financial account label already exists +BankBalance=Balance +BankBalanceBefore=Balance before +BankBalanceAfter=Balance after +BalanceMinimalAllowed=Minimum allowed balance +BalanceMinimalDesired=Minimum desired balance +InitialBankBalance=Initial balance +EndBankBalance=End balance +CurrentBalance=Current balance +FutureBalance=Future balance +ShowAllTimeBalance=Show balance from start +AllTime=From start +Reconciliation=Reconciliation +RIB=Bank Account Number +IBAN=IBAN number +BIC=BIC/SWIFT code +SwiftValid=BIC/SWIFT valid +SwiftNotValid=BIC/SWIFT not valid +IbanValid=BAN valid +IbanNotValid=BAN not valid +StandingOrders=Direct debit orders +StandingOrder=Direct debit order +PaymentByDirectDebit=Payment by direct debit +PaymentByBankTransfers=Payments by credit transfer +PaymentByBankTransfer=Payment by credit transfer +AccountStatement=Account statement +AccountStatementShort=Statement +AccountStatements=Account statements +LastAccountStatements=Last account statements +IOMonthlyReporting=Monthly reporting +BankAccountDomiciliation=Bank address +BankAccountCountry=Account country +BankAccountOwner=Account owner name +BankAccountOwnerAddress=Account owner address +CreateAccount=Create account +NewBankAccount=New account +NewFinancialAccount=New financial account +MenuNewFinancialAccount=New financial account +EditFinancialAccount=Edit account +LabelBankCashAccount=Bank or cash label +AccountType=Account type +BankType0=Savings account +BankType1=Current or credit card account +BankType2=Cash account +AccountsArea=Accounts area +AccountCard=Account card +DeleteAccount=Delete account +ConfirmDeleteAccount=Are you sure you want to delete this account? +Account=Account +BankTransactionByCategories=Bank entries by categories +BankTransactionForCategory=Bank entries for category %s +RemoveFromRubrique=Remove link with category +RemoveFromRubriqueConfirm=Are you sure you want to remove link between the entry and the category? +ListBankTransactions=List of bank entries +IdTransaction=Transaction ID +BankTransactions=Bank entries +BankTransaction=Bank entry +ListTransactions=List entries +ListTransactionsByCategory=List entries/category +TransactionsToConciliate=Entries to reconcile +TransactionsToConciliateShort=To reconcile +Conciliable=Can be reconciled +Conciliate=Reconcile +Conciliation=Reconciliation +SaveStatementOnly=Save statement only +ReconciliationLate=Reconciliation late +IncludeClosedAccount=Include closed accounts +OnlyOpenedAccount=Only open accounts +AccountToCredit=Account to credit +AccountToDebit=Account to debit +DisableConciliation=Disable reconciliation feature for this account +ConciliationDisabled=Reconciliation feature disabled +LinkedToAConciliatedTransaction=Linked to a conciliated entry +StatusAccountOpened=Open +StatusAccountClosed=Closed +AccountIdShort=Number +LineRecord=Transaction +AddBankRecord=Add entry +AddBankRecordLong=Add entry manually +Conciliated=Reconciled +ReConciliedBy=Reconciled by +DateConciliating=Reconcile date +BankLineConciliated=Entry reconciled with bank receipt +BankLineReconciled=Reconciled +BankLineNotReconciled=Not reconciled +CustomerInvoicePayment=Customer payment +SupplierInvoicePayment=Vendor payment +SubscriptionPayment=Subscription payment +WithdrawalPayment=Debit payment order +SocialContributionPayment=Social/fiscal tax payment +BankTransfer=Credit transfer +BankTransfers=Credit transfers +MenuBankInternalTransfer=Internal transfer +TransferDesc=Use internal transfer to transfer from one account to another, the application will write two records: a debit in the source account and a credit in the target account. The same amount, label and date will be used for this transaction. +TransferFrom=From +TransferTo=To +TransferFromToDone=A transfer from %s to %s of %s %s has been recorded. +CheckTransmitter=Sender +ValidateCheckReceipt=Validate this check receipt? +ConfirmValidateCheckReceipt=Are you sure that you want to submit this check receipt for validation? No changes will be possible once validated. +DeleteCheckReceipt=Delete this check receipt? +ConfirmDeleteCheckReceipt=Are you sure you want to delete this check receipt? +BankChecks=Bank checks +BankChecksToReceipt=Checks awaiting deposit +BankChecksToReceiptShort=Checks awaiting deposit +ShowCheckReceipt=Show check deposit receipt +NumberOfCheques=No. of check +DeleteTransaction=Delete entry +ConfirmDeleteTransaction=Are you sure you want to delete this entry? +ThisWillAlsoDeleteBankRecord=This will also delete generated bank entry +BankMovements=Movements +PlannedTransactions=Planned entries +Graph=Graphs +ExportDataset_banque_1=Bank entries and account statement +ExportDataset_banque_2=Deposit slip +TransactionOnTheOtherAccount=Transaction on the other account +PaymentNumberUpdateSucceeded=Payment number updated successfully +PaymentNumberUpdateFailed=Payment number could not be updated +PaymentDateUpdateSucceeded=Payment date updated successfully +PaymentDateUpdateFailed=Payment date could not be updated +Transactions=Transactions +BankTransactionLine=Bank entry +AllAccounts=All bank and cash accounts +BackToAccount=Back to account +ShowAllAccounts=Show for all accounts +FutureTransaction=Future transaction. Unable to reconcile. +SelectChequeTransactionAndGenerate=Select/filter the checks which are to be included in the check deposit receipt. Then, click on "Create". +InputReceiptNumber=Choose the bank statement related with the conciliation. Use a sortable numeric value: YYYYMM or YYYYMMDD +EventualyAddCategory=Eventually, specify a category in which to classify the records +ToConciliate=To reconcile? +ThenCheckLinesAndConciliate=Then, check the lines present in the bank statement and click +DefaultRIB=Default BAN +AllRIB=All BAN +LabelRIB=BAN Label +NoBANRecord=No BAN record +DeleteARib=Delete BAN record +ConfirmDeleteRib=Are you sure you want to delete this BAN record? +RejectCheck=Check returned +ConfirmRejectCheck=Are you sure you want to mark this check as rejected? +RejectCheckDate=Date the check was returned +CheckRejected=Check returned +CheckRejectedAndInvoicesReopened=Check returned and invoices re-open +BankAccountModelModule=Document templates for bank accounts +DocumentModelSepaMandate=Template of SEPA mandate. Useful for European countries in EEC only. +DocumentModelBan=Template to print a page with BAN information. +NewVariousPayment=New miscellaneous payment +VariousPayment=Miscellaneous payment +VariousPayments=Miscellaneous payments +ShowVariousPayment=Show miscellaneous payment +AddVariousPayment=Add miscellaneous payment +VariousPaymentId=Miscellaneous payment ID +VariousPaymentLabel=Miscellaneous payment label +ConfirmCloneVariousPayment=Confirm the clone of a miscellaneous payment +SEPAMandate=SEPA mandate +YourSEPAMandate=Your SEPA mandate +FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to +AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation +CashControl=POS cash control +NewCashFence=New cash control (opening or closing) +BankColorizeMovement=Colorize movements +BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements +BankColorizeMovementName1=Background color for debit movement +BankColorizeMovementName2=Background color for credit movement +IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on some bank accounts, disable the property "%s" on them to remove this warning. +NoBankAccountDefined=No bank account defined +NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled. +AlreadyOneBankAccount=Already one bank account defined +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA transfer: 'Payment Type' at 'Credit Transfer' level +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=When generatin a SEPA XML file for Credit transfers, the section "PaymentTypeInformation" can now be placed inside the "CreditTransferTransactionInformation" section (instead of "Payment" section). We strongly recommend to keep this unchecked to place PaymentTypeInformation at Payment level, as all banks will not necessarily accept it at CreditTransferTransactionInformation level. Contact your bank before placing PaymentTypeInformation at CreditTransferTransactionInformation level. +ToCreateRelatedRecordIntoBank=To create missing related bank record diff --git a/htdocs/langs/ms_MY/bills.lang b/htdocs/langs/ms_MY/bills.lang new file mode 100644 index 00000000000..232b3bb02bd --- /dev/null +++ b/htdocs/langs/ms_MY/bills.lang @@ -0,0 +1,623 @@ +# Dolibarr language file - Source file is en_US - bills +Bill=Invoice +Bills=Invoices +BillsCustomers=Customer invoices +BillsCustomer=Customer invoice +BillsSuppliers=Vendor invoices +BillsCustomersUnpaid=Unpaid customer invoices +BillsCustomersUnpaidForCompany=Unpaid customer invoices for %s +BillsSuppliersUnpaid=Unpaid vendor invoices +BillsSuppliersUnpaidForCompany=Unpaid vendors invoices for %s +BillsLate=Late payments +BillsStatistics=Customers invoices statistics +BillsStatisticsSuppliers=Vendors invoices statistics +DisabledBecauseDispatchedInBookkeeping=Disabled because invoice was dispatched into bookkeeping +DisabledBecauseNotLastInvoice=Disabled because invoice is not erasable. Some invoices were recorded after this one and it will create holes in the counter. +DisabledBecauseNotErasable=Disabled because cannot be erased +InvoiceStandard=Standard invoice +InvoiceStandardAsk=Standard invoice +InvoiceStandardDesc=This kind of invoice is the common invoice. +InvoiceDeposit=Down payment invoice +InvoiceDepositAsk=Down payment invoice +InvoiceDepositDesc=This kind of invoice is done when a down payment has been received. +InvoiceProForma=Proforma invoice +InvoiceProFormaAsk=Proforma invoice +InvoiceProFormaDesc=Proforma invoice is an image of a true invoice but has no accountancy value. +InvoiceReplacement=Replacement invoice +InvoiceReplacementAsk=Replacement invoice for invoice +InvoiceReplacementDesc=Replacement invoice is used to completely replace an invoice with no payment already received.

Note: Only invoices with no payment on it can be replaced. If the invoice you replace is not yet closed, it will be automatically closed to 'abandoned'. +InvoiceAvoir=Credit note +InvoiceAvoirAsk=Credit note to correct invoice +InvoiceAvoirDesc=The credit note is a negative invoice used to correct the fact that an invoice shows an amount that differs from the amount actually paid (eg the customer paid too much by mistake, or will not pay the complete amount since some products were returned). +invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice +invoiceAvoirWithPaymentRestAmount=Create Credit Note with remaining unpaid of origin invoice +invoiceAvoirLineWithPaymentRestAmount=Credit Note for remaining unpaid amount +ReplaceInvoice=Replace invoice %s +ReplacementInvoice=Replacement invoice +ReplacedByInvoice=Replaced by invoice %s +ReplacementByInvoice=Replaced by invoice +CorrectInvoice=Correct invoice %s +CorrectionInvoice=Correction invoice +UsedByInvoice=Used to pay invoice %s +ConsumedBy=Consumed by +NotConsumed=Not consumed +NoReplacableInvoice=No replaceable invoices +NoInvoiceToCorrect=No invoice to correct +InvoiceHasAvoir=Was source of one or several credit notes +CardBill=Invoice card +PredefinedInvoices=Predefined Invoices +Invoice=Invoice +PdfInvoiceTitle=Invoice +Invoices=Invoices +InvoiceLine=Invoice line +InvoiceCustomer=Customer invoice +CustomerInvoice=Customer invoice +CustomersInvoices=Customer invoices +SupplierInvoice=Vendor invoice +SuppliersInvoices=Vendor invoices +SupplierInvoiceLines=Vendor invoice lines +SupplierBill=Vendor invoice +SupplierBills=Vendor invoices +Payment=Payment +PaymentBack=Refund +CustomerInvoicePaymentBack=Refund +Payments=Payments +PaymentsBack=Refunds +paymentInInvoiceCurrency=in invoices currency +PaidBack=Paid back +DeletePayment=Delete payment +ConfirmDeletePayment=Are you sure you want to delete this payment? +ConfirmConvertToReduc=Do you want to convert this %s into an available credit? +ConfirmConvertToReduc2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this customer. +ConfirmConvertToReducSupplier=Do you want to convert this %s into an available credit? +ConfirmConvertToReducSupplier2=The amount will be saved among all discounts and could be used as a discount for a current or a future invoice for this vendor. +SupplierPayments=Vendor payments +ReceivedPayments=Received payments +ReceivedCustomersPayments=Payments received from customers +PayedSuppliersPayments=Payments paid to vendors +ReceivedCustomersPaymentsToValid=Received customers payments to validate +PaymentsReportsForYear=Payments reports for %s +PaymentsReports=Payments reports +PaymentsAlreadyDone=Payments already done +PaymentsBackAlreadyDone=Refunds already done +PaymentRule=Payment rule +PaymentMode=Payment method +PaymentModes=Payment methods +DefaultPaymentMode=Default Payment method +DefaultBankAccount=Default Bank Account +IdPaymentMode=Payment method (id) +CodePaymentMode=Payment method (code) +LabelPaymentMode=Payment method (label) +PaymentModeShort=Payment method +PaymentTerm=Payment Term +PaymentConditions=Payment Terms +PaymentConditionsShort=Payment Terms +PaymentAmount=Payment amount +PaymentHigherThanReminderToPay=Payment higher than reminder to pay +HelpPaymentHigherThanReminderToPay=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay.
Edit your entry, otherwise confirm and consider creating a credit note for the excess received for each overpaid invoice. +HelpPaymentHigherThanReminderToPaySupplier=Attention, the payment amount of one or more bills is higher than the outstanding amount to pay.
Edit your entry, otherwise confirm and consider creating a credit note for the excess paid for each overpaid invoice. +ClassifyPaid=Classify 'Paid' +ClassifyUnPaid=Classify 'Unpaid' +ClassifyPaidPartially=Classify 'Paid partially' +ClassifyCanceled=Classify 'Abandoned' +ClassifyClosed=Classify 'Closed' +ClassifyUnBilled=Classify 'Unbilled' +CreateBill=Create Invoice +CreateCreditNote=Create credit note +AddBill=Create invoice or credit note +AddToDraftInvoices=Add to draft invoice +DeleteBill=Delete invoice +SearchACustomerInvoice=Search for a customer invoice +SearchASupplierInvoice=Search for a vendor invoice +CancelBill=Cancel an invoice +SendRemindByMail=Send reminder by email +DoPayment=Enter payment +DoPaymentBack=Enter refund +ConvertToReduc=Mark as credit available +ConvertExcessReceivedToReduc=Convert excess received into available credit +ConvertExcessPaidToReduc=Convert excess paid into available discount +EnterPaymentReceivedFromCustomer=Enter payment received from customer +EnterPaymentDueToCustomer=Make payment due to customer +DisabledBecauseRemainderToPayIsZero=Disabled because remaining unpaid is zero +PriceBase=Base price +BillStatus=Invoice status +StatusOfGeneratedInvoices=Status of generated invoices +BillStatusDraft=Draft (needs to be validated) +BillStatusPaid=Paid +BillStatusPaidBackOrConverted=Credit note refund or marked as credit available +BillStatusConverted=Paid (ready for consumption in final invoice) +BillStatusCanceled=Abandoned +BillStatusValidated=Validated (needs to be paid) +BillStatusStarted=Started +BillStatusNotPaid=Not paid +BillStatusNotRefunded=Not refunded +BillStatusClosedUnpaid=Closed (unpaid) +BillStatusClosedPaidPartially=Paid (partially) +BillShortStatusDraft=Draft +BillShortStatusPaid=Paid +BillShortStatusPaidBackOrConverted=Refunded or converted +Refunded=Refunded +BillShortStatusConverted=Paid +BillShortStatusCanceled=Abandoned +BillShortStatusValidated=Validated +BillShortStatusStarted=Started +BillShortStatusNotPaid=Not paid +BillShortStatusNotRefunded=Not refunded +BillShortStatusClosedUnpaid=Closed +BillShortStatusClosedPaidPartially=Paid (partially) +PaymentStatusToValidShort=To validate +ErrorVATIntraNotConfigured=Intra-Community VAT number not yet defined +ErrorNoPaiementModeConfigured=No default payment type defined. Go to Invoice module setup to fix this. +ErrorCreateBankAccount=Create a bank account, then go to Setup panel of Invoice module to define payment types +ErrorBillNotFound=Invoice %s does not exist +ErrorInvoiceAlreadyReplaced=Error, you tried to validate an invoice to replace invoice %s. But this one has already been replaced by invoice %s. +ErrorDiscountAlreadyUsed=Error, discount already used +ErrorInvoiceAvoirMustBeNegative=Error, correct invoice must have a negative amount +ErrorInvoiceOfThisTypeMustBePositive=Error, this type of invoice must have an amount excluding tax positive (or null) +ErrorCantCancelIfReplacementInvoiceNotValidated=Error, can't cancel an invoice that has been replaced by another invoice that is still in draft status +ErrorThisPartOrAnotherIsAlreadyUsedSoDiscountSerieCantBeRemoved=This part or another is already used so discount series cannot be removed. +ErrorInvoiceIsNotLastOfSameType=Error: The date of invoice %s is %s. It must be posterior or equal to last date for same type invoices (%s). Please change the invoice date. +BillFrom=From +BillTo=To +ActionsOnBill=Actions on invoice +RecurringInvoiceTemplate=Template / Recurring invoice +NoQualifiedRecurringInvoiceTemplateFound=No recurring template invoice qualified for generation. +FoundXQualifiedRecurringInvoiceTemplate=Found %s recurring template invoice(s) qualified for generation. +NotARecurringInvoiceTemplate=Not a recurring template invoice +NewBill=New invoice +LastBills=Latest %s invoices +LatestTemplateInvoices=Latest %s template invoices +LatestCustomerTemplateInvoices=Latest %s customer template invoices +LatestSupplierTemplateInvoices=Latest %s vendor template invoices +LastCustomersBills=Latest %s customer invoices +LastSuppliersBills=Latest %s vendor invoices +AllBills=All invoices +AllCustomerTemplateInvoices=All template invoices +OtherBills=Other invoices +DraftBills=Draft invoices +CustomersDraftInvoices=Customer draft invoices +SuppliersDraftInvoices=Vendor draft invoices +Unpaid=Unpaid +ErrorNoPaymentDefined=Error No payment defined +ConfirmDeleteBill=Are you sure you want to delete this invoice? +ConfirmValidateBill=Are you sure you want to validate this invoice with reference %s? +ConfirmUnvalidateBill=Are you sure you want to change invoice %s to draft status? +ConfirmClassifyPaidBill=Are you sure you want to change invoice %s to status paid? +ConfirmCancelBill=Are you sure you want to cancel invoice %s? +ConfirmCancelBillQuestion=Why do you want to classify this invoice 'abandoned'? +ConfirmClassifyPaidPartially=Are you sure you want to change invoice %s to status paid? +ConfirmClassifyPaidPartiallyQuestion=This invoice has not been paid completely. What is the reason for closing this invoice? +ConfirmClassifyPaidPartiallyReasonAvoir=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I regularize the VAT with a credit note. +ConfirmClassifyPaidPartiallyReasonDiscount=Remaining unpaid (%s %s) is a discount granted because payment was made before term. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I accept to lose the VAT on this discount. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Remaining unpaid (%s %s) is a discount granted because payment was made before term. I recover the VAT on this discount without a credit note. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Bad customer +ConfirmClassifyPaidPartiallyReasonBankCharge=Deduction by bank (intermediary bank fees) +ConfirmClassifyPaidPartiallyReasonProductReturned=Products partially returned +ConfirmClassifyPaidPartiallyReasonOther=Amount abandoned for other reason +ConfirmClassifyPaidPartiallyReasonDiscountNoVatDesc=This choice is possible if your invoice has been provided with suitable comments. (Example «Only the tax corresponding to the price that has been actually paid gives rights to deduction») +ConfirmClassifyPaidPartiallyReasonDiscountVatDesc=In some countries, this choice might be possible only if your invoice contains correct notes. +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use this choice if all other does not suit +ConfirmClassifyPaidPartiallyReasonBadCustomerDesc=A bad customer is a customer that refuses to pay his debt. +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=This choice is used when payment is not complete because some of products were returned +ConfirmClassifyPaidPartiallyReasonBankChargeDesc=The unpaid amount is intermediary bank fees, deducted directly from the correct amount paid by the Customer. +ConfirmClassifyPaidPartiallyReasonOtherDesc=Use this choice if all others are not suitable, for example in following situation:
- payment not complete because some products were shipped back
- amount claimed too important because a discount was forgotten
In all cases, amount over-claimed must be corrected in accountancy system by creating a credit note. +ConfirmClassifyAbandonReasonOther=Other +ConfirmClassifyAbandonReasonOtherDesc=This choice will be used in all other cases. For example because you plan to create a replacing invoice. +ConfirmCustomerPayment=Do you confirm this payment input for %s %s? +ConfirmSupplierPayment=Do you confirm this payment input for %s %s? +ConfirmValidatePayment=Are you sure you want to validate this payment? No change can be made once payment is validated. +ValidateBill=Validate invoice +UnvalidateBill=Unvalidate invoice +NumberOfBills=No. of invoices +NumberOfBillsByMonth=No. of invoices per month +AmountOfBills=Amount of invoices +AmountOfBillsHT=Amount of invoices (net of tax) +AmountOfBillsByMonthHT=Amount of invoices by month (net of tax) +UseSituationInvoices=Allow situation invoice +UseSituationInvoicesCreditNote=Allow situation invoice credit note +Retainedwarranty=Retained warranty +AllowedInvoiceForRetainedWarranty=Retained warranty usable on the following types of invoices +RetainedwarrantyDefaultPercent=Retained warranty default percent +RetainedwarrantyOnlyForSituation=Make "retained warranty" available only for situation invoices +RetainedwarrantyOnlyForSituationFinal=On situation invoices the global "retained warranty" deduction is applied only on the final situation +ToPayOn=To pay on %s +toPayOn=to pay on %s +RetainedWarranty=Retained Warranty +PaymentConditionsShortRetainedWarranty=Retained warranty payment terms +DefaultPaymentConditionsRetainedWarranty=Default retained warranty payment terms +setPaymentConditionsShortRetainedWarranty=Set retained warranty payment terms +setretainedwarranty=Set retained warranty +setretainedwarrantyDateLimit=Set retained warranty date limit +RetainedWarrantyDateLimit=Retained warranty date limit +RetainedWarrantyNeed100Percent=The situation invoice need to be at 100%% progress to be displayed on PDF +AlreadyPaid=Already paid +AlreadyPaidBack=Already paid back +AlreadyPaidNoCreditNotesNoDeposits=Already paid (without credit notes and down payments) +Abandoned=Abandoned +RemainderToPay=Remaining unpaid +RemainderToPayMulticurrency=Remaining unpaid, original currency +RemainderToTake=Remaining amount to take +RemainderToTakeMulticurrency=Remaining amount to take, original currency +RemainderToPayBack=Remaining amount to refund +RemainderToPayBackMulticurrency=Remaining amount to refund, original currency +NegativeIfExcessRefunded=negative if excess refunded +Rest=Pending +AmountExpected=Amount claimed +ExcessReceived=Excess received +ExcessReceivedMulticurrency=Excess received, original currency +NegativeIfExcessReceived=negative if excess received +ExcessPaid=Excess paid +ExcessPaidMulticurrency=Excess paid, original currency +EscompteOffered=Discount offered (payment before term) +EscompteOfferedShort=Discount +SendBillRef=Submission of invoice %s +SendReminderBillRef=Submission of invoice %s (reminder) +SendPaymentReceipt=Submission of payment receipt %s +NoDraftBills=No draft invoices +NoOtherDraftBills=No other draft invoices +NoDraftInvoices=No draft invoices +RefBill=Invoice ref +ToBill=To bill +RemainderToBill=Remainder to bill +SendBillByMail=Send invoice by email +SendReminderBillByMail=Send reminder by email +RelatedCommercialProposals=Related commercial proposals +RelatedRecurringCustomerInvoices=Related recurring customer invoices +MenuToValid=To valid +DateMaxPayment=Payment due on +DateInvoice=Invoice date +DatePointOfTax=Point of tax +NoInvoice=No invoice +NoOpenInvoice=No open invoice +NbOfOpenInvoices=Number of open invoices +ClassifyBill=Classify invoice +SupplierBillsToPay=Unpaid vendor invoices +CustomerBillsUnpaid=Unpaid customer invoices +NonPercuRecuperable=Non-recoverable +SetConditions=Set Payment Terms +SetMode=Set Payment Type +SetRevenuStamp=Set revenue stamp +Billed=Billed +RecurringInvoices=Recurring invoices +RecurringInvoice=Recurring invoice +RepeatableInvoice=Template invoice +RepeatableInvoices=Template invoices +RecurringInvoicesJob=Generation of recurring invoices (sales invoices) +RecurringSupplierInvoicesJob=Generation of recurring invoices (purchase invoices) +Repeatable=Template +Repeatables=Templates +ChangeIntoRepeatableInvoice=Convert into template invoice +CreateRepeatableInvoice=Create template invoice +CreateFromRepeatableInvoice=Create from template invoice +CustomersInvoicesAndInvoiceLines=Customer invoices and invoice details +CustomersInvoicesAndPayments=Customer invoices and payments +ExportDataset_invoice_1=Customer invoices and invoice details +ExportDataset_invoice_2=Customer invoices and payments +ProformaBill=Proforma Bill: +Reduction=Reduction +ReductionShort=Disc. +Reductions=Reductions +ReductionsShort=Disc. +Discounts=Discounts +AddDiscount=Create discount +AddRelativeDiscount=Create relative discount +EditRelativeDiscount=Edit relative discount +AddGlobalDiscount=Create absolute discount +EditGlobalDiscounts=Edit absolute discounts +AddCreditNote=Create credit note +ShowDiscount=Show discount +ShowReduc=Show the discount +ShowSourceInvoice=Show the source invoice +RelativeDiscount=Relative discount +GlobalDiscount=Global discount +CreditNote=Credit note +CreditNotes=Credit notes +CreditNotesOrExcessReceived=Credit notes or excess received +Deposit=Down payment +Deposits=Down payments +DiscountFromCreditNote=Discount from credit note %s +DiscountFromDeposit=Down payments from invoice %s +DiscountFromExcessReceived=Payments in excess of invoice %s +DiscountFromExcessPaid=Payments in excess of invoice %s +AbsoluteDiscountUse=This kind of credit can be used on invoice before its validation +CreditNoteDepositUse=Invoice must be validated to use this kind of credits +NewGlobalDiscount=New absolute discount +NewRelativeDiscount=New relative discount +DiscountType=Discount type +NoteReason=Note/Reason +ReasonDiscount=Reason +DiscountOfferedBy=Granted by +DiscountStillRemaining=Discounts or credits available +DiscountAlreadyCounted=Discounts or credits already consumed +CustomerDiscounts=Customer discounts +SupplierDiscounts=Vendors discounts +BillAddress=Bill address +HelpEscompte=This discount is a discount granted to customer because payment was made before term. +HelpAbandonBadCustomer=This amount has been abandoned (customer said to be a bad customer) and is considered as an exceptional loss. +HelpAbandonOther=This amount has been abandoned since it was an error (wrong customer or invoice replaced by another for example) +IdSocialContribution=Social/fiscal tax payment id +PaymentId=Payment id +PaymentRef=Payment ref. +InvoiceId=Invoice id +InvoiceRef=Invoice ref. +InvoiceDateCreation=Invoice creation date +InvoiceStatus=Invoice status +InvoiceNote=Invoice note +InvoicePaid=Invoice paid +InvoicePaidCompletely=Paid completely +InvoicePaidCompletelyHelp=Invoice that are paid completely. This excludes invoices that are paid partially. To get list of all 'Closed' or non 'Closed' invoices, prefer to use a filter on the invoice status. +OrderBilled=Order billed +DonationPaid=Donation paid +PaymentNumber=Payment number +RemoveDiscount=Remove discount +WatermarkOnDraftBill=Watermark on draft invoices (nothing if empty) +InvoiceNotChecked=No invoice selected +ConfirmCloneInvoice=Are you sure you want to clone this invoice %s? +DisabledBecauseReplacedInvoice=Action disabled because invoice has been replaced +DescTaxAndDividendsArea=This area presents a summary of all payments made for special expenses. Only records with payments during the fixed year are included here. +NbOfPayments=No. of payments +SplitDiscount=Split discount in two +ConfirmSplitDiscount=Are you sure you want to split this discount of %s %s into two smaller discounts? +TypeAmountOfEachNewDiscount=Input amount for each of two parts: +TotalOfTwoDiscountMustEqualsOriginal=The total of the two new discounts must be equal to the original discount amount. +ConfirmRemoveDiscount=Are you sure you want to remove this discount? +RelatedBill=Related invoice +RelatedBills=Related invoices +RelatedCustomerInvoices=Related customer invoices +RelatedSupplierInvoices=Related vendor invoices +LatestRelatedBill=Latest related invoice +WarningBillExist=Warning, one or more invoices already exist +MergingPDFTool=Merging PDF tool +AmountPaymentDistributedOnInvoice=Payment amount distributed on invoice +PaymentOnDifferentThirdBills=Allow payments on different third parties bills but same parent company +PaymentNote=Payment note +ListOfPreviousSituationInvoices=List of previous situation invoices +ListOfNextSituationInvoices=List of next situation invoices +ListOfSituationInvoices=List of situation invoices +CurrentSituationTotal=Total current situation +DisabledBecauseNotEnouthCreditNote=To remove a situation invoice from cycle, this invoice's credit note total must cover this invoice total +RemoveSituationFromCycle=Remove this invoice from cycle +ConfirmRemoveSituationFromCycle=Remove this invoice %s from cycle ? +ConfirmOuting=Confirm outing +FrequencyPer_d=Every %s days +FrequencyPer_m=Every %s months +FrequencyPer_y=Every %s years +FrequencyUnit=Frequency unit +toolTipFrequency=Examples:
Set 7, Day: give a new invoice every 7 days
Set 3, Month: give a new invoice every 3 month +NextDateToExecution=Date for next invoice generation +NextDateToExecutionShort=Date next gen. +DateLastGeneration=Date of latest generation +DateLastGenerationShort=Date latest gen. +MaxPeriodNumber=Max. number of invoice generation +NbOfGenerationDone=Number of invoice generation already done +NbOfGenerationOfRecordDone=Number of record generation already done +NbOfGenerationDoneShort=Number of generation done +MaxGenerationReached=Maximum number of generations reached +InvoiceAutoValidate=Validate invoices automatically +GeneratedFromRecurringInvoice=Generated from template recurring invoice %s +DateIsNotEnough=Date not reached yet +InvoiceGeneratedFromTemplate=Invoice %s generated from recurring template invoice %s +GeneratedFromTemplate=Generated from template invoice %s +WarningInvoiceDateInFuture=Warning, the invoice date is higher than current date +WarningInvoiceDateTooFarInFuture=Warning, the invoice date is too far from current date +ViewAvailableGlobalDiscounts=View available discounts +GroupPaymentsByModOnReports=Group payments by mode on reports +# PaymentConditions +Statut=Status +PaymentConditionShortRECEP=Due Upon Receipt +PaymentConditionRECEP=Due Upon Receipt +PaymentConditionShort30D=30 days +PaymentCondition30D=30 days +PaymentConditionShort30DENDMONTH=30 days of month-end +PaymentCondition30DENDMONTH=Within 30 days following the end of the month +PaymentConditionShort60D=60 days +PaymentCondition60D=60 days +PaymentConditionShort60DENDMONTH=60 days of month-end +PaymentCondition60DENDMONTH=Within 60 days following the end of the month +PaymentConditionShortPT_DELIVERY=Delivery +PaymentConditionPT_DELIVERY=On delivery +PaymentConditionShortPT_ORDER=Order +PaymentConditionPT_ORDER=On order +PaymentConditionShortPT_5050=50-50 +PaymentConditionPT_5050=50%% in advance, 50%% on delivery +PaymentConditionShort10D=10 days +PaymentCondition10D=10 days +PaymentConditionShort10DENDMONTH=10 days of month-end +PaymentCondition10DENDMONTH=Within 10 days following the end of the month +PaymentConditionShort14D=14 days +PaymentCondition14D=14 days +PaymentConditionShort14DENDMONTH=14 days of month-end +PaymentCondition14DENDMONTH=Within 14 days following the end of the month +PaymentConditionShortDEP30PCTDEL=__DEPOSIT_PERCENT__%% deposit +PaymentConditionDEP30PCTDEL=__DEPOSIT_PERCENT__%% deposit, remainder on delivery +FixAmount=Fixed amount - 1 line with label '%s' +VarAmount=Variable amount (%% tot.) +VarAmountOneLine=Variable amount (%% tot.) - 1 line with label '%s' +VarAmountAllLines=Variable amount (%% tot.) - all lines from origin +DepositPercent=Deposit %% +DepositGenerationPermittedByThePaymentTermsSelected=This is permitted by the payment terms selected +GenerateDeposit=Generate a %s%% deposit invoice +ValidateGeneratedDeposit=Validate the generated deposit +DepositGenerated=Deposit generated +ErrorCanOnlyAutomaticallyGenerateADepositFromProposalOrOrder=You can only automatically generate a deposit from a proposal or an order +ErrorPaymentConditionsNotEligibleToDepositCreation=The chose payment conditions are not eligible for automatic deposit generation +# PaymentType +PaymentTypeVIR=Bank transfer +PaymentTypeShortVIR=Bank transfer +PaymentTypePRE=Direct debit payment order +PaymentTypeShortPRE=Debit payment order +PaymentTypeLIQ=Cash +PaymentTypeShortLIQ=Cash +PaymentTypeCB=Credit card +PaymentTypeShortCB=Credit card +PaymentTypeCHQ=Check +PaymentTypeShortCHQ=Check +PaymentTypeTIP=TIP (Documents against Payment) +PaymentTypeShortTIP=TIP Payment +PaymentTypeVAD=Online payment +PaymentTypeShortVAD=Online payment +PaymentTypeTRA=Bank draft +PaymentTypeShortTRA=Draft +PaymentTypeFAC=Factor +PaymentTypeShortFAC=Factor +PaymentTypeDC=Debit/Credit Card +PaymentTypePP=PayPal +BankDetails=Bank details +BankCode=Bank code +DeskCode=Branch code +BankAccountNumber=Account number +BankAccountNumberKey=Checksum +Residence=Address +IBANNumber=IBAN account number +IBAN=IBAN +CustomerIBAN=IBAN of customer +SupplierIBAN=IBAN of vendor +BIC=BIC/SWIFT +BICNumber=BIC/SWIFT code +ExtraInfos=Extra infos +RegulatedOn=Regulated on +ChequeNumber=Check N° +ChequeOrTransferNumber=Check/Transfer N° +ChequeBordereau=Check schedule +ChequeMaker=Check/Transfer sender +ChequeBank=Bank of Check +CheckBank=Check +NetToBePaid=Net to be paid +PhoneNumber=Tel +FullPhoneNumber=Telephone +TeleFax=Fax +PrettyLittleSentence=Accept the amount of payments due by checks issued in my name as a Member of an accounting association approved by the Fiscal Administration. +IntracommunityVATNumber=Intra-Community VAT ID +PaymentByChequeOrderedTo=Check payments (including tax) are payable to %s, send to +PaymentByChequeOrderedToShort=Check payments (incl. tax) are payable to +SendTo=sent to +PaymentByTransferOnThisBankAccount=Payment by transfer to the following bank account +VATIsNotUsedForInvoice=* Non applicable VAT art-293B of CGI +VATIsNotUsedForInvoiceAsso=* Non applicable VAT art-261-7 of CGI +LawApplicationPart1=By application of the law 80.335 of 12/05/80 +LawApplicationPart2=the goods remain the property of +LawApplicationPart3=the seller until full payment of +LawApplicationPart4=their price. +LimitedLiabilityCompanyCapital=SARL with Capital of +UseLine=Apply +UseDiscount=Use discount +UseCredit=Use credit +UseCreditNoteInInvoicePayment=Reduce amount to pay with this credit +MenuChequeDeposits=Check Deposits +MenuCheques=Checks +MenuChequesReceipts=Check receipts +NewChequeDeposit=New deposit +ChequesReceipts=Check receipts +ChequesArea=Check deposits area +ChequeDeposits=Check deposits +Cheques=Checks +DepositId=Id deposit +NbCheque=Number of checks +CreditNoteConvertedIntoDiscount=This %s has been converted into %s +UsBillingContactAsIncoiveRecipientIfExist=Use contact/address with type 'billing contact' instead of third-party address as recipient for invoices +ShowUnpaidAll=Show all unpaid invoices +ShowUnpaidLateOnly=Show late unpaid invoices only +PaymentInvoiceRef=Payment invoice %s +ValidateInvoice=Validate invoice +ValidateInvoices=Validate invoices +Cash=Cash +Reported=Delayed +DisabledBecausePayments=Not possible since there are some payments +CantRemovePaymentWithOneInvoicePaid=Can't remove payment since there is at least one invoice classified paid +CantRemovePaymentVATPaid=Can't remove payment since VAT declaration is classified paid +CantRemovePaymentSalaryPaid=Can't remove payment since salary is classified paid +ExpectedToPay=Expected payment +CantRemoveConciliatedPayment=Can't remove reconciled payment +PayedByThisPayment=Paid by this payment +ClosePaidInvoicesAutomatically=Classify automatically all standard, down payment or replacement invoices as "Paid" when payment is done entirely. +ClosePaidCreditNotesAutomatically=Classify automatically all credit notes as "Paid" when refund is done entirely. +ClosePaidContributionsAutomatically=Classify automatically all social or fiscal contributions as "Paid" when payment is done entirely. +ClosePaidVATAutomatically=Classify automatically VAT declaration as "Paid" when payment is done entirely. +ClosePaidSalaryAutomatically=Classify automatically salary as "Paid" when payment is done entirely. +AllCompletelyPayedInvoiceWillBeClosed=All invoices with no remainder to pay will be automatically closed with status "Paid". +ToMakePayment=Pay +ToMakePaymentBack=Pay back +ListOfYourUnpaidInvoices=List of unpaid invoices +NoteListOfYourUnpaidInvoices=Note: This list contains only invoices for third parties you are linked to as a sale representative. +RevenueStamp=Tax stamp +YouMustCreateInvoiceFromThird=This option is only available when creating an invoice from tab "Customer" of third party +YouMustCreateInvoiceFromSupplierThird=This option is only available when creating an invoice from tab "Vendor" of third party +YouMustCreateStandardInvoiceFirstDesc=You have to create a standard invoice first and convert it to "template" to create a new template invoice +PDFCrabeDescription=Invoice PDF template Crabe. A complete invoice template (old implementation of Sponge template) +PDFSpongeDescription=Invoice PDF template Sponge. A complete invoice template +PDFCrevetteDescription=Invoice PDF template Crevette. A complete invoice template for situation invoices +TerreNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0 +MarsNumRefModelDesc1=Return number in the format %syymm-nnnn for standard invoices, %syymm-nnnn for replacement invoices, %syymm-nnnn for down payment invoices and %syymm-nnnn for credit notes where yy is year, mm is month and nnnn is a sequencial auto-incrementing number 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 in the format %syymm-nnnn for standard invoices, %syymm-nnnn for credit notes and %syymm-nnnn for down payment invoices where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0 +EarlyClosingReason=Early closing reason +EarlyClosingComment=Early closing note +##### Types de contacts ##### +TypeContact_facture_internal_SALESREPFOLL=Representative following-up customer invoice +TypeContact_facture_external_BILLING=Customer invoice contact +TypeContact_facture_external_SHIPPING=Customer shipping contact +TypeContact_facture_external_SERVICE=Customer service contact +TypeContact_invoice_supplier_internal_SALESREPFOLL=Representative following-up vendor invoice +TypeContact_invoice_supplier_external_BILLING=Vendor invoice contact +TypeContact_invoice_supplier_external_SHIPPING=Vendor shipping contact +TypeContact_invoice_supplier_external_SERVICE=Vendor service contact +# Situation invoices +InvoiceFirstSituationAsk=First situation invoice +InvoiceFirstSituationDesc=The situation invoices are tied to situations related to a progression, for example the progression of a construction. Each situation is tied to an invoice. +InvoiceSituation=Situation invoice +PDFInvoiceSituation=Situation invoice +InvoiceSituationAsk=Invoice following the situation +InvoiceSituationDesc=Create a new situation following an already existing one +SituationAmount=Situation invoice amount(net) +SituationDeduction=Situation subtraction +ModifyAllLines=Modify all lines +CreateNextSituationInvoice=Create next situation +ErrorFindNextSituationInvoice=Error unable to find next situation cycle ref +ErrorOutingSituationInvoiceOnUpdate=Unable to outing this situation invoice. +ErrorOutingSituationInvoiceCreditNote=Unable to outing linked credit note. +NotLastInCycle=This invoice is not the latest in cycle and must not be modified. +DisabledBecauseNotLastInCycle=The next situation already exists. +DisabledBecauseFinal=This situation is final. +situationInvoiceShortcode_AS=AS +situationInvoiceShortcode_S=S +CantBeLessThanMinPercent=The progress can't be smaller than its value in the previous situation. +NoSituations=No open situations +InvoiceSituationLast=Final and general invoice +PDFCrevetteSituationNumber=Situation N°%s +PDFCrevetteSituationInvoiceLineDecompte=Situation invoice - COUNT +PDFCrevetteSituationInvoiceTitle=Situation invoice +PDFCrevetteSituationInvoiceLine=Situation N°%s: Inv. N°%s on %s +TotalSituationInvoice=Total situation +invoiceLineProgressError=Invoice line progress can't be greater than or equal to the next invoice line +updatePriceNextInvoiceErrorUpdateline=Error: update price on invoice line: %s +ToCreateARecurringInvoice=To create a recurring invoice for this contract, first create this draft invoice, then convert it into an invoice template and define the frequency for generation of future invoices. +ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually, just go on menu %s - %s - %s. +ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both methods (manual and automatic) can be used together with no risk of duplication. +DeleteRepeatableInvoice=Delete template invoice +ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice? +CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per selected object) +BillCreated=%s invoice(s) generated +BillXCreated=Invoice %s generated +StatusOfGeneratedDocuments=Status of document generation +DoNotGenerateDoc=Do not generate document file +AutogenerateDoc=Auto generate document file +AutoFillDateFrom=Set start date for service line with invoice date +AutoFillDateFromShort=Set start date +AutoFillDateTo=Set end date for service line with next invoice date +AutoFillDateToShort=Set end date +MaxNumberOfGenerationReached=Max number of gen. reached +BILL_DELETEInDolibarr=Invoice deleted +BILL_SUPPLIER_DELETEInDolibarr=Supplier invoice deleted +UnitPriceXQtyLessDiscount=Unit price x Qty - Discount +CustomersInvoicesArea=Customer billing area +SupplierInvoicesArea=Supplier billing area +SituationTotalRayToRest=Remainder to pay without taxe +PDFSituationTitle=Situation n° %d +SituationTotalProgress=Total progress %d %% +SearchUnpaidInvoicesWithDueDate=Search unpaid invoices with a due date = %s +NoPaymentAvailable=No payment available for %s +PaymentRegisteredAndInvoiceSetToPaid=Payment registered and invoice %s set to paid +SendEmailsRemindersOnInvoiceDueDate=Send reminder by email for unpaid invoices +MakePaymentAndClassifyPayed=Record payment +BulkPaymentNotPossibleForInvoice=Bulk payment is not possible for invoice %s (bad type or status) diff --git a/htdocs/langs/ms_MY/blockedlog.lang b/htdocs/langs/ms_MY/blockedlog.lang new file mode 100644 index 00000000000..12f28737d49 --- /dev/null +++ b/htdocs/langs/ms_MY/blockedlog.lang @@ -0,0 +1,57 @@ +BlockedLog=Unalterable Logs +Field=Field +BlockedLogDesc=This module tracks some events into an unalterable log (that you can't modify once recorded) into a block chain, in real time. This module provides compatibility with requirements of laws of some countries (like France with the law Finance 2016 - Norme NF525). +Fingerprints=Archived events and fingerprints +FingerprintsDesc=This is the tool to browse or extract the unalterable logs. Unalterable logs are generated and archived locally into a dedicated table, in real time when you record a business event. You can use this tool to export this archive and save it into an external support (some countries, like France, ask that you do it every year). Note that, there is no feature to purge this log and every change tried to be done directly into this log (by a hacker for example) will be reported with a non-valid fingerprint. If you really need to purge this table because you used your application for a demo/test purpose and want to clean your data to start your production, you can ask your reseller or integrator to reset your database (all your data will be removed). +CompanyInitialKey=Company initial key (hash of genesis block) +BrowseBlockedLog=Unalterable logs +ShowAllFingerPrintsMightBeTooLong=Show all archived logs (might be long) +ShowAllFingerPrintsErrorsMightBeTooLong=Show all non-valid archive logs (might be long) +DownloadBlockChain=Download fingerprints +KoCheckFingerprintValidity=Archived log entry is not valid. It means someone (a hacker?) has modified some data of this record after it was recorded, or has erased the previous archived record (check that line with previous # exists) or has modified checksum of the previous record. +OkCheckFingerprintValidity=Archived log record is valid. The data on this line was not modified and the entry follows the previous one. +OkCheckFingerprintValidityButChainIsKo=Archived log seems valid compared to previous one but the chain was corrupted previously. +AddedByAuthority=Stored into remote authority +NotAddedByAuthorityYet=Not yet stored into remote authority +ShowDetails=Show stored details +logPAYMENT_VARIOUS_CREATE=Payment (not assigned to an invoice) created +logPAYMENT_VARIOUS_MODIFY=Payment (not assigned to an invoice) modified +logPAYMENT_VARIOUS_DELETE=Payment (not assigned to an invoice) logical deletion +logPAYMENT_ADD_TO_BANK=Payment added to bank +logPAYMENT_CUSTOMER_CREATE=Customer payment created +logPAYMENT_CUSTOMER_DELETE=Customer payment logical deletion +logDONATION_PAYMENT_CREATE=Donation payment created +logDONATION_PAYMENT_DELETE=Donation payment logical deletion +logBILL_PAYED=Customer invoice paid +logBILL_UNPAYED=Customer invoice set unpaid +logBILL_VALIDATE=Customer invoice validated +logBILL_SENTBYMAIL=Customer invoice send by mail +logBILL_DELETE=Customer invoice logically deleted +logMODULE_RESET=Module BlockedLog was disabled +logMODULE_SET=Module BlockedLog was enabled +logDON_VALIDATE=Donation validated +logDON_MODIFY=Donation modified +logDON_DELETE=Donation logical deletion +logMEMBER_SUBSCRIPTION_CREATE=Member subscription created +logMEMBER_SUBSCRIPTION_MODIFY=Member subscription modified +logMEMBER_SUBSCRIPTION_DELETE=Member subscription logical deletion +logCASHCONTROL_VALIDATE=Cash desk closing recording +BlockedLogBillDownload=Customer invoice download +BlockedLogBillPreview=Customer invoice preview +BlockedlogInfoDialog=Log Details +ListOfTrackedEvents=List of tracked events +Fingerprint=Fingerprint +DownloadLogCSV=Export archived logs (CSV) +logDOC_PREVIEW=Preview of a validated document in order to print or download +logDOC_DOWNLOAD=Download of a validated document in order to print or send +DataOfArchivedEvent=Full datas of archived event +ImpossibleToReloadObject=Original object (type %s, id %s) not linked (see 'Full datas' column to get unalterable saved data) +BlockedLogAreRequiredByYourCountryLegislation=Unalterable Logs module may be required by the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they can not be validated by a tax audit. +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=Unalterable Logs module was activated because of the legislation of your country. Disabling this module may render any future transactions invalid with respect to the law and the use of legal software as they cannot be validated by a tax audit. +BlockedLogDisableNotAllowedForCountry=List of countries where usage of this module is mandatory (just to prevent to disable the module by error, if your country is in this list, disable of module is not possible without editing this list first. Note also that enabling/disabling this module will keep a track into the unalterable log). +OnlyNonValid=Non-valid +TooManyRecordToScanRestrictFilters=Too many records to scan/analyze. Please restrict list with more restrictive filters. +RestrictYearToExport=Restrict month / year to export +BlockedLogEnabled=System to track events into unalterable logs has been enabled +BlockedLogDisabled=System to track events into unalterable logs has been disabled after some recording were done. We saved a special Fingerprint to track the chain as broken +BlockedLogDisabledBis=System to track events into unalterable logs has been disabled. This is possible because no record were done yet. diff --git a/htdocs/langs/ms_MY/bookmarks.lang b/htdocs/langs/ms_MY/bookmarks.lang new file mode 100644 index 00000000000..be0f2f7e25d --- /dev/null +++ b/htdocs/langs/ms_MY/bookmarks.lang @@ -0,0 +1,22 @@ +# Dolibarr language file - Source file is en_US - marque pages +AddThisPageToBookmarks=Add current page to bookmarks +Bookmark=Bookmark +Bookmarks=Bookmarks +ListOfBookmarks=List of bookmarks +EditBookmarks=List/edit bookmarks +NewBookmark=New bookmark +ShowBookmark=Show bookmark +OpenANewWindow=Open a new tab +ReplaceWindow=Replace current tab +BookmarkTargetNewWindowShort=New tab +BookmarkTargetReplaceWindowShort=Current tab +BookmarkTitle=Bookmark name +UrlOrLink=URL +BehaviourOnClick=Behaviour when a bookmark URL is selected +CreateBookmark=Create bookmark +SetHereATitleForLink=Set a name for the bookmark +UseAnExternalHttpLinkOrRelativeDolibarrLink=Use an external/absolute link (https://externalurl.com) or an internal/relative link (/mypage.php). You can also use phone like tel:0123456. +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Choose if the linked page should open in the current tab or a new tab +BookmarksManagement=Bookmarks management +BookmarksMenuShortCut=Ctrl + shift + m +NoBookmarks=No bookmarks defined diff --git a/htdocs/langs/ms_MY/boxes.lang b/htdocs/langs/ms_MY/boxes.lang new file mode 100644 index 00000000000..4173d5e4c7e --- /dev/null +++ b/htdocs/langs/ms_MY/boxes.lang @@ -0,0 +1,121 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxDolibarrStateBoard=Statistics on main business objects in database +BoxLoginInformation=Login Information +BoxLastRssInfos=RSS Information +BoxLastProducts=Latest %s Products/Services +BoxProductsAlertStock=Stock alerts for products +BoxLastProductsInContract=Latest %s contracted products/services +BoxLastSupplierBills=Latest Vendor invoices +BoxLastCustomerBills=Latest Customer invoices +BoxOldestUnpaidCustomerBills=Oldest unpaid customer invoices +BoxOldestUnpaidSupplierBills=Oldest unpaid vendor invoices +BoxLastProposals=Latest commercial proposals +BoxLastProspects=Latest modified prospects +BoxLastCustomers=Latest modified customers +BoxLastSuppliers=Latest modified suppliers +BoxLastCustomerOrders=Latest sales orders +BoxLastActions=Latest actions +BoxLastContracts=Latest contracts +BoxLastContacts=Latest contacts/addresses +BoxLastMembers=Latest members +BoxLastModifiedMembers=Latest modified members +BoxLastMembersSubscriptions=Latest member subscriptions +BoxFicheInter=Latest interventions +BoxCurrentAccounts=Open accounts balance +BoxTitleMemberNextBirthdays=Birthdays of this month (members) +BoxTitleMembersByType=Members by type and status +BoxTitleMembersSubscriptionsByYear=Members Subscriptions by year +BoxTitleLastRssInfos=Latest %s news from %s +BoxTitleLastProducts=Products/Services: last %s modified +BoxTitleProductsAlertStock=Products: stock alert +BoxTitleLastSuppliers=Latest %s recorded suppliers +BoxTitleLastModifiedSuppliers=Vendors: last %s modified +BoxTitleLastModifiedCustomers=Customers: last %s modified +BoxTitleLastCustomersOrProspects=Latest %s customers or prospects +BoxTitleLastCustomerBills=Latest %s modified Customer invoices +BoxTitleLastSupplierBills=Latest %s modified Vendor invoices +BoxTitleLastModifiedProspects=Prospects: last %s modified +BoxTitleLastModifiedMembers=Latest %s members +BoxTitleLastFicheInter=Latest %s modified interventions +BoxTitleOldestUnpaidCustomerBills=Customer Invoices: oldest %s unpaid +BoxTitleOldestUnpaidSupplierBills=Vendor Invoices: oldest %s unpaid +BoxTitleCurrentAccounts=Open Accounts: balances +BoxTitleSupplierOrdersAwaitingReception=Supplier orders awaiting reception +BoxTitleLastModifiedContacts=Contacts/Addresses: last %s modified +BoxMyLastBookmarks=Bookmarks: latest %s +BoxOldestExpiredServices=Oldest active expired services +BoxLastExpiredServices=Latest %s oldest contacts with active expired services +BoxTitleLastActionsToDo=Latest %s actions to do +BoxTitleOldestActionsToDo=Oldest %s event to do not completed +BoxTitleLastContracts=Latest %s contracts which were modified +BoxTitleLastModifiedDonations=Latest %s donations which were modified +BoxTitleLastModifiedExpenses=Latest %s expense reports which were modified +BoxTitleLatestModifiedBoms=Latest %s BOMs which were modified +BoxTitleLatestModifiedMos=Latest %s Manufacturing Orders which were modified +BoxTitleLastOutstandingBillReached=Customers with maximum outstanding exceeded +BoxGlobalActivity=Global activity (invoices, proposals, orders) +BoxGoodCustomers=Good customers +BoxTitleGoodCustomers=%s Good customers +BoxScheduledJobs=Scheduled jobs +BoxTitleFunnelOfProspection=Lead funnel +FailedToRefreshDataInfoNotUpToDate=Failed to refresh RSS flux. Latest successful refresh date: %s +LastRefreshDate=Latest refresh date +NoRecordedBookmarks=No bookmarks defined. +ClickToAdd=Click here to add. +NoRecordedCustomers=No recorded customers +NoRecordedContacts=No recorded contacts +NoActionsToDo=No actions to do +NoRecordedOrders=No recorded sales orders +NoRecordedProposals=No recorded proposals +NoRecordedInvoices=No recorded customer invoices +NoUnpaidCustomerBills=No unpaid customer invoices +NoUnpaidSupplierBills=No unpaid vendor invoices +NoModifiedSupplierBills=No recorded vendor invoices +NoRecordedProducts=No recorded products/services +NoRecordedProspects=No recorded prospects +NoContractedProducts=No products/services contracted +NoRecordedContracts=No recorded contracts +NoRecordedInterventions=No recorded interventions +BoxLatestSupplierOrders=Latest purchase orders +BoxLatestSupplierOrdersAwaitingReception=Latest Purchase Orders (with a pending reception) +NoSupplierOrder=No recorded purchase order +BoxCustomersInvoicesPerMonth=Customer Invoices per month +BoxSuppliersInvoicesPerMonth=Vendor Invoices per month +BoxCustomersOrdersPerMonth=Sales Orders per month +BoxSuppliersOrdersPerMonth=Vendor Orders per month +BoxProposalsPerMonth=Proposals per month +NoTooLowStockProducts=No products are under the low stock limit +BoxProductDistribution=Products/Services Distribution +ForObject=On %s +BoxTitleLastModifiedSupplierBills=Vendor Invoices: last %s modified +BoxTitleLatestModifiedSupplierOrders=Vendor Orders: last %s modified +BoxTitleLastModifiedCustomerBills=Customer Invoices: last %s modified +BoxTitleLastModifiedCustomerOrders=Sales Orders: last %s modified +BoxTitleLastModifiedPropals=Latest %s modified proposals +BoxTitleLatestModifiedJobPositions=Latest %s modified job positions +BoxTitleLatestModifiedCandidatures=Latest %s modified job applications +ForCustomersInvoices=Customers invoices +ForCustomersOrders=Customers orders +ForProposals=Proposals +LastXMonthRolling=The latest %s month rolling +ChooseBoxToAdd=Add widget to your dashboard +BoxAdded=Widget was added in your dashboard +BoxTitleUserBirthdaysOfMonth=Birthdays of this month (users) +BoxLastManualEntries=Latest record in accountancy entered manually or without source document +BoxTitleLastManualEntries=%s latest record entered manually or without source document +NoRecordedManualEntries=No manual entries record in accountancy +BoxSuspenseAccount=Count accountancy operation with suspense account +BoxTitleSuspenseAccount=Number of unallocated lines +NumberOfLinesInSuspenseAccount=Number of line in suspense account +SuspenseAccountNotDefined=Suspense account isn't defined +BoxLastCustomerShipments=Last customer shipments +BoxTitleLastCustomerShipments=Latest %s customer shipments +NoRecordedShipments=No recorded customer shipment +BoxCustomersOutstandingBillReached=Customers with oustanding limit reached +# Pages +UsersHome=Home users and groups +MembersHome=Home Membership +ThirdpartiesHome=Home Thirdparties +TicketsHome=Home Tickets +AccountancyHome=Home Accountancy +ValidatedProjects=Validated projects diff --git a/htdocs/langs/ms_MY/cashdesk.lang b/htdocs/langs/ms_MY/cashdesk.lang new file mode 100644 index 00000000000..92e16791f08 --- /dev/null +++ b/htdocs/langs/ms_MY/cashdesk.lang @@ -0,0 +1,145 @@ +# Language file - Source file is en_US - cashdesk +CashDeskMenu=Point of sale +CashDesk=Point of sale +CashDeskBankCash=Bank account (cash) +CashDeskBankCB=Bank account (card) +CashDeskBankCheque=Bank account (cheque) +CashDeskWarehouse=Warehouse +CashdeskShowServices=Selling services +CashDeskProducts=Products +CashDeskStock=Stock +CashDeskOn=on +CashDeskThirdParty=Third party +ShoppingCart=Shopping cart +NewSell=New sell +AddThisArticle=Add this article +RestartSelling=Go back on sell +SellFinished=Sale complete +PrintTicket=Print ticket +SendTicket=Send ticket +NoProductFound=No article found +ProductFound=product found +NoArticle=No article +Identification=Identification +Article=Article +Difference=Difference +TotalTicket=Total ticket +NoVAT=No VAT for this sale +Change=Excess received +BankToPay=Account for payment +ShowCompany=Show company +ShowStock=Show warehouse +DeleteArticle=Click to remove this article +FilterRefOrLabelOrBC=Search (Ref/Label) +UserNeedPermissionToEditStockToUsePos=You ask to decrease stock on invoice creation, so user that uses POS needs to have permission to edit stock. +DolibarrReceiptPrinter=Dolibarr Receipt Printer +PointOfSale=Point of Sale +PointOfSaleShort=POS +CloseBill=Close Bill +Floors=Floors +Floor=Floor +AddTable=Add table +Place=Place +TakeposConnectorNecesary='TakePOS Connector' required +OrderPrinters=Add a button to send the order to some given printers, without payment (for example to send an order to a kitchen) +NotAvailableWithBrowserPrinter=Not available when printer for receipt is set to browser +SearchProduct=Search product +Receipt=Receipt +Header=Header +Footer=Footer +AmountAtEndOfPeriod=Amount at end of period (day, month or year) +TheoricalAmount=Theorical amount +RealAmount=Real amount +CashFence=Cash box closing +CashFenceDone=Cash box closing done for the period +NbOfInvoices=Nb of invoices +Paymentnumpad=Type of Pad to enter payment +Numberspad=Numbers Pad +BillsCoinsPad=Coins and banknotes Pad +DolistorePosCategory=TakePOS modules and other POS solutions for Dolibarr +TakeposNeedsCategories=TakePOS needs at least one product categorie to work +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS needs at least 1 product category under the category %s to work +OrderNotes=Can add some notes to each ordered items +CashDeskBankAccountFor=Default account to use for payments in +NoPaimementModesDefined=No paiment mode defined in TakePOS configuration +TicketVatGrouped=Group VAT by rate in tickets|receipts +AutoPrintTickets=Automatically print tickets|receipts +PrintCustomerOnReceipts=Print customer on tickets|receipts +EnableBarOrRestaurantFeatures=Enable features for Bar or Restaurant +ConfirmDeletionOfThisPOSSale=Do your confirm the deletion of this current sale ? +ConfirmDiscardOfThisPOSSale=Do you want to discard this current sale ? +History=History +ValidateAndClose=Validate and close +Terminal=Terminal +NumberOfTerminals=Number of Terminals +TerminalSelect=Select terminal you want to use: +POSTicket=POS Ticket +POSTerminal=POS Terminal +POSModule=POS Module +BasicPhoneLayout=Use basic layout for phones +SetupOfTerminalNotComplete=Setup of terminal %s is not complete +DirectPayment=Direct payment +DirectPaymentButton=Add a "Direct cash payment" button +InvoiceIsAlreadyValidated=Invoice is already validated +NoLinesToBill=No lines to bill +CustomReceipt=Custom Receipt +ReceiptName=Receipt Name +ProductSupplements=Manage supplements of products +SupplementCategory=Supplement category +ColorTheme=Color theme +Colorful=Colorful +HeadBar=Head Bar +SortProductField=Field for sorting products +Browser=Browser +BrowserMethodDescription=Simple and easy receipt printing. Only a few parameters to configure the receipt. Print via browser. +TakeposConnectorMethodDescription=External module with extra features. Posibility to print from the cloud. +PrintMethod=Print method +ReceiptPrinterMethodDescription=Powerful method with a lot of parameters. Full customizable with templates. The server hosting the application can't be in the Cloud (must be able to reach the printers in your network). +ByTerminal=By terminal +TakeposNumpadUsePaymentIcon=Use icon instead of text on payment buttons of numpad +CashDeskRefNumberingModules=Numbering module for POS sales +CashDeskGenericMaskCodes6 =
{TN} tag is used to add the terminal number +TakeposGroupSameProduct=Group same products lines +StartAParallelSale=Start a new parallel sale +SaleStartedAt=Sale started at %s +ControlCashOpening=Open the "Control cash box" popup when opening the POS +CloseCashFence=Close cash box control +CashReport=Cash report +MainPrinterToUse=Main printer to use +OrderPrinterToUse=Order printer to use +MainTemplateToUse=Main template to use +OrderTemplateToUse=Order template to use +BarRestaurant=Bar Restaurant +AutoOrder=Order by the customer himself +RestaurantMenu=Menu +CustomerMenu=Customer menu +ScanToMenu=Scan QR code to see the menu +ScanToOrder=Scan QR code to order +Appearance=Appearance +HideCategoryImages=Hide Category Images +HideProductImages=Hide Product Images +NumberOfLinesToShow=Number of lines of images to show +DefineTablePlan=Define tables plan +GiftReceiptButton=Add a "Gift receipt" button +GiftReceipt=Gift receipt +ModuleReceiptPrinterMustBeEnabled=Module Receipt printer must have been enabled first +AllowDelayedPayment=Allow delayed payment +PrintPaymentMethodOnReceipts=Print payment method on tickets|receipts +WeighingScale=Weighing scale +ShowPriceHT = Display the column with the price excluding tax (on screen) +ShowPriceHTOnReceipt = Display the column with the price excluding tax (on the receipt) +CustomerDisplay=Customer display +SplitSale=Split sale +PrintWithoutDetailsButton=Add "Print without details" button +PrintWithoutDetailsLabelDefault=Line label by default on printing without details +PrintWithoutDetails=Print without details +YearNotDefined=Year is not defined +TakeposBarcodeRuleToInsertProduct=Barcode rule to insert product +TakeposBarcodeRuleToInsertProductDesc=Rule to extract the product reference + a quantity from a scanned barcode.
If empty (default value), application will use the full barcode scanned to find the product.

If defined, syntax must be:
ref:NB+qu:NB+qd:NB+other:NB
where NB is the number of characters to use to extract data from the scanned barcode with:
  • ref : product reference
  • qu : quantity to set when inserting item (units)
  • qd : quantity to set when inserting item (decimals)
  • other : others characters
+AlreadyPrinted=Already printed +HideCategories=Hide categories +HideStockOnLine=Hide stock on line +ShowOnlyProductInStock=Show the products in stock +ShowCategoryDescription=Show category description +ShowProductReference=Show reference of products +UsePriceHT=Use price excl. taxes and not price incl. taxes diff --git a/htdocs/langs/ms_MY/categories.lang b/htdocs/langs/ms_MY/categories.lang new file mode 100644 index 00000000000..62c2752ff9f --- /dev/null +++ b/htdocs/langs/ms_MY/categories.lang @@ -0,0 +1,102 @@ +# Dolibarr language file - Source file is en_US - categories +Rubrique=Tag/Category +Rubriques=Tags/Categories +RubriquesTransactions=Tags/Categories of transactions +categories=tags/categories +NoCategoryYet=No tag/category of this type has been created +In=In +AddIn=Add in +modify=modify +Classify=Classify +CategoriesArea=Tags/Categories area +ProductsCategoriesArea=Product/Service tags/categories area +SuppliersCategoriesArea=Vendor tags/categories area +CustomersCategoriesArea=Customer tags/categories area +MembersCategoriesArea=Member tags/categories area +ContactsCategoriesArea=Contact tags/categories area +AccountsCategoriesArea=Bank account tags/categories area +ProjectsCategoriesArea=Project tags/categories area +UsersCategoriesArea=User tags/categories area +SubCats=Sub-categories +CatList=List of tags/categories +CatListAll=List of tags/categories (all types) +NewCategory=New tag/category +ModifCat=Modify tag/category +CatCreated=Tag/category created +CreateCat=Create tag/category +CreateThisCat=Create this tag/category +NoSubCat=No subcategory. +SubCatOf=Subcategory +FoundCats=Found tags/categories +ImpossibleAddCat=Impossible to add the tag/category %s +WasAddedSuccessfully=%s was added successfully. +ObjectAlreadyLinkedToCategory=Element is already linked to this tag/category. +ProductIsInCategories=Product/service is linked to following tags/categories +CompanyIsInCustomersCategories=This third party is linked to following customers/prospects tags/categories +CompanyIsInSuppliersCategories=This third party is linked to following vendors tags/categories +MemberIsInCategories=This member is linked to following members tags/categories +ContactIsInCategories=This contact is linked to following contacts tags/categories +ProductHasNoCategory=This product/service is not in any tags/categories +CompanyHasNoCategory=This third party is not in any tags/categories +MemberHasNoCategory=This member is not in any tags/categories +ContactHasNoCategory=This contact is not in any tags/categories +ProjectHasNoCategory=This project is not in any tags/categories +ClassifyInCategory=Add to tag/category +NotCategorized=Without tag/category +CategoryExistsAtSameLevel=This category already exists with this ref +ContentsVisibleByAllShort=Contents visible by all +ContentsNotVisibleByAllShort=Contents not visible by all +DeleteCategory=Delete tag/category +ConfirmDeleteCategory=Are you sure you want to delete this tag/category? +NoCategoriesDefined=No tag/category defined +SuppliersCategoryShort=Vendors tag/category +CustomersCategoryShort=Customers tag/category +ProductsCategoryShort=Products tag/category +MembersCategoryShort=Members tag/category +SuppliersCategoriesShort=Vendors tags/categories +CustomersCategoriesShort=Customers tags/categories +ProspectsCategoriesShort=Prospects tags/categories +CustomersProspectsCategoriesShort=Cust./Prosp. tags/categories +ProductsCategoriesShort=Products tags/categories +MembersCategoriesShort=Members tags/categories +ContactCategoriesShort=Contacts tags/categories +AccountsCategoriesShort=Accounts tags/categories +ProjectsCategoriesShort=Projects tags/categories +UsersCategoriesShort=Users tags/categories +StockCategoriesShort=Warehouse tags/categories +ThisCategoryHasNoItems=This category does not contain any items. +CategId=Tag/category id +ParentCategory=Parent tag/category +ParentCategoryLabel=Label of parent tag/category +CatSupList=List of vendors tags/categories +CatCusList=List of customers/prospects tags/categories +CatProdList=List of products tags/categories +CatMemberList=List of members tags/categories +CatContactList=List of contacts tags/categories +CatProjectsList=List of projects tags/categories +CatUsersList=List of users tags/categories +CatSupLinks=Links between vendors and tags/categories +CatCusLinks=Links between customers/prospects and tags/categories +CatContactsLinks=Links between contacts/addresses and tags/categories +CatProdLinks=Links between products/services and tags/categories +CatMembersLinks=Links between members and tags/categories +CatProjectsLinks=Links between projects and tags/categories +CatUsersLinks=Links between users and tags/categories +DeleteFromCat=Remove from tags/category +ExtraFieldsCategories=Complementary attributes +CategoriesSetup=Tags/categories setup +CategorieRecursiv=Link with parent tag/category automatically +CategorieRecursivHelp=If option is on, when you add a product into a subcategory, product will also be added into the parent category. +AddProductServiceIntoCategory=Add the following product/service +AddCustomerIntoCategory=Assign category to customer +AddSupplierIntoCategory=Assign category to supplier +AssignCategoryTo=Assign category to +ShowCategory=Show tag/category +ByDefaultInList=By default in list +ChooseCategory=Choose category +StocksCategoriesArea=Warehouse Categories +TicketsCategoriesArea=Tickets Categories +ActionCommCategoriesArea=Event Categories +WebsitePagesCategoriesArea=Page-Container Categories +KnowledgemanagementsCategoriesArea=KM article Categories +UseOrOperatorForCategories=Use 'OR' operator for categories diff --git a/htdocs/langs/ms_MY/commercial.lang b/htdocs/langs/ms_MY/commercial.lang new file mode 100644 index 00000000000..21d282cd794 --- /dev/null +++ b/htdocs/langs/ms_MY/commercial.lang @@ -0,0 +1,81 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Commerce +CommercialArea=Commerce area +Customer=Customer +Customers=Customers +Prospect=Prospect +Prospects=Prospects +DeleteAction=Delete an event +NewAction=New event +AddAction=Create event +AddAnAction=Create an event +AddActionRendezVous=Create a Rendez-vous event +ConfirmDeleteAction=Are you sure you want to delete this event? +CardAction=Event card +ActionOnCompany=Related company +ActionOnContact=Related contact +TaskRDVWith=Meeting with %s +ShowTask=Show task +ShowAction=Show event +ActionsReport=Events report +ThirdPartiesOfSaleRepresentative=Third parties with sales representative +SaleRepresentativesOfThirdParty=Sales representatives of third party +SalesRepresentative=Sales representative +SalesRepresentatives=Sales representatives +SalesRepresentativeFollowUp=Sales representative (follow-up) +SalesRepresentativeSignature=Sales representative (signature) +NoSalesRepresentativeAffected=No particular sales representative assigned +ShowCustomer=Show customer +ShowProspect=Show prospect +ListOfProspects=List of prospects +ListOfCustomers=List of customers +LastDoneTasks=Latest %s completed actions +LastActionsToDo=Oldest %s not completed actions +DoneAndToDoActions=Completed and To do events +DoneActions=Completed events +ToDoActions=Incomplete events +SendPropalRef=Submission of commercial proposal %s +SendOrderRef=Submission of order %s +StatusNotApplicable=Not applicable +StatusActionToDo=To do +StatusActionDone=Complete +StatusActionInProcess=In process +TasksHistoryForThisContact=Events for this contact +LastProspectDoNotContact=Do not contact +LastProspectNeverContacted=Never contacted +LastProspectToContact=To contact +LastProspectContactInProcess=Contact in process +LastProspectContactDone=Contact done +ActionAffectedTo=Event assigned to +ActionDoneBy=Event done by +ActionAC_TEL=Phone call +ActionAC_FAX=Send fax +ActionAC_PROP=Send proposal by mail +ActionAC_EMAIL=Send Email +ActionAC_EMAIL_IN=Reception of Email +ActionAC_RDV=Meetings +ActionAC_INT=Intervention on site +ActionAC_FAC=Send customer invoice by mail +ActionAC_REL=Send customer invoice by mail (reminder) +ActionAC_CLO=Close +ActionAC_EMAILING=Send mass email +ActionAC_COM=Send sales order by mail +ActionAC_SHIP=Send shipping by mail +ActionAC_SUP_ORD=Send purchase order by mail +ActionAC_SUP_INV=Send vendor invoice by mail +ActionAC_OTH=Other +ActionAC_OTH_AUTO=Other auto +ActionAC_MANUAL=Manually inserted events +ActionAC_AUTO=Automatically inserted events +ActionAC_OTH_AUTOShort=Other +ActionAC_EVENTORGANIZATION=Event organization events +Stats=Sales statistics +StatusProsp=Prospect status +DraftPropals=Draft commercial proposals +NoLimit=No limit +ToOfferALinkForOnlineSignature=Link for online signature +WelcomeOnOnlineSignaturePage=Welcome to the page to accept commercial proposals from %s +ThisScreenAllowsYouToSignDocFrom=This screen allow you to accept and sign, or refuse, a quote/commercial proposal +ThisIsInformationOnDocumentToSign=This is information on document to accept or refuse +SignatureProposalRef=Signature of quote/commercial proposal %s +FeatureOnlineSignDisabled=Feature for online signing disabled or document generated before the feature was enabled diff --git a/htdocs/langs/ms_MY/companies.lang b/htdocs/langs/ms_MY/companies.lang new file mode 100644 index 00000000000..99b9b7b8586 --- /dev/null +++ b/htdocs/langs/ms_MY/companies.lang @@ -0,0 +1,500 @@ +# Dolibarr language file - Source file is en_US - companies +ErrorCompanyNameAlreadyExists=Company name %s already exists. Choose another one. +ErrorSetACountryFirst=Set the country first +SelectThirdParty=Select a third party +ConfirmDeleteCompany=Are you sure you want to delete this company and all related information? +DeleteContact=Delete a contact/address +ConfirmDeleteContact=Are you sure you want to delete this contact and all related information? +MenuNewThirdParty=New Third Party +MenuNewCustomer=New Customer +MenuNewProspect=New Prospect +MenuNewSupplier=New Vendor +MenuNewPrivateIndividual=New private individual +NewCompany=New company (prospect, customer, vendor) +NewThirdParty=New Third Party (prospect, customer, vendor) +CreateDolibarrThirdPartySupplier=Create a third party (vendor) +CreateThirdPartyOnly=Create third party +CreateThirdPartyAndContact=Create a third party + a child contact +ProspectionArea=Prospection area +IdThirdParty=Id third party +IdCompany=Company Id +IdContact=Contact Id +ThirdPartyAddress=Third-party address +ThirdPartyContacts=Third-party contacts +ThirdPartyContact=Third-party contact/address +Company=Company +CompanyName=Company name +AliasNames=Alias name (commercial, trademark, ...) +AliasNameShort=Alias Name +Companies=Companies +CountryIsInEEC=Country is inside the European Economic Community +PriceFormatInCurrentLanguage=Price display format in the current language and currency +ThirdPartyName=Third-party name +ThirdPartyEmail=Third-party email +ThirdParty=Third-party +ThirdParties=Third-parties +ThirdPartyProspects=Prospects +ThirdPartyProspectsStats=Prospects +ThirdPartyCustomers=Customers +ThirdPartyCustomersStats=Customers +ThirdPartyCustomersWithIdProf12=Customers with %s or %s +ThirdPartySuppliers=Vendors +ThirdPartyType=Third-party type +Individual=Private individual +ToCreateContactWithSameName=Will automatically create a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. +ParentCompany=Parent company +Subsidiaries=Subsidiaries +ReportByMonth=Report per month +ReportByCustomers=Report per customer +ReportByThirdparties=Report per thirdparty +ReportByQuarter=Report per rate +CivilityCode=Civility code +RegisteredOffice=Registered office +Lastname=Last name +Firstname=First name +RefEmployee=Employee reference +NationalRegistrationNumber=National registration number +PostOrFunction=Job position +UserTitle=Title +NatureOfThirdParty=Nature of Third party +NatureOfContact=Nature of Contact +Address=Address +State=State/Province +StateId=State ID +StateCode=State/Province code +StateShort=State +Region=Region +Region-State=Region - State +Country=Country +CountryCode=Country code +CountryId=Country ID +Phone=Phone +PhoneShort=Phone +Skype=Skype +Call=Call +Chat=Chat +PhonePro=Bus. phone +PhonePerso=Pers. phone +PhoneMobile=Mobile +No_Email=Refuse bulk emailings +Fax=Fax +Zip=Zip Code +Town=City +Web=Web +Poste= Position +DefaultLang=Default language +VATIsUsed=Sales tax used +VATIsUsedWhenSelling=This defines if this third party includes a sales tax or not when it makes an invoice to its own customers +VATIsNotUsed=Sales tax is not used +CopyAddressFromSoc=Copy address from third-party details +ThirdpartyNotCustomerNotSupplierSoNoRef=Third party neither customer nor vendor, no available referring objects +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Third party neither customer nor vendor, discounts are not available +PaymentBankAccount=Payment bank account +OverAllProposals=Proposals +OverAllOrders=Orders +OverAllInvoices=Invoices +OverAllSupplierProposals=Price requests +##### Local Taxes ##### +LocalTax1IsUsed=Use second tax +LocalTax1IsUsedES= RE is used +LocalTax1IsNotUsedES= RE is not used +LocalTax2IsUsed=Use third tax +LocalTax2IsUsedES= IRPF is used +LocalTax2IsNotUsedES= IRPF is not used +WrongCustomerCode=Customer code invalid +WrongSupplierCode=Vendor code invalid +CustomerCodeModel=Customer code model +SupplierCodeModel=Vendor code model +Gencod=Barcode +GencodBuyPrice=Barcode of price ref +##### Professional ID ##### +ProfId1Short=Prof. id 1 +ProfId2Short=Prof. id 2 +ProfId3Short=Prof. id 3 +ProfId4Short=Prof. id 4 +ProfId5Short=Prof. id 5 +ProfId6Short=Prof. id 6 +ProfId1=Professional ID 1 +ProfId2=Professional ID 2 +ProfId3=Professional ID 3 +ProfId4=Professional ID 4 +ProfId5=Professional ID 5 +ProfId6=Professional ID 6 +ProfId1AR=Prof Id 1 (CUIT/CUIL) +ProfId2AR=Prof Id 2 (Revenu brutes) +ProfId3AR=- +ProfId4AR=- +ProfId5AR=- +ProfId6AR=- +ProfId1AT=Prof Id 1 (USt.-IdNr) +ProfId2AT=Prof Id 2 (USt.-Nr) +ProfId3AT=Prof Id 3 (Handelsregister-Nr.) +ProfId4AT=- +ProfId5AT=EORI number +ProfId6AT=- +ProfId1AU=Prof Id 1 (ABN) +ProfId2AU=- +ProfId3AU=- +ProfId4AU=- +ProfId5AU=- +ProfId6AU=- +ProfId1BE=Prof Id 1 (Professional number) +ProfId2BE=- +ProfId3BE=- +ProfId4BE=- +ProfId5BE=EORI number +ProfId6BE=- +ProfId1BR=- +ProfId2BR=IE (Inscricao Estadual) +ProfId3BR=IM (Inscricao Municipal) +ProfId4BR=CPF +#ProfId5BR=CNAE +#ProfId6BR=INSS +ProfId1CH=UID-Nummer +ProfId2CH=- +ProfId3CH=Prof Id 1 (Federal number) +ProfId4CH=Prof Id 2 (Commercial Record number) +ProfId5CH=EORI number +ProfId6CH=- +ProfId1CL=Prof Id 1 (R.U.T.) +ProfId2CL=- +ProfId3CL=- +ProfId4CL=- +ProfId5CL=- +ProfId6CL=- +ProfId1CM=Id. prof. 1 (Trade Register) +ProfId2CM=Id. prof. 2 (Taxpayer No.) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) +ProfId5CM=Id. prof. 5 (Others) +ProfId6CM=- +ProfId1ShortCM=Trade Register +ProfId2ShortCM=Taxpayer No. +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. +ProfId5ShortCM=Others +ProfId6ShortCM=- +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=EORI number +ProfId6DE=- +ProfId1ES=Prof Id 1 (CIF/NIF) +ProfId2ES=Prof Id 2 (Social security number) +ProfId3ES=Prof Id 3 (CNAE) +ProfId4ES=Prof Id 4 (Collegiate number) +ProfId5ES=Prof Id 5 (EORI number) +ProfId6ES=- +ProfId1FR=Prof Id 1 (SIREN) +ProfId2FR=Prof Id 2 (SIRET) +ProfId3FR=Prof Id 3 (NAF, old APE) +ProfId4FR=Prof Id 4 (RCS/RM) +ProfId5FR=Prof Id 5 (numéro EORI) +ProfId6FR=- +ProfId1ShortFR=SIREN +ProfId2ShortFR=SIRET +ProfId3ShortFR=NAF +ProfId4ShortFR=RCS +ProfId5ShortFR=EORI +ProfId6ShortFR=- +ProfId1GB=Registration Number +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=Prof Id 4 +ProfId5IN=Prof Id 5 +ProfId6IN=- +ProfId1IT=- +ProfId2IT=- +ProfId3IT=- +ProfId4IT=- +ProfId5IT=EORI number +ProfId6IT=- +ProfId1LU=Id. prof. 1 (R.C.S. Luxembourg) +ProfId2LU=Id. prof. 2 (Business permit) +ProfId3LU=- +ProfId4LU=- +ProfId5LU=EORI number +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 (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=EORI number +ProfId6NL=- +ProfId1PT=Prof Id 1 (NIPC) +ProfId2PT=Prof Id 2 (Social security number) +ProfId3PT=Prof Id 3 (Commercial Record number) +ProfId4PT=Prof Id 4 (Conservatory) +ProfId5PT=Prof Id 5 (EORI number) +ProfId6PT=- +ProfId1SN=RC +ProfId2SN=NINEA +ProfId3SN=- +ProfId4SN=- +ProfId5SN=- +ProfId6SN=- +ProfId1TN=Prof Id 1 (RC) +ProfId2TN=Prof Id 2 (Fiscal matricule) +ProfId3TN=Prof Id 3 (Douane code) +ProfId4TN=Prof Id 4 (BAN) +ProfId5TN=- +ProfId6TN=- +ProfId1US=Prof Id (FEIN) +ProfId2US=- +ProfId3US=- +ProfId4US=- +ProfId5US=- +ProfId6US=- +ProfId1RO=Prof Id 1 (CUI) +ProfId2RO=Prof Id 2 (Nr. Înmatriculare) +ProfId3RO=Prof Id 3 (CAEN) +ProfId4RO=Prof Id 5 (EUID) +ProfId5RO=Prof Id 5 (EORI number) +ProfId6RO=- +ProfId1RU=Prof Id 1 (OGRN) +ProfId2RU=Prof Id 2 (INN) +ProfId3RU=Prof Id 3 (KPP) +ProfId4RU=Prof Id 4 (OKPO) +ProfId5RU=- +ProfId6RU=- +ProfId1UA=Prof Id 1 (EDRPOU) +ProfId2UA=Prof Id 2 (DRFO) +ProfId3UA=Prof Id 3 (INN) +ProfId4UA=Prof Id 4 (Certificate) +ProfId5UA=Prof Id 5 (RNOKPP) +ProfId6UA=Prof Id 6 (TRDPAU) +ProfId1DZ=RC +ProfId2DZ=Art. +ProfId3DZ=NIF +ProfId4DZ=NIS +VATIntra=VAT ID +VATIntraShort=VAT ID +VATIntraSyntaxIsValid=Syntax is valid +VATReturn=VAT return +ProspectCustomer=Prospect / Customer +Prospect=Prospect +CustomerCard=Customer Card +Customer=Customer +CustomerRelativeDiscount=Relative customer discount +SupplierRelativeDiscount=Relative vendor discount +CustomerRelativeDiscountShort=Relative discount +CustomerAbsoluteDiscountShort=Absolute discount +CompanyHasRelativeDiscount=This customer has a default discount of %s%% +CompanyHasNoRelativeDiscount=This customer has no relative discount by default +HasRelativeDiscountFromSupplier=You have a default discount of %s%% from this vendor +HasNoRelativeDiscountFromSupplier=You have no default relative discount from this vendor +CompanyHasAbsoluteDiscount=This customer has discounts available (credits notes or down payments) for %s %s +CompanyHasDownPaymentOrCommercialDiscount=This customer has discounts available (commercial, down payments) for %s %s +CompanyHasCreditNote=This customer still has credit notes for %s %s +HasNoAbsoluteDiscountFromSupplier=You have no discount credit available from this vendor +HasAbsoluteDiscountFromSupplier=You have discounts available (credits notes or down payments) for %s %s from this vendor +HasDownPaymentOrCommercialDiscountFromSupplier=You have discounts available (commercial, down payments) for %s %s from this vendor +HasCreditNoteFromSupplier=You have credit notes for %s %s from this vendor +CompanyHasNoAbsoluteDiscount=This customer has no discount credit available +CustomerAbsoluteDiscountAllUsers=Absolute customer discounts (granted by all users) +CustomerAbsoluteDiscountMy=Absolute customer discounts (granted by yourself) +SupplierAbsoluteDiscountAllUsers=Absolute vendor discounts (entered by all users) +SupplierAbsoluteDiscountMy=Absolute vendor discounts (entered by yourself) +DiscountNone=None +Vendor=Vendor +Supplier=Vendor +AddContact=Create contact +AddContactAddress=Create contact/address +EditContact=Edit contact +EditContactAddress=Edit contact/address +Contact=Contact/Address +Contacts=Contacts/Addresses +ContactId=Contact id +ContactsAddresses=Contacts/Addresses +FromContactName=Name: +NoContactDefinedForThirdParty=No contact defined for this third party +NoContactDefined=No contact defined +DefaultContact=Default contact/address +ContactByDefaultFor=Default contact/address for +AddThirdParty=Create third party +DeleteACompany=Delete a company +PersonalInformations=Personal data +AccountancyCode=Accounting account +CustomerCode=Customer Code +SupplierCode=Vendor Code +CustomerCodeShort=Customer Code +SupplierCodeShort=Vendor Code +CustomerCodeDesc=Customer Code, unique for all customers +SupplierCodeDesc=Vendor Code, unique for all vendors +RequiredIfCustomer=Required if third party is a customer or prospect +RequiredIfSupplier=Required if third party is a vendor +ValidityControledByModule=Validity controlled by the module +ThisIsModuleRules=Rules for this module +ProspectToContact=Prospect to contact +CompanyDeleted=Company "%s" deleted from database. +ListOfContacts=List of contacts/addresses +ListOfContactsAddresses=List of contacts/addresses +ListOfThirdParties=List of Third Parties +ShowCompany=Third Party +ShowContact=Contact-Address +ContactsAllShort=All (No filter) +ContactType=Contact role +ContactForOrders=Order's contact +ContactForOrdersOrShipments=Order's or shipment's contact +ContactForProposals=Proposal's contact +ContactForContracts=Contract's contact +ContactForInvoices=Invoice's contact +NoContactForAnyOrder=This contact is not a contact for any order +NoContactForAnyOrderOrShipments=This contact is not a contact for any order or shipment +NoContactForAnyProposal=This contact is not a contact for any commercial proposal +NoContactForAnyContract=This contact is not a contact for any contract +NoContactForAnyInvoice=This contact is not a contact for any invoice +NewContact=New contact +NewContactAddress=New Contact/Address +MyContacts=My contacts +Capital=Capital +CapitalOf=Capital of %s +EditCompany=Edit company +ThisUserIsNot=This user is not a prospect, customer or vendor +VATIntraCheck=Check +VATIntraCheckDesc=The VAT ID must include the country prefix. The link %s uses the European VAT checker service (VIES) which requires internet access from the Dolibarr server. +VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/vieshome.do +VATIntraCheckableOnEUSite=Check the intra-Community VAT ID on the European Commission website +VATIntraManualCheck=You can also check manually on the European Commission website %s +ErrorVATCheckMS_UNAVAILABLE=Check not possible. Check service is not provided by the member state (%s). +NorProspectNorCustomer=Not prospect, nor customer +JuridicalStatus=Business entity type +Workforce=Workforce +Staff=Employees +ProspectLevelShort=Potential +ProspectLevel=Prospect potential +ContactPrivate=Private +ContactPublic=Shared +ContactVisibility=Visibility +ContactOthers=Other +OthersNotLinkedToThirdParty=Others, not linked to a third party +ProspectStatus=Prospect status +PL_NONE=None +PL_UNKNOWN=Unknown +PL_LOW=Low +PL_MEDIUM=Medium +PL_HIGH=High +TE_UNKNOWN=- +TE_STARTUP=Startup +TE_GROUP=Large company +TE_MEDIUM=Medium company +TE_ADMIN=Governmental +TE_SMALL=Small company +TE_RETAIL=Retailer +TE_WHOLE=Wholesaler +TE_PRIVATE=Private individual +TE_OTHER=Other +StatusProspect-1=Do not contact +StatusProspect0=Never contacted +StatusProspect1=To be contacted +StatusProspect2=Contact in process +StatusProspect3=Contact done +ChangeDoNotContact=Change status to 'Do not contact' +ChangeNeverContacted=Change status to 'Never contacted' +ChangeToContact=Change status to 'To be contacted' +ChangeContactInProcess=Change status to 'Contact in process' +ChangeContactDone=Change status to 'Contact done' +ProspectsByStatus=Prospects by status +NoParentCompany=None +ExportCardToFormat=Export card to format +ContactNotLinkedToCompany=Contact not linked to any third party +DolibarrLogin=Dolibarr login +NoDolibarrAccess=No Dolibarr access +ExportDataset_company_1=Third-parties (companies/foundations/physical people) and their properties +ExportDataset_company_2=Contacts and their properties +ImportDataset_company_1=Third-parties and their properties +ImportDataset_company_2=Third-parties additional contacts/addresses and attributes +ImportDataset_company_3=Third-parties Bank accounts +ImportDataset_company_4=Third-parties Sales representatives (assign sales representatives/users to companies) +PriceLevel=Price Level +PriceLevelLabels=Price Level Labels +DeliveryAddress=Delivery address +AddAddress=Add address +SupplierCategory=Vendor category +JuridicalStatus200=Independent +DeleteFile=Delete file +ConfirmDeleteFile=Are you sure you want to delete this file? +AllocateCommercial=Assigned to sales representative +Organization=Organization +FiscalYearInformation=Fiscal Year +FiscalMonthStart=Starting month of the fiscal year +SocialNetworksInformation=Social networks +SocialNetworksFacebookURL=Facebook URL +SocialNetworksTwitterURL=Twitter URL +SocialNetworksLinkedinURL=Linkedin URL +SocialNetworksInstagramURL=Instagram URL +SocialNetworksYoutubeURL=Youtube URL +SocialNetworksGithubURL=Github URL +YouMustAssignUserMailFirst=You must create an email for this user prior to being able to add an email notification. +YouMustCreateContactFirst=To be able to add email notifications, you must first define contacts with valid emails for the third party +ListSuppliersShort=List of Vendors +ListProspectsShort=List of Prospects +ListCustomersShort=List of Customers +ThirdPartiesArea=Third Parties/Contacts +LastModifiedThirdParties=Latest %s Third Parties which were modified +UniqueThirdParties=Total number of Third Parties +InActivity=Open +ActivityCeased=Closed +ThirdPartyIsClosed=Third party is closed +ProductsIntoElements=List of products/services mapped to %s +CurrentOutstandingBill=Current outstanding bill +OutstandingBill=Max. for outstanding bill +OutstandingBillReached=Max. for outstanding bill reached +OrderMinAmount=Minimum amount for order +MonkeyNumRefModelDesc=Return a number in the format %syymm-nnnn for the customer code and %syymm-nnnn for the vendor code where yy is year, mm is month and nnnn is a sequencial auto-incrementing number with no break and no return to 0. +LeopardNumRefModelDesc=The code is free. This code can be modified at any time. +ManagingDirectors=Manager(s) name (CEO, director, president...) +MergeOriginThirdparty=Duplicate third party (third party you want to delete) +MergeThirdparties=Merge third parties +ConfirmMergeThirdparties=Are you sure you want to merge the chosen third party with the current one? All linked objects (invoices, orders, ...) will be moved to the current third party, after which the chosen third party will be deleted. +ThirdpartiesMergeSuccess=Third parties have been merged +SaleRepresentativeLogin=Login of sales representative +SaleRepresentativeFirstname=First name of sales representative +SaleRepresentativeLastname=Last name of sales representative +ErrorThirdpartiesMerge=There was an error when deleting the third parties. Please check the log. Changes have been reverted. +NewCustomerSupplierCodeProposed=Customer or Vendor code already used, a new code is suggested +KeepEmptyIfGenericAddress=Keep this field empty if this address is a generic address +#Imports +PaymentTypeCustomer=Payment Type - Customer +PaymentTermsCustomer=Payment Terms - Customer +PaymentTypeSupplier=Payment Type - Vendor +PaymentTermsSupplier=Payment Term - Vendor +PaymentTypeBoth=Payment Type - Customer and Vendor +MulticurrencyUsed=Use Multicurrency +MulticurrencyCurrency=Currency +InEEC=Europe (EEC) +RestOfEurope=Rest of Europe (EEC) +OutOfEurope=Out of Europe (EEC) +CurrentOutstandingBillLate=Current outstanding bill late +BecarefullChangeThirdpartyBeforeAddProductToInvoice=Be carefull, depending on your product price settings, you should change thirdparty before adding product to POS. diff --git a/htdocs/langs/ms_MY/compta.lang b/htdocs/langs/ms_MY/compta.lang new file mode 100644 index 00000000000..be76a3689eb --- /dev/null +++ b/htdocs/langs/ms_MY/compta.lang @@ -0,0 +1,303 @@ +# Dolibarr language file - Source file is en_US - compta +MenuFinancial=Billing | Payment +TaxModuleSetupToModifyRules=Go to Taxes module setup to modify rules for calculation +TaxModuleSetupToModifyRulesLT=Go to Company setup to modify rules for calculation +OptionMode=Option for accountancy +OptionModeTrue=Option Incomes-Expenses +OptionModeVirtual=Option Claims-Debts +OptionModeTrueDesc=In this context, the turnover is calculated over payments (date of payments). The validity of the figures is assured only if the book-keeping is scrutinized through the input/output on the accounts via invoices. +OptionModeVirtualDesc=In this context, the turnover is calculated over invoices (date of validation). When these invoices are due, whether they have been paid or not, they are listed in the turnover output. +FeatureIsSupportedInInOutModeOnly=Feature only available in CREDITS-DEBTS accountancy mode (See Accountancy module configuration) +VATReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Tax module setup. +LTReportBuildWithOptionDefinedInModule=Amounts shown here are calculated using rules defined by Company setup. +Param=Setup +RemainingAmountPayment=Amount payment remaining: +Account=Account +Accountparent=Parent account +Accountsparent=Parent accounts +Income=Income +Outcome=Expense +MenuReportInOut=Income / Expense +ReportInOut=Balance of income and expenses +ReportTurnover=Turnover invoiced +ReportTurnoverCollected=Turnover collected +PaymentsNotLinkedToInvoice=Payments not linked to any invoice, so not linked to any third party +PaymentsNotLinkedToUser=Payments not linked to any user +Profit=Profit +AccountingResult=Accounting result +BalanceBefore=Balance (before) +Balance=Balance +Debit=Debit +Credit=Credit +Piece=Accounting Doc. +AmountHTVATRealReceived=Net collected +AmountHTVATRealPaid=Net paid +VATToPay=Tax sales +VATReceived=Tax received +VATToCollect=Tax purchases +VATSummary=Tax monthly +VATBalance=Tax Balance +VATPaid=Tax paid +LT1Summary=Tax 2 summary +LT2Summary=Tax 3 summary +LT1SummaryES=RE Balance +LT2SummaryES=IRPF Balance +LT1SummaryIN=CGST Balance +LT2SummaryIN=SGST Balance +LT1Paid=Tax 2 paid +LT2Paid=Tax 3 paid +LT1PaidES=RE Paid +LT2PaidES=IRPF Paid +LT1PaidIN=CGST Paid +LT2PaidIN=SGST Paid +LT1Customer=Tax 2 sales +LT1Supplier=Tax 2 purchases +LT1CustomerES=RE sales +LT1SupplierES=RE purchases +LT1CustomerIN=CGST sales +LT1SupplierIN=CGST purchases +LT2Customer=Tax 3 sales +LT2Supplier=Tax 3 purchases +LT2CustomerES=IRPF sales +LT2SupplierES=IRPF purchases +LT2CustomerIN=SGST sales +LT2SupplierIN=SGST purchases +VATCollected=VAT collected +StatusToPay=To pay +SpecialExpensesArea=Area for all special payments +VATExpensesArea=Area for all TVA payments +SocialContribution=Social or fiscal tax +SocialContributions=Social or fiscal taxes +SocialContributionsDeductibles=Deductible social or fiscal taxes +SocialContributionsNondeductibles=Nondeductible social or fiscal taxes +DateOfSocialContribution=Date of social or fiscal tax +LabelContrib=Label contribution +TypeContrib=Type contribution +MenuSpecialExpenses=Special expenses +MenuTaxAndDividends=Taxes and dividends +MenuSocialContributions=Social/fiscal taxes +MenuNewSocialContribution=New social/fiscal tax +NewSocialContribution=New social/fiscal tax +AddSocialContribution=Add social/fiscal tax +ContributionsToPay=Social/fiscal taxes to pay +AccountancyTreasuryArea=Billing and payment area +NewPayment=New payment +PaymentCustomerInvoice=Customer invoice payment +PaymentSupplierInvoice=vendor invoice payment +PaymentSocialContribution=Social/fiscal tax payment +PaymentVat=VAT payment +AutomaticCreationPayment=Automatically record the payment +ListPayment=List of payments +ListOfCustomerPayments=List of customer payments +ListOfSupplierPayments=List of vendor payments +DateStartPeriod=Date start period +DateEndPeriod=Date end period +newLT1Payment=New tax 2 payment +newLT2Payment=New tax 3 payment +LT1Payment=Tax 2 payment +LT1Payments=Tax 2 payments +LT2Payment=Tax 3 payment +LT2Payments=Tax 3 payments +newLT1PaymentES=New RE payment +newLT2PaymentES=New IRPF payment +LT1PaymentES=RE Payment +LT1PaymentsES=RE Payments +LT2PaymentES=IRPF Payment +LT2PaymentsES=IRPF Payments +VATPayment=Sales tax payment +VATPayments=Sales tax payments +VATDeclarations=VAT declarations +VATDeclaration=VAT declaration +VATRefund=Sales tax refund +NewVATPayment=New sales tax payment +NewLocalTaxPayment=New tax %s payment +Refund=Refund +SocialContributionsPayments=Social/fiscal taxes payments +ShowVatPayment=Show VAT payment +TotalToPay=Total to pay +BalanceVisibilityDependsOnSortAndFilters=Balance is visible in this list only if table is sorted on %s and filtered on 1 bank account (with no other filters) +CustomerAccountancyCode=Customer accounting code +SupplierAccountancyCode=Vendor accounting code +CustomerAccountancyCodeShort=Cust. account. code +SupplierAccountancyCodeShort=Sup. account. code +AccountNumber=Account number +NewAccountingAccount=New account +Turnover=Turnover invoiced +TurnoverCollected=Turnover collected +SalesTurnoverMinimum=Minimum turnover +ByExpenseIncome=By expenses & incomes +ByThirdParties=By third parties +ByUserAuthorOfInvoice=By invoice author +CheckReceipt=Check deposit +CheckReceiptShort=Check deposit +LastCheckReceiptShort=Latest %s check receipts +NewCheckReceipt=New discount +NewCheckDeposit=New check deposit +NewCheckDepositOn=Create receipt for deposit on account: %s +NoWaitingChecks=No checks awaiting deposit. +DateChequeReceived=Check receiving date +NbOfCheques=No. of checks +PaySocialContribution=Pay a social/fiscal tax +PayVAT=Pay a VAT declaration +PaySalary=Pay a salary card +ConfirmPaySocialContribution=Are you sure you want to classify this social or fiscal tax as paid ? +ConfirmPayVAT=Are you sure you want to classify this VAT declaration as paid ? +ConfirmPaySalary=Are you sure you want to classify this salary card as paid? +DeleteSocialContribution=Delete a social or fiscal tax payment +DeleteVAT=Delete a VAT declaration +DeleteSalary=Delete a salary card +DeleteVariousPayment=Delete a various payment +ConfirmDeleteSocialContribution=Are you sure you want to delete this social/fiscal tax payment ? +ConfirmDeleteVAT=Are you sure you want to delete this VAT declaration ? +ConfirmDeleteSalary=Are you sure you want to delete this salary ? +ConfirmDeleteVariousPayment=Are you sure you want to delete this various payment ? +ExportDataset_tax_1=Social and fiscal taxes and payments +CalcModeVATDebt=Mode %sVAT on commitment accounting%s. +CalcModeVATEngagement=Mode %sVAT on incomes-expenses%s. +CalcModeDebt=Analysis of known recorded documents even if they are not yet accounted in ledger. +CalcModeEngagement=Analysis of known recorded payments, even if they are not yet accounted in Ledger. +CalcModeBookkeeping=Analysis of data journalized in Bookkeeping Ledger table. +CalcModeLT1= Mode %sRE on customer invoices - suppliers invoices%s +CalcModeLT1Debt=Mode %sRE on customer invoices%s +CalcModeLT1Rec= Mode %sRE on suppliers invoices%s +CalcModeLT2= Mode %sIRPF on customer invoices - suppliers invoices%s +CalcModeLT2Debt=Mode %sIRPF on customer invoices%s +CalcModeLT2Rec= Mode %sIRPF on suppliers invoices%s +AnnualSummaryDueDebtMode=Balance of income and expenses, annual summary +AnnualSummaryInputOutputMode=Balance of income and expenses, annual summary +AnnualByCompanies=Balance of income and expenses, by predefined groups of account +AnnualByCompaniesDueDebtMode=Balance of income and expenses, detail by predefined groups, mode %sClaims-Debts%s said Commitment accounting. +AnnualByCompaniesInputOutputMode=Balance of income and expenses, detail by predefined groups, mode %sIncomes-Expenses%s said cash accounting. +SeeReportInInputOutputMode=See %sanalysis of payments%s for a calculation based on recorded payments made even if they are not yet accounted in Ledger +SeeReportInDueDebtMode=See %sanalysis of recorded documents%s for a calculation based on known recorded documents even if they are not yet accounted in Ledger +SeeReportInBookkeepingMode=See %sanalysis of bookeeping ledger table%s for a report based on Bookkeeping Ledger table +RulesAmountWithTaxIncluded=- Amounts shown are with all taxes included +RulesAmountWithTaxExcluded=- Amounts of invoices shown are with all taxes excluded +RulesResultDue=- It includes all invoices, expenses, VAT, donations, salaries, whether they are paid or not.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries, the date of end of period is used. +RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT, donations and salaries. +RulesCADue=- It includes the customer's due invoices whether they are paid or not.
- It is based on the billing date of these invoices.
+RulesCAIn=- It includes all the effective payments of invoices received from customers.
- It is based on the payment date of these invoices
+RulesCATotalSaleJournal=It includes all credit lines from the Sale journal. +RulesSalesTurnoverOfIncomeAccounts=It includes (credit - debit) of lines for product accounts in group INCOME +RulesAmountOnInOutBookkeepingRecord=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" +RulesResultBookkeepingPredefined=It includes record in your Ledger with accounting accounts that has the group "EXPENSE" or "INCOME" +RulesResultBookkeepingPersonalized=It show record in your Ledger with accounting accounts grouped by personalized groups +SeePageForSetup=See menu %s for setup +DepositsAreNotIncluded=- Down payment invoices are not included +DepositsAreIncluded=- Down payment invoices are included +LT1ReportByMonth=Tax 2 report by month +LT2ReportByMonth=Tax 3 report by month +LT1ReportByCustomers=Report tax 2 by third party +LT2ReportByCustomers=Report tax 3 by third party +LT1ReportByCustomersES=Report by third party RE +LT2ReportByCustomersES=Report by third party IRPF +VATReport=Sales tax report +VATReportByPeriods=Sales tax report by period +VATReportByMonth=Sales tax report by month +VATReportByRates=Sales tax report by rate +VATReportByThirdParties=Sales tax report by third party +VATReportByCustomers=Sales tax report by customer +VATReportByCustomersInInputOutputMode=Report by the customer VAT collected and paid +VATReportByQuartersInInputOutputMode=Report by Sales tax rate of the tax collected and paid +VATReportShowByRateDetails=Show details of this rate +LT1ReportByQuarters=Report tax 2 by rate +LT2ReportByQuarters=Report tax 3 by rate +LT1ReportByQuartersES=Report by RE rate +LT2ReportByQuartersES=Report by IRPF rate +SeeVATReportInInputOutputMode=See report %sVAT collection%s for a standard calculation +SeeVATReportInDueDebtMode=See report %sVAT on debit%s for a calculation with an option on the invoicing +RulesVATInServices=- For services, the report includes the VAT of payments actually received or paid on the basis of the date of payment. +RulesVATInProducts=- For material assets, the report includes the VAT on the basis of the date of payment. +RulesVATDueServices=- For services, the report includes VAT of due invoices, paid or not, based on the invoice date. +RulesVATDueProducts=- For material assets, the report includes the VAT of due invoices, based on the invoice date. +OptionVatInfoModuleComptabilite=Note: For material assets, it should use the date of delivery to be more fair. +ThisIsAnEstimatedValue=This is a preview, based on business events and not from the final ledger table, so final results may differ from this preview values +PercentOfInvoice=%%/invoice +NotUsedForGoods=Not used on goods +ProposalStats=Statistics on proposals +OrderStats=Statistics on orders +InvoiceStats=Statistics on bills +Dispatch=Dispatching +Dispatched=Dispatched +ToDispatch=To dispatch +ThirdPartyMustBeEditAsCustomer=Third party must be defined as a customer +SellsJournal=Sales Journal +PurchasesJournal=Purchases Journal +DescSellsJournal=Sales Journal +DescPurchasesJournal=Purchases Journal +CodeNotDef=Not defined +WarningDepositsNotIncluded=Down payment invoices are not included in this version with this accountancy module. +DatePaymentTermCantBeLowerThanObjectDate=Payment term date can't be lower than object date. +Pcg_version=Chart of accounts models +Pcg_type=Pcg type +Pcg_subtype=Pcg subtype +InvoiceLinesToDispatch=Invoice lines to dispatch +ByProductsAndServices=By product and service +RefExt=External ref +ToCreateAPredefinedInvoice=To create a template invoice, create a standard invoice, then, without validating it, click on button "%s". +LinkedOrder=Link to order +Mode1=Method 1 +Mode2=Method 2 +CalculationRuleDesc=To calculate total VAT, there is two methods:
Method 1 is rounding vat on each line, then summing them.
Method 2 is summing all vat on each line, then rounding result.
Final result may differs from few cents. Default mode is mode %s. +CalculationRuleDescSupplier=According to vendor, choose appropriate method to apply same calculation rule and get same result expected by your vendor. +TurnoverPerProductInCommitmentAccountingNotRelevant=The report of Turnover collected per product is not available. This report is only available for turnover invoiced. +TurnoverPerSaleTaxRateInCommitmentAccountingNotRelevant=The report of Turnover collected per sale tax rate is not available. This report is only available for turnover invoiced. +CalculationMode=Calculation mode +AccountancyJournal=Accounting code journal +ACCOUNTING_VAT_SOLD_ACCOUNT=Accounting account by default for VAT on sales (used if not defined on VAT dictionary setup) +ACCOUNTING_VAT_BUY_ACCOUNT=Accounting account by default for VAT on purchases (used if not defined on VAT dictionary setup) +ACCOUNTING_VAT_PAY_ACCOUNT=Accounting account by default for paying VAT +ACCOUNTING_ACCOUNT_CUSTOMER=Accounting account used for customer third parties +ACCOUNTING_ACCOUNT_CUSTOMER_Desc=The dedicated accounting account defined on third party card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated customer accounting account on third party is not defined. +ACCOUNTING_ACCOUNT_SUPPLIER=Accounting account used for vendor third parties +ACCOUNTING_ACCOUNT_SUPPLIER_Desc=The dedicated accounting account defined on third party card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated vendor accounting account on third party is not defined. +ConfirmCloneTax=Confirm the clone of a social/fiscal tax +ConfirmCloneVAT=Confirm the clone of a VAT declaration +ConfirmCloneSalary=Confirm the clone of a salary +CloneTaxForNextMonth=Clone it for next month +SimpleReport=Simple report +AddExtraReport=Extra reports (add foreign and national customer report) +OtherCountriesCustomersReport=Foreign customers report +BasedOnTwoFirstLettersOfVATNumberBeingDifferentFromYourCompanyCountry=Based on the two first letters of the VAT number being different from your own company's country code +SameCountryCustomersWithVAT=National customers report +BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Based on the two first letters of the VAT number being the same as your own company's country code +LinkedFichinter=Link to an intervention +ImportDataset_tax_contrib=Social/fiscal taxes +ImportDataset_tax_vat=Vat payments +ErrorBankAccountNotFound=Error: Bank account not found +FiscalPeriod=Accounting period +ListSocialContributionAssociatedProject=List of social contributions associated with the project +DeleteFromCat=Remove from accounting group +AccountingAffectation=Accounting assignment +LastDayTaxIsRelatedTo=Last day of period the tax is related to +VATDue=Sale tax claimed +ClaimedForThisPeriod=Claimed for the period +PaidDuringThisPeriod=Paid for this period +PaidDuringThisPeriodDesc=This is the sum of all payments linked to VAT declarations which have an end-of-period date in the selected date range +ByVatRate=By sale tax rate +TurnoverbyVatrate=Turnover invoiced by sale tax rate +TurnoverCollectedbyVatrate=Turnover collected by sale tax rate +PurchasebyVatrate=Purchase by sale tax rate +LabelToShow=Short label +PurchaseTurnover=Purchase turnover +PurchaseTurnoverCollected=Purchase turnover collected +RulesPurchaseTurnoverDue=- It includes the supplier's due invoices whether they are paid or not.
- It is based on the invoice date of these invoices.
+RulesPurchaseTurnoverIn=- It includes all the effective payments of invoices done to suppliers.
- It is based on the payment date of these invoices
+RulesPurchaseTurnoverTotalPurchaseJournal=It includes all debit lines from the purchase journal. +RulesPurchaseTurnoverOfExpenseAccounts=It includes (debit - credit) of lines for product accounts in group EXPENSE +ReportPurchaseTurnover=Purchase turnover invoiced +ReportPurchaseTurnoverCollected=Purchase turnover collected +IncludeVarpaysInResults = Include various payments in reports +IncludeLoansInResults = Include loans in reports +InvoiceLate30Days = Late (> 30 days) +InvoiceLate15Days = Late (15 to 30 days) +InvoiceLateMinus15Days = Late (< 15 days) +InvoiceNotLate = To be collected (< 15 days) +InvoiceNotLate15Days = To be collected (15 to 30 days) +InvoiceNotLate30Days = To be collected (> 30 days) +InvoiceToPay=To pay (< 15 days) +InvoiceToPay15Days=To pay (15 to 30 days) +InvoiceToPay30Days=To pay (> 30 days) +ConfirmPreselectAccount=Preselect accountancy code +ConfirmPreselectAccountQuestion=Are you sure you want to preselect the %s selected lines with this accountancy code ? +AmountPaidMustMatchAmountOfDownPayment=Amount paid must match amount of down payment diff --git a/htdocs/langs/ms_MY/contracts.lang b/htdocs/langs/ms_MY/contracts.lang new file mode 100644 index 00000000000..8d209623c1b --- /dev/null +++ b/htdocs/langs/ms_MY/contracts.lang @@ -0,0 +1,107 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractsArea=Contracts area +ListOfContracts=List of contracts +AllContracts=All contracts +ContractCard=Contract card +ContractStatusNotRunning=Not running +ContractStatusDraft=Draft +ContractStatusValidated=Validated +ContractStatusClosed=Closed +ServiceStatusInitial=Not running +ServiceStatusRunning=Running +ServiceStatusNotLate=Running, not expired +ServiceStatusNotLateShort=Not expired +ServiceStatusLate=Running, expired +ServiceStatusLateShort=Expired +ServiceStatusClosed=Closed +ShowContractOfService=Show contract of service +Contracts=Contracts +ContractsSubscriptions=Contracts/Subscriptions +ContractsAndLine=Contracts and line of contracts +Contract=Contract +ContractLine=Contract line +ContractLines=Contract lines +Closing=Closing +NoContracts=No contracts +MenuServices=Services +MenuInactiveServices=Services not active +MenuRunningServices=Running services +MenuExpiredServices=Expired services +MenuClosedServices=Closed services +NewContract=New contract +NewContractSubscription=New contract or subscription +AddContract=Create contract +DeleteAContract=Delete a contract +ActivateAllOnContract=Activate all services +CloseAContract=Close a contract +ConfirmDeleteAContract=Are you sure you want to delete this contract and all its services? +ConfirmValidateContract=Are you sure you want to validate this contract under name %s? +ConfirmActivateAllOnContract=This will open all services (not yet active). Are you sure you want to open all services? +ConfirmCloseContract=This will close all services (expired or not). Are you sure you want to close this contract? +ConfirmCloseService=Are you sure you want to close this service with date %s? +ValidateAContract=Validate a contract +ActivateService=Activate service +ConfirmActivateService=Are you sure you want to activate this service with date %s? +RefContract=Contract reference +DateContract=Contract date +DateServiceActivate=Service activation date +ListOfServices=List of services +ListOfInactiveServices=List of not active services +ListOfExpiredServices=List of expired active services +ListOfClosedServices=List of closed services +ListOfRunningServices=List of running services +NotActivatedServices=Inactive services (among validated contracts) +BoardNotActivatedServices=Services to activate among validated contracts +BoardNotActivatedServicesShort=Services to activate +LastContracts=Latest %s contracts +LastModifiedServices=Latest %s modified services +ContractStartDate=Start date +ContractEndDate=End date +DateStartPlanned=Planned start date +DateStartPlannedShort=Planned start date +DateEndPlanned=Planned end date +DateEndPlannedShort=Planned end date +DateStartReal=Real start date +DateStartRealShort=Real start date +DateEndReal=Real end date +DateEndRealShort=Real end date +CloseService=Close service +BoardRunningServices=Services running +BoardRunningServicesShort=Services running +BoardExpiredServices=Services expired +BoardExpiredServicesShort=Services expired +ServiceStatus=Status of service +DraftContracts=Drafts contracts +CloseRefusedBecauseOneServiceActive=Contract can't be closed as there is at least one open service on it +ActivateAllContracts=Activate all contract lines +CloseAllContracts=Close all contract lines +DeleteContractLine=Delete a contract line +ConfirmDeleteContractLine=Are you sure you want to delete this contract line? +MoveToAnotherContract=Move service into another contract. +ConfirmMoveToAnotherContract=I choosed new target contract and confirm I want to move this service into this contract. +ConfirmMoveToAnotherContractQuestion=Choose in which existing contract (of same third party), you want to move this service to? +PaymentRenewContractId=Renew contract line (number %s) +ExpiredSince=Expiration date +NoExpiredServices=No expired active services +ListOfServicesToExpireWithDuration=List of Services to expire in %s days +ListOfServicesToExpireWithDurationNeg=List of Services expired from more than %s days +ListOfServicesToExpire=List of Services to expire +NoteListOfYourExpiredServices=This list contains only services of contracts for third parties you are linked to as a sale representative. +StandardContractsTemplate=Standard contracts template +ContactNameAndSignature=For %s, name and signature: +OnlyLinesWithTypeServiceAreUsed=Only lines with type "Service" will be cloned. +ConfirmCloneContract=Are you sure you want to clone the contract %s? +LowerDateEndPlannedShort=Lower planned end date of active services +SendContractRef=Contract information __REF__ +OtherContracts=Other contracts +##### Types de contacts ##### +TypeContact_contrat_internal_SALESREPSIGN=Sales representative signing contract +TypeContact_contrat_internal_SALESREPFOLL=Sales representative following-up contract +TypeContact_contrat_external_BILLING=Billing customer contact +TypeContact_contrat_external_CUSTOMER=Follow-up customer contact +TypeContact_contrat_external_SALESREPSIGN=Signing contract customer contact +HideClosedServiceByDefault=Hide closed services by default +ShowClosedServices=Show Closed Services +HideClosedServices=Hide Closed Services +UserStartingService=User starting service +UserClosingService=User closing service diff --git a/htdocs/langs/ms_MY/cron.lang b/htdocs/langs/ms_MY/cron.lang new file mode 100644 index 00000000000..9705f8823b0 --- /dev/null +++ b/htdocs/langs/ms_MY/cron.lang @@ -0,0 +1,93 @@ +# Dolibarr language file - Source file is en_US - cron +# About page +# Right +Permission23101 = Read Scheduled job +Permission23102 = Create/update Scheduled job +Permission23103 = Delete Scheduled job +Permission23104 = Execute Scheduled job +# Admin +CronSetup=Scheduled job management setup +URLToLaunchCronJobs=URL to check and launch qualified cron jobs from a browser +OrToLaunchASpecificJob=Or to check and launch a specific job from a browser +KeyForCronAccess=Security key for URL to launch cron jobs +FileToLaunchCronJobs=Command line to check and launch qualified cron jobs +CronExplainHowToRunUnix=On Unix environment you should use the following crontab entry to run the command line each 5 minutes +CronExplainHowToRunWin=On Microsoft(tm) Windows environment you can use Scheduled Task tools to run the command line each 5 minutes +CronMethodDoesNotExists=Class %s does not contains any method %s +CronMethodNotAllowed=Method %s of class %s is in blacklist of forbidden methods +CronJobDefDesc=Cron job profiles are defined into the module descriptor file. When module is activated, they are loaded and available so you can administer the jobs from the admin tools menu %s. +CronJobProfiles=List of predefined cron job profiles +# Menu +EnabledAndDisabled=Enabled and disabled +# Page list +CronLastOutput=Latest run output +CronLastResult=Latest result code +CronCommand=Command +CronList=Scheduled jobs +CronDelete=Delete scheduled jobs +CronConfirmDelete=Are you sure you want to delete these scheduled jobs? +CronExecute=Launch scheduled job +CronConfirmExecute=Are you sure you want to execute these scheduled jobs now? +CronInfo=Scheduled job module allows to schedule jobs to execute them automatically. Jobs can also be started manually. +CronTask=Job +CronNone=None +CronDtStart=Not before +CronDtEnd=Not after +CronDtNextLaunch=Next execution +CronDtLastLaunch=Start date of latest execution +CronDtLastResult=End date of latest execution +CronFrequency=Frequency +CronClass=Class +CronMethod=Method +CronModule=Module +CronNoJobs=No jobs registered +CronPriority=Priority +CronLabel=Label +CronNbRun=Number of launches +CronMaxRun=Maximum number of launches +CronEach=Every +JobFinished=Job launched and finished +Scheduled=Scheduled +#Page card +CronAdd= Add jobs +CronEvery=Execute job each +CronObject=Instance/Object to create +CronArgs=Parameters +CronSaveSucess=Save successfully +CronNote=Comment +CronFieldMandatory=Fields %s is mandatory +CronErrEndDateStartDt=End date cannot be before start date +StatusAtInstall=Status at module installation +CronStatusActiveBtn=Schedule +CronStatusInactiveBtn=Disable +CronTaskInactive=This job is disabled (not scheduled) +CronId=Id +CronClassFile=Filename with class +CronModuleHelp=Name of Dolibarr module directory (also work with external Dolibarr module).
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for module is
product +CronClassFileHelp=The relative path and file name to load (path is relative to web server root directory).
For example to call the fetch method of Dolibarr Product object htdocs/product/class/product.class.php, the value for class file name is
product/class/product.class.php +CronObjectHelp=The object name to load.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for class file name is
Product +CronMethodHelp=The object method to launch.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for method is
fetch +CronArgsHelp=The method arguments.
For example to call the fetch method of Dolibarr Product object /htdocs/product/class/product.class.php, the value for paramters can be
0, ProductRef +CronCommandHelp=The system command line to execute. +CronCreateJob=Create new Scheduled Job +CronFrom=From +# Info +# Common +CronType=Job type +CronType_method=Call method of a PHP Class +CronType_command=Shell command +CronCannotLoadClass=Cannot load class file %s (to use class %s) +CronCannotLoadObject=Class file %s was loaded, but object %s was not found into it +UseMenuModuleToolsToAddCronJobs=Go into menu "Home - Admin tools - Scheduled jobs" to see and edit scheduled jobs. +JobDisabled=Job disabled +MakeLocalDatabaseDumpShort=Local database backup +MakeLocalDatabaseDump=Create a local database dump. Parameters are: compression ('gz' or 'bz' or 'none'), backup type ('mysql', 'pgsql', 'auto'), 1, 'auto' or filename to build, number of backup files to keep +MakeSendLocalDatabaseDumpShort=Send local database backup +MakeSendLocalDatabaseDump=Send local database backup by email. Parameters are: to, from, subject, message, filename (Name of file sent), filter ('sql' for backup of database only) +WarningCronDelayed=Attention, for performance purpose, whatever is next date of execution of enabled jobs, your jobs may be delayed to a maximum of %s hours, before being run. +DATAPOLICYJob=Data cleaner and anonymizer +JobXMustBeEnabled=Job %s must be enabled +# Cron Boxes +LastExecutedScheduledJob=Last executed scheduled job +NextScheduledJobExecute=Next scheduled job to execute +NumberScheduledJobError=Number of scheduled jobs in error diff --git a/htdocs/langs/ms_MY/deliveries.lang b/htdocs/langs/ms_MY/deliveries.lang new file mode 100644 index 00000000000..cd8a36e6c70 --- /dev/null +++ b/htdocs/langs/ms_MY/deliveries.lang @@ -0,0 +1,33 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Delivery +DeliveryRef=Ref Delivery +DeliveryCard=Receipt card +DeliveryOrder=Delivery receipt +DeliveryDate=Delivery date +CreateDeliveryOrder=Generate delivery receipt +DeliveryStateSaved=Delivery state saved +SetDeliveryDate=Set shipping date +ValidateDeliveryReceipt=Validate delivery receipt +ValidateDeliveryReceiptConfirm=Are you sure you want to validate this delivery receipt? +DeleteDeliveryReceipt=Delete delivery receipt +DeleteDeliveryReceiptConfirm=Are you sure you want to delete delivery receipt %s? +DeliveryMethod=Delivery method +TrackingNumber=Tracking number +DeliveryNotValidated=Delivery not validated +StatusDeliveryCanceled=Canceled +StatusDeliveryDraft=Draft +StatusDeliveryValidated=Received +# merou PDF model +NameAndSignature=Name and Signature: +ToAndDate=To___________________________________ on ____/_____/__________ +GoodStatusDeclaration=Have received the goods above in good condition, +Deliverer=Deliverer: +Sender=Sender +Recipient=Recipient +ErrorStockIsNotEnough=There's not enough stock +Shippable=Shippable +NonShippable=Not Shippable +ShowShippableStatus=Show shippable status +ShowReceiving=Show delivery receipt +NonExistentOrder=Nonexistent order +StockQuantitiesAlreadyAllocatedOnPreviousLines = Stock quantities already allocated on previous lines diff --git a/htdocs/langs/ms_MY/dict.lang b/htdocs/langs/ms_MY/dict.lang new file mode 100644 index 00000000000..0524cf1ca18 --- /dev/null +++ b/htdocs/langs/ms_MY/dict.lang @@ -0,0 +1,359 @@ +# Dolibarr language file - Source file is en_US - dict +CountryFR=France +CountryBE=Belgium +CountryIT=Italy +CountryES=Spain +CountryDE=Germany +CountryCH=Switzerland +# Warning, country code GB is for United Kingdom. UK Does not exists as country code in ISO standard. +CountryGB=United Kingdom +CountryUK=United Kingdom +CountryIE=Ireland +CountryCN=China +CountryTN=Tunisia +CountryUS=United States +CountryMA=Morocco +CountryDZ=Algeria +CountryCA=Canada +CountryTG=Togo +CountryGA=Gabon +CountryNL=Netherlands +CountryHU=Hungary +CountryRU=Russia +CountrySE=Sweden +CountryCI=Ivory Coast +CountrySN=Senegal +CountryAR=Argentina +CountryCM=Cameroon +CountryPT=Portugal +CountrySA=Saudi Arabia +CountryMC=Monaco +CountryAU=Australia +CountrySG=Singapore +CountryAF=Afghanistan +CountryAX=Åland Islands +CountryAL=Albania +CountryAS=American Samoa +CountryAD=Andorra +CountryAO=Angola +CountryAI=Anguilla +CountryAQ=Antarctica +CountryAG=Antigua and Barbuda +CountryAM=Armenia +CountryAW=Aruba +CountryAT=Austria +CountryAZ=Azerbaijan +CountryBS=Bahamas +CountryBH=Bahrain +CountryBD=Bangladesh +CountryBB=Barbados +CountryBY=Belarus +CountryBZ=Belize +CountryBJ=Benin +CountryBM=Bermuda +CountryBT=Bhutan +CountryBO=Bolivia +CountryBA=Bosnia and Herzegovina +CountryBW=Botswana +CountryBV=Bouvet Island +CountryBR=Brazil +CountryIO=British Indian Ocean Territory +CountryBN=Brunei Darussalam +CountryBG=Bulgaria +CountryBF=Burkina Faso +CountryBI=Burundi +CountryKH=Cambodia +CountryCV=Cape Verde +CountryKY=Cayman Islands +CountryCF=Central African Republic +CountryTD=Chad +CountryCL=Chile +CountryCX=Christmas Island +CountryCC=Cocos (Keeling) Islands +CountryCO=Colombia +CountryKM=Comoros +CountryCG=Congo +CountryCD=Congo, The Democratic Republic of the +CountryCK=Cook Islands +CountryCR=Costa Rica +CountryHR=Croatia +CountryCU=Cuba +CountryCY=Cyprus +CountryCZ=Czech Republic +CountryDK=Denmark +CountryDJ=Djibouti +CountryDM=Dominica +CountryDO=Dominican Republic +CountryEC=Ecuador +CountryEG=Egypt +CountrySV=El Salvador +CountryGQ=Equatorial Guinea +CountryER=Eritrea +CountryEE=Estonia +CountryET=Ethiopia +CountryFK=Falkland Islands +CountryFO=Faroe Islands +CountryFJ=Fiji Islands +CountryFI=Finland +CountryGF=French Guiana +CountryPF=French Polynesia +CountryTF=French Southern Territories +CountryGM=Gambia +CountryGE=Georgia +CountryGH=Ghana +CountryGI=Gibraltar +CountryGR=Greece +CountryGL=Greenland +CountryGD=Grenada +CountryGP=Guadeloupe +CountryGU=Guam +CountryGT=Guatemala +CountryGN=Guinea +CountryGW=Guinea-Bissau +CountryGY=Guyana +CountryHT=Haïti +CountryHM=Heard Island and McDonald +CountryVA=Holy See (Vatican City State) +CountryHN=Honduras +CountryHK=Hong Kong +CountryIS=Iceland +CountryIN=India +CountryID=Indonesia +CountryIR=Iran +CountryIQ=Iraq +CountryIL=Israel +CountryJM=Jamaica +CountryJP=Japan +CountryJO=Jordan +CountryKZ=Kazakhstan +CountryKE=Kenya +CountryKI=Kiribati +CountryKP=North Korea +CountryKR=South Korea +CountryKW=Kuwait +CountryKG=Kyrgyzstan +CountryLA=Lao +CountryLV=Latvia +CountryLB=Lebanon +CountryLS=Lesotho +CountryLR=Liberia +CountryLY=Libyan +CountryLI=Liechtenstein +CountryLT=Lithuania +CountryLU=Luxembourg +CountryMO=Macao +CountryMK=Macedonia, the former Yugoslav of +CountryMG=Madagascar +CountryMW=Malawi +CountryMY=Malaysia +CountryMV=Maldives +CountryML=Mali +CountryMT=Malta +CountryMH=Marshall Islands +CountryMQ=Martinique +CountryMR=Mauritania +CountryMU=Mauritius +CountryYT=Mayotte +CountryMX=Mexico +CountryFM=Micronesia +CountryMD=Moldova +CountryMN=Mongolia +CountryMS=Monserrat +CountryMZ=Mozambique +CountryMM=Myanmar (Burma) +CountryNA=Namibia +CountryNR=Nauru +CountryNP=Nepal +CountryAN=Netherlands Antilles +CountryNC=New Caledonia +CountryNZ=New Zealand +CountryNI=Nicaragua +CountryNE=Niger +CountryNG=Nigeria +CountryNU=Niue +CountryNF=Norfolk Island +CountryMP=Northern Mariana Islands +CountryNO=Norway +CountryOM=Oman +CountryPK=Pakistan +CountryPW=Palau +CountryPS=Palestinian Territory, Occupied +CountryPA=Panama +CountryPG=Papua New Guinea +CountryPY=Paraguay +CountryPE=Peru +CountryPH=Philippines +CountryPN=Pitcairn Islands +CountryPL=Poland +CountryPR=Puerto Rico +CountryQA=Qatar +CountryRE=Reunion +CountryRO=Romania +CountryRW=Rwanda +CountrySH=Saint Helena +CountryKN=Saint Kitts and Nevis +CountryLC=Saint Lucia +CountryPM=Saint Pierre and Miquelon +CountryVC=Saint Vincent and Grenadines +CountryWS=Samoa +CountrySM=San Marino +CountryST=Sao Tome and Principe +CountryRS=Serbia +CountrySC=Seychelles +CountrySL=Sierra Leone +CountrySK=Slovakia +CountrySI=Slovenia +CountrySB=Solomon Islands +CountrySO=Somalia +CountryZA=South Africa +CountryGS=South Georgia and the South Sandwich Islands +CountryLK=Sri Lanka +CountrySD=Sudan +CountrySR=Suriname +CountrySJ=Svalbard and Jan Mayen +CountrySZ=Swaziland +CountrySY=Syrian +CountryTW=Taiwan +CountryTJ=Tajikistan +CountryTZ=Tanzania +CountryTH=Thailand +CountryTL=Timor-Leste +CountryTK=Tokelau +CountryTO=Tonga +CountryTT=Trinidad and Tobago +CountryTR=Turkey +CountryTM=Turkmenistan +CountryTC=Turks and Caicos Islands +CountryTV=Tuvalu +CountryUG=Uganda +CountryUA=Ukraine +CountryAE=United Arab Emirates +CountryUM=United States Minor Outlying Islands +CountryUY=Uruguay +CountryUZ=Uzbekistan +CountryVU=Vanuatu +CountryVE=Venezuela +CountryVN=Viet Nam +CountryVG=Virgin Islands, British +CountryVI=Virgin Islands, U.S. +CountryWF=Wallis and Futuna +CountryEH=Western Sahara +CountryYE=Yemen +CountryZM=Zambia +CountryZW=Zimbabwe +CountryGG=Guernsey +CountryIM=Isle of Man +CountryJE=Jersey +CountryME=Montenegro +CountryBL=Saint Barthelemy +CountryMF=Saint Martin + +##### Civilities ##### +CivilityMME=Mrs. +CivilityMR=Mr. +CivilityMLE=Ms. +CivilityMTRE=Master +CivilityDR=Doctor +##### Currencies ##### +Currencyeuros=Euros +CurrencyAUD=AU Dollars +CurrencySingAUD=AU Dollar +CurrencyCAD=CAN Dollars +CurrencySingCAD=CAN Dollar +CurrencyCHF=Swiss Francs +CurrencySingCHF=Swiss Franc +CurrencyEUR=Euros +CurrencySingEUR=Euro +CurrencyFRF=French Francs +CurrencySingFRF=French Franc +CurrencyGBP=GB Pounds +CurrencySingGBP=GB Pound +CurrencyINR=Indian rupees +CurrencySingINR=Indian rupee +CurrencyMAD=Dirham +CurrencySingMAD=Dirham +CurrencyMGA=Ariary +CurrencySingMGA=Ariary +CurrencyMUR=Mauritius rupees +CurrencySingMUR=Mauritius rupee +CurrencyNOK=Norwegian krones +CurrencySingNOK=Norwegian kronas +CurrencyTND=Tunisian dinars +CurrencySingTND=Tunisian dinar +CurrencyUSD=US Dollars +CurrencySingUSD=US Dollar +CurrencyUAH=Hryvnia +CurrencySingUAH=Hryvnia +CurrencyXAF=CFA Francs BEAC +CurrencySingXAF=CFA Franc BEAC +CurrencyXOF=CFA Francs BCEAO +CurrencySingXOF=CFA Franc BCEAO +CurrencyXPF=CFP Francs +CurrencySingXPF=CFP Franc +CurrencyCentEUR=cents +CurrencyCentSingEUR=cent +CurrencyCentINR=paisa +CurrencyCentSingINR=paise +CurrencyThousandthSingTND=thousandth +#### Input reasons ##### +DemandReasonTypeSRC_INTE=Internet +DemandReasonTypeSRC_CAMP_MAIL=Mailing campaign +DemandReasonTypeSRC_CAMP_EMAIL=EMailing campaign +DemandReasonTypeSRC_CAMP_PHO=Phone campaign +DemandReasonTypeSRC_CAMP_FAX=Fax campaign +DemandReasonTypeSRC_COMM=Commercial contact +DemandReasonTypeSRC_SHOP=Shop contact +DemandReasonTypeSRC_WOM=Word of mouth +DemandReasonTypeSRC_PARTNER=Partner +DemandReasonTypeSRC_EMPLOYEE=Employee +DemandReasonTypeSRC_SPONSORING=Sponsorship +DemandReasonTypeSRC_SRC_CUSTOMER=Incoming contact of a customer +#### Paper formats #### +PaperFormatEU4A0=Format 4A0 +PaperFormatEU2A0=Format 2A0 +PaperFormatEUA0=Format A0 +PaperFormatEUA1=Format A1 +PaperFormatEUA2=Format A2 +PaperFormatEUA3=Format A3 +PaperFormatEUA4=Format A4 +PaperFormatEUA5=Format A5 +PaperFormatEUA6=Format A6 +PaperFormatUSLETTER=Format Letter US +PaperFormatUSLEGAL=Format Legal US +PaperFormatUSEXECUTIVE=Format Executive US +PaperFormatUSLEDGER=Format Ledger/Tabloid +PaperFormatCAP1=Format P1 Canada +PaperFormatCAP2=Format P2 Canada +PaperFormatCAP3=Format P3 Canada +PaperFormatCAP4=Format P4 Canada +PaperFormatCAP5=Format P5 Canada +PaperFormatCAP6=Format P6 Canada +#### Expense report categories #### +ExpAutoCat=Car +ExpCycloCat=Moped +ExpMotoCat=Motorbike +ExpAuto3CV=3 CV +ExpAuto4CV=4 CV +ExpAuto5CV=5 CV +ExpAuto6CV=6 CV +ExpAuto7CV=7 CV +ExpAuto8CV=8 CV +ExpAuto9CV=9 CV +ExpAuto10CV=10 CV +ExpAuto11CV=11 CV +ExpAuto12CV=12 CV +ExpAuto3PCV=3 CV and more +ExpAuto4PCV=4 CV and more +ExpAuto5PCV=5 CV and more +ExpAuto6PCV=6 CV and more +ExpAuto7PCV=7 CV and more +ExpAuto8PCV=8 CV and more +ExpAuto9PCV=9 CV and more +ExpAuto10PCV=10 CV and more +ExpAuto11PCV=11 CV and more +ExpAuto12PCV=12 CV and more +ExpAuto13PCV=13 CV and more +ExpCyclo=Capacity lower to 50cm3 +ExpMoto12CV=Motorbike 1 or 2 CV +ExpMoto345CV=Motorbike 3, 4 or 5 CV +ExpMoto5PCV=Motorbike 5 CV and more diff --git a/htdocs/langs/ms_MY/donations.lang b/htdocs/langs/ms_MY/donations.lang new file mode 100644 index 00000000000..d512abb2eea --- /dev/null +++ b/htdocs/langs/ms_MY/donations.lang @@ -0,0 +1,35 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Donation +Donations=Donations +DonationRef=Donation ref. +Donor=Donor +AddDonation=Create a donation +NewDonation=New donation +DeleteADonation=Delete a donation +ConfirmDeleteADonation=Are you sure you want to delete this donation? +PublicDonation=Public donation +DonationsArea=Donations area +DonationStatusPromiseNotValidated=Draft promise +DonationStatusPromiseValidated=Validated promise +DonationStatusPaid=Donation received +DonationStatusPromiseNotValidatedShort=Draft +DonationStatusPromiseValidatedShort=Validated +DonationStatusPaidShort=Received +DonationTitle=Donation receipt +DonationDate=Donation date +DonationDatePayment=Payment date +ValidPromess=Validate promise +DonationReceipt=Donation receipt +DonationsModels=Documents models for donation receipts +LastModifiedDonations=Latest %s modified donations +DonationRecipient=Donation recipient +IConfirmDonationReception=The recipient declare reception, as a donation, of the following amount +MinimumAmount=Minimum amount is %s +FreeTextOnDonations=Free text to show in footer +FrenchOptions=Options for France +DONATION_ART200=Show article 200 from CGI if you are concerned +DONATION_ART238=Show article 238 from CGI if you are concerned +DONATION_ART885=Show article 885 from CGI if you are concerned +DonationPayment=Donation payment +DonationValidated=Donation %s validated +DonationUseThirdparties=Use an existing thirdparty as coordinates of donators diff --git a/htdocs/langs/ms_MY/ecm.lang b/htdocs/langs/ms_MY/ecm.lang new file mode 100644 index 00000000000..494a6c55164 --- /dev/null +++ b/htdocs/langs/ms_MY/ecm.lang @@ -0,0 +1,49 @@ +# Dolibarr language file - Source file is en_US - ecm +ECMNbOfDocs=No. of documents in directory +ECMSection=Directory +ECMSectionManual=Manual directory +ECMSectionAuto=Automatic directory +ECMSectionsManual=Manual tree +ECMSectionsAuto=Automatic tree +ECMSections=Directories +ECMRoot=ECM Root +ECMNewSection=New directory +ECMAddSection=Add directory +ECMCreationDate=Creation date +ECMNbOfFilesInDir=Number of files in directory +ECMNbOfSubDir=Number of sub-directories +ECMNbOfFilesInSubDir=Number of files in sub-directories +ECMCreationUser=Creator +ECMArea=DMS/ECM area +ECMAreaDesc=The DMS/ECM (Document Management System / Electronic Content Management) area allows you to save, share and search quickly all kind of documents in Dolibarr. +ECMAreaDesc2=* Automatic directories are filled automatically when adding documents from card of an element.
* Manual directories can be used to save documents not linked to a particular element. +ECMSectionWasRemoved=Directory %s has been deleted. +ECMSectionWasCreated=Directory %s has been created. +ECMSearchByKeywords=Search by keywords +ECMSearchByEntity=Search by object +ECMSectionOfDocuments=Directories of documents +ECMTypeAuto=Automatic +ECMDocsBy=Documents linked to %s +ECMNoDirectoryYet=No directory created +ShowECMSection=Show directory +DeleteSection=Remove directory +ConfirmDeleteSection=Can you confirm you want to delete the directory %s? +ECMDirectoryForFiles=Relative directory for files +CannotRemoveDirectoryContainsFilesOrDirs=Removal not possible because it contains some files or sub-directories +CannotRemoveDirectoryContainsFiles=Removal not possible because it contains some files +ECMFileManager=File manager +ECMSelectASection=Select a directory in the tree... +DirNotSynchronizedSyncFirst=This directory seems to be created or modified outside ECM module. You must click on "Resync" button first to synchronize disk and database to get content of this directory. +ReSyncListOfDir=Resync list of directories +HashOfFileContent=Hash of file content +NoDirectoriesFound=No directories found +FileNotYetIndexedInDatabase=File not yet indexed into database (try to re-upload it) +ExtraFieldsEcmFiles=Extrafields Ecm Files +ExtraFieldsEcmDirectories=Extrafields Ecm Directories +ECMSetup=ECM Setup +GenerateImgWebp=Duplicate all images with another version with .webp format +ConfirmGenerateImgWebp=If you confirm, you will generate an image in .webp format for all images currently into this folder (subfolders are not included)... +ConfirmImgWebpCreation=Confirm all images duplication +SucessConvertImgWebp=Images successfully duplicated +ECMDirName=Dir name +ECMParentDirectory=Parent directory diff --git a/htdocs/langs/ms_MY/errors.lang b/htdocs/langs/ms_MY/errors.lang new file mode 100644 index 00000000000..ceef384ddb3 --- /dev/null +++ b/htdocs/langs/ms_MY/errors.lang @@ -0,0 +1,347 @@ +# Dolibarr language file - Source file is en_US - errors + +# No errors +NoErrorCommitIsDone=No error, we commit +# Errors +ErrorButCommitIsDone=Errors found but we validate despite this +ErrorBadEMail=Email %s is incorrect +ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) +ErrorBadUrl=Url %s is incorrect +ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. +ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. +ErrorLoginAlreadyExists=Login %s already exists. +ErrorGroupAlreadyExists=Group %s already exists. +ErrorEmailAlreadyExists=Email %s already exists. +ErrorRecordNotFound=Record not found. +ErrorFailToCopyFile=Failed to copy file '%s' into '%s'. +ErrorFailToCopyDir=Failed to copy directory '%s' into '%s'. +ErrorFailToRenameFile=Failed to rename file '%s' into '%s'. +ErrorFailToDeleteFile=Failed to remove file '%s'. +ErrorFailToCreateFile=Failed to create file '%s'. +ErrorFailToRenameDir=Failed to rename directory '%s' into '%s'. +ErrorFailToCreateDir=Failed to create directory '%s'. +ErrorFailToDeleteDir=Failed to delete directory '%s'. +ErrorFailToMakeReplacementInto=Failed to make replacement into file '%s'. +ErrorFailToGenerateFile=Failed to generate file '%s'. +ErrorThisContactIsAlreadyDefinedAsThisType=This contact is already defined as contact for this type. +ErrorCashAccountAcceptsOnlyCashMoney=This bank account is a cash account, so it accepts payments of type cash only. +ErrorFromToAccountsMustDiffers=Source and targets bank accounts must be different. +ErrorBadThirdPartyName=Bad value for third-party name +ForbiddenBySetupRules=Forbidden by setup rules +ErrorProdIdIsMandatory=The %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory +ErrorBadCustomerCodeSyntax=Bad syntax for customer code +ErrorBadBarCodeSyntax=Bad syntax for barcode. May be you set a bad barcode type or you defined a barcode mask for numbering that does not match value scanned. +ErrorCustomerCodeRequired=Customer code required +ErrorBarCodeRequired=Barcode required +ErrorCustomerCodeAlreadyUsed=Customer code already used +ErrorBarCodeAlreadyUsed=Barcode already used +ErrorPrefixRequired=Prefix required +ErrorBadSupplierCodeSyntax=Bad syntax for vendor code +ErrorSupplierCodeRequired=Vendor code required +ErrorSupplierCodeAlreadyUsed=Vendor code already used +ErrorBadParameters=Bad parameters +ErrorWrongParameters=Wrong or missing parameters +ErrorBadValueForParameter=Wrong value '%s' for parameter '%s' +ErrorBadImageFormat=Image file has not a supported format (Your PHP does not support functions to convert images of this format) +ErrorBadDateFormat=Value '%s' has wrong date format +ErrorWrongDate=Date is not correct! +ErrorFailedToWriteInDir=Failed to write in directory %s +ErrorFoundBadEmailInFile=Found incorrect email syntax for %s lines in file (example line %s with email=%s) +ErrorUserCannotBeDelete=User cannot be deleted. Maybe it is associated to Dolibarr entities. +ErrorFieldsRequired=Some required fields have been left blank. +ErrorSubjectIsRequired=The email subject is required +ErrorFailedToCreateDir=Failed to create a directory. Check that Web server user has permissions to write into Dolibarr documents directory. If parameter safe_mode is enabled on this PHP, check that Dolibarr php files owns to web server user (or group). +ErrorNoMailDefinedForThisUser=No mail defined for this user +ErrorSetupOfEmailsNotComplete=Setup of emails is not complete +ErrorFeatureNeedJavascript=This feature need javascript to be activated to work. Change this in setup - display. +ErrorTopMenuMustHaveAParentWithId0=A menu of type 'Top' can't have a parent menu. Put 0 in parent menu or choose a menu of type 'Left'. +ErrorLeftMenuMustHaveAParentId=A menu of type 'Left' must have a parent id. +ErrorFileNotFound=File %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorDirNotFound=Directory %s not found (Bad path, wrong permissions or access denied by PHP openbasedir or safe_mode parameter) +ErrorFunctionNotAvailableInPHP=Function %s is required for this feature but is not available in this version/setup of PHP. +ErrorDirAlreadyExists=A directory with this name already exists. +ErrorFileAlreadyExists=A file with this name already exists. +ErrorDestinationAlreadyExists=Another file with the name %s already exists. +ErrorPartialFile=File not received completely by server. +ErrorNoTmpDir=Temporary directy %s does not exists. +ErrorUploadBlockedByAddon=Upload blocked by a PHP/Apache plugin. +ErrorFileSizeTooLarge=File size is too large or file not provided. +ErrorFieldTooLong=Field %s is too long. +ErrorSizeTooLongForIntType=Size too long for int type (%s digits maximum) +ErrorSizeTooLongForVarcharType=Size too long for string type (%s chars maximum) +ErrorNoValueForSelectType=Please fill value for select list +ErrorNoValueForCheckBoxType=Please fill value for checkbox list +ErrorNoValueForRadioType=Please fill value for radio list +ErrorBadFormatValueList=The list value cannot have more than one comma: %s, but need at least one: key,value +ErrorFieldCanNotContainSpecialCharacters=The field %s must not contains special characters. +ErrorFieldCanNotContainSpecialNorUpperCharacters=The field %s must not contain special characters, nor upper case characters and cannot contain only numbers. +ErrorFieldMustHaveXChar=The field %s must have at least %s characters. +ErrorNoAccountancyModuleLoaded=No accountancy module activated +ErrorExportDuplicateProfil=This profile name already exists for this export set. +ErrorLDAPSetupNotComplete=Dolibarr-LDAP matching is not complete. +ErrorLDAPMakeManualTest=A .ldif file has been generated in directory %s. Try to load it manually from command line to have more information on errors. +ErrorCantSaveADoneUserWithZeroPercentage=Can't save an action with "status not started" if field "done by" is also filled. +ErrorRefAlreadyExists=Reference %s already exists. +ErrorPleaseTypeBankTransactionReportName=Please enter the bank statement name where the entry has to be reported (Format YYYYMM or YYYYMMDD) +ErrorRecordHasChildren=Failed to delete record since it has some child records. +ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s +ErrorRecordIsUsedCantDelete=Can't delete record. It is already used or included into another object. +ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display. +ErrorPasswordsMustMatch=Both typed passwords must match each other +ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. +ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed +ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s +ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref +ErrorsOnXLines=%s errors found +ErrorFileIsInfectedWithAVirus=The antivirus program was not able to validate the file (file might be infected by a virus) +ErrorSpecialCharNotAllowedForField=Special characters are not allowed for field "%s" +ErrorNumRefModel=A reference exists into database (%s) and is not compatible with this numbering rule. Remove record or renamed reference to activate this module. +ErrorQtyTooLowForThisSupplier=Quantity too low for this vendor or no price defined on this product for this vendor +ErrorOrdersNotCreatedQtyTooLow=Some orders haven't been created because of too-low quantities +ErrorModuleSetupNotComplete=Setup of module %s looks to be uncomplete. Go on Home - Setup - Modules to complete. +ErrorBadMask=Error on mask +ErrorBadMaskFailedToLocatePosOfSequence=Error, mask without sequence number +ErrorBadMaskBadRazMonth=Error, bad reset value +ErrorMaxNumberReachForThisMask=Maximum number reached for this mask +ErrorCounterMustHaveMoreThan3Digits=Counter must have more than 3 digits +ErrorSelectAtLeastOne=Error, select at least one entry. +ErrorDeleteNotPossibleLineIsConsolidated=Delete not possible because record is linked to a bank transaction that is conciliated +ErrorProdIdAlreadyExist=%s is assigned to another third +ErrorFailedToSendPassword=Failed to send password +ErrorFailedToLoadRSSFile=Fails to get RSS feed. Try to add constant MAIN_SIMPLEXMLLOAD_DEBUG if error messages does not provide enough information. +ErrorForbidden=Access denied.
You try to access to a page, area or feature of a disabled module or without being in an authenticated session or that is not allowed to your user. +ErrorForbidden2=Permission for this login can be defined by your Dolibarr administrator from menu %s->%s. +ErrorForbidden3=It seems that Dolibarr is not used through an authenticated session. Take a look at Dolibarr setup documentation to know how to manage authentications (htaccess, mod_auth or other...). +ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorNoImagickReadimage=Class Imagick is not found in this PHP. No preview can be available. Administrators can disable this tab from menu Setup - Display. +ErrorRecordAlreadyExists=Record already exists +ErrorLabelAlreadyExists=This label already exists +ErrorCantReadFile=Failed to read file '%s' +ErrorCantReadDir=Failed to read directory '%s' +ErrorBadLoginPassword=Bad value for login or password +ErrorLoginDisabled=Your account has been disabled +ErrorFailedToRunExternalCommand=Failed to run external command. Check it is available and runnable by your PHP server user. Check also the command is not protected on shell level by a security layer like apparmor. +ErrorFailedToChangePassword=Failed to change password +ErrorLoginDoesNotExists=User with login %s could not be found. +ErrorLoginHasNoEmail=This user has no email address. Process aborted. +ErrorBadValueForCode=Bad value for security code. Try again with new value... +ErrorBothFieldCantBeNegative=Fields %s and %s can't be both negative +ErrorFieldCantBeNegativeOnInvoice=Field %s cannot be negative on this type of invoice. If you need to add a discount line, just create the discount first (from field '%s' in thirdparty card) and apply it to the invoice. +ErrorLinesCantBeNegativeForOneVATRate=Total of lines (net of tax) can't be negative for a given not null VAT rate (Found a negative total for VAT rate %s%%). +ErrorLinesCantBeNegativeOnDeposits=Lines can't be negative in a deposit. You will face problems when you will need to consume the deposit in final invoice if you do so. +ErrorQtyForCustomerInvoiceCantBeNegative=Quantity for line into customer invoices can't be negative +ErrorWebServerUserHasNotPermission=User account %s used to execute web server has no permission for that +ErrorNoActivatedBarcode=No barcode type activated +ErrUnzipFails=Failed to unzip %s with ZipArchive +ErrNoZipEngine=No engine to zip/unzip %s file in this PHP +ErrorFileMustBeADolibarrPackage=The file %s must be a Dolibarr zip package +ErrorModuleFileRequired=You must select a Dolibarr module package file +ErrorPhpCurlNotInstalled=The PHP CURL is not installed, this is essential to talk with Paypal +ErrorFailedToAddToMailmanList=Failed to add record %s to Mailman list %s or SPIP base +ErrorFailedToRemoveToMailmanList=Failed to remove record %s to Mailman list %s or SPIP base +ErrorNewValueCantMatchOldValue=New value can't be equal to old one +ErrorFailedToValidatePasswordReset=Failed to reinit password. May be the reinit was already done (this link can be used only one time). If not, try to restart the reinit process. +ErrorToConnectToMysqlCheckInstance=Connect to database fails. Check database server is running (for example, with mysql/mariadb, you can launch it from command line with 'sudo service mysql start'). +ErrorFailedToAddContact=Failed to add contact +ErrorDateMustBeBeforeToday=The date must be lower than today +ErrorDateMustBeInFuture=The date must be greater than today +ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setup of module Invoice was not completed to define information to show for this payment mode. +ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. +ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s +ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorBadFormat=Bad format! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Error, this member is not yet linked to any third party. Link member to an existing third party or create a new third party before creating subscription with invoice. +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. +ErrorCantDeletePaymentReconciliated=Can't delete a payment that had generated a bank entry that was reconciled +ErrorCantDeletePaymentSharedWithPayedInvoice=Can't delete a payment shared by at least one invoice with status Paid +ErrorPriceExpression1=Cannot assign to constant '%s' +ErrorPriceExpression2=Cannot redefine built-in function '%s' +ErrorPriceExpression3=Undefined variable '%s' in function definition +ErrorPriceExpression4=Illegal character '%s' +ErrorPriceExpression5=Unexpected '%s' +ErrorPriceExpression6=Wrong number of arguments (%s given, %s expected) +ErrorPriceExpression8=Unexpected operator '%s' +ErrorPriceExpression9=An unexpected error occured +ErrorPriceExpression10=Operator '%s' lacks operand +ErrorPriceExpression11=Expecting '%s' +ErrorPriceExpression14=Division by zero +ErrorPriceExpression17=Undefined variable '%s' +ErrorPriceExpression19=Expression not found +ErrorPriceExpression20=Empty expression +ErrorPriceExpression21=Empty result '%s' +ErrorPriceExpression22=Negative result '%s' +ErrorPriceExpression23=Unknown or non set variable '%s' in %s +ErrorPriceExpression24=Variable '%s' exists but has no value +ErrorPriceExpressionInternal=Internal error '%s' +ErrorPriceExpressionUnknown=Unknown error '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Source and target warehouses must differs +ErrorTryToMakeMoveOnProductRequiringBatchData=Error, trying to make a stock movement without lot/serial information, on product '%s' requiring lot/serial information +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=All recorded receptions must first be verified (approved or denied) before being allowed to do this action +ErrorCantSetReceptionToTotalDoneWithReceptionDenied=All recorded receptions must first be verified (approved) before being allowed to do this action +ErrorGlobalVariableUpdater0=HTTP request failed with error '%s' +ErrorGlobalVariableUpdater1=Invalid JSON format '%s' +ErrorGlobalVariableUpdater2=Missing parameter '%s' +ErrorGlobalVariableUpdater3=The requested data was not found in result +ErrorGlobalVariableUpdater4=SOAP client failed with error '%s' +ErrorGlobalVariableUpdater5=No global variable selected +ErrorFieldMustBeANumeric=Field %s must be a numeric value +ErrorMandatoryParametersNotProvided=Mandatory parameter(s) not provided +ErrorOppStatusRequiredIfAmount=You set an estimated amount for this lead. So you must also enter it's status. +ErrorFailedToLoadModuleDescriptorForXXX=Failed to load module descriptor class for %s +ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Bad Definition Of Menu Array In Module Descriptor (bad value for key fk_menu) +ErrorSavingChanges=An error has occurred when saving the changes +ErrorWarehouseRequiredIntoShipmentLine=Warehouse is required on the line to ship +ErrorFileMustHaveFormat=File must have format %s +ErrorFilenameCantStartWithDot=Filename can't start with a '.' +ErrorSupplierCountryIsNotDefined=Country for this vendor is not defined. Correct this first. +ErrorsThirdpartyMerge=Failed to merge the two records. Request canceled. +ErrorStockIsNotEnoughToAddProductOnOrder=Stock is not enough for product %s to add it into a new order. +ErrorStockIsNotEnoughToAddProductOnInvoice=Stock is not enough for product %s to add it into a new invoice. +ErrorStockIsNotEnoughToAddProductOnShipment=Stock is not enough for product %s to add it into a new shipment. +ErrorStockIsNotEnoughToAddProductOnProposal=Stock is not enough for product %s to add it into a new proposal. +ErrorFailedToLoadLoginFileForMode=Failed to get the login key for mode '%s'. +ErrorModuleNotFound=File of module was not found. +ErrorFieldAccountNotDefinedForBankLine=Value for Accounting account not defined for source line id %s (%s) +ErrorFieldAccountNotDefinedForInvoiceLine=Value for Accounting account not defined for invoice id %s (%s) +ErrorFieldAccountNotDefinedForLine=Value for Accounting account not defined for the line (%s) +ErrorBankStatementNameMustFollowRegex=Error, bank statement name must follow the following syntax rule %s +ErrorPhpMailDelivery=Check that you don't use a too high number of recipients and that your email content is not similar to a Spam. Ask also your administrator to check firewall and server logs files for a more complete information. +ErrorUserNotAssignedToTask=User must be assigned to task to be able to enter time consumed. +ErrorTaskAlreadyAssigned=Task already assigned to user +ErrorModuleFileSeemsToHaveAWrongFormat=The module package seems to have a wrong format. +ErrorModuleFileSeemsToHaveAWrongFormat2=At least one mandatory directory must exists into zip of module: %s or %s +ErrorFilenameDosNotMatchDolibarrPackageRules=The name of the module package (%s) does not match expected name syntax: %s +ErrorDuplicateTrigger=Error, duplicate trigger name %s. Already loaded from %s. +ErrorNoWarehouseDefined=Error, no warehouses defined. +ErrorBadLinkSourceSetButBadValueForRef=The link you use is not valid. A 'source' for payment is defined, but value for 'ref' is not valid. +ErrorTooManyErrorsProcessStopped=Too many errors. Process was stopped. +ErrorMassValidationNotAllowedWhenStockIncreaseOnAction=Mass validation is not possible when option to increase/decrease stock is set on this action (you must validate one by one so you can define the warehouse to increase/decrease) +ErrorObjectMustHaveStatusDraftToBeValidated=Object %s must have status 'Draft' to be validated. +ErrorObjectMustHaveLinesToBeValidated=Object %s must have lines to be validated. +ErrorOnlyInvoiceValidatedCanBeSentInMassAction=Only validated invoices can be sent using the "Send by email" mass action. +ErrorChooseBetweenFreeEntryOrPredefinedProduct=You must choose if article is a predefined product or not +ErrorDiscountLargerThanRemainToPaySplitItBefore=The discount you try to apply is larger than remain to pay. Split the discount in 2 smaller discounts before. +ErrorFileNotFoundWithSharedLink=File was not found. May be the share key was modified or file was removed recently. +ErrorProductBarCodeAlreadyExists=The product barcode %s already exists on another product reference. +ErrorNoteAlsoThatSubProductCantBeFollowedByLot=Note also that using kits to have auto increase/decrease of subproducts is not possible when at least one subproduct (or subproduct of subproducts) needs a serial/lot number. +ErrorDescRequiredForFreeProductLines=Description is mandatory for lines with free product +ErrorAPageWithThisNameOrAliasAlreadyExists=The page/container %s has the same name or alternative alias that the one your try to use +ErrorDuringChartLoad=Error when loading chart of accounts. If few accounts were not loaded, you can still enter them manually. +ErrorBadSyntaxForParamKeyForContent=Bad syntax for param keyforcontent. Must have a value starting with %s or %s +ErrorVariableKeyForContentMustBeSet=Error, the constant with name %s (with text content to show) or %s (with external url to show) must be set. +ErrorURLMustEndWith=URL %s must end %s +ErrorURLMustStartWithHttp=URL %s must start with http:// or https:// +ErrorHostMustNotStartWithHttp=Host name %s must NOT start with http:// or https:// +ErrorNewRefIsAlreadyUsed=Error, the new reference is already used +ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Error, delete payment linked to a closed invoice is not possible. +ErrorSearchCriteriaTooSmall=Search criteria too small. +ErrorObjectMustHaveStatusActiveToBeDisabled=Objects must have status 'Active' to be disabled +ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Objects must have status 'Draft' or 'Disabled' to be enabled +ErrorNoFieldWithAttributeShowoncombobox=No fields has property 'showoncombobox' into definition of object '%s'. No way to show the combolist. +ErrorFieldRequiredForProduct=Field '%s' is required for product %s +ProblemIsInSetupOfTerminal=Problem is in setup of terminal %s. +ErrorAddAtLeastOneLineFirst=Add at least one line first +ErrorRecordAlreadyInAccountingDeletionNotPossible=Error, record is already transferred in accounting, deletion is not possible. +ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Error, language is mandatory if you set the page as a translation of another one. +ErrorLanguageOfTranslatedPageIsSameThanThisPage=Error, language of translated page is same than this one. +ErrorBatchNoFoundForProductInWarehouse=No lot/serial found for product "%s" in warehouse "%s". +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=No enough quantity for this lot/serial for product "%s" in warehouse "%s". +ErrorOnlyOneFieldForGroupByIsPossible=Only 1 field for the 'Group by' is possible (others are discarded) +ErrorTooManyDifferentValueForSelectedGroupBy=Found too many different value (more than %s) for the field '%s', so we can't use it as a 'Group by' for graphics. The field 'Group By' has been removed. May be you wanted to use it as an X-Axis ? +ErrorReplaceStringEmpty=Error, the string to replace into is empty +ErrorProductNeedBatchNumber=Error, product '%s' need a lot/serial number +ErrorProductDoesNotNeedBatchNumber=Error, product '%s' does not accept a lot/serial number +ErrorFailedToReadObject=Error, failed to read object of type %s +ErrorParameterMustBeEnabledToAllwoThisFeature=Error, parameter %s must be enabled into conf/conf.php to allow use of Command Line Interface by the internal job scheduler +ErrorLoginDateValidity=Error, this login is outside the validity date range +ErrorValueLength=Length of field '%s' must be higher than '%s' +ErrorReservedKeyword=The word '%s' is a reserved keyword +ErrorNotAvailableWithThisDistribution=Not available with this distribution +ErrorPublicInterfaceNotEnabled=Public interface was not enabled +ErrorLanguageRequiredIfPageIsTranslationOfAnother=The language of new page must be defined if it is set as a translation of another page +ErrorLanguageMustNotBeSourceLanguageIfPageIsTranslationOfAnother=The language of new page must not be the source language if it is set as a translation of another page +ErrorAParameterIsRequiredForThisOperation=A parameter is mandatory for this operation +ErrorDateIsInFuture=Error, the date can't be in the future +ErrorAnAmountWithoutTaxIsRequired=Error, amount is mandatory +ErrorAPercentIsRequired=Error, please fill in the percentage correctly +ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of account +ErrorFailedToFindEmailTemplate=Failed to find template with code name %s +ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. +ErrorActionCommPropertyUserowneridNotDefined=User's owner is required +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary +CheckVersionFail=Version check fail +ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it +ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. +ErrorIsNotADraft=%s is not a draft +ErrorExecIdFailed=Can't execute command "id" +ErrorBadCharIntoLoginName=Unauthorized character in the login name +ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory + +# Warnings +WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. +WarningPasswordSetWithNoAccount=A password was set for this member. However, no user account was created. So this password is stored but can't be used to login to Dolibarr. It may be used by an external module/interface but if you don't need to define any login nor password for a member, you can disable option "Manage a login for each member" from Member module setup. If you need to manage a login but don't need any password, you can keep this field empty to avoid this warning. Note: Email can also be used as a login if the member is linked to a user. +WarningMandatorySetupNotComplete=Click here to setup mandatory parameters +WarningEnableYourModulesApplications=Click here to enable your modules and applications +WarningSafeModeOnCheckExecDir=Warning, PHP option safe_mode is on so command must be stored inside a directory declared by php parameter safe_mode_exec_dir. +WarningBookmarkAlreadyExists=A bookmark with this title or this target (URL) already exists. +WarningPassIsEmpty=Warning, database password is empty. This is a security hole. You should add a password to your database and change your conf.php file to reflect this. +WarningConfFileMustBeReadOnly=Warning, your config file (htdocs/conf/conf.php) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe. +WarningsOnXLines=Warnings on %s source record(s) +WarningNoDocumentModelActivated=No model, for document generation, has been activated. A model will be chosen by default until you check your module setup. +WarningLockFileDoesNotExists=Warning, once setup is finished, you must disable the installation/migration tools by adding a file install.lock into directory %s. Omitting the creation of this file is a grave security risk. +WarningUntilDirRemoved=All security warnings (visible by admin users only) will remain active as long as the vulnerability is present (or that constant MAIN_REMOVE_INSTALL_WARNING is added in Setup->Other Setup). +WarningCloseAlways=Warning, closing is done even if amount differs between source and target elements. Enable this feature with caution. +WarningUsingThisBoxSlowDown=Warning, using this box slow down seriously all pages showing the box. +WarningClickToDialUserSetupNotComplete=Setup of ClickToDial information for your user are not complete (see tab ClickToDial onto your user card). +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Feature disabled when display setup is optimized for blind person or text browsers. +WarningPaymentDateLowerThanInvoiceDate=Payment date (%s) is earlier than invoice date (%s) for invoice %s. +WarningTooManyDataPleaseUseMoreFilters=Too many data (more than %s lines). Please use more filters or set the constant %s to a higher limit. +WarningSomeLinesWithNullHourlyRate=Some times were recorded by some users while their hourly rate was not defined. A value of 0 %s per hour was used but this may result in wrong valuation of time spent. +WarningYourLoginWasModifiedPleaseLogin=Your login was modified. For security purpose you will have to login with your new login before next action. +WarningAnEntryAlreadyExistForTransKey=An entry already exists for the translation key for this language +WarningNumberOfRecipientIsRestrictedInMassAction=Warning, number of different recipient is limited to %s when using the mass actions on lists +WarningDateOfLineMustBeInExpenseReportRange=Warning, the date of line is not in the range of the expense report +WarningProjectDraft=Project is still in draft mode. Don't forget to validate it if you plan to use tasks. +WarningProjectClosed=Project is closed. You must re-open it first. +WarningSomeBankTransactionByChequeWereRemovedAfter=Some bank transaction were removed after that the receipt including them were generated. So nb of cheques and total of receipt may differ from number and total in list. +WarningFailedToAddFileIntoDatabaseIndex=Warning, failed to add file entry into ECM database index table +WarningTheHiddenOptionIsOn=Warning, the hidden option %s is on. +WarningCreateSubAccounts=Warning, you can't create directly a sub account, you must create a third party or an user and assign them an accounting code to find them in this list +WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. +WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. +WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME + +# Validate +RequireValidValue = Value not valid +RequireAtLeastXString = Requires at least %s character(s) +RequireXStringMax = Requires %s character(s) max +RequireAtLeastXDigits = Requires at least %s digit(s) +RequireXDigitsMax = Requires %s digit(s) max +RequireValidNumeric = Requires a numeric value +RequireValidEmail = Email address is not valid +RequireMaxLength = Length must be less than %s chars +RequireMinLength = Length must be more than %s char(s) +RequireValidUrl = Require valid URL +RequireValidDate = Require a valid date +RequireANotEmptyValue = Is required +RequireValidDuration = Require a valid duration +RequireValidExistingElement = Require an existing value +RequireValidBool = Require a valid boolean +BadSetupOfField = Error bad setup of field +BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation +BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion +BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class diff --git a/htdocs/langs/ms_MY/eventorganization.lang b/htdocs/langs/ms_MY/eventorganization.lang new file mode 100644 index 00000000000..858e0937788 --- /dev/null +++ b/htdocs/langs/ms_MY/eventorganization.lang @@ -0,0 +1,169 @@ +# Copyright (C) 2021 Florian Henry +# Copyright (C) 2021 Dorian Vabre +# +# 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 . + +# +# Generic +# +ModuleEventOrganizationName = Event Organization +EventOrganizationDescription = Event Organization through Module Project +EventOrganizationDescriptionLong= Manage the organization of an event (show, conferences, attendees or speakers, with public pages for suggestion, vote or registration) +# +# Menu +# +EventOrganizationMenuLeft = Organized events +EventOrganizationConferenceOrBoothMenuLeft = Conference Or Booth + +PaymentEvent=Payment of event + +# +# Admin page +# +NewRegistration=Registration +EventOrganizationSetup=Event Organization setup +EventOrganization=Event organization +Settings=Settings +EventOrganizationSetupPage = Event Organization setup page +EVENTORGANIZATION_TASK_LABEL = Label of tasks to create automatically when project is validated +EVENTORGANIZATION_TASK_LABELTooltip = When you validate an event to organize, some tasks can be automatically created in the project

For example:
Send Call for Conferences
Send Call for Booths
Validate suggestions of Conferences
Validate application for Booths
Open subscriptions to the event for attendees
Send a remind of the event to speakers
Send a remind of the event to Booth hosters
Send a remind of the event to attendees +EVENTORGANIZATION_TASK_LABELTooltip2=Keep empty if you don't need to create tasks automatically. +EVENTORGANIZATION_CATEG_THIRDPARTY_CONF = Category to add to third-parties automatically created when someone suggests a conference +EVENTORGANIZATION_CATEG_THIRDPARTY_BOOTH = Category to add to third-parties automatically created when they suggests a booth +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_CONF = Template of email to send after receiving a suggestion of a conference. +EVENTORGANIZATION_TEMPLATE_EMAIL_ASK_BOOTH = Template of email to send after receiving a suggestion of a booth. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_BOOTH = Template of email to send after a registration to a booth has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_AFT_SUBS_EVENT = Template of email to send after a registration to an event has been paid. +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_SPEAKER = Template of email to use when sending emails from the massaction "Send emails" to speakers +EVENTORGANIZATION_TEMPLATE_EMAIL_BULK_ATTENDES = Template of email to use when sending emails from the massaction "Send emails" on attendee list +EVENTORGANIZATION_FILTERATTENDEES_CAT = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties in the category +EVENTORGANIZATION_FILTERATTENDEES_TYPE = In the form to create/add an attendee, restricts the list of thirdparties to thirdparties with the nature + +# +# Object +# +EventOrganizationConfOrBooth= Conference Or Booth +ManageOrganizeEvent = Manage the organization of an event +ConferenceOrBooth = Conference Or Booth +ConferenceOrBoothTab = Conference Or Booth +AmountPaid = Amount paid +DateOfRegistration = Date of registration +ConferenceOrBoothAttendee = Conference Or Booth Attendee + +# +# Template Mail +# +YourOrganizationEventConfRequestWasReceived = Your request for conference was received +YourOrganizationEventBoothRequestWasReceived = Your request for booth was received +EventOrganizationEmailAskConf = Request for conference +EventOrganizationEmailAskBooth = Request for booth +EventOrganizationEmailBoothPayment = Payment of your booth +EventOrganizationEmailRegistrationPayment = Registration for an event +EventOrganizationMassEmailAttendees = Communication to attendees +EventOrganizationMassEmailSpeakers = Communication to speakers +ToSpeakers=To speakers + +# +# Event +# +AllowUnknownPeopleSuggestConf=Allow people to suggest conferences +AllowUnknownPeopleSuggestConfHelp=Allow unknown people to suggest a conference they want to do +AllowUnknownPeopleSuggestBooth=Allow people to apply for a booth +AllowUnknownPeopleSuggestBoothHelp=Allow unknown people to apply for a booth +PriceOfRegistration=Price of registration +PriceOfRegistrationHelp=Price to pay to register or participate in the event +PriceOfBooth=Subscription price to stand a booth +PriceOfBoothHelp=Subscription price to stand a booth +EventOrganizationICSLink=Link ICS for conferences +ConferenceOrBoothInformation=Conference Or Booth informations +Attendees=Attendees +ListOfAttendeesOfEvent=List of attendees of the event project +DownloadICSLink = Download ICS link +EVENTORGANIZATION_SECUREKEY = Seed to secure the key for the public registration page to suggest a conference +SERVICE_BOOTH_LOCATION = Service used for the invoice row about a booth location +SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION = Service used for the invoice row about an attendee subscription to an event +NbVotes=Number of votes +# +# Status +# +EvntOrgDraft = Draft +EvntOrgSuggested = Suggested +EvntOrgConfirmed = Confirmed +EvntOrgNotQualified = Not Qualified +EvntOrgDone = Done +EvntOrgCancelled = Cancelled +# +# Public page +# +SuggestForm = Suggestion page +SuggestOrVoteForConfOrBooth = Page for suggestion or vote +EvntOrgRegistrationHelpMessage = Here, you can vote for a conference or suggest a new one for the event. You can also apply to have a booth during the event. +EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference to animate during the event. +EvntOrgRegistrationBoothHelpMessage = Here, you can apply to have a booth during the event. +ListOfSuggestedConferences = List of suggested conferences +ListOfSuggestedBooths = List of suggested booths +ListOfConferencesOrBooths=List of conferences or booths of event project +SuggestConference = Suggest a new conference +SuggestBooth = Suggest a booth +ViewAndVote = View and vote for suggested events +PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event +PublicAttendeeSubscriptionPage = Public link for registration to this event only +MissingOrBadSecureKey = The security key is invalid or missing +EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event : %s +EvntOrgDuration = This conference starts on %s and ends on %s. +ConferenceAttendeeFee = Conference attendee fee for the event : '%s' occurring from %s to %s. +BoothLocationFee = Booth location for the event : '%s' occurring from %s to %s +EventType = Event type +LabelOfBooth=Booth label +LabelOfconference=Conference label +ConferenceIsNotConfirmed=Registration not available, conference is not confirmed yet +DateMustBeBeforeThan=%s must be before %s +DateMustBeAfterThan=%s must be after %s + +NewSubscription=Registration +OrganizationEventConfRequestWasReceived=Your suggestion for a conference has been received +OrganizationEventBoothRequestWasReceived=Your request for a booth has been received +OrganizationEventPaymentOfBoothWasReceived=Your payment for your booth has been recorded +OrganizationEventPaymentOfRegistrationWasReceived=Your payment for your event registration has been recorded +OrganizationEventBulkMailToAttendees=This is a remind about your participation in the event as an attendee +OrganizationEventBulkMailToSpeakers=This is a reminder on your participation in the event as a speaker +OrganizationEventLinkToThirdParty=Link to third party (customer, supplier or partner) + +NewSuggestionOfBooth=Application for a booth +NewSuggestionOfConference=Application for a conference + +# +# Vote page +# +EvntOrgRegistrationWelcomeMessage = Welcome on the conference or booth suggestion page. +EvntOrgRegistrationConfWelcomeMessage = Welcome on the conference suggestion page. +EvntOrgRegistrationBoothWelcomeMessage = Welcome on the booth suggestion page. +EvntOrgVoteHelpMessage = Here, you can view and vote for the suggested events for the project +VoteOk = Your vote has been accepted. +AlreadyVoted = You have already voted for this event. +VoteError = An error has occurred during the vote, please try again. + +SubscriptionOk = Your registration has been validated +ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to an event +Attendee = Attendee +PaymentConferenceAttendee = Conference attendee payment +PaymentBoothLocation = Booth location payment +DeleteConferenceOrBoothAttendee=Remove attendee +RegistrationAndPaymentWereAlreadyRecorder=A registration and a payment were already recorded for the email %s +EmailAttendee=Attendee email +EmailCompanyForInvoice=Company email (for invoice, if different of attendee email) +ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation +ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation +NoPublicActionsAllowedForThisEvent=No public actions are open to public for this event +MaxNbOfAttendees=Max number of attendees diff --git a/htdocs/langs/ms_MY/exports.lang b/htdocs/langs/ms_MY/exports.lang new file mode 100644 index 00000000000..6cd111f0b80 --- /dev/null +++ b/htdocs/langs/ms_MY/exports.lang @@ -0,0 +1,145 @@ +# Dolibarr language file - Source file is en_US - exports +ExportsArea=Exports +ImportArea=Import +NewExport=New Export +NewImport=New Import +ExportableDatas=Exportable dataset +ImportableDatas=Importable dataset +SelectExportDataSet=Choose dataset you want to export... +SelectImportDataSet=Choose dataset you want to import... +SelectExportFields=Choose the fields you want to export, or select a predefined export profile +SelectImportFields=Choose the source file fields you want to import and their target field in database by moving them up and down with anchor %s, or select a predefined import profile: +NotImportedFields=Fields of source file not imported +SaveExportModel=Save your selections as an export profile/template (for reuse). +SaveImportModel=Save this import profile (for reuse) ... +ExportModelName=Export profile name +ExportModelSaved=Export profile saved as %s. +ExportableFields=Exportable fields +ExportedFields=Exported fields +ImportModelName=Import profile name +ImportModelSaved=Import profile saved as %s. +ImportProfile=Import profile +DatasetToExport=Dataset to export +DatasetToImport=Import file into dataset +ChooseFieldsOrdersAndTitle=Choose fields order... +FieldsTitle=Fields title +FieldTitle=Field title +NowClickToGenerateToBuildExportFile=Now, select the file format in the combo box and click on "Generate" to build the export file... +AvailableFormats=Available Formats +LibraryShort=Library +ExportCsvSeparator=Csv caracter separator +ImportCsvSeparator=Csv caracter separator +Step=Step +FormatedImport=Import Assistant +FormatedImportDesc1=This module allows you to update existing data or add new objects into the database from a file without technical knowledge, using an assistant. +FormatedImportDesc2=First step is to choose the kind of data you want to import, then the format of the source file, then the fields you want to import. +FormatedExport=Export Assistant +FormatedExportDesc1=These tools allow the export of personalized data using an assistant, to help you in the process without requiring technical knowledge. +FormatedExportDesc2=First step is to choose a predefined dataset, then which fields you want to export, and in which order. +FormatedExportDesc3=When data to export are selected, you can choose the format of the output file. +Sheet=Sheet +NoImportableData=No importable data (no module with definitions to allow data imports) +FileSuccessfullyBuilt=File generated +SQLUsedForExport=SQL Request used to extract data +LineId=Id of line +LineLabel=Label of line +LineDescription=Description of line +LineUnitPrice=Unit price of line +LineVATRate=VAT Rate of line +LineQty=Quantity for line +LineTotalHT=Amount excl. tax for line +LineTotalTTC=Amount with tax for line +LineTotalVAT=Amount of VAT for line +TypeOfLineServiceOrProduct=Type of line (0=product, 1=service) +FileWithDataToImport=File with data to import +FileToImport=Source file to import +FileMustHaveOneOfFollowingFormat=File to import must have one of following formats +DownloadEmptyExampleShort=Download a sample file +DownloadEmptyExample=Download a template file with examples and information on fields you can import +StarAreMandatory=Into the template file, all fields with a * are mandatory fields +ChooseFormatOfFileToImport=Choose the file format to use as import file format by clicking on the %s icon to select it... +ChooseFileToImport=Upload file then click on the %s icon to select file as source import file... +SourceFileFormat=Source file format +FieldsInSourceFile=Fields in source file +FieldsInTargetDatabase=Target fields in Dolibarr database (bold=mandatory) +Field=Field +NoFields=No fields +MoveField=Move field column number %s +ExampleOfImportFile=Example_of_import_file +SaveImportProfile=Save this import profile +ErrorImportDuplicateProfil=Failed to save this import profile with this name. An existing profile already exists with this name. +TablesTarget=Targeted tables +FieldsTarget=Targeted fields +FieldTarget=Targeted field +FieldSource=Source field +NbOfSourceLines=Number of lines in source file +NowClickToTestTheImport=Check that the file format (field and string delimiters) of your file matches the options shown and that you have omitted the header line, or these will be flagged as errors in the following simulation.
Click on the "%s" button to run a check of the file structure/contents and simulate the import process.
No data will be changed in your database. +RunSimulateImportFile=Run Import Simulation +FieldNeedSource=This field requires data from the source file +SomeMandatoryFieldHaveNoSource=Some mandatory fields have no source from data file +InformationOnSourceFile=Information on source file +InformationOnTargetTables=Information on target fields +SelectAtLeastOneField=Switch at least one source field in the column of fields to export +SelectFormat=Choose this import file format +RunImportFile=Import Data +NowClickToRunTheImport=Check the results of the import simulation. Correct any errors and re-test.
When the simulation reports no errors you may proceed to import the data into the database. +DataLoadedWithId=The imported data will have an additional field in each database table with this import id: %s, to allow it to be searchable in the case of investigating a problem related to this import. +ErrorMissingMandatoryValue=Mandatory data is empty in the source file in column %s. +TooMuchErrors=There are still %s other source lines with errors but output has been limited. +TooMuchWarnings=There are still %s other source lines with warnings but output has been limited. +EmptyLine=Empty line (will be discarded) +CorrectErrorBeforeRunningImport=You must correct all errors before running the definitive import. +FileWasImported=File was imported with number %s. +YouCanUseImportIdToFindRecord=You can find all the imported records in your database by filtering on field import_key='%s'. +NbOfLinesOK=Number of lines with no errors and no warnings: %s. +NbOfLinesImported=Number of lines successfully imported: %s. +DataComeFromNoWhere=Value to insert comes from nowhere in source file. +DataComeFromFileFieldNb=Value to insert comes from column %s in source file. +DataComeFromIdFoundFromRef=Value that comes from column %s of source file will be used to find the id of the parent object to use (so the object %s that has the ref. from source file must exist in the database). +DataComeFromIdFoundFromCodeId=Code that comes from column %s of source file will be used to find the id of the parent object to use (so the code from source file must exist in the dictionary %s). Note that if you know the id, you can also use it in the source file instead of the code. Import should work in both cases. +DataIsInsertedInto=Data coming from source file will be inserted into the following field: +DataIDSourceIsInsertedInto=The id of the parent object, that was found using the data in the source file, will be inserted into the following field: +DataCodeIDSourceIsInsertedInto=The id of the parent line, that was found from code, will be inserted into the following field: +SourceRequired=Data value is mandatory +SourceExample=Example of possible data value +ExampleAnyRefFoundIntoElement=Any ref found for element %s +ExampleAnyCodeOrIdFoundIntoDictionary=Any code (or id) found into dictionary %s +CSVFormatDesc=Comma Separated Value file format (.csv).
This is a text file format where fields are separated by a separator [ %s ]. If separator is found inside a field content, field is rounded by round character [ %s ]. Escape character to escape round character is [ %s ]. +Excel95FormatDesc=Excel file format (.xls)
This is the native Excel 95 format (BIFF5). +Excel2007FormatDesc=Excel file format (.xlsx)
This is the native Excel 2007 format (SpreadsheetML). +TsvFormatDesc=Tab Separated Value file format (.tsv)
This is a text file format where fields are separated by a tabulator [tab]. +ExportFieldAutomaticallyAdded=Field %s was automatically added. It will avoid you to have similar lines to be treated as duplicate record (with this field added, all lines will own their own id and will differ). +CsvOptions=CSV format options +Separator=Field Separator +Enclosure=String Delimiter +SpecialCode=Special code +ExportStringFilter=%% allows replacing one or more characters in the text +ExportDateFilter=YYYY, YYYYMM, YYYYMMDD: filters by one year/month/day
YYYY+YYYY, YYYYMM+YYYYMM, YYYYMMDD+YYYYMMDD: filters over a range of years/months/days
> YYYY, > YYYYMM, > YYYYMMDD: filters on all following years/months/days
< YYYY, < YYYYMM, < YYYYMMDD: filters on all previous years/months/days +ExportNumericFilter=NNNNN filters by one value
NNNNN+NNNNN filters over a range of values
< NNNNN filters by lower values
> NNNNN filters by higher values +ImportFromLine=Import starting from line number +EndAtLineNb=End at line number +ImportFromToLine=Limit range (From - To). Eg. to omit header line(s). +SetThisValueTo2ToExcludeFirstLine=For example, set this value to 3 to exclude the 2 first lines.
If the header lines are NOT omitted, this will result in multiple errors in the Import Simulation. +KeepEmptyToGoToEndOfFile=Keep this field empty to process all lines to the end of the file. +SelectPrimaryColumnsForUpdateAttempt=Select column(s) to use as primary key for an UPDATE import +UpdateNotYetSupportedForThisImport=Update is not supported for this type of import (only insert) +NoUpdateAttempt=No update attempt was performed, only insert +ImportDataset_user_1=Users (employees or not) and properties +ComputedField=Computed field +## filters +SelectFilterFields=If you want to filter on some values, just input values here. +FilteredFields=Filtered fields +FilteredFieldsValues=Value for filter +FormatControlRule=Format control rule +## imports updates +KeysToUseForUpdates=Key (column) to use for updating existing data +NbInsert=Number of inserted lines: %s +NbUpdate=Number of updated lines: %s +MultipleRecordFoundWithTheseFilters=Multiple records have been found with these filters: %s +StocksWithBatch=Stocks and location (warehouse) of products with batch/serial number +WarningFirstImportedLine=The first line(s) will not be imported with the current selection +NotUsedFields=Fields of database not used +SelectImportFieldsSource = Choose the source file fields you want to import and their target field in database by choosing the fields in each select boxes, or select a predefined import profile: +MandatoryTargetFieldsNotMapped=Some mandatory target fields are not mapped +AllTargetMandatoryFieldsAreMapped=All target fields that need a mandatory value are mapped +ResultOfSimulationNoError=Result of simulation: No error diff --git a/htdocs/langs/ms_MY/help.lang b/htdocs/langs/ms_MY/help.lang new file mode 100644 index 00000000000..d699cb56fd2 --- /dev/null +++ b/htdocs/langs/ms_MY/help.lang @@ -0,0 +1,23 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Forum/Wiki support +EMailSupport=Emails support +RemoteControlSupport=Online real-time / remote support +OtherSupport=Other support +ToSeeListOfAvailableRessources=To contact/see available resources: +HelpCenter=Help Center +DolibarrHelpCenter=Dolibarr Help and Support Center +ToGoBackToDolibarr=Otherwise, click here to continue to use Dolibarr. +TypeOfSupport=Type of support +TypeSupportCommunauty=Community (free) +TypeSupportCommercial=Commercial +TypeOfHelp=Type +NeedHelpCenter=Need help or support? +Efficiency=Efficiency +TypeHelpOnly=Help only +TypeHelpDev=Help+Development +TypeHelpDevForm=Help+Development+Training +BackToHelpCenter=Otherwise, go back to Help center home page. +LinkToGoldMember=You can call one of the trainers preselected by Dolibarr for your language (%s) by clicking their Widget (status and maximum price are automatically updated): +PossibleLanguages=Supported languages +SubscribeToFoundation=Help the Dolibarr project, subscribe to the foundation +SeeOfficalSupport=For official Dolibarr support in your language:
%s diff --git a/htdocs/langs/ms_MY/holiday.lang b/htdocs/langs/ms_MY/holiday.lang new file mode 100644 index 00000000000..831d306cc39 --- /dev/null +++ b/htdocs/langs/ms_MY/holiday.lang @@ -0,0 +1,149 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=HRM +Holidays=Leave +CPTitreMenu=Leave +MenuReportMonth=Monthly statement +MenuAddCP=New leave request +MenuCollectiveAddCP=New collective leave request +NotActiveModCP=You must enable the module Leave to view this page. +AddCP=Make a leave request +DateDebCP=Start date +DateFinCP=End date +DraftCP=Draft +ToReviewCP=Awaiting approval +ApprovedCP=Approved +CancelCP=Canceled +RefuseCP=Refused +ValidatorCP=Approver +ListeCP=List of leave +Leave=Leave request +LeaveId=Leave ID +ReviewedByCP=Will be approved by +UserID=User ID +UserForApprovalID=User for approval ID +UserForApprovalFirstname=First name of approval user +UserForApprovalLastname=Last name of approval user +UserForApprovalLogin=Login of approval user +DescCP=Description +SendRequestCP=Create leave request +DelayToRequestCP=Leave requests must be made at least %s day(s) before them. +MenuConfCP=Balance of leave +SoldeCPUser=Leave balance (in days) %s +ErrorEndDateCP=You must select an end date greater than the start date. +ErrorSQLCreateCP=An SQL error occurred during the creation: +ErrorIDFicheCP=An error has occurred, the leave request does not exist. +ReturnCP=Return to previous page +ErrorUserViewCP=You are not authorized to read this leave request. +InfosWorkflowCP=Information Workflow +RequestByCP=Requested by +TitreRequestCP=Leave request +TypeOfLeaveId=Type of leave ID +TypeOfLeaveCode=Type of leave code +TypeOfLeaveLabel=Type of leave label +NbUseDaysCP=Number of days of leave used +NbUseDaysCPHelp=The calculation takes into account the non-working days and the holidays defined in the dictionary. +NbUseDaysCPShort=Days of leave +NbUseDaysCPShortInMonth=Days of leave in month +DayIsANonWorkingDay=%s is a non-working day +DateStartInMonth=Start date in month +DateEndInMonth=End date in month +EditCP=Edit +DeleteCP=Delete +ActionRefuseCP=Refuse +ActionCancelCP=Cancel +StatutCP=Status +TitleDeleteCP=Delete the leave request +ConfirmDeleteCP=Confirm the deletion of this leave request? +ErrorCantDeleteCP=Error you don't have the right to delete this leave request. +CantCreateCP=You don't have the right to make leave requests. +InvalidValidatorCP=You must choose the approver for your leave request. +NoDateDebut=You must select a start date. +NoDateFin=You must select an end date. +ErrorDureeCP=Your leave request does not contain working day. +TitleValidCP=Approve the leave request +ConfirmValidCP=Are you sure you want to approve the leave request? +DateValidCP=Date approved +TitleToValidCP=Send leave request +ConfirmToValidCP=Are you sure you want to send the leave request? +TitleRefuseCP=Refuse the leave request +ConfirmRefuseCP=Are you sure you want to refuse the leave request? +NoMotifRefuseCP=You must choose a reason for refusing the request. +TitleCancelCP=Cancel the leave request +ConfirmCancelCP=Are you sure you want to cancel the leave request? +DetailRefusCP=Reason for refusal +DateRefusCP=Date of refusal +DateCancelCP=Date of cancellation +DefineEventUserCP=Assign an exceptional leave for a user +addEventToUserCP=Assign leave +NotTheAssignedApprover=You are not the assigned approver +MotifCP=Reason +UserCP=User +ErrorAddEventToUserCP=An error occurred while adding the exceptional leave. +AddEventToUserOkCP=The addition of the exceptional leave has been completed. +ErrorFieldRequiredUserOrGroup=The "group" field or the "user" field must be filled in +fusionGroupsUsers=The groups field and the user field will be merged +MenuLogCP=View change logs +LogCP=Log of all updates made to "Balance of Leave" +ActionByCP=Updated by +UserUpdateCP=Updated for +PrevSoldeCP=Previous Balance +NewSoldeCP=New Balance +alreadyCPexist=A leave request has already been done on this period. +UseralreadyCPexist=A leave request has already been done on this period for %s. +groups=Groups +users=Users +AutoSendMail=Automatic mailing +NewHolidayForGroup=New collective leave request +SendRequestCollectiveCP=Send collective leave request +AutoValidationOnCreate=Automatic validation +FirstDayOfHoliday=Beginning day of leave request +LastDayOfHoliday=Ending day of leave request +BoxTitleLastLeaveRequests=Latest %s modified leave requests +HolidaysMonthlyUpdate=Monthly update +ManualUpdate=Manual update +HolidaysCancelation=Leave request cancelation +EmployeeLastname=Employee last name +EmployeeFirstname=Employee first name +TypeWasDisabledOrRemoved=Leave type (id %s) was disabled or removed +LastHolidays=Latest %s leave requests +AllHolidays=All leave requests +HalfDay=Half day +NotTheAssignedApprover=You are not the assigned approver +LEAVE_PAID=Paid vacation +LEAVE_SICK=Sick leave +LEAVE_OTHER=Other leave +LEAVE_PAID_FR=Paid vacation +## Configuration du Module ## +LastUpdateCP=Last automatic update of leave allocation +MonthOfLastMonthlyUpdate=Month of last automatic update of leave allocation +UpdateConfCPOK=Updated successfully. +Module27130Name= Management of leave requests +Module27130Desc= Management of leave requests +ErrorMailNotSend=An error occurred while sending email: +NoticePeriod=Notice period +#Messages +HolidaysToValidate=Validate leave requests +HolidaysToValidateBody=Below is a leave request to validate +HolidaysToValidateDelay=This leave request will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this leave request does not have enough available days. +HolidaysValidated=Validated leave requests +HolidaysValidatedBody=Your leave request for %s to %s has been validated. +HolidaysRefused=Request denied +HolidaysRefusedBody=Your leave request for %s to %s has been denied for the following reason: +HolidaysCanceled=Canceled leaved request +HolidaysCanceledBody=Your leave request for %s to %s has been canceled. +FollowedByACounter=1: This type of leave need to be followed by a counter. Counter is incremented manually or automatically and when a leave request is validated, counter is decremented.
0: Not followed by a counter. +NoLeaveWithCounterDefined=There is no leave types defined that need to be followed by a counter +GoIntoDictionaryHolidayTypes=Go into Home - Setup - Dictionaries - Type of leave to setup the different types of leaves. +HolidaySetup=Setup of module Leave +HolidaysNumberingModules=Numbering models for leave requests +TemplatePDFHolidays=Template for leave requests PDF +FreeLegalTextOnHolidays=Free text on PDF +WatermarkOnDraftHolidayCards=Watermarks on draft leave requests +HolidaysToApprove=Holidays to approve +NobodyHasPermissionToValidateHolidays=Nobody has permission to validate holidays +HolidayBalanceMonthlyUpdate=Monthly update of holiday balance +XIsAUsualNonWorkingDay=%s is usualy a NON working day +BlockHolidayIfNegative=Block if balance negative +LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted diff --git a/htdocs/langs/ms_MY/hrm.lang b/htdocs/langs/ms_MY/hrm.lang new file mode 100644 index 00000000000..cb55969895b --- /dev/null +++ b/htdocs/langs/ms_MY/hrm.lang @@ -0,0 +1,91 @@ +# Dolibarr language file - en_US - hrm + + +# Admin +HRM_EMAIL_EXTERNAL_SERVICE=Email to prevent HRM external service +Establishments=Establishments +Establishment=Establishment +NewEstablishment=New establishment +DeleteEstablishment=Delete establishment +ConfirmDeleteEstablishment=Are you sure you wish to delete this establishment? +OpenEtablishment=Open establishment +CloseEtablishment=Close establishment +# Dictionary +DictionaryPublicHolidays=Leave - Public holidays +DictionaryDepartment=HRM - Organizational Unit +DictionaryFunction=HRM - Job positions +# Module +Employees=Employees +Employee=Employee +NewEmployee=New employee +ListOfEmployees=List of employees +HrmSetup=HRM module setup +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill +HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created +deplacement=Shift +DateEval=Evaluation date +JobCard=Job card +JobPosition=Job +JobsPosition=Jobs +NewSkill=New Skill +SkillType=Skill type +Skilldets=List of ranks for this skill +Skilldet=Skill level +rank=Rank +ErrNoSkillSelected=No skill selected +ErrSkillAlreadyAdded=This skill is already in the list +SkillHasNoLines=This skill has no lines +skill=Skill +Skills=Skills +SkillCard=Skill card +EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) +Eval=Evaluation +Evals=Evaluations +NewEval=New evaluation +ValidateEvaluation=Validate evaluation +ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference %s? +EvaluationCard=Evaluation card +RequiredRank=Required rank for this job +EmployeeRank=Employee rank for this skill +EmployeePosition=Employee position +EmployeePositions=Employee positions +EmployeesInThisPosition=Employees in this position +group1ToCompare=Usergroup to analyze +group2ToCompare=Second usergroup for comparison +OrJobToCompare=Compare to job skills requirements +difference=Difference +CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator +MaxlevelGreaterThan=Max level greater than the one requested +MaxLevelEqualTo=Max level equal to that demand +MaxLevelLowerThan=Max level lower than that demand +MaxlevelGreaterThanShort=Employee level greater than the one requested +MaxLevelEqualToShort=Employee level equals to that demand +MaxLevelLowerThanShort=Employee level lower than that demand +SkillNotAcquired=Skill not acquired by all users and requested by the second comparator +legend=Legend +TypeSkill=Skill type +AddSkill=Add skills to job +RequiredSkills=Required skills for this job +UserRank=User Rank +SkillList=Skill list +SaveRank=Save rank +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge +AbandonmentComment=Abandonment comment +DateLastEval=Date last evaluation +NoEval=No evaluation done for this employee +HowManyUserWithThisMaxNote=Number of users with this rank +HighestRank=Highest rank +SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/ms_MY/install.lang b/htdocs/langs/ms_MY/install.lang new file mode 100644 index 00000000000..6aee82bacec --- /dev/null +++ b/htdocs/langs/ms_MY/install.lang @@ -0,0 +1,215 @@ +# Dolibarr language file - Source file is en_US - install +InstallEasy=Just follow the instructions step by step. +MiscellaneousChecks=Prerequisites check +ConfFileExists=Configuration file %s exists. +ConfFileDoesNotExistsAndCouldNotBeCreated=Configuration file %s does not exist and could not be created! +ConfFileCouldBeCreated=Configuration file %s could be created. +ConfFileIsNotWritable=Configuration file %s is not writable. Check permissions. For first install, your web server must be able to write into this file during configuration process ("chmod 666" for example on a Unix like OS). +ConfFileIsWritable=Configuration file %s is writable. +ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. +ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. +PHPSupportPOSTGETOk=This PHP supports variables POST and GET. +PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. +PHPSupportSessions=This PHP supports sessions. +PHPSupport=This PHP supports %s functions. +PHPMemoryOK=Your PHP max session memory is set to %s. This should be enough. +PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. +Recheck=Click here for a more detailed test +ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. +ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. +ErrorDirDoesNotExists=Directory %s does not exist. +ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. +ErrorWrongValueForParameter=You may have typed a wrong value for parameter '%s'. +ErrorFailedToCreateDatabase=Failed to create database '%s'. +ErrorFailedToConnectToDatabase=Failed to connect to database '%s'. +ErrorDatabaseVersionTooLow=Database version (%s) too old. Version %s or higher is required. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. +ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. +ErrorDatabaseAlreadyExists=Database '%s' already exists. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions +IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". +IfDatabaseExistsGoBackAndCheckCreate=If database already exists, go back and uncheck "Create database" option. +WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. +PHPVersion=PHP Version +License=Using license +ConfigurationFile=Configuration file +WebPagesDirectory=Directory where web pages are stored +DocumentsDirectory=Directory to store uploaded and generated documents +URLRoot=URL Root +ForceHttps=Force secure connections (https) +CheckToForceHttps=Check this option to force secure connections (https).
This requires that the web server is configured with an SSL certificate. +DolibarrDatabase=Dolibarr Database +DatabaseType=Database type +DriverType=Driver type +Server=Server +ServerAddressDescription=Name or ip address for the database server. Usually 'localhost' when the database server is hosted on the same server as the web server. +ServerPortDescription=Database server port. Keep empty if unknown. +DatabaseServer=Database server +DatabaseName=Database name +DatabasePrefix=Database table prefix +DatabasePrefixDescription=Database table prefix. If empty, defaults to llx_. +AdminLogin=User account for the Dolibarr database owner. +PasswordAgain=Retype password confirmation +AdminPassword=Password for Dolibarr database owner. +CreateDatabase=Create database +CreateUser=Create user account or grant user account permission on the Dolibarr database +DatabaseSuperUserAccess=Database server - Superuser access +CheckToCreateDatabase=Check the box if the database does not exist yet and so must be created.
In this case, you must also fill in the user name and password for the superuser account at the bottom of this page. +CheckToCreateUser=Check the box if:
the database user account does not yet exist and so must be created, or
if the user account exists but the database does not exist and permissions must be granted.
In this case, you must enter the user account and password and also the superuser account name and password at the bottom of this page. If this box is unchecked, database owner and password must already exist. +DatabaseRootLoginDescription=Superuser account name (to create new databases or new users), mandatory if the database or its owner does not already exist. +KeepEmptyIfNoPassword=Leave empty if superuser has no password (NOT recommended) +SaveConfigurationFile=Saving parameters to +ServerConnection=Server connection +DatabaseCreation=Database creation +CreateDatabaseObjects=Database objects creation +ReferenceDataLoading=Reference data loading +TablesAndPrimaryKeysCreation=Tables and Primary keys creation +CreateTableAndPrimaryKey=Create table %s +CreateOtherKeysForTable=Create foreign keys and indexes for table %s +OtherKeysCreation=Foreign keys and indexes creation +FunctionsCreation=Functions creation +AdminAccountCreation=Administrator login creation +PleaseTypePassword=Please type a password, empty passwords are not allowed! +PleaseTypeALogin=Please type a login! +PasswordsMismatch=Passwords differs, please try again! +SetupEnd=End of setup +SystemIsInstalled=This installation is complete. +SystemIsUpgraded=Dolibarr has been upgraded successfully. +YouNeedToPersonalizeSetup=You need to configure Dolibarr to suit your needs (appearance, features, ...). To do this, please follow the link below: +AdminLoginCreatedSuccessfuly=Dolibarr administrator login '%s' created successfully. +GoToDolibarr=Go to Dolibarr +GoToSetupArea=Go to Dolibarr (setup area) +MigrationNotFinished=The database version is not completely up to date: run the upgrade process again. +GoToUpgradePage=Go to upgrade page again +WithNoSlashAtTheEnd=Without the slash "/" at the end +DirectoryRecommendation=IMPORTANT: You must use a directory that is outside of the web pages (so do not use a subdirectory of previous parameter). +LoginAlreadyExists=Already exists +DolibarrAdminLogin=Dolibarr admin login +AdminLoginAlreadyExists=Dolibarr administrator account '%s' already exists. Go back if you want to create another one. +FailedToCreateAdminLogin=Failed to create Dolibarr administrator account. +WarningRemoveInstallDir=Warning, for security reasons, once the install or upgrade is complete, you should add a file called install.lock into the Dolibarr document directory in order to prevent the accidental/malicious use of the install tools again. +FunctionNotAvailableInThisPHP=Not available in this PHP +ChoosedMigrateScript=Choose migration script +DataMigration=Database migration (data) +DatabaseMigration=Database migration (structure + some data) +ProcessMigrateScript=Script processing +ChooseYourSetupMode=Choose your setup mode and click "Start"... +FreshInstall=Fresh install +FreshInstallDesc=Use this mode if this is your first install. If not, this mode can repair a incomplete previous install. If you want to upgrade your version, choose "Upgrade" mode. +Upgrade=Upgrade +UpgradeDesc=Use this mode if you have replaced old Dolibarr files with files from a newer version. This will upgrade your database and data. +Start=Start +InstallNotAllowed=Setup not allowed by conf.php permissions +YouMustCreateWithPermission=You must create file %s and set write permissions on it for the web server during install process. +CorrectProblemAndReloadPage=Please fix the problem and press F5 to reload the page. +AlreadyDone=Already migrated +DatabaseVersion=Database version +ServerVersion=Database server version +YouMustCreateItAndAllowServerToWrite=You must create this directory and allow for the web server to write into it. +DBSortingCollation=Character sorting order +YouAskDatabaseCreationSoDolibarrNeedToConnect=You selected create database %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. +YouAskLoginCreationSoDolibarrNeedToConnect=You selected create database user %s, but for this, Dolibarr needs to connect to server %s with super user %s permissions. +BecauseConnectionFailedParametersMayBeWrong=The database connection failed: the host or super user parameters must be wrong. +OrphelinsPaymentsDetectedByMethod=Orphans payment detected by method %s +RemoveItManuallyAndPressF5ToContinue=Remove it manually and press F5 to continue. +FieldRenamed=Field renamed +IfLoginDoesNotExistsCheckCreateUser=If the user does not exist yet, you must check option "Create user" +ErrorConnection=Server "%s", database name "%s", login "%s", or database password may be wrong or the PHP client version may be too old compared to the database version. +InstallChoiceRecommanded=Recommended choice to install version %s from your current version %s +InstallChoiceSuggested=Install choice suggested by installer. +MigrateIsDoneStepByStep=The targeted version (%s) has a gap of several versions. The install wizard will come back to suggest a further migration once this one is complete. +CheckThatDatabasenameIsCorrect=Check that the database name "%s" is correct. +IfAlreadyExistsCheckOption=If this name is correct and that database does not exist yet, you must check option "Create database". +OpenBaseDir=PHP openbasedir parameter +YouAskToCreateDatabaseSoRootRequired=You checked the box "Create database". For this, you need to provide the login/password of superuser (bottom of form). +YouAskToCreateDatabaseUserSoRootRequired=You checked the box "Create database owner". For this, you need to provide the login/password of superuser (bottom of form). +NextStepMightLastALongTime=The current step may take several minutes. Please wait until the next screen is shown completely before continuing. +MigrationCustomerOrderShipping=Migrate shipping for sales orders storage +MigrationShippingDelivery=Upgrade storage of shipping +MigrationShippingDelivery2=Upgrade storage of shipping 2 +MigrationFinished=Migration finished +LastStepDesc=Last step: Define here the login and password you wish to use to connect to Dolibarr. Do not lose this as it is the master account to administer all other/additional user accounts. +ActivateModule=Activate module %s +ShowEditTechnicalParameters=Click here to show/edit advanced parameters (expert mode) +WarningUpgrade=Warning:\nDid you run a database backup first?\nThis is highly recommended. Loss of data (due to for example bugs in mysql version 5.5.40/41/42/43) may be possible during this process, so it is essential to take a complete dump of your database before starting any migration.\n\nClick OK to start migration process... +ErrorDatabaseVersionForbiddenForMigration=Your database version is %s. It has a critical bug, making data loss possible if you make structural changes in your database, such as is required by the migration process. For his reason, migration will not be allowed until you upgrade your database to a layer (patched) version (list of known buggy versions: %s) +KeepDefaultValuesWamp=You used the Dolibarr setup wizard from DoliWamp, so values proposed here are already optimized. Change them only if you know what you are doing. +KeepDefaultValuesDeb=You used the Dolibarr setup wizard from a Linux package (Ubuntu, Debian, Fedora...), so the values proposed here are already optimized. Only the password of the database owner to create must be entered. Change other parameters only if you know what you are doing. +KeepDefaultValuesMamp=You used the Dolibarr setup wizard from DoliMamp, so the values proposed here are already optimized. Change them only if you know what you are doing. +KeepDefaultValuesProxmox=You used the Dolibarr setup wizard from a Proxmox virtual appliance, so the values proposed here are already optimized. Change them only if you know what you are doing. +UpgradeExternalModule=Run dedicated upgrade process of external module +SetAtLeastOneOptionAsUrlParameter=Set at least one option as a parameter in URL. For example: '...repair.php?standard=confirmed' +NothingToDelete=Nothing to clean/delete +NothingToDo=Nothing to do +######### +# upgrade +MigrationFixData=Fix for denormalized data +MigrationOrder=Data migration for customer's orders +MigrationSupplierOrder=Data migration for vendor's orders +MigrationProposal=Data migration for commercial proposals +MigrationInvoice=Data migration for customer's invoices +MigrationContract=Data migration for contracts +MigrationSuccessfullUpdate=Upgrade successful +MigrationUpdateFailed=Failed upgrade process +MigrationRelationshipTables=Data migration for relationship tables (%s) +MigrationPaymentsUpdate=Payment data correction +MigrationPaymentsNumberToUpdate=%s payment(s) to update +MigrationProcessPaymentUpdate=Update payment(s) %s +MigrationPaymentsNothingToUpdate=No more things to do +MigrationPaymentsNothingUpdatable=No more payments that can be corrected +MigrationContractsUpdate=Contract data correction +MigrationContractsNumberToUpdate=%s contract(s) to update +MigrationContractsLineCreation=Create contract line for contract ref %s +MigrationContractsNothingToUpdate=No more things to do +MigrationContractsFieldDontExist=Field fk_facture does not exist anymore. Nothing to do. +MigrationContractsEmptyDatesUpdate=Contract empty date correction +MigrationContractsEmptyDatesUpdateSuccess=Contract empty date correction done successfully +MigrationContractsEmptyDatesNothingToUpdate=No contract empty date to correct +MigrationContractsEmptyCreationDatesNothingToUpdate=No contract creation date to correct +MigrationContractsInvalidDatesUpdate=Bad value date contract correction +MigrationContractsInvalidDateFix=Correct contract %s (Contract date=%s, Starting service date min=%s) +MigrationContractsInvalidDatesNumber=%s contracts modified +MigrationContractsInvalidDatesNothingToUpdate=No date with bad value to correct +MigrationContractsIncoherentCreationDateUpdate=Bad value contract creation date correction +MigrationContractsIncoherentCreationDateUpdateSuccess=Bad value contract creation date correction done successfully +MigrationContractsIncoherentCreationDateNothingToUpdate=No bad value for contract creation date to correct +MigrationReopeningContracts=Open contract closed by error +MigrationReopenThisContract=Reopen contract %s +MigrationReopenedContractsNumber=%s contracts modified +MigrationReopeningContractsNothingToUpdate=No closed contract to open +MigrationBankTransfertsUpdate=Update links between bank entry and a bank transfer +MigrationBankTransfertsNothingToUpdate=All links are up to date +MigrationShipmentOrderMatching=Sendings receipt update +MigrationDeliveryOrderMatching=Delivery receipt update +MigrationDeliveryDetail=Delivery update +MigrationStockDetail=Update stock value of products +MigrationMenusDetail=Update dynamic menus tables +MigrationDeliveryAddress=Update delivery address in shipments +MigrationProjectTaskActors=Data migration for table llx_projet_task_actors +MigrationProjectUserResp=Data migration field fk_user_resp of llx_projet to llx_element_contact +MigrationProjectTaskTime=Update time spent in seconds +MigrationActioncommElement=Update data on actions +MigrationPaymentMode=Data migration for payment type +MigrationCategorieAssociation=Migration of categories +MigrationEvents=Migration of events to add event owner into assignment table +MigrationEventsContact=Migration of events to add event contact into assignment table +MigrationRemiseEntity=Update entity field value of llx_societe_remise +MigrationRemiseExceptEntity=Update entity field value of llx_societe_remise_except +MigrationUserRightsEntity=Update entity field value of llx_user_rights +MigrationUserGroupRightsEntity=Update entity field value of llx_usergroup_rights +MigrationUserPhotoPath=Migration of photo paths for users +MigrationFieldsSocialNetworks=Migration of users fields social networks (%s) +MigrationReloadModule=Reload module %s +MigrationResetBlockedLog=Reset module BlockedLog for v7 algorithm +MigrationImportOrExportProfiles=Migration of import or export profiles (%s) +ShowNotAvailableOptions=Show unavailable options +HideNotAvailableOptions=Hide unavailable options +ErrorFoundDuringMigration=Error(s) were reported during the migration process so next step is not available. To ignore errors, you can click here, but the application or some features may not work correctly until the errors are resolved. +YouTryInstallDisabledByDirLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (directory renamed with .lock suffix).
+YouTryInstallDisabledByFileLock=The application tried to self-upgrade, but the install/upgrade pages have been disabled for security (by the existence of a lock file install.lock in the dolibarr documents directory).
+ClickHereToGoToApp=Click here to go to your application +ClickOnLinkOrRemoveManualy=If an upgrade is in progress, please wait. If not, click on the following link. If you always see this same page, you must remove/rename the file install.lock in the documents directory. +Loaded=Loaded +FunctionTest=Function test diff --git a/htdocs/langs/ms_MY/interventions.lang b/htdocs/langs/ms_MY/interventions.lang new file mode 100644 index 00000000000..a57a84fc4c8 --- /dev/null +++ b/htdocs/langs/ms_MY/interventions.lang @@ -0,0 +1,70 @@ +# Dolibarr language file - Source file is en_US - interventions +Intervention=Intervention +Interventions=Interventions +InterventionCard=Intervention card +NewIntervention=New intervention +AddIntervention=Create intervention +ChangeIntoRepeatableIntervention=Change to repeatable intervention +ListOfInterventions=List of interventions +ActionsOnFicheInter=Actions on intervention +LastInterventions=Latest %s interventions +AllInterventions=All interventions +CreateDraftIntervention=Create draft +InterventionContact=Intervention contact +DeleteIntervention=Delete intervention +ValidateIntervention=Validate intervention +ModifyIntervention=Modify intervention +DeleteInterventionLine=Delete intervention line +ConfirmDeleteIntervention=Are you sure you want to delete this intervention? +ConfirmValidateIntervention=Are you sure you want to validate this intervention under name %s? +ConfirmModifyIntervention=Are you sure you want to modify this intervention? +ConfirmDeleteInterventionLine=Are you sure you want to delete this intervention line? +ConfirmCloneIntervention=Are you sure you want to clone this intervention? +NameAndSignatureOfInternalContact=Name and signature of intervening: +NameAndSignatureOfExternalContact=Name and signature of customer: +DocumentModelStandard=Standard document model for interventions +InterventionCardsAndInterventionLines=Interventions and lines of interventions +InterventionClassifyBilled=Classify "Billed" +InterventionClassifyUnBilled=Classify "Unbilled" +InterventionClassifyDone=Classify "Done" +StatusInterInvoiced=Billed +SendInterventionRef=Submission of intervention %s +SendInterventionByMail=Send intervention by email +InterventionCreatedInDolibarr=Intervention %s created +InterventionValidatedInDolibarr=Intervention %s validated +InterventionModifiedInDolibarr=Intervention %s modified +InterventionClassifiedBilledInDolibarr=Intervention %s set as billed +InterventionClassifiedUnbilledInDolibarr=Intervention %s set as unbilled +InterventionSentByEMail=Intervention %s sent by email +InterventionDeletedInDolibarr=Intervention %s deleted +InterventionsArea=Interventions area +DraftFichinter=Draft interventions +LastModifiedInterventions=Latest %s modified interventions +FichinterToProcess=Interventions to process +TypeContact_fichinter_external_CUSTOMER=Following-up customer contact +PrintProductsOnFichinter=Print also lines of type "product" (not only services) on intervention card +PrintProductsOnFichinterDetails=interventions generated from orders +UseServicesDurationOnFichinter=Use services duration for interventions generated from orders +UseDurationOnFichinter=Hides the duration field for intervention records +UseDateWithoutHourOnFichinter=Hides hours and minutes off the date field for intervention records +InterventionStatistics=Statistics of interventions +NbOfinterventions=No. of intervention cards +NumberOfInterventionsByMonth=No. of intervention cards by month (date of validation) +AmountOfInteventionNotIncludedByDefault=Amount of intervention is not included by default into profit (in most cases, timesheets are used to count time spent). Add option PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT to 1 into home-setup-other to include them. +InterId=Intervention id +InterRef=Intervention ref. +InterDateCreation=Date creation intervention +InterDuration=Duration intervention +InterStatus=Status intervention +InterNote=Note intervention +InterLine=Line of intervention +InterLineId=Line id intervention +InterLineDate=Line date intervention +InterLineDuration=Line duration intervention +InterLineDesc=Line description intervention +RepeatableIntervention=Template of intervention +ToCreateAPredefinedIntervention=To create a predefined or recurring intervention, create a common intervention and convert it into intervention template +ConfirmReopenIntervention=Are you sure you want to open back the intervention %s? +GenerateInter=Generate intervention +FichinterNoContractLinked=Intervention %s has been created without a linked contract. +ErrorFicheinterCompanyDoesNotExist=Company does not exist. Intervention has not been created. diff --git a/htdocs/langs/ms_MY/intracommreport.lang b/htdocs/langs/ms_MY/intracommreport.lang new file mode 100644 index 00000000000..93c46f112bb --- /dev/null +++ b/htdocs/langs/ms_MY/intracommreport.lang @@ -0,0 +1,40 @@ +Module68000Name = Intracomm report +Module68000Desc = Intracomm report management (Support for French DEB/DES format) +IntracommReportSetup = Intracommreport module setup +IntracommReportAbout = About intracommreport + +# Setup +INTRACOMMREPORT_NUM_AGREMENT=Numéro d'agrément (délivré par le CISD de rattachement) +INTRACOMMREPORT_TYPE_ACTEUR=Type d'acteur +INTRACOMMREPORT_ROLE_ACTEUR=Rôle joué par l'acteur +INTRACOMMREPORT_NIV_OBLIGATION_INTRODUCTION=Niveau d'obligation sur les introductions +INTRACOMMREPORT_NIV_OBLIGATION_EXPEDITION=Niveau d'obligation sur les expéditions +INTRACOMMREPORT_CATEG_FRAISDEPORT=Catégorie de services de type "Frais de port" + +INTRACOMMREPORT_NUM_DECLARATION=Numéro de déclarant + +# Menu +MenuIntracommReport=Intracomm report +MenuIntracommReportNew=New declaration +MenuIntracommReportList=List + +# View +NewDeclaration=New declaration +Declaration=Declaration +AnalysisPeriod=Analysis period +TypeOfDeclaration=Type of declaration +DEB=Goods exchange declaration (DEB) +DES=Services exchange declaration (DES) + +# Export page +IntracommReportTitle=Preparation of an XML file in ProDouane format + +# List +IntracommReportList=List of generated declarations +IntracommReportNumber=Numero of declaration +IntracommReportPeriod=Period of analysis +IntracommReportTypeDeclaration=Type of declaration +IntracommReportDownload=download XML file + +# Invoice +IntracommReportTransportMode=Transport mode diff --git a/htdocs/langs/ms_MY/knowledgemanagement.lang b/htdocs/langs/ms_MY/knowledgemanagement.lang new file mode 100644 index 00000000000..bcdf9740cdd --- /dev/null +++ b/htdocs/langs/ms_MY/knowledgemanagement.lang @@ -0,0 +1,54 @@ +# Copyright (C) 2021 SuperAdmin +# +# 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 . + +# +# Generic +# + +# Module label 'ModuleKnowledgeManagementName' +ModuleKnowledgeManagementName = Knowledge Management System +# Module description 'ModuleKnowledgeManagementDesc' +ModuleKnowledgeManagementDesc=Manage a Knowledge Management (KM) or Help-Desk base + +# +# Admin page +# +KnowledgeManagementSetup = Knowledge Management System setup +Settings = Settings +KnowledgeManagementSetupPage = Knowledge Management System setup page + + +# +# About page +# +About = About +KnowledgeManagementAbout = About Knowledge Management +KnowledgeManagementAboutPage = Knowledge Management about page + +KnowledgeManagementArea = Knowledge Management +MenuKnowledgeRecord = Knowledge base +ListKnowledgeRecord = List of articles +NewKnowledgeRecord = New article +ValidateReply = Validate solution +KnowledgeRecords = Articles +KnowledgeRecord = Article +KnowledgeRecordExtraFields = Extrafields for Article +GroupOfTicket=Group of tickets +YouCanLinkArticleToATicketCategory=You can link an article to a ticket group (so the article will be suggested during qualification of new tickets) +SuggestedForTicketsInGroup=Suggested for tickets when group is + +SetObsolete=Set as obsolete +ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? +ConfirmReopenKM=Do you want to restore this article to status "Validated" ? diff --git a/htdocs/langs/ms_MY/languages.lang b/htdocs/langs/ms_MY/languages.lang new file mode 100644 index 00000000000..c246ac8bc77 --- /dev/null +++ b/htdocs/langs/ms_MY/languages.lang @@ -0,0 +1,123 @@ +# Dolibarr language file - Source file is en_US - languages +Language_am_ET=Ethiopian +Language_ar_AR=Arabic +Language_ar_DZ=Arabic (Algeria) +Language_ar_EG=Arabic (Egypt) +Language_ar_JO=Arabic (Jordania) +Language_ar_MA=Arabic (Moroco) +Language_ar_SA=Arabic +Language_ar_TN=Arabic (Tunisia) +Language_ar_IQ=Arabic (Iraq) +Language_as_IN=Assamese +Language_az_AZ=Azerbaijani +Language_bn_BD=Bengali +Language_bn_IN=Bengali (India) +Language_bg_BG=Bulgarian +Language_bo_CN=Tibetan +Language_bs_BA=Bosnian +Language_ca_ES=Catalan +Language_cs_CZ=Czech +Language_cy_GB=Welsh +Language_da_DA=Danish +Language_da_DK=Danish +Language_de_DE=German +Language_de_AT=German (Austria) +Language_de_CH=German (Switzerland) +Language_el_GR=Greek +Language_el_CY=Greek (Cyprus) +Language_en_AE=English (United Arab Emirates) +Language_en_AU=English (Australia) +Language_en_CA=English (Canada) +Language_en_GB=English (United Kingdom) +Language_en_IN=English (India) +Language_en_NZ=English (New Zealand) +Language_en_SA=English (Saudi Arabia) +Language_en_SG=English (Singapore) +Language_en_US=English (United States) +Language_en_ZA=English (South Africa) +Language_es_ES=Spanish +Language_es_AR=Spanish (Argentina) +Language_es_BO=Spanish (Bolivia) +Language_es_CL=Spanish (Chile) +Language_es_CO=Spanish (Colombia) +Language_es_CR=Spanish (Costa Rica) +Language_es_DO=Spanish (Dominican Republic) +Language_es_EC=Spanish (Ecuador) +Language_es_GT=Spanish (Guatemala) +Language_es_HN=Spanish (Honduras) +Language_es_MX=Spanish (Mexico) +Language_es_PA=Spanish (Panama) +Language_es_PY=Spanish (Paraguay) +Language_es_PE=Spanish (Peru) +Language_es_PR=Spanish (Puerto Rico) +Language_es_US=Spanish (USA) +Language_es_UY=Spanish (Uruguay) +Language_es_GT=Spanish (Guatemala) +Language_es_VE=Spanish (Venezuela) +Language_et_EE=Estonian +Language_eu_ES=Basque +Language_fa_IR=Persian +Language_fi_FI=Finnish +Language_fr_BE=French (Belgium) +Language_fr_CA=French (Canada) +Language_fr_CH=French (Switzerland) +Language_fr_CI=French (Cost Ivory) +Language_fr_CM=French (Cameroun) +Language_fr_FR=French +Language_fr_GA=French (Gabon) +Language_fr_NC=French (New Caledonia) +Language_fr_SN=French (Senegal) +Language_fy_NL=Frisian +Language_gl_ES=Galician +Language_he_IL=Hebrew +Language_hi_IN=Hindi (India) +Language_hr_HR=Croatian +Language_hu_HU=Hungarian +Language_id_ID=Indonesian +Language_is_IS=Icelandic +Language_it_IT=Italian +Language_it_CH=Italian (Switzerland) +Language_ja_JP=Japanese +Language_ka_GE=Georgian +Language_kk_KZ=Kazakh +Language_km_KH=Khmer +Language_kn_IN=Kannada +Language_ko_KR=Korean +Language_lo_LA=Lao +Language_lt_LT=Lithuanian +Language_lv_LV=Latvian +Language_mk_MK=Macedonian +Language_mn_MN=Mongolian +Language_my_MM=Burmese +Language_nb_NO=Norwegian (Bokmål) +Language_ne_NP=Nepali +Language_nl_BE=Dutch (Belgium) +Language_nl_NL=Dutch +Language_pl_PL=Polish +Language_pt_AO=Portuguese (Angola) +Language_pt_MZ=Portuguese (Mozambique) +Language_pt_BR=Portuguese (Brazil) +Language_pt_PT=Portuguese +Language_ro_MD=Romanian (Moldavia) +Language_ro_RO=Romanian +Language_ru_RU=Russian +Language_ru_UA=Russian (Ukraine) +Language_ta_IN=Tamil +Language_tg_TJ=Tajik +Language_tr_TR=Turkish +Language_sl_SI=Slovenian +Language_sv_SV=Swedish +Language_sv_SE=Swedish +Language_sq_AL=Albanian +Language_sk_SK=Slovakian +Language_sr_RS=Serbian +Language_sw_SW=Kiswahili +Language_th_TH=Thai +Language_uk_UA=Ukrainian +Language_ur_PK=Urdu +Language_uz_UZ=Uzbek +Language_vi_VN=Vietnamese +Language_zh_CN=Chinese +Language_zh_TW=Chinese (Traditional) +Language_zh_HK=Chinese (Hong Kong) +Language_bh_MY=Malay diff --git a/htdocs/langs/ms_MY/ldap.lang b/htdocs/langs/ms_MY/ldap.lang new file mode 100644 index 00000000000..62f90d795a4 --- /dev/null +++ b/htdocs/langs/ms_MY/ldap.lang @@ -0,0 +1,31 @@ +# Dolibarr language file - Source file is en_US - ldap +YouMustChangePassNextLogon=Password for user %s on the domain %s must be changed. +UserMustChangePassNextLogon=User must change password on the domain %s +LDAPInformationsForThisContact=Information in LDAP database for this contact +LDAPInformationsForThisUser=Information in LDAP database for this user +LDAPInformationsForThisGroup=Information in LDAP database for this group +LDAPInformationsForThisMember=Information in LDAP database for this member +LDAPInformationsForThisMemberType=Information in LDAP database for this member type +LDAPAttributes=LDAP attributes +LDAPCard=LDAP card +LDAPRecordNotFound=Record not found in LDAP database +LDAPUsers=Users in LDAP database +LDAPFieldStatus=Status +LDAPFieldFirstSubscriptionDate=First subscription date +LDAPFieldFirstSubscriptionAmount=First subscription amount +LDAPFieldLastSubscriptionDate=Latest subscription date +LDAPFieldLastSubscriptionAmount=Latest subscription amount +LDAPFieldSkype=Skype id +LDAPFieldSkypeExample=Example: skypeName +UserSynchronized=User synchronized +GroupSynchronized=Group synchronized +MemberSynchronized=Member synchronized +MemberTypeSynchronized=Member type synchronized +ContactSynchronized=Contact synchronized +ForceSynchronize=Force synchronizing Dolibarr -> LDAP +ErrorFailedToReadLDAP=Failed to read LDAP database. Check LDAP module setup and database accessibility. +PasswordOfUserInLDAP=Password of user in LDAP +LDAPPasswordHashType=Password hash type +LDAPPasswordHashTypeExample=Type of password hash used on the server +SupportedForLDAPExportScriptOnly=Only supported by an ldap export script +SupportedForLDAPImportScriptOnly=Only supported by an ldap import script diff --git a/htdocs/langs/ms_MY/link.lang b/htdocs/langs/ms_MY/link.lang new file mode 100644 index 00000000000..1ffcd41a18b --- /dev/null +++ b/htdocs/langs/ms_MY/link.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - languages +LinkANewFile=Link a new file/document +LinkedFiles=Linked files and documents +NoLinkFound=No registered links +LinkComplete=The file has been linked successfully +ErrorFileNotLinked=The file could not be linked +LinkRemoved=The link %s has been removed +ErrorFailedToDeleteLink= Failed to remove link '%s' +ErrorFailedToUpdateLink= Failed to update link '%s' +URLToLink=URL to link +OverwriteIfExists=Overwrite file if exists diff --git a/htdocs/langs/ms_MY/loan.lang b/htdocs/langs/ms_MY/loan.lang new file mode 100644 index 00000000000..d271ed0c140 --- /dev/null +++ b/htdocs/langs/ms_MY/loan.lang @@ -0,0 +1,34 @@ +# Dolibarr language file - Source file is en_US - loan +Loan=Loan +Loans=Loans +NewLoan=New Loan +ShowLoan=Show Loan +PaymentLoan=Loan payment +LoanPayment=Loan payment +ShowLoanPayment=Show Loan Payment +LoanCapital=Capital +Insurance=Insurance +Interest=Interest +Nbterms=Number of terms +Term=Term +LoanAccountancyCapitalCode=Accounting account capital +LoanAccountancyInsuranceCode=Accounting account insurance +LoanAccountancyInterestCode=Accounting account interest +ConfirmDeleteLoan=Confirm deleting this loan +LoanDeleted=Loan Deleted Successfully +ConfirmPayLoan=Confirm classify paid this loan +LoanPaid=Loan Paid +ListLoanAssociatedProject=List of loan associated with the project +AddLoan=Create loan +FinancialCommitment=Financial commitment +InterestAmount=Interest +CapitalRemain=Capital remain +TermPaidAllreadyPaid = This term is allready paid +CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started +CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule +# Admin +ConfigLoan=Configuration of the module loan +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Accounting account capital by default +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Accounting account interest by default +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Accounting account insurance by default +CreateCalcSchedule=Edit financial commitment diff --git a/htdocs/langs/ms_MY/mailmanspip.lang b/htdocs/langs/ms_MY/mailmanspip.lang new file mode 100644 index 00000000000..bab4b3576b4 --- /dev/null +++ b/htdocs/langs/ms_MY/mailmanspip.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Mailman and SPIP module Setup +MailmanTitle=Mailman mailing list system +TestSubscribe=To test subscription to Mailman lists +TestUnSubscribe=To test unsubscribe from Mailman lists +MailmanCreationSuccess=Subscription test was executed successfully +MailmanDeletionSuccess=Unsubscription test was executed successfully +SynchroMailManEnabled=A Mailman update will be performed +SynchroSpipEnabled=A Spip update will be performed +DescADHERENT_MAILMAN_ADMINPW=Mailman administrator password +DescADHERENT_MAILMAN_URL=URL for Mailman subscriptions +DescADHERENT_MAILMAN_UNSUB_URL=URL for Mailman unsubscriptions +DescADHERENT_MAILMAN_LISTS=List(s) for automatic inscription of new members (separated by a comma) +SPIPTitle=SPIP Content Management System +DescADHERENT_SPIP_SERVEUR=SPIP Server +DescADHERENT_SPIP_DB=SPIP database name +DescADHERENT_SPIP_USER=SPIP database login +DescADHERENT_SPIP_PASS=SPIP database password +AddIntoSpip=Add into SPIP +AddIntoSpipConfirmation=Are you sure you want to add this member into SPIP? +AddIntoSpipError=Failed to add the user in SPIP +DeleteIntoSpip=Remove from SPIP +DeleteIntoSpipConfirmation=Are you sure you want to remove this member from SPIP? +DeleteIntoSpipError=Failed to suppress the user from SPIP +SPIPConnectionFailed=Failed to connect to SPIP +SuccessToAddToMailmanList=%s successfully added to mailman list %s or SPIP database +SuccessToRemoveToMailmanList=%s successfully removed from mailman list %s or SPIP database diff --git a/htdocs/langs/ms_MY/mails.lang b/htdocs/langs/ms_MY/mails.lang new file mode 100644 index 00000000000..afb4edb1fcc --- /dev/null +++ b/htdocs/langs/ms_MY/mails.lang @@ -0,0 +1,181 @@ +# Dolibarr language file - Source file is en_US - mails +Mailing=EMailing +EMailing=EMailing +EMailings=EMailings +AllEMailings=All eMailings +MailCard=EMailing card +MailRecipients=Recipients +MailRecipient=Recipient +MailTitle=Description +MailFrom=Sender +MailErrorsTo=Errors to +MailReply=Reply to +MailTo=Receiver(s) +MailToUsers=To user(s) +MailCC=Copy to +MailToCCUsers=Copy to users(s) +MailCCC=Cached copy to +MailTopic=Email subject +MailText=Message +MailFile=Attached files +MailMessage=Email body +SubjectNotIn=Not in Subject +BodyNotIn=Not in Body +ShowEMailing=Show emailing +ListOfEMailings=List of emailings +NewMailing=New emailing +EditMailing=Edit emailing +ResetMailing=Resend emailing +DeleteMailing=Delete emailing +DeleteAMailing=Delete an emailing +PreviewMailing=Preview emailing +CreateMailing=Create emailing +TestMailing=Test email +ValidMailing=Valid emailing +MailingStatusDraft=Draft +MailingStatusValidated=Validated +MailingStatusSent=Sent +MailingStatusSentPartialy=Sent partially +MailingStatusSentCompletely=Sent completely +MailingStatusError=Error +MailingStatusNotSent=Not sent +MailSuccessfulySent=Email (from %s to %s) successfully accepted for delivery +MailingSuccessfullyValidated=EMailing successfully validated +MailUnsubcribe=Unsubscribe +MailingStatusNotContact=Don't contact anymore +MailingStatusReadAndUnsubscribe=Read and unsubscribe +ErrorMailRecipientIsEmpty=Email recipient is empty +WarningNoEMailsAdded=No new Email to add to recipient's list. +ConfirmValidMailing=Are you sure you want to validate this emailing? +ConfirmResetMailing=Warning, by re-initializing emailing %s, you will allow the re-sending this email in a bulk mailing. Are you sure you want to do this? +ConfirmDeleteMailing=Are you sure you want to delete this emailing? +NbOfUniqueEMails=No. of unique emails +NbOfEMails=No. of EMails +TotalNbOfDistinctRecipients=Number of distinct recipients +NoTargetYet=No recipients defined yet (Go on tab 'Recipients') +NoRecipientEmail=No recipient email for %s +RemoveRecipient=Remove recipient +YouCanAddYourOwnPredefindedListHere=To create your email selector module, see htdocs/core/modules/mailings/README. +EMailTestSubstitutionReplacedByGenericValues=When using test mode, substitutions variables are replaced by generic values +MailingAddFile=Attach this file +NoAttachedFiles=No attached files +BadEMail=Bad value for Email +EMailNotDefined=Email not defined +ConfirmCloneEMailing=Are you sure you want to clone this emailing? +CloneContent=Clone message +CloneReceivers=Cloner recipients +DateLastSend=Date of latest sending +DateSending=Date sending +SentTo=Sent to %s +MailingStatusRead=Read +YourMailUnsubcribeOK=The email %s is correctly unsubscribe from mailing list +ActivateCheckReadKey=Key used to encrypt URL used for "Read Receipt" and "Unsubscribe" feature +EMailSentToNRecipients=Email sent to %s recipients. +EMailSentForNElements=Email sent for %s elements. +XTargetsAdded=%s recipients added into target list +OnlyPDFattachmentSupported=If the PDF documents were already generated for the objects to send, they will be attached to email. If not, no email will be sent (also, note that only pdf documents are supported as attachments in mass sending in this version). +AllRecipientSelected=The recipients of the %s record selected (if their email is known). +GroupEmails=Group emails +OneEmailPerRecipient=One email per recipient (by default, one email per record selected) +WarningIfYouCheckOneRecipientPerEmail=Warning, if you check this box, it means only one email will be sent for several different record selected, so, if your message contains substitution variables that refers to data of a record, it becomes not possible to replace them. +ResultOfMailSending=Result of mass Email sending +NbSelected=Number selected +NbIgnored=Number ignored +NbSent=Number sent +SentXXXmessages=%s message(s) sent. +ConfirmUnvalidateEmailing=Are you sure you want to change email %s to draft status? +MailingModuleDescContactsWithThirdpartyFilter=Contact with customer filters +MailingModuleDescContactsByCompanyCategory=Contacts by third-party category +MailingModuleDescContactsByCategory=Contacts by categories +MailingModuleDescContactsByFunction=Contacts by position +MailingModuleDescEmailsFromFile=Emails from file +MailingModuleDescEmailsFromUser=Emails input by user +MailingModuleDescDolibarrUsers=Users with Emails +MailingModuleDescThirdPartiesByCategories=Third parties (by categories) +SendingFromWebInterfaceIsNotAllowed=Sending from web interface is not allowed. +EmailCollectorFilterDesc=All filters must match to have an email being collected + +# Libelle des modules de liste de destinataires mailing +LineInFile=Line %s in file +RecipientSelectionModules=Defined requests for recipient's selection +MailSelectedRecipients=Selected recipients +MailingArea=EMailings area +LastMailings=Latest %s emailings +TargetsStatistics=Targets statistics +NbOfCompaniesContacts=Unique contacts/addresses +MailNoChangePossible=Recipients for validated emailing can't be changed +SearchAMailing=Search mailing +SendMailing=Send emailing +SentBy=Sent by +MailingNeedCommand=Sending an emailing can be performed from command line. Ask your server administrator to launch the following command to send the emailing to all recipients: +MailingNeedCommand2=You can however send them online by adding parameter MAILING_LIMIT_SENDBYWEB with value of max number of emails you want to send by session. For this, go on Home - Setup - Other. +ConfirmSendingEmailing=If you want to send emailing directly from this screen, please confirm you are sure you want to send emailing now from your browser ? +LimitSendingEmailing=Note: Sending of emailings from web interface is done in several times for security and timeout reasons, %s recipients at a time for each sending session. +TargetsReset=Clear list +ToClearAllRecipientsClickHere=Click here to clear the recipient list for this emailing +ToAddRecipientsChooseHere=Add recipients by choosing from the lists +NbOfEMailingsReceived=Mass emailings received +NbOfEMailingsSend=Mass emailings sent +IdRecord=ID record +DeliveryReceipt=Delivery Ack. +YouCanUseCommaSeparatorForSeveralRecipients=You can use the comma separator to specify several recipients. +TagCheckMail=Track mail opening +TagUnsubscribe=Unsubscribe link +TagSignature=Signature of sending user +EMailRecipient=Recipient Email +TagMailtoEmail=Recipient Email (including html "mailto:" link) +NoEmailSentBadSenderOrRecipientEmail=No email sent. Bad sender or recipient email. Verify user profile. +# Module Notifications +Notifications=Notifications +NotificationsAuto=Notifications Auto. +NoNotificationsWillBeSent=No automatic email notifications are planned for this event type and company +ANotificationsWillBeSent=1 automatic notification will be sent by email +SomeNotificationsWillBeSent=%s automatic notifications will be sent by email +AddNewNotification=Subscribe to a new automatic email notification (target/event) +ListOfActiveNotifications=List of all active subscriptions (targets/events) for automatic email notification +ListOfNotificationsDone=List of all automatic email notifications sent +MailSendSetupIs=Configuration of email sending has been setup to '%s'. This mode can't be used to send mass emailing. +MailSendSetupIs2=You must first go, with an admin account, into menu %sHome - Setup - EMails%s to change parameter '%s' to use mode '%s'. With this mode, you can enter setup of the SMTP server provided by your Internet Service Provider and use Mass emailing feature. +MailSendSetupIs3=If you have any questions on how to setup your SMTP server, you can ask to %s. +YouCanAlsoUseSupervisorKeyword=You can also add the keyword __SUPERVISOREMAIL__ to have email being sent to the supervisor of user (works only if an email is defined for this supervisor) +NbOfTargetedContacts=Current number of targeted contact emails +UseFormatFileEmailToTarget=Imported file must have format email;name;firstname;other +UseFormatInputEmailToTarget=Enter a string with format email;name;firstname;other +MailAdvTargetRecipients=Recipients (advanced selection) +AdvTgtTitle=Fill input fields to preselect the third parties or contacts/addresses to target +AdvTgtSearchTextHelp=Use %% as wildcards. For example to find all item like jean, joe, jim, you can input j%%, you can also use ; as separator for value, and use ! for except this value. For example jean;joe;jim%%;!jimo;!jima%% will target all jean, joe, start with jim but not jimo and not everything that starts with jima +AdvTgtSearchIntHelp=Use interval to select int or float value +AdvTgtMinVal=Minimum value +AdvTgtMaxVal=Maximum value +AdvTgtSearchDtHelp=Use interval to select date value +AdvTgtStartDt=Start dt. +AdvTgtEndDt=End dt. +AdvTgtTypeOfIncudeHelp=Target Email of third party and email of contact of the third party, or just third-party email or just contact email +AdvTgtTypeOfIncude=Type of targeted email +AdvTgtContactHelp=Use only if you target contact into "Type of targeted email" +AddAll=Add all +RemoveAll=Remove all +ItemsCount=Item(s) +AdvTgtNameTemplate=Filter name +AdvTgtAddContact=Add emails according to criteria +AdvTgtLoadFilter=Load filter +AdvTgtDeleteFilter=Delete filter +AdvTgtSaveFilter=Save filter +AdvTgtCreateFilter=Create filter +AdvTgtOrCreateNewFilter=Name of new filter +NoContactWithCategoryFound=No category found linked to some contacts/addresses +NoContactLinkedToThirdpartieWithCategoryFound=No category found linked to some thirdparties +OutGoingEmailSetup=Outgoing emails +InGoingEmailSetup=Incoming emails +OutGoingEmailSetupForEmailing=Outgoing emails (for module %s) +DefaultOutgoingEmailSetup=Same configuration than the global Outgoing email setup +Information=Information +ContactsWithThirdpartyFilter=Contacts with third-party filter +Unanswered=Unanswered +Answered=Answered +IsNotAnAnswer=Is not answer (initial email) +IsAnAnswer=Is an answer of an initial email +RecordCreatedByEmailCollector=Record created by the Email Collector %s from email %s +DefaultBlacklistMailingStatus=Default value for field '%s' when creating a new contact +DefaultStatusEmptyMandatory=Empty but mandatory +WarningLimitSendByDay=WARNING: The setup or contract of your instance limits your number of emails per day to %s. Trying to send more may result in having your instance slow down or suspended. Please contact your support if you need a higher quota. diff --git a/htdocs/langs/ms_MY/main.lang b/htdocs/langs/ms_MY/main.lang new file mode 100644 index 00000000000..a8768f41cbd --- /dev/null +++ b/htdocs/langs/ms_MY/main.lang @@ -0,0 +1,1182 @@ +# 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=. +SeparatorThousand=, +FormatDateShort=%m/%d/%Y +FormatDateShortInput=%m/%d/%Y +FormatDateShortJava=MM/dd/yyyy +FormatDateShortJavaInput=MM/dd/yyyy +FormatDateShortJQuery=mm/dd/yy +FormatDateShortJQueryInput=mm/dd/yy +FormatHourShortJQuery=HH:MI +FormatHourShort=%I:%M %p +FormatHourShortDuration=%H:%M +FormatDateTextShort=%b %d, %Y +FormatDateText=%B %d, %Y +FormatDateHourShort=%m/%d/%Y %I:%M %p +FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p +FormatDateHourTextShort=%b %d, %Y, %I:%M %p +FormatDateHourText=%B %d, %Y, %I:%M %p +DatabaseConnection=Database connection +NoTemplateDefined=No template available for this email type +AvailableVariables=Available substitution variables +NoTranslation=No translation +Translation=Translation +CurrentTimeZone=TimeZone PHP (server) +EmptySearchString=Enter non empty search criterias +EnterADateCriteria=Enter a date criteria +NoRecordFound=No record found +NoRecordDeleted=No record deleted +NotEnoughDataYet=Not enough data +NoError=No error +Error=Error +Errors=Errors +ErrorFieldRequired=Field '%s' is required +ErrorFieldFormat=Field '%s' has a bad value +ErrorFileDoesNotExists=File %s does not exist +ErrorFailedToOpenFile=Failed to open file %s +ErrorCanNotCreateDir=Cannot create dir %s +ErrorCanNotReadDir=Cannot read dir %s +ErrorConstantNotDefined=Parameter %s not defined +ErrorUnknown=Unknown error +ErrorSQL=SQL Error +ErrorLogoFileNotFound=Logo file '%s' was not found +ErrorGoToGlobalSetup=Go to 'Company/Organization' setup to fix this +ErrorGoToModuleSetup=Go to Module setup to fix this +ErrorFailedToSendMail=Failed to send mail (sender=%s, receiver=%s) +ErrorFileNotUploaded=File was not uploaded. Check that size does not exceed maximum allowed, that free space is available on disk and that there is not already a file with same name in this directory. +ErrorInternalErrorDetected=Error detected +ErrorWrongHostParameter=Wrong host parameter +ErrorYourCountryIsNotDefined=Your country is not defined. Go to Home-Setup-Edit and post the form again. +ErrorRecordIsUsedByChild=Failed to delete this record. This record is used by at least one child record. +ErrorWrongValue=Wrong value +ErrorWrongValueForParameterX=Wrong value for parameter %s +ErrorNoRequestInError=No request in error +ErrorServiceUnavailableTryLater=Service not available at the moment. Try again later. +ErrorDuplicateField=Duplicate value in a unique field +ErrorSomeErrorWereFoundRollbackIsDone=Some errors were found. Changes have been rolled back. +ErrorConfigParameterNotDefined=Parameter %s is not defined in the Dolibarr config file conf.php. +ErrorCantLoadUserFromDolibarrDatabase=Failed to find user %s in Dolibarr database. +ErrorNoVATRateDefinedForSellerCountry=Error, no vat rates defined for country '%s'. +ErrorNoSocialContributionForSellerCountry=Error, no social/fiscal taxes type defined for country '%s'. +ErrorFailedToSaveFile=Error, failed to save file. +ErrorCannotAddThisParentWarehouse=You are trying to add a parent warehouse which is already a child of a existing warehouse +FieldCannotBeNegative=Field "%s" cannot be negative +MaxNbOfRecordPerPage=Max. number of records per page +NotAuthorized=You are not authorized to do that. +SetDate=Set date +SelectDate=Select a date +SeeAlso=See also %s +SeeHere=See here +ClickHere=Click here +Here=Here +Apply=Apply +BackgroundColorByDefault=Default background color +FileRenamed=The file was successfully renamed +FileGenerated=The file was successfully generated +FileSaved=The file was successfully saved +FileUploaded=The file was successfully uploaded +FileTransferComplete=File(s) uploaded successfully +FilesDeleted=File(s) successfully deleted +FileWasNotUploaded=A file is selected for attachment but was not yet uploaded. Click on "Attach file" for this. +NbOfEntries=No. of entries +GoToWikiHelpPage=Read online help (Internet access needed) +GoToHelpPage=Read help +DedicatedPageAvailable=Dedicated help page related to your current screen +HomePage=Home Page +RecordSaved=Record saved +RecordDeleted=Record deleted +RecordGenerated=Record generated +LevelOfFeature=Level of features +NotDefined=Not defined +DolibarrInHttpAuthenticationSoPasswordUseless=Dolibarr authentication mode is set to %s in configuration file conf.php.
This means that the password database is external to Dolibarr, so changing this field may have no effect. +Administrator=Administrator +Undefined=Undefined +PasswordForgotten=Password forgotten? +NoAccount=No account? +SeeAbove=See above +HomeArea=Home +LastConnexion=Last login +PreviousConnexion=Previous login +PreviousValue=Previous value +ConnectedOnMultiCompany=Connected on environment +ConnectedSince=Connected since +AuthenticationMode=Authentication mode +RequestedUrl=Requested URL +DatabaseTypeManager=Database type manager +RequestLastAccessInError=Latest database access request error +ReturnCodeLastAccessInError=Return code for latest database access request error +InformationLastAccessInError=Information for latest database access request error +DolibarrHasDetectedError=Dolibarr has detected a technical error +YouCanSetOptionDolibarrMainProdToZero=You can read log file or set option $dolibarr_main_prod to '0' in your config file to get more information. +InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +MoreInformation=More information +TechnicalInformation=Technical information +TechnicalID=Technical ID +LineID=Line ID +NotePublic=Note (public) +NotePrivate=Note (private) +PrecisionUnitIsLimitedToXDecimals=Dolibarr was setup to limit precision of unit prices to %s decimals. +DoTest=Test +ToFilter=Filter +NoFilter=No filter +WarningYouHaveAtLeastOneTaskLate=Warning, you have at least one element that has exceeded the tolerance time. +yes=yes +Yes=Yes +no=no +No=No +All=All +Home=Home +Help=Help +OnlineHelp=Online help +PageWiki=Wiki page +MediaBrowser=Media browser +Always=Always +Never=Never +Under=under +Period=Period +PeriodEndDate=End date for period +SelectedPeriod=Selected period +PreviousPeriod=Previous period +Activate=Activate +Activated=Activated +Closed=Closed +Closed2=Closed +NotClosed=Not closed +Enabled=Enabled +Enable=Enable +Deprecated=Deprecated +Disable=Disable +Disabled=Disabled +Add=Add +AddLink=Add link +RemoveLink=Remove link +AddToDraft=Add to draft +Update=Update +Close=Close +CloseAs=Set status to +CloseBox=Remove widget from your dashboard +Confirm=Confirm +ConfirmSendCardByMail=Do you really want to send the content of this card by mail to %s? +Delete=Delete +Remove=Remove +Resiliate=Terminate +Cancel=Cancel +Modify=Modify +Edit=Edit +Validate=Validate +ValidateAndApprove=Validate and Approve +ToValidate=To validate +NotValidated=Not validated +Save=Save +SaveAs=Save As +SaveAndStay=Save and stay +SaveAndNew=Save and new +TestConnection=Test connection +ToClone=Clone +ConfirmCloneAsk=Are you sure you want to clone the object %s? +ConfirmClone=Choose the data you want to clone: +NoCloneOptionsSpecified=No data to clone defined. +Of=of +Go=Go +Run=Run +CopyOf=Copy of +Show=Show +Hide=Hide +ShowCardHere=Show card +Search=Search +SearchOf=Search +SearchMenuShortCut=Ctrl + shift + f +QuickAdd=Quick add +QuickAddMenuShortCut=Ctrl + shift + l +Valid=Valid +Approve=Approve +Disapprove=Disapprove +ReOpen=Re-Open +Upload=Upload +ToLink=Link +Select=Select +SelectAll=Select all +Choose=Choose +Resize=Resize +ResizeOrCrop=Resize or Crop +Recenter=Recenter +Author=Author +User=User +Users=Users +Group=Group +Groups=Groups +UserGroup=User group +UserGroups=User groups +NoUserGroupDefined=No user group defined +Password=Password +PasswordRetype=Retype your password +NoteSomeFeaturesAreDisabled=Note that a lot of features/modules are disabled in this demonstration. +Name=Name +NameSlashCompany=Name / Company +Person=Person +Parameter=Parameter +Parameters=Parameters +Value=Value +PersonalValue=Personal value +NewObject=New %s +NewValue=New value +OldValue=Old value %s +CurrentValue=Current value +Code=Code +Type=Type +Language=Language +MultiLanguage=Multi-language +Note=Note +Title=Title +Label=Label +RefOrLabel=Ref. or label +Info=Log +Family=Family +Description=Description +Designation=Description +DescriptionOfLine=Description of line +DateOfLine=Date of line +DurationOfLine=Duration of line +ParentLine=Parent line ID +Model=Doc template +DefaultModel=Default doc template +Action=Event +About=About +Number=Number +NumberByMonth=Total reports by month +AmountByMonth=Amount by month +Numero=Number +Limit=Limit +Limits=Limits +Logout=Logout +NoLogoutProcessWithAuthMode=No applicative disconnect feature with authentication mode %s +Connection=Login +Setup=Setup +Alert=Alert +MenuWarnings=Alerts +Previous=Previous +Next=Next +Cards=Cards +Card=Card +Now=Now +HourStart=Start hour +Deadline=Deadline +Date=Date +DateAndHour=Date and hour +DateToday=Today's date +DateReference=Reference date +DateStart=Start date +DateEnd=End date +DateCreation=Creation date +DateCreationShort=Creat. date +IPCreation=Creation IP +DateModification=Modification date +DateModificationShort=Modif. date +IPModification=Modification IP +DateLastModification=Latest modification date +DateValidation=Validation date +DateSigning=Signing date +DateClosing=Closing date +DateDue=Due date +DateValue=Value date +DateValueShort=Value date +DateOperation=Operation date +DateOperationShort=Oper. Date +DateLimit=Limit date +DateRequest=Request date +DateProcess=Process date +DateBuild=Report build date +DatePayment=Date of payment +DateApprove=Approving date +DateApprove2=Approving date (second approval) +RegistrationDate=Registration date +UserCreation=Creation user +UserModification=Modification user +UserValidation=Validation user +UserCreationShort=Creat. user +UserModificationShort=Modif. user +UserValidationShort=Valid. user +DurationYear=year +DurationMonth=month +DurationWeek=week +DurationDay=day +DurationYears=years +DurationMonths=months +DurationWeeks=weeks +DurationDays=days +Year=Year +Month=Month +Week=Week +WeekShort=Week +Day=Day +Hour=Hour +Minute=Minute +Second=Second +Years=Years +Months=Months +Days=Days +days=days +Hours=Hours +Minutes=Minutes +Seconds=Seconds +Weeks=Weeks +Today=Today +Yesterday=Yesterday +Tomorrow=Tomorrow +Morning=Morning +Afternoon=Afternoon +Quadri=Quadri +MonthOfDay=Month of the day +DaysOfWeek=Days of week +HourShort=H +MinuteShort=mn +Rate=Rate +CurrencyRate=Currency conversion rate +UseLocalTax=Include tax +Bytes=Bytes +KiloBytes=Kilobytes +MegaBytes=Megabytes +GigaBytes=Gigabytes +TeraBytes=Terabytes +UserAuthor=Created by +UserModif=Updated by +b=b. +Kb=Kb +Mb=Mb +Gb=Gb +Tb=Tb +Cut=Cut +Copy=Copy +Paste=Paste +Default=Default +DefaultValue=Default value +DefaultValues=Default values/filters/sorting +Price=Price +PriceCurrency=Price (currency) +UnitPrice=Unit price +UnitPriceHT=Unit price (excl.) +UnitPriceHTCurrency=Unit price (excl.) (currency) +UnitPriceTTC=Unit price +PriceU=U.P. +PriceUHT=U.P. (net) +PriceUHTCurrency=U.P (net) (currency) +PriceUTTC=U.P. (inc. tax) +Amount=Amount +AmountInvoice=Invoice amount +AmountInvoiced=Amount invoiced +AmountInvoicedHT=Amount invoiced (excl. tax) +AmountInvoicedTTC=Amount invoiced (inc. tax) +AmountPayment=Payment amount +AmountHTShort=Amount (excl.) +AmountTTCShort=Amount (inc. tax) +AmountHT=Amount (excl. tax) +AmountTTC=Amount (inc. tax) +AmountVAT=Amount tax +MulticurrencyAlreadyPaid=Already paid, original currency +MulticurrencyRemainderToPay=Remain to pay, original currency +MulticurrencyPaymentAmount=Payment amount, original currency +MulticurrencyAmountHT=Amount (excl. tax), original currency +MulticurrencyAmountTTC=Amount (inc. of tax), original currency +MulticurrencyAmountVAT=Amount tax, original currency +MulticurrencySubPrice=Amount sub price multi currency +AmountLT1=Amount tax 2 +AmountLT2=Amount tax 3 +AmountLT1ES=Amount RE +AmountLT2ES=Amount IRPF +AmountTotal=Total amount +AmountAverage=Average amount +PriceQtyMinHT=Price quantity min. (excl. tax) +PriceQtyMinHTCurrency=Price quantity min. (excl. tax) (currency) +PercentOfOriginalObject=Percent of original object +AmountOrPercent=Amount or percent +Percentage=Percentage +Total=Total +SubTotal=Subtotal +TotalHTShort=Total (excl.) +TotalHT100Short=Total 100%% (excl.) +TotalHTShortCurrency=Total (excl. in currency) +TotalTTCShort=Total (inc. tax) +TotalHT=Total (excl. tax) +TotalHTforthispage=Total (excl. tax) for this page +Totalforthispage=Total for this page +TotalTTC=Total (inc. tax) +TotalTTCToYourCredit=Total (inc. tax) to your credit +TotalVAT=Total tax +TotalVATIN=Total IGST +TotalLT1=Total tax 2 +TotalLT2=Total tax 3 +TotalLT1ES=Total RE +TotalLT2ES=Total IRPF +TotalLT1IN=Total CGST +TotalLT2IN=Total SGST +HT=Excl. tax +TTC=Inc. tax +INCVATONLY=Inc. VAT +INCT=Inc. all taxes +VAT=Sales tax +VATIN=IGST +VATs=Sales taxes +VATINs=IGST taxes +LT1=Sales tax 2 +LT1Type=Sales tax 2 type +LT2=Sales tax 3 +LT2Type=Sales tax 3 type +LT1ES=RE +LT2ES=IRPF +LT1IN=CGST +LT2IN=SGST +LT1GC=Additionnal cents +VATRate=Tax Rate +RateOfTaxN=Rate of tax %s +VATCode=Tax Rate code +VATNPR=Tax Rate NPR +DefaultTaxRate=Default tax rate +Average=Average +Sum=Sum +Delta=Delta +StatusToPay=To pay +RemainToPay=Remain to pay +Module=Module/Application +Modules=Modules/Applications +Option=Option +Filters=Filters +List=List +FullList=Full list +FullConversation=Full conversation +Statistics=Statistics +OtherStatistics=Other statistics +Status=Status +Favorite=Favorite +ShortInfo=Info. +Ref=Ref. +ExternalRef=Ref. extern +RefSupplier=Ref. vendor +RefPayment=Ref. payment +CommercialProposalsShort=Commercial proposals +Comment=Comment +Comments=Comments +ActionsToDo=Events to do +ActionsToDoShort=To do +ActionsDoneShort=Done +ActionNotApplicable=Not applicable +ActionRunningNotStarted=To start +ActionRunningShort=In progress +ActionDoneShort=Finished +ActionUncomplete=Incomplete +LatestLinkedEvents=Latest %s linked events +CompanyFoundation=Company/Organization +Accountant=Accountant +ContactsForCompany=Contacts for this third party +ContactsAddressesForCompany=Contacts/addresses for this third party +AddressesForCompany=Addresses for this third party +ActionsOnCompany=Events for this third party +ActionsOnContact=Events for this contact/address +ActionsOnContract=Events for this contract +ActionsOnMember=Events about this member +ActionsOnProduct=Events about this product +NActionsLate=%s late +ToDo=To do +Completed=Completed +Running=In progress +RequestAlreadyDone=Request already recorded +Filter=Filter +FilterOnInto=Search criteria '%s' into fields %s +RemoveFilter=Remove filter +ChartGenerated=Chart generated +ChartNotGenerated=Chart not generated +GeneratedOn=Build on %s +Generate=Generate +Duration=Duration +TotalDuration=Total duration +Summary=Summary +DolibarrStateBoard=Database Statistics +DolibarrWorkBoard=Open Items +NoOpenedElementToProcess=No open element to process +Available=Available +NotYetAvailable=Not yet available +NotAvailable=Not available +Categories=Tags/categories +Category=Tag/category +By=By +From=From +FromDate=From +FromLocation=From +to=to +To=to +ToDate=to +ToLocation=to +at=at +and=and +or=or +Other=Other +Others=Others +OtherInformations=Other information +Workflow=Workflow +Quantity=Quantity +Qty=Qty +ChangedBy=Changed by +ApprovedBy=Approved by +ApprovedBy2=Approved by (second approval) +Approved=Approved +Refused=Refused +ReCalculate=Recalculate +ResultKo=Failure +Reporting=Reporting +Reportings=Reporting +Draft=Draft +Drafts=Drafts +StatusInterInvoiced=Invoiced +Validated=Validated +ValidatedToProduce=Validated (To produce) +Opened=Open +OpenAll=Open (All) +ClosedAll=Closed (All) +New=New +Discount=Discount +Unknown=Unknown +General=General +Size=Size +OriginalSize=Original size +Received=Received +Paid=Paid +Topic=Subject +ByCompanies=By third parties +ByUsers=By user +Links=Links +Link=Link +Rejects=Rejects +Preview=Preview +NextStep=Next step +Datas=Data +None=None +NoneF=None +NoneOrSeveral=None or several +Late=Late +LateDesc=An item is defined as Delayed as per the system configuration in menu Home - Setup - Alerts. +NoItemLate=No late item +Photo=Picture +Photos=Pictures +AddPhoto=Add picture +DeletePicture=Picture delete +ConfirmDeletePicture=Confirm picture deletion? +Login=Login +LoginEmail=Login (email) +LoginOrEmail=Login or Email +CurrentLogin=Current login +EnterLoginDetail=Enter login details +January=January +February=February +March=March +April=April +May=May +June=June +July=July +August=August +September=September +October=October +November=November +December=December +Month01=January +Month02=February +Month03=March +Month04=April +Month05=May +Month06=June +Month07=July +Month08=August +Month09=September +Month10=October +Month11=November +Month12=December +MonthShort01=Jan +MonthShort02=Feb +MonthShort03=Mar +MonthShort04=Apr +MonthShort05=May +MonthShort06=Jun +MonthShort07=Jul +MonthShort08=Aug +MonthShort09=Sep +MonthShort10=Oct +MonthShort11=Nov +MonthShort12=Dec +MonthVeryShort01=J +MonthVeryShort02=F +MonthVeryShort03=M +MonthVeryShort04=A +MonthVeryShort05=M +MonthVeryShort06=J +MonthVeryShort07=J +MonthVeryShort08=A +MonthVeryShort09=S +MonthVeryShort10=O +MonthVeryShort11=N +MonthVeryShort12=D +AttachedFiles=Attached files and documents +JoinMainDoc=Join main document +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found +DateFormatYYYYMM=YYYY-MM +DateFormatYYYYMMDD=YYYY-MM-DD +DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS +ReportName=Report name +ReportPeriod=Report period +ReportDescription=Description +Report=Report +Keyword=Keyword +Origin=Origin +Legend=Legend +Fill=Fill +Reset=Reset +File=File +Files=Files +NotAllowed=Not allowed +ReadPermissionNotAllowed=Read permission not allowed +AmountInCurrency=Amount in %s currency +Example=Example +Examples=Examples +NoExample=No example +FindBug=Report a bug +NbOfThirdParties=Number of third parties +NbOfLines=Number of lines +NbOfObjects=Number of objects +NbOfObjectReferers=Number of related items +Referers=Related items +TotalQuantity=Total quantity +DateFromTo=From %s to %s +DateFrom=From %s +DateUntil=Until %s +Check=Check +Uncheck=Uncheck +Internal=Internal +External=External +Internals=Internal +Externals=External +Warning=Warning +Warnings=Warnings +BuildDoc=Build Doc +Entity=Environment +Entities=Entities +CustomerPreview=Customer preview +SupplierPreview=Vendor preview +ShowCustomerPreview=Show customer preview +ShowSupplierPreview=Show vendor preview +RefCustomer=Ref. customer +InternalRef=Internal ref. +Currency=Currency +InfoAdmin=Information for administrators +Undo=Undo +Redo=Redo +ExpandAll=Expand all +UndoExpandAll=Undo expand +SeeAll=See all +Reason=Reason +FeatureNotYetSupported=Feature not yet supported +CloseWindow=Close window +Response=Response +Priority=Priority +SendByMail=Send by email +MailSentBy=Email sent by +NotSent=Not sent +TextUsedInTheMessageBody=Email body +SendAcknowledgementByMail=Send confirmation email +SendMail=Send email +Email=Email +NoEMail=No email +AlreadyRead=Already read +NotRead=Unread +NoMobilePhone=No mobile phone +Owner=Owner +FollowingConstantsWillBeSubstituted=The following constants will be replaced with the corresponding value. +Refresh=Refresh +BackToList=Back to list +BackToTree=Back to tree +GoBack=Go back +CanBeModifiedIfOk=Can be modified if valid +CanBeModifiedIfKo=Can be modified if not valid +ValueIsValid=Value is valid +ValueIsNotValid=Value is not valid +RecordCreatedSuccessfully=Record created successfully +RecordModifiedSuccessfully=Record modified successfully +RecordsModified=%s record(s) modified +RecordsDeleted=%s record(s) deleted +RecordsGenerated=%s record(s) generated +AutomaticCode=Automatic code +FeatureDisabled=Feature disabled +MoveBox=Move widget +Offered=Offered +NotEnoughPermissions=You don't have permission for this action +UserNotInHierachy=This action is reserved to the supervisors of this user +SessionName=Session name +Method=Method +Receive=Receive +CompleteOrNoMoreReceptionExpected=Complete or nothing more expected +ExpectedValue=Expected Value +ExpectedQty=Expected Qty +PartialWoman=Partial +TotalWoman=Total +NeverReceived=Never received +Canceled=Canceled +YouCanChangeValuesForThisListFromDictionarySetup=You can change values for this list from menu Setup - Dictionaries +YouCanChangeValuesForThisListFrom=You can change values for this list from menu %s +YouCanSetDefaultValueInModuleSetup=You can set the default value used when creating a new record in module setup +Color=Color +Documents=Linked files +Documents2=Documents +UploadDisabled=Upload disabled +MenuAccountancy=Accounting +MenuECM=Documents +MenuAWStats=AWStats +MenuMembers=Members +MenuAgendaGoogle=Google agenda +MenuTaxesAndSpecialExpenses=Taxes | Special expenses +ThisLimitIsDefinedInSetup=Dolibarr limit (Menu home-setup-security): %s Kb, PHP limit: %s Kb +ThisLimitIsDefinedInSetupAt=Dolibarr limit (Menu %s): %s Kb, PHP limit (Param %s): %s Kb +NoFileFound=No documents uploaded +CurrentUserLanguage=Current language +CurrentTheme=Current theme +CurrentMenuManager=Current menu manager +Browser=Browser +Layout=Layout +Screen=Screen +DisabledModules=Disabled modules +For=For +ForCustomer=For customer +Signature=Signature +DateOfSignature=Date of signature +HidePassword=Show command with password hidden +UnHidePassword=Show real command with clear password +Root=Root +RootOfMedias=Root of public medias (/medias) +Informations=Information +Page=Page +Notes=Notes +AddNewLine=Add new line +AddFile=Add file +FreeZone=Free-text product +FreeLineOfType=Free-text item, type: +CloneMainAttributes=Clone object with its main attributes +ReGeneratePDF=Re-generate PDF +PDFMerge=PDF Merge +Merge=Merge +DocumentModelStandardPDF=Standard PDF template +PrintContentArea=Show page to print main content area +MenuManager=Menu manager +WarningYouAreInMaintenanceMode=Warning, you are in maintenance mode: only login %s is allowed to use the application in this mode. +CoreErrorTitle=System error +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 +ValidatePayment=Validate payment +CreditOrDebitCard=Credit or debit card +FieldsWithAreMandatory=Fields with %s are mandatory +FieldsWithIsForPublic=Fields with %s are shown in public list of members. If you don't want this, uncheck the "public" box. +AccordingToGeoIPDatabase=(according to GeoIP conversion) +Line=Line +NotSupported=Not supported +RequiredField=Required field +Result=Result +ToTest=Test +ValidateBefore=Item must be validated before using this feature +Visibility=Visibility +Totalizable=Totalizable +TotalizableDesc=This field is totalizable in list +Private=Private +Hidden=Hidden +Resources=Resources +Source=Source +Prefix=Prefix +Before=Before +After=After +IPAddress=IP address +Frequency=Frequency +IM=Instant messaging +NewAttribute=New attribute +AttributeCode=Attribute code +URLPhoto=URL of photo/logo +SetLinkToAnotherThirdParty=Link to another third party +LinkTo=Link to +LinkToProposal=Link to proposal +LinkToExpedition= Link to expedition +LinkToOrder=Link to order +LinkToInvoice=Link to invoice +LinkToTemplateInvoice=Link to template invoice +LinkToSupplierOrder=Link to purchase order +LinkToSupplierProposal=Link to vendor proposal +LinkToSupplierInvoice=Link to vendor invoice +LinkToContract=Link to contract +LinkToIntervention=Link to intervention +LinkToTicket=Link to ticket +LinkToMo=Link to Mo +CreateDraft=Create draft +SetToDraft=Back to draft +ClickToEdit=Click to edit +ClickToRefresh=Click to refresh +EditWithEditor=Edit with CKEditor +EditWithTextEditor=Edit with Text editor +EditHTMLSource=Edit HTML Source +ObjectDeleted=Object %s deleted +ByCountry=By country +ByTown=By town +ByDate=By date +ByMonthYear=By month/year +ByYear=By year +ByMonth=By month +ByDay=By day +BySalesRepresentative=By sales representative +LinkedToSpecificUsers=Linked to a particular user contact +NoResults=No results +AdminTools=Admin Tools +SystemTools=System tools +ModulesSystemTools=Modules tools +Test=Test +Element=Element +NoPhotoYet=No pictures available yet +Dashboard=Dashboard +MyDashboard=My Dashboard +Deductible=Deductible +from=from +toward=toward +Access=Access +SelectAction=Select action +SelectTargetUser=Select target user/employee +HelpCopyToClipboard=Use Ctrl+C to copy to clipboard +SaveUploadedFileWithMask=Save file on server with name "%s" (otherwise "%s") +OriginFileName=Original filename +SetDemandReason=Set source +SetBankAccount=Define Bank Account +AccountCurrency=Account currency +ViewPrivateNote=View notes +XMoreLines=%s line(s) hidden +ShowMoreLines=Show more/less lines +PublicUrl=Public URL +AddBox=Add box +SelectElementAndClick=Select an element and click on %s +PrintFile=Print File %s +ShowTransaction=Show entry on bank account +ShowIntervention=Show intervention +ShowContract=Show contract +GoIntoSetupToChangeLogo=Go to Home - Setup - Company to change logo or go to Home - Setup - Display to hide. +Deny=Deny +Denied=Denied +ListOf=List of %s +ListOfTemplates=List of templates +Gender=Gender +Genderman=Male +Genderwoman=Female +Genderother=Other +ViewList=List view +ViewGantt=Gantt view +ViewKanban=Kanban view +Mandatory=Mandatory +Hello=Hello +GoodBye=GoodBye +Sincerely=Sincerely +ConfirmDeleteObject=Are you sure you want to delete this object? +DeleteLine=Delete line +ConfirmDeleteLine=Are you sure you want to delete this line? +ErrorPDFTkOutputFileNotFound=Error: the file was not generated. Please check that the 'pdftk' command is installed in a directory included in the $PATH environment variable (linux/unix only) or contact your system administrator. +NoPDFAvailableForDocGenAmongChecked=No PDF were available for the document generation among checked record +TooManyRecordForMassAction=Too many records selected for mass action. The action is restricted to a list of %s records. +NoRecordSelected=No record selected +MassFilesArea=Area for files built by mass actions +ShowTempMassFilesArea=Show area of files built by mass actions +ConfirmMassDeletion=Bulk Delete confirmation +ConfirmMassDeletionQuestion=Are you sure you want to delete the %s selected record(s)? +RelatedObjects=Related Objects +ClassifyBilled=Classify billed +ClassifyUnbilled=Classify unbilled +Progress=Progress +ProgressShort=Progr. +FrontOffice=Front office +BackOffice=Back office +Submit=Submit +View=View +Export=Export +Exports=Exports +ExportFilteredList=Export filtered list +ExportList=Export list +ExportOptions=Export Options +IncludeDocsAlreadyExported=Include docs already exported +ExportOfPiecesAlreadyExportedIsEnable=Export of pieces already exported is enable +ExportOfPiecesAlreadyExportedIsDisable=Export of pieces already exported is disable +AllExportedMovementsWereRecordedAsExported=All exported movements were recorded as exported +NotAllExportedMovementsCouldBeRecordedAsExported=Not all exported movements could be recorded as exported +Miscellaneous=Miscellaneous +Calendar=Calendar +GroupBy=Group by... +ViewFlatList=View flat list +ViewAccountList=View ledger +ViewSubAccountList=View subaccount ledger +RemoveString=Remove string '%s' +SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +DirectDownloadLink=Public download link +PublicDownloadLinkDesc=Only the link is required to download the file +DirectDownloadInternalLink=Private download link +PrivateDownloadLinkDesc=You need to be logged and you need permissions to view or download the file +Download=Download +DownloadDocument=Download document +ActualizeCurrency=Update currency rate +Fiscalyear=Fiscal year +ModuleBuilder=Module and Application Builder +SetMultiCurrencyCode=Set currency +BulkActions=Bulk actions +ClickToShowHelp=Click to show tooltip help +WebSite=Website +WebSites=Websites +WebSiteAccounts=Website accounts +ExpenseReport=Expense report +ExpenseReports=Expense reports +HR=HR +HRAndBank=HR and Bank +AutomaticallyCalculated=Automatically calculated +TitleSetToDraft=Go back to draft +ConfirmSetToDraft=Are you sure you want to go back to Draft status? +ImportId=Import id +Events=Events +EMailTemplates=Email templates +FileNotShared=File not shared to external public +Project=Project +Projects=Projects +LeadOrProject=Lead | Project +LeadsOrProjects=Leads | Projects +Lead=Lead +Leads=Leads +ListOpenLeads=List open leads +ListOpenProjects=List open projects +NewLeadOrProject=New lead or project +Rights=Permissions +LineNb=Line no. +IncotermLabel=Incoterms +TabLetteringCustomer=Customer lettering +TabLetteringSupplier=Vendor lettering +Monday=Monday +Tuesday=Tuesday +Wednesday=Wednesday +Thursday=Thursday +Friday=Friday +Saturday=Saturday +Sunday=Sunday +MondayMin=Mo +TuesdayMin=Tu +WednesdayMin=We +ThursdayMin=Th +FridayMin=Fr +SaturdayMin=Sa +SundayMin=Su +Day1=Monday +Day2=Tuesday +Day3=Wednesday +Day4=Thursday +Day5=Friday +Day6=Saturday +Day0=Sunday +ShortMonday=M +ShortTuesday=T +ShortWednesday=W +ShortThursday=T +ShortFriday=F +ShortSaturday=S +ShortSunday=S +one=one +two=two +three=three +four=four +five=five +six=six +seven=seven +eight=eight +nine=nine +ten=ten +eleven=eleven +twelve=twelve +thirteen=thirdteen +fourteen=fourteen +fifteen=fifteen +sixteen=sixteen +seventeen=seventeen +eighteen=eighteen +nineteen=nineteen +twenty=twenty +thirty=thirty +forty=forty +fifty=fifty +sixty=sixty +seventy=seventy +eighty=eighty +ninety=ninety +hundred=hundred +thousand=thousand +million=million +billion=billion +trillion=trillion +quadrillion=quadrillion +SelectMailModel=Select an email template +SetRef=Set ref +Select2ResultFoundUseArrows=Some results found. Use arrows to select. +Select2NotFound=No result found +Select2Enter=Enter +Select2MoreCharacter=or more character +Select2MoreCharacters=or more characters +Select2MoreCharactersMore=Search syntax:
| OR (a|b)
* Any character (a*b)
^ Start with (^ab)
$ End with (ab$)
+Select2LoadingMoreResults=Loading more results... +Select2SearchInProgress=Search in progress... +SearchIntoThirdparties=Third parties +SearchIntoContacts=Contacts +SearchIntoMembers=Members +SearchIntoUsers=Users +SearchIntoProductsOrServices=Products or services +SearchIntoBatch=Lots / Serials +SearchIntoProjects=Projects +SearchIntoMO=Manufacturing Orders +SearchIntoTasks=Tasks +SearchIntoCustomerInvoices=Customer invoices +SearchIntoSupplierInvoices=Vendor invoices +SearchIntoCustomerOrders=Sales orders +SearchIntoSupplierOrders=Purchase orders +SearchIntoCustomerProposals=Commercial proposals +SearchIntoSupplierProposals=Vendor proposals +SearchIntoInterventions=Interventions +SearchIntoContracts=Contracts +SearchIntoCustomerShipments=Customer shipments +SearchIntoExpenseReports=Expense reports +SearchIntoLeaves=Leave +SearchIntoTickets=Tickets +SearchIntoCustomerPayments=Customer payments +SearchIntoVendorPayments=Vendor payments +SearchIntoMiscPayments=Miscellaneous payments +CommentLink=Comments +NbComments=Number of comments +CommentPage=Comments space +CommentAdded=Comment added +CommentDeleted=Comment deleted +Everybody=Everybody +PayedBy=Paid by +PayedTo=Paid to +Monthly=Monthly +Quarterly=Quarterly +Annual=Annual +Local=Local +Remote=Remote +LocalAndRemote=Local and Remote +KeyboardShortcut=Keyboard shortcut +AssignedTo=Assigned to +Deletedraft=Delete draft +ConfirmMassDraftDeletion=Draft mass delete confirmation +FileSharedViaALink=File shared with a public link +SelectAThirdPartyFirst=Select a third party first... +YouAreCurrentlyInSandboxMode=You are currently in the %s "sandbox" mode +Inventory=Inventory +AnalyticCode=Analytic code +TMenuMRP=MRP +ShowCompanyInfos=Show company infos +ShowMoreInfos=Show More Infos +NoFilesUploadedYet=Please upload a document first +SeePrivateNote=See private note +PaymentInformation=Payment information +ValidFrom=Valid from +ValidUntil=Valid until +NoRecordedUsers=No users +ToClose=To close +ToRefuse=To refuse +ToProcess=To process +ToApprove=To approve +GlobalOpenedElemView=Global view +NoArticlesFoundForTheKeyword=No article found for the keyword '%s' +NoArticlesFoundForTheCategory=No article found for the category +ToAcceptRefuse=To accept | refuse +ContactDefault_agenda=Event +ContactDefault_commande=Order +ContactDefault_contrat=Contract +ContactDefault_facture=Invoice +ContactDefault_fichinter=Intervention +ContactDefault_invoice_supplier=Supplier Invoice +ContactDefault_order_supplier=Purchase Order +ContactDefault_project=Project +ContactDefault_project_task=Task +ContactDefault_propal=Proposal +ContactDefault_supplier_proposal=Supplier Proposal +ContactDefault_ticket=Ticket +ContactAddedAutomatically=Contact added from contact thirdparty roles +More=More +ShowDetails=Show details +CustomReports=Custom reports +StatisticsOn=Statistics on +SelectYourGraphOptionsFirst=Select your graph options to build a graph +Measures=Measures +XAxis=X-Axis +YAxis=Y-Axis +StatusOfRefMustBe=Status of %s must be %s +DeleteFileHeader=Confirm file delete +DeleteFileText=Do you really want delete this file? +ShowOtherLanguages=Show other languages +SwitchInEditModeToAddTranslation=Switch in edit mode to add translations for this language +NotUsedForThisCustomer=Not used for this customer +AmountMustBePositive=Amount must be positive +ByStatus=By status +InformationMessage=Information +Used=Used +ASAP=As Soon As Possible +CREATEInDolibarr=Record %s created +MODIFYInDolibarr=Record %s modified +DELETEInDolibarr=Record %s deleted +VALIDATEInDolibarr=Record %s validated +APPROVEDInDolibarr=Record %s approved +DefaultMailModel=Default Mail Model +PublicVendorName=Public name of vendor +DateOfBirth=Date of birth +SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry=Security token has expired, so action has been canceled. Please try again. +UpToDate=Up-to-date +OutOfDate=Out-of-date +EventReminder=Event Reminder +UpdateForAllLines=Update for all lines +OnHold=On hold +Civility=Civility +AffectTag=Affect Tag +CreateExternalUser=Create external user +ConfirmAffectTag=Bulk Tag Affect +ConfirmAffectTagQuestion=Are you sure you want to affect tags to the %s selected record(s)? +CategTypeNotFound=No tag type found for type of records +CopiedToClipboard=Copied to clipboard +InformationOnLinkToContract=This amount is only the total of all the lines of the contract. No notion of time is taken into consideration. +ConfirmCancel=Are you sure you want to cancel +EmailMsgID=Email MsgID +SetToEnabled=Set to enabled +SetToDisabled=Set to disabled +ConfirmMassEnabling=mass enabling confirmation +ConfirmMassEnablingQuestion=Are you sure you want to enable the %s selected record(s)? +ConfirmMassDisabling=mass disabling confirmation +ConfirmMassDisablingQuestion=Are you sure you want to disable the %s selected record(s)? +RecordsEnabled=%s record(s) enabled +RecordsDisabled=%s record(s) disabled +RecordEnabled=Record enabled +RecordDisabled=Record disabled +Forthcoming=Forthcoming +Currently=Currently +ConfirmMassLeaveApprovalQuestion=Are you sure you want to approve the %s selected record(s)? +ConfirmMassLeaveApproval=Mass leave approval confirmation +RecordAproved=Record approved +RecordsApproved=%s Record(s) approved +Properties=Properties +hasBeenValidated=%s has been validated +ClientTZ=Client Time Zone (user) +NotClosedYet=Not yet closed +ClearSignature=Reset signature +CanceledHidden=Canceled hidden +CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/ms_MY/margins.lang b/htdocs/langs/ms_MY/margins.lang new file mode 100644 index 00000000000..a91b139ec7b --- /dev/null +++ b/htdocs/langs/ms_MY/margins.lang @@ -0,0 +1,45 @@ +# Dolibarr language file - Source file is en_US - marges + +Margin=Margin +Margins=Margins +TotalMargin=Total Margin +MarginOnProducts=Margin / Products +MarginOnServices=Margin / Services +MarginRate=Margin rate +MarkRate=Mark rate +DisplayMarginRates=Display margin rates +DisplayMarkRates=Display mark rates +InputPrice=Input price +margin=Profit margins management +margesSetup=Profit margins management setup +MarginDetails=Margin details +ProductMargins=Product margins +CustomerMargins=Customer margins +SalesRepresentativeMargins=Sales representative margins +ContactOfInvoice=Contact of invoice +UserMargins=User margins +ProductService=Product or Service +AllProducts=All products and services +ChooseProduct/Service=Choose product or service +ForceBuyingPriceIfNull=Force buying/cost price to selling price if not defined +ForceBuyingPriceIfNullDetails=If buying/cost price not provided when we add a new line, and this option is "ON", the margin will be 0%% on the new line (buying/cost price = selling price). If this option is "OFF" (recommended), margin will be equal to the value suggested by default (and may be 100%% if no default value can be found). +MARGIN_METHODE_FOR_DISCOUNT=Margin method for global discounts +UseDiscountAsProduct=As a product +UseDiscountAsService=As a service +UseDiscountOnTotal=On subtotal +MARGIN_METHODE_FOR_DISCOUNT_DETAILS=Defines if a global discount is treated as a product, a service, or only on subtotal for margin calculation. +MARGIN_TYPE=Buying/Cost price suggested by default for margin calculation +MargeType1=Margin on Best vendor price +MargeType2=Margin on Weighted Average Price (WAP) +MargeType3=Margin on Cost Price +MarginTypeDesc=* Margin on best buying price = Selling price - Best vendor price defined on product card
* Margin on Weighted Average Price (WAP) = Selling price - Product Weighted Average Price (WAP) or best vendor price if WAP not yet defined
* Margin on Cost price = Selling price - Cost price defined on product card or WAP if cost price not defined, or best vendor price if WAP not yet defined +CostPrice=Cost price +UnitCharges=Unit charges +Charges=Charges +AgentContactType=Commercial agent contact type +AgentContactTypeDetails=Define what contact type (linked on invoices) will be used for margin report per contact/address. Note that reading statistics on a contact is not reliable since in most cases the contact may not be defined explicitely on the invoices. +rateMustBeNumeric=Rate must be a numeric value +markRateShouldBeLesserThan100=Mark rate should be lower than 100 +ShowMarginInfos=Show margin infos +CheckMargins=Margins detail +MarginPerSaleRepresentativeWarning=The report of margin per user use the link between third parties and sale representatives to calculate the margin of each sale representative. Because some thirdparties may not have any dedicated sale representative and some third parties may be linked to several, some amounts may not be included into this report (if there is no sale representative) and some may appear on different lines (for each sale representative). diff --git a/htdocs/langs/ms_MY/members.lang b/htdocs/langs/ms_MY/members.lang new file mode 100644 index 00000000000..126063358d6 --- /dev/null +++ b/htdocs/langs/ms_MY/members.lang @@ -0,0 +1,230 @@ +# Dolibarr language file - Source file is en_US - members +MembersArea=Members area +MemberCard=Member card +SubscriptionCard=Subscription card +Member=Member +Members=Members +ShowMember=Show member card +UserNotLinkedToMember=User not linked to a member +ThirdpartyNotLinkedToMember=Third party not linked to a member +MembersTickets=Membership address sheet +FundationMembers=Foundation members +ListOfValidatedPublicMembers=List of validated public members +ErrorThisMemberIsNotPublic=This member is not public +ErrorMemberIsAlreadyLinkedToThisThirdParty=Another member (name: %s, login: %s) is already linked to a third party %s. 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. +SetLinkToUser=Link to a Dolibarr user +SetLinkToThirdParty=Link to a Dolibarr third party +MembersCards=Generation of cards for members +MembersList=List of members +MembersListToValid=List of draft members (to be validated) +MembersListValid=List of valid members +MembersListUpToDate=List of valid members with up-to-date contribution +MembersListNotUpToDate=List of valid members with out-of-date contribution +MembersListExcluded=List of excluded members +MembersListResiliated=List of terminated members +MembersListQualified=List of qualified members +MenuMembersToValidate=Draft members +MenuMembersValidated=Validated members +MenuMembersExcluded=Excluded members +MenuMembersResiliated=Terminated members +MembersWithSubscriptionToReceive=Members with contribution to receive +MembersWithSubscriptionToReceiveShort=Contributions to receive +DateSubscription=Date of membership +DateEndSubscription=End date of membership +EndSubscription=End of membership +SubscriptionId=Contribution ID +WithoutSubscription=Without contribution +MemberId=Member Id +MemberRef=Member Ref +NewMember=New member +MemberType=Member type +MemberTypeId=Member type id +MemberTypeLabel=Member type label +MembersTypes=Members types +MemberStatusDraft=Draft (needs to be validated) +MemberStatusDraftShort=Draft +MemberStatusActive=Validated (waiting contribution) +MemberStatusActiveShort=Validated +MemberStatusActiveLate=Contribution expired +MemberStatusActiveLateShort=Expired +MemberStatusPaid=Subscription up to date +MemberStatusPaidShort=Up to date +MemberStatusExcluded=Excluded member +MemberStatusExcludedShort=Excluded +MemberStatusResiliated=Terminated member +MemberStatusResiliatedShort=Terminated +MembersStatusToValid=Draft members +MembersStatusExcluded=Excluded members +MembersStatusResiliated=Terminated members +MemberStatusNoSubscription=Validated (no contribution required) +MemberStatusNoSubscriptionShort=Validated +SubscriptionNotNeeded=No contribution required +NewCotisation=New contribution +PaymentSubscription=New contribution payment +SubscriptionEndDate=Subscription's end date +MembersTypeSetup=Members type setup +MemberTypeModified=Member type modified +DeleteAMemberType=Delete a member type +ConfirmDeleteMemberType=Are you sure you want to delete this member type? +MemberTypeDeleted=Member type deleted +MemberTypeCanNotBeDeleted=Member type can not be deleted +NewSubscription=New contribution +NewSubscriptionDesc=This form allows you to record your subscription as a new member of the foundation. If you want to renew your subscription (if already a member), please contact foundation board instead by email %s. +Subscription=Contribution +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership +Subscriptions=Contributions +SubscriptionLate=Late +SubscriptionNotReceived=Contribution never received +ListOfSubscriptions=List of contributions +SendCardByMail=Send card by email +AddMember=Create member +NoTypeDefinedGoToSetup=No member types defined. Go to menu "Members types" +NewMemberType=New member type +WelcomeEMail=Welcome email +SubscriptionRequired=Contribution required +DeleteType=Delete +VoteAllowed=Vote allowed +Physical=Individual +Moral=Corporation +MorAndPhy=Corporation and Individual +Reenable=Re-Enable +ExcludeMember=Exclude a member +Exclude=Exclude +ConfirmExcludeMember=Are you sure you want to exclude this member ? +ResiliateMember=Terminate a member +ConfirmResiliateMember=Are you sure you want to terminate this member? +DeleteMember=Delete a member +ConfirmDeleteMember=Are you sure you want to delete this member (Deleting a member will delete all his contributions)? +DeleteSubscription=Delete a subscription +ConfirmDeleteSubscription=Are you sure you want to delete this contribution? +Filehtpasswd=htpasswd file +ValidateMember=Validate a member +ConfirmValidateMember=Are you sure you want to validate this member? +FollowingLinksArePublic=The following links are open pages not protected by any Dolibarr permission. They are not formatted pages, provided as example to show how to list members database. +PublicMemberList=Public member list +BlankSubscriptionForm=Public self-registration form +BlankSubscriptionFormDesc=Dolibarr can provide you a public URL/website to allow external visitors to ask to subscribe to the foundation. If an online payment module is enabled, a payment form may also be automatically provided. +EnablePublicSubscriptionForm=Enable the public website with self-subscription form +ForceMemberType=Force the member type +ExportDataset_member_1=Members and contributions +ImportDataset_member_1=Members +LastMembersModified=Latest %s modified members +LastSubscriptionsModified=Latest %s modified contributions +String=String +Text=Text +Int=Int +DateAndTime=Date and time +PublicMemberCard=Member public card +SubscriptionNotRecorded=Contribution not recorded +AddSubscription=Create contribution +ShowSubscription=Show contribution +# Label of email templates +SendingAnEMailToMember=Sending information email to member +SendingEmailOnAutoSubscription=Sending email on auto registration +SendingEmailOnMemberValidation=Sending email on new member validation +SendingEmailOnNewSubscription=Sending email on new contribution +SendingReminderForExpiredSubscription=Sending reminder for expired contributions +SendingEmailOnCancelation=Sending email on cancelation +SendingReminderActionComm=Sending reminder for agenda event +# Topic of email templates +YourMembershipRequestWasReceived=Your membership was received. +YourMembershipWasValidated=Your membership was validated +YourSubscriptionWasRecorded=Your new contribution was recorded +SubscriptionReminderEmail=contribution reminder +YourMembershipWasCanceled=Your membership was canceled +CardContent=Content of your member card +# Text of email templates +ThisIsContentOfYourMembershipRequestWasReceived=We want to let you know that your membership request was received.

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

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

+ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

+ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

+DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest +DescADHERENT_AUTOREGISTER_NOTIF_MAIL=Content of the notification email received in case of auto-inscription of a guest +DescADHERENT_EMAIL_TEMPLATE_AUTOREGISTER=Email template to use to send email to a member on member auto-registration +DescADHERENT_EMAIL_TEMPLATE_MEMBER_VALIDATION=Email template to use to send email to a member on member validation +DescADHERENT_EMAIL_TEMPLATE_SUBSCRIPTION=Email template to use to send email to a member on new contribution recording +DescADHERENT_EMAIL_TEMPLATE_REMIND_EXPIRATION=Email template to use to send email reminder when contribution is about to expire +DescADHERENT_EMAIL_TEMPLATE_CANCELATION=Email template to use to send email to a member on member cancelation +DescADHERENT_EMAIL_TEMPLATE_EXCLUSION=Email template to use to send email to a member on member exclusion +DescADHERENT_MAIL_FROM=Sender Email for automatic emails +DescADHERENT_ETIQUETTE_TYPE=Format of labels page +DescADHERENT_ETIQUETTE_TEXT=Text printed on member address sheets +DescADHERENT_CARD_TYPE=Format of cards page +DescADHERENT_CARD_HEADER_TEXT=Text printed on top of member cards +DescADHERENT_CARD_TEXT=Text printed on member cards (align on left) +DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right) +DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards +ShowTypeCard=Show type '%s' +HTPasswordExport=htpassword file generation +NoThirdPartyAssociatedToMember=No third party associated with this member +MembersAndSubscriptions=Members and Contributions +MoreActions=Complementary action on recording +MoreActionsOnSubscription=Complementary action suggested by default when recording a contribution, also done automatially on online payment of a contribution +MoreActionBankDirect=Create a direct entry on bank account +MoreActionBankViaInvoice=Create an invoice, and a payment on bank account +MoreActionInvoiceOnly=Create an invoice with no payment +LinkToGeneratedPages=Generation of business cards or address sheets +LinkToGeneratedPagesDesc=This screen allows you to generate PDF files with business cards for all your members or a particular member. +DocForAllMembersCards=Generate business cards for all members +DocForOneMemberCards=Generate business cards for a particular member +DocForLabels=Generate address sheets +SubscriptionPayment=Contribution payment +LastSubscriptionDate=Date of latest contribution payment +LastSubscriptionAmount=Amount of latest contribution +LastMemberType=Last Member type +MembersStatisticsByCountries=Members statistics by country +MembersStatisticsByState=Members statistics by state/province +MembersStatisticsByTown=Members statistics by town +MembersStatisticsByRegion=Members statistics by region +NbOfMembers=Total number of members +NbOfActiveMembers=Total number of current active members +NoValidatedMemberYet=No validated members found +MembersByCountryDesc=This screen shows you the statistics of members by countries. Graphs and charts depend on the availability of the Google online graph service as well as on the availability of a working internet connection. +MembersByStateDesc=This screen show you statistics of members by state/provinces/canton. +MembersByTownDesc=This screen show you statistics of members by town. +MembersByNature=This screen show you statistics of members by nature. +MembersByRegion=This screen show you statistics of members by region. +MembersStatisticsDesc=Choose statistics you want to read... +MenuMembersStats=Statistics +LastMemberDate=Latest membership date +LatestSubscriptionDate=Latest contribution date +MemberNature=Nature of the member +MembersNature=Nature of the members +Public=Information is public +NewMemberbyWeb=New member added. Awaiting approval +NewMemberForm=New member form +SubscriptionsStatistics=Contributions statistics +NbOfSubscriptions=Number of contributions +AmountOfSubscriptions=Amount collected from contributions +TurnoverOrBudget=Turnover (for a company) or Budget (for a foundation) +DefaultAmount=Default amount of contribution +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s +MEMBER_NEWFORM_PAYONLINE=Jump on integrated online payment page +ByProperties=By nature +MembersStatisticsByProperties=Members statistics by nature +VATToUseForSubscriptions=VAT rate to use for contributionss +NoVatOnSubscription=No VAT for contributions +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s +NameOrCompany=Name or company +SubscriptionRecorded=Contribution recorded +NoEmailSentToMember=No email sent to member +EmailSentToMember=Email sent to member at %s +SendReminderForExpiredSubscriptionTitle=Send reminder by email for expired contributions +SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') +MembershipPaid=Membership paid for current period (until %s) +YouMayFindYourInvoiceInThisEmail=You may find your invoice attached to this email +XMembersClosed=%s member(s) closed +XExternalUserCreated=%s external user(s) created +ForceMemberNature=Force member nature (Individual or Corporation) +CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. +CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/ms_MY/modulebuilder.lang b/htdocs/langs/ms_MY/modulebuilder.lang new file mode 100644 index 00000000000..044360eb51d --- /dev/null +++ b/htdocs/langs/ms_MY/modulebuilder.lang @@ -0,0 +1,158 @@ +# Dolibarr language file - Source file is en_US - loan +IdModule= Module id +ModuleBuilderDesc=This tool must be used only by experienced users or developers. It provides utilities to build or edit your own module. Documentation for alternative manual development is here. +EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. +EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. +ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s +ModuleBuilderDesc3=Generated/editable modules found: %s +ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory +NewModule=New module +NewObjectInModulebuilder=New object +NewDictionary=New dictionary +ModuleName=Module name +ModuleKey=Module key +ObjectKey=Object key +DicKey=Dictionary key +ModuleInitialized=Module initialized +FilesForObjectInitialized=Files for new object '%s' initialized +FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) +ModuleBuilderDescdescription=Enter here all general information that describe your module. +ModuleBuilderDescspecifications=You can enter here a detailed description of the specifications of your module that is not already structured into other tabs. So you have within easy reach all the rules to develop. Also this text content will be included into the generated documentation (see last tab). You can use Markdown format, but it is recommended to use Asciidoc format (comparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown). +ModuleBuilderDescobjects=Define here the objects you want to manage with your module. A CRUD DAO class, SQL files, page to list record of objects, to create/edit/view a record and an API will be generated. +ModuleBuilderDescmenus=This tab is dedicated to define menu entries provided by your module. +ModuleBuilderDescpermissions=This tab is dedicated to define the new permissions you want to provide with your module. +ModuleBuilderDesctriggers=This is the view of triggers provided by your module. To include code executed when a triggered business event is launched, just edit this file. +ModuleBuilderDeschooks=This tab is dedicated to hooks. +ModuleBuilderDescwidgets=This tab is dedicated to manage/build widgets. +ModuleBuilderDescbuildpackage=You can generate here a "ready to distribute" package file (a normalized .zip file) of your module and a "ready to distribute" documentation file. Just click on button to build the package or documentation file. +EnterNameOfModuleToDeleteDesc=You can delete your module. WARNING: All coding files of module (generated or created manually) AND structured data and documentation will be deleted! +EnterNameOfObjectToDeleteDesc=You can delete an object. WARNING: All coding files (generated or created manually) related to object will be deleted! +DangerZone=Danger zone +BuildPackage=Build package +BuildPackageDesc=You can generate a zip package of your application so your are ready to distribute it on any Dolibarr. You can also distribute it or sell it on marketplace like DoliStore.com. +BuildDocumentation=Build documentation +ModuleIsNotActive=This module is not activated yet. Go to %s to make it live or click here +ModuleIsLive=This module has been activated. Any change may break a current live feature. +DescriptionLong=Long description +EditorName=Name of editor +EditorUrl=URL of editor +DescriptorFile=Descriptor file of module +ClassFile=File for PHP DAO CRUD class +ApiClassFile=File for PHP API class +PageForList=PHP page for list of record +PageForCreateEditView=PHP page to create/edit/view a record +PageForAgendaTab=PHP page for event tab +PageForDocumentTab=PHP page for document tab +PageForNoteTab=PHP page for note tab +PageForContactTab=PHP page for contact tab +PathToModulePackage=Path to zip of module/application package +PathToModuleDocumentation=Path to file of module/application documentation (%s) +SpaceOrSpecialCharAreNotAllowed=Spaces or special characters are not allowed. +FileNotYetGenerated=File not yet generated +RegenerateClassAndSql=Force update of .class and .sql files +RegenerateMissingFiles=Generate missing files +SpecificationFile=File of documentation +LanguageFile=File for language +ObjectProperties=Object Properties +ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. +NotNull=Not NULL +NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) +SearchAll=Used for 'search all' +DatabaseIndex=Database index +FileAlreadyExists=File %s already exists +TriggersFile=File for triggers code +HooksFile=File for hooks code +ArrayOfKeyValues=Array of key-val +ArrayOfKeyValuesDesc=Array of keys and values if field is a combo list with fixed values +WidgetFile=Widget file +CSSFile=CSS file +JSFile=Javascript file +ReadmeFile=Readme file +ChangeLog=ChangeLog file +TestClassFile=File for PHP Unit Test class +SqlFile=Sql file +PageForLib=File for the common PHP library +PageForObjLib=File for the PHP library dedicated to object +SqlFileExtraFields=Sql file for complementary attributes +SqlFileKey=Sql file for keys +SqlFileKeyExtraFields=Sql file for keys of complementary attributes +AnObjectAlreadyExistWithThisNameAndDiffCase=An object already exists with this name and a different case +UseAsciiDocFormat=You can use Markdown format, but it is recommended to use Asciidoc format (omparison between .md and .asciidoc: http://asciidoctor.org/docs/user-manual/#compared-to-markdown) +IsAMeasure=Is a measure +DirScanned=Directory scanned +NoTrigger=No trigger +NoWidget=No widget +GoToApiExplorer=API explorer +ListOfMenusEntries=List of menu entries +ListOfDictionariesEntries=List of dictionaries entries +ListOfPermissionsDefined=List of defined permissions +SeeExamples=See examples here +EnabledDesc=Condition to have this field active (Examples: 1 or $conf->global->MYMODULE_MYOPTION) +VisibleDesc=Is the field visible ? (Examples: 0=Never visible, 1=Visible on list and create/update/view forms, 2=Visible on list only, 3=Visible on create/update/view form only (not list), 4=Visible on list and update/view form only (not create), 5=Visible on list end view form only (not create, not update).

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

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

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

For document lines :
0 = not displayed
1 = displayed in a column
3 = display in line description column after the description
4 = display in description column after the description only if not empty +DisplayOnPdf=Display on PDF +IsAMeasureDesc=Can the value of field be cumulated to get a total into list? (Examples: 1 or 0) +SearchAllDesc=Is the field used to make a search from the quick search tool? (Examples: 1 or 0) +SpecDefDesc=Enter here all documentation you want to provide with your module that is not already defined by other tabs. You can use .md or better, the rich .asciidoc syntax. +LanguageDefDesc=Enter in this files, all the key and the translation for each language file. +MenusDefDesc=Define here the menus provided by your module +DictionariesDefDesc=Define here the dictionaries provided by your module +PermissionsDefDesc=Define here the new permissions provided by your module +MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and the module re-activated), the menus are also visible into the menu editor available to administrator users on %s. +DictionariesDefDescTooltip=The dictionaries provided by your module/application are defined into the array $this->dictionaries into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), dictionaries are also visible into the setup area to administrator users on %s. +PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array $this->rights into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s. +HooksDefDesc=Define in the module_parts['hooks'] property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on 'initHooks(' in core code).
Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on 'executeHooks' in core code). +TriggerDefDesc=Define in the trigger file the code that you want to execute when a business event external to your module is executed (events triggered by other modules). +SeeIDsInUse=See IDs in use in your installation +SeeReservedIDsRangeHere=See range of reserved IDs +ToolkitForDevelopers=Toolkit for Dolibarr developers +TryToUseTheModuleBuilder=If you have knowledge of SQL and PHP, you may use the native module builder wizard.
Enable the module %s and use the wizard by clicking the on the top right menu.
Warning: This is an advanced developer feature, do not experiment on your production site! +SeeTopRightMenu=See on the top right menu +AddLanguageFile=Add language file +YouCanUseTranslationKey=You can use here a key that is the translation key found into language file (see tab "Languages") +DropTableIfEmpty=(Destroy table if empty) +TableDoesNotExists=The table %s does not exists +TableDropped=Table %s deleted +InitStructureFromExistingTable=Build the structure array string of an existing table +UseAboutPage=Do not generate the About page +UseDocFolder=Disable the documentation folder +UseSpecificReadme=Use a specific ReadMe +ContentOfREADMECustomized=Note: The content of the README.md file has been replaced with the specific value defined into setup of ModuleBuilder. +RealPathOfModule=Real path of module +ContentCantBeEmpty=Content of file can't be empty +WidgetDesc=You can generate and edit here the widgets that will be embedded with your module. +CSSDesc=You can generate and edit here a file with personalized CSS embedded with your module. +JSDesc=You can generate and edit here a file with personalized Javascript embedded with your module. +CLIDesc=You can generate here some command line scripts you want to provide with your module. +CLIFile=CLI File +NoCLIFile=No CLI files +UseSpecificEditorName = Use a specific editor name +UseSpecificEditorURL = Use a specific editor URL +UseSpecificFamily = Use a specific family +UseSpecificAuthor = Use a specific author +UseSpecificVersion = Use a specific initial version +IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules +IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules +IncludeDocGeneration=I want to generate some documents from templates for the object +IncludeDocGenerationHelp=If you check this, some code will be generated to add a "Generate document" box on the record. +ShowOnCombobox=Show value into combobox +KeyForTooltip=Key for tooltip +CSSClass=CSS for edit/create form +CSSViewClass=CSS for read form +CSSListClass=CSS for list +NotEditable=Not editable +ForeignKey=Foreign key +TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' means we add a + button after the combo to create the record
'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' +AsciiToHtmlConverter=Ascii to HTML converter +AsciiToPdfConverter=Ascii to PDF converter +TableNotEmptyDropCanceled=Table not empty. Drop has been canceled. +ModuleBuilderNotAllowed=The module builder is available but not allowed to your user. +ImportExportProfiles=Import and export profiles +ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required. +WarningDatabaseIsNotUpdated=Warning: The database is not updated automatically, you must destroy tables and disable-enable the module to have tables recreated +LinkToParentMenu=Parent menu (fk_xxxxmenu) +ListOfTabsEntries=List of tab entries +TabsDefDesc=Define here the tabs provided by your module +TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +BadValueForType=Bad value for type %s diff --git a/htdocs/langs/ms_MY/mrp.lang b/htdocs/langs/ms_MY/mrp.lang new file mode 100644 index 00000000000..7f29b774b29 --- /dev/null +++ b/htdocs/langs/ms_MY/mrp.lang @@ -0,0 +1,114 @@ +Mrp=Manufacturing Orders +MOs=Manufacturing orders +ManufacturingOrder=Manufacturing Order +MRPDescription=Module to manage production and Manufacturing Orders (MO). +MRPArea=MRP Area +MrpSetupPage=Setup of module MRP +MenuBOM=Bills of material +LatestBOMModified=Latest %s Bills of materials modified +LatestMOModified=Latest %s Manufacturing Orders modified +Bom=Bills of Material +BillOfMaterials=Bill of Materials +BillOfMaterialsLines=Bill of Materials lines +BOMsSetup=Setup of module BOM +ListOfBOMs=List of bills of material - BOM +ListOfManufacturingOrders=List of Manufacturing Orders +NewBOM=New bill of materials +ProductBOMHelp=Product to create (or disassemble) with this BOM.
Note: Products with the property 'Nature of product' = 'Raw material' are not visible into this list. +BOMsNumberingModules=BOM numbering templates +BOMsModelModule=BOM document templates +MOsNumberingModules=MO numbering templates +MOsModelModule=MO document templates +FreeLegalTextOnBOMs=Free text on document of BOM +WatermarkOnDraftBOMs=Watermark on draft BOM +FreeLegalTextOnMOs=Free text on document of MO +WatermarkOnDraftMOs=Watermark on draft MO +ConfirmCloneBillOfMaterials=Are you sure you want to clone the bill of materials %s ? +ConfirmCloneMo=Are you sure you want to clone the Manufacturing Order %s ? +ManufacturingEfficiency=Manufacturing efficiency +ConsumptionEfficiency=Consumption efficiency +ValueOfMeansLoss=Value of 0.95 means an average of 5%% of loss during the manufacturing or the disassembly +ValueOfMeansLossForProductProduced=Value of 0.95 means an average of 5%% of loss of produced product +DeleteBillOfMaterials=Delete Bill Of Materials +DeleteMo=Delete Manufacturing Order +ConfirmDeleteBillOfMaterials=Are you sure you want to delete this Bill Of Materials? +ConfirmDeleteMo=Are you sure you want to delete this Manufacturing Order? +MenuMRP=Manufacturing Orders +NewMO=New Manufacturing Order +QtyToProduce=Qty to produce +DateStartPlannedMo=Date start planned +DateEndPlannedMo=Date end planned +KeepEmptyForAsap=Empty means 'As Soon As Possible' +EstimatedDuration=Estimated duration +EstimatedDurationDesc=Estimated duration to manufacture (or disassemble) this product using this BOM +ConfirmValidateBom=Are you sure you want to validate the BOM with the reference %s (you will be able to use it to build new Manufacturing Orders) +ConfirmCloseBom=Are you sure you want to cancel this BOM (you won't be able to use it to build new Manufacturing Orders anymore) ? +ConfirmReopenBom=Are you sure you want to re-open this BOM (you will be able to use it to build new Manufacturing Orders) +StatusMOProduced=Produced +QtyFrozen=Frozen Qty +QuantityFrozen=Frozen Quantity +QuantityConsumedInvariable=When this flag is set, the quantity consumed is always the value defined and is not relative to the quantity produced. +DisableStockChange=Stock change disabled +DisableStockChangeHelp=When this flag is set, there is no stock change on this product, whatever is the quantity consumed +BomAndBomLines=Bills Of Material and lines +BOMLine=Line of BOM +WarehouseForProduction=Warehouse for production +CreateMO=Create MO +ToConsume=To consume +ToProduce=To produce +ToObtain=To obtain +QtyAlreadyConsumed=Qty already consumed +QtyAlreadyProduced=Qty already produced +QtyRequiredIfNoLoss=Qty required if there is no loss (Manufacturing efficiency is 100%%) +ConsumeOrProduce=Consume or Produce +ConsumeAndProduceAll=Consume and Produce All +Manufactured=Manufactured +TheProductXIsAlreadyTheProductToProduce=The product to add is already the product to produce. +ForAQuantityOf=For a quantity to produce of %s +ForAQuantityToConsumeOf=For a quantity to disassemble of %s +ConfirmValidateMo=Are you sure you want to validate this Manufacturing Order? +ConfirmProductionDesc=By clicking on '%s', you will validate the consumption and/or production for the quantities set. This will also update the stock and record stock movements. +ProductionForRef=Production of %s +CancelProductionForRef=Cancellation of product stock decrementation for product %s +TooltipDeleteAndRevertStockMovement=Delete line and revert stock movement +AutoCloseMO=Close automatically the Manufacturing Order if quantities to consume and to produce are reached +NoStockChangeOnServices=No stock change on services +ProductQtyToConsumeByMO=Product quantity still to consume by open MO +ProductQtyToProduceByMO=Product quantity still to produce by open MO +AddNewConsumeLines=Add new line to consume +AddNewProduceLines=Add new line to produce +ProductsToConsume=Products to consume +ProductsToProduce=Products to produce +UnitCost=Unit cost +TotalCost=Total cost +BOMTotalCost=The cost to produce this BOM based on cost of each quantity and product to consume (use Cost price if defined, else Average Weighted Price if defined, else the Best purchase price) +GoOnTabProductionToProduceFirst=You must first have started the production to close a Manufacturing Order (See tab '%s'). But you can Cancel it. +ErrorAVirtualProductCantBeUsedIntoABomOrMo=A kit can't be used into a BOM or a MO +Workstation=Workstation +Workstations=Workstations +WorkstationsDescription=Workstations management +WorkstationSetup = Workstations setup +WorkstationSetupPage = Workstations setup page +WorkstationList=Workstation list +WorkstationCreate=Add new workstation +ConfirmEnableWorkstation=Are you sure you want to enable workstation %s ? +EnableAWorkstation=Enable a workstation +ConfirmDisableWorkstation=Are you sure you want to disable workstation %s ? +DisableAWorkstation=Disable a workstation +DeleteWorkstation=Delete +NbOperatorsRequired=Number of operators required +THMOperatorEstimated=Estimated operator THM +THMMachineEstimated=Estimated machine THM +WorkstationType=Workstation type +Human=Human +Machine=Machine +HumanMachine=Human / Machine +WorkstationArea=Workstation area +Machines=Machines +THMEstimatedHelp=This rate makes it possible to define a forecast cost of the item +BOM=Bill Of Materials +CollapseBOMHelp=You can define the default display of the details of the nomenclature in the configuration of the BOM module +MOAndLines=Manufacturing Orders and lines +MoChildGenerate=Generate Child Mo +ParentMo=MO Parent +MOChild=MO Child diff --git a/htdocs/langs/ms_MY/multicurrency.lang b/htdocs/langs/ms_MY/multicurrency.lang new file mode 100644 index 00000000000..26313c6bfb9 --- /dev/null +++ b/htdocs/langs/ms_MY/multicurrency.lang @@ -0,0 +1,38 @@ +# Dolibarr language file - Source file is en_US - multicurrency +MultiCurrency=Multi currency +ErrorAddRateFail=Error in added rate +ErrorAddCurrencyFail=Error in added currency +ErrorDeleteCurrencyFail=Error delete fail +multicurrency_syncronize_error=Synchronization error: %s +MULTICURRENCY_USE_RATE_ON_DOCUMENT_DATE=Use the date of the document to find the currency rate, instead of using the latest known rate +multicurrency_useOriginTx=When an object is created from another, keep the original rate from the source object (otherwise use the latest known rate) +CurrencyLayerAccount=CurrencyLayer API +CurrencyLayerAccount_help_to_synchronize=You must create an account on website %s to use this functionality.
Get your API key.
If you use a free account, you can't change the source currency (USD by default).
If your main currency is not USD, the application will automatically recalculate it.

You are limited to 1000 synchronizations per month. +multicurrency_appId=API key +multicurrency_appCurrencySource=Source currency +multicurrency_alternateCurrencySource=Alternate source currency +CurrenciesUsed=Currencies used +CurrenciesUsed_help_to_add=Add the different currencies and rates you need to use on your proposals, orders etc. +rate=rate +MulticurrencyReceived=Received, original currency +MulticurrencyRemainderToTake=Remaining amount, original currency +MulticurrencyPaymentAmount=Payment amount, original currency +AmountToOthercurrency=Amount To (in currency of receiving account) +CurrencyRateSyncSucceed=Currency rate synchronization done successfuly +MULTICURRENCY_USE_CURRENCY_ON_DOCUMENT=Use the currency of the document for online payments +TabTitleMulticurrencyRate=Rate list +ListCurrencyRate=List of exchange rates for the currency +CreateRate=Create a rate +FormCreateRate=Rate creation +FormUpdateRate=Rate modification +successRateCreate=Rate for currency %s has been added to the database +ConfirmDeleteLineRate=Are you sure you want to remove the %s rate for currency %s on %s date? +DeleteLineRate=Clear rate +successRateDelete=Rate deleted +errorRateDelete=Error when deleting the rate +successUpdateRate=Modification made +ErrorUpdateRate=Error when changing the rate +Codemulticurrency=currency code +UpdateRate=change the rate +CancelUpdate=cancel +NoEmptyRate=The rate field must not be empty diff --git a/htdocs/langs/ms_MY/oauth.lang b/htdocs/langs/ms_MY/oauth.lang new file mode 100644 index 00000000000..e3af5592a0e --- /dev/null +++ b/htdocs/langs/ms_MY/oauth.lang @@ -0,0 +1,36 @@ +# Dolibarr language file - Source file is en_US - oauth +ConfigOAuth=OAuth Configuration +OAuthServices=OAuth Services +ManualTokenGeneration=Manual token generation +TokenManager=Token Manager +IsTokenGenerated=Is token generated ? +NoAccessToken=No access token saved into local database +HasAccessToken=A token was generated and saved into local database +NewTokenStored=Token received and saved +ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider +TokenDeleted=Token deleted +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token +UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens +SeePreviousTab=See previous tab +OAuthProvider=OAuth provider +OAuthIDSecret=OAuth ID and Secret +TOKEN_REFRESH=Token Refresh Present +TOKEN_EXPIRED=Token expired +TOKEN_EXPIRE_AT=Token expire at +TOKEN_DELETE=Delete saved token +OAUTH_GOOGLE_NAME=OAuth Google service +OAUTH_GOOGLE_ID=OAuth Google Id +OAUTH_GOOGLE_SECRET=OAuth Google Secret +OAUTH_GITHUB_NAME=OAuth GitHub service +OAUTH_GITHUB_ID=OAuth GitHub Id +OAUTH_GITHUB_SECRET=OAuth GitHub Secret +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret +OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test +OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/ms_MY/opensurvey.lang b/htdocs/langs/ms_MY/opensurvey.lang new file mode 100644 index 00000000000..9fafacaf8bf --- /dev/null +++ b/htdocs/langs/ms_MY/opensurvey.lang @@ -0,0 +1,63 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Poll +Surveys=Polls +OrganizeYourMeetingEasily=Organize your meetings and polls easily. First select the type of poll... +NewSurvey=New poll +OpenSurveyArea=Polls area +AddACommentForPoll=You can add a comment into poll... +AddComment=Add comment +CreatePoll=Create poll +PollTitle=Poll title +ToReceiveEMailForEachVote=Receive an email for each vote +TypeDate=Type date +TypeClassic=Type standard +OpenSurveyStep2=Select your dates among the free days (grey). The selected days are green. You can unselect a day previously selected by clicking again on it +RemoveAllDays=Remove all days +CopyHoursOfFirstDay=Copy hours of first day +RemoveAllHours=Remove all hours +SelectedDays=Selected days +TheBestChoice=The best choice currently is +TheBestChoices=The best choices currently are +with=with +OpenSurveyHowTo=If you agree to vote in this poll, you have to give your name, choose the values that fit best for you and validate with the plus button at the end of the line. +CommentsOfVoters=Comments of voters +ConfirmRemovalOfPoll=Are you sure you want to remove this poll (and all votes) +RemovePoll=Remove poll +UrlForSurvey=URL to communicate to get a direct access to poll +PollOnChoice=You are creating a poll to make a multi-choice for a poll. First enter all possible choices for your poll: +CreateSurveyDate=Create a date poll +CreateSurveyStandard=Create a standard poll +CheckBox=Simple checkbox +YesNoList=List (empty/yes/no) +PourContreList=List (empty/for/against) +AddNewColumn=Add new column +TitleChoice=Choice label +ExportSpreadsheet=Export result spreadsheet +ExpireDate=Limit date +NbOfSurveys=Number of polls +NbOfVoters=No. of voters +SurveyResults=Results +PollAdminDesc=You are allowed to change all vote lines of this poll with button "Edit". You can, as well, remove a column or a line with %s. You can also add a new column with %s. +5MoreChoices=5 more choices +Against=Against +YouAreInivitedToVote=You are invited to vote for this poll +VoteNameAlreadyExists=This name was already used for this poll +AddADate=Add a date +AddStartHour=Add start hour +AddEndHour=Add end hour +votes=vote(s) +NoCommentYet=No comments have been posted for this poll yet +CanComment=Voters can comment in the poll +YourVoteIsPrivate=This poll is private, nobody can see your vote. +YourVoteIsPublic=This poll is public, anybody with the link can see your vote. +CanSeeOthersVote=Voters can see other people's vote +SelectDayDesc=For each selected day, you can choose, or not, meeting hours in the following format:
- empty,
- "8h", "8H" or "8:00" to give a meeting's start hour,
- "8-11", "8h-11h", "8H-11H" or "8:00-11:00" to give a meeting's start and end hour,
- "8h15-11h15", "8H15-11H15" or "8:15-11:15" for the same thing but with minutes. +BackToCurrentMonth=Back to current month +ErrorOpenSurveyFillFirstSection=You haven't filled the first section of the poll creation +ErrorOpenSurveyOneChoice=Enter at least one choice +ErrorInsertingComment=There was an error while inserting your comment +MoreChoices=Enter more choices for the voters +SurveyExpiredInfo=The poll has been closed or voting delay has expired. +EmailSomeoneVoted=%s has filled a line.\nYou can find your poll at the link: \n%s +ShowSurvey=Show survey +UserMustBeSameThanUserUsedToVote=You must have voted and use the same user name that the one used to vote, to post a comment diff --git a/htdocs/langs/ms_MY/orders.lang b/htdocs/langs/ms_MY/orders.lang new file mode 100644 index 00000000000..aa7dd934ede --- /dev/null +++ b/htdocs/langs/ms_MY/orders.lang @@ -0,0 +1,201 @@ +# Dolibarr language file - Source file is en_US - orders +OrderExists=An order was already open linked to this proposal, so no other order was created automatically +OrdersArea=Customers orders area +SuppliersOrdersArea=Purchase orders area +OrderCard=Order card +OrderId=Order Id +Order=Order +PdfOrderTitle=Order +Orders=Orders +OrderLine=Order line +OrderDate=Order date +OrderDateShort=Order date +OrderToProcess=Order to process +NewOrder=New order +NewSupplierOrderShort=New order +NewOrderSupplier=New Purchase Order +ToOrder=Make order +MakeOrder=Make order +SupplierOrder=Purchase order +SuppliersOrders=Purchase orders +SaleOrderLines=Sales order lines +PurchaseOrderLines=Puchase order lines +SuppliersOrdersRunning=Current purchase orders +CustomerOrder=Sales Order +CustomersOrders=Sales Orders +CustomersOrdersRunning=Current sales orders +CustomersOrdersAndOrdersLines=Sales orders and order details +OrdersDeliveredToBill=Sales orders delivered to bill +OrdersToBill=Sales orders delivered +OrdersInProcess=Sales orders in process +OrdersToProcess=Sales orders to process +SuppliersOrdersToProcess=Purchase orders to process +SuppliersOrdersAwaitingReception=Purchase orders awaiting reception +AwaitingReception=Awaiting reception +StatusOrderCanceledShort=Canceled +StatusOrderDraftShort=Draft +StatusOrderValidatedShort=Validated +StatusOrderSentShort=In process +StatusOrderSent=Shipment in process +StatusOrderOnProcessShort=Ordered +StatusOrderProcessedShort=Processed +StatusOrderDelivered=Delivered +StatusOrderDeliveredShort=Delivered +StatusOrderToBillShort=Delivered +StatusOrderApprovedShort=Approved +StatusOrderRefusedShort=Refused +StatusOrderToProcessShort=To process +StatusOrderReceivedPartiallyShort=Partially received +StatusOrderReceivedAllShort=Products received +StatusOrderCanceled=Canceled +StatusOrderDraft=Draft (needs to be validated) +StatusOrderValidated=Validated +StatusOrderOnProcess=Ordered - Standby reception +StatusOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusOrderProcessed=Processed +StatusOrderToBill=Delivered +StatusOrderApproved=Approved +StatusOrderRefused=Refused +StatusOrderReceivedPartially=Partially received +StatusOrderReceivedAll=All products received +ShippingExist=A shipment exists +QtyOrdered=Qty ordered +ProductQtyInDraft=Product quantity into draft orders +ProductQtyInDraftOrWaitingApproved=Product quantity into draft or approved orders, not yet ordered +MenuOrdersToBill=Orders delivered +MenuOrdersToBill2=Billable orders +ShipProduct=Ship product +CreateOrder=Create Order +RefuseOrder=Refuse order +ApproveOrder=Approve order +Approve2Order=Approve order (second level) +UserApproval=User for approval +UserApproval2=User for approval (second level) +ValidateOrder=Validate order +UnvalidateOrder=Unvalidate order +DeleteOrder=Delete order +CancelOrder=Cancel order +OrderReopened= Order %s re-open +AddOrder=Create order +AddSupplierOrderShort=Create order +AddPurchaseOrder=Create purchase order +AddToDraftOrders=Add to draft order +ShowOrder=Show order +OrdersOpened=Orders to process +NoDraftOrders=No draft orders +NoOrder=No order +NoSupplierOrder=No purchase order +LastOrders=Latest %s sales orders +LastCustomerOrders=Latest %s sales orders +LastSupplierOrders=Latest %s purchase orders +LastModifiedOrders=Latest %s modified orders +AllOrders=All orders +NbOfOrders=Number of orders +OrdersStatistics=Order's statistics +OrdersStatisticsSuppliers=Purchase order statistics +NumberOfOrdersByMonth=Number of orders by month +AmountOfOrdersByMonthHT=Amount of orders by month (excl. tax) +ListOfOrders=List of orders +CloseOrder=Close order +ConfirmCloseOrder=Are you sure you want to set this order to delivered? Once an order is delivered, it can be set to billed. +ConfirmDeleteOrder=Are you sure you want to delete this order? +ConfirmValidateOrder=Are you sure you want to validate this order under name %s? +ConfirmUnvalidateOrder=Are you sure you want to restore order %s to draft status? +ConfirmCancelOrder=Are you sure you want to cancel this order? +ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s? +GenerateBill=Generate invoice +ClassifyShipped=Classify delivered +PassedInShippedStatus=classified delivered +YouCantShipThis=I can't classify this. Please check user permissions +DraftOrders=Draft orders +DraftSuppliersOrders=Draft purchase orders +OnProcessOrders=In process orders +RefOrder=Ref. order +RefCustomerOrder=Ref. order for customer +RefOrderSupplier=Ref. order for vendor +RefOrderSupplierShort=Ref. order vendor +SendOrderByMail=Send order by mail +ActionsOnOrder=Events on order +NoArticleOfTypeProduct=No article of type 'product' so no shippable article for this order +OrderMode=Order method +AuthorRequest=Request author +UserWithApproveOrderGrant=Users granted with "approve orders" permission. +PaymentOrderRef=Payment of order %s +ConfirmCloneOrder=Are you sure you want to clone this order %s? +DispatchSupplierOrder=Receiving purchase order %s +FirstApprovalAlreadyDone=First approval already done +SecondApprovalAlreadyDone=Second approval already done +SupplierOrderReceivedInDolibarr=Purchase Order %s received %s +SupplierOrderSubmitedInDolibarr=Purchase Order %s submitted +SupplierOrderClassifiedBilled=Purchase Order %s set billed +OtherOrders=Other orders +SupplierOrderValidatedAndApproved=Supplier order is validated and approved : %s +SupplierOrderValidated=Supplier order is validated : %s +##### Types de contacts ##### +TypeContact_commande_internal_SALESREPFOLL=Representative following-up sales order +TypeContact_commande_internal_SHIPPING=Representative following-up shipping +TypeContact_commande_external_BILLING=Customer invoice contact +TypeContact_commande_external_SHIPPING=Customer shipping contact +TypeContact_commande_external_CUSTOMER=Customer contact following-up order +TypeContact_order_supplier_internal_SALESREPFOLL=Representative following-up purchase order +TypeContact_order_supplier_internal_SHIPPING=Representative following-up shipping +TypeContact_order_supplier_external_BILLING=Vendor invoice contact +TypeContact_order_supplier_external_SHIPPING=Vendor shipping contact +TypeContact_order_supplier_external_CUSTOMER=Vendor contact following-up order +Error_COMMANDE_SUPPLIER_ADDON_NotDefined=Constant COMMANDE_SUPPLIER_ADDON not defined +Error_COMMANDE_ADDON_NotDefined=Constant COMMANDE_ADDON not defined +Error_OrderNotChecked=No orders to invoice selected +# Order modes (how we receive order). Not the "why" are keys stored into dict.lang +OrderByMail=Mail +OrderByFax=Fax +OrderByEMail=Email +OrderByWWW=Online +OrderByPhone=Phone +# Documents models +PDFEinsteinDescription=A complete order model (old implementation of Eratosthene template) +PDFEratostheneDescription=A complete order model +PDFEdisonDescription=A simple order model +PDFProformaDescription=A complete Proforma invoice template +CreateInvoiceForThisCustomer=Bill orders +CreateInvoiceForThisSupplier=Bill orders +CreateInvoiceForThisReceptions=Bill receptions +NoOrdersToInvoice=No orders billable +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. +OrderCreation=Order creation +Ordered=Ordered +OrderCreated=Your orders have been created +OrderFail=An error happened during your orders creation +CreateOrders=Create orders +ToBillSeveralOrderSelectCustomer=To create an invoice for several orders, click first onto customer, then choose "%s". +OptionToSetOrderBilledNotEnabled=Option from module Workflow, to set order to 'Billed' automatically when invoice is validated, is not enabled, so you will have to set the status of orders to 'Billed' manually after the invoice has been generated. +IfValidateInvoiceIsNoOrderStayUnbilled=If invoice validation is 'No', the order will remain to status 'Unbilled' until the invoice is validated. +CloseReceivedSupplierOrdersAutomatically=Close order to status "%s" automatically if all products are received. +SetShippingMode=Set shipping mode +WithReceptionFinished=With reception finished +#### supplier orders status +StatusSupplierOrderCanceledShort=Canceled +StatusSupplierOrderDraftShort=Draft +StatusSupplierOrderValidatedShort=Validated +StatusSupplierOrderSentShort=In process +StatusSupplierOrderSent=Shipment in process +StatusSupplierOrderOnProcessShort=Ordered +StatusSupplierOrderProcessedShort=Processed +StatusSupplierOrderDelivered=Delivered +StatusSupplierOrderDeliveredShort=Delivered +StatusSupplierOrderToBillShort=Delivered +StatusSupplierOrderApprovedShort=Approved +StatusSupplierOrderRefusedShort=Refused +StatusSupplierOrderToProcessShort=To process +StatusSupplierOrderReceivedPartiallyShort=Partially received +StatusSupplierOrderReceivedAllShort=Products received +StatusSupplierOrderCanceled=Canceled +StatusSupplierOrderDraft=Draft (needs to be validated) +StatusSupplierOrderValidated=Validated +StatusSupplierOrderOnProcess=Ordered - Standby reception +StatusSupplierOrderOnProcessWithValidation=Ordered - Standby reception or validation +StatusSupplierOrderProcessed=Processed +StatusSupplierOrderToBill=Delivered +StatusSupplierOrderApproved=Approved +StatusSupplierOrderRefused=Refused +StatusSupplierOrderReceivedPartially=Partially received +StatusSupplierOrderReceivedAll=All products received diff --git a/htdocs/langs/ms_MY/other.lang b/htdocs/langs/ms_MY/other.lang new file mode 100644 index 00000000000..9c0663919b1 --- /dev/null +++ b/htdocs/langs/ms_MY/other.lang @@ -0,0 +1,327 @@ +# Dolibarr language file - Source file is en_US - other +SecurityCode=Security code +NumberingShort=N° +Tools=Tools +TMenuTools=Tools +ToolsDesc=All tools not included in other menu entries are grouped here.
All the tools can be accessed via the left menu. +Birthday=Birthday +BirthdayAlertOn=birthday alert active +BirthdayAlertOff=birthday alert inactive +TransKey=Translation of the key TransKey +MonthOfInvoice=Month (number 1-12) of invoice date +TextMonthOfInvoice=Month (text) of invoice date +PreviousMonthOfInvoice=Previous month (number 1-12) of invoice date +TextPreviousMonthOfInvoice=Previous month (text) of invoice date +NextMonthOfInvoice=Following month (number 1-12) of invoice date +TextNextMonthOfInvoice=Following month (text) of invoice date +PreviousMonth=Previous month +CurrentMonth=Current month +ZipFileGeneratedInto=Zip file generated into %s. +DocFileGeneratedInto=Doc file generated into %s. +JumpToLogin=Disconnected. Go to login page... +MessageForm=Message on online payment form +MessageOK=Message on the return page for a validated payment +MessageKO=Message on the return page for a canceled payment +ContentOfDirectoryIsNotEmpty=Content of this directory is not empty. +DeleteAlsoContentRecursively=Check to delete all content recursively +PoweredBy=Powered by +YearOfInvoice=Year of invoice date +PreviousYearOfInvoice=Previous year of invoice date +NextYearOfInvoice=Following year of invoice date +DateNextInvoiceBeforeGen=Date of next invoice (before generation) +DateNextInvoiceAfterGen=Date of next invoice (after generation) +GraphInBarsAreLimitedToNMeasures=Grapics are limited to %s measures in 'Bars' mode. The mode 'Lines' was automatically selected instead. +OnlyOneFieldForXAxisIsPossible=Only 1 field is currently possible as X-Axis. Only the first selected field has been selected. +AtLeastOneMeasureIsRequired=At least 1 field for measure is required +AtLeastOneXAxisIsRequired=At least 1 field for X-Axis is required +LatestBlogPosts=Latest Blog Posts +notiftouser=To users +notiftofixedemail=To fixed mail +notiftouserandtofixedemail=To user and fixed mail +Notify_ORDER_VALIDATE=Sales order validated +Notify_ORDER_SENTBYMAIL=Sales order sent by mail +Notify_ORDER_SUPPLIER_SENTBYMAIL=Purchase order sent by email +Notify_ORDER_SUPPLIER_VALIDATE=Purchase order recorded +Notify_ORDER_SUPPLIER_APPROVE=Purchase order approved +Notify_ORDER_SUPPLIER_REFUSE=Purchase order refused +Notify_PROPAL_VALIDATE=Customer proposal validated +Notify_PROPAL_CLOSE_SIGNED=Customer proposal closed signed +Notify_PROPAL_CLOSE_REFUSED=Customer proposal closed refused +Notify_PROPAL_SENTBYMAIL=Commercial proposal sent by mail +Notify_WITHDRAW_TRANSMIT=Transmission withdrawal +Notify_WITHDRAW_CREDIT=Credit withdrawal +Notify_WITHDRAW_EMIT=Perform withdrawal +Notify_COMPANY_CREATE=Third party created +Notify_COMPANY_SENTBYMAIL=Mails sent from third party card +Notify_BILL_VALIDATE=Customer invoice validated +Notify_BILL_UNVALIDATE=Customer invoice unvalidated +Notify_BILL_PAYED=Customer invoice paid +Notify_BILL_CANCEL=Customer invoice canceled +Notify_BILL_SENTBYMAIL=Customer invoice sent by mail +Notify_BILL_SUPPLIER_VALIDATE=Vendor invoice validated +Notify_BILL_SUPPLIER_PAYED=Vendor invoice paid +Notify_BILL_SUPPLIER_SENTBYMAIL=Vendor invoice sent by mail +Notify_BILL_SUPPLIER_CANCELED=Vendor invoice cancelled +Notify_CONTRACT_VALIDATE=Contract validated +Notify_FICHINTER_VALIDATE=Intervention validated +Notify_FICHINTER_ADD_CONTACT=Added contact to Intervention +Notify_FICHINTER_SENTBYMAIL=Intervention sent by mail +Notify_SHIPPING_VALIDATE=Shipping validated +Notify_SHIPPING_SENTBYMAIL=Shipping sent by mail +Notify_MEMBER_VALIDATE=Member validated +Notify_MEMBER_MODIFY=Member modified +Notify_MEMBER_SUBSCRIPTION=Member subscribed +Notify_MEMBER_RESILIATE=Member terminated +Notify_MEMBER_DELETE=Member deleted +Notify_PROJECT_CREATE=Project creation +Notify_TASK_CREATE=Task created +Notify_TASK_MODIFY=Task modified +Notify_TASK_DELETE=Task deleted +Notify_EXPENSE_REPORT_VALIDATE=Expense report validated (approval required) +Notify_EXPENSE_REPORT_APPROVE=Expense report approved +Notify_HOLIDAY_VALIDATE=Leave request validated (approval required) +Notify_HOLIDAY_APPROVE=Leave request approved +Notify_ACTION_CREATE=Added action to Agenda +SeeModuleSetup=See setup of module %s +NbOfAttachedFiles=Number of attached files/documents +TotalSizeOfAttachedFiles=Total size of attached files/documents +MaxSize=Maximum size +AttachANewFile=Attach a new file/document +LinkedObject=Linked object +NbOfActiveNotifications=Number of notifications (no. of recipient emails) +PredefinedMailTest=__(Hello)__\nThis is a test mail sent to __EMAIL__.\nThe lines are separated by a carriage return.\n\n__USER_SIGNATURE__ +PredefinedMailTestHtml=__(Hello)__
This is a test mail sent to __EMAIL__ (the word test must be in bold).
The lines are separated by a carriage return.

__USER_SIGNATURE__ +PredefinedMailContentContract=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached \n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendInvoiceReminder=__(Hello)__\n\nWe would like to remind you that the invoice __REF__ seems to have not been paid. A copy of the invoice is attached as a reminder.\n\n__ONLINE_PAYMENT_TEXT_AND_URL__\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendProposal=__(Hello)__\n\nPlease find commercial proposal __REF__ attached \n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierProposal=__(Hello)__\n\nPlease find price request __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendOrder=__(Hello)__\n\nPlease find order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierOrder=__(Hello)__\n\nPlease find our order __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendSupplierInvoice=__(Hello)__\n\nPlease find invoice __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendShipping=__(Hello)__\n\nPlease find shipping __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendFichInter=__(Hello)__\n\nPlease find intervention __REF__ attached\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentLink=You can click on the link below to make your payment if it is not already done.\n\n%s\n\n +PredefinedMailContentGeneric=__(Hello)__\n\n\n__(Sincerely)__\n\n__USER_SIGNATURE__ +PredefinedMailContentSendActionComm=Event reminder "__EVENT_LABEL__" on __EVENT_DATE__ at __EVENT_TIME__

This is an automatic message, please do not reply. +DemoDesc=Dolibarr is a compact ERP/CRM supporting several business modules. A demo showcasing all modules makes no sense as this scenario never occurs (several hundred available). So, several demo profiles are available. +ChooseYourDemoProfil=Choose the demo profile that best suits your needs... +ChooseYourDemoProfilMore=...or build your own profile
(manual module selection) +DemoFundation=Manage members of a foundation +DemoFundation2=Manage members and bank account of a foundation +DemoCompanyServiceOnly=Company or freelance selling service only +DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyProductAndStocks=Shop selling products with Point Of Sales +DemoCompanyManufacturing=Company manufacturing products +DemoCompanyAll=Company with multiple activities (all main modules) +CreatedBy=Created by %s +ModifiedBy=Modified by %s +ValidatedBy=Validated by %s +SignedBy=Signed by %s +ClosedBy=Closed by %s +CreatedById=User id who created +ModifiedById=User id who made latest change +ValidatedById=User id who validated +CanceledById=User id who canceled +ClosedById=User id who closed +CreatedByLogin=User login who created +ModifiedByLogin=User login who made latest change +ValidatedByLogin=User login who validated +CanceledByLogin=User login who canceled +ClosedByLogin=User login who closed +FileWasRemoved=File %s was removed +DirWasRemoved=Directory %s was removed +FeatureNotYetAvailable=Feature not yet available in the current version +FeatureNotAvailableOnDevicesWithoutMouse=Feature not available on devices without mouse +FeaturesSupported=Supported features +Width=Width +Height=Height +Depth=Depth +Top=Top +Bottom=Bottom +Left=Left +Right=Right +CalculatedWeight=Calculated weight +CalculatedVolume=Calculated volume +Weight=Weight +WeightUnitton=ton +WeightUnitkg=kg +WeightUnitg=g +WeightUnitmg=mg +WeightUnitpound=pound +WeightUnitounce=ounce +Length=Length +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=ounce +VolumeUnitlitre=litre +VolumeUnitgallon=gallon +SizeUnitm=m +SizeUnitdm=dm +SizeUnitcm=cm +SizeUnitmm=mm +SizeUnitinch=inch +SizeUnitfoot=foot +SizeUnitpoint=point +BugTracker=Bug tracker +SendNewPasswordDesc=This form allows you to request a new password. It will be sent to your email address.
Change will become effective once you click on the confirmation link in the email.
Check your inbox. +BackToLoginPage=Back to login page +AuthenticationDoesNotAllowSendNewPassword=Authentication mode is %s.
In this mode, Dolibarr can't know nor change your password.
Contact your system administrator if you want to change your password. +EnableGDLibraryDesc=Install or enable GD library on your PHP installation to use this option. +ProfIdShortDesc=Prof Id %s is an information depending on third party country.
For example, for country %s, it's code %s. +DolibarrDemo=Dolibarr ERP/CRM demo +StatsByNumberOfUnits=Statistics for sum of qty of products/services +StatsByNumberOfEntities=Statistics for number of referring entities (no. of invoices, or orders...) +NumberOfProposals=Number of proposals +NumberOfCustomerOrders=Number of sales orders +NumberOfCustomerInvoices=Number of customer invoices +NumberOfSupplierProposals=Number of vendor proposals +NumberOfSupplierOrders=Number of purchase orders +NumberOfSupplierInvoices=Number of vendor invoices +NumberOfContracts=Number of contracts +NumberOfMos=Number of manufacturing orders +NumberOfUnitsProposals=Number of units on proposals +NumberOfUnitsCustomerOrders=Number of units on sales orders +NumberOfUnitsCustomerInvoices=Number of units on customer invoices +NumberOfUnitsSupplierProposals=Number of units on vendor proposals +NumberOfUnitsSupplierOrders=Number of units on purchase orders +NumberOfUnitsSupplierInvoices=Number of units on vendor invoices +NumberOfUnitsContracts=Number of units on contracts +NumberOfUnitsMos=Number of units to produce in manufacturing orders +EMailTextInterventionAddedContact=A new intervention %s has been assigned to you. +EMailTextInterventionValidated=The intervention %s has been validated. +EMailTextInvoiceValidated=Invoice %s has been validated. +EMailTextInvoicePayed=Invoice %s has been paid. +EMailTextProposalValidated=Proposal %s has been validated. +EMailTextProposalClosedSigned=Proposal %s has been closed signed. +EMailTextOrderValidated=Order %s has been validated. +EMailTextOrderApproved=Order %s has been approved. +EMailTextOrderValidatedBy=Order %s has been recorded by %s. +EMailTextOrderApprovedBy=Order %s has been approved by %s. +EMailTextOrderRefused=Order %s has been refused. +EMailTextOrderRefusedBy=Order %s has been refused by %s. +EMailTextExpeditionValidated=Shipping %s has been validated. +EMailTextExpenseReportValidated=Expense report %s has been validated. +EMailTextExpenseReportApproved=Expense report %s has been approved. +EMailTextHolidayValidated=Leave request %s has been validated. +EMailTextHolidayApproved=Leave request %s has been approved. +EMailTextActionAdded=The action %s has been added to the Agenda. +ImportedWithSet=Importation data set +DolibarrNotification=Automatic notification +ResizeDesc=Enter new width OR new height. Ratio will be kept during resizing... +NewLength=New width +NewHeight=New height +NewSizeAfterCropping=New size after cropping +DefineNewAreaToPick=Define new area on image to pick (left click on image then drag until you reach the opposite corner) +CurrentInformationOnImage=This tool was designed to help you to resize or crop an image. This is the information on the current edited image +ImageEditor=Image editor +YouReceiveMailBecauseOfNotification=You receive this message because your email has been added to list of targets to be informed of particular events into %s software of %s. +YouReceiveMailBecauseOfNotification2=This event is the following: +ThisIsListOfModules=This is a list of modules preselected by this demo profile (only most common modules are visible in this demo). Edit this to have a more personalized demo and click on "Start". +UseAdvancedPerms=Use the advanced permissions of some modules +FileFormat=File format +SelectAColor=Choose a color +AddFiles=Add Files +StartUpload=Start upload +CancelUpload=Cancel upload +FileIsTooBig=Files is too big +PleaseBePatient=Please be patient... +NewPassword=New password +ResetPassword=Reset password +RequestToResetPasswordReceived=A request to change your password has been received. +NewKeyIs=This is your new keys to login +NewKeyWillBe=Your new key to login to software will be +ClickHereToGoTo=Click here to go to %s +YouMustClickToChange=You must however first click on the following link to validate this password change +ConfirmPasswordChange=Confirm password change +ForgetIfNothing=If you didn't request this change, just forget this email. Your credentials are kept safe. +IfAmountHigherThan=If amount higher than %s +SourcesRepository=Repository for sources +Chart=Chart +PassEncoding=Password encoding +PermissionsAdd=Permissions added +PermissionsDelete=Permissions removed +YourPasswordMustHaveAtLeastXChars=Your password must have at least %s chars +PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars +PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars +PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars +PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +YourPasswordHasBeenReset=Your password has been reset successfully +ApplicantIpAddress=IP address of applicant +SMSSentTo=SMS sent to %s +MissingIds=Missing ids +ThirdPartyCreatedByEmailCollector=Third party created by email collector from email MSGID %s +ContactCreatedByEmailCollector=Contact/address created by email collector from email MSGID %s +ProjectCreatedByEmailCollector=Project created by email collector from email MSGID %s +TicketCreatedByEmailCollector=Ticket created by email collector from email MSGID %s +OpeningHoursFormatDesc=Use a - to separate opening and closing hours.
Use a space to enter different ranges.
Example: 8-12 14-18 +SuffixSessionName=Suffix for session name +LoginWith=Login with %s + +##### Export ##### +ExportsArea=Exports area +AvailableFormats=Available formats +LibraryUsed=Library used +LibraryVersion=Library version +ExportableDatas=Exportable data +NoExportableData=No exportable data (no modules with exportable data loaded, or missing permissions) +##### External sites ##### +WebsiteSetup=Setup of module website +WEBSITE_PAGEURL=URL of page +WEBSITE_TITLE=Title +WEBSITE_DESCRIPTION=Description +WEBSITE_IMAGE=Image +WEBSITE_IMAGEDesc=Relative path of the image media. You can keep this empty as this is rarely used (it can be used by dynamic content to show a thumbnail in a list of blog posts). Use __WEBSITE_KEY__ in the path if path depends on website name (for example: image/__WEBSITE_KEY__/stories/myimage.png). +WEBSITE_KEYWORDS=Keywords +LinesToImport=Lines to import + +MemoryUsage=Memory usage +RequestDuration=Duration of request +ProductsPerPopularity=Products/Services by popularity +PopuProp=Products/Services by popularity in Proposals +PopuCom=Products/Services by popularity in Orders +ProductStatistics=Products/Services Statistics +NbOfQtyInOrders=Qty in orders +SelectTheTypeOfObjectToAnalyze=Select an object to view its statistics... + +ConfirmBtnCommonContent = Are you sure you want to "%s" ? +ConfirmBtnCommonTitle = Confirm your action +CloseDialog = Close +Autofill = Autofill + +# externalsite +ExternalSiteSetup=Setup link to external website +ExternalSiteURL=External Site URL of HTML iframe content +ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. +ExampleMyMenuEntry=My menu entry + +# FTP +FTPClientSetup=FTP or SFTP Client module setup +NewFTPClient=New FTP/FTPS connection setup +FTPArea=FTP/FTPS Area +FTPAreaDesc=This screen shows a view of an FTP et SFTP server. +SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions +FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password +FTPFailedToRemoveFile=Failed to remove file %s. +FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. +FTPPassiveMode=Passive mode +ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... +FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ms_MY/partnership.lang b/htdocs/langs/ms_MY/partnership.lang new file mode 100644 index 00000000000..5abf907730f --- /dev/null +++ b/htdocs/langs/ms_MY/partnership.lang @@ -0,0 +1,94 @@ +# Copyright (C) 2021 NextGestion +# +# 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 . + +# +# Generic +# +ModulePartnershipName=Partnership management +PartnershipDescription=Module Partnership management +PartnershipDescriptionLong= Module Partnership management +Partnership=Partnership +AddPartnership=Add partnership +CancelPartnershipForExpiredMembers=Partnership: Cancel partnership of members with expired subscriptions +PartnershipCheckBacklink=Partnership: Check referring backlink + +# +# Menu +# +NewPartnership=New Partnership +ListOfPartnerships=List of partnership + +# +# Admin page +# +PartnershipSetup=Partnership setup +PartnershipAbout=About Partnership +PartnershipAboutPage=Partnership about page +partnershipforthirdpartyormember=Partner status must be set on a 'thirdparty' or a 'member' +PARTNERSHIP_IS_MANAGED_FOR=Partnership managed for +PARTNERSHIP_BACKLINKS_TO_CHECK=Backlinks to check +PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL=Nb of days before cancelling status of a partnership when a subscription has expired +ReferingWebsiteCheck=Check of website referring +ReferingWebsiteCheckDesc=You can enable a feature to check that your partners has added a backlink to your website domains on their own website. +PublicFormRegistrationPartnerDesc=Dolibarr can provide you a public URL/website to allow external visitors to request to be part of the partnership program. + +# +# Object +# +DeletePartnership=Delete a partnership +PartnershipDedicatedToThisThirdParty=Partnership dedicated to this third party +PartnershipDedicatedToThisMember=Partnership dedicated to this member +DatePartnershipStart=Start date +DatePartnershipEnd=End date +ReasonDecline=Decline reason +ReasonDeclineOrCancel=Decline reason +PartnershipAlreadyExist=Partnership already exist +ManagePartnership=Manage partnership +BacklinkNotFoundOnPartnerWebsite=Backlink not found on partner website +ConfirmClosePartnershipAsk=Are you sure you want to cancel this partnership? +PartnershipType=Partnership type +PartnershipRefApproved=Partnership %s approved +KeywordToCheckInWebsite=If you want to check that a given keyword is present into the website of each partner, define this keyword here +PartnershipDraft=Draft +PartnershipAccepted=Accepted +PartnershipRefused=Refused +PartnershipCanceled=Canceled +PartnershipManagedFor=Partners are + +# +# Template Mail +# +SendingEmailOnPartnershipWillSoonBeCanceled=Partnership will soon be canceled +SendingEmailOnPartnershipRefused=Partnership refused +SendingEmailOnPartnershipAccepted=Partnership accepted +SendingEmailOnPartnershipCanceled=Partnership canceled + +YourPartnershipWillSoonBeCanceledTopic=Partnership will soon be canceled +YourPartnershipRefusedTopic=Partnership refused +YourPartnershipAcceptedTopic=Partnership accepted +YourPartnershipCanceledTopic=Partnership canceled + +YourPartnershipWillSoonBeCanceledContent=We inform you that your partnership will soon be canceled (Backlink not found) +YourPartnershipRefusedContent=We inform you that your partnership request has been refused. +YourPartnershipAcceptedContent=We inform you that your partnership request has been accepted. +YourPartnershipCanceledContent=We inform you that your partnership has been canceled. + +CountLastUrlCheckError=Number of errors for last URL check +LastCheckBacklink=Date of last URL check +ReasonDeclineOrCancel=Decline reason + +NewPartnershipRequest=New partnership request +NewPartnershipRequestDesc=This form allows you to request to be part of one of our partnership program. If you need help to fill this form, please contact by email %s. + diff --git a/htdocs/langs/ms_MY/paybox.lang b/htdocs/langs/ms_MY/paybox.lang new file mode 100644 index 00000000000..a2bfb1773e4 --- /dev/null +++ b/htdocs/langs/ms_MY/paybox.lang @@ -0,0 +1,30 @@ +# Dolibarr language file - Source file is en_US - paybox +PayBoxSetup=PayBox module setup +PayBoxDesc=This module offer pages to allow payment on Paybox by customers. This can be used for a free payment or for a payment on a particular Dolibarr object (invoice, order, ...) +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome to our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +Creditor=Creditor +PaymentCode=Payment code +PayBoxDoPayment=Pay with Paybox +YouWillBeRedirectedOnPayBox=You will be redirected on secured Paybox page to input you credit card information +Continue=Next +SetupPayBoxToHavePaymentCreatedAutomatically=Setup your Paybox with url %s to have payment created automatically when validated by Paybox. +YourPaymentHasBeenRecorded=This page confirms that your payment has been recorded. Thank you. +YourPaymentHasNotBeenRecorded=Your payment has NOT been recorded and the transaction has been canceled. Thank you. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +PAYBOX_CGI_URL_V2=Url of Paybox CGI module for payment +CSSUrlForPaymentForm=CSS style sheet url for payment form +NewPayboxPaymentReceived=New Paybox payment received +NewPayboxPaymentFailed=New Paybox payment tried but failed +PAYBOX_PAYONLINE_SENDEMAIL=Email notification after payment attempt (success or fail) +PAYBOX_PBX_SITE=Value for PBX SITE +PAYBOX_PBX_RANG=Value for PBX Rang +PAYBOX_PBX_IDENTIFIANT=Value for PBX ID +PAYBOX_HMAC_KEY=HMAC key diff --git a/htdocs/langs/ms_MY/paypal.lang b/htdocs/langs/ms_MY/paypal.lang new file mode 100644 index 00000000000..a935cd38434 --- /dev/null +++ b/htdocs/langs/ms_MY/paypal.lang @@ -0,0 +1,37 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=PayPal module setup +PaypalDesc=This module allows payment by customers via PayPal. This can be used for a ad-hoc payment or for a payment related to a Dolibarr object (invoice, order, ...) +PaypalOrCBDoPayment=Pay with PayPal (Card or PayPal) +PaypalDoPayment=Pay with PayPal +PAYPAL_API_SANDBOX=Mode test/sandbox +PAYPAL_API_USER=API username +PAYPAL_API_PASSWORD=API password +PAYPAL_API_SIGNATURE=API signature +PAYPAL_SSLVERSION=Curl SSL Version +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Offer "integral" payment (Credit card+PayPal) or "PayPal" only +PaypalModeIntegral=Integral +PaypalModeOnlyPaypal=PayPal only +ONLINE_PAYMENT_CSS_URL=Optional URL of CSS stylesheet on online payment page +ThisIsTransactionId=This is id of transaction: %s +PAYPAL_ADD_PAYMENT_URL=Include the PayPal payment url when you send a document by email +NewOnlinePaymentReceived=New online payment received +NewOnlinePaymentFailed=New online payment tried but failed +ONLINE_PAYMENT_SENDEMAIL=Email address for notifications after each payment attempt (for success and fail) +ReturnURLAfterPayment=Return URL after payment +ValidationOfOnlinePaymentFailed=Validation of online payment failed +PaymentSystemConfirmPaymentPageWasCalledButFailed=Payment confirmation page was called by payment system returned an error +SetExpressCheckoutAPICallFailed=SetExpressCheckout API call failed. +DoExpressCheckoutPaymentAPICallFailed=DoExpressCheckoutPayment API call failed. +DetailedErrorMessage=Detailed Error Message +ShortErrorMessage=Short Error Message +ErrorCode=Error Code +ErrorSeverityCode=Error Severity Code +OnlinePaymentSystem=Online payment system +PaypalLiveEnabled=PayPal "live" mode enabled (otherwise test/sandbox mode) +PaypalImportPayment=Import PayPal payments +PostActionAfterPayment=Post actions after payments +ARollbackWasPerformedOnPostActions=A rollback was performed on all Post actions. You must complete post actions manually if they are necessary. +ValidationOfPaymentFailed=Validation of payment has failed +CardOwner=Card holder +PayPalBalance=Paypal credit +OnlineSubscriptionPaymentLine=Online subscription recorded on %s
Paid via %s
Originating IP address: %s
Transaction ID: %s diff --git a/htdocs/langs/ms_MY/printing.lang b/htdocs/langs/ms_MY/printing.lang new file mode 100644 index 00000000000..bd9094f213d --- /dev/null +++ b/htdocs/langs/ms_MY/printing.lang @@ -0,0 +1,54 @@ +# Dolibarr language file - Source file is en_US - printing +Module64000Name=One click Printing +Module64000Desc=Enable One click Printing System +PrintingSetup=Setup of One click Printing System +PrintingDesc=This module adds a Print button to various modules to allow documents to be printed directly to a printer with no need to open the document into another application. +MenuDirectPrinting=One click Printing jobs +DirectPrint=One click Print +PrintingDriverDesc=Configuration variables for printing driver. +ListDrivers=List of drivers +PrintTestDesc=List of Printers. +FileWasSentToPrinter=File %s was sent to printer +ViaModule=via the module +NoActivePrintingModuleFound=No active driver to print document. Check setup of module %s. +PleaseSelectaDriverfromList=Please select a driver from list. +PleaseConfigureDriverfromList=Please configure the selected driver from list. +SetupDriver=Driver setup +TargetedPrinter=Targeted printer +UserConf=Setup per user +PRINTGCP_INFO=Google OAuth API setup +PRINTGCP_AUTHLINK=Authentication +PRINTGCP_TOKEN_ACCESS=Google Cloud Print OAuth Token +PrintGCPDesc=This driver allows sending documents directly to a printer using Google Cloud Print. +GCP_Name=Name +GCP_displayName=Display Name +GCP_Id=Printer Id +GCP_OwnerName=Owner Name +GCP_State=Printer State +GCP_connectionStatus=Online State +GCP_Type=Printer Type +PrintIPPDesc=This driver allows sending of documents directly to a printer. It requires a Linux system with CUPS installed. +PRINTIPP_HOST=Print server +PRINTIPP_PORT=Port +PRINTIPP_USER=Login +PRINTIPP_PASSWORD=Password +NoDefaultPrinterDefined=No default printer defined +DefaultPrinter=Default printer +Printer=Printer +IPP_Uri=Printer Uri +IPP_Name=Printer Name +IPP_State=Printer State +IPP_State_reason=State reason +IPP_State_reason1=State reason1 +IPP_BW=BW +IPP_Color=Color +IPP_Device=Device +IPP_Media=Printer media +IPP_Supported=Type of media +DirectPrintingJobsDesc=This page lists printing jobs found for available printers. +GoogleAuthNotConfigured=Google OAuth has not been setup. Enable module OAuth and set a Google ID/Secret. +GoogleAuthConfigured=Google OAuth credentials were found into setup of module OAuth. +PrintingDriverDescprintgcp=Configuration variables for printing driver Google Cloud Print. +PrintingDriverDescprintipp=Configuration variables for printing driver Cups. +PrintTestDescprintgcp=List of Printers for Google Cloud Print. +PrintTestDescprintipp=List of Printers for Cups. diff --git a/htdocs/langs/ms_MY/productbatch.lang b/htdocs/langs/ms_MY/productbatch.lang new file mode 100644 index 00000000000..4bd64f44577 --- /dev/null +++ b/htdocs/langs/ms_MY/productbatch.lang @@ -0,0 +1,46 @@ +# ProductBATCH language file - Source file is en_US - ProductBATCH +ManageLotSerial=Use lot/serial number +ProductStatusOnBatch=Yes (lot required) +ProductStatusOnSerial=Yes (unique serial number required) +ProductStatusNotOnBatch=No (lot/serial not used) +ProductStatusOnBatchShort=Lot +ProductStatusOnSerialShort=Serial +ProductStatusNotOnBatchShort=No +Batch=Lot/Serial +atleast1batchfield=Eat-by date or Sell-by date or Lot/Serial number +batch_number=Lot/Serial number +BatchNumberShort=Lot/Serial +EatByDate=Eat-by date +SellByDate=Sell-by date +DetailBatchNumber=Lot/Serial details +printBatch=Lot/Serial: %s +printEatby=Eat-by: %s +printSellby=Sell-by: %s +printQty=Qty: %d +AddDispatchBatchLine=Add a line for Shelf Life dispatching +WhenProductBatchModuleOnOptionAreForced=When module Lot/Serial is on, automatic stock decrease is forced to 'Decrease real stocks on shipping validation' and automatic increase mode is forced to 'Increase real stocks on manual dispatching into warehouses' and can't be edited. Other options can be defined as you want. +ProductDoesNotUseBatchSerial=This product does not use lot/serial number +ProductLotSetup=Setup of module lot/serial +ShowCurrentStockOfLot=Show current stock for couple product/lot +ShowLogOfMovementIfLot=Show log of movements for couple product/lot +StockDetailPerBatch=Stock detail per lot +SerialNumberAlreadyInUse=Serial number %s is already used for product %s +TooManyQtyForSerialNumber=You can only have one product %s for serial number %s +ManageLotMask=Custom mask +CustomMasks=Option to define a different numbering mask for each product +BatchLotNumberingModules=Numbering rule for automatic generation of lot number +BatchSerialNumberingModules=Numbering rule for automatic generation of serial number (for products with property 1 unique lot/serial for each product) +QtyToAddAfterBarcodeScan=Qty to %s for each barcode/lot/serial scanned +LifeTime=Life span (in days) +EndOfLife=End of life +ManufacturingDate=Manufacturing date +DestructionDate=Destruction date +FirstUseDate=First use date +QCFrequency=Quality control frequency (in days) +ShowAllLots=Show all lots +HideLots=Hide lots +#Traceability - qc status +OutOfOrder=Out of order +InWorkingOrder=In working order +ToReplace=Replace +CantMoveNonExistantSerial=Error. You ask a move on a record for a serial that does not exists anymore. May be you take the same serial on same warehouse several times in same shipment or it was used by another shipment. Remove this shipment and prepare another one. diff --git a/htdocs/langs/ms_MY/products.lang b/htdocs/langs/ms_MY/products.lang new file mode 100644 index 00000000000..94d77315217 --- /dev/null +++ b/htdocs/langs/ms_MY/products.lang @@ -0,0 +1,429 @@ +# Dolibarr language file - Source file is en_US - products +ProductRef=Product ref. +ProductLabel=Product label +ProductLabelTranslated=Translated product label +ProductDescription=Product description +ProductDescriptionTranslated=Translated product description +ProductNoteTranslated=Translated product note +ProductServiceCard=Products/Services card +TMenuProducts=Products +TMenuServices=Services +Products=Products +Services=Services +Product=Product +Service=Service +ProductId=Product/service id +Create=Create +Reference=Reference +NewProduct=New product +NewService=New service +ProductVatMassChange=Global VAT Update +ProductVatMassChangeDesc=This tool updates the VAT rate defined on ALL products and services! +MassBarcodeInit=Mass barcode init +MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete. +ProductAccountancyBuyCode=Accounting code (purchase) +ProductAccountancyBuyIntraCode=Accounting code (purchase intra-community) +ProductAccountancyBuyExportCode=Accounting code (purchase import) +ProductAccountancySellCode=Accounting code (sale) +ProductAccountancySellIntraCode=Accounting code (sale intra-Community) +ProductAccountancySellExportCode=Accounting code (sale export) +ProductOrService=Product or Service +ProductsAndServices=Products and Services +ProductsOrServices=Products or Services +ProductsPipeServices=Products | Services +ProductsOnSale=Products for sale +ProductsOnPurchase=Products for purchase +ProductsOnSaleOnly=Products for sale only +ProductsOnPurchaseOnly=Products for purchase only +ProductsNotOnSell=Products not for sale and not for purchase +ProductsOnSellAndOnBuy=Products for sale and for purchase +ServicesOnSale=Services for sale +ServicesOnPurchase=Services for purchase +ServicesOnSaleOnly=Services for sale only +ServicesOnPurchaseOnly=Services for purchase only +ServicesNotOnSell=Services not for sale and not for purchase +ServicesOnSellAndOnBuy=Services for sale and for purchase +LastModifiedProductsAndServices=Latest %s products/services which were modified +LastRecordedProducts=Latest %s recorded products +LastRecordedServices=Latest %s recorded services +CardProduct0=Product +CardProduct1=Service +Stock=Stock +MenuStocks=Stocks +Stocks=Stocks and location (warehouse) of products +Movements=Movements +Sell=Sell +Buy=Purchase +OnSell=For sale +OnBuy=For purchase +NotOnSell=Not for sale +ProductStatusOnSell=For sale +ProductStatusNotOnSell=Not for sale +ProductStatusOnSellShort=For sale +ProductStatusNotOnSellShort=Not for sale +ProductStatusOnBuy=For purchase +ProductStatusNotOnBuy=Not for purchase +ProductStatusOnBuyShort=For purchase +ProductStatusNotOnBuyShort=Not for purchase +UpdateVAT=Update vat +UpdateDefaultPrice=Update default price +UpdateLevelPrices=Update prices for each level +AppliedPricesFrom=Applied from +SellingPrice=Selling price +SellingPriceHT=Selling price (excl. tax) +SellingPriceTTC=Selling price (inc. tax) +SellingMinPriceTTC=Minimum Selling price (inc. tax) +CostPriceDescription=This price field (excl. tax) can be used to capture the average amount this product costs to your company. It may be any price you calculate yourself, for example, from the average buying price plus average production and distribution cost. +CostPriceUsage=This value could be used for margin calculation. +ManufacturingPrice=Manufacturing price +SoldAmount=Sold amount +PurchasedAmount=Purchased amount +NewPrice=New price +MinPrice=Min. selling price +EditSellingPriceLabel=Edit selling price label +CantBeLessThanMinPrice=The selling price can't be lower than minimum allowed for this product (%s without tax). This message can also appears if you type a too important discount. +ContractStatusClosed=Closed +ErrorProductAlreadyExists=A product with reference %s already exists. +ErrorProductBadRefOrLabel=Wrong value for reference or label. +ErrorProductClone=There was a problem while trying to clone the product or service. +ErrorPriceCantBeLowerThanMinPrice=Error, price can't be lower than minimum price. +Suppliers=Vendors +SupplierRef=Vendor SKU +ShowProduct=Show product +ShowService=Show service +ProductsAndServicesArea=Product and Services area +ProductsArea=Product area +ServicesArea=Services area +ListOfStockMovements=List of stock movements +BuyingPrice=Buying price +PriceForEachProduct=Products with specific prices +SupplierCard=Vendor card +PriceRemoved=Price removed +BarCode=Barcode +BarcodeType=Barcode type +SetDefaultBarcodeType=Set barcode type +BarcodeValue=Barcode value +NoteNotVisibleOnBill=Note (not visible on invoices, proposals...) +ServiceLimitedDuration=If product is a service with limited duration: +FillWithLastServiceDates=Fill with last service line dates +MultiPricesAbility=Multiple price segments per product/service (each customer is in one price segment) +MultiPricesNumPrices=Number of prices +DefaultPriceType=Base of prices per default (with versus without tax) when adding new sale prices +AssociatedProductsAbility=Enable Kits (set of several products) +VariantsAbility=Enable Variants (variations of products, for example color, size) +AssociatedProducts=Kits +AssociatedProductsNumber=Number of products composing this kit +ParentProductsNumber=Number of parent packaging product +ParentProducts=Parent products +IfZeroItIsNotAVirtualProduct=If 0, this product is not a kit +IfZeroItIsNotUsedByVirtualProduct=If 0, this product is not used by any kit +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(s) of this kit +ProductParentList=List of kits with this product as a component +ErrorAssociationIsFatherOfThis=One of selected product is parent with current product +DeleteProduct=Delete a product/service +ConfirmDeleteProduct=Are you sure you want to delete this product/service? +ProductDeleted=Product/Service "%s" deleted from database. +ExportDataset_produit_1=Products +ExportDataset_service_1=Services +ImportDataset_produit_1=Products +ImportDataset_service_1=Services +DeleteProductLine=Delete product line +ConfirmDeleteProductLine=Are you sure you want to delete this product line? +ProductSpecial=Special +QtyMin=Min. purchase quantity +PriceQtyMin=Price quantity min. +PriceQtyMinCurrency=Price (currency) for this qty. +WithoutDiscount=Without discount +VATRateForSupplierProduct=VAT Rate (for this vendor/product) +DiscountQtyMin=Discount for this qty. +NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product +NoSupplierPriceDefinedForThisProduct=No vendor price/qty defined for this product +PredefinedItem=Predefined item +PredefinedProductsToSell=Predefined Product +PredefinedServicesToSell=Predefined Service +PredefinedProductsAndServicesToSell=Predefined products/services to sell +PredefinedProductsToPurchase=Predefined product to purchase +PredefinedServicesToPurchase=Predefined services to purchase +PredefinedProductsAndServicesToPurchase=Predefined products/services to purchase +NotPredefinedProducts=Not predefined products/services +GenerateThumb=Generate thumb +ServiceNb=Service #%s +ListProductServiceByPopularity=List of products/services by popularity +ListProductByPopularity=List of products by popularity +ListServiceByPopularity=List of services by popularity +Finished=Manufactured product +RowMaterial=Raw Material +ConfirmCloneProduct=Are you sure you want to clone product or service %s? +CloneContentProduct=Clone all main information of the product/service +ClonePricesProduct=Clone prices +CloneCategoriesProduct=Clone linked tags/categories +CloneCompositionProduct=Clone virtual products/services +CloneCombinationsProduct=Clone the product variants +ProductIsUsed=This product is used +NewRefForClone=Ref. of new product/service +SellingPrices=Selling prices +BuyingPrices=Buying prices +CustomerPrices=Customer prices +SuppliersPrices=Vendor prices +SuppliersPricesOfProductsOrServices=Vendor prices (of products or services) +CustomCode=Customs|Commodity|HS code +CountryOrigin=Country of origin +RegionStateOrigin=Region of origin +StateOrigin=State|Province of origin +Nature=Nature of product (raw/manufactured) +NatureOfProductShort=Nature of product +NatureOfProductDesc=Raw material or manufactured product +ShortLabel=Short label +Unit=Unit +p=u. +set=set +se=set +second=second +s=s +hour=hour +h=h +day=day +d=d +kilogram=kilogram +kg=Kg +gram=gram +g=g +meter=meter +m=m +lm=lm +m2=m² +m3=m³ +liter=liter +l=L +unitP=Piece +unitSET=Set +unitS=Second +unitH=Hour +unitD=Day +unitG=Gram +unitM=Meter +unitLM=Linear meter +unitM2=Square meter +unitM3=Cubic meter +unitL=Liter +unitT=ton +unitKG=kg +unitG=Gram +unitMG=mg +unitLB=pound +unitOZ=ounce +unitM=Meter +unitDM=dm +unitCM=cm +unitMM=mm +unitFT=ft +unitIN=in +unitM2=Square meter +unitDM2=dm² +unitCM2=cm² +unitMM2=mm² +unitFT2=ft² +unitIN2=in² +unitM3=Cubic meter +unitDM3=dm³ +unitCM3=cm³ +unitMM3=mm³ +unitFT3=ft³ +unitIN3=in³ +unitOZ3=ounce +unitgallon=gallon +ProductCodeModel=Product ref template +ServiceCodeModel=Service ref template +CurrentProductPrice=Current price +AlwaysUseNewPrice=Always use current price of product/service +AlwaysUseFixedPrice=Use the fixed price +PriceByQuantity=Different prices by quantity +DisablePriceByQty=Disable prices by quantity +PriceByQuantityRange=Quantity range +MultipriceRules=Automatic prices for segment +UseMultipriceRules=Use price segment rules (defined into product module setup) to auto calculate prices of all other segments according to first segment +PercentVariationOver=%% variation over %s +PercentDiscountOver=%% discount over %s +KeepEmptyForAutoCalculation=Keep empty to have this calculated automatically from weight or volume of products +VariantRefExample=Examples: COL, SIZE +VariantLabelExample=Examples: Color, Size +### composition fabrication +Build=Produce +ProductsMultiPrice=Products and prices for each price segment +ProductsOrServiceMultiPrice=Customer prices (of products or services, multi-prices) +ProductSellByQuarterHT=Products turnover quarterly before tax +ServiceSellByQuarterHT=Services turnover quarterly before tax +Quarter1=1st. Quarter +Quarter2=2nd. Quarter +Quarter3=3rd. Quarter +Quarter4=4th. Quarter +BarCodePrintsheet=Print barcodes +PageToGenerateBarCodeSheets=With this tool, you can print sheets of barcode stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. +NumberOfStickers=Number of stickers to print on page +PrintsheetForOneBarCode=Print several stickers for one barcode +BuildPageToPrint=Generate page to print +FillBarCodeTypeAndValueManually=Fill barcode type and value manually. +FillBarCodeTypeAndValueFromProduct=Fill barcode type and value from barcode of a product. +FillBarCodeTypeAndValueFromThirdParty=Fill barcode type and value from barcode of a third party. +DefinitionOfBarCodeForProductNotComplete=Definition of type or value of barcode not complete for product %s. +DefinitionOfBarCodeForThirdpartyNotComplete=Definition of type or value of barcode non complete for third party %s. +BarCodeDataForProduct=Barcode information of product %s: +BarCodeDataForThirdparty=Barcode information of third party %s: +ResetBarcodeForAllRecords=Define barcode value for all record (this will also reset barcode value already defined with new values) +PriceByCustomer=Different prices for each customer +PriceCatalogue=A single sell price per product/service +PricingRule=Rules for selling prices +AddCustomerPrice=Add price by customer +ForceUpdateChildPriceSoc=Set same price on customer's subsidiaries +PriceByCustomerLog=Log of previous customer prices +MinimumPriceLimit=Minimum price can't be lower then %s +MinimumRecommendedPrice=Minimum recommended price is: %s +PriceExpressionEditor=Price expression editor +PriceExpressionSelected=Selected price expression +PriceExpressionEditorHelp1="price = 2 + 2" or "2 + 2" for setting the price. Use ; to separate expressions +PriceExpressionEditorHelp2=You can access ExtraFields with variables like #extrafield_myextrafieldkey# and global variables with #global_mycode# +PriceExpressionEditorHelp3=In both product/service and vendor prices there are these variables available:
#tva_tx# #localtax1_tx# #localtax2_tx# #weight# #length# #surface# #price_min# +PriceExpressionEditorHelp4=In product/service price only: #supplier_min_price#
In vendor prices only: #supplier_quantity# and #supplier_tva_tx# +PriceExpressionEditorHelp5=Available global values: +PriceMode=Price mode +PriceNumeric=Number +DefaultPrice=Default price +DefaultPriceLog=Log of previous default prices +ComposedProductIncDecStock=Increase/Decrease stock on parent change +ComposedProduct=Child products +MinSupplierPrice=Minimum buying price +MinCustomerPrice=Minimum selling price +NoDynamicPrice=No dynamic price +DynamicPriceConfiguration=Dynamic price configuration +DynamicPriceDesc=You may define mathematical formulae to calculate Customer or Vendor prices. Such formulas can use all mathematical operators, some constants and variables. You can define here the variables you wish to use. If the variable needs an automatic update, you may define the external URL to allow Dolibarr to update the value automatically. +AddVariable=Add Variable +AddUpdater=Add Updater +GlobalVariables=Global variables +VariableToUpdate=Variable to update +GlobalVariableUpdaters=External updaters for variables +GlobalVariableUpdaterType0=JSON data +GlobalVariableUpdaterHelp0=Parses JSON data from specified URL, VALUE specifies the location of relevant value, +GlobalVariableUpdaterHelpFormat0=Format for request {"URL": "http://example.com/urlofjson", "VALUE": "array1,array2,targetvalue"} +GlobalVariableUpdaterType1=WebService data +GlobalVariableUpdaterHelp1=Parses WebService data from specified URL, NS specifies the namespace, VALUE specifies the location of relevant value, DATA should contain the data to send and METHOD is the calling WS method +GlobalVariableUpdaterHelpFormat1=Format for request is {"URL": "http://example.com/urlofws", "VALUE": "array,targetvalue", "NS": "http://example.com/urlofns", "METHOD": "myWSMethod", "DATA": {"your": "data", "to": "send"}} +UpdateInterval=Update interval (minutes) +LastUpdated=Latest update +CorrectlyUpdated=Correctly updated +PropalMergePdfProductActualFile=Files use to add into PDF Azur are/is +PropalMergePdfProductChooseFile=Select PDF files +IncludingProductWithTag=Including products/services with the tag +DefaultPriceRealPriceMayDependOnCustomer=Default price, real price may depend on customer +WarningSelectOneDocument=Please select at least one document +DefaultUnitToShow=Unit +NbOfQtyInProposals=Qty in proposals +ClinkOnALinkOfColumn=Click on a link of column %s to get a detailed view... +ProductsOrServicesTranslations=Products/Services translations +TranslatedLabel=Translated label +TranslatedDescription=Translated description +TranslatedNote=Translated notes +ProductWeight=Weight for 1 product +ProductVolume=Volume for 1 product +WeightUnits=Weight unit +VolumeUnits=Volume unit +WidthUnits=Width unit +LengthUnits=Length unit +HeightUnits=Height unit +SurfaceUnits=Surface unit +SizeUnits=Size unit +DeleteProductBuyPrice=Delete buying price +ConfirmDeleteProductBuyPrice=Are you sure you want to delete this buying price? +SubProduct=Sub product +ProductSheet=Product sheet +ServiceSheet=Service sheet +PossibleValues=Possible values +GoOnMenuToCreateVairants=Go on menu %s - %s to prepare attribute variants (like colors, size, ...) +UseProductFournDesc=Add a feature to define the product description defined by the vendors (for each vendor reference) in addition to the description for customers +ProductSupplierDescription=Vendor description for the product +UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) +PackagingForThisProduct=Packaging +PackagingForThisProductDesc=You will automaticaly purchase a multiple of this quantity. +QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging + +#Attributes +VariantAttributes=Variant attributes +ProductAttributes=Variant attributes for products +ProductAttributeName=Variant attribute %s +ProductAttribute=Variant attribute +ProductAttributeDeleteDialog=Are you sure you want to delete this attribute? All values will be deleted +ProductAttributeValueDeleteDialog=Are you sure you want to delete the value "%s" with reference "%s" of this attribute? +ProductCombinationDeleteDialog=Are you sure want to delete the variant of the product "%s"? +ProductCombinationAlreadyUsed=There was an error while deleting the variant. Please check it is not being used in any object +ProductCombinations=Variants +PropagateVariant=Propagate variants +HideProductCombinations=Hide products variant in the products selector +ProductCombination=Variant +NewProductCombination=New variant +EditProductCombination=Editing variant +NewProductCombinations=New variants +EditProductCombinations=Editing variants +SelectCombination=Select combination +ProductCombinationGenerator=Variants generator +Features=Features +PriceImpact=Price impact +ImpactOnPriceLevel=Impact on price level %s +ApplyToAllPriceImpactLevel= Apply to all levels +ApplyToAllPriceImpactLevelHelp=By clicking here you set the same price impact on all levels +WeightImpact=Weight impact +NewProductAttribute=New attribute +NewProductAttributeValue=New attribute value +ErrorCreatingProductAttributeValue=There was an error while creating the attribute value. It could be because there is already an existing value with that reference +ProductCombinationGeneratorWarning=If you continue, before generating new variants, all previous ones will be DELETED. Already existing ones will be updated with the new values +TooMuchCombinationsWarning=Generating lots of variants may result in high CPU, memory usage and Dolibarr not able to create them. Enabling the option "%s" may help reduce memory usage. +DoNotRemovePreviousCombinations=Do not remove previous variants +UsePercentageVariations=Use percentage variations +PercentageVariation=Percentage variation +ErrorDeletingGeneratedProducts=There was an error while trying to delete existing product variants +NbOfDifferentValues=No. of different values +NbProducts=Number of products +ParentProduct=Parent product +HideChildProducts=Hide variant products +ShowChildProducts=Show variant products +NoEditVariants=Go to Parent product card and edit variants price impact in the variants tab +ConfirmCloneProductCombinations=Would you like to copy all the product variants to the other parent product with the given reference? +CloneDestinationReference=Destination product reference +ErrorCopyProductCombinations=There was an error while copying the product variants +ErrorDestinationProductNotFound=Destination product not found +ErrorProductCombinationNotFound=Product variant not found +ActionAvailableOnVariantProductOnly=Action only available on the variant of product +ProductsPricePerCustomer=Product prices per customers +ProductSupplierExtraFields=Additional Attributes (Supplier Prices) +DeleteLinkedProduct=Delete the child product linked to the combination +AmountUsedToUpdateWAP=Amount to use to update the Weighted Average Price +PMPValue=Weighted average price +PMPValueShort=WAP +mandatoryperiod=Mandatory periods +mandatoryPeriodNeedTobeSet=Note: Period (start and end date) must be defined +mandatoryPeriodNeedTobeSetMsgValidate=A service requires a start and end period +mandatoryHelper=Check this if you want a message to the user when creating / validating an invoice, commercial proposal, sales order without entering a start and end date on lines with this service.
Note that the message is a warning and not a blocking error. +DefaultBOM=Default BOM +DefaultBOMDesc=The default BOM recommended to use to manufacture this product. This field can be set only if nature of product is '%s'. +Rank=Rank +MergeOriginProduct=Duplicate product (product you want to delete) +MergeProducts=Merge products +ConfirmMergeProducts=Are you sure you want to merge the chosen product with the current one? All linked objects (invoices, orders, ...) will be moved to the current product, after which the chosen product will be deleted. +ProductsMergeSuccess=Products have been merged +ErrorsProductsMerge=Errors in products merge +SwitchOnSaleStatus=Switch on sale status +SwitchOnPurchaseStatus=Switch on purchase status +StockMouvementExtraFields= Extra Fields (stock mouvement) +InventoryExtraFields= Extra Fields (inventory) +ScanOrTypeOrCopyPasteYourBarCodes=Scan or type or copy/paste your barcodes +PuttingPricesUpToDate=Update prices with current known prices +PMPExpected=Expected PMP +ExpectedValuation=Expected Valuation +PMPReal=Real PMP +RealValuation=Real Valuation +ConfirmEditExtrafield = Select the extrafield you want modify +ConfirmEditExtrafieldQuestion = Are you sure you want to modify this extrafield? +ModifyValueExtrafields = Modify value of an extrafield diff --git a/htdocs/langs/ms_MY/projects.lang b/htdocs/langs/ms_MY/projects.lang new file mode 100644 index 00000000000..8cf5e79f071 --- /dev/null +++ b/htdocs/langs/ms_MY/projects.lang @@ -0,0 +1,297 @@ +# Dolibarr language file - Source file is en_US - projects +RefProject=Ref. project +ProjectRef=Project ref. +ProjectId=Project Id +ProjectLabel=Project label +ProjectsArea=Projects Area +ProjectStatus=Project status +SharedProject=Everybody +PrivateProject=Assigned contacts +ProjectsImContactFor=Projects for which I am explicitly a contact +AllAllowedProjects=All project I can read (mine + public) +AllProjects=All projects +MyProjectsDesc=This view is limited to the projects that you are a contact for +ProjectsPublicDesc=This view presents all projects you are allowed to read. +TasksOnProjectsPublicDesc=This view presents all tasks on projects you are allowed to read. +ProjectsPublicTaskDesc=This view presents all projects and tasks you are allowed to read. +ProjectsDesc=This view presents all projects (your user permissions grant you permission to view everything). +TasksOnProjectsDesc=This view presents all tasks on all projects (your user permissions grant you permission to view everything). +MyTasksDesc=This view is limited to the projects or tasks that you are a contact for +OnlyOpenedProject=Only open projects are visible (projects in draft or closed status are not visible). +ClosedProjectsAreHidden=Closed projects are not visible. +TasksPublicDesc=This view presents all projects and tasks you are allowed to read. +TasksDesc=This view presents all projects and tasks (your user permissions grant you permission to view everything). +AllTaskVisibleButEditIfYouAreAssigned=All tasks for qualified projects are visible, but you can enter time only for task assigned to selected user. Assign task if you need to enter time on it. +OnlyYourTaskAreVisible=Only tasks assigned to you are visible. If you need to enter time on a task and if the task is not visible here, then you need to assign the task to yourself. +ImportDatasetTasks=Tasks of projects +ProjectCategories=Project tags/categories +NewProject=New project +AddProject=Create project +DeleteAProject=Delete a project +DeleteATask=Delete a task +ConfirmDeleteAProject=Are you sure you want to delete this project? +ConfirmDeleteATask=Are you sure you want to delete this task? +OpenedProjects=Open projects +OpenedTasks=Open tasks +OpportunitiesStatusForOpenedProjects=Leads amount of open projects by status +OpportunitiesStatusForProjects=Leads amount of projects by status +ShowProject=Show project +ShowTask=Show task +SetProject=Set project +NoProject=No project defined or owned +NbOfProjects=Number of projects +NbOfTasks=Number of tasks +TimeSpent=Time spent +TimeSpentByYou=Time spent by you +TimeSpentByUser=Time spent by user +TimesSpent=Time spent +TaskId=Task ID +RefTask=Task ref. +LabelTask=Task label +TaskTimeSpent=Time spent on tasks +TaskTimeUser=User +TaskTimeNote=Note +TaskTimeDate=Date +TasksOnOpenedProject=Tasks on open projects +WorkloadNotDefined=Workload not defined +NewTimeSpent=Time spent +MyTimeSpent=My time spent +BillTime=Bill the time spent +BillTimeShort=Bill time +TimeToBill=Time not billed +TimeBilled=Time billed +Tasks=Tasks +Task=Task +TaskDateStart=Task start date +TaskDateEnd=Task end date +TaskDescription=Task description +NewTask=New task +AddTask=Create task +AddTimeSpent=Create time spent +AddHereTimeSpentForDay=Add here time spent for this day/task +AddHereTimeSpentForWeek=Add here time spent for this week/task +Activity=Activity +Activities=Tasks/activities +MyActivities=My tasks/activities +MyProjects=My projects +MyProjectsArea=My projects Area +DurationEffective=Effective duration +ProgressDeclared=Declared real progress +TaskProgressSummary=Task progress +CurentlyOpenedTasks=Curently open tasks +TheReportedProgressIsLessThanTheCalculatedProgressionByX=The declared real progress is less %s than the progress on consumption +TheReportedProgressIsMoreThanTheCalculatedProgressionByX=The declared real progress is more %s than the progress on consumption +ProgressCalculated=Progress on consumption +WhichIamLinkedTo=which I'm linked to +WhichIamLinkedToProject=which I'm linked to project +Time=Time +TimeConsumed=Consumed +ListOfTasks=List of tasks +GoToListOfTimeConsumed=Go to list of time consumed +GanttView=Gantt View +ListWarehouseAssociatedProject=List of warehouses associated to the project +ListProposalsAssociatedProject=List of the commercial proposals related to the project +ListOrdersAssociatedProject=List of sales orders related to the project +ListInvoicesAssociatedProject=List of customer invoices related to the project +ListPredefinedInvoicesAssociatedProject=List of customer template invoices related to the project +ListSupplierOrdersAssociatedProject=List of purchase orders related to the project +ListSupplierInvoicesAssociatedProject=List of vendor invoices related to the project +ListContractAssociatedProject=List of contracts related to the project +ListShippingAssociatedProject=List of shippings related to the project +ListFichinterAssociatedProject=List of interventions related to the project +ListExpenseReportsAssociatedProject=List of expense reports related to the project +ListDonationsAssociatedProject=List of donations related to the project +ListVariousPaymentsAssociatedProject=List of miscellaneous payments related to the project +ListSalariesAssociatedProject=List of payments of salaries related to the project +ListActionsAssociatedProject=List of events related to the project +ListMOAssociatedProject=List of manufacturing orders related to the project +ListTaskTimeUserProject=List of time consumed on tasks of project +ListTaskTimeForTask=List of time consumed on task +ActivityOnProjectToday=Activity on project today +ActivityOnProjectYesterday=Activity on project yesterday +ActivityOnProjectThisWeek=Activity on project this week +ActivityOnProjectThisMonth=Activity on project this month +ActivityOnProjectThisYear=Activity on project this year +ChildOfProjectTask=Child of project/task +ChildOfTask=Child of task +TaskHasChild=Task has child +NotOwnerOfProject=Not owner of this private project +AffectedTo=Allocated to +CantRemoveProject=This project can't be removed as it is referenced by some other objects (invoice, orders or other). See tab '%s'. +ValidateProject=Validate projet +ConfirmValidateProject=Are you sure you want to validate this project? +CloseAProject=Close project +ConfirmCloseAProject=Are you sure you want to close this project? +AlsoCloseAProject=Also close project (keep it open if you still need to follow production tasks on it) +ReOpenAProject=Open project +ConfirmReOpenAProject=Are you sure you want to re-open this project? +ProjectContact=Contacts of project +TaskContact=Task contacts +ActionsOnProject=Events on project +YouAreNotContactOfProject=You are not a contact of this private project +UserIsNotContactOfProject=User is not a contact of this private project +DeleteATimeSpent=Delete time spent +ConfirmDeleteATimeSpent=Are you sure you want to delete this time spent? +DoNotShowMyTasksOnly=See also tasks not assigned to me +ShowMyTasksOnly=View only tasks assigned to me +TaskRessourceLinks=Contacts of task +ProjectsDedicatedToThisThirdParty=Projects dedicated to this third party +NoTasks=No tasks for this project +LinkedToAnotherCompany=Linked to other third party +TaskIsNotAssignedToUser=Task not assigned to user. Use button '%s' to assign task now. +ErrorTimeSpentIsEmpty=Time spent is empty +TimeRecordingRestrictedToNMonthsBack=Time recording is restricted to %s months back +ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. +IfNeedToUseOtherObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneTasks=Clone tasks +CloneContacts=Clone contacts +CloneNotes=Clone notes +CloneProjectFiles=Clone project joined files +CloneTaskFiles=Clone task(s) joined files (if task(s) cloned) +CloneMoveDate=Update project/tasks dates from now? +ConfirmCloneProject=Are you sure to clone this project? +ProjectReportDate=Change task dates according to new project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date +ProjectsAndTasksLines=Projects and tasks +ProjectCreatedInDolibarr=Project %s created +ProjectValidatedInDolibarr=Project %s validated +ProjectModifiedInDolibarr=Project %s modified +TaskCreatedInDolibarr=Task %s created +TaskModifiedInDolibarr=Task %s modified +TaskDeletedInDolibarr=Task %s deleted +OpportunityStatus=Lead status +OpportunityStatusShort=Lead status +OpportunityProbability=Lead probability +OpportunityProbabilityShort=Lead probab. +OpportunityAmount=Lead amount +OpportunityAmountShort=Lead amount +OpportunityWeightedAmount=Opportunity weighted amount +OpportunityWeightedAmountShort=Opp. weighted amount +OpportunityAmountAverageShort=Average lead amount +OpportunityAmountWeigthedShort=Weighted lead amount +WonLostExcluded=Won/Lost excluded +##### Types de contacts ##### +TypeContact_project_internal_PROJECTLEADER=Project leader +TypeContact_project_external_PROJECTLEADER=Project leader +TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor +TypeContact_project_task_internal_TASKEXECUTIVE=Task executive +TypeContact_project_task_external_TASKEXECUTIVE=Task executive +TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor +TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor +SelectElement=Select element +AddElement=Link to element +LinkToElementShort=Link to +# Documents models +DocumentModelBeluga=Project document template for linked objects overview +DocumentModelBaleine=Project document template for tasks +DocumentModelTimeSpent=Project report template for time spent +PlannedWorkload=Planned workload +PlannedWorkloadShort=Workload +ProjectReferers=Related items +ProjectMustBeValidatedFirst=Project must be validated first +MustBeValidatedToBeSigned=%s must be validated first to be set to Signed. +FirstAddRessourceToAllocateTime=Assign a user resource as contact of project to allocate time +InputPerDay=Input per day +InputPerWeek=Input per week +InputPerMonth=Input per month +InputDetail=Input detail +TimeAlreadyRecorded=This is time spent already recorded for this task/day and user %s +ProjectsWithThisUserAsContact=Projects with this user as contact +ProjectsWithThisContact=Projects with this contact +TasksWithThisUserAsContact=Tasks assigned to this user +ResourceNotAssignedToProject=Not assigned to project +ResourceNotAssignedToTheTask=Not assigned to the task +NoUserAssignedToTheProject=No users assigned to this project +TimeSpentBy=Time spent by +TasksAssignedTo=Tasks assigned to +AssignTaskToMe=Assign task to myself +AssignTaskToUser=Assign task to %s +SelectTaskToAssign=Select task to assign... +AssignTask=Assign +ProjectOverview=Overview +ManageTasks=Use projects to follow tasks and/or report time spent (timesheets) +ManageOpportunitiesStatus=Use projects to follow leads/opportinuties +ProjectNbProjectByMonth=No. of created projects by month +ProjectNbTaskByMonth=No. of created tasks by month +ProjectOppAmountOfProjectsByMonth=Amount of leads by month +ProjectWeightedOppAmountOfProjectsByMonth=Weighted amount of leads by month +ProjectOpenedProjectByOppStatus=Open project|lead by lead status +ProjectsStatistics=Statistics on projects or leads +TasksStatistics=Statistics on tasks of projects or leads +TaskAssignedToEnterTime=Task assigned. Entering time on this task should be possible. +IdTaskTime=Id task time +YouCanCompleteRef=If you want to complete the ref with some suffix, it is recommanded to add a - character to separate it, so the automatic numbering will still work correctly for next projects. For example %s-MYSUFFIX +OpenedProjectsByThirdparties=Open projects by third parties +OnlyOpportunitiesShort=Only leads +OpenedOpportunitiesShort=Open leads +NotOpenedOpportunitiesShort=Not an open lead +NotAnOpportunityShort=Not a lead +OpportunityTotalAmount=Total amount of leads +OpportunityPonderatedAmount=Weighted amount of leads +OpportunityPonderatedAmountDesc=Leads amount weighted with probability +OppStatusPROSP=Prospection +OppStatusQUAL=Qualification +OppStatusPROPO=Proposal +OppStatusNEGO=Negociation +OppStatusPENDING=Pending +OppStatusWON=Won +OppStatusLOST=Lost +Budget=Budget +AllowToLinkFromOtherCompany=Allow to link project from other company

Supported values:
- Keep empty: Can link any project of the company (default)
- "all": Can link any projects, even projects of other companies
- A list of third-party ids separated by commas: can link all projects of these third partys (Example: 123,4795,53)
+LatestProjects=Latest %s projects +LatestModifiedProjects=Latest %s modified projects +OtherFilteredTasks=Other filtered tasks +NoAssignedTasks=No assigned tasks found (assign project/tasks to the current user from the top select box to enter time on it) +ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ThirdPartyRequiredToGenerateInvoice=A third party must be defined on project to be able to invoice it. +ChooseANotYetAssignedTask=Choose a task not yet assigned to you +# Comments trans +AllowCommentOnTask=Allow user comments on tasks +AllowCommentOnProject=Allow user comments on projects +DontHavePermissionForCloseProject=You do not have permissions to close the project %s +DontHaveTheValidateStatus=The project %s must be open to be closed +RecordsClosed=%s project(s) closed +SendProjectRef=Information project %s +ModuleSalaryToDefineHourlyRateMustBeEnabled=Module 'Salaries' must be enabled to define employee hourly rate to have time spent valorized +NewTaskRefSuggested=Task ref already used, a new task ref is required +TimeSpentInvoiced=Time spent billed +TimeSpentForIntervention=Time spent +TimeSpentForInvoice=Time spent +OneLinePerUser=One line per user +ServiceToUseOnLines=Service to use on lines by default +InvoiceGeneratedFromTimeSpent=Invoice %s has been generated from time spent on project +InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project +ProjectBillTimeDescription=Check if you enter timesheet on tasks of project AND you plan to generate invoice(s) from the timesheet to bill the customer of the project (do not check if you plan to create invoice that is not based on entered timesheets). Note: To generate invoice, go on tab 'Time spent' of the project and select lines to include. +ProjectFollowOpportunity=Follow opportunity +ProjectFollowTasks=Follow tasks or time spent +Usage=Usage +UsageOpportunity=Usage: Opportunity +UsageTasks=Usage: Tasks +UsageBillTimeShort=Usage: Bill time +InvoiceToUse=Draft invoice to use +InterToUse=Draft intervention to use +NewInvoice=New invoice +NewInter=New intervention +OneLinePerTask=One line per task +OneLinePerPeriod=One line per period +OneLinePerTimeSpentLine=One line for each time spent declaration +AddDetailDateAndDuration=With date and duration into line description +RefTaskParent=Ref. Parent Task +ProfitIsCalculatedWith=Profit is calculated using +AddPersonToTask=Add also to tasks +UsageOrganizeEvent=Usage: Event Organization +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classify project as closed when all its tasks are completed (100%% progress) +PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Note: existing projects with all tasks at 100 %% progress won't be affected: you will have to close them manually. This option only affects open projects. +SelectLinesOfTimeSpentToInvoice=Select lines of time spent that are unbilled, then bulk action "Generate Invoice" to bill them +ProjectTasksWithoutTimeSpent=Project tasks without time spent +FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. +ProjectsHavingThisContact=Projects having this contact +StartDateCannotBeAfterEndDate=End date cannot be before start date +ErrorPROJECTLEADERRoleMissingRestoreIt=The "PROJECTLEADER" role is missing or has been de-activited, please restore in the dictionary of contact types +LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form +EnablePublicLeadForm=Enable the public form for contact +NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. +NewLeadForm=New contact form +LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/ms_MY/propal.lang b/htdocs/langs/ms_MY/propal.lang new file mode 100644 index 00000000000..d86268dcc44 --- /dev/null +++ b/htdocs/langs/ms_MY/propal.lang @@ -0,0 +1,113 @@ +# Dolibarr language file - Source file is en_US - propal +Proposals=Commercial proposals +Proposal=Commercial proposal +ProposalShort=Proposal +ProposalsDraft=Draft commercial proposals +ProposalsOpened=Open commercial proposals +CommercialProposal=Commercial proposal +PdfCommercialProposalTitle=Proposal +ProposalCard=Proposal card +NewProp=New commercial proposal +NewPropal=New proposal +Prospect=Prospect +DeleteProp=Delete commercial proposal +ValidateProp=Validate commercial proposal +AddProp=Create proposal +ConfirmDeleteProp=Are you sure you want to delete this commercial proposal? +ConfirmValidateProp=Are you sure you want to validate this commercial proposal under name %s? +LastPropals=Latest %s proposals +LastModifiedProposals=Latest %s modified proposals +AllPropals=All proposals +SearchAProposal=Search a proposal +NoProposal=No proposal +ProposalsStatistics=Commercial proposal's statistics +NumberOfProposalsByMonth=Number by month +AmountOfProposalsByMonthHT=Amount by month (excl. tax) +NbOfProposals=Number of commercial proposals +ShowPropal=Show proposal +PropalsDraft=Drafts +PropalsOpened=Open +PropalStatusDraft=Draft (needs to be validated) +PropalStatusValidated=Validated (proposal is open) +PropalStatusSigned=Signed (needs billing) +PropalStatusNotSigned=Not signed (closed) +PropalStatusBilled=Billed +PropalStatusDraftShort=Draft +PropalStatusValidatedShort=Validated (open) +PropalStatusClosedShort=Closed +PropalStatusSignedShort=Signed +PropalStatusNotSignedShort=Not signed +PropalStatusBilledShort=Billed +PropalsToClose=Commercial proposals to close +PropalsToBill=Signed commercial proposals to bill +ListOfProposals=List of commercial proposals +ActionsOnPropal=Events on proposal +RefProposal=Commercial proposal ref +SendPropalByMail=Send commercial proposal by mail +DatePropal=Date of proposal +DateEndPropal=Validity ending date +ValidityDuration=Validity duration +SetAcceptedRefused=Set accepted/refused +ErrorPropalNotFound=Propal %s not found +AddToDraftProposals=Add to draft proposal +NoDraftProposals=No draft proposals +CopyPropalFrom=Create commercial proposal by copying existing proposal +CreateEmptyPropal=Create empty commercial proposal or from list of products/services +DefaultProposalDurationValidity=Default commercial proposal validity duration (in days) +DefaultPuttingPricesUpToDate=By default update prices with current known prices on cloning a proposal +UseCustomerContactAsPropalRecipientIfExist=Use contact/address with type 'Contact following-up proposal' if defined instead of third party address as proposal recipient address +ConfirmClonePropal=Are you sure you want to clone the commercial proposal %s? +ConfirmReOpenProp=Are you sure you want to open back the commercial proposal %s? +ProposalsAndProposalsLines=Commercial proposal and lines +ProposalLine=Proposal line +ProposalLines=Proposal lines +AvailabilityPeriod=Availability delay +SetAvailability=Set availability delay +AfterOrder=after order +OtherProposals=Other proposals +##### Availability ##### +AvailabilityTypeAV_NOW=Immediate +AvailabilityTypeAV_1W=1 week +AvailabilityTypeAV_2W=2 weeks +AvailabilityTypeAV_3W=3 weeks +AvailabilityTypeAV_1M=1 month +##### Types de contacts ##### +TypeContact_propal_internal_SALESREPFOLL=Representative following-up proposal +TypeContact_propal_external_BILLING=Customer invoice contact +TypeContact_propal_external_CUSTOMER=Customer contact following-up proposal +TypeContact_propal_external_SHIPPING=Customer contact for delivery +# Document models +DocModelAzurDescription=A complete proposal model (old implementation of Cyan template) +DocModelCyanDescription=A complete proposal model +DefaultModelPropalCreate=Default model creation +DefaultModelPropalToBill=Default template when closing a business proposal (to be invoiced) +DefaultModelPropalClosed=Default template when closing a business proposal (unbilled) +ProposalCustomerSignature=Written acceptance, company stamp, date and signature +ProposalsStatisticsSuppliers=Vendor proposals statistics +CaseFollowedBy=Case followed by +SignedOnly=Signed only +NoSign=Set not signed +NoSigned=set not signed +CantBeNoSign=cannot be set not signed +ConfirmMassNoSignature=Bulk Not signed confirmation +ConfirmMassNoSignatureQuestion=Are you sure you want to set not signed the selected records ? +IsNotADraft=is not a draft +PassedInOpenStatus=has been validated +Sign=Sign +Signed=signed +ConfirmMassValidation=Bulk Validate confirmation +ConfirmMassSignature=Bulk Signature confirmation +ConfirmMassValidationQuestion=Are you sure you want to validate the selected records ? +ConfirmMassSignatureQuestion=Are you sure you want to sign the selected records ? +IdProposal=Proposal ID +IdProduct=Product ID +LineBuyPriceHT=Buy Price Amount net of tax for line +SignPropal=Accept proposal +RefusePropal=Refuse proposal +Sign=Sign +NoSign=Set not signed +PropalAlreadySigned=Proposal already accepted +PropalAlreadyRefused=Proposal already refused +PropalSigned=Proposal accepted +PropalRefused=Proposal refused +ConfirmRefusePropal=Are you sure you want to refuse this commercial proposal? diff --git a/htdocs/langs/ms_MY/receiptprinter.lang b/htdocs/langs/ms_MY/receiptprinter.lang new file mode 100644 index 00000000000..df844b18958 --- /dev/null +++ b/htdocs/langs/ms_MY/receiptprinter.lang @@ -0,0 +1,84 @@ +# Dolibarr language file - Source file is en_US - receiptprinter +ReceiptPrinterSetup=Setup of module ReceiptPrinter +PrinterAdded=Printer %s added +PrinterUpdated=Printer %s updated +PrinterDeleted=Printer %s deleted +TestSentToPrinter=Test Sent To Printer %s +ReceiptPrinter=Receipt printers +ReceiptPrinterDesc=Setup of receipt printers +ReceiptPrinterTemplateDesc=Setup of Templates +ReceiptPrinterTypeDesc=Example of possible values for the field "Parameters" according to the type of driver +ReceiptPrinterProfileDesc=Description of Receipt Printer's Profile +ListPrinters=List of Printers +SetupReceiptTemplate=Template Setup +CONNECTOR_DUMMY=Dummy Printer +CONNECTOR_NETWORK_PRINT=Network Printer +CONNECTOR_FILE_PRINT=Local Printer +CONNECTOR_WINDOWS_PRINT=Local Windows Printer +CONNECTOR_CUPS_PRINT=Cups Printer +CONNECTOR_DUMMY_HELP=Fake Printer for test, does nothing +CONNECTOR_NETWORK_PRINT_HELP=10.x.x.x:9100 +CONNECTOR_FILE_PRINT_HELP=/dev/usb/lp0, /dev/usb/lp1 +CONNECTOR_WINDOWS_PRINT_HELP=LPT1, COM1, smb://FooUser:secret@computername/workgroup/Receipt Printer +CONNECTOR_CUPS_PRINT_HELP=CUPS printer name, example: HPRT_TP805L +PROFILE_DEFAULT=Default Profile +PROFILE_SIMPLE=Simple Profile +PROFILE_EPOSTEP=Epos Tep Profile +PROFILE_P822D=P822D Profile +PROFILE_STAR=Star Profile +PROFILE_DEFAULT_HELP=Default Profile suitable for Epson printers +PROFILE_SIMPLE_HELP=Simple Profile No Graphics +PROFILE_EPOSTEP_HELP=Epos Tep Profile +PROFILE_P822D_HELP=P822D Profile No Graphics +PROFILE_STAR_HELP=Star Profile +DOL_LINE_FEED=Skip line +DOL_ALIGN_LEFT=Left align text +DOL_ALIGN_CENTER=Center text +DOL_ALIGN_RIGHT=Right align text +DOL_USE_FONT_A=Use font A of printer +DOL_USE_FONT_B=Use font B of printer +DOL_USE_FONT_C=Use font C of printer +DOL_PRINT_BARCODE=Print barcode +DOL_PRINT_BARCODE_CUSTOMER_ID=Print barcode customer id +DOL_CUT_PAPER_FULL=Cut ticket completely +DOL_CUT_PAPER_PARTIAL=Cut ticket partially +DOL_OPEN_DRAWER=Open cash drawer +DOL_ACTIVATE_BUZZER=Activate buzzer +DOL_PRINT_QRCODE=Print QR Code +DOL_PRINT_LOGO=Print logo of my company +DOL_PRINT_LOGO_OLD=Print logo of my company (old printers) +DOL_BOLD=Bold +DOL_BOLD_DISABLED=Disable bold +DOL_DOUBLE_HEIGHT=Double height size +DOL_DOUBLE_WIDTH=Double width size +DOL_DEFAULT_HEIGHT_WIDTH=Default height and width size +DOL_UNDERLINE=Enable underline +DOL_UNDERLINE_DISABLED=Disable underline +DOL_BEEP=Beep sound +DOL_BEEP_ALTERNATIVE=Beep sound (alternative mode) +DOL_PRINT_CURR_DATE=Print current date/time +DOL_PRINT_TEXT=Print text +DateInvoiceWithTime=Invoice date and time +YearInvoice=Invoice year +DOL_VALUE_MONTH_LETTERS=Invoice month in letters +DOL_VALUE_MONTH=Invoice month +DOL_VALUE_DAY=Invoice day +DOL_VALUE_DAY_LETTERS=Inovice day in letters +DOL_LINE_FEED_REVERSE=Line feed reverse +InvoiceID=Invoice ID +InvoiceRef=Invoice ref +DOL_PRINT_OBJECT_LINES=Invoice lines +DOL_VALUE_CUSTOMER_FIRSTNAME=Customer first name +DOL_VALUE_CUSTOMER_LASTNAME=Customer last name +DOL_VALUE_CUSTOMER_MAIL=Customer mail +DOL_VALUE_CUSTOMER_PHONE=Customer phone +DOL_VALUE_CUSTOMER_MOBILE=Customer mobile +DOL_VALUE_CUSTOMER_SKYPE=Customer Skype +DOL_VALUE_CUSTOMER_TAX_NUMBER=Customer tax number +DOL_VALUE_CUSTOMER_ACCOUNT_BALANCE=Customer account balance +DOL_VALUE_MYSOC_NAME=Your company name +VendorLastname=Vendor last name +VendorFirstname=Vendor first name +VendorEmail=Vendor email +DOL_VALUE_CUSTOMER_POINTS=Customer points +DOL_VALUE_OBJECT_POINTS=Object points diff --git a/htdocs/langs/ms_MY/receptions.lang b/htdocs/langs/ms_MY/receptions.lang new file mode 100644 index 00000000000..ece006d0bb6 --- /dev/null +++ b/htdocs/langs/ms_MY/receptions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - receptions +ReceptionDescription=Vendor reception management (Create reception documents) +ReceptionsSetup=Vendor Reception setup +RefReception=Ref. reception +Reception=Reception +Receptions=Receptions +AllReceptions=All Receptions +Reception=Reception +Receptions=Receptions +ShowReception=Show Receptions +ReceptionsArea=Receptions area +ListOfReceptions=List of receptions +ReceptionMethod=Reception method +LastReceptions=Latest %s receptions +StatisticsOfReceptions=Statistics for receptions +NbOfReceptions=Number of receptions +NumberOfReceptionsByMonth=Number of receptions by month +ReceptionCard=Reception card +NewReception=New reception +CreateReception=Create reception +QtyInOtherReceptions=Qty in other receptions +OtherReceptionsForSameOrder=Other receptions for this order +ReceptionsAndReceivingForSameOrder=Receptions and receipts for this order +ReceptionsToValidate=Receptions to validate +StatusReceptionCanceled=Canceled +StatusReceptionDraft=Draft +StatusReceptionValidated=Validated (products to receive or already received) +StatusReceptionValidatedToReceive=Validated (products to receive) +StatusReceptionValidatedReceived=Validated (products received) +StatusReceptionProcessed=Processed +StatusReceptionDraftShort=Draft +StatusReceptionValidatedShort=Validated +StatusReceptionProcessedShort=Processed +ReceptionSheet=Reception sheet +ConfirmDeleteReception=Are you sure you want to delete this reception? +ConfirmValidateReception=Are you sure you want to validate this reception with reference %s? +ConfirmCancelReception=Are you sure you want to cancel this reception? +StatsOnReceptionsOnlyValidated=Statistics conducted on receptions only validated. Date used is date of validation of reception (planed delivery date is not always known). +SendReceptionByEMail=Send reception by email +SendReceptionRef=Submission of reception %s +ActionsOnReception=Events on reception +ReceptionCreationIsDoneFromOrder=For the moment, creation of a new reception is done from the Purchase Order. +ReceptionLine=Reception line +ProductQtyInReceptionAlreadySent=Product quantity from open sales order already sent +ProductQtyInSuppliersReceptionAlreadyRecevied=Product quantity from open supplier order already received +ValidateOrderFirstBeforeReception=You must first validate the order before being able to make receptions. +ReceptionsNumberingModules=Numbering module for receptions +ReceptionsReceiptModel=Document templates for receptions +NoMorePredefinedProductToDispatch=No more predefined products to dispatch +ReceptionExist=A reception exists +ReceptionBackToDraftInDolibarr=Reception %s back to draft +ReceptionClassifyClosedInDolibarr=Reception %s classified Closed +ReceptionUnClassifyCloseddInDolibarr=Reception %s re-open diff --git a/htdocs/langs/ms_MY/recruitment.lang b/htdocs/langs/ms_MY/recruitment.lang new file mode 100644 index 00000000000..888f6fe5225 --- /dev/null +++ b/htdocs/langs/ms_MY/recruitment.lang @@ -0,0 +1,78 @@ +# Copyright (C) 2020 Laurent Destailleur +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 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 . + +# +# Generic +# + +# Module label 'ModuleRecruitmentName' +ModuleRecruitmentName = Recruitment +# Module description 'ModuleRecruitmentDesc' +ModuleRecruitmentDesc = Manage and follow recruitment campaigns for new job positions + +# +# Admin page +# +RecruitmentSetup = Recruitment setup +Settings = Settings +RecruitmentSetupPage = Enter here the setup of main options for the recruitment module +RecruitmentArea=Recruitement area +PublicInterfaceRecruitmentDesc=Public pages of jobs are public URLs to show and answer to open jobs. There is one different link for each open job, found on each job record. +EnablePublicRecruitmentPages=Enable public pages of open jobs + +# +# About page +# +About = About +RecruitmentAbout = About Recruitment +RecruitmentAboutPage = Recruitment about page +NbOfEmployeesExpected=Expected nb of employees +JobLabel=Label of job position +WorkPlace=Work place +DateExpected=Expected date +FutureManager=Future manager +ResponsibleOfRecruitement=Responsible of recruitment +IfJobIsLocatedAtAPartner=If job is located at a partner place +PositionToBeFilled=Job position +PositionsToBeFilled=Job positions +ListOfPositionsToBeFilled=List of job positions +NewPositionToBeFilled=New job positions + +JobOfferToBeFilled=Job position to be filled +ThisIsInformationOnJobPosition=Information of the job position to be filled +ContactForRecruitment=Contact for recruitment +EmailRecruiter=Email recruiter +ToUseAGenericEmail=To use a generic email. If not defined, the email of the responsible of recruitment will be used +NewCandidature=New application +ListOfCandidatures=List of applications +RequestedRemuneration=Requested remuneration +ProposedRemuneration=Proposed remuneration +ContractProposed=Contract proposed +ContractSigned=Contract signed +ContractRefused=Contract refused +RecruitmentCandidature=Application +JobPositions=Job positions +RecruitmentCandidatures=Applications +InterviewToDo=Interview to do +AnswerCandidature=Application answer +YourCandidature=Your application +YourCandidatureAnswerMessage=Thanks you for your application.
... +JobClosedTextCandidateFound=The job position is closed. The position has been filled. +JobClosedTextCanceled=The job position is closed. +ExtrafieldsJobPosition=Complementary attributes (job positions) +ExtrafieldsApplication=Complementary attributes (job applications) +MakeOffer=Make an offer +WeAreRecruiting=We are recruiting. This is a list of open positions to be filled... +NoPositionOpen=No positions open at the moment diff --git a/htdocs/langs/ms_MY/resource.lang b/htdocs/langs/ms_MY/resource.lang new file mode 100644 index 00000000000..e8574dc680f --- /dev/null +++ b/htdocs/langs/ms_MY/resource.lang @@ -0,0 +1,39 @@ +# Dolibarr language file - Source file is en_US - resource +MenuResourceIndex=Resources +MenuResourceAdd=New resource +DeleteResource=Delete resource +ConfirmDeleteResourceElement=Confirm delete the resource for this element +NoResourceInDatabase=No resource in database. +NoResourceLinked=No resource linked +ActionsOnResource=Events about this resource +ResourcePageIndex=Resources list +ResourceSingular=Resource +ResourceCard=Resource card +AddResource=Create a resource +ResourceFormLabel_ref=Resource name +ResourceType=Resource type +ResourceFormLabel_description=Resource description + +ResourcesLinkedToElement=Resources linked to element + +ShowResource=Show resource + +ResourceElementPage=Element resources +ResourceCreatedWithSuccess=Resource successfully created +RessourceLineSuccessfullyDeleted=Resource line successfully deleted +RessourceLineSuccessfullyUpdated=Resource line successfully updated +ResourceLinkedWithSuccess=Resource linked with success + +ConfirmDeleteResource=Confirm to delete this resource +RessourceSuccessfullyDeleted=Resource successfully deleted +DictionaryResourceType=Type of resources + +SelectResource=Select resource + +IdResource=Id resource +AssetNumber=Serial number +ResourceTypeCode=Resource type code +ImportDataset_resource_1=Resources + +ErrorResourcesAlreadyInUse=Some resources are in use +ErrorResourceUseInEvent=%s used in %s event diff --git a/htdocs/langs/ms_MY/salaries.lang b/htdocs/langs/ms_MY/salaries.lang new file mode 100644 index 00000000000..20a10694500 --- /dev/null +++ b/htdocs/langs/ms_MY/salaries.lang @@ -0,0 +1,27 @@ +# Dolibarr language file - Source file is en_US - salaries +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Accounting account used for user third parties +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=The dedicated accounting account defined on user card will be used for Subledger accounting only. This one will be used for General Ledger and as default value of Subledger accounting if dedicated user accounting account on user is not defined. +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Accounting account by default for wage payments +CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=By default, leave empty the option "Automatically create a total payment" when creating a Salary +Salary=Salary +Salaries=Salaries +NewSalary=New salary +AddSalary=Add salary +NewSalaryPayment=New salary card +AddSalaryPayment=Add salary payment +SalaryPayment=Salary payment +SalariesPayments=Salaries payments +SalariesPaymentsOf=Salaries payments of %s +ShowSalaryPayment=Show salary payment +THM=Average hourly rate +TJM=Average daily rate +CurrentSalary=Current salary +THMDescription=This value may be used to calculate the cost of time consumed on a project entered by users if module project is used +TJMDescription=This value is currently for information only and is not used for any calculation +LastSalaries=Latest %s salaries +AllSalaries=All salaries +SalariesStatistics=Salary statistics +SalariesAndPayments=Salaries and payments +ConfirmDeleteSalaryPayment=Do you want to delete this salary payment ? +FillFieldFirst=Fill employee field first +UpdateAmountWithLastSalary=Set amount with last salary diff --git a/htdocs/langs/ms_MY/sendings.lang b/htdocs/langs/ms_MY/sendings.lang new file mode 100644 index 00000000000..8f10b1e9404 --- /dev/null +++ b/htdocs/langs/ms_MY/sendings.lang @@ -0,0 +1,76 @@ +# Dolibarr language file - Source file is en_US - sendings +RefSending=Ref. shipment +Sending=Shipment +Sendings=Shipments +AllSendings=All Shipments +Shipment=Shipment +Shipments=Shipments +ShowSending=Show Shipments +Receivings=Delivery Receipts +SendingsArea=Shipments area +ListOfSendings=List of shipments +SendingMethod=Shipping method +LastSendings=Latest %s shipments +StatisticsOfSendings=Statistics for shipments +NbOfSendings=Number of shipments +NumberOfShipmentsByMonth=Number of shipments by month +SendingCard=Shipment card +NewSending=New shipment +CreateShipment=Create shipment +QtyShipped=Qty shipped +QtyShippedShort=Qty ship. +QtyPreparedOrShipped=Qty prepared or shipped +QtyToShip=Qty to ship +QtyToReceive=Qty to receive +QtyReceived=Qty received +QtyInOtherShipments=Qty in other shipments +KeepToShip=Remain to ship +KeepToShipShort=Remain +OtherSendingsForSameOrder=Other shipments for this order +SendingsAndReceivingForSameOrder=Shipments and receipts for this order +SendingsToValidate=Shipments to validate +StatusSendingCanceled=Canceled +StatusSendingCanceledShort=Canceled +StatusSendingDraft=Draft +StatusSendingValidated=Validated (products to ship or already shipped) +StatusSendingProcessed=Processed +StatusSendingDraftShort=Draft +StatusSendingValidatedShort=Validated +StatusSendingProcessedShort=Processed +SendingSheet=Shipment sheet +ConfirmDeleteSending=Are you sure you want to delete this shipment? +ConfirmValidateSending=Are you sure you want to validate this shipment with reference %s? +ConfirmCancelSending=Are you sure you want to cancel this shipment? +DocumentModelMerou=Merou A5 model +WarningNoQtyLeftToSend=Warning, no products waiting to be shipped. +StatsOnShipmentsOnlyValidated=Statistics are only for validated shipments. Date used is the date of validation of shipment (planned delivery date is not always known) +DateDeliveryPlanned=Planned date of delivery +RefDeliveryReceipt=Ref delivery receipt +StatusReceipt=Status delivery receipt +DateReceived=Date delivery received +ClassifyReception=Classify reception +SendShippingByEMail=Send shipment by email +SendShippingRef=Submission of shipment %s +ActionsOnShipping=Events on shipment +LinkToTrackYourPackage=Link to track your package +ShipmentCreationIsDoneFromOrder=For the moment, creation of a new shipment is done from the Sales Order record. +ShipmentLine=Shipment line +ProductQtyInCustomersOrdersRunning=Product quantity from open sales orders +ProductQtyInSuppliersOrdersRunning=Product quantity from open purchase orders +ProductQtyInShipmentAlreadySent=Product quantity from open sales order already sent +ProductQtyInSuppliersShipmentAlreadyRecevied=Product quantity from open purchase orders already received +NoProductToShipFoundIntoStock=No product to ship found in warehouse %s. Correct stock or go back to choose another warehouse. +WeightVolShort=Weight/Vol. +ValidateOrderFirstBeforeShipment=You must first validate the order before being able to make shipments. + +# Sending methods +# ModelDocument +DocumentModelTyphon=More complete document model for delivery receipts (logo...) +DocumentModelStorm=More complete document model for delivery receipts and extrafields compatibility (logo...) +Error_EXPEDITION_ADDON_NUMBER_NotDefined=Constant EXPEDITION_ADDON_NUMBER not defined +SumOfProductVolumes=Sum of product volumes +SumOfProductWeights=Sum of product weights + +# warehouse details +DetailWarehouseNumber= Warehouse details +DetailWarehouseFormat= W:%s (Qty: %d) diff --git a/htdocs/langs/ms_MY/sms.lang b/htdocs/langs/ms_MY/sms.lang new file mode 100644 index 00000000000..055085eb16a --- /dev/null +++ b/htdocs/langs/ms_MY/sms.lang @@ -0,0 +1,51 @@ +# Dolibarr language file - Source file is en_US - sms +Sms=Sms +SmsSetup=SMS setup +SmsDesc=This page allows you to define global options on SMS features +SmsCard=SMS Card +AllSms=All SMS campaigns +SmsTargets=Targets +SmsRecipients=Targets +SmsRecipient=Target +SmsTitle=Description +SmsFrom=Sender +SmsTo=Target +SmsTopic=Topic of SMS +SmsText=Message +SmsMessage=SMS Message +ShowSms=Show SMS +ListOfSms=List SMS campaigns +NewSms=New SMS campaign +EditSms=Edit SMS +ResetSms=New sending +DeleteSms=Delete SMS campaign +DeleteASms=Remove a SMS campaign +PreviewSms=Previuw SMS +PrepareSms=Prepare SMS +CreateSms=Create SMS +SmsResult=Result of SMS sending +TestSms=Test SMS +ValidSms=Validate SMS +ApproveSms=Approve SMS +SmsStatusDraft=Draft +SmsStatusValidated=Validated +SmsStatusApproved=Approved +SmsStatusSent=Sent +SmsStatusSentPartialy=Sent partially +SmsStatusSentCompletely=Sent completely +SmsStatusError=Error +SmsStatusNotSent=Not sent +SmsSuccessfulySent=SMS correctly sent (from %s to %s) +ErrorSmsRecipientIsEmpty=Number of target is empty +WarningNoSmsAdded=No new phone number to add to target list +ConfirmValidSms=Do you confirm validation of this campaign? +NbOfUniqueSms=No. of unique phone numbers +NbOfSms=No. of phone numbers +ThisIsATestMessage=This is a test message +SendSms=Send SMS +SmsInfoCharRemain=No. of remaining characters +SmsInfoNumero= (international format i.e.: +33899701761) +DelayBeforeSending=Delay before sending (minutes) +SmsNoPossibleSenderFound=No sender available. Check setup of your SMS provider. +SmsNoPossibleRecipientFound=No target available. Check setup of your SMS provider. +DisableStopIfSupported=Disable STOP message (if supported) diff --git a/htdocs/langs/ms_MY/stocks.lang b/htdocs/langs/ms_MY/stocks.lang new file mode 100644 index 00000000000..7137edcf576 --- /dev/null +++ b/htdocs/langs/ms_MY/stocks.lang @@ -0,0 +1,317 @@ +# Dolibarr language file - Source file is en_US - stocks +WarehouseCard=Warehouse card +Warehouse=Warehouse +Warehouses=Warehouses +ParentWarehouse=Parent warehouse +NewWarehouse=New warehouse / Stock Location +WarehouseEdit=Modify warehouse +MenuNewWarehouse=New warehouse +WarehouseSource=Source warehouse +WarehouseSourceNotDefined=No warehouse defined, +AddWarehouse=Create warehouse +AddOne=Add one +DefaultWarehouse=Default warehouse +WarehouseTarget=Target warehouse +ValidateSending=Confirm shipment +CancelSending=Cancel shipment +DeleteSending=Delete shipment +Stock=Stock +Stocks=Stocks +MissingStocks=Missing stocks +StockAtDate=Stocks at date +StockAtDateInPast=Date in the past +StockAtDateInFuture=Date in the future +StocksByLotSerial=Stocks by lot/serial +LotSerial=Lots/Serials +LotSerialList=List of lot/serials +Movements=Movements +ErrorWarehouseRefRequired=Warehouse reference name is required +ListOfWarehouses=List of warehouses +ListOfStockMovements=List of stock movements +ListOfInventories=List of inventories +MovementId=Movement ID +StockMovementForId=Movement ID %d +ListMouvementStockProject=List of stock movements associated to project +StocksArea=Warehouses area +AllWarehouses=All warehouses +IncludeEmptyDesiredStock=Include also negative stock with undefined desired stock +IncludeAlsoDraftOrders=Include also draft orders +Location=Location +LocationSummary=Short name of location +NumberOfDifferentProducts=Number of unique products +NumberOfProducts=Total number of products +LastMovement=Latest movement +LastMovements=Latest movements +Units=Units +Unit=Unit +StockCorrection=Stock correction +CorrectStock=Correct stock +StockTransfer=Stock transfer +TransferStock=Transfer stock +MassStockTransferShort=Mass stock transfer +StockMovement=Stock movement +StockMovements=Stock movements +NumberOfUnit=Number of units +UnitPurchaseValue=Unit purchase price +StockTooLow=Stock too low +StockLowerThanLimit=Stock lower than alert limit (%s) +EnhancedValue=Value +EnhancedValueOfWarehouses=Warehouses value +UserWarehouseAutoCreate=Create a user warehouse automatically when creating a user +AllowAddLimitStockByWarehouse=Manage also value for minimum and desired stock per pairing (product-warehouse) in addition to the value for minimum and desired stock per product +RuleForWarehouse=Rule for warehouses +WarehouseAskWarehouseOnThirparty=Set a warehouse on Third-parties +WarehouseAskWarehouseDuringPropal=Set a warehouse on Commercial proposals +WarehouseAskWarehouseDuringOrder=Set a warehouse on Sales Orders +WarehouseAskWarehouseDuringProject=Set a warehouse on Projects +UserDefaultWarehouse=Set a warehouse on Users +MainDefaultWarehouse=Default warehouse +MainDefaultWarehouseUser=Use a default warehouse for each user +MainDefaultWarehouseUserDesc=By activating this option, during creation of a product, the warehouse assigned to the product will be defined on this one. If no warehouse is defined on the user, the default warehouse is defined. +IndependantSubProductStock=Product stock and subproduct stock are independent +QtyDispatched=Quantity dispatched +QtyDispatchedShort=Qty dispatched +QtyToDispatchShort=Qty to dispatch +OrderDispatch=Item receipts +RuleForStockManagementDecrease=Choose Rule for automatic stock decrease (manual decrease is always possible, even if an automatic decrease rule is activated) +RuleForStockManagementIncrease=Choose Rule for automatic stock increase (manual increase is always possible, even if an automatic increase rule is activated) +DeStockOnBill=Decrease real stocks on validation of customer invoice/credit note +DeStockOnValidateOrder=Decrease real stocks on validation of sales order +DeStockOnShipment=Decrease real stocks on shipping validation +DeStockOnShipmentOnClosing=Decrease real stocks when shipping is set to closed +ReStockOnBill=Increase real stocks on validation of vendor invoice/credit note +ReStockOnValidateOrder=Increase real stocks on purchase order approval +ReStockOnDispatchOrder=Increase real stocks on manual dispatching into warehouse, after purchase order receipt of goods +StockOnReception=Increase real stocks on validation of reception +StockOnReceptionOnClosing=Increase real stocks when reception is set to closed +OrderStatusNotReadyToDispatch=Order has not yet or no more a status that allows dispatching of products in stock warehouses. +StockDiffPhysicTeoric=Explanation for difference between physical and virtual stock +NoPredefinedProductToDispatch=No predefined products for this object. So no dispatching in stock is required. +DispatchVerb=Dispatch +StockLimitShort=Limit for alert +StockLimit=Stock limit for alert +StockLimitDesc=(empty) means no warning.
0 can be used to trigger a warning as soon as the stock is empty. +PhysicalStock=Physical Stock +RealStock=Real Stock +RealStockDesc=Physical/real stock is the stock currently in the warehouses. +RealStockWillAutomaticallyWhen=The real stock will be modified according to this rule (as defined in the Stock module): +VirtualStock=Virtual stock +VirtualStockAtDate=Virtual stock at a future date +VirtualStockAtDateDesc=Virtual stock once all the pending orders that are planned to be processed before the chosen date will be finished +VirtualStockDesc=Virtual stock is the calculated stock available once all open/pending actions (that affect stocks) are closed (purchase orders received, sales orders shipped, manufacturing orders produced, etc) +AtDate=At date +IdWarehouse=Id warehouse +DescWareHouse=Description warehouse +LieuWareHouse=Localisation warehouse +WarehousesAndProducts=Warehouses and products +WarehousesAndProductsBatchDetail=Warehouses and products (with detail per lot/serial) +AverageUnitPricePMPShort=Weighted average price +AverageUnitPricePMPDesc=The input average unit price we had to expense to get 1 unit of product into our stock. +SellPriceMin=Selling Unit Price +EstimatedStockValueSellShort=Value for sell +EstimatedStockValueSell=Value for sell +EstimatedStockValueShort=Input stock value +EstimatedStockValue=Input stock value +DeleteAWarehouse=Delete a warehouse +ConfirmDeleteWarehouse=Are you sure you want to delete the warehouse %s? +PersonalStock=Personal stock %s +ThisWarehouseIsPersonalStock=This warehouse represents personal stock of %s %s +SelectWarehouseForStockDecrease=Choose warehouse to use for stock decrease +SelectWarehouseForStockIncrease=Choose warehouse to use for stock increase +NoStockAction=No stock action +DesiredStock=Desired Stock +DesiredStockDesc=This stock amount will be the value used to fill the stock by replenishment feature. +StockToBuy=To order +Replenishment=Replenishment +ReplenishmentOrders=Replenishment orders +VirtualDiffersFromPhysical=According to increase/decrease stock options, physical stock and virtual stock (physical stock + open orders) may differ +UseRealStockByDefault=Use real stock, instead of virtual stock, for replenishment feature +ReplenishmentCalculation=Amount to order will be (desired quantity - real stock) instead of (desired quantity - virtual stock) +UseVirtualStock=Use virtual stock +UsePhysicalStock=Use physical stock +CurentSelectionMode=Current selection mode +CurentlyUsingVirtualStock=Virtual stock +CurentlyUsingPhysicalStock=Physical stock +RuleForStockReplenishment=Rule for stocks replenishment +SelectProductWithNotNullQty=Select at least one product with a qty not null and a vendor +AlertOnly= Alerts only +IncludeProductWithUndefinedAlerts = Include also negative stock for products with no desired quantity defined, to restore them to 0 +WarehouseForStockDecrease=The warehouse %s will be used for stock decrease +WarehouseForStockIncrease=The warehouse %s will be used for stock increase +ForThisWarehouse=For this warehouse +ReplenishmentStatusDesc=This is a list of all products with a stock lower than desired stock (or lower than alert value if checkbox "alert only" is checked). Using the checkbox, you can create purchase orders to fill the difference. +ReplenishmentStatusDescPerWarehouse=If you want a replenishment based on desired quantity defined per warehouse, you must add a filter on the warehouse. +ReplenishmentOrdersDesc=This is a list of all open purchase orders including predefined products. Only open orders with predefined products, so orders that may affect stocks, are visible here. +Replenishments=Replenishments +NbOfProductBeforePeriod=Quantity of product %s in stock before selected period (< %s) +NbOfProductAfterPeriod=Quantity of product %s in stock after selected period (> %s) +MassMovement=Mass movement +SelectProductInAndOutWareHouse=Select a source warehouse and a target warehouse, a product and a quantity then click "%s". Once this is done for all required movements, click on "%s". +RecordMovement=Record transfer +ReceivingForSameOrder=Receipts for this order +StockMovementRecorded=Stock movements recorded +RuleForStockAvailability=Rules on stock requirements +StockMustBeEnoughForInvoice=Stock level must be enough to add product/service to invoice (check is done on current real stock when adding a line into invoice whatever the rule for automatic stock change) +StockMustBeEnoughForOrder=Stock level must be enough to add product/service to order (check is done on current real stock when adding a line into order whatever the rule for automatic stock change) +StockMustBeEnoughForShipment= Stock level must be enough to add product/service to shipment (check is done on current real stock when adding a line into shipment whatever the rule for automatic stock change) +MovementLabel=Label of movement +TypeMovement=Direction of movement +DateMovement=Date of movement +InventoryCode=Movement or inventory code +IsInPackage=Contained into package +WarehouseAllowNegativeTransfer=Stock can be negative +qtyToTranferIsNotEnough=You don't have enough stock from your source warehouse and your setup does not allow negative stocks. +qtyToTranferLotIsNotEnough=You don't have enough stock, for this lot number, from your source warehouse and your setup does not allow negative stocks (Qty for product '%s' with lot '%s' is %s in warehouse '%s'). +ShowWarehouse=Show warehouse +MovementCorrectStock=Stock correction for product %s +MovementTransferStock=Stock transfer of product %s into another warehouse +InventoryCodeShort=Inv./Mov. code +NoPendingReceptionOnSupplierOrder=No pending reception due to open purchase order +ThisSerialAlreadyExistWithDifferentDate=This lot/serial number (%s) already exists but with different eatby or sellby date (found %s but you enter %s). +OpenAnyMovement=Open (all movement) +OpenInternal=Open (only internal movement) +UseDispatchStatus=Use a dispatch status (approve/refuse) for product lines on purchase order reception +OptionMULTIPRICESIsOn=Option "several prices per segment" is on. It means a product has several selling price so value for sell can't be calculated +ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock correctly created +ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated +ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted +AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock +AddStockLocationLine=Decrease quantity then click to split the line +InventoryDate=Inventory date +Inventories=Inventories +NewInventory=New inventory +inventorySetup = Inventory Setup +inventoryCreatePermission=Create new inventory +inventoryReadPermission=View inventories +inventoryWritePermission=Update inventories +inventoryValidatePermission=Validate inventory +inventoryDeletePermission=Delete inventory +inventoryTitle=Inventory +inventoryListTitle=Inventories +inventoryListEmpty=No inventory in progress +inventoryCreateDelete=Create/Delete inventory +inventoryCreate=Create new +inventoryEdit=Edit +inventoryValidate=Validated +inventoryDraft=Running +inventorySelectWarehouse=Warehouse choice +inventoryConfirmCreate=Create +inventoryOfWarehouse=Inventory for warehouse: %s +inventoryErrorQtyAdd=Error: one quantity is less than zero +inventoryMvtStock=By inventory +inventoryWarningProductAlreadyExists=This product is already into list +SelectCategory=Category filter +SelectFournisseur=Vendor filter +inventoryOnDate=Inventory +INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=Stock movements will have the date of inventory (instead of the date of inventory validation) +inventoryChangePMPPermission=Allow to change PMP value for a product +ColumnNewPMP=New unit PMP +OnlyProdsInStock=Do not add product without stock +TheoricalQty=Theorical qty +TheoricalValue=Theorical qty +LastPA=Last BP +CurrentPA=Curent BP +RecordedQty=Recorded Qty +RealQty=Real Qty +RealValue=Real Value +RegulatedQty=Regulated Qty +AddInventoryProduct=Add product to inventory +AddProduct=Add +ApplyPMP=Apply PMP +FlushInventory=Flush inventory +ConfirmFlushInventory=Do you confirm this action? +InventoryFlushed=Inventory flushed +ExitEditMode=Exit edition +inventoryDeleteLine=Delete line +RegulateStock=Regulate Stock +ListInventory=List +StockSupportServices=Stock management supports Services +StockSupportServicesDesc=By default, you can stock only products of type "product". You may also stock a product of type "service" if both module Services and this option are enabled. +ReceiveProducts=Receive items +StockIncreaseAfterCorrectTransfer=Increase by correction/transfer +StockDecreaseAfterCorrectTransfer=Decrease by correction/transfer +StockIncrease=Stock increase +StockDecrease=Stock decrease +InventoryForASpecificWarehouse=Inventory for a specific warehouse +InventoryForASpecificProduct=Inventory for a specific product +StockIsRequiredToChooseWhichLotToUse=Stock is required to choose which lot to use +ForceTo=Force to +AlwaysShowFullArbo=Display full tree of warehouse on popup of warehouse links (Warning: This may decrease dramatically performances) +StockAtDatePastDesc=You can view here the stock (real stock) at a given date in the past +StockAtDateFutureDesc=You can view here the stock (virtual stock) at a given date in the future +CurrentStock=Current stock +InventoryRealQtyHelp=Set value to 0 to reset qty
Keep field empty, or remove line, to keep unchanged +UpdateByScaning=Complete real qty by scaning +UpdateByScaningProductBarcode=Update by scan (product barcode) +UpdateByScaningLot=Update by scan (lot|serial barcode) +DisableStockChangeOfSubProduct=Deactivate the stock change for all the subproducts of this Kit during this movement. +ImportFromCSV=Import CSV list of movement +ChooseFileToImport=Upload file then click on the %s icon to select file as source import file... +SelectAStockMovementFileToImport=select a stock movement file to import +InfoTemplateImport=Uploaded file needs to have this format (* are mandatory fields):
Source Warehouse* | Target Warehouse* | Product* | Quantity* | Lot/serial number
CSV character separator must be "%s" +LabelOfInventoryMovemement=Inventory %s +ReOpen=Reopen +ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. +ObjectNotFound=%s not found +MakeMovementsAndClose=Generate movements and close +AutofillWithExpected=Fill real quantity with expected quantity +ShowAllBatchByDefault=By default, show batch details on product "stock" tab +CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration +ErrorWrongBarcodemode=Unknown Barcode mode +ProductDoesNotExist=Product does not exist +ErrorSameBatchNumber=Several record for the batch number were found in the inventory sheet. No way to know which one to increase. +ProductBatchDoesNotExist=Product with batch/serial does not exist +ProductBarcodeDoesNotExist=Product with barcode does not exist +WarehouseId=Warehouse ID +WarehouseRef=Warehouse Ref +SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start +InventoryStartedShort=Started +ErrorOnElementsInventory=Operation canceled for the following reason: +ErrorCantFindCodeInInventory=Can't find the following code in inventory +QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. +StockChangeDisabled=Change on stock disabled +NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/ms_MY/stripe.lang b/htdocs/langs/ms_MY/stripe.lang new file mode 100644 index 00000000000..2c95bcfce27 --- /dev/null +++ b/htdocs/langs/ms_MY/stripe.lang @@ -0,0 +1,71 @@ +# Dolibarr language file - Source file is en_US - stripe +StripeSetup=Stripe module setup +StripeDesc=Offer your customers an online payment page for payments with credit/debit cards via Stripe. This can be used to allow your customers to make ad-hoc payments or for payments related to a particular Dolibarr object (invoice, order, ...) +StripeOrCBDoPayment=Pay with credit card or Stripe +FollowingUrlAreAvailableToMakePayments=Following URLs are available to offer a page to a customer to make a payment on Dolibarr objects +PaymentForm=Payment form +WelcomeOnPaymentPage=Welcome to our online payment service +ThisScreenAllowsYouToPay=This screen allow you to make an online payment to %s. +ThisIsInformationOnPayment=This is information on payment to do +ToComplete=To complete +YourEMail=Email to receive payment confirmation +STRIPE_PAYONLINE_SENDEMAIL=Email notification after a payment attempt (success or fail) +Creditor=Creditor +PaymentCode=Payment code +StripeDoPayment=Pay with Stripe +YouWillBeRedirectedOnStripe=You will be redirected on secured Stripe page to input you credit card information +Continue=Next +ToOfferALinkForOnlinePayment=URL for %s payment +ToOfferALinkForOnlinePaymentOnOrder=URL to offer a %s online payment page for a sales order +ToOfferALinkForOnlinePaymentOnInvoice=URL to offer a %s online payment page for a customer invoice +ToOfferALinkForOnlinePaymentOnContractLine=URL to offer a %s online payment page for a contract line +ToOfferALinkForOnlinePaymentOnFreeAmount=URL to offer a %s online payment page of any amount with no existing object +ToOfferALinkForOnlinePaymentOnMemberSubscription=URL to offer a %s online payment page for a member subscription +ToOfferALinkForOnlinePaymentOnDonation=URL to offer a %s online payment page for payment of a donation +YouCanAddTagOnUrl=You can also add url parameter &tag=value to any of those URL (mandatory only for payment not linked to an object) to add your own payment comment tag.
For the URL of payments with no existing object, you may also add the parameter &noidempotency=1 so the same link with same tag can be used several times (some payment mode may limit the payment to 1 for each different link without this parameter) +SetupStripeToHavePaymentCreatedAutomatically=Setup your Stripe with url %s to have payment created automatically when validated by Stripe. +AccountParameter=Account parameters +UsageParameter=Usage parameters +InformationToFindParameters=Help to find your %s account information +STRIPE_CGI_URL_V2=Url of Stripe CGI module for payment +CSSUrlForPaymentForm=CSS style sheet url for payment form +NewStripePaymentReceived=New Stripe payment received +NewStripePaymentFailed=New Stripe payment tried but failed +FailedToChargeCard=Failed to charge card +STRIPE_TEST_SECRET_KEY=Secret test key +STRIPE_TEST_PUBLISHABLE_KEY=Publishable test key +STRIPE_TEST_WEBHOOK_KEY=Webhook test key +STRIPE_LIVE_SECRET_KEY=Secret live key +STRIPE_LIVE_PUBLISHABLE_KEY=Publishable live key +STRIPE_LIVE_WEBHOOK_KEY=Webhook live key +ONLINE_PAYMENT_WAREHOUSE=Stock to use for stock decrease when online payment is done
(TODO When option to decrease stock is done on an action on invoice and the online payment generate itself the invoice ?) +StripeLiveEnabled=Stripe live enabled (otherwise test/sandbox mode) +StripeImportPayment=Import Stripe payments +ExampleOfTestCreditCard=Example of credit card for test: %s => valid, %s => error CVC, %s => expired, %s => charge fails +StripeGateways=Stripe gateways +OAUTH_STRIPE_TEST_ID=Stripe Connect Client ID (ca_...) +OAUTH_STRIPE_LIVE_ID=Stripe Connect Client ID (ca_...) +BankAccountForBankTransfer=Bank account for fund payouts +StripeAccount=Stripe account +StripeChargeList=List of Stripe charges +StripeTransactionList=List of Stripe transactions +StripeCustomerId=Stripe customer id +StripePaymentModes=Stripe payment modes +LocalID=Local ID +StripeID=Stripe ID +NameOnCard=Name on card +CardNumber=Card Number +ExpiryDate=Expiry Date +CVN=CVN +DeleteACard=Delete Card +ConfirmDeleteCard=Are you sure you want to delete this Credit or Debit card? +CreateCustomerOnStripe=Create customer on Stripe +CreateCardOnStripe=Create card on Stripe +ShowInStripe=Show in Stripe +StripeUserAccountForActions=User account to use for email notification of some Stripe events (Stripe payouts) +StripePayoutList=List of Stripe payouts +ToOfferALinkForTestWebhook=Link to setup Stripe WebHook to call the IPN (test mode) +ToOfferALinkForLiveWebhook=Link to setup Stripe WebHook to call the IPN (live mode) +PaymentWillBeRecordedForNextPeriod=Payment will be recorded for the next period. +ClickHereToTryAgain=Click here to try again... +CreationOfPaymentModeMustBeDoneFromStripeInterface=Due to Strong Customer Authentication rules, creation of a card must be done from Stripe backoffice. You can click here to switch on Stripe customer record: %s diff --git a/htdocs/langs/ms_MY/supplier_proposal.lang b/htdocs/langs/ms_MY/supplier_proposal.lang new file mode 100644 index 00000000000..a68319fb2df --- /dev/null +++ b/htdocs/langs/ms_MY/supplier_proposal.lang @@ -0,0 +1,58 @@ +# Dolibarr language file - Source file is en_US - supplier_proposal +SupplierProposal=Vendor commercial proposals +supplier_proposalDESC=Manage price requests to suppliers +SupplierProposalNew=New price request +CommRequest=Price request +CommRequests=Price requests +SearchRequest=Find a request +DraftRequests=Draft requests +SupplierProposalsDraft=Draft vendor proposals +LastModifiedRequests=Latest %s modified price requests +RequestsOpened=Open price requests +SupplierProposalArea=Vendor proposals area +SupplierProposalShort=Vendor proposal +SupplierProposals=Vendor proposals +SupplierProposalsShort=Vendor proposals +AskPrice=Price request +NewAskPrice=New price request +ShowSupplierProposal=Show price request +AddSupplierProposal=Create a price request +SupplierProposalRefFourn=Vendor ref +SupplierProposalDate=Delivery date +SupplierProposalRefFournNotice=Before closing to "Accepted", think to grasp suppliers references. +ConfirmValidateAsk=Are you sure you want to validate this price request under name %s? +DeleteAsk=Delete request +ValidateAsk=Validate request +SupplierProposalStatusDraft=Draft (needs to be validated) +SupplierProposalStatusValidated=Validated (request is open) +SupplierProposalStatusClosed=Closed +SupplierProposalStatusSigned=Accepted +SupplierProposalStatusNotSigned=Refused +SupplierProposalStatusDraftShort=Draft +SupplierProposalStatusValidatedShort=Validated +SupplierProposalStatusClosedShort=Closed +SupplierProposalStatusSignedShort=Accepted +SupplierProposalStatusNotSignedShort=Refused +CopyAskFrom=Create a price request by copying an existing request +CreateEmptyAsk=Create blank request +ConfirmCloneAsk=Are you sure you want to clone the price request %s? +ConfirmReOpenAsk=Are you sure you want to open back the price request %s? +SendAskByMail=Send price request by mail +SendAskRef=Sending the price request %s +SupplierProposalCard=Request card +ConfirmDeleteAsk=Are you sure you want to delete this price request %s? +ActionsOnSupplierProposal=Events on price request +DocModelAuroreDescription=A complete request model (logo...) +CommercialAsk=Price request +DefaultModelSupplierProposalCreate=Default model creation +DefaultModelSupplierProposalToBill=Default template when closing a price request (accepted) +DefaultModelSupplierProposalClosed=Default template when closing a price request (refused) +ListOfSupplierProposals=List of vendor proposal requests +ListSupplierProposalsAssociatedProject=List of vendor proposals associated with project +SupplierProposalsToClose=Vendor proposals to close +SupplierProposalsToProcess=Vendor proposals to process +LastSupplierProposals=Latest %s price requests +AllPriceRequests=All requests +TypeContact_supplier_proposal_external_SHIPPING=Vendor contact for delivery +TypeContact_supplier_proposal_external_BILLING=Vendor contact for billing +TypeContact_supplier_proposal_external_SERVICE=Representative following-up proposal diff --git a/htdocs/langs/ms_MY/suppliers.lang b/htdocs/langs/ms_MY/suppliers.lang new file mode 100644 index 00000000000..4d2b37fa316 --- /dev/null +++ b/htdocs/langs/ms_MY/suppliers.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - vendors +Suppliers=Vendors +SuppliersInvoice=Vendor invoice +SupplierInvoices=Vendor invoices +ShowSupplierInvoice=Show Vendor Invoice +NewSupplier=New vendor +NewSupplierInvoice = New vendor invoice +History=History +ListOfSuppliers=List of vendors +ShowSupplier=Show vendor +OrderDate=Order date +BuyingPriceMin=Best buying price +BuyingPriceMinShort=Best buying price +TotalBuyingPriceMinShort=Total of subproducts buying prices +TotalSellingPriceMinShort=Total of subproducts selling prices +SomeSubProductHaveNoPrices=Some sub-products have no price defined +AddSupplierPrice=Add buying price +ChangeSupplierPrice=Change buying price +SupplierPrices=Vendor prices +ReferenceSupplierIsAlreadyAssociatedWithAProduct=This vendor reference is already associated with a product: %s +NoRecordedSuppliers=No vendor recorded +SupplierPayment=Vendor payment +SuppliersArea=Vendor area +RefSupplierShort=Ref. vendor +Availability=Availability +ExportDataset_fournisseur_1=Vendor invoices and invoice details +ExportDataset_fournisseur_2=Vendor invoices and payments +ExportDataset_fournisseur_3=Purchase orders and order details +ApproveThisOrder=Approve this order +ConfirmApproveThisOrder=Are you sure you want to approve order %s? +DenyingThisOrder=Deny this order +ConfirmDenyingThisOrder=Are you sure you want to deny this order %s? +ConfirmCancelThisOrder=Are you sure you want to cancel this order %s? +AddSupplierOrder=Create Purchase Order +AddSupplierInvoice=Create vendor invoice +ListOfSupplierProductForSupplier=List of products and prices for vendor %s +SentToSuppliers=Sent to vendors +ListOfSupplierOrders=List of purchase orders +MenuOrdersSupplierToBill=Purchase orders to invoice +NbDaysToDelivery=Delivery delay (days) +DescNbDaysToDelivery=The longest delivery delay of the products from this order +SupplierReputation=Vendor reputation +ReferenceReputation=Reference reputation +DoNotOrderThisProductToThisSupplier=Do not order +NotTheGoodQualitySupplier=Low quality +ReputationForThisProduct=Reputation +BuyerName=Buyer name +AllProductServicePrices=All product / service prices +AllProductReferencesOfSupplier=All references of vendor +BuyingPriceNumShort=Vendor prices +RepeatableSupplierInvoice=Template supplier invoice +RepeatableSupplierInvoices=Template supplier invoices +RepeatableSupplierInvoicesList=Template supplier invoices +RecurringSupplierInvoices=Recurring supplier invoices +ToCreateAPredefinedSupplierInvoice=In order to create template supplier invoice, you must create a standard invoice, then, without validating it, click on the "%s" button. +GeneratedFromSupplierTemplate=Generated from supplier invoice template %s +SupplierInvoiceGeneratedFromTemplate=Supplier invoice %s Generated from supplier invoice template %s diff --git a/htdocs/langs/ms_MY/ticket.lang b/htdocs/langs/ms_MY/ticket.lang new file mode 100644 index 00000000000..995fddc90a3 --- /dev/null +++ b/htdocs/langs/ms_MY/ticket.lang @@ -0,0 +1,352 @@ +# en_US lang file for module ticket +# Copyright (C) 2013 Jean-François FERRY +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# +# Generic +# + +Module56000Name=Tickets +Module56000Desc=Ticket system for issue or request management + +Permission56001=See tickets +Permission56002=Modify tickets +Permission56003=Delete tickets +Permission56004=Manage tickets +Permission56005=See tickets of all third parties (not effective for external users, always be limited to the third party they depend on) + +TicketDictType=Ticket - Types +TicketDictCategory=Ticket - Groupes +TicketDictSeverity=Ticket - Severities +TicketDictResolution=Ticket - Resolution + +TicketTypeShortCOM=Commercial question +TicketTypeShortHELP=Request for functionnal help +TicketTypeShortISSUE=Issue or bug +TicketTypeShortPROBLEM=Problem +TicketTypeShortREQUEST=Change or enhancement request +TicketTypeShortPROJET=Project +TicketTypeShortOTHER=Other + +TicketSeverityShortLOW=Low +TicketSeverityShortNORMAL=Normal +TicketSeverityShortHIGH=High +TicketSeverityShortBLOCKING=Critical, Blocking + +TicketCategoryShortOTHER=Other + +ErrorBadEmailAddress=Field '%s' incorrect +MenuTicketMyAssign=My tickets +MenuTicketMyAssignNonClosed=My open tickets +MenuListNonClosed=Open tickets + +TypeContact_ticket_internal_CONTRIBUTOR=Contributor +TypeContact_ticket_internal_SUPPORTTEC=Assigned user +TypeContact_ticket_external_SUPPORTCLI=Customer contact / incident tracking +TypeContact_ticket_external_CONTRIBUTOR=External contributor + +OriginEmail=Reporter Email +Notify_TICKET_SENTBYMAIL=Send ticket message by email + +# Status +Read=Read +Assigned=Assigned +InProgress=In progress +NeedMoreInformation=Waiting for reporter feedback +NeedMoreInformationShort=Waiting for feedback +Answered=Answered +Waiting=Waiting +SolvedClosed=Solved +Deleted=Deleted + +# Dict +Type=Type +Severity=Severity +TicketGroupIsPublic=Group is public +TicketGroupIsPublicDesc=If a ticket group is public, it will be visible in the form when creating a ticket from the public interface + +# Email templates +MailToSendTicketMessage=To send email from ticket message + +# +# Admin page +# +TicketSetup=Ticket module setup +TicketSettings=Settings +TicketSetupPage= +TicketPublicAccess=A public interface requiring no identification is available at the following url +TicketSetupDictionaries=The type of ticket, severity and analytic codes are configurable from dictionaries +TicketParamModule=Module variable setup +TicketParamMail=Email setup +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com +TicketEmailNotificationTo=Notify ticket creation to this e-mail address +TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation +TicketNewEmailBodyLabel=Text message sent after creating a ticket +TicketNewEmailBodyHelp=The text specified here will be inserted into the email confirming the creation of a new ticket from the public interface. Information on the consultation of the ticket are automatically added. +TicketParamPublicInterface=Public interface setup +TicketsEmailMustExist=Require an existing email address to create a ticket +TicketsEmailMustExistHelp=In the public interface, the email address should already be filled in the database to create a new ticket. +TicketCreateThirdPartyWithContactIfNotExist=Ask name and company name for unknown emails. +TicketCreateThirdPartyWithContactIfNotExistHelp=Check if a thirdparty or a contact exists for the email entered. If not, ask a name and a company name to create a third party with contact. +PublicInterface=Public interface +TicketUrlPublicInterfaceLabelAdmin=Alternative URL for public interface +TicketUrlPublicInterfaceHelpAdmin=It is possible to define an alias to the web server and thus make available the public interface with another URL (the server must act as a proxy on this new URL) +TicketPublicInterfaceTextHomeLabelAdmin=Welcome text of the public interface +TicketPublicInterfaceTextHome=You can create a support ticket or view existing from its identifier tracking ticket. +TicketPublicInterfaceTextHomeHelpAdmin=The text defined here will appear on the home page of the public interface. +TicketPublicInterfaceTopicLabelAdmin=Interface title +TicketPublicInterfaceTopicHelp=This text will appear as the title of the public interface. +TicketPublicInterfaceTextHelpMessageLabelAdmin=Help text to the message entry +TicketPublicInterfaceTextHelpMessageHelpAdmin=This text will appear above the message input area of the user. +ExtraFieldsTicket=Extra attributes +TicketCkEditorEmailNotActivated=HTML editor is not activated. Please put FCKEDITOR_ENABLE_MAIL content to 1 to get it. +TicketsDisableEmail=Do not send emails for ticket creation or message recording +TicketsDisableEmailHelp=By default, emails are sent when new tickets or messages created. Enable this option to disable *all* email notifications +TicketsLogEnableEmail=Enable log by email +TicketsLogEnableEmailHelp=At each change, an email will be sent **to each contact** associated with the ticket. +TicketParams=Params +TicketsShowModuleLogo=Display the logo of the module in the public interface +TicketsShowModuleLogoHelp=Enable this option to hide the logo module in the pages of the public interface +TicketsShowCompanyLogo=Display the logo of the company in the public interface +TicketsShowCompanyLogoHelp=Enable this option to hide the logo of the main company in the pages of the public interface +TicketsEmailAlsoSendToMainAddress=Also send a notification to the main email address +TicketsEmailAlsoSendToMainAddressHelp=Enable this option to also send an email to the address defined into setup "%s" (see tab "%s") +TicketsLimitViewAssignedOnly=Restrict the display to tickets assigned to the current user (not effective for external users, always be limited to the third party they depend on) +TicketsLimitViewAssignedOnlyHelp=Only tickets assigned to the current user will be visible. Does not apply to a user with tickets management rights. +TicketsActivatePublicInterface=Activate public interface +TicketsActivatePublicInterfaceHelp=Public interface allow any visitors to create tickets. +TicketsAutoAssignTicket=Automatically assign the user who created the ticket +TicketsAutoAssignTicketHelp=When creating a ticket, the user can be automatically assigned to the ticket. +TicketNumberingModules=Tickets numbering module +TicketsModelModule=Document templates for tickets +TicketNotifyTiersAtCreation=Notify third party at creation +TicketsDisableCustomerEmail=Always disable emails when a ticket is created from public interface +TicketsPublicNotificationNewMessage=Send email(s) when a new message/comment is added to a ticket +TicketsPublicNotificationNewMessageHelp=Send email(s) when a new message is added from public interface (to assigned user or the notifications email to (update) and/or the notifications email to) +TicketPublicNotificationNewMessageDefaultEmail=Notifications email to (update) +TicketPublicNotificationNewMessageDefaultEmailHelp=Send an email to this address for each new message notifications if the ticket doesn't have a user assigned to it or if the user doesn't have any known email. +TicketsAutoReadTicket=Automatically mark the ticket as read (when created from backoffice) +TicketsAutoReadTicketHelp=Automatically mark the ticket as read when created from backoffice. When ticket is create from the public interface, ticket remains with the status "Not Read". +TicketsDelayBeforeFirstAnswer=A new ticket should receive a first answer before (hours): +TicketsDelayBeforeFirstAnswerHelp=If a new ticket has not received an answer after this time period (in hours), an important warning icon will be displayed in the list view. +TicketsDelayBetweenAnswers=An unresolved ticket should not be unactive during (hours): +TicketsDelayBetweenAnswersHelp=If an unresolved ticket that has already received an answer has not had further interaction after this time period (in hours), a warning icon will be displayed in the list view. +TicketsAutoNotifyClose=Automatically notify thirdparty when closing a ticket +TicketsAutoNotifyCloseHelp=When closing a ticket, you will be proposed to send a message to one of thirdparty's contacts. On mass closing, a message will be sent to one contact of the thirdparty linked to the ticket. +TicketWrongContact=Provided contact is not part of current ticket contacts. Email not sent. +TicketChooseProductCategory=Product category for ticket support +TicketChooseProductCategoryHelp=Select the product category of ticket support. This will be used to automatically link a contract to a ticket. + +# +# Index & list page +# +TicketsIndex=Tickets area +TicketList=List of tickets +TicketAssignedToMeInfos=This page display ticket list created by or assigned to current user +NoTicketsFound=No ticket found +NoUnreadTicketsFound=No unread ticket found +TicketViewAllTickets=View all tickets +TicketViewNonClosedOnly=View only open tickets +TicketStatByStatus=Tickets by status +OrderByDateAsc=Sort by ascending date +OrderByDateDesc=Sort by descending date +ShowAsConversation=Show as conversation list +MessageListViewType=Show as table list +ConfirmMassTicketClosingSendEmail=Automatically send emails when closing tickets +ConfirmMassTicketClosingSendEmailQuestion=Do you want to notify thirdparties when closing these tickets ? + +# +# Ticket card +# +Ticket=Ticket +TicketCard=Ticket card +CreateTicket=Create ticket +EditTicket=Edit ticket +TicketsManagement=Tickets Management +CreatedBy=Created by +NewTicket=New Ticket +SubjectAnswerToTicket=Ticket answer +TicketTypeRequest=Request type +TicketCategory=Ticket categorization +SeeTicket=See ticket +TicketMarkedAsRead=Ticket has been marked as read +TicketReadOn=Read on +TicketCloseOn=Closing date +MarkAsRead=Mark ticket as read +TicketHistory=Ticket history +AssignUser=Assign to user +TicketAssigned=Ticket is now assigned +TicketChangeType=Change type +TicketChangeCategory=Change analytic code +TicketChangeSeverity=Change severity +TicketAddMessage=Add a message +AddMessage=Add a message +MessageSuccessfullyAdded=Ticket added +TicketMessageSuccessfullyAdded=Message successfully added +TicketMessagesList=Message list +NoMsgForThisTicket=No message for this ticket +TicketProperties=Classification +LatestNewTickets=Latest %s newest tickets (not read) +TicketSeverity=Severity +ShowTicket=See ticket +RelatedTickets=Related tickets +TicketAddIntervention=Create intervention +CloseTicket=Close|Solve ticket +AbandonTicket=Abandon ticket +CloseATicket=Close|Solve a ticket +ConfirmCloseAticket=Confirm ticket closing +ConfirmAbandonTicket=Do you confirm the closing of the ticket to status 'Abandonned' +ConfirmDeleteTicket=Please confirm ticket deleting +TicketDeletedSuccess=Ticket deleted with success +TicketMarkedAsClosed=Ticket marked as closed +TicketDurationAuto=Calculated duration +TicketDurationAutoInfos=Duration calculated automatically from intervention related +TicketUpdated=Ticket updated +SendMessageByEmail=Send message by email +TicketNewMessage=New message +ErrorMailRecipientIsEmptyForSendTicketMessage=Recipient is empty. No email send +TicketGoIntoContactTab=Please go into "Contacts" tab to select them +TicketMessageMailIntro=Introduction +TicketMessageMailIntroHelp=This text is added only at the beginning of the email and will not be saved. +TicketMessageMailIntroLabelAdmin=Introduction text to all ticket answers +TicketMessageMailIntroText=Hello,
A new answer has been added to a ticket that you follow. Here is the message:
+TicketMessageMailIntroHelpAdmin=This text will be inserted before the answer when replying to a ticket from Dolibarr +TicketMessageMailSignature=Signature +TicketMessageMailSignatureHelp=This text is added only at the end of the email and will not be saved. +TicketMessageMailSignatureText=Message sent by %s via Dolibarr +TicketMessageMailSignatureLabelAdmin=Signature of response email +TicketMessageMailSignatureHelpAdmin=This text will be inserted after the response message. +TicketMessageHelp=Only this text will be saved in the message list on ticket card. +TicketMessageSubstitutionReplacedByGenericValues=Substitutions variables are replaced by generic values. +TimeElapsedSince=Time elapsed since +TicketTimeToRead=Time elapsed before read +TicketTimeElapsedBeforeSince=Time elapsed before / since +TicketContacts=Contacts ticket +TicketDocumentsLinked=Documents linked to ticket +ConfirmReOpenTicket=Confirm reopen this ticket ? +TicketMessageMailIntroAutoNewPublicMessage=A new message was posted on the ticket with the subject %s: +TicketAssignedToYou=Ticket assigned +TicketAssignedEmailBody=You have been assigned the ticket #%s by %s +MarkMessageAsPrivate=Mark message as private +TicketMessagePrivateHelp=This message will not display to external users +TicketEmailOriginIssuer=Issuer at origin of the tickets +InitialMessage=Initial Message +LinkToAContract=Link to a contract +TicketPleaseSelectAContract=Select a contract +UnableToCreateInterIfNoSocid=Can not create an intervention when no third party is defined +TicketMailExchanges=Mail exchanges +TicketInitialMessageModified=Initial message modified +TicketMessageSuccesfullyUpdated=Message successfully updated +TicketChangeStatus=Change status +TicketConfirmChangeStatus=Confirm the status change: %s ? +TicketLogStatusChanged=Status changed: %s to %s +TicketNotNotifyTiersAtCreate=Not notify company at create +NotifyThirdpartyOnTicketClosing=Contacts to notify while closing the ticket +TicketNotifyAllTiersAtClose=All related contacts +TicketNotNotifyTiersAtClose=No related contact +Unread=Unread +TicketNotCreatedFromPublicInterface=Not available. Ticket was not created from public interface. +ErrorTicketRefRequired=Ticket reference name is required +TicketsDelayForFirstResponseTooLong=Too much time elapsed since ticket opening without any answer. +TicketsDelayFromLastResponseTooLong=Too much time elapsed since last answer on this ticket. +TicketNoContractFoundToLink=No contract was found to be automatically linked to this ticket. Please link a contract manually. +TicketManyContractsLinked=Many contracts have been automatically linked to this ticket. Make sure to verify which should be chosen. + +# +# Logs +# +TicketLogMesgReadBy=Ticket %s read by %s +NoLogForThisTicket=No log for this ticket yet +TicketLogAssignedTo=Ticket %s assigned to %s +TicketLogPropertyChanged=Ticket %s modified: classification from %s to %s +TicketLogClosedBy=Ticket %s closed by %s +TicketLogReopen=Ticket %s re-open + +# +# Public pages +# +TicketSystem=Ticket system +ShowListTicketWithTrackId=Display ticket list from track ID +ShowTicketWithTrackId=Display ticket from track ID +TicketPublicDesc=You can create a support ticket or check from an existing ID. +YourTicketSuccessfullySaved=Ticket has been successfully saved! +MesgInfosPublicTicketCreatedWithTrackId=A new ticket has been created with ID %s and Ref %s. +PleaseRememberThisId=Please keep the tracking number that we might ask you later. +TicketNewEmailSubject=Ticket creation confirmation - Ref %s (public ticket ID %s) +TicketNewEmailSubjectCustomer=New support ticket +TicketNewEmailBody=This is an automatic email to confirm you have registered a new ticket. +TicketNewEmailBodyCustomer=This is an automatic email to confirm a new ticket has just been created into your account. +TicketNewEmailBodyInfosTicket=Information for monitoring the ticket +TicketNewEmailBodyInfosTrackId=Ticket tracking number: %s +TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the following link +TicketNewEmailBodyInfosTrackUrlCustomer=You can view the progress of the ticket in the specific interface by clicking the following link +TicketCloseEmailBodyInfosTrackUrlCustomer=You can consult the history of this ticket by clicking the following link +TicketEmailPleaseDoNotReplyToThisEmail=Please do not reply directly to this email! Use the link to reply into the interface. +TicketPublicInfoCreateTicket=This form allows you to record a support ticket in our management system. +TicketPublicPleaseBeAccuratelyDescribe=Please accurately describe the problem. Provide the most information possible to allow us to correctly identify your request. +TicketPublicMsgViewLogIn=Please enter ticket tracking ID +TicketTrackId=Public Tracking ID +OneOfTicketTrackId=One of your tracking ID +ErrorTicketNotFound=Ticket with tracking ID %s not found! +Subject=Subject +ViewTicket=View ticket +ViewMyTicketList=View my ticket list +ErrorEmailMustExistToCreateTicket=Error: email address not found in our database +TicketNewEmailSubjectAdmin=New ticket created - Ref %s (public ticket ID %s) +TicketNewEmailBodyAdmin=

Ticket has just been created with ID #%s, see information:

+SeeThisTicketIntomanagementInterface=See ticket in management interface +TicketPublicInterfaceForbidden=The public interface for the tickets was not enabled +ErrorEmailOrTrackingInvalid=Bad value for tracking ID or email +OldUser=Old user +NewUser=New user +NumberOfTicketsByMonth=Number of tickets per month +NbOfTickets=Number of tickets +# notifications +TicketCloseEmailSubjectCustomer=Ticket closed +TicketCloseEmailBodyCustomer=This is an automatic message to notify you that ticket %s has just been closed. +TicketCloseEmailSubjectAdmin=Ticket closed - Réf %s (public ticket ID %s) +TicketCloseEmailBodyAdmin=A ticket with ID #%s has just been closed, see information: +TicketNotificationEmailSubject=Ticket %s updated +TicketNotificationEmailBody=This is an automatic message to notify you that ticket %s has just been updated +TicketNotificationRecipient=Notification recipient +TicketNotificationLogMessage=Log message +TicketNotificationEmailBodyInfosTrackUrlinternal=View ticket into interface +TicketNotificationNumberEmailSent=Notification email sent: %s + +ActionsOnTicket=Events on ticket + +# +# Boxes +# +BoxLastTicket=Latest created tickets +BoxLastTicketDescription=Latest %s created tickets +BoxLastTicketContent= +BoxLastTicketNoRecordedTickets=No recent unread tickets +BoxLastModifiedTicket=Latest modified tickets +BoxLastModifiedTicketDescription=Latest %s modified tickets +BoxLastModifiedTicketContent= +BoxLastModifiedTicketNoRecordedTickets=No recent modified tickets +BoxTicketType=Distribution of open tickets by type +BoxTicketSeverity=Number of open tickets by severity +BoxNoTicketSeverity=No tickets opened +BoxTicketLastXDays=Number of new tickets by days the last %s days +BoxTicketLastXDayswidget = Number of new tickets by days the last X days +BoxNoTicketLastXDays=No new tickets the last %s days +BoxNumberOfTicketByDay=Number of new tickets by day +BoxNewTicketVSClose=Number of tickets versus closed tickets (today) +TicketCreatedToday=Ticket created today +TicketClosedToday=Ticket closed today +KMFoundForTicketGroup=We found topics and FAQs that may answers your question, thanks to check them before submitting the ticket diff --git a/htdocs/langs/ms_MY/trips.lang b/htdocs/langs/ms_MY/trips.lang new file mode 100644 index 00000000000..9210ede360c --- /dev/null +++ b/htdocs/langs/ms_MY/trips.lang @@ -0,0 +1,150 @@ +# Dolibarr language file - Source file is en_US - trips +ShowExpenseReport=Show expense report +Trips=Expense reports +TripsAndExpenses=Expenses reports +TripsAndExpensesStatistics=Expense reports statistics +TripCard=Expense report card +AddTrip=Create expense report +ListOfTrips=List of expense reports +ListOfFees=List of fees +TypeFees=Types of fees +ShowTrip=Show expense report +NewTrip=New expense report +LastExpenseReports=Latest %s expense reports +AllExpenseReports=All expense reports +CompanyVisited=Company/organization visited +FeesKilometersOrAmout=Amount or kilometers +DeleteTrip=Delete expense report +ConfirmDeleteTrip=Are you sure you want to delete this expense report? +ListTripsAndExpenses=List of expense reports +ListToApprove=Waiting for approval +ExpensesArea=Expense reports area +ClassifyRefunded=Classify 'Refunded' +ExpenseReportWaitingForApproval=A new expense report has been submitted for approval +ExpenseReportWaitingForApprovalMessage=A new expense report has been submitted and is waiting for approval.
- User: %s
- Period: %s
Click here to validate: %s +ExpenseReportWaitingForReApproval=An expense report has been submitted for re-approval +ExpenseReportWaitingForReApprovalMessage=An expense report has been submitted and is waiting for re-approval.
The %s, you refused to approve the expense report for this reason: %s.
A new version has been proposed and waiting for your approval.
- User: %s
- Period: %s
Click here to validate: %s +ExpenseReportApproved=An expense report was approved +ExpenseReportApprovedMessage=The expense report %s was approved.
- User: %s
- Approved by: %s
Click here to show the expense report: %s +ExpenseReportRefused=An expense report was refused +ExpenseReportRefusedMessage=The expense report %s was refused.
- User: %s
- Refused by: %s
- Motive for refusal: %s
Click here to show the expense report: %s +ExpenseReportCanceled=An expense report was canceled +ExpenseReportCanceledMessage=The expense report %s was canceled.
- User: %s
- Canceled by: %s
- Motive for cancellation: %s
Click here to show the expense report: %s +ExpenseReportPaid=An expense report was paid +ExpenseReportPaidMessage=The expense report %s was paid.
- User: %s
- Paid by: %s
Click here to show the expense report: %s +TripId=Id expense report +AnyOtherInThisListCanValidate=Person to be informed for validating the request. +TripSociete=Information company +TripNDF=Informations expense report +PDFStandardExpenseReports=Standard template to generate a PDF document for expense report +ExpenseReportLine=Expense report line +TF_OTHER=Other +TF_TRIP=Transportation +TF_LUNCH=Lunch +TF_METRO=Metro +TF_TRAIN=Train +TF_BUS=Bus +TF_CAR=Car +TF_PEAGE=Toll +TF_ESSENCE=Fuel +TF_HOTEL=Hotel +TF_TAXI=Taxi +EX_KME=Mileage costs +EX_FUE=Fuel CV +EX_HOT=Hotel +EX_PAR=Parking CV +EX_TOL=Toll CV +EX_TAX=Various Taxes +EX_IND=Indemnity transportation subscription +EX_SUM=Maintenance supply +EX_SUO=Office supplies +EX_CAR=Car rental +EX_DOC=Documentation +EX_CUR=Customers receiving +EX_OTR=Other receiving +EX_POS=Postage +EX_CAM=CV maintenance and repair +EX_EMM=Employees meal +EX_GUM=Guests meal +EX_BRE=Breakfast +EX_FUE_VP=Fuel PV +EX_TOL_VP=Toll PV +EX_PAR_VP=Parking PV +EX_CAM_VP=PV maintenance and repair +DefaultCategoryCar=Default transportation mode +DefaultRangeNumber=Default range number +UploadANewFileNow=Upload a new document now +Error_EXPENSEREPORT_ADDON_NotDefined=Error, the rule for expense report numbering ref was not defined into setup of module 'Expense Report' +ErrorDoubleDeclaration=You have declared another expense report into a similar date range. +AucuneLigne=There is no expense report declared yet +ModePaiement=Payment mode +VALIDATOR=User responsible for approval +VALIDOR=Approved by +AUTHOR=Recorded by +AUTHORPAIEMENT=Paid by +REFUSEUR=Denied by +CANCEL_USER=Deleted by +MOTIF_REFUS=Reason +MOTIF_CANCEL=Reason +DATE_REFUS=Deny date +DATE_SAVE=Validation date +DATE_CANCEL=Cancelation date +DATE_PAIEMENT=Payment date +ExpenseReportRef=Ref. expense report +ValidateAndSubmit=Validate and submit for approval +ValidatedWaitingApproval=Validated (waiting for approval) +NOT_AUTHOR=You are not the author of this expense report. Operation cancelled. +ConfirmRefuseTrip=Are you sure you want to deny this expense report? +ValideTrip=Approve expense report +ConfirmValideTrip=Are you sure you want to approve this expense report? +PaidTrip=Pay an expense report +ConfirmPaidTrip=Are you sure you want to change status of this expense report to "Paid"? +ConfirmCancelTrip=Are you sure you want to cancel this expense report? +BrouillonnerTrip=Move back expense report to status "Draft" +ConfirmBrouillonnerTrip=Are you sure you want to move this expense report to status "Draft"? +SaveTrip=Validate expense report +ConfirmSaveTrip=Are you sure you want to validate this expense report? +NoTripsToExportCSV=No expense report to export for this period. +ExpenseReportPayment=Expense report payment +ExpenseReportsToApprove=Expense reports to approve +ExpenseReportsToPay=Expense reports to pay +ConfirmCloneExpenseReport=Are you sure you want to clone this expense report ? +ExpenseReportsIk=Configuration of mileage charges +ExpenseReportsRules=Expense report rules +ExpenseReportIkDesc=You can modify the calculation of kilometers expense by category and range who they are previously defined. d is the distance in kilometers +ExpenseReportRulesDesc=You can define max amount rules for expense reports. These rules will be applied when a new expense is added to an expense report +expenseReportOffset=Offset +expenseReportCoef=Coefficient +expenseReportTotalForFive=Example with d = 5 +expenseReportRangeFromTo=from %d to %d +expenseReportRangeMoreThan=more than %d +expenseReportCoefUndefined=(value not defined) +expenseReportCatDisabled=Category disabled - see the c_exp_tax_cat dictionary +expenseReportRangeDisabled=Range disabled - see the c_exp_tax_range dictionay +expenseReportPrintExample=offset + (d x coef) = %s +ExpenseReportApplyTo=Apply to +ExpenseReportDomain=Domain to apply +ExpenseReportLimitOn=Limit on +ExpenseReportDateStart=Date start +ExpenseReportDateEnd=Date end +ExpenseReportLimitAmount=Max amount +ExpenseReportRestrictive=Exceeding forbidden +AllExpenseReport=All type of expense report +OnExpense=Expense line +ExpenseReportRuleSave=Expense report rule saved +ExpenseReportRuleErrorOnSave=Error: %s +RangeNum=Range %d +ExpenseReportConstraintViolationError=Max amount exceeded (rule %s): %s is higher than %s (Exceeding forbidden) +byEX_DAY=by day (limitation to %s) +byEX_MON=by month (limitation to %s) +byEX_YEA=by year (limitation to %s) +byEX_EXP=by line (limitation to %s) +ExpenseReportConstraintViolationWarning=Max amount exceeded (rule %s): %s is higher than %s (Exceeding authorized) +nolimitbyEX_DAY=by day (no limitation) +nolimitbyEX_MON=by month (no limitation) +nolimitbyEX_YEA=by year (no limitation) +nolimitbyEX_EXP=by line (no limitation) +CarCategory=Vehicle category +ExpenseRangeOffset=Offset amount: %s +RangeIk=Mileage range +AttachTheNewLineToTheDocument=Attach the line to an uploaded document diff --git a/htdocs/langs/ms_MY/users.lang b/htdocs/langs/ms_MY/users.lang new file mode 100644 index 00000000000..d3cbbe0fa0b --- /dev/null +++ b/htdocs/langs/ms_MY/users.lang @@ -0,0 +1,130 @@ +# Dolibarr language file - Source file is en_US - users +HRMArea=HRM area +UserCard=User card +GroupCard=Group card +Permission=Permission +Permissions=Permissions +EditPassword=Edit password +SendNewPassword=Regenerate and send password +SendNewPasswordLink=Send link to reset password +ReinitPassword=Regenerate password +PasswordChangedTo=Password changed to: %s +SubjectNewPassword=Your new password for %s +GroupRights=Group permissions +UserRights=User permissions +Credentials=Credentials +UserGUISetup=User Display Setup +DisableUser=Disable +DisableAUser=Disable a user +DeleteUser=Delete +DeleteAUser=Delete a user +EnableAUser=Enable a user +DeleteGroup=Delete +DeleteAGroup=Delete a group +ConfirmDisableUser=Are you sure you want to disable user %s? +ConfirmDeleteUser=Are you sure you want to delete user %s? +ConfirmDeleteGroup=Are you sure you want to delete group %s? +ConfirmEnableUser=Are you sure you want to enable user %s? +ConfirmReinitPassword=Are you sure you want to generate a new password for user %s? +ConfirmSendNewPassword=Are you sure you want to generate and send new password for user %s? +NewUser=New user +CreateUser=Create user +LoginNotDefined=Login is not defined. +NameNotDefined=Name is not defined. +ListOfUsers=List of users +SuperAdministrator=Super Administrator +SuperAdministratorDesc=Global administrator +AdministratorDesc=Administrator +DefaultRights=Default Permissions +DefaultRightsDesc=Define here the default permissions that are automatically granted to a new user (to modify permissions for existing users, go to the user card). +DolibarrUsers=Dolibarr users +LastName=Last name +FirstName=First name +ListOfGroups=List of groups +NewGroup=New group +CreateGroup=Create group +RemoveFromGroup=Remove from group +PasswordChangedAndSentTo=Password changed and sent to %s. +PasswordChangeRequest=Request to change password for %s +PasswordChangeRequestSent=Request to change password for %s sent to %s. +IfLoginExistPasswordRequestSent=If this login is a valid account, an email to reset password has been sent. +IfEmailExistPasswordRequestSent=If this email is a valid account, an email to reset password has been sent. +ConfirmPasswordReset=Confirm password reset +MenuUsersAndGroups=Users & Groups +LastGroupsCreated=Latest %s groups created +LastUsersCreated=Latest %s users created +ShowGroup=Show group +ShowUser=Show user +NonAffectedUsers=Non assigned users +UserModified=User modified successfully +PhotoFile=Photo file +ListOfUsersInGroup=List of users in this group +ListOfGroupsForUser=List of groups for this user +LinkToCompanyContact=Link to third party / contact +LinkedToDolibarrMember=Link to member +LinkedToDolibarrUser=Link to user +LinkedToDolibarrThirdParty=Link to third party +CreateDolibarrLogin=Create a user +CreateDolibarrThirdParty=Create a third party +LoginAccountDisableInDolibarr=Account disabled in Dolibarr. +UsePersonalValue=Use personal value +InternalUser=Internal user +ExportDataset_user_1=Users and their properties +DomainUser=Domain user %s +Reactivate=Reactivate +CreateInternalUserDesc=This form allows you to create an internal user in your company/organization. To create an external user (customer, vendor etc. ..), use the button 'Create Dolibarr User' from that third-party's contact card. +InternalExternalDesc=An internal user is a user that is part of your company/organization, or is a partner user outside of your organization that may need to see more data than data related to his company (the permission system will define what he can or can't see or do).
An external user is a customer, vendor or other that must view ONLY data related to himself (Creating an external user for a third-party can be done from the contact record of the third-party).

In both cases, you must grant permissions on the features that the user need. +PermissionInheritedFromAGroup=Permission granted because inherited from one of a user's group. +Inherited=Inherited +UserWillBe=Created user will be +UserWillBeInternalUser=Created user will be an internal user (because not linked to a particular third party) +UserWillBeExternalUser=Created user will be an external user (because linked to a particular third party) +IdPhoneCaller=Id phone caller +NewUserCreated=User %s created +NewUserPassword=Password change for %s +NewPasswordValidated=Your new password have been validated and must be used now to login. +EventUserModified=User %s modified +UserDisabled=User %s disabled +UserEnabled=User %s activated +UserDeleted=User %s removed +NewGroupCreated=Group %s created +GroupModified=Group %s modified +GroupDeleted=Group %s removed +ConfirmCreateContact=Are you sure you want to create a Dolibarr account for this contact? +ConfirmCreateLogin=Are you sure you want to create a Dolibarr account for this member? +ConfirmCreateThirdParty=Are you sure you want to create a third party for this member? +LoginToCreate=Login to create +NameToCreate=Name of third party to create +YourRole=Your roles +YourQuotaOfUsersIsReached=Your quota of active users is reached ! +NbOfUsers=Number of users +NbOfPermissions=Number of permissions +DontDowngradeSuperAdmin=Only a superadmin can downgrade a superadmin +HierarchicalResponsible=Supervisor +HierarchicView=Hierarchical view +UseTypeFieldToChange=Use field Type to change +OpenIDURL=OpenID URL +LoginUsingOpenID=Use OpenID to login +WeeklyHours=Hours worked (per week) +ExpectedWorkedHours=Expected hours worked per week +ColorUser=Color of the user +DisabledInMonoUserMode=Disabled in maintenance mode +UserAccountancyCode=User accounting code +UserLogoff=User logout +UserLogged=User logged +DateOfEmployment=Employment date +DateEmployment=Employment +DateEmploymentStart=Employment Start Date +DateEmploymentEnd=Employment End Date +RangeOfLoginValidity=Access validity date range +CantDisableYourself=You can't disable your own user record +ForceUserExpenseValidator=Force expense report validator +ForceUserHolidayValidator=Force leave request validator +ValidatorIsSupervisorByDefault=By default, the validator is the supervisor of the user. Keep empty to keep this behaviour. +UserPersonalEmail=Personal email +UserPersonalMobile=Personal mobile phone +WarningNotLangOfInterface=Warning, this is the main language the user speak, not the language of the interface he choosed to see. To change the interface language visible by this user, go on tab %s +DateLastLogin=Date last login +DatePreviousLogin=Date previous login +IPLastLogin=IP last login +IPPreviousLogin=IP previous login diff --git a/htdocs/langs/ms_MY/website.lang b/htdocs/langs/ms_MY/website.lang new file mode 100644 index 00000000000..2bf46e63e9d --- /dev/null +++ b/htdocs/langs/ms_MY/website.lang @@ -0,0 +1,147 @@ +# Dolibarr language file - Source file is en_US - website +Shortname=Code +WebsiteSetupDesc=Create here the websites you wish to use. Then go into menu Websites to edit them. +DeleteWebsite=Delete website +ConfirmDeleteWebsite=Are you sure you want to delete this web site? All its pages and content will also be removed. The files uploaded (like into the medias directory, the ECM module, ...) will remain. +WEBSITE_TYPE_CONTAINER=Type of page/container +WEBSITE_PAGE_EXAMPLE=Web page to use as example +WEBSITE_PAGENAME=Page name/alias +WEBSITE_ALIASALT=Alternative page names/aliases +WEBSITE_ALIASALTDesc=Use here list of other name/aliases so the page can also be accessed using this other names/aliases (for example the old name after renaming the alias to keep backlink on old link/name working). Syntax is:
alternativename1, alternativename2, ... +WEBSITE_CSS_URL=URL of external CSS file +WEBSITE_CSS_INLINE=CSS file content (common to all pages) +WEBSITE_JS_INLINE=Javascript file content (common to all pages) +WEBSITE_HTML_HEADER=Addition at bottom of HTML Header (common to all pages) +WEBSITE_ROBOT=Robot file (robots.txt) +WEBSITE_HTACCESS=Website .htaccess file +WEBSITE_MANIFEST_JSON=Website manifest.json file +WEBSITE_README=README.md file +WEBSITE_KEYWORDSDesc=Use a comma to separate values +EnterHereLicenseInformation=Enter here meta data or license information to fille a README.md file. if you distribute your website as a template, the file will be included into the temptate package. +HtmlHeaderPage=HTML header (specific to this page only) +PageNameAliasHelp=Name or alias of the page.
This alias is also used to forge a SEO URL when website is ran from a Virtual host of a Web server (like Apacke, Nginx, ...). Use the button "%s" to edit this alias. +EditTheWebSiteForACommonHeader=Note: If you want to define a personalized header for all pages, edit the header on the site level instead of on the page/container. +MediaFiles=Media library +EditCss=Edit website properties +EditMenu=Edit menu +EditMedias=Edit medias +EditPageMeta=Edit page/container properties +EditInLine=Edit inline +AddWebsite=Add website +Webpage=Web page/container +AddPage=Add page/container +PageContainer=Page +PreviewOfSiteNotYetAvailable=The preview of your website %s is not yet available. You must first 'Import a full website template' or just 'Add a page/container'. +RequestedPageHasNoContentYet=Requested page with id %s has no content yet, or cache file .tpl.php was removed. Edit content of the page to solve this. +SiteDeleted=Web site '%s' deleted +PageContent=Page/Contenair +PageDeleted=Page/Contenair '%s' of website %s deleted +PageAdded=Page/Contenair '%s' added +ViewSiteInNewTab=View site in new tab +ViewPageInNewTab=View page in new tab +SetAsHomePage=Set as Home page +RealURL=Real URL +ViewWebsiteInProduction=View web site using home URLs +SetHereVirtualHost=Use with Apache/NGinx/...
Create on your web server (Apache, Nginx, ...) a dedicated Virtual Host with PHP enabled and a Root directory on
%s +ExampleToUseInApacheVirtualHostConfig=Example to use in Apache virtual host setup: +YouCanAlsoTestWithPHPS=Use with PHP embedded server
On develop environment, you may prefer to test the site with the PHP embedded web server (PHP 5.5 required) by running
php -S 0.0.0.0:8080 -t %s +YouCanAlsoDeployToAnotherWHP=Run your web site with another Dolibarr Hosting provider
If you don't have a web server like Apache or NGinx available on internet, you can export and import your web site onto another Dolibarr instance provided by another Dolibarr hosting provider that provide full integration with the Website module. You can find a list of some Dolibarr hosting providers on https://saas.dolibarr.org +CheckVirtualHostPerms=Check also that the virtual host user (for example www-data) has %s permissions on files into
%s +ReadPerm=Read +WritePerm=Write +TestDeployOnWeb=Test/deploy on web +PreviewSiteServedByWebServer=Preview %s in a new tab.

The %s will be served by an external web server (like Apache, Nginx, IIS). You must install and setup this server before to point to directory:
%s
URL served by external server:
%s +PreviewSiteServedByDolibarr=Preview %s in a new tab.

The %s will be served by Dolibarr server so it does not need any extra web server (like Apache, Nginx, IIS) to be installed.
The inconvenient is that the URLs of pages are not user friendly and start with the path of your Dolibarr.
URL served by Dolibarr:
%s

To use your own external web server to serve this web site, create a virtual host on your web server that points on directory
%s
then enter the name of this virtual server in the properties of this website and click on the link "Test/Deploy on the web". +VirtualHostUrlNotDefined=URL of the virtual host served by external web server not defined +NoPageYet=No pages yet +YouCanCreatePageOrImportTemplate=You can create a new page or import a full website template +SyntaxHelp=Help on specific syntax tips +YouCanEditHtmlSourceckeditor=You can edit HTML source code using the "Source" button in editor. +YouCanEditHtmlSource=
You can include PHP code into this source using tags <?php ?>. The following global variables are available: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

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

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

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

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

To include an image stored into the documents directory, use the viewimage.php wrapper:
Example, for an image into documents/medias (open directory for public access), syntax is:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
+#YouCanEditHtmlSource2=
To include a image shared publicaly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
+YouCanEditHtmlSource2=For an image shared with a share link (open access using the sharing hash key of file), syntax is:
<img src="/viewimage.php?hashp=12345679012...">
+YouCanEditHtmlSourceMore=
More examples of HTML or dynamic code available on the wiki documentation
. +ClonePage=Clone page/container +CloneSite=Clone site +SiteAdded=Website added +ConfirmClonePage=Please enter code/alias of new page and if it is a translation of the cloned page. +PageIsANewTranslation=The new page is a translation of the current page ? +LanguageMustNotBeSameThanClonedPage=You clone a page as a translation. The language of the new page must be different than language of source page. +ParentPageId=Parent page ID +WebsiteId=Website ID +CreateByFetchingExternalPage=Create page/container by fetching page from external URL... +OrEnterPageInfoManually=Or create page from scratch or from a page template... +FetchAndCreate=Fetch and Create +ExportSite=Export website +ImportSite=Import website template +IDOfPage=Id of page +Banner=Banner +BlogPost=Blog post +WebsiteAccount=Website account +WebsiteAccounts=Website accounts +AddWebsiteAccount=Create web site account +BackToListForThirdParty=Back to list for the third-party +DisableSiteFirst=Disable website first +MyContainerTitle=My web site title +AnotherContainer=This is how to include content of another page/container (you may have an error here if you enable dynamic code because the embedded subcontainer may not exists) +SorryWebsiteIsCurrentlyOffLine=Sorry, this website is currently off line. Please comme back later... +WEBSITE_USE_WEBSITE_ACCOUNTS=Enable the web site account table +WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Enable the table to store web site accounts (login/pass) for each website / third party +YouMustDefineTheHomePage=You must first define the default Home page +OnlyEditionOfSourceForGrabbedContentFuture=Warning: Creating a web page by importing an external web page is reserved for experienced users. Depending on the complexity of source page, the result of importation may differ from the original. Also if the source page uses common CSS styles or conflicting javascript, it may break the look or features of the Website editor when working on this page. This method is a quicker way to create a page but it is recommended to create your new page from scratch or from a suggested page template.
Note also that the inline editor may not works correclty when used on a grabbed external page. +OnlyEditionOfSourceForGrabbedContent=Only edition of HTML source is possible when content was grabbed from an external site +GrabImagesInto=Grab also images found into css and page. +ImagesShouldBeSavedInto=Images should be saved into directory +WebsiteRootOfImages=Root directory for website images +SubdirOfPage=Sub-directory dedicated to page +AliasPageAlreadyExists=Alias page %s already exists +CorporateHomePage=Corporate Home page +EmptyPage=Empty page +ExternalURLMustStartWithHttp=External URL must start with http:// or https:// +ZipOfWebsitePackageToImport=Upload the Zip file of the website template package +ZipOfWebsitePackageToLoad=or Choose an available embedded website template package +ShowSubcontainers=Show dynamic content +InternalURLOfPage=Internal URL of page +ThisPageIsTranslationOf=This page/container is a translation of +ThisPageHasTranslationPages=This page/container has translation +NoWebSiteCreateOneFirst=No website has been created yet. Create one first. +GoTo=Go to +DynamicPHPCodeContainsAForbiddenInstruction=You add dynamic PHP code that contains the PHP instruction '%s' that is forbidden by default as dynamic content (see hidden options WEBSITE_PHP_ALLOW_xxx to increase list of allowed commands). +NotAllowedToAddDynamicContent=You don't have permission to add or edit PHP dynamic content in websites. Ask permission or just keep code into php tags unmodified. +ReplaceWebsiteContent=Search or Replace website content +DeleteAlsoJs=Delete also all javascript files specific to this website? +DeleteAlsoMedias=Delete also all medias files specific to this website? +MyWebsitePages=My website pages +SearchReplaceInto=Search | Replace into +ReplaceString=New string +CSSContentTooltipHelp=Enter here CSS content. To avoid any conflict with the CSS of the application, be sure to prepend all declaration with the .bodywebsite class. For example:

#mycssselector, input.myclass:hover { ... }
must be
.bodywebsite #mycssselector, .bodywebsite input.myclass:hover { ... }

Note: If you have a large file without this prefix, you can use 'lessc' to convert it to append the .bodywebsite prefix everywhere. +LinkAndScriptsHereAreNotLoadedInEditor=Warning: This content is output only when site is accessed from a server. It is not used in Edit mode so if you need to load javascript files also in edit mode, just add your tag 'script src=...' into the page. +Dynamiccontent=Sample of a page with dynamic content +ImportSite=Import website template +EditInLineOnOff=Mode 'Edit inline' is %s +ShowSubContainersOnOff=Mode to execute 'dynamic content' is %s +GlobalCSSorJS=Global CSS/JS/Header file of web site +BackToHomePage=Back to home page... +TranslationLinks=Translation links +YouTryToAccessToAFileThatIsNotAWebsitePage=You try to access to a page that is not available.
(ref=%s, type=%s, status=%s) +UseTextBetween5And70Chars=For good SEO practices, use a text between 5 and 70 characters +MainLanguage=Main language +OtherLanguages=Other languages +UseManifest=Provide a manifest.json file +PublicAuthorAlias=Public author alias +AvailableLanguagesAreDefinedIntoWebsiteProperties=Available languages are defined into website properties +ReplacementDoneInXPages=Replacement done in %s pages or containers +RSSFeed=RSS Feed +RSSFeedDesc=You can get a RSS feed of latest articles with type 'blogpost' using this URL +PagesRegenerated=%s page(s)/container(s) regenerated +RegenerateWebsiteContent=Regenerate web site cache files +AllowedInFrames=Allowed in Frames +DefineListOfAltLanguagesInWebsiteProperties=Define list of all available languages into web site properties. +GenerateSitemaps=Generate website sitemap file +ConfirmGenerateSitemaps=If you confirm, you will erase the existing sitemap file... +ConfirmSitemapsCreation=Confirm sitemap generation +SitemapGenerated=Sitemap file %s generated +ImportFavicon=Favicon +ErrorFaviconType=Favicon must be png +ErrorFaviconSize=Favicon must be sized 16x16, 32x32 or 64x64 +FaviconTooltip=Upload an image which needs to be a png (16x16, 32x32 or 64x64) diff --git a/htdocs/langs/ms_MY/withdrawals.lang b/htdocs/langs/ms_MY/withdrawals.lang new file mode 100644 index 00000000000..82cd908c6a8 --- /dev/null +++ b/htdocs/langs/ms_MY/withdrawals.lang @@ -0,0 +1,159 @@ +# Dolibarr language file - Source file is en_US - withdrawals +CustomersStandingOrdersArea=Payments by Direct debit orders +SuppliersStandingOrdersArea=Payments by Credit transfer +StandingOrdersPayment=Direct debit payment orders +StandingOrderPayment=Direct debit payment order +NewStandingOrder=New direct debit order +NewPaymentByBankTransfer=New payment by credit transfer +StandingOrderToProcess=To process +PaymentByBankTransferReceipts=Credit transfer orders +PaymentByBankTransferLines=Credit transfer order lines +WithdrawalsReceipts=Direct debit orders +WithdrawalReceipt=Direct debit order +BankTransferReceipts=Credit transfer orders +BankTransferReceipt=Credit transfer order +LatestBankTransferReceipts=Latest %s credit transfer orders +LastWithdrawalReceipts=Latest %s direct debit files +WithdrawalsLine=Direct debit order line +CreditTransfer=Credit transfer +CreditTransferLine=Credit transfer line +WithdrawalsLines=Direct debit order lines +CreditTransferLines=Credit transfer lines +RequestStandingOrderToTreat=Requests for direct debit payment order to process +RequestStandingOrderTreated=Requests for direct debit payment order processed +RequestPaymentsByBankTransferToTreat=Requests for credit transfer to process +RequestPaymentsByBankTransferTreated=Requests for credit transfer processed +NotPossibleForThisStatusOfWithdrawReceiptORLine=Not yet possible. Withdraw status must be set to 'credited' before declaring reject on specific lines. +NbOfInvoiceToWithdraw=No. of qualified customer invoices with waiting direct debit order +NbOfInvoiceToWithdrawWithInfo=No. of customer invoice with direct debit payment orders having defined bank account information +NbOfInvoiceToPayByBankTransfer=No. of qualified supplier invoices waiting for a payment by credit transfer +SupplierInvoiceWaitingWithdraw=Vendor invoice waiting for payment by credit transfer +InvoiceWaitingWithdraw=Invoice waiting for direct debit +InvoiceWaitingPaymentByBankTransfer=Invoice waiting for credit transfer +AmountToWithdraw=Amount to withdraw +AmountToTransfer=Amount to transfer +NoInvoiceToWithdraw=No invoice open for '%s' is waiting. Go on tab '%s' on invoice card to make a request. +NoSupplierInvoiceToWithdraw=No supplier invoice with open 'Direct credit requests' is waiting. Go on tab '%s' on invoice card to make a request. +ResponsibleUser=User Responsible +WithdrawalsSetup=Direct debit payment setup +CreditTransferSetup=Credit transfer setup +WithdrawStatistics=Direct debit payment statistics +CreditTransferStatistics=Credit transfer statistics +Rejects=Rejects +LastWithdrawalReceipt=Latest %s direct debit receipts +MakeWithdrawRequest=Make a direct debit payment request +MakeBankTransferOrder=Make a credit transfer request +WithdrawRequestsDone=%s direct debit payment requests recorded +BankTransferRequestsDone=%s credit transfer requests recorded +ThirdPartyBankCode=Third-party bank code +NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s. +WithdrawalCantBeCreditedTwice=This withdrawal receipt is already marked as credited; this can't be done twice, as this would potentially create duplicate payments and bank entries. +ClassCredited=Classify credited +ClassDebited=Classify debited +ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account? +TransData=Transmission date +TransMetod=Transmission method +Send=Send +Lines=Lines +StandingOrderReject=Issue a rejection +WithdrawsRefused=Direct debit refused +WithdrawalRefused=Withdrawal refused +CreditTransfersRefused=Credit transfers refused +WithdrawalRefusedConfirm=Are you sure you want to enter a withdrawal rejection for society +RefusedData=Date of rejection +RefusedReason=Reason for rejection +RefusedInvoicing=Billing the rejection +NoInvoiceRefused=Do not charge the rejection +InvoiceRefused=Invoice refused (Charge the rejection to customer) +StatusDebitCredit=Status debit/credit +StatusWaiting=Waiting +StatusTrans=Sent +StatusDebited=Debited +StatusCredited=Credited +StatusPaid=Paid +StatusRefused=Refused +StatusMotif0=Unspecified +StatusMotif1=Insufficient funds +StatusMotif2=Request contested +StatusMotif3=No direct debit payment order +StatusMotif4=Sales Order +StatusMotif5=RIB unusable +StatusMotif6=Account without balance +StatusMotif7=Judicial Decision +StatusMotif8=Other reason +CreateForSepaFRST=Create direct debit file (SEPA FRST) +CreateForSepaRCUR=Create direct debit file (SEPA RCUR) +CreateAll=Create direct debit file +CreateFileForPaymentByBankTransfer=Create file for credit transfer +CreateSepaFileForPaymentByBankTransfer=Create credit transfer file (SEPA) +CreateGuichet=Only office +CreateBanque=Only bank +OrderWaiting=Waiting for treatment +NotifyTransmision=Record file transmission of order +NotifyCredit=Record credit of order +NumeroNationalEmetter=National Transmitter Number +WithBankUsingRIB=For bank accounts using RIB +WithBankUsingBANBIC=For bank accounts using IBAN/BIC/SWIFT +BankToReceiveWithdraw=Receiving Bank Account +BankToPayCreditTransfer=Bank Account used as source of payments +CreditDate=Credit on +WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your country %s (Your country is not supported) +ShowWithdraw=Show Direct Debit Order +IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one direct debit payment order not yet processed, it won't be set as paid to allow prior withdrawal management. +DoStandingOrdersBeforePayments=This tab allows you to request a direct debit payment order. Once done, go into menu Bank->Payment by direct debit to generate and manage the direct debit order. When direct debit order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. +DoCreditTransferBeforePayments=This tab allows you to request a credit transfer order. Once done, go into menu Bank->Payment by credit transfer to generate and manage the credit transfer order. When credit transfer order is closed, payment on invoices will be automatically recorded, and invoices closed if remainder to pay is null. +WithdrawalFile=Debit order file +CreditTransferFile=Credit transfer file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also record payments on invoices and will classify them as "Paid" if remain to pay is null +StatisticsByLineStatus=Statistics by status of lines +RUM=UMR +DateRUM=Mandate signature date +RUMLong=Unique Mandate Reference +RUMWillBeGenerated=If empty, a UMR (Unique Mandate Reference) will be generated once the bank account information is saved. +WithdrawMode=Direct debit mode (FRST or RECUR) +WithdrawRequestAmount=Amount of Direct debit request: +BankTransferAmount=Amount of Credit Transfer request: +WithdrawRequestErrorNilAmount=Unable to create direct debit request for empty amount. +SepaMandate=SEPA Direct Debit Mandate +SepaMandateShort=SEPA Mandate +PleaseReturnMandate=Please return this mandate form by email to %s or by mail to +SEPALegalText=By signing this mandate form, you authorize (A) %s to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with the instructions from %s. As part of your rights, you are entitled to a refund from your bank under the terms and conditions of your agreement with your bank. Your rights regarding the above mandate are explained in a statement that you can obtain from your bank. +CreditorIdentifier=Creditor Identifier +CreditorName=Creditor Name +SEPAFillForm=(B) Please complete all the fields marked * +SEPAFormYourName=Your name +SEPAFormYourBAN=Your Bank Account Name (IBAN) +SEPAFormYourBIC=Your Bank Identifier Code (BIC) +SEPAFrstOrRecur=Type of payment +ModeRECUR=Recurring payment +ModeFRST=One-off payment +PleaseCheckOne=Please check one only +CreditTransferOrderCreated=Credit transfer order %s created +DirectDebitOrderCreated=Direct debit order %s created +AmountRequested=Amount requested +SEPARCUR=SEPA CUR +SEPAFRST=SEPA FRST +ExecutionDate=Execution date +CreateForSepa=Create direct debit file +ICS=Creditor Identifier - ICS +IDS=Debitor Identifier +END_TO_END="EndToEndId" SEPA XML tag - Unique id assigned per transaction +USTRD="Unstructured" SEPA XML tag +ADDDAYS=Add days to Execution Date +NoDefaultIBANFound=No default IBAN found for this third party +### Notifications +InfoCreditSubject=Payment of direct debit payment order %s by the bank +InfoCreditMessage=The direct debit payment order %s has been paid by the bank
Data of payment: %s +InfoTransSubject=Transmission of direct debit payment order %s to bank +InfoTransMessage=The direct debit payment order %s has been sent to bank by %s %s.

+InfoTransData=Amount: %s
Method: %s
Date: %s +InfoRejectSubject=Direct debit payment order refused +InfoRejectMessage=Hello,

the direct debit payment order of invoice %s related to the company %s, with an amount of %s has been refused by the bank.

--
%s +ModeWarning=Option for real mode was not set, we stop after this simulation +ErrorCompanyHasDuplicateDefaultBAN=Company with id %s has more than one default bank account. No way to know wich one to use. +ErrorICSmissing=Missing ICS in Bank account %s +TotalAmountOfdirectDebitOrderDiffersFromSumOfLines=Total amount of direct debit order differs from sum of lines +WarningSomeDirectDebitOrdersAlreadyExists=Warning: There is already some pending Direct Debit orders (%s) requested for an amount of %s +WarningSomeCreditTransferAlreadyExists=Warning: There is already some pending Credit Transfer (%s) requested for an amount of %s +UsedFor=Used for %s diff --git a/htdocs/langs/ms_MY/workflow.lang b/htdocs/langs/ms_MY/workflow.lang new file mode 100644 index 00000000000..2d7914f6139 --- /dev/null +++ b/htdocs/langs/ms_MY/workflow.lang @@ -0,0 +1,36 @@ +# Dolibarr language file - Source file is en_US - workflow +WorkflowSetup=Workflow module setup +WorkflowDesc=This module provides some automatic actions. By default, the workflow is open (you can do things in the order you want) but here you can activate some automatic actions. +ThereIsNoWorkflowToModify=There is no workflow modifications available with the activated modules. +# Autocreate +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Automatically create a sales order after a commercial proposal is signed (the new order will have same amount as the proposal) +descWORKFLOW_PROPAL_AUTOCREATE_INVOICE=Automatically create a customer invoice after a commercial proposal is signed (the new invoice will have same amount as the proposal) +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Automatically create a customer invoice after a contract is validated +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Automatically create a customer invoice after a sales order is closed (the new invoice will have same amount as the order) +descWORKFLOW_TICKET_CREATE_INTERVENTION=On ticket creation, automatically create an intervention. +# Autoclassify customer proposal or order +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classify linked source proposal as billed when sales order is set to billed (and if the amount of the order is the same as the total amount of the signed linked proposal) +descWORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL=Classify linked source proposal as billed when customer invoice is validated (and if the amount of the invoice is the same as the total amount of the signed linked proposal) +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classify linked source sales order as billed when customer invoice is validated (and if the amount of the invoice is the same as the total amount of the linked order) +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classify linked source sales order as billed when customer invoice is set to paid (and if the amount of the invoice is the same as the total amount of the linked order) +descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classify linked source sales order as shipped when a shipment is validated (and if the quantity shipped by all shipments is the same as in the order to update) +descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED=Classify linked source sales order as shipped when a shipment is closed (and if the quantity shipped by all shipments is the same as in the order to update) +# Autoclassify purchase proposal +descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classify linked source vendor proposal as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked proposal) +# Autoclassify purchase order +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER=Classify linked source purchase order as billed when vendor invoice is validated (and if the amount of the invoice is the same as the total amount of the linked order) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION=Classify linked source purchase order as received when a reception is validated (and if the quantity received by all receptions is the same as in the purchase order to update) +descWORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED=Classify linked source purchase order as received when a reception is closed (and if the quantity received by all rceptions is the same as in the purchase order to update) +# Autoclassify purchase invoice +descWORKFLOW_BILL_ON_RECEPTION=Classify receptions to "billed" when a linked supplier order is validated +# Automatically link ticket to contract +descWORKFLOW_TICKET_LINK_CONTRACT=When creating a ticket, link available contracts of matching thirdparty +descWORKFLOW_TICKET_USE_PARENT_COMPANY_CONTRACTS=When linking contracts, search among those of parents companies +# Autoclose intervention +descWORKFLOW_TICKET_CLOSE_INTERVENTION=Close all interventions linked to the ticket when a ticket is closed +AutomaticCreation=Automatic creation +AutomaticClassification=Automatic classification +# Autoclassify shipment +descWORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE=Classify linked source shipment as closed when customer invoice is validated +AutomaticClosing=Automatic closing +AutomaticLinking=Automatic linking diff --git a/htdocs/langs/ms_MY/zapier.lang b/htdocs/langs/ms_MY/zapier.lang new file mode 100644 index 00000000000..b4cc4ccba4a --- /dev/null +++ b/htdocs/langs/ms_MY/zapier.lang @@ -0,0 +1,21 @@ +# Copyright (C) 2019 Frédéric FRANCE +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# 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 . + +ModuleZapierForDolibarrName = Zapier for Dolibarr +ModuleZapierForDolibarrDesc = Zapier for Dolibarr module +ZapierForDolibarrSetup=Setup of Zapier for Dolibarr +ZapierDescription=Interface with Zapier +ZapierAbout=About the module Zapier +ZapierSetupPage=There is no need for a setup on Dolibarr side to use Zapier. However, you must generate and publish a package on zapier to be able to use Zapier with Dolibarr. See documentation on this wiki page. diff --git a/htdocs/langs/my_MM/errors.lang b/htdocs/langs/my_MM/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/my_MM/errors.lang +++ b/htdocs/langs/my_MM/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/my_MM/externalsite.lang b/htdocs/langs/my_MM/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/my_MM/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/my_MM/ftp.lang b/htdocs/langs/my_MM/ftp.lang deleted file mode 100644 index 254a2a698ce..00000000000 --- a/htdocs/langs/my_MM/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP or SFTP Client module setup -NewFTPClient=New FTP/FTPS connection setup -FTPArea=FTP/FTPS Area -FTPAreaDesc=This screen shows a view of an FTP et SFTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions -FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP/SFTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/nb_NO/accountancy.lang b/htdocs/langs/nb_NO/accountancy.lang index 2797847c77a..10311886263 100644 --- a/htdocs/langs/nb_NO/accountancy.lang +++ b/htdocs/langs/nb_NO/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Deaktiver direkteregistrering av transaksjoner på ban ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Aktiver eksportutkast i journal ACCOUNTANCY_COMBO_FOR_AUX=Enable combo list for subsidiary account (may be slow if you have a lot of third parties, break ability to search on a part of value) ACCOUNTING_DATE_START_BINDING=Definer en dato for å starte binding og overføring i regnskap. Etter denne datoen vil ikke transaksjonene bli overført til regnskap. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Velg regnskapsvisning som standard ved overføring av regnskap +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Salgsjournal ACCOUNTING_PURCHASE_JOURNAL=Innkjøpsjournal @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Regnskapskonto for registrering av donasjoner ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Regnskapskonto for å registrere abonnementer ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Regnskapskonto som standard for å registrere kundeinnskudd -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Regnskapskonto som standard for de kjøpte varene (brukt hvis ikke definert i produktarket) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Regnskapskonto som standard for kjøpte produkter i EU (brukt hvis ikke definert i produktarket) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Hvis du setter opp regnskapskonto med type utgiftsra DescVentilDoneExpenseReport=Liste over utgiftsrapport-linjer og tilhørende gebyr-regnskapskonto Closure=Årsavslutning -DescClosure=Consult here the number of movements by month who are not yet validated & locked +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Overview of movements not validated and locked AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorr AccountancyErrorMismatchLetterCode=Mismatch in reconcile code AccountancyErrorMismatchBalanceAmount=Saldoen (%s) er ikke lik 0 AccountancyErrorLetteringBookkeeping=Det har oppstått feil angående transaksjonene: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Regnskapsposter diff --git a/htdocs/langs/nb_NO/admin.lang b/htdocs/langs/nb_NO/admin.lang index 5243697bdc5..17d28118b68 100644 --- a/htdocs/langs/nb_NO/admin.lang +++ b/htdocs/langs/nb_NO/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Neste verdi (erstatninger) MustBeLowerThanPHPLimit=Merk: PHP-konfigurasjonen din begrenser for øyeblikket maksimalt filstørrelse for opplasting til %s %s, uavhengig av verdien til denne parameteren NoMaxSizeByPHPLimit=Merk: Det er ikke satt noen begrensninger i din PHP-konfigurasjon på denne serveren MaxSizeForUploadedFiles=Maksimal filstørrelse for opplasting av filer (0 for å ikke tillate opplasting) -UseCaptchaCode=Bruk Capthca på innloggingsside +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Full sti til antivirus kommandoen AntiVirusCommandExample=Eksempel for ClamAv Daemon (krever clamav-daemon): /usr/bin/clamdscan
Eksempel på ClamWin (veldig veldig treg): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Flere parametre på kommandolinjen @@ -504,7 +504,7 @@ WarningPHPMailC=- Ved å bruke SMTP-serveren til din egen e-posttjenesteleverand WarningPHPMailD=Det anbefales derfor også å endre sendingsmetoden for e-post til verdien "SMTP". Hvis du virkelig vil beholde standard "PHP"-metoden for å sende e-poster, bare ignorer denne advarselen, eller fjern den ved å sette MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP konstant til 1 i Hjem - Oppsett - Annet. WarningPHPMail2=Hvis din epost-SMTP-leverandør må begrense epostklienten til noen IP-adresser (svært sjelden), er dette IP-adressen til epost-brukeragenten (MUA) for ERP CRM-programmet: %s . WarningPHPMailSPF=Hvis domenenavnet i avsenderens e-postadresse er beskyttet av en SPF-post (spør domenenavnsregistratoren), må du legge til følgende IP-er i SPF-posten til DNS-en til domenet ditt: %s . -ActualMailSPFRecordFound=Faktisk SPF-post funnet: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klikk for å vise beskrivelse DependsOn=Denne modulen trenger modulen(ene) RequiredBy=Denne modulen er påkrevd av modul(ene) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Verdien av en konfigurasjonskonstant ConstantIsOn=Alternativ %s er på NbOfDays=Antall dager AtEndOfMonth=Ved månedsslutt -CurrentNext=Nåværende/Neste +CurrentNext=A given day in month Offset=Forskyvning AlwaysActive=Alltid aktiv Upgrade=Oppgrader @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Trykk CTRL+F5 på tastaturet eller tøm nettlesercache NotSupportedByAllThemes=Vil virke med kjernetemaer, vil kanskje ikke virke med eksterne temaer BackgroundColor=Bakgrunnsfarge TopMenuBackgroundColor=Bakgrunnsfarge for toppmeny -TopMenuDisableImages=Skjul bilder i toppmeny +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Bakgrunnsfarge for venstre meny BackgroundTableTitleColor=Bakgrunnsfarge for tittellinje i tabellen BackgroundTableTitleTextColor=Tekstfarge for tabellens tittellinje @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Merk: Muligheten til å bruke MVA er satt til Av Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Ingen ny e-post (matchende filtre) å behandle NothingProcessed=Ingenting gjort -XEmailsDoneYActionsDone=%s e-postmeldinger kvalifiserte, %s e-postmeldinger som er vellykket behandlet (for %s-post/handlinger utført) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Ta opp en hendelse i agendaen (med typen E-post sendt eller mottatt) CreateLeadAndThirdParty=Opprett et lead (og en tredjepart om nødvendig) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Mal for e-post EMailsWillHaveMessageID=E-postmeldinger vil være merket 'Referanser' som samsvarer med denne syntaksen PDF_SHOW_PROJECT=Vis prosjekt på dokument ShowProjectLabel=Prosjektetikett +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Hvis du vil at tekst i PDF-en din skal dupliseres på 2 forskjellige språk i samme genererte PDF, må du angi dette andre språket, slik at generert PDF vil inneholde 2 forskjellige språk på samme side, det som er valgt når du genererer PDF og dette ( bare få PDF-maler støtter dette). Hold tom for ett språk per PDF. PDF_USE_A=Lag PDF-dokumenter med PDF/A-format i stedet for standard-PDF FafaIconSocialNetworksDesc=Skriv inn koden til et FontAwesome-ikon. Hvis du ikke vet hva som er FontAwesome, kan du bruke den generelle verdien fa-adresseboken. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Oppsett av varetelling ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Innstillinger +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Ikon og tekst TextOnly=Kun tekst IconOnlyAllTextsOnHover=Bare ikon - Alle tekster vises under ikonet når musepekeren er over menylinjen @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Bare ikon - Teksten til ikonet vises under ikonet når musep IconOnly=Kun ikon - Kun tekst på verktøytips INVOICE_ADD_ZATCA_QR_CODE=Vis ZATCA QR-koden på fakturaer INVOICE_ADD_ZATCA_QR_CODEMore=Noen arabiske land trenger denne QR-koden på fakturaene sine +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=URL-lenke til sosialt nettverk. Bruk {socialid} for den variable delen som inneholder ID-en for det sosiale nettverket. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/nb_NO/companies.lang b/htdocs/langs/nb_NO/companies.lang index db663bd7b1e..6e92a231b3f 100644 --- a/htdocs/langs/nb_NO/companies.lang +++ b/htdocs/langs/nb_NO/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Tredjeparts art NatureOfContact=Kontaktens art Address=Adresse State=Fylke(delstat) +StateId=State ID StateCode=Stat-/provinskode StateShort=Stat Region=Region Region-State=Region - Stat Country=Land CountryCode=Landskode -CountryId=Land-ID +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Handelsregister ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Andre ProfId6ShortCM=- ProfId1CO=Prof ID 1 (RUT) diff --git a/htdocs/langs/nb_NO/errors.lang b/htdocs/langs/nb_NO/errors.lang index e97723984b2..525af6048b7 100644 --- a/htdocs/langs/nb_NO/errors.lang +++ b/htdocs/langs/nb_NO/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript må være aktivert for å kunne bruke de ErrorPasswordsMustMatch=Passordene må samsvare med hverandre ErrorContactEMail=En teknisk feil oppsto. Vennligst kontakt administrator på e-post %s og oppgi feilkoden %s i meldingen, eller legg til en skjermdump av denne siden. ErrorWrongValueForField=Felt %s : ' %s ' stemmer ikke overens med regexregel %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Felt %s : ' %s ' er ikke en verdi funnet i felt %s av %s ErrorFieldRefNotIn=Felt %s : ' %s ' er ikke en %s eksisterende ref ErrorsOnXLines=%s feil funnet @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Du må først konfigurere kontoplanen d ErrorFailedToFindEmailTemplate=Kunne ikke finne mal med kodenavn %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Varighet ikke definert på tjenesten. Ingen måte å beregne timeprisen. ErrorActionCommPropertyUserowneridNotDefined=Brukerens eier kreves -ErrorActionCommBadType=Valgt hendelsestype (id: %n, kode: %s) finnes ikke i ordboken for hendelsestype +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Versjonskontroll mislyktes ErrorWrongFileName=Navnet på filen kan ikke inneholde __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Ikke i ordboken for betalingsvilkår, vennligst endre. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Feil, alle beløp må legges inn i samme kolonne ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Du prøver å betale fakturaer i valutaen %s fra en konto med valutaen %s ErrorInvoiceLoadThirdParty=Kan ikke laste inn tredjepartsobjekt for faktura "%s" ErrorInvoiceLoadThirdPartyKey=Tredjepartsnøkkel "%s" ikke angitt for faktura "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Slett linje er ikke tillatt av faktisk objektstatus +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=Forespørsel feilet +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP-parameteren upload_max_filesize (%s) er høyere enn PHP-parameteren post_max_size (%s). Dette er ikke et konsistent oppsett. WarningPasswordSetWithNoAccount=Et passord ble satt for dette medlemmet, men ingen brukerkonto ble opprettet. Det fører til at passordet ikke kan benyttes for å logge inn på Dolibarr. Det kan brukes av en ekstern modul/grensesnitt, men hvis du ikke trenger å definere noen innlogging eller passord for et medlem, kan du deaktivere alternativet "opprett en pålogging for hvert medlem" fra medlemsmodul-oppsettet. Hvis du trenger å administrere en pålogging, men ikke trenger noe passord, kan du holde dette feltet tomt for å unngå denne advarselen. Merk: E-post kan også brukes som en pålogging dersom medlemmet er knyttet til en bruker. -WarningMandatorySetupNotComplete=Klikk her for å sette opp obligatoriske parametere +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Klikk her for å aktivere modulene og applikasjonene dine WarningSafeModeOnCheckExecDir=Advarsel, PHP alternativet safe_mode er på så kommandere må lagres i en mappe erklært av php parameter safe_mode_exec_dir. WarningBookmarkAlreadyExists=Et bokmerke med denne tittelen eller denne URL'en eksisterer fra før. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Advarsel, du kan ikke opprette en underkonto direkte, d WarningAvailableOnlyForHTTPSServers=Bare tilgjengelig hvis du bruker HTTPS-sikret tilkobling. WarningModuleXDisabledSoYouMayMissEventHere=Modul %s er ikke aktivert, så du kan gå glipp av mange hendelser her. WarningPaypalPaymentNotCompatibleWithStrict=Verdien 'Strict' gjør at betalingsfunksjonene på nettet ikke fungerer som de skal. Bruk 'Lax' i stedet. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Verdien er ikke gyldig RequireAtLeastXString = Krever minst %s tegn @@ -347,12 +347,3 @@ BadSetupOfField = Feil oppsett av felt BadSetupOfFieldClassNotFoundForValidation = Feil oppsett av felt: Klasse ikke funnet for validering BadSetupOfFieldFileNotFound = Feil oppsett av felt: Filen ble ikke funnet for inkludering BadSetupOfFieldFetchNotCallable = Feil oppsett av felt: Henting kan ikke kalles på klasse -<<<<<<< HEAD -======= -======= -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/nb_NO/externalsite.lang b/htdocs/langs/nb_NO/externalsite.lang deleted file mode 100644 index 33870ea4a45..00000000000 --- a/htdocs/langs/nb_NO/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Oppsett av lenke til ekstern nettside -ExternalSiteURL=URL for eksternt nettsted for HTML iframe-innhold -ExternalSiteModuleNotComplete=Modulen Ekstern Side ble ikke riktig konfigurert. -ExampleMyMenuEntry=Meny overskrift diff --git a/htdocs/langs/nb_NO/ftp.lang b/htdocs/langs/nb_NO/ftp.lang deleted file mode 100644 index ea8d66feb00..00000000000 --- a/htdocs/langs/nb_NO/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Oppset av FTP-klient modulen -NewFTPClient=Nytt oppsett av FTP- tilkobling -FTPArea=FTP område -FTPAreaDesc=Denne skjermen viser innholdet på en FTP server visning -SetupOfFTPClientModuleNotComplete=Oppsett av FTP-klient modul synes å være ufullstendig -FTPFeatureNotSupportedByYourPHP=Din PHP støtter ikke FTP-funksjoner -FailedToConnectToFTPServer=Kunne ikke koble til FTP-server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Klarte ikke å logge inn på FTP-server med angitt brukernavn og passord -FTPFailedToRemoveFile=Klarte ikke å fjerne filen %s. -FTPFailedToRemoveDir=Kunne ikke fjerne katalogen %s (Sjekk tillatelser, og at katalogen er tom). -FTPPassiveMode=Passiv modus -ChooseAFTPEntryIntoMenu=Velg FTP i meny... -FailedToGetFile=Kunne ikke hente filene %s diff --git a/htdocs/langs/nb_NO/hrm.lang b/htdocs/langs/nb_NO/hrm.lang index 15245345151..2d214e6d142 100644 --- a/htdocs/langs/nb_NO/hrm.lang +++ b/htdocs/langs/nb_NO/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Åpne firma CloseEtablishment=Lukk firma # Dictionary DictionaryPublicHolidays=Permisjon - helligdager -DictionaryDepartment=HRM - Departementliste +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Jobbstillinger # Module Employees=Ansatte @@ -70,9 +70,9 @@ RequiredSkills=Nødvendig kompetanse for denne jobben UserRank=Brukerrangering SkillList=Ferdighetsliste SaveRank=Lagre rangering -knowHow=Know how -HowToBe=How to be -knowledge=Kunnskap +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Kunnskap AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=Ingen evaluering gjort for denne ansatte @@ -88,3 +88,4 @@ DeleteSkill = Skill removed SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/nb_NO/install.lang b/htdocs/langs/nb_NO/install.lang index c6833cd2b5d..4605a2e999d 100644 --- a/htdocs/langs/nb_NO/install.lang +++ b/htdocs/langs/nb_NO/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurasjonsfil %s er ikke skrivbar. Sjekk tillat ConfFileIsWritable=Konfigurasjonsfil %s er skrivbar. ConfFileMustBeAFileNotADir=Konfigurasjonsfil %s må være en fil, ikke en katalog. ConfFileReload=Laster parametere fra konfigurasjonsfilen på nytt. -NoReadableConfFileSoStartInstall=Konfigurasjonsfilen conf/conf.php eksisterer ikke eller kan ikke gjenopprettes. Vi kjører installasjonsprosessen for å prøve å initialisere den. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Dette PHP støtter variablene POST og GET. PHPSupportPOSTGETKo=Det er mulig at ditt PHP-oppsett ikke støtter variablene POST og/eller GET. Sjekk parametrene variables_order i php.ini. PHPSupportSessions=Denne PHP støtter sesjoner. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Du har kanskje skrevet feil verdi for parameteren '% ErrorFailedToCreateDatabase=Kunne ikke opprette database '%s'. ErrorFailedToConnectToDatabase=Kunne ikke koble til database '%s'. ErrorDatabaseVersionTooLow=Databaseversjonen (%s) er for gammel. Versjon %s eller senere kreves -ErrorPHPVersionTooLow=PHP-versjonen er for gammel. Versjon %s er nødvendig. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Tilkobling til server vellykket, men database '%s' ikke funnet. ErrorDatabaseAlreadyExists=Database '%s' finnes allerede. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Hvis databasen ikke finnes, gå tilbake og kryss av alternativet "Opprett database". IfDatabaseExistsGoBackAndCheckCreate=Hvis databasen allerede eksisterer, gå tilbake og fjern "Opprett database" alternativet. WarningBrowserTooOld=Nettleseren din er utdatert. Det anbefales å oppgradere til siste versjon av Firefox, Chrome eller Opera. diff --git a/htdocs/langs/nb_NO/knowledgemanagement.lang b/htdocs/langs/nb_NO/knowledgemanagement.lang index 4af30dc25a0..2d394ad0ac9 100644 --- a/htdocs/langs/nb_NO/knowledgemanagement.lang +++ b/htdocs/langs/nb_NO/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artikler KnowledgeRecord = Artikkel KnowledgeRecordExtraFields = Ekstra felt for artikkel GroupOfTicket=Billettgrupper -YouCanLinkArticleToATicketCategory=Du kan koble en artikkel til en billettgruppe (artikkelen vil bli foreslått under kvalifisering av nye billetter) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Foreslått for billetter når gruppen er SetObsolete=Angi som foreldet diff --git a/htdocs/langs/nb_NO/loan.lang b/htdocs/langs/nb_NO/loan.lang index 3950d015409..9c048550be7 100644 --- a/htdocs/langs/nb_NO/loan.lang +++ b/htdocs/langs/nb_NO/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Finansiell forpliktelse InterestAmount=Rente CapitalRemain=Gjenstående kapital TermPaidAllreadyPaid = Denne terminen er allerede betalt -CantUseScheduleWithLoanStartedToPaid = Kan ikke bruke planlegger for et lån med startet betaling +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Du kan ikke endre rente hvis du bruker tidsplan # Admin ConfigLoan=Oppset av lån-modulen diff --git a/htdocs/langs/nb_NO/main.lang b/htdocs/langs/nb_NO/main.lang index a685755c59d..002c7a202be 100644 --- a/htdocs/langs/nb_NO/main.lang +++ b/htdocs/langs/nb_NO/main.lang @@ -345,7 +345,7 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Opprettet av +UserAuthor=Laget av UserModif=Oppdatert av b=b. Kb=Kb @@ -712,6 +712,7 @@ FeatureDisabled=Funksjonen er slått av MoveBox=Flytt widget Offered=Tilbudt NotEnoughPermissions=Du har ikke tillatelse til å gjøre denne handlingen +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Sesjonnavn Method=Metode Receive=Motta @@ -801,6 +802,7 @@ URLPhoto=Url til bilde/logo SetLinkToAnotherThirdParty=Link til en annen tredjepart LinkTo=Lenke til LinkToProposal=Lenke til tilbud +LinkToExpedition= Link to expedition LinkToOrder=Lenke til ordre LinkToInvoice=Lenke til faktura LinkToTemplateInvoice=Link til fakturamal @@ -1174,6 +1176,7 @@ ConfirmAllocateCommercial=Assign sales representative confirmation ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? CommercialsAffected=Sales representatives affected CommercialAffected=Sales representative affected -YourMessage=Din melding +YourMessage=Your message YourMessageHasBeenReceived=Meldingen din er mottatt. Vi vil svare eller kontakte deg så snart som mulig. UrlToCheck=URL for å sjekke +Automation=Automation diff --git a/htdocs/langs/nb_NO/members.lang b/htdocs/langs/nb_NO/members.lang index a461ba8ceda..38b4a1e2029 100644 --- a/htdocs/langs/nb_NO/members.lang +++ b/htdocs/langs/nb_NO/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Medlems-ID +MemberId=Member Id +MemberRef=Member Ref NewMember=Nytt medlem MemberType=Medlemstype MemberTypeId=Medlemstype-ID diff --git a/htdocs/langs/nb_NO/oauth.lang b/htdocs/langs/nb_NO/oauth.lang index f043acab01d..81368517bff 100644 --- a/htdocs/langs/nb_NO/oauth.lang +++ b/htdocs/langs/nb_NO/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=En nøkkel ble generert og lagret i lokal database NewTokenStored=Nøkkel mottatt og lagret ToCheckDeleteTokenOnProvider=Klikk her for å hake av/slette autorisasjon lagret av %s OAuth-leverandør TokenDeleted=Nøkkel slettet -RequestAccess=Klikk her for forespørsel/fornyet adgang og motta ny nøkkel +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Klikk her for å slette nøkkel UseTheFollowingUrlAsRedirectURI=Bruk følgende URL som redirect-URL når du lager din legitimasjon hos din OAuth tilbyder -ListOfSupportedOauthProviders=Legg inn opplysninger fra din OAuth2-leverandør. Kun supporterte OAuth2-leverandører vises her. Dette oppsettet kan bli brukt av andre moduler som trenger OAuth2-autentisering -OAuthSetupForLogin=Side for å generere en OAuth-nøkkel +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Se forrige fane +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID og hemmelig spørsmål TOKEN_REFRESH=Nøkkeloppfriskning tilstede TOKEN_EXPIRED=Nøkkel utgått @@ -23,10 +24,13 @@ TOKEN_DELETE=Slett lagret nøkkel OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google ID OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Gå til denne siden og deretter "Påloggingsinformasjon" for å opprette OAuth-legitimasjon OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub ID OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Gå til denne siden og deretter "Registrer en ny søknad" for å opprette OAuth-legitimasjon +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/nb_NO/other.lang b/htdocs/langs/nb_NO/other.lang index 7304d845cb5..c797e66b27f 100644 --- a/htdocs/langs/nb_NO/other.lang +++ b/htdocs/langs/nb_NO/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Are you sure you want to "%s" ? ConfirmBtnCommonTitle = Confirm your action CloseDialog = Lukk Autofill = Autofill + +# externalsite +ExternalSiteSetup=Oppsett av lenke til ekstern nettside +ExternalSiteURL=URL for eksternt nettsted for HTML iframe-innhold +ExternalSiteModuleNotComplete=Modulen Ekstern Side ble ikke riktig konfigurert. +ExampleMyMenuEntry=Meny overskrift + +# FTP +FTPClientSetup=Modul for oppsett av FTP- eller SFTP-klient +NewFTPClient=Nytt FTP / FTPS-tilkoblingsoppsett +FTPArea=FTP/FTPS-område +FTPAreaDesc=Dette skjermbildet viser en FTP et SFTP-server. +SetupOfFTPClientModuleNotComplete=Installasjonen av FTP- eller SFTP-klientmodulen ser ut til å være ufullstendig +FTPFeatureNotSupportedByYourPHP=Din PHP støtter ikke FTP- eller SFTP-funksjoner +FailedToConnectToFTPServer=Kunne ikke koble til serveren (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Kunne ikke logge inn på serveren med definert innlogging/passord +FTPFailedToRemoveFile=Klarte ikke å fjerne filen %s. +FTPFailedToRemoveDir=Kunne ikke fjerne katalogen %s : Kontroller tillatelser og at katalogen er tom. +FTPPassiveMode=Passiv modus +ChooseAFTPEntryIntoMenu=Velg et FTP/SFTP-nettsted fra menyen ... +FailedToGetFile=Kunne ikke hente filene %s diff --git a/htdocs/langs/nb_NO/stocks.lang b/htdocs/langs/nb_NO/stocks.lang index 6ad2315b946..f0230b8431c 100644 --- a/htdocs/langs/nb_NO/stocks.lang +++ b/htdocs/langs/nb_NO/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Lager-ID WarehouseRef=Lager Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Startet ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requ StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Innstillinger +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/nb_NO/ticket.lang b/htdocs/langs/nb_NO/ticket.lang index 203e5da2ac4..bc9e688db75 100644 --- a/htdocs/langs/nb_NO/ticket.lang +++ b/htdocs/langs/nb_NO/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Et offentlig grensesnitt som ikke krever identifikasjon er ti TicketSetupDictionaries=Typen av billett, alvorlighetsgrad og analytiske koder kan konfigureres fra ordbøker TicketParamModule=Oppsett av modulvariabler TicketParamMail=Epostoppsett -TicketEmailNotificationFrom=Avsender e-post for billettsvar -TicketEmailNotificationFromHelp=Avsender e-post for billettsvar sendt fra Dolibarr +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Gi beskjed om opprettelse av billett til denne e-postadressen TicketEmailNotificationToHelp=Hvis tilstede, vil denne e-postadressen bli varslet om en billettoppretting TicketNewEmailBodyLabel=Tekstmelding sendt etter å ha opprettet en billett diff --git a/htdocs/langs/ne_NP/errors.lang b/htdocs/langs/ne_NP/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/ne_NP/errors.lang +++ b/htdocs/langs/ne_NP/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/ne_NP/externalsite.lang b/htdocs/langs/ne_NP/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/ne_NP/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/ne_NP/ftp.lang b/htdocs/langs/ne_NP/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/ne_NP/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/nl_BE/admin.lang b/htdocs/langs/nl_BE/admin.lang index d2ea70a9426..96b867163c0 100644 --- a/htdocs/langs/nl_BE/admin.lang +++ b/htdocs/langs/nl_BE/admin.lang @@ -238,13 +238,11 @@ BillsPDFModules=Factuur documentsjablonen LDAPGlobalParameters=Globale instellingen LDAPPassword=Beheerderswachtwoord SalariesSetup=Setup van module salarissen -TopMenuDisableImages=Hide images in Top menu MailToSendProposal=Klant voorstellen MailToSendInvoice=Klantfacturen MailToSendReception=Ontvangen MailToThirdparty=Klant AddBoxes=Widgets toevoegen -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. GeneralOptions=Algemene opties ExportSetup=Installatie van module Exporteren diff --git a/htdocs/langs/nl_BE/companies.lang b/htdocs/langs/nl_BE/companies.lang index 5a8e8bed973..162da73b1d5 100644 --- a/htdocs/langs/nl_BE/companies.lang +++ b/htdocs/langs/nl_BE/companies.lang @@ -35,8 +35,6 @@ SupplierCodeModel=Leverancierscode-model ProfId6=Professionele ID 6 ProfId2AR=Prof Id 2 (Inkomsten voor belastingen) ProfId3CH=Prof id 1 (Federaal nummer) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId3ShortCM=Decree of creation ProfId2ES=Prof Id 2 (INSZ-nummer) ProfId1LU=Prof. Id. 1 (R.S.C. Luxemburg) ProfId2LU=Prof. Id. 2 (zakelijke vergunning) diff --git a/htdocs/langs/nl_BE/externalsite.lang b/htdocs/langs/nl_BE/externalsite.lang deleted file mode 100644 index 4f3aab4c69f..00000000000 --- a/htdocs/langs/nl_BE/externalsite.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link naar externe website -ExternalSiteModuleNotComplete=Module ExternalSite werd niet correct geconfigureerd. diff --git a/htdocs/langs/nl_BE/ftp.lang b/htdocs/langs/nl_BE/ftp.lang deleted file mode 100644 index df4c0ad6757..00000000000 --- a/htdocs/langs/nl_BE/ftp.lang +++ /dev/null @@ -1,3 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -ChooseAFTPEntryIntoMenu=Kies een FTP toegang in het menu... -FailedToGetFile=Mislukt om de bestanden te ontvangen %s diff --git a/htdocs/langs/nl_BE/hrm.lang b/htdocs/langs/nl_BE/hrm.lang index a8577d55908..cf330ae1f6d 100644 --- a/htdocs/langs/nl_BE/hrm.lang +++ b/htdocs/langs/nl_BE/hrm.lang @@ -7,5 +7,4 @@ DeleteEstablishment=Verwijderen inrichting ConfirmDeleteEstablishment=Weet U zeker dat U deze inrichting wilt verwijderen ? OpenEtablishment=Open inrichting CloseEtablishment=Sluit inrichting -DictionaryDepartment=HRM - afdelingen lijst ListOfEmployees=Lijst van werknemers diff --git a/htdocs/langs/nl_BE/main.lang b/htdocs/langs/nl_BE/main.lang index cb91c64d6a6..f6d2fa70c33 100644 --- a/htdocs/langs/nl_BE/main.lang +++ b/htdocs/langs/nl_BE/main.lang @@ -62,6 +62,7 @@ UserCreationShort=Creat. gebruiker UserModificationShort=Modif. gebruiker UserValidationShort=Geldig. gebruiker CurrencyRate=Wisselkoers van valuta +UserAuthor=Gemaakt door Amount=Hoeveelheid MulticurrencyRemainderToPay=Blijf betalen, oorspronkelijke valuta MulticurrencyAmountHT=Bedrag (excl. Btw), oorspronkelijke valuta diff --git a/htdocs/langs/nl_BE/members.lang b/htdocs/langs/nl_BE/members.lang index 89979e6cc3a..deae7d94f52 100644 --- a/htdocs/langs/nl_BE/members.lang +++ b/htdocs/langs/nl_BE/members.lang @@ -1,2 +1,13 @@ # Dolibarr language file - Source file is en_US - members +MemberCard=Lidmaatschapskaart +ShowMember=Toon lidmaatschapskaart +FundationMembers=Stichtingsleden / -donateurs +SetLinkToUser=Link naar een Dolibarr gebruiker MemberStatusDraft=Conceptfactuur (moet worden gevalideerd) +NewSubscriptionDesc=Met dit formulier kunt u uw abonnement te nemen als nieuw lid van de stichting. Wilt u uw abonnement te verlengen (indien reeds lid is), dan kunt u in plaats daarvan contact op met stichtingsbestuur via e-mail %s. +AddMember=Creeer lid +NoTypeDefinedGoToSetup=Geen lidtypes ingesteld. Ga naar Home->Setup->Ledentypes +PublicMemberCard=Publieke lidmaatschapskaart +MembersStatisticsByState=Leden statistieken per staat / provincie +MembersStatisticsDesc=Kies de statistieken die u wilt lezen ... +TurnoverOrBudget=Omzet (voor een bedrijf) of Budget (voor een stichting) diff --git a/htdocs/langs/nl_NL/accountancy.lang b/htdocs/langs/nl_NL/accountancy.lang index 20b781bc8a9..9945045a4af 100644 --- a/htdocs/langs/nl_NL/accountancy.lang +++ b/htdocs/langs/nl_NL/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Rechtstreeks boeken van transactie in bankboek uitzett ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Schakel concept export van het journaal in ACCOUNTANCY_COMBO_FOR_AUX=Schakel combolijst in voor dochteronderneming-account (kan traag zijn als je veel derden hebt, verbreek de mogelijkheid om op een deel van de waarde te zoeken) ACCOUNTING_DATE_START_BINDING=Definieer een startdatum voor het koppelen en doorboeken naar de boekhouding. Transacties voor deze datum worden niet doorgeboekt naar de boekhouding. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Selecteer bij boekhoudkundige overdracht standaard periodeweergave +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Verkoopboek ACCOUNTING_PURCHASE_JOURNAL=Inkoopboek @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Grootboeknummer voor donaties ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Grootboekrekening om abonnementen te registreren ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Standaard grootboekrekening voor storting door klant -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Standaard grootboekrekening voor de gekochte producten (gebruikt indien niet gedefinieerd in de productfiche) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Grootboekrekening standaard voor de gekochte producten binnen de EU (gebruikt indien niet gedefinieerd in het productblad) @@ -271,7 +271,7 @@ DescVentilDoneCustomer=Bekijk hier de lijst met factuurregels en hun grootboekre DescVentilTodoCustomer=Koppel factuurregels welke nog niet verbonden zijn met een product grootboekrekening ChangeAccount=Wijzig de product/dienst grootboekrekening voor geselecteerde regels met de volgende grootboekrekening: Vide=- -DescVentilSupplier=Raadpleeg hier de lijst met leveranciers-factuurregels die al dan niet zijn gekoppeld aan een product-grootboekrekening (alleen records die nog niet zijn overgedragen in de boekhouding zijn zichtbaar) +DescVentilSupplier=Raadpleeg hier de lijst met leverancier factuurregels die al dan niet zijn gekoppeld aan een productgrootboekrekening (alleen mutaties die nog niet zijn doorgeboekt in de boekhouding zijn zichtbaar) DescVentilDoneSupplier=Raadpleeg hier de regels van de leveranciers facturen en hun tegenrekening DescVentilTodoExpenseReport=Koppel kosten-boekregels aan grootboekrekeningen welke nog niet zijn vastgelegd DescVentilExpenseReport=Hier kunt u de lijst raadplegen van kostenregels om te koppelen aan een grootboekrekening (of niet). @@ -279,10 +279,10 @@ DescVentilExpenseReportMore=Als u een account instelt op het type onkostendeclar DescVentilDoneExpenseReport=Hier kunt u de lijst raadplegen van kostenregels met hun tegenrekening Closure=Jaarafsluiting -DescClosure=Consult here the number of movements by month who are not yet validated & locked -OverviewOfMovementsNotValidated=Overview of movements not validated and locked -AllMovementsWereRecordedAsValidated=All movements were recorded as validated and locked -NotAllMovementsCouldBeRecordedAsValidated=Not all movements could be recorded as validated and locked +DescClosure=Consult here the number of movements by month not yet validated & locked +OverviewOfMovementsNotValidated=Overzicht van bewegingen niet gevalideerd en vergrendeld +AllMovementsWereRecordedAsValidated=Alle bewegingen werden geregistreerd als gevalideerd en vergrendeld +NotAllMovementsCouldBeRecordedAsValidated=Niet alle bewegingen konden als gevalideerd en vergrendeld worden geregistreerd ValidateMovements=Valideer wijzigingen DescValidateMovements=Elke wijziging of verwijdering van inboeken, afletteren en verwijderingen is verboden. Alle boekingen moeten worden gevalideerd, anders is afsluiten niet mogelijk @@ -290,7 +290,7 @@ ValidateHistory=Automatisch boeken AutomaticBindingDone=Automatische bindings uitgevoerd (%s) - Automatische binding was niet mogelijk voor record (%s) ErrorAccountancyCodeIsAlreadyUse=Fout. U kunt geen grootboekrekening verwijderen welke in gebruik is. -MvtNotCorrectlyBalanced=Movement not correctly balanced. Debit = %s & Credit = %s +MvtNotCorrectlyBalanced=Beweging niet correct gebalanceerd. Debet = %s & Credit = %s Balancing=Balansen FicheVentilation=Koppelen card GeneralLedgerIsWritten=Grootboek transacties @@ -303,7 +303,7 @@ NotYetAccounted=Nog niet overgezet naar boekhouding ShowTutorial=Handleiding weergeven NotReconciled=Niet afgestemd WarningRecordWithoutSubledgerAreExcluded=Pas op, alle bewerkingen zonder gedefinieerde sub grootboekrekening worden gefilterd en uitgesloten van deze weergave -AccountRemovedFromCurrentChartOfAccount=Accounting account that does not exist in the current chart of accounts +AccountRemovedFromCurrentChartOfAccount=Boekhoudrekening die niet bestaat in het huidige rekeningschema ## Admin BindingOptions=Koppelmogelijkheden @@ -398,19 +398,19 @@ Calculated=Berekend Formula=Formule ## Reconcile -Unlettering=Unreconcile -AccountancyNoLetteringModified=No reconcile modified -AccountancyOneLetteringModifiedSuccessfully=One reconcile successfully modified -AccountancyLetteringModifiedSuccessfully=%s reconcile successfully modified -AccountancyNoUnletteringModified=No unreconcile modified -AccountancyOneUnletteringModifiedSuccessfully=One unreconcile successfully modified -AccountancyUnletteringModifiedSuccessfully=%s unreconcile successfully modified +Unlettering=niet afstemmen +AccountancyNoLetteringModified=Geen afstemming gewijzigd +AccountancyOneLetteringModifiedSuccessfully=Eén afstemming succesvol gewijzigd +AccountancyLetteringModifiedSuccessfully=%s afstemming succesvol gewijzigd +AccountancyNoUnletteringModified=Geen verzoening gewijzigd +AccountancyOneUnletteringModifiedSuccessfully=Eén onafstemming succesvol gewijzigd +AccountancyUnletteringModifiedSuccessfully=%s afstemmen succesvol gewijzigd ## Confirm box -ConfirmMassUnlettering=Bulk Unreconcile confirmation -ConfirmMassUnletteringQuestion=Are you sure you want to Unreconcile the %s selected record(s)? +ConfirmMassUnlettering=Bulk verwijderen afstemming bevestiging +ConfirmMassUnletteringQuestion=Weet u zeker dat u de %s geselecteerde record(s) ongedaan wilt maken? ConfirmMassDeleteBookkeepingWriting=Bevestiging bulk verwijdering -ConfirmMassDeleteBookkeepingWritingQuestion=This will delete the transaction from the accounting (all lines related to the same transaction will be deleted) Are you sure you want to delete the %s selected record(s)? +ConfirmMassDeleteBookkeepingWritingQuestion=Hiermee wordt de transactie uit de boekhouding verwijderd (alle regels die betrekking hebben op dezelfde transactie worden verwijderd) Weet u zeker dat u de geselecteerde record(en) van %s wilt verwijderen? ## Error SomeMandatoryStepsOfSetupWereNotDone=Sommige verplichte stappen zijn nog niet volledig uitgevoerd. Maak deze alsnog. @@ -424,9 +424,10 @@ Binded=Geboekte regels ToBind=Te boeken regels UseMenuToSetBindindManualy=Regels die nog niet zijn gebonden, gebruik het menu %s om de binding handmatig te maken SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Sorry, deze module is niet compatibel met de experimentele functie van situatiefacturen -AccountancyErrorMismatchLetterCode=Mismatch in reconcile code -AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 -AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +AccountancyErrorMismatchLetterCode=Komt niet overeen in afstemmingscode +AccountancyErrorMismatchBalanceAmount=Het saldo (%s) is niet gelijk aan 0 +AccountancyErrorLetteringBookkeeping=Er zijn fouten opgetreden met betrekking tot de transacties: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Boekingen diff --git a/htdocs/langs/nl_NL/admin.lang b/htdocs/langs/nl_NL/admin.lang index 446e8b780ff..4ccc5a9b7d0 100644 --- a/htdocs/langs/nl_NL/admin.lang +++ b/htdocs/langs/nl_NL/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Volgende waarde (vervangingen) MustBeLowerThanPHPLimit=Opmerking: uw PHP-configuratie beperkt momenteel de maximale bestandsgrootte voor uploaden tot %s %s, ongeacht de waarde van deze parameter NoMaxSizeByPHPLimit=Opmerking: Geen limiet ingesteld in uw PHP instellingen MaxSizeForUploadedFiles=Maximale grootte voor geüploade bestanden (0 om uploaden niet toe te staan) -UseCaptchaCode=Gebruik een grafische code (CAPTCHA) op de aanmeldingspagina (SPAM preventie) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Het volledige pad naar het antiviruscommando AntiVirusCommandExample=Voorbeeld voor ClamAv Daemon (vereist clamav-daemon): / usr / bin / clamdscan
Voorbeeld voor ClamWin (erg langzaam): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Aanvullende parameters op de opdrachtregel @@ -504,7 +504,7 @@ WarningPHPMailC=- Het gebruik van de SMTP-server van uw eigen e-mailserviceprovi WarningPHPMailD=Ook is het daarom aan te raden om de verzendmethode van e-mails te wijzigen naar de waarde "SMTP". Als je echt de standaard "PHP"-methode wilt behouden om e-mails te verzenden, negeer deze waarschuwing dan, of verwijder hem door de constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP op 1 te zetten in Startpagina - Instellingen - Overig. WarningPHPMail2=Als uw e-mail SMTP-provider de e-mailclient moet beperken tot bepaalde IP-adressen (zeer zeldzaam), is dit het IP-adres van de mail user agent (MUA) voor uw ERP CRM-toepassing: %s. WarningPHPMailSPF=Als de domeinnaam in je e-mailadres van de afzender beschermd is door een SPF record (vraag je domeinnaam registrar), dan moet je de volgende IP's toevoegen in het SPF record van de DNS van je domein: %s . -ActualMailSPFRecordFound=Werkelijk SPF-record gevonden: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klik voor omschrijving DependsOn=Deze module heeft de module(s) nodig RequiredBy=Deze module is vereist bij module(s) @@ -718,9 +718,9 @@ Permission34=Verwijderen producten / diensten Permission36=Exporteer producten / diensten Permission38=Export producten Permission39=Negeer minimum prijs -Permission41=Read projects and tasks (shared projects and projects of which I am a contact). -Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks -Permission44=Delete projects (shared projects and projects of which I am a contact) +Permission41=Lees projecten en taken (gedeelde projecten en projecten waarvan ik een contactpersoon ben). +Permission42=Aanmaken/wijzigen van projecten (gedeelde projecten en projecten waarvan ik een contactpersoon ben). Kan gebruikers ook toewijzen aan projecten en taken +Permission44=Verwijder projecten (gedeelde projecten en projecten waarvan ik een contactpersoon ben) Permission45=Exporteer projecten Permission61=Bekijk interventies Permission62=Creëer / wijzig interventies @@ -766,10 +766,10 @@ Permission122=Creëer / wijzig derden gelinkt aan gebruiker Permission125=Verwijderen van derden gelinkt aan gebruiker Permission126=Exporteer derden Permission130=Aanmaken/wijzigen van betalingsgegevens van derden -Permission141=Read all projects and tasks (as well as the private projects for which I am not a contact) -Permission142=Create/modify all projects and tasks (as well as the private projects for which I am not a contact) -Permission144=Delete all projects and tasks (as well as the private projects I am not a contact) -Permission145=Can enter time consumed, for me or my hierarchy, on assigned tasks (Timesheet) +Permission141=Lees alle projecten en taken (evenals de privéprojecten waarvoor ik geen contactpersoon ben) +Permission142=Aanmaken/wijzigen van alle projecten en taken (evenals de privéprojecten waarvoor ik geen contactpersoon ben) +Permission144=Verwijder alle projecten en taken (evenals de privéprojecten waar ik geen contact mee ben) +Permission145=Kan de verbruikte tijd voor mij of mijn hiërarchie invoeren voor toegewezen taken (Timesheet) Permission146=Bekijk leveranciers Permission147=Bekijk statistieken Permission151=Inlezen incasso-opdracht @@ -884,9 +884,9 @@ Permission564=Vastleggen verwerkingen/weigeringen van overboekingen Permission601=Lees stickers Permission602=Stickers maken/wijzigen Permission609=Verwijder etiketten -Permission611=Read attributes of variants -Permission612=Create/Update attributes of variants -Permission613=Delete attributes of variants +Permission611=Kenmerken van varianten lezen +Permission612=Kenmerken van varianten maken/bijwerken +Permission613=Kenmerken van varianten verwijderen Permission650=Lees stuklijsten Permission651=Materiaalrekeningen maken / bijwerken Permission652=Materiaalrekeningen verwijderen @@ -973,8 +973,8 @@ Permission4021=Maak/wijzig uw evaluatie Permission4022=Evaluatie valideren Permission4023=Evaluatie verwijderen Permission4030=Zie vergelijkingsmenu -Permission4031=Read personal information -Permission4032=Write personal information +Permission4031=Persoonlijke informatie lezen +Permission4032=Schrijf persoonlijke informatie Permission10001=Lees website-inhoud Permission10002=Website-inhoud maken / wijzigen (HTML- en JavaScript-inhoud) Permission10003=Creëer / wijzig website-inhoud (dynamische php-code). Gevaarlijk, moet worden voorbehouden aan beperkte ontwikkelaars. @@ -1074,7 +1074,7 @@ DictionaryExpenseTaxCat=Onkostenoverzicht - Vervoerscategorieën DictionaryExpenseTaxRange=Onkostenoverzicht - bereik per transportcategorie DictionaryTransportMode=Intracomm rapport - Transportmodus DictionaryBatchStatus=Status product partij/serie kwaliteitscontrole -DictionaryAssetDisposalType=Type of disposal of assets +DictionaryAssetDisposalType=Type vervreemding van activa TypeOfUnit=Type eenheid SetupSaved=Instellingen opgeslagen SetupNotSaved=Installatie niet opgeslagen @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Waarde van een configuratieconstante ConstantIsOn=Optie %s is ingeschakeld NbOfDays=Aantal dagen AtEndOfMonth=Aan het einde van de maand -CurrentNext=Huidige/volgende +CurrentNext=A given day in month Offset=Offset (afstand) AlwaysActive=Altijd actief Upgrade=Bijwerken @@ -1346,7 +1346,7 @@ TransKeyWithoutOriginalValue=U hebt een nieuwe vertaling geforceerd voor de vert TitleNumberOfActivatedModules=Geactiveerde modules TotalNumberOfActivatedModules=Geactiveerde modules: %s / %s YouMustEnableOneModule=Je moet minstens 1 module activeren -YouMustEnableTranslationOverwriteBefore=You must first enable translation overwriting to be allowed to replace a translation +YouMustEnableTranslationOverwriteBefore=U moet eerst het overschrijven van vertalingen inschakelen om een vertaling te mogen vervangen ClassNotFoundIntoPathWarning=Klasse %s niet gevonden in PHP-pad YesInSummer=Ja in de zomer OnlyFollowingModulesAreOpenedToExternalUsers=Merk op dat alleen de volgende modules beschikbaar zijn voor externe gebruikers (ongeacht de machtigingen van dergelijke gebruikers) en alleen als machtigingen worden verleend:
@@ -1428,8 +1428,8 @@ WatermarkOnDraftInvoices=Watermerk op ontwerp-facturen (geen indien leeg) PaymentsNumberingModule=Nummeringsmodel voor betalingen SuppliersPayment=Leveranciersbetalingen SupplierPaymentSetup=Instelling leveranciersbetalingen -InvoiceCheckPosteriorDate=Check facture date before validation -InvoiceCheckPosteriorDateHelp=Validating an invoice will be forbidden if its date is anterior to the date of last invoice of same type. +InvoiceCheckPosteriorDate=Factuurdatum controleren vóór validatie +InvoiceCheckPosteriorDateHelp=Het valideren van een factuur is niet toegestaan als de datum eerder ligt dan de datum van de laatste factuur van hetzelfde type. ##### Proposals ##### PropalSetup=Offertemoduleinstellingen ProposalsNumberingModules=Offertenummeringmodules @@ -1927,7 +1927,7 @@ ConfFileMustContainCustom=Het installeren of bouwen van een externe module vanui HighlightLinesOnMouseHover=Markeer tabellijnen wanneer u er met de muis overheen gaat HighlightLinesColor=Markeer de kleur van de lijn wanneer de muis overgaat (gebruik 'ffffff' voor geen hoogtepunt) HighlightLinesChecked=Markeer de kleur van de lijn wanneer deze is aangevinkt (gebruik 'ffffff' voor geen hoogtepunt) -UseBorderOnTable=Show left-right borders on tables +UseBorderOnTable=Links-rechts randen op tabellen weergeven BtnActionColor=Kleur van de actieknop TextBtnActionColor=Tekstkleur van de actieknop TextTitleColor=Tekstkleur van paginatitel @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Druk op CTRL + F5 op het toetsenbord of wis de cache va NotSupportedByAllThemes=Werkt met kernthema's, mogelijk niet ondersteund door externe thema's BackgroundColor=Achtergrond kleur TopMenuBackgroundColor=Achtergrondkleur voor hoofdmenu -TopMenuDisableImages=Verberg afbeeldingen in Top menu +TopMenuDisableImages=Pictogram of tekst in hoofdmenu LeftMenuBackgroundColor=Achtergrondkleur voor linkermenu BackgroundTableTitleColor=Achtergrondkleur voor tabeltitelregel BackgroundTableTitleTextColor=Tekstkleur voor tabeltitelregel @@ -1949,7 +1949,7 @@ EnterAnyCode=Dit veld bevat een verwijzing om de lijn te identificeren. Voer een Enter0or1=Voer 0 of 1 in UnicodeCurrency=Voer hier tussen accolades in, lijst met byte-nummers die het valutasymbool vertegenwoordigen. Bijvoorbeeld: voer voor $ [36] in - voor Brazilië real R $ [82,36] - voer voor € [8364] in ColorFormat=De RGB-kleur heeft het HEX-formaat, bijvoorbeeld: FF0000 -PictoHelp=Icon name in format:
- image.png for an image file into the current theme directory
- image.png@module if file is into the directory /img/ of a module
- fa-xxx for a FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size for a FontAwesome fa-xxx picto (with prefix, color and size set) +PictoHelp=Pictogramnaam in formaat:
- image.png voor een afbeeldingsbestand in de huidige themamap
- image.png@module als bestand in de map /img/ van een module staat
- fa-xxx voor een FontAwesome fa-xxx picto
- fonwtawesome_xxx_fa_color_size voor een FontAwesome fa-xxx picto (met prefix, kleur en maatset) PositionIntoComboList=Positie van regel in combolijst SellTaxRate=BTW tarief RecuperableOnly=Ja voor BTW "Niet waargemaakt maar herstelbaar", bestemd voor een deelstaat in Frankrijk. Houd in alle andere gevallen de waarde "Nee" aan. @@ -2048,7 +2048,7 @@ COMPANY_AQUARIUM_CLEAN_REGEX=Regex-filter om waarde te reinigen (COMPANY_AQUARIU COMPANY_DIGITARIA_CLEAN_REGEX=Regex-filter om waarde op te schonen (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Dupliceren niet toegestaan GDPRContact=Functionaris voor gegevensbescherming (DPO, gegevensprivacy of GDPR-contact) -GDPRContactDesc=If you store personal data in your Information System, you can name the contact who is responsible for the General Data Protection Regulation here +GDPRContactDesc=Als u persoonsgegevens opslaat in uw Informatiesysteem, kunt u hier de contactpersoon noemen die verantwoordelijk is voor de Algemene Verordening Gegevensbescherming HelpOnTooltip=Help-tekst om op knopinfo weer te geven HelpOnTooltipDesc=Plaats hier tekst of een vertaalsleutel zodat de tekst in een knopinfo kan worden weergegeven wanneer dit veld in een formulier wordt weergegeven YouCanDeleteFileOnServerWith=U kunt dit bestand op de server verwijderen met de opdrachtregel:
%s @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Opmerking: De optie om omzetbelasting of btw te gebruiken is inge SwapSenderAndRecipientOnPDF=Wissel afzender- en ontvangeradrespositie op PDF-documenten in FeatureSupportedOnTextFieldsOnly=Waarschuwing, functie wordt alleen ondersteund op tekstvelden en combolijsten. Er moet ook een URL-parameter action=create of action=edit worden ingesteld OF de paginanaam moet eindigen op 'new.php' om deze functie te activeren. EmailCollector=Email verzamelaar +EmailCollectors=E-mailverzamelaars EmailCollectorDescription=Voeg een geplande taak en een installatiepagina toe om regelmatig e-mailboxen te scannen (met het IMAP-protocol) en ontvangen e-mails op te nemen in uw toepassing, op de juiste plaats en / of maak automatisch enkele records aan (zoals leads). NewEmailCollector=Nieuwe e-mailverzamelaar EMailHost=Host van e-mail IMAP-server @@ -2068,30 +2069,30 @@ EmailcollectorOperations=Operaties te doen door verzamelaar EmailcollectorOperationsDesc=Bewerkingen worden op volgorde begin tot eind uitgevoerd MaxEmailCollectPerCollect=Max aantal verzamelde e-mails per verzameling CollectNow=Verzamel nu -ConfirmCloneEmailCollector=Are you sure you want to clone the Email collector %s? +ConfirmCloneEmailCollector=Weet u zeker dat u de e-mailcollector %s wilt klonen? DateLastCollectResult=Datum laatste poging van verzamelen DateLastcollectResultOk=Datum van laatste succesvolle verzamelen LastResult=Laatste resultaat -EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeaders=Neem de inhoud van de e-mailheader niet op in de opgeslagen inhoud van verzamelde e-mails +EmailCollectorHideMailHeadersHelp=Indien ingeschakeld, worden e-mailheaders niet toegevoegd aan het einde van de e-mailinhoud die is opgeslagen als een agendagebeurtenis. EmailCollectorConfirmCollectTitle=E-mail verzamelbevestiging -EmailCollectorConfirmCollect=Do you want to run this collector now? -EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). -EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr -EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. -EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' -EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. -EmailCollectorExampleToCollectLeads=Example collecting leads -EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job offers (Module Recruitment must be enabled). You can complete this collector if you want to automatically create a candidature for a job request. Note: With this initial example, the title of the candidature is generated including the email. -EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail +EmailCollectorConfirmCollect=Wilt u deze verzamelaar nu gebruiken? +EmailCollectorExampleToCollectTicketRequestsDesc=Verzamel e-mails die voldoen aan bepaalde regels en maak automatisch een ticket aan (Module Ticket moet zijn ingeschakeld) met de e-mailinformatie. U kunt deze collector gebruiken als u enige ondersteuning per e-mail geeft, zodat uw ticketverzoek automatisch wordt gegenereerd. Activeer ook Collect_Responses om antwoorden van uw klant direct op de ticketweergave te verzamelen (u moet antwoorden vanuit Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Voorbeeld ophalen van het ticketverzoek (alleen eerste bericht) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan de map "Verzonden" van uw mailbox om e-mails te vinden die als antwoord op een andere e-mail rechtstreeks vanuit uw e-mailsoftware zijn verzonden en niet vanuit Dolibarr. Als een dergelijke e-mail wordt gevonden, wordt het antwoord geregistreerd in Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Voorbeeld van het verzamelen van e-mailantwoorden die zijn verzonden vanaf een externe e-mailsoftware +EmailCollectorExampleToCollectDolibarrAnswersDesc=Verzamel alle e-mails die een antwoord zijn op een e-mail die vanuit uw applicatie is verzonden. Een evenement (Module Agenda moet zijn ingeschakeld) met de e-mailreactie wordt op de goede plek vastgelegd. Als u bijvoorbeeld vanuit de applicatie een commercieel voorstel, bestelling, factuur of bericht voor een ticket per e-mail verstuurt en de ontvanger beantwoordt uw e-mail, dan zal het systeem het antwoord automatisch opvangen en toevoegen aan uw ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Voorbeeld van het verzamelen van alle inkomende berichten die antwoorden zijn op berichten die zijn verzonden vanuit Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Verzamel e-mails die voldoen aan bepaalde regels en maak automatisch een lead aan (Module Project moet zijn ingeschakeld) met de e-mailinformatie. U kunt deze collector gebruiken als u uw lead wilt volgen met de module Project (1 lead = 1 project), zodat uw leads automatisch worden gegenereerd. Als de collector Collect_Responses ook is ingeschakeld, kunt u, wanneer u een e-mail verzendt vanuit uw leads, voorstellen of een ander object, ook de antwoorden van uw klanten of partners rechtstreeks in de applicatie zien.
Opmerking: bij dit eerste voorbeeld wordt de titel van de lead gegenereerd, inclusief de e-mail. Als de derde partij niet kan worden gevonden in de database (nieuwe klant), wordt de lead gekoppeld aan de derde partij met ID 1. +EmailCollectorExampleToCollectLeads=Voorbeeld leads verzamelen +EmailCollectorExampleToCollectJobCandidaturesDesc=Verzamel e-mails die solliciteren op vacatures (Module Recruitment moet zijn ingeschakeld). U kunt dit verzamelprogramma invullen als u automatisch een kandidatuur voor een vacatureaanvraag wilt aanmaken. Opmerking: met dit eerste voorbeeld wordt de titel van de kandidatuur gegenereerd inclusief de e-mail. +EmailCollectorExampleToCollectJobCandidatures=Voorbeeld van het verzamelen van sollicitatiebrieven die per e-mail zijn ontvangen NoNewEmailToProcess=Geen nieuwe e-mail (overeenkomende filters) om te verwerken NothingProcessed=Niets gedaan -XEmailsDoneYActionsDone=%s e-mails gekwalificeerd, %s e-mails succesvol verwerkt (voor %s record / acties gedaan) +XEmailsDoneYActionsDone=%s e-mails vooraf gekwalificeerd, %s e-mails succesvol verwerkt (voor %s record/acties uitgevoerd) RecordEvent=Een evenement opnemen in agenda (met type E-mail verzonden of ontvangen) CreateLeadAndThirdParty=Maak een lead aan (en indien nodig een derde partij) -CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) +CreateTicketAndThirdParty=Maak een ticket aan (gekoppeld aan een derde partij als de derde partij werd geladen door een eerdere bewerking of werd geraden door een tracker in de e-mailheader, zonder andere derde partij) CodeLastResult=Laatste resultaatcode NbOfEmailsInInbox=Aantal e-mails in bronmap LoadThirdPartyFromName=Zoeken van derden laden op %s (alleen laden) @@ -2112,7 +2113,7 @@ ResourceSetup=Configuratie van bronmodule UseSearchToSelectResource=Gebruik een zoekformulier om een ​​resource te kiezen (in plaats van een vervolgkeuzelijst). DisabledResourceLinkUser=Schakel functie uit om een ​​bron te koppelen aan gebruikers DisabledResourceLinkContact=Schakel functie uit om een ​​bron te koppelen aan contacten -EnableResourceUsedInEventCheck=Prohibit the use of the same resource at the same time in the agenda +EnableResourceUsedInEventCheck=Verbied het gebruik van dezelfde bron op hetzelfde moment in de agenda ConfirmUnactivation=Bevestig de module-reset OnMobileOnly=Alleen op klein scherm (smartphone) DisableProspectCustomerType=Schakel het derde type 'Prospect + klant' uit (de derde moet dus 'Prospect' of 'Klant' zijn, maar kan niet beide zijn) @@ -2157,7 +2158,7 @@ DeleteEmailCollector=E-mailverzamelaar verwijderen ConfirmDeleteEmailCollector=Weet je zeker dat je deze e-mailverzamelaar wilt verwijderen? RecipientEmailsWillBeReplacedWithThisValue=E-mails van ontvangers worden altijd vervangen door deze waarde AtLeastOneDefaultBankAccountMandatory=Er moet minimaal 1 standaardbankrekening worden gedefinieerd -RESTRICT_ON_IP=Allow API access to only certain client IPs (wildcard not allowed, use space between values). Empty means every clients can access. +RESTRICT_ON_IP=Geef API-toegang alleen tot bepaalde client-IP's (jokerteken niet toegestaan, gebruik spatie tussen waarden). Leeg betekent dat elke klant toegang heeft. IPListExample=127.0.0.1 192.168.0.2 [:: 1] BaseOnSabeDavVersion=Gebaseerd op de SabreDAV-versie van de bibliotheek NotAPublicIp=Geen openbaar IP @@ -2167,6 +2168,9 @@ EmailTemplate=Sjabloon voor e-mail EMailsWillHaveMessageID=E-mails hebben een tag 'Verwijzingen' die overeenkomen met deze syntaxis PDF_SHOW_PROJECT=Toon project op document ShowProjectLabel=Projectlabel +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Alias opnemen in naam van derde partij +THIRDPARTY_ALIAS=Naam derde partij - Alias derde partij +ALIAS_THIRDPARTY=Alias derde partij - Naam derde partij PDF_USE_ALSO_LANGUAGE_CODE=Als u wilt dat sommige teksten in uw PDF worden gedupliceerd in 2 verschillende talen in dezelfde gegenereerde PDF, moet u hier deze tweede taal instellen, zodat de gegenereerde PDF 2 verschillende talen op dezelfde pagina bevat, degene die is gekozen bij het genereren van PDF en deze ( slechts enkele PDF-sjablonen ondersteunen dit). Voor 1 taal per pdf leeg houden. PDF_USE_A=Genereer PDF-documenten met formaat PDF/A in plaats van standaard formaat PDF FafaIconSocialNetworksDesc=Voer hier de code van een FontAwesome-pictogram in. Als je niet weet wat FontAwesome is, kun je het generieke waarde fa-adresboek gebruiken. @@ -2246,20 +2250,32 @@ PreviousHash=Vorige hash LateWarningAfter="Vertraagde" waarschuwing na TemplateforBusinessCards=Sjabloon voor een visitekaartje in een ander formaat InventorySetup= Setup inventarisatie -ExportUseLowMemoryMode=Use a low memory mode -ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. -ShowQuickAddLink=Show a button to quickly add an element in top right menu -HashForPing=Hash used for ping -ReadOnlyMode=Is instance in "Read Only" mode -DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs -UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. -FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') -DefaultOpportunityStatus=Default opportunity status (first status when lead is created) -IconAndText=Icon and text -TextOnly=Text only -IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar -IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover the icon -IconOnly=Icon only - Text on tooltip only -INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices -INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices -UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +ExportUseLowMemoryMode=Gebruik een modus met weinig geheugen +ExportUseLowMemoryModeHelp=Gebruik de modus met weinig geheugen om de exec van de dump uit te voeren (compressie gebeurt via een pijp in plaats van in het PHP-geheugen). Met deze methode kan niet worden gecontroleerd of het bestand is voltooid en een foutbericht kan niet worden gerapporteerd als het mislukt. + +ModuleWebhookName = webhook +ModuleWebhookDesc = Interface om dolibarr-triggers te vangen en naar een URL te sturen +WebhookSetup = Webhook instellen +Settings = Instellingen +WebhookSetupPage = Webhook-instellingenpagina +ShowQuickAddLink=Toon een knop om snel een element toe te voegen in het menu rechtsboven + +HashForPing=Hash gebruikt voor ping +ReadOnlyMode=Is de instantie in de modus "Alleen lezen" +DEBUGBAR_USE_LOG_FILE=Gebruik het bestand dolibarr.log om logboeken op te vangen +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Gebruik het bestand dolibarr.log om logboeken te vangen in plaats van live geheugen te vangen. Het maakt het mogelijk om alle logs op te vangen in plaats van alleen logs van het huidige proces (dus inclusief die van de ajax subrequests-pagina's), maar het zal je instance heel erg traag maken. Niet aangeraden. +FixedOrPercent=Vast (gebruik zoekwoord 'vast') of procent (gebruik zoekwoord 'procent') +DefaultOpportunityStatus=Standaard opportunitystatus (eerste status wanneer lead is gemaakt) + +IconAndText=Pictogram en tekst +TextOnly=Alleen tekst +IconOnlyAllTextsOnHover=Alleen pictogram - Alle teksten verschijnen onder het pictogram op de menubalk met muisaanwijzer +IconOnlyTextOnHover=Alleen pictogram - De tekst van het pictogram verschijnt onder het pictogram met de muisaanwijzer op het pictogram +IconOnly=Alleen pictogram - Alleen tekst op knopinfo +INVOICE_ADD_ZATCA_QR_CODE=Toon de ZATCA QR-code op facturen +INVOICE_ADD_ZATCA_QR_CODEMore=Sommige Arabische landen hebben deze QR-code nodig op hun facturen +INVOICE_ADD_SWISS_QR_CODE=Toon de Zwitserse QR-factuurcode op facturen +UrlSocialNetworksDesc=URL-link van sociaal netwerk. Gebruik {socialid} voor het variabele deel dat de sociale netwerk-ID bevat. +IfThisCategoryIsChildOfAnother=Als deze categorie een kind is van een andere +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/nl_NL/companies.lang b/htdocs/langs/nl_NL/companies.lang index 40ec7d8a10d..253a550df77 100644 --- a/htdocs/langs/nl_NL/companies.lang +++ b/htdocs/langs/nl_NL/companies.lang @@ -19,7 +19,7 @@ ProspectionArea=Prospectenoverzicht IdThirdParty=ID Klant IdCompany=ID bedrijf IdContact=ID contactpersoon -ThirdPartyAddress=Third-party address +ThirdPartyAddress=Adres van derden ThirdPartyContacts=Contacten van derden ThirdPartyContact=Contact / adres van derden Company=Bedrijf @@ -52,21 +52,22 @@ CivilityCode=Aanspreekvorm RegisteredOffice=Statutaire zetel Lastname=Achternaam Firstname=Voornaam -RefEmployee=Employee reference -NationalRegistrationNumber=National registration number +RefEmployee=Referentie werknemer +NationalRegistrationNumber=Rijksregisternummer PostOrFunction=Functie UserTitle=Titel NatureOfThirdParty=Aard van relatie NatureOfContact=Aard van het contact Address=Adres State=Provincie +StateId=State ID StateCode=Staat / Provincie code StateShort=Provincie Region=Regio Region-State=Regio - Staat Country=Land CountryCode=Landcode -CountryId=Land-ID +CountryId=Country ID Phone=Telefoonnummer PhoneShort=Telefoon Skype=Skype @@ -105,7 +106,7 @@ WrongSupplierCode=Ongeldige leveranciercode CustomerCodeModel=Afnemersmodel SupplierCodeModel=Leveranciercode model Gencod=Streepjescode -GencodBuyPrice=Barcode of price ref +GencodBuyPrice=Barcode van prijsref ##### Professional ID ##### ProfId1Short=Prof id 1 ProfId2Short=Prof id 2 @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=KVK nummer ProfId2CM=BTW-id -ProfId3CM=ID kaart. prof. 3 (Aanmaakopdracht) -ProfId4CM=Id. prof. 4 (Certificate of deposits) -ProfId5CM=Id. prof. 5 (Others) +ProfId3CM=ID kaart. prof. 3 (Nr. scheppingsdecreet) +ProfId4CM=ID kaart. prof. 4 (Depositcertificaat nr.) +ProfId5CM=ID kaart. prof. 5 (anderen) ProfId6CM=- ProfId1ShortCM=Handelsregister ProfId2ShortCM=BTW -ProfId3ShortCM=Aanmaak opdracht -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=Nr. van scheppingsdecreet +ProfId4ShortCM=Depositobewijs nr. ProfId5ShortCM=Overigen ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) @@ -363,7 +364,7 @@ ListOfThirdParties=Lijst van derden ShowCompany=Relatie ShowContact=Contact adres ContactsAllShort=Alle (Geen filter) -ContactType=Contact role +ContactType=Contactrol ContactForOrders=Opdrachtencontactpersoon ContactForOrdersOrShipments=Contactpersoon bij order of verzending ContactForProposals=Offertecontactpersoon diff --git a/htdocs/langs/nl_NL/compta.lang b/htdocs/langs/nl_NL/compta.lang index d51e3dd36f2..2ffdfc74c2a 100644 --- a/htdocs/langs/nl_NL/compta.lang +++ b/htdocs/langs/nl_NL/compta.lang @@ -146,11 +146,11 @@ ConfirmPaySalary=Weet u zeker dat u deze salariskaart als betaald wilt aanmerken DeleteSocialContribution=Verwijder een sociale/fiscale betaling DeleteVAT=Een btw-aangifte verwijderen DeleteSalary=Een salariskaart verwijderen -DeleteVariousPayment=Delete a various payment +DeleteVariousPayment=Een verschillende betaling verwijderen ConfirmDeleteSocialContribution=Weet u zeker dat u deze sociale/fiscale belastingbetaling wilt verwijderen? ConfirmDeleteVAT=Weet u zeker dat u deze btw-aangifte wilt verwijderen? -ConfirmDeleteSalary=Are you sure you want to delete this salary ? -ConfirmDeleteVariousPayment=Are you sure you want to delete this various payment ? +ConfirmDeleteSalary=Weet u zeker dat u dit salaris wilt verwijderen? +ConfirmDeleteVariousPayment=Weet u zeker dat u deze verschillende betalingen wilt verwijderen? ExportDataset_tax_1=Sociale- en fiscale belastingen en betalingen CalcModeVATDebt=Mode %sBTW op verbintenissenboekhouding %s. CalcModeVATEngagement=Mode %sBTW op de inkomens-uitgaven %s. @@ -172,9 +172,9 @@ SeeReportInInputOutputMode=Zie %s analyse van betalingen%s voor een berek SeeReportInDueDebtMode=Zie %s analyse van geregistreerde documenten%s voor een berekening op basis van bekende geregistreerde documenten zelfs als ze nog niet zijn geboekt SeeReportInBookkeepingMode=Zie %s analyse van de boekhoudtabel %s voor een rapport gebaseerd opBoekhoudkundige grootboektabel RulesAmountWithTaxIncluded=- Bedragen zijn inclusief alle belastingen -RulesAmountWithTaxExcluded=- Amounts of invoices shown are with all taxes excluded -RulesResultDue=- It includes all invoices, expenses, VAT, donations, salaries, whether they are paid or not.
- It is based on the billing date of invoices and on the due date for expenses or tax payments. For salaries, the date of end of period is used. -RulesResultInOut=- It includes the real payments made on invoices, expenses, VAT and salaries.
- It is based on the payment dates of the invoices, expenses, VAT, donations and salaries. +RulesAmountWithTaxExcluded=- De getoonde facturen zijn exclusief alle belastingen +RulesResultDue=- Het omvat alle facturen, onkosten, BTW, giften, salarissen, of ze nu betaald zijn of niet.
- Het is gebaseerd op de factuurdatum van facturen en op de vervaldatum voor onkosten of belastingbetalingen. Voor salarissen wordt de datum einde periode gebruikt. +RulesResultInOut=- Het omvat de werkelijke betalingen op facturen, onkosten, btw en salarissen.
- Het is gebaseerd op de betalingsdata van de facturen, onkosten, btw, donaties en salarissen. RulesCADue=- Het omvat de verschuldigde facturen van de klant, of ze nu zijn betaald of niet.
- Het is gebaseerd op de factureringsdatum van deze facturen.
RulesCAIn=- Het omvat alle effectieve betalingen van facturen ontvangen van klanten.
- Het is gebaseerd op de betaaldatum van deze facturen
RulesCATotalSaleJournal=Het omvat alle kredietlijnen uit het verkoopdagboek. @@ -191,26 +191,26 @@ LT1ReportByCustomers=Belasting 2 rapporteren door relatie LT2ReportByCustomers=Belasting 3 rapporteren door derden LT1ReportByCustomersES=Rapport door derde partij RE LT2ReportByCustomersES=Verslag van derden IRPF -VATReport=Sales tax report -VATReportByPeriods=Sales tax report by period +VATReport=Btw-rapport +VATReportByPeriods=Btw-rapport per periode VATReportByMonth=BTW overzicht per maand VATReportByRates=BTW overzicht per tarief -VATReportByThirdParties=Sales tax report by third party -VATReportByCustomers=Sales tax report by customer +VATReportByThirdParties=Aangifte omzetbelasting door derde partij +VATReportByCustomers=Btw-rapport door klant VATReportByCustomersInInputOutputMode=Bevestigd door de klant btw geïnd en betaald -VATReportByQuartersInInputOutputMode=Report by Sales tax rate of the tax collected and paid +VATReportByQuartersInInputOutputMode=Rapporteren op btw-tarief van de geïnde en betaalde belasting VATReportShowByRateDetails=Details van dit tarief weergeven LT1ReportByQuarters=Rapporteer belasting 2 per tarief LT2ReportByQuarters=Belastingaangifte 3 per tarief LT1ReportByQuartersES=Rapport per RE-tarief LT2ReportByQuartersES=Rapport per IRPF-tarief -SeeVATReportInInputOutputMode=See report %sVAT collection%s for a standard calculation -SeeVATReportInDueDebtMode=See report %sVAT on debit%s for a calculation with an option on the invoicing -RulesVATInServices=- For services, the report includes the VAT of payments actually received or paid on the basis of the date of payment. -RulesVATInProducts=- For material assets, the report includes the VAT on the basis of the date of payment. -RulesVATDueServices=- For services, the report includes VAT of due invoices, paid or not, based on the invoice date. -RulesVATDueProducts=- For material assets, the report includes the VAT of due invoices, based on the invoice date. -OptionVatInfoModuleComptabilite=Opmerking: Voor materiële activa, zou het gebruik moeten maken van de afleverdatum om eerlijker te zijn. +SeeVATReportInInputOutputMode=Zie rapport %sBTW-inning%s voor een standaard berekening +SeeVATReportInDueDebtMode=Zie rapport %sVAT op debit%s voor een berekening met een optie op de facturatie +RulesVATInServices=- Voor diensten bevat het rapport de btw van werkelijk ontvangen of betaalde betalingen op basis van de datum van betaling. +RulesVATInProducts=- Voor producten wordt in de rapportage de btw op basis van de datum van betaling vermeld. +RulesVATDueServices=- Voor diensten is het rapport inclusief btw van openstaande facturen, al dan niet betaald, op basis van de factuurdatum. +RulesVATDueProducts=- Voor producten bevat het rapport de btw van vervallen facturen, op basis van de factuurdatum. +OptionVatInfoModuleComptabilite=Opmerking: Voor producten zou de afleverdatum eerlijker te zijn. ThisIsAnEstimatedValue=Dit is een voorbeeld, gebaseerd op zakelijke gebeurtenissen en niet uit de uiteindelijke grootboektabel, dus de definitieve resultaten kunnen verschillen van deze voorbeeldwaarden PercentOfInvoice=%%/factuur NotUsedForGoods=Niet gebruikt voor goederen @@ -289,14 +289,15 @@ ReportPurchaseTurnover=Inkoopbedrag gefactureerd ReportPurchaseTurnoverCollected=Verzamelde inkoop-omzet IncludeVarpaysInResults = Neem verschillende betalingen op in rapporten IncludeLoansInResults = Leningen opnemen in rapporten -InvoiceLate30Days = Late (> 30 days) -InvoiceLate15Days = Late (15 to 30 days) -InvoiceLateMinus15Days = Late (< 15 days) -InvoiceNotLate = To be collected (< 15 days) -InvoiceNotLate15Days = To be collected (15 to 30 days) -InvoiceNotLate30Days = To be collected (> 30 days) -InvoiceToPay=To pay (< 15 days) -InvoiceToPay15Days=To pay (15 to 30 days) -InvoiceToPay30Days=To pay (> 30 days) -ConfirmPreselectAccount=Preselect accountancy code -ConfirmPreselectAccountQuestion=Are you sure you want to preselect the %s selected lines with this accountancy code ? +InvoiceLate30Days = Te laat (> 30 dagen) +InvoiceLate15Days = Laat (15 tot 30 dagen) +InvoiceLateMinus15Days = Laat (< 15 dagen) +InvoiceNotLate = Af te halen (< 15 dagen) +InvoiceNotLate15Days = Af te halen (15 tot 30 dagen) +InvoiceNotLate30Days = Op te halen (> 30 dagen) +InvoiceToPay=Betalen (< 15 dagen) +InvoiceToPay15Days=Betalen (15 tot 30 dagen) +InvoiceToPay30Days=Betalen (> 30 dagen) +ConfirmPreselectAccount=Preselect accountcode +ConfirmPreselectAccountQuestion=Weet u zeker dat u de %s geselecteerde regels met deze boekhoudcode wilt voorselecteren? +AmountPaidMustMatchAmountOfDownPayment=Het betaalde bedrag moet overeenkomen met het bedrag van de aanbetaling diff --git a/htdocs/langs/nl_NL/errors.lang b/htdocs/langs/nl_NL/errors.lang index fe70a2010cb..ac8ed16cfd8 100644 --- a/htdocs/langs/nl_NL/errors.lang +++ b/htdocs/langs/nl_NL/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=E-mail %s lijkt onjuist (domein heeft geen geldig MX-record) ErrorBadUrl=URL %s is onjuist ErrorBadValueForParamNotAString=Slechte parameterwaarde. Wordt over het algemeen gegenereerd als de vertaling ontbreekt. ErrorRefAlreadyExists=Referentie %s bestaat al. +ErrorTitleAlreadyExists=Titel %s bestaat al. ErrorLoginAlreadyExists=Inlog %s bestaat reeds. ErrorGroupAlreadyExists=Groep %s bestaat reeds. ErrorEmailAlreadyExists=email 1%s bestaat al @@ -27,9 +28,9 @@ ErrorThisContactIsAlreadyDefinedAsThisType=Deze contactpersoon is al ingesteld a ErrorCashAccountAcceptsOnlyCashMoney=Dit is een kasrekening, dus deze accepteert alleen betalingen van het type kas. ErrorFromToAccountsMustDiffers=De bron- en doelrekening mogen niet dezelfde zijn. ErrorBadThirdPartyName=Onjuiste waarde voor naam van derde partij -ForbiddenBySetupRules=Forbidden by setup rules +ForbiddenBySetupRules=Verboden door installatieregels ErrorProdIdIsMandatory=De %s is verplicht -ErrorAccountancyCodeCustomerIsMandatory=The accountancy code of customer %s is mandatory +ErrorAccountancyCodeCustomerIsMandatory=De boekhoudcode van klant %s is verplicht ErrorBadCustomerCodeSyntax=Verkeerde syntaxis voor afnemerscode ErrorBadBarCodeSyntax=Onjuiste syntaxis voor streepjescode. Misschien stelt u een slecht barcodetype in of heeft u een barcodemasker gedefinieerd voor nummering dat niet overeenkomt met de gescande waarde. ErrorCustomerCodeRequired=Afnemerscode nodig @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Er bestaat al een ander bestand met de naam %s ErrorPartialFile=Het bestand is niet volledig ontvangen door de server. ErrorNoTmpDir=Tijdelijke map %s bestaat niet. ErrorUploadBlockedByAddon=Upload geblokkeerd door een PHP- en / of Apache-plugin. -ErrorFileSizeTooLarge=Bestand is te groot. +ErrorFileSizeTooLarge=De bestandsgrootte is te groot of het bestand is niet verstrekt. ErrorFieldTooLong=Veld %s is te lang. ErrorSizeTooLongForIntType=Grootte te lang voor int type (%s cijfers maximum) ErrorSizeTooLongForVarcharType=Grootte te lang voor string type (%s tekens maximum) @@ -85,12 +86,13 @@ ErrorCantSaveADoneUserWithZeroPercentage=Kan een actie met "status niet gestart" ErrorRefAlreadyExists=Referentie %s bestaat al. ErrorPleaseTypeBankTransactionReportName=Voer de naam van het bankafschrift in waar de boeking moet worden gerapporteerd (formaat YYYYMM of YYYYMMDD) ErrorRecordHasChildren=Kan record niet verwijderen omdat het enkele onderliggende records heeft. -ErrorRecordHasAtLeastOneChildOfType=Object %s has at least one child of type %s +ErrorRecordHasAtLeastOneChildOfType=Object %s heeft ten minste één kind van het type %s ErrorRecordIsUsedCantDelete=Kan record niet verwijderen. Het is al gebruikt of opgenomen in een ander object. ErrorModuleRequireJavascript=Javascript dient niet uitgeschakeld te zijn voor deze functionaliteit. Om Javascript aan of uit te zetten gaat u naar het menu Home->instellingen->Scherm ErrorPasswordsMustMatch=De twee ingevoerde wachtwoorden komen niet overeen. ErrorContactEMail=Er is een technische fout opgetreden. Neem contact op met de beheerder om e-mail %s te volgen en geef de foutcode %s op in uw bericht, of voeg een schermkopie van deze pagina toe. ErrorWrongValueForField=Veld %s : '%s' komt niet overeen met regexregel %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Veld %s : '%s' is geen waarde gevonden in veld %s van %s ErrorFieldRefNotIn=Veld %s : '%s' is geen bestaande %s ErrorsOnXLines=%s fouten gevonden @@ -113,7 +115,7 @@ ErrorFailedToLoadRSSFile=Niet in slaagt om RSS feed. Probeer een constante MAIN_ ErrorForbidden=Toegang geweigerd.
U probeert toegang te krijgen tot een pagina, gebied of functie van een uitgeschakelde module of zonder dat u zich in een geverifieerde sessie bevindt of dat is niet toegestaan voor uw gebruiker. ErrorForbidden2=Toestemming voor deze aanmelding kan worden ingesteld door de Dolibarr-beheerder vanaf het menu %s -> %s. ErrorForbidden3=Het lijkt erop dat Dolibarr niet wordt gebruikt met een geverifieerde sessie. Kijk eens naar de Dolibarr installatiedocumentatie om te weten hoe het beheer van verificaties (htaccess, mod_auth of andere) werkt. -ErrorForbidden4=Note: clear your browser cookies to destroy existing sessions for this login. +ErrorForbidden4=Let op: wis uw browsercookies om bestaande sessies voor deze login te vernietigen. ErrorNoImagickReadimage=Functie imagick_readimage is niet gevonden in deze PHP installatie. Er kunnen geen voorbeelden gemaakt worden. Beheerders kunnen dit tabblad uitschakelen vanaf het menu Home->Instellingen->Scherm. ErrorRecordAlreadyExists=Tabelregel bestaat al ErrorLabelAlreadyExists=Dit label bestaat al @@ -269,19 +271,31 @@ ErrorYouMustFirstSetupYourChartOfAccount=U moet eerst uw rekeningschema instelle ErrorFailedToFindEmailTemplate=Kan sjabloon met codenaam %s . niet vinden ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=De lengte is niet gedefinieerd in de dienst. We kunnen de uurkosten niet berekenen. ErrorActionCommPropertyUserowneridNotDefined=Eigenaar van gebruiker is vereist -ErrorActionCommBadType=Het geselecteerde gebeurtenistype (id: %n, code: %s) bestaat niet in het woordenboek voor gebeurtenistypes +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Versiecontrole mislukt ErrorWrongFileName=De naam van het bestand mag niet __SOMETHING__ bevatten ErrorNotInDictionaryPaymentConditions=Niet bekend in de gedefinieerde betaalregelingen, graag wijzigen -ErrorIsNotADraft=%s is not a draft -ErrorExecIdFailed=Can't execute command "id" -ErrorBadCharIntoLoginName=Unauthorized character in the login name -ErrorRequestTooLarge=Error, request too large +ErrorIsNotADraft=%s is geen concept +ErrorExecIdFailed=Kan opdracht "id" niet uitvoeren +ErrorBadCharIntoLoginName=Ongeautoriseerd teken in de inlognaam +ErrorRequestTooLarge=Fout, verzoek te groot +ErrorNotApproverForHoliday=U bent niet de fiatteur voor verlof %s +ErrorAttributeIsUsedIntoProduct=Dit kenmerk wordt gebruikt in een of meer productvarianten +ErrorAttributeValueIsUsedIntoProduct=Deze kenmerkwaarde wordt gebruikt in een of meer productvarianten +ErrorPaymentInBothCurrency=Fout, alle bedragen moeten in dezelfde kolom worden ingevoerd +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=U probeert facturen in de valuta %s te betalen vanaf een rekening met de valuta %s +ErrorInvoiceLoadThirdParty=Kan object van derden niet laden voor factuur "%s" +ErrorInvoiceLoadThirdPartyKey=Sleutel van derden "%s" niet ingesteld voor factuur "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Regel verwijderen is niet toegestaan door de huidige objectstatus +ErrorAjaxRequestFailed=Verzoek mislukt +ErrorThirpdartyOrMemberidIsMandatory=Derde partij of lid van maatschap is verplicht +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Uw PHP-parameter upload_max_filesize (%s) is hoger dan PHP-parameter post_max_size (%s). Dit is geen consistente opstelling. WarningPasswordSetWithNoAccount=Er is een wachtwoord ingesteld voor dit lid. Er is echter geen gebruikersaccount gemaakt. Dus dit wachtwoord is opgeslagen maar kan niet worden gebruikt om in te loggen bij Dolibarr. Het kan worden gebruikt door een externe module / interface, maar als u geen gebruikersnaam of wachtwoord voor een lid hoeft aan te maken, kunt u de optie "Beheer een login voor elk lid" in de module-setup van Member uitschakelen. Als u een login moet beheren maar geen wachtwoord nodig heeft, kunt u dit veld leeg houden om deze waarschuwing te voorkomen. Opmerking: e-mail kan ook worden gebruikt als login als het lid aan een gebruiker is gekoppeld. -WarningMandatorySetupNotComplete=Klik hier om verplichte parameters in te stellen +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Klik hier om uw modules en applicaties in te schakelen WarningSafeModeOnCheckExecDir=Waarschuwing, de instelling safe_mode van PHP staat aan daarom moet het commando opgeslagen worden in een map die gedeclareerd is door de PHP instelling safe_mode_exec_dir. WarningBookmarkAlreadyExists=Een weblink met deze titel of dit doel (URL) bestaat al. @@ -310,25 +324,26 @@ WarningTheHiddenOptionIsOn=Pas op, de verborgen optie %s is ingeschakeld. WarningCreateSubAccounts=Waarschuwing, u kunt niet rechtstreeks een subaccount aanmaken, u moet een derde partij of een gebruiker aanmaken en hen een boekhoudcode toewijzen om ze in deze lijst te vinden WarningAvailableOnlyForHTTPSServers=Alleen beschikbaar als u een beveiligde HTTPS-verbinding gebruikt. WarningModuleXDisabledSoYouMayMissEventHere=Module %s is niet ingeschakeld. Je kunt hier dus veel evenementen missen. -WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningPaypalPaymentNotCompatibleWithStrict=De waarde 'Strikt' zorgt ervoor dat de online betaalfuncties niet correct werken. Gebruik in plaats daarvan 'Lax'. +WarningThemeForcedTo=Waarschuwing, thema is gedwongen naar %s door verborgen constante MAIN_FORCETHEME # Validate -RequireValidValue = Value not valid -RequireAtLeastXString = Requires at least %s character(s) -RequireXStringMax = Requires %s character(s) max -RequireAtLeastXDigits = Requires at least %s digit(s) -RequireXDigitsMax = Requires %s digit(s) max -RequireValidNumeric = Requires a numeric value -RequireValidEmail = Email address is not valid -RequireMaxLength = Length must be less than %s chars -RequireMinLength = Length must be more than %s char(s) -RequireValidUrl = Require valid URL -RequireValidDate = Require a valid date -RequireANotEmptyValue = Is required -RequireValidDuration = Require a valid duration -RequireValidExistingElement = Require an existing value -RequireValidBool = Require a valid boolean -BadSetupOfField = Error bad setup of field -BadSetupOfFieldClassNotFoundForValidation = Error bad setup of field : Class not found for validation -BadSetupOfFieldFileNotFound = Error bad setup of field : File not found for inclusion -BadSetupOfFieldFetchNotCallable = Error bad setup of field : Fetch not callable on class +RequireValidValue = Waarde niet geldig +RequireAtLeastXString = Vereist minimaal %s teken(s) +RequireXStringMax = Vereist %s teken(s) max +RequireAtLeastXDigits = Vereist minimaal %s cijfer(s) +RequireXDigitsMax = Vereist %s cijfer(s) max +RequireValidNumeric = Vereist een numerieke waarde +RequireValidEmail = e-mailadres is niet geldig +RequireMaxLength = De lengte moet kleiner zijn dan %s tekens +RequireMinLength = Lengte moet meer zijn dan %s char(s) +RequireValidUrl = Geldige URL vereisen +RequireValidDate = Een geldige datum vereisen +RequireANotEmptyValue = Is benodigd +RequireValidDuration = Een geldige duur vereisen +RequireValidExistingElement = Een bestaande waarde vereisen +RequireValidBool = Een geldige boolean vereisen +BadSetupOfField = Fout slechte instelling van veld +BadSetupOfFieldClassNotFoundForValidation = Fout slechte instelling van veld : Klasse niet gevonden voor validatie +BadSetupOfFieldFileNotFound = Fout slechte instelling van veld : Bestand niet gevonden voor opname +BadSetupOfFieldFetchNotCallable = Fout slechte instelling van veld: Ophalen niet aanroepbaar op klasse diff --git a/htdocs/langs/nl_NL/externalsite.lang b/htdocs/langs/nl_NL/externalsite.lang deleted file mode 100644 index a5de68679db..00000000000 --- a/htdocs/langs/nl_NL/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Instellingen voor de link naar een externe website -ExternalSiteURL=Externe site-URL van HTML-iframe-inhoud -ExternalSiteModuleNotComplete=Module Externe Site werd niet correct geconfigureerd. -ExampleMyMenuEntry=Mijn menu-item diff --git a/htdocs/langs/nl_NL/ftp.lang b/htdocs/langs/nl_NL/ftp.lang deleted file mode 100644 index 6d3bee48b51..00000000000 --- a/htdocs/langs/nl_NL/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP of SFTP Client module setup -NewFTPClient=Nieuwe FTP/SFTP connectie instellen -FTPArea=FTP/SFTP omgeving -FTPAreaDesc=Dit scherm geeft een voorbeeld van een FTP of SFTP server weer -SetupOfFTPClientModuleNotComplete=De setup van de FTP- of SFTP-clientmodule lijkt niet volledig -FTPFeatureNotSupportedByYourPHP=Uw PHP ondersteunt geen FTP- of SFTP-functies -FailedToConnectToFTPServer=Kan geen verbinding maken met server (server%s, poort%s) -FailedToConnectToFTPServerWithCredentials=Inloggen op server met gedefinieerde login / wachtwoord is mislukt -FTPFailedToRemoveFile=Bestand %s kon niet verwijderd worden. -FTPFailedToRemoveDir=Kan map %s niet verwijderen: controleer de machtigingen en of de map leeg is. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Kies een FTP / SFTP-site uit het menu ... -FailedToGetFile=%sBestanden niet ontvangen diff --git a/htdocs/langs/nl_NL/holiday.lang b/htdocs/langs/nl_NL/holiday.lang index 6a53892fd5e..0fda4e974bf 100644 --- a/htdocs/langs/nl_NL/holiday.lang +++ b/htdocs/langs/nl_NL/holiday.lang @@ -27,7 +27,7 @@ DescCP=Beschrijving SendRequestCP=Aanmaken verlofverzoek DelayToRequestCP=Verlofverzoeken moeten tenminste %s dag van te voren worden ingediend. MenuConfCP=Saldo van verlof -SoldeCPUser=Leave balance (in days) %s +SoldeCPUser=Saldo laten staan (in dagen) %s ErrorEndDateCP=U moet een einddatum kiezen die na de startdatum ligt. ErrorSQLCreateCP=Er is een SQL fout ontstaan bij het aanmaken: ErrorIDFicheCP=Fout. Verlofverzoek bestaat niet. @@ -133,7 +133,7 @@ WatermarkOnDraftHolidayCards=Watermerken op ontwerp verlofaanvragen HolidaysToApprove=Vakanties goed te keuren NobodyHasPermissionToValidateHolidays=Niemand heeft toestemming om vakanties te valideren HolidayBalanceMonthlyUpdate=Maandelijkse update van de vrije dagen -XIsAUsualNonWorkingDay=%s is usualy a NON working day -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +XIsAUsualNonWorkingDay=%s is meestal een NIET-werkdag +BlockHolidayIfNegative=Blokkeren als saldo negatief +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Het aanmaken van deze verlofaanvraag is geblokkeerd omdat je saldo negatief is +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Verlofverzoek %s moet worden opgesteld, geannuleerd of worden geweigerd om te worden verwijderd diff --git a/htdocs/langs/nl_NL/hrm.lang b/htdocs/langs/nl_NL/hrm.lang index b0dc4b94884..462eb5cdfc9 100644 --- a/htdocs/langs/nl_NL/hrm.lang +++ b/htdocs/langs/nl_NL/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Open vestiging CloseEtablishment=Sluit vestiging # Dictionary DictionaryPublicHolidays=Verlof - Feestdagen -DictionaryDepartment=HRM - Afdelingslijst +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Vacatures # Module Employees=Werknemers @@ -20,62 +20,72 @@ Employee=Werknemer NewEmployee=Nieuwe werknemer ListOfEmployees=Werknemers lijst HrmSetup=Instellingen HRM module -HRM_MAXRANK=Maximum rank for a skill -HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created -deplacement=Shift -DateEval=Evaluation date -JobCard=Job card -Job=Taak -Jobs=Jobs -NewSkill=New Skill -SkillType=Skill type -Skilldets=List of ranks for this skill -Skilldet=Skill level -rank=Rank -ErrNoSkillSelected=No skill selected -ErrSkillAlreadyAdded=This skill is already in the list -SkillHasNoLines=This skill has no lines -skill=Skill -Skills=Skills -SkillCard=Skill card -EmployeeSkillsUpdated=Employee skills have been updated (see "Skills" tab of employee card) -Eval=Evaluation -Evals=Evaluations -NewEval=New evaluation -ValidateEvaluation=Validate evaluation -ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with reference %s? -EvaluationCard=Evaluation card -RequiredRank=Required rank for this job -EmployeeRank=Employee rank for this skill -Position=Positie -Positions=Positions -PositionCard=Position card -EmployeesInThisPosition=Employees in this position -group1ToCompare=Usergroup to analyze -group2ToCompare=Second usergroup for comparison -OrJobToCompare=Compare to job skills requirements +SkillsManagement=Vaardighedenbeheer +HRM_MAXRANK=Maximaal aantal niveaus om een vaardigheid te rangschikken +HRM_DEFAULT_SKILL_DESCRIPTION=Standaardbeschrijving van rangen wanneer vaardigheid is gemaakt +deplacement=dienst\n +DateEval=Evaluatie datum +JobCard=Werk kaart +JobPosition=Taak +JobsPosition=Banen +NewSkill=Nieuwe vaardigheid +SkillType=Vaardigheidstype: +Skilldets=Lijst met rangen voor deze vaardigheid +Skilldet=Vaardigheidsniveau +rank=Rang +ErrNoSkillSelected=Geen vaardigheid geselecteerd +ErrSkillAlreadyAdded=Deze vaardigheid staat al in de lijst +SkillHasNoLines=Deze vaardigheid heeft geen regels +skill=Vaardigheid +Skills=Vaardigheden +SkillCard=Vaardigheidskaart +EmployeeSkillsUpdated=Vaardigheden van werknemers zijn bijgewerkt (zie tabblad "Vaardigheden" van werknemerskaart) +Eval=Evaluatie +Evals=Evaluaties +NewEval=Nieuwe evaluatie +ValidateEvaluation=Evaluatie valideren +ConfirmValidateEvaluation=Weet u zeker dat u deze evaluatie wilt valideren met referentie %s ? +EvaluationCard=Evaluatiekaart +RequiredRank=Vereiste rang voor deze baan +EmployeeRank=Werknemersrang voor deze vaardigheid +EmployeePosition=Functie werknemer +EmployeePositions=Werknemersfuncties +EmployeesInThisPosition=Medewerkers in deze functie +group1ToCompare=Gebruikersgroep om te analyseren +group2ToCompare=Tweede gebruikersgroep ter vergelijking +OrJobToCompare=Vergelijk met vereisten voor beroepsvaardigheden difference=Verschil -CompetenceAcquiredByOneOrMore=Competence acquired by one or more users but not requested by the second comparator -MaxlevelGreaterThan=Max level greater than the one requested -MaxLevelEqualTo=Max level equal to that demand -MaxLevelLowerThan=Max level lower than that demand -MaxlevelGreaterThanShort=Employee level greater than the one requested -MaxLevelEqualToShort=Employee level equals to that demand -MaxLevelLowerThanShort=Employee level lower than that demand -SkillNotAcquired=Skill not acquired by all users and requested by the second comparator +CompetenceAcquiredByOneOrMore=Competentie verworven door een of meer gebruikers maar niet gevraagd door de tweede vergelijker +MaxlevelGreaterThan=Maximaal niveau hoger dan het gevraagde +MaxLevelEqualTo=Max niveau gelijk aan die vraag +MaxLevelLowerThan=Max niveau lager dan die vraag +MaxlevelGreaterThanShort=Werknemersniveau hoger dan gevraagd +MaxLevelEqualToShort=Werknemersniveau is gelijk aan die vraag +MaxLevelLowerThanShort=Werknemersniveau lager dan die vraag +SkillNotAcquired=Vaardigheid niet verworven door alle gebruikers en gevraagd door de tweede vergelijker legend=Legende -TypeSkill=Skill type -AddSkill=Add skills to job -RequiredSkills=Required skills for this job -UserRank=User Rank -SkillList=Skill list -SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge -AbandonmentComment=Abandonment comment -DateLastEval=Date last evaluation -NoEval=No evaluation done for this employee -HowManyUserWithThisMaxNote=Number of users with this rank -HighestRank=Highest rank -SkillComparison=Skill comparison +TypeSkill=Vaardigheidstype: +AddSkill=Vaardigheden toevoegen aan baan +RequiredSkills=Vereiste vaardigheden voor deze baan +UserRank=Gebruikersrang +SkillList=Vaardighedenlijst +SaveRank=Rang opslaan +TypeKnowHow=Weet hoe +TypeHowToBe=Hoe te zijn +TypeKnowledge=Kennis +AbandonmentComment=Verlatingscommentaar +DateLastEval=Datum laatste evaluatie +NoEval=Geen evaluatie gedaan voor deze werknemer +HowManyUserWithThisMaxNote=Aantal gebruikers met deze rang +HighestRank=hoogste rang +SkillComparison=Vaardigheidsvergelijking +ActionsOnJob=Evenementen op deze baan +VacantPosition=vacature +VacantCheckboxHelper=Als u deze optie aanvinkt, worden openstaande vacatures weergegeven (vacature) +SaveAddSkill = Vaardigheid(en) toegevoegd +SaveLevelSkill = Vaardigheidsniveau opgeslagen +DeleteSkill = Vaardigheid verwijderd +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Werknemers) +EvaluationsExtraFields=Attributs supplémentaires (Evaluaties) +NeedBusinessTravels=Zakenreizen nodig diff --git a/htdocs/langs/nl_NL/install.lang b/htdocs/langs/nl_NL/install.lang index 80850992128..e73a3129bdd 100644 --- a/htdocs/langs/nl_NL/install.lang +++ b/htdocs/langs/nl_NL/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuratiebestand %s kan niet worden beschreven. ConfFileIsWritable=Configuratiebestand %s kan voor schrijven geopend worden. ConfFileMustBeAFileNotADir=Configuratiebestand %s moet een bestand zijn en geen map. ConfFileReload=Parameters opnieuw laden uit configuratiebestand. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=Het configuratiebestand conf/conf.php bestaat niet of is niet leesbaar. We zullen het installatieproces uitvoeren om te proberen het te initialiseren. PHPSupportPOSTGETOk=Deze PHP installatie ondersteunt POST en GET. PHPSupportPOSTGETKo=Het is mogelijk dat uw PHP-setup geen ondersteuning biedt voor variabelen POST en / of GET. Controleer de parameter variables_order in php.ini. PHPSupportSessions=Deze PHP installatie ondersteund sessies. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=U heeft de parameter '%s' mogelijk verkeerd ingestel ErrorFailedToCreateDatabase=De database '%s' kon niet worden gecreëerd. ErrorFailedToConnectToDatabase=Het is niet gelukt om een verbinding met de database '%s' te maken. ErrorDatabaseVersionTooLow=Database versie (%s) is te oud. Versie %s of hoger is vereist. -ErrorPHPVersionTooLow=De geïnstalleerde PHP versie is te oud. Versie %s is nodig. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Verbinding met server gelukt maar database '%s' niet gevonden. ErrorDatabaseAlreadyExists=Database '%s' bestaat al. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Als de database niet bestaat, gaat u terug en vinkt u de optie "Create database" aan. IfDatabaseExistsGoBackAndCheckCreate=Wanneer de database al bestaat, ga dan terug en vink "Creëer database" uit. WarningBrowserTooOld=Versie van browser is te oud. Het wordt ten zeerste aanbevolen om uw browser te upgraden naar een recente versie van Firefox, Chrome of Opera. diff --git a/htdocs/langs/nl_NL/knowledgemanagement.lang b/htdocs/langs/nl_NL/knowledgemanagement.lang index 3a3a2589d96..06642798ddf 100644 --- a/htdocs/langs/nl_NL/knowledgemanagement.lang +++ b/htdocs/langs/nl_NL/knowledgemanagement.lang @@ -46,8 +46,8 @@ KnowledgeRecords = Lidwoord KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Extravelden voor Artikel GroupOfTicket=Groep van tickets -YouCanLinkArticleToATicketCategory=Je kunt een artikel linken naar een ticket groep (dan wordt dit artikel als suggestie gegeven bij een nieuwe ticket) -SuggestedForTicketsInGroup=Suggested for tickets when group is +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) +SuggestedForTicketsInGroup=Aanbevolen voor tickets wanneer groep is SetObsolete=Markeer als overbodig ConfirmCloseKM=Wilt u bevestigen dat het sluiten van dit artikel overbodig is? diff --git a/htdocs/langs/nl_NL/loan.lang b/htdocs/langs/nl_NL/loan.lang index 82c7adbae4e..bd45d83e6fc 100644 --- a/htdocs/langs/nl_NL/loan.lang +++ b/htdocs/langs/nl_NL/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Financiële verplichting InterestAmount=Rente CapitalRemain=Saldo kapitaal TermPaidAllreadyPaid = Deze termijn is al betaald -CantUseScheduleWithLoanStartedToPaid = Kan planner niet gebruiken voor een lening waarvan de betaling is gestart +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = U kunt de rente niet wijzigen indien u een schema gebruikt # Admin ConfigLoan=Configuratie van de module lening diff --git a/htdocs/langs/nl_NL/main.lang b/htdocs/langs/nl_NL/main.lang index 5cbc2aaf8f2..d07f0299a3f 100644 --- a/htdocs/langs/nl_NL/main.lang +++ b/htdocs/langs/nl_NL/main.lang @@ -88,7 +88,7 @@ FileWasNotUploaded=Een bestand is geselecteerd als bijlage, maar is nog niet ge NbOfEntries=Aantal inzendingen GoToWikiHelpPage=Lees de online hulptekst (internettoegang vereist) GoToHelpPage=Lees de hulptekst -DedicatedPageAvailable=Dedicated help page related to your current screen +DedicatedPageAvailable=Speciale helppagina gerelateerd aan uw huidige scherm HomePage=Startpagina RecordSaved=Item opgeslagen RecordDeleted=Item verwijderd @@ -115,7 +115,7 @@ ReturnCodeLastAccessInError=Retourcode voor de meest recente fout bij het toegan InformationLastAccessInError=Informatie voor de meest recente database-toegangsverzoekfout DolibarrHasDetectedError=Dolibarr heeft een technische fout gedetecteerd YouCanSetOptionDolibarrMainProdToZero=U kunt het logbestand lezen of de optie $dolibarr_main_prod instellen op '0' in uw configuratiebestand voor meer informatie. -InformationToHelpDiagnose=This information can be useful for diagnostic purposes (you can set option $dolibarr_main_prod to '1' to hide sensitive information) +InformationToHelpDiagnose=Deze informatie kan nuttig zijn voor diagnostische doeleinden (u kunt optie $dolibarr_main_prod instellen op '1' om gevoelige informatie te verbergen) MoreInformation=Meer informatie TechnicalInformation=Technische gegevens TechnicalID=Technische ID @@ -212,8 +212,8 @@ User=Gebruiker Users=Gebruikers Group=Groep Groups=Groepen -UserGroup=User group -UserGroups=User groups +UserGroup=Gebruikersgroep +UserGroups=Gebruikersgroepen NoUserGroupDefined=Geen gebruikersgroep gedefinieerd Password=Wachtwoord PasswordRetype=Herhaal uw wachtwoord @@ -244,6 +244,7 @@ Designation=Omschrijving DescriptionOfLine=Regelomschrijving DateOfLine=Datum van regel DurationOfLine=Duur van de lijn +ParentLine=Bovenliggende lijn-ID Model=Document sjabloon DefaultModel=Standaard document sjabloon Action=Actie @@ -344,7 +345,7 @@ KiloBytes=KiloBytes MegaBytes=MegaBytes GigaBytes=GigaBytes TeraBytes=Terabytes -UserAuthor=opgemaakt door +UserAuthor=Aangemaakt door UserModif=Bijgewerkt door b=b Kb=Kb @@ -517,6 +518,7 @@ or=of Other=Overig Others=Overigen OtherInformations=Overige informatie +Workflow=Workflow Quantity=Hoeveelheid Qty=Aantal ChangedBy=Veranderd door @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Bijgevoegde bestanden en documenten JoinMainDoc=Word hoofddocument +JoinMainDocOrLastGenerated=Stuur het hoofddocument of het laatst gegenereerde document indien niet gevonden DateFormatYYYYMM=JJJJ-MM DateFormatYYYYMMDD=JJJJ-MM-DD DateFormatYYYYMMDDHHMM=JJJJ-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=Functie uitgeschakeld MoveBox=Verplaats widget Offered=Aanbod NotEnoughPermissions=U heeft geen toestemming voor deze actie +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Sessienaam Method=Methode Receive=Ontvangen @@ -798,6 +802,7 @@ URLPhoto=Url van foto / logo SetLinkToAnotherThirdParty=Link naar een andere derde LinkTo=Link naar LinkToProposal=Link naar offerte +LinkToExpedition= Link to expedition LinkToOrder=gekoppeld aan bestelling LinkToInvoice=Link naar factuur LinkToTemplateInvoice=Link naar sjabloon-factuur @@ -909,7 +914,7 @@ ViewFlatList=Weergeven als lijst ViewAccountList=Grootboek bekijken ViewSubAccountList=Bekijk het grootboek van de subrekening RemoveString='%s' string verwijderen -SomeTranslationAreUncomplete=Some of the languages offered may be only partially translated or may contain errors. Please help to correct your language by registering at https://transifex.com/projects/p/dolibarr/ to add your improvements. +SomeTranslationAreUncomplete=Sommige van de aangeboden talen zijn mogelijk slechts gedeeltelijk vertaald of kunnen fouten bevatten. Help uw taal te corrigeren door u te registreren op https://transifex.com/projects/p/dolibarr/ om uw verbeteringen toe te voegen. DirectDownloadLink=Openbare downloadlink PublicDownloadLinkDesc=Alleen de link is vereist om het bestand te downloaden DirectDownloadInternalLink=Privé downloadlink @@ -1161,6 +1166,17 @@ Properties=Eigenschappen hasBeenValidated=%s is gevalideerd ClientTZ=Tijdzone van de gebruiker NotClosedYet=Nog niet gesloten -ClearSignature=Reset signature -CanceledHidden=Canceled hidden -CanceledShown=Canceled shown +ClearSignature=Handtekening resetten +CanceledHidden=Geannuleerd verborgen +CanceledShown=Geannuleerd weergegeven +Terminate=Afbreken +Terminated=Verwijderd +AddLineOnPosition=Lijn op positie toevoegen (aan het einde indien leeg) +ConfirmAllocateCommercial=Bevestiging van verkoopvertegenwoordiger toewijzen +ConfirmAllocateCommercialQuestion=Weet u zeker dat u de geselecteerde record(s) %s wilt toewijzen? +CommercialsAffected=Betrokken verkoopvertegenwoordigers +CommercialAffected=Betrokken verkoopvertegenwoordiger +YourMessage=Uw bericht +YourMessageHasBeenReceived=Je bericht is ontvangen. We zullen zo snel mogelijk antwoorden of contact met je opnemen. +UrlToCheck=URL om te controleren +Automation=Automatisering diff --git a/htdocs/langs/nl_NL/members.lang b/htdocs/langs/nl_NL/members.lang index d6af5dc2441..7aad6d87357 100644 --- a/htdocs/langs/nl_NL/members.lang +++ b/htdocs/langs/nl_NL/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Einddatum lidmaatschap EndSubscription=Einde lidmaatschap SubscriptionId=Bijdrage ID WithoutSubscription=Zonder bijdrage -MemberId=Lid ID +MemberId=Member Id +MemberRef=Member Ref NewMember=Nieuw lid MemberType=Type lid MemberTypeId=Lidtype id @@ -187,7 +188,7 @@ MembersByRegion=Dit scherm toont u statistieken van leden per regio. MembersStatisticsDesc=Kies de statistieken die u wilt lezen... MenuMembersStats=Statistiek LastMemberDate=Laatste lidmaatschapsdatum -LatestSubscriptionDate=Latest contribution date +LatestSubscriptionDate=Datum laatste bijdrage MemberNature=Aard van het lid MembersNature=Aard van de leden Public=Informatie is openbaar @@ -204,19 +205,19 @@ ByProperties=Van nature MembersStatisticsByProperties=Ledenstatistieken per aard VATToUseForSubscriptions=BTW-tarief voor bijdragen NoVatOnSubscription=Geen BTW voor bijdragen -ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product used for contribution line into invoice: %s +ADHERENT_PRODUCT_ID_FOR_SUBSCRIPTIONS=Product gebruikt voor bijdrageregel op factuur: %s NameOrCompany=Naam of bedrijf SubscriptionRecorded=Bijdrage toegevoegd NoEmailSentToMember=Geen e-mail verzonden naar lid EmailSentToMember=E-mail verzonden naar lid op %s SendReminderForExpiredSubscriptionTitle=Stuur herinneringse-mail voor verlopen bijdragen -SendReminderForExpiredSubscription=Send reminder by email to members when contribution is about to expire (parameter is number of days before end of membership to send the remind. It can be a list of days separated by a semicolon, for example '10;5;0;-5') +SendReminderForExpiredSubscription=Stuur een herinnering per e-mail naar leden wanneer de bijdrage bijna verloopt (parameter is het aantal dagen voor het einde van het lidmaatschap om de herinnering te verzenden. Het kan een lijst met dagen zijn, gescheiden door een puntkomma, bijvoorbeeld '10;5;0;-5 ') MembershipPaid=Lidmaatschap betaald voor huidige periode (tot %s) YouMayFindYourInvoiceInThisEmail=Mogelijk vindt u uw factuur bij deze e-mail XMembersClosed=%s lid (leden) gesloten XExternalUserCreated=%s externe gebruiker(s) aangemaakt ForceMemberNature=Forceer de aard van het lid (individueel of corporatie) CreateDolibarrLoginDesc=Het maken van een gebruikerslogin voor leden geeft toegang tot de applicatie. Afhankelijk van de verleende rechten, zullen ze (bijvoorbeeld) al dan niet hun eigen bestand kunnen raadplegen of aanpassen. -CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +CreateDolibarrThirdPartyDesc=Een derde partij is de rechtspersoon die op de factuur wordt gebruikt als u besluit voor elke bijdrage een factuur te genereren. U kunt deze later tijdens het opnemen van de bijdrage maken. MemberFirstname=Voornaam lid MemberLastname=Naam lid diff --git a/htdocs/langs/nl_NL/oauth.lang b/htdocs/langs/nl_NL/oauth.lang index 70ca70bc9dd..c0a609675ad 100644 --- a/htdocs/langs/nl_NL/oauth.lang +++ b/htdocs/langs/nl_NL/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token is gegenereerd en opgeslagen in locale database NewTokenStored=Token ontvangen en opgeslagen ToCheckDeleteTokenOnProvider=Klik hier om de autorisatie te controleren/verwijderen die is opgeslagen door%sOAuth-provider TokenDeleted=Token verwijderd -RequestAccess=Klik hier voor her-opvragen/vernieuwen van toegang en ontvang een nieuw token te bewaren. +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Klik hier om token te verwijderen UseTheFollowingUrlAsRedirectURI=Gebruik de volgende URL als de omleidings-URI bij het maken van uw inloggegevens bij uw OAuth-provider: -ListOfSupportedOauthProviders=Voer de inloggegevens in die door uw OAuth2-provider zijn verstrekt. Alleen ondersteunde OAuth2-providers worden hier vermeld. Deze services kunnen worden gebruikt door andere modules die OAuth2-authenticatie nodig hebben. -OAuthSetupForLogin=Pagina om Oauth token te genereren +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Zie vorige tab +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID en Secret TOKEN_REFRESH=Token Vernieuw aanwezig TOKEN_EXPIRED=Token verlopen @@ -23,10 +24,13 @@ TOKEN_DELETE=Verwijder opgeslagen token OAUTH_GOOGLE_NAME=OAuth Google-service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Ga naar deze pagina en vervolgens "Referenties" om OAuth-referenties te maken OAUTH_GITHUB_NAME=OAuth GitHub-service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Ga naar deze pagina en "Registreer een nieuwe toepassing" om OAuth-referenties te maken +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/nl_NL/other.lang b/htdocs/langs/nl_NL/other.lang index ec29d4a2752..5dbd76ee1d3 100644 --- a/htdocs/langs/nl_NL/other.lang +++ b/htdocs/langs/nl_NL/other.lang @@ -35,9 +35,9 @@ OnlyOneFieldForXAxisIsPossible=Momenteel is slechts 1 veld mogelijk als X-as. Al AtLeastOneMeasureIsRequired=Er is minimaal 1 veld voor meting vereist AtLeastOneXAxisIsRequired=Er is minimaal 1 veld voor X-as vereist LatestBlogPosts=Laatste blogberichten -notiftouser=To users -notiftofixedemail=To fixed mail -notiftouserandtofixedemail=To user and fixed mail +notiftouser=Aan gebruikers +notiftofixedemail=Naar vaste post +notiftouserandtofixedemail=Naar gebruiker en vaste mail Notify_ORDER_VALIDATE=Klantorder gevalideerd Notify_ORDER_SENTBYMAIL=Klantorder verzonden per post Notify_ORDER_SUPPLIER_SENTBYMAIL=Aankooporder verzonden per e-mail @@ -110,7 +110,7 @@ ChooseYourDemoProfilMore=... of bouw je eigen profiel
(handmatige modulesel DemoFundation=Ledenbeheer van een stichting DemoFundation2=Beheer van de leden en de bankrekening van een stichting DemoCompanyServiceOnly=Bedrijf of freelance verkoopservice alleen -DemoCompanyShopWithCashDesk=Manage a shop with a cash box +DemoCompanyShopWithCashDesk=Beheer een winkel met een kassa DemoCompanyProductAndStocks=Producten verkocht in winkel met POS DemoCompanyManufacturing=Bedrijf dat producten vervaardigt DemoCompanyAll=Bedrijf met meerdere activiteiten (alle hoofdmodules) @@ -258,10 +258,10 @@ PassEncoding=Wachtwoord codering PermissionsAdd=Rechten toegevoegd PermissionsDelete=Rechten verwijderd YourPasswordMustHaveAtLeastXChars=Uw wachtwoord moet minimaal %s karakters bevatten -PasswordNeedAtLeastXUpperCaseChars=The password need at least %s upper case chars -PasswordNeedAtLeastXDigitChars=The password need at least %s numeric chars -PasswordNeedAtLeastXSpecialChars=The password need at least %s special chars -PasswordNeedNoXConsecutiveChars=The password must not have %s consecutive similar chars +PasswordNeedAtLeastXUpperCaseChars=Het wachtwoord heeft minimaal %s hoofdletters nodig +PasswordNeedAtLeastXDigitChars=Het wachtwoord heeft minimaal %s numerieke tekens nodig +PasswordNeedAtLeastXSpecialChars=Het wachtwoord heeft minimaal %s speciale tekens nodig +PasswordNeedNoXConsecutiveChars=Het wachtwoord mag geen %s opeenvolgende vergelijkbare tekens hebben YourPasswordHasBeenReset=Uw wachtwoord is met succes gereset ApplicantIpAddress=IP-adres van aanvrager SMSSentTo=SMS verzonden naar %s @@ -272,7 +272,7 @@ ProjectCreatedByEmailCollector=Project gemaakt door e-mailverzamelaar uit e-mail TicketCreatedByEmailCollector=Ticket gemaakt door e-mailverzamelaar vanuit e-mail MSGID %s OpeningHoursFormatDesc=Gebruik a - om de openings- en sluitingsuren te scheiden.
Gebruik een spatie om verschillende bereiken in te voeren.
Voorbeeld: 8-12 14-18 SuffixSessionName=Achtervoegsel voor sessienaam -LoginWith=Login with %s +LoginWith=Log in met %s ##### Export ##### ExportsArea=Uitvoeroverzicht @@ -303,4 +303,25 @@ SelectTheTypeOfObjectToAnalyze=Selecteer een object om de statistieken te bekijk ConfirmBtnCommonContent = Weet je zeker dat je "1%s"? ConfirmBtnCommonTitle = Bevestig CloseDialog = Sluiten -Autofill = Autofill +Autofill = Automatisch aanvullen + +# externalsite +ExternalSiteSetup=Instellingen voor de link naar een externe website +ExternalSiteURL=Externe site-URL van HTML-iframe-inhoud +ExternalSiteModuleNotComplete=Module Externe Site werd niet correct geconfigureerd. +ExampleMyMenuEntry=Mijn menu-item + +# FTP +FTPClientSetup=FTP of SFTP Client module setup +NewFTPClient=Nieuwe FTP/SFTP connectie instellen +FTPArea=FTP/SFTP omgeving +FTPAreaDesc=Dit scherm geeft een voorbeeld van een FTP of SFTP server weer +SetupOfFTPClientModuleNotComplete=De setup van de FTP- of SFTP-clientmodule lijkt niet volledig +FTPFeatureNotSupportedByYourPHP=Uw PHP ondersteunt geen FTP- of SFTP-functies +FailedToConnectToFTPServer=Kan geen verbinding maken met server (server%s, poort%s) +FailedToConnectToFTPServerWithCredentials=Inloggen op server met gedefinieerde login / wachtwoord is mislukt +FTPFailedToRemoveFile=Bestand %s kon niet verwijderd worden. +FTPFailedToRemoveDir=Kan map %s niet verwijderen: controleer de machtigingen en of de map leeg is. +FTPPassiveMode=Passive mode +ChooseAFTPEntryIntoMenu=Kies een FTP / SFTP-site uit het menu ... +FailedToGetFile=%sBestanden niet ontvangen diff --git a/htdocs/langs/nl_NL/projects.lang b/htdocs/langs/nl_NL/projects.lang index 6e3a080beb1..6d974c93227 100644 --- a/htdocs/langs/nl_NL/projects.lang +++ b/htdocs/langs/nl_NL/projects.lang @@ -6,7 +6,7 @@ ProjectLabel=Projectlabel ProjectsArea=Project omgeving ProjectStatus=Project status SharedProject=Iedereen -PrivateProject=Assigned contacts +PrivateProject=Toegewezen contacten ProjectsImContactFor=Projecten waarvoor ik expliciet contactpersoon ben AllAllowedProjects=Alle projecten die ik kan lezen (mine + public) AllProjects=Alle projecten @@ -190,7 +190,7 @@ PlannedWorkload=Geplande workload PlannedWorkloadShort=Workload ProjectReferers=Gerelateerde items ProjectMustBeValidatedFirst=Project moet eerst worden gevalideerd -MustBeValidatedToBeSigned=%s must be validated first to be set to Signed. +MustBeValidatedToBeSigned=%s moet eerst worden gevalideerd om te worden ingesteld op Ondertekend. FirstAddRessourceToAllocateTime=Wijs een gebruikersresource toe als contactpersoon van het project om tijd toe te wijzen InputPerDay=Input per dag InputPerWeek=Input per week @@ -198,7 +198,7 @@ InputPerMonth=Input per maand InputDetail=Invoerdetail TimeAlreadyRecorded=Dit is de tijdsbesteding die al is vastgelegd voor deze taak / dag en gebruiker %s ProjectsWithThisUserAsContact=Projecten met deze gebruiker als contact -ProjectsWithThisContact=Projects with this contact +ProjectsWithThisContact=Projecten met dit contact TasksWithThisUserAsContact=Taken toegekend aan gebruiker ResourceNotAssignedToProject=Niet toegewezen aan project ResourceNotAssignedToTheTask=Niet toegewezen aan de taak @@ -259,7 +259,7 @@ TimeSpentInvoiced=Tijd besteed gefactureerd TimeSpentForIntervention=Bestede tijd TimeSpentForInvoice=Bestede tijd OneLinePerUser=Eén regel per gebruiker -ServiceToUseOnLines=Service voor gebruik op lijnen +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Factuur %s is gegenereerd op basis van de tijd besteed aan het project InterventionGeneratedFromTimeSpent=Interventie %s is gegenereerd op basis van tijd besteed aan project ProjectBillTimeDescription=Controleer of u urenstaat invoert voor taken van het project EN u van plan bent om facturen uit de urenstaat te genereren om de klant van het project te factureren (controleer niet of u een factuur wilt creëren die niet is gebaseerd op ingevoerde urenstaten). Opmerking: Om de factuur te genereren, gaat u naar het tabblad 'Bestede tijd' van het project en selecteert u de regels die u wilt opnemen. @@ -276,7 +276,7 @@ NewInter=Nieuwe interventie OneLinePerTask=Eén regel per taak OneLinePerPeriod=Eén regel per periode OneLinePerTimeSpentLine=Eén regel voor elke tijdsbestedingsdeclaratie -AddDetailDateAndDuration=With date and duration into line description +AddDetailDateAndDuration=Met datum en duur in regelbeschrijving RefTaskParent=Ref. Bovenliggende taak ProfitIsCalculatedWith=Winst wordt berekend met AddPersonToTask=Voeg ook toe aan taken @@ -284,13 +284,14 @@ UsageOrganizeEvent=Gebruik: Evenementenorganisatie PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE=Classificeer project als gesloten wanneer alle taken zijn voltooid (100%% voortgang) PROJECT_CLASSIFY_CLOSED_WHEN_ALL_TASKS_DONE_help=Opmerking: de voortgang van bestaande projecten met alle taken op 100%% wordt niet beïnvloed: u zult ze handmatig moeten sluiten. Deze optie is alleen van invloed op open projecten. SelectLinesOfTimeSpentToInvoice=Selecteer tijdsregels die niet zijn gefactureerd en vervolgens de bulkactie "Factuur genereren" om ze te factureren -ProjectTasksWithoutTimeSpent=Project tasks without time spent -FormForNewLeadDesc=Thanks to fill the following form to contact us. You can also send us an email directly to %s. -ProjectsHavingThisContact=Projects having this contact +ProjectTasksWithoutTimeSpent=Projecttaken zonder tijdsbesteding +FormForNewLeadDesc=Bedankt om het volgende formulier in te vullen om contact met ons op te nemen. U kunt ons ook rechtstreeks een e-mail sturen naar %s . +ProjectsHavingThisContact=Projecten met dit contact StartDateCannotBeAfterEndDate=Einddatum kan niet vóór startdatum liggen -ErrorPROJECTLEADERRoleMissingRestoreIt=The "PROJECTLEADER" role is missing or has been de-activited, please restore in the dictionary of contact types -LeadPublicFormDesc=You can enable here a public page to allow your prospects to make a first contact to you from a public online form -EnablePublicLeadForm=Enable the public form for contact -NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. -NewLeadForm=New contact form -LeadFromPublicForm=Online lead from public form +ErrorPROJECTLEADERRoleMissingRestoreIt=De rol "PROJECTLEADER" ontbreekt of is gedeactiveerd, herstel deze in het woordenboek van contacttypes +LeadPublicFormDesc=U kunt hier een openbare pagina inschakelen zodat uw prospects een eerste contact met u kunnen opnemen vanuit een openbaar online formulier +EnablePublicLeadForm=Schakel het openbare formulier in voor contact +NewLeadbyWeb=Uw bericht of verzoek is opgenomen. Wij zullen spoedig antwoorden of contact met u opnemen. +NewLeadForm=Nieuw contactformulier +LeadFromPublicForm=Online lead uit openbare vorm +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/nl_NL/stocks.lang b/htdocs/langs/nl_NL/stocks.lang index aa26e6ddf0d..51d84cdaf06 100644 --- a/htdocs/langs/nl_NL/stocks.lang +++ b/htdocs/langs/nl_NL/stocks.lang @@ -12,9 +12,9 @@ AddWarehouse=Aanmaken magazijn AddOne=Voeg toe DefaultWarehouse=Standaardmagazijn WarehouseTarget=Doelmagazijn -ValidateSending=Confirm shipment -CancelSending=Cancel shipment -DeleteSending=Delete shipment +ValidateSending=Bevestig verzending +CancelSending=Annuleer verzending +DeleteSending=Verwijder verzending Stock=Voorraad Stocks=Voorraden MissingStocks=Ontbrekende voorraad @@ -62,8 +62,8 @@ AllowAddLimitStockByWarehouse=Beheer ook de waarde voor minimale en gewenste voo RuleForWarehouse=Voorwaarden magazijnen WarehouseAskWarehouseOnThirparty=Stel een magazijn in op Derden WarehouseAskWarehouseDuringPropal=Stel een magazijn in op offertes -WarehouseAskWarehouseDuringOrder=Set a warehouse on Sales Orders -WarehouseAskWarehouseDuringProject=Set a warehouse on Projects +WarehouseAskWarehouseDuringOrder=Stel een magazijn in op verkoop orders +WarehouseAskWarehouseDuringProject=Stel een magazijn in op projecten UserDefaultWarehouse=Stel een magazijn in op gebruikers MainDefaultWarehouse=Standaardmagazijn MainDefaultWarehouseUser=Gebruik standaard magazijn voor elke gebruiker @@ -96,7 +96,7 @@ RealStock=Werkelijke voorraad RealStockDesc=Fysieke/echte voorraad is de voorraad die momenteel in de magazijnen aanwezig is. RealStockWillAutomaticallyWhen=De werkelijke voorraad wordt aangepast volgens deze regel (zoals gedefinieerd in de module Voorraad): VirtualStock=Virtuele voorraad -VirtualStockAtDate=Virtual stock at a future date +VirtualStockAtDate=Virtuele voorraad op een toekomstige datum VirtualStockAtDateDesc=Virtuele voorraad zodra alle lopende bestellingen die gepland zijn om vóór de gekozen datum te worden verwerkt, zijn voltooid VirtualStockDesc=Virtuele voorraad is de berekende voorraad die beschikbaar is zodra alle openstaande / lopende acties (die van invloed zijn op voorraden) zijn gesloten (inkooporders ontvangen, verkooporders verzonden, productieorders geproduceerd, enz.) AtDate=op datum @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Voorraad alarm en gewenste optimale voorraad correc ProductStockWarehouseUpdated=Voorraad alarm en gewenste optimale voorraad correct bijgewerkt ProductStockWarehouseDeleted=Voorraad alarm en gewenste optimale voorraad correct verwijderd AddNewProductStockWarehouse=Stel nieuwe limiet in voor waarschuwing en gewenste optimale voorraad -AddStockLocationLine=Verlaag de hoeveelheid en klik vervolgens op een ​​ander magazijn om dit product toe te voegen +AddStockLocationLine=Verlaag het aantal en klik om de regel te splitsen InventoryDate=Datum inventarisatie Inventories=Inventariseringen NewInventory=Nieuwe inventarisatie @@ -195,7 +195,7 @@ inventoryEdit=Bewerken inventoryValidate=Gevalideerd inventoryDraft=Lopende inventorySelectWarehouse=Magazijn -inventoryConfirmCreate=Create +inventoryConfirmCreate=Maak aan inventoryOfWarehouse=Voorraad voor magazijn: %s inventoryErrorQtyAdd=Fout: één hoeveelheid is kleiner dan nul inventoryMvtStock=Inventarisatie @@ -207,10 +207,10 @@ INVENTORY_USE_INVENTORY_DATE_FOR_DATE_OF_MVT=Voorraadbewegingen hebben de datum inventoryChangePMPPermission=Sta toe om de PMP-waarde voor een product te wijzigen ColumnNewPMP=Nieuwe eenheid PMP OnlyProdsInStock=Voeg geen product toe zonder voorraad -TheoricalQty=Theorical qty -TheoricalValue=Theorical qty +TheoricalQty=theoretische aantal +TheoricalValue=theoretische aantal LastPA=Laatste BP -CurrentPA=Curent BP +CurrentPA=Huidige BP RecordedQty=Aantal opgenomen RealQty=Echte aantal RealValue=Werkelijke waarde @@ -221,7 +221,7 @@ ApplyPMP=Pas PMP toe FlushInventory=Voorraad op 'nul' zetten ConfirmFlushInventory=Bevestigen? InventoryFlushed=Inventarisatie opgeschoond -ExitEditMode=Exit editie +ExitEditMode=Editie afsluiten inventoryDeleteLine=Verwijderen regel RegulateStock=Voorraad reguleren ListInventory=Lijstoverzicht @@ -241,7 +241,7 @@ StockAtDatePastDesc=U kunt hier de echte voorraad op een bepaalde datum in het v StockAtDateFutureDesc=U kunt hier de voorraad (virtuele voorraad) op een bepaalde datum in de toekomst bekijken CurrentStock=Huidige voorraad InventoryRealQtyHelp=Stel de waarde in op 0 om het aantal te resetten
Veld leeg laten of regel verwijderen om ongewijzigd te houden -UpdateByScaning=Complete real qty by scaning +UpdateByScaning=Voltooi het werkelijke aantal door te scannen UpdateByScaningProductBarcode=Update door scan (product barcode) UpdateByScaningLot=Update door scan (partij/serie barcode) DisableStockChangeOfSubProduct=De-activeer tijdens deze bewerking de voorraad voor alle subproducten van deze kit. @@ -254,20 +254,64 @@ ReOpen=Heropenen ConfirmFinish=Bevestigt u de sluiting van de inventarisatie? Hiermee worden alle voorraadbewegingen gegenereerd om uw voorraad bij te werken naar de werkelijke hoeveelheid die u in de inventarisatie hebt ingevoerd. ObjectNotFound=%s niet gevonden MakeMovementsAndClose=Bewegingen genereren en sluiten -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Vul de werkelijke hoeveelheid in met de verwachte hoeveelheid ShowAllBatchByDefault=Toon standaard batchgegevens op het tabblad "voorraad" van het product CollapseBatchDetailHelp=U kunt de standaardweergave van batchdetails instellen in de configuratie van de voorraadmodule -ErrorWrongBarcodemode=Unknown Barcode mode -ProductDoesNotExist=Product does not exist -ErrorSameBatchNumber=Several record for the batch number were found in the inventory sheet. No way to know which one to increase. -ProductBatchDoesNotExist=Product with batch/serial does not exist -ProductBarcodeDoesNotExist=Product with barcode does not exist -WarehouseId=Warehouse ID -WarehouseRef=Warehouse Ref -SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ErrorWrongBarcodemode=Onbekende streepjescode modus +ProductDoesNotExist=Product bestaat niet +ErrorSameBatchNumber=Op het inventarisblad werden verschillende records voor het batchnummer gevonden. Geen mogelijke manier om te bepalen welke te verhogen. +ProductBatchDoesNotExist=Product met batch/serienummer bestaat niet +ProductBarcodeDoesNotExist=Product met streepjescode bestaat niet +WarehouseId=Magazijn ID +WarehouseRef=Magazijnreferentie +SaveQtyFirst=Sla eerst de werkelijk geïnventariseerde hoeveelheden op, voordat u vraagt om de voorraadverplaatsing aan te maken. +ToStart=Start InventoryStartedShort=Gestart -ErrorOnElementsInventory=Operation canceled for the following reason: -ErrorCantFindCodeInInventory=Can't find the following code in inventory -QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. -StockChangeDisabled=Change on stock disabled -NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ErrorOnElementsInventory=Bewerking geannuleerd om de volgende reden: +ErrorCantFindCodeInInventory=Kan de volgende code niet vinden in de inventaris +QtyWasAddedToTheScannedBarcode=Succes! De hoeveelheid is toegevoegd aan alle gevraagde streepjescodes. U kunt de scannertool sluiten. +StockChangeDisabled=Wijziging op voorraad is uitgeschakeld +NoWarehouseDefinedForTerminal=Geen magazijn gedefinieerd voor terminal +ClearQtys=Wis alle hoeveelheden +ModuleStockTransferName=Geavanceerde voorraadoverdracht +ModuleStockTransferDesc=Geavanceerd beheer van Stock Transfer, met generatie van transferblad +StockTransferNew=Nieuwe voorraad overdracht +StockTransferList=Lijst met voorraadoverdrachten +ConfirmValidateStockTransfer=Weet u zeker dat u deze aandelenoverdracht wilt valideren met referentie %s ? +ConfirmDestock=Afname van voorraden met overdracht %s +ConfirmDestockCancel=Afname van voorraden annuleren met overboeking %s +DestockAllProduct=Afname van voorraden +DestockAllProductCancel=Annuleer voorraadafname +ConfirmAddStock=Voorraden vergroten met overdracht %s +ConfirmAddStockCancel=Toename van voorraden annuleren met overboeking %s +AddStockAllProduct=Toename van voorraden +AddStockAllProductCancel=Annuleer verhoging van de voorraden +DatePrevueDepart=Beoogde vertrekdatum +DateReelleDepart=Echte vertrekdatum +DatePrevueArrivee=Geplande aankomstdatum +DateReelleArrivee=Echte aankomstdatum +HelpWarehouseStockTransferSource=Als dit magazijn is ingesteld, zijn alleen hijzelf en de onderliggende items beschikbaar als bronmagazijn +HelpWarehouseStockTransferDestination=Als dit magazijn is ingesteld, zijn alleen hijzelf en zijn kinderen beschikbaar als bestemmingsmagazijn +LeadTimeForWarning=Doorlooptijd vóór alarm (in dagen) +TypeContact_stocktransfer_internal_STFROM=Afzender van aandelenoverdracht +TypeContact_stocktransfer_internal_STDEST=Ontvanger van aandelenoverdracht +TypeContact_stocktransfer_internal_STRESP=Verantwoordelijk voor voorraadoverdracht +StockTransferSheet=Overboekingsblad voorraden +StockTransferSheetProforma=Proforma aandelenoverdrachtsblad +StockTransferDecrementation=Bronmagazijnen verkleinen +StockTransferIncrementation=Bestemmingsmagazijnen vergroten +StockTransferDecrementationCancel=Afbouw van bronmagazijnen annuleren +StockTransferIncrementationCancel=Verhoging van bestemmingsmagazijnen annuleren +StockStransferDecremented=Bronmagazijnen afgenomen +StockStransferDecrementedCancel=Afname van bronmagazijnen geannuleerd +StockStransferIncremented=Gesloten - Voorraden overgedragen +StockStransferIncrementedShort=Overgedragen aandelen +StockStransferIncrementedShortCancel=Toename bestemmingsmagazijnen geannuleerd +StockTransferNoBatchForProduct=Product %s gebruikt geen batch, wis batch online en probeer het opnieuw +StockTransferSetup = Configuratie van de Aandelenoverdrachtmodule +Settings=Instellingen +StockTransferSetupPage = Configuratiepagina voor aandelenoverdrachtmodule +StockTransferRightRead=Aandelenoverdrachten lezen +StockTransferRightCreateUpdate=Aanmaken/bijwerken van aandelenoverdrachten +StockTransferRightDelete=Aandelenoverdrachten verwijderen +BatchNotFound=Lot / serienummer niet gevonden voor dit product diff --git a/htdocs/langs/nl_NL/ticket.lang b/htdocs/langs/nl_NL/ticket.lang index c0a06054ace..55c5e8259e0 100644 --- a/htdocs/langs/nl_NL/ticket.lang +++ b/htdocs/langs/nl_NL/ticket.lang @@ -90,15 +90,17 @@ TicketPublicAccess=Een openbare interface waarbij geen identificatie vereist is, TicketSetupDictionaries=Het type ticket, ernst en analysecodes zijn configureerbaar vanuit woordenboeken TicketParamModule=Module variabele instelling TicketParamMail=E-mail set-up -TicketEmailNotificationFrom=Sender e-mail for ticket answers -TicketEmailNotificationFromHelp=Sender e-mail for ticket answers sent from Dolibarr -TicketEmailNotificationTo=Notify ticket creation to this e-mail address -TicketEmailNotificationToHelp=If present, this e-mail address will be notified of a ticket creation +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com +TicketEmailNotificationTo=Meld het aanmaken van tickets naar dit e-mailadres +TicketEmailNotificationToHelp=Indien aanwezig, wordt dit e-mailadres op de hoogte gebracht van het aanmaken van een ticket TicketNewEmailBodyLabel=SMS verzonden na het maken van een ticket TicketNewEmailBodyHelp=De tekst die hier wordt opgegeven, wordt in de e-mail ingevoegd die bevestigt dat er een nieuwe ticket is aangemaakt in de openbare interface. Informatie over de raadpleging van de ticket wordt automatisch toegevoegd. TicketParamPublicInterface=Instellingen openbare interface TicketsEmailMustExist=Vereist een bestaand e-mailadres om een ​​ticket aan te maken TicketsEmailMustExistHelp=In de openbare interface moet het e-mailadres al in de database zijn ingevuld om een ​​nieuwe ticket aan te kunnen maken. +TicketCreateThirdPartyWithContactIfNotExist=Vraag naam en bedrijfsnaam voor onbekende e-mails. +TicketCreateThirdPartyWithContactIfNotExistHelp=Controleer of er een derde partij of een contactpersoon bestaat voor het ingevoerde e-mailadres. Zo niet, vraag dan een naam en een bedrijfsnaam om een derde partij met contact aan te maken. PublicInterface=Publieke interface TicketUrlPublicInterfaceLabelAdmin=Alternatieve URL voor openbare interface TicketUrlPublicInterfaceHelpAdmin=Het is mogelijk om een alias voor de webserver te definiëren en zo de openbare interface met een andere URL beschikbaar te stellen (de server moet als proxy op deze nieuwe URL fungeren) @@ -136,17 +138,17 @@ TicketsPublicNotificationNewMessage=Stuur e-mail(s) wanneer een nieuw bericht/op TicketsPublicNotificationNewMessageHelp=Stuur e-mail (s) wanneer een nieuw bericht is toegevoegd vanuit de openbare interface (naar de toegewezen gebruiker of de e-mail met meldingen naar (update) en / of de e-mail met meldingen naar) TicketPublicNotificationNewMessageDefaultEmail=E-mailmeldingen voor (update) TicketPublicNotificationNewMessageDefaultEmailHelp=Stuur een e-mail naar dit adres voor elke nieuw berichtmelding als er geen gebruiker aan het ticket is toegewezen of als de gebruiker geen bekend e-mailadres heeft. -TicketsAutoReadTicket=Automatically mark the ticket as read (when created from backoffice) -TicketsAutoReadTicketHelp=Automatically mark the ticket as read when created from backoffice. When ticket is create from the public interface, ticket remains with the status "Not Read". -TicketsDelayBeforeFirstAnswer=A new ticket should receive a first answer before (hours): -TicketsDelayBeforeFirstAnswerHelp=If a new ticket has not received an answer after this time period (in hours), an important warning icon will be displayed in the list view. -TicketsDelayBetweenAnswers=An unresolved ticket should not be unactive during (hours): -TicketsDelayBetweenAnswersHelp=If an unresolved ticket that has already received an answer has not had further interaction after this time period (in hours), a warning icon will be displayed in the list view. -TicketsAutoNotifyClose=Automatically notify thirdparty when closing a ticket -TicketsAutoNotifyCloseHelp=When closing a ticket, you will be proposed to send a message to one of thirdparty's contacts. On mass closing, a message will be sent to one contact of the thirdparty linked to the ticket. -TicketWrongContact=Provided contact is not part of current ticket contacts. Email not sent. -TicketChooseProductCategory=Product category for ticket support -TicketChooseProductCategoryHelp=Select the product category of ticket support. This will be used to automatically link a contract to a ticket. +TicketsAutoReadTicket=Markeer het ticket automatisch als gelezen (indien aangemaakt vanuit backoffice) +TicketsAutoReadTicketHelp=Markeer het ticket automatisch als gelezen wanneer het vanuit de backoffice wordt aangemaakt. Wanneer een ticket wordt aangemaakt vanuit de openbare interface, blijft het ticket met de status "Niet gelezen". +TicketsDelayBeforeFirstAnswer=Een nieuw ticket moet een eerste antwoord ontvangen vóór (uren): +TicketsDelayBeforeFirstAnswerHelp=Als een nieuw ticket na deze periode (in uren) geen antwoord heeft gekregen, wordt er een belangrijk waarschuwingspictogram weergegeven in de lijstweergave. +TicketsDelayBetweenAnswers=Een onopgelost ticket mag niet inactief zijn tijdens (uren): +TicketsDelayBetweenAnswersHelp=Als een onopgelost ticket waarop al een antwoord is ontvangen na deze tijdsperiode (in uren) geen verdere interactie heeft gehad, wordt een waarschuwingspictogram weergegeven in de lijstweergave. +TicketsAutoNotifyClose=Automatisch derden op de hoogte stellen bij het sluiten van een ticket +TicketsAutoNotifyCloseHelp=Bij het sluiten van een ticket wordt u voorgesteld een bericht te sturen naar een van de contacten van derden. Bij massale sluiting wordt er een bericht gestuurd naar één contactpersoon van de derde partij die aan het ticket is gekoppeld. +TicketWrongContact=Mits contact maakt geen deel uit van de huidige ticketcontacten. E-mail niet verzonden. +TicketChooseProductCategory=Productcategorie voor ticketondersteuning +TicketChooseProductCategoryHelp=Selecteer de productcategorie van ticketondersteuning. Hiermee wordt automatisch een contract aan een ticket gekoppeld. # # Index & list page @@ -163,8 +165,8 @@ OrderByDateAsc=Sorteer op oplopende datum OrderByDateDesc=Sorteer op aflopende datum ShowAsConversation=Weergeven als conversatielijst MessageListViewType=Weergeven als tabellijst -ConfirmMassTicketClosingSendEmail=Automatically send emails when closing tickets -ConfirmMassTicketClosingSendEmailQuestion=Do you want to notify thirdparties when closing these tickets ? +ConfirmMassTicketClosingSendEmail=Automatisch e-mails verzenden bij het sluiten van tickets +ConfirmMassTicketClosingSendEmailQuestion=Wilt u derden verwittigen bij het afsluiten van deze tickets? # # Ticket card @@ -219,12 +221,12 @@ ErrorMailRecipientIsEmptyForSendTicketMessage=Geadresseerde is leeg. Geen e-mail TicketGoIntoContactTab=Ga naar het tabblad "Contacten" om ze te selecteren TicketMessageMailIntro=Introductie TicketMessageMailIntroHelp=Deze tekst wordt alleen aan het begin van de e-mail toegevoegd en zal niet worden opgeslagen. -TicketMessageMailIntroLabelAdmin=Introduction text to all ticket answers -TicketMessageMailIntroText=Hello,
A new answer has been added to a ticket that you follow. Here is the message:
-TicketMessageMailIntroHelpAdmin=This text will be inserted before the answer when replying to a ticket from Dolibarr +TicketMessageMailIntroLabelAdmin=Introductietekst voor alle ticketantwoorden +TicketMessageMailIntroText=Hallo,
Er is een nieuw antwoord toegevoegd aan een ticket dat je volgt. Hier is het bericht:
+TicketMessageMailIntroHelpAdmin=Deze tekst wordt voor het antwoord ingevoegd bij het beantwoorden van een ticket van Dolibarr TicketMessageMailSignature=Handtekening TicketMessageMailSignatureHelp=Deze tekst wordt alleen aan het einde van de e-mail toegevoegd en wordt niet opgeslagen. -TicketMessageMailSignatureText=Message sent by %s via Dolibarr +TicketMessageMailSignatureText=Bericht verzonden door %s via Dolibarr TicketMessageMailSignatureLabelAdmin=Handtekening van reactie e-mail TicketMessageMailSignatureHelpAdmin=Deze tekst wordt ingevoegd na het antwoordbericht. TicketMessageHelp=Alleen deze tekst zal worden bewaard in de berichtenlijst op de ticketkaart. @@ -252,16 +254,16 @@ TicketChangeStatus=Verander status TicketConfirmChangeStatus=Bevestig de statusverandering: %s? TicketLogStatusChanged=Status gewijzigd: %s in %s TicketNotNotifyTiersAtCreate=Geen bedrijf melden bij aanmaken -NotifyThirdpartyOnTicketClosing=Contacts to notify while closing the ticket -TicketNotifyAllTiersAtClose=All related contacts -TicketNotNotifyTiersAtClose=No related contact +NotifyThirdpartyOnTicketClosing=Contacten om op de hoogte te stellen tijdens het sluiten van het ticket +TicketNotifyAllTiersAtClose=Alle gerelateerde contacten +TicketNotNotifyTiersAtClose=Geen gerelateerd contact Unread=Niet gelezen TicketNotCreatedFromPublicInterface=Niet beschikbaar. Ticket is niet gemaakt vanuit de openbare interface. ErrorTicketRefRequired=Naam van ticket is vereist -TicketsDelayForFirstResponseTooLong=Too much time elapsed since ticket opening without any answer. -TicketsDelayFromLastResponseTooLong=Too much time elapsed since last answer on this ticket. -TicketNoContractFoundToLink=No contract was found to be automatically linked to this ticket. Please link a contract manually. -TicketManyContractsLinked=Many contracts have been automatically linked to this ticket. Make sure to verify which should be chosen. +TicketsDelayForFirstResponseTooLong=Er is te veel tijd verstreken sinds het openen van het ticket zonder enig antwoord. +TicketsDelayFromLastResponseTooLong=Er is te veel tijd verstreken sinds het laatste antwoord op dit ticket. +TicketNoContractFoundToLink=Er is geen contract gevonden dat automatisch aan dit ticket is gekoppeld. Koppel een contract a.u.b. handmatig. +TicketManyContractsLinked=Veel contracten zijn automatisch aan dit ticket gekoppeld. Zorg ervoor dat u controleert welke moet worden gekozen. # # Logs @@ -289,9 +291,9 @@ TicketNewEmailBody=Dit is een automatische e-mail om te bevestigen dat je een ni TicketNewEmailBodyCustomer=Dit is een automatische e-mail om te bevestigen dat er zojuist een nieuw ticket is aangemaakt in uw account. TicketNewEmailBodyInfosTicket=Informatie voor het bewaken van het ticket TicketNewEmailBodyInfosTrackId=Ticket volgnummer: %s -TicketNewEmailBodyInfosTrackUrl=You can view the progress of the ticket by clicking the following link +TicketNewEmailBodyInfosTrackUrl=U kunt de voortgang van het ticket bekijken door op de volgende link te klikken: TicketNewEmailBodyInfosTrackUrlCustomer=U kunt de voortgang van het ticket bekijken in de specifieke interface door op de volgende link te klikken -TicketCloseEmailBodyInfosTrackUrlCustomer=You can consult the history of this ticket by clicking the following link +TicketCloseEmailBodyInfosTrackUrlCustomer=U kunt de geschiedenis van dit ticket raadplegen door op de volgende link te klikken TicketEmailPleaseDoNotReplyToThisEmail=Beantwoord deze e-mail niet rechtstreeks! Gebruik de link om in de gebruikersinterface te antwoorden. TicketPublicInfoCreateTicket=Met dit formulier kunt u een support ticket vastleggen in ons ticket beheersysteem. TicketPublicPleaseBeAccuratelyDescribe=Beschrijf alstublieft het probleem zo nauwkeurig mogelijk. Geef alle beschikbare informatie om ons in staat te stellen uw verzoek op de juiste manier te kunnen identificeren en te behandelen . @@ -313,10 +315,10 @@ NewUser=Nieuwe gebruiker NumberOfTicketsByMonth=Aantal tickets per maand NbOfTickets=Aantal tickets # notifications -TicketCloseEmailSubjectCustomer=Ticket closed -TicketCloseEmailBodyCustomer=This is an automatic message to notify you that ticket %s has just been closed. -TicketCloseEmailSubjectAdmin=Ticket closed - Réf %s (public ticket ID %s) -TicketCloseEmailBodyAdmin=A ticket with ID #%s has just been closed, see information: +TicketCloseEmailSubjectCustomer=Ticket gesloten +TicketCloseEmailBodyCustomer=Dit is een automatisch bericht om u te informeren dat ticket %s zojuist is gesloten. +TicketCloseEmailSubjectAdmin=Ticket gesloten - Réf %s (openbaar ticket ID %s) +TicketCloseEmailBodyAdmin=Een ticket met ID #%s is zojuist gesloten, zie informatie: TicketNotificationEmailSubject=Ticket %s bijgewerkt TicketNotificationEmailBody=Dit is een automatisch bericht om u te laten weten dat ticket %s zojuist is bijgewerkt TicketNotificationRecipient=Kennisgeving ontvanger @@ -344,7 +346,7 @@ BoxTicketLastXDays=Aantal nieuwe tickets per dag, de laatste %s dagen BoxTicketLastXDayswidget = Aantal nieuwe tickets per dag van de afgelopen X dagen BoxNoTicketLastXDays=Geen nieuwe tickets de laatste %s dagen BoxNumberOfTicketByDay=Aantal nieuwe tickets per dag -BoxNewTicketVSClose=Number of tickets versus closed tickets (today) +BoxNewTicketVSClose=Aantal tickets versus gesloten tickets (vandaag) TicketCreatedToday=Ticket vandaag aangemaakt TicketClosedToday=Ticket vandaag gesloten KMFoundForTicketGroup=We hebben onderwerpen en veelgestelde vragen (FAQs) gevonden die uw vraag kunnen beantwoorden. Bedankt voor het eerst raadplegen en/of controleren van deze bronnen voordat u een ticket indient diff --git a/htdocs/langs/pl_PL/admin.lang b/htdocs/langs/pl_PL/admin.lang index 766673efe20..7312695b60f 100644 --- a/htdocs/langs/pl_PL/admin.lang +++ b/htdocs/langs/pl_PL/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Następna wartość (zamienniki) MustBeLowerThanPHPLimit=Uwaga: twoje ustawienia PHP obecnie ograniczają maksymalny rozmiar pliku do przesłania do %s %s, niezależnie od wartości tego parametru NoMaxSizeByPHPLimit=Uwaga: Brak ustawionego limitu w twojej konfiguracji PHP MaxSizeForUploadedFiles=Maksymalny rozmiar dla twoich przesyłanych plików (0 by zabronić jego przesyłanie/upload) -UseCaptchaCode=Użyj graficzny kod (CAPTCHA) na stronie logowania +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Pełna ścieżka do poleceń antivirusa AntiVirusCommandExample=Przykład dla ClamAv Daemon (wymaga clamav-demon): /usr/bin/clamdscan
Przykład dla ClamWin (bardzo, bardzo wolny): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Więcej parametrów w linii poleceń @@ -504,7 +504,7 @@ WarningPHPMailC=- Używanie serwera SMTP własnego dostawcy usług pocztowych do WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Jeśli Twój dostawca poczty e-mail SMTP musi ograniczyć klienta poczty e-mail do niektórych adresów IP (bardzo rzadko), jest to adres IP agenta użytkownika poczty (MUA) dla aplikacji ERP CRM: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Kliknij aby zobaczyć opis DependsOn=Ten moduł wymaga modułów RequiredBy=Ten moduł wymagany jest przez moduł(y) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Wartość stałej konfiguracji ConstantIsOn=Opcja %s jest włączona NbOfDays=Liczba dni AtEndOfMonth=Na koniec miesiąca -CurrentNext=Bieżący/następny +CurrentNext=A given day in month Offset=Offset AlwaysActive=Zawsze aktywne Upgrade=Uaktualnij @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Naciśnij CTRL+F5 na klawiaturze aby wyczyścić cache NotSupportedByAllThemes=Działa z podstawowymi motywami, ale może nie być obsługiwane przez motywy zewnętrzne BackgroundColor=Kolor tła TopMenuBackgroundColor=Kolor tła górnego menu -TopMenuDisableImages=Ukryj obrazki górnego menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Kolor tła bocznego menu BackgroundTableTitleColor=Kolor tła nagłówka tabeli BackgroundTableTitleTextColor=Kolor czcionki dla napisów w pasku tytułowym sekcji na stronie @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Uwaga: Opcja korzystania z podatku od sprzedaży lub VAT została SwapSenderAndRecipientOnPDF=Zamień adres nadawcy i adresata w dokumentach PDF FeatureSupportedOnTextFieldsOnly=Ostrzeżenie, funkcja obsługiwana tylko w polach tekstowych i listach kombi. Również parametr adresu URL action = create lub action = edit musi być ustawiony LUB nazwa strony musi kończyć się na „nowy.php”, aby uruchomić tę funkcję. EmailCollector=Kolektor e-maili +EmailCollectors=Email collectors EmailCollectorDescription=Dodaj zaplanowane zadanie i stronę konfiguracji, aby regularnie skanować skrzynki e-mail (przy użyciu protokołu IMAP) i zapisywać wiadomości e-mail otrzymane w aplikacji we właściwym miejscu i / lub automatycznie tworzyć niektóre rekordy (np. Potencjalnych klientów). NewEmailCollector=Nowy moduł do zbierania wiadomości e-mail EMailHost=Host serwera poczty e-mail IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Data ostatniej próby odbioru DateLastcollectResultOk=Data ostatniej pomyślnej zbiórki LastResult=Ostatni wynik EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Potwierdzenie odbioru poczty e-mail EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Brak nowych e-maili (pasujących filtrów) do przetworzenia NothingProcessed=Nic nie zostało zrobione -XEmailsDoneYActionsDone=%s e-maile zakwalifikowane, %s e-maile pomyślnie przetworzone (dla %s rekordu / wykonanych czynności) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Szablon do wiadomości e-mail EMailsWillHaveMessageID=E-maile będą miały tag „References” pasujący do tej składni PDF_SHOW_PROJECT=Pokaż projekt w dokumencie ShowProjectLabel=Etykieta projektu +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Jeśli chcesz, aby niektóre teksty w pliku PDF zostały skopiowane w 2 różnych językach w tym samym wygenerowanym pliku PDF, musisz ustawić tutaj ten drugi język, aby wygenerowany plik PDF zawierał 2 różne języki na tej samej stronie, ten wybrany podczas generowania pliku PDF i ten ( tylko kilka szablonów PDF to obsługuje). Pozostaw puste dla 1 języka na plik PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Wpisz tutaj kod ikony FontAwesome. Jeśli nie wiesz, co to jest FontAwesome, możesz użyć ogólnej wartości fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Ustawienia inwentaryzacji ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Ustawienia +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/pl_PL/companies.lang b/htdocs/langs/pl_PL/companies.lang index 1cd81584852..bcdefa4a53e 100644 --- a/htdocs/langs/pl_PL/companies.lang +++ b/htdocs/langs/pl_PL/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Rodzaj kontrahenta NatureOfContact=Charakter kontaktu Address=Adres State=Województwo +StateId=State ID StateCode=Kod Stanu/Prowincji StateShort=Województwo Region=Region Region-State=Region - Województwo Country=Kraj CountryCode=Kod kraju -CountryId=ID kraju +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Inne ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) diff --git a/htdocs/langs/pl_PL/errors.lang b/htdocs/langs/pl_PL/errors.lang index 2022a84943f..097a55f912f 100644 --- a/htdocs/langs/pl_PL/errors.lang +++ b/htdocs/langs/pl_PL/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=E-mail %s wydaje się nieprawidłowy (nie odnaleziono prawidło ErrorBadUrl=Adres URL %s jest nieprawidłowy ErrorBadValueForParamNotAString=Zła wartość parametru. Zazwyczaj dołącza się, gdy brakuje tłumaczenia. ErrorRefAlreadyExists=Odniesienie %s już istnieje. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Zaloguj %s już istnieje. ErrorGroupAlreadyExists=Grupa %s już istnieje. ErrorEmailAlreadyExists=E-mail %s już istnieje. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Istnieje już inny plik o nazwie %s . ErrorPartialFile=Plik nieodebrany w całości przez serwer. ErrorNoTmpDir=Tymczasowy directy %s nie istnieje. ErrorUploadBlockedByAddon=Prześlij zablokowane / PHP wtyczki Apache. -ErrorFileSizeTooLarge=Rozmiar pliku jest zbyt duży. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Pole %s jest za długie. ErrorSizeTooLongForIntType=Rozmiar zbyt długi dal typu int (max %s cyfr) ErrorSizeTooLongForVarcharType=Za dużo znaków dla tego typu (maksymalnie %s znaków) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=JavaScript nie może być wyłączony aby korzysta ErrorPasswordsMustMatch=Oba hasła muszą się zgadzać ErrorContactEMail=Wystąpił błąd techniczny. Skontaktuj się z administratorem pod następującym adresem e-mail %s i podaj w wiadomości kod błędu %s lub dodaj kopię ekranową tej strony. ErrorWrongValueForField=Pole %s : ' %s ' nie jest zgodne z regułą wyrażenia regularnego %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Pole %s : ' %s ' nie jest wartością znajdującą się w polu %s z %s ErrorFieldRefNotIn=Pole %s : ' %s ' nie jest
%s
istniejącym ref ErrorsOnXLines=Znaleziono błędy %s @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Najpierw musisz ustawić swój plan kon ErrorFailedToFindEmailTemplate=Nie udało się znaleźć szablonu o nazwie kodowej %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=Właściciel użytkownika jest wymagany -ErrorActionCommBadType=Wybrany typ zdarzenia (id: %n, kod: %s) nie istnieje w słowniku typów zdarzeń +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Sprawdzanie wersji nie powiodło się ErrorWrongFileName=Nazwa pliku nie może zawierać __COŚ__ ErrorNotInDictionaryPaymentConditions=Nie w Słowniku terminów płatności, zmień. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Twój parametr PHP upload_max_filesize (%s) jest wyższy niż parametr PHP post_max_size (%s). To nie jest spójna konfiguracja. WarningPasswordSetWithNoAccount=Hasło zostało ustawione dla tego użytkownika. Jednakże nie Konto użytkownika zostało utworzone. Więc to hasło jest przechowywane, ale nie mogą być używane do logowania do Dolibarr. Może być stosowany przez zewnętrzny moduł / interfejsu, ale jeśli nie trzeba definiować dowolną logowania ani hasła do członka, można wyłączyć opcję "Zarządzaj login dla każdego członka" od konfiguracji modułu użytkownika. Jeśli potrzebujesz zarządzać logowanie, ale nie wymagają hasła, możesz zachować to pole puste, aby uniknąć tego ostrzeżenia. Uwaga: E może być również stosowany jako login, jeśli element jest połączony do użytkownika. -WarningMandatorySetupNotComplete=Kliknij tutaj, aby ustawić wymagane parametry +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Kliknij tutaj, aby włączyć swoje moduły i aplikacje WarningSafeModeOnCheckExecDir=Uwaga, opcja safe_mode w PHP jest więc polecenia muszą być przechowywane wewnątrz katalogu safe_mode_exec_dir parametrów deklarowanych przez php. WarningBookmarkAlreadyExists=Zakładka z tego tytułu lub ten cel (URL) już istnieje. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Ostrzeżenie, nie możesz bezpośrednio utworzyć konta WarningAvailableOnlyForHTTPSServers=Dostępne tylko w przypadku korzystania z bezpiecznego połączenia HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Moduł %s nie został włączony. Możesz więc przegapić wiele wydarzeń tutaj. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/pl_PL/externalsite.lang b/htdocs/langs/pl_PL/externalsite.lang deleted file mode 100644 index 1f03b277a8b..00000000000 --- a/htdocs/langs/pl_PL/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Skonfiguruj link do zewnętrznej strony internetowej -ExternalSiteURL=Adres URL witryny zewnętrznej z treścią elementu iframe HTML -ExternalSiteModuleNotComplete=Moduł zewnętrznej strony internetowej nie został skonfigurowany poprawny -ExampleMyMenuEntry=Moje wejścia do menu diff --git a/htdocs/langs/pl_PL/ftp.lang b/htdocs/langs/pl_PL/ftp.lang deleted file mode 100644 index 6142d4b1928..00000000000 --- a/htdocs/langs/pl_PL/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Konfiguracja modułu klienta FTP -NewFTPClient=Konfiguracja nowego połączenia FTP -FTPArea=Obszar FTP -FTPAreaDesc=Ten ekran pokazuje zawartość widoku serwera FTP -SetupOfFTPClientModuleNotComplete=Konfiguracja modułu klienta FTP wydaje się być niekompletna -FTPFeatureNotSupportedByYourPHP=PHP nie obsługuje funkcji FTP -FailedToConnectToFTPServer=Nie udało się połączyć z serwerem FTP (%s serwera, %s port) -FailedToConnectToFTPServerWithCredentials=Nie udało się zalogować do serwera FTP ze zdefiniowanym użytkownikiem/hasłem -FTPFailedToRemoveFile=Nie udało się usunąć pliku %s. -FTPFailedToRemoveDir=Nie udało się usunąć katalogu %s (Sprawdź uprawnienia i czy katalog jest pusty) -FTPPassiveMode=Tryb pasywny -ChooseAFTPEntryIntoMenu=Wybierz pozycję FTP w menu... -FailedToGetFile=Nie można pobrać plików %s diff --git a/htdocs/langs/pl_PL/hrm.lang b/htdocs/langs/pl_PL/hrm.lang index 2ca1781fee0..8330a87bc8c 100644 --- a/htdocs/langs/pl_PL/hrm.lang +++ b/htdocs/langs/pl_PL/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Otwórz kierownictwo CloseEtablishment=Zakończ kierownictwo # Dictionary DictionaryPublicHolidays=Urlop - święta państwowe -DictionaryDepartment=HR - Lisa departamentów +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=Zarządzanie personelem - stanowiska pracy # Module Employees=Zatrudnionych @@ -20,13 +20,14 @@ Employee=Pracownik NewEmployee=Nowy pracownik ListOfEmployees=Lista pracowników HrmSetup=Ustawianie modułu HR -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Zadanie -Jobs=Jobs +JobPosition=Zadanie +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Pozycja -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/pl_PL/install.lang b/htdocs/langs/pl_PL/install.lang index d80d2337213..24a06369132 100644 --- a/htdocs/langs/pl_PL/install.lang +++ b/htdocs/langs/pl_PL/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Plik konfiguracyjny %s nie jest zapisywalny. Spra ConfFileIsWritable=Plik konfiguracyjny %s ma uprawnienia do zapisu. ConfFileMustBeAFileNotADir=Plik konfiguracyjny %s musi być plikiem, a nie katalogiem. ConfFileReload=Ponowne ładowanie parametrów z pliku konfiguracyjnego. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP obsługuje zmienne POST i GET. PHPSupportPOSTGETKo=Możliwe, że Twoja konfiguracja PHP nie obsługuje zmiennych POST i / lub GET. Sprawdź parametr variable_order w php.ini. PHPSupportSessions=PHP obsługuje sesje. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Możliwe, że wprowadzono nieprawidłową wartość ErrorFailedToCreateDatabase=Utworzenie bazy danych '%s' nie powiodło się. ErrorFailedToConnectToDatabase=Połączenie z bazą danych '%s' nie powiodło się. ErrorDatabaseVersionTooLow=Wersja (%s) bazy danych jest zbyt stara. Wymagana jest wersja %s lub wyższa. -ErrorPHPVersionTooLow=Wersja PHP zbyt stara. Wymagana wersja to przynajmniej %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Połączenie z serwerem powiodło się, ale nie znaleziono bazy danych „%s”. ErrorDatabaseAlreadyExists=Baza danych '%s' już istnieje. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Jeśli baza danych nie istnieje, wróć i zaznacz opcję „Utwórz bazę danych”. IfDatabaseExistsGoBackAndCheckCreate=Jeśli baza danych istnieje, w poprzednim kroku odznacz opcję "Utwórz bazę danych". WarningBrowserTooOld=Wersja przeglądarki jest zbyt stara. Zdecydowanie zalecamy uaktualnienie przeglądarki do najnowszej wersji Firefox, Chrome lub Opera. diff --git a/htdocs/langs/pl_PL/knowledgemanagement.lang b/htdocs/langs/pl_PL/knowledgemanagement.lang index 151ac57072a..e2cd356bce5 100644 --- a/htdocs/langs/pl_PL/knowledgemanagement.lang +++ b/htdocs/langs/pl_PL/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artykuły KnowledgeRecord = Artykuł KnowledgeRecordExtraFields = Extrapola dla artykułu GroupOfTicket=Grupa biletów -YouCanLinkArticleToATicketCategory=Możesz powiązać artykuł z grupą biletów (aby artykuł był sugerowany podczas kwalifikacji nowych biletów) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Suggested for tickets when group is SetObsolete=Set as obsolete diff --git a/htdocs/langs/pl_PL/loan.lang b/htdocs/langs/pl_PL/loan.lang index d87c19cb82c..d5da206656e 100644 --- a/htdocs/langs/pl_PL/loan.lang +++ b/htdocs/langs/pl_PL/loan.lang @@ -23,9 +23,9 @@ AddLoan=Utwórz pożyczkę FinancialCommitment=Zobowiązanie finansowe InterestAmount=Odsetki CapitalRemain=Pozostały kapitał -TermPaidAllreadyPaid = This term is allready paid -CantUseScheduleWithLoanStartedToPaid = Can't use scheduler for a loan with payment started -CantModifyInterestIfScheduleIsUsed = You can't modify interest if you use schedule +TermPaidAllreadyPaid = Ten termin jest już opłacony +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started +CantModifyInterestIfScheduleIsUsed = Nie możesz modyfikować odsetek, jeśli używasz harmonogramu # Admin ConfigLoan=Konfiguracja modułu kredytu LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Domyśly kapitał konta rachunkowego diff --git a/htdocs/langs/pl_PL/main.lang b/htdocs/langs/pl_PL/main.lang index 88b8bc002a5..7adb3235288 100644 --- a/htdocs/langs/pl_PL/main.lang +++ b/htdocs/langs/pl_PL/main.lang @@ -244,6 +244,7 @@ Designation=Opis DescriptionOfLine=Opis pozycji DateOfLine=Data linii DurationOfLine=Czas trwania linii +ParentLine=Parent line ID Model=Szablon dokumentu DefaultModel=Domyślny szablon dokumentu Action=Działanie @@ -344,7 +345,7 @@ KiloBytes=Kilobajtów MegaBytes=MB GigaBytes=GB TeraBytes=Terabajtów -UserAuthor=Utworzony przez +UserAuthor=Created by UserModif=Poprawiony przez b=b. Kb=Kb @@ -517,6 +518,7 @@ or=lub Other=Inny Others=Inne OtherInformations=Inne informacje +Workflow=Workflow Quantity=Ilość Qty=Ilość ChangedBy=Zmieniona przez @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Dołączone pliki i dokumenty JoinMainDoc=Dołącz główny dokument +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=RRRR-MM DateFormatYYYYMMDD=RRRR-MM-DD DateFormatYYYYMMDDHHMM=RRRR-MM-DD GG: SS @@ -709,6 +712,7 @@ FeatureDisabled=Funkcja wyłączona MoveBox=Przenieś widget Offered=Oferowany NotEnoughPermissions=Nie masz uprawnień do tego działania +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Nazwa sesji Method=Metoda Receive=Odbiór @@ -798,6 +802,7 @@ URLPhoto=Url ze zdjęciem / logo SetLinkToAnotherThirdParty=Link do innego kontrahenta LinkTo=Link do LinkToProposal=Link do oferty +LinkToExpedition= Link to expedition LinkToOrder=Link do zamówienia LinkToInvoice=Link do faktury LinkToTemplateInvoice=Link do szablonu faktury @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Zakończ +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/pl_PL/members.lang b/htdocs/langs/pl_PL/members.lang index 6ca91abfedd..87c3bd72e58 100644 --- a/htdocs/langs/pl_PL/members.lang +++ b/htdocs/langs/pl_PL/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID członka +MemberId=Member Id +MemberRef=Member Ref NewMember=Nowy członek MemberType=Typ członka MemberTypeId=ID typu członka @@ -135,7 +136,7 @@ CardContent=Treść Twojej karty członka # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Chcemy Cię poinformować, że otrzymaliśmy Twoją prośbę o członkostwo.

ThisIsContentOfYourMembershipWasValidated=Chcemy Cię poinformować, że Twoje członkostwo zostało zweryfikowane przy użyciu następujących informacji:

-ThisIsContentOfYourSubscriptionWasRecorded=Chcemy Cię poinformować, że Twoja nowa subskrypcja została nagrana.

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

ThisIsContentOfSubscriptionReminderEmail=Chcemy Cię poinformować, że Twoja subskrypcja wkrótce wygaśnie lub już wygasła (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Mamy nadzieję, że ją odnowisz.

ThisIsContentOfYourCard=To jest podsumowanie informacji, które posiadamy o Tobie. Skontaktuj się z nami, jeśli coś jest nie tak.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Temat powiadomienia e-mail otrzymanego w przypadku automatycznego wpisu gościa @@ -218,3 +219,5 @@ XExternalUserCreated=%s utworzono użytkowników zewnętrznych ForceMemberNature=Charakter członka siły (osoba fizyczna lub korporacja) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/pl_PL/oauth.lang b/htdocs/langs/pl_PL/oauth.lang index 10c5934d0b6..3a22a99fe45 100644 --- a/htdocs/langs/pl_PL/oauth.lang +++ b/htdocs/langs/pl_PL/oauth.lang @@ -1,32 +1,36 @@ # Dolibarr language file - Source file is en_US - oauth -ConfigOAuth=OAuth Configuration -OAuthServices=OAuth Services +ConfigOAuth=Konfiguracja OAuth +OAuthServices=Usługi OAuth ManualTokenGeneration=Ręczne generowanie tokena -TokenManager=Token Manager +TokenManager=Menedżer tokenów IsTokenGenerated=Czy wygenerowano token? NoAccessToken=Brak tokenu zapisanego w lokalnej bazie danych HasAccessToken=Token wygenerowano i zapisano w lokalnej bazie danych NewTokenStored=Token odebrany i zapisany -ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider +ToCheckDeleteTokenOnProvider=Kliknij tutaj, aby sprawdzić / usunąć autoryzację zapisaną przez dostawcę OAuth %s TokenDeleted=Token usunięto -RequestAccess=Kliknij tutaj w celu wysłania zapotrzebowania/odnowienia dostępu i otrzymania nowego tokena. +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Kliknuj tutaj, aby usunąć token -UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Strona do generowania tokena OAuth -SeePreviousTab=See previous tab -OAuthIDSecret=OAuth ID and Secret +UseTheFollowingUrlAsRedirectURI=Podczas tworzenia poświadczeń u dostawcy OAuth użyj następującego adresu URL jako identyfikatora URI przekierowania: +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens +SeePreviousTab=Zobacz poprzednią kartę +OAuthProvider=OAuth provider +OAuthIDSecret=Identyfikator i tajny identyfikator OAuth TOKEN_REFRESH=Reklamowe Odśwież Present TOKEN_EXPIRED=Token wygasł TOKEN_EXPIRE_AT=Token wygaśnie za TOKEN_DELETE=Usuń zachowany token -OAUTH_GOOGLE_NAME=OAuth Google service -OAUTH_GOOGLE_ID=OAuth Google Id +OAUTH_GOOGLE_NAME=Usługa OAuth Google +OAUTH_GOOGLE_ID=Identyfikator Google OAuth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials -OAUTH_GITHUB_NAME=OAuth GitHub service -OAUTH_GITHUB_ID=OAuth GitHub Id +OAUTH_GITHUB_NAME=Usługa OAuth GitHub +OAUTH_GITHUB_ID=Identyfikator OAuth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials -OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test -OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret +OAUTH_STRIPE_TEST_NAME=Test paska OAuth +OAUTH_STRIPE_LIVE_NAME=OAuth Stripe na żywo +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/pl_PL/projects.lang b/htdocs/langs/pl_PL/projects.lang index 81cdf6e56e2..0adebbec1a1 100644 --- a/htdocs/langs/pl_PL/projects.lang +++ b/htdocs/langs/pl_PL/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Rozliczony czas spędzony TimeSpentForIntervention=Czas spędzony TimeSpentForInvoice=Czas spędzony OneLinePerUser=Jedna linia na użytkownika -ServiceToUseOnLines=Usługa do wykorzystania na liniach +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Faktura %s została wygenerowana na podstawie czasu spędzonego nad projektem InterventionGeneratedFromTimeSpent=Intervention %s has been generated from time spent on project ProjectBillTimeDescription=Sprawdź, czy wprowadzasz grafik dla zadań projektu ORAZ planujesz wygenerować fakturę (y) z grafiku, aby wystawić fakturę klientowi projektu (nie sprawdzaj, czy planujesz utworzyć fakturę, która nie jest oparta na wprowadzonych grafikach). Uwaga: Aby wygenerować fakturę, przejdź do zakładki „Czas spędzony” projektu i wybierz wiersze do uwzględnienia. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/pl_PL/stocks.lang b/htdocs/langs/pl_PL/stocks.lang index 3f8795a5052..117d51b9fdc 100644 --- a/htdocs/langs/pl_PL/stocks.lang +++ b/htdocs/langs/pl_PL/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Limit zapasu dla ostrzeżenia i pożądany optymaln ProductStockWarehouseUpdated=Limit zapasu dla ostrzeżenia i pożądany optymalny zapas prawidłowo zaktualizowany ProductStockWarehouseDeleted=Limit zapasu dla ostrzeżenia i pożądany optymalny zapas prawidłowo usunięty AddNewProductStockWarehouse=Ustaw nowy limit dla ostrzeżenia i pożądany optymalny zapas -AddStockLocationLine=Zmniejsz ilość, a następnie kliknij, aby dodać kolejny magazyn dla tego produktu +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Data inwentaryzacji Inventories=Inwentaryzacje NewInventory=Nowa inwentaryzacja @@ -254,7 +254,7 @@ ReOpen=Otworzyć na nowo ConfirmFinish=Czy potwierdzasz zamknięcie inwentaryzacji? Spowoduje to wygenerowanie wszystkich ruchów zapasów, aby zaktualizować stan zapasów do rzeczywistej ilości wprowadzonej do zapasów. ObjectNotFound=Nie znaleziono %s MakeMovementsAndClose=Zainicjuj przemieszczenia zapasów i zamknij -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Wypełnij rzeczywistą ilość ilością oczekiwaną ShowAllBatchByDefault=Domyślnie wyświetlaj szczegóły partii na karcie „magazyn” produktu CollapseBatchDetailHelp=Możesz ustawić domyślne wyświetlanie szczegółów partii w konfiguracji modułu zapasów ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Rozpoczęto ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Ustawienia +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/pt_AO/projects.lang b/htdocs/langs/pt_AO/projects.lang new file mode 100644 index 00000000000..f5f817beac1 --- /dev/null +++ b/htdocs/langs/pt_AO/projects.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - projects +ServiceToUseOnLines=Service to use on lines by default diff --git a/htdocs/langs/pt_BR/admin.lang b/htdocs/langs/pt_BR/admin.lang index 64007a00371..4cc65fd8514 100644 --- a/htdocs/langs/pt_BR/admin.lang +++ b/htdocs/langs/pt_BR/admin.lang @@ -91,7 +91,6 @@ NextValueForReplacements=Próximo Valor (Substituição) MustBeLowerThanPHPLimit=Nota: sua configuração PHP atualmente limita o tamanho máximo de arquivo para upload para %s %s, independentemente do valor desse parâmetro 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 para Daemon ClamAv (requer clamav-daemon): / usr / bin / clamdscan
Exemplo para ClamWin (muito, muito lento): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam=Mais parâmetros em linha de comando (CLI) @@ -391,7 +390,6 @@ WarningPHPMailC=- Usar o servidor SMTP do seu próprio provedor de serviços de WarningPHPMailD=Além disso, é recomendável alterar o método de envio de e-mails para o valor "SMTP". Se você realmente deseja manter o método "PHP" padrão para enviar e-mails, ignore este aviso ou remova-o definindo a constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP como 1 em Home - Setup - Other. WarningPHPMail2=Se o seu provedor SMTP de e-mail precisar restringir o cliente de e-mail a alguns endereços IP (muito raro), esse é o endereço IP do agente de usuário de e-mail (MUA) para seu aplicativo ERP CRM: %s. WarningPHPMailSPF=Se o nome de domínio em seu endereço de e-mail do remetente estiver protegido por um registro SPF (pergunte ao seu registro de nome de domínio), você deverá adicionar os seguintes IPs no registro SPF do DNS do seu domínio: %s . -ActualMailSPFRecordFound=Registro SPF real encontrado: %s ClickToShowDescription=Clique para exibir a descrição RequiredBy=Este módulo é exigido por módulo(s) PageUrlForDefaultValues=Você deve inserir o caminho relativo do URL da página. Se você incluir parâmetros na URL, os valores padrão serão efetivos se todos os parâmetros estiverem definidos com o mesmo valor. @@ -540,6 +538,9 @@ Permission34=Deletar Produtos Permission36=Ver/Gerenciar Produtos Ocultos Permission38=Exportar Produtos Permission39=Ignorar preço mínimo +Permission41=Ler projetos e tarefas (projetos compartilhados e projetos dos quais sou contato). +Permission42=Criar/modificar projetos (projetos compartilhados e projetos dos quais sou contato). Também pode atribuir usuários a projetos e tarefas +Permission44=Excluir projetos (projetos compartilhados e projetos dos quais sou contato) Permission61=Ler Intervenções Permission62=Criar/Modificar Intervenções Permission64=Deletar Intervenções @@ -582,6 +583,10 @@ Permission122=Criar/Modificar Terceiros Permission125=Deletar Terceiros Permission126=Exportar Terceiros Permission130=Criar/modificar informações de pagamento de terceiros +Permission141=Leia todos os projetos e tarefas (assim como os projetos privados para os quais não sou contato) +Permission142=Criar/modificar todos os projetos e tarefas (assim como os projetos privados para os quais não sou contato) +Permission144=Excluir todos os projetos e tarefas (assim como os projetos privados que não sou um contato) +Permission145=Pode inserir o tempo consumido, para mim ou minha hierarquia, em tarefas atribuídas (Folha de Horário) Permission146=Ler Provedores Permission147=Ler Estatísticas Permission151=Ler pedidos com pagamento por débito direto @@ -901,7 +906,6 @@ LabelOnDocuments=Etiqueta nos documentos ValueOfConstantKey=Valor de uma constante de configuração ConstantIsOn=A opção %s está ativada NbOfDays=Número de dias -CurrentNext=Atual/Próxima Offset=Compensar Upgrade=Atualizar MenuUpgrade=Atualizar / Ampliar @@ -1056,6 +1060,7 @@ TransKeyWithoutOriginalValue=Você forçou uma nova tradução para a chave de t TitleNumberOfActivatedModules=Módulos ativados TotalNumberOfActivatedModules=Módulos ativados: %s / %s YouMustEnableOneModule=Você pelo menos deve ativar 1 módulo +YouMustEnableTranslationOverwriteBefore=Você deve primeiro habilitar a substituição de tradução para poder substituir uma tradução YesInSummer=Sim em verão OnlyFollowingModulesAreOpenedToExternalUsers=Observe que apenas os módulos a seguir estão disponíveis para usuários externos (independentemente das permissões de tais usuários) e somente se as permissões forem concedidas:
SuhosinSessionEncrypt=Sessão armazenada criptografada pelo Suhosin @@ -1474,7 +1479,7 @@ LinkColor=Cor dos linques PressF5AfterChangingThis=Pressione CTRL+F5 no teclado ou limpe o cache do seu navegador após mudar este valor para torná-lo efetivo NotSupportedByAllThemes=Trabalhará com os temas principais, pode não ser suportado por temas externos TopMenuBackgroundColor=Cor de fundo para o menu de topo -TopMenuDisableImages=Ocultar imagens no menu Superior +TopMenuDisableImages=Ícone ou texto no menu superior LeftMenuBackgroundColor=Cor do fundo para o menu esquerdo BackgroundTableTitleColor=Cor de fundo para a linha do título da Tabela BackgroundTableTitleTextlinkColor=Cor do texto da linha de link do título da tabela @@ -1485,6 +1490,7 @@ NbAddedAutomatically=Número de dias adicionados para contadores de usuários (a EnterAnyCode=Este campo contém uma referência para identificar a linha. Insira qualquer valor de sua escolha, mas sem caracteres especiais. Enter0or1=Digite 0 ou 1 ColorFormat=A cor RGB está no formato HEX, ex.: FF0000 +PictoHelp=Nome do ícone no formato:
- image.png para um arquivo de imagem no diretório do tema atual
- image.png@module se o arquivo estiver no diretório /img/ de um módulo
- fa-xxx para um FontAwesome fa-xxx foto para
- fonwtawesome_xxx_fa_color_size para a FontAwesome fa-xxx picto (com prefixo, cor e tamanho definido) PositionIntoComboList=Posição de linha em listas de combinação SellTaxRate=Taxa de imposto de venda RecuperableOnly=Sim para VAT "Não Percebido, mas Recuperável" dedicado a alguns estados na França. Mantenha o valor como "Não" em todos os outros casos. @@ -1555,24 +1561,41 @@ SeveralLangugeVariatFound=Várias variantes de idioma encontradas RemoveSpecialChars=Remover caracteres especiais COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para valor limpo (COMPANY_DIGITARIA_CLEAN_REGEX) COMPANY_DIGITARIA_UNIQUE_CODE=Duplicação não permitida +GDPRContactDesc=Caso guarde dados pessoais no seu Sistema de Informação, pode indicar aqui o contato responsável pelo Regulamento Geral de Proteção de Dados HelpOnTooltipDesc=Coloque texto ou uma chave de conversão aqui para o texto ser exibido em uma dica de ferramenta quando esse campo aparecer em um formulário YouCanDeleteFileOnServerWith=Você pode excluir este arquivo no servidor com a linha de comando:
%s EnableFeatureFor=Ativar recursos para %s VATIsUsedIsOff=Nota: A opção de usar o Imposto sobre vendas ou o IVA foi definida como Desligada no menu %s - %s, portanto, o imposto sobre vendas ou IVA usado será sempre 0 para vendas. SwapSenderAndRecipientOnPDF=Troque o remetente e a posição do endereço do destinatário em documentos PDF FeatureSupportedOnTextFieldsOnly=Aviso, recurso compatível apenas com campos de texto e listas de combinação. Além disso, um parâmetro de URL ação=criar ou ação=editar deve ser definido OU o nome da página deve terminar com 'new.php' para acionar este recurso. +EmailCollectors=Coletores de e-mail EmailCollectorDescription=Adicione um trabalho agendado e uma página de configuração para verificar regularmente as caixas de e-mail (usando o protocolo IMAP) e registre os e-mails recebidos em seu aplicativo, no lugar certo e / ou crie alguns registros automaticamente (como leads). NewEmailCollector=Novo coletor de e-mail EmailcollectorOperationsDesc=As operações são executadas de cima para baixo MaxEmailCollectPerCollect=Número máximo de e-mails coletados por coleta +ConfirmCloneEmailCollector=Tem certeza de que deseja clonar o coletor de e-mail %s ? DateLastCollectResult=Data da última tentativa de coleta DateLastcollectResultOk=Data da última coleta bem sucedida LastResult=Último resultado +EmailCollectorHideMailHeaders=Não inclua o conteúdo do cabeçalho do e-mail no conteúdo salvo dos e-mails coletados +EmailCollectorHideMailHeadersHelp=Quando ativado, os cabeçalhos de e-mail não são adicionados ao final do conteúdo do e-mail que é salvo como um evento da agenda. EmailCollectorConfirmCollectTitle=Confirmação de recebimento de e-mail +EmailCollectorConfirmCollect=Deseja executar este coletor agora? +EmailCollectorExampleToCollectTicketRequestsDesc=Colete emails que correspondam a algumas regras e crie automaticamente um ticket (o Ticket do Módulo deve estar habilitado) com as informações do email. Você pode usar este coletor se fornecer algum suporte por e-mail, para que sua solicitação de ticket seja gerada automaticamente. Ative também Collect_Responses para coletar as respostas do seu cliente diretamente na visualização do ticket (você deve responder do Dolibarr). +EmailCollectorExampleToCollectTicketRequests=Exemplo de coleta da solicitação de ticket (somente primeira mensagem) +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Examine o diretório "Enviados" da sua caixa de correio para encontrar e-mails que foram enviados como resposta de outro e-mail diretamente do seu software de e-mail e não do Dolibarr. Se tal e-mail for encontrado, a resposta do evento será registrada no Dolibarr +EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Exemplo de coleta de respostas de e-mail enviadas de um software de e-mail externo +EmailCollectorExampleToCollectDolibarrAnswersDesc=Colete todos os e-mails que são uma resposta de um e-mail enviado do seu aplicativo. Um evento (A Agenda do Módulo deve estar habilitada) com a resposta do e-mail será registrada no local correto. Por exemplo, se você enviar uma proposta comercial, pedido, fatura ou mensagem de ticket por e-mail do aplicativo, e o destinatário responder seu e-mail, o sistema automaticamente vai pegar a resposta e adicioná-la ao seu ERP. +EmailCollectorExampleToCollectDolibarrAnswers=Exemplo coletando todas as mensagens recebidas sendo respostas a mensagens enviadas de Dolibarr' +EmailCollectorExampleToCollectLeadsDesc=Colete emails que correspondam a algumas regras e crie automaticamente um lead (Modulo Projeto deve estar habilitado) com as informações do email. Você pode usar este coletor se quiser seguir seu lead usando o módulo Projeto (1 lead = 1 projeto), para que seus leads sejam gerados automaticamente. Caso o coletor Collect_Responses também esteja habilitado, ao enviar um e-mail de seus leads, propostas ou qualquer outro objeto, você também poderá ver as respostas de seus clientes ou parceiros diretamente no aplicativo.
Observação: Com este exemplo inicial, o título do lead é gerado incluindo o e-mail. Se o terceiro não puder ser encontrado no banco de dados (novo cliente), o lead será anexado ao terceiro com ID 1. +EmailCollectorExampleToCollectLeads=Exemplo de coleta de leads +EmailCollectorExampleToCollectJobCandidaturesDesc=Colete os e-mails que se aplicam as ofertas de emprego (o Módulo de Recrutamento deve estar ativado). Você pode preencher este coletor se quiser criar automaticamente uma candidatura para uma solicitação de trabalho. Nota: Com este exemplo inicial, é gerado o título da candidatura incluindo o email. +EmailCollectorExampleToCollectJobCandidatures=Exemplo de coleta de candidaturas de emprego recebidas por e-mail NoNewEmailToProcess=Nenhum novo e-mail (filtros correspondentes) para processar -XEmailsDoneYActionsDone=%s e-mails qualificados, %s e-mails processados com sucesso (para registro %s/ações executadas) +XEmailsDoneYActionsDone=%s e-mails pré-qualificados, %s e-mails processados ​​com sucesso (para %s registro/ações realizadas) RecordEvent=Gravar um evento na agenda (com tipo Email enviado ou recebido) CreateLeadAndThirdParty=Crie um lead (e um terceiro, se necessário) +CreateTicketAndThirdParty=Crie um ticket (vinculado a um terceiro se o terceiro foi carregado por uma operação anterior ou foi adivinhado de um rastreador no cabeçalho do e-mail, sem terceiros de outra forma) CodeLastResult=Código do último resultado NbOfEmailsInInbox=Número de e-mails no diretório de origem LoadThirdPartyFromName=Carregar pesquisa de terceiros em %s (carregar somente) @@ -1586,13 +1609,13 @@ CreateCandidature=Criar formulário de emprego FormatZip=CEP MainMenuCode=Código de entrada do menu (mainmenu) ECMAutoTree=Mostrar árvore de ECM automática -OperationParamDesc=Defina as regras a serem usadas para extrair ou definir valores.
Exemplo para operações que precisam extrair um nome do assunto do email:
name=EXTRACT:SUBJECT:Message from company ([^\n] *)
Exemplo para operações que criam objectos:
objproperty1 = SET, o valor de conjunto
objproperty2 = SET, um valor incluindo valor de __objproperty1__
objproperty3 = SETIFEMPTY: valor utilizado se objproperty3 se não já definido
objproperty4 = EXTRACTO: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:O nome da minha empresa é\\s( [^\\s]*)

Use um ; char como separador para extrair ou definir várias propriedades. OpeningHours=Horário de abertura OpeningHoursDesc=Digite aqui os horários de funcionamento da sua empresa. ResourceSetup=Configuração do módulo de recursos UseSearchToSelectResource=Usa um formulário de busca para a escolha de um recurso (em vez de uma lista suspensa) DisabledResourceLinkUser=Desativar recurso para vincular um recurso a usuários DisabledResourceLinkContact=Desativar recurso para vincular um recurso a contatos +EnableResourceUsedInEventCheck=Proibir o uso do mesmo recurso ao mesmo tempo na agenda DisableProspectCustomerType=Desative o tipo de terceiro "Cliente em potencial + cliente" (portanto, o terceiro deve ser "Cliente em potencial" ou "Cliente", mas não pode ser os dois) MAIN_OPTIMIZEFORTEXTBROWSER=Simplifique a interface para pessoas cegas MAIN_OPTIMIZEFORTEXTBROWSERDesc=Ative esta opção se você for uma pessoa cega ou se usar o aplicativo em um navegador de texto como o Lynx ou o Links. @@ -1642,6 +1665,9 @@ EmailTemplate=Modelo para e-mail EMailsWillHaveMessageID=Os e-mails terão a tag 'Referências' correspondente a esta sintaxe PDF_SHOW_PROJECT=Exibir projeto no documento ShowProjectLabel=Rótulo do Projeto +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Incluir aliases no nome de terceiros +THIRDPARTY_ALIAS=Nome de terceiros - alias de terceiros +ALIAS_THIRDPARTY=Alias de terceiro - Nome de terceiro PDF_USE_ALSO_LANGUAGE_CODE=Se você deseja duplicar alguns textos em seu PDF em 2 idiomas diferentes no mesmo PDF gerado, defina aqui esse segundo idioma para que o PDF gerado contenha 2 idiomas diferentes na mesma página, o escolhido ao gerar PDF e este ( apenas alguns modelos de PDF suportam isso). Mantenha em branco para 1 idioma por PDF. PDF_USE_A=Gerar documentos no formato PDF/A ao invés do formato PDF padrão FafaIconSocialNetworksDesc=Digite aqui o código de um ícone FontAwesome. Se você não souber o que é FontAwesome, poderá usar o valor genérico fa-address-book. @@ -1721,3 +1747,25 @@ TemplateforBusinessCards=Modelo para um cartão de visita em tamanho diferente InventorySetup=Configuração de inventário ExportUseLowMemoryMode=Use um modo de pouca memória ExportUseLowMemoryModeHelp=Use o modo de memória baixa para executar o exec do dump (a compactação é feita através de um pipe em vez de na memória PHP). Este método não permite verificar se o arquivo está completo e a mensagem de erro não pode ser relatada se falhar. +ModuleWebhookDesc =Interface para capturar gatilhos do dolibarr e enviá-los para uma URL +WebhookSetup =Configuração do webhook +Settings =Configurações +WebhookSetupPage =Página de configuração do webhook +ShowQuickAddLink=Mostrar um botão para adicionar rapidamente um elemento no menu superior direito +HashForPing=Hash usado para ping +ReadOnlyMode=A instância está no modo "Somente leitura" +DEBUGBAR_USE_LOG_FILE=Use o arquivo dolibarr.log para interceptar Logs +UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use o arquivo dolibarr.log para interceptar Logs em vez de captura de memória ao vivo. Ele permite capturar todos os logs em vez de apenas o log do processo atual (incluindo o das páginas de sub-requests ajax), mas tornará sua instância muito lenta. Não recomendado. +FixedOrPercent=Fixo (use a palavra-chave 'fixo') ou percentual (use a palavra-chave 'percentual') +DefaultOpportunityStatus=Status de oportunidade padrão (primeiro status quando o lead é criado) +IconAndText=Ícone e texto +TextOnly=Somente texto +IconOnlyAllTextsOnHover=Somente ícone - Todos os textos aparecem sob o ícone na barra de menu do mouse +IconOnlyTextOnHover=Somente ícone - O texto do ícone aparece sob o ícone no mouse, passe o ícone +IconOnly=Somente ícone - Texto apenas na dica de ferramenta +INVOICE_ADD_ZATCA_QR_CODE=Mostrar o código QR ZATCA nas faturas +INVOICE_ADD_ZATCA_QR_CODEMore=Alguns países árabes precisam deste QR Code em suas faturas +INVOICE_ADD_SWISS_QR_CODE=Mostrar o código QR-Bill suíço nas faturas +UrlSocialNetworksDesc=Link da URL da rede social. Use {socialid} para a parte variável que contém o ID da rede social. +IfThisCategoryIsChildOfAnother=Se esta categoria for filha de outra +NoName=Sem nome diff --git a/htdocs/langs/pt_BR/companies.lang b/htdocs/langs/pt_BR/companies.lang index 1833c7ab75a..41baf08b8ca 100644 --- a/htdocs/langs/pt_BR/companies.lang +++ b/htdocs/langs/pt_BR/companies.lang @@ -44,12 +44,13 @@ PostOrFunction=Cargo NatureOfContact=Natureza do Contato Address=Endereço State=Estado/Província +StateId=ID do estado StateCode=Código do Estado / Cidade StateShort=Status do Cadastro Region=Região Region-State=Região - Estado CountryCode=Código do país -CountryId=ID do país +CountryId=ID do País Call=Chamar PhonePro=Telefone comercial PhonePerso=Tel. particular @@ -78,6 +79,7 @@ WrongCustomerCode=Código de cliente inválido WrongSupplierCode=Código do fornecedor inválido CustomerCodeModel=Modelo de código de cliente SupplierCodeModel=Modelo de código do fornecedor +GencodBuyPrice=Código de barras do preço ref ProfId1Short=ID prof. 1 ProfId2Short=ID prof. 2 ProfId3Short=ID prof. 3 @@ -100,12 +102,21 @@ ProfId3CH=Prof Id 1 (Número federal) ProfId4CH=Prof Id 2 (Número gravado comercial) ProfId1CM=Id. prof. 1 (Registro Comercial) ProfId2CM=Id. prof. 2 (nº de Contribuinte) +ProfId3CM=Id. prof. 3 (Nº do decreto de criação) +ProfId4CM=Id. prof. 4 (Nº do certificado do depósito) +ProfId5CM=Id. prof. 5 (Outros) +ProfId1ShortCM=Registro de Comércio +ProfId2ShortCM=Nº de contribuinte +ProfId3ShortCM=Nº do decreto da criação +ProfId4ShortCM=N.º do certificado do depósito ProfId2ES=Prof Id 2 (Número de seguro social) ProfId4ES=Prof Id 4 (Número do colegial) ProfId1FR=SIREN ProfId2FR=SIRET ProfId3FR=NAF (Ex APE) ProfId4FR=RCS/RM +ProfId1ShortFR=SIRENE +ProfId2ShortFR=RENDA ProfId1GB=Número do registro ProfId4IN=ID prof. 4 ProfId5IN=ID prof. 5 @@ -121,6 +132,7 @@ ProfId3TN=Código na Alfandega ProfId4TN=CCC ProfId1US=Id do Prof (FEIN) ProfId2RO=Prof Id 2 (nº de registro) +ProfId4UA=Prof Id 4 (Certificado) ProfId3DZ=Numero do Contribuinte ProfId4DZ=Numero de Identificação Social VATIntra=ID do IVA @@ -166,11 +178,13 @@ SupplierCodeShort=Código Fornecedor SupplierCodeDesc=Código do Fornecedor, exclusivo para todos os fornecedores RequiredIfCustomer=Necessário se o terceiro for um cliente ou um possível cliente RequiredIfSupplier=Obrigatório se terceiros são fornecedores +ValidityControledByModule=Validade controlada pelo módulo ProspectToContact=Prospecto de cliente a contactar CompanyDeleted=A empresa "%s" foi excluída do banco de dados. ListOfContacts=Lista de contatos/endereços ListOfContactsAddresses=Lista de contatos/endereços ShowContact=Contato - Endereço +ContactType=Função de contato ContactForOrders=Contato de pedidos ContactForOrdersOrShipments=Contato do pedido ou da remessa ContactForProposals=Contato de orçamentos @@ -188,6 +202,7 @@ CapitalOf=Capital de %s EditCompany=Editar empresa ThisUserIsNot=Este usuário não é um cliente em potencial, cliente ou fornecedor VATIntraCheckDesc=O ID do IVA deve incluir o prefixo do país. O link %s usa o serviço europeu de verificação de IVA (VIES), que requer acesso à Internet do servidor Dolibarr. +VATIntraManualCheck=Você também pode verificar manualmente no site da Comissão Europeia %s ErrorVATCheckMS_UNAVAILABLE=Verificação não é possível. Verifique o serviço não é necessário por um membro de estado (%s). NorProspectNorCustomer=Nem possivel cliente, nem cliente JuridicalStatus=Tipo de entidade comercial @@ -243,13 +258,16 @@ LastModifiedThirdParties=Últimos %sTerceiros modificados UniqueThirdParties=Número total de terceiros ActivityCeased=Inativo ThirdPartyIsClosed=O terceiro está fechado +ProductsIntoElements=Lista de produtos/serviços mapeados para 1%s CurrentOutstandingBill=Notas aberta correntes OutstandingBill=Conta excelente OutstandingBillReached=Máx. para dívida a ser alcançado +MonkeyNumRefModelDesc=Retorne um número no formato 1%s yymm-nnnn para o código do cliente e 1%s yymm-nnnn para o código do fornecedor onde yy é o ano, mm é o mês e nnnn é um número sequencial de auto incremento sem quebra e sem retorno a 0. LeopardNumRefModelDesc=O código é livre. Esse código pode ser modificado a qualquer hora. ManagingDirectors=Nome do Representante(CEO,Diretor,Presidente...) MergeOriginThirdparty=Duplicar terceiros (terceiros que deseja excluir) MergeThirdparties=Mesclar terceiros +ConfirmMergeThirdparties=Tem certeza de que deseja mesclar o terceiro escolhido com o atual? Todos os objetos vinculados (faturas, pedidos, ...) serão movidos para o terceiro atual, após o que o terceiro escolhido será excluído. ThirdpartiesMergeSuccess=Terceiros foram mesclados SaleRepresentativeLogin=Login para o representante de vendas SaleRepresentativeLastname=Sobrenome do representante de vendas @@ -262,5 +280,8 @@ PaymentTypeSupplier=Tipo de pagamento - Fornecedor PaymentTermsSupplier=Termos de pagamento - Fornecedor PaymentTypeBoth=Tipo de Pagamento - Cliente e Fornecedor MulticurrencyUsed=Uso de Multimoeda +InEEC=Europa (EEC) +RestOfEurope=Resto da Europa (EEC) +OutOfEurope=Fora da Europa (EEC) CurrentOutstandingBillLate=Atual fatura pendente atrasada BecarefullChangeThirdpartyBeforeAddProductToInvoice=Cuidado, dependendo das configurações de preço do produto, você deve trocar de fornecedor antes de adicionar o produto ao PDV. diff --git a/htdocs/langs/pt_BR/errors.lang b/htdocs/langs/pt_BR/errors.lang index 9bc55b42424..03f3d75a362 100644 --- a/htdocs/langs/pt_BR/errors.lang +++ b/htdocs/langs/pt_BR/errors.lang @@ -159,7 +159,6 @@ ErrorReplaceStringEmpty=Erro, a cadeia de caracteres para substituir está vazia ErrorPublicInterfaceNotEnabled=A interface pública não foi ativada WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Seu parâmetro PHP upload_max_filesize (%s) é maior que o parâmetro PHP post_max_size (%s). Esta não é uma configuração consistente. 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=Clique aqui para configurar os parâmetros obrigatórios WarningEnableYourModulesApplications=Clique aqui para ativar seus módulos e aplicativos WarningSafeModeOnCheckExecDir=Atenção, a opção PHP safe_mode está em modo de comando devem ser armazenados dentro de um diretório declarado pelo php parâmetro safe_mode_exec_dir. WarningBookmarkAlreadyExists=já existe um marcador com este título o esta URL. diff --git a/htdocs/langs/pt_BR/externalsite.lang b/htdocs/langs/pt_BR/externalsite.lang deleted file mode 100644 index 31cdbccc008..00000000000 --- a/htdocs/langs/pt_BR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configurar linque para o website externo -ExternalSiteURL=URL de site externo com conteúdo HTML iframe -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 deleted file mode 100644 index bbee2149a4e..00000000000 --- a/htdocs/langs/pt_BR/ftp.lang +++ /dev/null @@ -1,13 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configuração do módulo cliente FTP -NewFTPClient=Nova configuração da conexão FTP -FTPArea=Área FTP -FTPAreaDesc=Esta tela mostra uma visão de um servidor FTP. -SetupOfFTPClientModuleNotComplete=A configuração do módulo do cliente FTP parece estar incompleta -FTPFeatureNotSupportedByYourPHP=Seu PHP não suporta as funções de FTP -FailedToConnectToFTPServer=Falha na conexão ao servidor FTP (server% s, porta% s) -FailedToConnectToFTPServerWithCredentials=Falha ao efetuar login no servidor FTP com login/senha -FTPFailedToRemoveFile=Falha ao remover o arquivo %s. -FTPFailedToRemoveDir=Falha ao remover a pasta %s : Verifique as permissões e que a pasta está vazia -ChooseAFTPEntryIntoMenu=Escolha um Site FTP do menu ... -FailedToGetFile=Falha ao obter arquivos %s diff --git a/htdocs/langs/pt_BR/hrm.lang b/htdocs/langs/pt_BR/hrm.lang index c7e24c6b4ea..60dd9050bd3 100644 --- a/htdocs/langs/pt_BR/hrm.lang +++ b/htdocs/langs/pt_BR/hrm.lang @@ -3,5 +3,5 @@ HRM_EMAIL_EXTERNAL_SERVICE=E-mail para evitar HRM serviço externo Establishments=Estabelecimentos DeleteEstablishment=Excluir estabelecimento ConfirmDeleteEstablishment=Tem certeza de que deseja excluir este estabelecimento? -DictionaryDepartment=RH - Lista de departamentos DictionaryFunction=RH - Cargos +HrmSetup=Configuração do módulo RH diff --git a/htdocs/langs/pt_BR/install.lang b/htdocs/langs/pt_BR/install.lang index 5604382edbd..bcc4805396b 100644 --- a/htdocs/langs/pt_BR/install.lang +++ b/htdocs/langs/pt_BR/install.lang @@ -13,7 +13,6 @@ ErrorWrongValueForParameter=Você pode ter digitado um valor incorreto para o pa ErrorFailedToCreateDatabase=Erro ao criar a base de dados' %s'. ErrorFailedToConnectToDatabase=Falha ao conectar com o banco de dados' %s'. ErrorDatabaseVersionTooLow=Versao do banco de dados (%s) é muito antiga. Versao %s ou maior e requerida. -ErrorPHPVersionTooLow=A versão do PHP é muito antiga. Versão %s é requerida. ErrorDatabaseAlreadyExists=Base de dados' %s' já existe. IfDatabaseExistsGoBackAndCheckCreate=Caso dados já existe, volte e desmarque a opção "Criar uma base de dados". License=Usando licença diff --git a/htdocs/langs/pt_BR/intracommreport.lang b/htdocs/langs/pt_BR/intracommreport.lang new file mode 100644 index 00000000000..a4106ad1cee --- /dev/null +++ b/htdocs/langs/pt_BR/intracommreport.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - intracommreport +Module68000Name =Relatório de comunicação interna +Module68000Desc =Gerenciamento de relatórios intracomm (suporte para o formato francês DEB/DES) +IntracommReportSetup =Configuração do módulo do relatório intracomm +MenuIntracommReport=Relatório de comunicação interna diff --git a/htdocs/langs/pt_BR/knowledgemanagement.lang b/htdocs/langs/pt_BR/knowledgemanagement.lang index 60ad5f67608..ce1b529d714 100644 --- a/htdocs/langs/pt_BR/knowledgemanagement.lang +++ b/htdocs/langs/pt_BR/knowledgemanagement.lang @@ -1,2 +1,15 @@ # Dolibarr language file - Source file is en_US - knowledgemanagement +ModuleKnowledgeManagementName =Sistema de Gestão do Conhecimento +ModuleKnowledgeManagementDesc=Gerenciar uma base de Gerenciamento de Conhecimento (KM) ou Help-Desk +KnowledgeManagementSetup =Configuração do Sistema de Gestão do Conhecimento +KnowledgeManagementSetupPage =Página de configuração do Sistema de Gerenciamento do Conhecimento +KnowledgeManagementAbout =Sobre a Gestão do Conhecimento +KnowledgeManagementAboutPage =Gestão do Conhecimento sobre a página +KnowledgeManagementArea =Gestão do conhecimento +MenuKnowledgeRecord =Base do conhecimento +KnowledgeRecordExtraFields =Extracampos para o artigo GroupOfTicket=Grupo de Tickets +SuggestedForTicketsInGroup=Sugerido para ingressos quando o grupo é +SetObsolete=Definir como obsoleto +ConfirmCloseKM=Você confirma o fechamento deste artigo como obsoleto? +ConfirmReopenKM=Deseja restaurar este artigo para o status "Validado"? diff --git a/htdocs/langs/pt_BR/loan.lang b/htdocs/langs/pt_BR/loan.lang index c3d86606ecb..6fb19e2fcd9 100644 --- a/htdocs/langs/pt_BR/loan.lang +++ b/htdocs/langs/pt_BR/loan.lang @@ -17,7 +17,6 @@ ListLoanAssociatedProject=Lista de empréstimos associados ao projeto InterestAmount=Juro CapitalRemain=Capital permanecem TermPaidAllreadyPaid =Este termo já está pago -CantUseScheduleWithLoanStartedToPaid =Não é possível usar programador para empréstimo com o pagamento iniciado CantModifyInterestIfScheduleIsUsed =Você não pode alterar o interesse se usar o programador LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Capital contabilístico por padrão LOAN_ACCOUNTING_ACCOUNT_INTEREST=Interesse contabilístico por padrão diff --git a/htdocs/langs/pt_BR/main.lang b/htdocs/langs/pt_BR/main.lang index 761005516d0..600b1b54dad 100644 --- a/htdocs/langs/pt_BR/main.lang +++ b/htdocs/langs/pt_BR/main.lang @@ -23,6 +23,7 @@ DatabaseConnection=Login à Base de Dados NoTemplateDefined=Nenhum modelo disponível para este tipo de email CurrentTimeZone=Timezone PHP (do servidor apache) EmptySearchString=Digite critérios na pesquisa +EnterADateCriteria=Insira um critério de data NoRecordFound=Nenhum registro encontrado NoRecordDeleted=Nenhum registro foi deletado NotEnoughDataYet=Sem dados suficientes @@ -85,6 +86,7 @@ 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 YouCanSetOptionDolibarrMainProdToZero=Você pode ler o arquivo de log ou definir a opção $ dolibarr_main_prod como '0' no seu arquivo de configuração para obter mais informações. +InformationToHelpDiagnose=Essas informações podem ser úteis para fins de diagnóstico (você pode definir a opção $dolibarr_main_prod como '1' para ocultar informações confidenciais) LineID=ID da linha PrecisionUnitIsLimitedToXDecimals=Dolibarr está configurado para limitar a precisão dos preços unitários a %s Decimais. NoFilter=Nenhum filtro @@ -132,6 +134,8 @@ ResizeOrCrop=Redimensionar ou cortar Recenter=Recolocar no centro User=Usuário Users=Usuário +UserGroup=Grupo de usuários +UserGroups=Grupos de usuários NoUserGroupDefined=Nenhum grupo definido pelo usuário PasswordRetype=Repetir Senha NoteSomeFeaturesAreDisabled=Antenção, só poucos módulos/funcionalidade foram ativados nesta demo @@ -142,10 +146,12 @@ CurrentValue=Valor atual MultiLanguage=Multi Idioma RefOrLabel=Ref. da etiqueta DescriptionOfLine=Descrição da Linha +ParentLine=ID da linha superior Model=Modelo de Documento DefaultModel=Modelo de documento padrão Action=Ação About=Acerca de +NumberByMonth=Total de relatórios por mês Limit=Límite Logout=Sair NoLogoutProcessWithAuthMode=No recurso de desconexão aplicativo com modo de autenticação @@ -184,7 +190,6 @@ Morning=Manha Quadri=Trimistre CurrencyRate=Taxa de conversão moeda UseLocalTax=Incluindo taxa -UserAuthor=Criado por UserModif=Modificado por Default=Padrao DefaultValue=Valor por default @@ -195,11 +200,13 @@ UnitPriceHTCurrency=Preço unitário (sem) (Moeda) UnitPriceTTC=Preço Unit. Total PriceU=Preço Unit. PriceUHT=Preço Unit. +PriceUHTCurrency=U.P (líquido) (moeda) PriceUTTC=U.P. (inc. Impostos) Amount=Valor AmountInvoice=Valor Fatura AmountInvoiced=Valor faturado AmountInvoicedHT=Valor faturado (sem imposto) +AmountInvoicedTTC=Valor faturado (incluindo impostos) AmountPayment=Valor Pagamento AmountHTShort=Quantidade (liq.) AmountTTCShort=Valor (incl. taxas) @@ -211,6 +218,7 @@ MulticurrencyRemainderToPay=Permanecer para pagar, moeda original MulticurrencyAmountHT=Valor (sem impostos) moeda original MulticurrencyAmountTTC=Quantia (com as taxas), na moeda original MulticurrencyAmountVAT=Valor das taxas, na moeda original +MulticurrencySubPrice=Valor do subpreço multimoeda AmountLT1=Valor taxa 2 AmountLT2=Valor taxa 3 AmountLT1ES=Valor RE @@ -219,6 +227,8 @@ AmountTotal=Valor Total AmountAverage=Valor médio PriceQtyMinHT=Quantidade de preço min. (sem imposto) PriceQtyMinHTCurrency=Quantidade de preço min. (sem imposto) (moeda) +PercentOfOriginalObject=Porcentagem do objeto original +AmountOrPercent=Quantidade ou porcentagem TotalHTShort=Total (liq.) TotalHT100Short=Total 100%% (liq.) TotalHTShortCurrency=Total (excluindo em moeda) @@ -241,6 +251,7 @@ VATINs=Impostos IGST LT1Type=Tipo de imposto sobre vendas 2 LT2Type=Tipo de imposto sobre vendas 3 VATRate=Taxa ICMS +RateOfTaxN=Taxa de imposto %s VATCode=Codigo do ICMS VATNPR=Valor taxa NPR DefaultTaxRate=Taxa de imposto padrão @@ -286,8 +297,11 @@ to=para To=para ToDate=para ToLocation=para +at=no OtherInformations=Outra informação +Workflow=Fluxo de Trabalho ApprovedBy2=Aprovado pelo (segunda aprovação) +ValidatedToProduce=Validado (Para produzir) OpenAll=Abertos(todos) ClosedAll=Fechados(Todos) ByUsers=Pelo usuário @@ -307,6 +321,7 @@ MonthShort10=Out MonthShort12=Dez AttachedFiles=Arquivos e Documentos Anexos JoinMainDoc=Junte-se ao documento principal +JoinMainDocOrLastGenerated=Envie o documento principal ou o último gerado se não for encontrado ReportPeriod=Periodo de Análise Fill=Preencher Reset=Resetar @@ -321,6 +336,7 @@ Entities=Entidadees CustomerPreview=Historico Cliente SupplierPreview=Visualização do fornecedor ShowCustomerPreview=Ver Historico Cliente +InternalRef=Ref. interna SeeAll=Ver tudo SendByMail=Envio por e-mail MailSentBy=Mail enviado por @@ -394,6 +410,7 @@ LinkToSupplierOrder=Link para Ordem de compra LinkToSupplierInvoice=Link para a fatura do fornecedor LinkToContract=Link para o Contrato LinkToIntervention=Link para a Intervensão +LinkToMo=Link para Mo SetToDraft=Voltar para modo rascunho ClickToRefresh=Clique para atualizar EditWithEditor=Editar com o CKEditor @@ -426,6 +443,7 @@ XMoreLines=%s linha(s) escondidas ShowMoreLines=Mostrar mais / menos linhas PublicUrl=URL pública AddBox=Adicionar caixa +SelectElementAndClick=Selecione um elemento e clique em %s PrintFile=Imprimir arquivo %s ShowTransaction=Mostrar entrada na conta bancária ShowIntervention=Mostrar intervençao @@ -467,9 +485,14 @@ Miscellaneous=Variados Calendar=Calendário GroupBy=Agrupar por ViewFlatList=Visão da lista resumida +ViewAccountList=Ver razão +ViewSubAccountList=Ver razão da subconta RemoveString=Remover string '%s' +SomeTranslationAreUncomplete=Alguns dos idiomas oferecidos podem estar parcialmente traduzidos ou podem conter erros. Ajude a corrigir seu idioma registrando-se em https://transifex.com/projects/p/dolibarr/ para adicionar suas melhorias. DirectDownloadLink=Link de download público +PublicDownloadLinkDesc=Apenas o link é necessário para baixar o arquivo DirectDownloadInternalLink=Link privado para baixar +PrivateDownloadLinkDesc=Você precisa estar logado e precisa de permissões para visualizar ou baixar o arquivo Download=Baixar DownloadDocument=Descarregar documento ActualizeCurrency=Atualizar taxa de câmbio @@ -521,6 +544,7 @@ Monthly=Por mês Remote=Controlo remoto Deletedraft=Excluir rascunho ConfirmMassDraftDeletion=Confirmação de exclusão de massa de esboço +FileSharedViaALink=Arquivo compartilhado com um link público SelectAThirdPartyFirst=Selecione um terceiro primeiro ... YouAreCurrentlyInSandboxMode=No momento você está no %s modo "caixa de areia" AnalyticCode=Código analitico @@ -532,6 +556,7 @@ PaymentInformation=Informações de Pagamento ValidFrom=Válido de NoRecordedUsers=Sem Usuários ToClose=Para Fechar +ToRefuse=Recusar ToProcess=A processar ToApprove=Para Aprovar GlobalOpenedElemView=Visão Global @@ -556,6 +581,20 @@ ByStatus=Por status Used=Usado ASAP=O mais breve possível CREATEInDolibarr=Registro %s criado +DefaultMailModel=Modelo de correio padrão DateOfBirth=Data de nascimento +SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry=O token de segurança expirou, então a ação foi cancelada. Por favor, tente novamente. +UpToDate=Atualizado +OutOfDate=Desatualizado +UpdateForAllLines=Atualização para todas as linhas OnHold=Em espera +Civility=Civilidade +AffectTag=Afetar Tag +CreateExternalUser=Criar usuário externo +ConfirmAffectTag=Efeito de etiqueta em massa +ConfirmAffectTagQuestion=Tem certeza de que deseja afetar as tags nos %s registros selecionados? +CategTypeNotFound=Nenhum tipo de tag encontrado para o tipo de registro +CopiedToClipboard=Copiado para a área de transferência ClientTZ=Fuso Horário do cliente (usuário) +Terminate=Concluir +Terminated=Encerrado diff --git a/htdocs/langs/pt_BR/members.lang b/htdocs/langs/pt_BR/members.lang index a16f6934198..c83bc985139 100644 --- a/htdocs/langs/pt_BR/members.lang +++ b/htdocs/langs/pt_BR/members.lang @@ -12,7 +12,6 @@ ErrorUserPermissionAllowsToLinksToItselfOnly=Por razões de segurança, você de SetLinkToThirdParty=Link para um fornecedor Dolibarr MembersListResiliated=Lista de membros encerrados MenuMembersResiliated=Membros encerrados -MemberId=Id adesão MemberStatusDraft=Minuta (requer confirmação) MemberStatusDraftShort=Minuta MemberStatusActiveLateShort=Vencido diff --git a/htdocs/langs/pt_BR/oauth.lang b/htdocs/langs/pt_BR/oauth.lang index e91d8d1d365..3dc1bf645fd 100644 --- a/htdocs/langs/pt_BR/oauth.lang +++ b/htdocs/langs/pt_BR/oauth.lang @@ -9,10 +9,8 @@ HasAccessToken=Um token foi gerado e salvo no banco de dados local NewTokenStored=Token recebido e salvo ToCheckDeleteTokenOnProvider=Clique aqui para verificar/apagar autorização salva pelo provedor OAuth %s TokenDeleted=Token excluído -RequestAccess=Clique aqui para solicitar/renovar o acesso e receber um novo token para salvar DeleteAccess=Clique aqui para apagar o token UseTheFollowingUrlAsRedirectURI=Use o URL a seguir como o URI de redirecionamento ao criar suas credenciais com seu provedor OAuth: -ListOfSupportedOauthProviders=Insira as credenciais fornecidas pelo seu provedor do OAuth2. Apenas fornecedores suportados do OAuth2 são listados aqui. Esses serviços podem ser usados por outros módulos que precisam da autenticação OAuth2. SeePreviousTab=Ver aba anterior OAuthIDSecret=Identificação OAuth e Senha TOKEN_REFRESH=Token Atualizar Presente @@ -20,7 +18,6 @@ TOKEN_EXPIRED=Token vencido TOKEN_EXPIRE_AT=Token expira no TOKEN_DELETE=Excluir token salvo OAUTH_GOOGLE_NAME=Serviço do Google OAuth -OAUTH_GOOGLE_DESC=Ir para esta página e depois "Credenciais" para criar credenciais do OAuth OAUTH_GITHUB_NAME=Serviço OAuth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub secreto -OAUTH_GITHUB_DESC=Vá para esta página e, em seguida, "Registrar um novo aplicativo" para criar credenciais do OAuth +OAUTH_STRIPE_TEST_NAME=Teste de distribuição do OAuth diff --git a/htdocs/langs/pt_BR/stocks.lang b/htdocs/langs/pt_BR/stocks.lang index 5c10bf68ee4..baaf149427c 100644 --- a/htdocs/langs/pt_BR/stocks.lang +++ b/htdocs/langs/pt_BR/stocks.lang @@ -145,8 +145,10 @@ ImportFromCSV=Importar lista de movimentos em CSV LabelOfInventoryMovemement=Inventario 1%s ObjectNotFound=1%s nao encontrado MakeMovementsAndClose=Gerar movimentos e fechar +AutofillWithExpected=Inserir quantidade real com quantidade esperada ErrorWrongBarcodemode=Modo de código de barras desconhecido ProductDoesNotExist=Produto não existe ProductBatchDoesNotExist=Produto com lote / serial não existe ProductBarcodeDoesNotExist=Produto com código de barras não existe +ToStart=Inicio InventoryStartedShort=Iniciado diff --git a/htdocs/langs/pt_MZ/accountancy.lang b/htdocs/langs/pt_MZ/accountancy.lang new file mode 100644 index 00000000000..90584e4bd28 --- /dev/null +++ b/htdocs/langs/pt_MZ/accountancy.lang @@ -0,0 +1,235 @@ +# Dolibarr language file - Source file is en_US - accountancy +ACCOUNTING_EXPORT_SEPARATORCSV=Separador de coluna para arquivo de exportação +ACCOUNTING_EXPORT_DATE=Formato de data para arquivo de exportação +ACCOUNTING_EXPORT_PIECE=Exportar a quantidade de peça +ACCOUNTING_EXPORT_GLOBAL_ACCOUNT=Exportação com conta global? +ACCOUNTING_EXPORT_LABEL=Exportar a Descrição? +ACCOUNTING_EXPORT_AMOUNT=Exportar o montante? +ACCOUNTING_EXPORT_DEVISE=Exportar Moedas +Selectformat=Selecione o formato do arquivo +ACCOUNTING_EXPORT_FORMAT=Selecione o formato do arquivo +ACCOUNTING_EXPORT_ENDLINE=Selecione o tipo de retorno do frete +ACCOUNTING_EXPORT_PREFIX_SPEC=Especifique o prefixo do nome do arquivo +DefaultForService=Padrão para serviço +ProductForThisThirdparty=Produto para este terceiro +ServiceForThisThirdparty=Serviço para este terceiro +CantSuggest=Não posso sugerir +AccountancySetupDoneFromAccountancyMenu=A maioria das configurações da Contabilidade é feita a partir do menu %s +ConfigAccountingExpert=Configuração do módulo de contabilidade (dupla entrada) +Journalization=Lançamento no Livro +Chartofaccounts=Plano de contas +ChartOfSubaccounts=Plano de contas individuais +InvoiceLabel=Rótulo da fatura +OverviewOfAmountOfLinesNotBound=Visão geral do montante das linhas não vinculadas a uma conta contábil +OverviewOfAmountOfLinesBound=Visão geral do montante das linhas já vinculadas a uma conta contábil +DeleteCptCategory=Remover conta contábil do grupo +ConfirmDeleteCptCategory=Tem certeza de que deseja remover essa conta contábil do grupo de contas contábeis? +JournalizationInLedgerStatus=Situação do registro do diário +GroupIsEmptyCheckSetup=O grupo está vazio, verifique a configuração do grupo de contabilidade personalizado +AccountantFiles=Exportar documentos de origem +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). +VueByAccountAccounting=Ver por conta contábil +MainAccountForCustomersNotDefined=Conta contábil principal para clientes não definidos na configuração +MainAccountForUsersNotDefined=Conta contábil principal para usuários não definidos na configuração +MainAccountForVatPaymentNotDefined=Conta contábil principal para o pagamento do IVA não definido na configuração +MainAccountForSubscriptionPaymentNotDefined=Conta contábil principal para pagamento de assinatura não definida na configuração +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: Verifique se existe um modelo de plano de contas ou crie um no menu %s +AccountancyAreaDescChart=PASSO %s: Selecione e | ou conclua seu plano de contas no menu %s +AccountancyAreaDescVat=PASSO %s: defina contas contábeis para cada taxa de IVA. Para isso, use a entrada de menu %s. +AccountancyAreaDescSal=PASSO %s: Defina contas contábeis padrão para pagamento de salários. Para isso, use a entrada de menu %s. +AccountancyAreaDescDonation=PASSO %s: Defina contas contábeis padrão para doação. Para isso, use a entrada de menu %s. +AccountancyAreaDescSubscription=Etapa %s: defina contas contábeis padrão para assinatura de membros. Para isso, use a entrada de menu %s. +AccountancyAreaDescMisc=PASSO %s: Defina a conta padrão obrigatória e contas contábeis padrão para transações diversas. Para isso, use a entrada de menu %s. +AccountancyAreaDescLoan=PASSO %s: Defina contas contábeis padrão para empréstimos. Para isso, use a entrada de menu %s. +AccountancyAreaDescBank=PASSO %s:Defina contabilidade e código de diário para cada banco e contas contábil. Para isso, use o menu de entradas %s. +AccountancyAreaDescBind=PASSO %s: verifique a ligação entre as linhas %s existentes e a conta contábil feita, de modo que o aplicativo poderá periodizar transações no Livro de Registro em um clique. Complete as ligações faltantes. Para isso, use a entrada de menu %s. +AccountancyAreaDescWriteRecords=PASSO %s: efetue as transações no Livro de Registro. Para isso, vá para o menu %s e clique no botão %s . +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. +Selectchartofaccounts=Selecione gráfico ativo de contas +ChangeAndLoad=Alterar e carregar +Addanaccount=Adicionar uma conta contábil +AccountAccounting=Conta contábil +SubledgerAccount=Conta Subledger +SubledgerAccountLabel=Rótulo da conta de subconta +ShowAccountingAccount=Mostrar conta contábil +ShowAccountingJournal=Mostrar contabilidade +AccountAccountingSuggest=Sugerir Conta de Contabilidade +MenuBankAccounts=Contas bancárias +MenuVatAccounts=Contas de Impostos sobre valor agregado +MenuLoanAccounts=Contas de empréstimos +MenuProductsAccounts=Contas de produto +MenuClosureAccounts=Contas de encerramento +MenuAccountancyClosure=Fechamento +MenuAccountancyValidationMovements=Validar movimentações +ProductsBinding=Contas dos produtos +TransferInAccounting=Transferência em contabilidade +Binding=Vinculando para as contas +CustomersVentilation=Vinculando as faturas do cliente +ExpenseReportsVentilation=Relatório de despesas obrigatórias +Bookkeeping=Razão +ObjectsRef=Referência da fonte do objeto +CAHTF=Total de fornecedores antes de impostos +TotalExpenseReport=Relatório de despesas totais +InvoiceLines=Linhas da fatura a vincular +InvoiceLinesDone=Linhas das faturas vinculadas +ExpenseReportLines=Relatórios de linhas de despesas obrigatórias +ExpenseReportLinesDone=Relatórios de linhas de despesas vinculadas +IntoAccount=Vincular linha com conta contábil +LineId=Linha da ID +Processing=Processando +EndProcessing=Processo foi finalizado. +LineOfExpenseReport=Relatório de linha de despesas +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 contábil +XLineFailedToBeBinded=%s produtos/serviços não estão vinculados a qualquer conta da Contabilidade +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=Comprimento das contas de contabilidade geral (se o valor configurado for 6, a conta '706' aparecerá como '706000' na tela) +ACCOUNTING_LENGTH_AACCOUNT=Comprimento das contas de contabilidade de terceiros (se você definir o valor para 6 aqui, a conta "401" aparecerá como '401000' na tela) +ACCOUNTING_MANAGE_ZERO=Permitir gerenciar diferentes números de zeros no final de uma conta contábil. Necessário para alguns países (como a Suíça). Se definido como desativado (padrão), você pode definir os dois parâmetros a seguir para solicitar que o aplicativo adicione zeros virtuais. +BANK_DISABLE_DIRECT_INPUT=Desabilitar o registro direto da transação na conta bancária +ACCOUNTING_SELL_JOURNAL=Diário de Vendas +ACCOUNTING_PURCHASE_JOURNAL=Diário de Compras +ACCOUNTING_MISCELLANEOUS_JOURNAL=Diário diversos +ACCOUNTING_EXPENSEREPORT_JOURNAL=Diário de relatórios de despesas +ACCOUNTING_RESULT_PROFIT=Conta de contabilidade de resultado (Lucro) +ACCOUNTING_RESULT_LOSS=Conta contábil do resultado (perda) +ACCOUNTING_CLOSURE_DEFAULT_JOURNAL=Jornal de encerramento +ACCOUNTING_ACCOUNT_TRANSFER_CASH=Conta contábil da transferência bancária transitória +TransitionalAccount=Conta de transferência bancária transitória +ACCOUNTING_ACCOUNT_SUSPENSE=Conta contábil de espera +DONATION_ACCOUNTINGACCOUNT=Conta contábil para registro de doações. +ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Conta contábil para registrar assinaturas +ACCOUNTING_PRODUCT_BUY_ACCOUNT=Conta contábil padrão para produtos comprados (usada se não definida na folha de produtos) +ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Conta contábil padrão para os produtos comprados na CEE (usada se não definida na planilha de produtos) +ACCOUNTING_PRODUCT_BUY_EXPORT_ACCOUNT=Conta contábil padrão para os produtos comprados e importados da CEE (usados ​​se não definidos na folha do produto) +ACCOUNTING_PRODUCT_SOLD_ACCOUNT=Conta contábil padrão para os produtos vendidos (usado se não estiver definido na folha do produto) +ACCOUNTING_PRODUCT_SOLD_INTRA_ACCOUNT=Conta contábil por padrão para os produtos vendidos na EEC (usada se não definida na planilha de produtos) +ACCOUNTING_PRODUCT_SOLD_EXPORT_ACCOUNT=Conta contábil por padrão para os produtos vendidos e exportados para fora da EEC (usados ​​se não definidos na folha do produto) +ACCOUNTING_SERVICE_BUY_ACCOUNT=Conta contábil padrão para os serviços comprados (se não for definido na listagem de serviços) +ACCOUNTING_SERVICE_BUY_INTRA_ACCOUNT=Conta contábil padrão para os serviços comprados no EEC (usada se não definida na planilha de serviços) +ACCOUNTING_SERVICE_BUY_EXPORT_ACCOUNT=Conta contábil padrão para os serviços comprados e importados do EEC (usados ​​se não definidos na ficha de serviço) +ACCOUNTING_SERVICE_SOLD_ACCOUNT=Conta contábil padrão para os serviços vendidos (se não for definido na listagem de serviços) +ACCOUNTING_SERVICE_SOLD_INTRA_ACCOUNT=Conta contábil por padrão para os serviços vendidos na EEC (usada se não definida na ficha de serviço) +ACCOUNTING_SERVICE_SOLD_EXPORT_ACCOUNT=Conta contábil por padrão para os serviços vendidos e exportados para fora do EEC (usados ​​se não definidos na ficha de serviço) +LabelAccount=Conta rótulo +JournalLabel=Rótulo de jornal +TransactionNumShort=Nº da transação +AccountingAccountGroupsDesc=Você pode definir aqui alguns grupos de contabilidade. Eles serão usados ​​para relatórios contábeis personalizados. +NotMatch=Não Definido +DelMonth=Mês a excluir +DelYear=Ano a ser deletado +DelJournal=Resumo a ser deletado +VATAccountNotDefined=Conta para IVA não definida +ThirdpartyAccountNotDefined=Conta para terceiro não definida +ProductAccountNotDefined=Conta para produto não definida +FeeAccountNotDefined=Conta por taxa não definida +BankAccountNotDefined=Conta para o banco não definida +CustomerInvoicePayment=Contas Recebidas +ThirdPartyAccount=Conta de terceiros +ListeMvts=Lista de movimentações +ErrorDebitCredit=Débito e Crédito não pode ter valor preenchido ao mesmo tempo +AddCompteFromBK=Adicionar contas contábeis ao grupo +ReportThirdParty=Listar conta de terceiros +DescThirdPartyReport=Consulte aqui a lista de clientes e fornecedores de terceiros e suas contas contábeis +ListAccounts=Lista das contas contábeis +UnknownAccountForThirdparty=Conta de terceiros desconhecida. Nós usaremos %s +UnknownAccountForThirdpartyBlocking=Conta de terceiros desconhecida. Erro de bloqueio +ThirdpartyAccountNotDefinedOrThirdPartyUnknownSubledgerIgnored=Terceiros desconhecido e subconta não definida no pagamento. Manteremos o valor da conta do subconjunto vazio. +UnknownAccountForThirdpartyAndWaitingAccountNotDefinedBlocking=Conta de terceiros desconhecida e conta em espera não definida. Erro de bloqueio +OpeningBalance=Saldo inicial +ShowOpeningBalance=Mostrar saldo inicial +HideOpeningBalance=Ocultar saldo inicial +Pcgtype=Plano de Contas +PcgtypeDesc=O grupo de contas é usado como critério predefinido de 'filtro' e 'agrupamento' para alguns relatórios contábeis. Por exemplo, 'RENDA' ou 'DESPESA' são usados ​​como grupos para contas contábeis de produtos para criar o relatório de despesas / receitas. +Reconcilable=Reconciliável +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ê usar produtos ou serviços predefinidos e definir o número da conta no cartão de produto / serviço, o aplicativo poderá fazer toda a ligação entre suas linhas de fatura e a conta contábil de seu plano de contas, apenas em um clique com o botão "%s" . Se a conta não foi definida em cartões de produtos / serviços ou se você ainda tiver algumas linhas não vinculadas a uma conta, será necessário fazer uma ligação manual no menu " %s ". +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 +DescVentilSupplier=Consulte aqui a lista de linhas de fatura de fornecedor vinculadas ou não vinculadas a uma conta contábil do produto (somente registro ainda não transferido será visível na contabilidade) +DescVentilDoneSupplier=Consulte aqui a lista das linhas de faturas de fornecedores e sua conta contábil +DescVentilTodoExpenseReport=Relatórios de linhas de despesas de ligação já não estão vinculadas com uma conta contábil com taxa +DescVentilExpenseReport=Consulte aqui a lista de relatório de linhas de despesas vinculadas (ou não) a uma conta contábil com taxa +DescVentilExpenseReportMore=Se você configurar uma conta contábil no tipo de linhas de relatório de despesas, o aplicativo poderá fazer toda a ligação entre suas linhas de relatório de despesas e a conta contábil do seu plano de contas, em apenas um clique com o botão "%s" . Se a conta não foi definida no dicionário de taxas ou se você ainda tiver algumas linhas não vinculadas a nenhuma conta, será necessário fazer uma ligação manual no menu " %s ". +DescVentilDoneExpenseReport=Consulte aqui a lista dos relatórios de linha de despesas e sua conta contábil de taxas +DescValidateMovements=Qualquer modificação ou exclusão de escrita, letras e exclusões será proibida. Todas as entradas para um exercício devem ser validadas, caso contrário, o fechamento não será possível +ValidateHistory=Vincular Automaticamente +ErrorAccountancyCodeIsAlreadyUse=Erro, você não pode excluir esta conta contábil, pois ela esta em uso +GeneralLedgerIsWritten=As transações estão escritas no Razão +ListOfProductsWithoutAccountingAccount=Lista de produtos não vinculados a qualquer conta da Contabilidade +ChangeBinding=Alterar a vinculação +Accounted=Contas no livro de contas +NotYetAccounted=Ainda não transferida para a contabilidade +ShowTutorial=Mostrar tutorial +NotReconciled=Não conciliada +AddAccountFromBookKeepingWithNoCategories=Conta disponível porém ainda não no grupo personalizado +CategoryDeleted=A categoria para a conta contábil foi removida +AccountingJournals=Relatórios da contabilidade +AccountingJournal=Livro de Registro de contabilidade +NewAccountingJournal=Novo Livro de Registro contábil +NatureOfJournal=Natureza do Relatório +AccountingJournalType2=De vendas +AccountingJournalType9=Novo +ErrorAccountingJournalIsAlreadyUse=Esta Livro de Registro já está sendo usado +NumberOfAccountancyEntries=Número de entradas +NumberOfAccountancyMovements=Número de movimentos +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) +ExportDraftJournal=Livro de Registro de rascunho de exportação +Selectmodelcsv=Escolha um modelo de exportação +Modelcsv_CEGID=Exportar para CEGID Expert Comptable +Modelcsv_COALA=Exportação para Sage Coala +Modelcsv_bob50=Exportação para Sage BOB 50 +Modelcsv_quadratus=Exportação para Quadratus QuadraCompta +Modelcsv_ebp=Exportar para EBP +Modelcsv_cogilog=Exportar para Cogilog +Modelcsv_LDCompta=Exportar para LD Compta (v9) (Teste) +Modelcsv_LDCompta10=Exportação para LD Compta (v10 ou superior) +Modelcsv_openconcerto=Exportar para OpenConcerto (Teste) +Modelcsv_FEC=Exportar FEC +Modelcsv_Sage50_Swiss=Exportação para Sage 50 Suíça +ChartofaccountsId=ID do gráfico de contas +InitAccountancy=Contabilidade Inicial +InitAccountancyDesc=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 que o módulo de código de barras tenha sido instalado antes. +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 IVA quando nenhuma conta da Contabilidade específica tiver sido definida. +DefaultClosureDesc=Esta página pode ser usada para definir parâmetros usados ​​para fechamentos contábeis. +OptionModeProductSell=Modo vendas +OptionModeProductSellIntra=Vendas de modo exportadas na CEE +OptionModeProductSellExport=Vendas de modo exportadas em outros países +OptionModeProductBuy=Modo compras +OptionModeProductBuyIntra=Compras no modo importadas na CEE +OptionModeProductBuyExport=Modo adquirido importado de outros países +OptionModeProductSellDesc=Exibir todos os produtos sem uma conta da Contabilidade definida para compras. +OptionModeProductSellIntraDesc=Mostrar todos os produtos com conta contábil para vendas no EEC. +OptionModeProductSellExportDesc=Mostrar todos os produtos com conta contábil para outras vendas externas. +OptionModeProductBuyDesc=Exibir todos os produtos sem uma conta da Contabilidade definida para compras. +OptionModeProductBuyIntraDesc=Mostre todos os produtos com conta contábil para compras no EEC. +OptionModeProductBuyExportDesc=Mostre todos os produtos com conta contábil para outras compras no exterior. +CleanFixHistory=Remover o código contábil de linhas que não existem nos gráficos de conta +CleanHistory=Redefinir todas as vinculações para o ano selecionado +PredefinedGroups=Grupos predefinidos +WithoutValidAccount=Sem conta dedicada válida +ValueNotIntoChartOfAccount=Este valor da conta contábil não existe no gráfico de conta +AccountRemovedFromGroup=Conta removida do grupo +SaleLocal=Venda local +SaleExport=Venda de exportação +SaleEEC=Venda na CEE +SaleEECWithVAT=A venda na CEE com um IVA não nulo; portanto, supomos que essa NÃO seja uma venda intracomunitária e a conta sugerida é a conta padrão do produto. +SaleEECWithoutVATNumber=Venda na CEE sem IVA, mas o ID do IVA de terceiros não está definido. Recorremos à conta do produto para vendas padrão. Você pode corrigir o ID do IVA de terceiros ou a conta do produto, se necessário. +Range=Faixa da conta da Contabilidade +ConfirmMassDeleteBookkeepingWriting=Confirmação exclusão em massa +SomeMandatoryStepsOfSetupWereNotDone=Algumas etapas obrigatórias de configuração não foram feitas, preencha-as +ErrorNoAccountingCategoryForThisCountry=Nenhum Plano de Contas Contábil disponível para este país %s (Veja Home - Configurações- Dicionário) +ExportNotSupported=O formato de exportação definido não é suportado nesta página +DateExport=Data de exportação diff --git a/htdocs/langs/pt_MZ/admin.lang b/htdocs/langs/pt_MZ/admin.lang index f00064f7eff..33c29283299 100644 --- a/htdocs/langs/pt_MZ/admin.lang +++ b/htdocs/langs/pt_MZ/admin.lang @@ -1,2 +1,1725 @@ # Dolibarr language file - Source file is en_US - admin -TopMenuDisableImages=Hide images in Top menu +BoldRefAndPeriodOnPDF=Imprimir referência e período do item em PDF +BoldLabelOnPDF=Imprimir etiqueta do item em negrito, em PDF +VersionProgram=Versão Programa +VersionLastInstall=Versão de instalação inicial +VersionLastUpgrade=Atualização versão mais recente +VersionExperimental=Versão Experimental +VersionDevelopment=Versão de Desenvolvimento +VersionUnknown=Versão Desconhecida +VersionRecommanded=Versão Recomendada +FileCheck=Verificações de integridade do conjunto de arquivos +FileCheckDesc=Esta ferramenta lhe permite verificar a integridade dos arquivos e da configuração do seu aplicativo, comparando cada arquivo com os oficiais. Os valores de algumas constantes da configuração também podem ser verificados. Você pode usar esta ferramenta para identificar se algum arquivo foi modificado (ex. por um 'hacker'). +FileIntegrityIsStrictlyConformedWithReference=A integridade dos arquivos está estritamente de acordo com a referência. +FileIntegrityIsOkButFilesWereAdded=Expirou o processo para verificar a integridade dos arquivos, entretanto alguns novos arquivos foram adicionados. +FileIntegritySomeFilesWereRemovedOrModified=A verificação da integridade dos arquivos falhou. Alguns arquivos foram modificados, removidos ou adicionados. +GlobalChecksum=Verificação global +MakeIntegrityAnalysisFrom=Realizar a análise da integridade dos arquivos do aplicativo em +LocalSignature=Assinatura local integrada (menos confiável) +RemoteSignature=Assinatura remota distante (mais confiável) +FilesMissing=Arquivos ausentes +FilesUpdated=Arquivos atualizados +FilesModified=Arquivos Alterados +FilesAdded=Arquivos Adicionados +FileCheckDolibarr=Verificar a integridade dos arquivos do aplicativo +AvailableOnlyOnPackagedVersions=O arquivo local para verificação de integridade só está disponível quando a aplicação é instalada a partir de um pacote oficial +XmlNotFound=Não encontrado o Arquivo Xml da integridade +SessionId=ID da sessão +SessionSaveHandler=Manipulador para salvar sessão +SessionSavePath=Local para salvar sessão +PurgeSessions=Purgar Sessão +ConfirmPurgeSessions=Você tem certeza que quer remover toas as sessões? Isto ira desconectar todos os usuários (exceto você) +LockNewSessions=Bloquear Novas Sessões +ConfirmLockNewSessions=Tem certeza de que deseja restringir qualquer nova conexão Dolibarr a si mesmo? Apenas o usuário %s poderá se conectar depois disso. +UnlockNewSessions=Remover Bloqueio de Conexão +YourSession=Sua Sessão +Sessions=Sessões de Usuários +WebUserGroup=Servidor Web para usuário/grupo +PermissionsOnFiles=Permissões em arquivos +PermissionsOnFilesInWebRoot=Permissões em arquivos no diretório raiz da web +PermissionsOnFile=Permissões no arquivo %s +NoSessionFound=Sua configuração do PHP parece não permitir listar as sessões ativas. O diretório usado para salvar sessões (%s) pode estar protegido (por exemplo, pelas permissões do sistema operacional ou pela diretiva PHP "open_basedir"). +DBStoringCharset=Charset base de dados para armazenamento de dados (Database charset to store data) +DBSortingCharset=Charset base de dados para classificar os dados (Database charset to sort data) +HostCharset=Conjunto de caracteres do host +ClientCharset=Conjunto de clientes +ClientSortingCharset=Conferência de Clientes +WarningModuleNotActive=Módulo %s deve ser Ativado! +WarningOnlyPermissionOfActivatedModules=Somente as permissões relacionadas com os módulos ativados que aparecem aqui. +DolibarrSetup=Instalação/Atualização do Dolibarr +InternalUser=Usuário Interno +ExternalUser=Usuário Externo +InternalUsers=Usuários Internos +ExternalUsers=Usuários Externos +SetupArea=Conf. +UploadNewTemplate=Carregar novo(s) tema(s) +FormToTestFileUploadForm=Formulário para teste de upload de arquivo +ModuleMustBeEnabled=O módulo/aplicação %s deve ser ativado +ModuleIsEnabled=O modulo/aplicação %s foi ativado +IfModuleEnabled=OBS: Sim só é eficaz se o módulo %s estiver ativado +RemoveLock=Remove/renomeia o arquivo %s se existir, para permitir o uso da ferramenta atualização/instalação. +RestoreLock=Restaura o arquivo %s, com permissão de leitura, para desabilitar qualquer serviço de atualização/instalação +SecuritySetup=Conf. de Segurança +PHPSetup=Configuração do PHP +OSSetup=Configuração do sistema operacional +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 %s e não é suportada pelo dolibarr. +DictionarySetup=Configuração Dicionário +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 +DisableJavascriptNote=Nota: Apenas para fins de teste ou depuração. Para otimização para cegos ou navegadores de texto, você pode preferir usar a configuração no perfil do usuário +UseSearchToSelectCompanyTooltip=Além disso, se você tem um grande número de terceiros (> 100 000), você pode aumentar a velocidade, definindo COMPANY_DONOTSEARCH_ANYWHERE constante a 1 em Setup-> Outro. Busca, então, ser limitada até o início da string. +UseSearchToSelectContactTooltip=Além disso, se você tem um grande número de terceiros (> 100 000), você pode aumentar a velocidade, definindo CONTACT_DONOTSEARCH_ANYWHERE constante a 1 em Setup-> Outro. Busca, então, ser limitada até o início da string. +DelaiedFullListToSelectContact=Aguarde até que uma tecla seja pressionada antes de carregar o conteúdo da lista de combinação de contatos.
Isso pode aumentar o desempenho se você tiver um grande número de contatos, mas é menos conveniente. +SearchString=Seqüência de pesquisa +NotAvailableWhenAjaxDisabled=Indisponível quando o Ajax esta desativado +AllowToSelectProjectFromOtherCompany=No documento de um terceiro, pode-se escolher um projeto conectado a outro terceiro +TimesheetPreventAfterFollowingMonths=Impedir o tempo de gravação gasto após o seguinte número de meses +UsePreviewTabs=Usar previsão de digitação na tecla 'tab' +ShowPreview=Mostrar Previsão +ShowHideDetails=Mostrar-ocultar detalhes +PreviewNotAvailable=Previsão Indisponível +ThemeCurrentlyActive=Tema Ativo +MySQLTimeZone=Timezone Mysql (do servidor sql) +NextValue=Próximo Valor +NextValueForInvoices=Próximo Valor (Faturas) +NextValueForCreditNotes=Próximo Valor (Notas de Crédito) +NextValueForDeposit=Próximo valor (pagamento inicial) +NextValueForReplacements=Próximo Valor (Substituição) +MustBeLowerThanPHPLimit=Nota: sua configuração PHP atualmente limita o tamanho máximo de arquivo para upload para %s %s, independentemente do valor desse parâmetro +NoMaxSizeByPHPLimit=Nenhum limite foi configurado no seu PHP +MaxSizeForUploadedFiles=Tamanho Máximo para uploads de arquivos ('0' para proibir o carregamento) +AntiVirusCommand=Caminho completo para antivirus +AntiVirusCommandExample=Exemplo para Daemon ClamAv (requer clamav-daemon): / usr / bin / clamdscan
Exemplo para ClamWin (muito, muito lento): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe +AntiVirusParam=Mais parâmetros em linha de comando (CLI) +AntiVirusParamExample=Exemplo para o Daemon ClamAv: --fdpass
Exemplo para ClamWin: --database = "C: \\ Arquivos de Programas (x86) \\ ClamWin \\ lib" +ComptaSetup=Conf. do Módulo Contabilidade +UserSetup=Conf. do Gestor de usuários +MultiCurrencySetup=Configuração de múltiplas moedas +MenuLimits=Limites e Precisão +MenuIdParent=ID do menu pai +DetailMenuIdParent=ID do menu pai (vazio (NULL) para menu no topo) +ParentID=ID principal +DetailPosition=Define as posições do menu em ordem numérica +NotConfigured=Módulo/Aplicativo não configurado +SetupShort=Conf. +OtherOptions=Outras Opções +OtherSetup=Outra configuração +CurrentValueSeparatorThousand=Separador de milhar +IdModule=Módulo ID +IdPermissions=Permissão ID +LanguageBrowserParameter=Parâmetro de Linguagem %s +ClientHour=Horário do Cliente (usuário) +OSTZ=Fuso Horário do OS do Servidor +PHPTZ=Fuso Horário do servidor PHP +CurrentHour=Horário PHP (servidor) +CurrentSessionTimeOut=A sessão expirou +MaxNbOfLinesForBoxes=Número máx. de linhas para widgets +AllWidgetsWereEnabled=Todos as ferramentas disponíveis estão habilitadas +PositionByDefault=Posição Padrão(default) +MenusDesc=O Gerenciador de Menu, define o conteúdo das barras de menu (Horizontal e Vertical). +MenusEditorDesc=O editor do menu permite que você defina entradas personalizadas. Use-o com cuidado para evitar instabilidade e entradas no menu que não serão encontradas.
Alguns módulos adicionam entradas no menu (na maioria das vezes, em menu Tudo). Se remover algumas dessas entradas por engano, você poderá restaurá-las desabilitando e reabilitando o módulo. +MenuForUsers=Menu para os Usuários +LangFile=Arquivo .lang +Language_en_US_es_MX_etc=Linguagem (en_US, pt_BR, ...) +SystemInfo=Informações de Sistema +SystemToolsArea=Área de Ferramentas do sistema +SystemToolsAreaDesc=Essa área dispõem de funções administrativas. Use esse menu para escolher as funções que você está procurando. +Purge=Purgar (apagar tudo) +PurgeAreaDesc=Esta página permite deletar todos os arquivos gerados ou armazenados pelo Dolibarr (arquivos temporários ou todos os arquivos no diretório %s). Este recurso é fornecido como uma solução alternativa aos usuários cujo a instalação esteja hospedado num servidor que impeça o acesso as pastas onde os arquivos gerados pelo Dolibarr são armazenados, para excluí-los. +PurgeDeleteLogFile=Excluir os arquivos de registro, incluindo o %s definido pelo módulo Syslog (não há risco de perda de dados) +PurgeDeleteTemporaryFiles=Exclua todos os arquivos de log e temporários (sem risco de perda de dados). O parâmetro pode ser 'tempfilesold', 'logfiles' ou ambos 'tempfilesold + logfiles'. Nota: A exclusão de arquivos temporários é feita apenas se o diretório temporário foi criado há mais de 24 horas. +PurgeDeleteTemporaryFilesShort=Apagar log e arquivos temporários (não há risco de perda de dados) +PurgeDeleteAllFilesInDocumentsDir=Eliminar todos os arquivos do diretório %s. Isto irá excluir todos documentos (Terceiros, faturas, ...), arquivos carregados no módulo ECM, Backups e arquivos temporários +PurgeRunNow=Purgar(Apagar) Agora +PurgeNothingToDelete=Sem diretório ou arquivos para excluir +PurgeNDirectoriesDeleted=%s Arquivos o diretórios eliminados +PurgeNDirectoriesFailed=Falha ao excluir %s arquivos ou diretórios. +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 +RunCommandSummary=Backup foi iniciado com o seguinte comando +BackupResult=Resultado de backup +BackupFileSuccessfullyCreated=Sucesso em gerar o arquivo de backup! =D +YouCanDownloadBackupFile=O arquivo gerado pode agora ser baixado +NoBackupFileAvailable=Nenhum backup está disponível +ExportMethod=Método de Exportação +ImportMethod=Método de Importação +ToBuildBackupFileClickHere=Para criar um backup, click aqui. +ImportMySqlDesc=Para importar um arquivo de backup do MySQL, você pode usar o phpMyAdmin através de sua hospedagem ou usar o comando mysql a partir da linha de comando.
Por exemplo: +ImportPostgreSqlDesc=Para importar um arquivo de backup, você deve usar pg_restore na linha de comando: +ImportMySqlCommand=%s %s < meubackup.sql +ImportPostgreSqlCommand=%s %s meubackup.sql +Compression=Compactar +CommandsToDisableForeignKeysForImport=Comando para desativar as chaves estrangeiras(foreign keys) na importação +CommandsToDisableForeignKeysForImportWarning=Mandatório se você quiser ser capaz de restaurar seu 'sql dump' depois +ExportCompatibility=Compatibilidade de gerar arquivos de exportação +ExportUseMySQLQuickParameter=Use o parâmetro '--quick' +ExportUseMySQLQuickParameterHelp=O parâmetro '--quick' ajuda a limitar o consumo de RAM para tabelas grandes. +MySqlExportParameters=Parâmetros de exportação do MySql +PostgreSqlExportParameters=Parâmetros de exportação do PostgreSQL +UseTransactionnalMode=Utilizar o modo transicional(transactional mode) +AddDropDatabase=Adicionar o comando 'DROP DATABASE' +AddDropTable=Adicionar o comando 'DROP TABLE' +ExtendedInsert=Extender o INSERT +NoLockBeforeInsert=Não travar comando antes do INSERT +DelayedInsert=Inserir Atraso +EncodeBinariesInHexa=Codificar dados binários em hexadecimal +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 +OnlyActiveElementsAreShown=Somente elementos de módulos ativos são mostrado. +ModulesDesc=Os módulos / aplicativos determinam quais recursos estão disponíveis no software. Alguns módulos exigem permissões a serem concedidas aos usuários após a ativação do módulo. Clique no botão liga / desliga %s de cada módulo para ativar ou desativar um módulo / aplicativo. +ModulesDesc2=Clique no botão de roda %s para configurar o módulo/aplicativo. +ModulesMarketPlaceDesc=Você pode encontrar mais módulos para download em sites externos na Internet ... +ModulesDeployDesc=Se as permissões em seu sistema de arquivos permitirem, você poderá usar essa ferramenta para implantar um módulo externo. O módulo ficará visível na aba %s . +ModulesMarketPlaces=Encontrar app/módulos externos +ModulesDevelopYourModule=Desenvolver seus próprios app/módulos +ModulesDevelopDesc=Você também pode desenvolver seu próprio módulo ou encontrar um parceiro para desenvolver um para você. +DOLISTOREdescriptionLong=Em vez de ligar o site www.dolistore.com para encontrar um módulo externo, você pode usar essa ferramenta incorporada que fará a pesquisa no mercado externo para você (pode ser lento, precisa de um acesso à internet) ... +FreeModule=Grátis +NotCompatible=Este módulo não parece ser compatível com o seu Dolibarr %s (Mín %s - Máx %s). +CompatibleAfterUpdate=Este módulo exige uma atualização do seu Dolibarr %s (Mín %s - Máx %s). +SeeInMarkerPlace=Ver na Loja Virtual +SeeSetupOfModule=Veja configuração do módulo %s +SetOptionTo=Defina a opção %s para %s +GoModuleSetupArea=Para implantar/instalar um novo módulo, vá para a área de configuração do módulo: %s . +DoliStoreDesc=DoliStore, o site oficial para baixar módulos externos. +DoliPartnersDesc=Lista de empresas que fornecem módulos ou recursos desenvolvidos de maneira personalizada.
Nota: como Dolibarr é um aplicativo de código aberto, qualquer pessoa com experiência em programação PHP deve ser capaz de desenvolver um módulo. +DevelopYourModuleDesc=Algumas soluções para o desenvolvimento do seu próprio módulo... +RelativeURL=URL relativo +BoxesAvailable=Widgets disponíveis +BoxesActivated=Widgets ativados +ActivateOn=Ativar +ActiveOn=Ativa +ActivatableOn=Ativável em +SourceFile=Arquivo Fonte +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Disponível somente se Javascript não estiver desativado +UsedOnlyWithTypeOption=Usado por alguns opção agenda única +Passwords=Senhas +DoNotStoreClearPassword=Criptografar senhas armazenadas no banco de dados (NÃO como texto simples). É altamente recomendável ativar esta opção. +MainDbPasswordFileConfEncrypted=Criptografe a senha do banco de dados armazenada em conf.php. É altamente recomendável ativar esta opção. +InstrucToEncodePass=Para ter a senha codificada no arquivo conf.php, substitua a linha
$dolibarr_main_db_pass="..."
por
$dolibarr_main_db_pass="crypted:%s" +InstrucToClearPass=Para ter a senha não codificada(limpa) no arquivo conf.php, substitua a linha
$dolibarr_main_db_pass="crypted:..."
por
$dolibarr_main_db_pass="%s" +ProtectAndEncryptPdfFilesDesc=Proteção de um documento PDF mantém ele disponível para ler e imprimir com qualquer navegador PDF. No entanto, edição e cópia não é possível. Observe que a utilização deste recurso faz com que a construção de um PDF global mesclado não funcione. +Feature=Destaque +Developpers=Desenvolvedores/Contribuidores +OfficialWebSite=Site oficial do Dolibarr +OfficialWebSiteLocal=Web site local (%s) +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 +ExternalResources=Fontes externas +SocialNetworks=Redes Sociais +SocialNetworkId=ID da rede social +ForDocumentationSeeWiki=Para documentação de usuário ou desenvolvedor (Doc, FAQs...),
dê uma olhada no Dolibarr Wiki:
%s +ForAnswersSeeForum=Para qualquer outra dúvida/ajuda, você pode usar o fórum Dolibarr:
%s +CurrentMenuHandler=Gestor atual de menu +MeasuringUnit=Unidade de medida +FontSize=Tamanho da fonte +ContentForLines=Conteúdo a ser exibido para cada produto ou serviço (da variável __LINES__ de Conteúdo) +Emails=E-mails +EMailsSetup=Configuração dos e-mails +EmailSenderProfiles=Perfis dos e-mails de envio +EMailsSenderProfileDesc=Você pode manter esta seção vazia. Se você inserir alguns e-mails aqui, eles serão adicionados à lista de possíveis remetentes na caixa de combinação quando você escrever um novo e-mail. +MAIN_MAIL_SMTP_PORT=Porta SMTP / SMTPS (valor padrão em php.ini: %s ) +MAIN_MAIL_SMTP_SERVER=Host SMTP / SMTPS (valor padrão em php.ini: %s ) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=Host SMTP / SMTPS (não definido em PHP em sistemas semelhantes a Unix) +MAIN_MAIL_EMAIL_FROM=E-mail do remetente para e-mails automáticos (valor padrão em php.ini: %s ) +MAIN_MAIL_AUTOCOPY_TO=Copiar (Cco) todos os e-mails enviados para +MAIN_DISABLE_ALL_MAILS=Desativar todo o envio de e-mail (para fins de teste ou demonstrações) +MAIN_MAIL_FORCE_SENDTO=Envie todos os e-mails para (em vez de destinatários reais, para fins de teste) +MAIN_MAIL_ENABLED_USER_DEST_SELECT=Sugira e-mails de funcionários (se definidos) na lista de destinatários predefinidos ao escrever um novo e-mail +MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Autorizar certificados auto-assinados +MAIN_MAIL_EMAIL_DKIM_ENABLED=Use o DKIM para gerar assinatura de e-mail +MAIN_MAIL_EMAIL_DKIM_DOMAIN=Domínio de e-mail para uso com o dkim +MAIN_SMS_SENDMODE=Método usado para enviar SMS +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. +FixOnTransifex=Corrija a tradução na plataforma de tradução on-line do projeto +SubmitTranslation=Se a tradução para este idioma não estiver completa ou você encontrar erros, você pode corrigir isso editando os arquivos no diretório langs / %s e enviar sua alteração para www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslationENUS=Se a tradução para este idioma não estiver completa ou você encontrar erros, pode corrigir isso editando os arquivos no diretório langs/ %s e enviar os arquivos modificados em dolibarr.org/forum ou, se você for um desenvolvedor, com um PR no github.com/Dolibarr/dolibarr +ModuleSetup=Conf. do módulo +ModulesSetup=Configuração de Módulos/Aplicativos +ModuleFamilyCrm=Gestão de Relacionamento com o Cliente (CRM) +ModuleFamilySrm=Gestão de Relacionamento com Fornecedores (VRM) +ModuleFamilyProducts=Gerenciamento de produtos (PM) +ModuleFamilyHr=Gestão de Recursos Humanos (RH) +ModuleFamilyProjects=Projetos +ModuleFamilyOther=Outros +ModuleFamilyTechnic=Ferramentas para Módulos Múltiplos +ModuleFamilyExperimental=Módulos Experimentais +ModuleFamilyFinancial=Módulos Financeiros +ModuleFamilyECM=Gestão de Conteúdos Eletrônicos (ECM) +ModuleFamilyPortal=Websites e outras aplicações front-end +MenuHandlers=Gestor de Menus +MenuAdmin=Editor menus +DoNotUseInProduction=Não utilizar em produção +FindPackageFromWebSite=Encontre um pacote que forneça os recursos que você precisa (por exemplo, no site oficial %s). +DownloadPackageFromWebSite=Download do pacote (por exemplo, do site oficial %s). +UnpackPackageInDolibarrRoot=Desempacote/descompacte os arquivos empacotados no diretório do servidor Dolibarr: %s +UnpackPackageInModulesRoot=Para implantar/instalar um módulo externo, você deve descompactar/descompactar o arquivo no diretório do servidor dedicado aos módulos externos:
%s +NotExistsDirect=O diretório root alternativo não está definido para um diretório existente.
+InfDirAlt=Desde a versão 3, é possível definir um diretório-root alternativo. Isso permite que você armazene, em um diretório dedicado, plug-ins e modelos personalizados.
Basta criar um diretório na raiz de Dolibarr (por exemplo:custom).
+InfDirExample=
Então declare no arquivo conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
Se estas linhas estão comentadas com "#", para serem habilitadas, apenas remova o caractere "#". +LastActivationAuthor=Último autor da ativação +LastActivationIP=Último IP de ativação +LastActivationVersion=Versão de ativação mais recente +UpdateServerOffline=Atualização de servidor off-line +WithCounter=Gerenciar um contador +GenericMaskCodes=Você pode inserir qualquer máscara de numeração. Nesta máscara, as seguintes tags podem ser usadas:
{000000} corresponde a um número que será incrementado em cada %s. Insira tantos zeros quanto o comprimento desejado do contador. O contador será completado por zeros da esquerda para ter tantos zeros quanto a máscara.
{000000+000} o mesmo que o anterior, mas um deslocamento correspondente ao número à direita do sinal + é aplicado a partir do primeiro %s.
{000000 @ x} mesmo que o anterior, mas o contador é zerado quando o mês x é atingido (x entre 1 e 12, ou 0 para usar os primeiros meses do ano fiscal definido em sua configuração, ou 99 a redefinir para zero todos os meses). Se esta opção for usada e x for 2 ou superior, a sequência {yy} {mm} ou {yyyy} {mm} também é necessária.
{dd} dia (01 a 31).
{mm} mês (01 a 12).
{yy} , {yyyy} ou {y} ano a09a4b7fz0, números de 439 ou 417837fz0, ano 217a4b7
+GenericMaskCodes2= {cccc} o código do cliente em n caracteres
{cccc000} a09a4b739f o código do cliente é seguido por um cliente n8z739f dedicado ao código n8z17f. Este contador dedicado ao cliente é zerado ao mesmo tempo que o contador global.
{tttt} O código do tipo de terceiro em n caracteres (consulte o menu Página inicial - Configuração - Dicionário - Tipos de terceiros). Se você adicionar esta tag, o contador será diferente para cada tipo de terceiro.
+GenericMaskCodes3=Não é permitido espaços.
Mascara fixa, basta colocar uma letra ou número sem {} ex:CLI,FOR

+GenericMaskCodes3EAN=Todos os outros caracteres na máscara permanecerão intactos (exceto * ou ? na 13ª posição em EAN13).
Espaços não são permitidos.
Em EAN13, o último caractere após o último } na 13ª posição deve ser * ou ? . Ela será substituída pela chave calculada.
+GenericMaskCodes4a=Exemplo com o 99º %s do terceiro ACompanhia, com data 2007-01-31:
+GenericMaskCodes4b=Ex: CLI{dd}{mm}{yy}.{000} -> CLI280715.001
+GenericMaskCodes4c=Ex: PRODUTO{000+100} -> PRODUTO101
+GenericMaskCodes5=ABC{yy}{mm}-{000000} resultará em ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX resultará em 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} resultará em IN0701-0099-A Se o tipo da companhia é 'Inscrição Responsável' com o código para o tipo que é 'A_RI' +GenericNumRefModelDesc=Retorna um número costomizado de acordo com a mascara definida. +ServerAvailableOnIPOrPort=Servidor disponível no endeço %s e porta %s +ServerNotAvailableOnIPOrPort=Servidor não disponível no endereço %s e porta %s +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 +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Erro, não pode utilizar a opção @ se a não ouver {yy} ou {yyyy} na mascara. +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).
Deve ser em formato octal (Ex: 06666 significa que tem permissão de leitura e escrita para todo mundo).
Esse parâmetro é inutil para servidores windows. +SeeWikiForAllTeam=Dê uma olhada na página do Wiki para obter uma lista de contribuidores e sua organização +UseACacheDelay=Atraso para exportação de cache em segundos (0 ou vazio para sem cache) +DisableLinkToHelpCenter=Ocultar o link " Precisa de ajuda ou suporte " na página de login +DisableLinkToHelp=Oculte o link para a ajuda online " %s " +LanguageFilesCachedIntoShmopSharedMemory=Os arquivos .lang foram carregados na memória compartilhada +LanguageFile=Arquivo de idioma +ListOfDirectories=Lista de diretórios com templates de documentos abertos(.odt) +ListOfDirectoriesForModelGenODT=A lista de diretórios contém modelos de arquivos no formato OpenDocument.

Insira aqui o caminho dos diretórios.
Adicione uma quebra de linha entre cada diretório.
Para adicionar um diretório do módulo GED, adicione aqui DOL_DATA_ROOT/ecm/yourdirectoryname.

Os arquivos nestes diretórios devem terminar com .odt ou .ods. +ExampleOfDirectoriesForModelGen=Exemplos de sintaxe:
c:\\myapp\\mydocumentdir\\ mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
Para saber como criar seus temas de documento em ODT, antes de armazená-los nesses diretórios, leia a documentação wiki: +FirstnameNamePosition=Posição do Nome/Sobrenome +KeyForWebServicesAccess=Chave para usar o Serviços Web (parâmetro "dolibarrkey" no serviço web) +TestSubmitForm=Teste de entrada de formulário +ThisForceAlsoTheme=Usando este gerenciador de menu também usará seu próprio tema, seja qual for a escolha do usuário. Além disso, este gerenciador de menus especializado para smartphones não funciona em todos os smartphones. Use outro gerenciador de menu se tiver problemas com o seu. +ThemeDir=Diretório de Layouts +ResponseTimeout=Tempo de resposta esgotado +SmsTestMessage=Mensagem Teste de __PHONEFROM__ para __PHONETO__ +ModuleMustBeEnabledFirst=O módulo %s deve estar primeiramente habilitado se você precisa desta funcionalidade. +SecurityToken=Chave para proteção das URLs +NoSmsEngine=Nenhum gerenciador de remetente de SMS disponível. Um gerenciador de remetentes SMS não é instalado com a distribuição padrão porque eles dependem de um fornecedor externo, mas você pode encontrar alguns em %s +PDFOtherDesc=Opção de PDF específica para alguns módulos +HideAnyVATInformationOnPDF=Ocultar todas as informações relacionadas a imposto sobre vendas/IVA +PDFRulesForSalesTax=Regras para IVA +HideLocalTaxOnPDF=Ocultar %s taxa na coluna Imposto sobre vendas / IVA +HideDescOnPDF=Ocultar descrição dos produtos +HideRefOnPDF=Ocultar ref. dos produtos. +PlaceCustomerAddressToIsoLocation=Use a posição padrão francesa (La Poste) para a posição do endereço do cliente +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 +GetSecuredUrl=Conseguir URL calculada +ButtonHideUnauthorized=Ocultar botões de ação não autorizados também para usuários internos (caso contrário, acinzentados) +NewVATRates=Taxa de IVA nova +PriceBaseTypeToChange=Modificar os preços com base no valor de referência defino em +MassConvert=Iniciar a conversão em massa +String=Variável +String1Line=String (1 linha) +TextLongNLines=Texto longo (n linhas) +Int=Inteiro +Float=Flutuante +DateAndTime=Data e Hora +Boolean=Booleano (uma caixa de seleção) +ExtrafieldMail =E-mail +ExtrafieldUrl =URL +ExtrafieldSelect =Selecionar lista +ExtrafieldPassword=Senha +ExtrafieldCheckBox=Caixas de seleção +ExtrafieldCheckBoxFromList=Caixas de seleção da tabela +ExtrafieldLink=Link para um objeto +ComputedFormula=Campo computado +ComputedFormulaDesc=Você pode inserir aqui uma fórmula usando outras propriedades do objeto ou qualquer código PHP para obter um valor computado dinâmico. Você pode usar qualquer fórmula compatível com PHP, incluindo o "?" operador de condição e objeto global seguinte: $db, $conf, $langs, $mysoc, $user, $object .
AVISO : Apenas algumas propriedades do $object podem estar disponíveis. Se você precisar de propriedades não carregadas, basta buscar o objeto em sua fórmula, como no segundo exemplo.
Usar um campo computado significa que você não pode inserir qualquer valor da interface. Além disso, se houver um erro de sintaxe, a fórmula pode retornar nada.

Exemplo de fórmula:
$object-> id < 10? round ($object-> id / 2, 2): ($object-> id + 2 * $user-> id) * (int) substr ($mysoc-> zip, 1, 2)

Exemplo para recarregar o objeto
(($reloadedobj = novo Societe($db)) && ($reloadedobj-> fetch ($obj-> id? $ obj-> id: ($obj-> rowid? $obj-> rowid: $object-> id )) > 0))? $reloadedobj-> array_options ['options_extrafieldkey'] * $reloadedobj-> capital / 5: '-1'

Outro exemplo de fórmula para forçar a carga do objeto e seu objeto pai:
(($reloadedobj = new Task($db)) && ($reloadedobj-> fetch ($object-> id) > 0) && ($secondloadedobj = new Project ($db)) && ($secondloadedobj-> fetch($reloadedobj-> fk_project) > 0)) ? $secondloadedobj-> ref: 'Projeto pai não encontrado' +Computedpersistent=Armazenar campo computado +ComputedpersistentDesc=Campos extra computados serão armazenados no banco de dados, no entanto, o valor será recalculado somente quando o objeto deste campo for alterado. Se o campo computado depender de outros objetos ou dados globais, esse valor pode estar errado !! +ExtrafieldParamHelpselect=Lista de valores deve ser linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, value1
2, value2
código3, valor3
...

Para que a lista dependa de outra lista de atributos complementares:
1, valor1 | opções_ pai_list_code : parent_key
2, valor2 | opções_ pai_list_code : parent_key

Para ter a lista dependendo de outra lista:
1, valor1 | parent_list_code : parent_key
2, value2 | parent_list_code : parent_key +ExtrafieldParamHelpcheckbox=Lista de valores deve ser linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, value1
2, value2
3, value3
... +ExtrafieldParamHelpradio=Lista de valores deve ser linhas com chave de formato, valor (onde a chave não pode ser '0')

por exemplo:
1, value1
2, value2
3, value3
... +ExtrafieldParamHelpsellist=A lista de valores vem de uma tabela
Sintaxe: table_name:label_field:id_field::filtersql
Exemplo: c_typent:libelle:id::filtersql

- id_field é necessariamente uma condição de chave int primária a0342fcda19bz0. Pode ser um teste simples (por exemplo active=1) para exibir apenas o valor ativo
Você também pode usar $ID$ no filtro que é o id atual do objeto atual
Para usar um SELECT no filtro use a palavra-chave $SEL$ para proteção anti-injeção de bypass.
se você quiser filtrar extracampos use a sintaxe extra.fieldcode=... (onde o código do campo é o código do extracampo)

Para ter a lista dependendo de outra lista de atributos complementares:
c_typent:libelle:id:options_ parent_list_code | parent_column: filtro

para ter a lista de acordo com uma outra lista:
c_typent: libelle: id: parent_list_code | parent_column: Filtro +ExtrafieldParamHelpchkbxlst=A lista de valores vem de uma tabela
Sintaxe: table_name:label_field:id_field::filtersql
Exemplo: c_typent:libelle:id::filtersql

filtro pode ser um teste simples (por exemplo active=1) para exibir apenas o valor ativo a0342fcda19bz0 também pode usar $ID$ no filtro que é o id atual do objeto atual
Para fazer um SELECT no filtro use $SEL$
se você quiser filtrar em campos extras use a sintaxe extra.fieldcode=... (onde o código do campo é o código de extrafield)

para ter a lista de acordo com uma outra lista de atributos complementares:
c_typent: libelle: id: options_ parent_list_code | parent_column: filtro

para ter a lista de acordo com uma outra lista: c_typent
: libelle:id: parent_list_code |parent_column:filter +ExtrafieldParamHelplink=Os parâmetros devem ser ObjectName: Classpath
Syntax: ObjectName: Classpath +ExtrafieldParamHelpSeparator=Mantenha em branco para um separador simples
Defina como 1 para um separador de recolhimento (aberto por padrão para nova sessão e, em seguida, o status é mantido para cada sessão do usuário)
Defina como 2 para um separador de recolhimento (recolhido por padrão para nova sessão e, em seguida, o status é mantido antes de cada sessão do usuário) +LibraryToBuildPDF=Biblioteca usada para a geração de PDF +LocalTaxDesc=Alguns países podem aplicar dois ou três impostos em cada linha da fatura. Se este for o caso, escolha o tipo para o segundo e terceiro imposto e sua taxa. Tipo possível são:
1: imposto local aplicável a produtos e serviços sem IVA (a taxa local é calculada sobre o valor sem impostos)
2: imposto local aplicável a produtos e serviços, incluindo IVA (a taxa local é calculada no montante + imposto principal)
3: imposto local aplicável a produtos sem IVA (a taxa local é calculada sobre o valor sem impostos)
4: imposto local aplicável a produtos, incluindo IVA (a taxa local é calculada sobre o valor + IVA principal)
5: imposto local aplicável a serviços sem IVA (a taxa local é calculado sobre o valor sem impostos)
6: imposto local aplicável a serviços, incluindo IVA (a taxa local é calculada sobre o valor + imposto) +LinkToTestClickToDial=Entre com um número telefônico para chamar e mostrar um link que testar a URL CliqueParaDiscar para usuário %s +RefreshPhoneLink=Atualizar link +LinkToTest=Clique no link gerado pelo usuário %s (clique no número telefônico para testar) +KeepEmptyToUseDefault=Deixe em branco para usar o valor padrão +KeepThisEmptyInMostCases=Na maioria dos casos, você pode manter esse campo vazio. +DefaultLink=Link padrão +SetAsDefault=Definir como padrão +ValueOverwrittenByUserSetup=Aviso, esse valor pode ser substituido pela configuração especifícada pelo usuário (cada usuário pode ter seu propria URL CliqueParaDiscar) +ExternalModule=Módulo externo +InstalledInto=Instalado no diretório %s +BarcodeInitForThirdparties=Inicialização de código de barras em massa para terceiros +BarcodeInitForProductsOrServices=Inicialização de código de barras em massa ou redefinir de produtos ou serviços +CurrentlyNWithoutBarCode=Atualmente, você tem %s registro(s) no %s %s sem um código de barras definido. +InitEmptyBarCode=Valor Init para o próximo registros vazios +EraseAllCurrentBarCode=Apague todos os valores de código de barras atuais +ConfirmEraseAllCurrentBarCode=Você tem certeza que deseja apagar todos os valores atuais do código de barras? +AllBarcodeReset=Todos os valores de código de barras foram removidas +NoBarcodeNumberingTemplateDefined=Nenhum modelo de código de barras de numeração ativado na configuração do módulo de código de barras. +EnableFileCache=Ativar cache de arquivos +ShowDetailsInPDFPageFoot=Adicione mais detalhes ao rodapé, como nomes de administradores ou de empresas (além de identificações profissionais, capital da empresa e número de IVA). +NoDetails=Nenhum detalhe adicional no rodapé +DisplayCompanyInfo=Exibir endereço da empresa +DisplayCompanyManagers=Exibir nomes dos gerentes +DisplayCompanyInfoAndManagers=Exibir o endereço da empresa e os nomes dos gerentes +ModuleCompanyCodeSupplierAquarium=%s seguido pelo código do fornecedor para um código de contabilidade do fornecedor +ModuleCompanyCodePanicum=Retornar um código contábil vazio +ModuleCompanyCodeDigitaria=Retorna um código contábil composto de acordo com nome de terceiros. O código consiste em um prefixo que pode ser definido na primeira posição, seguido pelo número de caracteres definidos no código de terceiros. +ModuleCompanyCodeCustomerDigitaria=%s seguido pelo nome do cliente truncado pelo número de caracteres: %s para o código contábil do cliente. +ModuleCompanyCodeSupplierDigitaria=%s seguido pelo nome do fornecedor truncado pelo número de caracteres: %s para o código contábil do fornecedor. +Use3StepsApproval=Por padrão, os Pedidos de Compra necessitam ser criados e aprovados por 2 usuários diferentes (uma etapa para a criação e a outra etapa para a aprovação. Note que se o usuário possui ambas permissões para criar e aprovar, uma única etapa por usuário será suficiente). Você pode pedir, com esta opção, para introduzir uma terceira etapa para aprovação por outro usuário, se o montante for superior a um determinado valor (assim 3 etapas serão necessárias : 1=validação, 2=primeira aprovação e 3=segunda aprovação se o montante for suficiente).
Defina como vazio se uma aprovação (2 etapas) é suficiente, defina com um valor muito baixo (0.1) se uma segunda aprovação (3 etapas) é sempre exigida. +UseDoubleApproval=Usar uma aprovação de 3 etapas quando o valor (sem taxa) é maior do que ... +WarningPHPMail=AVISO: A configuração para enviar e-mails do aplicativo está usando a configuração genérica padrão. Muitas vezes, é melhor configurar e-mails de saída para usar o servidor de e-mail do seu provedor de serviços de e-mail em vez da configuração padrão: +WarningPHPMailA=- Usar o servidor do provedor de serviços de e-mail aumenta a confiabilidade do seu e-mail, por isso aumenta a entregabilidade sem ser sinalizado como SPAM +WarningPHPMailB=- Alguns provedores de serviço de e-mail (como o Yahoo) não permitem que você envie um e-mail de outro servidor que não seja o seu próprio. Sua configuração atual usa o servidor do aplicativo para enviar e-mail e não o servidor de seu provedor de e-mail, portanto, alguns destinatários (aquele compatível com o protocolo DMARC restritivo) perguntarão ao seu provedor de e-mail se podem aceitar seu e-mail e alguns provedores de e-mail (como o Yahoo) pode responder "não" porque o servidor não é deles, então poucos de seus e-mails enviados podem não ser aceitos para entrega (tome cuidado também com a cota de envio de seu provedor de e-mail). +WarningPHPMailC=- Usar o servidor SMTP do seu próprio provedor de serviços de e-mail para enviar e-mails também é interessante, portanto, todos os e-mails enviados do aplicativo também serão salvos no diretório "Enviados" da sua caixa de correio. +WarningPHPMailD=Além disso, é recomendável alterar o método de envio de e-mails para o valor "SMTP". Se você realmente deseja manter o método "PHP" padrão para enviar e-mails, ignore este aviso ou remova-o definindo a constante MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP como 1 em Home - Setup - Other. +WarningPHPMail2=Se o seu provedor SMTP de e-mail precisar restringir o cliente de e-mail a alguns endereços IP (muito raro), esse é o endereço IP do agente de usuário de e-mail (MUA) para seu aplicativo ERP CRM: %s. +WarningPHPMailSPF=Se o nome de domínio em seu endereço de e-mail do remetente estiver protegido por um registro SPF (pergunte ao seu registro de nome de domínio), você deverá adicionar os seguintes IPs no registro SPF do DNS do seu domínio: %s . +ClickToShowDescription=Clique para exibir a descrição +RequiredBy=Este módulo é exigido por módulo(s) +PageUrlForDefaultValues=Você deve inserir o caminho relativo do URL da página. Se você incluir parâmetros na URL, os valores padrão serão efetivos se todos os parâmetros estiverem definidos com o mesmo valor. +PageUrlForDefaultValuesCreate=
Exemplo:
Para o formulário para criar um novo terceiro, é %s .
Para a URL dos módulos externos instalados no diretório personalizado, não inclua o "custom /", portanto, use o caminho como mymodule / mypage.php e não o custom / mymodule / mypage.php.
Se você quer o valor padrão somente se o url tiver algum parâmetro, você pode usar %s +PageUrlForDefaultValuesList=
Exemplo:
Para a página que lista terceiros, é %s .
Para URL de módulos externos instalados no diretório customizado, não inclua o "custom", então use um caminho como mymodule / mypagelist.php e não custom / mymodule / mypagelist.php.
Se você quer o valor padrão somente se o url tiver algum parâmetro, você pode usar %s +AlsoDefaultValuesAreEffectiveForActionCreate=Observe que a sobrescrita de valores padrão para a criação de formulários funciona apenas para páginas que foram projetadas corretamente (portanto, com a ação do parâmetro = create or presend ...) +EnableDefaultValues=Ativar personalização de valores padrão +WarningSettingSortOrder=Atenção, a configuração de um ordenamento padrão par os pedidos pode resultar em um erro técnico quando indo para a página da lista, se o campo é um campo desconhecido. Se você se depara com tal erro, volte para esta página para remover o ordenamento padrão dos pedidos e restaure o comportamento padrão. +ProductDocumentTemplates=Temas de documentos para a geração do documento do produto +WatermarkOnDraftExpenseReports=Marca d'água nos relatórios de despesas +ProjectIsRequiredOnExpenseReports=O projeto é obrigatório para dar entrada em um relatório de despesas. +PrefillExpenseReportDatesWithCurrentMonth=Preencher as datas de início e término do novo relatório de despesas com as datas de início e término do mês atual +ForceExpenseReportsLineAmountsIncludingTaxesOnly=Forçar a entrada de valores de relatório de despesas sempre em valor com impostos +AttachMainDocByDefault=Defina isto como 1 se você deseja anexar o documento principal por e-mail como padrão (se aplicável) +FilesAttachedToEmail=Anexar arquivo +davDescription=Configurar um servidor WebDAV +DAV_ALLOW_PRIVATE_DIR=Ative o diretório privado genérico (diretório dedicado do WebDAV chamado "private" - login é necessário) +DAV_ALLOW_PRIVATE_DIRTooltip=O diretório privado genérico é um diretório do WebDAV que qualquer pessoa pode acessar com seu login/senha do aplicativo. +DAV_ALLOW_PUBLIC_DIR=Ativar o diretório público genérico (diretório dedicado do WebDAV denominado "public" - não é necessário efetuar login) +DAV_ALLOW_PUBLIC_DIRTooltip=O diretório público genérico é um diretório do WebDAV que qualquer pessoa pode acessar (no modo de leitura e gravação), sem necessidade de autorização (conta de login/senha). +DAV_ALLOW_ECM_DIR=Ative o diretório privado DMS/ECM (diretório raiz do módulo DMS/ECM - login é necessário) +DAV_ALLOW_ECM_DIRTooltip=O diretório raiz no qual todos os arquivos são carregados manualmente ao usar o módulo DMS/ECM. Da mesma forma, como acesso a partir da interface da Web, você precisará de um login/senha válido com permissão para acessá-lo. +Module0Name=Usuários e Grupos +Module0Desc=Gerenciamento de Usuários / Funcionários e Grupos +Module1Desc=Gestão de empresas e contatos (clientes, prospectos ...) +Module2Desc=Gestor Comercial +Module10Name=Contabilidade (simplificada) +Module20Desc=Gestor de Orçamentos +Module22Name=E-mails em massa +Module22Desc=Gerenciar o envio em massa de e-mails +Module23Desc=Monitoramento de Consumo de Energia +Module25Name=Pedidos de venda +Module25Desc=Gerenciamento de pedidos de vendas +Module40Name=Vendedores +Module40Desc=Fornecedores e gerenciamento de compras (pedidos e cobrança de faturas de fornecedores) +Module42Name=Notas de depuração +Module42Desc=Recursos de registro (arquivo, syslog, ...). Tais registros são para propósitos técnicos/debug. +Module43Name=Barra de depuração +Module43Desc=Ferramenta para o desenvolvedor adicionar uma barra de depuração em seu navegador. +Module49Desc=Gestor de Editores +Module51Name=Cartas Massivos +Module51Desc=Gestão de correspondência do massa +Module52Name=Estoques +Module52Desc=Gestão de estoque +Module54Name=Contratos/Assinaturas +Module55Name=Códigos de Barra +Module55Desc=Gerenciamento de código de barras ou QR code +Module56Desc=Gestão do pagamento de fornecedores por ordens de Transferência a Crédito. Inclui a geração de arquivo SEPA para países europeus. +Module58Name=CliqueParaDiscarl +Module58Desc=Integração do Sistema CliqueParaDiscar (Asterisk, etc.) +Module60Name=Adesivos +Module60Desc=Gestão de adesivos +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=Embarques e gerenciamento de nota de entrega +Module85Name=Bancos e Dinheiro +Module85Desc=Gestor de Bancos e Caixas +Module100Desc=Adicione um link para um site externo como um ícone do menu principal. Site é mostrado em um quadro no menu superior. +Module105Name=Carteiro e SPIP +Module105Desc=Carteiro ou Interface SPIP para Módulo MembroMailman or SPIP interface for member module +Module200Desc=Sincronização de diretório LDAP +Module240Name=Exportações de Dados +Module250Name=Importação de Dados +Module310Desc=Gestor de Associação de Membros +Module320Desc=Adicionar um feed RSS às páginas do Dolibarr +Module330Name=Marcadores e atalhos +Module410Desc=Integração do Webcalendar +Module500Name=Impostos e Despesas Especiais +Module500Desc=Gestão de outras despesas (impostos sobre vendas, impostos sociais ou fiscais, dividendos, ...) +Module520Desc=Gestão dos empréstimos +Module600Name=Notificações em evento de negócios +Module600Desc=Enviar notificações de e-mail acionadas por um evento de negócios: por usuário (configuração definida para cada usuário), por contatos de terceiros (configuração definida em cada terceiro) ou por e-mails específicos +Module600Long=Observe que este módulo envia e-mails em tempo real quando ocorre um evento de negócios específico. Se você estiver procurando por um recurso para enviar lembretes por e-mail para eventos da agenda, entre na configuração do módulo Agenda. +Module610Name=Variáveis de produtos +Module700Name=Doações +Module700Desc=Gestor de Doações +Module770Name=Relatório de despesas +Module770Desc=Gerenciar reclamações de relatórios de despesas (transporte, refeição, ...) +Module1120Name=Propostas comerciais de Fornecedores +Module1120Desc=Solicitar proposta comercial e preços do fornecedor +Module1200Desc=Integração Mantis +Module1520Name=Geração de Documentos +Module1520Desc=Geração de documentos em massa por e-mail +Module1780Name=Categorias +Module1780Desc=Gestor de Categorias (produtos, fornecedores e clientes) +Module2000Desc=Permitir que campos de texto sejam editados/formatados usando o CKEditor (html) +Module2200Desc=Use expressões matemáticas para geração automática de preços +Module2300Desc=Gerenciamento dos trabalhos agendados (alias cron ou tabela chrono) +Module2400Name=Eventos / Agenda +Module2400Desc=Track events. Registre eventos automáticos para fins de rastreamento ou registre eventos manuais ou reuniões. Este é o módulo principal para um bom gerenciamento de relacionamento com clientes ou fornecedores. +Module2500Name=SGBD / GCE +Module2500Desc=Sistema de Gerenciamento de Documentos / Gerenciamento de Conteúdo Eletrônico. Organização automática de seus documentos gerados ou armazenados. Compartilhe-os quando precisar. +Module2600Name=Serviços API/Web (Servidor SOAP) +Module2600Desc=Ativa o servidor de serviços web do Dolibarr +Module2610Desc=Permitir que o servidor prestação de serviços de API REST do Dolibarr +Module2660Name=Chamar ServiçosWeb (cliente SOAP) +Module2660Desc=Ativar o cliente de serviços da Web Dolibarr (pode ser usado para enviar dados/solicitações para servidores externos. Apenas pedidos de compra são suportados no momento.) +Module2700Desc=Use o serviço online Gravatar (www.gravatar.com) para mostrar fotos de usuários/membros (encontrados com seus e-mails). Precisa de acesso à Internet +Module2900Desc=Capacidade de conversão com o GeoIP Maxmind +Module3400Name=Redes Sociais +Module3400Desc=Habilite campos de Redes Sociais em terceiros e endereços (skype, twitter, facebook, ...). +Module4000Name=RH +Module4000Desc=Gerenciamento de recursos humanos (gerenciamento do departamento, contratos dos funcionários e benefícios) +Module5000Name=Multi-Empresas +Module5000Desc=Permite gerenciar várias empresas +Module6000Name=Fluxo de trabalho entre módulos +Module6000Desc=Gerenciamento de fluxo de trabalho entre diferentes módulos (criação automática de objeto e / ou mudança automática de status) +Module10000Desc=Crie sites (públicos) com um editor WYSIWYG. Este é um CMS orientado a webmasters ou desenvolvedores (é melhor conhecer a linguagem HTML e CSS). Basta configurar seu servidor da Web (Apache, Nginx, ...) para apontar para o diretório Dolibarr dedicado para colocá-lo online na Internet com seu próprio nome de domínio. +Module20000Name=Deixar o gerenciamento de solicitações +Module20000Desc=Definir e rastrear solicitações de saída de funcionários +Module39000Name=Lotes de Produtos +Module39000Desc=Lotes, números de série, gerenciamento de data consumir/vender para produtos +Module50000Desc=Oferecer aos clientes uma página de pagamento online PayBox (cartões de crédito/débito). Isso pode ser usado para permitir que seus clientes façam pagamentos ad-hoc ou pagamentos relacionados a um objeto Dolibarr específico (fatura, pedido, etc.) +Module50100Desc=Módulo Ponto de Venda SimplePOS (POS simples). +Module50150Desc=Módulo de ponto de vendas TakePOS (POS com tela de toque, para lojas, bares ou restaurantes). +Module50200Desc=Oferecer aos clientes uma página de pagamento online do PayPal (conta do PayPal ou cartões de crédito/débito). Isso pode ser usado para permitir que seus clientes façam pagamentos ad-hoc ou pagamentos relacionados a um objeto Dolibarr específico (fatura, pedido, etc.) +Module50300Desc=Ofereça aos clientes uma página de pagamento on-line do Stripe (cartões de crédito / débito). Isso pode ser usado para permitir que seus clientes façam pagamentos ad-hoc ou pagamentos relacionados a um objeto Dolibarr específico (fatura, pedido, etc.) +Module50400Name=Contabilidade (entrada dupla) +Module50400Desc=Gestão contábil (partidas dobradas, suporte para Razões Gerais e Subsidiárias). Exportar livro razão em outros formatos de software contábil. +Module54000Name=ImprimirIPP +Module55000Name=Pesquisa Aberta +Module55000Desc=Criar pesquisas, enquetes ou votos on-line (como Doodle, Studs, RDVz etc ...) +Module59000Desc=Módulo para seguir margens +Module60000Desc=Módulo para gerenciar comissão +Module62000Name=Termos Internacionais de Comércio +Module62000Desc=Adicione recursos para gerenciar Termos Internacionais de Comércio +Module63000Name=Resorsas +Module63000Desc=Gerenciar recursos (impressoras, carros, salas, ...) para alocar eventos +Permission11=Ler Faturas de Clientes +Permission12=Criar/Modificar Faturas de Clientes +Permission14=Faturas de Clientes Validadas +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 +Permission39=Ignorar preço mínimo +Permission61=Ler Intervenções +Permission62=Criar/Modificar Intervenções +Permission64=Deletar Intervenções +Permission67=Exportar Intervenções +Permission68=Envie intervenções por e-mail +Permission69=Validar intervenções +Permission70=Invalidar intervenções +Permission71=Ler Membros +Permission72=Criar/Modificar Membros +Permission74=Deletar Membros +Permission75=Configurar tipos e atributos dos Membros +Permission78=Ler Assinaturas +Permission79=Criar/Modificar Assinaturas +Permission81=Ler Pedidos de Clientes +Permission82=Criar/Modificar Pedidos de Clientes +Permission84=Validar Pedidos de Clientes +Permission86=Enviar Pedidos de Clientes +Permission87=Fechar Pedidos de Clientes +Permission88=Cancelar Pedidos de Clientes +Permission89=Deletar Pedidos de Clientes +Permission91=Ler Gasto +Permission92=Criar/Modificar Gasto +Permission93=Deletar Gasto +Permission94=Exportar Gasto +Permission95=Ler Relátorios +Permission101=Ler Envios +Permission102=Criar/Modificar Envios +Permission104=Validar Envios +Permission105=Enviar envios por e-mail +Permission106=Exportar Envios +Permission109=Deletar Envios +Permission111=Ler Contas Financeiras +Permission112=Criar/Modificar/Deletar e Comparar Transações +Permission113=Configurar contas financeiras (criar, gerenciar categorias de transações bancárias) +Permission115=Exportar Transações e Extratos Bancários +Permission116=Transferência entre Contas +Permission117=Gerenciar cheques despachando +Permission121=Ler Terceiros Vinculado ao Usuário +Permission122=Criar/Modificar Terceiros +Permission125=Deletar Terceiros +Permission126=Exportar Terceiros +Permission130=Criar/modificar informações de pagamento de terceiros +Permission146=Ler Provedores +Permission147=Ler Estatísticas +Permission151=Ler pedidos com pagamento por débito direto +Permission152=Criar/Modificar pedidos com pagamento por débito direto +Permission153=Enviar/Transmitir pedidos com pagamento por débito direto +Permission161=Ler Contratos +Permission162=Criar/Modificar Contratos +Permission163=Ativar Serviço de um Contrato +Permission164=Desabilitar Serviço de um Contrato +Permission165=Excluir Contratos/assinaturas +Permission171=Ler viagens e despesas (suas e de seus subordinados) +Permission172=Criar/Modificar Viagens +Permission173=Deletar Viagens +Permission174=Leia todas as viagens e despesas +Permission178=Exportar Viagens +Permission180=Ler Fornecedores +Permission181=Ler pedidos de compra +Permission182=Criar/modificar pedidos +Permission183=Validar pedidos +Permission184=Aprovar pedidos +Permission185=Encomendar ou cancelar pedidos +Permission186=Receber pedidos de compra +Permission187=Fechar pedidos de compra +Permission192=Criar Linhas +Permission193=Cancelar Linhas +Permission194=Leia as linhas de largura de banda +Permission202=Criar Conexões ADSL +Permission203=Pedir Pedidos de Conexões +Permission204=Pedir Conexões +Permission205=Gerenciar Conexões +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...) +Permission223=Validar E-Mails (permite enviar) +Permission229=Deletar E-Mails +Permission237=Visualisar Destinatário e Informações +Permission238=Enviar Cartas Manualmente +Permission239=Deletar Cartas depois de Validado ou Enviado +Permission241=Ler Categorias +Permission242=Criar/Modificar Categorias +Permission243=Deletar categorias +Permission244=Visualisar o Conteúdo de Categorias Ocultas +Permission251=Ler Outros Usuários e Grupos +PermissionAdvanced251=Ler Outros Usuários +Permission252=Ler Permissões de Outros Usuários +Permission253=Crie / modifique outros usuários, grupos e permissões +PermissionAdvanced253=Criar/Modificar Usuários internos/externos e suas Permissões +Permission254=Criar/Modificar Usuários Externos +Permission255=Modificar Senha de Outros Usuários +Permission256=Deletar ou Desativar Outros Usuários +Permission262=Estender acesso a todos os terceiros E seus objetos (não apenas terceiros para os quais o usuário é um representante de vendas).
Não eficaz para usuários externos (sempre limitado a eles próprios para propostas, pedidos, faturas, contratos, etc.).
Não eficaz para projetos (apenas regras sobre permissões de projeto, visibilidade e questões de atribuição). +Permission263=Estender acesso a todos os terceiros SEM seus objetos (não apenas terceiros para os quais o usuário é um representante de vendas).
Não eficaz para usuários externos (sempre limitado a eles mesmos para propostas, pedidos, faturas, contratos, etc.).
Não eficaz para projetos (apenas regras sobre permissões de projeto, visibilidade e questões de atribuição). +Permission271=Ler CA +Permission272=Ler Faturas +Permission273=Emitir Fatura +Permission281=Ler Contatos +Permission282=Criar/Modificar Contatos +Permission283=Deletar Contatos +Permission286=Exportar Contatos +Permission291=Ler Tarifas +Permission292=Definir Permissões das Tarifas +Permission300=Ler códigos de barras +Permission301=Criar/modificar códigos de barras +Permission311=Ler Serviços +Permission312=Atribuir Serviço no Contrato +Permission331=Ler Marcadores de Página +Permission332=Criar/Modificar Marcadores de Página +Permission333=Deletar Marcadores de Página +Permission341=Ler suas Próprias Permissões +Permission342=Criar/Modificar Informações do seu Próprio Usuário +Permission343=Modificar Própria Senha +Permission344=Modificar Suas Próprias Permissões +Permission351=Ler Grupos +Permission352=Ler Permissões de Grupos +Permission353=Criar/Modificar Grupos +Permission354=Excluir ou Desabilitar Grupos +Permission358=Excluir Usuários +Permission401=Ler Descontos +Permission402=Criar/Modificar Descontos +Permission403=Validar Descontos +Permission404=Excluir Descontos +Permission430=Use a barra de depuração +Permission511=Leia salários e pagamentos (seus e subordinados) +Permission512=Criar/modificar salários e pagamentos +Permission514=Excluir salários e pagamentos +Permission517=Leia salários e pagamentos a todos +Permission519=Salários de exportação +Permission520=Leia Empréstimos +Permission522=Criar / modificar empréstimos +Permission524=Excluir empréstimos +Permission525=Acesso a Calculadora de empréstimo +Permission527=Exportação de Empréstimos +Permission531=Ler Serviços +Permission532=Criar/Modificar Serviços +Permission534=Excluir Serviços +Permission536=Ver/gerenciar Serviços Ocultos +Permission538=Exportar Serviços +Permission561=Ler ordens de pagamento por transferência de crédito +Permission562=Criar / alterar ordem de pagamento por transferência de crédito +Permission563=Enviar / Transmitir ordem de pagamento por transferência de crédito +Permission564=Registrar débitos / rejeições de transferência de crédito +Permission601=Ler adesivos +Permission602=Criar / alterar adesivos +Permission609=Excluir adesivos +Permission611=Ler atributos de variantes +Permission612=Criar/atualizar atributos de variantes +Permission613=Excluir atributos de variantes +Permission650=Leia as listas de materiais +Permission651=Criar / atualizar listas de materiais +Permission652=Excluir listas de materiais +Permission660=Ler pedido de fabricação (MO) +Permission661=Criar / Atualizar Pedido de Fabricação (MO) +Permission662=Excluir Ordem de Fabricação (MO) +Permission701=Ler Doações +Permission702=Criar/Modificar Doações +Permission703=Excluir Doações +Permission771=Ler relatórios de despesa (o seu e dos seus subordinados) +Permission772=Criar/modificar relatórios de despesas (para você e seus subordinados) +Permission773=Excluir relatórios de despesas +Permission775=Aprovar os relatórios de despesas +Permission776=Relatórios de despesas pagas +Permission777=Leia todos os relatórios de despesas (mesmo os de usuários não subordinados) +Permission778=Criar / alterar relatórios de despesas de todos +Permission779=Exportar - Relatórios de despesas +Permission1001=Ler Estoques +Permission1002=Criar/Modificar Estoques +Permission1003=Excluir Estoques +Permission1004=Ler Movimentação de Estoque +Permission1005=Criar/Modificar Movimentação de Estoque +Permission1011=Ver inventários +Permission1012=Novo inventário +Permission1015=Permitir alterar o valor PMP de um produto +Permission1016=Remover inventario +Permission1101=Ler recibos de entrega +Permission1102=Criar / alterar recibos de entrega +Permission1121=Leia propostas de fornecedores +Permission1122=Criar / modificar propostas de fornecedores +Permission1123=Validar propostas de fornecedores +Permission1124=Enviar propostas de fornecedores +Permission1125=Excluir propostas de fornecedores +Permission1126=Fechar solicitações de preços de fornecedores +Permission1181=Ler Fornecedores +Permission1182=Leia pedidos de compra +Permission1183=Criar/modificar pedidos +Permission1184=Validar pedidos +Permission1185=Aprovar pedidos +Permission1186=Encomenda de pedidos +Permission1187=Reconhecer o recebimento de pedidos de compra +Permission1188=Excluir pedidos +Permission1189=Marque / desmarque a recepção de um pedido de compra +Permission1190=Aprovar pedidos de compra (segunda aprovação) +Permission1191=Exportar pedidos de fornecedores e seus atributos +Permission1201=Conseguir Resultado de uma Exportação +Permission1202=Criar/Modificar uma Exportação +Permission1231=Ler faturas de fornecedores +Permission1232=Criar/modificar faturas de fornecedores +Permission1234=Excluir faturas de fornecedores +Permission1235=Enviar faturas de fornecedores por e-mail +Permission1236=Exportar faturas, atributos e pagamentos do fornecedor +Permission1237=Exportar pedidos de compra e seus detalhes +Permission1251=Rodar(run) Importações Massivas de Dados Externos para o Banco de Dados (carregamento de dados) +Permission1321=Exportar Faturas de Clientes, Atributos e Pagamentos +Permission1322=Reabrir uma nota paga +Permission1421=Exportar pedidos de venda e atributos +Permission1521=Ler documentos +Permission1522=Excluir documentos +Permission2401=Ler ações (eventos ou tarefas) vinculadas à sua conta de usuário (se o proprietário do evento ou apenas tiver sido atribuído a) +Permission2402=Criar / modificar ações (eventos ou tarefas) vinculadas à sua conta de usuário (se for proprietário do evento) +Permission2403=Excluir ações (eventos ou tarefas) vinculadas à sua conta de usuário (se for proprietário do evento) +Permission2411=Ler Ações (eventos ou tarefas) dos Outros +Permission2412=Criar/Modificar Ações (eventos ou tarefas) dos Outros +Permission2413=Excluir ações (eventos ou tarefas) dos outros +Permission2414=Exportar ações/tarefas dos outros +Permission2501=Ler/Baixar Documentos +Permission2502=Baixar Documentos +Permission2503=Submeter ou Deletar Documentos +Permission2515=Configurar Diretórios dos Documentos +Permission2801=Usar cliente FTP no modo leitura (somente navegador e baixar) +Permission2802=Usar cliente FTP no modo escrita (deletar ou upload de arquivos) +Permission3200=Leia eventos arquivados e impressões digitais +Permission3301=Gerar novos módulos +Permission4001=Ler habilidade/trabalho/posição +Permission4002=Criar/modificar habilidade/trabalho/posição +Permission4003=Excluir habilidade/trabalho/posição +Permission4020=Ler avaliações +Permission4021=Crie/modifique sua avaliação +Permission4022=Validar avaliação +Permission4023=Excluir avaliação +Permission4030=Ver menu de comparação +Permission4031=Ler informações pessoais +Permission4032=Escreva informações pessoais +Permission10001=Leia o conteúdo do site +Permission10002=Criar / modificar o conteúdo do site (conteúdo em html e javascript) +Permission10003=Criar / modificar o conteúdo do site (código php dinâmico). Perigoso, deve ser reservado para desenvolvedores restritos. +Permission10005=Excluir conteúdo do site +Permission20001=Leia pedidos de licença (sua licença e os de seus subordinados) +Permission20002=Criar/modificar seus pedidos de licença (sua licença e os de seus subordinados) +Permission20003=Excluir pedidos de licença +Permission20004=Leia todas as solicitações de licença (mesmo as de usuários não subordinados) +Permission20005=Criar/modificar pedidos de licença para todos (mesmo os de usuários não subordinados) +Permission20006=Administrar solicitações de licença (configurar e atualizar saldo) +Permission20007=Aprovar solicitações de licenças +Permission23001=Ler Tarefas Agendadas +Permission23002=Criar/Atualizar Tarefas Agendadas +Permission23003=Excluir Tarefas Agendadas +Permission23004=Executar Tarefas Agendadas +Permission50101=Ponto de venda de uso (SimplePOS) +Permission50151=Ponto de venda de uso (TakePOS) +Permission50152=Editar linhas de vendas +Permission50153=Editar linhas de vendas solicitadas +Permission50201=Ler Transações +Permission50202=Importar Transações +Permission50330=Leia objetos de Zapier +Permission50331=Criar / atualizar objetos de Zapier +Permission50332=Excluir objetos de Zapier +Permission50401=Vincular produtos e faturas com contas contábeis +Permission50411=Ler operações no livro de registros +Permission50412=Gravar/ edirar operações no livro de registros +Permission50414=Excluir operações no livro de registros +Permission50415=Excluir todas as operações por ano e livro razão +Permission50418=Operações de exportação do livro razão +Permission50420=Relatórios e relatórios para exportação (rotatividade, saldo, diários, livro razão) +Permission50430=Definir períodos fiscais. Validar transações e fechar períodos fiscais. +Permission50440=Gerenciar plano de contas, configuração da contabilidade +Permission51001=Ler ativos +Permission51002=Criar / atualizar ativos +Permission51003=Excluir ativos +Permission51005=Tipos de configuração do ativo +Permission55001=Ler Pesquisa +Permission55002=Criar/Modificar Pesquisa +Permission59001=Leia margens comerciais +Permission59003=Leia cada margem do usuário +Permission63001=Ler recursos +Permission63002=Criar/Modificar recursos +Permission63003=Excluir recursos +Permission63004=Conectar os recursos aos eventos da agenda +Permission64001=Permitir impressão direta +Permission67000=Permitir impressão de recibos +Permission68001=Ler o relatório intracomm +Permission68002=Criar / alterar relatório intracomm +Permission68004=Excluir relatório intracomm +Permission941601=Ler recibos +Permission941602=Criar e modificar recibos +Permission941603=Validar recibos +Permission941604=Enviar recibos por e-mail +Permission941605=Exportar recibos +Permission941606=Excluir recibos +DictionaryCompanyType=Tipos de terceiros +DictionaryCompanyJuridicalType=Entidades jurídicas de terceiros +DictionaryProspectLevel=Nível potencial de prospecção para empresas +DictionaryProspectContactLevel=Nível potencial de prospecção para contatos +DictionaryCanton=Estados / Cidades +DictionaryRegion=Regiões +DictionaryCivility=Títulos honorários +DictionaryActions=Tipos de eventos na agenda +DictionarySocialContributions=Tipos de impostos sociais ou fiscais +DictionaryVAT=Taxas de VAT ou imposto sobre vendas de moeda +DictionaryPaymentConditions=Termos de pagamento +DictionaryPaymentModes=Formas de pagamento +DictionaryTypeContact=Tipos Contato / Endereço +DictionaryTypeOfContainer=Website - Tipo de páginas/contêineres do site +DictionaryEcotaxe=Ecotaxa (REEE) +DictionaryPaperFormat=Formatos de papel +DictionaryFormatCards=Formatos de cartão +DictionaryFees=Relatório de despesas - Tipos de linhas de relatório de despesas +DictionarySendingMethods=Métodos do transporte +DictionaryStaff=Número de empregados +DictionaryOrderMethods=Métodos de pedido +DictionarySource=Origem das propostas / ordens +DictionaryAccountancyCategory=Grupos personalizados para relatórios +DictionaryAccountancysystem=Modelos para o plano de contas +DictionaryAccountancyJournal=Relatórios da contabilidade +DictionaryEMailTemplates=Templates de e-mail +DictionaryMeasuringUnits=Unidades de Medição +DictionarySocialNetworks=Redes Sociais +DictionaryProspectStatus=Status em potencial para empresas +DictionaryProspectContactStatus=Status do cliente potencial para contatos +DictionaryHolidayTypes=Licença - Tipos de licença +DictionaryTransportMode=Relatório intracomm - modo de transporte +DictionaryBatchStatus=Status do controle de qualidade do lote/série do produto +DictionaryAssetDisposalType=Tipo de alienação de ativos +TypeOfUnit=Tipo de unidade +SetupSaved=Configurações Salvas +SetupNotSaved=Configuração não salva +BackToModuleList=Voltar à lista do módulo +BackToDictionaryList=Voltar à lista de dicionários +VATIsUsedDesc=Por padrão, ao criar prospectos, faturas, pedidos etc., a taxa do imposto sobre vendas segue a regra padrão ativa:
Se o vendedor não estiver sujeito ao imposto sobre vendas, o imposto sobre vendas será padronizado como 0. Fim da regra.
Se o (país do vendedor = país do comprador), o imposto sobre vendas, por padrão, é igual ao imposto sobre vendas do produto no país do vendedor. Fim de regra.
Se o vendedor e o comprador estiverem na Comunidade Europeia e os bens forem produtos relacionados a transporte (transporte, transporte aéreo, companhia aérea), o IVA padrão é 0. Essa regra depende do país do vendedor - consulte seu contador. O IVA deve ser pago pelo comprador à estância aduaneira do seu país e não ao vendedor. Fim de regra.
Se o vendedor e o comprador estiverem ambos na Comunidade Europeia e o comprador não for uma empresa (com um número de IVA intracomunitário registrado), o IVA será padronizado para a taxa de IVA do país do vendedor. Fim de regra.
Se o vendedor e o comprador estiverem ambos na Comunidade Europeia e o comprador for uma empresa (com um número de IVA intracomunitário registrado), o IVA será 0 por padrão. Fim de regra.
Em qualquer outro caso, o padrão proposto é imposto sobre vendas = 0. Fim de regra. +VATIsUsedExampleFR=Na França, significa empresas ou organizações que possuem um sistema fiscal real (real simplificado, real ou normal). Um sistema no qual o IVA é declarado. +VATIsNotUsedExampleFR=Na França, isso significa associações que não são declaradas em impostos sobre vendas ou empresas, organizações ou profissões liberais que escolheram o sistema fiscal de microempresas (imposto sobre vendas em franquia) e pagaram uma taxa de vendas de franquia sem qualquer declaração de imposto sobre vendas. Essa opção exibirá a referência "Imposto sobre vendas não aplicável - art-293B do CGI" nas faturas. +TypeOfSaleTaxes=Tipo de imposto sobre vendas +LTRate=Rata +LocalTax1IsNotUsed=Não utilizar segundo imposto +LocalTax2IsNotUsed=Não utilizar terceiro imposto +LocalTax1ManagementES=Gestor RE +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 +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. +RevenueStampDesc=O "carimbo de imposto" ou "carimbo de receita" é um imposto fixo por fatura (não depende do valor da fatura). Também pode ser um imposto percentual, mas o uso do segundo ou terceiro tipo de imposto é melhor para impostos percentuais, pois os selos fiscais não fornecem nenhum relatório. Apenas alguns países usam esse tipo de imposto. +UseRevenueStamp=Use um carimbo de imposto +UseRevenueStampExample=Valor do selo fiscal é definido por padrão na configuração de dicionários (%s - %s - %s) +CalcLocaltax=Relatórios sobre os impostos locais +CalcLocaltax1Desc=Relatorios de taxas locais são calculados pela differença entre taxas locais de venda e taxas locais de compra +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 +NoLocalTaxXForThisCountry=De acordo com a configuração dos impostos (Ver %s - %s - %s), seu país não precisa usar esse tipo de imposto +LabelUsedByDefault=Etiqueta usado por default se nenhuma tradução não for encontrado para o código =/ +LabelOnDocuments=Etiqueta nos documentos +ValueOfConstantKey=Valor de uma constante de configuração +ConstantIsOn=A opção %s está ativada +NbOfDays=Número de dias +Offset=Compensar +Upgrade=Atualizar +MenuUpgrade=Atualizar / Ampliar +AddExtensionThemeModuleOrOther=Lançar/Instalar app/módulo externo +DocumentRootServer=Diretório raiz do servidor web +DataRootServer=Diretório raiz dos dados +VirtualServerName=Nome virtual do servidor +PhpWebLink=link Web-PHP +Database=Banco de Dados +DatabaseServer=Servidor do Banco de Dados +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 +TableName=Nome da Tabela +NbOfRecord=Nº. de registros +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 / Organização +DefaultMenuManager=Gestor padrão de menu +DefaultMenuSmartphoneManager=Gestor do menu de smartphone +Skin=Tema Visual +DefaultSkin=Tema visual default +MaxSizeList=Comprimento máximo de lista +DefaultMaxSizeList=Comprimento máximo padrão para listas +MessageOfDay=Mensagem do dia +MessageLogin=Mensagem da página de login +LoginPage=Página de login +PermanentLeftSearchForm=Formulário permanente de pesquisa no menu esquerdo +EnableMultilangInterface=Habilitar suporte multilíngue para relacionamentos com clientes ou fornecedores +EnableShowLogo=Mostrar o logotipo da empresa no menu +CompanyInfo=Empresa / Organização +CompanyIds=Identidades da empresa / organização +CompanyAddress=Endereço +CompanyZip=CEP +CompanyTown=Município +IDCountry=ID do país +LogoDesc=Logotipo principal da empresa. Será usado em documentos gerados (PDF, ...) +LogoSquarred=Logotipo (quadrado) +LogoSquarredDesc=Deve ser um ícone quadrado (largura = altura). Este logotipo será usado como o ícone favorito ou outra necessidade da barra de menus superior (se não estiver desativado na configuração do monitor). +NoActiveBankAccountDefined=Nenhuma conta bancária ativa está definida +BankModuleNotActive=O módulo de contas bancárias não está habilitado +ShowBugTrackLink=Mostrar o link " %s " +ShowBugTrackLinkDesc=Mantenha vazio para não exibir este link, use o valor 'github' para o projeto Dolibarr ou defina diretamente um url 'https://...' +DelaysOfToleranceBeforeWarning=Exibindo um alerta de aviso para... +DelaysOfToleranceDesc=Defina o atraso antes de um ícone de alerta %s ser mostrado na tela para o elemento final. +Delays_MAIN_DELAY_PROJECT_TO_CLOSE=Projeto não fechado a tempo +Delays_MAIN_DELAY_TASKS_TODO=Tarefa planejada (tarefas do projeto) não concluídas +Delays_MAIN_DELAY_ORDERS_TO_PROCESS=Encomenda não processada +Delays_MAIN_DELAY_TRANSACTIONS_TO_CONCILIATE=Conciliação bancária pendente +Delays_MAIN_DELAY_CHEQUES_TO_DEPOSIT=Cheque depósito não feito +Delays_MAIN_DELAY_EXPENSEREPORTS=Relatório de despesas para aprovar +Delays_MAIN_DELAY_HOLIDAYS=Solicitações de Licenças para aprovar +SetupDescription2=As duas seções a seguir são obrigatórias (as duas primeiras entradas no menu de configuração): +SetupDescription3= %s -> %s

Parâmetros básicos usados para personalizar o comportamento padrão do seu aplicativo (por exemplo, para recursos relacionados ao país). +SetupDescription4= %s -> %s

Este software é um conjunto de muitos módulos/aplicativos. Os módulos relacionados às suas necessidades devem estar habilitados e configurados. As entradas do menu aparecerão com a ativação desses módulos. +SetupDescription5=Outras entradas do menu de configuração gerenciam parâmetros opcionais. +SetupDescriptionLink= %s - %s +SetupDescription3b=Parâmetros básicos usados para personalizar o comportamento padrão do seu aplicativo (por exemplo, para recursos relacionados ao país). +SetupDescription4b=Este software é um conjunto de muitos módulos/aplicativos. Os módulos relacionados às suas necessidades devem estar habilitados e configurados. As entradas do menu aparecerão com a ativação desses módulos. +AuditedSecurityEvents=Eventos de segurança que são auditados +NoSecurityEventsAreAduited=Nenhum evento de segurança é auditado. Você pode habilitá-los no menu %s +Audit=Eventos de segurança +InfoOS=Sobre o SO +InfoDatabase=Sobre o banco de dados +InfoPerf=Sobre Desempenhos +InfoSecurity=Sobre Segurança +BrowserOS=Navegador OS +ListOfSecurityEvents=Lista de eventos de segurança do Dolibarr +SecurityEventsPurged=Eventos de segurança foram purgados(apagados) +LogEventDesc=Ative o registro para eventos de segurança específicos. Administradores o log via menu %s - %s . Atenção, esse recurso pode gerar uma grande quantidade de dados no banco de dados. +AreaForAdminOnly=Os parâmetros de configuração só podem ser definidos pelos usuários administradores. +SystemInfoDesc=Informações do sistema está faltando informações, técnicas você consegue em modo de leitura e é visivel somente para administradores. +SystemAreaForAdminOnly=Esta área está disponível apenas para usuários administradores. As permissões de usuário do Dolibarr não podem alterar essa restrição. +AccountantDesc=Se você tiver um contador / contador externo, poderá editar aqui suas informações. +AccountantFileNumber=Código do contador +DisplayDesc=Parâmetros que modificam a parte visual do aplicativo podem ser modificados aqui +AvailableModules=App/Módulos disponíveis +ToActivateModule=Para ativar os módulos, vá à área de configuração (Home->Configuração->Módulo). +SessionTimeOut=Expiro tempo de sessão +SessionsPurgedByExternalSystem=As sessões neste servidor parecem ser limpas por um mecanismo externo (cron no debian, ubuntu ...), provavelmente %s segundos (= valor do parâmetro session.gc_maxlifetime ), portanto, alterar o valor aqui não tem efeito. Você deve pedir ao administrador do servidor para alterar o atraso da sessão. +TriggersAvailable=Triggers disponível +TriggerDisabledByName=Triggers neste arquivo estão desativados pelo sufixo -NORUN em seu nome. +TriggerDisabledAsModuleDisabled=Triggers neste arquivo está desabilitado assim como o módulo %s está desabilitado. +TriggerAlwaysActive=Triggers neste arquivo está sempre ativo, não importando os módulos ativos no Dolibarr. +TriggerActiveAsModuleActive=Triggers neste arquivo são ativos quando módulo %s está ativado. +DictionaryDesc=Inserir todos os dados de referência. Você pode adicionar seus valores ao padrão. +ConstDesc=Esta página permite editar (substituir) parâmetros não disponíveis em outras páginas. Estes são parâmetros reservados principalmente para desenvolvedores / solução de problemas avançados. +MiscellaneousDesc=Todos os outros parâmetros relacionados com a segurança são definidos aqui. +LimitsSetup=Configurações de Limites/Precisões +MAIN_MAX_DECIMALS_UNIT=Max. decimais para preços unitários +MAIN_MAX_DECIMALS_TOT=Max. decimais para os preços totais +MAIN_MAX_DECIMALS_SHOWN=Max. decimais para os preços mostrados na tela . Adicione reticências ... após este parâmetro (por exemplo, "2 ...") se desejar ver "..." com sufixo no preço truncado. +MAIN_ROUNDING_RULE_TOT=Etapa do intervalo de arredondamento (para países em que o arredondamento é feito em algo diferente da base 10. Por exemplo, coloque 0,05 se o arredondamento for feito em 0,05 etapas) +UnitPriceOfProduct=Unidade líquida do preço do produto +TotalPriceAfterRounding=Preço total (excl/IVA/imposto incluso) após o arredondamento +ParameterActiveForNextInputOnly=Parâmetro efetivo somente para a próxima entrada +NoEventOrNoAuditSetup=Nenhum evento de segurança foi registrado. Isso é normal se a Auditoria não tiver sido ativada na página "Configuração - Segurança - Eventos". +SeeLocalSendMailSetup=Ver sua configuração local de envio de correspondência +BackupDesc=Um backup completo de uma instalação do Dolibarr requer duas etapas. +BackupDesc2=Faça backup do conteúdo do diretório "documentos" (%s) que contém todos os arquivos carregados e gerados. Isso também incluirá todos os arquivos de despejo gerados na Etapa 1. Essa operação pode durar vários minutos. +BackupDesc3=Faça backup da estrutura e do conteúdo do banco de dados ( %s ) em um arquivo de despejo. Para isso, você pode usar o assistente a seguir. +BackupDescY=O arquivo de despeja gerado deverá ser armazenado em um local seguro. +RestoreDesc=Para restaurar um backup Dolibarr, duas etapas são necessárias. +RestoreDesc2=Restaure o arquivo de backup (arquivo zip, por exemplo) do diretório "documents" para uma nova instalação do Dolibarr ou para o diretório atual de documentos ( %s ). +RestoreDesc3=Restaure a estrutura do banco de dados e os dados de um arquivo de despejo de backup no banco de dados da nova instalação do Dolibarr ou no banco de dados desta instalação atual ( %s ). Atenção, assim que a restauração for concluída, você deverá usar um login / senha, que existiu a partir do momento / instalação do backup para se conectar novamente.
Para restaurar um banco de dados de backup nesta instalação atual, você pode seguir este assistente. +RestoreMySQL=Importar MySQL +ForcedToByAModule=Essa Regra é forçada para %s by um módulo ativado +ValueIsForcedBySystem=Este valor foi forçado pelo sistema. Não é permito alterar. +PreviousArchiveFiles=Arquivos existentes +RunningUpdateProcessMayBeRequired=A execução do processo de atualização parece ser necessária (a versão do programa %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 %s ou você deve adicionar a opção -W no final da linha de comando para fornecer a senha %s. +YourPHPDoesNotHaveSSLSupport=Função SSL functions não está disponível no seu PHP +DownloadMoreSkins=Mais skins para baixar +SimpleNumRefModelDesc=Retorna o número de referência no formato %s yymm-nnnn onde yy é o ano, mm é o mês e nnnn é um número de incremento automático sequencial sem redefinição +SimpleNumRefNoDateModelDesc=Retorna o número de referência no formato %s-nnnn onde nnnn é um número sequencial de incremento automático sem reinicialização +ShowProfIdInAddress=Mostrar ID profissional com endereços +ShowVATIntaInAddress=Ocultar número de IVA intracomunitário +MAIN_DISABLE_METEO=Desativar a visão do clima +MeteoStdModEnabled=Modo padrão habilitado +MeteoPercentageMod=Modo porcentagem +MeteoPercentageModEnabled=Modo de porcentagem habilitado +TestLoginToAPI=Teste de login para API +ProxyDesc=Algumas características do Dolibarr requerem acesso à Internet. Defina aqui os parâmetros de conexão à Internet, como acesso por meio de um servidor proxy, se necessário. +ExternalAccess=Acesso Externo/Internet +MAIN_PROXY_USE=Use um servidor proxy (caso contrário, o acesso é direto à internet) +MAIN_PROXY_HOST=Servidor proxy: nome/endereço +MAIN_PROXY_USER=Servidor Proxy: Login/Usuário +DefineHereComplementaryAttributes=Definir quaisquer atributos adicionais / personalizados que devem ser adicionados a: %s +ExtraFields=atributos complementares +ExtraFieldsLinesRec=Atributos complementares (linhas dos temas das faturas) +ExtraFieldsSupplierOrdersLines=Atributos complementares (linhas de encomenda) +ExtraFieldsThirdParties=Atributos Complementares (Terceiros) +ExtraFieldsMember=Atributos complementares (membros) +ExtraFieldsCustomerInvoicesRec=Atributos complementares (temas das faturas) +ExtraFieldsSupplierOrders=Atributos complementares (pedidos) +ExtraFieldsSalaries=Atributos complementares (salários) +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). +PathToDocuments=Caminho para documentos +PathDirectory=Pasta +TranslationKeySearch=Buscar uma chave ou variável de tradução +TranslationOverwriteKey=Sobrescrever uma variável de tradução +TranslationDesc=Como definir o idioma de exibição:
* Padrão / Systemwide: menu Início -> Configurações -> Exibir
* Por usuário: Clique no nome de usuário na parte superior da tela e modifique a guia Configuração de exibição do usuário no cartão do usuário. +TranslationOverwriteDesc=Você também pode sobrescrever as variáveis preenchendo a tabela a seguir. Escolha o seu idioma a partir do "%s" dropdown, insira a variável com a chave da transação em "%s" e a sua nova tradução em "%s" +TranslationString=Variável de tradução +CurrentTranslationString=Variável de tradução atual +WarningAtLeastKeyOrTranslationRequired=Pelo menos um critério de busca é exigido para a chave ou variável de tradução. +NewTranslationStringToShow=Nova variável de tradução a ser exibida +OriginalValueWas=A tradução original foi sobrescrita. O valor original era:

%s +TransKeyWithoutOriginalValue=Você forçou uma nova tradução para a chave de tradução ' %s ' que não existe em nenhum arquivo de idioma +TitleNumberOfActivatedModules=Módulos ativados +TotalNumberOfActivatedModules=Módulos ativados: %s / %s +YouMustEnableOneModule=Você pelo menos deve ativar 1 módulo +YesInSummer=Sim em verão +OnlyFollowingModulesAreOpenedToExternalUsers=Observe que apenas os módulos a seguir estão disponíveis para usuários externos (independentemente das permissões de tais usuários) e somente se as permissões forem concedidas:
+SuhosinSessionEncrypt=Sessão armazenada criptografada pelo Suhosin +ConditionIsCurrently=Condição é atualmente %s +YouUseBestDriver=Você usa o driver %s, que é o melhor driver atualmente disponível. +NbOfObjectIsLowerThanNoPb=Você tem apenas %s %s no banco de dados. Isso não requer nenhuma otimização específica. +ComboListOptim=Otimização do carregamento da lista de combinação +SearchOptim=Procurar Otimização +YouHaveXObjectUseComboOptim=Você tem %s %s no banco de dados. Você pode entrar na configuração do módulo para habilitar o carregamento da lista de combinação no evento de tecla pressionada. +YouHaveXObjectUseSearchOptim=Você tem %s %s no banco de dados. Você pode adicionar a constante %s a 1 em Home-Setup-Other. +YouHaveXObjectUseSearchOptimDesc=Isso limita a consulta ao início dos textos, tornando possível para o banco de dados a utilização de índices, para que você tenha uma resposta rápida. +YouHaveXObjectAndSearchOptimOn=Você tem %s %s no banco de dados e a constante %s está definida como %s em Home-Setup-Other. +PHPModuleLoaded=O componente PHP 1 %s está carregado +PreloadOPCode=O OPCode pré-carregado está em uso +AddRefInList=Exibir ref. cliente/fornecedor. em listas de combinação.
Terceiros aparecerão com um formato de nome de "CC12345 - SC45678 - The Big Company corp." em vez de "The Big Company corp". +AddVatInList=Exiba o número de IVA do cliente/fornecedor em listas de combinação. +AddAdressInList=Exiba o endereço do cliente/fornecedor em listas de combinação.
Terceiros aparecerão com um formato de nome de "The Big Company corp. - 21 jump street 123456 Big town - USA" em vez de "The Big Company corp". +AddEmailPhoneTownInContactList=Exibir e-mail de contato (ou telefones, se não definido) e lista de informações da cidade (lista de seleção ou combobox).
Os contatos aparecerão com o formato de nome "Dupond Durand - dupond.durand@email.com - Paris" ou "Dupond Durand - 06 07 59 65 66 - Paris "em vez de" Dupond Durand ". +FillThisOnlyIfRequired=Exemplo: +2 (Preencha somente se compensar o problema do timezone é experiente) +NumberingModules=Modelos de numeração +DocumentModules=Modelos de documentos +PasswordGenerationStandard=Retornar uma senha gerada de acordo com o algoritmo Dolibarr interno: %s caracteres contendo números compartilhados e caracteres em minúsculos. +PasswordGenerationPerso=Retornar uma senha de acordo com a configuração definida para a sua personalidade. +PasswordPatternDesc=Descrição do padrão de senha +UsersSetup=Configurações de módulo de usuários +UserMailRequired=O e-mail é necessário para criar um novo usuário +UserHideInactive=Ocultar usuários inativos de todas as listas combinadas de usuários (não recomendado: isso pode significar que você não poderá filtrar ou pesquisar usuários antigos em algumas páginas) +UsersDocModules=Modelos de documentos para documentos gerados a partir do registro do usuário +GroupsDocModules=Modelos de documentos para documentos gerados a partir de um registro de grupo +HRMSetup=Configuração do módulo RH +CompanySetup=Configurações de módulo das empresas +AccountCodeManager=Opções para geração automática de códigos contábeis de clientes / fornecedores +NotificationsDesc=As notificações por e-mail podem ser enviadas automaticamente para alguns eventos do Dolibarr.
Destinatários de notificações podem ser definidos: +NotificationsDescUser=* por usuário, um usuário por vez. +NotificationsDescContact=* por contatos de terceiros (clientes ou fornecedores), um por vez. +NotificationsDescGlobal=* ou configurando endereços de e-mail globais na página de configuração do módulo. +ModelModules=Modelos de documento +WatermarkOnDraft=Marca d'água no documento de rascuno +JSOnPaimentBill=Ative a função de preenchimento automático de linhas no formulário de pagamento +CompanyIdProfChecker=Regras para IDs profissionais +MustBeMandatory=Obrigatório criar terceiros (se o número de IVA ou o tipo de empresa for definido)? +MustBeInvoiceMandatory=Obrigatória a validação de faturas? +WebDAVSetupDesc=Este é o link para acessar o diretório WebDAV. Ele contém um diretório "público" aberto a qualquer usuário que conheça a URL (se o acesso ao diretório público for permitido) e um diretório "particular" que precise de uma conta / senha de login existente para acesso. +WebDavServer=URL raiz do servidor %s: %s +WebCalUrlForVCalExport=Uma exportação de link para o formato %s está disponível no seguinte link: %s +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 +PaymentsPDFModules=Modelos dos documentos de pagamento +ForceInvoiceDate=Forçar data de fatura para data de validação +SuggestPaymentByRIBOnAccount=Sugerir pagamento por retirada na conta +SuggestPaymentByChequeToAddress=Sugerir pagamento por cheque para +FreeLegalTextOnInvoices=Texto livre nas fatura +WatermarkOnDraftInvoices=Marca d'água sobre o projeto de faturas (nenhum se estiver vazio) +PaymentsNumberingModule=Modelo de enumeração para pagamentos +SuppliersPayment=Pagamentos do fornecedor +SupplierPaymentSetup=Configuração de pagamentos do fornecedor +InvoiceCheckPosteriorDate=Verifique a data de fabricação antes da validação +InvoiceCheckPosteriorDateHelp=A validação de uma fatura será proibida se sua data for anterior à data da última fatura do mesmo tipo. +PropalSetup=Configurações do módulo de orçamentos +ProposalsNumberingModules=Modelos de numeração de orçamentos +ProposalsPDFModules=Modelos de documentos para Orçamentos +SuggestedPaymentModesIfNotDefinedInProposal=Modo de pagamentos sugeridos na proposta por padrão, se não estiver definido na proposta +FreeLegalTextOnProposal=Texto livre em orçamentos +WatermarkOnDraftProposal=Marca d'água no rascunho de orçamentos (nenhum se vazio) +BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL=Informar conta bancária de destino da proposta +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 +FreeLegalTextOnSupplierProposal=Texto livre sobre os pedidos de preços de fornecedores +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 +BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER=Pedir destino da conta bancária da ordem de compra +SuggestedPaymentModesIfNotDefinedInOrder=Modo de pagamentos sugeridos no pedido de venda por padrão, se não definido no pedido +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 +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) +ContractsSetup=Configurações de módulo de contratos +ContractsNumberingModules=módulos de numeração de contratos +TemplatePDFContracts=Modelos de documentos Contratos +WatermarkOnDraftContractCards=Marca d'água em projetos de contratos (nenhum se estiver vazio) +MembersSetup=Configurações de módulo de membros +AdherentLoginRequired=Gestor de login para cada membro +AdherentMailRequired=O e-mail necessá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 +MemberCreateAnExternalUserForSubscriptionValidated=Criar um login de usuário externo para cada inscrição de membro validada. +VisitorCanChooseItsPaymentMode=O visitante pode escolher entre os modos de pagamento disponíveis +MEMBER_REMINDER_EMAIL=Ativar lembrete automático por e-mail de assinaturas expiradas. Nota: O módulo %s deve estar ativado e configurado corretamente para enviar lembretes. +MembersDocModules=Modelos de documentos para documentos gerados a partir de registro de membro +LDAPSetup=Configurações do LDAP +LDAPUsersSynchro=Usuários +LDAPContactsSynchro=Contatos +LDAPSynchronization=sincronização LDAP +LDAPFunctionsNotAvailableOnPHP=Funções LDAP não estão disponíveis no seu PHP +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 +LDAPSynchronizeMembersTypes=Organização dos tipos de membro da fundação no LDAP +LDAPPrimaryServer=Servidor primário +LDAPSecondaryServer=Servidor secundário +LDAPServerPortExample=Padrão ou StartTLS: 389, LDAPs: 636 +LDAPServerUseTLS=Usuário TLS +LDAPServerUseTLSExample=Seu servidor LDAP usa TLS +LDAPAdminDn=Administrador DN +LDAPAdminDnExample=Preencher DN (ex: cn=admin,dc=exemplo,dc=com ou cn=Administrador,cn=Usuários,dc=exemplo,dc=com para diretório ativo) +LDAPPassword=Senha do administrador +LDAPUserDn=DN dos Usuário +LDAPUserDnExample=DN completo (ex: ou=usuários,dc=exemplo,dc=com) +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) +LDAPDnSynchroActive=Sincronização de Usuários e Grupos +LDAPDnContactActive=Sincronização dos contatos +LDAPDnContactActiveExample=Sincronização Ativada/Desativada +LDAPDnMemberActive=Sincronização dos Membros +LDAPDnMemberActiveExample=Sincronização Ativada/Desativada +LDAPDnMemberTypeActive=Sincronização dos tipos de membros +LDAPDnMemberTypeActiveExample=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) +LDAPMemberObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory) +LDAPMemberTypeDn=DN dos tipos de membro no Dolibarr +LDAPMemberTypepDnExample=DN Completo (ex: ou=memberstypes,dc=example,dc=com) +LDAPMemberTypeObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex top,grupoDeNomeUnico) +LDAPUserObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex: top,inetOrgPerson ou top,usuário por active diretory) +LDAPGroupObjectClassListExample=Lista de ObjectClass que definem os atributos gravados (ex top,grupoDeNomeUnico) +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 +LDAPTestSynchroMemberType=Teste da sincronização dos tipos de membro +LDAPTestSearch=Teste de pesquisa LDAP +LDAPSynchroOK=Teste de sincronização foi um sucesso +LDAPSynchroKO=Teste de sincronização falhou +LDAPTCPConnectOK=Conexão TCP para o servidor LDAP foi um sucesso (Servidor=%s, Porta=%s) +LDAPTCPConnectKO=Conexão TCP para o servidor LDAP falhou (Servidor=%s, Porta=%s) +LDAPSetupForVersion3=Servidor LDAP configurado para versão 3 +LDAPSetupForVersion2=Servidor LDAP configurado para versão 2 +LDAPFilterConnectionExample=Exemplo: &(objectClass = inetOrgPerson) +LDAPGroupFilterExample=Exemplo: & (objectClass=groupOfUsers) +LDAPFieldMail=E-Mail +LDAPFieldMailExample=Exemplo: mail +LDAPFieldPhone=Telefone profissional +LDAPFieldPhoneExample=Exemplo: givenName +LDAPFieldHomePhone=Telefone pessoal +LDAPFieldHomePhoneExample=Exemplo: homephone +LDAPFieldMobile=Celular +LDAPFieldMobileExample=Exemplo: mobile +LDAPFieldFax=Fax +LDAPFieldAddress=Endereço +LDAPFieldAddressExample=Exemplo: street +LDAPFieldZip=CEP +LDAPFieldZipExample=Exemplo: postalcode +LDAPFieldTown=Município +LDAPFieldDescriptionExample=Exemplo: description +LDAPFieldNotePublicExample=Exemplo: publicnote +LDAPFieldGroupMembers=Membros de grupo +LDAPFieldEndLastSubscription=Data do término de inscrição +LDAPFieldTitleExample=Exemplo: Título +LDAPFieldGroupid=ID do grupo +LDAPFieldGroupidExample=Exemplo: gidnumber +LDAPFieldUserid=ID do usuário +LDAPFieldUseridExample=Exemplo : uidnumber +LDAPFieldHomedirectory=Diretório inicial +LDAPFieldHomedirectoryExample=Exemplo : diretórioinicial +LDAPFieldHomedirectoryprefix=Prefixo do diretório inicial +LDAPSetupNotComplete=Configurações LDAP não está completa (vá nas outras abas) +LDAPNoUserOrPasswordProvidedAccessIsReadOnly=Nenhum administrador ou senha fornecido. O acesso LDAP será anônimo no modo sómente leitura. +LDAPDescContact=Essa página permite você definir os nomes dos atributos LDAP na árvore LDAP para cada dado achado nos contatos do Dolibarr. +LDAPDescUsers=Essa página permite você definir os nomes dos atributos LDAP na árvore LDAP para cada dado achado nos usuários do Dolibarr. +LDAPDescGroups=Essa página permite você definir os nomes dos atributos LDAP na árvore LDAP para cada dado achado nos grupos do Dolibarr. +LDAPDescMembers=Essa página permite você definir os nomes dos atributos LDAP na árvore LDAP para cada dado achado nos membros do Dolibarr. +LDAPDescMembersTypes=Esta página permite que você defina os atributos do nome LDAP na árvore LDAP para cada dado encontrado nos tipos de membro no Dolibarr. +LDAPDescValues=Exemplos de valores são projetados pelo OpenLDAP seguido dos temas carregados: core.schema, cosine.schema, inetorgperson.schema). Se você usa esses valores e OpenLDAP, modifique seu arquivo de configurações LDAP slapd.conf para ter todos esses temas carregados. +ForANonAnonymousAccess=Para um acesso autenticado (para um acesso de escrita por exemplo) +PerfDolibarr=Configurações/otimizações de relatório de performance +NotInstalled=Não instalado. +NotSlowedDownByThis=Velocidade não pôde ser diminuída +NotRiskOfLeakWithThis=Não há risco de vazamento desta forma. +ApplicativeCache=cache de aplicativo +MemcachedNotAvailable=Nenhum cache de aplicativo foi encontrado. Você pode aumentar a performance instalando um servidor de cache Memcached e o módulo será capaz de usar esse servidor de cache. Mais informações aqui http://wiki.dolibarr.org/index.php/Module_MemCached_EN. Note que vários provedores de host web não dispõem de tal servidor de cache. +MemcachedModuleAvailableButNotSetup=Módulo de aceleração da memória cache está ativado mas a configuração não está completa +MemcachedAvailableAndSetup=Módulo de aceleração da memória cache está ativado e a configuração está completa +OPCodeCache=cache OPCode +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 +CompressionOfResources=Comprimir as respostas HTTP +TestNotPossibleWithCurrentBrowsers=Não é possível detecção automática +DefaultValuesDesc=Aqui você pode definir o valor padrão que deseja usar ao criar um novo registro e / ou filtros padrão ou a ordem de classificação ao listar registros. +DefaultCreateForm=Valores padrão (para usar em formulários) +DefaultSearchFilters=Filtros de busca padrão +DefaultSortOrder=Ordem padrão dos pedidos +DefaultFocus=Campos de foco padrão +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 +NumberOfProductShowInSelect=Número máximo de produtos para mostrar em listas de seleção de combinação (0 = sem limite) +ViewProductDescInFormAbility=Exibir a descrição do produto nas linhas dos itens (caso contrário, a descrição será apresentada no formato de pop-up) +OnProductSelectAddProductDesc=Como usar a descrição dos produtos ao adicionar um produto como uma linha de um documento +AutoFillFormFieldBeforeSubmit=Preencher automaticamente o campo de entrada da descrição com a descrição do produto +DoNotAutofillButAutoConcat=Não preencha automaticamente o campo de entrada com a descrição do produto. A descrição do produto será concatenada com a descrição inserida automaticamente. +DoNotUseDescriptionOfProdut=A descrição do produto nunca será incluída na descrição das linhas de documentos +MergePropalProductCard=Ativar na aba Arquivos Anexos ao produto/serviço uma opção para mesclar o documento PDF do produto à proposta PDF se o produto/serviço estiver na proposta +ViewProductDescInThirdpartyLanguageAbility=Exibir descrições de produtos em formulários no idioma do terceiro (caso contrário, no idioma do usuário) +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 +SyslogSetup=Configurações do módulo de logs +SyslogOutput=Saídas de logs +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 +SyslogFileNumberOfSaves=Número de registros de backup para manter +ConfigureCleaningCronjobToSetFrequencyOfSaves=Configurar o trabalho agendado de limpeza para definir a frequência de backup de log +DonationsSetup=Configurações do módulo de doações +DonationsReceiptModel=Templates de recibos de doação +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 +CodeBarGenerator=Gerador de código de barras +ChooseABarCode=Nenhum gerador de código de barras +FormatNotSupportedByGenerator=Formato não suportado por esse gerador +BarcodeDescEAN8=Código de barras tipo EAN8 +BarcodeDescEAN13=Código de barras tipo EAN13 +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 +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 +ExternalRSSSetup=Configurações importantes de RSS externo +NewRSS=Novo RSS Feed +RSSUrl=URL de RSS +RSSUrlExample=Um interessante RSS feed +MailingSetup=Configurações do módulo de e-mails +MailingEMailFrom=E-mail do remetente (De) para e-mails enviados por módulo de e-mail +MailingEMailError=Retornar e-mail (Erros-para) para e-mails com erros +MailingDelay=Segundos de espera antes do envio da mensagem seguinte +NotificationSetup=Configuração do módulo de notificação por e-mail +NotificationEMailFrom=E-mail do remetente (De) para e-mails enviados pelo módulo de Notificações +FixedEmailTarget=Destinatário +NotificationDisableConfirmMessageContact=Ocultar a lista de destinatários (inscritos como contato) de notificações na mensagem de confirmação +NotificationDisableConfirmMessageUser=Ocultar a lista de destinatários (assinados como usuário) de notificações na mensagem de confirmação +NotificationDisableConfirmMessageFix=Ocultar a lista de destinatários (assinados como e-mail global) de notificações na mensagem de confirmação +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 +FreeLegalTextOnShippings=Texto livre para envios +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 +ActivateFCKeditor=Editor avançado ativo por: +FCKeditorForNotePublic=Usar editor WYSIWIG nos campos de "notas públicas" dos elementos +FCKeditorForNotePrivate=Usar editor WYSIWIG nos campos de "notas privadas" dos elementos +FCKeditorForCompany=Usar editor WYSIWIG nos campos de descrição dos elementos (exceto produtos/serviços) +FCKeditorForProduct=Usar editor WYSIWIG nos campos de descrição de produtos/serviços +FCKeditorForProductDetails=Criação / edição WYSIWIG de linhas de detalhes de produtos para todas as entidades (propostas, encomendas, facturas, etc ...). Aviso: O uso desta opção neste caso não é recomendado, pois pode criar problemas com caracteres especiais e formatação de página ao construir arquivos PDF. +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) +FCKeditorForTicket=Criação / edição WYSIWIG para tickets +StockSetup=Configuração do módulo de estoque +MenuDeleted=Menu Deletado +NotTopTreeMenuPersonalized=Menus personalizados não conectados à uma entrada do menu superior +NewMenu=Novo Menu +MenuModule=Fonte do módulo +HideUnauthorizedMenu=Ocultar menus não autorizados também para usuários internos (apenas acinzentados caso contrário) +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 +DetailType=Tipo do menu (superior o esquerdo) +DetailUrl=URL onde o menu envia para você (URL absoluta ou link externo com http://) +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 +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 %s? +FailedToInitializeMenu=Falha na inicialização do menu +TaxSetup=Configurações do módulo taxas, contribuição social e dividendos +OptionVatMode=Imposto IVA +OptionVATDebitOption=Base em Acréscimo +OptionVatDefaultDesc=O IVA é devido:
- na entrega de mercadorias (com base na data da fatura)
- sobre pagamentos por serviços +OptionVatDebitOptionDesc=O IVA é devido:
- na entrega de mercadorias (com base na data da fatura)
- na fatura (débito) para serviços +OptionPaymentForProductAndServicesDesc=O IVA é devido:
- no pagamento de mercadorias
- sobre pagamentos por serviços +SupposedToBePaymentDate=Data usada no pagamento +SupposedToBeInvoiceDate=Data usada na fatura +Buy=Compra +Sell=Venda +InvoiceDateUsed=Data usada na fatura +YourCompanyDoesNotUseVAT=Sua empresa foi definida para não usar o IVA (Home - Configuração - Empresa / Organização), portanto, não há opções de IVA para configuração. +AccountancyCodeSell=Código de contas de vendas +AccountancyCodeBuy=Código de contas de compras +CREATE_NEW_VAT_WITHOUT_AUTO_PAYMENT=Mantenha a caixa de seleção “Criar automaticamente o pagamento” vazia por padrão ao criar um novo imposto +AgendaSetup=Configurações do módulo de eventos e agenda +PasswordTogetVCalExport=Chave para autorizar exportação do link +SecurityKey =Chave de segurança +PastDelayVCalExport=Não exportar eventos antigos de +AGENDA_DEFAULT_VIEW=Qual visualização você deseja abrir por padrão ao selecionar o menu Agenda +AGENDA_REMINDER_BROWSER=Habilitar o lembrete de evento no navegador do usuário (quando a data do lembrete é atingida, um pop-up é mostrado pelo navegador. Cada usuário pode desabilitar tais notificações na configuração de notificação do navegador). +AGENDA_REMINDER_BROWSER_SOUND=Habilitar a notificação sonora +AGENDA_REMINDER_EMAIL=Habilitar lembrete de evento por e-mail (opção de lembrete / atraso pode ser definido em cada evento) +AGENDA_REMINDER_EMAIL_NOTE=Obs: A frequência do agendamento %s deve ser suficiente para garantir que o lembrete seja enviado no momento correto. +AGENDA_SHOW_LINKED_OBJECT=Exibir objeto conectado na visualização da agenda +ClickToDialSetup=Configurações do módulo clique para discar +ClickToDialUrlDesc=URL chamada quando clica-se no ícone do telefone. Na URL, você pode usar as tags
__PHONETO__ que será substituída pelo número do telefone da pessoa a chamar
__PHONEFROM__ que será substituída pelo telefone da pessoa que está chamando (o seu)
__LOGIN__ que será substituída pelo login clicktodial (definido no cartão do usuário)
__PASS__ que será substituída pela senha clicktodial (definida no cartão do usuário). +ClickToDialUseTelLink=Use apenas o link "tel." para os números de telefone +ClickToDialUseTelLinkDesc=Use este método se seus usuários tiverem um softphone ou uma interface de software, instalados no mesmo computador que o navegador e chamados quando você clicar em um link que comece com "tel:" em seu navegador. Se você precisar de um link que comece com "sip:" ou uma solução de servidor completo (sem necessidade de instalação de software local), você deve definir isso como "Não" e preencher o próximo campo. +CashDeskBankAccountForSell=Conta default para usar nos pagamentos em dinheiro +CashDeskBankAccountForCheque=Conta padrão a ser usada para receber pagamentos por cheque +CashDeskBankAccountForCB=Conta default para usar nos pagamentos em cartão de crédito +CashDeskBankAccountForSumup=Conta bancária padrão a ser usada para receber pagamentos pelo SumUp +CashDeskIdWareHouse=Depósito para usar nas vendas +StockDecreaseForPointOfSaleDisabledbyBatch=A redução de estoque no PDV não é compatível com o gerenciamento de série / lote do módulo (atualmente ativo), portanto, a redução de estoque é desativada. +CashDeskForceDecreaseStockLabel=A redução do estoque de produtos em lote foi forçada. +CashDeskForceDecreaseStockDesc=Diminuir primeiro pelo mais antigo e vender por datas. +CashDeskReaderKeyCodeForEnter=Código da chave para "Enter" definido no leitor de código de barras (Exemplo: 13) +BookmarkSetup=Configurações do módulo de marcadores +NbOfBoomarkToShow=Número máximo de marcadores para mostrar no menu esquerdo +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 +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 um cache para o gerenciamento dos serviços) +ApiExporerIs=Você pode explorar e testar as APIs na URL +OnlyActiveElementsAreExposed=Somente elementos de módulos habilitados são expostos +ApiKey=Chave para API +WarningAPIExplorerDisabled=O explorador de API foi desabilitado. O explorador de API não é exigido para prover serviços de API. Isto é uma ferramenta para o desenvolvedor encontrar/testar as REST APIs. Se você precisa desta ferramenta, vá para a configuração do módulo API REST para ativá-lo. +BankSetupModule=Configurações do módulo bancário +FreeLegalTextOnChequeReceipts=Texto livre em recibos de cheques +BankOrderShow=Mostrar ordem das contas bancárias para países usando "Número do banco detalhado" +BankOrderGlobalDesc=Ordem geral exibida +BankOrderES=Espanhol +BankOrderESDesc=Ordem espanhola exibida +ChequeReceiptsNumberingModule=Verificar módulo de numeração de recibos +MultiCompanySetup=Configurações do módulo multi-empresas +SuppliersSetup=Configuração do módulo de fornecedor +SuppliersCommandModel=Modelo completo do pedido +SuppliersCommandModelMuscadet=Modelo completo do pedido (antiga implementação do modelo Cornas) +SuppliersInvoiceModel=Modelo completo da fatura do fornecedor +IfSetToYesDontForgetPermission=Se definido como um valor não nulo, não se esqueça de fornecer permissões a grupos ou usuários com permissão para a segunda aprovação +GeoIPMaxmindSetup=Configurações do módulo GeoIP Maxmind +PathToGeoIPMaxmindCountryDataFile=Caminho para o arquivo contendo Maxmind ip para tradução do país.
Exemplos:
/usr/local/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoIP.dat
/usr/share/GeoIP/GeoLite2-Country.mmdb +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 Versão demo 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 +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 +NewFiscalYear=Novo período de contabilidade +OpenFiscalYear=Período da contabilidade em aberto +CloseFiscalYear=Período da contabilidade fechada +DeleteFiscalYear=Excluir período da contabilidade +ConfirmDeleteFiscalYear=Você tem certeza que deseja excluir este período de contabilidade? +ShowFiscalYear=Exibir período da contabilidade +AlwaysEditable=Sempre pode ser editado +MAIN_APPLICATION_TITLE=Forçar nome visível da aplicação (aviso: definir o seu próprio nome aqui pode quebrar recurso de login preenchimento automático ao usar aplicativos móveis DoliDroid) +NbMajMin=Número mínimo de caracteres maiúsculos +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 +TypePaymentDesc=0: tipo de pagamento do cliente, 1: tipo de pagamento do fornecedor, 2: tipo de pagamento de 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 +ExpenseReportsRulesSetup=Configuração do módulo Relatórios de Despesas - Regras +ExpenseReportNumberingModules=Módulo de numeração dos relatórios de despesas +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 e-mail ativando e configurando o módulo "Notificação" +TemplatesForNotifications=Modelos para notificações +ListOfNotificationsPerUser=Lista de notificações automáticas por usuário +ListOfNotificationsPerUserOrContact=Lista de possíveis notificações automáticas (no evento de negócios) disponíveis por usuário * ou por contato ** +ListOfFixedNotifications=Lista de notificações fixas automáticas +GoOntoContactCardToAddMore=Vá para guia "Notificações" de terceiros para adicionar ou remover notificações de contatos / endereços +BackupDumpWizard=Assistente para criar arquivo de backup do banco de dados +BackupZipWizard=Assistente para criar arquivo do diretório de documentos +SomethingMakeInstallFromWebNotPossible=A instalação do módulo externo não é possível a partir da interface web pelo seguinte motivo: +SomethingMakeInstallFromWebNotPossible2=Por esse motivo, o processo de atualização descrito aqui é um processo manual que somente um usuário privilegiado pode executar. +InstallModuleFromWebHasBeenDisabledByFile=A instalação do módulo externo do aplicativo foi desabilitada pelo seu Administrador. Você deve pedir que ele remova o arquivo %s para permitir esta funcionalidade. +ConfFileMustContainCustom=A instalação ou construção de um módulo externo a partir do aplicativo precisa salvar os arquivos do módulo no diretório %s. Para ter esse diretório processado pelo Dolibarr, você deve configurar o seu conf/conf.php para adicionar as 2 linhas de diretivas :
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='%s/custom'; +HighlightLinesOnMouseHover=Destacar linhas de tabela quando o mouse passar sobre elas +HighlightLinesColor=Destaque a cor da linha quando o mouse passar (use 'ffffff' para não destacar) +HighlightLinesChecked=Destaque a cor da linha quando esta estiver marcada (use 'ffffff' para não destacar) +UseBorderOnTable=Mostrar bordas laterais em tabelas +BtnActionColor=Cor do botão de ação +TextBtnActionColor=Cor do texto do botão de ação +LinkColor=Cor dos linques +PressF5AfterChangingThis=Pressione CTRL+F5 no teclado ou limpe o cache do seu navegador após mudar este valor para torná-lo efetivo +NotSupportedByAllThemes=Trabalhará com os temas principais, pode não ser suportado por temas externos +TopMenuBackgroundColor=Cor de fundo para o menu de topo +TopMenuDisableImages=Ocultar imagens no menu Superior +LeftMenuBackgroundColor=Cor do fundo para o menu esquerdo +BackgroundTableTitleColor=Cor de fundo para a linha do título da Tabela +BackgroundTableTitleTextlinkColor=Cor do texto da linha de link do título da tabela +BackgroundTableLineOddColor=Cor do fundo para as linhas ímpares da tabela +BackgroundTableLineEvenColor=Cor do fundo, mesmo para linhas de tabela +MinimumNoticePeriod=O período mínimo de observação (O seu pedido de licença deve ser feito antes de esse atraso) +NbAddedAutomatically=Número de dias adicionados para contadores de usuários (automaticamente) a cada mês +EnterAnyCode=Este campo contém uma referência para identificar a linha. Insira qualquer valor de sua escolha, mas sem caracteres especiais. +Enter0or1=Digite 0 ou 1 +ColorFormat=A cor RGB está no formato HEX, ex.: FF0000 +PositionIntoComboList=Posição de linha em listas de combinação +SellTaxRate=Taxa de imposto de venda +RecuperableOnly=Sim para VAT "Não Percebido, mas Recuperável" dedicado a alguns estados na França. Mantenha o valor como "Não" em todos os outros casos. +UrlTrackingDesc=Se o fornecedor ou serviço de transporte oferecer uma página ou site para verificar o status de suas remessas, você poderá inseri-lo aqui. Você pode usar a chave {TRACKID} nos parâmetros de URL para que o sistema os substitua pelo número de rastreamento que o usuário inseriu no cartão de envio. +OpportunityPercent=Quando você criar um lead, você pode definir uma quantidade estimada de projeto / lead. De acordo com o status do lead, esse valor pode ser multiplicado por essa taxa para avaliar um valor total que todos os leads podem gerar. O valor é uma porcentagem (entre 0 e 100). +TemplateForElement=A que tipo de objeto esse modelo de e-mail está relacionado? Um modelo de e-mail apenas fica disponível quando utilizado o botão "enviar e-mail" disponível no objeto relacionado. +VisibleEverywhere=Visível em qualquer lugar +VisibleNowhere=Agora visível +FixTZ=Consertar TimeZone +FillFixTZOnlyIfRequired=Exemplo: +2 (preencher apenas se experimentou um problema) +CurrentChecksum=Checksum corrente +ExpectedSize=Tamanho esperado +CurrentSize=Tamanho atual +ForcedConstants=Valores constantes exigidos +MailToSendProposal=Propostas de cliente +MailToSendOrder=Pedido de Venda +MailToSendInvoice=Faturas de clientes +MailToSendShipment=Fretes +MailToSendSupplierOrder=Pedidos de compra +MailToSendSupplierInvoice=Faturas de fornecedores +MailToSendReception=Recebimentos +MailToUser=Usuários +ByDefaultInList=Exibir como padrão na visualização em lista +YouUseLastStableVersion=Você utiliza a última versão estável +TitleExampleForMajorRelease=Exemplo de mensagem que você pode usar para anunciar esta importante versão (sinta-se à vontade para usar isso nos seus websites) +TitleExampleForMaintenanceRelease=Exemplo de mensagem que você pode usar para anunciar esta versão de manutenção (sinta-se à vontade para usar isso nos seus websites) +ExampleOfNewsMessageForMajorRelease=O ERP e CRM Dolibarr %s está disponível. A versão %s é um lançamento principal com diversas novas funções para os usuários e desenvolvedores. Você pode baixá-la a partir da área de download do portal https://www.dolibarr.org (sub-diretório Versões estáveis). Você pode ler o ChangeLog com a lista completa de mudanças. +ExampleOfNewsMessageForMaintenanceRelease=Dolibarr ERP & CRM %s está disponível. Versão %s é uma versão de manutenção, portanto, contém apenas correções de bugs. Recomendamos que todos os usuários atualizem para esta versão. Uma versão de manutenção não introduz novos recursos ou alterações no banco de dados. Você pode baixá-lo da área de download do portal https://www.dolibarr.org (subdiretório versões estáveis). Você pode ler o ChangeLog para obter uma lista completa de alterações. +MultiPriceRuleDesc=Quando a opção "Vários níveis de preços por produto / serviço" está ativada, você pode definir preços diferentes (um por nível de preço) para cada produto. Para poupar tempo, aqui você pode inserir uma regra para calcular automaticamente um preço para cada nível com base no preço do primeiro nível, então você terá que inserir apenas um preço para o primeiro nível para cada produto. Esta página foi projetada para poupar tempo, mas é útil somente se os preços de cada nível forem relativos ao primeiro nível. Você pode ignorar esta página na maioria dos casos. +ModelModulesProduct=Temas para os documentos do produto +WarehouseModelModules=Modelos para documentos de armazéns +ToGenerateCodeDefineAutomaticRuleFirst=Para gerar códigos automaticamente, você deve primeiro definir um gerente para definir automaticamente o número do código de barras. +SeeSubstitutionVars=Veja * nota para a lista das possíveis variáveis de substituição +SeeChangeLog=Ver o arquivo ChangeLog (somente em inglês) +AllPublishers=Todos os que publicam +UnknownPublishers=Anônimos que publicam +AddRemoveTabs=Adicionar ou remover abas +AddDataTables=Adicionar tabelas do objeto +AddDictionaries=Adicionar tabelas dos dicionários +AddData=Adicionar objetos ou dados dos dicionários +AddHooks=Adicionar ganchos +AddTriggers=Adicionar disparadores +AddModels=Adicionar temas de documentos ou de numeração +DetectionNotPossible=Não foi possível a detecção +ListOfAvailableAPIs=Lista de API's disponíveis +CommandIsNotInsideAllowedCommands=O comando que você está tentando executar não está na lista de comandos permitidos definidos no parâmetro $ dolibarr_main_restrict_os_commands no arquivo conf.php . +LandingPage=Página de destino +ModuleEnabledAdminMustCheckRights=O módulo foi ativado. As permissões para módulo(s) ativado foram fornecidas apenas aos usuários de administração. Talvez seja necessário conceder permissões para outros usuários ou grupos manualmente, se necessário. +BaseCurrency=Moeda de referência da companhia (ir para a configuração da companhia para alterá-la) +MAIN_PDF_MARGIN_LEFT=Margem esquerda no PDF +MAIN_PDF_MARGIN_RIGHT=Margem direita no PDF +MAIN_PDF_MARGIN_TOP=Margem superior no PDF +MAIN_PDF_MARGIN_BOTTOM=Margem inferior no PDF +MAIN_DOCUMENTS_LOGO_HEIGHT=Altura para o logotipo em PDF +MAIN_GENERATE_PROPOSALS_WITH_PICTURE=Adicionar coluna para imagem nas linhas da proposta +MAIN_DOCUMENTS_WITH_PICTURE_WIDTH=Largura da coluna se uma imagem for adicionada nas linhas +MAIN_PDF_NO_SENDER_FRAME=Ocultar bordas no quadro de endereço do remetente +MAIN_PDF_NO_RECIPENT_FRAME=Ocultar bordas no quadro de endereço do destinatário +MAIN_PDF_HIDE_CUSTOMER_CODE=Ocultar código do cliente +MAIN_PDF_HIDE_SENDER_NAME=Ocultar o nome do remetente/empresa no bloco de endereços +PROPOSAL_PDF_HIDE_PAYMENTTERM=Ocultar condições de pagamento +PROPOSAL_PDF_HIDE_PAYMENTMODE=Ocultar forma de pagamento +MAIN_PDF_PROPAL_USE_ELECTRONIC_SIGNING=Adicionar assinatura eletrônica ao PDF +NothingToSetup=Não há configuração específica necessária para este módulo. +SetToYesIfGroupIsComputationOfOtherGroups=Defina isto como yes se este grupo for um cálculo de outros grupos +EnterCalculationRuleIfPreviousFieldIsYes=Insira a regra de cálculo se o campo anterior foi definido como Sim.
Por exemplo:
CODEGRP1 + CODEGRP2 +SeveralLangugeVariatFound=Várias variantes de idioma encontradas +RemoveSpecialChars=Remover caracteres especiais +COMPANY_DIGITARIA_CLEAN_REGEX=Filtro Regex para valor limpo (COMPANY_DIGITARIA_CLEAN_REGEX) +COMPANY_DIGITARIA_UNIQUE_CODE=Duplicação não permitida +HelpOnTooltipDesc=Coloque texto ou uma chave de conversão aqui para o texto ser exibido em uma dica de ferramenta quando esse campo aparecer em um formulário +YouCanDeleteFileOnServerWith=Você pode excluir este arquivo no servidor com a linha de comando:
%s +EnableFeatureFor=Ativar recursos para %s +VATIsUsedIsOff=Nota: A opção de usar o Imposto sobre vendas ou o IVA foi definida como Desligada no menu %s - %s, portanto, o imposto sobre vendas ou IVA usado será sempre 0 para vendas. +SwapSenderAndRecipientOnPDF=Troque o remetente e a posição do endereço do destinatário em documentos PDF +FeatureSupportedOnTextFieldsOnly=Aviso, recurso compatível apenas com campos de texto e listas de combinação. Além disso, um parâmetro de URL ação=criar ou ação=editar deve ser definido OU o nome da página deve terminar com 'new.php' para acionar este recurso. +EmailCollectorDescription=Adicione um trabalho agendado e uma página de configuração para verificar regularmente as caixas de e-mail (usando o protocolo IMAP) e registre os e-mails recebidos em seu aplicativo, no lugar certo e / ou crie alguns registros automaticamente (como leads). +NewEmailCollector=Novo coletor de e-mail +EmailcollectorOperationsDesc=As operações são executadas de cima para baixo +MaxEmailCollectPerCollect=Número máximo de e-mails coletados por coleta +DateLastCollectResult=Data da última tentativa de coleta +DateLastcollectResultOk=Data da última coleta bem sucedida +LastResult=Último resultado +EmailCollectorConfirmCollectTitle=Confirmação de recebimento de e-mail +NoNewEmailToProcess=Nenhum novo e-mail (filtros correspondentes) para processar +XEmailsDoneYActionsDone=%s e-mails qualificados, %s e-mails processados com sucesso (para registro %s/ações executadas) +RecordEvent=Gravar um evento na agenda (com tipo Email enviado ou recebido) +CreateLeadAndThirdParty=Crie um lead (e um terceiro, se necessário) +CodeLastResult=Código do último resultado +NbOfEmailsInInbox=Número de e-mails no diretório de origem +LoadThirdPartyFromName=Carregar pesquisa de terceiros em %s (carregar somente) +LoadThirdPartyFromNameOrCreate=Carregar pesquisa de terceiros em %s (criar se não for encontrado) +AttachJoinedDocumentsToObject=Salve arquivos anexados em documentos de objeto se uma referência de um objeto for encontrada no tópico de email. +WithDolTrackingID=Mensagem de conversa iniciada por um primeiro e-mail enviado de Dolibarr +WithoutDolTrackingID=Mensagem de uma conversa iniciada por um primeiro e-mail NÃO enviado pelo Dolibarr +WithDolTrackingIDInMsgId=Mensagem enviada de Dolibarr +WithoutDolTrackingIDInMsgId=Mensagem NÃO enviada de Dolibarr +CreateCandidature=Criar formulário de emprego +FormatZip=CEP +MainMenuCode=Código de entrada do menu (mainmenu) +ECMAutoTree=Mostrar árvore de ECM automática +OperationParamDesc=Defina as regras a serem usadas para extrair ou definir valores.
Exemplo para operações que precisam extrair um nome do assunto do email:
name=EXTRACT:SUBJECT:Message from company ([^\n] *)
Exemplo para operações que criam objectos:
objproperty1 = SET, o valor de conjunto
objproperty2 = SET, um valor incluindo valor de __objproperty1__
objproperty3 = SETIFEMPTY: valor utilizado se objproperty3 se não já definido
objproperty4 = EXTRACTO: HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:O nome da minha empresa é\\s( [^\\s]*)

Use um ; char como separador para extrair ou definir várias propriedades. +OpeningHours=Horário de abertura +OpeningHoursDesc=Digite aqui os horários de funcionamento da sua empresa. +ResourceSetup=Configuração do módulo de recursos +UseSearchToSelectResource=Usa um formulário de busca para a escolha de um recurso (em vez de uma lista suspensa) +DisabledResourceLinkUser=Desativar recurso para vincular um recurso a usuários +DisabledResourceLinkContact=Desativar recurso para vincular um recurso a contatos +DisableProspectCustomerType=Desative o tipo de terceiro "Cliente em potencial + cliente" (portanto, o terceiro deve ser "Cliente em potencial" ou "Cliente", mas não pode ser os dois) +MAIN_OPTIMIZEFORTEXTBROWSER=Simplifique a interface para pessoas cegas +MAIN_OPTIMIZEFORTEXTBROWSERDesc=Ative esta opção se você for uma pessoa cega ou se usar o aplicativo em um navegador de texto como o Lynx ou o Links. +MAIN_OPTIMIZEFORCOLORBLIND=Alterar a cor da interface para daltônicos +MAIN_OPTIMIZEFORCOLORBLINDDesc=Habilite esta opção se você for daltônico, em alguns casos, a interface alterará a configuração de cores para aumentar o contraste. +ThisValueCanOverwrittenOnUserLevel=Este valor pode ser substituído por cada usuário a partir de sua página de usuário - na guia '%s' +DefaultCustomerType=Tipo de Terceiro padrão para o formulário de criação de"Novo cliente" +ABankAccountMustBeDefinedOnPaymentModeSetup=Nota: A conta bancária deve ser definida no módulo de cada modo de pagamento (Paypal, Stripe, ...) para que este recurso funcione. +RootCategoryForProductsToSell=Categoria raiz de produtos para vender +RootCategoryForProductsToSellDesc=Se definido, somente produtos dentro desta categoria ou filhos desta categoria estarão disponíveis no Ponto de Venda. +DebugBar=Barra de depuração +DebugBarDesc=Barra de ferramentas que vem com várias ferramentas para simplificar a depuração +DebugBarSetup=Configuração da barra de depuração +GeneralOptions=Opções gerais +LogsLinesNumber=Número de linhas para mostrar na guia logs +UseDebugBar=Use a barra de depuração +DEBUGBAR_LOGS_LINES_NUMBER=Número de últimas linhas de log para manter no console +WarningValueHigherSlowsDramaticalyOutput=Atenção, valores mais altos reduzem drasticamente a saída +ModuleActivated=O módulo %s é ativado e torna a interface mais lenta +ModuleActivatedWithTooHighLogLevel=O módulo %s está ativado com um nível de log muito alto (tente adotar um nível de log menor para melhor performance e segurança) +ModuleSyslogActivatedButLevelNotTooVerbose=O módulo %s está ativado e o nível de registro (%s) está correto (pouco detalhado) +IfYouAreOnAProductionSetThis=Se você estiver em um ambiente de produção, deve definir esta propriedade como %s. +AntivirusEnabledOnUpload=Antivírus habilitado em arquivos carregados +SomeFilesOrDirInRootAreWritable=Alguns arquivos ou diretórios não estão em modo somente leitura +EXPORTS_SHARE_MODELS=Modelos de exportação são compartilhar com todos +ExportSetup=Configuração do módulo Export +ImportSetup=Configuração do módulo Importar +InstanceUniqueID=ID exclusivo da instância +SmallerThan=Menor que +LargerThan=Maior que +IfTrackingIDFoundEventWillBeLinked=Observe que se um ID de rastreamento de um objeto for encontrado no email, ou se o email for uma resposta de um email já coletado e vinculado a um objeto, o evento criado será automaticamente vinculado ao objeto relacionado conhecido. +WithGMailYouCanCreateADedicatedPassword=Com uma conta do GMail, se você ativou a validação de 2 etapas, é recomendável criar uma segunda senha dedicada para o aplicativo, em vez de usar sua própria senha da conta em https://myaccount.google.com/. +EmailCollectorTargetDir=Pode ser um comportamento desejado mover o email para outra tag / diretório quando ele foi processado com êxito. Basta definir o nome do diretório aqui para usar este recurso (NÃO use caracteres especiais no nome). Observe que você também deve usar uma conta de logon de leitura / gravação. +EmailCollectorLoadThirdPartyHelp=Você pode usar esta ação para usar o conteúdo do e-mail para localizar e carregar um terceiro existente em seu banco de dados. O terceiro encontrado (ou criado) será usado para as seguintes ações que precisarem dele.
Por exemplo, se você deseja criar um terceiro com um nome extraído de uma string 'Nome: nome a localizar' presente no corpo, use o e-mail do remetente como e-mail, você pode definir o campo de parâmetro assim:
'email= HEADER:^From:(.*);name=EXTRACT:BODY:Name:\\s([^\\s]*);client=SET:2;'
+EndPointFor=Ponto final para %s : %s +DeleteEmailCollector=Excluir coletor de e-mail +ConfirmDeleteEmailCollector=Tem certeza de que deseja excluir este coletor de e-mail? +RecipientEmailsWillBeReplacedWithThisValue=Os e-mails dos destinatários sempre serão substituídos por este valor +AtLeastOneDefaultBankAccountMandatory=Pelo menos uma (01) conta bancária padrão deve ser definida +RESTRICT_ON_IP=Permitir acesso de API somente para certos endereços IP (caracteres-curinga não são permitidos, use espaço entre os valores). Vazio significa que qualquer cliente pode acessar. +IPListExample=127.0.0.1 192.168.0.2 [:: 1] +BaseOnSabeDavVersion=Com base na versão da biblioteca SabreDAV +NotAPublicIp=Não é um IP público +MakeAnonymousPing=Faça um ping anônimo '+1' no servidor de base Dolibarr (feito apenas uma vez após a instalação) para permitir que a base conte o número de instalações do Dolibarr. +FeatureNotAvailableWithReceptionModule=Recurso não disponível quando a recepção do módulo está ativada +EmailTemplate=Modelo para e-mail +EMailsWillHaveMessageID=Os e-mails terão a tag 'Referências' correspondente a esta sintaxe +PDF_SHOW_PROJECT=Exibir projeto no documento +ShowProjectLabel=Rótulo do Projeto +PDF_USE_ALSO_LANGUAGE_CODE=Se você deseja duplicar alguns textos em seu PDF em 2 idiomas diferentes no mesmo PDF gerado, defina aqui esse segundo idioma para que o PDF gerado contenha 2 idiomas diferentes na mesma página, o escolhido ao gerar PDF e este ( apenas alguns modelos de PDF suportam isso). Mantenha em branco para 1 idioma por PDF. +PDF_USE_A=Gerar documentos no formato PDF/A ao invés do formato PDF padrão +FafaIconSocialNetworksDesc=Digite aqui o código de um ícone FontAwesome. Se você não souber o que é FontAwesome, poderá usar o valor genérico fa-address-book. +RssNote=Nota: Cada definição de feed RSS fornece um widget que você deve ativar para disponibilizá-lo no painel +JumpToBoxes=Vá para Configuração -> Widgets +MeasuringUnitTypeDesc=Use aqui um valor como "tamanho", "superfície", "volume", "peso", "tempo" +MeasuringScaleDesc=A escala é o número de casas que você precisa mover a parte decimal para corresponder à unidade de referência padrão. Para o tipo de unidade "time", é o número de segundos. Valores entre 80 e 99 são valores reservados. +TemplateAdded=Modelo adicionado +TemplateUpdated=Modelo atualizado +TemplateDeleted=Modelo excluído +MailToSendEventPush=Email de lembrete de evento +SwitchThisForABetterSecurity=Alternar este valor para %s é recomendado para mais segurança +DictionaryProductNature=Natureza do produto +CountryIfSpecificToOneCountry=País (se específico para um determinado país) +YouMayFindSecurityAdviceHere=Você pode encontrar avisos de segurança aqui +ModuleActivatedMayExposeInformation=Esta extensão PHP pode expor dados confidenciais. Se você não precisa disso, desative-o. +ModuleActivatedDoNotUseInProduction=Um módulo projetado para o desenvolvimento foi habilitado. Não o habilite em um ambiente de produção. +CombinationsSeparator=Caractere separador para combinações de produtos +SeeLinkToOnlineDocumentation=Veja o link para a documentação online no menu superior para exemplos +SHOW_SUBPRODUCT_REF_IN_PDF=Se o recurso "%s" do módulo %s for usado, mostre detalhes dos subprodutos de um kit em PDF. +AskThisIDToYourBank=Entre em contato com seu banco para obter este ID +AdvancedModeOnly=Permissão disponível apenas no modo de permissão Avançada +ConfFileIsReadableOrWritableByAnyUsers=O arquivo conf pode ser lido ou gravado por qualquer usuário. Dê permissão apenas ao usuário e grupo do servidor da web. +MailToSendEventOrganization=Organização do Evento +MailToPartnership=Parceria +AGENDA_EVENT_DEFAULT_STATUS=Status de evento padrão ao criar um evento a partir do formulário +YouShouldDisablePHPFunctions=Você deve desabilitar funções PHP +IfCLINotRequiredYouShouldDisablePHPFunctions=A não ser que você precise executar comandos do sistema via personalizações, você deve desativar as funções do PHP +PHPFunctionsRequiredForCLI=Para efeito de linha de comando (como tarefas agendadas para backup ou executar antivirus), você deve manter as funções PHP +NoWritableFilesFoundIntoRootDir=Nenhum arquivo gravável ou diretório de programas comuns foi encontrado em seu diretório raiz (bom) +RecommendedValueIs=Recomendado: %s +Recommended=Versão Recomendada +NotRecommended=Não recomendado +ARestrictedPath=Algum caminho restrito +CheckForModuleUpdate=Verificar se há atualizações para módulos externos +CheckForModuleUpdateHelp=Esta ação se conectará a editores de módulos externos para verificar se uma nova versão está disponível. +ModuleUpdateAvailable=Uma atualização está disponível +NoExternalModuleWithUpdate=Nenhuma atualização encontrada para módulos externos +SwaggerDescriptionFile=Arquivo de descrição da API Swagger (para uso com redoc, por exemplo) +YouEnableDeprecatedWSAPIsUseRESTAPIsInstead=Você habilitou o webservice API, que foi descontinuado. Use REST API ao invés desse serviço. +RandomlySelectedIfSeveral=Selecionado aleatoriamente se várias fotos estiverem disponíveis +DatabasePasswordObfuscated=O banco de dados de senhas está ofuscado no arquivo conf +DatabasePasswordNotObfuscated=O banco de dados de senhas NÃO está ofuscado no arquivo conf +APIsAreNotEnabled=Módulos API não estão ativados. +YouShouldSetThisToOff=Você deveria marcar esse valor como 0 ou desligado +InstallAndUpgradeLockedBy=Instalações e upgrades estão bloqueados pelo arquivo %s +OldImplementation=Implementação antiga +PDF_SHOW_LINK_TO_ONLINE_PAYMENT=Se algum módulo de pagamento estiver habilitado (Paypal, Stripe, ...), adiciona um link ao arquivo PDF para fazer o pagamento online. +DashboardDisableGlobal=Desabilite globalmente todos os polegares de objetos abertos +BoxstatsDisableGlobal=Desativar totalmente as estatísticas da caixa +DashboardDisableBlocks=Polegares de objetos abertos (para processar ou atrasados) no painel principal +DashboardDisableBlockAgenda=Desativar o polegar para agenda +DashboardDisableBlockProject=Desabilitar o polegar para projetos +DashboardDisableBlockCustomer=Desabilitar o polegar para clientes +DashboardDisableBlockSupplier=Desabilitar o polegar para fornecedores +DashboardDisableBlockContract=Desabilitar o polegar para contratos +DashboardDisableBlockTicket=Desative o polegar para ingressos +DashboardDisableBlockBank=Desabilitar o polegar para bancos +DashboardDisableBlockAdherent=Desative a visualização para associações +DashboardDisableBlockExpenseReport=Desative a visualização para relatórios de despesas +DashboardDisableBlockHoliday=Desative o polegar para folhas +EnabledCondition=Condição para ter o campo habilitado (se não habilitado, a visibilidade estará sempre desligada) +IfYouUseASecondTaxYouMustSetYouUseTheMainTax=Se você quiser usar um segundo imposto, você deve habilitar também o primeiro imposto sobre vendas +IfYouUseAThirdTaxYouMustSetYouUseTheMainTax=Se você quiser usar um terceiro imposto, você deve habilitar também o primeiro imposto sobre vendas +LanguageAndPresentation=Linguagem e apresentação +SkinAndColors=Skin e cores +PDF_USE_1A=Gerar PDF com formato PDF/A-1b +MissingTranslationForConfKey =Tradução ausente para %s +NativeModules=Módulos nativos +NoDeployedModulesFoundWithThisSearchCriteria=Nenhum módulo encontrado para os critérios de pesquisa +API_DISABLE_COMPRESSION=Desativar compactação de respostas da API +EachTerminalHasItsOwnCounter=Cada terminal usa seu próprio contador. +FillAndSaveAccountIdAndSecret=Preencha e salve o ID da conta e o segredo primeiro +PreviousHash=Hash anterior +LateWarningAfter=Aviso "atrasado" após +TemplateforBusinessCards=Modelo para um cartão de visita em tamanho diferente +InventorySetup=Configuração de inventário +ExportUseLowMemoryMode=Use um modo de pouca memória +ExportUseLowMemoryModeHelp=Use o modo de memória baixa para executar o exec do dump (a compactação é feita através de um pipe em vez de na memória PHP). Este método não permite verificar se o arquivo está completo e a mensagem de erro não pode ser relatada se falhar. +Settings =Configurações diff --git a/htdocs/langs/pt_MZ/agenda.lang b/htdocs/langs/pt_MZ/agenda.lang new file mode 100644 index 00000000000..c820a537f0a --- /dev/null +++ b/htdocs/langs/pt_MZ/agenda.lang @@ -0,0 +1,140 @@ +# Dolibarr language file - Source file is en_US - agenda +IdAgenda=ID do evento +LocalAgenda=Calendário padrão +ActionsOwnedBy=Evento de propriedade do +Event=Ação +ListOfActions=Lista de eventos +EventReports=Relatório de eventos +ToUserOfGroup=Evento atribuído a qualquer usuário do grupo +EventOnFullDay=Evento no(s) dia(s) todo +MenuToDoMyActions=Meus eventos incompletos +MenuDoneMyActions=Meus eventos terminados +ListOfEvents=Lista de eventos (calendário padrão) +ActionsAskedBy=Eventos relatados pelo +ActionsDoneBy=Eventos feito por +ActionAssignedTo=Evento atribuído para +ViewCal=Ver Mês +ViewDay=Ver dia +ViewWeek=ver semana +ViewPerUser=Visão do usuário +ViewPerType=Por visualização de tipo +AgendaAutoActionDesc=Aqui voce pode definir eventos, os quais voce quer que o Dolibarr crie automáticamente na Agenda. Se nada estiver ticado, só as ações manuais serão incluidas nos logs e mostradas na Agenda. Acompanhamento automático de ações de negócio feitas nos objetos (Validação, alteração de situação) não serão salvas. +AgendaSetupOtherDesc=Esta página fornece opções para exportar seus eventos Dolibarr, para um calendário externo(Thunderbird, google calendar, etc...) +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. +EventRemindersByEmailNotEnabled=Lembretes por e-mail desabilitados no %s módulo setup +NewCompanyToDolibarr=Terceiro %s criados +COMPANY_MODIFYInDolibarr=Terceiro %s modificado +COMPANY_DELETEInDolibarr=Terceiro %s excluído +ContractValidatedInDolibarr=Contrato %s validado +PropalClosedSignedInDolibarr=Proposta %s assinada +PropalClosedRefusedInDolibarr=Proposta %s declinada +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=Adicionada inscrição %spara membro %s +MemberSubscriptionModifiedInDolibarr=Modificada %s inscrição para %smembro +MemberSubscriptionDeletedInDolibarr=Deletada inscrição %spara membro %s +ShipmentValidatedInDolibarr=Envio %s validado +ShipmentClassifyClosedInDolibarr=Expedição%s classificado(s) e faturado(s) +ShipmentUnClassifyCloseddInDolibarr=Remessa %s classificada como reaberta +ShipmentBackToDraftInDolibarr=Embarque %s voltou à situação rascunho +ShipmentDeletedInDolibarr=Envio %s cancelado +ReceptionValidatedInDolibarr=Recepção %s validada +OrderCreatedInDolibarr=Pedido %s criado +OrderValidatedInDolibarr=Pedido %s validado +OrderDeliveredInDolibarr=Ordem %s classificadas entregues +OrderCanceledInDolibarr=Pedido %s cancelado +OrderBilledInDolibarr=Ordem %s classificadas faturado +OrderApprovedInDolibarr=Pedido %s aprovado +OrderRefusedInDolibarr=Pedido %s recusado +OrderBackToDraftInDolibarr=Pedido %s voltou para o status de rascunho +ProposalSentByEMail=Proposta comercial 1%s enviada por e-mail +ContractSentByEMail=Contrato%s enviado por e-mail +OrderSentByEMail=Ped. de venda 1%s enviado por e-mail +InvoiceSentByEMail=Fat. %s do cliente enviada por e-mail +ORDER_SUPPLIER_DELETEInDolibarr=Pedido de compra %s excluído +SupplierInvoiceSentByEMail=Fatura %s do fornec. enviada por e-mail +ShippingSentByEMail=Embarque %s enviado por e-mail +ShippingValidated=Envio %s validado +ProposalDeleted=Proposta excluída +OrderDeleted=Pedido excluído +InvoiceDeleted=Fatura excluída +DraftInvoiceDeleted=Rascunho da fatura excluído +CONTACT_CREATEInDolibarr=Contato %s criado +CONTACT_MODIFYInDolibarr=Contato %s modificado +CONTACT_DELETEInDolibarr=Contato %s excluído +PRODUCT_CREATEInDolibarr=Produto %s criado +PRODUCT_MODIFYInDolibarr=Produto %s modificado +PRODUCT_DELETEInDolibarr=Produto%s exluído +HOLIDAY_CREATEInDolibarr=Solicitação de licença %s criada +HOLIDAY_MODIFYInDolibarr=Solicitação de licença %s alterada +HOLIDAY_APPROVEInDolibarr=Solicitação de licença %s aprovada +HOLIDAY_VALIDATEInDolibarr=Solicitação de licença %s validada +HOLIDAY_DELETEInDolibarr=Solicitação de licença %s excluída +EXPENSE_REPORT_CREATEInDolibarr=Relatório de despesas %s criado +EXPENSE_REPORT_VALIDATEInDolibarr=relatório de despesas %s validado +EXPENSE_REPORT_APPROVEInDolibarr=Relatório de despesas %s aprovado +EXPENSE_REPORT_DELETEInDolibarr=Realtório de despesas %s excluído +EXPENSE_REPORT_REFUSEDInDolibarr=Relatório de despesas %s rejeitado +PROJECT_MODIFYInDolibarr=Projeto %s modificado +PROJECT_DELETEInDolibarr=Projeto %s excluído +TICKET_CREATEInDolibarr=Bilhete %s criado +TICKET_MODIFYInDolibarr=Bilhete %s modificado +TICKET_ASSIGNEDInDolibarr=Ticket 1%s atribuído +TICKET_CLOSEInDolibarr=Bilhete %s fechado +TICKET_DELETEInDolibarr=Bilhete %s excluido +BOM_VALIDATEInDolibarr=BOM validado +BOM_UNVALIDATEInDolibarr=BOM não validado +BOM_CLOSEInDolibarr=BOM desativado +BOM_REOPENInDolibarr=BOM reaberto +BOM_DELETEInDolibarr=BOM excluído +MRP_MO_VALIDATEInDolibarr=MO validado +MRP_MO_UNVALIDATEInDolibarr=MO definido para o status de rascunho +MRP_MO_PRODUCEDInDolibarr=MO produzido +MRP_MO_DELETEInDolibarr=MO excluído +MRP_MO_CANCELInDolibarr=MO cancelado +PAIDInDolibarr=%s pago +AgendaModelModule=Modelos de documentos para o evento +DateActionEnd=Data de término +AgendaUrlOptions1=Você também pode adicionar os seguintes parâmetros nos filtros de saída: +AgendaUrlOptions3=logina=%s para restringir a saída para ações criada pelo usuário %s. +AgendaUrlOptionsNotAdmin=logina=!%s para restringir a saída das ações não pertencentes ao usuário%s. +AgendaUrlOptions4=logint=%s para restringir a saída às ações atribuídas ao usuário %s (proprietário e outros). +AgendaUrlOptionsProject=projeto=__PROJECT_ID__ para restringir a saída para ações ligadas ao __PROJECT_ID__. +AgendaUrlOptionsIncludeHolidays=includeholidays = 1 para incluir eventos de licenças. +AgendaShowBirthdayEvents=Aniversários de contatos +AgendaHideBirthdayEvents=Ocultar datas de nascimento dos contatos +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) +AgendaExtNb=Calendário n°. %s +ExtSiteUrlAgenda=URL para acessar arquivos .ical +ExtSiteNoLabel=Sem descrição +VisibleDaysRange=Intervalo de dias visíveis +AddEvent=Adicionar evento +MyAvailability=Minha disponibilidade +DateActionBegin=Iniciar a data do evento +ConfirmCloneEvent=Tem certeza que deseja clonar o evento %s? +RepeatEvent=Repita evento +OnceOnly=Apenas uma vez +EveryWeek=Toda semana +EveryMonth=Todo mês +DateStartPlusOne=Data de início + 1 hora +SetAllEventsToTodo=Defina todos os eventos para todo +SetAllEventsToInProgress=Defina todos os eventos como em andamento +SetAllEventsToFinished=Definir todos os eventos como concluídos +ReminderTime=Período de lembrete antes do evento +TimeType=Tipo de duração +ReminderType=Tipo de retorno de chamada +AddReminder=Criar uma notificação de lembrete automática para este evento +ErrorReminderActionCommCreation=Erro ao criar a notificação de lembrete para este evento +BrowserPush=Notificação de pop-up do navegador +ActiveByDefault=Ativado por padrão diff --git a/htdocs/langs/pt_MZ/assets.lang b/htdocs/langs/pt_MZ/assets.lang new file mode 100644 index 00000000000..00729988913 --- /dev/null +++ b/htdocs/langs/pt_MZ/assets.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - assets +DeleteType=Excluir +DeleteAnAssetType=Excluir um tipo de recurso +ConfirmDeleteAssetType=Tem certeza de que deseja excluir este tipo de recurso? +AssetsTypeId=Id Tipo de ativo +AssetsTypeLabel=Rótulo do tipo de ativo diff --git a/htdocs/langs/pt_MZ/banks.lang b/htdocs/langs/pt_MZ/banks.lang new file mode 100644 index 00000000000..a73d2eb2682 --- /dev/null +++ b/htdocs/langs/pt_MZ/banks.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - banks +BankAccounts=Contas bancárias +StatusAccountClosed=Fechado +WithdrawalPayment=Pedido com pagamento por débito +SocialContributionPayment=Pagamento de imposto social / fiscal diff --git a/htdocs/langs/pt_MZ/bills.lang b/htdocs/langs/pt_MZ/bills.lang new file mode 100644 index 00000000000..9fc6a662566 --- /dev/null +++ b/htdocs/langs/pt_MZ/bills.lang @@ -0,0 +1,405 @@ +# Dolibarr language file - Source file is en_US - bills +BillsCustomers=Faturas de clientes +BillsCustomer=Fatura de cliente +BillsSuppliers=Faturas de fornecedores +BillsCustomersUnpaid=Faturas de clientes não pagos +BillsCustomersUnpaidForCompany=Faturas de clientes não pagas para %s +BillsLate=Pagamentos atrasados +BillsStatistics=Estatísticas de faturas de clientes +DisabledBecauseDispatchedInBookkeeping=Desativado porque a nota fiscal foi despachada na contabilidade +DisabledBecauseNotLastInvoice=Desativado porque a fatura não é apagável. Algumas faturas foram gravadas após esta e ele criará buracos no balcão. +DisabledBecauseNotErasable=Desativada já que não pode ser apagada +InvoiceStandard=Fatura padrão +InvoiceStandardAsk=Fatura padrão +InvoiceStandardDesc=Esse tipo de fatura é a fatura comum. +InvoiceDepositDesc=Este tipo de fatura é feita quando um pagamento inicial foi recebido. +InvoiceProForma=Fatura pro-forma +InvoiceProFormaAsk=Fatura pro-forma +InvoiceProFormaDesc=Fatura pro-forma é uma imagem verdadeira de fatura porem não tem valor contábil. +InvoiceReplacement=Fatura de substituição +InvoiceReplacementAsk=Fatura de substituição por fatura +InvoiceReplacementDesc=Fatura de Substituição é usada para substituir completamente uma fatura sem pagamento já recebido.

Nota: Somente faturas sem pagamento podem ser substituídas. Se a fatura substituída ainda não estiver fechada, ela será automaticamente fechada como 'Abandonada'. +InvoiceAvoir=Nota de crédito +InvoiceAvoirAsk=Nota de crédito para fatura correta +InvoiceAvoirDesc=A nota de crédito é uma fatura negativa usada para corrigir o fato de que uma fatura mostra um valor que difere do valor efetivamente pago (por exemplo, o cliente pagou muito por engano ou não pagará o valor total desde que alguns produtos foram devolvidos). +invoiceAvoirWithLines=Criar Nota de Crédito conforme a fatura original +invoiceAvoirWithPaymentRestAmount=Cirar nota de credito com restante não pago da fatura original +invoiceAvoirLineWithPaymentRestAmount=Nota de credito para valor restante não pago +ReplaceInvoice=Substituir fatura %s +ReplacementInvoice=Fatura de substituição +ReplacedByInvoice=Substituido por fatura %s +ReplacementByInvoice=Substituido por fatura +CorrectInvoice=Fatura correta %s +CorrectionInvoice=Correção de fatura +UsedByInvoice=Usado para pagar fatura %s +NotConsumed=Não consumida +NoReplacableInvoice=Nenhuma fatura substituível +NoInvoiceToCorrect=Nenhuma fatura para corrigir +InvoiceHasAvoir=Foi fonte de uma ou várias notas de crédito +CardBill=Ficha da fatura +InvoiceCustomer=Fatura de cliente +CustomerInvoice=Fatura de cliente +CustomersInvoices=Faturas de Clientes +SupplierInvoice=Fatura do fornecedores +SuppliersInvoices=Faturas de fornecedores +SupplierInvoiceLines=Linhas de Faturas de Fornecedores +SupplierBill=Fatura do fornecedores +SupplierBills=Faturas de fornecedores +PaymentBack=Reembolso +CustomerInvoicePaymentBack=Reembolso +PaidBack=Reembolso pago +DeletePayment=Deletar pagamento +ConfirmDeletePayment=Você tem certeza que deseja excluir este pagamento? +ConfirmConvertToReduc2=O valor será salvo junto a todos os descontos e poderá ser usado como desconto em uma fatura atual ou futura deste cliente. +ConfirmConvertToReducSupplier=Deseja converter este %s em um crédito disponível? +ConfirmConvertToReducSupplier2=O valor será salvo junto a todos os descontos e poderá ser usado como desconto em uma fatura atual ou futura deste fornecedor. +SupplierPayments=Pagamentos do fornecedor +ReceivedCustomersPayments=Pagamentos recebidos de cliente +PayedSuppliersPayments=Pagamentos pagos a fornecedores +ReceivedCustomersPaymentsToValid=Pagamentos recebidos de cliente para validar +PaymentsReportsForYear=Relatórios de pagamentos por %s +PaymentsAlreadyDone=Pagamentos já feitos +PaymentsBackAlreadyDone=Reembolsos já realizados +PaymentRule=Regra de pagamento +PaymentMode=Forma de pagamento +PaymentModes=Formas de pagamento +DefaultPaymentMode=Forma de pagamento padrão +DefaultBankAccount=Conta Bancária padrão +IdPaymentMode=Forma de pagamento (ID) +CodePaymentMode=Forma de pagamento (código) +LabelPaymentMode=Forma de pagamento (etiqueta) +PaymentModeShort=Forma de pagamento +PaymentTerm=Termo de pagamento +PaymentAmount=Valor a ser pago +PaymentHigherThanReminderToPay=Pagamento superior ao valor a ser pago +ClassifyPaid=Classificar 'pago' +ClassifyUnPaid=Classificar 'Não pago' +ClassifyPaidPartially=Classificar 'parcialmente pago' +ClassifyCanceled=Classificar 'Abandonado' +ClassifyClosed=Classificar 'fechado' +ClassifyUnBilled=Classificar "à faturar" +AddBill=Adicionar fatura ou nota de crédito +AddToDraftInvoices=Adicionar para rascunho de fatura +DeleteBill=Deletar fatura +SearchACustomerInvoice=Procurar fatura de cliente +SearchASupplierInvoice=Procurar uma fatura de fornecedor +SendRemindByMail=Enviar o restante por e-mail +DoPayment=Pagamentos +DoPaymentBack=Insira o reembolso +EnterPaymentReceivedFromCustomer=Entrar pagamento recebido de cliente +EnterPaymentDueToCustomer=Realizar pagamento devido para cliente +DisabledBecauseRemainderToPayIsZero=Desabilitado porque o restante a pagar é zero +PriceBase=Preço base +BillStatus=Status de fatura +StatusOfGeneratedInvoices=Situação das faturas geradas +BillStatusDraft=Rascunho (precisa ser validada) +BillStatusPaid=Pago +BillStatusConverted=Pago (Pronto para consumo na fatura final) +BillStatusCanceled=Abandonado +BillStatusValidated=Validado (precisa ser pago) +BillStatusStarted=Iniciado +BillStatusNotPaid=Não pago +BillStatusClosedUnpaid=Fechado (não pago) +BillStatusClosedPaidPartially=Pago (parcialmente) +BillShortStatusDraft=Minuta +BillShortStatusPaid=Pago +BillShortStatusCanceled=Abandonado +BillShortStatusValidated=Validado +BillShortStatusStarted=Iniciado +BillShortStatusNotPaid=Não pago +BillShortStatusClosedUnpaid=Fechado +BillShortStatusClosedPaidPartially=Pago (parcialmente) +PaymentStatusToValidShort=Para validar +ErrorNoPaiementModeConfigured=Nenhum tipo de pagamento padrão definido. Vá para a configuração do módulo Invoice para corrigir isso. +ErrorCreateBankAccount=Crie uma conta bancária e acesse o painel Configuração do módulo Fatura para definir os tipos de pagamento +ErrorBillNotFound=Fatura %s não existe +ErrorDiscountAlreadyUsed=Erro, desconto já utilizado +ErrorInvoiceAvoirMustBeNegative=Erro, fatura atual precisa ter um valor negativo +ErrorInvoiceOfThisTypeMustBePositive=Erro. Este tipo de fatura deve ter um valor excluindo imposto positivo (ou nulo) +ErrorCantCancelIfReplacementInvoiceNotValidated=Erro, não se pode cancelar uma fatura que foi substituida por outra fatura que ainda esta como rascunho +BillFrom=De +BillTo=Para +ActionsOnBill=Ações na fatura +RecurringInvoiceTemplate=Modelo / nota fiscal recorrente +NoQualifiedRecurringInvoiceTemplateFound=Nenhum tema de fatura recorrente qualificado para a geração +FoundXQualifiedRecurringInvoiceTemplate=Encontrado(s) %s tema(s) de fatura(s) recorrente(s) qualificado(s) para a geração. +NotARecurringInvoiceTemplate=Não é um tema de fatura recorrente +LastBills=Últimas notas %s +LatestTemplateInvoices=Últimas faturas do modelo %s +LatestCustomerTemplateInvoices=Últimas faturas do modelo de cliente %s +LatestSupplierTemplateInvoices=Últimas faturas de modelo de fornecedor %s +LastCustomersBills=Últimas notas de clientes %s +LastSuppliersBills=Últimas faturas de fornecedor %s +AllBills=Todas faturas +AllCustomerTemplateInvoices=Todas as faturas do modelo +DraftBills=Rascunho de faturas +CustomersDraftInvoices=Faturas de rascunho do cliente +SuppliersDraftInvoices=Faturas de fornecedores - Rascunho +Unpaid=Não pago +ErrorNoPaymentDefined=Erro. Nenhum pagamento definido +ConfirmDeleteBill=Você tem certeza que deseja excluir esta fatura? +ConfirmValidateBill=Você tem certeza que deseja validar esta fatura com referência %s? +ConfirmUnvalidateBill=Você tem certeza que deseja mudar a situação da fatura %s para rascunho? +ConfirmClassifyPaidBill=Você tem certeza que deseja mudar a situação da fatura %s para paga? +ConfirmCancelBill=Você tem certeza que deseja cancelar a fatura %s? +ConfirmCancelBillQuestion=Por quê você deseja classificar esta fatura 'abandonada'? +ConfirmClassifyPaidPartially=Você tem certeza que deseja mudar a situação da fatura %s para paga? +ConfirmClassifyPaidPartiallyQuestion=Esta fatura não foi paga completamente. Qual é o motivo para fechar esta fatura? +ConfirmClassifyPaidPartiallyReasonDiscount=Restante não remunerado (%s %s) é um desconto concedido porque o pagamento foi feito antes do prazo. +ConfirmClassifyPaidPartiallyReasonDiscountNoVat=Restante para pagar (%s %s) é um desconto concedido porque o pagamento foi feito antes do prazo. Eu aceitei perder o IVA neste desconto. +ConfirmClassifyPaidPartiallyReasonDiscountVat=Restante para pagar (%s %s) é um desconto concedido porque o pagamento foi feito antes do prazo. Eu recuperei o IVA neste desconto sem uma nota de crédito. +ConfirmClassifyPaidPartiallyReasonBadCustomer=Cliente mau +ConfirmClassifyPaidPartiallyReasonBankCharge=Dedução por banco (taxas bancárias intermediárias) +ConfirmClassifyPaidPartiallyReasonProductReturned=Produtos parcialmente devolvido +ConfirmClassifyPaidPartiallyReasonOther=Quantia abandonada por outro motivo +ConfirmClassifyPaidPartiallyReasonAvoirDesc=Use essa escolha se as outras não se adequar +ConfirmClassifyPaidPartiallyReasonProductReturnedDesc=Essa escolha é usado quando o pagamento não é completo porque alguns produtos foram devolvidos +ConfirmClassifyPaidPartiallyReasonBankChargeDesc=O valor não pago sãotaxas bancárias intermediárias, deduzidas diretamente do valor correto pago pelo Cliente. +ConfirmClassifyAbandonReasonOther=Outros +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 %s %s? +ConfirmSupplierPayment=Você confirma o recebimento de pagamento para %s %s? +ConfirmValidatePayment=Você tem certeza que deseja validar este pagamento? Nenhuma alteração poderá ser feita após a validação do pagamento. +ValidateBill=Validar faturao +UnvalidateBill=Desvalidar fatura +NumberOfBills=Nº. de faturas +NumberOfBillsByMonth=Nº. de faturas por mês +AmountOfBills=Quantidade de faturas +AmountOfBillsByMonthHT=Quantidade de faturas por mês (líquido de taxa) +UseSituationInvoices=Permitir fatura de situação +UseSituationInvoicesCreditNote=Permitir nota de crédito da fatura da situação +Retainedwarranty=Garantia retida +AllowedInvoiceForRetainedWarranty=Garantia estendida utilizável nos seguintes tipos de faturas +RetainedwarrantyDefaultPercent=Porcentagem padrão de garantia retida +RetainedwarrantyOnlyForSituation=Disponibilizar "garantia retida" apenas para faturas de situação +RetainedwarrantyOnlyForSituationFinal=Nas faturas de situação, a dedução global de "garantia retida" é aplicada apenas na situação final +ToPayOn=Para pagar em %s +toPayOn=para pagar em %s +RetainedWarranty=Garantia Retida +PaymentConditionsShortRetainedWarranty=Condições de pagamento da garantia estendida +DefaultPaymentConditionsRetainedWarranty=Termos de pagamento padrão da garantia estendida +setPaymentConditionsShortRetainedWarranty=Definir condições de pagamento da garantia estendida +setretainedwarranty=Definir garantia estendida +setretainedwarrantyDateLimit=Definir limite de data de garantia estendida +RetainedWarrantyDateLimit=Limite de data de garantia estendida +RetainedWarrantyNeed100Percent=O progresso da fatura precisa estar em 100%% para que possa ser exibida em PDF +AlreadyPaid=Já está pago +AlreadyPaidBack=Já está estornado +Abandoned=Abandonado +RemainderToPay=Restante para pagar +RemainderToTake=Restante para pegar +RemainderToPayBack=Valor restante a reembolsar +Rest=Pedente +AmountExpected=Quantidade reivindicada +ExcessReceived=Excesso recebido +EscompteOffered=Desconto oferecido (pagamento antes do prazo) +SendBillRef=Enviar fatura %s +SendReminderBillRef=Enviar fatura %s (restante) +NoDraftBills=Nenhum rascunho de faturas +NoOtherDraftBills=Nenhum outro rascunho de faturas +NoDraftInvoices=Nenhum rascunho de faturas +RefBill=Ref. de fatura +ToBill=Faturar +SendBillByMail=Enviar a fatura por e-mail +SendReminderBillByMail=Enviar o restante por e-mail +RelatedRecurringCustomerInvoices=Faturas recorrentes relacionadas ao cliente +MenuToValid=Validar +ClassifyBill=Classificar fatura +CustomerBillsUnpaid=Faturas de clientes não pagos +SetConditions=Definir condições de pagamento +SetMode=Definir tipo de pagamento +SetRevenuStamp=Definir o selo da receita +RepeatableInvoice=Fatura pré-definida +RepeatableInvoices=Faturas pré-definidas +Repeatable=Pré-definida +Repeatables=Pré-definidas +ChangeIntoRepeatableInvoice=Converter em pré-definida +CreateRepeatableInvoice=Criar fatura pré-definida +CreateFromRepeatableInvoice=Criar de fatura pré-definida +CustomersInvoicesAndInvoiceLines=Faturas do cliente e detalhes da fatura +CustomersInvoicesAndPayments=Faturas de cliente e pagamentos +ExportDataset_invoice_1=Faturas do cliente e detalhes da fatura +ExportDataset_invoice_2=Faturas de clientes e pagamentos +ProformaBill=Conta pro-forma: +Reductions=Reduções +AddDiscount=Criar desconto +EditGlobalDiscounts=Editar desconto fixo +ShowDiscount=Mostrar desconto +ShowReduc=Mostrar desconto +ShowSourceInvoice=Mostrar fatura de origem +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 a partir de depósito na fatura %s +AbsoluteDiscountUse=Esse tipo de crédito pode ser usado na fatura antes da validação +DiscountOfferedBy=Concedido por +BillAddress=Endereço de cobrança +IdSocialContribution=ID contribuição social +PaymentId=ID pagamento +PaymentRef=Ref. do pagamento +InvoiceId=ID fatura +InvoiceRef=Ref. fatura +InvoiceDateCreation=Data da criação da fatura +InvoiceStatus=Status da fatura +InvoiceNote=Nota de fatura +InvoicePaidCompletely=Pago completamente +InvoicePaidCompletelyHelp=Fatura que é paga completamente. Isso exclui faturas pagas parcialmente. Para obter uma lista de todas as faturas 'Fechadas' ou 'não Fechadas', prefira usar um filtro no status da fatura. +OrderBilled=Encomenda faturada +DonationPaid=Doação paga +RemoveDiscount=Remover desconto +WatermarkOnDraftBill=Marca d'água nos rascunhos de faturas (nada se vazio) +ConfirmCloneInvoice=Você tem certeza que deseja clonar esta fatura %s? +DescTaxAndDividendsArea=Esta área apresenta um resumo de todos os pagamentos feitos para despesas especiais. Apenas registros com pagamentos durante o ano fixo são incluídos aqui. +NbOfPayments=Nº. de pagamentos +SplitDiscount=Dividir desconto em dois +ConfirmSplitDiscount=Tem certeza de que deseja dividir este desconto de %s %s em dois descontos menores? +ConfirmRemoveDiscount=Você tem certeza que deseja remover este desconto? +RelatedSupplierInvoices=Faturas de fornecedores relacionadas +LatestRelatedBill=Últimas fatura correspondente +MergingPDFTool=Mesclando ferramenta PDF +AmountPaymentDistributedOnInvoice=Valor do pagamento distribuído na fatura +ListOfPreviousSituationInvoices=Lista de faturas na situação anterior +ListOfNextSituationInvoices=Lista das faturas na próxima situação +FrequencyPer_d=A cada %s dias +FrequencyPer_m=A cada %s meses +FrequencyPer_y=A cada %s anos +toolTipFrequency=Exemplos:
fixar 7, Day : dê uma nova fatura a cada 7 dias
Set 3, Month : dê uma nova fatura a cada 3 meses +NextDateToExecutionShort=Data da próxima geração. +DateLastGenerationShort=Data da última geração. +MaxPeriodNumber=Máx. número de geração de fatura +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 +GeneratedFromTemplate=Gerado a partir da fatura do modelo %s +WarningInvoiceDateInFuture=Atenção, a data da fatura é superior à data atual +GroupPaymentsByModOnReports=Agrupar pagamentos por modo nos relatórios +PaymentConditionShortRECEP=Após o recebimento +PaymentConditionRECEP=Após o recebimento +PaymentConditionShort30DENDMONTH=30 dias do fim do mês +PaymentCondition30DENDMONTH=Dentro de 30 dias após o fim do mês +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_ORDER=No pedido +PaymentConditionPT_5050=50%% adiantado e 50%% na entrega +FixAmount=Valor fixo - 1 linha com o rótulo '%s' +VarAmount=Variavel valor (%% total) +PaymentTypePRE=Pedido com pagamento em Débito direto +PaymentTypeShortPRE=Pedido com pagamento por débito +PaymentTypeLIQ=Dinheiro +PaymentTypeShortLIQ=Dinheiro +PaymentTypeCB=Cartão de credito +PaymentTypeShortCB=Cartão de credito +PaymentTypeTIP=TIP (Documentos contra Pagamento) +PaymentTypeShortTIP=Pagamento TIP +PaymentTypeTRA=Cheque administrativo +PaymentTypeShortTRA=Minuta +PaymentTypeDC=Cartão de débito / crédito +BankDetails=Detalhes bancário +BankCode=Código bancário +BankAccountNumber=Número da conta +BankAccountNumberKey=Soma de verificação +Residence=Endereço +IBAN=Agencia +CustomerIBAN=IBAN do cliente +SupplierIBAN=IBAN do fornecedor +BICNumber=Código BIC/SWIFT +ExtraInfos=Informações extras +RegulatedOn=Regulamentado em +ChequeNumber=Nº do Cheque +ChequeOrTransferNumber=Nº do cheque/transferência +ChequeBordereau=Verificar agendamento +NetToBePaid=Líquido a ser pago +PhoneNumber=Telefone +FullPhoneNumber=Telefone +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=ID do IVA intracomunitário +PaymentByChequeOrderedTo=Cheque pagamentos (incluindo impostos) são pagas para %s, enviar para +PaymentByChequeOrderedToShort=Cheque pagamentos (incl. Imposto) são pagas para +SendTo=Enviar para +VATIsNotUsedForInvoice=* Não aplicável IVA art-293B de CGI +LawApplicationPart1=Pela aplicação da lei 80.335 de 12/05/80 +LawApplicationPart2=os bens permanece propriedade de +LawApplicationPart4=preço dele. +LimitedLiabilityCompanyCapital=SARL com capital de +UseDiscount=Usar desconto +UseCredit=Usar crédito +UseCreditNoteInInvoicePayment=Reduzir o valor a ser pago com esse crédito +MenuChequeDeposits=Verificar depósitos +MenuCheques=Cheques +MenuChequesReceipts=Verificar recibos +NewChequeDeposit=Novo depósito +ChequesReceipts=Verificar recibos +ChequesArea=Verifique a área de depósitos +ChequeDeposits=Verificar depósitos +DepositId=Depósito Id +CreditNoteConvertedIntoDiscount=Este %s foi convertido em %s +UsBillingContactAsIncoiveRecipientIfExist=Usar contato/endereço com o tipo 'contato de cobrança' em vez de endereço de terceiros como destinatário para faturas +ShowUnpaidAll=Mostras todas as faturas não pagas +ShowUnpaidLateOnly=Mostrar todas as faturas atrasadas não pagas +PaymentInvoiceRef=Pagamento de fatura %s +ValidateInvoice=validar fatura +Cash=DinheiroCash +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 +ClosePaidInvoicesAutomatically=Classifique automaticamente todas as faturas padrão, adiantadas ou de reposição como "Pagas" quando o pagamento for feito inteiramente. +ClosePaidCreditNotesAutomatically=Classifique automaticamente todas as notas de crédito como "Pagas" quando o reembolso for totalmente realizado. +ClosePaidContributionsAutomatically=Classifique automaticamente todas as contribuições sociais ou fiscais como "Pagas" quando o pagamento for feito inteiramente. +AllCompletelyPayedInvoiceWillBeClosed=Todas as faturas sem saldo a pagar serão fechadas automaticamente com o status "Pago". +ToMakePaymentBack=Pagar de volta +NoteListOfYourUnpaidInvoices=Nota: Essa lista contém faturas de terceiros que você está a ligado como representante de vendas. +RevenueStamp=Carimbo de imposto +YouMustCreateInvoiceFromThird=Esta opção só está disponível ao criar uma fatura na guia "Cliente" de terceiros +YouMustCreateInvoiceFromSupplierThird=Essa opção só está disponível ao criar uma fatura na guia "Fornecedor" de terceiros +YouMustCreateStandardInvoiceFirstDesc=Você deve criar antes uma fatura padrão e convertê-la em um "tema" para criar um novo tema de fatura +PDFCrabeDescription=Modelo de fatura PDF Crabe. Um modelo de fatura completo (implementação antiga do modelo Sponge) +PDFCrevetteDescription=Tema Crevette para fatura em PDF. Um tema completo para a situação das faturas +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. +EarlyClosingReason=Motivo de fechamento antecipado +EarlyClosingComment=Nota de fechamento antecipado +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 +TypeContact_facture_external_SERVICE=Contato de serviço de cliente +TypeContact_invoice_supplier_internal_SALESREPFOLL=Fatura de fornecedor subsequente representativa +TypeContact_invoice_supplier_external_BILLING=Contato da fatura do fornecedor +TypeContact_invoice_supplier_external_SHIPPING=Contato de remessa do fornecedor +InvoiceFirstSituationAsk=Primeira situação da fatura +InvoiceFirstSituationDesc=A situação faturas 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 +PDFInvoiceSituation=Situação da fatura +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 +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. +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 +PDFCrevetteSituationNumber=Situação Nº %s +PDFCrevetteSituationInvoiceLineDecompte=Situação da fatura - CONTAR +PDFCrevetteSituationInvoiceTitle=Situação da fatura +PDFCrevetteSituationInvoiceLine=Situação N°. %s: Inv. N°. %s em %s +invoiceLineProgressError=A linha de progresso da fatura não pode ser maior ou igual à próxima linha da fatura +updatePriceNextInvoiceErrorUpdateline=Erro: atualize o preço na linha da fatura: %s +ToCreateARecurringInvoice=Para criar uma fatura recorrente para este contrato, crie primeiro este rascunho de fatura, converta-a em um tema de fatura e defina então a frequência de geração das próximas faturas. +ToCreateARecurringInvoiceGene=Para gerar as futuras faturas regular e manualmente, siga para o menu %s - %s - %s. +ToCreateARecurringInvoiceGeneAuto=Se você precisar que essas faturas sejam geradas automaticamente, peça ao seu administrador para ativar e configurar o módulo %s. Note que ambos os métodos (manual e automático) podem ser usados juntos sem risco de duplicação. +DeleteRepeatableInvoice=Excluir tema de fatura +ConfirmDeleteRepeatableInvoice=Você tem certeza que deseja excluir o tema de fatura? +BillCreated=%s fatura (s) gerada (s) +StatusOfGeneratedDocuments=Status da geração de documentos +DoNotGenerateDoc=Não gere arquivo de documento +BILL_DELETEInDolibarr=Fatura excluída +BILL_SUPPLIER_DELETEInDolibarr=Fatura de fornecedor excluída +UnitPriceXQtyLessDiscount=Preço unitário x Qtd. - Desconto +CustomersInvoicesArea=Área de cobrança do cliente +SupplierInvoicesArea=Área de cobrança do cliente +SituationTotalRayToRest=Restante a pagar sem imposto diff --git a/htdocs/langs/pt_MZ/blockedlog.lang b/htdocs/langs/pt_MZ/blockedlog.lang new file mode 100644 index 00000000000..68b870cf136 --- /dev/null +++ b/htdocs/langs/pt_MZ/blockedlog.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - blockedlog +BlockedLog=Logs nao modificaveis +BlockedLogDesc=Este módulo rastreia alguns eventos em um log inalterável (que você não pode modificar uma vez gravado) em uma cadeia de blocos, em tempo real. Este módulo oferece compatibilidade com os requisitos das leis de alguns países (como a França com a lei Finance 2016 - Norme NF525). +Fingerprints=Eventos e impressoes digitais arquivados +FingerprintsDesc=Esta é a ferramenta para procurar ou extrair os logs inalteráveis. Logs inalteráveis são gerados e arquivados localmente em uma tabela dedicada, em tempo real, quando você registra um evento de negócios. Você pode usar essa ferramenta para exportar esse arquivo e salvá-lo em um suporte externo (alguns países, como a França, pedem que você faça isso todos os anos). Note que, não há nenhum recurso para limpar este log e todas as mudanças tentadas ser feitas diretamente neste log (por um hacker, por exemplo) serão reportadas com uma impressão digital não válida. Se você realmente precisar limpar essa tabela porque usou seu aplicativo para fins de demonstração / teste e deseja limpar seus dados para iniciar sua produção, peça ao seu revendedor ou integrador para redefinir seu banco de dados (todos os seus dados serão removidos). +CompanyInitialKey=Chave inicial da empresa (hash do bloco genesis) +BrowseBlockedLog=Logs nao modificaveis +ShowAllFingerPrintsMightBeTooLong=Mostrar todos os Logs Arquivados (pode ser demorado) +ShowAllFingerPrintsErrorsMightBeTooLong=Mostrar todos os arquivos de log inválidos (pode demorar) +DownloadBlockChain=Baixar impressoes digitais +KoCheckFingerprintValidity=A entrada de registro arquivada não é válida. Isso significa que alguém (um hacker?) Modificou alguns dados deste registro depois que ele foi gravado, ou apagou o registro arquivado anterior (verifique se a linha com o anterior # existe) ou modificou a soma de verificação do registro anterior. +OkCheckFingerprintValidity=O registro de log arquivado é válido. Os dados nesta linha não foram modificados e a entrada segue a anterior. +OkCheckFingerprintValidityButChainIsKo=O log arquivado parece válido em comparação com o anterior, mas a cadeia foi previamente corrompida. +AddedByAuthority=Salvo na autoridade remota +ShowDetails=Mostrar detalhes salvos +logPAYMENT_VARIOUS_CREATE=Pagamento (não atribuído a uma fatura) criado +logPAYMENT_VARIOUS_MODIFY=Pagamento (não atribuído a uma fatura) modificado +logPAYMENT_VARIOUS_DELETE=Pagamento (não atribuído a uma fatura) exclusão lógica +logBILL_VALIDATE=Fatura de cliente confirmada +logBILL_SENTBYMAIL=Fatura do cliente enviada por email +logCASHCONTROL_VALIDATE=Registro de fechamento de caixa +Fingerprint=Impressao digial +logDOC_PREVIEW=Pré -visualização de um documento validado para imprimir ou baixar +DataOfArchivedEvent=Dados completos do evento arquivado +ImpossibleToReloadObject=Objeto original (tipo %s, id %s) não vinculado (consulte a coluna 'Dados completos' para obter dados salvos inalterados) +BlockedLogActivatedBecauseRequiredByYourCountryLegislation=O módulo Logs Inalteráveis ​​foi ativado por causa da legislação do seu país. A desativação deste módulo pode invalidar quaisquer transações futuras com relação à lei e ao uso de software legal, já que elas não podem ser validadas por uma auditoria fiscal. +BlockedLogDisableNotAllowedForCountry=Lista de países onde o uso deste módulo é obrigatório (apenas para evitar desabilitar o módulo por erro, se o seu país estiver nesta lista, desabilitar o módulo não é possível sem primeiro editar esta lista. Note também que habilitar / desabilitar este módulo irá manter uma faixa no log inalterável). +OnlyNonValid=Nao valido +RestrictYearToExport=Limitar mes / ano a se exportar diff --git a/htdocs/langs/pt_MZ/bookmarks.lang b/htdocs/langs/pt_MZ/bookmarks.lang new file mode 100644 index 00000000000..89de31ef04f --- /dev/null +++ b/htdocs/langs/pt_MZ/bookmarks.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - bookmarks +AddThisPageToBookmarks=Adicione a página atual aos marcadores +ListOfBookmarks=Lista de marcadores +OpenANewWindow=Abra uma nova aba +ReplaceWindow=Substituir guia atual +BookmarkTargetReplaceWindowShort=Guia atual +BehaviourOnClick=Comportamento quando a URL de marcador é selecionada +SetHereATitleForLink=Definir um nome para o marcador +ChooseIfANewWindowMustBeOpenedOnClickOnBookmark=Escolha se a página vinculada deve abrir na guia atual ou em uma nova guia +BookmarksManagement=Gestor de marcadores +BookmarksMenuShortCut=Ctrl + Shift + M diff --git a/htdocs/langs/pt_MZ/boxes.lang b/htdocs/langs/pt_MZ/boxes.lang new file mode 100644 index 00000000000..b2b9318dd4d --- /dev/null +++ b/htdocs/langs/pt_MZ/boxes.lang @@ -0,0 +1,98 @@ +# Dolibarr language file - Source file is en_US - boxes +BoxDolibarrStateBoard=Estatísticas sobre os principais objetos de negócios no banco de dados +BoxLoginInformation=Informações de Login +BoxLastRssInfos=Informação de RSS +BoxLastProducts=Últimos %s Produtos/Serviços +BoxProductsAlertStock=Alertas de estoque para produtos +BoxLastProductsInContract=Últimos %s produtos/serviços contratados +BoxLastSupplierBills=Últimas faturas de fornecedores +BoxLastCustomerBills=Faturas mais recentes do cliente +BoxOldestUnpaidSupplierBills=Faturas mais antigas de fornecedores não pagas +BoxLastProposals=Últimas propostas comerciais +BoxLastProspects=Últimos prospectos de cliente modificados +BoxLastCustomerOrders=Últimas encomendas +BoxLastContacts=Últimos contatos/endereços +BoxLastModifiedMembers=Últimos membros modificados +BoxLastMembersSubscriptions=Últimas inscrições de membros +BoxCurrentAccounts=Saldo das contas ativas +BoxTitleMemberNextBirthdays=Aniversários deste mês (membros) +BoxTitleMembersSubscriptionsByYear=Assinaturas de membros por ano +BoxTitleLastRssInfos=Últimas %s novidades de %s +BoxTitleLastProducts=Produtos/Serviços: %s modificado +BoxTitleProductsAlertStock=Produtos: alerta de estoque +BoxTitleLastSuppliers=Últimos %s fornecedores registrados +BoxTitleLastModifiedSuppliers=Fornecedores: último %s modificado +BoxTitleLastModifiedCustomers=Clientes: último %s modificado +BoxTitleLastCustomersOrProspects=Últimos %s clientes ou prospectos de cliente +BoxTitleLastCustomerBills=Últimas %s faturas de cliente modificadas mais recentes +BoxTitleLastSupplierBills=Últimas %s faturas de fornecedor modificadas mais recentes +BoxTitleLastModifiedProspects=Perspectivas: último %s modificado +BoxTitleOldestUnpaidCustomerBills=Faturas do cliente: o mais antigo %s não pago +BoxTitleOldestUnpaidSupplierBills=Faturas de fornecedores: %smais antigas não pagas +BoxTitleCurrentAccounts=Contas abertas: saldos +BoxTitleSupplierOrdersAwaitingReception=Pedidos de fornecedores aguardando recepção +BoxTitleLastModifiedContacts=Contatos/Endereços: último %s modificado +BoxMyLastBookmarks=Marcadores: mais recente %s +BoxOldestExpiredServices=Mais antigos serviços ativos expirados +BoxLastExpiredServices=Ultimo %s dos contatos com serviço vencido ativo +BoxTitleLastContracts=Contratos %s mais recentes que foram modificados +BoxTitleLastModifiedDonations=Doações mais recentes %s que foram modificadas +BoxTitleLastModifiedExpenses=Relatórios de despesas %s mais recentes que foram modificados +BoxTitleLatestModifiedBoms=Últimos BOMs %s que foram modificados +BoxTitleLatestModifiedMos=Pedidos de fabricação %s mais recentes que foram modificados +BoxTitleLastOutstandingBillReached=Clientes com máximo pendente excedido +BoxGlobalActivity=Atividade global (faturas, propostas, pedidos) +BoxScheduledJobs=Tarefas agendadas +BoxTitleFunnelOfProspection=Funil de lead +FailedToRefreshDataInfoNotUpToDate=Falha ao atualizar o fluxo de RSS. Data de atualização mais recente com êxito: %s +LastRefreshDate=Ultima data atualizacao +NoRecordedBookmarks=Nenhum marcador definido. +NoRecordedContacts=Nenhum contato registrado +NoActionsToDo=Nenhuma ação para fazer +NoRecordedProposals=Nenhum possível cliente registrado +NoRecordedInvoices=Nenhuma nota fiscal registrada +NoUnpaidCustomerBills=Não há notas fiscais de clientes não pagas +NoUnpaidSupplierBills=Nenhuma fatura de fornecedor não paga +NoRecordedProducts=Nenhum registro de produtos/serviços +NoRecordedProspects=Nenhum registro de possíveis clientes +NoContractedProducts=Nenhum produtos/serviços contratados +NoRecordedContracts=Nenhum registro de contratos +NoRecordedInterventions=Nenhum registro de intervenções +BoxLatestSupplierOrdersAwaitingReception=Últimos pedidos (com uma recepção pendente) +BoxCustomersInvoicesPerMonth=Faturas do cliente por mês +BoxSuppliersInvoicesPerMonth=Faturas de fornecedores por mês +BoxCustomersOrdersPerMonth=Pedidos de vendas por mês +BoxSuppliersOrdersPerMonth=Ordens do fornecedor por mês +NoTooLowStockProducts=Nenhum produto está sob o limite de estoque baixo +BoxProductDistribution=Distribuição de Produtos / Serviços +ForObject=Em %s +BoxTitleLastModifiedSupplierBills=Faturas de Fornecedores: últimos%s modificadas +BoxTitleLatestModifiedSupplierOrders=Ordens do Vendedor: último %s modificado +BoxTitleLastModifiedCustomerBills=Faturas do cliente: último %s modificado +BoxTitleLastModifiedCustomerOrders=Pedidos de Vendas: último %s modificado +BoxTitleLastModifiedPropals=Últimas %s propostas modificadas +BoxTitleLatestModifiedJobPositions=Últimos cargos modificados %s +BoxTitleLatestModifiedCandidatures=Aplicativos de trabalho modificados %s mais recentes +ForCustomersInvoices=Faturas de clientes +ForCustomersOrders=Pedidos de clientes +LastXMonthRolling=Ultima %s mensal +ChooseBoxToAdd=Adicionar widget para sua area de notificacoes +BoxAdded=A ferramenta foi adicionada no seu painel +BoxTitleUserBirthdaysOfMonth=Aniversários deste mês (usuários) +BoxLastManualEntries=Registro mais recente na contabilidade inserido manualmente ou sem documento de origem +BoxTitleLastManualEntries=%s último registro inserido manualmente ou sem documento de origem +NoRecordedManualEntries=Nenhuma entrada manual registrada na contabilidade +BoxSuspenseAccount=Operação de contabilidade com conta suspensa +BoxTitleSuspenseAccount=Número de linhas não alocadas +NumberOfLinesInSuspenseAccount=Número de linha na conta suspensa +SuspenseAccountNotDefined=A conta suspensa não está definida +BoxLastCustomerShipments=Últimos envios de clientes +BoxTitleLastCustomerShipments=%s remessas de clientes mais recentes +NoRecordedShipments=Nenhuma remessa de cliente registrada +BoxCustomersOutstandingBillReached=Clientes com limite pendente atingido +UsersHome=Usuários e grupos domésticos +MembersHome=Sócio da casa +ThirdpartiesHome=Terceiros domésticos +TicketsHome=Início Tickets +AccountancyHome=Início contabilidade +ValidatedProjects=Projetos validados diff --git a/htdocs/langs/pt_MZ/cashdesk.lang b/htdocs/langs/pt_MZ/cashdesk.lang new file mode 100644 index 00000000000..ba8dd6ccdde --- /dev/null +++ b/htdocs/langs/pt_MZ/cashdesk.lang @@ -0,0 +1,92 @@ +# Dolibarr language file - Source file is en_US - cashdesk +CashdeskShowServices=Serviços de venda +CashDeskStock=Estoque +CashDeskOn=ligar +NewSell=Nova venda +AddThisArticle=Adicionar esse artigo +RestartSelling=Voltar na venda +SellFinished=Venda completada +PrintTicket=Imprimir tíquete +SendTicket=Enviar ticket +TotalTicket=Total do tíquite +NoVAT=Nenhum IVA para essa venda +Change=Excesso recebido +ShowCompany=Mostar empresa +DeleteArticle=Clique para remover esse artigo +FilterRefOrLabelOrBC=Procurar (Ref/Rótulo) +DolibarrReceiptPrinter=Impressão de Recibo Dolibarr +PointOfSale=Ponto de vendas +PointOfSaleShort=PDV +CloseBill=Fechar fatura +TakeposConnectorNecesary='TakePOS Connector' é requerido +Receipt=Recibo +Header=Cabeçalho +Footer=Rodapé +AmountAtEndOfPeriod=Montante no final do período (dia, mês ou ano) +TheoricalAmount=Quantidade teórica +RealAmount=Quantidade real +NbOfInvoices=Núm. de faturas +Paymentnumpad=Tipo de Pad para inserir pagamento +Numberspad=Números de Pad +BillsCoinsPad=Almofada de moedas e notas +DolistorePosCategory=Módulos TakePOS e outras soluções de PDV para Dolibarr +TakeposNeedsCategories=TakePOS precisa de pelo menos uma categoria de produto para funcionar +TakeposNeedsAtLeastOnSubCategoryIntoParentCategory=TakePOS precisa de pelo menos 1 categoria de produto na categoria %s para funcionar +CashDeskBankAccountFor=Conta padrão a ser usada para pagamentos em +NoPaimementModesDefined=Nenhum modo de embalagem definido na configuração do TakePOS +TicketVatGrouped=Agrupar IVA por taxa em tickets | recibos +AutoPrintTickets=Imprimir automaticamente tickets | recibos +PrintCustomerOnReceipts=Imprimir cliente em tickets | recibos +EnableBarOrRestaurantFeatures=Ativar recursos para Bar ou Restaurante +ConfirmDeletionOfThisPOSSale=Você confirma a exclusão desta venda atual? +ConfirmDiscardOfThisPOSSale=Deseja descartar esta venda atual? +ValidateAndClose=Validar e fechar +NumberOfTerminals=Número de terminais +TerminalSelect=Selecione o terminal que você deseja usar: +POSTicket=PDV Ticket +POSTerminal=Terminal PDV +POSModule=Módulo PDV +BasicPhoneLayout=Usar layout básico para telefones +SetupOfTerminalNotComplete=A configuração do terminal 1%s não está concluída +DirectPayment=Pagamento direto +DirectPaymentButton=Adicionar um botão "Pagamento direto em dinheiro" +InvoiceIsAlreadyValidated=A fatura já está validada +NoLinesToBill=Nenhuma linha para cobrança +CustomReceipt=Recibo personalizado +ReceiptName=Nome do recibo +SupplementCategory=Categoria de suplemento +ColorTheme=Tema de cores +Colorful=Colorido +HeadBar=Barra principal +SortProductField=Campo para classificação de produtos +BrowserMethodDescription=Impressão de recibo simples e fácil. Apenas alguns parâmetros para configurar o recebimento. \nImprimir via navegador. +TakeposConnectorMethodDescription=Módulo externo com recursos extras. Possibilidade de imprimir a partir da nuvem. +PrintMethod=Método de impressão +ByTerminal=Pelo terminal +TakeposNumpadUsePaymentIcon=Use o ícone em vez do texto nos botões de pagamento do teclado numérico +CashDeskRefNumberingModules=Módulo de numeração para vendas PDV +CashDeskGenericMaskCodes6 =
A tag {TN} é usada para adicionar o número do terminal +TakeposGroupSameProduct=Agrupe as mesmas linhas de produtos +StartAParallelSale=Iniciar uma nova venda paralela +SaleStartedAt=Venda iniciada às %s +CashReport=Relatório de caixa +MainPrinterToUse=Impressora principal a ser usada +OrderPrinterToUse=Solicite impressora a ser usada +MainTemplateToUse=Modelo principal a ser usado +OrderTemplateToUse=Modelo de pedido a ser usado +BarRestaurant=Bar Restaurante +AutoOrder=Encomendado pelo próprio cliente +CustomerMenu=Menu do cliente +ScanToMenu=Digitalize o código QR para ver o menu +ScanToOrder=Digitalize o código QR para fazer o pedido +Appearance=Aparência +HideCategoryImages=Ocultar imagens da categoria +HideProductImages=Ocultar imagens do produto +NumberOfLinesToShow=Número de linhas de imagens a mostrar +DefineTablePlan=Definir plano de tabelas +GiftReceiptButton=Adicionar um botão "Recibo para presente" +GiftReceipt=Recibo de presente +ModuleReceiptPrinterMustBeEnabled=A impressora de recibos do módulo deve ter sido habilitada primeiro +AllowDelayedPayment=Permitir pagamento atrasado +PrintPaymentMethodOnReceipts=Imprimir forma de pagamento em tickets | recibos +WeighingScale=Balança diff --git a/htdocs/langs/pt_MZ/categories.lang b/htdocs/langs/pt_MZ/categories.lang new file mode 100644 index 00000000000..90fd95922d2 --- /dev/null +++ b/htdocs/langs/pt_MZ/categories.lang @@ -0,0 +1,90 @@ +# Dolibarr language file - Source file is en_US - categories +Rubrique=Tag/Categoria +Rubriques=Tags/Categorias +RubriquesTransactions=Tags/Categorias de transações +categories=tags/categorias +NoCategoryYet=Nenhuma categoria deste tipo foi criada +In=Em +CategoriesArea=Área Tags / Categorias +ProductsCategoriesArea=Área de categorias de produtos e serviços +SuppliersCategoriesArea=Área de categorias de fornecedores +CustomersCategoriesArea=Área de categorias do cliente +MembersCategoriesArea=Área de categorias de membros +ContactsCategoriesArea=Área de categorias de contatos/endereços +AccountsCategoriesArea=Área de categorias de bancos +ProjectsCategoriesArea=Área de categorias de projetos +UsersCategoriesArea=Área de categorias de usuários +CatList=Lista de tags/categorias +CatListAll=Lista tags / categorias (todos os tipos) +NewCategory=Nova tag/categoria +ModifCat=Modificar tag/categoria +CatCreated=Tag/categoria criada +CreateCat=Criar tag/categoria +CreateThisCat=Criar esta tag/categoria +NoSubCat=Nenhuma 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 +MemberIsInCategories=Esse membro está vinculado a seguintes membros tags / categorias +ContactIsInCategories=Este contato é ligado à sequência de contatos tags / categorias +ProductHasNoCategory=Este produto / serviço não está em nenhuma tags / categorias +CompanyHasNoCategory=Este terceiro nao tem nenhuma tag/categoria +MemberHasNoCategory=Este membro não está em nenhum tags / categorias +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 +ConfirmDeleteCategory=Tem certeza que quer deleitar esta tag/categoria? +NoCategoriesDefined=Nenhuma tag / categoria definida +CustomersCategoryShort=Clientes tag / categoria +ProductsCategoryShort=Produtos tag / categoria +MembersCategoryShort=Membros tag / categoria +CustomersCategoriesShort=Clientes tags / categorias +ProspectsCategoriesShort=Tag/categoria Prospecção +CustomersProspectsCategoriesShort=Categorias de cliente deste terceiro +ProductsCategoriesShort=Produtos tags / categorias +MembersCategoriesShort=Tag / categorias de Membros +ContactCategoriesShort=Contatos tags / categorias +AccountsCategoriesShort=Tags/categorias Contas +ProjectsCategoriesShort=Projetos tags/categorias +UsersCategoriesShort=Tags / categorias de usuários +StockCategoriesShort=Tags / categorias de armazém +ThisCategoryHasNoItems=Esta categoria não contém nenhum item. +CategId=ID Tag / categoria +ParentCategory=Tag / categoria principal +ParentCategoryLabel=Rótulo tag / categoria principal +CatSupList=Lista tags / categorias de fornecedores +CatCusList=Lista de clientes / clientes potenciais / categorias +CatProdList=Lista de produtos tags / categorias +CatMemberList=Lista de membros tags / categorias +CatContactList=Lista tags / categorias de contatos +CatProjectsList=Lista tags / categorias de projetos +CatUsersList=Lista tags / categorias de usuários +CatSupLinks=Links entre fornecedores e tags / categorias +CatCusLinks=Relação/links entre clientes / perspectivas e tags / categorias +CatContactsLinks=Links entre contatos / endereços e tags / categorias +CatProdLinks=Relação/links entre produtos / serviços e tags / categorias +CatMembersLinks=Ligações entre os membros e tags / categorias +CatProjectsLinks=Links entre projetos e tags/categorias +CatUsersLinks=Links entre usuários e tags / categorias +ExtraFieldsCategories=atributos complementares +CategoriesSetup=Configuração Tags / categorias +CategorieRecursiv=Fazer a ligação com os pais tag/categoria automaticamente +CategorieRecursivHelp=Se a opção estiver ativada, quando você adicionar um produto a uma subcategoria, o produto também será adicionado à categoria pai. +AddProductServiceIntoCategory=Adicione o seguinte produto / serviço +AddCustomerIntoCategory=Atribuir categoria ao cliente +AddSupplierIntoCategory=Atribuir categoria ao fornecedor +ShowCategory=Mostrar tag / categoria +ChooseCategory=Escolher categoria +StocksCategoriesArea=Categorias de Armazém +ActionCommCategoriesArea=Categorias de Eventos +WebsitePagesCategoriesArea=Categorias de contêiner de página +KnowledgemanagementsCategoriesArea=Categorias de artigos KM +UseOrOperatorForCategories=Use o operador 'OR' para categorias diff --git a/htdocs/langs/pt_MZ/commercial.lang b/htdocs/langs/pt_MZ/commercial.lang new file mode 100644 index 00000000000..493791da89d --- /dev/null +++ b/htdocs/langs/pt_MZ/commercial.lang @@ -0,0 +1,62 @@ +# Dolibarr language file - Source file is en_US - commercial +Commercial=Comercial +CommercialArea=Área comercial +Prospects=Prospectos de cliente +DeleteAction=Excluir um evento +AddAction=Adicionar evento +AddAnAction=Adicionar um evento +AddActionRendezVous=Criar um evento de reunião +ConfirmDeleteAction=Tem certeza que quer deleitaar este evento ? +CardAction=Ficha de evento +ActionOnContact=Contato relacionado +ShowTask=Mostrar tarefa +ShowAction=Mostrar evento +ActionsReport=Relatório de eventos +SaleRepresentativesOfThirdParty=Representantes de vendas de terceiros +SalesRepresentative=Representante comercial +SalesRepresentatives=Representantes comerciais +SalesRepresentativeFollowUp=Representante comercial (seguindo) +SalesRepresentativeSignature=Representante comercial (assinatura) +NoSalesRepresentativeAffected=Nenhum particular foi designado para representante comercial +ShowCustomer=Mostrar cliente +ShowProspect=Mostrar prospecto de cliente +ListOfProspects=Lista de prospectos de cliente +ListOfCustomers=Lista de clientes +LastDoneTasks=Últimas %s ações completadas +LastActionsToDo=%s ações não concluídas mais antigas +DoneAndToDoActions=Concluída e para fazer eventos +DoneActions=Eventos concluídos +ToDoActions=Eventos não concluídos +SendPropalRef=Enviar orçamento %s +SendOrderRef=Enviar pedido %s +StatusNotApplicable=Não aplicavel +StatusActionToDo=Para fazer +StatusActionDone=Concluído +StatusActionInProcess=Em andamento +TasksHistoryForThisContact=Eventos para esse contato +LastProspectNeverContacted=Nunca contactado +LastProspectContactInProcess=Contato em andamento +LastProspectContactDone=Contato feito +ActionAffectedTo=Evento atribuído para +ActionDoneBy=Evento feito por +ActionAC_TEL=Chamada telefônica +ActionAC_PROP=Enviar proposta por correio +ActionAC_EMAIL=Enviar e-mail +ActionAC_INT=Intervenção no lugar +ActionAC_FAC=Enviar fatura de cliente por correio +ActionAC_REL=Enviar fatura de cliente por correio (lembrete) +ActionAC_EMAILING=Enviar emails massivos +ActionAC_COM=Envia pedido de venda por email +ActionAC_SHIP=Enviar frete por correio +ActionAC_SUP_ORD=Enviar pedido por correio +ActionAC_SUP_INV=Enviar fatura do fornecedor por email +ActionAC_OTH=Outros +ActionAC_OTH_AUTOShort=Outros +Stats=Estatísticas de vendas +StatusProsp=Status de prospecto de cliente +DraftPropals=Minutas de orçamentos +ToOfferALinkForOnlineSignature=Link para assinatura on-line +WelcomeOnOnlineSignaturePage=Bem-vindo à página para aceitar propostas comerciais de %s +ThisScreenAllowsYouToSignDocFrom=Esta tela permite que você aceite e assine ou recuse um orçamento / proposta comercial +SignatureProposalRef=Assinatura da cotação / proposta comercial %s +FeatureOnlineSignDisabled=Recurso para assinatura online desabilitado ou documento gerado antes que o recurso fosse ativado diff --git a/htdocs/langs/pt_MZ/companies.lang b/htdocs/langs/pt_MZ/companies.lang new file mode 100644 index 00000000000..4f29abde47f --- /dev/null +++ b/htdocs/langs/pt_MZ/companies.lang @@ -0,0 +1,273 @@ +# 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 +ConfirmDeleteCompany=Tem certeza de que deseja excluir esta empresa e todas as informações relacionadas? +DeleteContact=Excluir um contato/endereço +ConfirmDeleteContact=Tem certeza de que deseja excluir este contato e todas as informações relacionadas? +MenuNewProspect=Novo Provável Cliente +MenuNewPrivateIndividual=Novo particular +NewCompany=Nova Empresa (prospecto, cliente, fornecedor) +NewThirdParty=Novo Terceiro (provável cliente, cliente, fornecedor) +CreateDolibarrThirdPartySupplier=Crie um terceiro (fornecedor) +CreateThirdPartyOnly=Adicionar terceiro +CreateThirdPartyAndContact=Criar um terceiro + um contato interno +ProspectionArea=Área de prospecção +IdThirdParty=ID do terceiro +IdCompany=ID da empresa +IdContact=ID do contato +ThirdPartyAddress=Endereço do terceiro +ThirdPartyContact=Contato / endereço de terceiro +AliasNames=Nome de fantasia (nome comercial, marca registrada etc.) +AliasNameShort=Nome alternativo +CountryIsInEEC=País está dentro da Comunidade Econômica Européia +PriceFormatInCurrentLanguage=Formato de apresentação do preço na linguagem atual e tipo de moeda +ThirdPartyName=Nome do terceiro +ThirdPartyEmail=E-mail do terceiro +ThirdPartyProspects=Prospectos de cliente +ThirdPartyProspectsStats=Prospectos de cliente +ThirdPartyCustomersWithIdProf12=Clientes com %s ou %s +ThirdPartySuppliers=Vendedores +Individual=Pessoa física +ToCreateContactWithSameName=Irá automaticamente criar um contato/endereço com a mesma informação do terceiro. Na maioria dos casos, mesmo que o terceiro seja uma pessoa física, a criação de um único terceiro é suficiente. +ParentCompany=Matriz +Subsidiaries=Filiais +ReportByMonth=Relatório por mês +ReportByCustomers=Relatório por cliente +ReportByThirdparties=Relatório por terceiro +ReportByQuarter=Relatório por taxa +CivilityCode=Forma de tratamento +RegisteredOffice=Escritório registrado +Lastname=Sobrenome +Firstname=Primeiro nome +RefEmployee=Referência do funcionário +NationalRegistrationNumber=Número de registro nacional +PostOrFunction=Cargo +NatureOfContact=Natureza do Contato +Address=Endereço +State=Estado/Província +StateCode=Código do Estado / Cidade +StateShort=Status do Cadastro +Region=Região +Region-State=Região - Estado +CountryCode=Código do país +Call=Chamar +PhonePro=Telefone comercial +PhonePerso=Tel. particular +PhoneMobile=Celular +No_Email=Recusar e-mails em massa +Zip=CEP +Town=Município +Web=Website +DefaultLang=Idioma padrão +VATIsUsed=Imposto usado sobre vendas +VATIsUsedWhenSelling=Aqui se define se esse terceiro inclui ou não um imposto sobre vendas quando faz uma fatura para seus próprios clientes +VATIsNotUsed=O imposto sobre vendas não é usado +CopyAddressFromSoc=Copie o endereço do terceiro +ThirdpartyNotCustomerNotSupplierSoNoRef=Terceiros nem cliente nem fornecedor, não há objetos de referência disponíveis +ThirdpartyIsNeitherCustomerNorClientSoCannotHaveDiscounts=Não existem descontos nem do cliente, fornecedor ou terceiro +PaymentBankAccount=Pagamento conta bancária +OverAllOrders=Pedidos +OverAllSupplierProposals=Solicitações de preço +LocalTax1IsUsed=Utilizar segundo imposto +LocalTax1IsUsedES=É usado RE +LocalTax1IsNotUsedES=Não é usado RE +LocalTax2IsUsed=Utilizar terceiro imposto +LocalTax2IsUsedES=É usado IRPF +LocalTax2IsNotUsedES=Não é usado IRPF +WrongCustomerCode=Código de cliente inválido +WrongSupplierCode=Código do fornecedor inválido +CustomerCodeModel=Modelo de código de cliente +SupplierCodeModel=Modelo de código do fornecedor +ProfId1Short=ID prof. 1 +ProfId2Short=ID prof. 2 +ProfId3Short=ID prof. 3 +ProfId4Short=ID prof. 4 +ProfId5Short=ID prof. 5 +ProfId6Short=ID prof. 6 +ProfId1=ID profissional 1 +ProfId2=ID profissional 2 +ProfId3=ID profissional 3 +ProfId4=ID profissional 4 +ProfId5=ID profissional 5 +ProfId6=ID profissional 6 +ProfId1AT=Prof Id 1 (IVA) +ProfId2AT=Prof Id 2 (Inscrição Estadual) +ProfId3AT=Prof Id 3 (Inscrição Municipal) +ProfId1BE=Prof Id 1 (Número profissional) +ProfId4BR=CNPJ/CPF +ProfId1CH=Número UID +ProfId3CH=Prof Id 1 (Número federal) +ProfId4CH=Prof Id 2 (Número gravado comercial) +ProfId1CM=Id. prof. 1 (Registro Comercial) +ProfId2CM=Id. prof. 2 (nº de Contribuinte) +ProfId1DE=Prof Id 1 (IVA) +ProfId2DE=Prof Id 2 (Inscrição Estadual) +ProfId3DE=Prof Id 3 (Inscrição Municipal) +ProfId2ES=Prof Id 2 (Número de seguro social) +ProfId4ES=Prof Id 4 (Número do colegial) +ProfId1FR=SIREN +ProfId2FR=SIRET +ProfId3FR=NAF (Ex APE) +ProfId4FR=RCS/RM +ProfId1GB=Número do registro +ProfId4IN=ID prof. 4 +ProfId5IN=ID prof. 5 +ProfId1LU=Id. prof. 1 (R.C.S. Luxemburgo) +ProfId2LU=Id. prof. 2 (Permissão para negócios) +ProfId1PT=NIPC +ProfId2PT=Núm. Segurança Social +ProfId3PT=Num. Reg. Comercial +ProfId4PT=Conservatória +ProfId1TN=RC +ProfId2TN=Matrícula Fiscal +ProfId3TN=Código na Alfandega +ProfId4TN=CCC +ProfId1US=Id do Prof (FEIN) +ProfId2RO=Prof Id 2 (nº de registro) +ProfId3DZ=Numero do Contribuinte +ProfId4DZ=Numero de Identificação Social +VATIntra=ID do IVA +VATIntraShort=ID do IVA +VATIntraSyntaxIsValid=Sintaxe é válida +ProspectCustomer=Possível cliente / Cliente +CustomerRelativeDiscount=Desconto relativo do cliente +CustomerRelativeDiscountShort=Desconto relativo +CompanyHasRelativeDiscount=Esse cliente tem um desconto padrão de %s%% +CompanyHasNoRelativeDiscount=Esse cliente não tem desconto relativo por padrão +HasRelativeDiscountFromSupplier=Desconto padrão de %s%%deste fornecedor +HasNoRelativeDiscountFromSupplier=Não existe desconto padrão para este fornecedor +CompanyHasCreditNote=Esse cliente ainda tem notas de crédito por %s %s +HasNoAbsoluteDiscountFromSupplier=Não existe desconto de crédito desse fornecedor +HasAbsoluteDiscountFromSupplier=Existem descontos disponíveis (Notas de credito or pagamentos baixados) para %s%s deste fornecedor +HasDownPaymentOrCommercialDiscountFromSupplier=Existem descontos disponíveis(Comercial, pagamentos baixados) para %s%s deste fornecedor +HasCreditNoteFromSupplier=Existem notas de crédito %s %s deste fornecedor +CompanyHasNoAbsoluteDiscount=Esse cliente não tem desconto de crédito disponível +CustomerAbsoluteDiscountAllUsers=Descontos absolutos do cliente (concedidos por todos os usuários) +CustomerAbsoluteDiscountMy=Descontos absolutos do cliente (concedidos por você) +SupplierAbsoluteDiscountAllUsers=Descontos absolutos de fornecedores (inseridos por todos os usuários) +SupplierAbsoluteDiscountMy=Descontos absolutos de fornecedores (inseridos por você) +DiscountNone=Nenhum +AddContact=Adicionar contato +AddContactAddress=Adicionar contato/endereço +EditContact=Editar contato +EditContactAddress=Editar contato/endereço +Contact=Contato / Endereço +Contacts=Contatos/Endereços +ContactId=ID do contato +ContactsAddresses=Contatos/Endereços +NoContactDefinedForThirdParty=Nenhum contato foi definido para esse terceiro +NoContactDefined=Sem contato definido +DefaultContact=Contato/endereço padrão +ContactByDefaultFor=Endereço/contacto padrão para +AddThirdParty=Adicionar terceiro +DeleteACompany=Excluir empresa +PersonalInformations=Dados pessoais +AccountancyCode=Conta contábil +CustomerCode=Código de Cliente +SupplierCode=Código Fornecedor +CustomerCodeShort=Código de Cliente +SupplierCodeShort=Código Fornecedor +SupplierCodeDesc=Código do Fornecedor, exclusivo para todos os fornecedores +RequiredIfCustomer=Necessário se o terceiro for um cliente ou um possível cliente +RequiredIfSupplier=Obrigatório se terceiros são fornecedores +ProspectToContact=Prospecto de cliente a contactar +CompanyDeleted=A empresa "%s" foi excluída do banco de dados. +ListOfContacts=Lista de contatos/endereços +ListOfContactsAddresses=Lista de contatos/endereços +ShowContact=Contato - Endereço +ContactForOrders=Contato de pedidos +ContactForOrdersOrShipments=Contato do pedido ou da remessa +ContactForProposals=Contato de orçamentos +ContactForContracts=Contato de contratos +ContactForInvoices=Contato de faturas +NoContactForAnyOrder=Esse contato não é de nenhum pedido +NoContactForAnyOrderOrShipments=Este contato não é um contato para qualquer pedido ou remessa +NoContactForAnyProposal=Esse contato não é de nenhum orçamento +NoContactForAnyContract=Esse contato não é de nenhum contrato +NoContactForAnyInvoice=Esse contato não é de nenhuma fatura +NewContact=Novo contato +NewContactAddress=Novo contato / endereço +MyContacts=Meus contatos +CapitalOf=Capital de %s +EditCompany=Editar empresa +ThisUserIsNot=Este usuário não é um cliente em potencial, cliente ou fornecedor +VATIntraCheckDesc=O ID do IVA deve incluir o prefixo do país. O link %s usa o serviço europeu de verificação de IVA (VIES), que requer acesso à Internet do servidor Dolibarr. +ErrorVATCheckMS_UNAVAILABLE=Verificação não é possível. Verifique o serviço não é necessário por um membro de estado (%s). +NorProspectNorCustomer=Nem possivel cliente, nem cliente +JuridicalStatus=Tipo de entidade comercial +ProspectLevelShort=Pos. Cli. +ProspectLevel=Possível cliente +ContactPublic=Compartilhado +ContactVisibility=Visível +ContactOthers=Outros +OthersNotLinkedToThirdParty=Outros, não esta vinculado a terceiros +ProspectStatus=Status de possível cliente +PL_UNKNOWN=Desconhecido +PL_MEDIUM=Médio +TE_GROUP=Empresa de grande porte +TE_MEDIUM=Empresa de médio porte +TE_ADMIN=Governo +TE_SMALL=Empresa de pequeno porte +TE_RETAIL=Revendedor/Varejista +TE_WHOLE=Atacadista +TE_PRIVATE=Autônomo +TE_OTHER=Outros +StatusProspect1=A contactar +StatusProspect2=Contato em andamento +StatusProspect3=Contato feito +ChangeDoNotContact=Alterar status para 'Não contactar' +ChangeNeverContacted=Trocar status para 'Nunca entrar em contato' +ChangeToContact=Alterar status para 'A contactar' +ChangeContactInProcess=Trocar status para 'Contato em andamento' +ChangeContactDone=Trocar status para 'Contato feito' +ProspectsByStatus=Prospectos por status +NoParentCompany=Nenhum +ContactNotLinkedToCompany=Contato não esta vinculado a nenhum terceiro +NoDolibarrAccess=Sem acesso ao Dolibarr +ExportDataset_company_1=Terceiros(Companhias/fundações/pessoas físicas) e suas propriedades +ImportDataset_company_2=Contatos/Enderecos adicionais e atributos de terceiros +ImportDataset_company_4=Vendedores de terceiros (assinalar vendedores/usuários para empresas) +PriceLevelLabels=Etiquetas de nível de preço +DeliveryAddress=Endereço de entrega +AddAddress=Adicionar endereço +DeleteFile=Excluir arquivo +ConfirmDeleteFile=Você tem certeza que deseja deletar esse arquivo? +AllocateCommercial=Designado para representante comercial +Organization=Organização +FiscalMonthStart=Primeiro mês do ano fiscal +SocialNetworksInformation=Redes sociais +SocialNetworksFacebookURL=URL Facebook +SocialNetworksTwitterURL=URL Twitter +SocialNetworksLinkedinURL=URL LinkedIn +SocialNetworksInstagramURL=URL Instagram +SocialNetworksYoutubeURL=URL YouTube +SocialNetworksGithubURL=URL GitHub +YouMustAssignUserMailFirst=Você deve criar um e-mail para este usuário antes de poder adicionar uma notificação por e-mail. +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 Prováveis Clientes +LastModifiedThirdParties=Últimos %sTerceiros modificados +UniqueThirdParties=Número total de terceiros +ActivityCeased=Inativo +ThirdPartyIsClosed=O terceiro está fechado +CurrentOutstandingBill=Notas aberta correntes +OutstandingBill=Conta excelente +OutstandingBillReached=Máx. para dívida a ser alcançado +LeopardNumRefModelDesc=O código é livre. Esse código pode ser modificado a qualquer hora. +ManagingDirectors=Nome do Representante(CEO,Diretor,Presidente...) +MergeOriginThirdparty=Duplicar terceiros (terceiros que deseja excluir) +MergeThirdparties=Mesclar terceiros +ThirdpartiesMergeSuccess=Terceiros foram mesclados +SaleRepresentativeLogin=Login para o representante de vendas +SaleRepresentativeLastname=Sobrenome do representante de vendas +ErrorThirdpartiesMerge=Houve um erro ao excluir os terceiros. Por favor, verifique o log. As alterações foram revertidas. +NewCustomerSupplierCodeProposed=Código de cliente/fornecedor já em uso, sugerido o uso de um novo código +KeepEmptyIfGenericAddress=Mantenha este campo vazio se este endereço for um endereço genérico +PaymentTypeCustomer=Tipo de pagamento - Cliente +PaymentTermsCustomer=Termos de pagamento - Cliente +PaymentTypeSupplier=Tipo de pagamento - Fornecedor +PaymentTermsSupplier=Termos de pagamento - Fornecedor +PaymentTypeBoth=Tipo de Pagamento - Cliente e Fornecedor +MulticurrencyUsed=Uso de Multimoeda +CurrentOutstandingBillLate=Atual fatura pendente atrasada +BecarefullChangeThirdpartyBeforeAddProductToInvoice=Cuidado, dependendo das configurações de preço do produto, você deve trocar de fornecedor antes de adicionar o produto ao PDV. diff --git a/htdocs/langs/pt_MZ/compta.lang b/htdocs/langs/pt_MZ/compta.lang new file mode 100644 index 00000000000..55154a3b678 --- /dev/null +++ b/htdocs/langs/pt_MZ/compta.lang @@ -0,0 +1,174 @@ +# Dolibarr language file - Source file is en_US - compta +MenuFinancial=Faturamento | Forma de pagamento +TaxModuleSetupToModifyRules=Vá para configuração do módulo Impostos para modificar regras de cálculo +TaxModuleSetupToModifyRulesLT=Vá até Configuração >> Empresa para modificar as regras de cálculo +OptionMode=Opção de Administração Contabilidade +OptionModeTrue=Opção Rendimentos-Despesas +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) +VATReportBuildWithOptionDefinedInModule=Os valores aqui apresentados são calculados usando as regras definidas pela configuração do módulo Fiscal. +LTReportBuildWithOptionDefinedInModule=Valores mostrados aqui são calculados usando as regras definidas nas configurações da empresa. +Param=Configuração +RemainingAmountPayment=Pagamento da quantia restante: +Accountparent=Conta principal +Accountsparent=Conta principal +Income=Rendimentos +MenuReportInOut=Rendimentos/Despesas +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 +BalanceBefore=Balanço (antes) +Piece=Doc. contábil +AmountHTVATRealPaid=líquido pago +VATToPay=Vendas de impostos +VATToCollect=Compras fiscais +VATBalance=balanço de impostos +LT1Summary=Resumo da taxa 2 +LT2Summary=Resumo taxa 3 +LT1SummaryES=RE Balançete +LT2SummaryES=Saldo de IRPF +LT1SummaryIN=Balanço fiscal +LT2SummaryIN=Balanço Fiscal +LT1Paid=Taxa 2 pago +LT2Paid=Taxa 3 pago +LT1PaidES=RE Pago +LT2PaidES=IRPF pago +LT1PaidIN=CGST pago +LT2PaidIN=SGST pago +LT1Customer=2 vendas de taxas +LT1Supplier=Compra de taxas 2 compras +LT1CustomerES=RE vendas +LT1SupplierES=RE compras +LT1CustomerIN=CGST vendas +LT1SupplierIN=Compras do CGST +LT2Customer=Taxa 3 vendas +LT2Supplier=3 compras de taxas +LT2CustomerES=IRPF de vendas +LT2SupplierES=IRPF de compras +LT2CustomerIN=Vendas de SGST +LT2SupplierIN=Compras SGST +VATCollected=IVA recuperado +VATExpensesArea=Área para todos os pagamentos de IVA +SocialContribution=Contribuição fiscal ou social +SocialContributions=Encargos sociais e fiscais +SocialContributionsDeductibles=Contribuições fiscais ou sociais dedutíveis +SocialContributionsNondeductibles=Contribuições fiscais ou sociais não dedutíveis +DateOfSocialContribution=Data do imposto social ou fiscal +LabelContrib=Rótulo da contribuição +TypeContrib=Tipo de contribuição +MenuSpecialExpenses=Despesas especiais +MenuSocialContributions=Contribuições fiscais/sociais +MenuNewSocialContribution=Nova contribuição fiscal/social +NewSocialContribution=Nova contribuição fiscal/social +ContributionsToPay=Encargos sociais / fiscais para pagar +PaymentCustomerInvoice=Pagamento de fatura de cliente +PaymentSupplierInvoice=pagamento de fatura do fornecedor +PaymentSocialContribution=Pagamento de imposto social / fiscal +PaymentVat=Pagamento de IVA +ListOfSupplierPayments=Lista de pagamentos do fornecedor +DateStartPeriod=Período de início e data +DateEndPeriod=Período e data final +newLT1Payment=Novo pagamento da taxa 2 +newLT2Payment=Novo pagamento da taxa 3 +LT1Payment=Pagamento da taxa 2 +LT1Payments=Pagamentos da taxa 2 +LT2Payment=Pagamento da taxa 3 +LT2Payments=Pagamentos da taxa 3 +newLT1PaymentES=Novo RE pagamento +newLT2PaymentES=Novo pagamento de IRPF +LT1PaymentES=RE pagamento +LT1PaymentsES=RE pagamentos +LT2PaymentES=Pagamento de IRPF +LT2PaymentsES=Pagamentos de IRPF +VATPayment=Pagamento da taxa de venda +VATPayments=Pagamentos da taxa de venda +VATDeclarations=Declarações de IVA +VATDeclaration=Declaração de IVA +VATRefund=Reembolso da taxa sobre vendas +SocialContributionsPayments=Pagamentos de impostos sociais / fiscais +ShowVatPayment=Ver Pagamentos de IVA +TotalToPay=Total a pagar +CustomerAccountancyCode=Código contábil do cliente +SupplierAccountancyCode=Código contábil do fornecedor +CustomerAccountancyCodeShort=Cod. cont. cli. +SupplierAccountancyCodeShort=Cod. cont. forn. +AccountNumber=Número da conta +ByExpenseIncome=Por despesas & receitas +ByThirdParties=Por Fornecedor +CheckReceipt=Depósito de cheque +CheckReceiptShort=Depósito de cheque +LastCheckReceiptShort=Últimos %s recibos de cheque +NoWaitingChecks=Sem cheques a depositar. +NbOfCheques=Nº. de cheques +PaySocialContribution=Quitar um encargo fiscal/social +DeleteSocialContribution=Excluir um pagamento taxa social ou fiscal +ExportDataset_tax_1=Encargos fiscais e sociais e pagamentos +CalcModeVATDebt=Modo% S VAT compromisso da contabilidade% s. +CalcModeVATEngagement=Modo% SVAT sobre os rendimentos e as despesas% s. +CalcModeLT1=Modo %sRE nas faturas dos clientes - faturas dos fornecedores%s +CalcModeLT1Debt=Modo %sRE nas faturas dos clientes%s +CalcModeLT1Rec=Modo %sRE nas faturas dos fornecedores%s +CalcModeLT2=Modo %sIRPF nas faturas de clientes - fornecedores%s +CalcModeLT2Debt=Modo %sIRPF nas faturas de clientes%s +CalcModeLT2Rec=Modo %sIRPF nas faturas de fornecedores%s +AnnualSummaryDueDebtMode=Balanço de receitas e despesas, resumo anual +AnnualSummaryInputOutputMode=Balanço de receitas e despesas, resumo anual +AnnualByCompanies=Saldo de receitas e despesas, por grupos de conta predefinidos +AnnualByCompaniesDueDebtMode=Saldo de receitas e despesas, detalhe por grupos predefinidos, modo %sClaims-Debts%s disse Contabilidade de Compromisso . +AnnualByCompaniesInputOutputMode=Saldo de receitas e despesas, detalhe por grupos predefinidos, modo %sIncomes-Expenses%s chamada fluxo de caixa . +RulesAmountWithTaxIncluded=- Valores apresentados estão com todos os impostos incluídos +RulesCADue=- Inclui as faturas do cliente, pagas ou não. -
É baseado na data de cobrança dessas faturas.
+RulesCAIn=- Inclui todos os pagamentos efetivos de faturas recebidas de clientes.
- É baseado na data de pagamento dessas faturas
+RulesAmountOnInOutBookkeepingRecord=Inclui registro em seu Ledger com contas contábeis que tem o grupo "DESPESAS" ou "RENDIMENTO" +RulesResultBookkeepingPredefined=Inclui registro em seu Ledger com contas contábeis que tem o grupo "DESPESAS" ou "RENDIMENTO" +RulesResultBookkeepingPersonalized=Mostra registro em seu Livro de Registro com contas contábeis agrupadas por grupos personalizados +SeePageForSetup=Consulte o menu %s para configurar +LT1ReportByCustomersES=Relatorio por terceiro RE +LT2ReportByCustomersES=Relatório de fornecedores do IRPF +VATReportByCustomersInInputOutputMode=Relatório do IVA cliente recolhido e pago +LT1ReportByQuartersES=Relatorio por rata RE +LT2ReportByQuartersES=Relatorio por rata IRPF +OptionVatInfoModuleComptabilite=Nota: Para os bens materiais, sería necessário utilizar a data de entregas para para ser mais justo. +NotUsedForGoods=Bens não utilizados +ProposalStats=As estatísticas sobre as propostas +OrderStats=Estatísticas de comandos +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 +CodeNotDef=Não Definida +DatePaymentTermCantBeLowerThanObjectDate=Data Prazo de pagamento não pode ser inferior a data da compra ou aquisição +Pcg_version=Modelos de carta de contas +Pcg_subtype=PCG subtipo +InvoiceLinesToDispatch=Linhas de nota fiscal para envio +RefExt=Ref externo +ToCreateAPredefinedInvoice=Para criar um modelo de fatura, crie uma fatura padrão e, sem validá-la, clique no botão%s +LinkedOrder=Linque para o pedido +CalculationRuleDesc=Para calcular o total do VAT, há dois métodos:
Método 1 é arredondamento cuba em cada linha, em seguida, soma-los.
Método 2 é somando tudo cuba em cada linha, em seguida, o arredondamento resultado.
Resultado final pode difere de alguns centavos. O modo padrão é o modo% s. +CalculationRuleDescSupplier=De acordo com o fornecedor, escolha o método apropriado para aplicar a mesma regra de cálculo e obter o mesmo resultado esperado pelo fornecedor. +CalculationMode=Forma de cálculo +AccountancyJournal=código do Livro de Registro contábil +ACCOUNTING_VAT_PAY_ACCOUNT=Conta da contabilidade padrão para o pagamento de IVA[] +ACCOUNTING_ACCOUNT_CUSTOMER=Conta contábil usada para terceiros de clientes +ACCOUNTING_ACCOUNT_SUPPLIER_Desc=A conta contábil dedicada definida no cartão de terceiros será usada apenas para a contabilidade da subconta. Este será usado para contabilidade geral e como valor padrão da contabilidade do Contador, se a conta contábil do fornecedor dedicada a terceiros não estiver definida. +CloneTaxForNextMonth=Clonar para o proximo mes +AddExtraReport=Relatórios extra (adicionar relatório de clientes estrangeiros e nacionais) +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 +SameCountryCustomersWithVAT=Informar os clientes nacionais +BasedOnTwoFirstLettersOfVATNumberBeingTheSameAsYourCompanyCountry=Com base nas duas primeiras letras do número de IVA sendo o mesmo que o código do país da sua própria empresa +LinkedFichinter=Vincular a uma intervenção +ImportDataset_tax_contrib=Contribuições fiscais/sociais +LabelToShow=Etiqueta curta +PurchaseTurnover=Rotatividade de compras +PurchaseTurnoverCollected=Rotatividade de compras coletadas +RulesPurchaseTurnoverDue=- Inclui as faturas de fornecedores, pagas ou não.
- É baseado na data da fatura.
+RulesPurchaseTurnoverIn=- Inclui todos os pagamentos efetivos das faturas feitas aos fornecedores.
- É baseado na data de pagamento dessas faturas.
+RulesPurchaseTurnoverTotalPurchaseJournal=Inclui todas as linhas de débito no diário de compras. +ReportPurchaseTurnover=Volume de negócios de compra faturada +ReportPurchaseTurnoverCollected=Rotatividade de compras coletadas +IncludeVarpaysInResults =Incluir vários pagamentos nos relatórios +IncludeLoansInResults =Incluir empréstimos nos relatórios diff --git a/htdocs/langs/pt_MZ/contracts.lang b/htdocs/langs/pt_MZ/contracts.lang new file mode 100644 index 00000000000..d79009052c7 --- /dev/null +++ b/htdocs/langs/pt_MZ/contracts.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - contracts +ContractStatusDraft=Minuta +ContractStatusValidated=Validada +ContractsSubscriptions=Contratos/Assinaturas +ContractEndDate=Data de término diff --git a/htdocs/langs/pt_MZ/cron.lang b/htdocs/langs/pt_MZ/cron.lang new file mode 100644 index 00000000000..65d861f5bc3 --- /dev/null +++ b/htdocs/langs/pt_MZ/cron.lang @@ -0,0 +1,54 @@ +# Dolibarr language file - Source file is en_US - cron +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 +KeyForCronAccess=Chave seguranca para URL que lanca tarefas cron +FileToLaunchCronJobs=Linha de comando para checar e iniciar tarefas cron qualificadas +CronExplainHowToRunUnix=No ambiente Unix você deve usar a seguinte entrada crontab para executar a linha de comando a cada 5 minutos +CronExplainHowToRunWin=No ambiente Microsoft (tm) Windows, você pode usar as ferramentas Tarefas agendadas para executar a linha de comando a cada 5 minutos +CronMethodDoesNotExists=A classe %s não contém método %s algum +CronJobDefDesc=Os perfis de trabalho do Cron são definidos no arquivo do descritor do módulo. Quando o módulo é ativado, eles são carregados e disponíveis para que você possa administrar os trabalhos no menu de ferramentas de administração %s. +CronJobProfiles=Lista de perfis de tarefa cron predefinidas +CronLastOutput=Saída da última execução +CronLastResult=Código do último resultado +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=O módulo de Tarefa Agendada permite agendar tarefas para executá-las automaticamente. As tarefas também podem ser iniciadas manualmente. +CronNone=Nenhum +CronDtEnd=Não depois +CronDtNextLaunch=Próxima execução +CronFrequency=Frequencia +CronNoJobs=Nenhuma tarefa registrada +CronNbRun=Número de lançamentos +CronMaxRun=Número máximo de lançamentos +JobFinished=Trabalho iniciado e terminado +CronAdd=Adicionar tarefa +CronObject=Instância/Objeto a se criar +CronSaveSucess=Salvo com sucesso +CronNote=Comentario +CronFieldMandatory=O campo %s é obrigatório +CronErrEndDateStartDt=A data final não pode ser anterior a data de início +StatusAtInstall=Status na instalação do módulo +CronClassFile=Nome de arquivo com classe +CronModuleHelp=Nome do diretório do módulo Dolibarr (também trabalhe com o módulo Dolibarr externo).
Por exemplo, para chamar o método fetch do objeto do produto Dolibarr /htdocs/product/class/product.class.php, o valor para module é o product +CronClassFileHelp=O caminho relativo e o nome do arquivo a ser carregado (o caminho é relativo ao diretório-raiz do servidor da web).
Por exemplo, para chamar o método fetch do objeto Product do Dolibarr htdocs / product / class / product.class.php , o valor para o nome do arquivo de classe é product / class / product.class.php +CronObjectHelp=O nome do objeto a ser carregado.
Por exemplo, para chamar o método fetch do objeto do produto Dolibarr /htdocs/product/class/product.class.php, o valor para o nome do arquivo de classe é Produto +CronMethodHelp=O método do objeto a ser lançado.
Por exemplo, para chamar o método fetch do objeto Product do Dolibarr /htdocs/product/class/product.class.php, o valor para o método é fetch +CronArgsHelp=Os argumentos do método.
Por exemplo, para chamar o método fetch do objeto Dolibarr Product /htdocs/product/class/product.class.php, o valor dos parâmetros pode ser 0, ProductRef +CronCommandHelp=A linha de comando de sistema que deve ser executada. +CronCreateJob=Criar uma nova Tarefa agendada +CronType_method=Chamar método de uma Classe PHP +CronType_command=Comando Shell +CronCannotLoadClass=Não é possível carregar o arquivo de classe %s (para usar a classe %s) +CronCannotLoadObject=O arquivo de classe %s foi carregado, mas o objeto %s não foi encontrado nele +UseMenuModuleToolsToAddCronJobs=Vá para o menu "Página inicial - Ferramentas administrativas - Trabalhos agendados" para ver e editar os trabalhos agendados. +JobDisabled=Tarefa desativada +MakeLocalDatabaseDumpShort=Backup do banco de dados local +MakeLocalDatabaseDump=Crie um despejo de banco de dados local. Os parâmetros são: compression ('gz' ou 'bz' ou 'none'), tipo de backup ('mysql', 'pgsql', 'auto'), 1, 'auto' ou nome de arquivo para construir, número de arquivos de backup para manter +WarningCronDelayed=Atenção, para fins de desempenho, seja qual for a próxima data de execução de tarefas habilitadas, suas tarefas podem ser atrasadas em até um máximo de %s horas, antes de serem executadas. +DATAPOLICYJob=Limpador de dados e anonimizador diff --git a/htdocs/langs/pt_MZ/deliveries.lang b/htdocs/langs/pt_MZ/deliveries.lang new file mode 100644 index 00000000000..61344cf4b60 --- /dev/null +++ b/htdocs/langs/pt_MZ/deliveries.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - deliveries +Delivery=Entrega +DeliveryRef=Ref. entrega +DeliveryCard=Cartão de recibo +DeliveryOrder=Recibo 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 %s? +DeliveryMethod=Método de entrega +TrackingNumber=Número de rastreamento +StatusDeliveryDraft=Minuta +StatusDeliveryValidated=Recebida +NameAndSignature=Nome e assinatura: +GoodStatusDeclaration=Recebi a mercadorias acima em bom estado, +Deliverer=Entregador : +Sender=Remetente +ErrorStockIsNotEnough=Não existe estoque suficiente +Shippable=Disponivel para envio +NonShippable=Não disponivel para envio +ShowShippableStatus=Mostrar status entregável +ShowReceiving=Mostrar recibo de entrega +NonExistentOrder=Pedido inexistente diff --git a/htdocs/langs/pt_MZ/dict.lang b/htdocs/langs/pt_MZ/dict.lang new file mode 100644 index 00000000000..c7d7ae905d8 --- /dev/null +++ b/htdocs/langs/pt_MZ/dict.lang @@ -0,0 +1,110 @@ +# Dolibarr language file - Source file is en_US - dict +CountryBE=Bélgica +CountryCH=Suíça +CountryDZ=Argélia +CountryCA=Canadá +CountryRU=Rússia +CountryAX=Ilhas Åland +CountryBJ=Benim +CountryBN=Brunei +CountryBG=Bulgária +CountryBF=Burquina Faso +CountryBI=Burúndi +CountryCF=República Centro-Africana +CountryKM=Comores +CountryCZ=República Tcheca +CountryFO=Ilhas Féroe +CountryFJ=República de Fíji +CountryTF=Território das Terras Austrais e Antárticas Francesas +CountryGE=Geórgia +CountryGL=Groenlândia +CountryHT=Haiti +CountryHM=Ilha Heard e Ilhas McDonald +CountryVA=Santa Sé (Estado da Cidade do Vaticano) +CountryIS=Islândia +CountryIR=Irã +CountryKR=Coreia do Sul +CountryKG=Quirguistão +CountryLA=Laos +CountryMK=Macedônia, antiga República iugoslava da +CountryMW=Maláui +CountryML=Máli +CountryMM=Mianmar (Birmânia) +CountryNC=Nova Caledônia +CountryPS=Território Palestino, Ocupado +CountryPN=Ilhas Picárnia +CountryKN=São Cristóvão e Nevis +CountryPM=São Pedro e Miquelon +CountrySC=Seicheles +CountryGS=Ilhas Geórgias do Sul e Sandwich do Sul +CountryTC=Ilhas Turks e Caicos +CountryUA=Ucrânia +CountryUM=Ilhas Menores Distantes dos Estados Unidos +CountryVN=Vietnã +CountryVI=Ilhas Virgens, EUA +CountryEH=Saara Ocidental +CountryZW=Zimbábue +CountryBL=São Bartolomeu +CountryMF=São Martinho +CivilityMLE=Srta. +CivilityMTRE=Me. +CurrencyAUD=Dólares australianos +CurrencySingAUD=Dólar australiano +CurrencyCAD=Dólares canadenses +CurrencySingCAD=Dólar canadense +CurrencySingCHF=Franco suíço +CurrencyFRF=Francos franceses +CurrencyGBP=Libras esterlinas +CurrencySingGBP=Libra esterlina +CurrencyINR=Rupias indianas +CurrencyMAD=Dirhames +CurrencySingMAD=Dirhames +CurrencyMGA=Ariaris +CurrencySingMGA=Ariari +CurrencyMUR=Rupias mauricianas +CurrencySingMUR=Rupia mauriciana +CurrencyNOK=Coroas norueguesas +CurrencySingNOK=Coroas norueguesas +CurrencyTND=Dinares tunisianos +CurrencySingTND=Dinar tunisiano +CurrencyUSD=Dólares americanos +CurrencySingUSD=Dólar americano +CurrencyUAH=Grívnias +CurrencySingUAH=Grívnia +CurrencyXPF=Francos CFP +CurrencyCentEUR=centavos +CurrencyCentSingEUR=centavo +CurrencyCentINR=paise +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_SHOP=Contato na loja +DemandReasonTypeSRC_WOM=Palavra da boca +DemandReasonTypeSRC_SRC_CUSTOMER=Contato entrante de um cliente +PaperFormatUSLETTER=Formato Carta, EUA +PaperFormatUSLEGAL=Formato Legal, EUA +PaperFormatUSEXECUTIVE=Formato Executivo, EUA +PaperFormatUSLEDGER=Formato Livro-Razão/Tabloide +PaperFormatCAP1=Formato P1, Canadá +PaperFormatCAP2=Formato P2, Canadá +PaperFormatCAP3=Formato P3, Canadá +PaperFormatCAP4=Formato P4, Canadá +PaperFormatCAP5=Formato P5, Canadá +PaperFormatCAP6=Formato P6, Canadá +ExpMotoCat=Motocicleta +ExpAuto3PCV=3 CV e mais +ExpAuto4PCV=4 CV e mais +ExpAuto5PCV=5 CV e mais +ExpAuto6PCV=6 CV e mais +ExpAuto7PCV=7 CV e mais +ExpAuto8PCV=8 CV e mais +ExpAuto9PCV=9 CV e mais +ExpAuto10PCV=10 CV e mais +ExpAuto11PCV=11 CV e mais +ExpAuto12PCV=12 CV e mais +ExpAuto13PCV=13 CV e mais +ExpCyclo=Capacidade abaixo de 50cm3 +ExpMoto12CV=Motocicleta 1 ou 2 CV +ExpMoto345CV=Motocicleta 3, 4 ou 5 CV +ExpMoto5PCV=Motocicleta 5 CV e mais diff --git a/htdocs/langs/pt_MZ/donations.lang b/htdocs/langs/pt_MZ/donations.lang new file mode 100644 index 00000000000..c9152795e55 --- /dev/null +++ b/htdocs/langs/pt_MZ/donations.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - donations +Donation=Doação +Donations=Doações +DonationRef=Ref. da doação +AddDonation=Criar uma doação +NewDonation=Nova doação +DeleteADonation=Excluir uma doação +ConfirmDeleteADonation=Tem certeza que quer remover esta doacao? +PublicDonation=Doação pública +DonationsArea=Área de doações +DonationStatusPromiseNotValidated=Promessa não validada +DonationStatusPaid=Doação recebida +DonationStatusPromiseNotValidatedShort=Não validada +DonationStatusPromiseValidatedShort=Validada +DonationStatusPaidShort=Recebida +DonationTitle=Recibo de doação +DonationReceipt=Recibo de doação +DonationsModels=Modelo de documento de recepção de Doação +DonationRecipient=Recipiente doaçaõ +IConfirmDonationReception=O beneficiário declara ter recebido, como doação, o seguinte montante +MinimumAmount=O montante mínimo é de %s +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 +DonationPayment=Pagamento de doação diff --git a/htdocs/langs/pt_MZ/ecm.lang b/htdocs/langs/pt_MZ/ecm.lang new file mode 100644 index 00000000000..3c7bb7eddf3 --- /dev/null +++ b/htdocs/langs/pt_MZ/ecm.lang @@ -0,0 +1,37 @@ +# Dolibarr language file - Source file is en_US - ecm +ECMNbOfDocs=N°. de documentos no diretório +ECMSection=Pasta +ECMSectionManual=Pasta manual +ECMRoot=Raiz ECM +ECMNewSection=Criar pasta +ECMAddSection=Adicionar pasta +ECMCreationDate=Data criação +ECMNbOfFilesInDir=Número de arquivos na pasta +ECMNbOfSubDir=Número de subpastas +ECMNbOfFilesInSubDir=Numero de arquivos nos subpastas +ECMCreationUser=Criado por +ECMArea=Área DMS / ECM +ECMAreaDesc=A área DMS / ECM (Gerenciamento de documentos / Gerenciamento de conteúdo eletrônico) permite salvar, compartilhar e pesquisar rapidamente todos os tipos de documentos no Dolibarr. +ECMAreaDesc2=* As pastas automáticas são geradas automaticamente quando algum arquivo é adicionado a algum ficheiro do sistema.
* As pastas manuais podem ser usados ​​para guardar documentos sem ligação a um cadastro do sistema. +ECMSectionWasRemoved=A pasta %s foi eliminada +ECMSearchByKeywords=Busca usando palavras chave +ECMSearchByEntity=Busca por objeto +ECMDocsBy=Documentos vinculados a %s +ShowECMSection=Exibir pasta +DeleteSection=Apagar pasta +ConfirmDeleteSection=Por favor confirmar a remocao do diretorio %s? +ECMDirectoryForFiles=Relação de pasta para arquivos +CannotRemoveDirectoryContainsFilesOrDirs=Remoção impossível porque contém alguns arquivos ou subdiretórios +CannotRemoveDirectoryContainsFiles=Remoção impossível porque contém alguns arquivos +ECMFileManager=Gerenciador de arquivos +ECMSelectASection=Selecione um diretório na árvore ... +DirNotSynchronizedSyncFirst=Este diretório parece ser criado ou modificado fora do módulo ECM. Você deve clicar no botão "Sincronizar" primeiro para sincronizar o disco do banco de dados para obter o conteúdo desse diretório. +ReSyncListOfDir=Sincronizar lista de diretórios +HashOfFileContent=Hash do conteúdo do arquivo +FileNotYetIndexedInDatabase=Arquivo ainda não indexado no banco de dados (tente voltar a carregá-lo) +ExtraFieldsEcmFiles=Campos extras Arquivos Ecm +ExtraFieldsEcmDirectories=Campos extras Diretórios Ecm +ECMSetup=Configuração ECM +GenerateImgWebp=Duplique todas as imagens com outra versão em formato .webp +ConfirmImgWebpCreation=Confirmar duplicação de todas as imagens +SucessConvertImgWebp=Imagens duplicadas com sucesso diff --git a/htdocs/langs/pt_MZ/errors.lang b/htdocs/langs/pt_MZ/errors.lang new file mode 100644 index 00000000000..03f3d75a362 --- /dev/null +++ b/htdocs/langs/pt_MZ/errors.lang @@ -0,0 +1,182 @@ +# Dolibarr language file - Source file is en_US - errors +NoErrorCommitIsDone=Sem erros, garantimos +ErrorButCommitIsDone=Erros foram encontrados mas, apesar disso, validamos +ErrorBadValueForParamNotAString=Valor ruim para o seu parâmetro por falta, possivelmente, de tradução. +ErrorRecordNotFound=Registro não encontrado. +ErrorFailToCopyFile=Houve uma falha ao copiar o arquivo '%s' para '%s'. +ErrorFailToCopyDir=Falha ao copiar o diretório ' %s ' para ' %s '. +ErrorFailToRenameFile=Houve uma falha ao renomear o arquivo '%s' para '%s'. +ErrorFailToDeleteFile=Houve uma falha ao eliminar o arquivo '%s'. +ErrorFailToCreateFile=Houve uma falha ao criar o arquivo ''. +ErrorFailToRenameDir=Houve uma falha ao renomear o diretório '%s' para '%s'. +ErrorFailToCreateDir=Houve uma falha ao criar o diretório '%s'. +ErrorFailToDeleteDir=Houve uma falha ao eliminar o diretório '%s'. +ErrorThisContactIsAlreadyDefinedAsThisType=Este contato já está definido como contato para este tipo. +ErrorCashAccountAcceptsOnlyCashMoney=Esta conta bancaria é uma conta caixa e aceita, portanto, apenas pagamentos em dinheiro. +ErrorFromToAccountsMustDiffers=As contas bancárias origem e alvo devem ser diferentes. +ErrorBadThirdPartyName=Valor inválido para o nome de terceiros +ErrorProdIdIsMandatory=%s é obrigatório +ErrorBadCustomerCodeSyntax=Sintaxe inadequada para o código de cliente +ErrorBadBarCodeSyntax=Má sintaxe para código de barras. Pode ser que você defina um tipo de código de barras incorreto ou tenha definido uma máscara de código de barras para numeração que não corresponda ao valor verificado. +ErrorCustomerCodeRequired=Código de cliente necessário +ErrorBarCodeRequired=Código de barras requerido +ErrorBarCodeAlreadyUsed=Código de barras já usado +ErrorSupplierCodeRequired=Código de fornecedor necessário +ErrorSupplierCodeAlreadyUsed=Código do fornecedor já usado +ErrorBadParameters=Parâmetros inadequados +ErrorWrongParameters=Parâmetros errados ou ausentes +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) +ErrorBadDateFormat=O valor '%s' tem o formato de data errada +ErrorWrongDate=A data não está correta! +ErrorFailedToWriteInDir=Houve uma falha ao escrever no diretório %s +ErrorFoundBadEmailInFile=Encontrado uma sintaxe de e-mail incorreta para as linhas %s no arquivo (por exemplo, linha %s com e-mail = %s) +ErrorSubjectIsRequired=O assunto do email é obrigatório +ErrorFailedToCreateDir=Error na creação de uma carpeta. Compruebe que 0 usuario del servidor Web tiene derechos de escritura en las carpetas de documentos de Dolibarr. Si 0 parámetro safe_mode está ativo en este PHP, Compruebe que los archivos php dolibarr pertencen ao usuario del servidor Web. +ErrorNoMailDefinedForThisUser=Nenhum e-mail definido para este usuário +ErrorFeatureNeedJavascript=Esta funcionalidade requer que o javascript seja ativado para funcionar. Altere isto em Configuração >> Aparência. +ErrorTopMenuMustHaveAParentWithId0=Um menu do tipo 'Topo' não pode ter um menu pai. Coloque 0 no menu pai ou opte por um menu do tipo 'Esquerdo'. +ErrorLeftMenuMustHaveAParentId=Um menu do tipo 'Esquerdo' deve ter um ID de pai. +ErrorFileNotFound=Arquivo não encontrado (Rota incorreta, permissões incorretos o acesso prohibido por o parâmetro openbasedir) +ErrorDirNotFound=Diretório %s não encontrado (caminho errado, permissões erradas ou acesso negado pelo PHP ou pelo parâmetro safe_mode) +ErrorFunctionNotAvailableInPHP=A função %s é requisitada por esta funcionalidade, mas não está disponível nesta versão/configuração do PHP. +ErrorDirAlreadyExists=Já existe um diretório com este nome. +ErrorFileAlreadyExists=Já existe um arquivo com este nome. +ErrorPartialFile=O arquivo não foi completamente recebido pelo servidor. +ErrorNoTmpDir=O diretório temporário %s não existe. +ErrorUploadBlockedByAddon=Upload bloqueado por uma extensão do PHP/Apache. +ErrorFieldTooLong=O campo %s é muito longo. +ErrorSizeTooLongForIntType=Tamanho longo demais para o tipo int (o máximo é %s dígitos) +ErrorSizeTooLongForVarcharType=Tamanho longo demais para o tipo string (o máximo é %s caracteres) +ErrorNoValueForSelectType=Por favor, escolha uma opção da lista +ErrorNoValueForCheckBoxType=Por favor, marque uma opção da lista +ErrorNoValueForRadioType=Por favor, selecione uma opção da lista +ErrorBadFormatValueList=O valor da lista não pode ter mais de uma vírgula: %s, mas precisa de ao menos uma: chave,valor +ErrorNoAccountancyModuleLoaded=Módulo de Contabilidade não ativado +ErrorExportDuplicateProfil=Este nome de perfil já existe para este lote de exportação. +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. +ErrorModuleRequireJavascript=Javascript não deve ser desativado para ter esse recurso funcionando. Para ativar / desativar o Javascript, vá ao menu Home-> Configuração-> Display. +ErrorPasswordsMustMatch=Deve existir correspondência entre as senhas digitadas +ErrorContactEMail=Ocorreu um erro técnico. Por favor, entre em contato com o administrador para o seguinte e-mail %s e forneça o código de erro %s em sua mensagem ou adicione uma cópia da tela desta página. +ErrorWrongValueForField=Campo %s : '%s' não corresponde à regra de regex %s +ErrorFieldValueNotIn=Campo %s : '%s' não é um valor encontrado no campo %s de %s +ErrorFieldRefNotIn=Campo %s : '%s' não é uma referência existente %s +ErrorsOnXLines=%s erros encontrados +ErrorFileIsInfectedWithAVirus=O antivírus não foi capaz de atestar o arquivo (o arquivo pode estar infectado por um vírus) +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 muito baixa para este fornecedor ou nenhum preço definido neste produto para este fornecedor +ErrorOrdersNotCreatedQtyTooLow=Algumas encomendas não foram criadas por causa de quantidades muito baixas +ErrorModuleSetupNotComplete=A configuração do módulo %s parece estar incompleta. Vá em Home - Setup - Modules para concluir. +ErrorBadMaskFailedToLocatePosOfSequence=Erro, máscara sem número de sequência +ErrorBadMaskBadRazMonth=Erro, valor de redefinição ruim +ErrorMaxNumberReachForThisMask=Número máximo atingido para esta máscara +ErrorCounterMustHaveMoreThan3Digits=Contador deve ter mais de 3 dígitos +ErrorSelectAtLeastOne=Erro, selecione pelo menos uma entrada. +ErrorProdIdAlreadyExist=%s é atribuído a outro terço +ErrorFailedToSendPassword=Houve uma falha no envio da senha +ErrorForbidden=Acesso negado.
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...). +ErrorNoImagickReadimage=a função imagick_readimage não está presente nesta Instalação de PHP. a resenha não está pois disponível. Os administradores podem desativar esta separador ao menu configuração - visualização. +ErrorRecordAlreadyExists=O registro já existe +ErrorCantReadFile=Houve uma falha ao ler o arquivo '%s' +ErrorCantReadDir=Houve uma falha ao ler o diretório '%s' +ErrorBadLoginPassword=Identificadores de usuário o senha incorretos +ErrorLoginDisabled=A sua conta foi desativada +ErrorFailedToChangePassword=Error na modificação da senha +ErrorLoginDoesNotExists=Não existe um usuário com login %s. +ErrorLoginHasNoEmail=Este usuário não tem endereço de e-mail. Processo abortado. +ErrorBadValueForCode=Valor inadequado para código de segurança. Tente novamente com um novo valor... +ErrorBothFieldCantBeNegative=Os campos %s e %s não podem ser ambos negativos +ErrorLinesCantBeNegativeOnDeposits=As linhas não podem ser negativas em um depósito. Você terá problemas quando precisar apagar o depósito na fatura final, se o fizer. +ErrorQtyForCustomerInvoiceCantBeNegative=A quantidade nas linhas das notas de clientes não pode ser negativa +ErrorWebServerUserHasNotPermission=A conta de usuário %s usada para executar o servidor web não possui permissão para isto +ErrorNoActivatedBarcode=Nenhum tipo de código de barras foi ativado +ErrUnzipFails=Houve uma falha ao descompactar %s com ZipArchive +ErrorFileMustBeADolibarrPackage=O arquivo %s deve ser um pacote zipado do Dolibarr +ErrorPhpCurlNotInstalled=O PHP CURL não está instalado, isto é essencial para conversar com Paypal +ErrorFailedToAddToMailmanList=Falha ao adicionar registro% s para% s Mailman lista ou base SPIP +ErrorFailedToRemoveToMailmanList=Falha ao remover registro% s para% s Mailman lista ou base SPIP +ErrorNewValueCantMatchOldValue=O novo valor não pode ser igual ao anterior +ErrorFailedToValidatePasswordReset=Falha ao reinicializar senha. Pode ser o reinit já foi feito (este link pode ser usado apenas uma vez). Se não, tente reiniciar o processo reinit. +ErrorFailedToAddContact=Houve uma falha ao adicionar o contato +ErrorDateMustBeBeforeToday=A data deve ser menor que hoje +ErrorDateMustBeInFuture=A data deve ser maior que hoje +ErrorPaymentModeDefinedToWithoutSetup=A modalidade de pagamento foi definido para tipo% s mas a configuração do módulo de fatura não foi concluída para definir as informações para mostrar para esta modalidade de pagamento. +ErrorPHPNeedModule=Erro, o PHP deve ter módulo% s instalado para usar este recurso. +ErrorOpenIDSetupNotComplete=Você arquivo de configuração Dolibarr configuração para permitir a autenticação OpenID, mas a URL de serviço OpenID não está definido em constante% s +ErrorWarehouseMustDiffers=A conta origem e destino devem ser diferentes +ErrorBadFormat=Formato ruim! +ErrorMemberNotLinkedToAThirpartyLinkOrCreateFirst=Erro, este membro não está ainda conectado a qualquer terceiro. Conectar o membro a um terceiro existente ou criar um novo terceiro antes de criar uma assinatura com fatura. +ErrorThereIsSomeDeliveries=Erro, há algumas entregas ligados a este envio. Supressão recusou. +ErrorPriceExpression1=Não é possível atribuir a constante %s' +ErrorPriceExpression2=Não é possível redefinir a função built-in '%s' +ErrorPriceExpression3=variavel não definida '%s' na definição de função +ErrorPriceExpression4=Caractere ilegal '%s' +ErrorPriceExpression6=Número errado de argumentos (fornecidos %s, esperados %s) +ErrorPriceExpression8=Operador Inesperado '%s' +ErrorPriceExpression17=Variável não definida '%s' +ErrorSrcAndTargetWarehouseMustDiffers=Origem e de destino de armazéns devem ser diferentes +ErrorCantSetReceptionToTotalDoneWithReceptionToApprove=Todas as recepções gravados primeiro deve ser verificada (aprovada ou negada) antes de serem autorizados a fazer esta ação +ErrorCantSetReceptionToTotalDoneWithReceptionDenied=Todas as recepções gravadas primeiro devem ser verificada (aprovado) antes de serem autorizados a fazer esta ação +ErrorGlobalVariableUpdater0=Pedido HTTP falhou com o erro '%s' +ErrorGlobalVariableUpdater2=Faltando parâmetro '%s' +ErrorGlobalVariableUpdater5=Nenhuma variável global selecionado +ErrorFieldMustBeANumeric=O campo %s deve ser um valor numérico +ErrorMandatoryParametersNotProvided=Parâmetro (s) de preenchimento obrigatório não fornecidas +ErrorOppStatusRequiredIfAmount=Você define um valor estimado para esse lead. Então você também deve inserir seu status. +ErrorBadDefinitionOfMenuArrayInModuleDescriptor=Má definição da matriz Menu No Módulo Descritor (mau valor para fk_menu chave) +ErrorWarehouseRequiredIntoShipmentLine=É exigido um armazém na linha para a remessa +ErrorFilenameCantStartWithDot=O nome do arquivo não pode começar com com caracteres especiais +ErrorSupplierCountryIsNotDefined=País para este fornecedor não está definido. Corrija isso primeiro. +ErrorsThirdpartyMerge=Falha em mesclar os dois registros. Solicitação cancelada. +ErrorModuleNotFound=O arquivo do módulo não foi encontrado. +ErrorObjectMustHaveStatusDraftToBeValidated=O objeto %s deve ter status 'Rascunho' para ser validado. +ErrorObjectMustHaveLinesToBeValidated=O objeto %s deve ter linhas a serem validadas. +ErrorFileNotFoundWithSharedLink=Arquivo não encontrado. Pode ser que a chave do compartilhamento tenha sido modificada ou o arquivo tenha sido removido recentemente. +ErrorDuringChartLoad=Erro ao carregar o plano de contas. Se algumas contas não foram carregadas, você ainda pode inseri-las manualmente. +ErrorBadSyntaxForParamKeyForContent=Má sintaxe para o parâmetro keyforcontent . Deve ter um valor começando com %s ou %s +ErrorVariableKeyForContentMustBeSet=Erro, a constante com nome %s (com conteúdo de texto para mostrar) ou %s (com URL externo para mostrar) deve ser definida. +ErrorURLMustStartWithHttp=O URL %s deve começar com http:// ou https:// +ErrorNewRefIsAlreadyUsed=Erro, a nova referência já está sendo usada +ErrorDeletePaymentLinkedToAClosedInvoiceNotPossible=Erro, não é possível excluir o pagamento vinculado a uma fatura fechada. +ErrorSearchCriteriaTooSmall=Critérios de pesquisa insuficientes. +ErrorObjectMustHaveStatusActiveToBeDisabled=Os objetos devem ter o status 'Ativo' para serem desativados +ErrorObjectMustHaveStatusDraftOrDisabledToBeActivated=Os objetos devem ter o status 'Rascunho' ou 'Desativado' para serem ativados +ErrorNoFieldWithAttributeShowoncombobox=Nenhum campo possui a propriedade 'show combo box' na definição do objeto '%s'. Não há como mostrar a lista de combinação. +ErrorFieldRequiredForProduct=O campo '%s' é obrigatório para o produto %s +ProblemIsInSetupOfTerminal=Problema na configuração do terminal %s. +ErrorAddAtLeastOneLineFirst=Adicione pelo menos uma linha primeiro +ErrorRecordAlreadyInAccountingDeletionNotPossible=Erro, o registro já foi transferido na contabilidade, a exclusão não é possível. +ErrorLanguageMandatoryIfPageSetAsTranslationOfAnother=Erro, o idioma é obrigatório se você definir a página como tradução de outro. +ErrorLanguageOfTranslatedPageIsSameThanThisPage=Erro, o idioma da página traduzida é o mesmo que este. +ErrorBatchNoFoundForProductInWarehouse=Nenhum lote / série encontrado para o produto "%s" no armazém "%s". +ErrorBatchNoFoundEnoughQuantityForProductInWarehouse=Quantidade insuficiente para este lote / série para o produto "%s" "no armazém"%s ". +ErrorOnlyOneFieldForGroupByIsPossible=Apenas 1 campo para o 'Agrupar por' é possível (outros são descartados) +ErrorReplaceStringEmpty=Erro, a cadeia de caracteres para substituir está vazia +ErrorPublicInterfaceNotEnabled=A interface pública não foi ativada +WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Seu parâmetro PHP upload_max_filesize (%s) é maior que o parâmetro PHP post_max_size (%s). Esta não é uma configuração consistente. +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. +WarningEnableYourModulesApplications=Clique aqui para ativar seus módulos e aplicativos +WarningSafeModeOnCheckExecDir=Atenção, a opção PHP safe_mode está em modo de comando devem ser armazenados dentro de um diretório declarado pelo php parâmetro safe_mode_exec_dir. +WarningBookmarkAlreadyExists=já existe um marcador com este título o esta URL. +WarningPassIsEmpty=Atenção: a senha da base de dados está vazia. Esto é buraco na segurança. deve agregar uma senha e a sua base de dados e alterar a sua Arquivo conf.php para reflejar esto. +WarningConfFileMustBeReadOnly=Atenção, o seu arquivo de configuração (htdocs / conf / conf.php) pode ser substituído pelo servidor web. Esta é uma falha de segurança grave. Modificar permissões em arquivos para estar no modo de somente leitura para usuário do sistema operacional utilizado pelo servidor web. Se você usa o formato Windows e FAT para o seu disco, você deve saber que este sistema de arquivos não permite adicionar permissões em arquivos, por isso não pode ser completamente seguro. +WarningsOnXLines=Advertências sobre registro de origem% s (s) +WarningLockFileDoesNotExists=Atenção, assim que a configuração estiver concluída, você deve desativar as ferramentas de instalação/migração adicionando um arquivo install.lock no diretório %s. Omitir a criação desse arquivo é um grave risco de segurança. +WarningCloseAlways=Atenção, o fechamento é feito mesmo se o valor difere entre elementos de origem e de destino. Ative esse recurso com cautela. +WarningUsingThisBoxSlowDown=Atenção, utilizando esta caixa de abrandar a sério todas as páginas que mostram a caixa. +WarningClickToDialUserSetupNotComplete=Configuração de informações ClickToDial para o usuário não são completas (ver guia ClickToDial no seu cartão de usuário). +WarningFeatureDisabledWithDisplayOptimizedForBlindNoJs=Função desabilitada quando a tela e optimizada para uso das pessoas cegas ou navegadores de texto. +WarningPaymentDateLowerThanInvoiceDate=A data de pagamento (%s) é anterior a data (%s) da fatura %s. +WarningTooManyDataPleaseUseMoreFilters=Dados em demasia (mais de %s linhas). Por favor, utilize mais filtros ou defina a constante %s para um limite maior. +WarningSomeLinesWithNullHourlyRate=Algumas vezes foram registrados por alguns usuários enquanto sua taxa por hora não foi definida. Um valor de 0 %s por hora foi usado, mas isto pode resultar em uma valoração errada do tempo gasto. +WarningYourLoginWasModifiedPleaseLogin=O seu login foi modificado. Por questões de segurança, você terá de autenticar-se com o seu novo login antes da próxima ação. +WarningProjectClosed=O projeto está fechado. Você deve reabri-lo primeiro. +WarningSomeBankTransactionByChequeWereRemovedAfter=Algumas transações bancárias foram removidas após geração do recebimento, incluindo elas. Portanto, o número de cheques e o total de recebimento podem diferir do número e do total na lista. +RequireValidValue =Valor não é válido +RequireValidEmail =o endereço de email não é válido +RequireValidUrl =Requer URL válido +RequireValidDate =Requer uma data válida diff --git a/htdocs/langs/pt_MZ/eventorganization.lang b/htdocs/langs/pt_MZ/eventorganization.lang new file mode 100644 index 00000000000..7fe968ff823 --- /dev/null +++ b/htdocs/langs/pt_MZ/eventorganization.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - eventorganization +ModuleEventOrganizationName =Organização do Evento +EventOrganizationDescription =Organização do Evento atraves do modulo Projetos +EventOrganizationMenuLeft =Eventos organizados +EventOrganizationSetup=Configuracao de Organização do Evento +Settings=Configurações +EventOrganizationSetupPage =Organização do Eventos pagina de configuracao +EvntOrgDraft =Minuta diff --git a/htdocs/langs/pt_MZ/help.lang b/htdocs/langs/pt_MZ/help.lang new file mode 100644 index 00000000000..3f5625ca3bf --- /dev/null +++ b/htdocs/langs/pt_MZ/help.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - help +CommunitySupport=Fórum/Wiki suporte +EMailSupport=E-mails de suporte +RemoteControlSupport=Suporte online em tempo real/remoto +OtherSupport=Outros suportes +ToSeeListOfAvailableRessources=Entrar em contato com/consulte os recursos disponíveis: +HelpCenter=Central de ajuda +NeedHelpCenter=PRecisa de ajuda ou suporte? +Efficiency=eficiência +TypeHelpOnly=Somente ajuda +TypeHelpDev=Ajuda+Desenvolvimento +PossibleLanguages=Os idiomas suportados +SeeOfficalSupport=Para obter suporte oficial do Dolibarr no seu idioma:
%s diff --git a/htdocs/langs/pt_MZ/holiday.lang b/htdocs/langs/pt_MZ/holiday.lang new file mode 100644 index 00000000000..0172efdcddd --- /dev/null +++ b/htdocs/langs/pt_MZ/holiday.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - holiday +HRM=RH +DateFinCP=Data de término +DraftCP=Minuta +DeleteCP=Excluir +UserCP=Usuário +ActionByCP=Modificado por diff --git a/htdocs/langs/pt_MZ/hrm.lang b/htdocs/langs/pt_MZ/hrm.lang new file mode 100644 index 00000000000..4e5f4aef5c8 --- /dev/null +++ b/htdocs/langs/pt_MZ/hrm.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - hrm +HRM_EMAIL_EXTERNAL_SERVICE=E-mail para evitar HRM serviço externo +Establishments=Estabelecimentos +DeleteEstablishment=Excluir estabelecimento +ConfirmDeleteEstablishment=Tem certeza de que deseja excluir este estabelecimento? +DictionaryFunction=RH - Cargos +HrmSetup=Configuração do módulo RH +ValidateEvaluation=Validar avaliação diff --git a/htdocs/langs/pt_MZ/interventions.lang b/htdocs/langs/pt_MZ/interventions.lang new file mode 100644 index 00000000000..b9ec79fa37e --- /dev/null +++ b/htdocs/langs/pt_MZ/interventions.lang @@ -0,0 +1,53 @@ +# Dolibarr language file - Source file is en_US - interventions +InterventionCard=Ficha de Intervenção +NewIntervention=Nova Intervenção +AddIntervention=Criar Intervenção +ChangeIntoRepeatableIntervention=Mudança para intervenção repetível +ActionsOnFicheInter=Açoes na intervençao +InterventionContact=Contato Intervenção +ValidateIntervention=Confirmar Intervenção +ModifyIntervention=Modificar intervençao +ConfirmDeleteIntervention=Você tem certeza que deseja excluir esta intervenção? +ConfirmValidateIntervention=Você tem certeza que deseja validar esta intervenção sob o nome %s? +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 : +InterventionClassifyBilled=Classificar "Faturado" +InterventionClassifyUnBilled=Classificar "à faturar" +InterventionClassifyDone=Classificar "Feito" +StatusInterInvoiced=Faturado +SendInterventionRef=Apresentação de intervenção %s +SendInterventionByMail=Envio da intervenção por e-mail +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 +FichinterToProcess=Intermediações para processar +TypeContact_fichinter_external_CUSTOMER=Contato do cliente do seguimento da intervenção +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 +UseDurationOnFichinter=Esconde o campo de duração para os registros de intermediações +UseDateWithoutHourOnFichinter=Oculta horas e minutos fora do campo de data para registros de intermediação +InterventionStatistics=Estatística de intervenções +NbOfinterventions=Nº. de cartões de intervenção +NumberOfInterventionsByMonth=Nº. de cartões de intervenção por mês (data de validação) +AmountOfInteventionNotIncludedByDefault=A quantidade de intervenção não é incluída por padrão no lucro (na maioria dos casos, as planilhas de tempo são usadas para contar o tempo gasto). Adicione a opção PROJECT_INCLUDE_INTERVENTION_AMOUNT_IN_PROFIT para 1 em home-setup-other para incluí-los. +InterId=ID de intervenção +InterRef=Intervenção ref. +InterDateCreation=Intervenção data de criação +InterDuration=Duração intervenção +InterStatus=Status de intervenção +InterLine=Linha de intervenção +InterLineId=Linha id de intervenção +InterLineDate=Linha da data de intervenção +InterLineDuration=Linha de duração de intervenção +InterLineDesc=Linha de descrição de intervenção +RepeatableIntervention=Modelo de intervenção +ToCreateAPredefinedIntervention=Para criar uma intervenção predefinida ou recorrente, crie uma intervenção comum e converta-a em modelo de intervenção +ConfirmReopenIntervention=Deseja abrir novamente a intervenção %s ? diff --git a/htdocs/langs/pt_MZ/languages.lang b/htdocs/langs/pt_MZ/languages.lang new file mode 100644 index 00000000000..b46ba01daa1 --- /dev/null +++ b/htdocs/langs/pt_MZ/languages.lang @@ -0,0 +1,2 @@ +# Dolibarr language file - Source file is en_US - languages +Language_lo_LA=Laos diff --git a/htdocs/langs/pt_MZ/ldap.lang b/htdocs/langs/pt_MZ/ldap.lang new file mode 100644 index 00000000000..4b752dc483c --- /dev/null +++ b/htdocs/langs/pt_MZ/ldap.lang @@ -0,0 +1,13 @@ +# Dolibarr language file - Source file is en_US - ldap +YouMustChangePassNextLogon=A senha de %s ao domínio %s deve de ser modificada. +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 +LDAPInformationsForThisMemberType=Informação no banco de dados LDAP para esse tipo de membro +LDAPUsers=Usuário na base de dados LDAP +LDAPFieldFirstSubscriptionAmount=Valor da Primeira Adesão +LDAPFieldLastSubscriptionDate=Data da última adesão +LDAPFieldLastSubscriptionAmount=Valor da última adesão +UserSynchronized=Usuário Sincronizado +ErrorFailedToReadLDAP=Erro na leitura do anuário LDAP. Verificar a configuração do módulo LDAP e a acessibilidade do anuário. +PasswordOfUserInLDAP=Senha do usuário no LDAP diff --git a/htdocs/langs/pt_MZ/link.lang b/htdocs/langs/pt_MZ/link.lang new file mode 100644 index 00000000000..f86a13d83c3 --- /dev/null +++ b/htdocs/langs/pt_MZ/link.lang @@ -0,0 +1,10 @@ +# 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 '%s' +ErrorFailedToUpdateLink=Falha ao atualizar link '%s' +URLToLink=URL para link diff --git a/htdocs/langs/pt_MZ/loan.lang b/htdocs/langs/pt_MZ/loan.lang new file mode 100644 index 00000000000..6fb19e2fcd9 --- /dev/null +++ b/htdocs/langs/pt_MZ/loan.lang @@ -0,0 +1,23 @@ +# Dolibarr language file - Source file is en_US - loan +NewLoan=Novo empréstimo +ShowLoan=Mostrar empréstimo +PaymentLoan=Pagamento de empréstimo +LoanPayment=Pagamento de empréstimo +ShowLoanPayment=Mostrar pagamento de empréstimo +Interest=Juro +Term=Prazo +LoanAccountancyCapitalCode=Capital contabilístico +LoanAccountancyInsuranceCode=Seguro contabilístico +LoanAccountancyInterestCode=Interesse contabilístico +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 +ListLoanAssociatedProject=Lista de empréstimos associados ao projeto +InterestAmount=Juro +CapitalRemain=Capital permanecem +TermPaidAllreadyPaid =Este termo já está pago +CantModifyInterestIfScheduleIsUsed =Você não pode alterar o interesse se usar o programador +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Capital contabilístico por padrão +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Interesse contabilístico por padrão +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Seguro contabilístico por padrão diff --git a/htdocs/langs/pt_MZ/mailmanspip.lang b/htdocs/langs/pt_MZ/mailmanspip.lang new file mode 100644 index 00000000000..bbea232c4ef --- /dev/null +++ b/htdocs/langs/pt_MZ/mailmanspip.lang @@ -0,0 +1,25 @@ +# Dolibarr language file - Source file is en_US - mailmanspip +MailmanSpipSetup=Configuração do módulo Mailman e SPIP +MailmanTitle=Sistema de envio em massa Mailman +TestSubscribe=Para testar a inscriçao nas listas Mailman +TestUnSubscribe=Para testa a desenscriçao das listas do Mailman +MailmanCreationSuccess=O teste da assinatura foi realizado com sucesso +MailmanDeletionSuccess=O teste de cancelamento da assinatura foi realizado com sucesso +SynchroMailManEnabled=O Mailman sera atualizado +SynchroSpipEnabled=O SPIP sera atualizado +DescADHERENT_MAILMAN_ADMINPW=Senha do administrador Mailman +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_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 +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 +SuccessToAddToMailmanList=%s foi adicionado com sucesso à lista de e-mails %s ou ao banco de dados SPIP +SuccessToRemoveToMailmanList=%s foi removido com sucesso da lista de e-mails %s ou do banco de dados SPIP diff --git a/htdocs/langs/pt_MZ/mails.lang b/htdocs/langs/pt_MZ/mails.lang new file mode 100644 index 00000000000..6971a32e3a9 --- /dev/null +++ b/htdocs/langs/pt_MZ/mails.lang @@ -0,0 +1,4 @@ +# Dolibarr language file - Source file is en_US - mails +MailRecipient=Destinatário +MailingStatusDraft=Minuta +MailingStatusValidated=Validada diff --git a/htdocs/langs/pt_MZ/main.lang b/htdocs/langs/pt_MZ/main.lang index 2e691473326..60e6ab46245 100644 --- a/htdocs/langs/pt_MZ/main.lang +++ b/htdocs/langs/pt_MZ/main.lang @@ -2,20 +2,576 @@ DIRECTION=ltr FONTFORPDF=helvetica FONTSIZEFORPDF=10 -SeparatorDecimal=. -SeparatorThousand=, -FormatDateShort=%m/%d/%Y -FormatDateShortInput=%m/%d/%Y -FormatDateShortJava=MM/dd/yyyy -FormatDateShortJavaInput=MM/dd/yyyy -FormatDateShortJQuery=mm/dd/yy -FormatDateShortJQueryInput=mm/dd/yy +SeparatorDecimal=, +SeparatorThousand=Space +FormatDateShort=%d/%m/%Y +FormatDateShortInput=%d/%m/%Y +FormatDateShortJava=dd/MM/yyyy +FormatDateShortJavaInput=dd/MM/yyyy +FormatDateShortJQuery=dd/mm/yy +FormatDateShortJQueryInput=dd/mm/yy FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M FormatDateTextShort=%b %d, %Y FormatDateText=%B %d, %Y -FormatDateHourShort=%m/%d/%Y %I:%M %p -FormatDateHourSecShort=%m/%d/%Y %I:%M:%S %p -FormatDateHourTextShort=%b %d, %Y, %I:%M %p -FormatDateHourText=%B %d, %Y, %I:%M %p +FormatDateHourShort=%d/%m/%Y %I:%M %p +FormatDateHourSecShort=%d/%m/%Y %I:%M:%S %p +FormatDateHourTextShort=%d %b, %Y, %I:%M %p +FormatDateHourText=%d %B, %Y, %I:%M %p +DatabaseConnection=Login à Base de Dados +NoTemplateDefined=Nenhum modelo disponível para este tipo de email +CurrentTimeZone=Timezone PHP (do servidor apache) +EmptySearchString=Digite critérios na pesquisa +NoRecordFound=Nenhum registro encontrado +NoRecordDeleted=Nenhum registro foi deletado +NotEnoughDataYet=Sem dados suficientes +NoError=Sem erro +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 +ErrorLogoFileNotFound=O arquivo logo '%s' não se encontra +ErrorGoToGlobalSetup=Vai ao 'Empresa/Oragnisacao' configuracao para resolver isto +ErrorFailedToSendMail=Erro ao envio do e-mail (emissor +ErrorFileNotUploaded=O arquivo não foi possível transferir +ErrorWrongHostParameter=Parâmetro Servidor inválido +ErrorYourCountryIsNotDefined=Seu país não está definido. Vá para Home-Setup-Edit e poste o formulário novamente. +ErrorRecordIsUsedByChild=Falha ao excluir este registro. Esse registro é usado por pelo menos um registro filho. +ErrorWrongValue=Valor incorreto +ErrorWrongValueForParameterX=Valor incorreto para o parâmetro %s +ErrorServiceUnavailableTryLater=Serviço não disponível no momento. Tente mais tarde. +ErrorSomeErrorWereFoundRollbackIsDone=Alguns erros foram encontrados. As alterações foram revertidas. +ErrorConfigParameterNotDefined=Parametro %s nao está definidio no arquivo config conf.php do Dolibarr. +ErrorCantLoadUserFromDolibarrDatabase=Impossível encontrar o usuário %s na base de dados do Dolibarr. +ErrorNoVATRateDefinedForSellerCountry=Erro, nenhum tipo de IVM definido para o país '%s'. +ErrorNoSocialContributionForSellerCountry=Erro, nenhum tipo de imposto social / fiscal definidos para o país '%s'. +ErrorFailedToSaveFile=Erro, o registo do arquivo falhou. +ErrorCannotAddThisParentWarehouse=Voce está tentando adicionar um armazém pai, o qual ja é um filho do armazém existente +FieldCannotBeNegative=O campo "%s" não pode ser negativo +MaxNbOfRecordPerPage=Número máx de registros por página +NotAuthorized=Você não está autorizado a fazer isso. +SelectDate=Selecionar uma data +SeeAlso=Ver tambem %s +SeeHere=veja aqui +ClickHere=Clickque aqui +BackgroundColorByDefault=Cor do fundo padrão +FileRenamed=O arquivo foi renomeado com sucesso +FileGenerated=O arquivo foi gerado com sucesso +FileSaved=O arquivo foi salvo com sucesso +FileUploaded=O arquivo foi carregado com sucesso +FileTransferComplete=Arquivo (s) carregado (s) com sucesso +FilesDeleted=Arquivo (s) removido (s) com sucesso +FileWasNotUploaded=O arquivo foi selecionado, mas nao foi ainda enviado. Clique no "Anexar arquivo" para proceder. +NbOfEntries=N°. de entradas +GoToWikiHelpPage=Ler a ajuda online (necessário acesso a Internet) +GoToHelpPage=Consulte a ajuda (pode necessitar de acesso à internet) +DedicatedPageAvailable=Página de ajuda dedicada, relacionada à tela atual +HomePage=Pagina inicial +RecordDeleted=Registro apagado +RecordGenerated=Registro gerado +LevelOfFeature=Nível de funções +DolibarrInHttpAuthenticationSoPasswordUseless=Modo de autenticação do Dolibarr está definido como %s no arquivo de configuraçãoconf.php.
Isso significa que o banco de dados das senhas é externo ao Dolibarr, assim mudar este campo, pode não ter efeito. +PasswordForgotten=Esqueceu a senha? +NoAccount=Sem conta? +SeeAbove=Mencionar anteriormente +HomeArea=Inicio +ConnectedOnMultiCompany=Conectado no ambiente +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 +YouCanSetOptionDolibarrMainProdToZero=Você pode ler o arquivo de log ou definir a opção $ dolibarr_main_prod como '0' no seu arquivo de configuração para obter mais informações. +LineID=ID da linha +PrecisionUnitIsLimitedToXDecimals=Dolibarr está configurado para limitar a precisão dos preços unitários a %s Decimais. +NoFilter=Nenhum filtro +WarningYouHaveAtLeastOneTaskLate=Atenção. Voce tem no mínimo um elemento que excedeu o tempo de tolerancia +no=não +Home=Inicio +OnlineHelp=Ajuda online +PageWiki=Pagina wiki +MediaBrowser=Navegador de mídia +PeriodEndDate=Data final periodo +Activate=Ativar +Activated=Ativado +Closed=Encerrado +Closed2=Encerrado +Enabled=Ativado +Disable=Desativar +Disabled=Desativado +AddLink=Adicionar link +RemoveLink=Remover o link +Update=Modificar +CloseAs=Configurar status para +CloseBox=Remover o widget do seu painel de controle +ConfirmSendCardByMail=Você realmente deseja enviar o conteúdo deste cartão por e-mail para %s ? +Delete=Excluir +Remove=Retirar +Resiliate=Concluir +Validate=Confirmar +ToValidate=A Confirmar +SaveAs=Guardar como +SaveAndStay=Salvar e permanecer +SaveAndNew=Salvar e novo +TestConnection=Teste a login +ToClone=Cópiar +ConfirmClone=Selecione os dados que você quer clonar: +NoCloneOptionsSpecified=Não existem dados definidos para copiar +Go=Ir +Run=Attivo +Show=Ver +Hide=ocultar +ShowCardHere=Mostrar cartão +SearchMenuShortCut=Ctrl + Shift + F +QuickAdd=Adição rápida +SelectAll=Selecionar tudo +Resize=Modificar tamanho +ResizeOrCrop=Redimensionar ou cortar +Recenter=Recolocar no centro +User=Usuário +Users=Usuário +NoUserGroupDefined=Nenhum grupo definido pelo usuário +PasswordRetype=Repetir Senha +NoteSomeFeaturesAreDisabled=Antenção, só poucos módulos/funcionalidade foram ativados nesta demo +NameSlashCompany=Nome / Companhia +PersonalValue=Valor Personalizado +OldValue=Valor antigo %s +CurrentValue=Valor atual +MultiLanguage=Multi Idioma +RefOrLabel=Ref. da etiqueta +DescriptionOfLine=Descrição da Linha +Model=Modelo de Documento +DefaultModel=Modelo de documento padrão +Action=Ação +About=Acerca de +Limit=Límite +Logout=Sair +NoLogoutProcessWithAuthMode=No recurso de desconexão aplicativo com modo de autenticação +Setup=Conf. +HourStart=Comece hora +Deadline=Prazo final +DateAndHour=Data e hora +DateEnd=Data de término +DateCreation=Data criação +DateCreationShort=Data Criação +IPCreation=Endereço IP da criação +DateModification=Data Modificação +DateModificationShort=Data Modif. +IPModification=Endereço IP da modificação +DateLastModification=Última data de modificação +DateValidation=Data Validação +DateSigning=Data de assinatura +DateDue=Data Vencimento +DateValue=Data Valor +DateValueShort=Data Valor +DateOperation=Data Operação +DateOperationShort=Data Op. +DateLimit=Data Límite +DateRequest=Data Consulta +DateProcess=Data Processo +RegistrationDate=Data de registro +UserCreation=Criado por +UserModification=Alterado por +UserValidation=Usuario validado +UserCreationShort=Criado por +UserModificationShort=Modif. por +UserValidationShort=Usuarios validados +DurationDay=Día +Day=Día +days=Dias +Weeks=Semandas +Morning=Manha +Quadri=Trimistre +Rate=Rata +CurrencyRate=Taxa de conversão moeda +UseLocalTax=Incluindo taxa +UserModif=Modificado por +Default=Padrao +DefaultValue=Valor por default +DefaultValues=Valores / filtros / classificação padrão +UnitPrice=Preço Unit. +UnitPriceHT=Preço Unit. (liq.) +UnitPriceHTCurrency=Preço unitário (sem) (Moeda) +UnitPriceTTC=Preço Unit. Total +PriceU=Preço Unit. +PriceUHT=Preço Unit. +PriceUTTC=U.P. (inc. Impostos) +Amount=Valor +AmountInvoice=Valor Fatura +AmountInvoiced=Valor faturado +AmountInvoicedHT=Valor faturado (sem imposto) +AmountPayment=Valor Pagamento +AmountHTShort=Quantidade (liq.) +AmountTTCShort=Valor (incl. taxas) +AmountHT=Valor (sem impostos) +AmountTTC=Valor +AmountVAT=Valor IVA +MulticurrencyAlreadyPaid=Já paga, moeda original +MulticurrencyRemainderToPay=Permanecer para pagar, moeda original +MulticurrencyAmountHT=Valor (sem impostos) moeda original +MulticurrencyAmountTTC=Quantia (com as taxas), na moeda original +MulticurrencyAmountVAT=Valor das taxas, na moeda original +AmountLT1=Valor taxa 2 +AmountLT2=Valor taxa 3 +AmountLT1ES=Valor RE +AmountLT2ES=Valor IRPF +AmountTotal=Valor Total +AmountAverage=Valor médio +PriceQtyMinHT=Quantidade de preço min. (sem imposto) +PriceQtyMinHTCurrency=Quantidade de preço min. (sem imposto) (moeda) +TotalHTShort=Total (liq.) +TotalHT100Short=Total 100%% (liq.) +TotalHTShortCurrency=Total (excluindo em moeda) +TotalTTCShort=Total (incl. taxas) +TotalHT=Total (sem imposto) +TotalHTforthispage=Total (sem imposto) para esta página +TotalTTC=Total +TotalTTCToYourCredit=Total a crédito +TotalVATIN=IGST total +TotalLT1=Total taxa 2 +TotalLT2=Total taxa 3 +HT=Sem imposto +TTC=IVA Incluido +INCVATONLY=Com IVA +INCT=Inc. todos os impostos +VATs=Impostos sobre vendas +VATINs=Impostos IGST +LT1Type=Tipo de imposto sobre vendas 2 +LT2Type=Tipo de imposto sobre vendas 3 +VATRate=Taxa de IVA +VATCode=Codigo do IVA +VATNPR=Valor taxa NPR +DefaultTaxRate=Taxa de imposto padrão +RemainToPay=Permanecer para pagar +Module=Modulo/Aplicacao +Modules=Módulos / Aplicações +Filters=Filtros +OtherStatistics=Outras estatisticas +Favorite=Favorito +RefSupplier=Ref. fornecedor +RefPayment=Ref. Pagamento +Comment=Comentario +Comments=Comentarios +ActionsToDo=Ações a realizar +ActionsToDoShort=Para fazer +ActionNotApplicable=Não aplicavel +ActionRunningNotStarted=A Iniciar +ActionUncomplete=Incompleto +LatestLinkedEvents=Últimos eventos vinculados %s +CompanyFoundation=Empresa / Organização +Accountant=Contador +ContactsForCompany=Contatos desta empresa +ContactsAddressesForCompany=Contatos/Endereços do Cliente ou Fornecedor +AddressesForCompany=Endereços para este terceiro +ActionsOnCompany=Eventos para o terceiro +ActionsOnContact=Eventos para este contato/Endereço +ActionsOnContract=Eventos para este contrato +ActionsOnMember=Eventos deste membro +ActionsOnProduct=Eventos deste produto +ToDo=Para fazer +RequestAlreadyDone=Pedido ja registrado +FilterOnInto=Critério da pesquisa '%s' nos campos %s +RemoveFilter=Eliminar filtro +GeneratedOn=Gerado a %s +DolibarrStateBoard=Estatísticas do banco de dados +DolibarrWorkBoard=Itens abertos +NoOpenedElementToProcess=Nenhum elemento aberto para processar +Available=Disponivel +NotYetAvailable=Ainda não disponível +NotAvailable=Não disponível +Categories=Tags / categorias +Category=Tag / categoria +to=para +To=para +ToDate=para +ToLocation=para +Other=Outros +OtherInformations=Outra informação +ApprovedBy2=Aprovado pelo (segunda aprovação) +Draft=Minuta +Validated=Validada +OpenAll=Abertos(todos) +ClosedAll=Fechados(Todos) +Unknown=Versão Desconhecida +Received=Recebida +ByCompanies=Por Fornecedor +ByUsers=Pelo usuário +NoneF=Nenhum +LateDesc=Um item é definido como atrasado de acordo com a configuração do sistema no menu Início - Configuração - Alertas. +DeletePicture=Apagar foto +ConfirmDeletePicture=Confirmar eliminação de fotografias +LoginEmail=Usuario (e-mail) +LoginOrEmail=Usuraio ou E-mail +CurrentLogin=Login atual +EnterLoginDetail=Digite os detalhes do login +May=Mai +Month05=Mai +MonthShort02=Fev +MonthShort04=Abr +MonthShort05=Mai +MonthShort08=Ago +MonthShort09=Set +MonthShort10=Out +MonthShort12=Dez +AttachedFiles=Arquivos e Documentos Anexos +JoinMainDoc=Junte-se ao documento principal +ReportPeriod=Periodo de Análise +Fill=Preencher +Reset=Resetar +File=Arquivo +Files=Arquivos +AmountInCurrency=Valores Apresentados em %s +NbOfThirdParties=Numero de Fornecedores +NbOfObjects=Numero de Objetos +Referers=Itens correlatos +Uncheck=Desmarque +Entities=Entidadees +CustomerPreview=Historico Cliente +SupplierPreview=Visualização do fornecedor +ShowCustomerPreview=Ver Historico Cliente +SeeAll=Ver tudo +SendByMail=Envio por e-mail +MailSentBy=Mail enviado por +Email=E-mail +NotRead=Não lido +NoMobilePhone=Sem celular +Refresh=Atualizar +BackToList=Mostar Lista +BackToTree=Voltar à árvore +CanBeModifiedIfOk=Pode modificarse se é valido +CanBeModifiedIfKo=Pode modificarse senão é valido +ValueIsValid=Valor é válido +ValueIsNotValid=Valor inválido +RecordCreatedSuccessfully=Registro criado com sucesso +RecordsModified=%sregistros modificados +RecordsDeleted=%sregistros deletados +RecordsGenerated=%sregistros gerados +FeatureDisabled=Função Desativada +MoveBox=Widget de movimento +NotEnoughPermissions=Não tem permissões para esta ação +Receive=Recepção +CompleteOrNoMoreReceptionExpected=Completo nada mais a fazer +ExpectedQty=Quantidade prevista +YouCanChangeValuesForThisListFromDictionarySetup=Você pode alterar valores para esta lista no menu Configuração - Dicionários +YouCanChangeValuesForThisListFrom=Você pode alterar valores para esta lista no menu %s +YouCanSetDefaultValueInModuleSetup=Você pode definir o valor padrão usado ao criar um novo registro na configuração do módulo +UploadDisabled=Carregamento Desativada +MenuTaxesAndSpecialExpenses=Impostos | Despesas especiais +ThisLimitIsDefinedInSetup=Límite Dolibarr (menu inicio-configuração-segurança): %s Kb, PHP limit: %s Kb +NoFileFound=Nenhum documento carregado +CurrentTheme=Tema atual +CurrentMenuManager=Administração do menu atual +Screen=Tela +DisabledModules=Módulos desativados +HidePassword=Mostrar comando com senha oculta +UnHidePassword=Mostrar comando real com a senha visivel +RootOfMedias=Raiz das mídias públicas (/ media) +AddFile=Adicionar arquivo +FreeZone=Produto de texto livre +FreeLineOfType=Item de texto livre, digite: +CloneMainAttributes=Clonar o objeto com estes atributos +ReGeneratePDF=Re-gerar PDF +PDFMerge=Fusão de PDF +Merge=Fusão +PrintContentArea=Mostrar pagina a se imprimir na area principal +MenuManager=Administração do menu +WarningYouAreInMaintenanceMode=Aviso, voce está em modo manutenção> Só login %s é permitido usar a app neste modo. +CoreErrorMessage=Desculpe, ocorreu um erro. Entre em contato com o administrador do sistema para verificar os registros ou desative $ dolibarr_main_prod = 1 para obter mais informações. +CreditCard=Cartão de credito +CreditOrDebitCard=Cartao de credito ou debito +FieldsWithAreMandatory=Campos com %s são obrigatorios +FieldsWithIsForPublic=Os campos com %s são exibidos na lista pública de membros. Se você não quiser isso, desmarque a caixa "pública". +NotSupported=Não suportado +RequiredField=Campo obrigatorio +ValidateBefore=O item deve ser validado antes de usar este recurso +Visibility=Visível +TotalizableDesc=Este campo é totalizável na lista +Hidden=Escondido +Resources=Resorsas +IPAddress=endereco IP +Frequency=Frequencia +IM=Mensagems instantaneas +AttributeCode=Codigo do atributo +URLPhoto=URL da photo/logo +SetLinkToAnotherThirdParty=Atalho para outro terceiro +LinkTo=Link para +LinkToProposal=Link para a proposta +LinkToOrder=Linque para o pedido +LinkToInvoice=Link para a fatura +LinkToTemplateInvoice=Link para fatura modelo +LinkToSupplierOrder=Link para Ordem de compra +LinkToSupplierInvoice=Link para a fatura do fornecedor +LinkToContract=Link para o Contrato +LinkToIntervention=Link para a Intervensão +SetToDraft=Voltar para modo rascunho +ClickToRefresh=Clique para atualizar +EditWithEditor=Editar com o CKEditor +EditHTMLSource=Editar fonte HTML +ObjectDeleted=Objeto %s apagado +ByTown=Por cidade +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 +AdminTools=Ferramentas de administração +ModulesSystemTools=Ferramentas de modulos +NoPhotoYet=Sem fotos disponiveis no momento +Dashboard=Painel de Controle +MyDashboard=Meu painel +Deductible=Deduzivel +from=de +toward=para +SelectAction=Selecionar ação +SelectTargetUser=Selecione o usuário / funcionário de destino +HelpCopyToClipboard=Use Ctrl+C para copiar para o clipboard +SaveUploadedFileWithMask=Salvar arquivo no servidor com nome "%s" (alternativamente "%s") +OriginFileName=Nome original do arquivo +SetDemandReason=Escolher fonte +SetBankAccount=Definir conta bancaria +ViewPrivateNote=Ver anotaçoes +XMoreLines=%s linha(s) escondidas +ShowMoreLines=Mostrar mais / menos linhas +PublicUrl=URL pública +AddBox=Adicionar caixa +PrintFile=Imprimir arquivo %s +ShowTransaction=Mostrar entrada na conta bancária +ShowIntervention=Mostrar intervençao +GoIntoSetupToChangeLogo=Vá para Home - Setup - Company para alterar o logotipo ou vá para Home - Setup - Display para ocultar. +Denied=Negado +Gender=Gênero +Genderman=Masculino +Genderwoman=Feminino +Genderother=Outros +ViewList=Exibição de lista +ViewGantt=Visualização Gantt +ViewKanban=Visualização Kanban +GoodBye=Tchau +Sincerely=Sinceramente +ConfirmDeleteObject=Tem certeza de que deseja excluir este objeto? +DeleteLine=Apagar linha +ConfirmDeleteLine=Você tem certeza que deseja excluir esta linha? +ErrorPDFTkOutputFileNotFound=Erro: o arquivo não foi gerado. Verifique se o comando 'pdftk' está instalado em um diretório incluído na variável de ambiente $ PATH (somente linux / unix) ou entre em contato com o administrador do sistema. +NoPDFAvailableForDocGenAmongChecked=Nenhum PDF estava disponível para a geração de documentos entre os registros verificados +TooManyRecordForMassAction=Registros demais selecionados para ação em massa. A ação é restrita a uma lista de registros %s. +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 +ConfirmMassDeletion=Confirmação exclusão em massa +ConfirmMassDeletionQuestion=Tem certeza que voce quer excluir %s registros selecionados +RelatedObjects=Objetos Relacionados +ClassifyBilled=Classificar Faturado +ClassifyUnbilled=Classificar nao faturado +FrontOffice=Frente do escritório +BackOffice=Fundo do escritório +View=Visão +Exports=Exportações +IncludeDocsAlreadyExported=Incluir documentos já exportados +ExportOfPiecesAlreadyExportedIsEnable=A exportação de peças já exportadas está habilitada +ExportOfPiecesAlreadyExportedIsDisable=A exportação de peças já exportadas está desabilitada +AllExportedMovementsWereRecordedAsExported=Todos as movimentações exportadas foram salvos como exportadas +NotAllExportedMovementsCouldBeRecordedAsExported=Nem todos as movimentações exportadas puderam ser salvas como exportadas +Miscellaneous=Variados +Calendar=Calendário +GroupBy=Agrupar por +ViewFlatList=Visão da lista resumida +RemoveString=Remover string '%s' +DirectDownloadLink=Link de download público +DirectDownloadInternalLink=Link privado para baixar +Download=Baixar +DownloadDocument=Descarregar documento +ActualizeCurrency=Atualizar taxa de câmbio +Fiscalyear=Ano fiscal +ModuleBuilder=Módulo e Application Builder +ClickToShowHelp=Clique para mostrar ajuda de ajuda +WebSiteAccounts=Conta do website +TitleSetToDraft=Volte para o rascunho +ConfirmSetToDraft=Tem certeza de que deseja voltar ao status de rascunho? +FileNotShared=Arquivo não compartilhado para público externo +LeadOrProject=Lead | Projeto +LeadsOrProjects=Leads | Projetos +Lead=Conduzir +Leads=Conduz +ListOpenLeads=Listar leads abertos +ListOpenProjects=Listar projetos abertos +NewLeadOrProject=Novo lead ou projeto +LineNb=Sem Linha. +IncotermLabel=Termos Internacionais de Comércio +TabLetteringCustomer=Rotulação do cliente +TabLetteringSupplier=Rotulação de fornecedor +Saturday=Sabado +SaturdayMin=Sab +Day6=Sabado +thirteen=treze +SetRef=Escolher referência +Select2ResultFoundUseArrows=Alguns resultados encontrados. Use as setas para selecionar. +Select2Enter=Forneça +Select2MoreCharactersMore= Sintaxe de pesquisa:
| OU (a | b)
* Qualquer caractere (a * b)
^ Começa com (^ ab)
$ Terminar com (ab $)
+Select2LoadingMoreResults=Carregando mais resultados... +Select2SearchInProgress=Busca em andamento... +SearchIntoContacts=Contatos +SearchIntoUsers=Usuários +SearchIntoBatch=Lotes / Seriais +SearchIntoMO=Ordens de fabricação +SearchIntoCustomerInvoices=Faturas de clientes +SearchIntoSupplierInvoices=Faturas de fornecedores +SearchIntoCustomerOrders=Pedido de Venda +SearchIntoSupplierOrders=Pedidos de compra +SearchIntoSupplierProposals=Propostas de fornecedores +SearchIntoContracts=Contratos +SearchIntoCustomerShipments=Remessas do cliente +SearchIntoVendorPayments=Pagamentos do fornecedor +CommentLink=Comentarios +CommentPage=Espaço para comentarios +CommentDeleted=Comentário deletado +Everybody=A todos +PayedBy=Pago por +PayedTo=Paga para +Monthly=Por mês +Remote=Controlo remoto +Deletedraft=Excluir rascunho +ConfirmMassDraftDeletion=Confirmação de exclusão de massa de esboço +SelectAThirdPartyFirst=Selecione um terceiro primeiro ... +YouAreCurrentlyInSandboxMode=No momento você está no %s modo "caixa de areia" +AnalyticCode=Código analitico +ShowCompanyInfos=Mostrar informações da empresa +ShowMoreInfos=Mostrar mais informações +NoFilesUploadedYet=Por favor, carregue um doc. primeiro +SeePrivateNote=Veja avisos privados +PaymentInformation=Informações de Pagamento +ValidFrom=Válido de +NoRecordedUsers=Sem Usuários +ToClose=Para Fechar +ToProcess=A processar +ToApprove=Para Aprovar +GlobalOpenedElemView=Visão Global +NoArticlesFoundForTheKeyword=Sem artigos encontrados para o termo '%s' +NoArticlesFoundForTheCategory=Sem artigos encontrados para a categoria +ToAcceptRefuse=Para Aceitar | Recusar +ContactDefault_agenda=Ação +ContactDefault_commande=Pedido +ContactDefault_invoice_supplier=Fatura do Fornecedor +ContactDefault_order_supplier=Ordem de Compra +ContactDefault_propal=Proposta +ContactDefault_supplier_proposal=Proposta do Fornecedor +ContactAddedAutomatically=Contato adicionado a partir de informações de terceiros +StatisticsOn=Estatísticas sobre +SelectYourGraphOptionsFirst=Selecione suas opções para criar um gráfico +StatusOfRefMustBe=O status de %s deve ser %s +DeleteFileHeader=Confirmar exclusão de arquivo +DeleteFileText=Deseja realmente excluir este arquivo? +SwitchInEditModeToAddTranslation=Alterne modo de edição para adicionar traduções para este idioma +NotUsedForThisCustomer=Não usado para este cliente +AmountMustBePositive=O valor deve ser positivo +ByStatus=Por status +Used=Usado +ASAP=O mais breve possível +CREATEInDolibarr=Registro %s criado +DateOfBirth=Data de nascimento +OnHold=Em espera +ClientTZ=Fuso Horário do cliente (usuário) +Terminate=Concluir diff --git a/htdocs/langs/pt_MZ/margins.lang b/htdocs/langs/pt_MZ/margins.lang new file mode 100644 index 00000000000..36c8bb59d1d --- /dev/null +++ b/htdocs/langs/pt_MZ/margins.lang @@ -0,0 +1,26 @@ +# 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 +DisplayMarkRates=Exibir relações margem-preço de venda +InputPrice=Preço de entrada +margesSetup=Configuração das margens de lucro +ProductMargins=Margens de produtos +CustomerMargins=Margems de clientes +SalesRepresentativeMargins=Tolerância aos representante de vendas +ContactOfInvoice=Contato da fatura +UserMargins=Margens do usuário +ProductService=Produto ou serviço +ForceBuyingPriceIfNull=Compra Força preço / custo para o preço de venda se não definido +MARGIN_METHODE_FOR_DISCOUNT=Metodologia de margem para descontos globais +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 +MargeType2=Margem sobre o Preço Médio Ponderado (PMP) +MargeType3=Margem sobre o preço de custo +MarginTypeDesc=*Margem sobre o melhor preço de compra = Preço de venda - Melhor preço de fornecedor definido no cartão do produto
*Margem no Preço Médio Ponderado (WAP) = Preço de Venda - Preço Médio Ponderado pelo Produto (WAP) ou melhor preço de fornecedor se o WAP ainda não estiver definido
*Margem no preço de custo = preço de venda - preço de custo definido no cartão do produto ou WAP se o preço de custo não estiver definido ou o melhor preço do fornecedor se o WAP ainda não estiver definido +AgentContactType=Tipo contato do agente comercial +AgentContactTypeDetails=Defina qual tipo de contato (vinculado nas faturas) será usado para o relatório de margem por contato / endereço. Observe que a leitura das estatísticas de um contato não é confiável, pois na maioria dos casos o contato pode não ser definido explicitamente nas faturas. +rateMustBeNumeric=Rata deve ser um valor numerico +markRateShouldBeLesserThan100=Rata marcada teria que ser menor do que 100 +ShowMarginInfos=Mostrar informações sobre margens +CheckMargins=Detalhes das margens diff --git a/htdocs/langs/pt_MZ/members.lang b/htdocs/langs/pt_MZ/members.lang new file mode 100644 index 00000000000..c99cfc77e20 --- /dev/null +++ b/htdocs/langs/pt_MZ/members.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - members +MemberStatusDraft=Rascunho (precisa ser validada) +MemberStatusDraftShort=Minuta +MemberStatusActiveShort=Validada +MemberStatusNoSubscriptionShort=Validada diff --git a/htdocs/langs/pt_MZ/modulebuilder.lang b/htdocs/langs/pt_MZ/modulebuilder.lang new file mode 100644 index 00000000000..d49ff08f6ab --- /dev/null +++ b/htdocs/langs/pt_MZ/modulebuilder.lang @@ -0,0 +1,57 @@ +# Dolibarr language file - Source file is en_US - modulebuilder +ModuleBuilderDesc2=Caminho onde os módulos são gerados/editados (primeiro diretório para módulos externos definidos em %s): %s +ModuleBuilderDesc3=Módulos gerados / editáveis ​​encontrados: %s +ModuleBuilderDescmenus=Esta guia é dedicada a definir as entradas do menu fornecidas pelo seu módulo. +ModuleBuilderDescpermissions=Essa guia é dedicada para definir as novas permissões que você deseja fornecer com seu módulo. +ModuleBuilderDesctriggers=Esta é a visão dos gatilhos fornecidos pelo seu módulo. Para incluir o código executado quando um evento de negócios acionado é iniciado, basta editar esse arquivo. +ModuleBuilderDeschooks=Esta aba é dedicada aos ganchos. +ModuleBuilderDescwidgets=Esta aba é dedicada a gerenciar / construir widgets. +ModuleBuilderDescbuildpackage=Você pode gerar aqui um arquivo de pacote "pronto para distribuir" (um arquivo .zip normalizado) do seu módulo e um arquivo de documentação "pronto para distribuir". Basta clicar no botão para criar o pacote ou arquivo de documentação. +EnterNameOfModuleToDeleteDesc=Você pode excluir seu módulo. AVISO: Todos os arquivos de codificação do módulo (gerados ou criados manualmente) e dados estruturados e documentação serão apagados! +EnterNameOfObjectToDeleteDesc=Você pode excluir um objeto. AVISO: Todos os arquivos de codificação (gerados ou criados manualmente) relacionados ao objeto serão excluídos! +BuildDocumentation=Documentação de compilação +ModuleIsLive=Este módulo foi ativado. Qualquer alteração pode interromper um recurso atual ao vivo. +DescriptionLong=Longa descrição +DescriptorFile=Arquivo descritor do módulo +ApiClassFile=Arquivo para classe API do PHP +PageForList=Página PHP para lista de registro +PageForCreateEditView=Página PHP para criar / editar / visualizar um registro +PathToModulePackage=Caminho para o zip do pacote de módulo / aplicativo +PathToModuleDocumentation=Caminho para o arquivo da documentação do módulo/aplicativo (%s) +FileNotYetGenerated=Arquivo ainda não gerado +RegenerateClassAndSql=Forçar atualização de arquivos .class e .sql +SpecificationFile=Arquivo de documentação +ObjectProperties=Propriedades do Objeto +DatabaseIndex=Índice do banco de dados +CSSFile=Arquivo CSS +JSFile=Arquivo JavaScript +PageForLib=Arquivo para a biblioteca comum do PHP +PageForObjLib=Arquivo para a biblioteca PHP dedicada ao objeto +SqlFileKeyExtraFields=Arquivo SQL para chaves de atributos complementares +ListOfDictionariesEntries=Lista de entradas dos dicionários +DisplayOnPdf=Exibir em PDF +MenusDefDesc=Defina aqui os menus fornecidos pelo seu módulo +DictionariesDefDesc=Defina aqui os dicionários fornecidos pelo seu módulo +PermissionsDefDesc=Defina aqui as novas permissões fornecidas pelo seu módulo +PermissionsDefDescTooltip=As permissões fornecidas pelo seu módulo/aplicativo são definidas no array $this-> rights no arquivo descritor do módulo. Você pode editar manualmente este arquivo ou usar o editor incorporado.

Nota: Uma vez definida (e módulo reativado), as permissões são visíveis na configuração de permissões padrão %s. +AddLanguageFile=Adicionar arquivo de idioma +ContentOfREADMECustomized=Nota: O conteúdo do arquivo README.md foi substituído pelo valor específico definido na instalação do ModuleBuilder. +ContentCantBeEmpty=O conteúdo do arquivo não pode estar vazio +WidgetDesc=Você pode gerar e editar aqui os widgets que serão incorporados ao seu módulo. +CSSDesc=Você pode gerar e editar aqui um arquivo com CSS personalizado incorporado ao seu módulo. +JSDesc=Você pode gerar e editar aqui um arquivo com Javascript personalizado incorporado ao seu módulo. +CLIDesc=Você pode gerar aqui alguns scripts de linha de comando que você deseja fornecer com seu módulo. +CLIFile=Arquivo CLI +NoCLIFile=Nenhum arquivo CLI +UseSpecificEditorName =Use um nome de editor específico +UseSpecificEditorURL =Use um URL de editor específico +UseSpecificFamily =Use uma família específica +UseSpecificAuthor =Use um autor específico +UseSpecificVersion =Use uma versão inicial específica +IncludeDocGenerationHelp=Se você marcar isto, um código será gerado para adicionar uma caixa "Gerar documento" ao registro. +ShowOnCombobox=Mostrar valor na caixa de combinação +KeyForTooltip=Chave para dica de ferramenta +NotEditable=Não editável +ForeignKey=Chave estrangeira +AsciiToHtmlConverter=Converter ASCII para HTML +AsciiToPdfConverter=Converter ASCII para PDF diff --git a/htdocs/langs/pt_MZ/mrp.lang b/htdocs/langs/pt_MZ/mrp.lang new file mode 100644 index 00000000000..30afe170110 --- /dev/null +++ b/htdocs/langs/pt_MZ/mrp.lang @@ -0,0 +1,4 @@ +# Dolibarr language file - Source file is en_US - mrp +Mrp=Ordens de fabricação +MenuMRP=Ordens de fabricação +DeleteWorkstation=Excluir diff --git a/htdocs/langs/pt_MZ/multicurrency.lang b/htdocs/langs/pt_MZ/multicurrency.lang new file mode 100644 index 00000000000..b5dc54f3023 --- /dev/null +++ b/htdocs/langs/pt_MZ/multicurrency.lang @@ -0,0 +1,16 @@ +# Dolibarr language file - Source file is en_US - multicurrency +MultiCurrency=Multi Moeda +ErrorDeleteCurrencyFail=Erro ao excluir falha +MULTICURRENCY_USE_RATE_ON_DOCUMENT_DATE=Use a data do documento para encontrar a taxa de câmbio, em vez de usar a taxa conhecida mais recente +multicurrency_useOriginTx=Quando um objeto é criado a partir de outro, mantenha a taxa original do objeto de origem (caso contrário, use a taxa conhecida mais recente) +CurrencyLayerAccount=API CurrencyLayer +CurrencyLayerAccount_help_to_synchronize=Você deve criar uma conta no site %s para usar essa funcionalidade.
Obtenha sua chave de API.
Se você usar uma conta gratuita, não poderá alterar a moeda de origem (USD por padrão).
Se sua moeda principal não for USD, o aplicativo irá recalcular automaticamente.

Você está limitado a 1000 sincronizações por mês. +multicurrency_appId=Chave API +multicurrency_appCurrencySource=Moeda de origem +multicurrency_alternateCurrencySource=Moeda de origem alternativa +CurrenciesUsed=Moedas utilizadas +CurrenciesUsed_help_to_add=Adicione as diferentes moedas e taxas que você precisa usar nas suas propostas , ordens etc. +MulticurrencyReceived=Moeda original recebida +MulticurrencyRemainderToTake=Quantia restante, moeda original +MulticurrencyPaymentAmount=Valor do pagamento, moeda original +AmountToOthercurrency=Quantia para (na moeda da conta receptora) diff --git a/htdocs/langs/pt_MZ/oauth.lang b/htdocs/langs/pt_MZ/oauth.lang new file mode 100644 index 00000000000..27fbaa19d68 --- /dev/null +++ b/htdocs/langs/pt_MZ/oauth.lang @@ -0,0 +1,22 @@ +# Dolibarr language file - Source file is en_US - oauth +ConfigOAuth=Configuração do OAuth +OAuthServices=Serviços OAuth +ManualTokenGeneration=Geração manual do token +TokenManager=Gerenciador de tokens +IsTokenGenerated=O token está gerado? +NoAccessToken=Nenhum token de acesso guardado na base de dados local +HasAccessToken=Um token foi gerado e salvo no banco de dados local +NewTokenStored=Token recebido e salvo +ToCheckDeleteTokenOnProvider=Clique aqui para verificar/apagar autorização salva pelo provedor OAuth %s +TokenDeleted=Token excluído +DeleteAccess=Clique aqui para apagar o token +UseTheFollowingUrlAsRedirectURI=Use o URL a seguir como o URI de redirecionamento ao criar suas credenciais com seu provedor OAuth: +SeePreviousTab=Ver aba anterior +OAuthIDSecret=Identificação OAuth e Senha +TOKEN_REFRESH=Token Atualizar Presente +TOKEN_EXPIRED=Token vencido +TOKEN_EXPIRE_AT=Token expira no +TOKEN_DELETE=Excluir token salvo +OAUTH_GOOGLE_NAME=Serviço do Google OAuth +OAUTH_GITHUB_NAME=Serviço OAuth GitHub +OAUTH_GITHUB_SECRET=OAuth GitHub secreto diff --git a/htdocs/langs/pt_MZ/opensurvey.lang b/htdocs/langs/pt_MZ/opensurvey.lang new file mode 100644 index 00000000000..6b191a5b82f --- /dev/null +++ b/htdocs/langs/pt_MZ/opensurvey.lang @@ -0,0 +1,48 @@ +# Dolibarr language file - Source file is en_US - opensurvey +Survey=Enquete +Surveys=Enquetes +OrganizeYourMeetingEasily=Organize suas reuniões e pesquisas facilmente. Primeiro selecione o tipo de pesquisa ... +NewSurvey=Nova enquete +OpenSurveyArea=Área de enquetes +AddACommentForPoll=Você pode adicionar um comentário na enquete... +CreatePoll=Criar uma enquete +PollTitle=Titulo da enquete +ToReceiveEMailForEachVote=Receba um e-mail a cada novo voto +TypeDate=Modelo para datas +TypeClassic=Modelo padrão +RemoveAllDays=Remova todos os dias +CopyHoursOfFirstDay=Copiar horários do primeiro dia +RemoveAllHours=Apagar todos os horários +TheBestChoice=A melhor escolha no momento é +TheBestChoices=As melhores escolhas no momento são +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. +ConfirmRemovalOfPoll=Você tem certeza que deseja remover esta enquete (e todos os votos) +RemovePoll=Remover enquete +UrlForSurvey=URL para obter um acesso direto à pesquisa +PollOnChoice=Você está criando uma enquete e se quiser ainda pode optar por votos multi escolhas em cada item. Basta entrar com o tipo de resposta para o voto: +CreateSurveyDate=Criar uma enquete para datas +CreateSurveyStandard=Criar uma enquete padrão +CheckBox=Caixa de resposta simples +YesNoList=Escolher (nulo/sim/não) +PourContreList=Escolher (nulo/a favor/contra) +TitleChoice=Escolha a resposta +ExportSpreadsheet=Exportar resultado para planilha +ExpireDate=Data Límite +NbOfSurveys=Número de enquetes +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. +YouAreInivitedToVote=Você foi convidado para votar nesta enquete +VoteNameAlreadyExists=Este nome já foi usada na enquete +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=Para cada dia selecionado, você pode escolher, ou não, as horas de reunião no seguinte formato:
- vazio
- "8h", "8H" ou "8:00" para dar a hora de início de uma reunião,
- "8-11", "8h-11h", "8H-11H" ou "8: 00-11: 00" para dar as horas de início e fim de uma reunião,
- "8h15-11h15", "8H15-11H15" ou "8: 15-11: 15" para a mesma coisa, mas com minutos. +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 +MoreChoices=Digite mais opções para os votos +SurveyExpiredInfo=A enquete foi encerrada ou o período de votação expirou. +EmailSomeoneVoted=%s preencheu uma linha.\nVocê pode encontrar sua enquete no link:\n%s +ShowSurvey=Mostrar pesquisa diff --git a/htdocs/langs/pt_MZ/orders.lang b/htdocs/langs/pt_MZ/orders.lang new file mode 100644 index 00000000000..3b78910a81d --- /dev/null +++ b/htdocs/langs/pt_MZ/orders.lang @@ -0,0 +1,22 @@ +# Dolibarr language file - Source file is en_US - orders +Order=Pedido +PdfOrderTitle=Pedido +Orders=Pedidos +SuppliersOrders=Pedidos de compra +CustomersOrders=Pedidos de venda +StatusOrderDraftShort=Minuta +StatusOrderValidatedShort=Validada +StatusOrderSentShort=Em andamento +StatusOrderToProcessShort=A processar +StatusOrderDraft=Rascunho (precisa ser validada) +TypeContact_commande_external_BILLING=Contato de fatura de cliente +TypeContact_commande_external_SHIPPING=Contato de envio de cliente +TypeContact_order_supplier_external_BILLING=Contato da fatura do fornecedor +TypeContact_order_supplier_external_SHIPPING=Contato de remessa do fornecedor +OrderByEMail=E-mail +StatusSupplierOrderDraftShort=Minuta +StatusSupplierOrderValidatedShort=Validada +StatusSupplierOrderSentShort=Em andamento +StatusSupplierOrderToProcessShort=A processar +StatusSupplierOrderDraft=Rascunho (precisa ser validada) +StatusSupplierOrderValidated=Validada diff --git a/htdocs/langs/pt_MZ/other.lang b/htdocs/langs/pt_MZ/other.lang new file mode 100644 index 00000000000..7b033fc78de --- /dev/null +++ b/htdocs/langs/pt_MZ/other.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - other +Notify_BILL_VALIDATE=Fatura de cliente confirmada +SeeModuleSetup=Veja configuração do módulo %s diff --git a/htdocs/langs/pt_MZ/partnership.lang b/htdocs/langs/pt_MZ/partnership.lang new file mode 100644 index 00000000000..75e97db9d39 --- /dev/null +++ b/htdocs/langs/pt_MZ/partnership.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - partnership +Partnership=Parceria +DatePartnershipEnd=Data de término diff --git a/htdocs/langs/pt_MZ/paybox.lang b/htdocs/langs/pt_MZ/paybox.lang new file mode 100644 index 00000000000..6ca0e914a67 --- /dev/null +++ b/htdocs/langs/pt_MZ/paybox.lang @@ -0,0 +1,23 @@ +# 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 %s para que o pagamento seja criado automaticamente quando validado pelo Paybox. +YourPaymentHasBeenRecorded=Esta pagina confirma que o seu pagamento foi registrado com suçesso. Obrigado. +YourPaymentHasNotBeenRecorded=Seu pagamento NÃO foi registrado e a transação foi cancelada. Obrigado. +AccountParameter=Parametros da conta +UsageParameter=Parametros de uso +InformationToFindParameters=Ajuda a buscar suas %s informaçoes da conta +PAYBOX_CGI_URL_V2=URL do Paybox CGI modulo para pagamento +CSSUrlForPaymentForm=CSS style sheet URL para modelo de pagamento +NewPayboxPaymentReceived=Novo pagamento recebido Paybox +NewPayboxPaymentFailed=Novo pagamento Paybox tentou, mas não conseguiu +PAYBOX_PAYONLINE_SENDEMAIL=Aviso por e-mail depois de uma tentativa de pagamento (sucesso ou falha) +PAYBOX_PBX_IDENTIFIANT=Valor para PBX ID +PAYBOX_HMAC_KEY=Chave HMAC diff --git a/htdocs/langs/pt_MZ/paypal.lang b/htdocs/langs/pt_MZ/paypal.lang new file mode 100644 index 00000000000..8f57a572bdb --- /dev/null +++ b/htdocs/langs/pt_MZ/paypal.lang @@ -0,0 +1,29 @@ +# Dolibarr language file - Source file is en_US - paypal +PaypalSetup=Configuração do módulo PayPal +PaypalDesc=Este módulo permite o pagamento por clientes via PayPal. Isso pode ser usado para um pagamento ad-hoc ou para um pagamento relacionado a um objeto Dolibarr (fatura, pedido, ...) +PaypalOrCBDoPayment=Pague com PayPal (cartão ou PayPal) +PAYPAL_API_SANDBOX=Modo teste/caixa de areia +PAYPAL_API_USER=API usuario +PAYPAL_API_PASSWORD=API senha +PAYPAL_API_SIGNATURE=API assinatura +PAYPAL_SSLVERSION=Versão do SSL do cURL +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Oferta de pagamento "integral" (cartão de crédito + PayPal) ou apenas "PayPal" +PaypalModeIntegral=Integralmente +PaypalModeOnlyPaypal=PayPal apenas +ThisIsTransactionId=Eis o id da transação: %s +PAYPAL_ADD_PAYMENT_URL=Inclua o URL de pagamento do PayPal quando enviar um documento por e-mail +NewOnlinePaymentFailed=Foi tentado novo pagamento online, mas sem hêxito +ONLINE_PAYMENT_SENDEMAIL=Endereço de e-mail para notificações após cada tentativa de pagamento (para sucesso e falha) +ReturnURLAfterPayment=Retornar ao URL após o pagamento +ValidationOfOnlinePaymentFailed=A validação do pagamento online falhou +PaymentSystemConfirmPaymentPageWasCalledButFailed=A página de confirmação de pagamento, que foi chamada pelo sistema de pagamento, retornou um erro +SetExpressCheckoutAPICallFailed=Falha ao chamar a API: SetExpressCheckout. +DoExpressCheckoutPaymentAPICallFailed=Falha ao chamar a API: DoExpressCheckoutPayment. +DetailedErrorMessage=Mensagem de erro detalhada +ShortErrorMessage=Mensagem curta de erro +ErrorCode=Código do erro +ErrorSeverityCode=Erro grave de código +PaypalLiveEnabled=Modo "ao vivo" do PayPal ativado (caso contrário, modo teste/sandbox) +PostActionAfterPayment=Poste as ações após os pagamentos +CardOwner=Titular do cartão +PayPalBalance=Crédito Paypal diff --git a/htdocs/langs/pt_MZ/productbatch.lang b/htdocs/langs/pt_MZ/productbatch.lang new file mode 100644 index 00000000000..04732b11ece --- /dev/null +++ b/htdocs/langs/pt_MZ/productbatch.lang @@ -0,0 +1,40 @@ +# Dolibarr language file - Source file is en_US - productbatch +ManageLotSerial=Use lote / número de série +ProductStatusOnBatch=Sim (lote obrigatório) +ProductStatusOnSerial=Sim (número de série exclusivo necessário) +ProductStatusNotOnBatch=Não (lote / série não utilizado) +ProductStatusOnBatchShort=Lot. +Batch=Lote / Série +atleast1batchfield=Compra prazo de validade ou data de venda ou Lote / Número de série +batch_number=Lote / Número de série +BatchNumberShort=Lote / Serial +EatByDate=Compra-por data +DetailBatchNumber=Detalhes Lote / Serial +printBatch=Lote / Serial: %s +printEatby=Compra-por: %s +printSellby=Venda-por: %s +printQty=Qtde: %d +AddDispatchBatchLine=Adicione uma linha para Shelf Life expedição +WhenProductBatchModuleOnOptionAreForced=Quando o módulo Lote / Série está ativado, a redução automática de estoque é forçada a 'Diminuir estoques reais na validação do envio' e o modo de aumento automático é forçado a 'Aumentar estoques reais no despacho manual em depósitos' e não pode ser editado. Outras opções podem ser definidas como você deseja. +ProductDoesNotUseBatchSerial=Este produto não utiliza Lote / número de série +ProductLotSetup=Configuração do módulo lote/nº de série +ShowCurrentStockOfLot=Exibir o estoque atual para o produto/lote +ShowLogOfMovementIfLot=Exibir o registro de movimentações para o produto/lote +SerialNumberAlreadyInUse=O número de série %s já é usado para o produto %s +TooManyQtyForSerialNumber=Você só pode ter um produto %s para o número de série %s +ManageLotMask=Máscara personalizada +CustomMasks=Opção para definir uma máscara de numeração diferente para cada produto +BatchLotNumberingModules=Regra de numeração para geração automática de número de lote +BatchSerialNumberingModules=Regra de numeração para geração automática de número de série (para produtos com propriedade 1 lote/série único para cada produto) +QtyToAddAfterBarcodeScan=Qtde para %s cada código de barras/lote/série escaneado +LifeTime=Tempo de vida (em dias) +EndOfLife=Fim de vida +ManufacturingDate=Data de fabricação +DestructionDate=Data de destruição +FirstUseDate=Data do primeiro uso +QCFrequency=Frequência do controle de qualidade (em dias) +ShowAllLots=Mostrar todos os lotes +HideLots=Ocultar lotes +OutOfOrder=Fora de serviço +InWorkingOrder=Em funcionamento +ToReplace=Substituir diff --git a/htdocs/langs/pt_MZ/projects.lang b/htdocs/langs/pt_MZ/projects.lang new file mode 100644 index 00000000000..8d0c1cedae8 --- /dev/null +++ b/htdocs/langs/pt_MZ/projects.lang @@ -0,0 +1,11 @@ +# Dolibarr language file - Source file is en_US - projects +SharedProject=A todos +TaskTimeUser=Usuário +ProjectModifiedInDolibarr=Projeto %s modificado +LinkToElementShort=Link para +ProjectReferers=Itens correlatos +OppStatusPROPO=Proposta +OppStatusPENDING=Pedente +ServiceToUseOnLines=Service to use on lines by default +NewInter=Nova Intervenção +StartDateCannotBeAfterEndDate=A data final não pode ser anterior a data de início diff --git a/htdocs/langs/pt_MZ/propal.lang b/htdocs/langs/pt_MZ/propal.lang new file mode 100644 index 00000000000..78f3a623073 --- /dev/null +++ b/htdocs/langs/pt_MZ/propal.lang @@ -0,0 +1,8 @@ +# Dolibarr language file - Source file is en_US - propal +ProposalShort=Proposta +ProposalsDraft=Minutas de orçamentos +PdfCommercialProposalTitle=Proposta +LastModifiedProposals=Últimas %s propostas modificadas +PropalStatusDraft=Rascunho (precisa ser validada) +PropalStatusDraftShort=Minuta +TypeContact_propal_external_BILLING=Contato de fatura de cliente diff --git a/htdocs/langs/pt_MZ/receptions.lang b/htdocs/langs/pt_MZ/receptions.lang new file mode 100644 index 00000000000..4e6be9a7c76 --- /dev/null +++ b/htdocs/langs/pt_MZ/receptions.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - receptions +Receptions=Recebimentos +StatusReceptionDraft=Minuta +StatusReceptionDraftShort=Minuta +StatusReceptionValidatedShort=Validada diff --git a/htdocs/langs/pt_MZ/recruitment.lang b/htdocs/langs/pt_MZ/recruitment.lang new file mode 100644 index 00000000000..028099855bb --- /dev/null +++ b/htdocs/langs/pt_MZ/recruitment.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - recruitment +About =Acerca de +PositionToBeFilled=Cargo diff --git a/htdocs/langs/pt_MZ/resource.lang b/htdocs/langs/pt_MZ/resource.lang new file mode 100644 index 00000000000..b78b36a3031 --- /dev/null +++ b/htdocs/langs/pt_MZ/resource.lang @@ -0,0 +1,18 @@ +# Dolibarr language file - Source file is en_US - resource +MenuResourceIndex=Resorsas +DeleteResource=Remover recurso +ConfirmDeleteResourceElement=Confirmar remoção do recurso para este elemento +NoResourceLinked=Nenhum recurso vinculado +ResourceCard=Cartao recursos +AddResource=Criar recurso +ResourcesLinkedToElement=Recursos vinculados ao elemento +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 +ImportDataset_resource_1=Resorsas diff --git a/htdocs/langs/pt_MZ/salaries.lang b/htdocs/langs/pt_MZ/salaries.lang new file mode 100644 index 00000000000..0ac1be4f306 --- /dev/null +++ b/htdocs/langs/pt_MZ/salaries.lang @@ -0,0 +1,17 @@ +# Dolibarr language file - Source file is en_US - salaries +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT=Conta contábil usada para terceiros usuários +SALARIES_ACCOUNTING_ACCOUNT_PAYMENT_Desc=A conta contábil dedicada definida no cartão de usuário será usada somente para a contabilidade da Subconta. Este será usado para Contabilidade Geral e como valor padrão da contabilidade do Contador, se a conta contábil do usuário dedicada no usuário não estiver definida. +SALARIES_ACCOUNTING_ACCOUNT_CHARGE=Conta da Contabilidade padrão para pagamentos de salário +CREATE_NEW_SALARY_WITHOUT_AUTO_PAYMENT=Por padrão, deixe em branco a opção "Criar automaticamente um pagamento total" ao criar um Salário +NewSalary=Novo salário +NewSalaryPayment=Novo cartão de salário +AddSalaryPayment=Adicionar pagamento de salário +SalaryPayment=Pagamento de salário +SalariesPayments=Pagamentos de salários +SalariesPaymentsOf=Pagamentos de salários de %s +THM=Taxa média horária +TJM=Taxa média diária +THMDescription=Este valor pode ser usado para calcular o custo de tempo consumido em um projeto entrado pelos usuários se o módulo projeto for usado +TJMDescription=Este valor é usado apenas como informação e não será usado em nenhum cálculo +SalariesStatistics=Estatísticas salariais +SalariesAndPayments=Salários e pagamentos diff --git a/htdocs/langs/pt_MZ/sendings.lang b/htdocs/langs/pt_MZ/sendings.lang new file mode 100644 index 00000000000..41e4158e7fd --- /dev/null +++ b/htdocs/langs/pt_MZ/sendings.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - sendings +Sendings=Fretes +Shipments=Fretes +StatusSendingDraft=Minuta +StatusSendingDraftShort=Minuta +StatusSendingValidatedShort=Validada diff --git a/htdocs/langs/pt_MZ/sms.lang b/htdocs/langs/pt_MZ/sms.lang new file mode 100644 index 00000000000..e4c3de72851 --- /dev/null +++ b/htdocs/langs/pt_MZ/sms.lang @@ -0,0 +1,3 @@ +# Dolibarr language file - Source file is en_US - sms +SmsStatusDraft=Minuta +SmsStatusValidated=Validada diff --git a/htdocs/langs/pt_MZ/stocks.lang b/htdocs/langs/pt_MZ/stocks.lang new file mode 100644 index 00000000000..5f85db01b15 --- /dev/null +++ b/htdocs/langs/pt_MZ/stocks.lang @@ -0,0 +1,9 @@ +# Dolibarr language file - Source file is en_US - stocks +inventorySetup =Configuração de inventário +inventoryCreatePermission=Novo inventário +inventoryReadPermission=Ver inventários +inventoryDeletePermission=Remover inventario +inventoryValidate=Validada +inventoryChangePMPPermission=Permitir alterar o valor PMP de um produto +inventoryDeleteLine=Apagar linha +InventoryStartedShort=Iniciado diff --git a/htdocs/langs/pt_MZ/supplier_proposal.lang b/htdocs/langs/pt_MZ/supplier_proposal.lang new file mode 100644 index 00000000000..db8924d7709 --- /dev/null +++ b/htdocs/langs/pt_MZ/supplier_proposal.lang @@ -0,0 +1,7 @@ +# Dolibarr language file - Source file is en_US - supplier_proposal +CommRequests=Solicitações de preço +SupplierProposals=Propostas de fornecedores +SupplierProposalsShort=Propostas de fornecedores +SupplierProposalStatusDraft=Rascunho (precisa ser validada) +SupplierProposalStatusDraftShort=Minuta +SupplierProposalStatusValidatedShort=Validada diff --git a/htdocs/langs/pt_MZ/suppliers.lang b/htdocs/langs/pt_MZ/suppliers.lang new file mode 100644 index 00000000000..5c86fba17c2 --- /dev/null +++ b/htdocs/langs/pt_MZ/suppliers.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - suppliers +Suppliers=Vendedores +SuppliersInvoice=Fatura do fornecedores +SupplierInvoices=Faturas de fornecedores +RefSupplierShort=Ref. fornecedor diff --git a/htdocs/langs/pt_MZ/ticket.lang b/htdocs/langs/pt_MZ/ticket.lang new file mode 100644 index 00000000000..b6efe07cc36 --- /dev/null +++ b/htdocs/langs/pt_MZ/ticket.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - ticket +TicketTypeShortOTHER=Outros +TicketCategoryShortOTHER=Outros +TicketSettings=Configurações +TicketAddIntervention=Criar Intervenção +Unread=Não lido diff --git a/htdocs/langs/pt_MZ/trips.lang b/htdocs/langs/pt_MZ/trips.lang new file mode 100644 index 00000000000..9d96a45df36 --- /dev/null +++ b/htdocs/langs/pt_MZ/trips.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - trips +TF_OTHER=Outros +AUTHORPAIEMENT=Pago por +DATE_SAVE=Data Validação +expenseReportOffset=Compensar diff --git a/htdocs/langs/pt_MZ/users.lang b/htdocs/langs/pt_MZ/users.lang new file mode 100644 index 00000000000..4556fbf2144 --- /dev/null +++ b/htdocs/langs/pt_MZ/users.lang @@ -0,0 +1,6 @@ +# Dolibarr language file - Source file is en_US - users +DeleteUser=Excluir +DeleteGroup=Excluir +LastName=Sobrenome +FirstName=Primeiro nome +MenuUsersAndGroups=Usuários e Grupos diff --git a/htdocs/langs/pt_MZ/website.lang b/htdocs/langs/pt_MZ/website.lang new file mode 100644 index 00000000000..a5781ea5a75 --- /dev/null +++ b/htdocs/langs/pt_MZ/website.lang @@ -0,0 +1,88 @@ +# Dolibarr language file - Source file is en_US - website +WebsiteSetupDesc=Aqui você pode criar os sites que você deseja usar. Em seguida, vá para o menu Websites para editá-los. +DeleteWebsite=Apagar website +ConfirmDeleteWebsite=Tem certeza que deseja excluir este site? Todas as suas páginas e conteúdo também serão removidos. Os arquivos enviados (como no diretório de mídia, no módulo ECM, ...) permanecerão. +WEBSITE_PAGE_EXAMPLE=Página da Web para usar como exemplo +WEBSITE_PAGENAME=Nome da Página/Apelido +WEBSITE_ALIASALT=Nomes / alias alternativos de página +WEBSITE_CSS_URL=URL do arquivo CSS externo. +WEBSITE_HTML_HEADER=Adição na parte inferior do cabeçalho HTML (comum a todas as páginas) +WEBSITE_ROBOT=Arquivo robô (robots.txt) +WEBSITE_MANIFEST_JSON=Arquivo manifest.json do site +WEBSITE_README=Arquivo README.md +EnterHereLicenseInformation=Digite aqui metadados ou informações de licença para arquivar num arquivo README.md. Se você distribuir seu site como modelo, o arquivo será incluído no pacote tentado. +HtmlHeaderPage=Cabeçalho HTML (específico apenas para esta página) +PageNameAliasHelp=Nome ou alias da página.
Esse alias também é usado para forjar uma URL de SEO quando o site é executado a partir de um host virtual de um servidor da Web (como Apacke, Nginx, ...). Use o botão %s para editar este alias. +EditTheWebSiteForACommonHeader=Nota: Se você quiser definir um cabeçalho personalizado para todas as páginas, edite o cabeçalho no nível do site em vez de na página / recipiente. +MediaFiles=Biblioteca de mídias +AddWebsite=Adicionar site +Webpage=Página WEB / container +AddPage=Adicionar página / recipiente +RequestedPageHasNoContentYet=A página solicitada com id %s ainda não possui conteúdo ou o arquivo de cache .tpl.php foi removido. Edite o conteúdo da página para resolver isso. +PageContent=Página / Contenair +PageDeleted=Página / Contenair '%s' do site %s excluído +PageAdded=Página / Contenair '%s' adicionado +ViewSiteInNewTab=Visualizar site numa nova aba +ViewPageInNewTab=Visualizar página numa nova aba +SetAsHomePage=Definir com Página Inicial +RealURL=URL real +ViewWebsiteInProduction=Visualizar website usando origem URLs +ExampleToUseInApacheVirtualHostConfig=Exemplo a ser usado na configuração do host virtual Apache: +YouCanAlsoTestWithPHPS= Usar com servidor embutido em PHP
No ambiente de desenvolvimento, você pode preferir testar o site com o servidor da Web incorporado em PHP (o PHP 5.5 é necessário) executando o php -S 0.0. 0,0: 8080 -t %s +TestDeployOnWeb=Testar / implementar na web +PreviewSiteServedByWebServer= Visualize %s em uma nova guia.

O %s será servido por um servidor web externo (como Apache, Nginx, IIS). Você deve instalar e configurar este servidor antes de apontar para o diretório:
%s
URL servido por servidor externo:
%s +VirtualHostUrlNotDefined=URL do host virtual veiculado pelo servidor web externo não definido +NoPageYet=Ainda não há páginas +SyntaxHelp=Ajuda sobre dicas de sintaxe específicas +ClonePage=Página clone / container +CloneSite=Site Clone +SiteAdded=Site adicionado +ConfirmClonePage=Digite o código / alias da nova página e se é uma tradução da página clonada. +CreateByFetchingExternalPage=Criar página / recipiente obtendo página do URL externo ... +OrEnterPageInfoManually=Ou você pode criar uma página do zero ou de um modelo de página ... +FetchAndCreate=Procure e comece a criar +BlogPost=Postagem do blog +WebsiteAccounts=Conta do website +AddWebsiteAccount=Criar conta do site +BackToListForThirdParty=Voltar à lista de terceiros +DisableSiteFirst=Desativar o site primeiro +MyContainerTitle=Título do meu site +AnotherContainer=É assim que se inclui o conteúdo de outra página / contêiner (você pode ter um erro aqui se ativar o código dinâmico porque o subcontêiner incorporado pode não existir) +SorryWebsiteIsCurrentlyOffLine=Desculpe, este site está off-line. Volte mais tarde ... +WEBSITE_USE_WEBSITE_ACCOUNTS=Habilitar a tabela da conta do site +WEBSITE_USE_WEBSITE_ACCOUNTSTooltip=Ative a tabela para armazenar contas do site (login / senha) para cada site / terceiros +YouMustDefineTheHomePage=Você deve primeiro definir a Home page padrão +OnlyEditionOfSourceForGrabbedContentFuture=Aviso: a criação de uma página da Web importando uma página da Web externa é reservada para usuários experientes. Dependendo da complexidade da página de origem, o resultado da importação pode ser diferente do original. Além disso, se a página de origem usar estilos CSS comuns ou javascript conflitante, poderá alterar a aparência ou os recursos do editor do site ao trabalhar nesta página. Esse método é uma maneira mais rápida de criar uma página, mas é recomendável criar sua nova página do zero ou de um modelo de página sugerido.
Observe também que o editor embutido pode não funcionar corretamente quando usado em uma página externa acessada. +OnlyEditionOfSourceForGrabbedContent=Apenas uma edição de fonte HTML é possível quando o conteúdo foi extraído de um site externo +GrabImagesInto=Pegue também imagens encontradas no css e na página. +WebsiteRootOfImages=Diretório raiz para imagens do site +AliasPageAlreadyExists=Página de alias %s já existe +CorporateHomePage=Página inicial corporativa +ZipOfWebsitePackageToImport=Carregar o arquivo Zip do pacote de modelos de sites +ZipOfWebsitePackageToLoad=ou Escolha um pacote de modelo de site incorporado disponível +ThisPageIsTranslationOf=Esta página/conteúdo é traduzido de +NoWebSiteCreateOneFirst=Nenhum site foi criado ainda. Comece a criar o primeiro. +GoTo=Ir para +DynamicPHPCodeContainsAForbiddenInstruction=Você adiciona código PHP dinâmico que contém a instrução PHP %s que é proibida por padrão como conteúdo dinâmico (consulte as opções ocultas WEBSITE_PHP_ALLOW_xxx para aumentar a lista de comandos permitidos). +NotAllowedToAddDynamicContent=Você não tem permissão para adicionar ou editar conteúdo em PHP dinâmico dos sites. Solicite a permissão ou apenas mantenha o código em tags do php não modificadas. +ReplaceWebsiteContent=Pesquisar ou substituir conteúdo do site +DeleteAlsoJs=Excluir todos os arquivos javascript específicos deste site?\n +DeleteAlsoMedias=Excluir todos os arquivos de mídia específicos deste site? +MyWebsitePages=Paginas do meu site +SearchReplaceInto=Pesquisa | Substitua em +ReplaceString=Nova string +LinkAndScriptsHereAreNotLoadedInEditor=Aviso: Este conteúdo é emitido apenas quando o site é acessado de um servidor. Ele não é usado no modo de edição, portanto, se você precisar carregar arquivos javascript também no modo de edição, basta adicionar sua tag 'script src = ...' na página. +Dynamiccontent=Amostra de uma página com conteúdo dinâmico +EditInLineOnOff=O modo 'Editar em linha' é %s +ShowSubContainersOnOff=O modo de executar 'conteúdo dinâmico' é %s +GlobalCSSorJS=Arquivo global CSS / JS / Cabeçalho do site +BackToHomePage=Voltar à página inicial... +TranslationLinks=Links de tradução +UseTextBetween5And70Chars=Para boas práticas de SEO, use um texto entre 5 e 70 caracteres +MainLanguage=Idioma principal +OtherLanguages=Outras línguas +UseManifest=Forneça um arquivo manifest.json +PublicAuthorAlias=Alias ​​do autor público +AvailableLanguagesAreDefinedIntoWebsiteProperties=Os idiomas disponíveis são definidos nas propriedades do site +ReplacementDoneInXPages=Substituição feita em %s páginas ou contêineres +RSSFeedDesc=Você pode obter um feed RSS dos artigos mais recentes com o tipo 'blogpost' usando este URL diff --git a/htdocs/langs/pt_MZ/withdrawals.lang b/htdocs/langs/pt_MZ/withdrawals.lang new file mode 100644 index 00000000000..ca3dc486aa7 --- /dev/null +++ b/htdocs/langs/pt_MZ/withdrawals.lang @@ -0,0 +1,4 @@ +# Dolibarr language file - Source file is en_US - withdrawals +StandingOrderPayment=Pedido com pagamento em Débito direto +StandingOrderToProcess=A processar +StatusPaid=Pago diff --git a/htdocs/langs/pt_MZ/workflow.lang b/htdocs/langs/pt_MZ/workflow.lang new file mode 100644 index 00000000000..abd2e8e9b4c --- /dev/null +++ b/htdocs/langs/pt_MZ/workflow.lang @@ -0,0 +1,12 @@ +# Dolibarr language file - Source file is en_US - workflow +WorkflowSetup=Configuração do módulo de Fluxo de Trabalho +ThereIsNoWorkflowToModify=Não há alterações do fluxo de trabalho disponíveis com os módulos ativados. +descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Criar automaticamente uma pedido de venda após a assinatura de uma proposta comercial (a nova ordem terá o mesmo valor que constar na proposta) +descWORKFLOW_CONTRACT_AUTOCREATE_INVOICE=Criar automaticamente uma fatura de cliente depois que um contrato é validado +descWORKFLOW_ORDER_AUTOCREATE_INVOICE=Criar automaticamente uma fatura após a conclusão do pedido (a nova fatura terá o mesmo valor que constar no pedido) +descWORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL=Classifique a proposta de origem vinculada como faturado quando a ordem do cliente é definida como faturado (e se a quantidade da ordem for igual à quantidade total de propostas vinculadas assinadas) +descWORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL=Classificar a proposta de origem vinculada como faturado quando a fatura do cliente é validada (e se o valor da fatura é o mesmo que o valor total da proposta vinculada assinada) +descWORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_ORDER=Classifique pedidos do cliente de origem vinculada como faturado quando a fatura do cliente for validada (e se o valor da fatura for igual ao montante total de pedidos vinculados) +descWORKFLOW_INVOICE_CLASSIFY_BILLED_ORDER=Classifique pedidos do cliente de origem vinculada como faturado quando a fatura do cliente constar o pagamento (e se o valor da fatura for igual ao montante total de pedidos vinculados) +descWORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING=Classifique pedidos do cliente de origem vinculada como enviados quando uma remessa for validada (e se a quantidade enviada por todas as remessas for o mesmo que na ordem de atualização) +descWORKFLOW_ORDER_CLASSIFY_BILLED_SUPPLIER_PROPOSAL=Classificar a proposta do fornecedor de origem vinculada como faturado quando a fatura do fornecedor for validada (e se o valor da fatura for o mesmo que o valor total da proposta vinculada) diff --git a/htdocs/langs/pt_MZ/zapier.lang b/htdocs/langs/pt_MZ/zapier.lang new file mode 100644 index 00000000000..a1150fab1bc --- /dev/null +++ b/htdocs/langs/pt_MZ/zapier.lang @@ -0,0 +1,5 @@ +# Dolibarr language file - Source file is en_US - zapier +ModuleZapierForDolibarrName =Zapier para Dolibarr +ModuleZapierForDolibarrDesc =Módulo Zapier para Dolibarr +ZapierForDolibarrSetup=Configurações do Zapier para Dolibarr +ZapierDescription=Interface com Zapier diff --git a/htdocs/langs/pt_PT/admin.lang b/htdocs/langs/pt_PT/admin.lang index f2843257815..1807349033a 100644 --- a/htdocs/langs/pt_PT/admin.lang +++ b/htdocs/langs/pt_PT/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Valor seguinte (restituições) MustBeLowerThanPHPLimit=Nota: a sua configuração de PHP atualmente limita o tamanho máximo do arquivo para upload para %s %s, independentemente do valor deste parâmetro NoMaxSizeByPHPLimit=Nota: não está definido nenhum limite na sua configuração do PHP MaxSizeForUploadedFiles=Tamanho máximo para os ficheiros enviados (0 para rejeitar qualquer envio) -UseCaptchaCode=Utilizar código gráfico (CAPTCHA) na página de iniciar a sessão +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Caminho completo para o comando de antivírus AntiVirusCommandExample=Exemplo para ClamAv Daemon (requer clamav-daemon): / usr / bin / clamdscan
Exemplo para ClamWin (muito, muito lento): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Mais parâmetros na linha de comando @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Se o seu serviço de e-mail SMTP restringir o cliente de e-mail a alguns endereços IP (muito raro), utilize o seguinte endereço IP da sua instalação ERP CRM Dolibarr: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Clique para mostrar a descrição DependsOn=Este módulo precisa do (s) módulo (s) RequiredBy=Este módulo é necessário para o(s) módulo(s) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=N.º de dias AtEndOfMonth=No fim de mês -CurrentNext=Atual/Seguinte +CurrentNext=A given day in month Offset=Desvio AlwaysActive=Sempre ativo Upgrade=Atualização @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Pressione CTRL+F5 no teclado ou limpe a cache do navega NotSupportedByAllThemes=Funciona com os temas predefinidos, pode não ser suportado por temas externos BackgroundColor=Cor de fundo TopMenuBackgroundColor=Cor de fundo para o menu no topo -TopMenuDisableImages=Ocultar imagens no menu do topo +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Cor de fundo para o menu à esquerda BackgroundTableTitleColor=A cor do fundo para a linha de título das tabelas BackgroundTableTitleTextColor=Cor do texto para a linha de título da tabela @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Coletor de e-mail +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=Novo coletor de email EMailHost=Host do servidor IMAP de e-mail @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Confirmação de recebimento de email EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Nenhum novo email (filtros correspondentes) para processar NothingProcessed=Nada feito -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Definições +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/pt_PT/companies.lang b/htdocs/langs/pt_PT/companies.lang index c8d3397b6e6..ccfb56424f9 100644 --- a/htdocs/langs/pt_PT/companies.lang +++ b/htdocs/langs/pt_PT/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Natureza do terceiro NatureOfContact=Natureza do contacto Address=Direcção State=Concelho +StateId=State ID StateCode=Código de região StateShort=Concelho Region=Distrito Region-State=Distrito - Concelho Country=País CountryCode=Código país -CountryId=ID país +CountryId=Country ID Phone=Telefone PhoneShort=Telefone Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Outros ProfId6ShortCM=- ProfId1CO=ID Prof. 1 (R.U.T.) diff --git a/htdocs/langs/pt_PT/errors.lang b/htdocs/langs/pt_PT/errors.lang index dc0eb4f58d5..2b0dda28541 100644 --- a/htdocs/langs/pt_PT/errors.lang +++ b/htdocs/langs/pt_PT/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/pt_PT/externalsite.lang b/htdocs/langs/pt_PT/externalsite.lang deleted file mode 100644 index 8f9247e1b7e..00000000000 --- a/htdocs/langs/pt_PT/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Configurar hiperligação para o site da Web externo -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=O módulo Site Externo não está configurado correctamente. -ExampleMyMenuEntry=Minha entrada de menu diff --git a/htdocs/langs/pt_PT/ftp.lang b/htdocs/langs/pt_PT/ftp.lang deleted file mode 100644 index 554d68c65f5..00000000000 --- a/htdocs/langs/pt_PT/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configurar módulo de Cliente FTP -NewFTPClient=Nova configuração de ligação de FTP -FTPArea=Área de FTP -FTPAreaDesc=Este ecrã mostra o seu conteúdo de uma visualização do servidor FTP -SetupOfFTPClientModuleNotComplete=A configuração do módulo de cliente FTP parece não estar concluída -FTPFeatureNotSupportedByYourPHP=A sua versão do PHP não suporta as funções FTP -FailedToConnectToFTPServer=Não foi possível ligar ao servidor FTP (servidor: %s, porta: %s) -FailedToConnectToFTPServerWithCredentials=Não foi possível iniciar a sessão no servidor FTP com o nome/senha definidos -FTPFailedToRemoveFile=Falha ao remover o ficheiro: %s. -FTPFailedToRemoveDir=Não foi possível ao remover a diretoria: %s (Verifique as permissões e se a diretoria está sem dados). -FTPPassiveMode=Modo passivo -ChooseAFTPEntryIntoMenu=Escolha uma entrada de FTP no menu... -FailedToGetFile=Falha a obter os ficheiros%s diff --git a/htdocs/langs/pt_PT/hrm.lang b/htdocs/langs/pt_PT/hrm.lang index 35c50076d62..94c1b00fbb2 100644 --- a/htdocs/langs/pt_PT/hrm.lang +++ b/htdocs/langs/pt_PT/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Abrir estabelecimento CloseEtablishment=Fechar estabelecimento # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=GRH - Lista departamentos +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Funcionários @@ -20,13 +20,14 @@ Employee=Funcionário NewEmployee=Novo funcionário ListOfEmployees=Lista de funcionários HrmSetup=Configuração do módulo "GRH" -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Tarefa -Jobs=Jobs +JobPosition=Tarefa +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Posição -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/pt_PT/install.lang b/htdocs/langs/pt_PT/install.lang index 3de7b8cc162..31f5a8642b3 100644 --- a/htdocs/langs/pt_PT/install.lang +++ b/htdocs/langs/pt_PT/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=O arquivo de configuração %s não é gravável ConfFileIsWritable=O ficheiro de configuração %s é gravável. ConfFileMustBeAFileNotADir=O ficheiro de configuração %s deve ser um ficheiro, não um diretório. ConfFileReload=Recarregando parâmetros do arquivo de configuração. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Este PHP suporta variáveis GET e POST. PHPSupportPOSTGETKo=É possível que sua configuração do PHP não suporte variáveis ​​POST e / ou GET. Verifique o parâmetro variables_order no php.ini. PHPSupportSessions=Este PHP suporta sessões. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Pode ter inserido um valor incorreto para o parâmet ErrorFailedToCreateDatabase=Não foi possível criar a base de dados' %s'. ErrorFailedToConnectToDatabase=Não foi possível ligar à base de dados' %s'. ErrorDatabaseVersionTooLow=A versão da base de dados (%s) é muito antiga. É necessária a versão %s ou superior. -ErrorPHPVersionTooLow=A versão PHP é muito antiga. É necessária a versão %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Conexão ao servidor bem-sucedida, mas o banco de dados '%s' não foi encontrado. ErrorDatabaseAlreadyExists=A base de dados' %s' já existe. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Se o banco de dados não existir, volte e marque a opção "Criar banco de dados". IfDatabaseExistsGoBackAndCheckCreate=Se a base de dados já existir, volte e desmarque a opção "Criar base de dados". WarningBrowserTooOld=A versão do navegador é muito antiga. Atualizar o seu navegador para uma versão recente do Firefox, Chrome ou Opera é altamente recomendado. diff --git a/htdocs/langs/pt_PT/main.lang b/htdocs/langs/pt_PT/main.lang index 4dcf47e511a..21ae8fa4148 100644 --- a/htdocs/langs/pt_PT/main.lang +++ b/htdocs/langs/pt_PT/main.lang @@ -244,6 +244,7 @@ Designation=Designação DescriptionOfLine=Descrição da linha DateOfLine=Data da linha DurationOfLine=Duração da linha +ParentLine=Parent line ID Model=Modelo de documento DefaultModel=Modelo de documento predefinido Action=Evento @@ -344,7 +345,7 @@ KiloBytes=Kilobytes MegaBytes=Megabytes GigaBytes=Gigabytes TeraBytes=Terabytes -UserAuthor=Ceated by +UserAuthor=Criado por UserModif=Updated by b=b. Kb=Kb @@ -517,6 +518,7 @@ or=ou Other=Outro Others=Outros OtherInformations=Outras informações +Workflow=Fluxo de trabalho Quantity=quantidade Qty=Quant. ChangedBy=Modificado por @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Ficheiros e Documentos Anexos JoinMainDoc=Unir ao documento principal +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=Função Desactivada MoveBox=Mover widget Offered=Oferta NotEnoughPermissions=Não tem permissões para efectuar esta acção +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Nome Sessão Method=Método Receive=Receção @@ -798,6 +802,7 @@ URLPhoto=Url da foto / logotipo SetLinkToAnotherThirdParty=Link para um terceiro LinkTo=Associar a LinkToProposal=Associar ao orçamento +LinkToExpedition= Link to expedition LinkToOrder=Hiperligação para encomendar LinkToInvoice=Associar a fatura LinkToTemplateInvoice=Link para a factura modelo @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Cancelar +Terminated=Inativo +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/pt_PT/members.lang b/htdocs/langs/pt_PT/members.lang index 0170d801dee..b5bedee77b4 100644 --- a/htdocs/langs/pt_PT/members.lang +++ b/htdocs/langs/pt_PT/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Estados-id +MemberId=Member Id +MemberRef=Member Ref NewMember=Novo membro MemberType=Tipo de Membro MemberTypeId=ID tipo de membro @@ -135,7 +136,7 @@ CardContent=Conteúdo do seu cartão de membro # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Queremos que você saiba que sua solicitação de adesão foi recebida.

ThisIsContentOfYourMembershipWasValidated=Queremos informar que sua associação foi validada com as seguintes informações:

-ThisIsContentOfYourSubscriptionWasRecorded=Queremos informar que sua nova assinatura foi registrada.

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

ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/pt_PT/oauth.lang b/htdocs/langs/pt_PT/oauth.lang index 0b88ff02f99..acbcbc6ca4e 100644 --- a/htdocs/langs/pt_PT/oauth.lang +++ b/htdocs/langs/pt_PT/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Um token foi gerado e guardado na base-de-dados local NewTokenStored=Token recebido e guardado ToCheckDeleteTokenOnProvider=Clique aqui para verificar/eliminar a autorização guardada por %s fornecedor de OAuth TokenDeleted=Token eliminado -RequestAccess=Clique aqui para solicitar/renovar o acesso e receber um novo token para guardar +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Clique aqui para eliminar o token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Página para gerar um token OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Veja o separador anterior +OAuthProvider=OAuth provider OAuthIDSecret=ID OAuth e Segredo TOKEN_REFRESH=Token Refresh presente TOKEN_EXPIRED=O token expirou @@ -23,10 +24,13 @@ TOKEN_DELETE=Eliminar token guardado OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/pt_PT/stocks.lang b/htdocs/langs/pt_PT/stocks.lang index 3751b84730c..93a11d7c52c 100644 --- a/htdocs/langs/pt_PT/stocks.lang +++ b/htdocs/langs/pt_PT/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Limite de estoque para estoque ideal de alerta e de ProductStockWarehouseUpdated=Limite de estoque para estoque ótimo de alerta e desejado atualizado corretamente ProductStockWarehouseDeleted=Limite de estoque para alerta e estoque ideal desejado corretamente excluídos AddNewProductStockWarehouse=Definir novo limite para alerta e estoque ideal desejado -AddStockLocationLine=Diminuir quantidade, em seguida, clique para adicionar outro armazém para este produto +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Data de Inventário Inventories=Inventories NewInventory=Novo inventário @@ -254,7 +254,7 @@ ReOpen=Reabrir ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Iniciar InventoryStartedShort=Iniciada ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Definições +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/ro_RO/accountancy.lang b/htdocs/langs/ro_RO/accountancy.lang index 090407e21f5..7a5e759cef6 100644 --- a/htdocs/langs/ro_RO/accountancy.lang +++ b/htdocs/langs/ro_RO/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Dezactivează înregistrarea directă a tranzacției ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Activați schița de export în jurnal ACCOUNTANCY_COMBO_FOR_AUX=Activare listă combinată pentru contul subsidiar (poate fi lent dacă aveți o mulțime de terți, întrerupe capacitatea de a căuta după o valoare parţială) ACCOUNTING_DATE_START_BINDING=Definiți o dată pentru a începe legarea și transferul în contabilitate. Înainte de această dată, tranzacțiile nu vor fi transferate în contabilitate. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=La transferul contabil, selectați perioada în mod implicit +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Pentru transferul contabil, care este perioada selectată implicit  ACCOUNTING_SELL_JOURNAL=Jurnal vânzări ACCOUNTING_PURCHASE_JOURNAL=Jurnal cumpărări @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Contul contabil pentru înregistrarea donațiilor ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Cont contabil pentru a înregistra abonamente ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT= Cont contabil implicit pentru înregistra depunerilor clientului -UseAuxiliaryAccountOnCustomerDeposit=Utilizează conturi analitice pe liniile de depozit ale clienților +UseAuxiliaryAccountOnCustomerDeposit=Stochează contul de client ca și cont contabil individual în registrul subsidiar pentru liniile de avans (dacă este dezactivat, contul individual pentru liniile de avans va rămâne gol) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Contul contabil implicit pentru produsele cumpărate (se foloseşte dacă nu este definit în fișa de produs) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT= Contul contabil implicit pentru produsele cumpărate din CEE (utilizat dacă nu este definit în fișa de produs) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Dacă configurezi contul contabil pe linii de raport DescVentilDoneExpenseReport=Consultați aici lista liniilor rapoartelor de cheltuieli și contul contabil a taxelor lor Closure=Închidere anuală -DescClosure=Consultă aici numărul de mișcări lunar care nu sunt încă validate și blocate +DescClosure=Consultă aici numărul de mișcări pe lună nevalidate și blocate OverviewOfMovementsNotValidated=Prezentare generală a mișcărilor nevalidate și blocate AllMovementsWereRecordedAsValidated=Toate mișcările au fost înregistrate ca validate și blocate NotAllMovementsCouldBeRecordedAsValidated=Nu toate mișcările au putut fi înregistrate ca validate și blocate @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Ne p AccountancyErrorMismatchLetterCode=Nepotrivire cod de reconciliere AccountancyErrorMismatchBalanceAmount=Soldul (%s) nu este egal cu 0 AccountancyErrorLetteringBookkeeping=Au apărut erori cu privire la tranzacții: %s +ErrorAccountNumberAlreadyExists=Numărul de cont contabil %s există deja ## Import ImportAccountingEntries=Intrări contabile diff --git a/htdocs/langs/ro_RO/admin.lang b/htdocs/langs/ro_RO/admin.lang index 07ed0020102..fb3635f8cdb 100644 --- a/htdocs/langs/ro_RO/admin.lang +++ b/htdocs/langs/ro_RO/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Următoarea valoare(facturi de înlocuire) MustBeLowerThanPHPLimit=Notă: Configuraţia ta PHP permite încărcarea de fişiere cu dimensiuni de până la %s%s, indiferent de valoarea acestui parametru NoMaxSizeByPHPLimit=Notă: Nicio limită setată în configuraţia PHP MaxSizeForUploadedFiles=Mărimea maximă pentru fişierele încărcate (0 pentru a interzice orice încărcare) -UseCaptchaCode=Utilizaţi codul grafic (CAPTCHA) pe pagina de autentificare +UseCaptchaCode=Utilizare cod grafic (CAPTCHA) pe pagina de conectare și pe unele pagini publice AntiVirusCommand=Calea completă la comanda antivirus AntiVirusCommandExample=Exemplu pentru ClamAv Daemon (necesită clamav-daemon): /usr/bin/clamdscan
Exemplu pentru ClamWin (foarte foarte lent): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Mai multe despre parametrii liniei de comandă @@ -504,7 +504,7 @@ WarningPHPMailC=- Utilizând serverul SMTP al furnizorului de servicii email pen WarningPHPMailD=De asemenea, este recomandat, prin urmare, schimbarea metodei de trimitere a email-urilor la "SMTP". Dacă vrei cu adevărat să păstrezi metoda implicită "PHP" pentru a trimite email-uri, trebuie doar să ignori acest avertisment sau să îl elimini setând constanta MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP la 1 în Acasă - Setări - Alte setări. WarningPHPMail2=Dacă furnizorul dvs. de e-mail SMTP trebuie să restricționeze clientul de email la unele adrese IP (foarte rar), aceasta este adresa IP a agentului utilizator de email (MUA) pentru aplicația ERP CRM: %s. WarningPHPMailSPF=Dacă numele domeniului din adresa de email a expeditorului este protejat de o înregistrare SPF (adresează-te registratorului numelui de domeniu), trebuie să adaugi următoarele IP-uri în înregistrarea SPF DNS a domeniului tău: %s. -ActualMailSPFRecordFound=Înregistrare SPF actuală găsită : %s +ActualMailSPFRecordFound=Înregistrare SPF reală găsită (pentru email-ul %s) : %s ClickToShowDescription=Faceți clic pentru a afișa descrierea DependsOn=Acest modul are nevoie de modulul(lele) RequiredBy=Acest modul este solicitat de modulul(lele) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Valoarea unei constante de configurare ConstantIsOn=Opţiunea %s este activă NbOfDays=Nr. de zile AtEndOfMonth=La sfârşitul lunii -CurrentNext=Curentă/Următoare +CurrentNext=O anumită zi din lună Offset=Decalaj AlwaysActive=Întotdeauna activ Upgrade=Actualizare @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Apăsați CTRL + F5 sau ștergeți memoria cache a brow NotSupportedByAllThemes=Va funcționa cu teme de bază, poate nu este suportată de teme externe BackgroundColor=Culoare fundal TopMenuBackgroundColor=Culoare fundal pentru meniul de Sus -TopMenuDisableImages=Ascundeți imaginile în meniul de sus +TopMenuDisableImages=Pictogramă sau Text în meniul de sus LeftMenuBackgroundColor=Culoare fundal pentru meniul Stânga BackgroundTableTitleColor=Culoarea de fundal pentru linia de titlu a tabelului BackgroundTableTitleTextColor=Culoarea textului pentru linia de titlu a tabelelor @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Nota: Opțiunea de a utiliza impozitul pe vânzări sau taxa TVA SwapSenderAndRecipientOnPDF=Interschimbă poziţia adreselor expeditorului şi destinatarului în documentele PDF generate FeatureSupportedOnTextFieldsOnly=Atenție, caracteristică acceptată numai pe câmpurile de text și pe listele combinate. De asemenea, trebuie setat un parametru URL action=create sau action=edit SAU numele paginii trebuie să se termine cu 'new.php' pentru a declanșa această caracteristică. EmailCollector=Colector de emailuri +EmailCollectors=Colectoare email EmailCollectorDescription=Adăugați un job programat și o pagină de configurare pentru a scana în mod regulat căsuţele de email (utilizând protocolul IMAP) și pentru a înregistra emailurile primite în aplicația ta, la locul potrivit și/sau pentru a crea automat înregistrări (cum ar fi clienții). NewEmailCollector=Colector de emailuri nou EMailHost=Server gazdă de email IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Data ultimei încercări de colectare DateLastcollectResultOk=Data ultimei colectări cu succes LastResult=Ultimul rezultat EmailCollectorHideMailHeaders=Nu include conținutul antetului de email în conținutul salvat al email-urilor colectate -EmailCollectorHideMailHeadersHelp=Când este activat, anteturile de email nu sunt adăugate la sfârșitul conținutului care este salvat ca eveniment. +EmailCollectorHideMailHeadersHelp=Când este activat, anteturile de email nu sunt adăugate la sfârșitul conținutului care este salvat ca eveniment în agendă. EmailCollectorConfirmCollectTitle=Confirmarea colectării de emailuri EmailCollectorConfirmCollect=Vrei să rulezi acest colector acum? EmailCollectorExampleToCollectTicketRequestsDesc=Colectare email-uri care se potrivesc cu anumite reguli și creare automată tichet (Modulul Tichete trebuie să fie activat) cu informațiile de pe email. Poți folosi acest colector dacă oferi asistență prin email, astfel încât solicitarea de tichete va fi generată automat. Activează și Collect_Responses pentru a colecta răspunsurile clientului direct la vizualizarea tichetelor (trebuie să răspundeți din sistem). EmailCollectorExampleToCollectTicketRequests=Exemplu de colectare solicitare de tichet (numai primul mesaj) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scanează-ți directorul „Trimise” din cutia poștală pentru a găsi email-uri care au fost trimise ca răspuns la un alt email direct din clientul tău de email și nu din sistem. Dacă se găsește un astfel de email, evenimentul de răspuns este înregistrat în sistem EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Exemplu de colectare a răspunsurilor la email trimise de la un client extern de email -EmailCollectorExampleToCollectDolibarrAnswersDesc=Colectează toate email-urile care sunt un răspuns la un email trimis din aplicație. Un eveniment (Modulul Agendă trebuie să fie activat) cu răspunsul prin email va fi înregistrat la locul potrivit. De exemplu, dacă trimiți o ofertă comercială, o comandă, o factură sau un mesaj pentru un tichet pe email din aplicație, iar clientul îți răspunde la email, sistemul va capta automat răspunsul și îl va adăuga în ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Colectare toate email-urile care sunt un răspuns la un email trimis din aplicație. Un eveniment (Modulul Agenda trebuie să fie activat) cu răspunsul prin email va fi înregistrat la locul potrivit. De exemplu, dacă trimiți o ofertă comercială, o comandă, o factură sau un mesaj pentru un tichet pe email din aplicație, iar destinatarul îți răspunde la email, sistemul va captura automat răspunsul și îl va adăuga în ERP. EmailCollectorExampleToCollectDolibarrAnswers=Exemplu de colectare a tuturor mesajelor primite ca răspunsuri la mesajele trimise din sistem EmailCollectorExampleToCollectLeadsDesc=Colectare email-uri care corespund unor reguli și creare automată lead prospect (Modulul Proiecte trebuie să fie activat) cu informațiile email. Poți folosi acest colector dacă vrei să urmăreşti lead-ul folosind modulul Proiect (1 lead = 1 proiect), astfel încât lead-urile vor fi generate automat. Dacă colectorul Collect_Responses este de asemenea activat, atunci când trimiteți un email către clienții potențiali, oferte sau orice alt obiect, este posibil să vedeți și răspunsurile clienților sau partenerilor direct în aplicație.
Notă: cu acest exemplu inițial, titlul lead-ului este generat incluzând emailul. Dacă terțul nu poate fi găsit în baza de date (client nou), clientul potențial va fi atașat terțului cu ID 1. EmailCollectorExampleToCollectLeads=Exemplu colectare lead-uri @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Colectează emailuri prin care EmailCollectorExampleToCollectJobCandidatures=Exemplu colectare candidaturi job primite pe email NoNewEmailToProcess=Niciun email de procesat (care sa se potriveasca cu filtrele) NothingProcessed=Nu s-a făcut nimic -XEmailsDoneYActionsDone=%semail-uri calificate, %s email-uri procesate cu succes (pentru %s înregistrări/acţiuni efectuate) +XEmailsDoneYActionsDone=%s email-uri precalificate, %s email-uri procesate cu succes (pentru %s înregistrări/acțiuni efectuate)  RecordEvent=Înregistrare eveniment în agendă (de tipul Trimitere email sau Recepţionare email) CreateLeadAndThirdParty=Creare lead (şi terţ dacă este cazul) CreateTicketAndThirdParty=Creare tichet (legat la un terţ dacă terțul a fost încărcat printr-o operațiune anterioară sau a fost ghicit dintr-un tracker din antetul email-ului, fără terț altfel) @@ -2167,6 +2168,9 @@ EmailTemplate=Şablon pentru email EMailsWillHaveMessageID=E-mailuri care conţin eticheta „Referințe” care se potrivesc cu această expresie PDF_SHOW_PROJECT=Afişează proiectul în document ShowProjectLabel=Etichetă proiect +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias-ul în numele terților +THIRDPARTY_ALIAS=Nume terț - Alias ​​terț +ALIAS_THIRDPARTY=Alias ​​terț - Nume terț PDF_USE_ALSO_LANGUAGE_CODE=Dacă doriți să aveți unele texte duplicate în PDF-ul în 2 limbi diferite în același PDF generat, trebuie să setați aici această a doua limbă, astfel încât PDF-ul generat va conține 2 limbi diferite în aceeași pagină, cea aleasă la generarea PDF-ului și aceasta ( doar câteva șabloane PDF acceptă acest lucru). Păstrați gol pentru 1 limbă pentru fiecare PDF. PDF_USE_A=Gererare documente PDF cu format PDF/A în loc de formatul PDF implicit FafaIconSocialNetworksDesc=Introduceți aici codul unei pictograme FontAwesome. Dacă nu știți ce este FontAwesome, puteți utiliza valoarea generică fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Șablon pentru o carte de vizită cu diferite dimensiun InventorySetup= Configurare Inventar ExportUseLowMemoryMode=Utilizare mod de memorie limitată ExportUseLowMemoryModeHelp=Utilizare mod de memorie scăzută pentru execuţie dump (comprimarea se face prin pipe nu prin memoria PHP). Această metodă nu permite să verifici dacă fișierul este finalizat și mesajul de eroare nu poate fi raportat dacă execuţia nu reușește. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interfață de capturare triggere sistem și trimitere la o adresă URL +WebhookSetup = Configurare Webhook +Settings = Configurări +WebhookSetupPage = Pagină de configurare Webhook ShowQuickAddLink=Afișează un buton pentru a adăuga rapid un element în meniul din dreapta sus + HashForPing=Hash utilizat pentru ping ReadOnlyMode=Este instanță în mod "Read Only" DEBUGBAR_USE_LOG_FILE=Foloseşte fişierul dolibarr.log pentru capturare Log-uri UsingLogFileShowAllRecordOfSubrequestButIsSlower= Utilizează fișierul dolibarr.log pentru a capta jurnalele în loc de capturarea memoriei live. Permite să prinzi toate jurnalele în loc de jurnalul procesului curent (deci inclusiv pe cea a paginilor de subcereri ajax), dar va face instanța dvs. foarte foarte lentă. Nu se recomandă. FixedOrPercent=Fix (utilizează cuvântul cheie 'fixed') sau procent (utilizează cuvântul cheie 'percent') DefaultOpportunityStatus=Status implicit pentru oportunitate (prima stare când este creat clientul potențial - prospectul) + IconAndText=Pictogramă și text TextOnly=Doar text IconOnlyAllTextsOnHover=Doar pictogramă - Toate textele apar sub pictograma la plutirea cu mouse-ul pe bara de meniu @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Doar pictogramă - Textul pictogramei apare dedesubt la plut IconOnly=Doar pictogramă - Text doar în tooltip  INVOICE_ADD_ZATCA_QR_CODE=Afișează cod QR ZATCA pe facturi INVOICE_ADD_ZATCA_QR_CODEMore=Unele țări arabe au nevoie de acest cod QR pe ​​facturi +INVOICE_ADD_SWISS_QR_CODE=Afișare cod QR-Bill swiss pe facturi UrlSocialNetworksDesc=Link URL rețea socială. Utilizează {socialid} pentru partea variabilă care conține ID-ul rețelei sociale. +IfThisCategoryIsChildOfAnother=Dacă această categorie este un copil al alteia +NoName=Niciun nume +CIDLookupURL=Modulul aduce o adresă URL care poate fi utilizată de un instrument extern pentru a obține numele unui terț sau contact din numărul său de telefon. Adresa URL de utilizat este: diff --git a/htdocs/langs/ro_RO/boxes.lang b/htdocs/langs/ro_RO/boxes.lang index c88b68e89db..09d942ad92e 100644 --- a/htdocs/langs/ro_RO/boxes.lang +++ b/htdocs/langs/ro_RO/boxes.lang @@ -23,7 +23,7 @@ BoxLastMembersSubscriptions=Ultimele adeziuni de membri BoxFicheInter=Ultimele intervenţii BoxCurrentAccounts=Sold conturi deschise BoxTitleMemberNextBirthdays=Aniversări în această lună (membri) -BoxTitleMembersByType=Membri după tip +BoxTitleMembersByType=Membri după tip şi status BoxTitleMembersSubscriptionsByYear=Adeziuni membri după an BoxTitleLastRssInfos=Ultimele %s noutăţi de la %s BoxTitleLastProducts=Produse/Servicii: ultimele %s modificate diff --git a/htdocs/langs/ro_RO/cashdesk.lang b/htdocs/langs/ro_RO/cashdesk.lang index a295750a25e..6b76fe1585a 100644 --- a/htdocs/langs/ro_RO/cashdesk.lang +++ b/htdocs/langs/ro_RO/cashdesk.lang @@ -136,3 +136,4 @@ PrintWithoutDetails=Tipărire fără detalii YearNotDefined=Anul nu este definit TakeposBarcodeRuleToInsertProduct=Regulă cod de bare pentru introducere produs TakeposBarcodeRuleToInsertProductDesc=Regula pentru extragerea referinței produsului + o cantitate dintr-un cod de bare scanat.
Dacă este necompletat (valoare implicită), aplicația va folosi codul de bare complet scanat pentru a găsi produsul.

Dacă este definit, sintaxa trebuie să fie:
ref:NB+qu:NB+qd:NB+other:NB
unde NB este numărul de caractere utilizat pentru extragerea datelor din codul de bare scanat cu:
  • ref : referință produs
  • qu : cantitate de setat la introducerea articolului (unități)
  • qd : cantitatea de setat la introducerea articolului ( zecimale)
  • altele : alte caractere
+AlreadyPrinted=Deja tipărit diff --git a/htdocs/langs/ro_RO/categories.lang b/htdocs/langs/ro_RO/categories.lang index 56e0304107e..78dc6fbb7d6 100644 --- a/htdocs/langs/ro_RO/categories.lang +++ b/htdocs/langs/ro_RO/categories.lang @@ -95,7 +95,9 @@ ShowCategory=Arată tag/categorie ByDefaultInList=Implicit în listă ChooseCategory=Alegeți categoria StocksCategoriesArea=Categorii depozite +TicketsCategoriesArea=Categorii tichete ActionCommCategoriesArea=Categorii evenimente WebsitePagesCategoriesArea=Categorii Pagină-Container KnowledgemanagementsCategoriesArea=Categorii articole Bază de cunoştinţe UseOrOperatorForCategories=Foloseşte operatorul 'SAU' pentru categorii +AddObjectIntoCategory=Adăugare obiect în categorie diff --git a/htdocs/langs/ro_RO/companies.lang b/htdocs/langs/ro_RO/companies.lang index 4f6395d58eb..765ee3631d5 100644 --- a/htdocs/langs/ro_RO/companies.lang +++ b/htdocs/langs/ro_RO/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Natură terț NatureOfContact=Natură contact Address=Adresă State=Regiune/Judeţ +StateId=ID Județ StateCode=Cod judeţ/provincie StateShort=Stat Region=Regiune Region-State=Regiune - Țară Country=Ţară CountryCode=Cod ţară -CountryId=ID Ţară +CountryId=ID Țară Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Registrul Comerţului) ProfId2CM=Id. prof. 2 (Nr. contribuabil) -ProfId3CM=Id. prof. 3 (Decret de înfiinţare) -ProfId4CM=Id. prof. 4 (Certificat de depozite) +ProfId3CM=Id. prof. 3 (Nr. decret de creaţie) +ProfId4CM=Id. prof. 4 (Nr. Certificat de depozit) ProfId5CM=Id. prof. 5 (Altele) ProfId6CM=- ProfId1ShortCM=Registrul Comerţului ProfId2ShortCM=Nr. contribuabil -ProfId3ShortCM=Decret de înfiinţare -ProfId4ShortCM=Certificat de depozite +ProfId3ShortCM=Nr. decret de creaţie +ProfId4ShortCM=Nr. Certificat de depozit ProfId5ShortCM=Altele ProfId6ShortCM=- ProfId1CO=Prof. Id 1 (R.U.T.) diff --git a/htdocs/langs/ro_RO/errors.lang b/htdocs/langs/ro_RO/errors.lang index 7b55c5259c6..fd66cb4e4e7 100644 --- a/htdocs/langs/ro_RO/errors.lang +++ b/htdocs/langs/ro_RO/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript nu trebuie să fie dezactivat pentru a a ErrorPasswordsMustMatch=Ambele parolele tastate trebuie să se potrivească reciproc ErrorContactEMail=A apărut o eroare tehnică. Contactați administratorul tehnic la următoarea adresă de email %s și furnizați-i codul de eroare %s în mesaj sau adăugați-i o copie de ecran a acestei pagini. ErrorWrongValueForField=Câmpul %s: '%s' nu se potrivește cu regula regex %s +ErrorHtmlInjectionForField=Câmpul %s: Valoarea '%s' conține date rău intenționate nepermise ErrorFieldValueNotIn=Câmpul %s: '%s' nu este o valoare găsită în câmpul %s din %s ErrorFieldRefNotIn=Câmpul %s: '%s' nu este o %s referinţă existentă ErrorsOnXLines=%s erori găsite @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Trebuie să setezi mai întâi planul d ErrorFailedToFindEmailTemplate=Nu s-a găsit șablonul cu numele de cod %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Durata nu este definită pentru serviciu. Nicio modalitate de a calcula prețul pe oră. ErrorActionCommPropertyUserowneridNotDefined=Utilizatorul deţinător este obligatoriu -ErrorActionCommBadType=Tipul evenimentului selectat (id: %n, cod: %s) nu există în dicţionarul Tipuri evenimente +ErrorActionCommBadType=Tipul de eveniment selectat (id:%s , cod: %s) nu există în dicționarul Tip de eveniment CheckVersionFail=Verificarea versiunii a eşuat ErrorWrongFileName=Numele fișierului nu poate să conțină _SOMETHING_ în el ErrorNotInDictionaryPaymentConditions=Nu se află în dicționarul Condiții de plată, vă rugăm să modificați. @@ -287,11 +288,14 @@ ErrorInvoiceLoadThirdParty=Nu se poate încărca obiectul terț pentru factura " ErrorInvoiceLoadThirdPartyKey=Cheia pentru terțul "%s" nu este setată pentru factura "%s" ErrorDeleteLineNotAllowedByObjectStatus=Ștergerea liniei nu este permisă de starea curentă a obiectului ErrorAjaxRequestFailed=Solicitare eşuată +ErrorThirpdartyOrMemberidIsMandatory=Terțul sau Membrul unui parteneriat este obligatoriu +ErrorFailedToWriteInTempDirectory=Eșec la scrierea în directorul temp +ErrorQuantityIsLimitedTo=Cantitatea este limitată la %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Parametrul tău PHP upload_max_filesize (%s) este mai mare decât paramentrul PHP post_max_size (%s). Aceasta nu este o configuraţie consistentă. WarningPasswordSetWithNoAccount= O parolă a fost trimisă către acest membru. Cu toate acestea, nu a fost creat nici un cont de utilizator. Astfel, această parolă este stocată, dar nu poate fi utilizată pentru autentificare. Poate fi utilizată de către un modul / interfată externă, dar dacă nu aveți nevoie să definiți un utilizator sau o parolă pentru un membru, puteți dezactiva opțiunea "Gestionați o conectare pentru fiecare membru" din modul de configurare membri. În cazul în care aveți nevoie să gestionați un utilizator, dar nu este nevoie de parolă, aveți posibilitatea să păstrați acest câmp gol pentru a evita acest avertisment. Notă: Adresa de e-mail poate fi utilizată ca utilizator la autentificare, în cazul în care membrul este legat de un utilizator. -WarningMandatorySetupNotComplete=Click aici pentru a seta parametrii obligatorii +WarningMandatorySetupNotComplete=Clic aici pentru a configura parametrii principali WarningEnableYourModulesApplications=Click aici pentru a activa modulele şi aplicaţiile tale WarningSafeModeOnCheckExecDir=Atenţie, opţiunea PHP safe_mode este activă deci comanda trebuie să fie într-un director declarat în parametrul PHP safe_mode_exec_dir. WarningBookmarkAlreadyExists=Un marcaj cu acest titlu sau adresă (URL) există deja. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Atenție, nu puteți crea direct un cont secundar, treb WarningAvailableOnlyForHTTPSServers=Disponibil numai dacă se utilizează conexiunea securizată HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Modulul %s nu a fost activat. Este posibil să pierdeți o mulțime de evenimente aici.  WarningPaypalPaymentNotCompatibleWithStrict=Valoarea 'Strictă' face ca funcțiile de plată online să nu funcționeze corect. Folosiți în schimb 'Lax'. +WarningThemeForcedTo=Atenție, tema %s a fost forțată de constanta ascunsă MAIN_FORCETHEME  -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> ramura '15.0' de la git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Valoare invalidă RequireAtLeastXString = Necesită cel puţin %s caracter(e) @@ -347,12 +347,3 @@ BadSetupOfField = Eroare setare invalidă a câmpului BadSetupOfFieldClassNotFoundForValidation = Eroare setare valoare câmp : Clasa nu a fost găsită pentru validare BadSetupOfFieldFileNotFound = Eroare setare valoare câmp : Fișierul nu a fost găsit pentru includere BadSetupOfFieldFetchNotCallable = Eroare setare valoare câmp : Operaţia fetch nu este apelabilă din clasă -<<<<<<< HEAD -======= -======= -======= ->>>>>>> ramura '15.0' de la git@github.com:Dolibarr/dolibarr.git ->>>>>>> ramura '15.0' de la git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> ramura '15.0' de la git@github.com:Dolibarr/dolibarr.git ->>>>>>> ramura '15.0' de la git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/ro_RO/eventorganization.lang b/htdocs/langs/ro_RO/eventorganization.lang index cf0a4ced492..ad2838e2a78 100644 --- a/htdocs/langs/ro_RO/eventorganization.lang +++ b/htdocs/langs/ro_RO/eventorganization.lang @@ -60,6 +60,8 @@ ConferenceOrBoothTab = Conferinţe sau Stand-uri AmountPaid = Suma plătită DateOfRegistration = Dată înregistrare ConferenceOrBoothAttendee = Participant la Conferinţă sau Stand +ApplicantOrVisitor=Aplicant sau vizitator +Speaker=Speaker # # Template Mail @@ -139,6 +141,7 @@ OrganizationEventPaymentOfRegistrationWasReceived=Plata ta pentru înscrierea la OrganizationEventBulkMailToAttendees=Aceasta este un reminder cu privire la participarea ta la eveniment OrganizationEventBulkMailToSpeakers=Acesta este un reminder cu privire la participarea ta ca speaker la eveniment OrganizationEventLinkToThirdParty=Link către un terț (client, furnizor sau partener) +OrganizationEvenLabelName=Nume public conferință sau stand NewSuggestionOfBooth=Aplicare pentru stand NewSuggestionOfConference=Aplicare pentru conferinţă diff --git a/htdocs/langs/ro_RO/externalsite.lang b/htdocs/langs/ro_RO/externalsite.lang deleted file mode 100644 index 1b2e130a3d5..00000000000 --- a/htdocs/langs/ro_RO/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Link-ul de instalare pentru site-ul extern -ExternalSiteURL=URL-ul site-ului extern care va fi conținut în iframe HTML -ExternalSiteModuleNotComplete=Modulul Site extern nu a fost configurat corespunzător. -ExampleMyMenuEntry=Intrare în Meniul meu diff --git a/htdocs/langs/ro_RO/ftp.lang b/htdocs/langs/ro_RO/ftp.lang deleted file mode 100644 index 0b169059064..00000000000 --- a/htdocs/langs/ro_RO/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Configurarea modulului client FTP -NewFTPClient=Creează o nouă conexiune FTP -FTPArea=FTP -FTPAreaDesc=Acest ecran afișează conţinutul unui server FTP -SetupOfFTPClientModuleNotComplete=Configurarea clientului FTP pare incompletă -FTPFeatureNotSupportedByYourPHP=Versiunea PHP a dvs. nu are suport pentru funcţii FTP -FailedToConnectToFTPServer=Conectarea la serverul FTP a eșuat (server: %s, port: %s) -FailedToConnectToFTPServerWithCredentials=Autentificarea la serverul FTP a eșuat folosind utilizatorul / parola definite -FTPFailedToRemoveFile=Fișierul %s nu poate fi șters. -FTPFailedToRemoveDir=Directorul %s nu poate fi șters (Verificaţi permisiunile şi faptul că directorul este gol). -FTPPassiveMode=Mod pasiv -ChooseAFTPEntryIntoMenu=Alegeți o intrare FTP în meniul ... -FailedToGetFile=Nu se pot da fișierele %s diff --git a/htdocs/langs/ro_RO/hrm.lang b/htdocs/langs/ro_RO/hrm.lang index 5aabf0e0572..cf4ecfddf4f 100644 --- a/htdocs/langs/ro_RO/hrm.lang +++ b/htdocs/langs/ro_RO/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Deschide sediu CloseEtablishment=Închide sediu # Dictionary DictionaryPublicHolidays=Concediu - Sărbători legale -DictionaryDepartment=HRM - Listă departamente +DictionaryDepartment=HRM - Unitate organizațională DictionaryFunction=HRM - Joburi disponibile # Module Employees=Angajaţi @@ -70,9 +70,9 @@ RequiredSkills=Abilităţi necesare pentru acest job UserRank=Rang utilizator SkillList=Listă aptitudini SaveRank=Salvare rang -knowHow=Know how -HowToBe=Cum să fie -knowledge=Cunoştinţe +TypeKnowHow=Know how +TypeHowToBe=Cum să fie +TypeKnowledge=Cunoştinţe AbandonmentComment=Comentariu abandon DateLastEval=Data ultimei evaluări NoEval=Nicio evaluare efectuată pentru acest angajat @@ -88,3 +88,5 @@ DeleteSkill = Aptitudine ştearsă SkillsExtraFields=Atribute suplimentare (Competenţe) JobsExtraFields=Atribute suplimentare (Angajaţi) EvaluationsExtraFields=Atribute suplimentare (Evaluări) +NeedBusinessTravels=Necesar călătorii de afaceri +NoDescription=Nicio descriere diff --git a/htdocs/langs/ro_RO/install.lang b/htdocs/langs/ro_RO/install.lang index 3e3ef345fae..7c89d198bf5 100644 --- a/htdocs/langs/ro_RO/install.lang +++ b/htdocs/langs/ro_RO/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Fișierul de configurare %s nu poate fi scris. Ve ConfFileIsWritable=Fişierul de configurare %s se poate scrie. ConfFileMustBeAFileNotADir=Fișierul de configurare %s trebuie să fie un fișier, nu un director. ConfFileReload=Reîncărcarea parametrilor din fișierul de configurare. -NoReadableConfFileSoStartInstall=Fișierul de configurare conf/conf.php nu există sau nu este citibil. Vom rula procesul de instalare pentru a încerca să-l inițializam. +NoReadableConfFileSoStartInstall=Fișierul de configurare conf/conf.php nu există sau nu poate fi citit. Vom rula procesul de instalare pentru a încerca să-l inițializam. PHPSupportPOSTGETOk=Acest PHP suportă variabile POST şi GET. PHPSupportPOSTGETKo=Este posibil ca configurarea PHP să nu accepte variabilele POST și/sau GET. Verificați parametrul variables_order în php.ini. PHPSupportSessions=Acest PHP susţine sesiuni. @@ -24,7 +24,8 @@ ErrorWrongValueForParameter=Este posibil să fi tastat greşit o valoare pentru ErrorFailedToCreateDatabase=Eşec la crearea bazei de date '%s'. ErrorFailedToConnectToDatabase=Eşec la conectarea la baza de date '%s'. ErrorDatabaseVersionTooLow=Versiunea bazei de date (%s) este prea veche. Versiunea %s sau mai mare este necesară. -ErrorPHPVersionTooLow=Versiune PHP prea veche. Versiunea %s este necesară. +ErrorPHPVersionTooLow=Versiune PHP este prea veche. Versiunea %s sau mai nouă este necesară. +ErrorPHPVersionTooHigh=Versiune PHP prea nouă. Versiunea %s sau mai veche este necesară. ErrorConnectedButDatabaseNotFound=Conectarea la server a reușit, dar baza de date '%s' nu a fost găsită. ErrorDatabaseAlreadyExists=Baza de date '%s' există deja. IfDatabaseNotExistsGoBackAndUncheckCreate=Dacă baza de date nu există, reveniți și bifați opțiunea "Creare bază de date". diff --git a/htdocs/langs/ro_RO/knowledgemanagement.lang b/htdocs/langs/ro_RO/knowledgemanagement.lang index 08c8ea84f27..4431c6d0919 100644 --- a/htdocs/langs/ro_RO/knowledgemanagement.lang +++ b/htdocs/langs/ro_RO/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Articole KnowledgeRecord = Articol KnowledgeRecordExtraFields = Extracâmpuri articole GroupOfTicket=Grup de tichete -YouCanLinkArticleToATicketCategory=Poți conecta un articol la un grup de tichete (astfel încât articolul să fie sugerat în timpul clasificării tichetelor noi) +YouCanLinkArticleToATicketCategory=Poți lega articolul la un grup de tichete (deci articolul va fi evidențiat pe orice tichet din acest grup) SuggestedForTicketsInGroup=Sugerat pentru tichete atunci când grupul este SetObsolete=Setează ca învechit diff --git a/htdocs/langs/ro_RO/languages.lang b/htdocs/langs/ro_RO/languages.lang index 891dd64bb89..663cba94fe6 100644 --- a/htdocs/langs/ro_RO/languages.lang +++ b/htdocs/langs/ro_RO/languages.lang @@ -3,6 +3,7 @@ Language_am_ET=Etiopiană Language_ar_AR=Arabă Language_ar_DZ=Arabă (Algeria) Language_ar_EG=Arabă (Egipt) +Language_ar_JO=Arabă (Iordania) Language_ar_MA=Arabă (Maroc) Language_ar_SA=Arabă (Arabia Saudită) Language_ar_TN=Arabă (Tunisia) @@ -12,9 +13,11 @@ Language_az_AZ=Azerbaijană Language_bn_BD=Bengaleză Language_bn_IN=Bengală (India) Language_bg_BG=Bulgară +Language_bo_CN=Tibetană Language_bs_BA=Bosniacă Language_ca_ES=Catalană Language_cs_CZ=Cehă +Language_cy_GB=Galeză Language_da_DA=Daneză Language_da_DK=Daneză Language_de_DE=Germană @@ -22,6 +25,7 @@ Language_de_AT=Germană (Austria) Language_de_CH=Germană (Elveţia) Language_el_GR=Greacă Language_el_CY=Greacă (Cipru) +Language_en_AE=Engleză (Emiratele Arabe Unite) Language_en_AU=Engleză (Australia) Language_en_CA=Engleză (Canada) Language_en_GB=Engleză (Marea Britanie) @@ -36,6 +40,7 @@ Language_es_AR=Spaniolă (Argentina) Language_es_BO=Spaniolă (Bolivia) Language_es_CL=Spaniolă (Chile) Language_es_CO=Spaniolă (Columbia) +Language_es_CR=Spaniolă (Costa Rica) Language_es_DO=Spaniolă (Republica Dominicană) Language_es_EC=Spaniolă (Ecuador) Language_es_GT=Spaniolă (Guatemala) @@ -83,18 +88,21 @@ Language_lt_LT=Lituaniană Language_lv_LV=Letonă Language_mk_MK=Macedoneană Language_mn_MN=Mongolă +Language_my_MM=Birmaneză Language_nb_NO=Norvegiană (Bokmål) Language_ne_NP=Nepaleză Language_nl_BE=Olandeză (Belgia) Language_nl_NL=Olandeză Language_pl_PL=Poloneză Language_pt_AO=Portugheză (Angola) +Language_pt_MZ=Portugheză (Mozambic) Language_pt_BR=Portugheză (Brazilia) Language_pt_PT=Portugheză Language_ro_MD=Română (Moldova) Language_ro_RO=Română Language_ru_RU=Rusă Language_ru_UA=Rusă (Ucraina) +Language_ta_IN=Tamilă Language_tg_TJ=Tajică Language_tr_TR=Turcă Language_sl_SI=Slovenă @@ -106,6 +114,7 @@ Language_sr_RS=Sârbă Language_sw_SW=Swahili Language_th_TH=Tailandeză Language_uk_UA=Ucraineană +Language_ur_PK=Urdu Language_uz_UZ=Uzbecă Language_vi_VN=Vietnameză Language_zh_CN=Chineză diff --git a/htdocs/langs/ro_RO/loan.lang b/htdocs/langs/ro_RO/loan.lang index ecd77415a51..8a146e5b36d 100644 --- a/htdocs/langs/ro_RO/loan.lang +++ b/htdocs/langs/ro_RO/loan.lang @@ -7,28 +7,28 @@ PaymentLoan=Plată credit LoanPayment=Plată credit ShowLoanPayment=Afișează plată credit LoanCapital=Capital -Insurance=Asigurari +Insurance=Asigurări Interest=Dobândă -Nbterms=Numarul termenelor -Term=Termen -LoanAccountancyCapitalCode=Contabilitatea capitalului contului -LoanAccountancyInsuranceCode=Asigurarea contului contabil -LoanAccountancyInterestCode=Dobânda contului contabil +Nbterms=Număr de rate +Term=Rată +LoanAccountancyCapitalCode=Cont contabil de capital +LoanAccountancyInsuranceCode=Cont contabil de asigurare +LoanAccountancyInterestCode=Cont contabil de dobândă ConfirmDeleteLoan=Confirmaţi ştergerea acestui credit LoanDeleted=Credit șters cu succes -ConfirmPayLoan=Confirmați clasificarea plătită acest împrumut +ConfirmPayLoan=Confirmați clasificarea împrumutului ca achitat LoanPaid=Credit achitat ListLoanAssociatedProject=Lista împrumuturilor asociate proiectului AddLoan=Creați împrumut FinancialCommitment=Angajament financiar InterestAmount=Dobândă -CapitalRemain=Capitalul rămâne -TermPaidAllreadyPaid = Acest element este plătit deja -CantUseScheduleWithLoanStartedToPaid = Nu poţi folosi programatorul pentru un credit pentru care au început plăţile -CantModifyInterestIfScheduleIsUsed = Nu poţi modifica dobânda dacă foloseşti programatorul +CapitalRemain=Capital rămas de achitat +TermPaidAllreadyPaid = Această rată este plătită deja +CantUseScheduleWithLoanStartedToPaid = Nu se poate genera un grafic de rambursare pentru un împrumut cu o plată începută +CantModifyInterestIfScheduleIsUsed = Nu poţi modifica dobânda dacă foloseşti scadenţar # Admin -ConfigLoan=Configurarea împrumutului modulului -LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Contabilitatea contului de capital în mod implicit -LOAN_ACCOUNTING_ACCOUNT_INTEREST=Dobânda contului contabil în mod implicit -LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Asigurarea contului de contabilitate în mod implicit +ConfigLoan=Configurare modul Credite - împrumuturi +LOAN_ACCOUNTING_ACCOUNT_CAPITAL=Cont contabil de capital implicit +LOAN_ACCOUNTING_ACCOUNT_INTEREST=Cont contabil de dobândă implicit +LOAN_ACCOUNTING_ACCOUNT_INSURANCE=Cont contabil de asigurare implicit CreateCalcSchedule=Editați angajamentul financiar diff --git a/htdocs/langs/ro_RO/mails.lang b/htdocs/langs/ro_RO/mails.lang index 9b8f0c6eb33..2a091dca2de 100644 --- a/htdocs/langs/ro_RO/mails.lang +++ b/htdocs/langs/ro_RO/mails.lang @@ -178,3 +178,4 @@ IsAnAnswer= Este un răspuns al unui email inițial RecordCreatedByEmailCollector=Înregistrare creată de colectorul de email %s din adresa %s DefaultBlacklistMailingStatus=Valoare implicită pentru câmpul '%s' când este creat un nou contact DefaultStatusEmptyMandatory= Necompletat, dar obligatoriu +WarningLimitSendByDay=ATENȚIE: Configurarea sau contractul instanței tale limitează numărul de email-uri pe zi la %s. Încercarea de a trimite mai multe poate duce la încetinirea sau suspendarea instanței. Contactează serviciul de asistență dacă ai de o cotă mai mare. diff --git a/htdocs/langs/ro_RO/main.lang b/htdocs/langs/ro_RO/main.lang index d4159a64d7a..b9e45cb7e93 100644 --- a/htdocs/langs/ro_RO/main.lang +++ b/htdocs/langs/ro_RO/main.lang @@ -1,9 +1,15 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr +# Default for FONTFORPDF=helvetica # 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 +# msungstdlight or cid0ct are for traditional Chinese zh_TW (traditional does not render with Ubuntu pdf reader) +# stsongstdlight or cid0cs are for simplified Chinese zh_CN # To read Chinese pdf with Linux: sudo apt-get install poppler-data +# cid0jp is for Japanish +# cid0kr is for Korean +# DejaVuSans is for some Eastern languages, some Asian languages and some Arabic languages +# freemono is for ru_RU or uk_UA, uz_UZ +# freeserif is for Tamil FONTFORPDF=helvetica FONTSIZEFORPDF=10 SeparatorDecimal=, @@ -712,6 +718,7 @@ FeatureDisabled=Funcţionalitate dezactivată MoveBox=Mutați widgetul Offered=Oferit NotEnoughPermissions=Nu aveţi permisiuni pentru această acţiune +UserNotInHierachy=Această acțiune este rezervată supervizorilor acestui utilizator SessionName=Nume sesiune Method=Metodă Receive=Recepţionează @@ -1177,3 +1184,6 @@ CommercialAffected=Reprezentantul de vânzări afectat YourMessage=Mesajul tău YourMessageHasBeenReceived=Mesajul tău a fost primit. Vă vom răspunde sau vă vom contacta cât mai curând posibil. UrlToCheck=Url de verificat +Automation=Automatizare +CreatedByEmailCollector=Creat de Colectorul de email +CreatedByPublicPortal=Creat din Portalul public diff --git a/htdocs/langs/ro_RO/members.lang b/htdocs/langs/ro_RO/members.lang index 4a29add1e85..cc46ed8c201 100644 --- a/htdocs/langs/ro_RO/members.lang +++ b/htdocs/langs/ro_RO/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Dată terminare adeziune EndSubscription=Terminare adeziune SubscriptionId=ID contribuţie WithoutSubscription=Fără contribuţie -MemberId=ID membru +MemberId=Id membru +MemberRef=Ref membru NewMember=Membru nou MemberType=Tip Membru MemberTypeId=ID tip membru diff --git a/htdocs/langs/ro_RO/modulebuilder.lang b/htdocs/langs/ro_RO/modulebuilder.lang index d2ea048b1eb..f2cb75bc24d 100644 --- a/htdocs/langs/ro_RO/modulebuilder.lang +++ b/htdocs/langs/ro_RO/modulebuilder.lang @@ -153,3 +153,4 @@ LinkToParentMenu=Meniu părinte (fk_xxxxmenu) ListOfTabsEntries=Listă tab-uri TabsDefDesc=Defineşte aici tab-urile furnizate de modulul tău TabsDefDescTooltip=Tab-urile furnizate de modulul/aplicația ta sunt definite în matricea $this->tabs în fișierul descriptor al modulului. Poți edita manual acest fișier sau poți utiliza editorul încorporat.  +BadValueForType=Valoare incorectă pentru tipul %s diff --git a/htdocs/langs/ro_RO/oauth.lang b/htdocs/langs/ro_RO/oauth.lang index 6bb293ad935..7608fdef072 100644 --- a/htdocs/langs/ro_RO/oauth.lang +++ b/htdocs/langs/ro_RO/oauth.lang @@ -1,32 +1,36 @@ # Dolibarr language file - Source file is en_US - oauth -ConfigOAuth=Configurarea OAuth +ConfigOAuth=Configurare OAuth OAuthServices=Servicii OAuth -ManualTokenGeneration=Generarea tokenului manual -TokenManager=Manager de Token +ManualTokenGeneration=Generare manuală token +TokenManager=Manager Token IsTokenGenerated=Se generează tokenul? -NoAccessToken=Nicun token de acces salvat în baza de date locală +NoAccessToken=Niciun token de acces salvat în baza de date locală HasAccessToken=Un token a fost generat și salvat în baza de date locală NewTokenStored=Token-ul a fost primit și salvat -ToCheckDeleteTokenOnProvider=Faceți clic aici pentru a verifica / șterge autorizația salvată de furnizorul OAuth %s -TokenDeleted=Token sters -RequestAccess=Faceți clic aici pentru a solicita / reînnoi accesul și a primi un nou token pentru salvare -DeleteAccess=Click aici pentru a șterge token -UseTheFollowingUrlAsRedirectURI=Utilizați adresa URL următoare ca URI de redirecționare atunci când vă creați acreditările cu furnizorul dvs. de servicii OAuth: -ListOfSupportedOauthProviders=Introduceți acreditările furnizate de furnizorul dvs. de servicii OAuth2. Numai furnizorii OAuth2 acceptați sunt listați aici. Aceste servicii pot fi utilizate de alte module care necesită autentificare OAuth2. -OAuthSetupForLogin=Pagina pentru a genera un token OAuth +ToCheckDeleteTokenOnProvider=Faceți clic aici pentru a verifica/șterge autorizația salvată de furnizorul OAuth %s +TokenDeleted=Token şters +RequestAccess=Clic aici pentru a solicita/reînnoi accesul și pentru a primi un nou token  +DeleteAccess=Click aici pentru a șterge token-ul +UseTheFollowingUrlAsRedirectURI=Utilizați adresa URL următoare ca URI de redirecționare atunci când vă creați acreditările cu furnizorul de servicii OAuth: +ListOfSupportedOauthProviders=Adăugă furnizorii tăi de token-uri OAuth2. Apoi, accesează pagina de administrare a furnizorului OAuth pentru a crea/obține un ID OAuth și un secret și salveză-le aici. După ce ai terminat, comută pe cealaltă filă pentru a-ți genera token-ul. +OAuthSetupForLogin=Pagină gestionare (generare/ștergere) token-uri OAuth SeePreviousTab=Consultați fila anterioară -OAuthIDSecret=ID-ul OAuth și secretul -TOKEN_REFRESH=Token Refresh Present -TOKEN_EXPIRED=Tokenul a expirat -TOKEN_EXPIRE_AT=Tokenul expiră la -TOKEN_DELETE=Ștergeți tokenul salvat +OAuthProvider=Furnizor OAuth +OAuthIDSecret=ID OAuth și secretul +TOKEN_REFRESH=Token Refresh Prezent +TOKEN_EXPIRED=Token-ul a expirat +TOKEN_EXPIRE_AT=Token-ul expiră la +TOKEN_DELETE=Ștergeți token-ul salvat OAUTH_GOOGLE_NAME=Serviciul Google OAuth -OAUTH_GOOGLE_ID=ID-ul Google OAuth +OAUTH_GOOGLE_ID=ID Google OAuth OAUTH_GOOGLE_SECRET=Secretul OAuth Google -OAUTH_GOOGLE_DESC=Mergeți la această pagină apoi "Acreditări" pentru a crea acreditările OAuth OAUTH_GITHUB_NAME=Serviciul OAuth GitHub -OAUTH_GITHUB_ID=ID-ul OAuth GitHub +OAUTH_GITHUB_ID=ID OAuth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Mergeți la această pagină apoi "Înregistrați o nouă aplicație" pentru a crea acreditările OAuth +OAUTH_URL_FOR_CREDENTIAL=Accesează această pagină pentru a crea sau a obține ID-ul și Secretul OAuth OAUTH_STRIPE_TEST_NAME=Testare OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=ID OAuth +OAUTH_SECRET=Secret OAuth +OAuthProviderAdded=Furnizor OAuth adăugat +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=Există deja o intrare OAuth pentru acest furnizor și etichetă diff --git a/htdocs/langs/ro_RO/orders.lang b/htdocs/langs/ro_RO/orders.lang index b1b284a125f..3931bfaec96 100644 --- a/htdocs/langs/ro_RO/orders.lang +++ b/htdocs/langs/ro_RO/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=O comandă era deja deschisă legată de această ofertă comercială, așa că nicio altă comandă nu a fost creată automat OrdersArea=Comenzi clienţi SuppliersOrdersArea=Comenzi de achiziție OrderCard=Fişă Comandă diff --git a/htdocs/langs/ro_RO/other.lang b/htdocs/langs/ro_RO/other.lang index 12cf4e8e76e..29bd7e3ce07 100644 --- a/htdocs/langs/ro_RO/other.lang +++ b/htdocs/langs/ro_RO/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Eşti sigur că vrei să "%s" ? ConfirmBtnCommonTitle = Confirmare acţiune CloseDialog = Închide Autofill = Autocompletare + +# externalsite +ExternalSiteSetup=Link-ul de instalare pentru site-ul extern +ExternalSiteURL=URL-ul site-ului extern care va fi conținut în iframe HTML +ExternalSiteModuleNotComplete=Modulul Site extern nu a fost configurat corespunzător. +ExampleMyMenuEntry=Intrare în Meniul meu + +# FTP +FTPClientSetup=Configurare modul client FTP sau SFTP +NewFTPClient=Configurare conexiune nouă FTP/FTPS +FTPArea=FTP/FTPS +FTPAreaDesc=Acest ecran arată o vedere a unui server FTP și SFTP. +SetupOfFTPClientModuleNotComplete=Configurarea modulului client FTP sau SFTP pare să fie incompletă +FTPFeatureNotSupportedByYourPHP=PHP-ul nu suportă funcţii FTP sau SFTP +FailedToConnectToFTPServer=Conectarea la server a eşuat ( server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Autentificarea la server a eşuat cu numele/parola definită +FTPFailedToRemoveFile=Eșec la ștergerea fișierului %s. +FTPFailedToRemoveDir=Eșec la eliminarea directorului %s : verifică permisiunile și dacă directorul este gol. +FTPPassiveMode=Mod pasiv +ChooseAFTPEntryIntoMenu=Alege un site FTP/SFTP din meniu... +FailedToGetFile=Nu se pot obţine fișierele %s diff --git a/htdocs/langs/ro_RO/paypal.lang b/htdocs/langs/ro_RO/paypal.lang index 6533bfc0210..17dd8bb8182 100644 --- a/htdocs/langs/ro_RO/paypal.lang +++ b/htdocs/langs/ro_RO/paypal.lang @@ -1,35 +1,35 @@ # Dolibarr language file - Source file is en_US - paypal -PaypalSetup=PayPal modul de configurare -PaypalDesc=Acest modul permite plata de către clienți prin intermediul PayPal . Aceasta poate fi utilizată pentru o plată ad-hoc sau pentru o plată aferentă unui obiect Dolibarr (factură, comandă, ...) +PaypalSetup=Configurare modul PayPal +PaypalDesc=Acest modul permite plata de la clienţi prin PayPal. Acesta poate fi utilizat pentru plăţi ad-hoc payment sau pentru plăţi aferente unui obiect din sistem (factură, comandă, ...) PaypalOrCBDoPayment=Plăteşte cu PayPal (Card sau PayPal) PaypalDoPayment=Plătiți cu PayPal -PAYPAL_API_SANDBOX=Mod de încercare / sandbox +PAYPAL_API_SANDBOX=Mod test/sandbox PAYPAL_API_USER=API numele de utilizator -PAYPAL_API_PASSWORD=API parola -PAYPAL_API_SIGNATURE=API semnătura -PAYPAL_SSLVERSION=Versiune Curl SSL -PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Oferiți o plată integrală (card de credit + PayPal) sau doar "PayPal" +PAYPAL_API_PASSWORD=API parolă +PAYPAL_API_SIGNATURE=API semnătură +PAYPAL_SSLVERSION=Versiune curl SSL +PAYPAL_API_INTEGRAL_OR_PAYPALONLY=Oferă o plată integrală (card de credit + PayPal) sau doar "PayPal" PaypalModeIntegral=Integral -PaypalModeOnlyPaypal=Numai PayPal -ONLINE_PAYMENT_CSS_URL=Adresa URL opțională a foii de stil CSS pe pagina de plată online -ThisIsTransactionId=Acesta este ID-ul de tranzacţie: %s -PAYPAL_ADD_PAYMENT_URL=Includeți URL cu plata PayPal atunci când trimiteți un document prin e-mail +PaypalModeOnlyPaypal=Doar PayPal +ONLINE_PAYMENT_CSS_URL=Adresa URL opțională a foii de stil CSS pentru pagina de plată online +ThisIsTransactionId=Acesta este ID-ul tranzacţiei: %s +PAYPAL_ADD_PAYMENT_URL=Include URL-ul cu plata PayPal atunci când trimiți un document prin email NewOnlinePaymentReceived=A fost primită o nouă plată online -NewOnlinePaymentFailed=Noua plata online a încercat, dar nu a reușit -ONLINE_PAYMENT_SENDEMAIL=Adresa de e-mail pentru notificări după fiecare încercare de plată (in caz de succes și eșec) -ReturnURLAfterPayment=URL-ul return după plată +NewOnlinePaymentFailed=S-a încercat o nouă plată online, dar a eşuat +ONLINE_PAYMENT_SENDEMAIL=Adresa de email pentru notificări după fiecare încercare de plată (în caz de succes și eșec) +ReturnURLAfterPayment=URL-ul de returnare după plată ValidationOfOnlinePaymentFailed=Validarea plății online a eșuat -PaymentSystemConfirmPaymentPageWasCalledButFailed=Pagina de confirmare a plății apelată de sistemul de plăți a întors o eroare -SetExpressCheckoutAPICallFailed=Apel API SetExpressCheckout eșuat.. -DoExpressCheckoutPaymentAPICallFailed=Apel API DoExpressCheckoutPayment eșuat. -DetailedErrorMessage=Mesaj eroare detaliat -ShortErrorMessage=Mesaj eroare scurt +PaymentSystemConfirmPaymentPageWasCalledButFailed=Pagina de confirmare a plății apelată de sistemul de plăți a returnat o eroare +SetExpressCheckoutAPICallFailed=Apel API SetExpressCheckout eșuat. +DoExpressCheckoutPaymentAPICallFailed=Apelul API DoExpressCheckoutPayment a eșuat. +DetailedErrorMessage=Mesaj de eroare detaliat +ShortErrorMessage=Mesaj de eroare scurt ErrorCode=Cod de eroare -ErrorSeverityCode=Cod Severitate eroare +ErrorSeverityCode=Cod severitate eroare OnlinePaymentSystem=Sistem de plată online -PaypalLiveEnabled=ModcPayPal "live" activat (altfel test / modul sandbox) -PaypalImportPayment=Importați plăți PayPal -PostActionAfterPayment=Acțiuni postate după plăți +PaypalLiveEnabled=Mod PayPal "live" activat (altfel test/mod sandbox) +PaypalImportPayment=Import plăți PayPal +PostActionAfterPayment=Acțiuni Post-plăți ARollbackWasPerformedOnPostActions=A fost efectuată o revocare a tuturor acțiunilor Post. Trebuie să finalizați manual acțiunile postate dacă acestea sunt necesare. ValidationOfPaymentFailed=Validarea plății a eșuat CardOwner=Deţinătorul cardului diff --git a/htdocs/langs/ro_RO/products.lang b/htdocs/langs/ro_RO/products.lang index c19798ab0d9..88b786c73b3 100644 --- a/htdocs/langs/ro_RO/products.lang +++ b/htdocs/langs/ro_RO/products.lang @@ -262,7 +262,7 @@ Quarter1=Trimestru 1. Quarter2=Trimestru 2. Quarter3=Trimestru 3. Quarter4=Trimestru 4. -BarCodePrintsheet=Tipărire cod de bare +BarCodePrintsheet=Tipărește coduri de bare PageToGenerateBarCodeSheets=Cu acest instrument, puteți tipări autocolante cu coduri de bare. Alegeți formatul paginii de autocolant, tipul de cod de bare și valoarea codului de bare, apoi faceți clic pe butonul %s. NumberOfStickers=Număr de autocolante de tipărit pe pagină PrintsheetForOneBarCode=Tipăriţi mai multe autocolante pentru un cod de bare diff --git a/htdocs/langs/ro_RO/stocks.lang b/htdocs/langs/ro_RO/stocks.lang index 68b904b148d..9bd95840676 100644 --- a/htdocs/langs/ro_RO/stocks.lang +++ b/htdocs/langs/ro_RO/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Limită de stoc pentru alertă și stocul optim dor ProductStockWarehouseUpdated=Limită de stoc pentru alertă și stocul optim dorit au fost actualizate corect. ProductStockWarehouseDeleted=Limita de stoc pentru alertă și stocul optim dorit au fost șterse corect AddNewProductStockWarehouse=Setează o nouă limită de stoc pentru alertă şi stocul optim dorit -AddStockLocationLine=Redu cantitatea, apoi fă clic pentru a adăuga un alt depozit pentru acest produs +AddStockLocationLine=Redu cantitatea, apoi fă clic pentru a împărți linia InventoryDate=Data inventarului Inventories=Inventare NewInventory=Inventar nou @@ -254,7 +254,7 @@ ReOpen=Redeschide ConfirmFinish=Confirmați închiderea inventarului? Aceasta va genera toate mișcările stocului pentru a vă actualiza stocul la cantitatea reală pe care ați introdus-o în inventar. ObjectNotFound=%s nu a fost găsit MakeMovementsAndClose=Generează mişcări şi închide -AutofillWithExpected=Înlocuieşte cantitatea reală cu cea estimată +AutofillWithExpected=Completare cantitate reală cu cantitatea așteptată ShowAllBatchByDefault=În mod prestabilit, afișează detaliile lotului în fila "stoc" a produsului CollapseBatchDetailHelp=Poţi seta afișarea implicită a detaliilor lotului în configurația modulului stocuri ErrorWrongBarcodemode=Mod cod de bare necunoscut @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Produsul cu codul de bare nu există WarehouseId=ID depozit WarehouseRef=Ref depozit SaveQtyFirst=Salvează mai întâi cantitățile reale inventariate, înainte de a cere crearea mișcării de stoc. +ToStart=Start InventoryStartedShort=Început ErrorOnElementsInventory=Operaţiunea a fost anulată din următorul motiv: ErrorCantFindCodeInInventory=Nu se găseşte următorul cod în inventar QtyWasAddedToTheScannedBarcode=Succes!! Cantitatea a fost adăugată la toate codurile de bare solicitate. Poți închide instrumentul Scanner. StockChangeDisabled=Modificarea de stoc dezactivată NoWarehouseDefinedForTerminal=Niciun depozit definit pentru terminal +ClearQtys=Şterge toate cantităţile +ModuleStockTransferName=Transfer stoc avansat +ModuleStockTransferDesc=Management avansat al transferului de stoc, cu generarea foii de transfer +StockTransferNew=Transfer stoc nou +StockTransferList=Listă transferuri stoc +ConfirmValidateStockTransfer=Sigur vrei să validezi acest transfer de stocuri cu referința %s ?  +ConfirmDestock=Scădere stocuri cu transferul %s +ConfirmDestockCancel=Anulare scădere stocuri cu transferul %s +DestockAllProduct=Scădere stocuri +DestockAllProductCancel=Anulare scădere stocuri +ConfirmAddStock=Creștere stocuri cu transferul %s +ConfirmAddStockCancel=Anulare creștere stocuri cu transferul %s  +AddStockAllProduct=Creștere de stocuri +AddStockAllProductCancel=Anulare creștere de stocuri +DatePrevueDepart=Data preconizată de plecare +DateReelleDepart=Data reală de plecare +DatePrevueArrivee=Data prevăzută de sosire +DateReelleArrivee=Data reală de sosire +HelpWarehouseStockTransferSource=Dacă acest depozit este setat, numai el însuși și copiii săi vor fi disponibili ca depozit sursă +HelpWarehouseStockTransferDestination=Dacă acest depozit este setat, numai el însuși și copiii săi vor fi disponibili ca depozit de destinație +LeadTimeForWarning=Timp de livrare înainte de alertă (în zile) +TypeContact_stocktransfer_internal_STFROM=Expeditor transfer de stocuri +TypeContact_stocktransfer_internal_STDEST=Destinatar transfer de stocuri +TypeContact_stocktransfer_internal_STRESP=Responsabil transfer de stocuri +StockTransferSheet=Foaie de transfer stocuri +StockTransferSheetProforma=Fișă proforma de transfer de stocuri +StockTransferDecrementation=Scădere depozite sursă +StockTransferIncrementation=Creștere depozite de destinație +StockTransferDecrementationCancel=Anulare scădere depozite sursă +StockTransferIncrementationCancel=Anulare creștere depozite de destinație +StockStransferDecremented=Depozitele sursă au scăzut +StockStransferDecrementedCancel=Scăderea pentru depozitele sursă a fost anulată +StockStransferIncremented=Închis - Stocuri transferate +StockStransferIncrementedShort=Stocuri transferate +StockStransferIncrementedShortCancel=Creșterea pentru depozitele de destinație a fost anulată +StockTransferNoBatchForProduct=Produsul %s nu folosește lot, șterge lotul de pe linie și reîncearcă +StockTransferSetup = Configurare modul Transfer de stocuri +Settings=Configurări +StockTransferSetupPage = Pagina de configurare pentru modulul transfer de stocuri  +StockTransferRightRead=Citește transferuri de stocuri +StockTransferRightCreateUpdate=Creare/Actualizare transferuri de stocuri +StockTransferRightDelete=Ștergere transferuri de stocuri +BatchNotFound=Lotul / seria nu a fost găsită pentru acest produs diff --git a/htdocs/langs/ro_RO/stripe.lang b/htdocs/langs/ro_RO/stripe.lang index 119473bef83..6c4bca336c9 100644 --- a/htdocs/langs/ro_RO/stripe.lang +++ b/htdocs/langs/ro_RO/stripe.lang @@ -69,3 +69,4 @@ ToOfferALinkForLiveWebhook=Link de configurare Stripe WebHook pentru a apel IPN PaymentWillBeRecordedForNextPeriod=Plata va fi înregistrată pentru perioada următoare. ClickHereToTryAgain=Clic aici pentru a încerca din nou... CreationOfPaymentModeMustBeDoneFromStripeInterface=Datorită regulilor de autentificare securizată a clienților, crearea unui card trebuie făcută din backoffice-ul Stripe. Puteți face clic aici pentru a activa înregistrarea clienților Stripe: %s +TERMINAL_LOCATION=Locație (adresă) pentru terminale diff --git a/htdocs/langs/ro_RO/suppliers.lang b/htdocs/langs/ro_RO/suppliers.lang index f2891790714..a793c1d18cb 100644 --- a/htdocs/langs/ro_RO/suppliers.lang +++ b/htdocs/langs/ro_RO/suppliers.lang @@ -47,3 +47,10 @@ BuyerName=Numele cumpărătorului AllProductServicePrices=Toate preţurile produselor/serviciilor AllProductReferencesOfSupplier=Toate referinţele furnizorului BuyingPriceNumShort=Prețuri furnizor +RepeatableSupplierInvoice=Şablon factură furnizor +RepeatableSupplierInvoices=Şablon facturi furnizori +RepeatableSupplierInvoicesList=Şablon facturi furnizori +RecurringSupplierInvoices=Facturi furnizori recurente +ToCreateAPredefinedSupplierInvoice=Pentru a crea șablon de factură furnizor, trebuie să creezi o factură standard, apoi, fără a o valida, fă clic pe butonul "%s".  +GeneratedFromSupplierTemplate=Generat din șablonul de factură furnizor %s +SupplierInvoiceGeneratedFromTemplate=Factura furnizor %s generată din șablonul factură furnizor %s diff --git a/htdocs/langs/ro_RO/ticket.lang b/htdocs/langs/ro_RO/ticket.lang index bd8a3e52396..b3613cf1713 100644 --- a/htdocs/langs/ro_RO/ticket.lang +++ b/htdocs/langs/ro_RO/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=O interfață publică care nu necesită identificarea este d TicketSetupDictionaries=Tipul tichetului, severitatea și codurile analitice sunt configurabile din dicționare TicketParamModule=Setări variabile modul TicketParamMail=Setări email -TicketEmailNotificationFrom=Email expeditor pentru răspunsuri la tichet -TicketEmailNotificationFromHelp=Email expeditor pentru răspunsurile la tichetele trimise din sistem +TicketEmailNotificationFrom=Email expeditor pentru notificarea răspunsurilor  +TicketEmailNotificationFromHelp=Email expeditor de utilizat pentru a trimite email de notificare atunci când este oferit un răspuns în backoffice. De exemplu noreply@example.com TicketEmailNotificationTo=Notifică crearea de tichet la această adresă de email TicketEmailNotificationToHelp=Dacă este completată, această adresă de email va fi notificată cu privire la crearea unui tichet TicketNewEmailBodyLabel=Mesaj text trimis după crearea unui tichet diff --git a/htdocs/langs/ro_RO/website.lang b/htdocs/langs/ro_RO/website.lang index 0dbac3d2d34..9d57da14434 100644 --- a/htdocs/langs/ro_RO/website.lang +++ b/htdocs/langs/ro_RO/website.lang @@ -45,7 +45,7 @@ ViewWebsiteInProduction=Vizualizați site-ul web utilizând URL-urile de home SetHereVirtualHost=Utilizați cu Apache/NGinx/...
Creați pe serverul dvs. web (Apache, Nginx, ...) un vhost dedicat cu PHP activat și un director Root activat pentru
%s ExampleToUseInApacheVirtualHostConfig=Exemplu configuraţie utilizabilă vhost Apache: YouCanAlsoTestWithPHPS= Utilizare cu serverul PHP încorporat
În mediul de dezvoltare, vei prefera să testezi site-ul cu serverul web PHP încorporat (PHP 5.5 necesar) executând
php -S 0.0.0.0:8080 -t %s -YouCanAlsoDeployToAnotherWHP=Rulaţi website-ul dvs. la un alt furnizor de găzduire Dolibarr
Dacă nu aveți un server web precum Apache sau NGinx disponibil public pe internet, puteți exporta și importa site-ul dvs. web pe o altă instanță Dolibarr furnizată de un alt furnizor de găzduire Dolibarr care asigură o integrare completă cu modulul Website. Puteți găsi o listă a unor furnizori de găzduire Dolibarr pe https://saas.dolibarr.org  +YouCanAlsoDeployToAnotherWHP=Rulez site-ul web cu un alt furnizor de găzduire Dolibarr
Dacă nu ai un server web precum Apache sau NGinx disponibil pe internet, poți exporta și importa site-ul web într-o altă instanță Dolibarr furnizată de un alt furnizor de găzduire Dolibarr care oferă integrare completă modulul Site web. Poți găsi o listă cu furnizorii de găzduire Dolibarr pe https://saas.dolibarr.org CheckVirtualHostPerms=Verificați, de asemenea, dacă utilizatorul gazdă virtuală (de exemplu, www-data) are permisiuni %s pentru fișiere în
%s ReadPerm=Citire WritePerm=Scriere @@ -60,7 +60,7 @@ YouCanEditHtmlSourceckeditor=Puteți edita codul sursă HTML folosind butonul "S YouCanEditHtmlSource=
Puteți include codul PHP în această sursă folosind etichete<?php?>. Sunt disponibile următoarele variabile globale: $conf, $db, $mysoc, $user, $website, $websitepage, $weblangs, $pagelangs.

Puteți include, de asemenea, conținutul unei alte Pagini/Container cu următoarea sintaxă:
<?php includeContainer ('alias_of_container_to_include'); ?>

Puteți face o redirecționare către o altă Pagină/Container cu următoarea sintaxă (Notă: nu emiteți conținut înainte de o redirecționare):
<?php redirectToContainer ('alias_of_container_to_redirect_to'); ?>

Pentru a adăuga o legătură la o altă pagină, utilizați sintaxa:
<a href ="alias_of_page_to_link_to.php">mylink<a>

Pentru a include un link de descărcare fișier stocat în directorul documentelor, utilizați wrapper-ul document.php:
Exemplu, pentru un fișier din documente/ECM (trebuie să fie înregistrat), sintaxa este:
<a href="/document.php?modulepart=ecm&file=[relative_dir/]filename.ext">
Pentru un fișier din documente/media (director deschis pentru acces public), sintaxa este:
<a href ="/document.php?modulepart= medias&file=[relative_dir/]indicafilename.ext">
Pentru un fișier partajat cu o legătură de partajare (acces deschis folosind cheia hash de partajare a fișierului), sintaxa este:
<a href="/ document.php?hashp=publicsharekeyoffile">

Pentru a include o imagine stocată în directorul de documente, utilizați wrapper-ul viewimage.php:
Exemplu, pentru o imagine din documente/media (director deschis pentru acces public), sintaxa este:
<img src="/viewimage.php?modulepart=medias&file=[relative_dir/]filename.ext">
#YouCanEditHtmlSource2=
To include a image shared publicaly, use the viewimage.php wrapper:
Example with a shared key 123456789, syntax is:
<img src="/viewimage.php?hashp=12345679012...">
YouCanEditHtmlSource2=Pentru o imagine partajată cu un link de partajare (acces deschis folosind cheia de distribuire a fișierului), sintaxa este:
<img src="/viewimage.php?hashp=12345679012...">
-YouCanEditHtmlSourceMore=
Mai multe exemple de cod HTML sau dinamic sunt disponibile în documentația wiki
. +YouCanEditHtmlSourceMore=
Mai multe exemple de cod HTML sau dinamic sunt disponibile în documentaţia wiki
. ClonePage=Clonare pagină/container CloneSite=Clonare site SiteAdded=Site adăugat diff --git a/htdocs/langs/ru_RU/accountancy.lang b/htdocs/langs/ru_RU/accountancy.lang index 5df338ace3a..8a42092c368 100644 --- a/htdocs/langs/ru_RU/accountancy.lang +++ b/htdocs/langs/ru_RU/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Страны, не входящие в ЕЭС CountriesInEECExceptMe=Страны ЕЭС, кроме %s CountriesExceptMe=Все страны кроме %s AccountantFiles=Экспорт исходных документов -ExportAccountingSourceDocHelp=С помощью этого инструмента вы можете экспортировать исходные события (список в формате CSV и PDF), которые используются для создания вашей отчетности. +ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. ExportAccountingSourceDocHelp2=Чтобы экспортировать журналы, используйте пункт меню %s - %s. VueByAccountAccounting=Просмотр по учетной записи VueBySubAccountAccounting=Просмотр по субсчету бухгалтерского учета @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Отключить прямую запись тран ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Включить экспорт черновиков в журнале ACCOUNTANCY_COMBO_FOR_AUX=Включить комбинированный список для вспомогательной учетной записи (может быть медленным, если у вас много третьих лиц, нарушить возможность поиска по части значения) ACCOUNTING_DATE_START_BINDING=Определите дату начала привязки и передачи в бухгалтерском учете. Ниже этой даты операции не переносятся в бухгалтерский учет. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=При переносе бухгалтерии выберите период отображения по умолчанию +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Журнал продаж ACCOUNTING_PURCHASE_JOURNAL=Журнал платежей @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Бухгалтерский счет для регис ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Учетная запись для регистрации подписок ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Бухгалтерский счет по умолчанию для регистрации депозита клиента -UseAuxiliaryAccountOnCustomerDeposit=Используйте субсчета на депозитных линиях клиентов +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Бухгалтерский счет по умолчанию для купленных продуктов (используется, если не определено в описании продукта) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Бухгалтерский счет по умолчанию для купленных продуктов в EEC (используется, если не определено в описании продукта) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Если вы настроили учетную за DescVentilDoneExpenseReport=Ознакомьтесь здесь со списком строк отчетов о расходах и счетом учета их комиссий. Closure=Ежегодное закрытие -DescClosure=Проконсультируйтесь здесь о количестве перемещений по месяцам, которые еще не проверены и не заблокированы. +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Обзор перемещений, не подтвержденных и заблокированных AllMovementsWereRecordedAsValidated=Все движения были записаны как проверенные и заблокированные. NotAllMovementsCouldBeRecordedAsValidated=Не все движения могли быть записаны как проверенные и заблокированные @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Отключить привязку ## Export NotifiedExportDate=Отметить экспортированные строки как Экспортированные (чтобы изменить строку, вам нужно будет удалить всю транзакцию и заново перенести ее в учет) -NotifiedValidationDate=Подтвердите и заблокируйте экспортированные записи (тот же эффект, что и функция «Закрытие», изменение и удаление строк будет ОПРЕДЕЛЕННО невозможно) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Проверка даты и блокировка ConfirmExportFile=Подтверждение генерации файла экспорта бухгалтерского учета? ExportDraftJournal=Экспорт черновика журнала @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=К AccountancyErrorMismatchLetterCode=Несоответствие в коде согласования AccountancyErrorMismatchBalanceAmount=Баланс (%s) не равен 0 AccountancyErrorLetteringBookkeeping=Произошли ошибки, связанные с транзакциями: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Бухгалтерские записи diff --git a/htdocs/langs/ru_RU/admin.lang b/htdocs/langs/ru_RU/admin.lang index 71e45e7f1f3..533d045dc64 100644 --- a/htdocs/langs/ru_RU/admin.lang +++ b/htdocs/langs/ru_RU/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Следующее значение (замены) MustBeLowerThanPHPLimit=Примечание: ваша конфигурация PHP в настоящее время ограничивает максимальный размер файлов для загрузки до %s %s, независимо от значения этого параметра. NoMaxSizeByPHPLimit=Примечание: в вашей конфигурации PHP установлено no limit MaxSizeForUploadedFiles=Максимальный размер загружаемых файлов (0 для запрещения каких-либо загрузок) -UseCaptchaCode=Использовать графический код (CAPTCHA) на странице входа +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Полный путь к антивирусной команде AntiVirusCommandExample=Пример для ClamAv Daemon (требуется clamav-daemon): /usr/bin/clamdscan
Пример для ClamWin (очень-очень медленный): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Дополнительные параметры командной строки @@ -504,7 +504,7 @@ WarningPHPMailC=- Использование SMTP-сервера вашего с WarningPHPMailD=Кроме того, рекомендуется изменить способ отправки электронных писем на значение «SMTP». Если вы действительно хотите сохранить метод «PHP» по умолчанию для отправки электронных писем, просто проигнорируйте это предупреждение или удалите его, установив для константы MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP значение 1 в Главная - Настройка - Другое. WarningPHPMail2=Если вашему SMTP-провайдеру электронной почты необходимо ограничить почтовый клиент некоторыми IP-адресами (это очень редко), это IP-адрес почтового пользователя (MUA) для вашего приложения ERP CRM: %s. WarningPHPMailSPF=Если доменное имя в вашем адресе электронной почты отправителя защищено записью SPF (спросите у регистратора доменного имени), вы должны добавить следующие IP-адреса в запись SPF DNS вашего домена: %s . -ActualMailSPFRecordFound=Найдена фактическая запись SPF: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Нажмите, чтобы посмотреть описание DependsOn=Этот модуль нуждается в модуле (модулях) RequiredBy=Этот модуль требуется для модуля (модулей) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Значение константы конфигурации ConstantIsOn=Вариант %s включен NbOfDays=Кол-во дней AtEndOfMonth=На конец месяца -CurrentNext=Текущая/Следующая +CurrentNext=A given day in month Offset=Сдвиг AlwaysActive=Всегда активный Upgrade=Обновление @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Нажмите CTRL + F5 на клавиатуре ил NotSupportedByAllThemes=Будет работать с основными темами, может не поддерживаться внешними темами BackgroundColor=Фоновый цвет TopMenuBackgroundColor=Цвет фона для верхнего меню -TopMenuDisableImages=Скрыть изображения в верхнем меню +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Цвет фона для меню слева BackgroundTableTitleColor=Цвет фона для заголовка таблицы BackgroundTableTitleTextColor=Цвет текста для заголовка таблицы @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Примечание: В меню %s - %s для параметр SwapSenderAndRecipientOnPDF=Поменять местами адреса отправителя и получателя в PDF-документах FeatureSupportedOnTextFieldsOnly=Предупреждение, функция поддерживается только для текстовых полей и комбинированных списков. Также должен быть установлен параметр URL action = create или action = edit ИЛИ имя страницы должно заканчиваться на 'new.php', чтобы активировать эту функцию. EmailCollector=Сборщик писем +EmailCollectors=Email collectors EmailCollectorDescription=Добавьте запланированное задание и страницу настройки, чтобы регулярно сканировать ящики электронной почты (с использованием протокола IMAP) и записывать электронные письма, полученные в ваше приложение, в нужное место и/или создавать некоторые записи автоматически (например, лидов). NewEmailCollector=Новый сборщик электронной почты EMailHost=Хост почтового сервера IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Дата последней попытки сбора DateLastcollectResultOk=Дата последнего успешного сбора LastResult=Последний результат EmailCollectorHideMailHeaders=Не включать содержимое заголовка электронной почты в сохраненное содержимое собранных электронных писем. -EmailCollectorHideMailHeadersHelp=Если этот параметр включен, заголовки сообщений электронной почты не добавляются в конец содержимого электронной почты, сохраняемого как события. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Подтверждение сбора по электронной почте EmailCollectorConfirmCollect=Вы хотите запустить этот сборщик сейчас? EmailCollectorExampleToCollectTicketRequestsDesc=Собирайте электронные письма, соответствующие некоторым правилам, и автоматически создавайте тикет (модуль тикета должен быть включен) с информацией об электронной почте. Вы можете использовать этот сборщик, если вы окажете поддержку по электронной почте, поэтому ваш запрос на билет будет сгенерирован автоматически. Активируйте также Collect_Responses, чтобы собирать ответы вашего клиента прямо в окне просмотра заявки (вы должны отвечать из Долибарра). EmailCollectorExampleToCollectTicketRequests=Пример сбора запроса на тикет (только первое сообщение) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Сканируйте каталог «Отправленные» вашего почтового ящика, чтобы найти электронные письма, которые были отправлены в качестве ответа на другое электронное письмо непосредственно из вашего почтового программного обеспечения, а не из Dolibarr. Если такое письмо найдено, событие ответа записывается в Долибарр. EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Пример сбора ответов по электронной почте, отправленных из внешнего программного обеспечения электронной почты -EmailCollectorExampleToCollectDolibarrAnswersDesc=Соберите все электронные письма, которые являются ответом на электронное письмо, отправленное из вашего приложения. Событие (Module Agenda должно быть включено) с ответом по электронной почте будет записано в нужном месте. Например, если вы отправляете коммерческое предложение, заказ, счет или сообщение для тикета по электронной почте из приложения, и ваш клиент отвечает на ваше письмо, система автоматически поймает ответ и добавит его в вашу ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Пример сбора всех входящих сообщений, являющихся ответами на сообщения, отправленные Долибарром. EmailCollectorExampleToCollectLeadsDesc=Собирайте электронные письма, соответствующие некоторым правилам, и автоматически создавайте потенциальных клиентов (модуль проекта должен быть включен) с информацией об электронной почте. Вы можете использовать этот сборщик, если хотите следить за своим лидом с помощью модуля «Проект» (1 лид = 1 проект), поэтому ваши лиды будут генерироваться автоматически. Если сборщик Collect_Responses также включен, при отправке письма от ваших лидов, предложений или любого другого объекта вы также можете увидеть ответы своих клиентов или партнеров прямо в приложении.
Примечание. В этом начальном примере заголовок лида создается вместе с адресом электронной почты. Если третье лицо не может быть найдено в базе данных (новый клиент), лид будет привязан к третьему лицу с идентификатором 1. EmailCollectorExampleToCollectLeads=Пример сбора лидов @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Собирайте элект EmailCollectorExampleToCollectJobCandidatures=Пример сбора кандидатур на работу, полученных по электронной почте NoNewEmailToProcess=Нет новых писем (соответствующие фильтры) для обработки NothingProcessed=Ничего не было выполнено -XEmailsDoneYActionsDone=Письма %s квалифицированы, электронные письма %s успешно обработаны (для записи %s / выполненных действий) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Запишите событие в повестку дня (с типом Электронная почта отправлена или получена) CreateLeadAndThirdParty=Создайте лид (и третье лицо, если необходимо) CreateTicketAndThirdParty=Создать тикет (связанный с третьей стороной, если третья сторона была загружена предыдущей операцией или была угадана из трекера в заголовке электронной почты, без третьей стороны в противном случае) @@ -2105,7 +2106,7 @@ CreateCandidature=Создать заявление о приеме на раб FormatZip=Индекс MainMenuCode=Код входа в меню (главное меню) ECMAutoTree=Показать автоматическое дерево ECM -OperationParamDesc=Определите правила, которые будут использоваться для извлечения или установки значений.
Пример операций, требующих извлечения имени из темы сообщения электронной почты:
name=EXTRACT:SUBJECT:Сообщение от компании ([^\n] *)
Пример для операций, которые создают объекты:
objproperty1 = SET: значение, заданное
objproperty2 = SET: значение, включая значения __objproperty1__
objproperty3 = SETIFEMPTY: значение, используемое, если objproperty3 еще не определен
objproperty4 = ЭКСТРАКТ: ЗАГОЛОВОК :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=ДОПОЛНИТЕЛЬНО:ТЕМА:([^\n]*)
object.objproperty5=ДОПОЛНИТЕЛЬНО:ТЕЛО:Название моей компании\\s( [^\\s]*)

Используйте ; char в качестве разделителя для извлечения или установки нескольких свойств. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Часы работы OpeningHoursDesc=Введите здесь обычные часы работы вашей компании. ResourceSetup=Конфигурация модуля Ресурсов @@ -2167,6 +2168,9 @@ EmailTemplate=Шаблон для электронной почты EMailsWillHaveMessageID=Письма будут иметь тег "Ссылки", соответствующий этому синтаксису. PDF_SHOW_PROJECT=Показать проект в документе ShowProjectLabel=Этикетка проекта +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Если вы хотите, чтобы некоторые тексты в вашем PDF-файле были продублированы на 2 разных языках в одном сгенерированном PDF-файле, вы должны установить здесь этот второй язык, чтобы сгенерированный PDF-файл содержал 2 разных языка на одной странице: один, выбранный при создании PDF, и этот ( только несколько шаблонов PDF поддерживают это). Оставьте пустым для 1 языка в PDF-файле. PDF_USE_A=Создавайте документы PDF в формате PDF/A вместо формата PDF по умолчанию FafaIconSocialNetworksDesc=Введите здесь код значка FontAwesome. Если вы не знаете, что такое FontAwesome, вы можете использовать общее значение fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Шаблон визитки разного размер InventorySetup= Настройка инвентаря ExportUseLowMemoryMode=Используйте режим с низким объемом памяти ExportUseLowMemoryModeHelp=Используйте режим низкой памяти для выполнения exec дампа (сжатие выполняется через конвейер, а не в память PHP). Этот метод не позволяет проверить, завершен ли файл, и сообщение об ошибке не может быть сообщено в случае сбоя. -ShowQuickAddLink=Показать кнопку для быстрого добавления элемента в меню вверху справа + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Настройки +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Хэш, используемый для пинга ReadOnlyMode=Экземпляр находится в режиме «Только для чтения» DEBUGBAR_USE_LOG_FILE=Используйте файл dolibarr.log для захвата журналов. UsingLogFileShowAllRecordOfSubrequestButIsSlower=Используйте файл dolibarr.log для захвата журналов вместо захвата живой памяти. Это позволяет перехватывать все журналы, а не только журнал текущего процесса (включая одну из страниц подзапросов ajax), но сделает ваш экземпляр очень медленным. Не рекомендуется. FixedOrPercent=Фиксированный (используйте ключевое слово «фиксированный») или процент (используйте ключевое слово «процент») DefaultOpportunityStatus=Статус возможности по умолчанию (первый статус при создании лида) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/ru_RU/companies.lang b/htdocs/langs/ru_RU/companies.lang index e3db63400f0..5ba128975a5 100644 --- a/htdocs/langs/ru_RU/companies.lang +++ b/htdocs/langs/ru_RU/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Свойство контрагента NatureOfContact=Характер контакта Address=Адрес State=Штат/Провинция +StateId=State ID StateCode=Код штата/провинции StateShort=Штат Region=Регион Region-State=Регион - Штат Country=Страна CountryCode=Код страны -CountryId=id страны +CountryId=Country ID Phone=Телефон PhoneShort=Телефон Skype=Скайп @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Идентификатор. проф. 1 (Торговый реестр) ProfId2CM=Идентификатор. проф. 2 (№ налогоплательщика) -ProfId3CM=Идентификатор. проф. 3 (Указ о создании) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Торговый реестр ProfId2ShortCM=№ налогоплательщика -ProfId3ShortCM=Указ о создании -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Другие ProfId6ShortCM=- ProfId1CO=Проф Id 1 (R.U.T.) diff --git a/htdocs/langs/ru_RU/errors.lang b/htdocs/langs/ru_RU/errors.lang index 088cae1a1b0..2424d5b96ab 100644 --- a/htdocs/langs/ru_RU/errors.lang +++ b/htdocs/langs/ru_RU/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript не должна быть отключ ErrorPasswordsMustMatch=Оба введенных пароля должны совпадать друг с другом ErrorContactEMail=Произошла техническая ошибка. Пожалуйста, свяжитесь с администратором по следующему адресу электронной почты %s и укажите код ошибки %s или добавьте его в копию сообщения на экране, или добавьте его в копию сообщения на экране. ErrorWrongValueForField=Поле %s: '%s' не совпадает с регулярным выражением %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Поле %s: '%s' не является найденным значением в поле %s из %s ErrorFieldRefNotIn=Поле %s: '%s' не является %s существующей ссылкой ErrorsOnXLines=%s обнаружены ошибки @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Вы должны сначала нас ErrorFailedToFindEmailTemplate=Не удалось найти шаблон с кодовым названием %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Срок службы не определен. Невозможно рассчитать почасовую оплату. ErrorActionCommPropertyUserowneridNotDefined=Требуется владелец пользователя -ErrorActionCommBadType=Выбранный тип события (id: %n, код: %s) не существует в словаре типов событий +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Ошибка проверки версии ErrorWrongFileName=Имя файла не может содержать __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Нет в Словаре условий оплаты, пожалуйста, измените. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Ошибка, все суммы должны быть ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Вы пытаетесь оплатить счета в валюте %s со счета с валютой %s ErrorInvoiceLoadThirdParty=Не удается загрузить сторонний объект для счета "%s" ErrorInvoiceLoadThirdPartyKey=Сторонний ключ "%s" не установлен для счета "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Удаление строки не разрешено фактическим статусом объекта +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=Запрос не выполнен +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ваш параметр PHP upload_max_filesize (%s) выше, чем параметр PHP post_max_size (%s). Это непоследовательная установка. WarningPasswordSetWithNoAccount=Для этого участника был установлен пароль. Однако учетная запись пользователя не была создана. Таким образом, этот пароль сохраняется, но не может использоваться для входа в Dolibarr. Он может использоваться внешним модулем / интерфейсом, но если вам не нужно определять логин или пароль для члена, вы можете отключить опцию «Управлять логином для каждого члена» в настройках модуля «Член». Если вам нужно управлять логином, но пароль не нужен, вы можете оставить это поле пустым, чтобы избежать появления этого предупреждения. Примечание. Электронная почта также может использоваться в качестве логина, если член связан с пользователем. -WarningMandatorySetupNotComplete=Нажмите здесь, чтобы настроить обязательные параметры +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Щелкните здесь, чтобы включить свои модули и приложения WarningSafeModeOnCheckExecDir=Предупреждение, PHP safe_mode вариант находится на так команда должна храниться в каталог заявил на PHP safe_mode_exec_dir параметра. WarningBookmarkAlreadyExists=Закладка этого титула или этой цели (URL), уже существует. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Предупреждение, вы не можете н WarningAvailableOnlyForHTTPSServers=Доступно только при использовании защищенного соединения HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Модуль %s не включен. Так что вы можете пропустить здесь много мероприятий. WarningPaypalPaymentNotCompatibleWithStrict=Значение «Строгий» приводит к некорректной работе функций онлайн-платежей. Вместо этого используйте «Лакс». +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME -<<<<<<< ГОЛОВА -======= -<<<<<<< ГОЛОВА -<<<<<<< ГОЛОВА ->>>>>>> ветка '15.0' git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = Значение недействительно RequireAtLeastXString = Требуется не менее %s символа(ов) @@ -347,12 +347,3 @@ BadSetupOfField = Ошибка неправильная настройка по BadSetupOfFieldClassNotFoundForValidation = Ошибка неправильной настройки поля: класс не найден для проверки BadSetupOfFieldFileNotFound = Ошибка неправильной настройки поля: файл не найден для включения BadSetupOfFieldFetchNotCallable = Ошибка неправильной настройки поля: Получение не вызывается для класса -<<<<<<< ГОЛОВА -======= -======= -======= ->>>>>>> ветка '15.0' git@github.com:Dolibarr/dolibarr.git ->>>>>>> ветка '15.0' git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> ветка '15.0' git@github.com:Dolibarr/dolibarr.git ->>>>>>> ветка '15.0' git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/ru_RU/externalsite.lang b/htdocs/langs/ru_RU/externalsite.lang deleted file mode 100644 index ed73de12a39..00000000000 --- a/htdocs/langs/ru_RU/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Установка ссылки на внешний веб-сайт -ExternalSiteURL=URL-адрес внешнего сайта HTML-содержимого iframe -ExternalSiteModuleNotComplete=Модуль ВнешнийСайт не был надлежащим образом настроен. -ExampleMyMenuEntry=Пункт "Моё меню" diff --git a/htdocs/langs/ru_RU/ftp.lang b/htdocs/langs/ru_RU/ftp.lang deleted file mode 100644 index a90aec934de..00000000000 --- a/htdocs/langs/ru_RU/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Настройка модуля FTP или SFTP-клиента -NewFTPClient=Настройка нового соединения FTP/FTPS -FTPArea=Область FTP/FTPS -FTPAreaDesc=На этом экране показан вид сервера FTP и SFTP. -SetupOfFTPClientModuleNotComplete=Настройка клиентского модуля FTP или SFTP кажется незавершенной. -FTPFeatureNotSupportedByYourPHP=Ваш PHP не поддерживает функции FTP или SFTP -FailedToConnectToFTPServer=Не удалось подключиться к серверу (сервер %s, порт %s) -FailedToConnectToFTPServerWithCredentials=Не удалось войти на сервер с определенным логином/паролем -FTPFailedToRemoveFile=Не удалось удалить файл %s. -FTPFailedToRemoveDir=Не удалось удалить каталог %s: проверьте разрешения и убедитесь, что каталог пуст. -FTPPassiveMode=Пассивный режим -ChooseAFTPEntryIntoMenu=Выберите сайт FTP/SFTP в меню ... -FailedToGetFile=Не удалось получить файлы %s diff --git a/htdocs/langs/ru_RU/holiday.lang b/htdocs/langs/ru_RU/holiday.lang index dec460ea8b5..f384058e136 100644 --- a/htdocs/langs/ru_RU/holiday.lang +++ b/htdocs/langs/ru_RU/holiday.lang @@ -27,7 +27,7 @@ DescCP=Описание SendRequestCP=Создать заявление на отпуск DelayToRequestCP=Заявления об отпуске могут создаваться не ранее чем через %s (дней) MenuConfCP=Остаток отпуска -SoldeCPUser=Leave balance (in days) %s +SoldeCPUser=Остаток средств (в днях) %s ErrorEndDateCP=Выберите конечную дату позже чем начальную. ErrorSQLCreateCP=Ошибка SQL возникла во время создания: ErrorIDFicheCP=Возникла ошибка, заявление на отпуск отсутствует. @@ -134,6 +134,6 @@ HolidaysToApprove=Праздники утвердить NobodyHasPermissionToValidateHolidays=Ни у кого нет разрешения подтверждать праздники HolidayBalanceMonthlyUpdate=Ежемесячное обновление праздничного баланса XIsAUsualNonWorkingDay=%s обычно НЕ рабочий день -BlockHolidayIfNegative=Block if balance negative -LeaveRequestCreationBlockedBecauseBalanceIsNegative=The creation of this leave request is blocked because your balance is negative -ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Leave request %s must be draft, canceled or refused to be deleted +BlockHolidayIfNegative=Блокировать, если баланс отрицательный +LeaveRequestCreationBlockedBecauseBalanceIsNegative=Создание этого запроса на отпуск заблокировано, так как ваш баланс отрицательный +ErrorLeaveRequestMustBeDraftCanceledOrRefusedToBeDeleted=Запрос на отпуск %s должен быть черновиком, отменен или отказано в удалении diff --git a/htdocs/langs/ru_RU/hrm.lang b/htdocs/langs/ru_RU/hrm.lang index c8c2554487e..9fbb5ed0fc1 100644 --- a/htdocs/langs/ru_RU/hrm.lang +++ b/htdocs/langs/ru_RU/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Открытое заведение CloseEtablishment=Закрыть заведение # Dictionary DictionaryPublicHolidays=Отпуск - праздничные дни -DictionaryDepartment=HRM - Список отделов +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Вакансии # Module Employees=Сотрудники @@ -70,9 +70,9 @@ RequiredSkills=Необходимые навыки для этой работы UserRank=Рейтинг пользователя SkillList=Список навыков SaveRank=Сохранить рейтинг -knowHow=Знать как -HowToBe=Как быть -knowledge=Знания +TypeKnowHow=Знать как +TypeHowToBe=Как быть +TypeKnowledge=Знания AbandonmentComment=Комментарий об отказе DateLastEval=Дата последней оценки NoEval=Оценка этого сотрудника не проводилась @@ -88,3 +88,4 @@ DeleteSkill = Навык удален SkillsExtraFields=Дополнительные атрибуты (компетенции) JobsExtraFields=Дополнительные атрибуты (Emplois) EvaluationsExtraFields=Дополнительные атрибуты (оценки) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/ru_RU/install.lang b/htdocs/langs/ru_RU/install.lang index c471e9cd0ee..440984fd86f 100644 --- a/htdocs/langs/ru_RU/install.lang +++ b/htdocs/langs/ru_RU/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Файл конфигурации %s недосту ConfFileIsWritable=Файл конфигурации %s доступен для записи. ConfFileMustBeAFileNotADir=Файл конфигурации %s должен быть файлом, а не каталогом. ConfFileReload=Перезагрузка параметров из файла конфигурации. -NoReadableConfFileSoStartInstall=Файл конфигурации conf/conf.php не существует или не может быть восстановлен. Мы запустим процесс установки, чтобы попытаться его инициализировать. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Эта версия PHP поддерживает переменные POST и GET. PHPSupportPOSTGETKo=Возможно, ваша установка PHP не поддерживает переменные POST и/или GET. Проверьте параметр variables_order в php.ini. PHPSupportSessions=Эта версия PHP поддерживает сессии. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Вы ввели неправильное значе ErrorFailedToCreateDatabase=Не удается создать базу данных ' %s'. ErrorFailedToConnectToDatabase=Не удалось подключиться к базе данных ' %s'. ErrorDatabaseVersionTooLow=Версия базы данных (%s) слишком старая. Требуется версия %s или выше -ErrorPHPVersionTooLow=Версия PHP слишком стара. Версия %s обязательна. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Подключение к серверу выполнено успешно, но база данных '%s' не найдена. ErrorDatabaseAlreadyExists=База данных ' %s' уже существует. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Если база данных не существует, вернитесь и отметьте опцию «Создать базу данных». IfDatabaseExistsGoBackAndCheckCreate=Если база данных уже существует, вернитесь назад и снимите флажок "Создать базу данных" вариант. WarningBrowserTooOld=Версия браузера слишком старая. Настоятельно рекомендуется обновить браузер до последней версии Firefox, Chrome или Opera. diff --git a/htdocs/langs/ru_RU/knowledgemanagement.lang b/htdocs/langs/ru_RU/knowledgemanagement.lang index c61b930e8f7..13f45a1f0fd 100644 --- a/htdocs/langs/ru_RU/knowledgemanagement.lang +++ b/htdocs/langs/ru_RU/knowledgemanagement.lang @@ -46,9 +46,9 @@ KnowledgeRecords = Записи KnowledgeRecord = Запись KnowledgeRecordExtraFields = Дополнительные поля для записи GroupOfTicket=Группа тикетов -YouCanLinkArticleToATicketCategory=Вы можете привязать запись к группе тикетов (чтобы запись предлагалась во время квалификации новых тикетов) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Предлагается для тикетов, когда группа -SetObsolete=Set as obsolete -ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? -ConfirmReopenKM=Do you want to restore this article to status "Validated" ? +SetObsolete=Сделать устаревшим +ConfirmCloseKM=Вы подтверждаете закрытие этой статьи как устаревшей? +ConfirmReopenKM=Вы хотите вернуть этой статье статус "Проверено"? diff --git a/htdocs/langs/ru_RU/loan.lang b/htdocs/langs/ru_RU/loan.lang index 451107ace47..02757632358 100644 --- a/htdocs/langs/ru_RU/loan.lang +++ b/htdocs/langs/ru_RU/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Финансовые обязательства InterestAmount=Доля капитала CapitalRemain=Остается капитал TermPaidAllreadyPaid = Этот срок уже оплачен -CantUseScheduleWithLoanStartedToPaid = Невозможно использовать планировщик для займа с начатым платежом +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Вы не можете изменить интерес, если используете расписание # Admin ConfigLoan=Настройка модуля займов diff --git a/htdocs/langs/ru_RU/main.lang b/htdocs/langs/ru_RU/main.lang index 8cb1348778e..9fab38bf618 100644 --- a/htdocs/langs/ru_RU/main.lang +++ b/htdocs/langs/ru_RU/main.lang @@ -345,7 +345,7 @@ KiloBytes=Килобайт MegaBytes=Мегабайт GigaBytes=Гигабайт TeraBytes=Терабайт -UserAuthor=Создано +UserAuthor=Created by UserModif=Обновлено b=б. Kb=Кб @@ -712,6 +712,7 @@ FeatureDisabled=Функция отключена MoveBox=Переместить виджет Offered=Предложено NotEnoughPermissions=У вас нет разрешений на это действие +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Имя Сессии Method=Метод Receive=Получить @@ -801,6 +802,7 @@ URLPhoto=Адрес фотографии/логотипа SetLinkToAnotherThirdParty=Ссылка на другого контрагента LinkTo=Ссылка LinkToProposal=Ссылка для предложения +LinkToExpedition= Link to expedition LinkToOrder=Ссылка для заказа LinkToInvoice=Ссылка для счета LinkToTemplateInvoice=Ссылка на шаблон счета @@ -1174,6 +1176,7 @@ ConfirmAllocateCommercial=Назначение подтверждения тор ConfirmAllocateCommercialQuestion=Вы уверены, что хотите назначить выбранные записи %s? CommercialsAffected=Затронутые торговые представители CommercialAffected=Затронутый торговый представитель -YourMessage=Ваше сообщение +YourMessage=Your message YourMessageHasBeenReceived=Ваше сообщение было получено. Мы ответим или свяжемся с вами в ближайшее время. UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/ru_RU/members.lang b/htdocs/langs/ru_RU/members.lang index 0aa060e6a7e..82f00fed1b6 100644 --- a/htdocs/langs/ru_RU/members.lang +++ b/htdocs/langs/ru_RU/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Дата окончания членства EndSubscription=Конец членства SubscriptionId=Идентификатор вклада WithoutSubscription=Без вклада -MemberId=ID участника +MemberId=Member Id +MemberRef=Member Ref NewMember=Новый участник MemberType=Тип участника MemberTypeId=ID типа участника @@ -198,7 +199,7 @@ NbOfSubscriptions=Количество вкладов AmountOfSubscriptions=Сумма, полученная от взносов TurnoverOrBudget=Оборот (за компанию) или бюджета (за основу) DefaultAmount=Сумма взноса по умолчанию -CanEditAmount=Посетитель может выбрать / изменить размер своего взноса +CanEditAmount=Visitor can choose/edit amount of its contribution MEMBER_NEWFORM_PAYONLINE=Перейти по комплексному интернет страницу оплаты ByProperties=По природе MembersStatisticsByProperties=Статистика участников по характеру diff --git a/htdocs/langs/ru_RU/oauth.lang b/htdocs/langs/ru_RU/oauth.lang index 3e8fa6c6591..01dfb704aea 100644 --- a/htdocs/langs/ru_RU/oauth.lang +++ b/htdocs/langs/ru_RU/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Токен был сгенерирован и сохранен в NewTokenStored=Токен получен и сохранен ToCheckDeleteTokenOnProvider=Щелкните здесь, чтобы проверить/удалить авторизацию, сохраненную поставщиком OAuth %s TokenDeleted=Токен удален -RequestAccess=Нажмите здесь, чтобы запросить/продлить доступ и получить новый токен для сохранения -DeleteAccess=Нажмите здесь, чтобы удалить токен +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Используйте следующий URL-адрес в качестве URI перенаправления при создании учетных данных с помощью поставщика OAuth: -ListOfSupportedOauthProviders=Введите учетные данные, предоставленные вашим поставщиком OAuth2. Здесь перечислены только поддерживаемые провайдеры OAuth2. Эти службы могут использоваться другими модулями, которым требуется аутентификация OAuth2. -OAuthSetupForLogin=Страница для создания токена OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=См. Предыдущую вкладку +OAuthProvider=OAuth provider OAuthIDSecret=Идентификатор и секрет OAuth TOKEN_REFRESH=Присутствует обновление токена TOKEN_EXPIRED=Срок действия токена истек @@ -23,10 +24,13 @@ TOKEN_DELETE=Удалить сохраненный токен OAUTH_GOOGLE_NAME=OAuth сервис Google OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Перейдите на на эту страницу затем "Учетные данные" для создания учетных данных OAuth. OAUTH_GITHUB_NAME=Сервис OAuth GitHub OAUTH_GITHUB_ID=Идентификатор OAuth GitHub OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Перейдите на на эту страницу, затем «Зарегистрируйте новое приложение», чтобы создать учетные данные OAuth. +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=Тест OAuth Stripe OAUTH_STRIPE_LIVE_NAME=OAuth Stripe в работе +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/ru_RU/other.lang b/htdocs/langs/ru_RU/other.lang index a085ca13383..8e2e84fe83c 100644 --- a/htdocs/langs/ru_RU/other.lang +++ b/htdocs/langs/ru_RU/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = Вы уверены, что хотите «%s»? ConfirmBtnCommonTitle = Подтвердите свое действие CloseDialog = Закрыть Autofill = Автозаполнение + +# externalsite +ExternalSiteSetup=Установка ссылки на внешний веб-сайт +ExternalSiteURL=External Site URL of HTML iframe content +ExternalSiteModuleNotComplete=Модуль ВнешнийСайт не был надлежащим образом настроен. +ExampleMyMenuEntry=Пункт "Моё меню" + +# FTP +FTPClientSetup=Настройка модуля FTP или SFTP-клиента +NewFTPClient=Настройка нового соединения FTP/FTPS +FTPArea=Область FTP/FTPS +FTPAreaDesc=This screen shows a view of an FTP et SFTP server. +SetupOfFTPClientModuleNotComplete=The setup of the FTP or SFTP client module seems to be incomplete +FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP or SFTP functions +FailedToConnectToFTPServer=Failed to connect to server (server %s, port %s) +FailedToConnectToFTPServerWithCredentials=Не удалось войти на сервер с определенным логином/паролем +FTPFailedToRemoveFile=Не удалось удалить файл %s. +FTPFailedToRemoveDir=Не удалось удалить каталог %s: проверьте разрешения и убедитесь, что каталог пуст. +FTPPassiveMode=Пассивный режим +ChooseAFTPEntryIntoMenu=Выберите сайт FTP/SFTP в меню ... +FailedToGetFile=Не удалось получить файлы %s diff --git a/htdocs/langs/ru_RU/projects.lang b/htdocs/langs/ru_RU/projects.lang index 4004bc049eb..970947ec27f 100644 --- a/htdocs/langs/ru_RU/projects.lang +++ b/htdocs/langs/ru_RU/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Время, затраченное на оплату TimeSpentForIntervention=Время, затраченное на посредничество TimeSpentForInvoice=Время, проведенное OneLinePerUser=Одна строка на пользователя -ServiceToUseOnLines=Сервис для использования на линиях +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Счет-фактура %s была создана на основе времени, потраченного на проект InterventionGeneratedFromTimeSpent=Посредничество %s было создано из времени, потраченного на проект ProjectBillTimeDescription=Проверьте, вводите ли вы расписание для задач проекта И планируете ли вы генерировать счет (-а) из расписания, чтобы выставить счет клиенту проекта (не проверяйте, планируете ли вы создавать счет, который не основан на введенных расписаниях). Примечание. Чтобы создать счет, перейдите на вкладку «Затраченное время» проекта и выберите строки для включения. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Включить общедоступную форму дл NewLeadbyWeb=Ваше сообщение или запрос записаны. Мы ответим или свяжемся с вами в ближайшее время. NewLeadForm=Новая контактная форма LeadFromPublicForm=Лид онлайн из публичной формы +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/ru_RU/stocks.lang b/htdocs/langs/ru_RU/stocks.lang index c250066f9e3..7c312bebafc 100644 --- a/htdocs/langs/ru_RU/stocks.lang +++ b/htdocs/langs/ru_RU/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=Продукт со штрих-кодом не сущ WarehouseId=ID склада WarehouseRef=Ссылка на склад SaveQtyFirst=Сначала сохраните реальные инвентаризационные количества, прежде чем запрашивать создание движения запасов. +ToStart=Главная InventoryStartedShort=Начаты ErrorOnElementsInventory=Операция отменена по следующей причине: ErrorCantFindCodeInInventory=Не могу найти следующий код в инвентаре @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=Успех !! Количество было до StockChangeDisabled=Изменение на складе отключено NoWarehouseDefinedForTerminal=Для терминала не определен склад ClearQtys=Очистить все количества +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Настройки +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/ru_RU/ticket.lang b/htdocs/langs/ru_RU/ticket.lang index 3762a91f605..55c3103a6b1 100644 --- a/htdocs/langs/ru_RU/ticket.lang +++ b/htdocs/langs/ru_RU/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Публичный интерфейс, не требующи TicketSetupDictionaries=Тип тикета, серьезность и аналитические коды настраиваются из словарей. TicketParamModule=Настройка переменных модуля TicketParamMail=Настройка электронной почты -TicketEmailNotificationFrom=Электронная почта отправителя для ответов на тикет -TicketEmailNotificationFromHelp=Электронная почта отправителя для ответов на запросы, отправленных из Долибарра +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Уведомить о создании заявки на этот адрес электронной почты TicketEmailNotificationToHelp=Если он присутствует, этот адрес электронной почты будет уведомлен о создании заявки. TicketNewEmailBodyLabel=Текстовое сообщение, отправленное после создания тикета diff --git a/htdocs/langs/ru_UA/main.lang b/htdocs/langs/ru_UA/main.lang index 2e691473326..0884e5426e0 100644 --- a/htdocs/langs/ru_UA/main.lang +++ b/htdocs/langs/ru_UA/main.lang @@ -1,6 +1,6 @@ # Dolibarr language file - Source file is en_US - main DIRECTION=ltr -FONTFORPDF=helvetica +FONTFORPDF=freemono FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, diff --git a/htdocs/langs/sk_SK/admin.lang b/htdocs/langs/sk_SK/admin.lang index d3dede4828a..590cdac0b6a 100644 --- a/htdocs/langs/sk_SK/admin.lang +++ b/htdocs/langs/sk_SK/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Ďalšie hodnota (náhrady) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Poznámka: No limit je nastavený v konfigurácii PHP MaxSizeForUploadedFiles=Maximálna veľkosť nahraných súborov (0, aby tak zabránil akejkoľvek odosielanie) -UseCaptchaCode=Pomocou grafického kód (CAPTCHA) na prihlasovacej stránke +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Úplná cesta k antivírusovej príkazu AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Ďalšie parametre príkazového riadka @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=Na konci mesiaca -CurrentNext=Aktuálny/Nasledujúci +CurrentNext=A given day in month Offset=Ofset AlwaysActive=Vždy aktívny Upgrade=Vylepšiť @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Spolupracuje so základnou témou, nemusí byť podporované externou témou BackgroundColor=Farba pozadia TopMenuBackgroundColor=Farba pozadia pre vrchné menu -TopMenuDisableImages=Skryť obrázky vo vrchnom menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Farba pozadia pre ľavé menu BackgroundTableTitleColor=Farba pozadia pre riadok s názvom BackgroundTableTitleTextColor=Text color for Table title line @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/sk_SK/companies.lang b/htdocs/langs/sk_SK/companies.lang index 460a62fe32e..29fe6611cf5 100644 --- a/htdocs/langs/sk_SK/companies.lang +++ b/htdocs/langs/sk_SK/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Adresa State=Štát / Provincia +StateId=State ID StateCode=State/Province code StateShort=State Region=Kraj Region-State=Region - State Country=Krajina CountryCode=Kód krajiny -CountryId=Krajina id +CountryId=Country ID Phone=Telefón PhoneShort=Telefón Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Ostatné ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) diff --git a/htdocs/langs/sk_SK/errors.lang b/htdocs/langs/sk_SK/errors.lang index cbb983f03f0..a3f364bae15 100644 --- a/htdocs/langs/sk_SK/errors.lang +++ b/htdocs/langs/sk_SK/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/sk_SK/externalsite.lang b/htdocs/langs/sk_SK/externalsite.lang deleted file mode 100644 index 97c6ec00e38..00000000000 --- a/htdocs/langs/sk_SK/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Nastavenie odkaz na externé webové stránky -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul ExternalSite nebol správne nakonfigurovaný. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/sk_SK/ftp.lang b/htdocs/langs/sk_SK/ftp.lang deleted file mode 100644 index 541f0eadf5b..00000000000 --- a/htdocs/langs/sk_SK/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP klient modul nastavenia -NewFTPClient=Nový FTP nastavenie pripojenia -FTPArea=FTP priestor -FTPAreaDesc=Táto obrazovka zobrazí obsah FTP servera pohľadu -SetupOfFTPClientModuleNotComplete=Nastavenie FTP klienta modulu Zdá sa, že nie je kompletná -FTPFeatureNotSupportedByYourPHP=Vaše PHP nepodporuje FTP funkcie -FailedToConnectToFTPServer=Nepodarilo sa pripojiť k FTP serveru (server %s, prístav %s) -FailedToConnectToFTPServerWithCredentials=Nepodarilo sa prihlásiť k FTP serveru s definovanou login / heslo -FTPFailedToRemoveFile=Nepodarilo sa odstrániť súbor %s. -FTPFailedToRemoveDir=Nepodarilo sa odstrániť adresár %s (Skontrolujte oprávnenia a že adresár je prázdny). -FTPPassiveMode=Pasívny režim -ChooseAFTPEntryIntoMenu=Pridajte položku FTP do menu -FailedToGetFile=Získanie súborov %s zlyhalo diff --git a/htdocs/langs/sk_SK/install.lang b/htdocs/langs/sk_SK/install.lang index 85e51d132e3..06f2fbed1cf 100644 --- a/htdocs/langs/sk_SK/install.lang +++ b/htdocs/langs/sk_SK/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Konfiguračný súbor %s je zapisovatelný. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Vaše PHP podporuje premenné POST a GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Vaše PHP podporuje relácie. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Možno ste zadali nesprávnu hodnotu pre parameter & ErrorFailedToCreateDatabase=Nepodarilo sa vytvoriť databázu "%s". ErrorFailedToConnectToDatabase=Nepodarilo sa pripojiť k databáze "%s". ErrorDatabaseVersionTooLow=Verzia databázy (%s) je príliš stará. Vyžaduje sa verzia %s alebo vyššia. -ErrorPHPVersionTooLow=Verzia PHP je príliš stará. Vyžaduje sa verzia %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Databáza '%s' už existuje. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Ak databáza už existuje, vráťte sa späť a zrušte začiarknutie políčka "Vytvoriť databázu". WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/sk_SK/members.lang b/htdocs/langs/sk_SK/members.lang index e8ea6a54778..4bb80890494 100644 --- a/htdocs/langs/sk_SK/members.lang +++ b/htdocs/langs/sk_SK/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID člena +MemberId=Member Id +MemberRef=Member Ref NewMember=Nový člen MemberType=Členské typ MemberTypeId=Členské typ id @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/sk_SK/stocks.lang b/htdocs/langs/sk_SK/stocks.lang index 3cf1523d363..3ae91d774ad 100644 --- a/htdocs/langs/sk_SK/stocks.lang +++ b/htdocs/langs/sk_SK/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Limit zásob pre upozornenie a optimálne požadova ProductStockWarehouseUpdated=Limit zásob pre upozornenie a optimálne požadované zásoby správne upravené ProductStockWarehouseDeleted=Limit zásob pre upozornenie a optimálne požadované zásoby správne zmazané AddNewProductStockWarehouse=Zadajte nový limit pre upozornenie a optimálne požadované zásoby -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Začiatok InventoryStartedShort=Začíname ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/sl_SI/admin.lang b/htdocs/langs/sl_SI/admin.lang index cbdd6b44fb4..f49590810fa 100644 --- a/htdocs/langs/sl_SI/admin.lang +++ b/htdocs/langs/sl_SI/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Naslednja vrednost (zamenjave) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Opomba: V vaši PHP konfiguraciji ni nastavljenih omejitev MaxSizeForUploadedFiles=Največja velikost prenesene datoteke (0 za prepoved vseh prenosov) -UseCaptchaCode=Na prijavni strani uporabi grafično kodo (CAPTCHA) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Celotna pot za antivirusno ukazno vrstico AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Več parametrov v ukazni vrstici @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=Na koncu meseca -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Odmik AlwaysActive=Vedno aktiven Upgrade=Nadgradnja @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Barva ozadja TopMenuBackgroundColor=Barva ozadja za zgornji meni -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Barva ozadja za levi meni BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/sl_SI/companies.lang b/htdocs/langs/sl_SI/companies.lang index 48c802b4311..f3f446280b3 100644 --- a/htdocs/langs/sl_SI/companies.lang +++ b/htdocs/langs/sl_SI/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Naslov State=Dežela/Provinca +StateId=State ID StateCode=State/Province code StateShort=Država Region=Regija Region-State=Region - State Country=Država CountryCode=Koda države -CountryId=ID države +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL== ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Ostali ProfId6ShortCM=- ProfId1CO== diff --git a/htdocs/langs/sl_SI/errors.lang b/htdocs/langs/sl_SI/errors.lang index a27b6fceea6..7910fee7eaa 100644 --- a/htdocs/langs/sl_SI/errors.lang +++ b/htdocs/langs/sl_SI/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/sl_SI/externalsite.lang b/htdocs/langs/sl_SI/externalsite.lang deleted file mode 100644 index e2794de1ed6..00000000000 --- a/htdocs/langs/sl_SI/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup se povezujejo na zunanji strani -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul za zunanjo stran ni bil konfiguriran pravilno -ExampleMyMenuEntry=Moj menijski vnos diff --git a/htdocs/langs/sl_SI/ftp.lang b/htdocs/langs/sl_SI/ftp.lang deleted file mode 100644 index 3598a816c8c..00000000000 --- a/htdocs/langs/sl_SI/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Nastavitev modula FTP Client -NewFTPClient=Nastavitev nove FTP povezave -FTPArea=Področje FTP -FTPAreaDesc=Na zaslonu je prikazana vsebina izgleda FTP strežnika -SetupOfFTPClientModuleNotComplete=Kaže, da nastavitev modula FTP client ni popolna -FTPFeatureNotSupportedByYourPHP=Vaš PHP ne podpira FTP funkcij -FailedToConnectToFTPServer=Neuspešna povezava s FTP strežnikom (strežnik %s, port %s) -FailedToConnectToFTPServerWithCredentials=Neuspešna prijava na FTP strežnik z določenim uporabniškim imenom/geslom -FTPFailedToRemoveFile=Neuspešna odstranitev datoteke %s. -FTPFailedToRemoveDir=Neuspešna odstranitev mape %s (Preverite dovoljenja in če je ta mapa prazna). -FTPPassiveMode=Pasivni način -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/sl_SI/install.lang b/htdocs/langs/sl_SI/install.lang index 3262c23cc1d..87bd5fa646d 100644 --- a/htdocs/langs/sl_SI/install.lang +++ b/htdocs/langs/sl_SI/install.lang @@ -8,6 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=V konfiguracijsko datoteka %s je možno zapisovanje. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Ta PHP podpira spremenljivke POST in GET. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Ta PHP podpira seje. @@ -16,13 +17,6 @@ PHPMemoryOK=Maksimalni spomin za sejo vašega PHP je nastavljen na %s. To PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. Recheck=Click here for a more detailed test ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. -ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. -ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. -ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. -ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Mapa %s ne obstaja. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -30,9 +24,11 @@ ErrorWrongValueForParameter=Morda ste vnesli napačno vrednost parametra '%s'. ErrorFailedToCreateDatabase=Neuspešno kreiranje baze podatkov '%s'. ErrorFailedToConnectToDatabase=Neuspešna povezava z bazo podatkov '%s'. ErrorDatabaseVersionTooLow=Verzija baze podatkov (%s) je prestara. Zahtevana je verzija %s ali novejša. -ErrorPHPVersionTooLow=PHP verzija je prestara. Zahtevana je verzija %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Baza podatkov '%s' že obstaja. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Če baza podatkov že obstaja, se vrnite nazaj in odznačite opcijo "Ustvari bazo podatkov". WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/sl_SI/members.lang b/htdocs/langs/sl_SI/members.lang index 385d920ff49..a6e08729998 100644 --- a/htdocs/langs/sl_SI/members.lang +++ b/htdocs/langs/sl_SI/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID člana +MemberId=Member Id +MemberRef=Member Ref NewMember=Nov član MemberType=Tip člana MemberTypeId=ID tipa člana @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/sl_SI/stocks.lang b/htdocs/langs/sl_SI/stocks.lang index f0327fefdec..b95ea1997e5 100644 --- a/htdocs/langs/sl_SI/stocks.lang +++ b/htdocs/langs/sl_SI/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Reopen ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Začete ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/sq_AL/errors.lang b/htdocs/langs/sq_AL/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/sq_AL/errors.lang +++ b/htdocs/langs/sq_AL/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/sq_AL/externalsite.lang b/htdocs/langs/sq_AL/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/sq_AL/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/sq_AL/ftp.lang b/htdocs/langs/sq_AL/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/sq_AL/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/sr_RS/admin.lang b/htdocs/langs/sr_RS/admin.lang index a94e2cdc96c..319144e851d 100644 --- a/htdocs/langs/sr_RS/admin.lang +++ b/htdocs/langs/sr_RS/admin.lang @@ -5,8 +5,8 @@ Foundation=Osnova Version=Verzija Publisher=Publisher VersionProgram=Verzija programa -VersionLastInstall=Initial install version -VersionLastUpgrade=Latest version upgrade +VersionLastInstall=Početna verzija instalacije +VersionLastUpgrade=Poslednja verzija nadogradnje VersionExperimental=Eksperimentalno VersionDevelopment=Razvoj VersionUnknown=Nepoznato @@ -29,193 +29,193 @@ AvailableOnlyOnPackagedVersions=The local file for integrity checking is only av XmlNotFound=Xml Integrity File of application not found SessionId=Sesija ID SessionSaveHandler=Rukovalac čuvanja sesije -SessionSavePath=Session save location +SessionSavePath=Lokacija za čuvanje sesije PurgeSessions=Čišćenje sesije -ConfirmPurgeSessions=Do you really want to purge all sessions? This will disconnect every user (except yourself). -NoSessionListWithThisHandler=Save session handler configured in your PHP does not allow listing all running sessions. +ConfirmPurgeSessions=Da li zaista želite da očistite sve sesije? Ovo će prekinuti vezu svih korisnika (sem vaše) +NoSessionListWithThisHandler=Rukovalac čuvanja sesija konfigurisan u vašem PHP ne dozvoljava listanje svih tekućih sesija LockNewSessions=Zaključaj nove konekcije -ConfirmLockNewSessions=Are you sure you want to restrict any new Dolibarr connection to yourself? Only user %s will be able to connect after that. -UnlockNewSessions=Ukloni +ConfirmLockNewSessions=Da li ste sigurni da želite da ograničite nove Dolibarr veze na samo vašu? Samo korisnik %s će moći da se poveže nakon toga. +UnlockNewSessions=Ukloni zaključavanje veze YourSession=Vaša sesija -Sessions=Users Sessions +Sessions=Sesija korisnika WebUserGroup=Web server korisnik/grupa PermissionsOnFiles=Permissions on files PermissionsOnFilesInWebRoot=Permissions on files in web root directory PermissionsOnFile=Permissions on file %s -NoSessionFound=Your PHP configuration seems to not allow listing of active sessions. The directory used to save sessions (%s) may be protected (for example by OS permissions or by PHP directive open_basedir). -DBStoringCharset=Database charset to store data -DBSortingCharset=Database charset to sort data +NoSessionFound=Izgleda da vaša PHP konfiguracija ne dozvoljava listanje aktivnih sesija. Direktorijum koji se koristi za snimanje sesija (%s) je možda zaštićen (na primer OS dozvolama ili PHP direktivama open_basedir). +DBStoringCharset=Karakter set baze za čuvanje podataka +DBSortingCharset=Karakter set baze za sortiranje podataka HostCharset=Host charset ClientCharset=Client charset ClientSortingCharset=Client collation -WarningModuleNotActive=Module %s must be enabled -WarningOnlyPermissionOfActivatedModules=Only permissions related to activated modules are shown here. You can activate other modules in the Home->Setup->Modules page. -DolibarrSetup=Dolibarr install or upgrade -InternalUser=Internal user -ExternalUser=External user -InternalUsers=Internal users -ExternalUsers=External users +WarningModuleNotActive=Modul %s mora biti omogućen +WarningOnlyPermissionOfActivatedModules=Ovde se pokazuju samo dozvole u vezi sa aktiviranim modulima. Možete aktivirati druge module u Početna->Podešavanja->Moduli. +DolibarrSetup=Dolibarr instalacija ili nadogradnja +InternalUser=Interni korisnik +ExternalUser=Spoljni korisnik +InternalUsers=Interni korisnici +ExternalUsers=Spoljni korisnici UserInterface=User interface -GUISetup=Display +GUISetup=Prikaz SetupArea=Podešavanja UploadNewTemplate=Upload new template(s) -FormToTestFileUploadForm=Form to test file upload (according to setup) +FormToTestFileUploadForm=Forma za testiranje uploada fajla (prema postavkama) ModuleMustBeEnabled=The module/application %s must be enabled ModuleIsEnabled=The module/application %s has been enabled -IfModuleEnabled=Note: yes is effective only if module %s is enabled -RemoveLock=Remove/rename file %s if it exists, to allow usage of the Update/Install tool. -RestoreLock=Restore file %s, with read permission only, to disable any further use of the Update/Install tool. -SecuritySetup=Security setup +IfModuleEnabled=Pažnja: da je u funkciji samo ako je odobren modul %s +RemoveLock=Uklonite/preimenujte fajl %s ako postoji, da bi dozvolili alat za Ažuriranje/Instalaciju +RestoreLock=Vratite fajl %s, samo sa dozvolom za čitanje, da bi onemogućili dalje korišćenje alata za Ažuriranje/Instalaciju +SecuritySetup=Sigurnosna podešavanja PHPSetup=PHP setup OSSetup=OS setup SecurityFilesDesc=Define here options related to security about uploading files. -ErrorModuleRequirePHPVersion=Error, this module requires PHP version %s or higher -ErrorModuleRequireDolibarrVersion=Error, this module requires Dolibarr version %s or higher -ErrorDecimalLargerThanAreForbidden=Error, a precision higher than %s is not supported. +ErrorModuleRequirePHPVersion=Pažnja, ovaj modul zahteva PHP verziju %s ili višu +ErrorModuleRequireDolibarrVersion=Pažnja, ovaj modul zahteva Dolibarr verziju %s ili višu +ErrorDecimalLargerThanAreForbidden=Greška, nije podržana preciznost veća od %s . DictionarySetup=Dictionary setup Dictionary=Dictionaries -ErrorReservedTypeSystemSystemAuto=Value 'system' and 'systemauto' for type is reserved. You can use 'user' as value to add your own record -ErrorCodeCantContainZero=Code can't contain value 0 -DisableJavascript=Disable JavaScript and Ajax functions +ErrorReservedTypeSystemSystemAuto=Vrednost 'system' i 'systemauto' su rezervisane za tip. Možete koristiti 'user' kao vrednost da unesete svoj zapis +ErrorCodeCantContainZero=Kod ne može sadržati vrednost 0 +DisableJavascript=Onemogućiti JavaScript i Ajax funkcije DisableJavascriptNote=Note: For test or debug purpose only. For optimization for blind person or text browsers, you may prefer to use the setup on the profile of user UseSearchToSelectCompanyTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant COMPANY_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. UseSearchToSelectContactTooltip=Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. DelaiedFullListToSelectCompany=Wait until a key is pressed before loading content of Third Parties combo list.
This may increase performance if you have a large number of third parties, but it is less convenient. DelaiedFullListToSelectContact=Wait until a key is pressed before loading content of Contact combo list.
This may increase performance if you have a large number of contacts, but it is less convenient. -NumberOfKeyToSearch=Number of characters to trigger search: %s +NumberOfKeyToSearch=Broj karaktera da se pokrene pretraga: %s NumberOfBytes=Number of Bytes SearchString=Search string -NotAvailableWhenAjaxDisabled=Not available when Ajax disabled +NotAvailableWhenAjaxDisabled=Nije dostupno kada je onemogućen Ajax AllowToSelectProjectFromOtherCompany=On document of a third party, can choose a project linked to another third party TimesheetPreventAfterFollowingMonths=Prevent recording time spent after the following number of months -JavascriptDisabled=JavaScript disabled -UsePreviewTabs=Use preview tabs -ShowPreview=Show preview +JavascriptDisabled=JavaScript onemogućen +UsePreviewTabs=Koristite kartice za pregled +ShowPreview=Prikaži pregled ShowHideDetails=Show-Hide details -PreviewNotAvailable=Preview not available -ThemeCurrentlyActive=Theme currently active +PreviewNotAvailable=Pregled nije dostupan +ThemeCurrentlyActive=Trenutno aktivna tema MySQLTimeZone=TimeZone MySql (database) TZHasNoEffect=Dates are stored and returned by database server as if they were kept as submitted string. The timezone has effect only when using the UNIX_TIMESTAMP function (that should not be used by Dolibarr, so database TZ should have no effect, even if changed after data was entered). -Space=Space -Table=Table -Fields=Fields -Index=Index -Mask=Mask -NextValue=Next value -NextValueForInvoices=Next value (invoices) -NextValueForCreditNotes=Next value (credit notes) +Space=Razmak +Table=Tabela +Fields=Polja +Index=Indeks +Mask=Maska +NextValue=Sledeća vrednost +NextValueForInvoices=Sledeća vrednost (računi) +NextValueForCreditNotes=Sledeća vrednost (knjižno odobrenje) NextValueForDeposit=Next value (down payment) NextValueForReplacements=Next value (replacements) -MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter -NoMaxSizeByPHPLimit=Note: No limit is set in your PHP configuration -MaxSizeForUploadedFiles=Maximum size for uploaded files (0 to disallow any upload) -UseCaptchaCode=Use graphical code (CAPTCHA) on login page -AntiVirusCommand=Full path to antivirus command -AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe -AntiVirusParam= More parameters on command line -AntiVirusParamExample=Example for ClamAv Daemon: --fdpass
Example for ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" -ComptaSetup=Accounting module setup -UserSetup=User management setup +MustBeLowerThanPHPLimit=Pažnja: vaša PHP konfiguracija trenutno ograničava maksimalnu veličinu fajla za upload na%s%s, nezavisno od vrednosti ovog parametra +NoMaxSizeByPHPLimit=Pažnja: nije postavljen limit u vašoj PHP konfiguraciji +MaxSizeForUploadedFiles=Maksimalna veličina za uploadovane fajlove (0 da bi onemogućili bilo kakav upload) +UseCaptchaCode=Koristiti grafički kod (CAPTCHA) na strani za prijavu i nekim javnim stranama +AntiVirusCommand=Puna putanja za antivirusnu komandu +AntiVirusCommandExample=Primer za ClamAv Daemon (zahteva clamav-daemon): /usr/bin/clamdscan
Primer za ClamWin (veoma veoma sporo): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe +AntiVirusParam= Više parametara na komandnoj liniji +AntiVirusParamExample=Primer za ClamAv Daemon: --fdpass
Primer za ClamWin: --database="C:\\Program Files (x86)\\ClamWin\\lib" +ComptaSetup=Postavke modula knjigovodstva +UserSetup=Postavke menadžmenta korisnika MultiCurrencySetup=Multi-currency setup -MenuLimits=Limits and accuracy -MenuIdParent=Parent menu ID -DetailMenuIdParent=ID of parent menu (empty for a top menu) +MenuLimits=Limiti i tačnost +MenuIdParent=ID menija višeg nivoa +DetailMenuIdParent=ID menija višeg nivoa (prazno za najviši meni) ParentID=Parent ID -DetailPosition=Sort number to define menu position -AllMenus=All -NotConfigured=Module/Application not configured -Active=Active -SetupShort=Setup -OtherOptions=Other options -OtherSetup=Other Setup -CurrentValueSeparatorDecimal=Decimal separator -CurrentValueSeparatorThousand=Thousand separator +DetailPosition=Sortirati brojeve da se definiše pozicija menija +AllMenus=Sve +NotConfigured=Nije konfigurisan Modul/Aplikacija +Active=Aktivno +SetupShort=Postavke +OtherOptions=Ostale opcije +OtherSetup=Ostale postavke +CurrentValueSeparatorDecimal=Odvajač decimale +CurrentValueSeparatorThousand=Odvajač hiljada Destination=Destination IdModule=Module ID IdPermissions=Permissions ID -LanguageBrowserParameter=Parameter %s -LocalisationDolibarrParameters=Localization parameters -ClientHour=Client time (user) -OSTZ=Server OS Time Zone -PHPTZ=PHP server Time Zone -DaylingSavingTime=Daylight saving time -CurrentHour=PHP Time (server) -CurrentSessionTimeOut=Current session timeout +LanguageBrowserParameter=Parametar %s +LocalisationDolibarrParameters=Parametri lokalizacije +ClientHour=Vreme klijenta (korisnik) +OSTZ=Vremenska zona OS Servera +PHPTZ=Vremenska zona PHP servera +DaylingSavingTime=Letnje računanje vremena +CurrentHour=PHP vreme (server) +CurrentSessionTimeOut=Vremensko ograničenje trenutne sesije YouCanEditPHPTZ=To set a different PHP timezone (not required), you can try to add a .htaccess file with a line like this "SetEnv TZ Europe/Paris" HoursOnThisPageAreOnServerTZ=Warning, in contrary of other screens, hours on this page are not in your local timezone, but of the timezone of the server. -Box=Widget -Boxes=Widgets -MaxNbOfLinesForBoxes=Max. number of lines for widgets +Box=Vidžet +Boxes=Vidžeti +MaxNbOfLinesForBoxes=Maksimalni broj linija za vidžete AllWidgetsWereEnabled=All available widgets are enabled -PositionByDefault=Default order -Position=Position -MenusDesc=Menu managers set content of the two menu bars (horizontal and vertical). -MenusEditorDesc=The menu editor allows you to define custom menu entries. Use it carefully to avoid instability and permanently unreachable menu entries.
Some modules add menu entries (in menu All mostly). If you remove some of these entries by mistake, you can restore them disabling and reenabling the module. -MenuForUsers=Menu for users -LangFile=.lang file +PositionByDefault=Podrazumevani redosled +Position=Pozicija +MenusDesc=Menadžer menija postavlja sadržaj dve trake menija (horizontalnu i vertikalnu). +MenusEditorDesc=Editor menija vam dozvoljava da definišete prilagođene unose menija. Koristite ih pažljivo da bi izbegli nestabilnost i trajnu nedostupnost unosa menija.
Neki moduli dodaju unose menija (u meni Svi uglavnom). Ako uklonite neki od ovih unosa greškom, možete ih povratiti tako što ćete prvo onemogućiti pa onda omogućiti modul. +MenuForUsers=Meni za korisnike +LangFile=.lang fajl Language_en_US_es_MX_etc=Language (en_US, es_MX, ...) -System=System -SystemInfo=System information -SystemToolsArea=System tools area -SystemToolsAreaDesc=This area provides administration functions. Use the menu to choose the required feature. -Purge=Purge -PurgeAreaDesc=This page allows you to delete all files generated or stored by Dolibarr (temporary files or all files in %s directory). Using this feature is not normally necessary. It is provided as a workaround for users whose Dolibarr is hosted by a provider that does not offer permissions to delete files generated by the web server. -PurgeDeleteLogFile=Delete log files, including %s defined for Syslog module (no risk of losing data) -PurgeDeleteTemporaryFiles=Delete all log and temporary files (no risk of losing data). Parameter can be 'tempfilesold', 'logfiles' or both 'tempfilesold+logfiles'. Note: Deletion of temporary files is done only if the temp directory was created more than 24 hours ago. +System=Sistem +SystemInfo=Informacije o sistemu +SystemToolsArea=Oblast sistemskih alata +SystemToolsAreaDesc=Ova oblast omogućava administrativne funkcije. Koristite meni da bi odabrali tražene mogućnosti- +Purge=Čišćenje +PurgeAreaDesc=Ova strana vam dozvoljava da obrišete sve fajlove generisane ili sačuvane od strane Dolibarr (privremeni fajlovi ili svi fajlovi u %s folderu). Korišćenje ove funkcije normalno nije potrebno. Omogućena je kao pomoć za korisnike kojima je Dolibarr hostovan kod provajdera koji ne nudi dozvole za brisanje fajlova generisanih od strane web servera. +PurgeDeleteLogFile=Brisanje log fajla, uključujući %s definisano za Syslog modul (bez rizika od gubljenja podataka) +PurgeDeleteTemporaryFiles=Obrisati sve logove i privremene fajlove (bez rizika za gubljenje podataka). Parametri mogu biti 'tempfilesold', 'logfiles' ili oba 'tempfilesold+logfiles'. Pažnja: Brisanje privremenih fajlova se radi samo ako je temp folder napravljen pre više od 24 sata. PurgeDeleteTemporaryFilesShort=Delete log and temporary files (no risk of losing data) -PurgeDeleteAllFilesInDocumentsDir=Delete all files in directory: %s.
This will delete all generated documents related to elements (third parties, invoices etc...), files uploaded into the ECM module, database backup dumps and temporary files. -PurgeRunNow=Purge now -PurgeNothingToDelete=No directory or files to delete. -PurgeNDirectoriesDeleted=%s files or directories deleted. +PurgeDeleteAllFilesInDocumentsDir=Brisanje svih fajlova u folderu: %s.
Ovo će obrisati sva generisana dokumenta, u vezi sa elementima (treće strane, računi i sl...), fajlove uploadovane na ECM module, otpaci bekapa baze podataka i privremenih fajlova. +PurgeRunNow=Očistiti sada +PurgeNothingToDelete=Nema foldera ili fajlova za brisanje +PurgeNDirectoriesDeleted=%s fajlovi ili direktorijumi obrisani. PurgeNDirectoriesFailed=Failed to delete %s files or directories. -PurgeAuditEvents=Purge all security events -ConfirmPurgeAuditEvents=Are you sure you want to purge all security events? All security logs will be deleted, no other data will be removed. -GenerateBackup=Generate backup -Backup=Backup -Restore=Restore -RunCommandSummary=Backup has been launched with the following command -BackupResult=Backup result -BackupFileSuccessfullyCreated=Backup file successfully generated -YouCanDownloadBackupFile=The generated file can now be downloaded -NoBackupFileAvailable=No backup files available. -ExportMethod=Export method -ImportMethod=Import method -ToBuildBackupFileClickHere=To build a backup file, click here. -ImportMySqlDesc=To import a MySQL backup file, you may use phpMyAdmin via your hosting or use the mysql command from the Command line.
For example: -ImportPostgreSqlDesc=To import a backup file, you must use pg_restore command from command line: +PurgeAuditEvents=Očistiti sve bezbednosne događaje +ConfirmPurgeAuditEvents=Da li ste sigurni da želite da očistite sve bezbednosne događaje? Svi bezbednosni logovi će biti obrisani, ostali podaci neće biti obrisani. +GenerateBackup=Generisanje rezervne kopije +Backup=Rezervna kopija +Restore=Vraćanje sačuvane rezervne kopije +RunCommandSummary=Pravljenje rezervne kopije je pokrenuto sledećom komandom +BackupResult=Rezultat pravljenja rezervne kopije +BackupFileSuccessfullyCreated=Uspešno generisana rezervna kopija +YouCanDownloadBackupFile=Generisani fajl može sada biti preuzet +NoBackupFileAvailable=Nema dostupnih fajlova rezervne kopije. +ExportMethod=Metoda izvoza +ImportMethod=Metoda uvoza +ToBuildBackupFileClickHere=Da bi se generisao fajl rezervne kopije, kliknite ovde. +ImportMySqlDesc=Da bi uvezli MySQL fajl rezervne kopije, možete koristiti phpMyAdmin preko vašeg hostinga ili koristiti mysql komandu iz Komandne linije
Na primer: +ImportPostgreSqlDesc=Da izvezete fajl rezervne kopije, morate koristiti pg_restore komandu iz komandne linije: ImportMySqlCommand=%s %s < mybackupfile.sql ImportPostgreSqlCommand=%s %s mybackupfile.sql -FileNameToGenerate=Filename for backup: -Compression=Compression -CommandsToDisableForeignKeysForImport=Command to disable foreign keys on import -CommandsToDisableForeignKeysForImportWarning=Mandatory if you want to be able to restore your sql dump later -ExportCompatibility=Compatibility of generated export file +FileNameToGenerate=Ime fajla rezervne kopije: +Compression=Kompresija +CommandsToDisableForeignKeysForImport=Komanda da za onemogućavanje stranih unosa tokom uvoza +CommandsToDisableForeignKeysForImportWarning=Obavezno ako želite da zadržite mogućnost da vratite svoj sql izvoz kasnije +ExportCompatibility=Kompatibilnost generisanog izvoznog fajla ExportUseMySQLQuickParameter=Use the --quick parameter ExportUseMySQLQuickParameterHelp=The '--quick' parameter helps limit RAM consumption for large tables. -MySqlExportParameters=MySQL export parameters -PostgreSqlExportParameters= PostgreSQL export parameters -UseTransactionnalMode=Use transactional mode -FullPathToMysqldumpCommand=Full path to mysqldump command -FullPathToPostgreSQLdumpCommand=Full path to pg_dump command -AddDropDatabase=Add DROP DATABASE command -AddDropTable=Add DROP TABLE command -ExportStructure=Structure -NameColumn=Name columns -ExtendedInsert=Extended INSERT -NoLockBeforeInsert=No lock commands around INSERT -DelayedInsert=Delayed insert -EncodeBinariesInHexa=Encode binary data in hexadecimal -IgnoreDuplicateRecords=Ignore errors of duplicate record (INSERT IGNORE) -AutoDetectLang=Autodetect (browser language) -FeatureDisabledInDemo=Feature disabled in demo +MySqlExportParameters=MySQL parametri izvoza +PostgreSqlExportParameters= PostgreSQL parametri izvoza +UseTransactionnalMode=Koristiti transakcioni režim +FullPathToMysqldumpCommand=Puna putanja do mysqldump komande +FullPathToPostgreSQLdumpCommand=Puna putanja do pg_dump komande +AddDropDatabase=Dodati DROP DATABASE komandu +AddDropTable=Dodati DROP TABLE komandu +ExportStructure=Struktura +NameColumn=Ime kolona +ExtendedInsert=Prošireni INSERT +NoLockBeforeInsert=Bez komandi zaključavanja oko INSERT +DelayedInsert=Odloženo umetanje +EncodeBinariesInHexa=Kodiranje binarnih podataka u heksadecimalne +IgnoreDuplicateRecords=Ignorisanje grešaka kod dupliranih zapisa (INSERT IGNORE) +AutoDetectLang=Automatsko detektovanje (jezik browser-a) +FeatureDisabledInDemo=Funkcija onemogućena u demo verziji FeatureAvailableOnlyOnStable=Feature only available on official stable versions -BoxesDesc=Widgets are components showing some information that you can add to personalize some pages. You can choose between showing the widget or not by selecting target page and clicking 'Activate', or by clicking the trashcan to disable it. -OnlyActiveElementsAreShown=Only elements from enabled modules are shown. -ModulesDesc=The modules/applications determine which features are available in the software. Some modules require permissions to be granted to users after activating the module. Click the on/off button %s of each module to enable or disable a module/application. +BoxesDesc=Widžeti su komponente koje pokazuju neke informacije koje možete dodati da bi prilagodili neke strane. Možete odabrati između prikazivanja vidžeta ili ne tako što ćete otvoriti ciljnu stranicu i kliknuti 'Aktiviranje', ili klikom na kantu za smeće kako bi je onemogućili +OnlyActiveElementsAreShown=Prikazani su samo elementi iz omogućenih modula . +ModulesDesc=Moduli/Aplikacije određuju koje funkcionalnosti su omogućene u softveru. Neki moduli zahtevaju dozvole za korisnike nakon aktiviranja modula. Kliknuti na uklj/isklj dugme %s svakog modula da bi se omogućo ili onemogućio modul/aplikacija. ModulesDesc2=Click the wheel button %s to configure the module/application. -ModulesMarketPlaceDesc=You can find more modules to download on external websites on the Internet... +ModulesMarketPlaceDesc=Možete pronaći više modula za preuzimanje na eksternim sajtovima na internetu... ModulesDeployDesc=If permissions on your file system allow it, you can use this tool to deploy an external module. The module will then be visible on the tab %s. -ModulesMarketPlaces=Find external app/modules +ModulesMarketPlaces=Pronaći eksterni modul/aplikaciju ModulesDevelopYourModule=Develop your own app/modules ModulesDevelopDesc=You may also develop your own module or find a partner to develop one for you. DOLISTOREdescriptionLong=Instead of switching on www.dolistore.com web site to find an external module, you can use this embedded tool that will perform the search on the external market place for you (may be slow, need an internet access)... @@ -230,49 +230,49 @@ SetOptionTo=Set option %s to %s Updated=Updated AchatTelechargement=Buy / Download GoModuleSetupArea=To deploy/install a new module, go to the Module setup area: %s. -DoliStoreDesc=DoliStore, the official market place for Dolibarr ERP/CRM external modules +DoliStoreDesc=DoliStore, zvanični market za Dolibarr ERP/CRM eksterne module DoliPartnersDesc=List of companies providing custom-developed modules or features.
Note: since Dolibarr is an open source application, anyone experienced in PHP programming should be able to develop a module. -WebSiteDesc=External websites for more add-on (non-core) modules... +WebSiteDesc=Eksterni sajtovi sa više dodataka i modula (nevezani za jezgro programa)... DevelopYourModuleDesc=Some solutions to develop your own module... URL=URL RelativeURL=Relative URL -BoxesAvailable=Widgets available -BoxesActivated=Widgets activated -ActivateOn=Activate on -ActiveOn=Activated on +BoxesAvailable=Dostupni vidžeti +BoxesActivated=Aktivirani vidžeti +ActivateOn=Aktivirati +ActiveOn=Aktivirano ActivatableOn=Activatable on -SourceFile=Source file -AvailableOnlyIfJavascriptAndAjaxNotDisabled=Available only if JavaScript is not disabled -Required=Required +SourceFile=Izvorni fajl +AvailableOnlyIfJavascriptAndAjaxNotDisabled=Dostupno samo ako JavaScript nije onemogućen +Required=Potrebno UsedOnlyWithTypeOption=Used by some agenda option only -Security=Security -Passwords=Passwords -DoNotStoreClearPassword=Encrypt passwords stored in database (NOT as plain-text). It is strongly recommended to activate this option. -MainDbPasswordFileConfEncrypted=Encrypt database password stored in conf.php. It is strongly recommended to activate this option. -InstrucToEncodePass=To have password encoded into the conf.php file, replace the line
$dolibarr_main_db_pass="...";
by
$dolibarr_main_db_pass="crypted:%s"; -InstrucToClearPass=To have password decoded (clear) into the conf.php file, replace the line
$dolibarr_main_db_pass="crypted:...";
by
$dolibarr_main_db_pass="%s"; -ProtectAndEncryptPdfFiles=Protect generated PDF files. This is NOT recommended as it breaks bulk PDF generation. -ProtectAndEncryptPdfFilesDesc=Protection of a PDF document keeps it available to read and print with any PDF browser. However, editing and copying is not possible anymore. Note that using this feature makes building of a global merged PDFs not working. -Feature=Feature -DolibarrLicense=License -Developpers=Developers/contributors -OfficialWebSite=Dolibarr official web site +Security=Bezbednost +Passwords=Šifra +DoNotStoreClearPassword=Kriptovanje šifri sačuvanih u bazi podataka (NE kao običan tekst). Strogo se preporučuje da se aktivira ova opcija. +MainDbPasswordFileConfEncrypted=Šifra kriptovane baze podataka sačuvana u conf.php. Strogo se preporučuje da se aktivira ova opcija. +InstrucToEncodePass=Da bi se šifra kodirala u conf.php fajl, zameniti liniju
$dolibarr_main_db_pass="...";
sa
$dolibarr_main_db_pass="crypted:%s"; +InstrucToClearPass=Da bi se šifra dekodirala (čisto) u conf.php fajlu, zamenite liniju
$dolibarr_main_db_pass="crypted:...";
sa
$dolibarr_main_db_pass="%s"; +ProtectAndEncryptPdfFiles=Zaštita generisanih PDF fajlova. Ovo NIJE preporučeno jer zaustavlja grupno generisanje PDF fajlova. +ProtectAndEncryptPdfFilesDesc=Zaštita PDF dokumenta zadržava mogućnost čitanja i pisanja sa bilo kojim PDF čitačem. Ipak, menjanje i kopiranje više nije moguće. Obratite pažnju da korišćenje ove funkcije sprečava generisanje globalno spojenih PDF fajlova. +Feature=Svojstvo +DolibarrLicense=Licenca +Developpers=Developeri/Saradnici +OfficialWebSite=Dolibarr zvanični web sajt OfficialWebSiteLocal=Lokalni web sajt (%s) -OfficialWiki=Dolibarr documentation / Wiki -OfficialDemo=Dolibarr online demo -OfficialMarketPlace=Official market place for external modules/addons -OfficialWebHostingService=Referenced web hosting services (Cloud hosting) +OfficialWiki=Dolibarr dokumentacija / Wiki +OfficialDemo=Dolibarr onlajn demo +OfficialMarketPlace=Zvaničan market za eksterne module/dodatke +OfficialWebHostingService=Referentni web hosting servis (Cloud hosting) ReferencedPreferredPartners=Preferred Partners OtherResources=Other resources ExternalResources=External Resources SocialNetworks=Social Networks SocialNetworkId=Social Network ID -ForDocumentationSeeWiki=For user or developer documentation (Doc, FAQs...),
take a look at the Dolibarr Wiki:
%s -ForAnswersSeeForum=For any other questions/help, you can use the Dolibarr forum:
%s -HelpCenterDesc1=Here are some resources for getting help and support with Dolibarr. -HelpCenterDesc2=Some of these resources are only available in english. -CurrentMenuHandler=Current menu handler -MeasuringUnit=Measuring unit +ForDocumentationSeeWiki=Za dokumentaciju za korisnike ili developere (Doc, FAQ...),
pogledajte na Dolibarr Wiki:
%s +ForAnswersSeeForum=Za druga pitanja/pomoć, možete koristiti Dolibarr forum:
%s +HelpCenterDesc1=Evo nekih resursa da bi pronašli pomoć i podršku sa Dolibarr. +HelpCenterDesc2=Neki od resursa su dostupni samo na engleskom. +CurrentMenuHandler=Trenutni rukovalac menija +MeasuringUnit=Merna jedinica LeftMargin=Left margin TopMargin=Top margin PaperSize=Paper type @@ -284,74 +284,74 @@ Content=Content ContentForLines=Content to display for each product or service (from variable __LINES__ of Content) NoticePeriod=Rok za obaveštenje NewByMonth=New by month -Emails=Emails -EMailsSetup=Emails setup -EMailsDesc=This page allows you to set parameters or options for email sending. +Emails=Email +EMailsSetup=Email podešavanja +EMailsDesc=Ova strana omogućava da postavite parametre i opcije za slanje emailova EmailSenderProfiles=Emails sender profiles EMailsSenderProfileDesc=You can keep this section empty. If you enter some emails here, they will be added to the list of possible senders into the combobox when your write a new email. -MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (default value in php.ini: %s) -MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (default value in php.ini: %s) -MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Not defined into PHP on Unix-like systems) -MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Not defined into PHP on Unix-like systems) -MAIN_MAIL_EMAIL_FROM=Sender email for automatic emails (default value in php.ini: %s) -MAIN_MAIL_ERRORS_TO=Email used for error returns emails (fields 'Errors-To' in emails sent) -MAIN_MAIL_AUTOCOPY_TO= Copy (Bcc) all sent emails to -MAIN_DISABLE_ALL_MAILS=Disable all email sending (for test purposes or demos) +MAIN_MAIL_SMTP_PORT=SMTP/SMTPS Port (podrazumevana vrednost u php.ini: %s) +MAIN_MAIL_SMTP_SERVER=SMTP/SMTPS Host (podrazumevana vrednost u php.ini: %s) +MAIN_MAIL_SMTP_PORT_NotAvailableOnLinuxLike=SMTP/SMTPS Port (Nije definisano u PHP ili Unix-olikim sistemima) +MAIN_MAIL_SMTP_SERVER_NotAvailableOnLinuxLike=SMTP/SMTPS Host (Nije definisano u PHP ili Unix-olikim sistemima) +MAIN_MAIL_EMAIL_FROM=Pošiljalac email-a za automatske email-ove (podrazumevana vrednost u php.ini: %s) +MAIN_MAIL_ERRORS_TO=Email koji se koristi za povratne mailove sa greškom (polje 'Errors-To' u poslatim email-ovima) +MAIN_MAIL_AUTOCOPY_TO= Kopirati (Bcc) sve poslate email-ove na +MAIN_DISABLE_ALL_MAILS=Onemogućiti slanje email-ova (u svrhu testiranja ili demoa) MAIN_MAIL_FORCE_SENDTO=Send all emails to (instead of real recipients, for test purposes) MAIN_MAIL_ENABLED_USER_DEST_SELECT=Suggest emails of employees (if defined) into the list of predefined recipient when writing a new email -MAIN_MAIL_SENDMODE=Email sending method -MAIN_MAIL_SMTPS_ID=SMTP ID (if sending server requires authentication) -MAIN_MAIL_SMTPS_PW=SMTP Password (if sending server requires authentication) -MAIN_MAIL_EMAIL_TLS=Use TLS (SSL) encryption +MAIN_MAIL_SENDMODE=Metoda slanja email-ova +MAIN_MAIL_SMTPS_ID=SMTP ID (ako server za slanje zahteva proveru identiteta) +MAIN_MAIL_SMTPS_PW=SMTP Šifra (ako server za slanje zahteva proveru identiteta) +MAIN_MAIL_EMAIL_TLS=Koristi TLS (SSL) kriptovanje MAIN_MAIL_EMAIL_STARTTLS=Use TLS (STARTTLS) encryption MAIN_MAIL_EMAIL_SMTP_ALLOW_SELF_SIGNED=Authorise les certificats auto-signés MAIN_MAIL_EMAIL_DKIM_ENABLED=Use DKIM to generate email signature MAIN_MAIL_EMAIL_DKIM_DOMAIN=Email Domain for use with dkim MAIN_MAIL_EMAIL_DKIM_SELECTOR=Name of dkim selector MAIN_MAIL_EMAIL_DKIM_PRIVATE_KEY=Private key for dkim signing -MAIN_DISABLE_ALL_SMS=Disable all SMS sending (for test purposes or demos) -MAIN_SMS_SENDMODE=Method to use to send SMS -MAIN_MAIL_SMS_FROM=Default sender phone number for SMS sending +MAIN_DISABLE_ALL_SMS=Onemogućiti slanje SMS (u svrhu testiranja ili demoa) +MAIN_SMS_SENDMODE=Metod za slanje SMS +MAIN_MAIL_SMS_FROM=Podrazumevani broj telefona pošiljaoca za slanje SMS MAIN_MAIL_DEFAULT_FROMTYPE=Default sender email for manual sending (User email or Company email) UserEmail=User email CompanyEmail=Company Email -FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally. +FeatureNotAvailableOnLinux=Mogućnost nije dostupna na Unix-olikim sistemima. Testirajte program za slanje maila lokalno. FixOnTransifex=Fix the translation on the online translation platform of project -SubmitTranslation=If the translation for this language is not complete or you find errors, you can correct this by editing files in directory langs/%s and submit your change to www.transifex.com/dolibarr-association/dolibarr/ +SubmitTranslation=Ako prevod ovog jezika nije kompletan ili ako pronađete greške, možete ih ispraviti editovanjem fajlova u folderu langs/%s i dostaviti svoje ispravke na www.transifex.com/dolibarr-association/dolibarr/ SubmitTranslationENUS=If translation for this language is not complete or you find errors, you can correct this by editing files into directory langs/%s and submit modified files on dolibarr.org/forum or, if you are a developer, with a PR on github.com/Dolibarr/dolibarr -ModuleSetup=Module setup -ModulesSetup=Modules/Application setup -ModuleFamilyBase=System -ModuleFamilyCrm=Customer Relationship Management (CRM) +ModuleSetup=Postavke modula +ModulesSetup=Postavke modula/aplikacije +ModuleFamilyBase=Sistem +ModuleFamilyCrm=Menadžment odnosa sa kupcem (Customer Relationship Management CRM) ModuleFamilySrm=Vendor Relationship Management (VRM) -ModuleFamilyProducts=Product Management (PM) -ModuleFamilyHr=Human Resource Management (HR) -ModuleFamilyProjects=Projects/Collaborative work -ModuleFamilyOther=Other -ModuleFamilyTechnic=Multi-modules tools -ModuleFamilyExperimental=Experimental modules -ModuleFamilyFinancial=Financial Modules (Accounting/Treasury) -ModuleFamilyECM=Electronic Content Management (ECM) +ModuleFamilyProducts=Menadžment proizvoda (Product Management PM) +ModuleFamilyHr=Menadžment ljudskih resursa (Human Resource Management HR) +ModuleFamilyProjects=Projekti/Udruženi poslovi +ModuleFamilyOther=Ostalo +ModuleFamilyTechnic=Alati za više modula +ModuleFamilyExperimental=Eksperimentalni moduli +ModuleFamilyFinancial=Finansijski moduli (knjgovodstvo/blagajna) +ModuleFamilyECM=Menadžment elektronskog sadržaja (Electronic Content Management ECM) ModuleFamilyPortal=Websites and other frontal application ModuleFamilyInterface=Interfejsi sa eksternim sistemima -MenuHandlers=Menu handlers -MenuAdmin=Menu editor -DoNotUseInProduction=Do not use in production -ThisIsProcessToFollow=Upgrade procedure: +MenuHandlers=Rukovaoci menija +MenuAdmin=Uređivač menija +DoNotUseInProduction=Ne koristiti u proizvodnji +ThisIsProcessToFollow=Procedura nadogradnje: ThisIsAlternativeProcessToFollow=This is an alternative setup to process manually: -StepNb=Step %s -FindPackageFromWebSite=Find a package that provides the features you need (for example on the official web site %s). -DownloadPackageFromWebSite=Download package (for example from the official web site %s). -UnpackPackageInDolibarrRoot=Unpack/unzip the packaged files into your Dolibarr server directory: %s +StepNb=Korak %s +FindPackageFromWebSite=Pronađite paket koji obezbeđuje mogućnosti koje su vam potrebne (na primer na zvaničnom web sajtu %s). +DownloadPackageFromWebSite=Preuzmite paket (na primer sa zvaničnog web sajta %s). +UnpackPackageInDolibarrRoot=Raspakujte zapakovane fajlove na vaš Dolibar server folder: %s UnpackPackageInModulesRoot=To deploy/install an external module, you must unpack/unzip the archive file into the server directory dedicated to external modules:
%s -SetupIsReadyForUse=Module deployment is finished. You must however enable and setup the module in your application by going to the page setup modules: %s. -NotExistsDirect=The alternative root directory is not defined to an existing directory.
-InfDirAlt=Since version 3, it is possible to define an alternative root directory. This allows you to store, into a dedicated directory, plug-ins and custom templates.
Just create a directory at the root of Dolibarr (eg: custom).
-InfDirExample=
Then declare it in the file conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
If these lines are commented with "#", to enable them, just uncomment by removing the "#" character. -YouCanSubmitFile=You can upload the .zip file of module package from here: -CurrentVersion=Dolibarr current version -CallUpdatePage=Browse to the page that updates the database structure and data: %s. -LastStableVersion=Latest stable version +SetupIsReadyForUse=Instaliranje modula je završeno. Morate ipak omogućiti i postaviti vrednosti za modul u svojoj aplikaciji tako što ćete otići na stranu za postavku modula: %s. +NotExistsDirect=Alternativni root folder nije definisan u postojećem folderu.
+InfDirAlt=Od verzije 3, moguće je definisati alternativni root folder. Ovo omogućava da sačuvate, u za to namenjen folder, plug-in i prilagođene šablone.
Samo napravite folder na root Dolibarr (npr: prilagodjeno).
+InfDirExample=
Onda ga deklarišite u fajlu conf.php
$dolibarr_main_url_root_alt='/custom'
$dolibarr_main_document_root_alt='/path/of/dolibarr/htdocs/custom'
Ako su ove linije sa "#"na početku reda kao komentar, da bi ih omogućili samo uklonite oznaku za komentar karakter "#". +YouCanSubmitFile=Možete uploadovati .zip fajl modula paketa odavde: +CurrentVersion=Dolibarr trenutna verzija +CallUpdatePage=Idite na stranu koja nadograđuje strukturu baze podataka i podatke: %s. +LastStableVersion=Poslednja stabilna verzija LastActivationDate=Latest activation date LastActivationAuthor=Latest activation author LastActivationIP=Latest activation IP @@ -360,72 +360,72 @@ UpdateServerOffline=Update server offline WithCounter=Manage a counter GenericMaskCodes=You may enter any numbering mask. In this mask, the following tags can be used:
{000000} corresponds to a number which will be incremented on each %s. Enter as many zeros as the desired length of the counter. The counter will be completed by zeros from the left in order to have as many zeros as the mask.
{000000+000} same as the previous one but an offset corresponding to the number to the right of the + sign is applied starting on the first %s.
{000000@x} same as the previous one but the counter is reset to zero when month x is reached (x between 1 and 12, or 0 to use the early months of fiscal year defined in your configuration, or 99 to reset to zero every month). If this option is used and x is 2 or higher, then the sequence {yy}{mm} or {yyyy}{mm} is also required.
{dd} day (01 to 31).
{mm} month (01 to 12).
{yy}, {yyyy} or {y} year over 2, 4 or 1 numbers.
GenericMaskCodes2={cccc} the client code on n characters
{cccc000} the client code on n characters is followed by a counter dedicated to the customer. This counter dedicated to customer is reset at same time as the global counter.
{tttt} The code of third party type on n characters (see menu Home - Setup - Dictionary - Types of third parties). If you add this tag, the counter will be different for each type of third party.
-GenericMaskCodes3=All other characters in the mask will remain intact.
Spaces are not allowed.
+GenericMaskCodes3=Svi ostali karakteri u masci će ostati netaknuti.
Razmaci nisu dozvoljeni.
GenericMaskCodes3EAN=All other characters in the mask will remain intact (except * or ? in 13th position in EAN13).
Spaces are not allowed.
In EAN13, the last character after the last } in 13th position should be * or ? . It will be replaced by the calculated key.
-GenericMaskCodes4a=Example on the 99th %s of the third party TheCompany, with date 2007-01-31:
-GenericMaskCodes4b=Example on third party created on 2007-03-01:
-GenericMaskCodes4c=Example on product created on 2007-03-01:
-GenericMaskCodes5=ABC{yy}{mm}-{000000} will give ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX will give 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} will give IN0701-0099-A if the type of company is 'Responsable Inscripto' with code for type that is 'A_RI' -GenericNumRefModelDesc=Returns a customizable number according to a defined mask. -ServerAvailableOnIPOrPort=Server is available at address %s on port %s -ServerNotAvailableOnIPOrPort=Server is not available at address %s on port %s -DoTestServerAvailability=Test server connectivity -DoTestSend=Test sending -DoTestSendHTML=Test sending HTML +GenericMaskCodes4a=Primer na 99. %sTreće strane TheCompany, sa datumom 2007-01-31:
+GenericMaskCodes4b=Primer na Trećoj strani napravljen 2007-03-01:
+GenericMaskCodes4c=Primer na Proizvodu napravljen 2007-03-01:
+GenericMaskCodes5=ABC{yy}{mm}-{000000} će dati ABC0701-000099
{0000+100@1}-ZZZ/{dd}/XXX će dati 0199-ZZZ/31/XXX
IN{yy}{mm}-{0000}-{t} će dati IN0701-0099-A ako je tip kompanitje 'Registrovana za porez' sa kodom za tip koji je 'A_RI' +GenericNumRefModelDesc=Vraća prilagođen broj prema definisanoj masci. +ServerAvailableOnIPOrPort=Server je dostupan na adresi %s na portu %s +ServerNotAvailableOnIPOrPort=Server nije dostupan na adresi %s na portu%s +DoTestServerAvailability=Testiranje povezanosti servera +DoTestSend=Test slanja +DoTestSendHTML=Test slanja HTML ErrorCantUseRazIfNoYearInMask=Error, can't use option @ to reset counter each year if sequence {yy} or {yyyy} is not in mask. -ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Error, can't use option @ if sequence {yy}{mm} or {yyyy}{mm} is not in mask. -UMask=UMask parameter for new files on Unix/Linux/BSD/Mac file system. -UMaskExplanation=This parameter allow you to define permissions set by default on files created by Dolibarr on server (during upload for example).
It must be the octal value (for example, 0666 means read and write for everyone).
This parameter is useless on a Windows server. -SeeWikiForAllTeam=Take a look at the Wiki page for a list of contributors and their organization -UseACacheDelay= Delay for caching export response in seconds (0 or empty for no cache) -DisableLinkToHelpCenter=Hide the link "Need help or support" on the login page -DisableLinkToHelp=Hide the link to the online help "%s" -AddCRIfTooLong=There is no automatic text wrapping, text that is too long will not display on documents. Please add carriage returns in the text area if needed. -ConfirmPurge=Are you sure you want to execute this purge?
This will permanently delete all your data files with no way to restore them (ECM files, attached files...). -MinLength=Minimum length -LanguageFilesCachedIntoShmopSharedMemory=Files .lang loaded in shared memory +ErrorCantUseRazInStartedYearIfNoYearMonthInMask=Greška, ne možete koristiti opciju @ ako sekvenca {yy}{mm} ili {yyyy}{mm} nije unutar maske. +UMask=UMask parameter za nove fajlove na Unix/Linux/BSD/Mac fajl sistemima. +UMaskExplanation=Ovaj parametar omogućava da definišete dozvole koje se podrazumevano postavljaju na fajlovima koje pravi Dolibarr na serveru (tokom uploada na primer).
Mora biti oktalna vrednost (na primer, 0666 znači čitaj i piši za sve).
Ovaj parametar je beskoristan na Windows serveru. +SeeWikiForAllTeam=Pogledajte na Wiki strani listu saradnika i njihove organizacije +UseACacheDelay= Odlaganje za keširanje eksport odgovora u sekundama (0 ili prazno da nema keša) +DisableLinkToHelpCenter=Sakriti link "Potrebna pomoć ili podrška" na login strani +DisableLinkToHelp=Sakriti link za online pomoć "%s" +AddCRIfTooLong=Nema automatskog preloma teksta, tekst koji je previše dugačak se neće prikazati na dokumentima. Molimo dodajte prelaz u novi red teksta ako je potrebno. +ConfirmPurge=Da li ste sigurni da želite da izvršite ovo čišćenje?
Ovo će trajno obrisati sve data fajlove i neće biti više načina da ih vratite (ECM fajlovi, prikačeni fajlovi...). +MinLength=Minimalna dužina +LanguageFilesCachedIntoShmopSharedMemory=Fajlovi .lang učitani u deljenu memoriju LanguageFile=Language file -ExamplesWithCurrentSetup=Examples with current configuration -ListOfDirectories=List of OpenDocument templates directories -ListOfDirectoriesForModelGenODT=Lista foldera sa templejtima u OpenDocument formatu.

Staviti apsolutnu putanju foldera.
Svaki folder u listi mora biti na novoj liniji.
Da biste dodali folder GED modulu, ubacite ga ovde DOL_DATA_ROOT/ecm/ime_vaseg_foldera.

Fajlovi u tim folderima moraju imati ekstenziju .odt ili .ods. -NumberOfModelFilesFound=Number of ODT/ODS template files found in these directories -ExampleOfDirectoriesForModelGen=Examples of syntax:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir -FollowingSubstitutionKeysCanBeUsed=
To know how to create your odt document templates, before storing them in those directories, read wiki documentation: +ExamplesWithCurrentSetup=Primer sa trenutnom konfiguracijom +ListOfDirectories=Lista foldera OpenDocument šablona +ListOfDirectoriesForModelGenODT=Lista foldera sa šablonima u OpenDocument formatu.

Staviti apsolutnu putanju foldera.
Svaki folder u listi mora biti na novoj liniji.
Da biste dodali folder GED modulu, ubacite ga ovde DOL_DATA_ROOT/ecm/ime_vaseg_foldera.

Fajlovi u tim folderima moraju imati ekstenziju .odt ili .ods. +NumberOfModelFilesFound=Broj ODT/ODS šablona pronađenih u ovim folderima +ExampleOfDirectoriesForModelGen=Primer sintakse:
c:\\myapp\\mydocumentdir\\mysubdir
/home/myapp/mydocumentdir/mysubdir
DOL_DATA_ROOT/ecm/ecmdir +FollowingSubstitutionKeysCanBeUsed=
Da bi znali kako da kreirate vaše šablone odt dokumenata, pre čuvanja u ovim folderima, pročitajte Wiki dokumentaciju: FullListOnOnlineDocumentation=http://wiki.dolibarr.org/index.php/Create_an_ODT_document_template -FirstnameNamePosition=Position of Name/Lastname -DescWeather=The following images will be shown on the dashboard when the number of late actions reach the following values: -KeyForWebServicesAccess=Key to use Web Services (parameter "dolibarrkey" in webservices) -TestSubmitForm=Input test form -ThisForceAlsoTheme=Using this menu manager will also use its own theme whatever the user choice. Also this menu manager specialized for smartphones does not work on all smartphone. Use another menu manager if you experience problems with yours. -ThemeDir=Skins directory -ConnectionTimeout=Connection timeout -ResponseTimeout=Response timeout -SmsTestMessage=Test message from __PHONEFROM__ to __PHONETO__ +FirstnameNamePosition=Pozicija Imena/Prezimena +DescWeather=Sledeće slike će biti prikazane na komandnoj tabli kada broj kasnih akcija dostigne sledeću vrednost: +KeyForWebServicesAccess=Ključ za korišćenje Web Servisa (parameter "dolibarrkey" unutar webservices) +TestSubmitForm=Forma testa unosa +ThisForceAlsoTheme=Korišćenjem ovog menadžera menija će se koristiti i njegova tema bez obzira na izbor korisnika. Takođe ovaj menadžer menija specijalizovan za mobilne telefone ne radi za sve modele mobilnih telefona. Koristite drugi menadžer menija ako iskusite problema sa vašim. +ThemeDir=Folder skinova +ConnectionTimeout=Isteklo vreme predviđeno za vezu +ResponseTimeout=Isteklo vreme predviđeno za odgovor +SmsTestMessage=Test poruka od __PHONEFROM__ za __PHONETO__ ModuleMustBeEnabledFirst=Modul %s mora biti aktiviran da biste koristili ovu funkcionalnost. -SecurityToken=Key to secure URLs -NoSmsEngine=No SMS sender manager available. A SMS sender manager is not installed with the default distribution because they depend on an external vendor, but you can find some on %s +SecurityToken=Ključ za sigurni URL +NoSmsEngine=Ne postoji dostupan menadžer slanja SMS. Menadžer slanja SMS nije instaliran sa podrazumevanom distribucijom jer zavise od spoljnog dobavljača, ali možete neke pronaći na %s PDF=PDF -PDFDesc=Global options for PDF generation +PDFDesc=Globalne opcije za generisanje PDF PDFOtherDesc=PDF Option specific to some modules -PDFAddressForging=Rules for address section -HideAnyVATInformationOnPDF=Hide all information related to Sales Tax / VAT +PDFAddressForging=Pravila za sekciju adresa +HideAnyVATInformationOnPDF=Sakriti sve informacije u vezi sa Porezom na promet/PDV PDFRulesForSalesTax=Rules for Sales Tax / VAT PDFLocaltax=Rules for %s HideLocalTaxOnPDF=Hide %s rate in column Sale Tax / VAT -HideDescOnPDF=Hide products description -HideRefOnPDF=Hide products ref. -HideDetailsOnPDF=Hide product lines details +HideDescOnPDF=Sakriti opis proizvoda +HideRefOnPDF=Sakriti reference proizvoda +HideDetailsOnPDF=Sakriti detalje linije proizvoda PlaceCustomerAddressToIsoLocation=Use french standard position (La Poste) for customer address position -Library=Library -UrlGenerationParameters=Parameters to secure URLs -SecurityTokenIsUnique=Use a unique securekey parameter for each URL -EnterRefToBuildUrl=Enter reference for object %s -GetSecuredUrl=Get calculated URL -ButtonHideUnauthorized=Hide unauthorized action buttons also for internal users (just greyed otherwise) -OldVATRates=Old VAT rate -NewVATRates=New VAT rate -PriceBaseTypeToChange=Modify on prices with base reference value defined on -MassConvert=Launch bulk conversion +Library=Biblioteka +UrlGenerationParameters=Parametri za osiguranje URL-ova +SecurityTokenIsUnique=Koristiti jedinstveni securekey parametar za svaki URL +EnterRefToBuildUrl=Uneti referencu za objekat %s +GetSecuredUrl=Dobijanje proračunatog URL +ButtonHideUnauthorized=Sakriti neautorizovane dugmiće takođe i za interne korisnike (inače samo zatamnjeni) +OldVATRates=Stara stopa PDV +NewVATRates=Nova stopa PDV +PriceBaseTypeToChange=Promeni na cenama sa definisanim osnovnim referentnim vrednostima +MassConvert=Pokrenuti grupnu konverziju PriceFormatInCurrentLanguage=Price Format In Current Language String=String String1Line=String (1 line) @@ -434,19 +434,19 @@ TextLongNLines=Long text (n lines) HtmlText=Html text Int=Integer Float=Float -DateAndTime=Date and hour -Unique=Unique -Boolean=Boolean (one checkbox) -ExtrafieldPhone = Phone -ExtrafieldPrice = Price +DateAndTime=Datum i vreme +Unique=Jedinstveno +Boolean=Boolean (jedan čekboks) +ExtrafieldPhone = Telefon +ExtrafieldPrice = Cena ExtrafieldMail = Email ExtrafieldUrl = Url -ExtrafieldSelect = Select list -ExtrafieldSelectList = Select from table -ExtrafieldSeparator=Separator (not a field) +ExtrafieldSelect = Odabir sa liste +ExtrafieldSelectList = Odabir iz tabele +ExtrafieldSeparator=Odvajač (nije polje) ExtrafieldPassword=Password -ExtrafieldRadio=Radio buttons (one choice only) -ExtrafieldCheckBox=Checkboxes +ExtrafieldRadio=Radio dugmad (samo jedan izbor) +ExtrafieldCheckBox=Čekboksevi ExtrafieldCheckBoxFromList=Checkboxes from table ExtrafieldLink=Link to an object ComputedFormula=Computed field @@ -455,23 +455,23 @@ Computedpersistent=Store computed field ComputedpersistentDesc=Computed extra fields will be stored in the database, however, the value will only be recalculated when the object of this field is changed. If the computed field depends on other objects or global data this value might be wrong!! ExtrafieldParamHelpPassword=Leaving this field blank means this value will be stored without encryption (field must be only hidden with star on screen).
Set 'auto' to use the default encryption rule to save password into database (then value read will be the hash only, no way to retrieve original value) ExtrafieldParamHelpselect=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
code3,value3
...

In order to have the list depending on another complementary attribute list:
1,value1|options_parent_list_code:parent_key
2,value2|options_parent_list_code:parent_key

In order to have the list depending on another list:
1,value1|parent_list_code:parent_key
2,value2|parent_list_code:parent_key -ExtrafieldParamHelpcheckbox=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... -ExtrafieldParamHelpradio=List of values must be lines with format key,value (where key can't be '0')

for example:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpcheckbox=Lista vrednosti moraju biti linije sa formatom ključ,vrednost (gde ključ ne može biti '0')

na primer:
1,value1
2,value2
3,value3
... +ExtrafieldParamHelpradio=Lista vrednosti moraju biti linije sa formatom ključ,vrednost (gde ključ ne može biti '0')

na primer:
1,value1
2,value2
3,value3
... ExtrafieldParamHelpsellist=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

- id_field is necessarly a primary int key
- filtersql is a SQL condition. It can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter which is the current id of current object
To use a SELECT into the filter use the keyword $SEL$ to bypass anti-injection protection.
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelpchkbxlst=List of values comes from a table
Syntax: table_name:label_field:id_field::filtersql
Example: c_typent:libelle:id::filtersql

filter can be a simple test (eg active=1) to display only active value
You can also use $ID$ in filter witch is the current id of current object
To do a SELECT in filter use $SEL$
if you want to filter on extrafields use syntax extra.fieldcode=... (where field code is the code of extrafield)

In order to have the list depending on another complementary attribute list:
c_typent:libelle:id:options_parent_list_code|parent_column:filter

In order to have the list depending on another list:
c_typent:libelle:id:parent_list_code|parent_column:filter ExtrafieldParamHelplink=Parameters must be ObjectName:Classpath
Syntax: ObjectName:Classpath ExtrafieldParamHelpSeparator=Keep empty for a simple separator
Set this to 1 for a collapsing separator (open by default for new session, then status is kept for each user session)
Set this to 2 for a collapsing separator (collapsed by default for new session, then status is kept fore each user session) -LibraryToBuildPDF=Library used for PDF generation -LocalTaxDesc=Some countries may apply two or three taxes on each invoice line. If this is the case, choose the type for the second and third tax and its rate. Possible type are:
1: local tax apply on products and services without vat (localtax is calculated on amount without tax)
2: local tax apply on products and services including vat (localtax is calculated on amount + main tax)
3: local tax apply on products without vat (localtax is calculated on amount without tax)
4: local tax apply on products including vat (localtax is calculated on amount + main vat)
5: local tax apply on services without vat (localtax is calculated on amount without tax)
6: local tax apply on services including vat (localtax is calculated on amount + tax) +LibraryToBuildPDF=Biblioteka koja se koristi za generisanje PDF +LocalTaxDesc=Neke zemlje mogu koristiti dve ili više poreske stope za svaku liniju računa. Ako je ovo slučaj, odaberite tip za drugi i treći porez i njegovu stopu. Mogućnosti su:
1: lokalna stopa poreza se postavlja na proizvode i usluge bez PDV (lokalni porez se računa na iznos bez poreza)
2: lokalni porez se postavlja na proizvode i usluge uključujući PDV (lokalni porez se računa na sumu + glavni porez)
3: lokalni porez se postavlja na proizvode bez PDV (lokalni porez se računa na sumu bez poreza)
4: lokalni porez se postavlja na proizvode uključujući PDV (lokalni porez se računa kao suma + glavni porez)
5: lokalni porez se postavlja na usluge bez PDV (lokalni porez se računa kao suma bez poreza)
6: lokalni porez se postavlja na usluge uključujući PDV (lokalni porez se računa kao suma + porez) SMS=SMS -LinkToTestClickToDial=Enter a phone number to call to show a link to test the ClickToDial url for user %s -RefreshPhoneLink=Refresh link -LinkToTest=Clickable link generated for user %s (click phone number to test) -KeepEmptyToUseDefault=Keep empty to use default value +LinkToTestClickToDial=Unesite broj telefona koji se poziva da bi se pokazao link za testiranje url-a ClickToDial za korisnika %s +RefreshPhoneLink=Osvežiti link +LinkToTest=Link koji se može kliknuti je generisan za korisnika %s (kliknuti broj telefona za testiranje) +KeepEmptyToUseDefault=Zadržati prazno da bi se koristila podrazumevana vrednost KeepThisEmptyInMostCases=In most cases, you can keep this field empy. -DefaultLink=Default link +DefaultLink=Podrazumevana vrednost SetAsDefault=Set as default -ValueOverwrittenByUserSetup=Warning, this value may be overwritten by user specific setup (each user can set his own clicktodial url) +ValueOverwrittenByUserSetup=Upozorenje, ova vrednost može biti prepisana od strane korisnika specifičnom postavkom (svaki korisnik može postaviti svoj ClickToDial url) ExternalModule=External module InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -536,152 +536,152 @@ DAV_ALLOW_PUBLIC_DIRTooltip=The generic public directory is a WebDAV directory a DAV_ALLOW_ECM_DIR=Enable the DMS/ECM private directory (root directory of the DMS/ECM module - login required) DAV_ALLOW_ECM_DIRTooltip=The root directory where all files are manually uploaded when using the DMS/ECM module. Similarly as access from the web interface, you will need a valid login/password with adecuate permissions to access it. # Modules -Module0Name=Korisnici & Grupe -Module0Desc=Users / Employees and Groups management -Module1Name=Third Parties -Module1Desc=Companies and contacts management (customers, prospects...) -Module2Name=Commercial -Module2Desc=Commercial management -Module10Name=Accounting (simplified) -Module10Desc=Simple accounting reports (journals, turnover) based on database content. Does not use any ledger table. -Module20Name=Proposals -Module20Desc=Commercial proposal management -Module22Name=Mass Emailings -Module22Desc=Manage bulk emailing -Module23Name=Energy -Module23Desc=Monitoring the consumption of energies -Module25Name=Sales Orders -Module25Desc=Sales order management -Module30Name=Invoices -Module30Desc=Management of invoices and credit notes for customers. Management of invoices and credit notes for suppliers -Module40Name=Vendors -Module40Desc=Vendors and purchase management (purchase orders and billing of supplier invoices) -Module42Name=Debug Logs -Module42Desc=Logging facilities (file, syslog, ...). Such logs are for technical/debug purposes. +Module0Name=Korisnici i grupe +Module0Desc=Menadžment korisnika/zaposlenih i grupa +Module1Name=Treće strane +Module1Desc=Menadžment kompanija i kontakta (kupci, prospekti...) +Module2Name=Trgovina +Module2Desc=Menadžment trgovine +Module10Name=Knjigovodstvo (pojednostavljeno) +Module10Desc=Jednostavni knjigovodstveni izveštaji (dnevnik, promet) zasnovano na sadržaju baze. Ne koristi nikakve knjgovodstvene knjige +Module20Name=Ponude +Module20Desc=Menadžment trgovačkih ponuda +Module22Name=Masovni email +Module22Desc=Menadžment grupnog slanja email-ova +Module23Name=Energija +Module23Desc=Monitoring potrošnje energije +Module25Name=Potvrda narudžbina +Module25Desc=Menadžment potvrda narudžbina +Module30Name=Računi +Module30Desc=Menadžment računa i avansnih računa za korisnike. Menadžment računa i avansnih računa za dobavljače +Module40Name=Dobavljači +Module40Desc=Dobavljači i menadžment kupovine (narudžbine za kupovinu i računi dobavljača) +Module42Name=Debug logovi +Module42Desc=Logovanje strukutra (file, syslog...) Ovi logovi su u svrgu tehničke podrške/debug Module43Name=Debug Bar Module43Desc=A tool for developper adding a debug bar in your browser. -Module49Name=Editors -Module49Desc=Editor management -Module50Name=Products -Module50Desc=Management of Products -Module51Name=Mass mailings -Module51Desc=Mass paper mailing management -Module52Name=Stocks -Module52Desc=Stock management -Module53Name=Services -Module53Desc=Management of Services -Module54Name=Contracts/Subscriptions -Module54Desc=Management of contracts (services or recurring subscriptions) -Module55Name=Barcodes -Module55Desc=Barcode or QR code management -Module56Name=Payment by credit transfer -Module56Desc=Management of payment of suppliers by Credit Transfer orders. It includes generation of SEPA file for European countries. -Module57Name=Payments by Direct Debit -Module57Desc=Management of Direct Debit orders. It includes generation of SEPA file for European countries. +Module49Name=Urednici +Module49Desc=Menadžment urednika +Module50Name=Proizvodi +Module50Desc=Menadžment proizvoda +Module51Name=Masovna pošta +Module51Desc=Menadžment masovne papirne pošte +Module52Name=Skladište +Module52Desc=Menadžment skladišta +Module53Name=Usluge +Module53Desc=Menadžment usluga +Module54Name=Ugovori/Pretplate +Module54Desc=Menadžment ugovora (usluga ili ponavljajuće pretplate) +Module55Name=Bar kodovi +Module55Desc=Menadžment bar kodova ili QR kodova +Module56Name=Plaćanje transferom kredita +Module56Desc=Menadžment plaćanja dobavljača prenosom kredita. Uključuje generisanje SEPA fajla za Evropske zemlje. +Module57Name=Plaćanje direktnim debit zaduživanjem +Module57Desc=Menadžment porudžbina direktnim debi zaduživanjem. Uključuje generisanje SEPA fajla za Evropske zemlje. Module58Name=ClickToDial -Module58Desc=Integration of a ClickToDial system (Asterisk, ...) +Module58Desc=Integracija ClickToDial sistema (Asterisk, ...) Module60Name=Stickers Module60Desc=Management of stickers -Module70Name=Interventions -Module70Desc=Intervention management -Module75Name=Expense and trip notes -Module75Desc=Expense and trip notes management -Module80Name=Shipments -Module80Desc=Shipments and delivery note management -Module85Name=Banks & Cash -Module85Desc=Management of bank or cash accounts -Module100Name=External Site -Module100Desc=Add a link to an external website as a main menu icon. Website is shown in a frame under the top menu. -Module105Name=Mailman and SPIP -Module105Desc=Mailman or SPIP interface for member module +Module70Name=Intervencije +Module70Desc=Menadžment intervencija +Module75Name=Troškovi i beleške puta +Module75Desc=Menadžment troškova i beleški puta +Module80Name=Pošiljke +Module80Desc=Menadžment pošiljki i otpremnica +Module85Name=Banke i keš blagajna +Module85Desc=Menadžment računa banaka i keš blagajne +Module100Name=Spoljni sajt +Module100Desc=Dodati link za spoljni websajt kao glavnu ikonu menija. Websajt je prikazan kao frejm ispod gornjeg menija. +Module105Name=Poštar i SPIP +Module105Desc=Poštar ili SPIP interfejs za korisnički modul Module200Name=LDAP -Module200Desc=LDAP directory synchronization +Module200Desc=LDAP sinhronizacija foldera Module210Name=PostNuke -Module210Desc=PostNuke integration -Module240Name=Data exports -Module240Desc=Tool to export Dolibarr data (with assistance) -Module250Name=Data imports -Module250Desc=Tool to import data into Dolibarr (with assistance) -Module310Name=Members -Module310Desc=Foundation members management +Module210Desc=PostNuke integracija +Module240Name=Izvoz podataka +Module240Desc=Alat za izvoz Dolibarr podataka (sa asistencijom) +Module250Name=Uvoz podataka +Module250Desc=Alat za uvoz podataka u Dolibarr (sa asistencijom) +Module310Name=Članovi +Module310Desc=Menadžment članova fondacije Module320Name=RSS Feed -Module320Desc=Add a RSS feed to Dolibarr pages -Module330Name=Bookmarks & Shortcuts -Module330Desc=Create shortcuts, always accessible, to the internal or external pages to which you frequently access -Module400Name=Projects or Leads -Module400Desc=Management of projects, leads/opportunities and/or tasks. You can also assign any element (invoice, order, proposal, intervention, ...) to a project and get a transversal view from the project view. -Module410Name=Webcalendar -Module410Desc=Webcalendar integration -Module500Name=Taxes & Special Expenses -Module500Desc=Management of other expenses (sales taxes, social or fiscal taxes, dividends, ...) +Module320Desc=Dodati RSS feed u Dolibarr strane +Module330Name=Obeleživači i prečice +Module330Desc=Napravite prečice, uvek dostupne, za unutrašnje ili spoljne strane koje često koristite +Module400Name=Projekti ili tragovi +Module400Desc=Menadžment projekata, tragova/mogućnosti i/ili zadataka. Možete takođe zadati bilo koji element (račun, narudžbina, ponuda, intervencija...) u projekat i dobiti transverzalni pregled iz prikaza za projekte +Module410Name=Web kalendar +Module410Desc=Integracija web kalendara +Module500Name=Porezi i specijalni troškovi +Module500Desc=Menadžment drugih troškova (prodajni porez, socijalni ili fiskalni porez, dividende...) Module510Name=Plate Module510Desc=Record and track employee payments Module520Name=Krediti Module520Desc=Management of loans -Module600Name=Notifications on business event -Module600Desc=Send email notifications triggered by a business event: per user (setup defined on each user), per third-party contacts (setup defined on each third party) or by specific emails +Module600Name=Obaveštenje u slučaju poslovnog događaja +Module600Desc=Poslati email obaveštenje u slučaju poslovnog događaja: prema korisniku (postavke za svakog korisnika), prema kontaktima treće strane (postavke za svaku treću stranu) ili prema specifičnim emailovima Module600Long=Note that this module sends emails in real-time when a specific business event occurs. If you are looking for a feature to send email reminders for agenda events, go into the setup of module Agenda. Module610Name=Product Variants Module610Desc=Creation of product variants (color, size etc.) -Module700Name=Donations -Module700Desc=Donation management +Module700Name=Donacije +Module700Desc=Menadžment donacija Module770Name=Expense Reports Module770Desc=Manage expense reports claims (transportation, meal, ...) Module1120Name=Vendor Commercial Proposals Module1120Desc=Request vendor commercial proposal and prices Module1200Name=Mantis -Module1200Desc=Mantis integration +Module1200Desc=Mantis integracija Module1520Name=Document Generation Module1520Desc=Mass email document generation -Module1780Name=Tags/Categories -Module1780Desc=Create tags/category (products, customers, suppliers, contacts or members) +Module1780Name=Tagovi/kategorije +Module1780Desc=Napravite tagove/kategorije (proizvodi, kupci, dobavljači, kontakti ili članovi) Module2000Name=WYSIWYG editor -Module2000Desc=Allow text fields to be edited/formatted using CKEditor (html) +Module2000Desc=Uredite/formatirajte tekst polja pomoću CKEditor (html) Module2200Name=Dynamic Prices Module2200Desc=Use maths expressions for auto-generation of prices -Module2300Name=Planirane operacije -Module2300Desc=Scheduled jobs management (alias cron or chrono table) -Module2400Name=Events/Agenda -Module2400Desc=Track events. Log automatic events for tracking purposes or record manual events or meetings. This is the principal module for good Customer or Vendor Relationship Management. +Module2300Name=Planirani poslovi +Module2300Desc=Menadžment planiranih poslova (alias cron ili chrono tabela) +Module2400Name=Događaji/agenda +Module2400Desc=Pratite događaje. Logovanje automatskih događaja za praćenje smisla ili beleženje ručnih događaja ili sastanaka. Ovo je glavni modul za Menadžment Odnosa sa Kupcima ili Dobavljačima Module2500Name=DMS / ECM -Module2500Desc=Document Management System / Electronic Content Management. Automatic organization of your generated or stored documents. Share them when you need. -Module2600Name=API/Web services (SOAP server) -Module2600Desc=Enable the Dolibarr SOAP server providing API services +Module2500Desc=Sistem menadžmenta dokumenata DMS / Menadžment elektronskog sadržaja ECM. Automatska organizacija vaših generisanih i sačuvanih dokuemenata. Delite ih kada je potrebno. +Module2600Name=API/Web servisi (SOAP server) +Module2600Desc=Omogućiti da Dolibarr SOAP server pruža API servis Module2610Name=API/Web services (REST server) Module2610Desc=Enable the Dolibarr REST server providing API services Module2660Name=Poziv WebServices (SOAP client) Module2660Desc=Enable the Dolibarr web services client (Can be used to push data/requests to external servers. Only Purchase orders are currently supported.) Module2700Name=Gravatar -Module2700Desc=Use online Gravatar service (www.gravatar.com) to show photo of users/members (found with their emails). Needs Internet access -Module2800Desc=FTP Client +Module2700Desc=Koristiti online Gravatar servis (www.gravatar.com) da bi se pokazala slika korisnika/člana (prema emailu). Potreban pristup internetu +Module2800Desc=FTP Klijent Module2900Name=GeoIPMaxmind -Module2900Desc=GeoIP Maxmind conversions capabilities +Module2900Desc=GeoIP Maxmind mogućnosti konverzije Module3200Name=Unalterable Archives Module3200Desc=Enable an unalterable log of business events. Events are archived in real-time. The log is a read-only table of chained events that can be exported. This module may be mandatory for some countries. Module3400Name=Social Networks Module3400Desc=Enable Social Networks fields into third parties and addresses (skype, twitter, facebook, ...). Module4000Name=HRM Module4000Desc=Human resources management (management of department, employee contracts and feelings) -Module5000Name=Multi-company -Module5000Desc=Allows you to manage multiple companies +Module5000Name=Više kompanija +Module5000Desc=Omogućava da upravljate sa više kompanija Module6000Name=Inter-modules Workflow Module6000Desc=Workflow management between different modules (automatic creation of object and/or automatic status change) Module10000Name=Websites Module10000Desc=Create websites (public) with a WYSIWYG editor. This is a webmaster or developer oriented CMS (it is better to know HTML and CSS language). Just setup your web server (Apache, Nginx, ...) to point to the dedicated Dolibarr directory to have it online on the internet with your own domain name. -Module20000Name=Leave Request Management -Module20000Desc=Define and track employee leave requests +Module20000Name=Menadžment zahteva za odmor +Module20000Desc=Definisati i pratiti zahteve za odmor zaposlenih Module39000Name=Product Lots Module39000Desc=Lots, serial numbers, eat-by/sell-by date management for products Module40000Name=Multicurrency Module40000Desc=Use alternative currencies in prices and documents Module50000Name=PayBox -Module50000Desc=Offer customers a PayBox online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50000Desc=Ponudite kupcijam PayBox online stranu za plaćanje (kreditne/debitne kartice). Ovo može biti korišćeno da bi se dozvolilo kupcijam da prave ad-hok plaćanja ili plaćanja prema specifičnim Dolibarr objektima (računi, porudžbine i sl...) Module50100Name=POS SimplePOS -Module50100Desc=Point of Sale module SimplePOS (simple POS). +Module50100Desc=Point of Sale modul SimplePOS (jednostavni POS). Module50150Name=POS TakePOS Module50150Desc=Point of Sale module TakePOS (touchscreen POS, for shops, bars or restaurants). Module50200Name=Paypal -Module50200Desc=Offer customers a PayPal online payment page (PayPal account or credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) +Module50200Desc=Ponudite kupcima stranu za PayPal online plaćanje (PayPal račun ili kreditna/debitna kartica). Ovo može biti korišćeno da dozvolite kupcima da prave ad-hok plaćanja ili plaćanja prema specijalnim Dolibarr objektima (račun, narudžbina i sl...) Module50300Name=Stripe Module50300Desc=Offer customers a Stripe online payment page (credit/debit cards). This can be used to allow your customers to make ad-hoc payments or payments related to a specific Dolibarr object (invoice, order etc...) Module50400Name=Accounting (double entry) @@ -690,33 +690,33 @@ Module54000Name=PrintIPP Module54000Desc=Direct print (without opening the documents) using Cups IPP interface (Printer must be visible from server, and CUPS must be installed on server). Module55000Name=Anketa ili Glasanje Module55000Desc=Create online polls, surveys or votes (like Doodle, Studs, RDVz etc...) -Module59000Name=Margins -Module59000Desc=Module to follow margins -Module60000Name=Commissions -Module60000Desc=Module to manage commissions +Module59000Name=Marže +Module59000Desc=Modul za praćenje marži +Module60000Name=Provizije +Module60000Desc=Modul za praćenje provizija Module62000Name=Incoterms Module62000Desc=Add features to manage Incoterms Module63000Name=Resursi Module63000Desc=Manage resources (printers, cars, rooms, ...) for allocating to events -Permission11=Read customer invoices -Permission12=Create/modify customer invoices -Permission13=Invalidate customer invoices -Permission14=Validate customer invoices -Permission15=Send customer invoices by email -Permission16=Create payments for customer invoices -Permission19=Delete customer invoices -Permission21=Read commercial proposals -Permission22=Create/modify commercial proposals -Permission24=Validate commercial proposals -Permission25=Send commercial proposals -Permission26=Close commercial proposals -Permission27=Delete commercial proposals -Permission28=Export commercial proposals -Permission31=Read products -Permission32=Create/modify products -Permission34=Delete products -Permission36=See/manage hidden products -Permission38=Export products +Permission11=Pregled računa za kupce +Permission12=Napravi/promeni račun za kupca +Permission13=Poništi račun za kupca +Permission14=Potvrdi račun za kupca +Permission15=Slanje računa za kupca email-om +Permission16=Napravi plaćanje za račun kupca +Permission19=Obriši račune za kupce +Permission21=Pregled trgovačkih ponuda +Permission22=Napravi/promeni trgovačke ponude +Permission24=Potvrdi trgovačke ponude +Permission25=Pošalji trgovačke ponude +Permission26=Zatvori trgovačke ponude +Permission27=Obriši trgovačke ponude +Permission28=Izvezi trgovačke ponude +Permission31=Pregled proizvoda +Permission32=Napravi/promeni proizvode +Permission34=Obriši proizvode +Permission36=Pregledaj/uredi skrivene proizvode +Permission38=Izvoz proizvoda Permission39=Ignore minimum price Permission41=Read projects and tasks (shared projects and projects of which I am a contact). Permission42=Create/modify projects (shared projects and projects of which I am a contact). Can also assign users to projects and tasks @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=At end of month -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=Offset AlwaysActive=Always active Upgrade=Upgrade @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=Background color TopMenuBackgroundColor=Background color for Top menu -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Background color for Left menu BackgroundTableTitleColor=Pozadinska boja za naslovnu liniju tabela BackgroundTableTitleTextColor=Text color for Table title line @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/sr_RS/banks.lang b/htdocs/langs/sr_RS/banks.lang index 0279c350ad4..515f8c32fd1 100644 --- a/htdocs/langs/sr_RS/banks.lang +++ b/htdocs/langs/sr_RS/banks.lang @@ -39,7 +39,7 @@ StandingOrders=Direct debit orders StandingOrder=Direct debit order PaymentByDirectDebit=Payment by direct debit PaymentByBankTransfers=Payments by credit transfer -PaymentByBankTransfer=Payment by credit transfer +PaymentByBankTransfer=Plaćanje transferom kredita AccountStatement=Izvod AccountStatementShort=Izvod AccountStatements=Izvodi @@ -95,11 +95,11 @@ LineRecord=Transakcija AddBankRecord=Add entry AddBankRecordLong=Add entry manually Conciliated=Reconciled -ConciliatedBy=Poravnjaj sa +ReConciliedBy=Poravnjaj sa DateConciliating=Datum poravnanja BankLineConciliated=Entry reconciled with bank receipt -Reconciled=Reconciled -NotReconciled=Not reconciled +BankLineReconciled=Reconciled +BankLineNotReconciled=Not reconciled CustomerInvoicePayment=Uplata kupca SupplierInvoicePayment=Vendor payment SubscriptionPayment=Uplata pretplate @@ -172,8 +172,8 @@ SEPAMandate=SEPA mandate YourSEPAMandate=Your SEPA mandate FindYourSEPAMandate=This is your SEPA mandate to authorize our company to make direct debit order to your bank. Return it signed (scan of the signed document) or send it by mail to AutoReportLastAccountStatement=Automatically fill the field 'number of bank statement' with last statement number when making reconciliation -CashControl=POS cash desk control -NewCashFence=New cash desk opening or closing +CashControl=POS cash control +NewCashFence=New cash control (opening or closing) BankColorizeMovement=Colorize movements BankColorizeMovementDesc=If this function is enable, you can choose specific background color for debit or credit movements BankColorizeMovementName1=Background color for debit movement @@ -182,3 +182,6 @@ IfYouDontReconcileDisableProperty=If you don't make the bank reconciliations on NoBankAccountDefined=No bank account defined NoRecordFoundIBankcAccount=No record found in bank account. Commonly, this occurs when a record has been deleted manually from the list of transaction in the bank account (for example during a reconciliation of the bank account). Another reason is that the payment was recorded when the module "%s" was disabled. AlreadyOneBankAccount=Already one bank account defined +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformation=SEPA transfer: 'Payment Type' at 'Credit Transfer' level +SEPAXMLPlacePaymentTypeInformationInCreditTransfertransactionInformationHelp=When generatin a SEPA XML file for Credit transfers, the section "PaymentTypeInformation" can now be placed inside the "CreditTransferTransactionInformation" section (instead of "Payment" section). We strongly recommend to keep this unchecked to place PaymentTypeInformation at Payment level, as all banks will not necessarily accept it at CreditTransferTransactionInformation level. Contact your bank before placing PaymentTypeInformation at CreditTransferTransactionInformation level. +ToCreateRelatedRecordIntoBank=To create missing related bank record diff --git a/htdocs/langs/sr_RS/companies.lang b/htdocs/langs/sr_RS/companies.lang index d4f9dcb7f89..d263971284b 100644 --- a/htdocs/langs/sr_RS/companies.lang +++ b/htdocs/langs/sr_RS/companies.lang @@ -38,7 +38,7 @@ ThirdPartyProspectsStats=Kandidati ThirdPartyCustomers=Klijenti ThirdPartyCustomersStats=Klijenti ThirdPartyCustomersWithIdProf12=Klijenti sa %s ili %s -ThirdPartySuppliers=Vendors +ThirdPartySuppliers=Dobavljači ThirdPartyType=Third-party type Individual=Fizičko lice ToCreateContactWithSameName=Will automatically create a contact/address with same information as the third party under the third party. In most cases, even if your third party is a physical person, creating a third party alone is enough. @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=Adresa State=Država/Provincija +StateId=State ID StateCode=State/Province code StateShort=Stanje Region=Regija Region-State=Region - State Country=Zemlja CountryCode=Kod zemlje -CountryId=Id zemlje +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Drugi ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/sr_RS/errors.lang b/htdocs/langs/sr_RS/errors.lang index ce3cbc6b148..cade3860462 100644 --- a/htdocs/langs/sr_RS/errors.lang +++ b/htdocs/langs/sr_RS/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Bad value for your parameter. It appends generally when translation is missing. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Login %s već postoji ErrorGroupAlreadyExists=Grupa %s već postoji ErrorEmailAlreadyExists=Email %s already exists. @@ -55,7 +56,7 @@ ErrorFailedToCreateDir=Greška prilikom kreacije foldera. Proverite da li Web se ErrorNoMailDefinedForThisUser=Mail nije definisan za ovog korisnika ErrorSetupOfEmailsNotComplete=Setup of emails is not complete ErrorFeatureNeedJavascript=Za ovu funkcionalnost morate aktivirati javascript. -ErrorTopMenuMustHaveAParentWithId0=Meni tipa "Top" ne može imati parent meni. Stavite 0 u parent meni ili izaberite meni tipa "Left". +ErrorTopMenuMustHaveAParentWithId0=Meni tipa "Top" ne može imati roditeljski meni. Stavite 0 u roditeljski meni ili izaberite meni tipa "Levi". ErrorLeftMenuMustHaveAParentId=Meni tipa "Levi" mora imati parent ID. ErrorFileNotFound=Fajl %s nije pronađen (pogrešna putanja, nedovoljna prava, ili je pristup sprečen PHP openbasedir ili safe_mode parametrima) ErrorDirNotFound=Folder %s nije pronađen (pogrešna putanja, nedovoljna prava, ili je pristup sprečen PHP openbasedir ili safe_mode parametrima) @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=Fajl nije u celosti primljen na server. ErrorNoTmpDir=Privremeni folder %s ne postoji. ErrorUploadBlockedByAddon=Upload blokiran PHP/Apache pluginom. -ErrorFileSizeTooLarge=Fajl je preveliki. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Predugačka vrednost za int tip (%s cifara maksimum) ErrorSizeTooLongForVarcharType=Predugačka vrednost za string tip (%s karaktera maksimum) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Da bi ova funkcionalnost bila dostupna, Javascript ErrorPasswordsMustMatch=Unete lozinke se moraju podudarati ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s errors found @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Your PHP parameter upload_max_filesize (%s) is higher than PHP parameter post_max_size (%s). This is not a consistent setup. WarningPasswordSetWithNoAccount=Lozinka je podešena za ovog člana, ali korisnik nije kreiran. To znači da je lozinka sačuvana, ali se član ne može ulogovati na Dolibarr. Informaciju može koristiti neka eksterna komponenta, ali ako nemate potrebe da definišete korisnika/lozinku za članove, možete deaktivirati opciju "Upravljanje lozinkama za svakog člana" u podešavanjima modula Članovi. Ukoliko morate da kreirate login, ali Vam nije potrebna lozinka, ostavite ovo polje prazno da se ovo upozorenje ne bi prikazivalo. Napomena: email može biti korišćen kao login ako je član povezan sa korisnikom. -WarningMandatorySetupNotComplete=Click here to setup mandatory parameters +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Click here to enable your modules and applications WarningSafeModeOnCheckExecDir=Upozorenje PHP opcija safe_mode je aktivna, tako da komanda mora biti u folderu definisanom u PHP parametru safe_mode_exec_dir. WarningBookmarkAlreadyExists=Oznaka sa ovim naslovom ili ovim URL-om već postoji. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/sr_RS/externalsite.lang b/htdocs/langs/sr_RS/externalsite.lang deleted file mode 100644 index 7f81e5e93ed..00000000000 --- a/htdocs/langs/sr_RS/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Podesi link ka eksternom sajtu -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Modul eksterni sajt nije ispravno konfigurisan. -ExampleMyMenuEntry=Stavka iz mog menija diff --git a/htdocs/langs/sr_RS/ftp.lang b/htdocs/langs/sr_RS/ftp.lang deleted file mode 100644 index 15cb044156d..00000000000 --- a/htdocs/langs/sr_RS/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Podešavanja FTP Client modula -NewFTPClient=Nova FTP konekcija -FTPArea=Oblast FTP -FTPAreaDesc=Ovaj ekran vam prikazuje sadržaj FTP servera -SetupOfFTPClientModuleNotComplete=Podešavanja FTP client modula nisu potpuna -FTPFeatureNotSupportedByYourPHP=Vaša verzija PHP-a ne omogućava korišćenje FTP-a -FailedToConnectToFTPServer=Greška u konekcij na FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Pogrešan login/password za konekciju na FTP server -FTPFailedToRemoveFile=Greška prilikom brisanja fajla %s. -FTPFailedToRemoveDir=Greška prilkom brisanja foldera %s (proverite prava i da li je flder pazan). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Izaberite FTP stavku u meniju... -FailedToGetFile=Greška prilikom preuzimanja fajlova %s diff --git a/htdocs/langs/sr_RS/hrm.lang b/htdocs/langs/sr_RS/hrm.lang index bb60449ee93..acbcc55b188 100644 --- a/htdocs/langs/sr_RS/hrm.lang +++ b/htdocs/langs/sr_RS/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Otvori ogranak CloseEtablishment=Zatvori ogranak # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HR - Lista odeljenja +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Zaposleni @@ -20,13 +20,14 @@ Employee=Zaposleni NewEmployee=Novi zaposleni ListOfEmployees=Lista zaposlenih HrmSetup=Podešavanja HRM modula -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Operacija -Jobs=Jobs +JobPosition=Operacija +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Pozicija -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/sr_RS/install.lang b/htdocs/langs/sr_RS/install.lang index a209d2d65e8..a70a5d48aaa 100644 --- a/htdocs/langs/sr_RS/install.lang +++ b/htdocs/langs/sr_RS/install.lang @@ -8,6 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=Konfiguracioni fajl %s može biti izmenjen. ConfFileMustBeAFileNotADir=Configuration file %s must be a file, not a directory. ConfFileReload=Reloading parameters from configuration file. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP podržava POST i GET promenljive PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=PHP podržava sesije. @@ -16,13 +17,6 @@ PHPMemoryOK=Maksimalna memorija za sesije je %s. To bi trebalo biti dovol PHPMemoryTooLow=Your PHP max session memory is set to %s bytes. This is too low. Change your php.ini to set memory_limit parameter to at least %s bytes. Recheck=Click here for a more detailed test ErrorPHPDoesNotSupportSessions=Your PHP installation does not support sessions. This feature is required to allow Dolibarr to work. Check your PHP setup and permissions of the sessions directory. -ErrorPHPDoesNotSupportGD=Your PHP installation does not support GD graphical functions. No graphs will be available. -ErrorPHPDoesNotSupportCurl=Your PHP installation does not support Curl. -ErrorPHPDoesNotSupportCalendar=Your PHP installation does not support php calendar extensions. -ErrorPHPDoesNotSupportUTF8=Your PHP installation does not support UTF8 functions. Dolibarr cannot work correctly. Resolve this before installing Dolibarr. -ErrorPHPDoesNotSupportIntl=Your PHP installation does not support Intl functions. -ErrorPHPDoesNotSupportMbstring=Your PHP installation does not support mbstring functions. -ErrorPHPDoesNotSupportxDebug=Your PHP installation does not support extend debug functions. ErrorPHPDoesNotSupport=Your PHP installation does not support %s functions. ErrorDirDoesNotExists=Folder %s ne postoji. ErrorGoBackAndCorrectParameters=Go back and check/correct the parameters. @@ -30,9 +24,11 @@ ErrorWrongValueForParameter=Verovatno ste uneli pogrešnu vrednost za parametar ErrorFailedToCreateDatabase=Greška prilikom kreacije baze podataka "%s". ErrorFailedToConnectToDatabase=Greška prilikom povezivanja na bazu podataka "%s". ErrorDatabaseVersionTooLow=Verzija baze (%s) je previš stara. Neophodna je verzija %s ili novija. -ErrorPHPVersionTooLow=Verzija PHP instalacije je previše stara. Neophodna je verzija %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=Baza "%s" već postoji. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=Ukoliko baza već postoji, vratite se nazad i od-selektirajte opciju "Kreiranje baze". WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/sr_RS/members.lang b/htdocs/langs/sr_RS/members.lang index c1c03b01a38..992b739b33f 100644 --- a/htdocs/langs/sr_RS/members.lang +++ b/htdocs/langs/sr_RS/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID člana +MemberId=Member Id +MemberRef=Member Ref NewMember=Novi član MemberType=Tip člana MemberTypeId=ID tipa člana @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/sr_RS/modulebuilder.lang b/htdocs/langs/sr_RS/modulebuilder.lang index 61b5c939d12..670dccc7767 100644 --- a/htdocs/langs/sr_RS/modulebuilder.lang +++ b/htdocs/langs/sr_RS/modulebuilder.lang @@ -1,14 +1,17 @@ # Dolibarr language file - Source file is en_US - loan ModuleBuilderDesc=This tool must be used only by experienced users or developers. It provides utilities to build or edit your own module. Documentation for alternative manual development is here. -EnterNameOfModuleDesc=Enter name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) -EnterNameOfObjectDesc=Enter name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. +EnterNameOfModuleDesc=Enter the name of the module/application to create with no spaces. Use uppercase to separate words (For example: MyModule, EcommerceForShop, SyncWithMySystem...) +EnterNameOfObjectDesc=Enter the name of the object to create with no spaces. Use uppercase to separate words (For example: MyObject, Student, Teacher...). The CRUD class file, but also API file, pages to list/add/edit/delete object and SQL files will be generated. +EnterNameOfDictionaryDesc=Enter the name of the dictionary to create with no spaces. Use uppercase to separate words (For example: MyDico...). The class file, but also the SQL file will be generated. ModuleBuilderDesc2=Path where modules are generated/edited (first directory for external modules defined into %s): %s ModuleBuilderDesc3=Generated/editable modules found: %s ModuleBuilderDesc4=A module is detected as 'editable' when the file %s exists in root of module directory NewModule=New module NewObjectInModulebuilder=New object +NewDictionary=New dictionary ModuleKey=Module key ObjectKey=Object key +DicKey=Dictionary key ModuleInitialized=Module initialized FilesForObjectInitialized=Files for new object '%s' initialized FilesForObjectUpdated=Files for object '%s' updated (.sql files and .class.php file) @@ -52,7 +55,7 @@ LanguageFile=File for language ObjectProperties=Object Properties ConfirmDeleteProperty=Are you sure you want to delete the property %s? This will change code in PHP class but also remove column from table definition of object. NotNull=Not NULL -NotNullDesc=1=Set database to NOT NULL. -1=Allow null values and force value to NULL if empty ('' or 0). +NotNullDesc=1=Set database to NOT NULL, 0=Allow null values, -1=Allow null values by forcing value to NULL if empty ('' or 0) SearchAll=Used for 'search all' DatabaseIndex=Database index FileAlreadyExists=File %s already exists @@ -94,7 +97,7 @@ LanguageDefDesc=Enter in this files, all the key and the translation for each la MenusDefDesc=Define here the menus provided by your module DictionariesDefDesc=Define here the dictionaries provided by your module PermissionsDefDesc=Define here the new permissions provided by your module -MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), menus are also visible into the menu editor available to administrator users on %s. +MenusDefDescTooltip=The menus provided by your module/application are defined into the array $this->menus into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and the module re-activated), the menus are also visible into the menu editor available to administrator users on %s. DictionariesDefDescTooltip=The dictionaries provided by your module/application are defined into the array $this->dictionaries into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), dictionaries are also visible into the setup area to administrator users on %s. PermissionsDefDescTooltip=The permissions provided by your module/application are defined into the array $this->rights into the module descriptor file. You can edit manually this file or use the embedded editor.

Note: Once defined (and module re-activated), permissions are visible into the default permissions setup %s. HooksDefDesc=Define in the module_parts['hooks'] property, in the module descriptor, the context of hooks you want to manage (list of contexts can be found by a search on 'initHooks(' in core code).
Edit the hook file to add code of your hooked functions (hookable functions can be found by a search on 'executeHooks' in core code). @@ -110,7 +113,7 @@ DropTableIfEmpty=(Destroy table if empty) TableDoesNotExists=The table %s does not exists TableDropped=Table %s deleted InitStructureFromExistingTable=Build the structure array string of an existing table -UseAboutPage=Disable the about page +UseAboutPage=Do not generate the About page UseDocFolder=Disable the documentation folder UseSpecificReadme=Use a specific ReadMe ContentOfREADMECustomized=Note: The content of the README.md file has been replaced with the specific value defined into setup of ModuleBuilder. @@ -127,9 +130,9 @@ UseSpecificEditorURL = Use a specific editor URL UseSpecificFamily = Use a specific family UseSpecificAuthor = Use a specific author UseSpecificVersion = Use a specific initial version -IncludeRefGeneration=The reference of object must be generated automatically -IncludeRefGenerationHelp=Check this if you want to include code to manage the generation automatically of the reference -IncludeDocGeneration=I want to generate some documents from the object +IncludeRefGeneration=The reference of object must be generated automatically by custom numbering rules +IncludeRefGenerationHelp=Check this if you want to include code to manage the generation of the reference automatically using custom numbering rules +IncludeDocGeneration=I want to generate some documents from templates for the object IncludeDocGenerationHelp=If you check this, some code will be generated to add a "Generate document" box on the record. ShowOnCombobox=Show value into combobox KeyForTooltip=Key for tooltip @@ -138,10 +141,16 @@ CSSViewClass=CSS for read form CSSListClass=CSS for list NotEditable=Not editable ForeignKey=Foreign key -TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]] ('1' means we add a + button after the combo to create the record, 'filter' can be 'status=1 AND fk_user = __USER_ID AND entity IN (__SHARED_ENTITIES__)' for example) +TypeOfFieldsHelp=Type of fields:
varchar(99), double(24,8), real, text, html, datetime, timestamp, integer, integer:ClassName:relativepath/to/classfile.class.php[:1[:filter]]
'1' means we add a + button after the combo to create the record
'filter' is a sql condition, example: 'status=1 AND fk_user=__USER_ID__ AND entity IN (__SHARED_ENTITIES__)' AsciiToHtmlConverter=Ascii to HTML converter AsciiToPdfConverter=Ascii to PDF converter TableNotEmptyDropCanceled=Table not empty. Drop has been canceled. ModuleBuilderNotAllowed=The module builder is available but not allowed to your user. ImportExportProfiles=Import and export profiles -ValidateModBuilderDesc=Put 1 if this field need to be validated with $this->validateField() or 0 if validation required +ValidateModBuilderDesc=Set this to 1 if you want to have the method $this->validateField() of object being called to validate the content of the field during insert or upadate. Set 0 if there is no validation required. +WarningDatabaseIsNotUpdated=Warning: The database is not updated automatically, you must destroy tables and disable-enable the module to have tables recreated +LinkToParentMenu=Meni višeg nivoa (fk_xxxxmenu) +ListOfTabsEntries=List of tab entries +TabsDefDesc=Define here the tabs provided by your module +TabsDefDescTooltip=The tabs provided by your module/application are defined into the array $this->tabs into the module descriptor file. You can edit manually this file or use the embedded editor. +BadValueForType=Bad value for type %s diff --git a/htdocs/langs/sr_RS/oauth.lang b/htdocs/langs/sr_RS/oauth.lang index c5b772af121..80fd31c5166 100644 --- a/htdocs/langs/sr_RS/oauth.lang +++ b/htdocs/langs/sr_RS/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token je generisan i sačuvan u lokalnoj bazi NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Token obrisan -RequestAccess=Kliknite ovde da biste tražili/obnovili pristup i primili novi token za čuvanje +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Kliknite ovde da obrišete token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=See previous tab +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token expired @@ -23,10 +24,13 @@ TOKEN_DELETE=Obriši sačuvani token OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/sr_RS/orders.lang b/htdocs/langs/sr_RS/orders.lang index 7e9e4479535..29c86f71cbb 100644 --- a/htdocs/langs/sr_RS/orders.lang +++ b/htdocs/langs/sr_RS/orders.lang @@ -1,4 +1,5 @@ # Dolibarr language file - Source file is en_US - orders +OrderExists=An order was already open linked to this proposal, so no other order was created automatically OrdersArea=Oblast narudžbina klijenta SuppliersOrdersArea=Purchase orders area OrderCard=Kartica narudžbine @@ -21,7 +22,7 @@ SaleOrderLines=Sales order lines PurchaseOrderLines=Puchase order lines SuppliersOrdersRunning=Current purchase orders CustomerOrder=Sales Order -CustomersOrders=Sales Orders +CustomersOrders=Potvrda narudžbina CustomersOrdersRunning=Current sales orders CustomersOrdersAndOrdersLines=Sales orders and order details OrdersDeliveredToBill=Sales orders delivered to bill @@ -68,6 +69,8 @@ CreateOrder=Kreiraj narudžbinu RefuseOrder=Odbij narudžbinu ApproveOrder=Odobri narudžbinu Approve2Order=Odobri narudžbinu (drugi nivo) +UserApproval=User for approval +UserApproval2=User for approval (second level) ValidateOrder=Odobri narudžbinu UnvalidateOrder=Poništi odobrenje narudžbine DeleteOrder=Obriši narudžbinu @@ -102,6 +105,8 @@ ConfirmCancelOrder=Are you sure you want to cancel this order? ConfirmMakeOrder=Are you sure you want to confirm you made this order on %s? GenerateBill=Generiši račun ClassifyShipped=Označi kao ispostavljeno +PassedInShippedStatus=classified delivered +YouCantShipThis=I can't classify this. Please check user permissions DraftOrders=Nacrt narudžbine DraftSuppliersOrders=Draft purchase orders OnProcessOrders=Narudžbine u toku diff --git a/htdocs/langs/sr_RS/products.lang b/htdocs/langs/sr_RS/products.lang index ce21333c0a3..c4a95e4900c 100644 --- a/htdocs/langs/sr_RS/products.lang +++ b/htdocs/langs/sr_RS/products.lang @@ -87,7 +87,7 @@ ErrorProductAlreadyExists=Proizvod sa referencom %s već postoji ErrorProductBadRefOrLabel=Pogrešna vrednost za referencu ili naziv. ErrorProductClone=Došlo je do greške prilikom dupliranja proizvoda ili usluge. ErrorPriceCantBeLowerThanMinPrice=Greška, cena ne može biti manja od minimalne. -Suppliers=Vendors +Suppliers=Dobavljači SupplierRef=Vendor SKU ShowProduct=Pokaži proizvod ShowService=Pokaži uslugu @@ -137,7 +137,8 @@ ConfirmDeleteProductLine=Da li ste sigurni da želite da obrišete ovu liniju pr ProductSpecial=Specijalno QtyMin=Min. purchase quantity PriceQtyMin=Price quantity min. -PriceQtyMinCurrency=Price (currency) for this qty. (no discount) +PriceQtyMinCurrency=Price (currency) for this qty. +WithoutDiscount=Without discount VATRateForSupplierProduct=VAT Rate (for this vendor/product) DiscountQtyMin=Discount for this qty. NoPriceDefinedForThisSupplier=No price/qty defined for this vendor/product @@ -261,7 +262,7 @@ Quarter1=1. Kvartal Quarter2=2. Kvartal Quarter3=3. Kvartal Quarter4=4. Kvartal -BarCodePrintsheet=Štampanje bar koda +BarCodePrintsheet=Print barcodes PageToGenerateBarCodeSheets=With this tool, you can print sheets of barcode stickers. Choose format of your sticker page, type of barcode and value of barcode, then click on button %s. NumberOfStickers=Broj nalepnica za štampanje na strani PrintsheetForOneBarCode=Odštampaj više nalepnica za jedan bar code @@ -346,7 +347,7 @@ UseProductFournDesc=Add a feature to define the product description defined by t ProductSupplierDescription=Vendor description for the product UseProductSupplierPackaging=Use packaging on supplier prices (recalculate quantities according to packaging set on supplier price when adding/updating line in supplier documents) PackagingForThisProduct=Packaging -PackagingForThisProductDesc=On supplier order, you will automaticly order this quantity (or a multiple of this quantity). Cannot be less than minimum buying quantity +PackagingForThisProductDesc=You will automaticaly purchase a multiple of this quantity. QtyRecalculatedWithPackaging=The quantity of the line were recalculated according to supplier packaging #Attributes @@ -408,6 +409,21 @@ mandatoryHelper=Check this if you want a message to the user when creating / val DefaultBOM=Default BOM DefaultBOMDesc=The default BOM recommended to use to manufacture this product. This field can be set only if nature of product is '%s'. Rank=Rank +MergeOriginProduct=Duplicate product (product you want to delete) +MergeProducts=Merge products +ConfirmMergeProducts=Are you sure you want to merge the chosen product with the current one? All linked objects (invoices, orders, ...) will be moved to the current product, after which the chosen product will be deleted. +ProductsMergeSuccess=Products have been merged +ErrorsProductsMerge=Errors in products merge SwitchOnSaleStatus=Switch on sale status SwitchOnPurchaseStatus=Switch on purchase status StockMouvementExtraFields= Extra Fields (stock mouvement) +InventoryExtraFields= Extra Fields (inventory) +ScanOrTypeOrCopyPasteYourBarCodes=Scan or type or copy/paste your barcodes +PuttingPricesUpToDate=Update prices with current known prices +PMPExpected=Expected PMP +ExpectedValuation=Expected Valuation +PMPReal=Real PMP +RealValuation=Real Valuation +ConfirmEditExtrafield = Select the extrafield you want modify +ConfirmEditExtrafieldQuestion = Are you sure you want to modify this extrafield? +ModifyValueExtrafields = Modify value of an extrafield diff --git a/htdocs/langs/sr_RS/stocks.lang b/htdocs/langs/sr_RS/stocks.lang index eabbd6ab419..dbb156b3cd1 100644 --- a/htdocs/langs/sr_RS/stocks.lang +++ b/htdocs/langs/sr_RS/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=Ponovo Otvoreno ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Započeto ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/sr_RS/suppliers.lang b/htdocs/langs/sr_RS/suppliers.lang index 60fd4cbf67f..60f0f2f8271 100644 --- a/htdocs/langs/sr_RS/suppliers.lang +++ b/htdocs/langs/sr_RS/suppliers.lang @@ -1,5 +1,5 @@ # Dolibarr language file - Source file is en_US - vendors -Suppliers=Vendors +Suppliers=Dobavljači SuppliersInvoice=Vendor invoice SupplierInvoices=Vendor invoices ShowSupplierInvoice=Show Vendor Invoice @@ -47,3 +47,10 @@ BuyerName=Buyer name AllProductServicePrices=All product / service prices AllProductReferencesOfSupplier=All references of vendor BuyingPriceNumShort=Vendor prices +RepeatableSupplierInvoice=Template supplier invoice +RepeatableSupplierInvoices=Template supplier invoices +RepeatableSupplierInvoicesList=Template supplier invoices +RecurringSupplierInvoices=Recurring supplier invoices +ToCreateAPredefinedSupplierInvoice=In order to create template supplier invoice, you must create a standard invoice, then, without validating it, click on the "%s" button. +GeneratedFromSupplierTemplate=Generated from supplier invoice template %s +SupplierInvoiceGeneratedFromTemplate=Supplier invoice %s Generated from supplier invoice template %s diff --git a/htdocs/langs/sv_SE/admin.lang b/htdocs/langs/sv_SE/admin.lang index 8125bfcd83e..2d3fe121c52 100644 --- a/htdocs/langs/sv_SE/admin.lang +++ b/htdocs/langs/sv_SE/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Nästa värde (ersättare) MustBeLowerThanPHPLimit=Obs: din PHP-konfiguration begränsar för närvarande den maximala filstorleken för uppladdning till %s %s, oavsett värdet på denna parameter NoMaxSizeByPHPLimit=Obs: Ingen gräns som anges i din PHP konfiguration MaxSizeForUploadedFiles=Maximala storleken för uppladdade filer (0 att förkasta varje uppladdning) -UseCaptchaCode=Använd grafisk kod (CAPTCHA) på inloggningssidan +UseCaptchaCode=Använd grafisk kod (CAPTCHA) på inloggningssidan och publika sidor AntiVirusCommand=Fullständiga sökvägen till antivirus kommandot AntiVirusCommandExample=Exempel för ClamAv Daemon (kräver clamav-daemon): / usr / bin / clamdscan
Exempel på ClamWin (väldigt långsamt): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Fler parametrar på kommandoraden @@ -504,7 +504,7 @@ WarningPHPMailC=- Att använda din egen e-postleverantörs SMTP-server för att WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Om din e-post SMTP-leverantör behöver begränsa e-postklienten till vissa IP-adresser (mycket sällsynt), är detta e-postadressen för e-postanvändaragenten (MUA) för din ERP CRM-ansökan: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Klicka för att visa beskrivning DependsOn=Denna modul behöver modulen / modulerna RequiredBy=Denna modul krävs enligt modul (er) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Värdet på en konfigurationskonstant ConstantIsOn=Alternativ %s är på NbOfDays=Antal dagar AtEndOfMonth=I slutet av månaden -CurrentNext=Current / Next +CurrentNext=A given day in month Offset=Offset AlwaysActive=Alltid aktiv Upgrade=Uppgradera @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Tryck CTRL + F5 på tangentbordet eller rensa webbläsa NotSupportedByAllThemes=Kommer att fungera med kärnämnen, kanske inte stöds av externa teman BackgroundColor=Bakgrundsfärg TopMenuBackgroundColor=Bakgrundsfärg för Huvudmeny -TopMenuDisableImages=Dölj bilder i toppmenyn +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Bakgrundsfärg för vänstermenyn BackgroundTableTitleColor=Bakgrundsfärg för tabellens titellinje BackgroundTableTitleTextColor=Textfärg för tabellens titellinje @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Obs! Alternativet att använda moms eller moms har ställts till SwapSenderAndRecipientOnPDF=Byt avsändar- och mottagaradressposition på PDF-dokument FeatureSupportedOnTextFieldsOnly=Varning, funktionen stöds endast i textfält och kombinationslistor. En URL-parameteråtgärd = skapa eller åtgärd = redigera måste också ställas in ELLER måste sidnamnet sluta med 'new.php' för att utlösa den här funktionen. EmailCollector=E-post samlare +EmailCollectors=Email collectors EmailCollectorDescription=Lägg till ett schemalagt jobb och en installationssida för att skanna regelbundet e-postrutor (med IMAP-protokoll) och spela in e-postmeddelanden som tas emot i din ansökan, på rätt plats och / eller skapa några poster automatiskt (som ledningar). NewEmailCollector=Ny e-postsamlare EMailHost=Värd för e-post IMAP-server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Datum för senaste insamlingsförsök DateLastcollectResultOk=Datum för senaste insamlingsframgång LastResult=Senaste resultatet EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=E-post samla bekräftelse EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Ingen ny email (matchande filter) att bearbeta NothingProcessed=Inget gjort -XEmailsDoneYActionsDone=%s e-postadresser kvalificerade, %s e-postmeddelanden som bearbetats framgångsrikt (för %s-post / åtgärder gjorda) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Mall för e-post EMailsWillHaveMessageID=E-postmeddelanden kommer att ha taggen "Referenser" som matchar denna syntax PDF_SHOW_PROJECT=Visa projekt på dokument ShowProjectLabel=Projektetikett +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Om du vill att några texter i din PDF ska dupliceras på två olika språk i samma genererade PDF, måste du ställa in det här andra språket så att genererad PDF kommer att innehålla 2 olika språk på samma sida, det som du valt när du skapar PDF och det här ( endast få PDF-mallar stöder detta). Håll tomt för 1 språk per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Ange här koden för en FontAwesome-ikon. Om du inte vet vad som är FontAwesome kan du använda det allmänna värdet fa-adressbok. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = inställningar +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/sv_SE/companies.lang b/htdocs/langs/sv_SE/companies.lang index 4c374149506..de1f09da5c4 100644 --- a/htdocs/langs/sv_SE/companies.lang +++ b/htdocs/langs/sv_SE/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Tredjepartens art NatureOfContact=Kontaktens art Address=Adress State=Delstat / provins +StateId=State ID StateCode=Stat / provins kod StateShort=stat Region=Region Region-State=Region - Stat Country=Land CountryCode=Landskod -CountryId=Land-id +CountryId=Country ID Phone=Telefon PhoneShort=Tel Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Övrigt ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) diff --git a/htdocs/langs/sv_SE/errors.lang b/htdocs/langs/sv_SE/errors.lang index 6eac66b349a..189b2c6584e 100644 --- a/htdocs/langs/sv_SE/errors.lang +++ b/htdocs/langs/sv_SE/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=E-post %s verkar felaktig (domänen har ingen giltig MX-post) ErrorBadUrl=Url %s är felaktig ErrorBadValueForParamNotAString=Dåligt värde för din parameter. Det lägger till i allmänhet när översättning saknas. ErrorRefAlreadyExists=Referens %s finns redan. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Logga %s finns redan. ErrorGroupAlreadyExists=Grupp %s finns redan. ErrorEmailAlreadyExists=E-post %s finns redan. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=En annan fil med namnet %s finns redan. ErrorPartialFile=Handlingar den mottagit inte helt av server. ErrorNoTmpDir=Tillfälliga directy %s inte existerar. ErrorUploadBlockedByAddon=Ladda upp blockeras av en PHP / Apache plugin. -ErrorFileSizeTooLarge=Filen är för stor. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Fältet %s är för långt. ErrorSizeTooLongForIntType=Storlek för lång för int typ (%s siffror max) ErrorSizeTooLongForVarcharType=Storlek för lång för sträng typ (%s tecken max) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript måste inte avaktiveras att ha denna fun ErrorPasswordsMustMatch=Båda skrivit lösenord måste matcha varandra ErrorContactEMail=Ett tekniskt fel uppstod. Vänligen kontakta administratören till följande email %s och ge felkoden %s i ditt meddelande, eller lägg till en skärmkopia av den här sidan. ErrorWrongValueForField=Fält %s : ' %s ' överensstämmer inte med regexregeln %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Fält %s : ' %s ' är inte ett värde som finns i fält %s av %s ErrorFieldRefNotIn=Fält %s : ' %s ' är inte en %s existerande referens ErrorsOnXLines=%s hittade fel @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Du måste först ställa in ditt kontop ErrorFailedToFindEmailTemplate=Det gick inte att hitta mall med kodnamn %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Varaktighet definieras inte i tjänsten. Inget sätt att beräkna timpriset. ErrorActionCommPropertyUserowneridNotDefined=Användarens ägare krävs -ErrorActionCommBadType=Vald händelsetyp (id: %n, kod: %s) finns inte i ordlistan för händelsetyp +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Versionskontroll misslyckades ErrorWrongFileName=Filens namn kan inte innehålla __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Inte i ordningen för betalningsvillkor, ändra. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Din PHP-parameter upload_max_filesize (%s) är högre än PHP-parameter post_max_size (%s). Detta är inte en konsekvent installation. WarningPasswordSetWithNoAccount=Ett lösenord har ställts för den här medlemmen. Men inget användarkonto skapades. Så det här lösenordet är lagrat men kan inte användas för att logga in till Dolibarr. Den kan användas av en extern modul / gränssnitt men om du inte behöver definiera någon inloggning eller ett lösenord för en medlem kan du inaktivera alternativet "Hantera en inloggning för varje medlem" från inställningen av medlemsmodulen. Om du behöver hantera en inloggning men inte behöver något lösenord, kan du hålla fältet tomt för att undvika denna varning. Obs! Email kan också användas som inloggning om medlemmen är länkad till en användare. -WarningMandatorySetupNotComplete=Klicka här för att ställa in obligatoriska parametrar +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Klicka här för att aktivera dina moduler och applikationer WarningSafeModeOnCheckExecDir=Varning, PHP alternativ safe_mode är på så kommando måste stoppas in i en katalog som deklarerats av php parameter safe_mode_exec_dir. WarningBookmarkAlreadyExists=Ett bokmärke med denna avdelning eller detta mål (URL) finns redan. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Varning, du kan inte skapa ett underkonto direkt, du m WarningAvailableOnlyForHTTPSServers=Endast tillgängligt om du använder HTTPS-säker anslutning. WarningModuleXDisabledSoYouMayMissEventHere=Modulen %s har inte aktiverats. Så du kanske missar en hel del evenemang här. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/sv_SE/externalsite.lang b/htdocs/langs/sv_SE/externalsite.lang deleted file mode 100644 index bb812b412ed..00000000000 --- a/htdocs/langs/sv_SE/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup länk till extern webbplats -ExternalSiteURL=Extern webbadress för HTML för iframe-innehåll -ExternalSiteModuleNotComplete=Modul ExternalSite var inte korrekt konfigurerad. -ExampleMyMenuEntry=Min meny posten diff --git a/htdocs/langs/sv_SE/ftp.lang b/htdocs/langs/sv_SE/ftp.lang deleted file mode 100644 index d556f413bfc..00000000000 --- a/htdocs/langs/sv_SE/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP- eller SFTP-klientmodulinställning -NewFTPClient=Ny FTP / FTPS-anslutningsinstallation -FTPArea=FTP / FTPS-område -FTPAreaDesc=Denna skärm visar en vy av en FTP et SFTP-server. -SetupOfFTPClientModuleNotComplete=Installationen av FTP- eller SFTP-klientmodulen verkar vara ofullständig -FTPFeatureNotSupportedByYourPHP=Din PHP stöder inte FTP- eller SFTP-funktioner -FailedToConnectToFTPServer=Det gick inte att ansluta till servern (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Det gick inte att logga in på servern med definierat inloggning / lösenord -FTPFailedToRemoveFile=Misslyckades med att ta bort fil %s. -FTPFailedToRemoveDir=Misslyckades med att ta bort katalogen %s : kolla behörigheter och att katalogen är tom. -FTPPassiveMode=Passivt läge -ChooseAFTPEntryIntoMenu=Välj en FTP / SFTP-webbplats från menyn ... -FailedToGetFile=Filhämtning misslyckades %s diff --git a/htdocs/langs/sv_SE/hrm.lang b/htdocs/langs/sv_SE/hrm.lang index 8039f587136..262cae6c093 100644 --- a/htdocs/langs/sv_SE/hrm.lang +++ b/htdocs/langs/sv_SE/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Öppen anläggning CloseEtablishment=Stäng anläggningen # Dictionary DictionaryPublicHolidays=Ledighet - Helgdagar -DictionaryDepartment=HRM - Avdelningslista +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Jobbpositioner # Module Employees=anställda @@ -20,13 +20,14 @@ Employee=Anställd NewEmployee=Ny anställd ListOfEmployees=Lista över anställda HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Jobb -Jobs=Jobs +JobPosition=Jobb +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Position -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/sv_SE/install.lang b/htdocs/langs/sv_SE/install.lang index eee9da54666..bd463e4ecb5 100644 --- a/htdocs/langs/sv_SE/install.lang +++ b/htdocs/langs/sv_SE/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Konfigurationsfil %s är inte skrivbar. Kontrolle ConfFileIsWritable=Konfigurationsfilen %s är skrivbar. ConfFileMustBeAFileNotADir=Konfigurationsfil %s måste vara en fil, inte en katalog. ConfFileReload=Uppdatera parametrar från konfigurationsfilen. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Detta stöder PHP variabler POST och GET. PHPSupportPOSTGETKo=Det är möjligt att din PHP-inställning inte stöder variabler POST och / eller GET. Kontrollera parametern variables_order i php.ini. PHPSupportSessions=Detta stöder PHP sessioner. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Du kan ha skrivit fel värde för parametern "% ErrorFailedToCreateDatabase=Misslyckades med att skapa databasen %s. ErrorFailedToConnectToDatabase=Det gick inte att ansluta till databasen "%s". ErrorDatabaseVersionTooLow=Databasens version (%s) för gammal. Version %s eller senare krävs. -ErrorPHPVersionTooLow=PHP version gamla också. Version %s krävs. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Anslutning till servern lyckad men databasen '%s' hittades inte. ErrorDatabaseAlreadyExists=Databas "%s" finns redan. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Om databasen inte existerar, gå tillbaka och kolla alternativet "Skapa databas". IfDatabaseExistsGoBackAndCheckCreate=Om databasen redan finns, gå tillbaka och avmarkera "Skapa databasen" valen. WarningBrowserTooOld=Versionen av webbläsaren är för gammal. Uppgradering av webbläsaren till en ny version av Firefox, Chrome eller Opera rekommenderas starkt. diff --git a/htdocs/langs/sv_SE/knowledgemanagement.lang b/htdocs/langs/sv_SE/knowledgemanagement.lang index de1b5b17445..8b0b8b36350 100644 --- a/htdocs/langs/sv_SE/knowledgemanagement.lang +++ b/htdocs/langs/sv_SE/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Artiklar KnowledgeRecord = Artikel KnowledgeRecordExtraFields = Extrafält för artikel GroupOfTicket=Grupp av biljetter -YouCanLinkArticleToATicketCategory=Du kan länka en artikel till en biljettgrupp (så artikeln kommer att föreslås under kvalificeringen av nya biljetter) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Suggested for tickets when group is SetObsolete=Set as obsolete diff --git a/htdocs/langs/sv_SE/loan.lang b/htdocs/langs/sv_SE/loan.lang index c1be5555d90..4f79e87955b 100644 --- a/htdocs/langs/sv_SE/loan.lang +++ b/htdocs/langs/sv_SE/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Finansiellt engagemang InterestAmount=Ränta CapitalRemain=Kapital kvarstår TermPaidAllreadyPaid = Denna period är redan betald -CantUseScheduleWithLoanStartedToPaid = Kan inte använda schemaläggaren för ett lån när betalningen har startat +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Du kan inte ändra intresse om du använder schema # Admin ConfigLoan=Modullånets konfiguration diff --git a/htdocs/langs/sv_SE/main.lang b/htdocs/langs/sv_SE/main.lang index 3ab6e851b6d..6f0c88354ab 100644 --- a/htdocs/langs/sv_SE/main.lang +++ b/htdocs/langs/sv_SE/main.lang @@ -244,6 +244,7 @@ Designation=Beskrivning DescriptionOfLine=Beskrivning av linjen DateOfLine=Datum för rad DurationOfLine=Varaktighet av raden +ParentLine=Parent line ID Model=Doc mall DefaultModel=Standard doksmall Action=Händelse @@ -344,7 +345,7 @@ KiloBytes=Kilobyte MegaBytes=Megabyte GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Ceated av +UserAuthor=Created by UserModif=Uppdaterad av b=b. Kb=Kb @@ -517,6 +518,7 @@ or=eller Other=Andra Others=Övrigt OtherInformations=Övrig information +Workflow=Workflow Quantity=Kvantitet Qty=Antal ChangedBy=Ändrad av @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Bifogade filer och dokument JoinMainDoc=Gå med i huvuddokumentet +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=ÅÅÅÅ-MM DateFormatYYYYMMDD=ÅÅÅÅ-MM-DD DateFormatYYYYMMDDHHMM=ÅÅÅÅ-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=Funktion avstängd MoveBox=Flytta widgeten Offered=Erbjuds NotEnoughPermissions=Du har inte behörighet för denna åtgärd +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Session namn Method=Metod Receive=Ta emot @@ -798,6 +802,7 @@ URLPhoto=URL foto / logo SetLinkToAnotherThirdParty=Länk till en annan tredje part LinkTo=Anknyta till LinkToProposal=Länk till förslag +LinkToExpedition= Link to expedition LinkToOrder=Länk för att beställa LinkToInvoice=Länk till faktura LinkToTemplateInvoice=Länk till mallfaktura @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Avslutad +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/sv_SE/members.lang b/htdocs/langs/sv_SE/members.lang index ec01c2afc5d..6e93513f819 100644 --- a/htdocs/langs/sv_SE/members.lang +++ b/htdocs/langs/sv_SE/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Medlem id +MemberId=Member Id +MemberRef=Member Ref NewMember=Ny medlem MemberType=Medlem typ MemberTypeId=Medlem typ id @@ -135,7 +136,7 @@ CardContent=Innehållet i ditt medlemskort # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Vi vill meddela dig att din medlemsförfrågan har mottagits.

ThisIsContentOfYourMembershipWasValidated=Vi vill meddela att ditt medlemskap bekräftades med följande information:

-ThisIsContentOfYourSubscriptionWasRecorded=Vi vill meddela dig att din nya prenumeration har spelats in.

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

ThisIsContentOfSubscriptionReminderEmail=Vi vill meddela att din prenumeration är på väg att upphöra eller har gått ut (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Vi hoppas att du kommer att förnya det.

ThisIsContentOfYourCard=Detta är en sammanfattning av den information vi har om dig. Kontakta oss om något är felaktigt.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Ämnet av meddelandemeddelandet mottaget vid automatisk inskription av en gäst @@ -218,3 +219,5 @@ XExternalUserCreated=%s externa användare har skapats ForceMemberNature=Tvinga medlemmarnas natur (individ eller företag) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/sv_SE/oauth.lang b/htdocs/langs/sv_SE/oauth.lang index 58b50d72893..6da92f06dcc 100644 --- a/htdocs/langs/sv_SE/oauth.lang +++ b/htdocs/langs/sv_SE/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=En token genererades och sparades i den lokala databasen NewTokenStored=Token mottagen och sparad ToCheckDeleteTokenOnProvider=Klicka här för att kontrollera / radera behörighet som sparats av %s OAuth-leverantören TokenDeleted=Token raderad -RequestAccess=Klicka här för att begära / förnya åtkomst och få en ny token att spara -DeleteAccess=Klicka här för att radera token +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Använd följande URL-adress som omdirigerings-URI när du skapar dina uppgifter med din OAuth-leverantör: -ListOfSupportedOauthProviders=Ange inloggningsuppgifterna från din OAuth2-leverantör. Endast stödda OAuth2-leverantörer listas här. Dessa tjänster kan användas av andra moduler som behöver OAuth2-autentisering. -OAuthSetupForLogin=Sida för att skapa en OAuth-token +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Se föregående flik +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID och Secret TOKEN_REFRESH=Token Refresh Present TOKEN_EXPIRED=Token utgått @@ -23,10 +24,13 @@ TOKEN_DELETE=Radera sparade token OAUTH_GOOGLE_NAME=OAuth Google-tjänst OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Gå till den här sidan och sedan "Credentials" för att skapa OAuth-uppgifter OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Gå till den här sidan sedan "Registrera en ny applikation" för att skapa OAuth-uppgifter +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Strip Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/sv_SE/projects.lang b/htdocs/langs/sv_SE/projects.lang index 3b072f8f138..93cfa921123 100644 --- a/htdocs/langs/sv_SE/projects.lang +++ b/htdocs/langs/sv_SE/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Tid förbrukad fakturerad TimeSpentForIntervention=Tid TimeSpentForInvoice=Tid OneLinePerUser=En rad per användare -ServiceToUseOnLines=Service att använda på linjer +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Faktura %s har genererats från tid till projekt InterventionGeneratedFromTimeSpent=Intervention %s har genererats från tid på projektet ProjectBillTimeDescription=Kontrollera om du anger tidrapport för projektuppgifter OCH du planerar att generera fakturor från tidrapporten för att fakturera kunden för projektet (kontrollera inte om du planerar att skapa faktura som inte baseras på angivna tidrapporter). Obs! För att generera faktura, gå till fliken "Tid" för projektet och välj rader som ska inkluderas. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/sv_SE/stocks.lang b/htdocs/langs/sv_SE/stocks.lang index 75e2cedb2dc..1e1e171a0aa 100644 --- a/htdocs/langs/sv_SE/stocks.lang +++ b/htdocs/langs/sv_SE/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Lagergräns för varning och önskat optimalt lager ProductStockWarehouseUpdated=Lagergräns för varning och önskat optimalt lager korrekt uppdaterat ProductStockWarehouseDeleted=Lagergräns för varning och önskat optimalt lager raderas korrekt AddNewProductStockWarehouse=Ange ny gräns för alert och önskat optimalt lager -AddStockLocationLine=Minska kvantiteten klicka sedan för att lägga till ett annat lager för denna produkt +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Lagerdatum Inventories=Inventories NewInventory=Ny inventering @@ -254,7 +254,7 @@ ReOpen=Öppna igen ConfirmFinish=Bekräftar du stängningen av inventeringen? Detta genererar alla lagerrörelser för att uppdatera ditt lager till det verkliga antalet du angav i lageret. ObjectNotFound=%s hittades inte MakeMovementsAndClose=Generera rörelser och stäng -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=Som standard visar du batchuppgifter på fliken "lager" CollapseBatchDetailHelp=Du kan ställa in standardvisning för batchdetaljer i lagermodulkonfiguration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Start InventoryStartedShort=Påbörjad ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=inställningar +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/sw_SW/errors.lang b/htdocs/langs/sw_SW/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/sw_SW/errors.lang +++ b/htdocs/langs/sw_SW/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/sw_SW/externalsite.lang b/htdocs/langs/sw_SW/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/sw_SW/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/sw_SW/ftp.lang b/htdocs/langs/sw_SW/ftp.lang deleted file mode 100644 index 8ecb0c55cad..00000000000 --- a/htdocs/langs/sw_SW/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen show you content of a FTP server view -SetupOfFTPClientModuleNotComplete=Setup of FTP client module seems to be not complete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s (Check permissions and that directory is empty). -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/ta_IN/accountancy.lang b/htdocs/langs/ta_IN/accountancy.lang index 0d8d086f542..d9667295c39 100644 --- a/htdocs/langs/ta_IN/accountancy.lang +++ b/htdocs/langs/ta_IN/accountancy.lang @@ -48,8 +48,9 @@ CountriesNotInEEC=EEC இல் இல்லாத நாடுகள் CountriesInEECExceptMe=%s தவிர EEC இல் உள்ள நாடுகள் CountriesExceptMe=%s தவிர அனைத்து நாடுகளும் AccountantFiles=மூல ஆவணங்களை ஏற்றுமதி செய்யவும் -ExportAccountingSourceDocHelp=இந்தக் கருவி மூலம், உங்கள் கணக்கை உருவாக்கப் பயன்படுத்தப்படும் மூல நிகழ்வுகளை (CSV மற்றும் PDFகளில் உள்ள பட்டியல்) ஏற்றுமதி செய்யலாம். +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). ExportAccountingSourceDocHelp2=உங்கள் பத்திரிகைகளை ஏற்றுமதி செய்ய, %s - %s என்ற மெனு உள்ளீட்டைப் பயன்படுத்தவும். +ExportAccountingProjectHelp=Specify a project if you need an accounting report only for a specific project. Expense reports and loan payments are not included in project reports. VueByAccountAccounting=கணக்கு கணக்கு மூலம் பார்க்கவும் VueBySubAccountAccounting=கணக்கியல் துணைக் கணக்கு மூலம் பார்க்கவும் @@ -161,7 +162,7 @@ BANK_DISABLE_DIRECT_INPUT=வங்கிக் கணக்கில் பர ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=ஜர்னலில் வரைவு ஏற்றுமதியை இயக்கவும் ACCOUNTANCY_COMBO_FOR_AUX=துணைக் கணக்கிற்கான சேர்க்கை பட்டியலை இயக்கவும் (உங்களிடம் நிறைய மூன்றாம் தரப்பினர் இருந்தால் மெதுவாக இருக்கலாம், மதிப்பின் ஒரு பகுதியை தேடும் திறனை உடைக்கவும்) ACCOUNTING_DATE_START_BINDING=கணக்கியலில் பிணைப்பு மற்றும் பரிமாற்றத்தைத் தொடங்குவதற்கான தேதியை வரையறுக்கவும். இந்த தேதிக்கு கீழே, பரிவர்த்தனைகள் கணக்கியலுக்கு மாற்றப்படாது. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=கணக்கியல் பரிமாற்றத்தில், இயல்புநிலையாக காலக் காட்சியைத் தேர்ந்தெடுக்கவும் +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=பத்திரிக்கையை விற்கவும் ACCOUNTING_PURCHASE_JOURNAL=கொள்முதல் இதழ் @@ -182,7 +183,7 @@ DONATION_ACCOUNTINGACCOUNT=நன்கொடைகளை பதிவு செ ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=சந்தாக்களை பதிவு செய்ய கணக்கியல் கணக்கு ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=வாடிக்கையாளர் வைப்புத்தொகையை பதிவு செய்ய இயல்புநிலையாக கணக்கு கணக்கு -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=வாங்கிய பொருட்களுக்கான இயல்புநிலை கணக்கு கணக்கு (தயாரிப்பு தாளில் வரையறுக்கப்படவில்லை என்றால் பயன்படுத்தப்படும்) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=EEC இல் வாங்கிய தயாரிப்புகளுக்கான இயல்புநிலை கணக்கு கணக்கு (தயாரிப்பு தாளில் வரையறுக்கப்படவில்லை என்றால் பயன்படுத்தப்படும்) @@ -332,7 +333,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=செலவு அறிக்க ## Export NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) -NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Date validation and lock ConfirmExportFile=கணக்கியல் ஏற்றுமதி கோப்பின் தலைமுறையை உறுதிப்படுத்தவா? ExportDraftJournal=ஏற்றுமதி வரைவு இதழ் @@ -427,6 +428,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=ம AccountancyErrorMismatchLetterCode=Mismatch in reconcile code AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=கணக்கு பதிவுகள் diff --git a/htdocs/langs/ta_IN/admin.lang b/htdocs/langs/ta_IN/admin.lang index 5ebf50a8451..5817c19ae8a 100644 --- a/htdocs/langs/ta_IN/admin.lang +++ b/htdocs/langs/ta_IN/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=அடுத்த மதிப்பு (மாற் MustBeLowerThanPHPLimit=குறிப்பு: உங்கள் PHP உள்ளமைவு இந்த அளவுருவின் மதிப்பைப் பொருட்படுத்தாமல், %s %s க்கு பதிவேற்றுவதற்கான அதிகபட்ச கோப்பு அளவைக் கட்டுப்படுத்துகிறது. NoMaxSizeByPHPLimit=குறிப்பு: உங்கள் PHP உள்ளமைவில் வரம்பு எதுவும் அமைக்கப்படவில்லை MaxSizeForUploadedFiles=பதிவேற்றிய கோப்புகளுக்கான அதிகபட்ச அளவு (எந்தப் பதிவேற்றத்தையும் அனுமதிக்காததற்கு 0) -UseCaptchaCode=உள்நுழைவு பக்கத்தில் வரைகலை குறியீட்டைப் (CAPTCHA) பயன்படுத்தவும் +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=வைரஸ் தடுப்பு கட்டளைக்கான முழு பாதை AntiVirusCommandExample=ClamAv Daemon க்கான எடுத்துக்காட்டு (clamav-daemon தேவை): /usr/bin/clamdscan
ClamWin க்கான எடுத்துக்காட்டு (மிக மிக மெதுவாக): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= கட்டளை வரியில் கூடுதல் அளவுருக்கள் @@ -477,7 +477,7 @@ InstalledInto=%s கோப்பகத்தில் நிறுவப்ப BarcodeInitForThirdparties=மூன்றாம் தரப்பினருக்கான மாஸ் பார்கோடு init BarcodeInitForProductsOrServices=தயாரிப்புகள் அல்லது சேவைகளுக்கு பெருமளவிலான பார்கோடு துவக்கவும் அல்லது மீட்டமைக்கவும் CurrentlyNWithoutBarCode=தற்போது, %s a0a65d071f6fc947c06bz0 %s பதிவு உள்ளது. -InitEmptyBarCode=அடுத்த %s வெற்றுப் பதிவுகளுக்கான தொடக்க மதிப்பு +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=தற்போதைய பார்கோடு மதிப்புகள் அனைத்தையும் அழிக்கவும் ConfirmEraseAllCurrentBarCode=தற்போதைய பார்கோடு மதிப்புகள் அனைத்தையும் நிச்சயமாக அழிக்க விரும்புகிறீர்களா? AllBarcodeReset=அனைத்து பார்கோடு மதிப்புகளும் அகற்றப்பட்டன @@ -504,7 +504,7 @@ WarningPHPMailC=- மின்னஞ்சல்களை அனுப்ப உ WarningPHPMailD=மேலும், மின்னஞ்சல்களை அனுப்பும் முறையை "SMTP" மதிப்பிற்கு மாற்ற பரிந்துரைக்கப்படுகிறது. மின்னஞ்சல்களை அனுப்புவதற்கு இயல்புநிலை "PHP" முறையை நீங்கள் உண்மையிலேயே வைத்திருக்க விரும்பினால், இந்த எச்சரிக்கையைப் புறக்கணிக்கவும் அல்லது MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP ஐ முகப்பு - அமைவு - மற்றவற்றில் நிலையான 1 என அமைப்பதன் மூலம் அதை அகற்றவும். WarningPHPMail2=உங்கள் மின்னஞ்சல் SMTP வழங்குநர் மின்னஞ்சல் கிளையண்ட்டை சில IP முகவரிகளுக்கு (மிகவும் அரிதான) கட்டுப்படுத்த வேண்டும் என்றால், இது உங்கள் ERP CRM பயன்பாட்டிற்கான அஞ்சல் பயனர் முகவரின் (MUA) ஐபி முகவரி: %s a0a65d071f6f6f6fc9 WarningPHPMailSPF=உங்கள் அனுப்புநரின் மின்னஞ்சல் முகவரியில் உள்ள டொமைன் பெயர் SPF பதிவினால் பாதுகாக்கப்பட்டிருந்தால் (உங்கள் டொமைன் பெயர் பதிவேட்டைக் கேளுங்கள்), உங்கள் டொமைனின் DNS இன் SPF பதிவில் பின்வரும் IPகளை நீங்கள் சேர்க்க வேண்டும்: %s a0a65d071f. -ActualMailSPFRecordFound=உண்மையான SPF பதிவு கண்டறியப்பட்டது : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=விளக்கத்தைக் காட்ட கிளிக் செய்யவும் DependsOn=இந்த தொகுதிக்கு தொகுதி(கள்) தேவை RequiredBy=இந்த தொகுதிக்கு தொகுதி(கள்) தேவை @@ -1129,7 +1129,7 @@ ValueOfConstantKey=ஒரு கட்டமைப்பு மாறிலி ConstantIsOn=விருப்பம் %s இயக்கத்தில் உள்ளது NbOfDays=நாட்களின் எண்ணிக்கை AtEndOfMonth=மாத இறுதியில் -CurrentNext=தற்போதைய/அடுத்து +CurrentNext=A given day in month Offset=ஆஃப்செட் AlwaysActive=எப்போதும் சுறுசுறுப்பாக இருக்கும் Upgrade=மேம்படுத்தல் @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=விசைப்பலகையில் CTRL+F5 ஐ NotSupportedByAllThemes=வில் முக்கிய தீம்களுடன் வேலை செய்கிறது, வெளிப்புற தீம்களால் ஆதரிக்கப்படாமல் இருக்கலாம் BackgroundColor=பின்னணி நிறம் TopMenuBackgroundColor=மேல் மெனுவிற்கான பின்னணி நிறம் -TopMenuDisableImages=மேல் மெனுவில் படங்களை மறை +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=இடது மெனுவிற்கான பின்னணி நிறம் BackgroundTableTitleColor=அட்டவணை தலைப்பு வரிக்கான பின்னணி நிறம் BackgroundTableTitleTextColor=அட்டவணை தலைப்பு வரிக்கான உரை வண்ணம் @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=குறிப்பு: %s - %s என்ற மெனுவி SwapSenderAndRecipientOnPDF=PDF ஆவணங்களில் அனுப்புநர் மற்றும் பெறுநரின் முகவரி நிலையை மாற்றவும் FeatureSupportedOnTextFieldsOnly=எச்சரிக்கை, அம்சம் உரை புலங்கள் மற்றும் சேர்க்கை பட்டியல்களில் மட்டுமே ஆதரிக்கப்படுகிறது. மேலும் ஒரு URL அளவுரு செயல்=உருவாக்கு அல்லது செயல்=திருத்தம் அமைக்கப்பட வேண்டும் அல்லது இந்த அம்சத்தைத் தூண்டுவதற்கு பக்கத்தின் பெயர் 'new.php' உடன் முடிவடைய வேண்டும். EmailCollector=மின்னஞ்சல் சேகரிப்பான் +EmailCollectors=Email collectors EmailCollectorDescription=வழக்கமான மின்னஞ்சல் பெட்டிகளை (IMAP நெறிமுறையைப் பயன்படுத்தி) ஸ்கேன் செய்ய திட்டமிடப்பட்ட வேலை மற்றும் அமைவுப் பக்கத்தைச் சேர்க்கவும் மற்றும் உங்கள் விண்ணப்பத்தில் பெறப்பட்ட மின்னஞ்சல்களை சரியான இடத்தில் பதிவு செய்யவும் மற்றும்/அல்லது சில பதிவுகளை தானாக உருவாக்கவும் (லீட்கள் போன்றவை). NewEmailCollector=புதிய மின்னஞ்சல் கலெக்டர் EMailHost=மின்னஞ்சல் IMAP சேவையகத்தின் ஹோஸ்ட் @@ -2073,14 +2074,14 @@ DateLastCollectResult=சமீபத்திய சேகரிப்பு DateLastcollectResultOk=சமீபத்திய சேகரிப்பு வெற்றியின் தேதி LastResult=சமீபத்திய முடிவு EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=மின்னஞ்சல் சேகரிப்பு உறுதிப்படுத்தல் EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=செயலாக்க புதிய மின்னஞ்சல் (பொருந்தும் வடிப்பான்கள்) இல்லை NothingProcessed=எதுவும் செய்யவில்லை -XEmailsDoneYActionsDone=%s மின்னஞ்சல்கள் தகுதிபெற்றன, %s மின்னஞ்சல்கள் வெற்றிகரமாகச் செயலாக்கப்பட்டன (%s பதிவு/செயல்களுக்கு) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=மின்னஞ்சலுக்கான டெம்ப் EMailsWillHaveMessageID=மின்னஞ்சல்களில் இந்த தொடரியல் பொருந்தும் 'குறிப்புகள்' குறிச்சொல் இருக்கும் PDF_SHOW_PROJECT=ஆவணத்தில் திட்டத்தைக் காட்டு ShowProjectLabel=திட்ட லேபிள் +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=உங்கள் PDF இல் உள்ள சில உரைகளை ஒரே மாதிரியான PDF இல் 2 வெவ்வேறு மொழிகளில் நகல் எடுக்க விரும்பினால், நீங்கள் இந்த இரண்டாவது மொழியை இங்கே அமைக்க வேண்டும், எனவே உருவாக்கப்பட்ட PDF ஆனது ஒரே பக்கத்தில் 2 வெவ்வேறு மொழிகளைக் கொண்டிருக்கும், PDF ஐ உருவாக்கும் போது தேர்ந்தெடுக்கப்பட்ட மொழி மற்றும் இது ( சில PDF வார்ப்புருக்கள் மட்டுமே இதை ஆதரிக்கின்றன). ஒரு PDFக்கு 1 மொழிக்கு காலியாக இருங்கள். PDF_USE_A=இயல்புநிலை PDF வடிவத்திற்கு பதிலாக PDF/A வடிவத்துடன் PDF ஆவணங்களை உருவாக்கவும் FafaIconSocialNetworksDesc=FontAwesome ஐகானின் குறியீட்டை இங்கே உள்ளிடவும். FontAwesome என்றால் என்னவென்று உங்களுக்குத் தெரியாவிட்டால், FA-address-book என்ற பொதுவான மதிப்பைப் பயன்படுத்தலாம். @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/ta_IN/companies.lang b/htdocs/langs/ta_IN/companies.lang index 36b52b72329..7dd16e899b7 100644 --- a/htdocs/langs/ta_IN/companies.lang +++ b/htdocs/langs/ta_IN/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=மூன்றாம் தரப்பினரின் NatureOfContact=தொடர்பு இயல்பு Address=முகவரி State=மாநிலம்/மாகாணம் +StateId=State ID StateCode=மாநிலம்/ மாகாண குறியீடு StateShort=நிலை Region=பிராந்தியம் Region-State=பகுதி - மாநிலம் Country=நாடு CountryCode=நாட்டின் குறியீடு -CountryId=நாட்டின் ஐடி +CountryId=Country ID Phone=தொலைபேசி PhoneShort=தொலைபேசி Skype=ஸ்கைப் @@ -105,6 +106,7 @@ WrongSupplierCode=விற்பனையாளர் குறியீடு CustomerCodeModel=வாடிக்கையாளர் குறியீடு மாதிரி SupplierCodeModel=விற்பனையாளர் குறியீடு மாதிரி Gencod=பார்கோடு +GencodBuyPrice=Barcode of price ref ##### Professional ID ##### ProfId1Short=பேராசிரியர் ஐடி 1 ProfId2Short=பேராசிரியர் ஐடி 2 @@ -162,15 +164,15 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=- -ProfId5CM=- +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) +ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=- -ProfId5ShortCM=- +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. +ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=பேராசிரியர் ஐடி 1 (ஆர்.யு.டி.) ProfId2CO=- @@ -442,7 +444,7 @@ AddAddress=முகவரியைச் சேர்க்கவும் SupplierCategory=விற்பனையாளர் வகை JuridicalStatus200=சுதந்திரமான DeleteFile=கோப்பை அழிக்கவும் -ConfirmDeleteFile=இந்தக் கோப்பை நிச்சயமாக நீக்க விரும்புகிறீர்களா? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=விற்பனை பிரதிநிதிக்கு ஒதுக்கப்பட்டது Organization=அமைப்பு FiscalYearInformation=நிதியாண்டு diff --git a/htdocs/langs/ta_IN/errors.lang b/htdocs/langs/ta_IN/errors.lang index 04fa1d14975..1287e0d82bc 100644 --- a/htdocs/langs/ta_IN/errors.lang +++ b/htdocs/langs/ta_IN/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=மின்னஞ்சல் %s தவறாகத் தெ ErrorBadUrl=Url %s தவறானது ErrorBadValueForParamNotAString=உங்கள் அளவுருவுக்கு மோசமான மதிப்பு. மொழிபெயர்ப்பு இல்லாதபோது இது பொதுவாக இணைக்கப்படும். ErrorRefAlreadyExists=குறிப்பு %s ஏற்கனவே உள்ளது. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=உள்நுழைவு %s ஏற்கனவே உள்ளது. ErrorGroupAlreadyExists=குழு %s ஏற்கனவே உள்ளது. ErrorEmailAlreadyExists=மின்னஞ்சல் %s ஏற்கனவே உள்ளது. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists= %s என்ற பெயரில் ம ErrorPartialFile=கோப்பு சேவையகத்தால் முழுமையாகப் பெறப்படவில்லை. ErrorNoTmpDir=தற்காலிக டைரக்டி %s இல்லை. ErrorUploadBlockedByAddon=PHP/Apache செருகுநிரலால் பதிவேற்றம் தடுக்கப்பட்டது. -ErrorFileSizeTooLarge=கோப்பு அளவு மிகவும் பெரியது. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=புலம் %s மிக நீளமாக உள்ளது. ErrorSizeTooLongForIntType=முழு எண்ணாக அளவு மிக நீளமானது (அதிகபட்சம் %s இலக்கங்கள்) ErrorSizeTooLongForVarcharType=சரம் வகைக்கு மிக நீளமான அளவு (%s எழுத்துகள் அதிகபட்சம்) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=இந்த அம்சம் செயல்ப ErrorPasswordsMustMatch=தட்டச்சு செய்யப்பட்ட இரண்டு கடவுச்சொற்களும் ஒன்றுக்கொன்று பொருந்த வேண்டும் ErrorContactEMail=தொழில்நுட்ப பிழை ஏற்பட்டது. தயவு செய்து, பின்வரும் மின்னஞ்சலுக்கு நிர்வாகியைத் தொடர்புகொள்ளவும் %s மற்றும் பிழைக் குறியீட்டை %s a009a4b7 ErrorWrongValueForField=புலம் %s : ' %s a09a4b739f49fz0 a09a4b739f17f8365837fz0 %s a09a4b739f490 a09a4b739f490 a09a4b739f170a4b739f170a4b739f170a4b739f170a4b739f170a4b739f170a4b739f170a4b739f170a4b730 +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=களம் %s : ' %s ' மதிப்பின் துறையில் %s காணப்படும் அல்ல %s ErrorFieldRefNotIn=புலம் %s : ' %s a09a4b739f17f8365873906878887878787887 ErrorsOnXLines=%s பிழைகள் கண்டறியப்பட்டன @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=முதலில் உங்கள ErrorFailedToFindEmailTemplate=%s என்ற குறியீட்டுப் பெயருடன் டெம்ப்ளேட்டைக் கண்டறிய முடியவில்லை ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=சேவையில் காலம் வரையறுக்கப்படவில்லை. மணிநேர விலையை கணக்கிட வழி இல்லை. ErrorActionCommPropertyUserowneridNotDefined=பயனரின் உரிமையாளர் தேவை -ErrorActionCommBadType=தேர்ந்தெடுக்கப்பட்ட நிகழ்வு வகை (ஐடி: %n, குறியீடு: %s) நிகழ்வு வகை அகராதியில் இல்லை +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=பதிப்பு சரிபார்ப்பு தோல்வி ErrorWrongFileName=கோப்பின் பெயரில் __சம்திங்__ இருக்கக்கூடாது ErrorNotInDictionaryPaymentConditions=கட்டண விதிமுறைகள் அகராதியில் இல்லை, தயவுசெய்து மாற்றவும். @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s ஒரு வரைவு அல்ல ErrorExecIdFailed="id" கட்டளையை இயக்க முடியவில்லை ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=உங்கள் PHP அளவுரு upload_max_filesize (%s) PHP அளவுரு post_max_size (%s) ஐ விட அதிகமாக உள்ளது. இது ஒரு நிலையான அமைப்பு அல்ல. WarningPasswordSetWithNoAccount=இந்த உறுப்பினருக்கு கடவுச்சொல் அமைக்கப்பட்டது. இருப்பினும், பயனர் கணக்கு எதுவும் உருவாக்கப்படவில்லை. எனவே இந்த கடவுச்சொல் சேமிக்கப்பட்டுள்ளது ஆனால் Dolibarr இல் உள்நுழைய பயன்படுத்த முடியாது. இது ஒரு வெளிப்புற தொகுதி/இடைமுகத்தால் பயன்படுத்தப்படலாம், ஆனால் ஒரு உறுப்பினருக்கான உள்நுழைவு அல்லது கடவுச்சொல்லை நீங்கள் வரையறுக்கத் தேவையில்லை என்றால், உறுப்பினர் தொகுதி அமைப்பிலிருந்து "ஒவ்வொரு உறுப்பினருக்கும் ஒரு உள்நுழைவை நிர்வகி" விருப்பத்தை நீங்கள் முடக்கலாம். நீங்கள் உள்நுழைவை நிர்வகிக்க வேண்டும் ஆனால் கடவுச்சொல் எதுவும் தேவையில்லை என்றால், இந்த எச்சரிக்கையைத் தவிர்க்க இந்தப் புலத்தை காலியாக வைத்திருக்கலாம். குறிப்பு: உறுப்பினர் ஒரு பயனருடன் இணைக்கப்பட்டிருந்தால், மின்னஞ்சலை உள்நுழைவாகவும் பயன்படுத்தலாம். -WarningMandatorySetupNotComplete=கட்டாய அளவுருக்களை அமைக்க இங்கே கிளிக் செய்யவும் +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=உங்கள் தொகுதிகள் மற்றும் பயன்பாடுகளை இயக்க இங்கே கிளிக் செய்யவும் WarningSafeModeOnCheckExecDir=எச்சரிக்கை, PHP விருப்பம் safe_mode இயக்கத்தில் உள்ளது, எனவே கட்டளையை php அளவுரு safe_mode_exec_dir a09a4b739f 17f8z39f 17f8z390 மூலம் அறிவிக்கப்பட்ட கோப்பகத்தில் சேமிக்க வேண்டும். WarningBookmarkAlreadyExists=இந்த தலைப்பு அல்லது இந்த இலக்குடன் (URL) புக்மார்க் ஏற்கனவே உள்ளது. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=எச்சரிக்கை, நீங்கள் WarningAvailableOnlyForHTTPSServers=HTTPS பாதுகாப்பான இணைப்பைப் பயன்படுத்தினால் மட்டுமே கிடைக்கும். WarningModuleXDisabledSoYouMayMissEventHere=தொகுதி %s இயக்கப்படவில்லை. எனவே நீங்கள் இங்கு பல நிகழ்வுகளை இழக்க நேரிடலாம். WarningPaypalPaymentNotCompatibleWithStrict='ஸ்டிரிக்ட்' மதிப்பு, ஆன்லைன் கட்டண அம்சங்களைச் சரியாகச் செயல்படாமல் செய்கிறது. அதற்கு பதிலாக 'லாக்ஸ்' பயன்படுத்தவும். +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = மதிப்பு செல்லாது diff --git a/htdocs/langs/ta_IN/externalsite.lang b/htdocs/langs/ta_IN/externalsite.lang deleted file mode 100644 index cc877ee68b4..00000000000 --- a/htdocs/langs/ta_IN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=வெளிப்புற இணையதளத்திற்கான இணைப்பை அமைக்கவும் -ExternalSiteURL=HTML iframe உள்ளடக்கத்தின் வெளிப்புற தள URL -ExternalSiteModuleNotComplete=ExternalSite தொகுதி சரியாக உள்ளமைக்கப்படவில்லை. -ExampleMyMenuEntry=எனது மெனு பதிவு diff --git a/htdocs/langs/ta_IN/ftp.lang b/htdocs/langs/ta_IN/ftp.lang deleted file mode 100644 index e05341534fd..00000000000 --- a/htdocs/langs/ta_IN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP அல்லது SFTP கிளையண்ட் தொகுதி அமைவு -NewFTPClient=புதிய FTP/FTPS இணைப்பு அமைப்பு -FTPArea=FTP/FTPS பகுதி -FTPAreaDesc=இந்தத் திரையானது FTP மற்றும் SFTP சேவையகத்தின் காட்சியைக் காட்டுகிறது. -SetupOfFTPClientModuleNotComplete=FTP அல்லது SFTP கிளையன்ட் தொகுதியின் அமைவு முழுமையடையவில்லை -FTPFeatureNotSupportedByYourPHP=உங்கள் PHP FTP அல்லது SFTP செயல்பாடுகளை ஆதரிக்காது -FailedToConnectToFTPServer=சேவையகத்துடன் இணைக்க முடியவில்லை (சர்வர் %s, port %s) -FailedToConnectToFTPServerWithCredentials=வரையறுக்கப்பட்ட உள்நுழைவு/கடவுச்சொல் மூலம் சர்வரில் உள்நுழைவதில் தோல்வி -FTPFailedToRemoveFile= %s கோப்பை அகற்ற முடியவில்லை. -FTPFailedToRemoveDir=கோப்பகத்தை அகற்றுவதில் தோல்வி -FTPPassiveMode=செயலற்ற பயன்முறை -ChooseAFTPEntryIntoMenu=மெனுவிலிருந்து FTP/SFTP தளத்தைத் தேர்வு செய்யவும்... -FailedToGetFile=%s கோப்புகளைப் பெறுவதில் தோல்வி diff --git a/htdocs/langs/ta_IN/hrm.lang b/htdocs/langs/ta_IN/hrm.lang index 0a31f5cc191..75d86e6469a 100644 --- a/htdocs/langs/ta_IN/hrm.lang +++ b/htdocs/langs/ta_IN/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=திறந்த நிறுவனம் CloseEtablishment=மூடு ஸ்தாபனம் # Dictionary DictionaryPublicHolidays=விடுப்பு - பொது விடுமுறை நாட்கள் -DictionaryDepartment=HRM - துறை பட்டியல் +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - வேலை நிலைகள் # Module Employees=பணியாளர்கள் @@ -70,12 +70,22 @@ RequiredSkills=இந்த வேலைக்கு தேவையான த UserRank=பயனர் தரவரிசை SkillList=திறன் பட்டியல் SaveRank=தரத்தை சேமிக்கவும் -knowHow=எப்படி தெரியும் -HowToBe=எப்படி இருக்க வேண்டும் -knowledge=அறிவு +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=கைவிடுதல் கருத்து DateLastEval=கடைசி மதிப்பீடு தேதி NoEval=இந்த பணியாளருக்கு எந்த மதிப்பீடும் செய்யப்படவில்லை HowManyUserWithThisMaxNote=இந்த தரவரிசையில் உள்ள பயனர்களின் எண்ணிக்கை HighestRank=மிக உயர்ந்த பதவி SkillComparison=திறன் ஒப்பீடு +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/ta_IN/install.lang b/htdocs/langs/ta_IN/install.lang index 5f8e39cf4fa..682b5cd7503 100644 --- a/htdocs/langs/ta_IN/install.lang +++ b/htdocs/langs/ta_IN/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=உள்ளமைவு கோப்பு %s ConfFileIsWritable=உள்ளமைவு கோப்பு %s எழுதக்கூடியது. ConfFileMustBeAFileNotADir=உள்ளமைவு கோப்பு %s ஒரு கோப்பாக இருக்க வேண்டும், கோப்பகமாக இருக்கக்கூடாது. ConfFileReload=உள்ளமைவு கோப்பிலிருந்து அளவுருக்களை மீண்டும் ஏற்றுகிறது. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=இந்த PHP ஆனது POST மற்றும் GET ஆகிய மாறிகளை ஆதரிக்கிறது. PHPSupportPOSTGETKo=உங்கள் PHP அமைப்பு POST மற்றும்/அல்லது GET மாறிகளை ஆதரிக்காது. php.ini இல் variables_order அளவுருவைச் சரிபார்க்கவும். PHPSupportSessions=இந்த PHP அமர்வுகளை ஆதரிக்கிறது. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter='%s' என்ற அளவுருவிற்க ErrorFailedToCreateDatabase='%s' தரவுத்தளத்தை உருவாக்குவதில் தோல்வி. ErrorFailedToConnectToDatabase='%s' தரவுத்தளத்துடன் இணைக்க முடியவில்லை. ErrorDatabaseVersionTooLow=தரவுத்தள பதிப்பு (%s) மிகவும் பழையது. %s அல்லது அதற்கு மேற்பட்ட பதிப்பு தேவை. -ErrorPHPVersionTooLow=PHP பதிப்பு மிகவும் பழையது. பதிப்பு %s தேவை. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=சேவையகத்திற்கான இணைப்பு வெற்றிகரமாக உள்ளது ஆனால் தரவுத்தளமான '%s' கிடைக்கவில்லை. ErrorDatabaseAlreadyExists=தரவுத்தளம் '%s' ஏற்கனவே உள்ளது. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=தரவுத்தளம் இல்லை என்றால், திரும்பிச் சென்று "தரவுத்தளத்தை உருவாக்கு" விருப்பத்தை சரிபார்க்கவும். IfDatabaseExistsGoBackAndCheckCreate=தரவுத்தளம் ஏற்கனவே இருந்தால், திரும்பிச் சென்று "தரவுத்தளத்தை உருவாக்கு" விருப்பத்தைத் தேர்வுநீக்கவும். WarningBrowserTooOld=உலாவியின் பதிப்பு மிகவும் பழையது. உங்கள் உலாவியை Firefox, Chrome அல்லது Opera இன் சமீபத்திய பதிப்பிற்கு மேம்படுத்துவது மிகவும் பரிந்துரைக்கப்படுகிறது. diff --git a/htdocs/langs/ta_IN/knowledgemanagement.lang b/htdocs/langs/ta_IN/knowledgemanagement.lang index 414eebbea0f..9aafa09565d 100644 --- a/htdocs/langs/ta_IN/knowledgemanagement.lang +++ b/htdocs/langs/ta_IN/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = கட்டுரைகள் KnowledgeRecord = கட்டுரை KnowledgeRecordExtraFields = கட்டுரைக்கான கூடுதல் புலங்கள் GroupOfTicket=டிக்கெட்டுகளின் குழு -YouCanLinkArticleToATicketCategory=நீங்கள் ஒரு கட்டுரையை டிக்கெட் குழுவுடன் இணைக்கலாம் (எனவே புதிய டிக்கெட்டுகளின் தகுதியின் போது கட்டுரை பரிந்துரைக்கப்படும்) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=குழுவாக இருக்கும்போது டிக்கெட்டுகளுக்கு பரிந்துரைக்கப்படுகிறது SetObsolete=Set as obsolete diff --git a/htdocs/langs/ta_IN/loan.lang b/htdocs/langs/ta_IN/loan.lang index da99eccc3a8..6f030a5e6f0 100644 --- a/htdocs/langs/ta_IN/loan.lang +++ b/htdocs/langs/ta_IN/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=நிதி அர்ப்பணிப்பு InterestAmount=ஆர்வம் CapitalRemain=மூலதனம் உள்ளது TermPaidAllreadyPaid = இந்த காலம் ஏற்கனவே செலுத்தப்பட்டது -CantUseScheduleWithLoanStartedToPaid = பணம் செலுத்தத் தொடங்கியவுடன் கடனுக்காக திட்டமிடலைப் பயன்படுத்த முடியாது +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = நீங்கள் அட்டவணையைப் பயன்படுத்தினால் ஆர்வத்தை மாற்ற முடியாது # Admin ConfigLoan=தொகுதி கடன் கட்டமைப்பு diff --git a/htdocs/langs/ta_IN/main.lang b/htdocs/langs/ta_IN/main.lang index b61756b95b0..e8857b01547 100644 --- a/htdocs/langs/ta_IN/main.lang +++ b/htdocs/langs/ta_IN/main.lang @@ -4,7 +4,7 @@ DIRECTION=ltr # msungstdlight or cid0ct are for traditional Chinese (traditional does not render with Ubuntu pdf reader) # stsongstdlight or cid0cs are for simplified Chinese # To read Chinese pdf with Linux: sudo apt-get install poppler-data -FONTFORPDF=freemono +FONTFORPDF=freeserif FONTSIZEFORPDF=10 SeparatorDecimal=. SeparatorThousand=, @@ -244,6 +244,7 @@ Designation=விளக்கம் DescriptionOfLine=வரியின் விளக்கம் DateOfLine=வரியின் தேதி DurationOfLine=வரியின் காலம் +ParentLine=Parent line ID Model=ஆவண டெம்ப்ளேட் DefaultModel=இயல்புநிலை ஆவண டெம்ப்ளேட் Action=நிகழ்வு @@ -344,7 +345,7 @@ KiloBytes=கிலோபைட்டுகள் MegaBytes=மெகாபைட்கள் GigaBytes=ஜிகாபைட்கள் TeraBytes=டெராபைட்டுகள் -UserAuthor=மூலம் அமைக்கப்பட்டது +UserAuthor=Created by UserModif=மூலம் புதுப்பிக்கப்பட்டது b=பி. Kb=கேபி @@ -517,6 +518,7 @@ or=அல்லது Other=மற்றவை Others=மற்றவைகள் OtherInformations=பிற தகவல் +Workflow=Workflow Quantity=அளவு Qty=அளவு ChangedBy=மூலம் மாற்றப்பட்டது @@ -619,6 +621,7 @@ MonthVeryShort11=என் MonthVeryShort12=டி AttachedFiles=இணைக்கப்பட்ட கோப்புகள் மற்றும் ஆவணங்கள் JoinMainDoc=முக்கிய ஆவணத்தில் சேரவும் +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=அம்சம் முடக்கப்பட்டது MoveBox=விட்ஜெட்டை நகர்த்தவும் Offered=வழங்கப்பட்டது NotEnoughPermissions=இந்தச் செயலுக்கு உங்களிடம் அனுமதி இல்லை +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=அமர்வு பெயர் Method=முறை Receive=பெறு @@ -798,6 +802,7 @@ URLPhoto=புகைப்படம்/லோகோவின் URL SetLinkToAnotherThirdParty=மற்றொரு மூன்றாம் தரப்பினருக்கான இணைப்பு LinkTo=இணைப்பு LinkToProposal=முன்மொழிவுக்கான இணைப்பு +LinkToExpedition= Link to expedition LinkToOrder=ஆர்டருக்கான இணைப்பு LinkToInvoice=விலைப்பட்டியலுக்கான இணைப்பு LinkToTemplateInvoice=டெம்ப்ளேட் விலைப்பட்டியலுக்கான இணைப்பு @@ -1164,3 +1169,14 @@ NotClosedYet=இன்னும் மூடவில்லை ClearSignature=கையொப்பத்தை மீட்டமைக்கவும் CanceledHidden=ரத்து செய்யப்பட்டது மறைக்கப்பட்டது CanceledShown=காட்டப்பட்டது ரத்து செய்யப்பட்டது +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/ta_IN/members.lang b/htdocs/langs/ta_IN/members.lang index beffc11ef48..60ed236be56 100644 --- a/htdocs/langs/ta_IN/members.lang +++ b/htdocs/langs/ta_IN/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=உறுப்பினர் முடிவு தேத EndSubscription=உறுப்பினர் முடிவு SubscriptionId=பங்களிப்பு ஐடி WithoutSubscription=பங்களிப்பு இல்லாமல் -MemberId=உறுப்பினர் அடையாள எண் +MemberId=Member Id +MemberRef=Member Ref NewMember=புதிய உறுப்பினர் MemberType=உறுப்பினர் வகை MemberTypeId=உறுப்பினர் வகை ஐடி @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=உறுப்பினர் வகையை நீ NewSubscription=புதிய பங்களிப்பு NewSubscriptionDesc=அறக்கட்டளையின் புதிய உறுப்பினராக உங்கள் சந்தாவைப் பதிவுசெய்ய இந்தப் படிவம் உங்களை அனுமதிக்கிறது. உங்கள் சந்தாவைப் புதுப்பிக்க விரும்பினால் (ஏற்கனவே உறுப்பினராக இருந்தால்), அதற்கு பதிலாக %s என்ற மின்னஞ்சல் மூலம் அடித்தள வாரியத்தைத் தொடர்பு கொள்ளவும். Subscription=பங்களிப்பு +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=பங்களிப்புகள் SubscriptionLate=லேட் SubscriptionNotReceived=பங்களிப்பு ஒருபோதும் பெறப்படவில்லை @@ -135,7 +142,7 @@ CardContent=உங்கள் உறுப்பினர் அட்டைய # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=உங்கள் உறுப்பினர் கோரிக்கை பெறப்பட்டது என்பதை உங்களுக்குத் தெரிவிக்க விரும்புகிறோம்.

ThisIsContentOfYourMembershipWasValidated=பின்வரும் தகவலுடன் உங்கள் உறுப்பினர் சரிபார்க்கப்பட்டது என்பதை உங்களுக்குத் தெரிவிக்க விரும்புகிறோம்:

-ThisIsContentOfYourSubscriptionWasRecorded=உங்கள் புதிய சந்தா பதிவுசெய்யப்பட்டது என்பதை உங்களுக்குத் தெரிவிக்க விரும்புகிறோம்.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=உங்கள் சந்தா காலாவதியாகப் போகிறது அல்லது ஏற்கனவே காலாவதியாகிவிட்டது என்பதை உங்களுக்குத் தெரிவிக்க விரும்புகிறோம் (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). நீங்கள் அதை புதுப்பிப்பீர்கள் என்று நம்புகிறோம்.

ThisIsContentOfYourCard=உங்களைப் பற்றி எங்களிடம் உள்ள தகவலின் சுருக்கம் இது. ஏதேனும் தவறாக இருந்தால் எங்களை தொடர்பு கொள்ளவும்.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=விருந்தினரின் தானாகக் கல்வெட்டு ஏற்பட்டால் பெறப்பட்ட அறிவிப்பு மின்னஞ்சலின் பொருள் @@ -198,7 +205,8 @@ NbOfSubscriptions=பங்களிப்புகளின் எண்ணி AmountOfSubscriptions=பங்களிப்புகளிலிருந்து சேகரிக்கப்பட்ட தொகை TurnoverOrBudget=விற்றுமுதல் (ஒரு நிறுவனத்திற்கு) அல்லது பட்ஜெட் (ஒரு அடித்தளத்திற்கு) DefaultAmount=பங்களிப்பு தொகையின் இயல்புநிலை -CanEditAmount=அதன் பங்களிப்பின் அளவை பார்வையாளர் தேர்வு செய்யலாம்/திருத்தலாம் +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=ஒருங்கிணைந்த ஆன்லைன் கட்டணப் பக்கத்தில் செல்லவும் ByProperties=இயற்கையாகவே MembersStatisticsByProperties=இயல்பிலேயே உறுப்பினர்களின் புள்ளிவிவரங்கள் @@ -218,3 +226,5 @@ XExternalUserCreated=%s வெளிப்புற பயனர்(கள்) ForceMemberNature=கட்டாய உறுப்பினர் இயல்பு (தனிநபர் அல்லது நிறுவனம்) CreateDolibarrLoginDesc=உறுப்பினர்களுக்கான பயனர் உள்நுழைவை உருவாக்குவது, பயன்பாட்டோடு இணைக்க அவர்களை அனுமதிக்கிறது. வழங்கப்பட்ட அங்கீகாரங்களைப் பொறுத்து, அவர்கள் தங்கள் கோப்பைக் கலந்தாலோசிக்க அல்லது மாற்றியமைக்க முடியும். CreateDolibarrThirdPartyDesc=மூன்றாம் தரப்பினர் என்பது ஒவ்வொரு பங்களிப்பிற்கும் விலைப்பட்டியல் உருவாக்க முடிவு செய்தால், விலைப்பட்டியலில் பயன்படுத்தப்படும் சட்டப்பூர்வ நிறுவனம் ஆகும். பங்களிப்பைப் பதிவு செய்யும் போது நீங்கள் அதை உருவாக்க முடியும். +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/ta_IN/oauth.lang b/htdocs/langs/ta_IN/oauth.lang index aa85e80f2eb..d14a3f7391f 100644 --- a/htdocs/langs/ta_IN/oauth.lang +++ b/htdocs/langs/ta_IN/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=ஒரு டோக்கன் உருவாக்கப்ப NewTokenStored=டோக்கன் பெறப்பட்டு சேமிக்கப்பட்டது ToCheckDeleteTokenOnProvider=%s OAuth வழங்குநரால் சேமிக்கப்பட்ட அங்கீகாரத்தைச் சரிபார்க்க/நீக்க இங்கே கிளிக் செய்யவும் TokenDeleted=டோக்கன் நீக்கப்பட்டது -RequestAccess=அணுகலைக் கோர/புதுப்பிக்க இங்கே கிளிக் செய்யவும் மற்றும் சேமிக்க புதிய டோக்கனைப் பெறவும் -DeleteAccess=டோக்கனை நீக்க இங்கே கிளிக் செய்யவும் +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=உங்கள் OAuth வழங்குனருடன் உங்கள் நற்சான்றிதழ்களை உருவாக்கும் போது, பின்வரும் URL ஐ வழிமாற்று URI ஆகப் பயன்படுத்தவும்: -ListOfSupportedOauthProviders=உங்கள் OAuth2 வழங்குநர் வழங்கிய நற்சான்றிதழ்களை உள்ளிடவும். ஆதரிக்கப்படும் OAuth2 வழங்குநர்கள் மட்டுமே இங்கே பட்டியலிடப்பட்டுள்ளனர். OAuth2 அங்கீகாரம் தேவைப்படும் பிற தொகுதிக்கூறுகளால் இந்த சேவைகள் பயன்படுத்தப்படலாம். -OAuthSetupForLogin=OAuth டோக்கனை உருவாக்குவதற்கான பக்கம் +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=முந்தைய தாவலைப் பார்க்கவும் +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ஐடி மற்றும் ரகசியம் TOKEN_REFRESH=டோக்கன் புதுப்பிப்பு தற்போது TOKEN_EXPIRED=டோக்கன் காலாவதியானது @@ -23,10 +24,13 @@ TOKEN_DELETE=சேமித்த டோக்கனை நீக்கு OAUTH_GOOGLE_NAME=OAuth Google சேவை OAUTH_GOOGLE_ID=OAuth Google ஐடி OAUTH_GOOGLE_SECRET=OAuth Google ரகசியம் -OAUTH_GOOGLE_DESC=OAuth நற்சான்றிதழ்களை உருவாக்க, இந்தப் பக்கத்திற்குச் செல்லவும் பின்னர் "நற்சான்றிதழ்கள்" OAUTH_GITHUB_NAME=OAuth கிட்ஹப் சேவை OAUTH_GITHUB_ID=OAuth கிட்ஹப் ஐடி OAUTH_GITHUB_SECRET=OAuth கிட்ஹப் ரகசியம் -OAUTH_GITHUB_DESC=OAuth நற்சான்றிதழ்களை உருவாக்க, இந்தப் பக்கத்திற்குச் சென்று பின்னர் "புதிய பயன்பாட்டைப் பதிவுசெய்க" +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth ஸ்ட்ரைப் சோதனை OAUTH_STRIPE_LIVE_NAME=OAuth ஸ்ட்ரைப் லைவ் +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/ta_IN/projects.lang b/htdocs/langs/ta_IN/projects.lang index 31d9293b3d0..5f08cc4a354 100644 --- a/htdocs/langs/ta_IN/projects.lang +++ b/htdocs/langs/ta_IN/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=கட்டணம் செலுத்தப்பட்ட TimeSpentForIntervention=செலவிட்ட நேரம் TimeSpentForInvoice=செலவிட்ட நேரம் OneLinePerUser=ஒரு பயனருக்கு ஒரு வரி -ServiceToUseOnLines=வரிகளில் பயன்படுத்த வேண்டிய சேவை +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=திட்டத்தில் செலவழித்த நேரத்திலிருந்து விலைப்பட்டியல் %s உருவாக்கப்பட்டுள்ளது InterventionGeneratedFromTimeSpent=தலையீடு %s திட்டத்தில் செலவிடப்பட்ட நேரத்திலிருந்து உருவாக்கப்பட்டுள்ளது ProjectBillTimeDescription=திட்டத்தின் பணிகளில் டைம்ஷீட்டை உள்ளிடுகிறீர்களா என்பதைச் சரிபார்த்து, திட்டத்தின் வாடிக்கையாளருக்கு பில் பில் செய்ய டைம்ஷீட்டிலிருந்து விலைப்பட்டியல்(களை) உருவாக்க திட்டமிட்டுள்ளீர்கள் (உள்ளிடப்பட்ட டைம்ஷீட்களின் அடிப்படையில் இல்லாத விலைப்பட்டியலை உருவாக்கத் திட்டமிட்டுள்ளீர்களா எனச் சரிபார்க்க வேண்டாம்). குறிப்பு: விலைப்பட்டியலை உருவாக்க, திட்டத்தின் 'செலவிக்கப்பட்ட நேரம்' தாவலுக்குச் சென்று சேர்க்க வேண்டிய வரிகளைத் தேர்ந்தெடுக்கவும். @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/tg_TJ/admin.lang b/htdocs/langs/tg_TJ/admin.lang index fea843ceb5f..996d1e86757 100644 --- a/htdocs/langs/tg_TJ/admin.lang +++ b/htdocs/langs/tg_TJ/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Арзиши навбатӣ (иваз) MustBeLowerThanPHPLimit=Эзоҳ: конфигуратсияи PHP -и шумо айни замон андозаи максималии файлҳоро барои боргузорӣ ба %s %s маҳдуд мекунад, новобаста аз арзиши ин параметр NoMaxSizeByPHPLimit=Эзоҳ: Дар конфигуратсияи PHP -и шумо маҳдудият муқаррар карда нашудааст MaxSizeForUploadedFiles=Андозаи ҳадди аксари файлҳои боршуда (0 барои манъ кардани боргузорӣ) -UseCaptchaCode=Дар саҳифаи воридшавӣ коди графикӣ (CAPTCHA) -ро истифода баред +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Роҳи пурра ба фармони антивирус AntiVirusCommandExample=Мисол барои ClamAv Daemon (талаб clamav-daemon):/usr/bin/clamdscan
Мисол барои ClamWin (хеле суст): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Параметрҳои бештар дар сатри фармон @@ -477,7 +477,7 @@ InstalledInto=Дар феҳристи %s насб карда шудааст BarcodeInitForThirdparties=Барри коди оммавӣ барои шахсони сеюм BarcodeInitForProductsOrServices=Штрихкоди оммавӣ ё аз нав танзимкунии маҳсулот ё хидмат CurrentlyNWithoutBarCode=Currently, you have %s record on %s %s without barcode defined. -InitEmptyBarCode=Арзиши ибтидоӣ барои сабтҳои холии %s +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Ҳама арзишҳои штрих -кодро тоза кунед ConfirmEraseAllCurrentBarCode=Шумо мутмаинед, ки мехоҳед ҳамаи арзишҳои штрих -кодро нест кунед? AllBarcodeReset=Ҳама арзишҳои штрих -код хориҷ карда шуданд @@ -504,7 +504,7 @@ WarningPHPMailC=- Истифодаи сервери SMTP -и провайдер WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Агар провайдери SMTP -и почтаи электронии шумо бояд муштарии почтаи электрониро бо баъзе суроғаҳои IP маҳдуд кунад (хеле кам), ин суроғаи IP -и агенти корбари почта (MUA) барои барномаи ERP CRM -и шумост: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Барои нишон додани тавсиф пахш кунед DependsOn=Ин модул ба модулҳо ниёз дорад RequiredBy=Ин модул аз ҷониби модулҳо талаб карда мешавад @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Арзиши доимии конфигуратсия ConstantIsOn=Опсияи %s фаъол аст NbOfDays=Шумораи рӯзҳо AtEndOfMonth=Дар охири моҳ -CurrentNext=Ҷорӣ/Оянда +CurrentNext=A given day in month Offset=Офсет AlwaysActive=Ҳамеша фаъол Upgrade=Навсозӣ кардан @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=CTRL+F5 -ро дар клавиатура пахш ку NotSupportedByAllThemes=Уилл бо мавзӯъҳои асосӣ кор мекунад, мумкин аст аз ҷониби мавзӯъҳои беруна дастгирӣ карда нашавад BackgroundColor=Ранги пасзамина TopMenuBackgroundColor=Ранги пасзамина барои менюи боло -TopMenuDisableImages=Пинҳон кардани тасвирҳо дар менюи боло +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Ранги пасзамина барои менюи чап BackgroundTableTitleColor=Ранги пасзамина барои сатри сарлавҳаи Ҷадвал BackgroundTableTitleTextColor=Ранги матн барои сатри сарлавҳаи Ҷадвал @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Эзоҳ: Имконияти истифодаи андоз аз SwapSenderAndRecipientOnPDF=Мавқеи ирсолкунанда ва қабулкунандаро дар ҳуҷҷатҳои PDF иваз кунед FeatureSupportedOnTextFieldsOnly=Огоҳӣ, хусусият танҳо дар майдонҳои матн ва танҳо рӯйхати комбинатсия дастгирӣ карда мешавад. Инчунин параметри URL -и амал = эҷод ё амал = таҳрир бояд муқаррар карда шавад Ё номи саҳифа бояд бо 'new.php' хотима дода шавад, то ин хусусиятро фаъол созад. EmailCollector=Коллексияи почтаи электронӣ +EmailCollectors=Email collectors EmailCollectorDescription=Барои скан кардани қуттиҳои почтаи электронӣ (бо истифода аз протоколи IMAP) ва сабт кардани мактубҳои ба аризаи шумо дар ҷои лозима навишташуда ва/ё ба таври худкор эҷод кардани баъзе сабтҳо (ба монанди роҳбарон), кори ба нақша гирифташуда ва саҳифаи танзимро илова кунед. NewEmailCollector=Коллексияи нави почтаи электронӣ EMailHost=Хости сервери почтаи IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Санаи охирин кӯшиши ҷамъоварӣ DateLastcollectResultOk=Санаи охирини муваффақияти ҷамъоварӣ LastResult=Натиҷаи охирин EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Тасдиқи ҷамъоварии почтаи электронӣ EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Барои коркарди почтаи нав (филтрҳои мувофиқ) нест NothingProcessed=Ҳеҷ коре накардааст -XEmailsDoneYActionsDone=%s мактубҳои мувофиқ, %s бомуваффақият коркард карда шуданд (барои сабт/амалҳои %s) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Шаблон барои почтаи электронӣ EMailsWillHaveMessageID=Почтаи электронӣ дорои "Истинодҳо" хоҳад буд, ки ба ин синтаксис мувофиқат мекунад PDF_SHOW_PROJECT=Нишон додани лоиҳа дар ҳуҷҷат ShowProjectLabel=Нишони лоиҳа +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Агар шумо хоҳед, ки баъзе матнҳо дар PDF -и худ бо 2 забони гуногун дар як PDF -и тавлидшуда такрор карда шаванд, шумо бояд ин забони дуввумро муқаррар кунед, то PDF -и тавлидшуда дар як саҳифа 2 забони гуногунро дар бар гирад, ки ҳангоми тавлиди PDF интихоб шудааст ва ин ( Танҳо чанд қолаби PDF инро дастгирӣ мекунанд). Барои 1 забон барои як PDF холӣ бошед. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Дар ин ҷо рамзи тасвири FontAwesomeро ворид кунед. Агар шумо намедонед, ки FontAwesome чист, шумо метавонед арзиши умумии fa-address-book -ро истифода баред. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/tg_TJ/companies.lang b/htdocs/langs/tg_TJ/companies.lang index 4e50aa4f7a6..efd0993aac5 100644 --- a/htdocs/langs/tg_TJ/companies.lang +++ b/htdocs/langs/tg_TJ/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Табиати шахси сеюм NatureOfContact=Табиати тамос Address=Суроға State=Давлат/вилоят +StateId=State ID StateCode=Рамзи иёлот/вилоят StateShort=Давлат Region=Минтақа Region-State=Минтақа - Давлат Country=Кишвар CountryCode=Коди давлат -CountryId=ID и кишвар +CountryId=Country ID Phone=Телефон PhoneShort=Телефон Skype=Skype @@ -105,6 +106,7 @@ WrongSupplierCode=Рамзи фурӯшанда нодуруст аст CustomerCodeModel=Модели рамзи муштариён SupplierCodeModel=Модели рамзи фурӯшанда Gencod=Баркод +GencodBuyPrice=Barcode of price ref ##### Professional ID ##### ProfId1Short=Проф. Id 1 ProfId2Short=Проф. Id 2 @@ -162,15 +164,15 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=- -ProfId5CM=- +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) +ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=- -ProfId5ShortCM=- +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. +ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Профессор 1 (R.U.T.) ProfId2CO=- @@ -442,7 +444,7 @@ AddAddress=Иловаи адрес SupplierCategory=Категорияи фурӯшанда JuridicalStatus200=Мустақил DeleteFile=Файлро нест кунед -ConfirmDeleteFile=Шумо мутмаин ҳастед, ки мехоҳед ин файлро нест кунед? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Ба намояндаи фурӯш таъин карда шудааст Organization=Ташкилот FiscalYearInformation=Соли молиявӣ diff --git a/htdocs/langs/tg_TJ/errors.lang b/htdocs/langs/tg_TJ/errors.lang index b861ec4b276..a725dddd129 100644 --- a/htdocs/langs/tg_TJ/errors.lang +++ b/htdocs/langs/tg_TJ/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Почтаи электронии %s нодуруст ба на ErrorBadUrl=URL %s нодуруст аст ErrorBadValueForParamNotAString=Арзиши бад барои параметри шумо. Он одатан ҳангоми набудани тарҷума замима мешавад. ErrorRefAlreadyExists=Истинод %s аллакай вуҷуд дорад. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Вуруд %s аллакай вуҷуд дорад. ErrorGroupAlreadyExists=Гурӯҳи %s аллакай вуҷуд дорад. ErrorEmailAlreadyExists=Почтаи электронӣ %s аллакай мавҷуд аст. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Файли дигаре бо номи %s ErrorPartialFile=Файл аз ҷониби сервер пурра қабул нашудааст. ErrorNoTmpDir=Роҳнамои муваққатӣ %s вуҷуд надорад. ErrorUploadBlockedByAddon=Боркунӣ аз ҷониби плагини PHP/Apache баста шудааст. -ErrorFileSizeTooLarge=Андозаи файл хеле калон аст. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Майдони %s хеле дароз аст. ErrorSizeTooLongForIntType=Андоза барои намуди int хеле дароз аст (%s рақамҳои ҳадди аксар) ErrorSizeTooLongForVarcharType=Андоза барои навъи сатр хеле дароз аст (%s аломатҳои ҳадди аксар) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Барои кор кардани ин хусус н ErrorPasswordsMustMatch=Ҳарду паролҳои чопшуда бояд бо ҳам мувофиқ бошанд ErrorContactEMail=Хатогии техникӣ рух дод. Лутфан, бо администратор тамос гиред, то почтаи электронии %s дошта бошед ва рамзи хатогиро %s дар паёми худ ирсол кунед ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Field %s : « %s » аст, ки арзиши дар соҳаи %s аз ёфт нашуд %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s хатогиҳо ёфт шуданд @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Шумо аввал бояд ҷадва ErrorFailedToFindEmailTemplate=Шаблон бо номи рамзи %s ёфт нашуд ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Давомнокии хидмат муайян карда нашудааст. Ҳеҷ гуна ҳисоб кардани нархи соатбайъ. ErrorActionCommPropertyUserowneridNotDefined=Соҳиби корбар лозим аст -ErrorActionCommBadType=Навъи рӯйдоди интихобшуда (id: %n, рамз: %s) дар луғати навъи чорабиниҳо вуҷуд надорад +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Санҷиши версия ноком шуд ErrorWrongFileName=Номи файл наметавонад дар он __SOMETHING__ дошта бошад ErrorNotInDictionaryPaymentConditions=Дар луғати шартҳои пардохт нест, лутфан тағир диҳед. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Параметри PHP -и шумо upload_max_filesize (%s) аз параметрҳои PHP post_max_size (%s) баландтар аст. Ин танзимоти пайдарпай нест. WarningPasswordSetWithNoAccount=Барои ин аъзо парол таъин карда шуд. Бо вуҷуди ин, ягон ҳисоби корбарӣ таъсис дода нашудааст. Ҳамин тавр, ин парол нигоҳ дошта мешавад, аммо барои ворид шудан ба Dolibarr наметавонад истифода шавад. Он метавонад аз ҷониби модул/интерфейси беруна истифода шавад, аммо агар ба шумо ягон узвият ё паролро муайян кардан лозим набошад, шумо метавонед имконоти "Идоракунии вуруд барои ҳар як аъзо" -ро аз танзимоти модули аъзо ғайрифаъол кунед. Агар ба шумо лозим аст, ки воридшавиро идора кунед, аммо ба парол ниёз надоред, шумо метавонед ин майдонро холӣ нигоҳ доред, то ин огоҳӣ пешгирӣ карда шавад. Эзоҳ: Почтаи электронӣ инчунин метавонад ҳамчун логин истифода шавад, агар аъзо ба корбар пайванд бошад. -WarningMandatorySetupNotComplete=Барои насб кардани параметрҳои ҳатмӣ ин ҷо клик кунед +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Барои фаъол кардани модулҳо ва барномаҳои худ ин ҷо клик кунед WarningSafeModeOnCheckExecDir=Огоҳӣ, варианти PHP safe_mode фаъол аст, бинобар ин фармон бояд дар дохили феҳристи бо параметри php эълоншудаи safe_mode_exec_dir нигоҳ дошта шавад. WarningBookmarkAlreadyExists=Замимаи дорои ин унвон ё ин ҳадаф (URL) аллакай вуҷуд дорад. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Огоҳӣ, шумо наметавонед муста WarningAvailableOnlyForHTTPSServers=Танҳо дар сурати дастрас будани пайвасти боэътимоди HTTPS дастрас аст. WarningModuleXDisabledSoYouMayMissEventHere=Модули %s фаъол карда нашудааст. Ҳамин тавр, шумо метавонед дар ин ҷо бисёр чорабиниҳоро аз даст диҳед. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/tg_TJ/externalsite.lang b/htdocs/langs/tg_TJ/externalsite.lang deleted file mode 100644 index 9d2064b2e93..00000000000 --- a/htdocs/langs/tg_TJ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Пайвастшавӣ ба вебсайти беруна -ExternalSiteURL=URL -и сайти берунии мундариҷаи HTML iframe -ExternalSiteModuleNotComplete=Модули ExternalSite дуруст танзим нашудааст. -ExampleMyMenuEntry=Вуруди менюи ман diff --git a/htdocs/langs/tg_TJ/ftp.lang b/htdocs/langs/tg_TJ/ftp.lang deleted file mode 100644 index 85090f61c8d..00000000000 --- a/htdocs/langs/tg_TJ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Танзими модули мизоҷи FTP ё SFTP -NewFTPClient=Танзимоти нави пайвастшавии FTP/FTPS -FTPArea=Минтақаи FTP/FTPS -FTPAreaDesc=Ин экран намуди сервери FTP ва SFTP -ро нишон медиҳад. -SetupOfFTPClientModuleNotComplete=Танзимоти модули муштарии FTP ё SFTP ба назар мерасад -FTPFeatureNotSupportedByYourPHP=PHP -и шумо вазифаҳои FTP ё SFTP -ро пуштибонӣ намекунад -FailedToConnectToFTPServer=Ба сервер пайваст нашуд (сервер %s, порти %s) -FailedToConnectToFTPServerWithCredentials=Воридшавӣ ба сервер бо логин/пароли муайяншуда ноком шуд -FTPFailedToRemoveFile=Файли %s нест карда нашуд. -FTPFailedToRemoveDir=Феҳристи %s нест карда нашуд: иҷозатҳоро тафтиш кунед ва феҳрист холӣ аст. -FTPPassiveMode=Ҳолати ғайрифаъол -ChooseAFTPEntryIntoMenu=Аз меню сайти FTP/SFTP -ро интихоб кунед ... -FailedToGetFile=Файлҳои %s гирифта нашуданд diff --git a/htdocs/langs/tg_TJ/hrm.lang b/htdocs/langs/tg_TJ/hrm.lang index 03c1aa53b3d..e170b0cf1d1 100644 --- a/htdocs/langs/tg_TJ/hrm.lang +++ b/htdocs/langs/tg_TJ/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Муассисаи кушод CloseEtablishment=Муассисаи наздик # Dictionary DictionaryPublicHolidays=Рухсатӣ - рӯзҳои истироҳат -DictionaryDepartment=HRM - Рӯйхати шӯъбаҳо +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Ҷойҳои корӣ # Module Employees=Кормандон @@ -20,13 +20,14 @@ Employee=Корманд NewEmployee=Корманди нав ListOfEmployees=Рӯйхати кормандон HrmSetup=HRM module setup -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Job -Jobs=Jobs +JobPosition=Job +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Position -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/tg_TJ/install.lang b/htdocs/langs/tg_TJ/install.lang index ea747e72573..ac851fed382 100644 --- a/htdocs/langs/tg_TJ/install.lang +++ b/htdocs/langs/tg_TJ/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Файли танзимот %s навишта н ConfFileIsWritable=Файли танзимот %s навиштан мумкин аст. ConfFileMustBeAFileNotADir=Файли танзимот %s бояд файл бошад, на директория. ConfFileReload=Бозсозии параметрҳо аз файли танзимот. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Ин PHP тағирёбандаҳои POST ва GET -ро дастгирӣ мекунад. PHPSupportPOSTGETKo=Эҳтимол аст, ки PHP -и шумо тағирёбандаҳои POST ва/ё GET -ро дастгирӣ намекунад. Параметри variables_order -ро дар php.ini санҷед. PHPSupportSessions=Ин PHP сессияҳоро дастгирӣ мекунад. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Шояд шумо барои параметри '%s' ErrorFailedToCreateDatabase=Бунёди махзани '%s' ноком шуд. ErrorFailedToConnectToDatabase=Ба базаи '%s' пайваст шудан муяссар нашуд. ErrorDatabaseVersionTooLow=Версияи пойгоҳи додаҳо (%s) хеле кӯҳна аст. Версияи %s ё болотар лозим аст. -ErrorPHPVersionTooLow=Версияи PHP хеле кӯҳна аст. Версияи %s лозим аст. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Пайвастшавӣ ба сервер муваффақ шуд, аммо пойгоҳи додаҳои '%s' ёфт нашуд. ErrorDatabaseAlreadyExists=Пойгоҳи додаҳои '%s' аллакай вуҷуд дорад. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Агар пойгоҳи додаҳо вуҷуд надошта бошад, ба қафо баргардед ва имкони "Эҷоди пойгоҳи додаҳо" -ро тафтиш кунед. IfDatabaseExistsGoBackAndCheckCreate=Агар пойгоҳи додаҳо аллакай вуҷуд дошта бошад, ба қафо баргардед ва "Эҷоди пойгоҳи додаҳо" -ро интихоб кунед. WarningBrowserTooOld=Версияи браузер хеле кӯҳна аст. Навсозии браузери шумо ба версияи охирини Firefox, Chrome ё Opera хеле тавсия дода мешавад. diff --git a/htdocs/langs/tg_TJ/knowledgemanagement.lang b/htdocs/langs/tg_TJ/knowledgemanagement.lang index 6d40f2f2022..cd5a2372d9e 100644 --- a/htdocs/langs/tg_TJ/knowledgemanagement.lang +++ b/htdocs/langs/tg_TJ/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Мақолаҳо KnowledgeRecord = Мақола KnowledgeRecordExtraFields = Майдони экзотикӣ барои мақола GroupOfTicket=Гурӯҳи чиптаҳо -YouCanLinkArticleToATicketCategory=Шумо метавонед мақоларо ба гурӯҳи чиптаҳо пайваст кунед (аз ин рӯ мақола ҳангоми тахассуси чиптаҳои нав пешниҳод карда мешавад) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Suggested for tickets when group is SetObsolete=Set as obsolete diff --git a/htdocs/langs/tg_TJ/loan.lang b/htdocs/langs/tg_TJ/loan.lang index 59935ba49d6..ae1ca888f32 100644 --- a/htdocs/langs/tg_TJ/loan.lang +++ b/htdocs/langs/tg_TJ/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Ӯҳдадории молиявӣ InterestAmount=Фоиз CapitalRemain=Сармоя боқӣ мемонад TermPaidAllreadyPaid = Ин мӯҳлат аллакай пардохта шудааст -CantUseScheduleWithLoanStartedToPaid = Ман наметавонам банақшагирро барои қарз бо оғози пардохт истифода барам +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Агар шумо ҷадвалро истифода баред, шумо наметавонед фоизҳоро тағир диҳед # Admin ConfigLoan=Танзимоти қарзи модул diff --git a/htdocs/langs/tg_TJ/main.lang b/htdocs/langs/tg_TJ/main.lang index 470a718cd60..96bf4d9559f 100644 --- a/htdocs/langs/tg_TJ/main.lang +++ b/htdocs/langs/tg_TJ/main.lang @@ -244,6 +244,7 @@ Designation=Тавсиф DescriptionOfLine=Тавсифи хат DateOfLine=Санаи хат DurationOfLine=Давомнокии хат +ParentLine=Parent line ID Model=Шаблон ҳуҷҷат DefaultModel=Шаблон ҳуҷҷати пешфарз Action=Чорабинӣ @@ -344,7 +345,7 @@ KiloBytes=Килобайтҳо MegaBytes=Мегабайт GigaBytes=Гигабайтҳо TeraBytes=Терабайтҳо -UserAuthor=Аз ҷониби интизорӣ +UserAuthor=Created by UserModif=Навсозӣ аз ҷониби b=б. Kb=Кб @@ -517,6 +518,7 @@ or=ё Other=Дигар Others=Дигарон OtherInformations=Маълумоти дигар +Workflow=Workflow Quantity=Миқдор Qty=Миқдори ChangedBy=Аз ҷониби тағир дода шудааст @@ -619,6 +621,7 @@ MonthVeryShort11=Н. MonthVeryShort12=Д. AttachedFiles=Файлҳо ва ҳуҷҷатҳои замимашуда JoinMainDoc=Ба ҳуҷҷати асосӣ ҳамроҳ шавед +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH: SS @@ -709,6 +712,7 @@ FeatureDisabled=Хусусият хомӯш карда шудааст MoveBox=Виджетро интиқол диҳед Offered=Пешниҳод шудааст NotEnoughPermissions=Шумо барои ин амал иҷозат надоред +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Номи сессия Method=Усул Receive=Гирифтан @@ -798,6 +802,7 @@ URLPhoto=URL -и акс/логотип SetLinkToAnotherThirdParty=Истинод ба шахси сеюм LinkTo=Истинод ба LinkToProposal=Пайванд ба пешниҳод +LinkToExpedition= Link to expedition LinkToOrder=Истинод ба фармоиш LinkToInvoice=Истинод ба ҳисобнома -фактура LinkToTemplateInvoice=Истинод ба ҳисобнома -фактура @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/tg_TJ/members.lang b/htdocs/langs/tg_TJ/members.lang index 43a74d7b508..aa189d45d8e 100644 --- a/htdocs/langs/tg_TJ/members.lang +++ b/htdocs/langs/tg_TJ/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Идентификатсияи аъзо +MemberId=Member Id +MemberRef=Member Ref NewMember=Аъзои нав MemberType=Навъи аъзо MemberTypeId=Идентификатори намуди аъзо @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Навъи аъзоро нест кардан мумк NewSubscription=New contribution NewSubscriptionDesc=Ин шакл ба шумо имкон медиҳад, ки обунаи худро ҳамчун узви нави бунёд сабт кунед. Агар шумо хоҳед, ки обунаи худро навсозӣ кунед (агар аллакай узв бошад), лутфан ба Шӯрои бунёд тавассути почтаи электронии %s муроҷиат кунед. Subscription=Contribution +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Contributions SubscriptionLate=Дер SubscriptionNotReceived=Contribution never received @@ -135,7 +142,7 @@ CardContent=Мундариҷаи корти узви шумо # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Мо мехоҳем ба шумо хабар диҳем, ки дархости узвияти шумо қабул шудааст.

ThisIsContentOfYourMembershipWasValidated=Мо мехоҳем ба шумо хабар диҳем, ки узвияти шумо бо маълумоти зерин тасдиқ карда шудааст:

-ThisIsContentOfYourSubscriptionWasRecorded=Мо мехоҳем ба шумо хабар диҳем, ки обунаи нави шумо сабт шудааст.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Мо мехоҳем ба шумо хабар диҳем, ки обунаи шумо ба охир мерасад ё аллакай ба охир расидааст (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Умедворем, ки шумо онро навсозӣ мекунед.

ThisIsContentOfYourCard=Ин хулосаи маълумоти мо дар бораи шумост. Лутфан бо мо тамос гиред, агар чизе нодуруст бошад.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Мавзӯи почтаи огоҳинома дар сурати худкор навиштани меҳмон гирифта мешавад @@ -198,7 +205,8 @@ NbOfSubscriptions=Number of contributions AmountOfSubscriptions=Amount collected from contributions TurnoverOrBudget=Гардиш (барои ширкат) ё буҷет (барои таҳкурсӣ) DefaultAmount=Default amount of contribution -CanEditAmount=Visitor can choose/edit amount of its contribution +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Ба саҳифаи маҷмӯии пардохти онлайн гузаред ByProperties=Аз рӯи табиат MembersStatisticsByProperties=Аъзоёни омор аз рӯи табиат @@ -218,3 +226,5 @@ XExternalUserCreated=%s корбари беруна сохта шудааст ForceMemberNature=Хусусияти узви қувва (инфиродӣ ё корпоративӣ) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/tg_TJ/oauth.lang b/htdocs/langs/tg_TJ/oauth.lang index 844e0791c37..1a88edeb3a2 100644 --- a/htdocs/langs/tg_TJ/oauth.lang +++ b/htdocs/langs/tg_TJ/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Нишон тавлид шуд ва дар пойгоҳи дод NewTokenStored=Токен қабул ва захира карда шуд ToCheckDeleteTokenOnProvider=Барои тафтиш/нест кардани иҷозати аз ҷониби провайдери %s OAuth сабтшуда ин ҷо клик кунед TokenDeleted=Нишон нест карда шуд -RequestAccess=Барои дархост кардан/нав кардани дастрасӣ ва гирифтани аломати нав барои наҷот ин ҷо клик кунед -DeleteAccess=Барои нест кардани аломат ин ҷо клик кунед +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Ҳангоми эҷоди эътимодномаи худ бо провайдери OAuth URL -и зеринро ҳамчун URI масир истифода баред: -ListOfSupportedOauthProviders=Эътимодномаеро, ки провайдери OAuth2 пешниҳод кардааст, ворид кунед. Дар ин ҷо танҳо провайдерҳои пуштибони OAuth2 номбар шудаанд. Ин хидматҳо метавонанд аз ҷониби дигар модулҳое истифода шаванд, ки ба тасдиқи OAuth2 ниёз доранд. -OAuthSetupForLogin=Саҳифа барои тавлиди OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Ба ҷадвали қаблӣ нигаред +OAuthProvider=OAuth provider OAuthIDSecret=ID ва махфияти OAuth TOKEN_REFRESH=Ҳозираи навсозии токен TOKEN_EXPIRED=Мӯҳлати нишона гузаштааст @@ -23,10 +24,13 @@ TOKEN_DELETE=Нишони захирашударо нест кунед OAUTH_GOOGLE_NAME=Хидмати OAuth Google OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=Сирри Google OAuth -OAUTH_GOOGLE_DESC=Ба ба ин саҳифа равед ва сипас "Эътимоднома" барои эҷоди маълумоти OAuth OAUTH_GITHUB_NAME=Хидмати OAuth GitHub OAUTH_GITHUB_ID=Шиносаи OAuth GitHub OAUTH_GITHUB_SECRET=Сирри OAuth GitHub -OAUTH_GITHUB_DESC=Ба ба ин саҳифа равед ва сипас "Эҷоди як барномаи навро сабт кунед" то эътимодномаи OAuth эҷод кунед. +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=Санҷиши рахи OAuth OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/tg_TJ/projects.lang b/htdocs/langs/tg_TJ/projects.lang index 0a529de8455..b5fadb314a1 100644 --- a/htdocs/langs/tg_TJ/projects.lang +++ b/htdocs/langs/tg_TJ/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Вақти сарфшуда ҳисоб карда мешава TimeSpentForIntervention=Вақти сарфшуда TimeSpentForInvoice=Вақти сарфшуда OneLinePerUser=Як сатр барои як корбар -ServiceToUseOnLines=Хизмат барои истифода дар хатҳо +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Ҳисобнома -фактура %s аз вақти сарфшуда дар лоиҳа таҳия шудааст InterventionGeneratedFromTimeSpent=Мудохила %s аз вақти сарфшуда дар лоиҳа тавлид шудааст ProjectBillTimeDescription=Санҷед, ки оё шумо ба ҷадвали вақт оид ба вазифаҳои лоиҳа ворид мешавед ВА шумо ният доред, ки аз ҷадвали вақт ҳисобнома -фактура (ҳо) эҷод кунед, то ба фармоишгари лоиҳа ҳисоб кунед (оё тафтиш накунед, ки оё шумо нақшаи ҳисобнома -фактураро тартиб додаед, ки ба ҷадвали вақт дохил нашудааст). Эзоҳ: Барои таҳияи ҳисобнома -фактура, ба ҷадвали 'Вақти сарфшуда' -и лоиҳа гузаред ва сатрҳои дохилшударо интихоб кунед. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/th_TH/admin.lang b/htdocs/langs/th_TH/admin.lang index 70e693f4b0d..700ff31983e 100644 --- a/htdocs/langs/th_TH/admin.lang +++ b/htdocs/langs/th_TH/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=ค่าถัดไป (เปลี่ยน) MustBeLowerThanPHPLimit=หมายเหตุ: ปัจจุบันการกำหนดค่า PHP ของคุณจำกัดขนาดไฟล์สูงสุดสำหรับการอัปโหลด %s%sโดยไม่คำนึงถึงค่าของพารามิเตอร์นี้ NoMaxSizeByPHPLimit=หมายเหตุ: ไม่ จำกัด มีการตั้งค่าในการกำหนดค่าของ PHP MaxSizeForUploadedFiles=ขนาดสูงสุดของไฟล์ที่อัปโหลด (0 ไม่อนุญาตให้อัปโหลดใด ๆ ) -UseCaptchaCode=ใช้รหัสแบบกราฟิก (CAPTCHA) บนหน้าเข้าสู่ระบบ +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=เส้นทางแบบเต็มคำสั่งป้องกันไวรัส AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= พารามิเตอร์เพิ่มเติมเกี่ยวกับบรรทัดคำสั่ง @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=If your email SMTP provider need to restrict email client to some IP addresses (very rare), this is the IP address of the mail user agent (MUA) for your ERP CRM application: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Click to show description DependsOn=This module needs the module(s) RequiredBy=This module is required by module(s) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=ในตอนท้ายของเดือน -CurrentNext=Current/Next +CurrentNext=A given day in month Offset=สาขา AlwaysActive=ใช้งานอยู่เสมอ Upgrade=อัพเกรด @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Press CTRL+F5 on keyboard or clear your browser cache a NotSupportedByAllThemes=Will works with core themes, may not be supported by external themes BackgroundColor=สีพื้นหลัง TopMenuBackgroundColor=สีพื้นหลังสำหรับเมนูยอดนิยม -TopMenuDisableImages=Hide images in Top menu +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=สีพื้นหลังสำหรับเมนูด้านซ้าย BackgroundTableTitleColor=Background color for Table title line BackgroundTableTitleTextColor=Text color for Table title line @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/th_TH/companies.lang b/htdocs/langs/th_TH/companies.lang index 926976c9a55..ae77fd5da39 100644 --- a/htdocs/langs/th_TH/companies.lang +++ b/htdocs/langs/th_TH/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature of Third party NatureOfContact=Nature of Contact Address=ที่อยู่ State=รัฐ / จังหวัด +StateId=State ID StateCode=State/Province code StateShort=State Region=ภูมิภาค Region-State=Region - State Country=ประเทศ CountryCode=รหัสประเทศ -CountryId=รหัสประเทศ +CountryId=Country ID Phone=โทรศัพท์ PhoneShort=โทรศัพท์ Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=คนอื่น ๆ ProfId6ShortCM=- ProfId1CO=ศหมายเลข 1 (RUT) diff --git a/htdocs/langs/th_TH/errors.lang b/htdocs/langs/th_TH/errors.lang index 43200416193..efeb030607d 100644 --- a/htdocs/langs/th_TH/errors.lang +++ b/htdocs/langs/th_TH/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/th_TH/externalsite.lang b/htdocs/langs/th_TH/externalsite.lang deleted file mode 100644 index f650f17c22f..00000000000 --- a/htdocs/langs/th_TH/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=การติดตั้งการเชื่อมโยงไปยังเว็บไซต์ภายนอก -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=โมดูล ExternalSite ไม่ได้กำหนดค่าอย่างถูกต้อง -ExampleMyMenuEntry=รายการเมนู diff --git a/htdocs/langs/th_TH/ftp.lang b/htdocs/langs/th_TH/ftp.lang deleted file mode 100644 index e7a78ac1a66..00000000000 --- a/htdocs/langs/th_TH/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=การติดตั้งโมดูล FTP ไคลเอนต์ -NewFTPClient=การตั้งค่าการเชื่อมต่อใหม่ FTP -FTPArea=พื้นที่ FTP -FTPAreaDesc=หน้าจอนี้จะแสดงให้คุณเห็นเนื้อหาในมุมมองของ FTP เซิร์ฟเวอร์ -SetupOfFTPClientModuleNotComplete=การติดตั้งโมดูลลูกค้า FTP ดูเหมือนว่าจะไม่สมบูรณ์ -FTPFeatureNotSupportedByYourPHP=PHP ของคุณไม่สนับสนุนฟังก์ชั่น FTP -FailedToConnectToFTPServer=ล้มเหลวในการเชื่อมต่อกับเซิร์ฟเวอร์ FTP (เซิร์ฟเวอร์% s พอร์ต% s) -FailedToConnectToFTPServerWithCredentials=ล้มเหลวในการเข้าสู่เซิร์ฟเวอร์ FTP ที่มีกำหนดเข้าสู่ระบบ / รหัสผ่าน -FTPFailedToRemoveFile=ไม่สามารถลบไฟล์% s -FTPFailedToRemoveDir=ไม่สามารถลบไดเรกทอรี% s (สิทธิ์ตรวจสอบไดเรกทอรีที่ว่างเปล่า) -FTPPassiveMode=โหมด Passive -ChooseAFTPEntryIntoMenu=Choose a FTP entry into menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/th_TH/install.lang b/htdocs/langs/th_TH/install.lang index 87e87a11afc..041c1efd3b1 100644 --- a/htdocs/langs/th_TH/install.lang +++ b/htdocs/langs/th_TH/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=ไฟล์การกำหนดค่า %sไ ConfFileIsWritable=ไฟล์การกำหนดค่า %sสามารถเขียนได้ ConfFileMustBeAFileNotADir=ไฟล์การกำหนดค่า %sต้องเป็นไฟล์ ไม่ใช่ไดเร็กทอรี ConfFileReload=กำลังโหลดพารามิเตอร์อีกครั้งจากไฟล์การกำหนดค่า -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP นี้สนับสนุนตัวแปร POST และ GET PHPSupportPOSTGETKo=เป็นไปได้ว่าการตั้งค่า PHP ของคุณไม่รองรับตัวแปร POST และ/หรือ GET ตรวจสอบพารามิเตอร์ variables_order ใน php.ini PHPSupportSessions=PHP นี้รองรับเซสชัน @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=คุณอาจจะพิมพ์ค่าท ErrorFailedToCreateDatabase=ไม่สามารถสร้างฐานข้อมูล '%s' ErrorFailedToConnectToDatabase=ไม่สามารถเชื่อมต่อกับฐานข้อมูล '%s' ErrorDatabaseVersionTooLow=เวอร์ชั่นฐานข้อมูล (%s) เก่าเกินไป ต้องใช้เวอร์ชั่น %s หรือสูงกว่า -ErrorPHPVersionTooLow=PHP รุ่นเก่าเกินไป % s รุ่นจะต้อง +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=การเชื่อมต่อกับเซิร์ฟเวอร์สำเร็จ แต่ไม่พบฐานข้อมูล '%s' ErrorDatabaseAlreadyExists=ฐานข้อมูล '%s' อยู่แล้ว +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=หากไม่มีฐานข้อมูล ให้ย้อนกลับและเลือกตัวเลือก "สร้างฐานข้อมูล" IfDatabaseExistsGoBackAndCheckCreate=ถ้าฐานข้อมูลที่มีอยู่แล้วให้กลับไปและยกเลิก "สร้างฐานข้อมูลตัวเลือก" WarningBrowserTooOld=เวอร์ชันของเบราว์เซอร์เก่าเกินไป ขอแนะนำให้อัปเกรดเบราว์เซอร์ของคุณเป็น Firefox, Chrome หรือ Opera เวอร์ชันล่าสุด diff --git a/htdocs/langs/th_TH/members.lang b/htdocs/langs/th_TH/members.lang index db2de131b02..4a37d35e480 100644 --- a/htdocs/langs/th_TH/members.lang +++ b/htdocs/langs/th_TH/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=รหัสสมาชิก +MemberId=Member Id +MemberRef=Member Ref NewMember=สมาชิกใหม่ MemberType=ประเภทสมาชิก MemberTypeId=หมายเลขสมาชิกประเภท @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/th_TH/stocks.lang b/htdocs/langs/th_TH/stocks.lang index a1ff3eff301..1a7262d62ce 100644 --- a/htdocs/langs/th_TH/stocks.lang +++ b/htdocs/langs/th_TH/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Inventory date Inventories=Inventories NewInventory=New inventory @@ -254,7 +254,7 @@ ReOpen=เปิดใหม่ ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=เริ่มต้น InventoryStartedShort=เริ่มต้น ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Settings +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/tr_TR/admin.lang b/htdocs/langs/tr_TR/admin.lang index df05cedcc71..1dedefb1c10 100644 --- a/htdocs/langs/tr_TR/admin.lang +++ b/htdocs/langs/tr_TR/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Sonraki değer (değiştirmeler) MustBeLowerThanPHPLimit=Not: PHP yapılandırmanız şu anda bu parametrenin değerine bakılmaksızın %s %s'a yükleme için maksimum dosya boyutunu sınırlıyor NoMaxSizeByPHPLimit=Not: PHP yapılandırmanızda hiç sınır ayarlanmamış MaxSizeForUploadedFiles=Yüklenen dosyalar için maksimum boyut (herhangi bir yüklemeye izin vermemek için 0 olarak ayarlayın) -UseCaptchaCode=Oturum açma sayfasında grafiksel kod (CAPTCHA) kullan +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Antivirüs komutu tam yolu AntiVirusCommandExample=ClamAv Daemon örneği (clamav-daemon gerektirir):/usr/bin/clamdscan
ClamWin örneği (çok çok yavaş): c:\\Progra ~ 1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Komut satırında daha çok parametre @@ -504,7 +504,7 @@ WarningPHPMailC=- E-posta göndermek için kendi E-posta Servis Sağlayıcınız WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=E-posta SMTP sağlayıcınızın e-posta istemcisini bazı IP adresleriyle kısıtlaması gerekiyorsa (çok nadir), bu, ERP CRM uygulamanız için posta kullanıcı aracısının (MUA) IP adresidir: %s. WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Açıklamayı görmek için tıkla DependsOn=Bu modülün gerektirdiği modül(ler) RequiredBy=Bu modül, modül(ler) için zorunludur @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Bir konfigürasyon sabitinin değeri ConstantIsOn=%s seçeneği açık NbOfDays=Gün sayısı AtEndOfMonth=Ay sonunda -CurrentNext=Güncel/Sonraki +CurrentNext=A given day in month Offset=Sapma AlwaysActive=Her zaman etkin Upgrade=Yükselt @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Bu değeri değiştirdikten sonra geçerli olabilmesi i NotSupportedByAllThemes=Yalnızca çekirdek temaları ile çalışır ancak dış temalar tarafından desteklenmez BackgroundColor=Arka plan rengi TopMenuBackgroundColor=Üst menü için arka plan rengi -TopMenuDisableImages=Üst menüdeki görüntüleri gizle +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Sol menü için arka plan rengi BackgroundTableTitleColor=Tablo satırı başlığı için arka plan rengi BackgroundTableTitleTextColor=Tablo satırı başlığı için metin rengi @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Not: KDV kullanma seçeneği %s - %s menüsünde Kapalı SwapSenderAndRecipientOnPDF=PDF üzerindeki gönderen ve alıcı adreslerinin yerini birbiriyle değiştir FeatureSupportedOnTextFieldsOnly=Uyarı, özellik yalnızca metin alanlarında ve birleşik listelerde desteklenir. Ayrıca bir URL parametresi action=create veya action=edit ayarlanmalıdır VEYA sayfa adı bu özelliği tetiklemek için 'new.php' ile bitmelidir. EmailCollector=E-posta toplayıcı +EmailCollectors=Email collectors EmailCollectorDescription=Düzenli olarak e-posta kutularını taramak (IMAP protokolünü kullanarak) ve uygulamanıza alınan e-postaları doğru yerde kaydetmek ve/veya bazı kayıtları otomatik olarak (potansiyel müşteriler gibi) oluşturmak için planlanmış bir iş ve bir kurulum sayfası ekleyin. NewEmailCollector=Yeni E-posta Toplayıcı EMailHost=E-posta IMAP sunucusu ana bilgisayarı @@ -2073,14 +2074,14 @@ DateLastCollectResult=En son deneme toplama tarihi DateLastcollectResultOk=En son başarılı toplama tarihi LastResult=En son sonuç EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=E-posta toplama onayı EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=İşlenecek yeni e-posta (eşleşen filtreler) yok NothingProcessed=Hiçbir şey yapılmadı -XEmailsDoneYActionsDone=%s e-postası uygun, %s e-postası başarıyla işlendi (%s kaydı/yapılan eylem için) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=E-posta şablonu EMailsWillHaveMessageID=E-postalarda bu sözdizimiyle eşleşen bir 'Referanslar' etiketi bulunacak PDF_SHOW_PROJECT=Belgede projeyi göster ShowProjectLabel=Proje Etiketi +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=PDF'nizdeki bazı metinlerin aynı oluşturulan PDF'de 2 farklı dilde çoğaltılmasını istiyorsanız, burada bu ikinci dili ayarlamanız gerekir, böylece oluşturulan PDF aynı sayfada 2 farklı dil içerir, biri PDF oluşturulurken seçilir ve bu ( yalnızca birkaç PDF şablonu bunu destekler). PDF başına 1 dil için boş bırakın. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Buraya FontAwesome simgesinin kodunu girin. FontAwesome'ın ne olduğunu bilmiyorsanız, fa-address-book genel değerini kullanabilirsiniz. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Envanter Kurulumu ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Ayarlar +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/tr_TR/companies.lang b/htdocs/langs/tr_TR/companies.lang index 93449051d58..03db3db97d1 100644 --- a/htdocs/langs/tr_TR/companies.lang +++ b/htdocs/langs/tr_TR/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Üçüncü partinin yapısı NatureOfContact=Kişinin Niteliği Address=Adresi State=Eyaleti/İli +StateId=State ID StateCode=Eyalet/il kodu StateShort=Durum Region=Bölgesi Region-State=Bölge - Eyalet Country=Ülkesi CountryCode=Ülke kodu -CountryId=Ülke kimliği +CountryId=Country ID Phone=Telefonu PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Diğerleri ProfId6ShortCM=- ProfId1CO=Prof Id 1 (RUT) diff --git a/htdocs/langs/tr_TR/errors.lang b/htdocs/langs/tr_TR/errors.lang index 37622276db8..22036ef98fe 100644 --- a/htdocs/langs/tr_TR/errors.lang +++ b/htdocs/langs/tr_TR/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Parametreniz için hatalı değer. Genellikle çeviri eksik olduğunda eklenir. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=%s kullanıcı adı zaten var. ErrorGroupAlreadyExists=%s Grubu zaten var. ErrorEmailAlreadyExists=Email %s already exists. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=Dosya sunucu tarafından tamamen alınmadı. ErrorNoTmpDir=Geçici %s dizini yok. ErrorUploadBlockedByAddon=Dosya gönderme PHP/Apache eklentisi tarafından bloke edilmiş. -ErrorFileSizeTooLarge=Dosya boyutu çok büyük. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Field %s is too long. ErrorSizeTooLongForIntType=Tam sayı türü için boyut çok uzun (ençok %s ondalık) ErrorSizeTooLongForVarcharType=Dize türü için boyut çok uzun (ençok %s karakter) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Bu özelliğin çalışması için Javascript engel ErrorPasswordsMustMatch=Her iki yazdığınız şifrenin birbiriyle eşleşmesi gerekir ErrorContactEMail=A technical error occured. Please, contact administrator to following email %s and provide the error code %s in your message, or add a screen copy of this page. ErrorWrongValueForField=Field %s: '%s' does not match regex rule %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Field %s: '%s' is not a value found in field %s of %s ErrorFieldRefNotIn=Field %s: '%s' is not a %s existing ref ErrorsOnXLines=%s hata bulundu @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP'nizdeki upload_max_filesize (%s) parametresi, post_max_size (%s) PHP parametresinden daha yüksek. Bu tutarlı bir kurulum değil. WarningPasswordSetWithNoAccount=Bu üye için bir parola ayarlıdır. Ancak, hiçbir kullanıcı hesabı oluşturulmamıştır. Yani bu şifre saklanır ama Dolibarr'a giriş için kullanılamaz. Dış bir modül/arayüz tarafından kullanılıyor olabilir, ama bir üye için ne bir kullanıcı adı ne de parola tanımlamanız gerekmiyorsa "Her üye için bir kullanıcı adı yönet" seçeneğini devre dışı bırakabilirsiniz. Bir kullanıcı adı yönetmeniz gerekiyorsa ama herhangi bir parolaya gereksinim duymuyorsanız bu uyarıyı engellemek için bu alanı boş bırakabilirsiniz. Not: Eğer bir üye bir kullanıcıya bağlıysa kullanıcı adı olarak e-posta adresi de kullanılabilir. -WarningMandatorySetupNotComplete=Zorunlu parametreleri ayarlamak için buraya tıklayın +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Click here to enable your modules and applications WarningSafeModeOnCheckExecDir=Uyarı, PHP seçeneği güvenli_mode açıktır, böylece komut php parametresi güvenli_mode_exec_dir tarafından bildirilen bir dizine saklanabilir. WarningBookmarkAlreadyExists=Bu konulu ya da bu hedefli (URL) bir yerimi zaten var. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/tr_TR/externalsite.lang b/htdocs/langs/tr_TR/externalsite.lang deleted file mode 100644 index 43f6d94f301..00000000000 --- a/htdocs/langs/tr_TR/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Dış web sitesine bağlantı ayarla -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Dış Web Sitesi modülü doğru yapılandırılmamış. -ExampleMyMenuEntry=Menü girişim diff --git a/htdocs/langs/tr_TR/ftp.lang b/htdocs/langs/tr_TR/ftp.lang deleted file mode 100644 index e771e1006e1..00000000000 --- a/htdocs/langs/tr_TR/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP İstemcisi modülü kurulumu -NewFTPClient=Yeni FTP bağlantı kurulumu -FTPArea=FTP Alanı -FTPAreaDesc=Bu ekran bir FTP sunucusunun görünümünü sergiler. -SetupOfFTPClientModuleNotComplete=FTP istemci modülünün kurulumu eksik görünüyor -FTPFeatureNotSupportedByYourPHP=PHP'niz FTP işlevlerini desteklemiyor -FailedToConnectToFTPServer=FTP sunucusuna bağlanamadı (sunucu %s, port %s) -FailedToConnectToFTPServerWithCredentials=Tanımlı kullanıcı adı/parola ile FTP sunucusunda oturum açılamadı -FTPFailedToRemoveFile=%s dosyası kaldırılamadı. -FTPFailedToRemoveDir=%s dizini kaldırılamadı: izinleri kontrol edin ve dizinin boş olduğundan emin olun. -FTPPassiveMode=Pasif mod -ChooseAFTPEntryIntoMenu=Menüden bir FTP sitesi seçin... -FailedToGetFile=%s dosyaları alınamadı diff --git a/htdocs/langs/tr_TR/hrm.lang b/htdocs/langs/tr_TR/hrm.lang index 89d3d4449bb..9bf699c895b 100644 --- a/htdocs/langs/tr_TR/hrm.lang +++ b/htdocs/langs/tr_TR/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Kuruluş aç CloseEtablishment=Kuruluş kapat # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=İKY - Departman listesi +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Çalışanlar @@ -20,13 +20,14 @@ Employee=Çalışan NewEmployee=Yeni çalışan ListOfEmployees=Çalışanlar listesi HrmSetup=İK modülü ayarları -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=İş -Jobs=Jobs +JobPosition=İş +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Bu yetenek için çalışan sıralaması -Position=Konum -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Bu pozisyondaki çalışanlar group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=Bu çalışan için değerlendirme yapılmadı HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/tr_TR/install.lang b/htdocs/langs/tr_TR/install.lang index 08afdf7307b..5ce83ac323e 100644 --- a/htdocs/langs/tr_TR/install.lang +++ b/htdocs/langs/tr_TR/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=%s yapılandırma dosyası yazılabilir değil. İz ConfFileIsWritable=%s yapılandırma dosyası yazılabilir. ConfFileMustBeAFileNotADir=%s yapılandırma dosyası bir dizin değil, dosya olmalıdır. ConfFileReload=Yapılandırma dosyasındaki parametreleri yeniden yükleme. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Bu PHP GÖNDER ve AL değişkenlerini destekliyor. PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=Bu PHP oturumları destekliyor. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Parametresi '%s' için yanlış değer yazmış olab ErrorFailedToCreateDatabase=Veritabanı '%s' oluşturulamadı. ErrorFailedToConnectToDatabase=Veritabanı '%s' e bağlanılamadı. ErrorDatabaseVersionTooLow=Veritabanı sürümü (%s) çok eski. Sürüm %s ya da daha yükseği gerekir. -ErrorPHPVersionTooLow=PHP sürümü çok eski. %s Sürümü gereklidir. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Sunucuya bağlantı başarılı fakat '%s' veritabanı bulunamadı. ErrorDatabaseAlreadyExists=Veritabanı '%s' zaten var. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Veritabanı mevcut değilse geri gidin ve "Veritabanı oluştur" seçeneğini kontrol edin. IfDatabaseExistsGoBackAndCheckCreate=Eğer veritabanı zaten mevcutsa, geri gidin ve "Veritabanı oluştur" seçeneğindeki işareti kaldırın. WarningBrowserTooOld=Tarayıcı sürümü çok eski. Tarayıcınızı Firefox, Chrome veya Opera'nın en son sürümlerine güncellemeniz önemle tavsiye edilir. diff --git a/htdocs/langs/tr_TR/main.lang b/htdocs/langs/tr_TR/main.lang index f9a71e2c878..b61e48a7b68 100644 --- a/htdocs/langs/tr_TR/main.lang +++ b/htdocs/langs/tr_TR/main.lang @@ -244,6 +244,7 @@ Designation=Açıklama DescriptionOfLine=Satır açıklaması DateOfLine=Date of line DurationOfLine=Duration of line +ParentLine=Parent line ID Model=Doküman şablonu DefaultModel=Varsayılan doküman şablonu Action=Etkinlik @@ -344,7 +345,7 @@ KiloBytes=Kilobayt MegaBytes=Megabayt GigaBytes=Gigabayt TeraBytes=Terabayt -UserAuthor=Ceated by +UserAuthor=Oluşturan UserModif=Updated by b=bayt Kb=Kb @@ -517,6 +518,7 @@ or=veya Other=Diğer Others=Diğerleri OtherInformations=Diğer Bilgiler +Workflow=İş akışı Quantity=Miktar Qty=Miktar ChangedBy=Değiştiren @@ -619,6 +621,7 @@ MonthVeryShort11=Ka MonthVeryShort12=Ar AttachedFiles=Ekli dosya ve belgeler JoinMainDoc=Join main document +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-AA DateFormatYYYYMMDD=YYYY-AA-GG DateFormatYYYYMMDDHHMM=YYYY-AA-GG SS:SS @@ -709,6 +712,7 @@ FeatureDisabled=Özellik devre dışı MoveBox=Ekran etiketini taşı Offered=Önerilen NotEnoughPermissions=Bu eylem için izininiz yok +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Oturum adı Method=Yöntem Receive=Al @@ -798,6 +802,7 @@ URLPhoto=Fotoğraf/logo İnternet adresi SetLinkToAnotherThirdParty=Başka bir üçüncü partiye bağlantı LinkTo=Buna bağlantıla LinkToProposal=Teklife bağlantıla +LinkToExpedition= Link to expedition LinkToOrder=Siparişe bağlantıla LinkToInvoice=Faturaya bağlantıla LinkToTemplateInvoice=Şablon faturasına bağlantı @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Sonlandır +Terminated=Sonlandırılmış +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/tr_TR/members.lang b/htdocs/langs/tr_TR/members.lang index 373d86d8bc4..43db2175ebb 100644 --- a/htdocs/langs/tr_TR/members.lang +++ b/htdocs/langs/tr_TR/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=Üye kimliği +MemberId=Member Id +MemberRef=Member Ref NewMember=Yeni üye MemberType=Üyelik türü MemberTypeId=Üyelik türü kimliği @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/tr_TR/oauth.lang b/htdocs/langs/tr_TR/oauth.lang index d3a40660e11..c512ec88ec7 100644 --- a/htdocs/langs/tr_TR/oauth.lang +++ b/htdocs/langs/tr_TR/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Bir belirteç oluşturuldu ve yerel veritabanına kaydedildi NewTokenStored=Token received and saved ToCheckDeleteTokenOnProvider=Click here to check/delete authorization saved by %s OAuth provider TokenDeleted=Belirteç silindi -RequestAccess=Erişim ve kaydedilecek yeni bir belirteç alma isteği/yenilemesi için buraya tıklayın +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Belirteçi silmek için burayı tıkla UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=Page to generate an OAuth token +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Önceki sekmeye bakın +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID and Secret TOKEN_REFRESH=Belirteç Yenilemesi Mevcuttur TOKEN_EXPIRED=Token expired @@ -23,10 +24,13 @@ TOKEN_DELETE=Kayıtlı belrteçi sil OAUTH_GOOGLE_NAME=OAuth Google hizmeti OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub hizmeti OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Bu sayfaya gidin ve sonra OAuth kimlik bilgileri oluşturmak için "Yeni bir uygulama kaydet" linkine gidin +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/tr_TR/stocks.lang b/htdocs/langs/tr_TR/stocks.lang index d633833926d..8cccb817bb6 100644 --- a/htdocs/langs/tr_TR/stocks.lang +++ b/htdocs/langs/tr_TR/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Stock limit for alert and desired optimal stock cor ProductStockWarehouseUpdated=Stock limit for alert and desired optimal stock correctly updated ProductStockWarehouseDeleted=Stock limit for alert and desired optimal stock correctly deleted AddNewProductStockWarehouse=Set new limit for alert and desired optimal stock -AddStockLocationLine=Decrease quantity then click to add another warehouse for this product +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Envanter tarihi Inventories=Envanterler NewInventory=Yeni envanter @@ -254,7 +254,7 @@ ReOpen=Yeniden aç ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Depo Kimlik Numarası WarehouseRef=Depo Referansı SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Başlat InventoryStartedShort=Başladı ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Ayarlar +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/uk_UA/accountancy.lang b/htdocs/langs/uk_UA/accountancy.lang index ad867df1a85..3f85bb2b132 100644 --- a/htdocs/langs/uk_UA/accountancy.lang +++ b/htdocs/langs/uk_UA/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=Країни, які не входять до ЄЕС CountriesInEECExceptMe=Країни ЄЕС, крім %s CountriesExceptMe=Усі країни, крім %s AccountantFiles=Експортувати вихідні документи -ExportAccountingSourceDocHelp=За допомогою цього інструмента ви можете експортувати вихідні події (список у CSV та PDF-файлах), які використовуються для створення вашого обліку. +ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. ExportAccountingSourceDocHelp2=Щоб експортувати свої журнали, використовуйте пункт меню %s - %s. VueByAccountAccounting=Переглянути за обліковим записом VueBySubAccountAccounting=Перегляд за бухгалтерським субрахунком @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Вимкнути прямий запис транза ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Увімкнути експорт чернетки в журналі ACCOUNTANCY_COMBO_FOR_AUX=Увімкнути комбінований список для дочірнього облікового запису (може працювати повільно, якщо у вас багато третіх сторін, порушує можливість пошуку на частині вартості) ACCOUNTING_DATE_START_BINDING=Визначте дату початку зв’язування та перенесення в бухгалтерію. Нижче цієї дати операції не будуть передані до бухгалтерського обліку. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Під час перенесення бухгалтерського обліку виберіть відображення періоду за замовчуванням +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Sell journal ACCOUNTING_PURCHASE_JOURNAL=Purchase journal @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Обліковий рахунок для реєстр ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Обліковий запис для реєстрації підписок ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Обліковий рахунок за замовчуванням для реєстрації депозиту клієнта -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Обліковий рахунок за замовчуванням для купленої продукції (використовується, якщо не визначено в товарному аркуші) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=Обліковий рахунок за замовчуванням для купленої продукції в ЄЕС (використовується, якщо не визначено в товарному аркуші) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Якщо ви налаштуєте рахунок б DescVentilDoneExpenseReport=Ознайомтеся з переліком рядків звітів про витрати та їх обліковим рахунком Closure=Щорічне закриття -DescClosure=Перегляньте тут кількість переміщень за місяць, які ще не підтверджені та заблоковані +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Огляд переміщень не підтверджених і заблокованих AllMovementsWereRecordedAsValidated=Усі рухи були зафіксовані як підтверджені та заблоковані NotAllMovementsCouldBeRecordedAsValidated=Не всі переміщення можна записати як підтверджені та заблоковані @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Вимкнути прив'язку ## Export NotifiedExportDate=Позначте експортовані рядки як експортовані (щоб змінити рядок, вам потрібно буде видалити всю транзакцію та повторно перенести її в облік) -NotifiedValidationDate=Перевірте та заблокуйте експортовані записи (той самий ефект, що й функція «Закриття», зміна та видалення рядків ОБОВ’ЯЗКОВО неможливі) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Перевірка дати та блокування ConfirmExportFile=Підтвердження створення файлу експорту бухгалтерського обліку? ExportDraftJournal=Експортувати чернетку журналу @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=На AccountancyErrorMismatchLetterCode=Невідповідність коду узгодження AccountancyErrorMismatchBalanceAmount=Залишок (%s) не дорівнює 0 AccountancyErrorLetteringBookkeeping=Сталися помилки щодо транзакцій: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Бухгалтерські проводки diff --git a/htdocs/langs/uk_UA/admin.lang b/htdocs/langs/uk_UA/admin.lang index ed9c650e8b0..733c3d9a009 100644 --- a/htdocs/langs/uk_UA/admin.lang +++ b/htdocs/langs/uk_UA/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Наступне значення (заміни) MustBeLowerThanPHPLimit=Примітка: ваша конфігурація PHP наразі обмежує максимальний розмір файлів для завантаження на %s %s, незалежно від значення цього параметра NoMaxSizeByPHPLimit=Примітка: у вашій конфігурації PHP не встановлено обмеження MaxSizeForUploadedFiles=Максимальний розмір для завантажених файлів (0 для заборони будь-яких завантажень) -UseCaptchaCode=Використовувати графічний код (CAPTCHA) на сторінці входу +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Повний шлях команди антивірусу AntiVirusCommandExample=Приклад для ClamAv Daemon (потрібен clamav-daemon): /usr/bin/clamdscan
Приклад для ClamWin (дуже-дуже повільно): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= Решта параметрів командного рядка @@ -477,7 +477,7 @@ InstalledInto=Встановлено в каталог %s BarcodeInitForThirdparties=Масова ініціалізація штрих-коду для третіх сторін BarcodeInitForProductsOrServices=Масове ініціювання або скидання штрих-коду для продуктів або послуг CurrentlyNWithoutBarCode=На даний момент у вас є запис %s на %s a0a65d071f6fc9z, визначений без barcode a0a65d071f6fc9z2. -InitEmptyBarCode=Ініціальне значення для наступних порожніх записів %s +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Стерти всі поточні значення штрих-коду ConfirmEraseAllCurrentBarCode=Ви впевнені, що хочете стерти всі поточні значення штрих-коду? AllBarcodeReset=Усі значення штрих-коду видалено @@ -504,7 +504,7 @@ WarningPHPMailC=- Використання SMTP-сервера вашого вл WarningPHPMailD=Тому рекомендується змінити метод надсилання електронних листів на значення «SMTP». Якщо ви дійсно хочете зберегти метод «PHP» за замовчуванням для надсилання електронних листів, просто проігноруйте це попередження або видаліть його, встановивши для константи MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP значення 1 у розділі «Домашня сторінка» - «Налаштування» - «Інше». WarningPHPMail2=Якщо вашому постачальнику послуг електронної пошти SMTP потрібно обмежити клієнта електронної пошти деякими IP-адресами (дуже рідко), це IP-адреса поштового агента користувача (MUA) для вашої програми ERP CRM: %s . WarningPHPMailSPF=Якщо доменне ім’я у вашій адресі електронної пошти відправника захищене записом SPF (запитайте ваш реєстр доменних імен), ви повинні додати такі IP-адреси в SPF-запис DNS вашого домену: %s . -ActualMailSPFRecordFound=Знайдено фактичний запис SPF: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Натисніть, щоб показати опис DependsOn=Цей модуль потребує модуля(ів) RequiredBy=Цей модуль необхідний для модуля(ів) @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Значення константи конфігурації ConstantIsOn=Увімкнено параметр %s NbOfDays=Кількість днів AtEndOfMonth=В кінці місяця -CurrentNext=Поточний/Наступний +CurrentNext=A given day in month Offset=Зміщення AlwaysActive=Завжди активний Upgrade=Оновлення @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Натисніть CTRL+F5 на клавіатурі а NotSupportedByAllThemes=Will працює з основними темами, може не підтримуватися зовнішніми темами BackgroundColor=Колір фону TopMenuBackgroundColor=Колір фону для верхнього меню -TopMenuDisableImages=Приховати зображення в верхньому меню +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Колір фону для лівого меню BackgroundTableTitleColor=Колір фону для рядка заголовка таблиці BackgroundTableTitleTextColor=Колір тексту рядка заголовка таблиці @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Примітка. Для параметра використан SwapSenderAndRecipientOnPDF=Поміняйте місцями адреси відправника та одержувача в PDF-документах FeatureSupportedOnTextFieldsOnly=Попередження, функція підтримується лише в текстових полях і комбінованих списках. Також потрібно встановити параметр URL-адреси action=create або action=edit, АБО назва сторінки має закінчуватися на "new.php", щоб активувати цю функцію. EmailCollector=Збірник електронної пошти +EmailCollectors=Email collectors EmailCollectorDescription=Додайте заплановану роботу та сторінку налаштування, щоб регулярно сканувати скриньки електронної пошти (за допомогою протоколу IMAP) і записувати електронні листи, отримані у вашу програму, у потрібному місці та/або створювати деякі записи автоматично (наприклад, потенційні клієнти). NewEmailCollector=Новий збірник електронної пошти EMailHost=Хост сервера електронної пошти IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Дата останньої спроби збору DateLastcollectResultOk=Дата останнього успіху збирання LastResult=Останній результат EmailCollectorHideMailHeaders=Не включайте вміст заголовка електронної пошти до збереженого вмісту зібраних електронних листів -EmailCollectorHideMailHeadersHelp=Якщо ввімкнено, заголовки електронних листів не додаються в кінці вмісту електронної пошти, який зберігається як події. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Отримати підтвердження електронною поштою EmailCollectorConfirmCollect=Ви хочете запустити цей колектор зараз? EmailCollectorExampleToCollectTicketRequestsDesc=Збирайте електронні листи, які відповідають деяким правилам, і автоматично створюйте квиток (модульний квиток має бути ввімкнено) з інформацією електронної пошти. Ви можете використовувати цей збірник, якщо надасте певну підтримку електронною поштою, тож ваш запит на квиток буде згенеровано автоматично. Активуйте також Collect_Responses, щоб збирати відповіді вашого клієнта безпосередньо на перегляді квитка (ви повинні відповісти від Dolibarr). EmailCollectorExampleToCollectTicketRequests=Приклад отримання запиту на квиток (лише перше повідомлення) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Скануйте каталог «Відправлені» своєї поштової скриньки, щоб знайти електронні листи, надіслані як відповідь на іншу електронну пошту, безпосередньо з вашого програмного забезпечення електронної пошти, а не з Dolibarr. Якщо такий електронний лист знайдено, подія відповіді записується в Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Приклад збору відповідей електронною поштою, надісланих із зовнішнього програмного забезпечення електронної пошти -EmailCollectorExampleToCollectDolibarrAnswersDesc=Зберіть усі листи, які є відповіддю на лист, надісланий з вашої програми. Подія (Порядок денний модуля має бути ввімкнено) з відповіддю електронною поштою буде записано в хорошому місці. Наприклад, якщо ви надсилаєте комерційну пропозицію, замовлення, рахунок-фактуру або повідомлення для квитка електронною поштою з програми, і ваш клієнт відповідає на вашу електронну пошту, система автоматично зловить відповідь і додасть її до вашої ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Приклад збору всіх вхідних повідомлень, які є відповідями на повідомлення, надіслані з Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Збирайте електронні листи, які відповідають деяким правилам, і автоматично створюйте потенційного клієнта (модульний проект має бути ввімкнено) з інформацією електронної пошти. Ви можете використовувати цей збірник, якщо хочете слідкувати за вашими прикладами за допомогою модуля Проект (1 лідик = 1 проект), тож ваші потенційні клієнти будуть автоматично створені. Якщо також увімкнено збірник Collect_Responses, коли ви надсилаєте електронний лист від ваших потенційних клієнтів, пропозицій чи будь-якого іншого об’єкта, ви також можете бачити відповіді своїх клієнтів або партнерів безпосередньо в програмі.
Примітка. У цьому початковому прикладі генерується назва потенційного клієнта, включаючи електронну пошту. Якщо третю сторону неможливо знайти в базі даних (новий клієнт), потенційний клієнт буде приєднано до третьої сторони з ідентифікатором 1. EmailCollectorExampleToCollectLeads=Приклад збору потенційних клієнтів @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Збирайте електр EmailCollectorExampleToCollectJobCandidatures=Приклад збору кандидатур на роботу, отриманих на електронну пошту NoNewEmailToProcess=Немає нових електронних листів (відповідних фільтрів) для обробки NothingProcessed=Нічого не зроблено -XEmailsDoneYActionsDone=%s електронні листи кваліфіковані, %s електронні листи успішно оброблено (для %s запису/зроблених дій) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Записати подію в порядку денному (з типом Email надіслано або отримано) CreateLeadAndThirdParty=Створіть потенційного клієнта (і третю сторону, якщо необхідно) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2105,7 +2106,7 @@ CreateCandidature=Створити заявку на роботу FormatZip=Застібка на блискавці MainMenuCode=Код входу в меню (головне меню) ECMAutoTree=Показати автоматичне дерево ECM -OperationParamDesc=Визначте правила для вилучення або встановлення значень.
Приклад операцій, які потребують вилучення імені з теми електронного листа:
name=EXTRACT:SUBJECT:Повідомлення від компанії ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY name is\\sy( [^\\s]*)

Використовуйте ; char як роздільник для вилучення або встановлення кількох властивостей. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Години роботи OpeningHoursDesc=Введіть тут звичайні години роботи вашої компанії. ResourceSetup=Конфігурація модуля ресурсів @@ -2167,6 +2168,9 @@ EmailTemplate=Шаблон для електронної пошти EMailsWillHaveMessageID=Електронні листи матимуть тег "Посилання", що відповідає цьому синтаксису PDF_SHOW_PROJECT=Показати проект на документі ShowProjectLabel=Етикетка проекту +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Якщо ви хочете, щоб деякі тексти у вашому PDF-файлі були продубльовані двома різними мовами в одному згенерованому PDF-файлі, ви повинні встановити тут цю другу мову, щоб згенерований PDF-файл містив 2 різні мови на одній сторінці, одну, вибрану під час створення PDF-файлу, і цю ( лише кілька шаблонів PDF підтримують це). Залиште порожнім для 1 мови для PDF. PDF_USE_A=Створюйте PDF-документи у форматі PDF/A замість формату PDF за умовчанням FafaIconSocialNetworksDesc=Введіть тут код значка FontAwesome. Якщо ви не знаєте, що таке FontAwesome, ви можете використовувати загальне значення fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Шаблон для візитки різного ро InventorySetup= Налаштування інвентарю ExportUseLowMemoryMode=Використовуйте режим малої пам’яті ExportUseLowMemoryModeHelp=Використовуйте режим малої пам’яті для виконання дампу (стиснення виконується через канал, а не в пам’ять PHP). Цей метод не дозволяє перевірити, що файл заповнений, і повідомлення про помилку не можна повідомити, якщо він не вдається. -ShowQuickAddLink=Показати кнопку, щоб швидко додати елемент у верхньому правому меню + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Налаштування +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Хеш, що використовується для пінгу ReadOnlyMode=Є екземпляром у режимі «Тільки для читання». DEBUGBAR_USE_LOG_FILE=Використовуйте файл dolibarr.log для захоплення журналів UsingLogFileShowAllRecordOfSubrequestButIsSlower=Використовуйте файл dolibarr.log для захоплення журналів замість перехоплення оперативної пам’яті. Це дозволяє ловити всі журнали, а не лише журнал поточного процесу (тому включаючи один із сторінок підзапитів ajax), але зробить ваш екземпляр дуже дуже повільним. Не рекомендовано. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/uk_UA/companies.lang b/htdocs/langs/uk_UA/companies.lang index 10caee4a9f6..ebfedcbc54d 100644 --- a/htdocs/langs/uk_UA/companies.lang +++ b/htdocs/langs/uk_UA/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Характер контрагента NatureOfContact=Характер контакту Address=Адреса State=Штат/провінція/область +StateId=State ID StateCode=Код штату StateShort=Штат/область Region=Регіон Region-State=Регіон - держава Country=Країна CountryCode=Код країни -CountryId=id країни +CountryId=Country ID Phone=Телефон PhoneShort=Телефон Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=id. проф. 1 (Торговий реєстр) ProfId2CM=id. проф. 2 (№ платника податків) -ProfId3CM=id. проф. 3 (Декрет про створення) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Торговий реєстр ProfId2ShortCM=№ платника податків -ProfId3ShortCM=Указ про створення -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Ідентифікатор професора 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Додайте адресу SupplierCategory=Категорія продавця JuridicalStatus200=Незалежний DeleteFile=Видалити файл -ConfirmDeleteFile=Ви впевнені, що хочете видалити цей файл? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Призначено торговому представнику Organization=Організація FiscalYearInformation=Фіскальний рік diff --git a/htdocs/langs/uk_UA/errors.lang b/htdocs/langs/uk_UA/errors.lang index 1f310d658aa..3fc8a11315c 100644 --- a/htdocs/langs/uk_UA/errors.lang +++ b/htdocs/langs/uk_UA/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript не потрібно відключат ErrorPasswordsMustMatch=Обидва введені паролі повинні відповідати один одному ErrorContactEMail=Сталася технічна помилка. Будь ласка, зв’яжіться з адміністратором за електронною поштою %s і вкажіть код помилки %s a09a4b730 або додайте копію сторінки вашого повідомлення. ErrorWrongValueForField=Поле %s : ' %s A09NICFRIMS0FZ0 A0CB20FRIFTIONM0303030303030303030303030303030308520308508508352030858350835083508358358358358358358358358358583583583583583583583583583583583583583583583. +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Field %s : ' %s ' is not a value found in field %s of %s ErrorFieldRefNotIn=Field %s : ' %s ' is not a %s existing ref ErrorsOnXLines=Знайдено помилки %s @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Спочатку потрібно на ErrorFailedToFindEmailTemplate=Не вдалося знайти шаблон із кодовою назвою %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Тривалість обслуговування не визначена. Неможливо розрахувати погодинну ціну. ErrorActionCommPropertyUserowneridNotDefined=Потрібен власник користувача -ErrorActionCommBadType=Вибраний тип події (id: %n, код: %s) не існує в словнику типів події +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Помилка перевірки версії ErrorWrongFileName=У назві файлу не може бути __SOMETHING__ ErrorNotInDictionaryPaymentConditions=Немає в словнику умов оплати, будь ласка, змініть. @@ -283,11 +284,18 @@ ErrorAttributeIsUsedIntoProduct=Цей атрибут використовуєт ErrorAttributeValueIsUsedIntoProduct=Це значення атрибута використовується в одному або кількох варіантах продукту ErrorPaymentInBothCurrency=Помилка, усі суми потрібно ввести в одну колонку ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Ви намагаєтеся оплачувати рахунки у валюті %s з рахунку у валюті %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Ваш параметр PHP upload_max_filesize (%s) вищий за параметр PHP post_max_size (%s). Це не послідовне налаштування. WarningPasswordSetWithNoAccount=Для цього учасника встановлено пароль. Однак обліковий запис користувача не створено. Таким чином, цей пароль зберігається, але його не можна використовувати для входу в Dolibarr. Він може використовуватися зовнішнім модулем/інтерфейсом, але якщо вам не потрібно вказувати логін чи пароль для учасника, ви можете вимкнути опцію «Керувати логіном для кожного члена» у налаштуваннях модуля Member. Якщо вам потрібно керувати логіном, але не потрібен пароль, ви можете залишити це поле порожнім, щоб уникнути цього попередження. Примітка: електронну пошту також можна використовувати як логін, якщо учасник пов’язаний з користувачем. -WarningMandatorySetupNotComplete=Натисніть тут, щоб налаштувати обов'язкові параметри +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Натисніть тут, щоб увімкнути свої модулі та програми WarningSafeModeOnCheckExecDir=Попередження, параметр PHP safe_mode увімкнено, тому команда має зберігатися в каталозі, оголошеному параметром php safe_mode_exec_dir a09a4b739f1. WarningBookmarkAlreadyExists=Закладка з такою назвою або цією цільовою URL-адресою вже існує. @@ -317,6 +325,7 @@ WarningCreateSubAccounts=Попередження, ви не можете ств WarningAvailableOnlyForHTTPSServers=Доступно лише за умови використання захищеного з’єднання HTTPS. WarningModuleXDisabledSoYouMayMissEventHere=Модуль %s не ввімкнено. Тому ви можете пропустити багато подій тут. WarningPaypalPaymentNotCompatibleWithStrict=Значення "Strict" робить функції онлайн-платежів некоректними. Натомість використовуйте "Lax". +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Недійсне значення diff --git a/htdocs/langs/uk_UA/externalsite.lang b/htdocs/langs/uk_UA/externalsite.lang deleted file mode 100644 index 3f7497d77f1..00000000000 --- a/htdocs/langs/uk_UA/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Налаштування посилання на зовнішній веб-сайт -ExternalSiteURL=URL-адреса зовнішнього сайту вмісту iframe HTML -ExternalSiteModuleNotComplete=Модуль ExternalSite неправильно налаштовано. -ExampleMyMenuEntry=Мій запис в меню diff --git a/htdocs/langs/uk_UA/ftp.lang b/htdocs/langs/uk_UA/ftp.lang deleted file mode 100644 index d2a3df365ab..00000000000 --- a/htdocs/langs/uk_UA/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Налаштування модуля клієнта FTP або SFTP -NewFTPClient=Нове налаштування з’єднання FTP/FTPS -FTPArea=Зона FTP/FTPS -FTPAreaDesc=Цей екран показує вигляд сервера FTP та SFTP. -SetupOfFTPClientModuleNotComplete=Налаштування клієнтського модуля FTP або SFTP здається неповним -FTPFeatureNotSupportedByYourPHP=Ваш PHP не підтримує функції FTP або SFTP -FailedToConnectToFTPServer=Не вдалося підключитися до сервера (сервер %s, порт %s) -FailedToConnectToFTPServerWithCredentials=Не вдалося ввійти на сервер із визначеним логіном/паролем -FTPFailedToRemoveFile=Не вдалося видалити файл %s . -FTPFailedToRemoveDir=Не вдалося видалити каталог %s : перевірте дозволи та переконайтеся, що каталог порожній. -FTPPassiveMode=Пасивний режим -ChooseAFTPEntryIntoMenu=Виберіть у меню сайт FTP/SFTP... -FailedToGetFile=Не вдалося отримати файли %s diff --git a/htdocs/langs/uk_UA/hrm.lang b/htdocs/langs/uk_UA/hrm.lang index cc698bc8ad1..9175e5488ca 100644 --- a/htdocs/langs/uk_UA/hrm.lang +++ b/htdocs/langs/uk_UA/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Відкритий заклад CloseEtablishment=Закритий заклад # Dictionary DictionaryPublicHolidays=Відпустка - державні свята -DictionaryDepartment=HRM - Список відділів +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Посади # Module Employees=Співробітники @@ -70,9 +70,9 @@ RequiredSkills=Необхідні навички для цієї роботи UserRank=Ранг користувача SkillList=Список навичок SaveRank=Збережіть звання -knowHow=Ноу-хау -HowToBe=Як бути -knowledge=Знання +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Коментар про відмову DateLastEval=Дата останньої оцінки NoEval=Оцінка цього працівника не проводилася @@ -88,3 +88,4 @@ DeleteSkill = Навик видалено SkillsExtraFields=Attributs supplémentaires (Compétences) JobsExtraFields=Додаткові атрибути (Emplois) EvaluationsExtraFields=Attributes supplémentaires (оцінки) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/uk_UA/install.lang b/htdocs/langs/uk_UA/install.lang index 5c1f2d40b02..de4b97ac2a8 100644 --- a/htdocs/langs/uk_UA/install.lang +++ b/htdocs/langs/uk_UA/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Файл конфігурації %s недост ConfFileIsWritable=Файл конфігурації %s доступний для запису. ConfFileMustBeAFileNotADir=Файл конфігурації %s має бути файлом, а не каталогом. ConfFileReload=Перезавантаження параметрів з конфігураційного файлу. -NoReadableConfFileSoStartInstall=Конфігураційний файл conf/conf.php не існує або його не можна знайти. Ми запустимо процес встановлення, щоб спробувати його ініціалізувати. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Цей PHP підтримує змінні POST і GET. PHPSupportPOSTGETKo=Можливо, ваші налаштування PHP не підтримують змінні POST та/або GET. Перевірте параметр variables_order у php.ini. PHPSupportSessions=Цей PHP підтримує сеанси. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Можливо, ви ввели неправильн ErrorFailedToCreateDatabase=Не вдалося створити базу даних "%s". ErrorFailedToConnectToDatabase=Не вдалося підключитися до бази даних "%s". ErrorDatabaseVersionTooLow=Версія бази даних (%s) застаріла. Потрібна версія %s або вище. -ErrorPHPVersionTooLow=Версія PHP занадто стара. Необхідна версія %s. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Підключення до сервера успішне, але база даних '%s' не знайдена. ErrorDatabaseAlreadyExists=База даних '%s' вже існує. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Якщо бази даних не існує, поверніться назад і поставте прапорець «Створити базу даних». IfDatabaseExistsGoBackAndCheckCreate=Якщо база даних уже існує, поверніться назад і зніміть прапорець «Створити базу даних». WarningBrowserTooOld=Версія браузера застаріла. Настійно рекомендується оновити свій браузер до останньої версії Firefox, Chrome або Opera. diff --git a/htdocs/langs/uk_UA/knowledgemanagement.lang b/htdocs/langs/uk_UA/knowledgemanagement.lang index bd16a87cb7c..c37fbd261da 100644 --- a/htdocs/langs/uk_UA/knowledgemanagement.lang +++ b/htdocs/langs/uk_UA/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = статті KnowledgeRecord = стаття KnowledgeRecordExtraFields = Додаткові поля для ст GroupOfTicket=Група квитків -YouCanLinkArticleToATicketCategory=Ви можете прив’язати статтю до групи квитків (тому стаття буде запропонована під час кваліфікації нових квитків) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Пропонується для квитків, коли група SetObsolete=Встановити як застаріле diff --git a/htdocs/langs/uk_UA/loan.lang b/htdocs/langs/uk_UA/loan.lang index 569d9f99dc2..3c19217d478 100644 --- a/htdocs/langs/uk_UA/loan.lang +++ b/htdocs/langs/uk_UA/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Фінансові зобов'язання InterestAmount=Інтерес CapitalRemain=Залишається капітал TermPaidAllreadyPaid = Цей термін уже оплачений -CantUseScheduleWithLoanStartedToPaid = Не можна використовувати планувальник для позики з розпочатим платежем +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Ви не можете змінити відсотки, якщо використовуєте розклад # Admin ConfigLoan=Конфігурація модульної позики diff --git a/htdocs/langs/uk_UA/main.lang b/htdocs/langs/uk_UA/main.lang index 43cea0671c4..a06f684a5b0 100644 --- a/htdocs/langs/uk_UA/main.lang +++ b/htdocs/langs/uk_UA/main.lang @@ -345,7 +345,7 @@ KiloBytes=Кілобайти MegaBytes=мегабайти GigaBytes=гігабайти TeraBytes=терабайти -UserAuthor=Переведено +UserAuthor=Створено UserModif=Оновлено b=б. Kb=Кб @@ -712,6 +712,7 @@ FeatureDisabled=Функція вимкнена MoveBox=Перемістити віджет Offered=Запропоновано NotEnoughPermissions=У вас немає дозволу на цю дію +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Назва сеансу Method=Метод Receive=Отримати @@ -801,6 +802,7 @@ URLPhoto=URL-адреса фотографії/логотипа SetLinkToAnotherThirdParty=Посилання на іншу третю сторону LinkTo=Посилання на LinkToProposal=Посилання на пропозицію +LinkToExpedition= Link to expedition LinkToOrder=Посилання на замовлення LinkToInvoice=Посилання на рахунок-фактуру LinkToTemplateInvoice=Посилання на шаблон рахунка-фактури @@ -1174,3 +1176,7 @@ ConfirmAllocateCommercial=Призначте підтвердження торг ConfirmAllocateCommercialQuestion=Ви впевнені, що хочете призначити %s вибраний запис(и)? CommercialsAffected=Постраждали торгові представники CommercialAffected=Постраждав торговий представник +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/uk_UA/members.lang b/htdocs/langs/uk_UA/members.lang index 6ec1bfd9cb8..9ec8c48ab53 100644 --- a/htdocs/langs/uk_UA/members.lang +++ b/htdocs/langs/uk_UA/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=Дата закінчення членства EndSubscription=Кінець членства SubscriptionId=Ідентифікатор внеску WithoutSubscription=Без внеску -MemberId=Ідентифікатор учасника +MemberId=Member Id +MemberRef=Member Ref NewMember=Новий учасник MemberType=Тип члена MemberTypeId=Ідентифікатор типу члена @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Тип члена не можна видалити NewSubscription=Новий внесок NewSubscriptionDesc=Ця форма дозволяє зареєструвати свою підписку як нового члена фонду. Якщо ви хочете поновити свою підписку (якщо вже є учасником), зверніться до ради фонду електронною поштою %s. Subscription=Внесок +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Внески SubscriptionLate=Пізно SubscriptionNotReceived=Внесок так і не отримав @@ -135,7 +142,7 @@ CardContent=Вміст вашої членської картки # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=Хочемо повідомити, що ваш запит на членство отримано.

ThisIsContentOfYourMembershipWasValidated=Хочемо повідомити, що ваше членство було підтверджено такою інформацією:

-ThisIsContentOfYourSubscriptionWasRecorded=Хочемо повідомити, що ваша нова підписка була записана.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Хочемо повідомити, що термін дії вашої підписки скоро закінчиться або вже закінчився (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Сподіваємося, ви його поновите.

ThisIsContentOfYourCard=Це короткий огляд інформації, яку ми маємо про вас. Будь ласка, зв’яжіться з нами, якщо щось не так.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Тема повідомлення електронною поштою, отриманого у разі автоматичного запису гостя @@ -198,7 +205,8 @@ NbOfSubscriptions=Кількість внесків AmountOfSubscriptions=Сума, зібрана з внесків TurnoverOrBudget=Оборот (для компанії) або бюджет (для фонду) DefaultAmount=Сума внеску за замовчуванням -CanEditAmount=Відвідувач може вибрати/змінити суму свого внеску +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Перейдіть на інтегровану сторінку онлайн-платежів ByProperties=Від природи MembersStatisticsByProperties=Статистика учасників за характером @@ -218,3 +226,5 @@ XExternalUserCreated=%s створено зовнішніх користувач ForceMemberNature=Характер члена сил (фізична особа або корпорація) CreateDolibarrLoginDesc=Створення логіна користувача для учасників дозволяє їм підключатися до програми. Залежно від наданих авторизацій вони зможуть, наприклад, самі переглядати або змінювати свій файл. CreateDolibarrThirdPartyDesc=Третя сторона – це юридична особа, яка буде використовуватися в рахунку-фактурі, якщо ви вирішите створювати рахунок-фактуру для кожного внеску. Ви зможете створити його пізніше під час процесу запису внеску. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/uk_UA/oauth.lang b/htdocs/langs/uk_UA/oauth.lang index fc7116b2183..c59d15d7fe4 100644 --- a/htdocs/langs/uk_UA/oauth.lang +++ b/htdocs/langs/uk_UA/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Токен було створено та збережено в NewTokenStored=Токен отримано та збережено ToCheckDeleteTokenOnProvider=Натисніть тут, щоб перевірити/видалити авторизацію, збережену постачальником OAuth %s TokenDeleted=Токен видалено -RequestAccess=Натисніть тут, щоб запитати/відновити доступ та отримати новий маркер для збереження -DeleteAccess=Натисніть тут, щоб видалити маркер +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=Використовуйте таку URL-адресу як URI переспрямування під час створення облікових даних у свого постачальника OAuth: -ListOfSupportedOauthProviders=Введіть облікові дані, надані вашим постачальником OAuth2. Тут перелічено лише підтримуваних постачальників OAuth2. Ці служби можуть використовуватися іншими модулями, які потребують аутентифікації OAuth2. -OAuthSetupForLogin=Сторінка для створення токена OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Дивіться попередню вкладку +OAuthProvider=OAuth provider OAuthIDSecret=Ідентифікатор та секрет OAuth TOKEN_REFRESH=Присутнє оновлення маркера TOKEN_EXPIRED=Термін дії токена закінчився @@ -23,10 +24,13 @@ TOKEN_DELETE=Видалити збережений маркер OAUTH_GOOGLE_NAME=Сервіс Google OAuth OAUTH_GOOGLE_ID=Ідентифікатор Google OAuth OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Перейдіть до цієї сторінки , потім «Облікові дані», щоб створити облікові дані OAuth OAUTH_GITHUB_NAME=Служба OAuth GitHub OAUTH_GITHUB_ID=Ідентифікатор OAuth GitHub OAUTH_GITHUB_SECRET=Секрет OAuth GitHub -OAUTH_GITHUB_DESC=Перейдіть до цієї сторінки , а потім «Зареєструйте нову програму», щоб створити облікові дані OAuth +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/uk_UA/projects.lang b/htdocs/langs/uk_UA/projects.lang index 9b25bbf1d37..9e3fcad8e1f 100644 --- a/htdocs/langs/uk_UA/projects.lang +++ b/htdocs/langs/uk_UA/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Витрачений час TimeSpentForIntervention=Витрачений час TimeSpentForInvoice=Витрачений час OneLinePerUser=Один рядок на користувача -ServiceToUseOnLines=Сервіс для використання на лініях +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=Рахунок-фактура %s створено за час, витрачений на проект InterventionGeneratedFromTimeSpent=Втручання %s було створено з часу, витраченого на проект ProjectBillTimeDescription=Перевірте, чи ви вводите табель обліку робочого часу для завдань проекту І плануєте створювати рахунки-фактури з табеля обліку робочого часу для виставлення рахунку клієнту проекту (не перевіряйте, чи плануєте ви створювати рахунок-фактуру, який не базується на введених табелях обліку робочого часу). Примітка. Щоб створити рахунок-фактуру, перейдіть на вкладку «Витрачений час» проекту та виберіть рядки для включення. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/uk_UA/ticket.lang b/htdocs/langs/uk_UA/ticket.lang index 97c96e419f5..ecdc9a40bd5 100644 --- a/htdocs/langs/uk_UA/ticket.lang +++ b/htdocs/langs/uk_UA/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Загальнодоступний інтерфейс, яки TicketSetupDictionaries=Тип заявки, складність та аналітичні коди можна налаштувати із словників TicketParamModule=Налаштування змінної модуля TicketParamMail=Налаштування електронної пошти -TicketEmailNotificationFrom=Електронна пошта відправника для відповідей на заявки -TicketEmailNotificationFromHelp=Електронна пошта відправника для відповідей на заявки, надіслані з Dolibarr +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Повідомте про створення заявки на цю адресу електронної пошти TicketEmailNotificationToHelp=За наявності цієї адреси електронної пошти буде сповіщено про створення заявки TicketNewEmailBodyLabel=Текстове повідомлення надіслано після створення квитка @@ -99,6 +99,8 @@ TicketNewEmailBodyHelp=Вказаний тут текст буде вставл TicketParamPublicInterface=Налаштування загальнодоступного інтерфейсу TicketsEmailMustExist=Для створення квитка потрібна наявна адреса електронної пошти TicketsEmailMustExistHelp=У загальнодоступному інтерфейсі електронна адреса вже має бути заповнена в базі даних, щоб створити новий квиток. +TicketCreateThirdPartyWithContactIfNotExist=Ask name and company name for unknown emails. +TicketCreateThirdPartyWithContactIfNotExistHelp=Check if a thirdparty or a contact exists for the email entered. If not, ask a name and a company name to create a third party with contact. PublicInterface=Загальнодоступний інтерфейс TicketUrlPublicInterfaceLabelAdmin=Альтернативна URL-адреса для загальнодоступного інтерфейсу TicketUrlPublicInterfaceHelpAdmin=Можна визначити псевдонім для веб-сервера і таким чином зробити доступним загальнодоступний інтерфейс з іншою URL-адресою (сервер повинен діяти як проксі-сервер на цій новій URL-адресі) diff --git a/htdocs/langs/ur_PK/accountancy.lang b/htdocs/langs/ur_PK/accountancy.lang index 0871e38c1b8..d43f3d80620 100644 --- a/htdocs/langs/ur_PK/accountancy.lang +++ b/htdocs/langs/ur_PK/accountancy.lang @@ -48,8 +48,9 @@ CountriesNotInEEC=وہ ممالک جو EEC میں نہیں ہیں۔ CountriesInEECExceptMe=ای ای سی میں شامل ممالک سوائے %s کے CountriesExceptMe=%s کے علاوہ تمام ممالک AccountantFiles=ماخذ کی دستاویزات برآمد کریں۔ -ExportAccountingSourceDocHelp=اس ٹول کے ساتھ، آپ ان سورس ایونٹس کو ایکسپورٹ کر سکتے ہیں (CSV اور PDFs میں فہرست) جو آپ کی اکاؤنٹنسی بنانے کے لیے استعمال ہوتے ہیں۔ +ExportAccountingSourceDocHelp=With this tool, you can search and export the source events that are used to generate your accountancy.
The exported ZIP file will contain the lists of requested items in CSV, as well as their attached files in their original format (PDF, ODT, DOCX...). ExportAccountingSourceDocHelp2=اپنے جریدے برآمد کرنے کے لیے، مینو اندراج %s - %s استعمال کریں۔ +ExportAccountingProjectHelp=Specify a project if you need an accounting report only for a specific project. Expense reports and loan payments are not included in project reports. VueByAccountAccounting=حساب کتاب کے حساب سے دیکھیں VueBySubAccountAccounting=اکاؤنٹنگ ذیلی اکاؤنٹ کے ذریعہ دیکھیں @@ -161,7 +162,7 @@ BANK_DISABLE_DIRECT_INPUT=بینک اکاؤنٹ میں لین دین کی برا ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=جرنل پر ڈرافٹ ایکسپورٹ کو فعال کریں۔ ACCOUNTANCY_COMBO_FOR_AUX=ذیلی اکاؤنٹ کے لیے کومبو لسٹ کو فعال کریں (اگر آپ کے پاس بہت سارے فریق ثالث ہیں تو سست ہو سکتے ہیں، قدر کے کسی حصے پر تلاش کرنے کی صلاحیت کو توڑ دیں) ACCOUNTING_DATE_START_BINDING=اکاؤنٹنسی میں بائنڈنگ اور ٹرانسفر شروع کرنے کے لیے تاریخ کی وضاحت کریں۔ اس تاریخ کے نیچے، لین دین کو اکاؤنٹنگ میں منتقل نہیں کیا جائے گا۔ -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=اکاؤنٹنسی ٹرانسفر پر، ڈیفالٹ کے مطابق مدت شو کو منتخب کریں۔ +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=جریدہ فروخت کریں۔ ACCOUNTING_PURCHASE_JOURNAL=جریدہ خریدیں۔ @@ -182,7 +183,7 @@ DONATION_ACCOUNTINGACCOUNT=عطیات کو رجسٹر کرنے کے لیے اک ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=سبسکرپشنز کو رجسٹر کرنے کے لیے اکاؤنٹنگ اکاؤنٹ ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=کسٹمر ڈپازٹ کو رجسٹر کرنے کے لیے بطور ڈیفالٹ اکاؤنٹنگ اکاؤنٹ -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=خریدی گئی مصنوعات کے لیے بطور ڈیفالٹ اکاؤنٹنگ اکاؤنٹ (اگر پروڈکٹ شیٹ میں وضاحت نہ کی گئی ہو تو استعمال کیا جاتا ہے) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=EEC میں خریدی گئی مصنوعات کے لیے بطور ڈیفالٹ اکاؤنٹنگ اکاؤنٹ (اگر پروڈکٹ شیٹ میں وضاحت نہ کی گئی ہو تو استعمال کیا جاتا ہے) @@ -332,7 +333,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=اخراجات کی رپورٹوں ## Export NotifiedExportDate=Flag exported lines as Exported (to modify a line, you will need to delete the whole transaction and re-transfert it into accounting) -NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "%s" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Date validation and lock ConfirmExportFile=اکاؤنٹنگ برآمد فائل کی نسل کی تصدیق؟ ExportDraftJournal=ڈرافٹ جرنل برآمد کریں۔ @@ -427,6 +428,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=مع AccountancyErrorMismatchLetterCode=Mismatch in reconcile code AccountancyErrorMismatchBalanceAmount=The balance (%s) is not equal to 0 AccountancyErrorLetteringBookkeeping=Errors have occurred concerning the transactions: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=اکاؤنٹنگ اندراجات diff --git a/htdocs/langs/ur_PK/admin.lang b/htdocs/langs/ur_PK/admin.lang index 0bfbae3e576..c90a9fcf68b 100644 --- a/htdocs/langs/ur_PK/admin.lang +++ b/htdocs/langs/ur_PK/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=اگلی قدر (متبادل) MustBeLowerThanPHPLimit=نوٹ: آپ کی PHP کنفیگریشن فی الحال %s %s پر اپ لوڈ کرنے کے لیے زیادہ سے زیادہ فائل سائز کو محدود کرتی ہے، اس پیرامیٹر کی قدر سے قطع نظر NoMaxSizeByPHPLimit=نوٹ: آپ کی پی ایچ پی کی ترتیب میں کوئی حد مقرر نہیں ہے۔ MaxSizeForUploadedFiles=اپ لوڈ کردہ فائلوں کے لیے زیادہ سے زیادہ سائز (0 کسی بھی اپ لوڈ کی اجازت نہ دینے کے لیے) -UseCaptchaCode=لاگ ان پیج پر گرافیکل کوڈ (کیپچا) استعمال کریں۔ +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=اینٹی وائرس کمانڈ کا مکمل راستہ AntiVirusCommandExample=ClamAv ڈیمون کی مثال (کلاماو ڈیمون کی ضرورت ہے): /usr/bin/clamdscan
کلیم ون کی مثال (بہت سست): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= کمانڈ لائن پر مزید پیرامیٹرز @@ -477,7 +477,7 @@ InstalledInto=ڈائرکٹری %s میں انسٹال ہے۔ BarcodeInitForThirdparties=فریق ثالث کے لیے بڑے پیمانے پر بارکوڈ init BarcodeInitForProductsOrServices=بڑے پیمانے پر بارکوڈ شروع کریں یا مصنوعات یا خدمات کے لیے دوبارہ ترتیب دیں۔ CurrentlyNWithoutBarCode=فی الحال، آپ کے پاس %s ریکارڈ ہے -InitEmptyBarCode=اگلے %s خالی ریکارڈز کے لیے ابتدائی قدر +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=تمام موجودہ بارکوڈ اقدار کو مٹا دیں۔ ConfirmEraseAllCurrentBarCode=کیا آپ واقعی بارکوڈ کی تمام موجودہ اقدار کو مٹانا چاہتے ہیں؟ AllBarcodeReset=بارکوڈ کی تمام اقدار کو ہٹا دیا گیا ہے۔ @@ -504,7 +504,7 @@ WarningPHPMailC=- ای میلز بھیجنے کے لیے آپ کے اپنے ای WarningPHPMailD=نیز، اس لیے ای میل بھیجنے کے طریقے کو "SMTP" کی قدر میں تبدیل کرنے کی سفارش کی جاتی ہے۔ اگر آپ واقعی ای میلز بھیجنے کے لیے پہلے سے طے شدہ "PHP" طریقہ کو برقرار رکھنا چاہتے ہیں، تو صرف اس انتباہ کو نظر انداز کریں، یا ہوم - سیٹ اپ - دیگر میں MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP مستقل کو 1 پر سیٹ کرکے اسے ہٹا دیں۔ WarningPHPMail2=اگر آپ کے ای میل SMTP فراہم کنندہ کو ای میل کلائنٹ کو کچھ IP پتوں تک محدود کرنے کی ضرورت ہے (بہت کم)، یہ آپ کی ERP CRM درخواست کے لیے میل صارف ایجنٹ (MUA) کا IP پتہ ہے: %s ۔ WarningPHPMailSPF=اگر آپ کے بھیجنے والے کے ای میل ایڈریس میں موجود ڈومین کا نام SPF ریکارڈ کے ذریعے محفوظ ہے (اپنے ڈومین نام کے رجسٹرار سے پوچھیں)، تو آپ کو اپنے ڈومین کے DNS کے SPF ریکارڈ میں درج ذیل آئی پیز کو شامل کرنا ہوگا: %s a0a65d071f6f6fz0. -ActualMailSPFRecordFound=اصل SPF ریکارڈ ملا: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=تفصیل دکھانے کے لیے کلک کریں۔ DependsOn=اس ماڈیول کو ماڈیول کی ضرورت ہے RequiredBy=یہ ماڈیول ماڈیول (زبانوں) کو درکار ہے @@ -1129,7 +1129,7 @@ ValueOfConstantKey=کنفیگریشن مستقل کی قدر ConstantIsOn=آپشن %s آن ہے۔ NbOfDays=دنوں کی تعداد AtEndOfMonth=مہینے کے آخر میں -CurrentNext=موجودہ/اگلا +CurrentNext=A given day in month Offset=آفسیٹ AlwaysActive=ہمیشہ متحرک Upgrade=اپ گریڈ @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=کی بورڈ پر CTRL+F5 دبائیں یا اس قد NotSupportedByAllThemes=ول بنیادی تھیمز کے ساتھ کام کرتا ہے، ہو سکتا ہے کہ بیرونی تھیمز کی حمایت نہ ہو۔ BackgroundColor=پس منظر کا رنگ TopMenuBackgroundColor=ٹاپ مینو کے لیے پس منظر کا رنگ -TopMenuDisableImages=ٹاپ مینو میں تصاویر چھپائیں۔ +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=بائیں مینو کے لیے پس منظر کا رنگ BackgroundTableTitleColor=ٹیبل ٹائٹل لائن کے لیے پس منظر کا رنگ BackgroundTableTitleTextColor=ٹیبل ٹائٹل لائن کے لیے متن کا رنگ @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=نوٹ: مینو %s - %s میں سیلز ٹیکس یا VAT است SwapSenderAndRecipientOnPDF=پی ڈی ایف دستاویزات پر بھیجنے والے اور وصول کنندہ کے پتے کی پوزیشن کو تبدیل کریں۔ FeatureSupportedOnTextFieldsOnly=تنبیہ، خصوصیت صرف ٹیکسٹ فیلڈز اور کومبو لسٹوں پر معاون ہے۔ نیز ایک URL پیرامیٹر ایکشن=create or action=edit سیٹ ہونا چاہیے یا اس فیچر کو متحرک کرنے کے لیے صفحہ کا نام 'new.php' کے ساتھ ختم ہونا چاہیے۔ EmailCollector=ای میل کلکٹر +EmailCollectors=Email collectors EmailCollectorDescription=باقاعدگی سے ای میل باکسز (IMAP پروٹوکول کا استعمال کرتے ہوئے) اسکین کرنے کے لیے ایک طے شدہ جاب اور سیٹ اپ صفحہ شامل کریں اور اپنی درخواست میں موصول ہونے والی ای میلز کو صحیح جگہ پر ریکارڈ کریں اور/یا کچھ ریکارڈ خود بخود بنائیں (جیسے لیڈز)۔ NewEmailCollector=نیا ای میل کلکٹر EMailHost=ای میل IMAP سرور کا میزبان @@ -2073,14 +2074,14 @@ DateLastCollectResult=جمع کرنے کی تازہ ترین کوشش کی تا DateLastcollectResultOk=جمع کرنے کی تازہ ترین کامیابی کی تاریخ LastResult=تازہ ترین نتیجہ EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=ای میل جمع تصدیق EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=کارروائی کے لیے کوئی نیا ای میل (مماثل فلٹرز) نہیں ہے۔ NothingProcessed=کچھ نہیں کیا -XEmailsDoneYActionsDone=%s ای میلز اہل ہیں، %s ای میلز پر کامیابی کے ساتھ کارروائی کی گئی (%s ریکارڈ/کارروائیوں کے لیے) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=ای میل کے لیے ٹیمپلیٹ EMailsWillHaveMessageID=ای میلز میں اس نحو سے مماثل ٹیگ 'حوالہ جات' ہوگا۔ PDF_SHOW_PROJECT=دستاویز پر پروجیکٹ دکھائیں۔ ShowProjectLabel=پروجیکٹ لیبل +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=اگر آپ چاہتے ہیں کہ آپ کی پی ڈی ایف میں کچھ متن ایک ہی جنریٹڈ پی ڈی ایف میں 2 مختلف زبانوں میں ڈپلیکیٹ ہوں، تو آپ کو یہاں یہ دوسری زبان سیٹ کرنی ہوگی تاکہ جنریٹ کی گئی پی ڈی ایف ایک ہی صفحہ میں 2 مختلف زبانوں پر مشتمل ہو، جو پی ڈی ایف بنانے کے وقت منتخب کی گئی ہو اور یہ ( صرف چند پی ڈی ایف ٹیمپلیٹس اس کی حمایت کرتے ہیں)۔ فی پی ڈی ایف 1 زبان کے لیے خالی رکھیں۔ PDF_USE_A=ڈیفالٹ فارمیٹ پی ڈی ایف کے بجائے PDF/A فارمیٹ کے ساتھ پی ڈی ایف دستاویزات تیار کریں۔ FafaIconSocialNetworksDesc=یہاں ایک FontAwesome آئیکن کا کوڈ درج کریں۔ اگر آپ نہیں جانتے کہ FontAwesome کیا ہے، تو آپ عام قدر fa-address-book استعمال کر سکتے ہیں۔ @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/ur_PK/companies.lang b/htdocs/langs/ur_PK/companies.lang index 19bb9e4ab55..7155ad7f338 100644 --- a/htdocs/langs/ur_PK/companies.lang +++ b/htdocs/langs/ur_PK/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=تیسرے فریق کی نوعیت NatureOfContact=رابطے کی نوعیت Address=پتہ State=ریاست/صوبہ +StateId=State ID StateCode=ریاست/صوبائی کوڈ StateShort=حالت Region=علاقہ Region-State=علاقہ - ریاست Country=ملک CountryCode=ملک کا کوڈ -CountryId=ملک کی شناخت +CountryId=Country ID Phone=فون PhoneShort=فون Skype=سکائپ @@ -105,6 +106,7 @@ WrongSupplierCode=وینڈر کوڈ غلط ہے۔ CustomerCodeModel=کسٹمر کوڈ ماڈل SupplierCodeModel=وینڈر کوڈ ماڈل Gencod=بارکوڈ +GencodBuyPrice=Barcode of price ref ##### Professional ID ##### ProfId1Short=پروفیسر آئی ڈی 1 ProfId2Short=پروفیسر آئی ڈی 2 @@ -162,15 +164,15 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=- -ProfId5CM=- +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) +ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=- -ProfId5ShortCM=- +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. +ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=پروفیسر Id 1 (R.U.T.) ProfId2CO=- @@ -442,7 +444,7 @@ AddAddress=ایڈریس شامل کریں۔ SupplierCategory=وینڈر کیٹیگری JuridicalStatus200=آزاد DeleteFile=فائل کو ڈیلیٹ کریں -ConfirmDeleteFile=کیا آپ واقعی اس فائل کو حذف کرنا چاہتے ہیں؟ +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=سیلز کے نمائندے کو تفویض کیا گیا۔ Organization=تنظیم FiscalYearInformation=مالی سال diff --git a/htdocs/langs/ur_PK/errors.lang b/htdocs/langs/ur_PK/errors.lang index 905d70ab7fb..b65a51ea2c0 100644 --- a/htdocs/langs/ur_PK/errors.lang +++ b/htdocs/langs/ur_PK/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=ای میل %s غلط معلوم ہوتا ہے (ڈومین کا ErrorBadUrl=یو آر ایل %s غلط ہے۔ ErrorBadValueForParamNotAString=آپ کے پیرامیٹر کی خراب قدر۔ یہ عام طور پر اس وقت شامل ہوتا ہے جب ترجمہ غائب ہو۔ ErrorRefAlreadyExists=حوالہ %s پہلے سے موجود ہے۔ +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=لاگ ان %s پہلے سے موجود ہے۔ ErrorGroupAlreadyExists=گروپ %s پہلے سے موجود ہے۔ ErrorEmailAlreadyExists=ای میل %s پہلے سے موجود ہے۔ @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists= %s نام کی ایک اور فائل پ ErrorPartialFile=فائل سرور کے ذریعہ مکمل طور پر موصول نہیں ہوئی۔ ErrorNoTmpDir=عارضی ڈائرکٹری %s موجود نہیں ہے۔ ErrorUploadBlockedByAddon=اپ لوڈ کو PHP/Apache پلگ ان کے ذریعے مسدود کر دیا گیا ہے۔ -ErrorFileSizeTooLarge=فائل کا سائز بہت بڑا ہے۔ +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=فیلڈ %s بہت لمبا ہے۔ ErrorSizeTooLongForIntType=int قسم کے لیے سائز بہت لمبا ہے (%s ہندسے زیادہ سے زیادہ) ErrorSizeTooLongForVarcharType=سٹرنگ کی قسم کے لیے سائز بہت لمبا ہے (%s حروف زیادہ سے زیادہ) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=اس فیچر کو کام کرنے کے لیے جا ErrorPasswordsMustMatch=دونوں ٹائپ شدہ پاس ورڈ ایک دوسرے سے مماثل ہونے چاہئیں ErrorContactEMail=ایک تکنیکی خرابی پیش آگئی۔ براہ کرم، درج ذیل ای میل کے لیے منتظم سے رابطہ کریں ErrorWrongValueForField=فیلڈ %s : ' %s a09a4b739f17f8zec0839f17f8zec083839f17f8zexa83fz39fz7839f49fz083839f49fz0839fz7839f49fz0839fz7fz19 سے مماثل ہے +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=فیلڈ %s : ' %s ' ایک قیمت میدان %s میں پائے کا نہیں ہے %s ErrorFieldRefNotIn=فیلڈ %s : ' %s 839f17f8z080839f739f17fz087839fz08739fz087fz0839fz087fz39fz087fz087fz087fz07fz087f49fz07fz09fz0839f17fz087fz087fz07fz07fz0839f17fz07fz087fz0839f17fz087fz. ErrorsOnXLines=%s غلطیاں پائی گئیں۔ @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=آپ کو پہلے اپنے اکاؤن ErrorFailedToFindEmailTemplate=کوڈ نام %s کے ساتھ ٹیمپلیٹ تلاش کرنے میں ناکام ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=سروس پر مدت کی وضاحت نہیں کی گئی ہے۔ فی گھنٹہ قیمت کا حساب لگانے کا کوئی طریقہ نہیں ہے۔ ErrorActionCommPropertyUserowneridNotDefined=صارف کا مالک درکار ہے۔ -ErrorActionCommBadType=ایونٹ کی قسم کی منتخب کردہ (id: %n، کوڈ: %s) ایونٹ کی قسم ڈکشنری میں موجود نہیں ہے۔ +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=ورژن کی جانچ ناکام ErrorWrongFileName=فائل کے نام میں __SOMETHING__ نہیں ہو سکتا ErrorNotInDictionaryPaymentConditions=ادائیگی کی شرائط ڈکشنری میں نہیں ہے، براہ کرم ترمیم کریں۔ @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s ڈرافٹ نہیں ہے۔ ErrorExecIdFailed=کمانڈ "id" پر عمل نہیں کیا جا سکتا ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=آپ کا پی ایچ پی پیرامیٹر upload_max_filesize (%s) PHP پیرامیٹر post_max_size (%s) سے زیادہ ہے۔ یہ ایک مستقل سیٹ اپ نہیں ہے۔ WarningPasswordSetWithNoAccount=اس ممبر کے لیے پاس ورڈ سیٹ کیا گیا تھا۔ تاہم، کوئی صارف اکاؤنٹ نہیں بنایا گیا تھا۔ لہذا یہ پاس ورڈ محفوظ ہے لیکن اسے Dolibarr میں لاگ ان کرنے کے لیے استعمال نہیں کیا جا سکتا۔ اسے کسی بیرونی ماڈیول/انٹرفیس کے ذریعے استعمال کیا جا سکتا ہے لیکن اگر آپ کو کسی رکن کے لیے کوئی لاگ ان یا پاس ورڈ متعین کرنے کی ضرورت نہیں ہے، تو آپ ممبر ماڈیول سیٹ اپ سے "ہر ممبر کے لیے لاگ ان کا انتظام کریں" کے آپشن کو غیر فعال کر سکتے ہیں۔ اگر آپ کو لاگ ان کا انتظام کرنے کی ضرورت ہے لیکن کسی پاس ورڈ کی ضرورت نہیں ہے، تو آپ اس انتباہ سے بچنے کے لیے اس فیلڈ کو خالی رکھ سکتے ہیں۔ نوٹ: اگر ممبر کسی صارف سے منسلک ہے تو ای میل کو لاگ ان کے طور پر بھی استعمال کیا جا سکتا ہے۔ -WarningMandatorySetupNotComplete=لازمی پیرامیٹرز ترتیب دینے کے لیے یہاں کلک کریں۔ +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=اپنے ماڈیولز اور ایپلیکیشنز کو فعال کرنے کے لیے یہاں کلک کریں۔ WarningSafeModeOnCheckExecDir=وارننگ، PHP آپشن safe_mode آن ہے لہذا کمانڈ کو php پیرامیٹر safe_mode_exec_dir a09a4b739f80f17 کے ذریعہ اعلان کردہ ڈائریکٹری کے اندر ذخیرہ کرنا ضروری ہے۔ WarningBookmarkAlreadyExists=اس عنوان یا اس ہدف (URL) کے ساتھ ایک بک مارک پہلے سے موجود ہے۔ @@ -311,6 +325,7 @@ WarningCreateSubAccounts=وارننگ، آپ براہ راست ذیلی اکاؤ WarningAvailableOnlyForHTTPSServers=صرف HTTPS محفوظ کنکشن استعمال کرنے کی صورت میں دستیاب ہے۔ WarningModuleXDisabledSoYouMayMissEventHere=ماڈیول %s کو فعال نہیں کیا گیا ہے۔ تو ہو سکتا ہے کہ آپ یہاں بہت سی تقریب سے محروم رہیں۔ WarningPaypalPaymentNotCompatibleWithStrict=قدر 'سخت' آن لائن ادائیگی کی خصوصیات کو صحیح طریقے سے کام نہیں کرتی ہے۔ اس کے بجائے 'Lax' استعمال کریں۔ +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = قدر درست نہیں ہے۔ diff --git a/htdocs/langs/ur_PK/externalsite.lang b/htdocs/langs/ur_PK/externalsite.lang deleted file mode 100644 index 6663e35aa30..00000000000 --- a/htdocs/langs/ur_PK/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=بیرونی ویب سائٹ کا لنک سیٹ کریں۔ -ExternalSiteURL=HTML iframe مواد کا بیرونی سائٹ URL -ExternalSiteModuleNotComplete=ماڈیول ExternalSite کو صحیح طریقے سے کنفیگر نہیں کیا گیا تھا۔ -ExampleMyMenuEntry=میرا مینو اندراج diff --git a/htdocs/langs/ur_PK/ftp.lang b/htdocs/langs/ur_PK/ftp.lang deleted file mode 100644 index 26c4647aa20..00000000000 --- a/htdocs/langs/ur_PK/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP یا SFTP کلائنٹ ماڈیول سیٹ اپ -NewFTPClient=نیا FTP/FTPS کنکشن سیٹ اپ -FTPArea=FTP/FTPS ایریا -FTPAreaDesc=یہ اسکرین FTP اور SFTP سرور کا منظر دکھاتی ہے۔ -SetupOfFTPClientModuleNotComplete=FTP یا SFTP کلائنٹ ماڈیول کا سیٹ اپ نامکمل لگتا ہے۔ -FTPFeatureNotSupportedByYourPHP=آپ کا پی ایچ پی FTP یا SFTP فنکشنز کو سپورٹ نہیں کرتا ہے۔ -FailedToConnectToFTPServer=سرور سے منسلک ہونے میں ناکام (سرور %s، پورٹ %s) -FailedToConnectToFTPServerWithCredentials=متعین لاگ ان/پاس ورڈ کے ساتھ سرور میں لاگ ان کرنے میں ناکام -FTPFailedToRemoveFile=فائل کو ہٹانے میں ناکام %s ۔ -FTPFailedToRemoveDir=ڈائرکٹری کو ہٹانے میں ناکام %s : اجازتیں چیک کریں اور یہ کہ ڈائرکٹری خالی ہے۔ -FTPPassiveMode=غیر فعال موڈ -ChooseAFTPEntryIntoMenu=مینو سے ایک FTP/SFTP سائٹ منتخب کریں... -FailedToGetFile=فائلیں %s حاصل کرنے میں ناکام diff --git a/htdocs/langs/ur_PK/hrm.lang b/htdocs/langs/ur_PK/hrm.lang index dd5c8e817cd..8eddfbc2d61 100644 --- a/htdocs/langs/ur_PK/hrm.lang +++ b/htdocs/langs/ur_PK/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=کھلی اسٹیبلشمنٹ CloseEtablishment=بند اسٹیبلشمنٹ # Dictionary DictionaryPublicHolidays=چھٹی - عوامی تعطیلات -DictionaryDepartment=HRM - محکمہ کی فہرست +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - ملازمت کی پوزیشنیں۔ # Module Employees=ملازمین @@ -70,12 +70,22 @@ RequiredSkills=اس کام کے لیے درکار ہنر UserRank=صارف کی درجہ بندی SkillList=ہنر کی فہرست SaveRank=رینک محفوظ کریں۔ -knowHow=جانتے ہیں کہ کس طرح -HowToBe=کیسے بننا ہے۔ -knowledge=علم +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=ترک تبصرہ DateLastEval=آخری تشخیص کی تاریخ NoEval=اس ملازم کی کوئی تشخیص نہیں کی گئی۔ HowManyUserWithThisMaxNote=اس رینک والے صارفین کی تعداد HighestRank=اعلیٰ ترین عہدہ SkillComparison=مہارت کا موازنہ +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/ur_PK/install.lang b/htdocs/langs/ur_PK/install.lang index 2f18712058e..167e05d0c94 100644 --- a/htdocs/langs/ur_PK/install.lang +++ b/htdocs/langs/ur_PK/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=کنفیگریشن فائل %s قابل تحری ConfFileIsWritable=کنفیگریشن فائل %s قابل تحریر ہے۔ ConfFileMustBeAFileNotADir=کنفیگریشن فائل %s فائل ہونی چاہیے، ڈائریکٹری نہیں۔ ConfFileReload=کنفیگریشن فائل سے پیرامیٹرز کو دوبارہ لوڈ کرنا۔ -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=یہ پی ایچ پی متغیر POST اور GET کو سپورٹ کرتا ہے۔ PHPSupportPOSTGETKo=یہ ممکن ہے کہ آپ کا پی ایچ پی سیٹ اپ متغیرات POST اور/یا GET کو سپورٹ نہ کرے۔ php.ini میں variables_order پیرامیٹر چیک کریں۔ PHPSupportSessions=یہ پی ایچ پی سیشن کو سپورٹ کرتا ہے۔ @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=ہو سکتا ہے آپ نے پیرامیٹر '%s' ErrorFailedToCreateDatabase=ڈیٹا بیس '%s' بنانے میں ناکام۔ ErrorFailedToConnectToDatabase=ڈیٹا بیس '%s' سے جڑنے میں ناکام۔ ErrorDatabaseVersionTooLow=ڈیٹا بیس ورژن (%s) بہت پرانا ہے۔ ورژن %s یا اس سے زیادہ درکار ہے۔ -ErrorPHPVersionTooLow=پی ایچ پی ورژن بہت پرانا ہے۔ ورژن %s درکار ہے۔ +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=سرور سے کنکشن کامیاب لیکن ڈیٹا بیس '%s' نہیں ملا۔ ErrorDatabaseAlreadyExists=ڈیٹا بیس '%s' پہلے سے موجود ہے۔ +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=اگر ڈیٹا بیس موجود نہیں ہے تو واپس جائیں اور "Create database" کے آپشن کو چیک کریں۔ IfDatabaseExistsGoBackAndCheckCreate=اگر ڈیٹا بیس پہلے سے موجود ہے تو واپس جائیں اور "ڈیٹا بیس بنائیں" کے آپشن کو غیر چیک کریں۔ WarningBrowserTooOld=براؤزر کا ورژن بہت پرانا ہے۔ اپنے براؤزر کو Firefox، Chrome یا Opera کے حالیہ ورژن میں اپ گریڈ کرنے کی انتہائی سفارش کی جاتی ہے۔ diff --git a/htdocs/langs/ur_PK/knowledgemanagement.lang b/htdocs/langs/ur_PK/knowledgemanagement.lang index edcaf0493cc..0283e9b33fb 100644 --- a/htdocs/langs/ur_PK/knowledgemanagement.lang +++ b/htdocs/langs/ur_PK/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = مضامین KnowledgeRecord = مضمون KnowledgeRecordExtraFields = آرٹیکل کے لیے ایکسٹرا فیلڈز GroupOfTicket=ٹکٹوں کا گروپ -YouCanLinkArticleToATicketCategory=آپ کسی مضمون کو ٹکٹ گروپ سے جوڑ سکتے ہیں (لہذا نئے ٹکٹوں کی اہلیت کے دوران مضمون تجویز کیا جائے گا) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=جب گروپ ہوتا ہے تو ٹکٹوں کے لیے تجویز کیا جاتا ہے۔ SetObsolete=Set as obsolete diff --git a/htdocs/langs/ur_PK/loan.lang b/htdocs/langs/ur_PK/loan.lang index 0bfd57d77e7..927a82db1e7 100644 --- a/htdocs/langs/ur_PK/loan.lang +++ b/htdocs/langs/ur_PK/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=مالی وابستگی InterestAmount=دلچسپی CapitalRemain=سرمایہ باقی ہے۔ TermPaidAllreadyPaid = یہ اصطلاح پہلے سے ادا کی جاتی ہے۔ -CantUseScheduleWithLoanStartedToPaid = ادائیگی شروع ہونے کے ساتھ قرض کے لیے شیڈیولر استعمال نہیں کر سکتے +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = اگر آپ شیڈول استعمال کرتے ہیں تو آپ دلچسپی میں ترمیم نہیں کر سکتے # Admin ConfigLoan=ماڈیول قرض کی ترتیب diff --git a/htdocs/langs/ur_PK/main.lang b/htdocs/langs/ur_PK/main.lang index 8e3147fb32f..857ccb2222d 100644 --- a/htdocs/langs/ur_PK/main.lang +++ b/htdocs/langs/ur_PK/main.lang @@ -244,6 +244,7 @@ Designation=تفصیل DescriptionOfLine=لائن کی تفصیل DateOfLine=لائن کی تاریخ DurationOfLine=لائن کا دورانیہ +ParentLine=Parent line ID Model=دستاویز ٹیمپلیٹ DefaultModel=ڈیفالٹ دستاویز ٹیمپلیٹ Action=تقریب @@ -344,7 +345,7 @@ KiloBytes=کلو بائٹس MegaBytes=میگا بائٹس GigaBytes=گیگا بائٹس TeraBytes=ٹیرا بائٹس -UserAuthor=کی طرف سے مقرر +UserAuthor=Created by UserModif=کی طرف سے اپ ڈیٹ b=ب Kb=Kb @@ -517,6 +518,7 @@ or=یا Other=دیگر Others=دوسرے OtherInformations=دوسری معلومات +Workflow=Workflow Quantity=مقدار Qty=مقدار ChangedBy=کی طرف سے تبدیل @@ -619,6 +621,7 @@ MonthVeryShort11=ن MonthVeryShort12=ڈی AttachedFiles=منسلک فائلیں اور دستاویزات JoinMainDoc=مرکزی دستاویز میں شامل ہوں۔ +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=خصوصیت غیر فعال ہے۔ MoveBox=ویجیٹ کو منتقل کریں۔ Offered=کی پیشکش کی NotEnoughPermissions=آپ کو اس کارروائی کی اجازت نہیں ہے۔ +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=سیشن کا نام Method=طریقہ Receive=وصول کریں۔ @@ -798,6 +802,7 @@ URLPhoto=تصویر/لوگو کا URL SetLinkToAnotherThirdParty=کسی اور تیسرے فریق سے لنک کریں۔ LinkTo=سے لنک کریں۔ LinkToProposal=تجویز کا لنک +LinkToExpedition= Link to expedition LinkToOrder=آرڈر کے لیے لنک LinkToInvoice=انوائس سے لنک کریں۔ LinkToTemplateInvoice=ٹیمپلیٹ انوائس کا لنک @@ -1164,3 +1169,14 @@ NotClosedYet=ابھی بند نہیں ہوا۔ ClearSignature=دستخط دوبارہ ترتیب دیں۔ CanceledHidden=چھپا ہوا منسوخ کر دیا گیا۔ CanceledShown=منسوخ شدہ دکھایا گیا ہے۔ +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/ur_PK/members.lang b/htdocs/langs/ur_PK/members.lang index d4f2fee3785..00b10b8ea83 100644 --- a/htdocs/langs/ur_PK/members.lang +++ b/htdocs/langs/ur_PK/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=رکنیت کی آخری تاریخ EndSubscription=رکنیت کا خاتمہ SubscriptionId=تعاون کی شناخت WithoutSubscription=شراکت کے بغیر -MemberId=رکن کی شناخت +MemberId=Member Id +MemberRef=Member Ref NewMember=نیا رکن MemberType=ممبر کی قسم MemberTypeId=ممبر کی قسم کی شناخت @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=ممبر کی قسم کو حذف نہیں کیا جا NewSubscription=نئی شراکت NewSubscriptionDesc=یہ فارم آپ کو فاؤنڈیشن کے نئے رکن کے طور پر اپنی رکنیت کو ریکارڈ کرنے کی اجازت دیتا ہے۔ اگر آپ اپنی سبسکرپشن کی تجدید کرنا چاہتے ہیں (اگر پہلے ہی ممبر ہیں)، تو براہ کرم اس کے بجائے فاؤنڈیشن بورڈ سے ای میل %s سے رابطہ کریں۔ Subscription=شراکت +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=شراکتیں SubscriptionLate=دیر SubscriptionNotReceived=شراکت کبھی نہیں ملی @@ -135,7 +142,7 @@ CardContent=آپ کے ممبر کارڈ کا مواد # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=ہم آپ کو بتانا چاہتے ہیں کہ آپ کی رکنیت کی درخواست موصول ہو گئی ہے۔

ThisIsContentOfYourMembershipWasValidated=ہم آپ کو بتانا چاہتے ہیں کہ آپ کی رکنیت کی توثیق درج ذیل معلومات کے ساتھ کی گئی تھی:

-ThisIsContentOfYourSubscriptionWasRecorded=ہم آپ کو بتانا چاہتے ہیں کہ آپ کی نئی رکنیت ریکارڈ کی گئی تھی۔

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=ہم آپ کو بتانا چاہتے ہیں کہ آپ کی رکنیت ختم ہونے والی ہے یا پہلے ہی ختم ہو چکی ہے (__MEMBER_LAST_SUBSCRIPTION_DATE_END__)۔ ہمیں امید ہے کہ آپ اس کی تجدید کریں گے۔

ThisIsContentOfYourCard=یہ آپ کے بارے میں ہمارے پاس موجود معلومات کا خلاصہ ہے۔ اگر کچھ غلط ہے تو براہ کرم ہم سے رابطہ کریں۔

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=کسی مہمان کے خودکار تحریر کی صورت میں موصول ہونے والی اطلاعی ای میل کا موضوع @@ -198,7 +205,8 @@ NbOfSubscriptions=تعاون کی تعداد AmountOfSubscriptions=عطیات سے جمع کی گئی رقم TurnoverOrBudget=ٹرن اوور (کمپنی کے لیے) یا بجٹ (فاؤنڈیشن کے لیے) DefaultAmount=شراکت کی طے شدہ رقم -CanEditAmount=وزیٹر اپنی شراکت کی رقم کا انتخاب/ترمیم کر سکتا ہے۔ +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=مربوط آن لائن ادائیگی کے صفحے پر جائیں۔ ByProperties=فطرت سے MembersStatisticsByProperties=اراکین کے اعداد و شمار فطرت کے لحاظ سے @@ -218,3 +226,5 @@ XExternalUserCreated=%s بیرونی صارف (صارفین) بنائے گئے۔ ForceMemberNature=فورس ممبر کی نوعیت (انفرادی یا کارپوریشن) CreateDolibarrLoginDesc=اراکین کے لیے صارف لاگ ان کی تخلیق انہیں ایپلی کیشن سے منسلک ہونے کی اجازت دیتی ہے۔ دی گئی اجازتوں پر انحصار کرتے ہوئے، وہ، مثال کے طور پر، خود اپنی فائل سے مشورہ کرنے یا اس میں ترمیم کرنے کے قابل ہوں گے۔ CreateDolibarrThirdPartyDesc=فریق ثالث قانونی ادارہ ہے جو انوائس پر استعمال کیا جائے گا اگر آپ ہر شراکت کے لیے انوائس بنانے کا فیصلہ کرتے ہیں۔ آپ شراکت کو ریکارڈ کرنے کے عمل کے دوران بعد میں اسے تخلیق کر سکیں گے۔ +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/ur_PK/oauth.lang b/htdocs/langs/ur_PK/oauth.lang index 229279e4a47..3cb9e11cc37 100644 --- a/htdocs/langs/ur_PK/oauth.lang +++ b/htdocs/langs/ur_PK/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=ایک ٹوکن تیار کیا گیا اور مقامی ڈیٹا NewTokenStored=ٹوکن موصول ہوا اور محفوظ کیا گیا۔ ToCheckDeleteTokenOnProvider=%s OAuth فراہم کنندہ کے ذریعہ محفوظ کردہ اجازت کو چیک کرنے / حذف کرنے کے لیے یہاں کلک کریں TokenDeleted=ٹوکن حذف ہو گیا۔ -RequestAccess=رسائی کی درخواست/ تجدید کے لیے یہاں کلک کریں اور محفوظ کرنے کے لیے ایک نیا ٹوکن وصول کریں۔ -DeleteAccess=ٹوکن کو حذف کرنے کے لیے یہاں کلک کریں۔ +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=اپنے OAuth فراہم کنندہ کے ساتھ اپنی اسناد بناتے وقت درج ذیل URL کو ری ڈائریکٹ URI کے بطور استعمال کریں: -ListOfSupportedOauthProviders=اپنے OAuth2 فراہم کنندہ کے ذریعہ فراہم کردہ اسناد درج کریں۔ صرف تعاون یافتہ OAuth2 فراہم کنندگان یہاں درج ہیں۔ یہ خدمات دوسرے ماڈیولز کے ذریعہ استعمال کی جا سکتی ہیں جن کو OAuth2 کی توثیق کی ضرورت ہے۔ -OAuthSetupForLogin=OAuth ٹوکن بنانے کے لیے صفحہ +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=پچھلا ٹیب دیکھیں +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID اور خفیہ TOKEN_REFRESH=ٹوکن ریفریش پیش کریں۔ TOKEN_EXPIRED=ٹوکن کی میعاد ختم ہو گئی۔ @@ -23,10 +24,13 @@ TOKEN_DELETE=محفوظ کردہ ٹوکن کو حذف کریں۔ OAUTH_GOOGLE_NAME=OAuth گوگل سروس OAUTH_GOOGLE_ID=OAuth گوگل آئی ڈی OAUTH_GOOGLE_SECRET=OAuth گوگل سیکریٹ -OAUTH_GOOGLE_DESC= اس صفحہ پر جائیں پھر OAuth اسناد بنانے کے لیے "Credentials" پر جائیں OAUTH_GITHUB_NAME=OAuth GitHub سروس OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub سیکریٹ -OAUTH_GITHUB_DESC= اس صفحہ پر جائیں پھر OAuth اسناد بنانے کے لیے "نئی درخواست رجسٹر کریں" +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth اسٹرائپ ٹیسٹ OAUTH_STRIPE_LIVE_NAME=OAuth اسٹرائپ لائیو +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/ur_PK/projects.lang b/htdocs/langs/ur_PK/projects.lang index 6a22b98eb9b..0b5f6827b8b 100644 --- a/htdocs/langs/ur_PK/projects.lang +++ b/htdocs/langs/ur_PK/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=وقت گزارا ہوا بل TimeSpentForIntervention=وقت گزارا۔ TimeSpentForInvoice=وقت گزارا۔ OneLinePerUser=فی صارف ایک لائن -ServiceToUseOnLines=لائنوں پر استعمال کرنے کے لیے سروس +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=انوائس %s پروجیکٹ پر خرچ کیے گئے وقت سے تیار کیا گیا ہے InterventionGeneratedFromTimeSpent=مداخلت %s پروجیکٹ پر خرچ کیے گئے وقت سے پیدا کی گئی ہے۔ ProjectBillTimeDescription=چیک کریں کہ آیا آپ پروجیکٹ کے کاموں پر ٹائم شیٹ درج کرتے ہیں اور آپ پروجیکٹ کے کسٹمر کو بل دینے کے لیے ٹائم شیٹ سے انوائس (انوائسز) بنانے کا ارادہ رکھتے ہیں (یہ چیک نہ کریں کہ آیا آپ انوائس بنانے کا ارادہ رکھتے ہیں جو درج کردہ ٹائم شیٹ پر مبنی نہیں ہے)۔ نوٹ: انوائس بنانے کے لیے، پراجیکٹ کے 'وقت گزارا ہوا' ٹیب پر جائیں اور شامل کرنے کے لیے لائنوں کو منتخب کریں۔ @@ -294,3 +294,4 @@ EnablePublicLeadForm=Enable the public form for contact NewLeadbyWeb=Your message or request has been recorded. We will answer or contact your soon. NewLeadForm=New contact form LeadFromPublicForm=Online lead from public form +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/uz_UZ/accountancy.lang b/htdocs/langs/uz_UZ/accountancy.lang index c1d0b7d84b9..3a43fb98d83 100644 --- a/htdocs/langs/uz_UZ/accountancy.lang +++ b/htdocs/langs/uz_UZ/accountancy.lang @@ -48,7 +48,7 @@ CountriesNotInEEC=EEC tarkibiga kirmagan mamlakatlar CountriesInEECExceptMe=%s dan tashqari EECdagi mamlakatlar CountriesExceptMe=%s dan tashqari barcha mamlakatlar AccountantFiles=Dastlabki hujjatlarni eksport qilish -ExportAccountingSourceDocHelp=Ushbu vosita yordamida siz buxgalteriya hisobingizni yaratish uchun foydalaniladigan manba voqealarini (CSV va PDF-dagi ro'yxat) eksport qilishingiz mumkin. +ExportAccountingSourceDocHelp=With this tool, you can export the source events (list in CSV and PDFs) that are used to generate your accountancy. ExportAccountingSourceDocHelp2=Jurnallaringizni eksport qilish uchun %s - %s menyu yozuvidan foydalaning. VueByAccountAccounting=Buxgalteriya hisobi bo'yicha ko'rish VueBySubAccountAccounting=Buxgalteriya subkontaji bo'yicha ko'rish @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=Bank hisobvarag'idagi operatsiyani to'g'ridan-to'g'ri ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=Jurnalda qoralama eksportni yoqish ACCOUNTANCY_COMBO_FOR_AUX=Yordamchi hisob uchun kombinatsiyalangan ro'yxatni yoqish (agar sizda uchinchi shaxslar ko'p bo'lsa, sekin bo'lishi mumkin, qiymatning bir qismini qidirish qobiliyati buziladi) ACCOUNTING_DATE_START_BINDING=Buxgalteriyada majburiy va o'tkazishni boshlash uchun sanani aniqlang. Ushbu sana ostida operatsiyalar buxgalteriya hisobiga o'tkazilmaydi. -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=Buxgalteriya o'tkazmalarida sukut bo'yicha davr ko'rsatilishini tanlang +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=Sell journal ACCOUNTING_PURCHASE_JOURNAL=Purchase journal @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=Xayriya mablag'larini ro'yxatdan o'tkazish uchun buxg ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=Obunalarni ro'yxatdan o'tkazish uchun buxgalteriya hisobi ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=Mijozlar depozitini ro'yxatdan o'tkazish uchun sukut bo'yicha buxgalteriya hisobi -UseAuxiliaryAccountOnCustomerDeposit=Mijozlarning depozit liniyalarida sub-hisoblardan foydalaning +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=Xarid qilingan mahsulotlar uchun sukut bo'yicha buxgalteriya hisobi (agar mahsulot varag'ida belgilanmagan bo'lsa foydalaniladi) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=EECda sotib olingan mahsulotlar uchun sukut bo'yicha buxgalteriya hisobi (agar mahsulot varag'ida belgilanmagan bo'lsa foydalaniladi) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=Agar siz buxgalteriya hisobini xarajatlar to'g'risid DescVentilDoneExpenseReport=Xarajatlar hisobotlari ro'yxati va ularning to'lovlarini hisobga olish hisobi bilan bu erda maslahatlashing Closure=Yillik yopilish -DescClosure=Hali tasdiqlanmagan va qulflanmagan oylar bo'yicha harakatlar soni bilan bu erda maslahatlashing +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=Tasdiqlanmagan va qulflanmagan harakatlarning umumiy ko'rinishi AllMovementsWereRecordedAsValidated=Barcha harakatlar tasdiqlangan va qulflangan sifatida qayd etilgan NotAllMovementsCouldBeRecordedAsValidated=Hamma harakatlarni tasdiqlangan va qulflangan deb yozib bo'lmaydi @@ -332,7 +332,7 @@ ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS=Xarajatlar hisobotlari bo'yicha bux ## Export NotifiedExportDate=Eksport qilingan qatorlarni eksport qilingan deb belgilash (chiziqni o‘zgartirish uchun siz butun tranzaksiyani o‘chirib tashlashingiz va uni buxgalteriya hisobiga qayta o‘tkazishingiz kerak) -NotifiedValidationDate=Eksport qilingan yozuvlarni tekshirish va bloklash (“Yopish” funksiyasi bilan bir xil effekt, satrlarni o‘zgartirish va o‘chirish ALBATTA mumkin emas) +NotifiedValidationDate=Validate and Lock the exported entries (same effect than the "Closure" feature, modification and deletion of the lines will DEFINITELY not be possible) DateValidationAndLock=Sanani tekshirish va qulflash ConfirmExportFile=Buxgalteriya eksporti faylini yaratishni tasdiqlashmi? ExportDraftJournal=Jurnal jurnalini eksport qiling @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=Kech AccountancyErrorMismatchLetterCode=Kelishuv kodidagi nomuvofiqlik AccountancyErrorMismatchBalanceAmount=Balans (%s) 0 ga teng emas AccountancyErrorLetteringBookkeeping=Tranzaktsiyalarda xatoliklar yuz berdi: %s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=Buxgalteriya yozuvlari diff --git a/htdocs/langs/uz_UZ/admin.lang b/htdocs/langs/uz_UZ/admin.lang index 53a5095c1ba..de5991eb679 100644 --- a/htdocs/langs/uz_UZ/admin.lang +++ b/htdocs/langs/uz_UZ/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Keyingi qiymat (almashtirish) MustBeLowerThanPHPLimit=Eslatma: sizning PHP konfiguratsiyangiz hozirda ushbu parametr qiymatidan qat'i nazar, %s %s-ga yuklash uchun maksimal hajmni cheklaydi NoMaxSizeByPHPLimit=Eslatma: PHP-ning konfiguratsiyasida chegara o'rnatilmagan MaxSizeForUploadedFiles=Yuklangan fayllar uchun maksimal o'lcham (har qanday yuklashga ruxsat bermaslik uchun 0) -UseCaptchaCode=Kirish sahifasida grafik koddan (CAPTCHA) foydalaning +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Antivirus buyrug'iga to'liq yo'l AntiVirusCommandExample=ClamAv Daemon uchun namuna (clamav-demon talab qilinadi): / usr / bin / clamdscan
ClamWin uchun misol (juda sekin): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Buyruq satrida ko'proq parametrlar @@ -477,7 +477,7 @@ InstalledInto=%s katalogiga o'rnatilgan BarcodeInitForThirdparties=Uchinchi tomonlar uchun ommaviy shtrix-kod BarcodeInitForProductsOrServices=Mahsulotlar yoki xizmatlar uchun ommaviy shtrix kodni qayta tiklash yoki tiklash CurrentlyNWithoutBarCode=Ayni paytda sizda %s yozuvi %s a0a65d071f60z0c bardefined29fcda mavjud. -InitEmptyBarCode=Keyingi %s bo'sh yozuvlar uchun boshlang'ich qiymati +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=Barcha joriy shtrix qiymatlarini o'chirib tashlang ConfirmEraseAllCurrentBarCode=Haqiqatan ham barcha shtrix kod qiymatlarini o'chirishni xohlaysizmi? AllBarcodeReset=Barcha shtrix qiymatlari o'chirildi @@ -504,7 +504,7 @@ WarningPHPMailC=- Elektron pochta xabarlarini yuborish uchun o'zingizning elektr WarningPHPMailD=Shuningdek, elektron pochta xabarlarini yuborish usulini "SMTP" qiymatiga o'zgartirish tavsiya etiladi. Agar siz haqiqatan ham elektron pochta xabarlarini yuborish uchun "PHP" usulini saqlamoqchi bo'lsangiz, bu ogohlantirishni e'tiborsiz qoldiring yoki MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP -ni "Uy - O'rnatish - Boshqalar" da 1 ga o'zgartirib, olib tashlang. WarningPHPMail2=Agar sizning SMTP elektron pochta provayderingiz elektron pochta mijozini ba'zi bir IP-manzillar bilan cheklashi kerak bo'lsa (juda kam), bu sizning ERP CRM-ilovangiz uchun pochta foydalanuvchisi agentining (MUA) IP-manzili: %s . WarningPHPMailSPF=Yuboruvchi elektron pochta manzilidagi domen nomi SPF yozuvi bilan himoyalangan bo'lsa (domen nomini ro'yxatga oluvchidan so'rang), siz domeningiz DNS SPF yozuviga quyidagi IP-larni qo'shishingiz kerak: %s . -ActualMailSPFRecordFound=Haqiqiy SPF yozuvi topildi: %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Tavsifni ko'rsatish uchun bosing DependsOn=Ushbu modulga modul (lar) kerak RequiredBy=Ushbu modul modul (lar) tomonidan talab qilinadi @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Konfiguratsiya doimiyligining qiymati ConstantIsOn=%s variant yoniq NbOfDays=Kunlar soni AtEndOfMonth=Oy oxirida -CurrentNext=Joriy / keyingi +CurrentNext=A given day in month Offset=Ofset AlwaysActive=Har doim faol Upgrade=Yangilash @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Klaviaturada CTRL + F5 tugmachalarini bosing yoki ushbu NotSupportedByAllThemes=Will asosiy mavzular bilan ishlaydi, tashqi mavzular tomonidan qo'llab-quvvatlanmasligi mumkin BackgroundColor=Fon rangi TopMenuBackgroundColor=Yuqori menyu uchun fon rangi -TopMenuDisableImages=Yuqori menyuda rasmlarni yashirish +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Chap menyu uchun fon rangi BackgroundTableTitleColor=Jadval sarlavhasi uchun fon rangi BackgroundTableTitleTextColor=Jadval sarlavhasi uchun matn rangi @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Eslatma: %s - %s menyusida Off menyusida Eslatma: Ushbu dastlabki misolda yetakchi sarlavhasi, jumladan, e-pochta ham yaratiladi. Agar uchinchi tomon ma'lumotlar bazasida topilmasa (yangi mijoz), yetakchi ID 1 bilan uchinchi tomonga biriktiriladi. EmailCollectorExampleToCollectLeads=Qo'llanmalarni yig'ish misoli @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Ish takliflariga murojaat qili EmailCollectorExampleToCollectJobCandidatures=Elektron pochta orqali olingan nomzodlarni yig'ish misoli NoNewEmailToProcess=Ishlash uchun yangi elektron pochta xabarlari (mos keladigan filtrlar) yo'q NothingProcessed=Hech narsa qilinmadi -XEmailsDoneYActionsDone=%s elektron pochta xabarlari malakali, %s elektron pochta xabarlari muvaffaqiyatli qayta ishlandi (%s yozuvi / bajarilgan harakatlar uchun) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Tadbirni kun tartibiga yozib qo'ying (elektron pochta turi yuborilgan yoki qabul qilingan holda) CreateLeadAndThirdParty=Etakchi (va kerak bo'lsa, uchinchi tomon) yarating CreateTicketAndThirdParty=Chipta yarating (agar uchinchi tomon oldingi operatsiya orqali yuklangan bo'lsa yoki elektron pochta sarlavhasidagi trekerdan taxmin qilingan bo'lsa, uchinchi tomon bilan bog'langan, aks holda uchinchi tomonsiz) @@ -2105,7 +2106,7 @@ CreateCandidature=Ishga ariza yarating FormatZip=Zip MainMenuCode=Menyu kirish kodi (asosiy menyu) ECMAutoTree=Avtomatik ECM daraxtini ko'rsating -OperationParamDesc=Qiymatlarni ajratib olish yoki o'rnatish uchun foydalanish qoidalarini belgilang.
E-pochta mavzusidan nom chiqarish kerak bo'lgan operatsiyalarga misol:
name=EXTRACT:SUBJECT:Kompaniyadan xabar ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER :X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:Mening kompaniyam [^\\s]*)

a foydalaning; char bir nechta xususiyatlarni ajratib olish yoki o'rnatish uchun ajratuvchi sifatida. +OperationParamDesc=Define the rules to use to extract or set values.
Example for operations that need to extract a name from email subject:
name=EXTRACT:SUBJECT:Message from company ([^\n]*)
Example for operations that create objects:
objproperty1=SET:the value to set
objproperty2=SET:a value including value of __objproperty1__
objproperty3=SETIFEMPTY:value used if objproperty3 is not already defined
objproperty4=EXTRACT:HEADER:X-Myheaderkey:\\s*([^\\s]*)
options_myextrafield1=EXTRACT:SUBJECT:([^\n]*)
object.objproperty5=EXTRACT:BODY:My company name is\\s([^\\s]*)

Use a ; char as separator to extract or set several properties. OpeningHours=Ish vaqti OpeningHoursDesc=Bu erga kompaniyangizning muntazam ish vaqtiga kiring. ResourceSetup=Resurs modulining konfiguratsiyasi @@ -2167,6 +2168,9 @@ EmailTemplate=Elektron pochta uchun shablon EMailsWillHaveMessageID=Elektron pochta xabarlarida ushbu sintaksisga mos keladigan 'Adabiyotlar' yorlig'i bo'ladi PDF_SHOW_PROJECT=Loyihani hujjatda ko'rsatish ShowProjectLabel=Loyiha yorlig'i +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Agar siz o'zingizning PDF-dagi ba'zi matnlarni bir xil hosil qilingan PDF-da 2 xil tilda nusxalashni xohlasangiz, siz ushbu ikkinchi tilni o'rnatishingiz kerak, shuning uchun yaratilgan PDF bir xil sahifada 2 xil tilni o'z ichiga oladi, bu PDF yaratishda tanlangan va shu ( faqat bir nechta PDF shablonlari buni qo'llab-quvvatlaydi). PDF uchun 1 ta til uchun bo'sh qoldiring. PDF_USE_A=PDF hujjatlarini standart PDF formati o'rniga PDF/A formatida yarating FafaIconSocialNetworksDesc=Bu erga FontAwesome ikonkasining kodini kiriting. Agar siz FontAwesome nima ekanligini bilmasangiz, umumiy qiymatdan foydalanishingiz mumkin. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Turli o'lchamdagi biznes karta uchun shablon InventorySetup= Inventarizatsiyani sozlash ExportUseLowMemoryMode=Kam xotira rejimidan foydalaning ExportUseLowMemoryModeHelp=Dumpni bajarish uchun past xotira rejimidan foydalaning (siqish PHP xotirasiga emas, balki quvur orqali amalga oshiriladi). Ushbu usul faylning to'ldirilganligini tekshirishga imkon bermaydi va agar u muvaffaqiyatsiz bo'lsa, xato xabari haqida xabar berib bo'lmaydi. -ShowQuickAddLink=Yuqori o'ng menyuda elementni tezda qo'shish uchun tugmani ko'rsating + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Settings +WebhookSetupPage = Webhook setup page +ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Ping uchun ishlatiladigan xesh ReadOnlyMode=Misol "Faqat o'qish" rejimida DEBUGBAR_USE_LOG_FILE=Jurnallarni yopish uchun dolibarr.log faylidan foydalaning UsingLogFileShowAllRecordOfSubrequestButIsSlower=Jonli xotirani ushlash o'rniga jurnallarni tuzoqqa tushirish uchun dolibarr.log faylidan foydalaning. Bu faqat joriy jarayon jurnali o'rniga barcha jurnallarni qo'lga olish imkonini beradi (shu jumladan, ajax sub-so'rovlar sahifalaridan biri), lekin sizning misolingizni juda sekinlashtiradi. Tavsiya etilmaydi. FixedOrPercent=Ruxsat etilgan ("fikrlangan" kalit so'zidan foydalaning) yoki foiz ("foiz" kalit so'zidan foydalaning) DefaultOpportunityStatus=Birlamchi imkoniyat holati (etakchi yaratilgandagi birinchi holat) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/uz_UZ/companies.lang b/htdocs/langs/uz_UZ/companies.lang index 21e0118a2e6..84dbd2fcdef 100644 --- a/htdocs/langs/uz_UZ/companies.lang +++ b/htdocs/langs/uz_UZ/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Uchinchi shaxsning tabiati NatureOfContact=Aloqa xususiyati Address=Manzil State=Shtat / viloyat +StateId=State ID StateCode=Shtat / viloyat kodi StateShort=Shtat Region=Mintaqa Region-State=Hudud - shtat Country=Mamlakat CountryCode=Mamlakat kodi -CountryId=Mamlakat identifikatori +CountryId=Country ID Phone=Telefon PhoneShort=Telefon Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (savdo reestri) ProfId2CM=Id. prof. 2 (Soliq to'lovchi raqami) -ProfId3CM=Id. prof. 3 (Yaratilish qarori) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Savdo reestri ProfId2ShortCM=Soliq to'lovchi raqami -ProfId3ShortCM=Yaratilish farmoni -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Others ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) @@ -443,7 +444,7 @@ AddAddress=Manzil qo'shing SupplierCategory=Sotuvchi toifasi JuridicalStatus200=Mustaqil DeleteFile=Faylni o'chirish -ConfirmDeleteFile=Ushbu faylni o'chirishni xohlaysizmi? +ConfirmDeleteFile=Are you sure you want to delete this file? AllocateCommercial=Savdo vakiliga tayinlangan Organization=Tashkilot FiscalYearInformation=Moliyaviy yil diff --git a/htdocs/langs/uz_UZ/errors.lang b/htdocs/langs/uz_UZ/errors.lang index e992dabb6b3..180e93377f7 100644 --- a/htdocs/langs/uz_UZ/errors.lang +++ b/htdocs/langs/uz_UZ/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=Ushbu xususiyat ishlashi uchun Javascript o'chirib ErrorPasswordsMustMatch=Yozilgan har ikkala parol bir-biriga mos kelishi kerak ErrorContactEMail=Texnik xatolik yuz berdi. Iltimos, administrator bilan bog'laning. %s elektron pochta manziliga va sizning xabaringiz nusxasida ushbu ekranning nusxasini yoki sizning ekraningizda nusxa ko'chirish xatosini yuboring %s , ErrorWrongValueForField=Maydon %s : ' %s ' regex qoida %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Dala %s : « %s " bir qiymati dala %s topilmadi %s ErrorFieldRefNotIn=Maydon %s : ' %s ' %s emas ErrorsOnXLines=%s xatolar topildi @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=Avval hisob qaydnomangizni o'rnatishing ErrorFailedToFindEmailTemplate=%s kodli shablonni topib bo'lmadi ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Xizmat muddati aniqlanmagan. Bir soatlik narxni hisoblashning iloji yo'q. ErrorActionCommPropertyUserowneridNotDefined=Foydalanuvchi egasi talab qilinadi -ErrorActionCommBadType=Tanlangan voqea turi (id: %n, kod: %s) Voqealar turi lug'atida mavjud emas +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Versiyani tekshirib bo'lmadi ErrorWrongFileName=Fayl nomida __SOMETHING__ bo'lishi mumkin emas ErrorNotInDictionaryPaymentConditions=To'lov shartlari lug'atida yo'q, iltimos o'zgartiring. @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=Xato, barcha summalar bitta ustunga kiritilishi kerak ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=Hisob-fakturalarni %s valyutasidagi hisobdan %s valyutasida to‘lashga harakat qilasiz. ErrorInvoiceLoadThirdParty=“%s” invoys uchun uchinchi tomon obyektini yuklab bo‘lmadi ErrorInvoiceLoadThirdPartyKey=“%s” uchinchi tomon kaliti “%s” invoys uchun sozlanmagan -ErrorDeleteLineNotAllowedByObjectStatus=Haqiqiy ob'ekt holati bo'yicha qatorni o'chirishga ruxsat berilmaydi +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=So‘rov bajarilmadi +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=PHP parametringiz upload_max_filesize (%s) PHP post_max_size (%s) parametridan yuqori. Bu izchil o'rnatish emas. WarningPasswordSetWithNoAccount=Ushbu a'zo uchun parol o'rnatildi. Biroq, foydalanuvchi hisobi yaratilmagan. Shunday qilib, ushbu parol saqlanadi, ammo Dolibarr-ga kirish uchun foydalanib bo'lmaydi. U tashqi modul / interfeys tomonidan ishlatilishi mumkin, ammo agar siz a'zo uchun hech qanday login va parolni belgilashga hojat bo'lmasa, siz "har bir a'zo uchun kirishni boshqarish" parametrini a'zo modulidan o'chirib qo'yishingiz mumkin. Agar sizga loginni boshqarish kerak bo'lsa, lekin hech qanday parol kerak bo'lmasa, ushbu ogohlantirishni oldini olish uchun ushbu maydonni bo'sh qoldirishingiz mumkin. Izoh: Agar foydalanuvchi bilan bog'langan bo'lsa, elektron pochta orqali kirish sifatida ham foydalanish mumkin. -WarningMandatorySetupNotComplete=Majburiy parametrlarni o'rnatish uchun shu erni bosing +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Modul va dasturlarni yoqish uchun shu erni bosing WarningSafeModeOnCheckExecDir=Ogohlantirish, PHP opsiyasi yoniq, shuning uchun buyruq php parametri safe_mode_exec_dir php parametri bilan e'lon qilingan katalog ichida saqlanishi kerak. WarningBookmarkAlreadyExists=Ushbu nom yoki ushbu maqsad (URL) bilan xatcho'p allaqachon mavjud. @@ -321,12 +325,8 @@ WarningCreateSubAccounts=Ogohlantirish, siz to'g'ridan-to'g'ri sub-qayd yozuvini WarningAvailableOnlyForHTTPSServers=Faqat HTTPS xavfsiz ulanishidan foydalanish mumkin. WarningModuleXDisabledSoYouMayMissEventHere=%s moduli yoqilmagan. Shunday qilib, siz bu erda ko'plab tadbirlarni o'tkazib yuborishingiz mumkin. WarningPaypalPaymentNotCompatibleWithStrict="Qat'iy" qiymati onlayn to'lov xususiyatlarining noto'g'ri ishlashiga olib keladi. Buning o'rniga "Lax" dan foydalaning. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME -<<<<<<< BOSH -======= -<<<<<<< BOSH -<<<<<<< BOSH ->>>>>>> git@github.com ning '15.0' filiali:Dolibarr/dolibarr.git # Validate RequireValidValue = Qiymat yaroqsiz RequireAtLeastXString = Kamida %s belgi kerak @@ -347,12 +347,3 @@ BadSetupOfField = Maydonni noto'g'ri sozlashda xato BadSetupOfFieldClassNotFoundForValidation = Maydonni noto'g'ri o'rnatish xatosi: Tasdiqlash uchun sinf topilmadi BadSetupOfFieldFileNotFound = Maydonni noto'g'ri o'rnatishda xato: Faylni kiritish uchun topilmadi BadSetupOfFieldFetchNotCallable = Maydonni noto'g'ri o'rnatish xatosi: Sinfda qo'ng'iroq qilib bo'lmaydi -<<<<<<< BOSH -======= -======= -======= ->>>>>>> git@github.com ning '15.0' filiali:Dolibarr/dolibarr.git ->>>>>>> git@github.com ning '15.0' filiali:Dolibarr/dolibarr.git -======= ->>>>>>> git@github.com ning '15.0' filiali:Dolibarr/dolibarr.git ->>>>>>> git@github.com ning '15.0' filiali:Dolibarr/dolibarr.git diff --git a/htdocs/langs/uz_UZ/externalsite.lang b/htdocs/langs/uz_UZ/externalsite.lang deleted file mode 100644 index db049960d45..00000000000 --- a/htdocs/langs/uz_UZ/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Tashqi veb-saytga havolani o'rnatish -ExternalSiteURL=HTML iframe tarkibidagi tashqi sayt URL manzili -ExternalSiteModuleNotComplete=ExternalSite moduli to'g'ri sozlanmagan. -ExampleMyMenuEntry=Mening yozuvim diff --git a/htdocs/langs/uz_UZ/ftp.lang b/htdocs/langs/uz_UZ/ftp.lang deleted file mode 100644 index 4c409340eca..00000000000 --- a/htdocs/langs/uz_UZ/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP yoki SFTP Client modulini sozlash -NewFTPClient=FTP / FTPS ulanishini yangi sozlash -FTPArea=FTP / FTPS maydoni -FTPAreaDesc=Ushbu ekran FTP va SFTP serverining ko'rinishini ko'rsatadi. -SetupOfFTPClientModuleNotComplete=FTP yoki SFTP mijoz modulini sozlash tugallanmaganga o'xshaydi -FTPFeatureNotSupportedByYourPHP=Sizning PHP-da FTP yoki SFTP funktsiyalari qo'llab-quvvatlanmaydi -FailedToConnectToFTPServer=Serverga ulanib bo'lmadi (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Belgilangan login / parol bilan serverga kirishda xatolik yuz berdi -FTPFailedToRemoveFile= %s faylini o'chirib bo'lmadi. -FTPFailedToRemoveDir= %s katalogini o'chirib bo'lmadi: ruxsatlarni tekshiring va katalog bo'sh. -FTPPassiveMode=Passiv rejim -ChooseAFTPEntryIntoMenu=Menyudan FTP / SFTP saytini tanlang ... -FailedToGetFile=%s fayllari olinmadi diff --git a/htdocs/langs/uz_UZ/hrm.lang b/htdocs/langs/uz_UZ/hrm.lang index b5c3ef8615a..99d100ed717 100644 --- a/htdocs/langs/uz_UZ/hrm.lang +++ b/htdocs/langs/uz_UZ/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Ochiq muassasa CloseEtablishment=Yaqin muassasasi # Dictionary DictionaryPublicHolidays=Ta'til - rasmiy bayramlar -DictionaryDepartment=HRM - bo'limlar ro'yxati +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - ish joylari # Module Employees=Xodimlar @@ -70,9 +70,9 @@ RequiredSkills=Ushbu ish uchun zarur bo'lgan ko'nikmalar UserRank=Foydalanuvchi darajasi SkillList=Ko'nikmalar ro'yxati SaveRank=Darajani saqlang -knowHow=Nou-hau -HowToBe=Qanday bo'lish -knowledge=Bilim +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Bekor qilish sharhi DateLastEval=Oxirgi baholash sanasi NoEval=Ushbu xodim uchun hech qanday baholash o'tkazilmagan @@ -88,3 +88,4 @@ DeleteSkill = Ko'nikma olib tashlandi SkillsExtraFields=Atributlar qo'shimchalari (Kompentsiyalar) JobsExtraFields=Attributs supplémentaires (Emplois) EvaluationsExtraFields=Atributlar qoʻshimchalari (baholar) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/uz_UZ/install.lang b/htdocs/langs/uz_UZ/install.lang index 8a33bb02391..acc7e24720e 100644 --- a/htdocs/langs/uz_UZ/install.lang +++ b/htdocs/langs/uz_UZ/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable= %s konfiguratsiya fayli yozib bo'lmaydi. Ruxsatla ConfFileIsWritable= %s konfiguratsiya fayli yozilishi mumkin. ConfFileMustBeAFileNotADir=Konfiguratsiya fayli %s fayl bo'lishi kerak, katalog emas. ConfFileReload=Parametrlarni konfiguratsiya faylidan qayta yuklash. -NoReadableConfFileSoStartInstall= conf/conf.php konfiguratsiya fayli mavjud emas yoki qayta tiklanmaydi. Uni ishga tushirishga harakat qilish uchun o'rnatish jarayonini ishga tushiramiz. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=Ushbu PHP POST va GET o'zgaruvchilarini qo'llab-quvvatlaydi. PHPSupportPOSTGETKo=PHP sozlamangiz POST va / yoki GET o'zgaruvchilarini qo'llab-quvvatlamasligi mumkin. Php.ini da variables_order parametrini tekshiring. PHPSupportSessions=Ushbu PHP sessiyalarni qo'llab-quvvatlaydi. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Siz '%s' parametri uchun noto'g'ri qiymat yozgan bo' ErrorFailedToCreateDatabase='%s' ma'lumotlar bazasini yaratib bo'lmadi. ErrorFailedToConnectToDatabase='%s' ma'lumotlar bazasiga ulanib bo'lmadi. ErrorDatabaseVersionTooLow=Ma'lumotlar bazasi versiyasi (%s) juda eski. %s yoki undan yuqori versiyasi talab qilinadi. -ErrorPHPVersionTooLow=PHP versiyasi juda eski. %s versiyasi talab qilinadi. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Serverga ulanish muvaffaqiyatli bo'ldi, ammo '%s' ma'lumotlar bazasi topilmadi. ErrorDatabaseAlreadyExists='%s' ma'lumotlar bazasi allaqachon mavjud. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Agar ma'lumotlar bazasi mavjud bo'lmasa, orqaga qayting va "Ma'lumotlar bazasini yaratish" bandini tekshiring. IfDatabaseExistsGoBackAndCheckCreate=Agar ma'lumotlar bazasi allaqachon mavjud bo'lsa, orqaga qayting va "Ma'lumotlar bazasini yaratish" parametrini olib tashlang. WarningBrowserTooOld=Brauzer versiyasi juda eski. Brauzeringizni Firefox, Chrome yoki Opera-ning so'nggi versiyasiga yangilash tavsiya etiladi. diff --git a/htdocs/langs/uz_UZ/knowledgemanagement.lang b/htdocs/langs/uz_UZ/knowledgemanagement.lang index 63f433adf89..8311d8e14c7 100644 --- a/htdocs/langs/uz_UZ/knowledgemanagement.lang +++ b/htdocs/langs/uz_UZ/knowledgemanagement.lang @@ -46,7 +46,7 @@ KnowledgeRecords = Maqolalar KnowledgeRecord = Maqola KnowledgeRecordExtraFields = Maqola uchun qo'shimcha joylar GroupOfTicket=Chiptalar guruhi -YouCanLinkArticleToATicketCategory=Siz maqolani chiptalar guruhiga bog'lashingiz mumkin (shuning uchun maqola yangi chiptalarni saralash paytida taklif qilinadi) +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) SuggestedForTicketsInGroup=Guruh bo'lganda chiptalar taklif etiladi SetObsolete=Eskirgan deb belgilang diff --git a/htdocs/langs/uz_UZ/loan.lang b/htdocs/langs/uz_UZ/loan.lang index 204de3d76eb..bdd45c1798b 100644 --- a/htdocs/langs/uz_UZ/loan.lang +++ b/htdocs/langs/uz_UZ/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=Moliyaviy majburiyat InterestAmount=Qiziqish CapitalRemain=Kapital qoladi TermPaidAllreadyPaid = Ushbu muddat allaqachon to'langan -CantUseScheduleWithLoanStartedToPaid = To'lov boshlangan kredit uchun rejalashtiruvchidan foydalanib bo'lmaydi +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = Agar jadvaldan foydalansangiz, foizlarni o'zgartira olmaysiz # Admin ConfigLoan=Modulli kreditni sozlash diff --git a/htdocs/langs/uz_UZ/main.lang b/htdocs/langs/uz_UZ/main.lang index 97a74ddab6a..988227de258 100644 --- a/htdocs/langs/uz_UZ/main.lang +++ b/htdocs/langs/uz_UZ/main.lang @@ -345,7 +345,7 @@ KiloBytes=Kilobayt MegaBytes=Megabayt GigaBytes=Gigabayt TeraBytes=Terabayt -UserAuthor=Tomonidan belgilangan +UserAuthor=Created by UserModif=Tomonidan yangilangan b=b. Kb=Kb @@ -712,6 +712,7 @@ FeatureDisabled=Funktsiya o'chirilgan MoveBox=Vidjetni ko'chirish Offered=Taklif qilingan NotEnoughPermissions=Sizda bu harakat uchun ruxsat yo'q +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Sessiya nomi Method=Usul Receive=Qabul qiling @@ -801,6 +802,7 @@ URLPhoto=Surat / logotipning URL manzili SetLinkToAnotherThirdParty=Boshqa uchinchi tomon bilan bog'lanish LinkTo=Ga havola LinkToProposal=Taklifga havola +LinkToExpedition= Link to expedition LinkToOrder=Buyurtma uchun havola LinkToInvoice=Hisob-fakturaga havola LinkToTemplateInvoice=Shablon hisob-fakturasiga havola @@ -1174,6 +1176,7 @@ ConfirmAllocateCommercial=Savdo vakilini tasdiqlashni tayinlang ConfirmAllocateCommercialQuestion=Haqiqatan ham %s tanlangan yozuv(lar)ni tayinlashni xohlaysizmi? CommercialsAffected=Savdo vakillari zarar ko'rdi CommercialAffected=Savdo vakili zarar ko'rdi -YourMessage=Votre xabari +YourMessage=Your message YourMessageHasBeenReceived=Sizning xabaringiz qabul qilindi. Biz imkon qadar tezroq javob beramiz yoki siz bilan bog'lanamiz. UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/uz_UZ/members.lang b/htdocs/langs/uz_UZ/members.lang index 11b58cd09c1..bf0b78bcdb3 100644 --- a/htdocs/langs/uz_UZ/members.lang +++ b/htdocs/langs/uz_UZ/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=A'zolikning tugash sanasi EndSubscription=Obunaning tugashi SubscriptionId=Hissa identifikatori WithoutSubscription=Hissa qo'shmasdan -MemberId=A'zo identifikatori +MemberId=Member Id +MemberRef=Member Ref NewMember=Yangi a'zo MemberType=Ro'yxatdan turi MemberTypeId=Ro'yxatdan turi identifikatori @@ -71,6 +72,12 @@ MemberTypeCanNotBeDeleted=Ro'yxatdan turini o'chirib bo'lmaydi NewSubscription=Yangi hissa NewSubscriptionDesc=Ushbu shakl sizga obunangizni fondning yangi a'zosi sifatida qayd etish imkonini beradi. Agar siz obunangizni yangilamoqchi bo'lsangiz (agar u allaqachon a'zo bo'lsa), %s elektron pochta orqali poydevor kengashiga murojaat qiling. Subscription=Hissa +AnyAmountWithAdvisedAmount=Any amount with a recommended amount of %s %s +AnyAmountWithoutAdvisedAmount=Any amount +CanEditAmountShort=Any amount +CanEditAmountShortForValues=recommended, any amount +MembershipDuration=Duration +GetMembershipButtonLabel=Get membership Subscriptions=Hissa SubscriptionLate=Kech SubscriptionNotReceived=Hissa hech qachon olinmagan @@ -135,7 +142,7 @@ CardContent=A'zo kartangizning tarkibi # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=A'zolik so'rovi olinganligini sizga xabar qilmoqchimiz.

ThisIsContentOfYourMembershipWasValidated=Sizning a'zoligingiz quyidagi ma'lumotlar bilan tasdiqlanganligini sizga xabar qilmoqchimiz:

-ThisIsContentOfYourSubscriptionWasRecorded=Sizga yangi obunangiz yozib olingani haqida xabar bermoqchimiz.

+ThisIsContentOfYourSubscriptionWasRecorded=We want to let you know that your new subscription was recorded. Please find your invoice here enclosed.

ThisIsContentOfSubscriptionReminderEmail=Obunangiz muddati tugashini yoki allaqachon tugaganligini sizga xabar qilmoqchimiz (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). Siz uni yangilaysiz degan umiddamiz.

ThisIsContentOfYourCard=Bu siz haqingizda mavjud bo'lgan ma'lumotlarning qisqacha mazmuni. Iltimos, biron bir narsa noto'g'ri bo'lsa, biz bilan bog'laning.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Agar mehmon avtomatik ravishda yozgan bo'lsa, elektron pochta xabarining mavzusi @@ -198,7 +205,8 @@ NbOfSubscriptions=Hissalar soni AmountOfSubscriptions=Hisob -kitoblardan yig'ilgan mablag ' TurnoverOrBudget=Tovar aylanmasi (kompaniya uchun) yoki byudjet (fond uchun) DefaultAmount=Standart badal miqdori -CanEditAmount=Mehmon o'z hissasi miqdorini tanlashi/tahrir qilishi mumkin +CanEditAmount=Visitor can choose/edit amount of its contribution regardless of the member type +AmountIsLowerToMinimumNotice=sur un dû total de %s MEMBER_NEWFORM_PAYONLINE=Onlayn to'lovlar sahifasiga o'ting ByProperties=Tabiatan MembersStatisticsByProperties=A'zolar statistikasi tabiatan diff --git a/htdocs/langs/uz_UZ/oauth.lang b/htdocs/langs/uz_UZ/oauth.lang index 9b039218e4b..b14e3e406e9 100644 --- a/htdocs/langs/uz_UZ/oauth.lang +++ b/htdocs/langs/uz_UZ/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Token yaratildi va mahalliy ma'lumotlar bazasiga saqlandi NewTokenStored=Token qabul qilindi va saqlandi ToCheckDeleteTokenOnProvider=%s OAuth provayderi tomonidan saqlangan avtorizatsiyani tekshirish / o'chirish uchun shu erni bosing TokenDeleted=Jeton o'chirildi -RequestAccess=Kirish huquqini so'rash / yangilash va saqlash uchun yangi belgini olish uchun shu erni bosing -DeleteAccess=Tokenni o'chirish uchun shu erni bosing +RequestAccess=Click here to request/renew access and receive a new token +DeleteAccess=Click here to delete token UseTheFollowingUrlAsRedirectURI=OAuth provayderingiz bilan hisobga olish ma'lumotlarini yaratishda quyidagi URL manzilini qayta yo'naltirish URI sifatida foydalaning: -ListOfSupportedOauthProviders=OAuth2 provayderingiz tomonidan taqdim etilgan hisobga olish ma'lumotlarini kiriting. Bu erda faqat qo'llab-quvvatlanadigan OAuth2 provayderlari ro'yxatga olingan. Ushbu xizmatlardan OAuth2 autentifikatsiyasini talab qiladigan boshqa modullar foydalanishi mumkin. -OAuthSetupForLogin=OAuth belgisini yaratish uchun sahifa +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Oldingi yorliqni ko'ring +OAuthProvider=OAuth provider OAuthIDSecret=OAuth identifikatori va maxfiy TOKEN_REFRESH=Tokenni yangilash sovg'asi TOKEN_EXPIRED=Jeton muddati tugagan @@ -23,10 +24,13 @@ TOKEN_DELETE=Saqlangan belgini o'chirish OAUTH_GOOGLE_NAME=OAuth Google xizmati OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=OAuth hisob maʼlumotlarini yaratish uchun bu sahifaga oʻting , soʻng “Hisob maʼlumotlari”. OAUTH_GITHUB_NAME=OAuth GitHub xizmati OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=OAuth hisob maʼlumotlarini yaratish uchun bu sahifaga oʻting , soʻng “Yangi ilovani roʻyxatdan oʻtkazing”. +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe testi OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/uz_UZ/projects.lang b/htdocs/langs/uz_UZ/projects.lang index fa107d10da2..a64a720d577 100644 --- a/htdocs/langs/uz_UZ/projects.lang +++ b/htdocs/langs/uz_UZ/projects.lang @@ -259,7 +259,7 @@ TimeSpentInvoiced=Hisob-kitob qilingan vaqt TimeSpentForIntervention=O'tkazilgan vaqt TimeSpentForInvoice=O'tkazilgan vaqt OneLinePerUser=Har bir foydalanuvchi uchun bitta qator -ServiceToUseOnLines=Qatorlarda foydalanish uchun xizmat +ServiceToUseOnLines=Service to use on lines by default InvoiceGeneratedFromTimeSpent=%s hisob-fakturasi loyihaga sarf qilingan vaqtdan boshlab tuzildi InterventionGeneratedFromTimeSpent=%s aralashuvi loyihaga sarflangan vaqtdan kelib chiqqan ProjectBillTimeDescription=Loyiha vazifalari bo'yicha ish jadvalini kiritganingizni tekshiring va loyiha buyurtmachisiga hisob-kitob qilish uchun hisob varag'idan hisob-kitob (lar) yaratishni rejalashtiryapsiz (kiritilgan ish jadvallariga asoslanmagan hisob-faktura yaratishni rejalashtirayotganingizni tekshirmang). Izoh: Hisob-fakturani yaratish uchun loyihaning "sarflangan vaqt" yorlig'iga o'ting va qo'shiladigan qatorlarni tanlang. @@ -294,3 +294,4 @@ EnablePublicLeadForm=Aloqa uchun umumiy shaklni yoqing NewLeadbyWeb=Sizning xabaringiz yoki so'rovingiz yozib olindi. Tez orada javob beramiz yoki siz bilan bog'lanamiz. NewLeadForm=Yangi aloqa shakli LeadFromPublicForm=Ommaviy shakldan onlayn rahbar +ExportAccountingReportButtonLabel=Get report diff --git a/htdocs/langs/uz_UZ/ticket.lang b/htdocs/langs/uz_UZ/ticket.lang index fcaa5fb7738..f3539ed954a 100644 --- a/htdocs/langs/uz_UZ/ticket.lang +++ b/htdocs/langs/uz_UZ/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=Identifikatsiyani talab qilmaydigan umumiy interfeys quyidagi TicketSetupDictionaries=Chipta turi, jiddiyligi va analitik kodlari lug'atlarda sozlanishi mumkin TicketParamModule=Modulning o'zgaruvchini sozlash TicketParamMail=Elektron pochtani sozlash -TicketEmailNotificationFrom=Chipta javoblari uchun e-mail yuboruvchi -TicketEmailNotificationFromHelp=Dolibarrdan yuborilgan chipta javoblari uchun yuboruvchi elektron pochta +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=Chipta yaratilishi haqida ushbu elektron pochta manziliga xabar bering TicketEmailNotificationToHelp=Agar mavjud bo'lsa, ushbu elektron pochta manziliga chipta yaratilishi haqida xabar beriladi TicketNewEmailBodyLabel=Chipta yaratilgandan so'ng yuborilgan matnli xabar diff --git a/htdocs/langs/vi_VN/admin.lang b/htdocs/langs/vi_VN/admin.lang index a616b073dc8..a9e8f0cc8e9 100644 --- a/htdocs/langs/vi_VN/admin.lang +++ b/htdocs/langs/vi_VN/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=Giá trị tiếp theo (thay thế) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=Ghi chú: Không có giới hạn được chỉnh sửa trong phần chỉnh sửa PHP MaxSizeForUploadedFiles=Kích thước tối đa của tập tin được tải lên (0 sẽ tắt chế độ tải lên) -UseCaptchaCode=Sử dụng mã xác nhận (CAPTCHA) ở trang đăng nhập +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=Đường dẫn đầy đủ để thi hành việc quét virus AntiVirusCommandExample=Ví dụ cho ClamAv Daemon (yêu cầu clamav-daemon): / usr / bin / clamdscan
Example cho ClamWin (rất rất chậm): c: \\ Progra ~ 1 \\ ClamWin \\ bin \\ clamscan.exe AntiVirusParam= Nhiều thông số trên dòng lệnh @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=Nếu nhà cung cấp dịch vụ email email của bạn cần hạn chế ứng dụng email khách đến một số địa chỉ IP (rất hiếm), thì đây là địa chỉ IP của tác nhân người dùng thư (MUA) cho ứng dụng ERP CRM của bạn: %s . WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=Nhấn vào đây để hiển thị mô tả DependsOn=Mô-đun này cần (các) mô-đun RequiredBy=Mô-đun này được yêu cầu bởi (các) mô-đun @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Giá trị của hằng số ConstantIsOn=Option %s is on NbOfDays=Số ngày AtEndOfMonth=Vào cuối tháng -CurrentNext=Hiện tại / Tiếp theo +CurrentNext=A given day in month Offset=Offset AlwaysActive=Luôn hoạt động Upgrade=Nâng cấp @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=Nhấn CTRL + F5 trên bàn phím hoặc xóa bộ nh NotSupportedByAllThemes=Sẽ hoạt động với các theme cốt lõi, có thể không được hỗ trợ bởi các theme bên ngoài BackgroundColor=Màu nền TopMenuBackgroundColor=Màu nền của menu trên -TopMenuDisableImages=Ẩn hình ảnh trong menu trên cùng +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=Màu nền của menu Trái BackgroundTableTitleColor=Màu nền cho tiêu đề của Table BackgroundTableTitleTextColor=Màu văn bản cho dòng tiêu đề Bảng @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Lưu ý: Tùy chọn sử dụng Thuế bán hàng hoặc VAT đ SwapSenderAndRecipientOnPDF=Hoán đổi vị trí địa chỉ người gửi và người nhận trên tài liệu PDF FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Trình thu thập email +EmailCollectors=Email collectors EmailCollectorDescription=Thêm một công việc được lên lịch và một trang thiết lập để quét các hộp thư điện tử thường xuyên (sử dụng giao thức IMAP) và ghi lại các email nhận được vào ứng dụng của bạn, đúng nơi và/hoặc tự động tạo một số bản ghi (như khách hàng tiềm năng). NewEmailCollector=Trình thu thập email mới EMailHost=Máy chủ email IMAP @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Kết quả mới nhất EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email xác nhận thu thập EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=Không có email mới (bộ lọc phù hợp) để xử lý NothingProcessed=Chưa có gì hoàn thành -XEmailsDoneYActionsDone=%s email đủ điều kiện, %s email được xử lý thành công (đối với bản ghi / hành động %s được thực hiện) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Mẫu cho email EMailsWillHaveMessageID=Email sẽ có thẻ 'Tài liệu tham khảo' khớp với cú pháp này PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=Nếu bạn muốn có text trong PDF của mình bằng 2 ngôn ngữ khác nhau trong cùng một tệp PDF được tạo, bạn phải đặt ở đây ngôn ngữ thứ hai này để PDF được tạo sẽ chứa 2 ngôn ngữ khác nhau trong cùng một trang, một ngôn ngữ được chọn khi tạo PDF và ngôn ngữ này ( chỉ có vài mẫu PDF hỗ trợ này). Giữ trống cho 1 ngôn ngữ trên mỗi PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Nhập vào đây mã của biểu tượng FontAwgie. Nếu bạn không biết FontAwgie là gì, bạn có thể sử dụng fa-address-book @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Thiết lập kiểm kho ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = Cài đặt +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/vi_VN/companies.lang b/htdocs/langs/vi_VN/companies.lang index 26306f895ff..21fce333e9a 100644 --- a/htdocs/langs/vi_VN/companies.lang +++ b/htdocs/langs/vi_VN/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=Nature của Third party NatureOfContact=Bản chất của liên hệ Address=Địa chỉ State=Bang/Tỉnh +StateId=State ID StateCode=Mã tiểu bang / tỉnh StateShort=Tỉnh/ thành Region=Vùng Region-State=Vùng - Tỉnh/ thành Country=Quốc gia CountryCode=Mã quốc gia -CountryId=ID quốc gia +CountryId=Country ID Phone=Điện thoại PhoneShort=Tel Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=Khác ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/vi_VN/errors.lang b/htdocs/langs/vi_VN/errors.lang index 1b8c6ca61b9..aaa1e41fa65 100644 --- a/htdocs/langs/vi_VN/errors.lang +++ b/htdocs/langs/vi_VN/errors.lang @@ -9,6 +9,7 @@ ErrorBadMXDomain=Email %s seems incorrect (domain has no valid MX record) ErrorBadUrl=Url %s is incorrect ErrorBadValueForParamNotAString=Giá trị xấu cho tham số của bạn. Nói chung khi dịch bị thiếu. ErrorRefAlreadyExists=Reference %s already exists. +ErrorTitleAlreadyExists=Title %s already exists. ErrorLoginAlreadyExists=Đăng nhập% s đã tồn tại. ErrorGroupAlreadyExists=Nhóm% s đã tồn tại. ErrorEmailAlreadyExists=Email %s already exists. @@ -66,7 +67,7 @@ ErrorDestinationAlreadyExists=Another file with the name %s already exist ErrorPartialFile=File không nhận được hoàn toàn bởi máy chủ. ErrorNoTmpDir=Directy tạm thời% s không tồn tại. ErrorUploadBlockedByAddon=Tải bị chặn bởi một plugin PHP / Apache. -ErrorFileSizeTooLarge=Kích thước quá lớn. +ErrorFileSizeTooLarge=File size is too large or file not provided. ErrorFieldTooLong=Kích thước trường %squá lớn. ErrorSizeTooLongForIntType=Kích thước quá dài cho kiểu int (tối đa số% s) ErrorSizeTooLongForVarcharType=Kích thước quá dài cho kiểu chuỗi (ký tự tối đa% s) @@ -91,6 +92,7 @@ ErrorModuleRequireJavascript=Javascript không được vô hiệu hóa để l ErrorPasswordsMustMatch=Cả hai mật khẩu gõ phải phù hợp với nhau ErrorContactEMail=Xảy ra lỗi kỹ thuật. Vui lòng liên hệ với quản trị viên để theo dõi email %s và cung cấp mã lỗi %s trong tin nhắn của bạn hoặc thêm bản chụp màn hình của trang này. ErrorWrongValueForField=Trường %s : ' %s ' không khớp với quy tắc regex %s +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=Trường %s : ' %s ' không phải là giá trị được tìm thấy trong trường %s của %s ErrorFieldRefNotIn=Trường %s : ' %s ' không phải là %s ref hiện có ErrorsOnXLines=Đã tìm thấy lỗi %s @@ -269,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. @@ -277,11 +279,23 @@ ErrorIsNotADraft=%s is not a draft ErrorExecIdFailed=Can't execute command "id" ErrorBadCharIntoLoginName=Unauthorized character in the login name ErrorRequestTooLarge=Error, request too large +ErrorNotApproverForHoliday=You are not the approver for leave %s +ErrorAttributeIsUsedIntoProduct=This attribute is used in one or more product variants +ErrorAttributeValueIsUsedIntoProduct=This attribute value is used in one or more product variants +ErrorPaymentInBothCurrency=Error, all amounts must be entered in the same column +ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=You try to pay invoices in the currency %s from an account with the currency %s +ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" +ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status +ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=Tham số PHP của bạn upload_max_filesize (%s) cao hơn tham số PHP post_max_size (%s). Đây không phải là một thiết lập phù hợp. WarningPasswordSetWithNoAccount=Một mật khẩu đã được đặt cho thành viên này. Tuy nhiên, không có tài khoản người dùng nào được tạo. Vì vậy, mật khẩu này được lưu trữ nhưng không thể được sử dụng để đăng nhập vào Dolibarr. Nó có thể được sử dụng bởi một mô-đun / giao diện bên ngoài nhưng nếu bạn không cần xác định bất kỳ thông tin đăng nhập hay mật khẩu nào cho thành viên, bạn có thể tắt tùy chọn "Quản lý đăng nhập cho từng thành viên" từ thiết lập mô-đun Thành viên. Nếu bạn cần quản lý thông tin đăng nhập nhưng không cần bất kỳ mật khẩu nào, bạn có thể để trống trường này để tránh cảnh báo này. Lưu ý: Email cũng có thể được sử dụng làm thông tin đăng nhập nếu thành viên được liên kết với người dùng. -WarningMandatorySetupNotComplete=Nhấn vào đây để thiết lập các tham số bắt buộc +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=Nhấn vào đây để kích hoạt các mô-đun và ứng dụng của bạn WarningSafeModeOnCheckExecDir=Cảnh báo, PHP safe_mode lựa chọn là do đó, lệnh phải được lưu trữ bên trong một thư mục tuyên bố tham số php safe_mode_exec_dir. WarningBookmarkAlreadyExists=Dấu trang với danh hiệu này hay mục tiêu này (URL) đã tồn tại. @@ -311,6 +325,7 @@ WarningCreateSubAccounts=Warning, you can't create directly a sub account, you m WarningAvailableOnlyForHTTPSServers=Available only if using HTTPS secured connection. WarningModuleXDisabledSoYouMayMissEventHere=Module %s has not been enabled. So you may miss a lot of event here. WarningPaypalPaymentNotCompatibleWithStrict=The value 'Strict' makes the online payment features not working correctly. Use 'Lax' instead. +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME # Validate RequireValidValue = Value not valid diff --git a/htdocs/langs/vi_VN/externalsite.lang b/htdocs/langs/vi_VN/externalsite.lang deleted file mode 100644 index 9292c2606ba..00000000000 --- a/htdocs/langs/vi_VN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Thiết lập liên kết đến trang web bên ngoài -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Mô-đun trang web bên ngoài được cấu hình không đúng. -ExampleMyMenuEntry=Mục menu của tôi diff --git a/htdocs/langs/vi_VN/ftp.lang b/htdocs/langs/vi_VN/ftp.lang deleted file mode 100644 index 0070a8d2da6..00000000000 --- a/htdocs/langs/vi_VN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=Cài đặt máy trạm FTP -NewFTPClient=Tạo thiết lập FTP -FTPArea=Kết nối FTP -FTPAreaDesc=Màn hình này hiển thị chế độ xem của máy chủ FTP. -SetupOfFTPClientModuleNotComplete=Việc thiết lập mô đun máy khách FTP dường như chưa hoàn tất -FTPFeatureNotSupportedByYourPHP=PHP của bạn không hỗ trợ chức năng FTP -FailedToConnectToFTPServer=Không thể kết nối đến máy chủ FTP (máy chủ% s, cổng% s) -FailedToConnectToFTPServerWithCredentials=Không thể đăng nhập vào máy chủ FTP với tên đăng nhập / mật khẩu đã được khai báo -FTPFailedToRemoveFile=Không thể xóa bỏ các tập tin %s. -FTPFailedToRemoveDir=Không thể xóa thư mục %s : kiểm tra quyền và thư mục đó là rỗng. -FTPPassiveMode=Chế độ thụ động -ChooseAFTPEntryIntoMenu=Chọn một trang FTP từ menu ... -FailedToGetFile=Lỗi khi tải tệp tin %s diff --git a/htdocs/langs/vi_VN/hrm.lang b/htdocs/langs/vi_VN/hrm.lang index eecc641e4d5..b890940b18a 100644 --- a/htdocs/langs/vi_VN/hrm.lang +++ b/htdocs/langs/vi_VN/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=Mở cơ sở CloseEtablishment=Đóng cơ sở # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - Danh sách phòng/ban +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=Nhân viên @@ -20,13 +20,14 @@ Employee=Nhân viên NewEmployee=Tạo nhân viên ListOfEmployees=List of employees HrmSetup=Thiết lập mô-đun Nhân sự -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=Công việc -Jobs=Jobs +JobPosition=Công việc +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=Chức vụ -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/vi_VN/install.lang b/htdocs/langs/vi_VN/install.lang index 055ad643c39..33bf62bdb76 100644 --- a/htdocs/langs/vi_VN/install.lang +++ b/htdocs/langs/vi_VN/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Tệp cấu hình %s không thể ghi. Kiểm tra q ConfFileIsWritable=Tập tin cấu hình %s có thể ghi. ConfFileMustBeAFileNotADir=Tệp cấu hình %s phải là một tệp, không phải là một thư mục. ConfFileReload=Tải lại các tham số từ tập tin cấu hình. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP này hỗ trợ các biến POST và GET. PHPSupportPOSTGETKo=Có thể thiết lập PHP của bạn không hỗ trợ các biến POST và / hoặc GET. Kiểm tra tham số variables_order trong php.ini. PHPSupportSessions=PHP này hỗ trợ phiên. @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=Bạn có thể gõ một giá trị sai cho tham s ErrorFailedToCreateDatabase=Không thể tạo cơ sở dữ liệu '%s'. ErrorFailedToConnectToDatabase=Không thể kết nối với cơ sở dữ liệu '%s'. ErrorDatabaseVersionTooLow=Phiên bản cơ sở dữ liệu (%s) quá già. Phiên bản %s hoặc cao hơn là cần thiết. -ErrorPHPVersionTooLow=PHP phiên bản quá cũ. Phiên bản %s là bắt buộc. +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Kết nối với máy chủ thành công nhưng không tìm thấy cơ sở dữ liệu '%s'. ErrorDatabaseAlreadyExists=Cơ sở dữ liệu '%s' đã tồn tại. +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=Nếu cơ sở dữ liệu không tồn tại, hãy quay lại và kiểm tra tùy chọn "Tạo cơ sở dữ liệu". IfDatabaseExistsGoBackAndCheckCreate=Nếu cơ sở dữ liệu đã tồn tại, quay trở lại và bỏ chọn "Tạo cơ sở dữ liệu" tùy chọn. WarningBrowserTooOld=Phiên bản trình duyệt quá cũ. Nâng cấp trình duyệt của bạn lên phiên bản Firefox, Chrome hoặc Opera gần đây rất được khuyến nghị. diff --git a/htdocs/langs/vi_VN/main.lang b/htdocs/langs/vi_VN/main.lang index be80241bf8a..1fd8b9d6113 100644 --- a/htdocs/langs/vi_VN/main.lang +++ b/htdocs/langs/vi_VN/main.lang @@ -17,12 +17,12 @@ FormatDateShortJQueryInput=dd/mm/yy FormatHourShortJQuery=HH:MI FormatHourShort=%I:%M %p FormatHourShortDuration=%H:%M -FormatDateTextShort=%b %d, %Y -FormatDateText=%B %d, %Y +FormatDateTextShort=%d %b, %Y +FormatDateText=%d %B, %Y FormatDateHourShort=%d/%m/%Y %I:%M %p FormatDateHourSecShort=%d/%m/%Y %I:%M:%S %p -FormatDateHourTextShort=%b %d, %Y, %I:%M %p -FormatDateHourText=%B %d, %Y, %I:%M %p +FormatDateHourTextShort=%d %b, %Y, %I:%M %p +FormatDateHourText=%d %B, %Y, %I:%M %p DatabaseConnection=Kết nối cơ sở dữ liệu NoTemplateDefined=Không có sẵn mẫu nào cho loại email này AvailableVariables=Các biến thay thế có sẵn @@ -244,6 +244,7 @@ Designation=Mô tả DescriptionOfLine=Mô tả dòng DateOfLine=Ngày của dòng DurationOfLine=Thời hạn của dòng +ParentLine=Parent line ID Model=Mẫu tài liệu DefaultModel=Mẫu tài liệu mặc định Action=Sự kiện @@ -344,7 +345,7 @@ KiloBytes=Kilobyte MegaBytes=MB GigaBytes=Gigabyte TeraBytes=Terabyte -UserAuthor=Ceated by +UserAuthor=Được tạo bởi UserModif=Updated by b=b. Kb=Kb @@ -517,6 +518,7 @@ or=hoặc Other=Khác Others=Khác OtherInformations=Thông tin khác +Workflow=Quy trình làm việc Quantity=Số lượng Qty=Số lượng ChangedBy=Thay đổi bằng @@ -619,6 +621,7 @@ MonthVeryShort11=N MonthVeryShort12=D AttachedFiles=Được đính kèm tập tin và tài liệu JoinMainDoc=Tham gia tài liệu chính +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=Tính năng bị vô hiệu hóa MoveBox=Di chuyển widget Offered=Đã đề nghị NotEnoughPermissions=Bạn không có quyền cho hành động này +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=Tên phiên Method=Phương pháp Receive=Nhận @@ -798,6 +802,7 @@ URLPhoto=URL của hình ảnh / logo SetLinkToAnotherThirdParty=Liên kết đến một bên thứ ba LinkTo=Liên kết đến LinkToProposal=Liên kết với đề xuất +LinkToExpedition= Link to expedition LinkToOrder=Liên kết để đặt hàng LinkToInvoice=Liên kết với hóa đơn LinkToTemplateInvoice=Liên kết với mẫu hóa đơn @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Chấm dứt +Terminated=Chấm dứt +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/vi_VN/members.lang b/htdocs/langs/vi_VN/members.lang index d3f6b5ec80b..b1dfb83749b 100644 --- a/htdocs/langs/vi_VN/members.lang +++ b/htdocs/langs/vi_VN/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=ID Thành viên +MemberId=Member Id +MemberRef=Member Ref NewMember=Thành viên mới MemberType=Loại thành viên MemberTypeId=Id Loại thành viên @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/vi_VN/oauth.lang b/htdocs/langs/vi_VN/oauth.lang index 5f9377e4368..4e2be4ca8d8 100644 --- a/htdocs/langs/vi_VN/oauth.lang +++ b/htdocs/langs/vi_VN/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=Một token đã được tạo và lưu vào cơ sở dữ liệ NewTokenStored=Token đã nhận và lưu ToCheckDeleteTokenOnProvider=Nhấn vào đây để kiểm tra / xóa ủy quyền được lưu bởi nhà cung cấp %s OAuth TokenDeleted=Token đã bị xóa -RequestAccess=Nhấp vào đây để yêu cầu / gia hạn quyền truy cập và nhận token mới để lưu +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=Nhấn vào đây để xóa token UseTheFollowingUrlAsRedirectURI=Sử dụng URL sau đây làm URI chuyển hướng khi tạo thông tin đăng nhập với nhà cung cấp OAuth của bạn: -ListOfSupportedOauthProviders=Nhập thông tin đăng nhập được cung cấp bởi nhà cung cấp OAuth2 của bạn. Chỉ các nhà cung cấp OAuth2 được hỗ trợ được liệt kê ở đây. Các dịch vụ này có thể được sử dụng bởi các mô-đun khác cần xác thực OAuth2. -OAuthSetupForLogin=Trang để tạo token OAuth +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=Xem tab trước +OAuthProvider=OAuth provider OAuthIDSecret=ID OAuth và bảo mật TOKEN_REFRESH=Làm mới token TOKEN_EXPIRED=Token đã hết hạn @@ -23,10 +24,13 @@ TOKEN_DELETE=Xóa token đã lưu OAUTH_GOOGLE_NAME=Dịch vụ Google OAuth OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=Bảo mật Google OAuth -OAUTH_GOOGLE_DESC=Chuyển đến trang này sau đó "Thông tin xác thực" để tạo thông tin xác thực OAuth OAUTH_GITHUB_NAME=Dịch vụ OAuth GitHub OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=Bảo mật của OAuth GitHub -OAUTH_GITHUB_DESC=Chuyển đến trang này sau đó "Đăng ký ứng dụng mới" để tạo thông tin đăng nhập OAuth -OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test -OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret +OAUTH_STRIPE_TEST_NAME=OAuth Stripe Thử nghiệm +OAUTH_STRIPE_LIVE_NAME=OAuth Stripe chạy thực tế +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/vi_VN/stocks.lang b/htdocs/langs/vi_VN/stocks.lang index 966f94237c8..65198013c61 100644 --- a/htdocs/langs/vi_VN/stocks.lang +++ b/htdocs/langs/vi_VN/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=Giới hạn tồn kho để cảnh báo và tồn ProductStockWarehouseUpdated=Giới hạn tồn kho để cảnh báo và tồn kho tối ưu mong muốn được cập nhật chính xác ProductStockWarehouseDeleted=Giới hạn tồn kho để cảnh báo và tồn kho tối ưu mong muốn được xóa chính xác AddNewProductStockWarehouse=Đặt giới hạn mới cho cảnh báo và tồn kho tối ưu mong muốn -AddStockLocationLine=Giảm số lượng sau đó nhấp để thêm kho khác cho sản phẩm này +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=Ngày Kiểm kho Inventories=Kiểm kho NewInventory=Kiểm kho mới @@ -254,7 +254,7 @@ ReOpen=Mở lại ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=Bắt đầu InventoryStartedShort=Đã bắt đầu ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=Cài đặt +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/zh_CN/admin.lang b/htdocs/langs/zh_CN/admin.lang index 87ef8d603fb..51b00ac6d76 100644 --- a/htdocs/langs/zh_CN/admin.lang +++ b/htdocs/langs/zh_CN/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=下一个值(替换) MustBeLowerThanPHPLimit=Note: your PHP configuration currently limits the maximum filesize for upload to %s %s, irrespective of the value of this parameter NoMaxSizeByPHPLimit=注:您的 PHP 配置参数中没有设置限制 MaxSizeForUploadedFiles=上传文件的最大尺寸(0表示不允许上传) -UseCaptchaCode=登陆页面启用图形验证码 +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=防毒命令的完整路径 AntiVirusCommandExample=Example for ClamAv Daemon (require clamav-daemon): /usr/bin/clamdscan
Example for ClamWin (very very slow): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= 更多命令行参数 @@ -477,7 +477,7 @@ InstalledInto=Installed into directory %s BarcodeInitForThirdparties=Mass barcode init for third-parties BarcodeInitForProductsOrServices=产品或服务条码批量初始化或重置 CurrentlyNWithoutBarCode=目前,您在 %s %s上没有定义条形码时有 %s 记录。 -InitEmptyBarCode=初始值为下一个%s空记录 +InitEmptyBarCode=Init value for next %s empty records EraseAllCurrentBarCode=抹掉现存所有条码值 ConfirmEraseAllCurrentBarCode=您确定要删除所有当前条形码值吗? AllBarcodeReset=所有现存条码值已经被删除 @@ -504,7 +504,7 @@ WarningPHPMailC=- Using the SMTP server of your own Email Service Provider to se WarningPHPMailD=Also, it is therefore recommended to change the sending method of e-mails to the value "SMTP". If you really want to keep the default "PHP" method to send emails, just ignore this warning, or remove it by setting the MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP constant to 1 in Home - Setup - Other. WarningPHPMail2=如果您的电子邮件SMTP提供商需要将电子邮件客户端限制为某些IP地址(非常罕见),则这是您的ERP CRM应用程序的邮件用户代理(MUA)的IP地址: %s。 WarningPHPMailSPF=If the domain name in your sender email address is protected by a SPF record (ask your domain name registar), you must add the following IPs in the SPF record of the DNS of your domain: %s. -ActualMailSPFRecordFound=Actual SPF record found : %s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=单击以显示描述 DependsOn=该模块需要模块(集) RequiredBy=本模块被以下模块(集)需要 @@ -1129,7 +1129,7 @@ ValueOfConstantKey=Value of a configuration constant ConstantIsOn=Option %s is on NbOfDays=No. of days AtEndOfMonth=月末 -CurrentNext=当前/下一项 +CurrentNext=A given day in month Offset=偏移 AlwaysActive=始终启用 Upgrade=升级 @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=在键盘上按CTRL + F5或更改此值后清除浏览 NotSupportedByAllThemes=将与核心主题一起使用,可能不受外部主题的支持 BackgroundColor=背景颜色 TopMenuBackgroundColor=顶部菜单背景颜色 -TopMenuDisableImages=隐藏顶部菜单图片 +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=左侧菜单背景颜色 BackgroundTableTitleColor=清单表格表头背景颜色 BackgroundTableTitleTextColor=表标题行的文本颜色 @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=Note: The option to use Sales Tax or VAT has been set to SwapSenderAndRecipientOnPDF=Swap sender and recipient address position on PDF documents FeatureSupportedOnTextFieldsOnly=Warning, feature supported on text fields and combo lists only. Also an URL parameter action=create or action=edit must be set OR page name must end with 'new.php' to trigger this feature. EmailCollector=Email collector +EmailCollectors=Email collectors EmailCollectorDescription=Add a scheduled job and a setup page to scan regularly email boxes (using IMAP protocol) and record emails received into your application, at the right place and/or create some records automatically (like leads). NewEmailCollector=New Email Collector EMailHost=Host of email IMAP server @@ -2073,14 +2074,14 @@ DateLastCollectResult=Date of latest collect try DateLastcollectResultOk=Date of latest collect success LastResult=Latest result EmailCollectorHideMailHeaders=Do not include the content of email header into the saved content of collected e-mails -EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as events. +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=Email collect confirmation EmailCollectorConfirmCollect=Do you want to run this collector now? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=Example collecting e-mail answers sent from an external e-mail software -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=Example collecting all ingoing messages being answers to messages sent from Dolibarr' EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=Example collecting leads @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=No new email (matching filters) to process NothingProcessed=Nothing done -XEmailsDoneYActionsDone=%s emails qualified, %s emails successfully processed (for %s record/actions done) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=Record an event in agenda (with type Email sent or received) CreateLeadAndThirdParty=Create a lead (and a third party if necessary) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=Template for email EMailsWillHaveMessageID=Emails will have a tag 'References' matching this syntax PDF_SHOW_PROJECT=Show project on document ShowProjectLabel=Project Label +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=If you want to have some texts in your PDF duplicated in 2 different languages in the same generated PDF, you must set here this second language so generated PDF will contains 2 different languages in same page, the one chosen when generating PDF and this one (only few PDF templates support this). Keep empty for 1 language per PDF. PDF_USE_A=Gererate PDF documents with format PDF/A instead of defaut format PDF FafaIconSocialNetworksDesc=Enter here the code of a FontAwesome icon. If you don't know what is FontAwesome, you can use the generic value fa-address-book. @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=Template for a business card in different size InventorySetup= Inventory Setup ExportUseLowMemoryMode=Use a low memory mode ExportUseLowMemoryModeHelp=Use the low memory mode to execute the exec of the dump (compression is done through a pipe instead of into the PHP memory). This method does not allow to check that file is completed and error message can't be reported if it fails. + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = 设置 +WebhookSetupPage = Webhook setup page ShowQuickAddLink=Show a button to quickly add an element in top right menu + HashForPing=Hash used for ping ReadOnlyMode=Is instance in "Read Only" mode DEBUGBAR_USE_LOG_FILE=Use the dolibarr.log file to trap Logs UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/zh_CN/companies.lang b/htdocs/langs/zh_CN/companies.lang index d8eaea38f4c..e2d02e8769d 100644 --- a/htdocs/langs/zh_CN/companies.lang +++ b/htdocs/langs/zh_CN/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=合伙人的性质 NatureOfContact=Nature of Contact Address=地址 State=州/省 +StateId=State ID StateCode=State/Province code StateShort=国家 Region=地区 Region-State=地区 - 州 Country=国家 CountryCode=国家代码 -CountryId=国家编号 +CountryId=Country ID Phone=电话 PhoneShort=电话 Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1 (Trade Register) ProfId2CM=Id. prof. 2 (Taxpayer No.) -ProfId3CM=Id. prof. 3 (Decree of creation) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=Trade Register ProfId2ShortCM=Taxpayer No. -ProfId3ShortCM=Decree of creation -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=其他 ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/zh_CN/errors.lang b/htdocs/langs/zh_CN/errors.lang index 1783be09f3a..53188bca81d 100644 --- a/htdocs/langs/zh_CN/errors.lang +++ b/htdocs/langs/zh_CN/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/zh_CN/externalsite.lang b/htdocs/langs/zh_CN/externalsite.lang deleted file mode 100644 index 5ad169c8784..00000000000 --- a/htdocs/langs/zh_CN/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=设置链接到外部网站 -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=外部网站模块配置不正确。 -ExampleMyMenuEntry=我的菜单选项 diff --git a/htdocs/langs/zh_CN/ftp.lang b/htdocs/langs/zh_CN/ftp.lang deleted file mode 100644 index 31efb1c5f66..00000000000 --- a/htdocs/langs/zh_CN/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP客户端模块设置 -NewFTPClient=新建FTP链接 -FTPArea=FTP 区 -FTPAreaDesc=这个屏幕显示您的FTP服务器查看内容 -SetupOfFTPClientModuleNotComplete=模块的FTP客户端安装程序似乎是不完整 -FTPFeatureNotSupportedByYourPHP=您的PHP不支持FTP功能 -FailedToConnectToFTPServer=无法连接到FTP服务器(服务器%s,港口%s) -FailedToConnectToFTPServerWithCredentials=无法登录到FTP服务器的定义登陆/密码 -FTPFailedToRemoveFile=无法删除文件%s。 -FTPFailedToRemoveDir=无法删除目录%s(检查权限和目录是空的)。 -FTPPassiveMode=被动模式 -ChooseAFTPEntryIntoMenu=在菜单中选择一个FTP选项 -FailedToGetFile=获取文件失败 %s diff --git a/htdocs/langs/zh_CN/hrm.lang b/htdocs/langs/zh_CN/hrm.lang index 1e7dc84d94f..f34283acae9 100644 --- a/htdocs/langs/zh_CN/hrm.lang +++ b/htdocs/langs/zh_CN/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=打开机构 CloseEtablishment=关闭机构 # Dictionary DictionaryPublicHolidays=Leave - Public holidays -DictionaryDepartment=HRM - 部门列表 +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=HRM - Job positions # Module Employees=雇员 @@ -20,13 +20,14 @@ Employee=雇员 NewEmployee=新建雇员 ListOfEmployees=List of employees HrmSetup=人力资源管理模块设置 -HRM_MAXRANK=Maximum rank for a skill +SkillsManagement=Skills management +HRM_MAXRANK=Maximum number of levels to rank a skill HRM_DEFAULT_SKILL_DESCRIPTION=Default description of ranks when skill is created deplacement=Shift DateEval=Evaluation date JobCard=Job card -Job=工作 -Jobs=Jobs +JobPosition=工作 +JobsPosition=Jobs NewSkill=New Skill SkillType=Skill type Skilldets=List of ranks for this skill @@ -47,9 +48,8 @@ ConfirmValidateEvaluation=Are you sure you want to validate this evaluation with EvaluationCard=Evaluation card RequiredRank=Required rank for this job EmployeeRank=Employee rank for this skill -Position=位置 -Positions=Positions -PositionCard=Position card +EmployeePosition=Employee position +EmployeePositions=Employee positions EmployeesInThisPosition=Employees in this position group1ToCompare=Usergroup to analyze group2ToCompare=Second usergroup for comparison @@ -70,12 +70,22 @@ RequiredSkills=Required skills for this job UserRank=User Rank SkillList=Skill list SaveRank=Save rank -knowHow=Know how -HowToBe=How to be -knowledge=Knowledge +TypeKnowHow=Know how +TypeHowToBe=How to be +TypeKnowledge=Knowledge AbandonmentComment=Abandonment comment DateLastEval=Date last evaluation NoEval=No evaluation done for this employee HowManyUserWithThisMaxNote=Number of users with this rank HighestRank=Highest rank SkillComparison=Skill comparison +ActionsOnJob=Events on this job +VacantPosition=job vacancy +VacantCheckboxHelper=Checking this option will show unfilled positions (job vacancy) +SaveAddSkill = Skill(s) added +SaveLevelSkill = Skill(s) level saved +DeleteSkill = Skill removed +SkillsExtraFields=Attributs supplémentaires (Compétences) +JobsExtraFields=Attributs supplémentaires (Emplois) +EvaluationsExtraFields=Attributs supplémentaires (Evaluations) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/zh_CN/install.lang b/htdocs/langs/zh_CN/install.lang index 5ae78a7ef0d..61c026d5c75 100644 --- a/htdocs/langs/zh_CN/install.lang +++ b/htdocs/langs/zh_CN/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=Configuration file %s is not writable. Check permis ConfFileIsWritable=配置文件 %s 为可写权限。 ConfFileMustBeAFileNotADir=配置文件 %s 必须是文件,而不是目录。 ConfFileReload=Reloading parameters from configuration file. -NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not reabable. We will run the installation process to try to initialize it. +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=PHP的POST和GET支持。 PHPSupportPOSTGETKo=It's possible your PHP setup does not support variables POST and/or GET. Check the parameter variables_order in php.ini. PHPSupportSessions=PHP多线程支持。 @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=您可能输入了一个错误的参数值的 '%s' ErrorFailedToCreateDatabase=无法创建数据库 '%s'。 ErrorFailedToConnectToDatabase=无法连接到数据库 '%s'。 ErrorDatabaseVersionTooLow=数据库版本 (%s) 太低了,需要 %s 或更高版本。 -ErrorPHPVersionTooLow=PHP的版本太旧了。至少需要 %s 版本。 +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=Connection to server successful but database '%s' not found. ErrorDatabaseAlreadyExists=数据库 '%s' 已存在。 +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=If the database does not exist, go back and check option "Create database". IfDatabaseExistsGoBackAndCheckCreate=如果数据库已经存在,请返回并取消选中“创建数据库”选项。 WarningBrowserTooOld=Version of browser is too old. Upgrading your browser to a recent version of Firefox, Chrome or Opera is highly recommended. diff --git a/htdocs/langs/zh_CN/main.lang b/htdocs/langs/zh_CN/main.lang index 95ab4e7a0b0..7a4386f62f8 100644 --- a/htdocs/langs/zh_CN/main.lang +++ b/htdocs/langs/zh_CN/main.lang @@ -244,6 +244,7 @@ Designation=描述 DescriptionOfLine=说明线 DateOfLine=Date of line DurationOfLine=Duration of line +ParentLine=Parent line ID Model=文档模板 DefaultModel=默认文档模板 Action=事件 @@ -344,7 +345,7 @@ KiloBytes=KB MegaBytes=MB GigaBytes=GB TeraBytes=TB -UserAuthor=Ceated by +UserAuthor=制作: UserModif=Updated by b=b. Kb=Kb @@ -517,6 +518,7 @@ or=或 Other=其他 Others=其他 OtherInformations=Other information +Workflow=工作流程 Quantity=数量 Qty=数量 ChangedBy=改变者: @@ -619,6 +621,7 @@ MonthVeryShort11=11 MonthVeryShort12=12 AttachedFiles=附件 JoinMainDoc=加入主要文件 +JoinMainDocOrLastGenerated=Send the main document or the last generated one if not found DateFormatYYYYMM=YYYY-MM DateFormatYYYYMMDD=YYYY-MM-DD DateFormatYYYYMMDDHHMM=YYYY-MM-DD HH:SS @@ -709,6 +712,7 @@ FeatureDisabled=功能禁用 MoveBox=拖动插件 Offered=提供 NotEnoughPermissions=您没有这个动作的权限 +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=会话名称 Method=方法 Receive=收到 @@ -798,6 +802,7 @@ URLPhoto=照片/徽标的URL SetLinkToAnotherThirdParty=关联其他合伙人 LinkTo=链接到 LinkToProposal=链接到报价 +LinkToExpedition= Link to expedition LinkToOrder=链接到订单 LinkToInvoice=链接到发票 LinkToTemplateInvoice=Link to template invoice @@ -1164,3 +1169,14 @@ NotClosedYet=Not yet closed ClearSignature=Reset signature CanceledHidden=Canceled hidden CanceledShown=Canceled shown +Terminate=Terminate +Terminated=Terminated +AddLineOnPosition=Add line on position (at the end if empty) +ConfirmAllocateCommercial=Assign sales representative confirmation +ConfirmAllocateCommercialQuestion=Are you sure you want to assign the %s selected record(s)? +CommercialsAffected=Sales representatives affected +CommercialAffected=Sales representative affected +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/zh_CN/members.lang b/htdocs/langs/zh_CN/members.lang index c175a16fa82..9100bcd5951 100644 --- a/htdocs/langs/zh_CN/members.lang +++ b/htdocs/langs/zh_CN/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=End date of membership EndSubscription=End of membership SubscriptionId=Contribution ID WithoutSubscription=Without contribution -MemberId=会员ID +MemberId=Member Id +MemberRef=Member Ref NewMember=新会员 MemberType=会员类型 MemberTypeId=会员类型ID @@ -135,7 +136,7 @@ CardContent=内容您的会员卡 # Text of email templates ThisIsContentOfYourMembershipRequestWasReceived=我们希望通知您收到了您的会员资格请求。

ThisIsContentOfYourMembershipWasValidated=我们希望通过以下信息通知您,您的会员资格已经过验证:

-ThisIsContentOfYourSubscriptionWasRecorded=我们希望通知您,您的新订阅已被记录。

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

ThisIsContentOfSubscriptionReminderEmail=We want to let you know that your subscription is about to expire or has already expired (__MEMBER_LAST_SUBSCRIPTION_DATE_END__). We hope you will renew it.

ThisIsContentOfYourCard=This is a summary of the information we have about you. Please contact us if anything is incorrect.

DescADHERENT_AUTOREGISTER_NOTIF_MAIL_SUBJECT=Subject of the notification email received in case of auto-inscription of a guest @@ -218,3 +219,5 @@ XExternalUserCreated=%s external user(s) created ForceMemberNature=Force member nature (Individual or Corporation) CreateDolibarrLoginDesc=The creation of a user login for members allows them to connect to the application. Depending on the authorizations granted, they will be able, for example, to consult or modify their file themselves. CreateDolibarrThirdPartyDesc=A thirdparty is the legal entity that will be used on the invoice if you decide to generate invoice for each contribution. You will be able to create it later during the process of recording the contribution. +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/zh_CN/oauth.lang b/htdocs/langs/zh_CN/oauth.lang index ec78fca0783..324f13941fd 100644 --- a/htdocs/langs/zh_CN/oauth.lang +++ b/htdocs/langs/zh_CN/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=一个token已生成并保存到本地数据库 NewTokenStored=令牌收到并保存 ToCheckDeleteTokenOnProvider=点击此处查看/删除%s OAuth提供商保存的授权 TokenDeleted=删除Token -RequestAccess=单击此处请求/续订访问权限并接收要保存的新令牌 +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=点击这里删除token UseTheFollowingUrlAsRedirectURI=Use the following URL as the Redirect URI when creating your credentials with your OAuth provider: -ListOfSupportedOauthProviders=Enter the credentials provided by your OAuth2 provider. Only supported OAuth2 providers are listedd here. These services may be used by other modules that need OAuth2 authentication. -OAuthSetupForLogin=用于生成OAuth令牌的页面 +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=见上一个标签 +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID和秘密 TOKEN_REFRESH=令牌刷新存在 TOKEN_EXPIRED=令牌已过期 @@ -23,10 +24,13 @@ TOKEN_DELETE=删除已保存的Token OAUTH_GOOGLE_NAME=OAuth Google service OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=Go to this page then "Credentials" to create OAuth credentials OAUTH_GITHUB_NAME=OAuth GitHub service OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=Go to this page then "Register a new application" to create OAuth credentials +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe Test OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/zh_CN/stocks.lang b/htdocs/langs/zh_CN/stocks.lang index 000c4ec4d04..155986a90ed 100644 --- a/htdocs/langs/zh_CN/stocks.lang +++ b/htdocs/langs/zh_CN/stocks.lang @@ -176,7 +176,7 @@ ProductStockWarehouseCreated=正确创建警报和所需最佳库存的库存限 ProductStockWarehouseUpdated=正确更新警报和所需最佳库存的库存限制 ProductStockWarehouseDeleted=正确删除警报和所需最佳库存的库存限制 AddNewProductStockWarehouse=设置警报和所需最佳库存的新限制 -AddStockLocationLine=减少数量,然后单击以添加此产品的另一个仓库 +AddStockLocationLine=Decrease quantity then click to split the line InventoryDate=库存日期 Inventories=Inventories NewInventory=新库存 @@ -254,7 +254,7 @@ ReOpen=重新打开 ConfirmFinish=Do you confirm the closing of the inventory ? This will generate all stock movements to update your stock to the real qty you entered into the inventory. ObjectNotFound=%s not found MakeMovementsAndClose=Generate movements and close -AutofillWithExpected=Replace real quantity with expected quantity +AutofillWithExpected=Fill real quantity with expected quantity ShowAllBatchByDefault=By default, show batch details on product "stock" tab CollapseBatchDetailHelp=You can set batch detail default display in stocks module configuration ErrorWrongBarcodemode=Unknown Barcode mode @@ -265,9 +265,53 @@ ProductBarcodeDoesNotExist=Product with barcode does not exist WarehouseId=Warehouse ID WarehouseRef=Warehouse Ref SaveQtyFirst=Save the real inventoried quantities first, before asking creation of the stock movement. +ToStart=开始 InventoryStartedShort=开始 ErrorOnElementsInventory=Operation canceled for the following reason: ErrorCantFindCodeInInventory=Can't find the following code in inventory QtyWasAddedToTheScannedBarcode=Success !! The quantity was added to all the requested barcode. You can close the Scanner tool. StockChangeDisabled=Change on stock disabled NoWarehouseDefinedForTerminal=No warehouse defined for terminal +ClearQtys=Clear all quantities +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=设置 +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/zh_HK/errors.lang b/htdocs/langs/zh_HK/errors.lang index e05f9dc7a2a..20f5b6f264a 100644 --- a/htdocs/langs/zh_HK/errors.lang +++ b/htdocs/langs/zh_HK/errors.lang @@ -269,7 +269,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=You must first setup your chart of acco ErrorFailedToFindEmailTemplate=Failed to find template with code name %s ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=Duration not defined on service. No way to calculate the hourly price. ErrorActionCommPropertyUserowneridNotDefined=User's owner is required -ErrorActionCommBadType=Selected event type (id: %n, code: %s) do not exist in Event Type dictionary +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=Version check fail ErrorWrongFileName=Name of the file cannot have __SOMETHING__ in it ErrorNotInDictionaryPaymentConditions=Not in Payment Terms Dictionary, please modify. diff --git a/htdocs/langs/zh_HK/externalsite.lang b/htdocs/langs/zh_HK/externalsite.lang deleted file mode 100644 index 452100c65b3..00000000000 --- a/htdocs/langs/zh_HK/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=Setup link to external website -ExternalSiteURL=External Site URL of HTML iframe content -ExternalSiteModuleNotComplete=Module ExternalSite was not configured properly. -ExampleMyMenuEntry=My menu entry diff --git a/htdocs/langs/zh_HK/ftp.lang b/htdocs/langs/zh_HK/ftp.lang deleted file mode 100644 index d80b87c2715..00000000000 --- a/htdocs/langs/zh_HK/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP Client module setup -NewFTPClient=New FTP connection setup -FTPArea=FTP Area -FTPAreaDesc=This screen shows a view of an FTP server. -SetupOfFTPClientModuleNotComplete=The setup of the FTP client module seems to be incomplete -FTPFeatureNotSupportedByYourPHP=Your PHP does not support FTP functions -FailedToConnectToFTPServer=Failed to connect to FTP server (server %s, port %s) -FailedToConnectToFTPServerWithCredentials=Failed to login to FTP server with defined login/password -FTPFailedToRemoveFile=Failed to remove file %s. -FTPFailedToRemoveDir=Failed to remove directory %s: check permissions and that the directory is empty. -FTPPassiveMode=Passive mode -ChooseAFTPEntryIntoMenu=Choose a FTP site from the menu... -FailedToGetFile=Failed to get files %s diff --git a/htdocs/langs/zh_TW/accountancy.lang b/htdocs/langs/zh_TW/accountancy.lang index e3e5087cbe0..5ee3ee39593 100644 --- a/htdocs/langs/zh_TW/accountancy.lang +++ b/htdocs/langs/zh_TW/accountancy.lang @@ -161,7 +161,7 @@ BANK_DISABLE_DIRECT_INPUT=停用銀行帳戶中直接記錄交易 ACCOUNTING_ENABLE_EXPORT_DRAFT_JOURNAL=在日記帳上啟用草稿匯出 ACCOUNTANCY_COMBO_FOR_AUX=為子公司帳戶啟用組合列表(如果您有很多合作方,可能會很慢,損失搜尋部份數值的能力) ACCOUNTING_DATE_START_BINDING=定義開始綁定和轉移會計的日期。小於此日期,交易將不會轉入會計。 -ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=在會計轉帳時,預設選擇為週期顯示 +ACCOUNTING_DEFAULT_PERIOD_ON_TRANSFER=On accountancy transfer, what is the period selected by default ACCOUNTING_SELL_JOURNAL=銷售日記帳 ACCOUNTING_PURCHASE_JOURNAL=採購日記帳 @@ -182,7 +182,7 @@ DONATION_ACCOUNTINGACCOUNT=註冊捐款的會計科目 ADHERENT_SUBSCRIPTION_ACCOUNTINGACCOUNT=用於註冊訂閱的會計科目 ACCOUNTING_ACCOUNT_CUSTOMER_DEPOSIT=會計帳戶預設註冊客戶存款 -UseAuxiliaryAccountOnCustomerDeposit=Use sub-accounts on customer deposit lines +UseAuxiliaryAccountOnCustomerDeposit=Store customer account as individual account in subsidiary ledger for lines of down payments (if disabled, individual account for down payment lines will remain empty) ACCOUNTING_PRODUCT_BUY_ACCOUNT=所購買產品的預設會計科目(如果在產品表中未定義則使用) ACCOUNTING_PRODUCT_BUY_INTRA_ACCOUNT=預設情況下,在EEC中所購買產品的會計帳戶(如果未在產品單中定義則使用) @@ -279,7 +279,7 @@ DescVentilExpenseReportMore=如果您在費用報表類型上設定會計帳戶 DescVentilDoneExpenseReport=在此查閱費用報表的清單及其費用會計項目。 Closure=年度關閉 -DescClosure=請在此處查詢依照月份的未驗證與未鎖定移動數 +DescClosure=Consult here the number of movements by month not yet validated & locked OverviewOfMovementsNotValidated=未驗證和未鎖定的移動概覽 AllMovementsWereRecordedAsValidated=所有動作都被記錄為已驗證並鎖定 NotAllMovementsCouldBeRecordedAsValidated=並非所有動作都可以記錄為已驗證與已鎖定 @@ -427,6 +427,7 @@ SorryThisModuleIsNotCompatibleWithTheExperimentalFeatureOfSituationInvoices=抱 AccountancyErrorMismatchLetterCode=協調代碼不匹配 AccountancyErrorMismatchBalanceAmount=餘額(%s)不等於0 AccountancyErrorLetteringBookkeeping=交易發生錯誤:%s +ErrorAccountNumberAlreadyExists=The accounting number %s already exists ## Import ImportAccountingEntries=會計條目 diff --git a/htdocs/langs/zh_TW/admin.lang b/htdocs/langs/zh_TW/admin.lang index bc7a051e644..8122088780e 100644 --- a/htdocs/langs/zh_TW/admin.lang +++ b/htdocs/langs/zh_TW/admin.lang @@ -109,7 +109,7 @@ NextValueForReplacements=下一個值(代替) MustBeLowerThanPHPLimit=注意: 您的 PHP設定目前限制了上傳到%s%s的最大檔案大小,無論此參數的值如何 NoMaxSizeByPHPLimit=註:你的 PHP 偏好設定為無限制 MaxSizeForUploadedFiles=上傳檔案最大值(0 為禁止上傳) -UseCaptchaCode=在登入頁中的使用圖形碼 (CAPTCHA) +UseCaptchaCode=Use graphical code (CAPTCHA) on login page and some public pages AntiVirusCommand=防毒命令的完整路徑 AntiVirusCommandExample=ClamAv Daemon 的範例(需要 clamav-daemon): / usr / bin / clamdscan
ClamWin的範例(非常慢): c:\\Progra~1\\ClamWin\\bin\\clamscan.exe AntiVirusParam= 在命令列中更多的參數 @@ -504,7 +504,7 @@ WarningPHPMailC=- 使用您自己的電子郵件服務提供商的 SMTP 伺服 WarningPHPMailD=此外,因此建議將電子郵件的發送方法更改為“SMTP”。如果您確實想保留預設的“PHP”方式來發送電子郵件,只需忽略此警告,或在 首頁 - 設定 - 其他設定 中將 MAIN_HIDE_WARNING_TO_ENCOURAGE_SMTP_SETUP 數值設定為 1 來刪除它。 WarningPHPMail2=如果您的電子郵件SMTP程式需要將電子郵件客戶端限制為某些IP地址(非常罕見),則這是ERP CRM應用程式的郵件用戶代理(MUA)的IP地址: %s 。 WarningPHPMailSPF=如果您的寄件人電子郵件地址中的網域名稱受到SPF 記錄保護(詢問您的網域名稱註冊商),您必須在您的網域 DNS 的 SPF 記錄中增加以下 IP: %s 。 -ActualMailSPFRecordFound=找到的實際 SPF 記錄:%s +ActualMailSPFRecordFound=Actual SPF record found (for email %s) : %s ClickToShowDescription=點選顯示描述 DependsOn=此模組需要此模組 RequiredBy=模組需要此模組 @@ -1129,7 +1129,7 @@ ValueOfConstantKey=常數設置的值 ConstantIsOn= 選項%s啟用中 NbOfDays=天數 AtEndOfMonth=月底 -CurrentNext=現在/下一個 +CurrentNext=A given day in month Offset=Offset AlwaysActive=始終啟動 Upgrade=升級 @@ -1936,7 +1936,7 @@ PressF5AfterChangingThis=更改此值使其生效後,按鍵盤上的CTRL + F5 NotSupportedByAllThemes=將適用於核心主題,可能不受外部主題支援 BackgroundColor=背景顏色 TopMenuBackgroundColor=頂端選單的背景顏色 -TopMenuDisableImages=在頂端選單中隱藏圖片 +TopMenuDisableImages=Icon or Text in Top menu LeftMenuBackgroundColor=左側選單的背景顏色 BackgroundTableTitleColor=表格標題行的背景顏色 BackgroundTableTitleTextColor=表格標題行的文字顏色 @@ -2059,6 +2059,7 @@ VATIsUsedIsOff=注意:在選單%s-%s中,使用營業稅或增值稅的選項 SwapSenderAndRecipientOnPDF=交換PDF文件上的發件人和收件人地址位置 FeatureSupportedOnTextFieldsOnly=警告,僅文字欄位與複合清單支援此功能。另外,必須設定網址參數action = create或action = edit到OR頁面,名稱必須為'new.php' 才能觸發此功能。 EmailCollector=電子郵件收集器 +EmailCollectors=Email collectors EmailCollectorDescription=新增計劃作業和設定頁面以定期掃描信箱(使用IMAP協議),並在正確的位置記錄接收到您應用程式中的電子郵件和/或自動建立一些記錄(例如潛在)。 NewEmailCollector=新電子郵件收集器 EMailHost=IMAP伺服器主機 @@ -2073,14 +2074,14 @@ DateLastCollectResult=最新嘗試收集日期 DateLastcollectResultOk=最新收集成功日期 LastResult=最新結果 EmailCollectorHideMailHeaders=不要將郵件標題的內容包含在已收集郵件的保存內容中 -EmailCollectorHideMailHeadersHelp=啟用後,電子郵件標題不會增加到保存為事件的電子郵件內容的末尾。 +EmailCollectorHideMailHeadersHelp=When enabled, e-mail headers are not added at the end of the email content that is saved as an agenda event. EmailCollectorConfirmCollectTitle=郵件收集確認 EmailCollectorConfirmCollect=您是否要立即執行此收集器? EmailCollectorExampleToCollectTicketRequestsDesc=Collect emails that match some rules and create automatically a ticket (Module Ticket must be enabled) with the email informations. You can use this collector if you provide some support by email, so your ticket request will be automatically generated. Activate also Collect_Responses to collect answers of your client directly on the ticket view (you must reply from Dolibarr). EmailCollectorExampleToCollectTicketRequests=Example collecting the ticket request (first message only) EmailCollectorExampleToCollectAnswersFromExternalEmailSoftwareDesc=Scan your mailbox "Sent" directory to find emails that was sent as an answer of another email directly from your email software and not from Dolibarr. If such an email is found, the event of answer is recorded into Dolibarr EmailCollectorExampleToCollectAnswersFromExternalEmailSoftware=收集從外部電子郵件軟體發送的電子郵件回應的範例 -EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if your send a commercial proposal, order, invoice or message for a ticket by email from the application, and your customer answers your email, the system will automatically catch the answer and add it into your ERP. +EmailCollectorExampleToCollectDolibarrAnswersDesc=Collect all emails that are an answer of an email sent from your application. An event (Module Agenda must be enabled) with the email response will be recorded at the good place. For example, if you send a commercial proposal, order, invoice or message for a ticket by email from the application, and the recipient answers your email, the system will automatically catch the answer and add it into your ERP. EmailCollectorExampleToCollectDolibarrAnswers=收集所有傳入訊息的範例,這些訊息是從 Dolibarr 發送訊息的回應 EmailCollectorExampleToCollectLeadsDesc=Collect emails that match some rules and create automatically a lead (Module Project must be enabled) with the email informations. You can use this collector if you want to follow your lead using the module Project (1 lead = 1 project), so your leads will be automatically generated. If the collector Collect_Responses is also enabled, when you send an email from your leads, proposals or any other object, you may also see answers of your customers or partners directly on the application.
Note: With this initial example, the title of the lead is generated including the email. If the thirdparty can't be found in database (new customer), the lead will be attached to the thirdparty with ID 1. EmailCollectorExampleToCollectLeads=收集潛在的範例 @@ -2088,7 +2089,7 @@ EmailCollectorExampleToCollectJobCandidaturesDesc=Collect emails applying to job EmailCollectorExampleToCollectJobCandidatures=Example collecting job candidatures received by e-mail NoNewEmailToProcess=沒有新的電子郵件(與篩選匹配)要處理 NothingProcessed=什麼都沒做 -XEmailsDoneYActionsDone=%s電子郵件合格,%s電子郵件已成功處理(對於%s記錄/已完成操作) +XEmailsDoneYActionsDone=%s emails pre-qualified, %s emails successfully processed (for %s record/actions done) RecordEvent=在行事曆中記錄事件(類型為發送或接收的電子郵件) CreateLeadAndThirdParty=建立潛在(必要時建立合作方) CreateTicketAndThirdParty=Create a ticket (linked to a third party if the third party was loaded by a previous operation or was guessed from a tracker in email header, without third party otherwise) @@ -2167,6 +2168,9 @@ EmailTemplate=電子郵件模板 EMailsWillHaveMessageID=電子郵件將具有與此語法匹配的標籤“參考” PDF_SHOW_PROJECT=在文件中顯示專案 ShowProjectLabel=專案標籤 +PDF_INCLUDE_ALIAS_IN_THIRDPARTY_NAME=Include alias in thirdparty name +THIRDPARTY_ALIAS=Name thirdparty - Alias thirdparty +ALIAS_THIRDPARTY=Alias thirdparty - Name thirdparty PDF_USE_ALSO_LANGUAGE_CODE=如果您要在生成同一的PDF中以兩種不同的語言複製一些文字,則必須在此處設置第二種語言讓生成的PDF在同一頁中包含兩種不同的語言,選擇的可以用來生成PDF跟另一種語言(只有少數PDF模板支援此功能)。PDF只有一種語言則留空。 PDF_USE_A=產生使用PDF/A格式的PDF文件而不是預設格式的PDF FafaIconSocialNetworksDesc=在此處輸入FontAwesome圖示的代碼。如果您不知道什麼是FontAwesome,則可以使用通用值fa-address-book。 @@ -2248,13 +2252,21 @@ TemplateforBusinessCards=不同尺寸大小的名片模板 InventorySetup= 庫存設定 ExportUseLowMemoryMode=使用低記憶體模式 ExportUseLowMemoryModeHelp=使用低記憶體模式執行另存的 exec(壓縮是通過管道完成的,而不是進入 PHP 記憶體)。此方法不允許檢查檔案是否已完成,如果失敗則無法報告錯誤訊息。 + +ModuleWebhookName = Webhook +ModuleWebhookDesc = Interface to catch dolibarr triggers and send it to an URL +WebhookSetup = Webhook setup +Settings = 設定 +WebhookSetupPage = Webhook setup page ShowQuickAddLink=元件在右上角的選單中顯示一個快速增加小工具的按鈕 + HashForPing=用於 ping 的Hash ReadOnlyMode=實例是否處於“唯讀”模式 DEBUGBAR_USE_LOG_FILE=使用 dolibarr.log 檔案收集日誌 UsingLogFileShowAllRecordOfSubrequestButIsSlower=Use the dolibarr.log file to trap Logs instead of live memory catching. It allows to catch all logs instead of only log of current process (so including the one of ajax subrequests pages) but will make your instance very very slow. Not recommended. FixedOrPercent=Fixed (use keyword 'fixed') or percent (use keyword 'percent') DefaultOpportunityStatus=Default opportunity status (first status when lead is created) + IconAndText=Icon and text TextOnly=Text only IconOnlyAllTextsOnHover=Icon only - All texts appears under icon on mouse hover menu bar @@ -2262,4 +2274,8 @@ IconOnlyTextOnHover=Icon only - Text of icon appears under icon on mouse hover t IconOnly=Icon only - Text on tooltip only INVOICE_ADD_ZATCA_QR_CODE=Show the ZATCA QR code on invoices INVOICE_ADD_ZATCA_QR_CODEMore=Some Arabic countries need this QR Code on their invoices +INVOICE_ADD_SWISS_QR_CODE=Show the swiss QR-Bill code on invoices UrlSocialNetworksDesc=Url link of social network. Use {socialid} for the variable part that contains the social network ID. +IfThisCategoryIsChildOfAnother=If this category is a child of another one +NoName=No name +CIDLookupURL=The module brings an URL that can be used by an external tool to get the name of a thirdparty or contact from its phone number. URL to use is: diff --git a/htdocs/langs/zh_TW/companies.lang b/htdocs/langs/zh_TW/companies.lang index 8a803939180..68ad3a79aef 100644 --- a/htdocs/langs/zh_TW/companies.lang +++ b/htdocs/langs/zh_TW/companies.lang @@ -60,13 +60,14 @@ NatureOfThirdParty=合作方性質 NatureOfContact=聯絡人性質 Address=地址 State=州/省 +StateId=State ID StateCode=州/省代碼 StateShort=州 Region=地區 Region-State=地區 - 州 Country=國家 CountryCode=國家代碼 -CountryId=國家ID +CountryId=Country ID Phone=電話 PhoneShort=電話 Skype=Skype @@ -163,14 +164,14 @@ ProfId5CL=- ProfId6CL=- ProfId1CM=Id. prof. 1(商業登記) ProfId2CM=Id. prof. 2(納稅人編號) -ProfId3CM=Id. prof. 3(建立法令) -ProfId4CM=Id. prof. 4 (Certificate of deposits) +ProfId3CM=Id. prof. 3 (No. of creation decree) +ProfId4CM=Id. prof. 4 (Deposit certificate No.) ProfId5CM=Id. prof. 5 (Others) ProfId6CM=- ProfId1ShortCM=商業登記 ProfId2ShortCM=納稅人編號 -ProfId3ShortCM=建立法令 -ProfId4ShortCM=Certificate of deposits +ProfId3ShortCM=No. of creation decree +ProfId4ShortCM=Deposit certificate No. ProfId5ShortCM=其他 ProfId6ShortCM=- ProfId1CO=Prof Id 1 (R.U.T.) diff --git a/htdocs/langs/zh_TW/errors.lang b/htdocs/langs/zh_TW/errors.lang index 5afdeaa2b52..ab0e1628ec7 100644 --- a/htdocs/langs/zh_TW/errors.lang +++ b/htdocs/langs/zh_TW/errors.lang @@ -92,6 +92,7 @@ ErrorModuleRequireJavascript=為使用此功能不能停用JavaScript。要啟 ErrorPasswordsMustMatch=這兩種類型的密碼必須相互匹配 ErrorContactEMail=發生技術錯誤。請用以下電子郵件%s聯絡管理員,並提供錯誤代碼%s ,或加入此錯誤畫面。 ErrorWrongValueForField=欄位%s :"%s"與正則表達式規則%s不匹配 +ErrorHtmlInjectionForField=Field %s: The value '%s' contains a malicious data not allowed ErrorFieldValueNotIn=欄位%s: "%s"在 %s中的欄位%s被發現不是數值 ErrorFieldRefNotIn=欄位%s: '%s' 不是 %s現有參考 ErrorsOnXLines=發現%s錯誤 @@ -270,7 +271,7 @@ ErrorYouMustFirstSetupYourChartOfAccount=您必須先設定會計項目表 ErrorFailedToFindEmailTemplate=無法找到代號為 %s 的模板 ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice=未在服務中定義時間範圍.無法計算時薪. ErrorActionCommPropertyUserowneridNotDefined=需要用戶的擁有者 -ErrorActionCommBadType=選擇的事件類型(id:%n,代碼:%s)在事件類型分類中不存在 +ErrorActionCommBadType=Selected event type (id: %s, code: %s) do not exist in Event Type dictionary CheckVersionFail=版本檢查失敗 ErrorWrongFileName=檔案名稱中不可以有__SOMETHING__ ErrorNotInDictionaryPaymentConditions=不在支付條款類別中,請修改。 @@ -285,13 +286,16 @@ ErrorPaymentInBothCurrency=錯誤,所有金額必須輸入於同一列 ErrorYouTryToPayInvoicesInACurrencyFromBankWithAnotherCurrency=您嘗試從貨幣 %s 的帳戶支付貨幣 %s 的發票 ErrorInvoiceLoadThirdParty=Can't load third-party object for invoice "%s" ErrorInvoiceLoadThirdPartyKey=Third-party key "%s" no set for invoice "%s" -ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by actual object status +ErrorDeleteLineNotAllowedByObjectStatus=Delete line is not allowed by current object status ErrorAjaxRequestFailed=Request failed +ErrorThirpdartyOrMemberidIsMandatory=Third party or Member of partnership is mandatory +ErrorFailedToWriteInTempDirectory=Failed to write in temp directory +ErrorQuantityIsLimitedTo=Quantity is limited to %s # Warnings WarningParamUploadMaxFileSizeHigherThanPostMaxSize=您的PHP參數upload_max_filesize(%s)高於PHP參數post_max_size(%s)。這不是相同的設定。 WarningPasswordSetWithNoAccount=為此會員設定了密碼。但是,沒有建立用戶帳戶。因此,雖然密碼已儲存,但不能用於登入Dolibarr。外部模組/界面可以使用它,但是如果您不需要為會員定義任何登入名稱或密碼,則可以從會員模組設定中關閉選項“管理每個會員的登入名稱”。如果您需要管理登入名稱但不需要任何密碼,則可以將此欄位保留為空白以避免此警告。注意:如果會員連結到用戶,電子郵件也可以用作登入名稱。 -WarningMandatorySetupNotComplete=點擊此處設定必填參數 +WarningMandatorySetupNotComplete=Click here to setup main parameters WarningEnableYourModulesApplications=點擊此處啟用您的模組和應用程式 WarningSafeModeOnCheckExecDir=警告,PHP選項safe_mode處於開啟狀態,因此命令必須儲存在php參數safe_mode_exec_dir聲明的資料夾內。 WarningBookmarkAlreadyExists=具有此標題或目標(網址)的書籤已存在。 @@ -321,12 +325,8 @@ WarningCreateSubAccounts=警告,您不能直接建立子帳戶,您必須建 WarningAvailableOnlyForHTTPSServers=僅在使用 HTTPS 安全連線時可用。 WarningModuleXDisabledSoYouMayMissEventHere=模組 %s 尚未啟用。所以你可能會在這裡錯過很多事件。 WarningPaypalPaymentNotCompatibleWithStrict=數值 'Strict' 使得線上支付功能無法正常工作。改用“Lax”。 +WarningThemeForcedTo=Warning, theme has been forced to %s by hidden constant MAIN_FORCETHEME -<<<<<<< HEAD -======= -<<<<<<< HEAD -<<<<<<< HEAD ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git # Validate RequireValidValue = 數值無效 RequireAtLeastXString = 至少需要%s個字元 @@ -347,12 +347,3 @@ BadSetupOfField = 欄位設定錯誤 BadSetupOfFieldClassNotFoundForValidation = 欄位設定錯誤:沒有發現可驗證的Class BadSetupOfFieldFileNotFound = 欄位設定錯誤:未找到要包含的檔案 BadSetupOfFieldFetchNotCallable = 欄位設定錯誤:無法在Class上調用獲取 -<<<<<<< HEAD -======= -======= -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git -======= ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git ->>>>>>> branch '15.0' of git@github.com:Dolibarr/dolibarr.git diff --git a/htdocs/langs/zh_TW/externalsite.lang b/htdocs/langs/zh_TW/externalsite.lang deleted file mode 100644 index 55d5e5c1226..00000000000 --- a/htdocs/langs/zh_TW/externalsite.lang +++ /dev/null @@ -1,5 +0,0 @@ -# Dolibarr language file - Source file is en_US - externalsite -ExternalSiteSetup=設定連結到外部網站 -ExternalSiteURL=HTML iframe 內容的外部網站網址 -ExternalSiteModuleNotComplete=外部網站模組設定不正確。 -ExampleMyMenuEntry=我的選單條目 diff --git a/htdocs/langs/zh_TW/ftp.lang b/htdocs/langs/zh_TW/ftp.lang deleted file mode 100644 index 55a1c5ada56..00000000000 --- a/htdocs/langs/zh_TW/ftp.lang +++ /dev/null @@ -1,14 +0,0 @@ -# Dolibarr language file - Source file is en_US - ftp -FTPClientSetup=FTP客戶端模組設定 -NewFTPClient=新的FTP連接設定 -FTPArea=FTP區域 -FTPAreaDesc=此畫面顯示FTP服務器的圖示。 -SetupOfFTPClientModuleNotComplete=FTP客戶端模組設定似乎不完整 -FTPFeatureNotSupportedByYourPHP=您的PHP不支援FTP功能 -FailedToConnectToFTPServer=無法連接到FTP服務器(服務器%s,港口%s) -FailedToConnectToFTPServerWithCredentials=無法登錄到FTP服務器的定義登錄/密碼 -FTPFailedToRemoveFile=無法刪除文件%s。 -FTPFailedToRemoveDir=無法刪除資料夾%s :檢查權限,並且確認資料夾內無檔案。 -FTPPassiveMode=被動模式 -ChooseAFTPEntryIntoMenu=從選單中選擇一個FTP站台... -FailedToGetFile=無法獲取檔案 %s diff --git a/htdocs/langs/zh_TW/hrm.lang b/htdocs/langs/zh_TW/hrm.lang index 7677c4f25ff..ca67129cf3e 100644 --- a/htdocs/langs/zh_TW/hrm.lang +++ b/htdocs/langs/zh_TW/hrm.lang @@ -12,7 +12,7 @@ OpenEtablishment=開啟營業所 CloseEtablishment=關閉營業所 # Dictionary DictionaryPublicHolidays=休假 - 公共假期 -DictionaryDepartment=HRM-部門清單 +DictionaryDepartment=HRM - Organizational Unit DictionaryFunction=人力資源管理-職位 # Module Employees=員工 @@ -70,9 +70,9 @@ RequiredSkills=此職位的必要技能 UserRank=用戶等級 SkillList=技能清單 SaveRank=儲存等級 -knowHow=Know how -HowToBe=怎樣成為 -knowledge=知識 +TypeKnowHow=Know how +TypeHowToBe=怎樣成為 +TypeKnowledge=知識 AbandonmentComment=放棄評論 DateLastEval=上次評估日期 NoEval=沒有對此員工進行的評估 @@ -88,3 +88,4 @@ DeleteSkill = 技能已刪除 SkillsExtraFields=補充屬性(能力) JobsExtraFields=補充屬性 (職位) EvaluationsExtraFields=補充屬性(評估) +NeedBusinessTravels=Need business travels diff --git a/htdocs/langs/zh_TW/install.lang b/htdocs/langs/zh_TW/install.lang index f5b3ab6aaac..ef83355b6b1 100644 --- a/htdocs/langs/zh_TW/install.lang +++ b/htdocs/langs/zh_TW/install.lang @@ -8,7 +8,7 @@ ConfFileIsNotWritable=配置文件%s不可寫入。檢查權限。對於 ConfFileIsWritable=配置文件%s可寫入。 ConfFileMustBeAFileNotADir=配置文件%s必須是一個檔案,而不是資料夾。 ConfFileReload=從配置文件中重新載入參數。 -NoReadableConfFileSoStartInstall=設定檔案 conf/conf.php 不存在或不可讀取。我們將執行安裝過程以嘗試對其進行初始化。 +NoReadableConfFileSoStartInstall=The configuration file conf/conf.php does not exists or is not readable. We will run the installation process to try to initialize it. PHPSupportPOSTGETOk=此PHP支援變數POST和GET。 PHPSupportPOSTGETKo=您的PHP設定可能不支援變數POST和/或GET。檢查php.ini中的參數variables_order 。 PHPSupportSessions=這個PHP支援session。 @@ -24,9 +24,11 @@ ErrorWrongValueForParameter=您可能為參數“ %s”輸入了錯誤的值。 ErrorFailedToCreateDatabase=無法建立資料庫'%s'。 ErrorFailedToConnectToDatabase=無法連接到資料庫“ %s”。 ErrorDatabaseVersionTooLow=資料庫版本 (%s) 太舊. 需要至少版本 %s 或更新版本 -ErrorPHPVersionTooLow=PHP的版本太舊。至少必須是%s版本。 +ErrorPHPVersionTooLow=PHP version too old. Version %s or higher is required. +ErrorPHPVersionTooHigh=PHP version too high. Version %s or lower is required. ErrorConnectedButDatabaseNotFound=與伺服器的連接成功,但未找到資料庫'%s'。 ErrorDatabaseAlreadyExists=資料庫'%s'已經存在。 +ErrorNoMigrationFilesFoundForParameters=No migration file found for the selected versions IfDatabaseNotExistsGoBackAndUncheckCreate=如果資料庫不存在,請返回並檢查選項“建立資料庫”。 IfDatabaseExistsGoBackAndCheckCreate=如果資料庫已經存在,請返回並取消選取“建立資料庫”選項。 WarningBrowserTooOld=瀏覽器版本太舊。強烈建議將瀏覽器升級到最新版本的Firefox,Chrome或Opera。 diff --git a/htdocs/langs/zh_TW/knowledgemanagement.lang b/htdocs/langs/zh_TW/knowledgemanagement.lang index 83fa3e35f01..a51c54fd32b 100644 --- a/htdocs/langs/zh_TW/knowledgemanagement.lang +++ b/htdocs/langs/zh_TW/knowledgemanagement.lang @@ -43,12 +43,12 @@ ListKnowledgeRecord = 文章清單 NewKnowledgeRecord = 新文章 ValidateReply = 驗證解決方案 KnowledgeRecords = 文章 -KnowledgeRecord = 物品 +KnowledgeRecord = 文章 KnowledgeRecordExtraFields = 文章的補充屬性 GroupOfTicket=服務單群組 -YouCanLinkArticleToATicketCategory=您可以將文章連結至服務單群組(因此在新服務單的有效期間將建議該文章) -SuggestedForTicketsInGroup=為此群組服務單建議 +YouCanLinkArticleToATicketCategory=You can link the article to a ticket group (so the article will be highlighted on any tickets in this group) +SuggestedForTicketsInGroup=建議的服務單群組 -SetObsolete=Set as obsolete -ConfirmCloseKM=Do you confirm the closing of this article as obsolete ? -ConfirmReopenKM=Do you want to restore this article to status "Validated" ? +SetObsolete=設定為已過時 +ConfirmCloseKM=您確定要將此文章關閉並設定為已過時嗎? +ConfirmReopenKM=您想將此文章恢復到“已驗證”狀態嗎? diff --git a/htdocs/langs/zh_TW/loan.lang b/htdocs/langs/zh_TW/loan.lang index c9b1a7e0870..d360a5d3099 100644 --- a/htdocs/langs/zh_TW/loan.lang +++ b/htdocs/langs/zh_TW/loan.lang @@ -24,7 +24,7 @@ FinancialCommitment=財務承諾 InterestAmount=利益 CapitalRemain=剩餘資本 TermPaidAllreadyPaid = 這表示已付款 -CantUseScheduleWithLoanStartedToPaid = 無法在已開始付款的借款中使用排程器 +CantUseScheduleWithLoanStartedToPaid = Can't generate a timeline for a loan with a payment started CantModifyInterestIfScheduleIsUsed = 如果您使用時間表,則無法修改利息 # Admin ConfigLoan=貸款模組設定 diff --git a/htdocs/langs/zh_TW/main.lang b/htdocs/langs/zh_TW/main.lang index 9081e86d88c..2ebebd67743 100644 --- a/htdocs/langs/zh_TW/main.lang +++ b/htdocs/langs/zh_TW/main.lang @@ -712,6 +712,7 @@ FeatureDisabled=功能已關閉 MoveBox=移動小工具 Offered=已提供 NotEnoughPermissions=您沒有權限執行這個動作 +UserNotInHierachy=This action is reserved to the supervisors of this user SessionName=連線程序名稱 Method=方法 Receive=收到 @@ -801,6 +802,7 @@ URLPhoto=照片/logo的網址 SetLinkToAnotherThirdParty=連結到另一個合作方 LinkTo=連結到 LinkToProposal=連結到提案/建議書 +LinkToExpedition= Link to expedition LinkToOrder=連結到訂單 LinkToInvoice=連結到發票 LinkToTemplateInvoice=連結到發票範本 @@ -1174,3 +1176,7 @@ ConfirmAllocateCommercial=分配業務代表確認 ConfirmAllocateCommercialQuestion=您確定要分配 %s 選定的記錄嗎? CommercialsAffected=受影響的業務代表 CommercialAffected=受影響的業務代表 +YourMessage=Your message +YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. +UrlToCheck=Url to check +Automation=Automation diff --git a/htdocs/langs/zh_TW/members.lang b/htdocs/langs/zh_TW/members.lang index 6dd2f02b4e5..b4c6a31ef51 100644 --- a/htdocs/langs/zh_TW/members.lang +++ b/htdocs/langs/zh_TW/members.lang @@ -35,7 +35,8 @@ DateEndSubscription=會員終止日 EndSubscription=終止會員 SubscriptionId=捐款編號 WithoutSubscription=沒有捐款 -MemberId=會員編號 +MemberId=Member Id +MemberRef=Member Ref NewMember=新會員 MemberType=會員類型 MemberTypeId=會員類型編號 @@ -218,3 +219,5 @@ XExternalUserCreated=已建立%s位外部用戶 ForceMemberNature=強制會員性質(個人或公司) CreateDolibarrLoginDesc=為會員建立用戶登錄允許他們連接到應用程式。例如,根據授予的授權,他們將能夠自己查閱或修改他們的檔案。 CreateDolibarrThirdPartyDesc=如果您決定為每筆捐款產生發票,合作方就是將使用在發票上的實體法人。您稍後可以在記錄捐款的過程中建立它。 +MemberFirstname=Member firstname +MemberLastname=Member lastname diff --git a/htdocs/langs/zh_TW/oauth.lang b/htdocs/langs/zh_TW/oauth.lang index 0e443711506..74ed38d805e 100644 --- a/htdocs/langs/zh_TW/oauth.lang +++ b/htdocs/langs/zh_TW/oauth.lang @@ -9,12 +9,13 @@ HasAccessToken=已產生許可證並儲存到本地資料庫中 NewTokenStored=已收到並已儲存許可證 ToCheckDeleteTokenOnProvider=點擊此處以檢查/刪除由%s OAuth供應商儲存的授權 TokenDeleted=許可證已刪除 -RequestAccess=點擊此處請求/續訂訪問權限並接收新許可證以保存 +RequestAccess=Click here to request/renew access and receive a new token DeleteAccess=點擊此處刪除許可證 UseTheFollowingUrlAsRedirectURI=使用您的OAuth供應商建立憑證時,請使用以下網址作為重新轉向URI: -ListOfSupportedOauthProviders=輸入您的OAuth2供應商提供的憑據。此處僅列出受支援的OAuth2供應商。這些服務可由需要OAuth2身份驗證的其他模組使用。 -OAuthSetupForLogin=產生OAuth許可證的頁面 +ListOfSupportedOauthProviders=Add your OAuth2 token providers. Then, go on your OAuth provider admin page to create/get an OAuth ID and Secret and save them here. Once done, switch on the other tab to generate your token. +OAuthSetupForLogin=Page to manage (generate/delete) OAuth tokens SeePreviousTab=查看上一個分頁 +OAuthProvider=OAuth provider OAuthIDSecret=OAuth ID和Secret TOKEN_REFRESH=更新目前的許可證 TOKEN_EXPIRED=許可證已過期 @@ -23,10 +24,13 @@ TOKEN_DELETE=刪除已儲存的許可證 OAUTH_GOOGLE_NAME=OAuth Google服務 OAUTH_GOOGLE_ID=OAuth Google Id OAUTH_GOOGLE_SECRET=OAuth Google Secret -OAUTH_GOOGLE_DESC=前往此頁面然後點擊“憑證”以建立OAuth憑證 OAUTH_GITHUB_NAME=OAuth GitHub服務 OAUTH_GITHUB_ID=OAuth GitHub Id OAUTH_GITHUB_SECRET=OAuth GitHub Secret -OAUTH_GITHUB_DESC=前往此頁面然後“註冊新應用程式”以建立OAuth憑證 +OAUTH_URL_FOR_CREDENTIAL=Go to this page to create or get your OAuth ID and Secret OAUTH_STRIPE_TEST_NAME=OAuth Stripe測試 OAUTH_STRIPE_LIVE_NAME=OAuth Stripe Live +OAUTH_ID=OAuth ID +OAUTH_SECRET=OAuth secret +OAuthProviderAdded=OAuth provider added +AOAuthEntryForThisProviderAndLabelAlreadyHasAKey=An OAuth entry for this provider and label already exists diff --git a/htdocs/langs/zh_TW/other.lang b/htdocs/langs/zh_TW/other.lang index 25c608a6f58..d474dcb2a45 100644 --- a/htdocs/langs/zh_TW/other.lang +++ b/htdocs/langs/zh_TW/other.lang @@ -304,3 +304,24 @@ ConfirmBtnCommonContent = 您確定要“%s”嗎? ConfirmBtnCommonTitle = 確認您的操作 CloseDialog = 關閉 Autofill = 自動填入 + +# externalsite +ExternalSiteSetup=設定連結到外部網站 +ExternalSiteURL=HTML iframe 內容的外部網站網址 +ExternalSiteModuleNotComplete=外部網站模組設定不正確。 +ExampleMyMenuEntry=我的選單條目 + +# FTP +FTPClientSetup=FTP或SFTP客戶端模組設定 +NewFTPClient=新的FTP / FTPS連線設定 +FTPArea=FTP / FTPS區域 +FTPAreaDesc=此畫面顯示FTP和SFTP伺服器的檢視。 +SetupOfFTPClientModuleNotComplete=FTP或SFTP的客戶端模組設定似乎不完整 +FTPFeatureNotSupportedByYourPHP=您的PHP不支援FTP或SFTP功能 +FailedToConnectToFTPServer=無法連接到伺服器(伺服器%s,連接埠%s) +FailedToConnectToFTPServerWithCredentials=使用已定義的用戶名/密碼登錄伺服器失敗 +FTPFailedToRemoveFile=無法刪除文件%s。 +FTPFailedToRemoveDir=無法刪除資料夾%s :檢查權限,並且確認資料夾內無檔案。 +FTPPassiveMode=被動模式 +ChooseAFTPEntryIntoMenu=從選單中選擇一個FTP/SFTP站台... +FailedToGetFile=無法獲取檔案 %s diff --git a/htdocs/langs/zh_TW/stocks.lang b/htdocs/langs/zh_TW/stocks.lang index dde036d41e1..b91d99a98cd 100644 --- a/htdocs/langs/zh_TW/stocks.lang +++ b/htdocs/langs/zh_TW/stocks.lang @@ -265,6 +265,7 @@ ProductBarcodeDoesNotExist=此條碼的產品不存在 WarehouseId=倉庫編號 WarehouseRef=倉庫名稱 SaveQtyFirst=在詢問建立庫存變動之前,首先儲存實際庫存數量。 +ToStart=開始 InventoryStartedShort=已開始 ErrorOnElementsInventory=操作因為以下原因取消: ErrorCantFindCodeInInventory=在庫存中找不到以下代號 @@ -272,3 +273,45 @@ QtyWasAddedToTheScannedBarcode=成功 !!數量已增加到所有請求的條 StockChangeDisabled=更改庫存已停用 NoWarehouseDefinedForTerminal=沒有為終端機定義倉庫 ClearQtys=清除所有數量 +ModuleStockTransferName=Advanced Stock Transfer +ModuleStockTransferDesc=Advanced management of Stock Transfer, with generation of transfer sheet +StockTransferNew=New stock transfer +StockTransferList=Stock transfers list +ConfirmValidateStockTransfer=Are you sure you want to validate this stocks transfer with reference %s ? +ConfirmDestock=Decrease of stocks with transfer %s +ConfirmDestockCancel=Cancel decrease of stocks with transfer %s +DestockAllProduct=Decrease of stocks +DestockAllProductCancel=Cancel decrease of stocks +ConfirmAddStock=Increase stocks with transfer %s +ConfirmAddStockCancel=Cancel increase of stocks with transfer %s +AddStockAllProduct=Increase of stocks +AddStockAllProductCancel=Cancel increase of stocks +DatePrevueDepart=Intended date of departure +DateReelleDepart=Real date of departure +DatePrevueArrivee=Intended date of arrival +DateReelleArrivee=Real date of arrival +HelpWarehouseStockTransferSource=If this warehouse is set, only itself and its children will be available as source warehouse +HelpWarehouseStockTransferDestination=If this warehouse is set, only itself and its children will be available as destination warehouse +LeadTimeForWarning=Lead time before alert (in days) +TypeContact_stocktransfer_internal_STFROM=Sender of stocks transfer +TypeContact_stocktransfer_internal_STDEST=Recipient of stocks transfer +TypeContact_stocktransfer_internal_STRESP=Responsible of stocks transfer +StockTransferSheet=Stocks transfer sheet +StockTransferSheetProforma=Proforma stocks transfer sheet +StockTransferDecrementation=Decrease source warehouses +StockTransferIncrementation=Increase destination warehouses +StockTransferDecrementationCancel=Cancel decrease of source warehouses +StockTransferIncrementationCancel=Cancel increase of destination warehouses +StockStransferDecremented=Source warehouses decreased +StockStransferDecrementedCancel=Decrease of source warehouses canceled +StockStransferIncremented=Closed - Stocks transfered +StockStransferIncrementedShort=Stocks transfered +StockStransferIncrementedShortCancel=Increase of destination warehouses canceled +StockTransferNoBatchForProduct=Product %s doesn't use batch, clear batch on line and retry +StockTransferSetup = Stocks Transfer module configuration +Settings=設定 +StockTransferSetupPage = Configuration page for stocks transfer module +StockTransferRightRead=Read stocks transfers +StockTransferRightCreateUpdate=Create/Update stocks transfers +StockTransferRightDelete=Delete stocks transfers +BatchNotFound=Lot / serial not found for this product diff --git a/htdocs/langs/zh_TW/ticket.lang b/htdocs/langs/zh_TW/ticket.lang index 650212e740c..8260468fbfc 100644 --- a/htdocs/langs/zh_TW/ticket.lang +++ b/htdocs/langs/zh_TW/ticket.lang @@ -90,8 +90,8 @@ TicketPublicAccess=以下網址提供了無需認證的公共界面 TicketSetupDictionaries=服務單類型,嚴重性和分析代碼可前往分類進行設定 TicketParamModule=模組變數設定 TicketParamMail=電子郵件設定 -TicketEmailNotificationFrom=回應服務單寄件者e-mail -TicketEmailNotificationFromHelp=從Dolibarr回應服務單寄件者e-mail +TicketEmailNotificationFrom=Sender e-mail for notification on answers +TicketEmailNotificationFromHelp=Sender e-mail to use to send the notification email when an answer is provided inside the backoffice. For example noreply@example.com TicketEmailNotificationTo=服務單建立通知傳送至此電子郵件 TicketEmailNotificationToHelp=如果存在,將通知此電子郵件有服務單被建立 TicketNewEmailBodyLabel=建立服務單後發送的訊息 @@ -99,6 +99,8 @@ TicketNewEmailBodyHelp=此處指定的文字將插入到從公共界面建立新 TicketParamPublicInterface=公共界面設定 TicketsEmailMustExist=需要現有的電子郵件地址來建立服務單 TicketsEmailMustExistHelp=在公共界面中,電子郵件地址應該已經填入到資料庫中以建立服務單。 +TicketCreateThirdPartyWithContactIfNotExist=Ask name and company name for unknown emails. +TicketCreateThirdPartyWithContactIfNotExistHelp=Check if a thirdparty or a contact exists for the email entered. If not, ask a name and a company name to create a third party with contact. PublicInterface=公共界面 TicketUrlPublicInterfaceLabelAdmin=公共界面的備用網址 TicketUrlPublicInterfaceHelpAdmin=可以為網站伺服器定義別名,使得公共界面可以與另一個網址一起使用(伺服器必須充當此新網址的代理) diff --git a/htdocs/loan/card.php b/htdocs/loan/card.php index 3ad898cda98..d209c64d088 100644 --- a/htdocs/loan/card.php +++ b/htdocs/loan/card.php @@ -274,7 +274,7 @@ if ($action == 'create') { print '
'; // Bank account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; @@ -473,7 +473,7 @@ if ($id > 0) { print ''; print ''; } else { - print ''; + print ''; } // Insurance @@ -482,7 +482,7 @@ if ($id > 0) { print ''; print ''; } else { - print ''; + print ''; } // Date start diff --git a/htdocs/loan/class/loan.class.php b/htdocs/loan/class/loan.class.php index 147f07b7e1b..81a00904794 100644 --- a/htdocs/loan/class/loan.class.php +++ b/htdocs/loan/class/loan.class.php @@ -220,7 +220,7 @@ class Loan extends CommonObject } // Check parameters - if (!$newcapital > 0 || empty($this->datestart) || empty($this->dateend)) { + if (!($newcapital > 0) || empty($this->datestart) || empty($this->dateend)) { $this->error = "ErrorBadParameter"; return -2; } diff --git a/htdocs/loan/class/paymentloan.class.php b/htdocs/loan/class/paymentloan.class.php index ae31a8314aa..3ce8af01790 100644 --- a/htdocs/loan/class/paymentloan.class.php +++ b/htdocs/loan/class/paymentloan.class.php @@ -497,7 +497,7 @@ class PaymentLoan extends CommonObject $error = 0; $this->db->begin(); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); diff --git a/htdocs/loan/payment/card.php b/htdocs/loan/payment/card.php index 198025215b7..8f7ad7da44c 100644 --- a/htdocs/loan/payment/card.php +++ b/htdocs/loan/payment/card.php @@ -24,7 +24,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/loan.class.php'; require_once DOL_DOCUMENT_ROOT.'/loan/class/paymentloan.class.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -129,7 +129,7 @@ print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($payment->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($payment->bank_line); diff --git a/htdocs/loan/payment/payment.php b/htdocs/loan/payment/payment.php index ac2b967593c..c20c3978571 100644 --- a/htdocs/loan/payment/payment.php +++ b/htdocs/loan/payment/payment.php @@ -105,7 +105,7 @@ if ($action == 'add_payment') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $error++; } - if (!empty($conf->banque->enabled) && !GETPOST('accountid', 'int') > 0) { + if (isModEnabled("banque") && !GETPOST('accountid', 'int') > 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); $error++; } @@ -167,7 +167,7 @@ if ($action == 'add_payment') { if (!$error) { $result = $payment->addPaymentToBank($user, $chid, 'payment_loan', '(LoanPayment)', $payment->fk_bank, '', ''); - if (!$result > 0) { + if (!($result > 0)) { setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } @@ -293,6 +293,7 @@ if ($action == 'create') { print ''; print '\n"; print ''; @@ -300,10 +301,11 @@ if ($action == 'create') { print ''; print ''; print ''; - // Number + // Number print ''; diff --git a/htdocs/loan/schedule.php b/htdocs/loan/schedule.php index 0944142bc1c..cd5faa1afe3 100644 --- a/htdocs/loan/schedule.php +++ b/htdocs/loan/schedule.php @@ -234,17 +234,16 @@ if (count($echeances->lines) > 0) { print ''; } +//print_fiche_titre($langs->trans("FinancialCommitment")); +print '
'; + print '
'; print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; @@ -1643,15 +1659,20 @@ if ($resql) { print ''; - $searchpicto = $form->showFilterButtons(); - print $searchpicto; - print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + } + // Ref if (!empty($arrayfields['c.ref']['checked'])) { print ''; @@ -2364,7 +2399,7 @@ if ($resql) { } $stock_order = $generic_product->stats_commande['qty']; } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) { $generic_product->load_stats_commande_fournisseur(0, '3'); $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty']; @@ -2385,7 +2420,7 @@ if ($resql) { } else { $text_info .= ''.$langs->trans('Available').' : '.$text_stock_reel.''; } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { $text_info .= ' '.$langs->trans('SupplierOrder').' : '.$stock_order_supplier; } $text_info .= ($reliquat != $generic_commande->lines[$lig]->qty ? ' ('.$langs->trans("QtyInOtherShipments").' '.($generic_commande->lines[$lig]->qty - $reliquat).')' : ''); @@ -2438,13 +2473,15 @@ if ($resql) { } // Action column - print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; } print '"; if (!empty($conf->global->MULTICOMPANY_ALLOW_EXPORT_ACCOUNTING_DOC_FOR_ALL_ENTITIES)) { + $socid = $mc->id; print $mc->select_entities(GETPOSTISSET('search_entity') ? GETPOST('search_entity', 'int') : $mc->id, 'search_entity', '', false, false, false, false, true); } else { print $mc->label; @@ -576,6 +599,16 @@ if (!empty($conf->multicompany->enabled) && is_object($mc)) { print '
'; +// Project filter +if (!empty($conf->projet->enabled)) { + $formproject = new FormProjets($db); + $langs->load('projects'); + print ''.$langs->trans('Project').":"; + print img_picto('', 'project').$formproject->select_projects(($socid > 0 ? $socid : -1), $projectid, 'projectid', 0, 0, 1, 0, 0, 0, 0, '', 1, 0, ''); + print ''; + print '
'; +} + foreach ($listofchoices as $choice => $val) { if (empty($val['enabled'])) { continue; // list not qualified @@ -594,6 +627,7 @@ print ''."\n"; print dol_get_fiche_end(); +$param = ''; if (!empty($date_start) && !empty($date_stop)) { $param .= '&date_startday='.GETPOST('date_startday', 'int'); $param .= '&date_startmonth='.GETPOST('date_startmonth', 'int'); @@ -614,7 +648,7 @@ if (!empty($date_start) && !empty($date_stop)) { echo dol_print_date($date_start, 'day', 'tzuserrel')." - ".dol_print_date($date_stop, 'day', 'tzuserrel'); - print 'trans("FinancialAccount").' - '.$langs->trans("IOMonthlyReporting"); -$helpurl = ""; -llxHeader('', $title, $helpurl); - $form = new Form($db); // Get account informations @@ -82,6 +78,10 @@ $annee = ''; $totentrees = array(); $totsorties = array(); +$title = $object->ref.' - '.$langs->trans("IOMonthlyReporting"); +$helpurl = ""; +llxHeader('', $title, $helpurl); + // Ce rapport de tresorerie est base sur llx_bank (car doit inclure les transactions sans facture) // plutot que sur llx_paiement + llx_paiementfourn diff --git a/htdocs/compta/bank/bankentries_list.php b/htdocs/compta/bank/bankentries_list.php index fba2d05897c..af833e7e257 100644 --- a/htdocs/compta/bank/bankentries_list.php +++ b/htdocs/compta/bank/bankentries_list.php @@ -235,8 +235,12 @@ if (empty($reshook)) { include DOL_DOCUMENT_ROOT.'/core/actions_massactions.inc.php'; } +$rowids = GETPOST('rowid', 'array'); + // Conciliation -if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', 'alpha')) && !empty($user->rights->banque->consolidate) +if ((GETPOST('confirm_savestatement', 'alpha') || GETPOST('confirm_reconcile', 'alpha')) + && (GETPOST("num_releve", "alpha") || !empty($rowids)) + && !empty($user->rights->banque->consolidate) && (!GETPOSTISSET('pageplusone') || (GETPOST('pageplusone') == GETPOST('pageplusoneold')))) { $error = 0; @@ -357,7 +361,7 @@ if (GETPOST('save') && !$cancel && !empty($user->rights->banque->modifier)) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors'); } - if (!$bankaccountid > 0) { + if (!($bankaccountid > 0)) { $error++; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BankAccount")), null, 'errors'); } @@ -512,7 +516,7 @@ $buttonreconcile = ''; $morehtmlref = ''; if ($id > 0 || !empty($ref)) { - $title = $langs->trans("FinancialAccount").' - '.$langs->trans("Transactions"); + $title = $object->ref.' - '.$langs->trans("Transactions"); $helpurl = ""; llxHeader('', $title, $helpurl); diff --git a/htdocs/compta/bank/card.php b/htdocs/compta/bank/card.php index 29341b0fb99..420ff97ff0d 100644 --- a/htdocs/compta/bank/card.php +++ b/htdocs/compta/bank/card.php @@ -6,7 +6,7 @@ * Copyright (C) 2014-2017 Alexandre Spangaro * Copyright (C) 2015 Jean-François Ferry * Copyright (C) 2016 Marcos García - * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018-2022 Frédéric France * Copyright (C) 2022 Charlene Benke * * This program is free software; you can redistribute it and/or modify @@ -68,6 +68,15 @@ $hookmanager->initHooks(array('bankcard', 'globalcard')); $id = GETPOST("id", 'int') ? GETPOST("id", 'int') : GETPOST('ref', 'alpha'); $fieldid = GETPOST("id", 'int') ? 'rowid' : 'ref'; +if (GETPOST("id", 'int') || GETPOST("ref")) { + if (GETPOST("id", 'int')) { + $object->fetch(GETPOST("id", 'int')); + } + if (GETPOST("ref")) { + $object->fetch(0, GETPOST("ref")); + } +} + $result = restrictedArea($user, 'banque', $id, 'bank_account&bank_account', '', '', $fieldid); @@ -319,6 +328,7 @@ if (empty($reshook)) { } } + /* * View */ @@ -332,18 +342,16 @@ if (!empty($conf->accounting->enabled)) { $countrynotdefined = $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; -$title = $langs->trans("FinancialAccount")." - ".$langs->trans("Card"); - $help_url = 'EN:Module_Banks_and_Cash|FR:Module_Banques_et_Caisses|ES:Módulo_Bancos_y_Cajas|DE:Modul_Banken_und_Barbestände'; - +if ($action == 'create') { + $title = $langs->trans("NewFinancialAccount"); +} elseif (!empty($object->ref)) { + $title = $object->ref." - ".$langs->trans("Card"); +} llxHeader("", $title, $help_url); - // Creation - if ($action == 'create') { - $object = new Account($db); - print load_fiche_titre($langs->trans("NewFinancialAccount"), '', 'bank_account'); if ($conf->use_javascript_ajax) { @@ -599,22 +607,8 @@ if ($action == 'create') { print ''; } else { - /* ************************************************************************** */ - /* */ - /* Visu et edition */ - /* */ - /* ************************************************************************** */ - + // View and edit mode if ((GETPOST("id", 'int') || GETPOST("ref")) && $action != 'edit') { - $object = new Account($db); - if (GETPOST("id", 'int')) { - $object->fetch(GETPOST("id", 'int')); - } - if (GETPOST("ref")) { - $object->fetch(0, GETPOST("ref")); - $_GET["id"] = $object->id; - } - // Show tabs $head = bank_prepare_head($object); print dol_get_fiche_head($head, 'bankname', $langs->trans("FinancialAccount"), -1, 'account'); @@ -757,7 +751,7 @@ if ($action == 'create') { } print '
'.$langs->trans($ibankey).''.$object->iban.' '; + print ''.getIbanHumanReadable($object).' '; if (!empty($object->iban)) { if (!checkIbanForAccount($object)) { print img_picto($langs->trans("IbanNotValid"), 'warning'); @@ -842,9 +836,6 @@ if ($action == 'create') { /* ************************************************************************** */ if (GETPOST('id', 'int') && $action == 'edit' && $user->rights->banque->configurer) { - $object = new Account($db); - $object->fetch(GETPOST('id', 'int')); - print load_fiche_titre($langs->trans("EditFinancialAccount"), '', 'bank_account'); if ($conf->use_javascript_ajax) { @@ -1013,7 +1004,7 @@ if ($action == 'create') { $tdextra = ' class="fieldrequired titlefieldcreate"'; } - print '
'; if (!empty($conf->accounting->enabled)) { print $formaccounting->select_account($object->account_number, 'account_number', 1, '', 1, 1); @@ -1088,7 +1079,7 @@ if ($action == 'create') { print '
'.$form->textwithpicto($langs->trans("IDS"), $langs->trans("IDS").' ('.$langs->trans("UsedFor", $langs->transnoentitiesnoconv("BankTransfer")).')').'
'; print $form->editfieldkey('BankAccount', 'selectaccountid', '', $object, 0, 'string', '', 1).''; print img_picto('', 'bank_account', 'class="pictofixedwidth"'); @@ -424,7 +428,7 @@ if ($action == 'create') { print '
'.$langs->trans("Sens").''.$sens.'
'.$langs->trans("Amount").''.price($object->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("Amount").''.price($object->amount, 0, $langs, 1, -1, -1, $conf->currency).'
'; @@ -636,7 +642,7 @@ if ($id) { print $form->editfieldval('SubledgerAccount', 'subledger_account', $object->subledger_account, $object, (!$alreadyaccounted && $user->rights->banque->modifier), 'string', '', 0); print '
'; if ($obj->fk_bank > 0) { //$accountstatic->fetch($obj->fk_bank); @@ -254,7 +254,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print '   '.price($totalpaid)."'; if ($obj->fk_bank > 0) { //$accountstatic->fetch($obj->fk_bank); diff --git a/htdocs/compta/deplacement/class/deplacement.class.php b/htdocs/compta/deplacement/class/deplacement.class.php index fb4f9eb17d4..fa812a14c3d 100644 --- a/htdocs/compta/deplacement/class/deplacement.class.php +++ b/htdocs/compta/deplacement/class/deplacement.class.php @@ -1,6 +1,4 @@ * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2009-2012 Regis Houssin @@ -102,6 +100,8 @@ class Deplacement extends CommonObject public $statuts = array(); public $statuts_short = array(); + public $statuts_logo = array(); + /** * Draft status @@ -129,6 +129,7 @@ class Deplacement extends CommonObject $this->statuts_short = array(0 => 'Draft', 1 => 'Validated', 2 => 'Refunded'); $this->statuts = array(0 => 'Draft', 1 => 'Validated', 2 => 'Refunded'); + $this->statuts_logo = array(0 => 'status0', 1=>'status4', 2 => 'status1', 4 => 'status6', 5 => 'status4', 6 => 'status6', 99 => 'status5'); } /** @@ -360,43 +361,12 @@ class Deplacement extends CommonObject // phpcs:enable global $langs; - if ($mode == 0) { - return $langs->trans($this->statuts[$status]); - } elseif ($mode == 1) { - return $langs->trans($this->statuts_short[$status]); - } elseif ($mode == 2) { - if ($status == 0) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts_short[$status]); - } elseif ($status == 1) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts_short[$status]); - } elseif ($status == 2) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts_short[$status]); - } - } elseif ($mode == 3) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } - } elseif ($mode == 4) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut0').' '.$langs->trans($this->statuts[$status]); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut4').' '.$langs->trans($this->statuts[$status]); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return img_picto($langs->trans($this->statuts_short[$status]), 'statut6').' '.$langs->trans($this->statuts[$status]); - } - } elseif ($mode == 5) { - if ($status == 0 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut0'); - } elseif ($status == 1 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut4'); - } elseif ($status == 2 && !empty($this->statuts_short[$status])) { - return $langs->trans($this->statuts_short[$status]).' '.img_picto($langs->trans($this->statuts_short[$status]), 'statut6'); - } - } + $labelStatus = $langs->transnoentitiesnoconv($this->statuts[$status]); + $labelStatusShort = $langs->transnoentitiesnoconv($this->statuts_short[$status]); + + $statusType = $this->statuts_logo[$status]; + + return dolGetStatus($labelStatus, $labelStatusShort, '', $statusType, $mode); } /** diff --git a/htdocs/compta/facture/card-rec.php b/htdocs/compta/facture/card-rec.php index 18a935cedb4..630cafcd3bf 100644 --- a/htdocs/compta/facture/card-rec.php +++ b/htdocs/compta/facture/card-rec.php @@ -650,8 +650,8 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang = GETPOST('lang_id','aZ09'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang = GETPOST('lang_id','aZ09'); + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang = $object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -857,9 +857,9 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','aZ09')) + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang = GETPOST('lang_id','aZ09'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang = $object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("", $conf); @@ -990,8 +990,8 @@ if ($action == 'create') { $substitutionarray['__INVOICE_YEAR__'] = $langs->trans("YearOfInvoice").' ('.$langs->trans("Example").': '.dol_print_date($object->date, '%Y').')'; $substitutionarray['__INVOICE_NEXT_YEAR__'] = $langs->trans("NextYearOfInvoice").' ('.$langs->trans("Example").': '.dol_print_date(dol_time_plus_duree($object->date, 1, 'y'), '%Y').')'; // Only on template invoices - $substitutionarray['__INVOICE_DATE_NEXT_INVOICE_BEFORE_GEN__'] = $langs->trans("DateNextInvoiceBeforeGen").' ('.$langs->trans("Example").': '.dol_print_date($object->date_when, 'dayhour').')'; - $substitutionarray['__INVOICE_DATE_NEXT_INVOICE_AFTER_GEN__'] = $langs->trans("DateNextInvoiceAfterGen").' ('.$langs->trans("Example").': '.dol_print_date(dol_time_plus_duree($object->date_when, $object->frequency, $object->unit_frequency), 'dayhour').')'; + $substitutionarray['__INVOICE_DATE_NEXT_INVOICE_BEFORE_GEN__'] = $langs->trans("DateNextInvoiceBeforeGen").' ('.$langs->trans("Example").': '.dol_print_date(dol_time_plus_duree($object->date, 1, 'm'), 'dayhour').')'; + $substitutionarray['__INVOICE_DATE_NEXT_INVOICE_AFTER_GEN__'] = $langs->trans("DateNextInvoiceAfterGen").' ('.$langs->trans("Example").': '.dol_print_date(dol_time_plus_duree($object->date, 2, 'm'), 'dayhour').')'; $substitutionarray['__INVOICE_COUNTER_CURRENT__'] = $langs->trans("Count"); $substitutionarray['__INVOICE_COUNTER_MAX__'] = $langs->trans("MaxPeriodNumber"); diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php index a886f8a49c8..6ad9c545dee 100644 --- a/htdocs/compta/facture/card.php +++ b/htdocs/compta/facture/card.php @@ -128,11 +128,11 @@ if ($id > 0 || !empty($ref)) { // Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context $hookmanager->initHooks(array('invoicecard', 'globalcard')); -$usercanread = $user->rights->facture->lire; -$usercancreate = $user->rights->facture->creer; -$usercanissuepayment = $user->rights->facture->paiement; -$usercandelete = $user->rights->facture->supprimer; -$usercancreatecontract = $user->rights->contrat->creer; +$usercanread = $user->hasRight("facture", "lire"); +$usercancreate = $user->hasRight("facture", "creer"); +$usercanissuepayment = $user->hasRight("facture", "paiement"); +$usercandelete = $user->hasRight("facture", "supprimer"); +$usercancreatecontract = $user->hasRight("contrat", "creer"); $usercanvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->validate))); $usercansend = (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->send))); $usercanreopen = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && $usercancreate) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->reopen))); @@ -141,7 +141,7 @@ if (!empty($conf->global->INVOICE_DISALLOW_REOPEN)) { } $usercanunvalidate = ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($usercancreate)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && !empty($user->rights->facture->invoice_advance->unvalidate))); -$usercanproductignorepricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); +$usermustrespectpricemin = ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->produit->ignore_price_min_advance)) || empty($conf->global->MAIN_USE_ADVANCED_PERMS)); $usercancreatemargin = (!empty($user->rights->margins->creer) ? $user->rights->margins->creer : 0); $usercanreadallmargin = (!empty($user->rights->margins->liretous) ? $user->rights->margins->liretous : 0); $usercancreatewithdrarequest = (!empty($user->rights->prelevement->bons->creer) ? $user->rights->prelevement->bons->creer : 0); @@ -272,10 +272,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id')) { $newlang = GETPOST('lang_id'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -520,10 +520,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -604,10 +604,10 @@ if (empty($reshook)) { if (empty($error) && empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -659,10 +659,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -749,10 +749,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1956,10 +1956,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE) && count($object->lines)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -2010,6 +2010,9 @@ if (empty($reshook)) { $product_desc =(GETPOSTISSET('dp_desc') ? GETPOST('dp_desc', 'restricthtml') : ''); $price_ht = price2num(GETPOST('price_ht'), 'MU', 2); $price_ht_devise = price2num(GETPOST('multicurrency_price_ht'), 'CU', 2); + $price_ttc = price2num(GETPOST('price_ttc'), 'MU', 2); + $price_ttc_devise = price2num(GETPOST('multicurrency_price_ttc'), 'CU', 2); + $prod_entry_mode = GETPOST('prod_entry_mode', 'alpha'); if ($prod_entry_mode == 'free') { $idprod = 0; @@ -2126,6 +2129,7 @@ if (empty($reshook)) { $pu_ht = $datapriceofproduct['pu_ht']; $pu_ttc = $datapriceofproduct['pu_ttc']; $price_min = $datapriceofproduct['price_min']; + $price_min_ttc = $datapriceofproduct['price_min_ttc']; $price_base_type = $datapriceofproduct['price_base_type']; $tva_tx = $datapriceofproduct['tva_tx']; $tva_npr = $datapriceofproduct['tva_npr']; @@ -2238,6 +2242,7 @@ if (empty($reshook)) { $type = GETPOST('type'); $fk_unit = GETPOST('units', 'alpha'); $pu_ht_devise = price2num($price_ht_devise, 'MU'); + $pu_ttc_devise = price2num($price_ttc_devise, 'MU'); } // Margin @@ -2256,6 +2261,7 @@ if (empty($reshook)) { $price2num_pu_ht = price2num($pu_ht); $price2num_remise_percent = price2num($remise_percent); $price2num_price_min = price2num($price_min); + $price2num_price_min_ttc = price2num($price_min_ttc); if (empty($price2num_pu_ht)) { $price2num_pu_ht = 0; } @@ -2265,11 +2271,24 @@ if (empty($reshook)) { if (empty($price2num_price_min)) { $price2num_price_min = 0; } + if (empty($price2num_price_min_ttc)) { + $price2num_price_min_ttc = 0; + } - if ($usercanproductignorepricemin && (!empty($price_min) && ($price2num_pu_ht * (1 - $price2num_remise_percent / 100) < $price2num_price_min))) { - $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)); - setEventMessages($mesg, null, 'errors'); - } else { + // Check price is not lower than minimum (check is done only for standard or replacement invoices) + if ($usermustrespectpricemin && ($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT)) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + } + } + + if (!$error) { // Add batchinfo if the detail_batch array is defined if (!empty($conf->productbatch->enabled) && !empty($lines[$i]->detail_batch) && is_array($lines[$i]->detail_batch) && !empty($conf->global->INVOICE_INCUDE_DETAILS_OF_LOTS_SERIALS)) { $langs->load('productbatch'); @@ -2286,10 +2305,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -2360,10 +2379,14 @@ if (empty($reshook)) { $date_start = dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), GETPOST('date_startsec'), GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear')); $date_end = dol_mktime(GETPOST('date_endhour'), GETPOST('date_endmin'), GETPOST('date_endsec'), GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear')); $description = dol_htmlcleanlastbr(GETPOST('product_desc', 'restricthtml') ? GETPOST('product_desc', 'restricthtml') : GETPOST('desc', 'restricthtml')); - $pu_ht = price2num(GETPOST('price_ht'), '', 2); $vat_rate = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0); - $qty = GETPOST('qty'); + $vat_rate = str_replace('*', '', $vat_rate); + $pu_ht = price2num(GETPOST('price_ht'), '', 2); + $pu_ttc = price2num(GETPOST('price_ttc'), '', 2); $pu_ht_devise = price2num(GETPOST('multicurrency_subprice'), '', 2); + //$pu_ttc_devise = price2num(GETPOST('multicurrency_subprice_ttc'), '', 2); + + $qty = GETPOST('qty'); // Define info_bits $info_bits = 0; @@ -2434,15 +2457,28 @@ if (empty($reshook)) { $price_min = $product->price_min; if ((!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) && !empty($object->thirdparty->price_level)) { - $price_min = $product->multiprices_min [$object->thirdparty->price_level]; + $price_min = $product->multiprices_min[$object->thirdparty->price_level]; + } + $price_min_ttc = $product->price_min_ttc; + if ((!empty($conf->global->PRODUIT_MULTIPRICES) || !empty($conf->global->PRODUIT_CUSTOMER_PRICES_BY_QTY_MULTIPRICES)) && !empty($object->thirdparty->price_level)) { + $price_min_ttc = $product->multiprices_min_ttc[$object->thirdparty->price_level]; } $label = ((GETPOST('update_label') && GETPOST('product_label')) ? GETPOST('product_label') : ''); // Check price is not lower than minimum (check is done only for standard or replacement invoices) - if ($usercanproductignorepricemin && (($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT) && $price_min && (price2num($pu_ht) * (1 - $remise_percent / 100) < price2num($price_min)))) { - setEventMessages($langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, - 1, $conf->currency)), null, 'errors'); - $error++; + if ($usermustrespectpricemin && ($object->type == Facture::TYPE_STANDARD || $object->type == Facture::TYPE_REPLACEMENT)) { + if ($pu_ht && $price_min && ((price2num($pu_ht) * (1 - $remise_percent / 100)) < price2num($price_min))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } elseif ($pu_ttc && $price_min_ttc && ((price2num($pu_ttc) * (1 - $remise_percent / 100)) < price2num($price_min_ttc))) { + $mesg = $langs->trans("CantBeLessThanMinPrice", price(price2num($price_min_ttc, 'MU'), 0, $langs, 0, 0, -1, $conf->currency)); + setEventMessages($mesg, null, 'errors'); + $error++; + $action = 'editline'; + } } } else { $type = GETPOST('type'); @@ -2519,10 +2555,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -2880,8 +2916,10 @@ if (!empty($conf->project->enabled)) { $now = dol_now(); -$title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('Card'); - +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewBill"); +} $help_url = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $help_url); @@ -3650,7 +3688,7 @@ if ($action == 'create') { print '
'.$langs->trans('BankAccount').''; print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print $form->select_comptes(($fk_account < 0 ? '' : $fk_account), 'fk_account', 0, '', 1, '', 0, 'maxwidth200 widthcentpercentminusx', 1); @@ -3783,7 +3821,7 @@ if ($action == 'create') { // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva $objectsrc->remise_absolue = $remise_absolue; $objectsrc->remise_percent = $remise_percent; - $objectsrc->update_price(1, - 1, 1); + $objectsrc->update_price(1, 'auto', 1); } print "\n\n"; @@ -4182,7 +4220,7 @@ if ($action == 'create') { // Cree un tableau formulaire $formquestion = array('text' => $langs->trans("ConfirmClassifyPaidPartiallyQuestion"), array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"), 'values' => $arrayreasons), array('type' => 'text', 'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'morecss' => 'minwidth300')); // Paiement incomplet. On demande si motif = escompte ou autre - $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidPartially', $object->ref), 'confirm_paid_partially', $formquestion, "yes", 1, 310); + $formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?facid='.$object->id, $langs->trans('ClassifyPaid'), $langs->trans('ConfirmClassifyPaidPartially', $object->ref), 'confirm_paid_partially', $formquestion, "yes", 1, 340, 600); } // Confirmation du classement abandonne @@ -4213,7 +4251,7 @@ if ($action == 'create') { // Cree un tableau formulaire $formquestion = array('text' => $langs->trans("ConfirmCancelBillQuestion"), array('type' => 'radio', 'name' => 'close_code', 'label' => $langs->trans("Reason"), 'values' => $arrayreasons), array('type' => 'text', 'name' => 'close_note', 'label' => $langs->trans("Comment"), 'value' => '', 'morecss' => 'minwidth300')); - $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('CancelBill'), $langs->trans('ConfirmCancelBill', $object->ref), 'confirm_canceled', $formquestion, "yes", 1, 250); + $formconfirm = $form->formconfirm($_SERVER['PHP_SELF'].'?facid='.$object->id, $langs->trans('CancelBill'), $langs->trans('ConfirmCancelBill', $object->ref), 'confirm_canceled', $formquestion, "yes", 1, 270); } } @@ -4550,7 +4588,7 @@ if ($action == 'create') { } // Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print '
'; print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4859,7 +4897,7 @@ if ($action == 'create') { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4879,7 +4917,7 @@ if ($action == 'create') { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4902,7 +4940,7 @@ if ($action == 'create') { $i++; } print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4934,7 +4972,7 @@ if ($action == 'create') { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4948,7 +4986,7 @@ if ($action == 'create') { print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -4975,7 +5013,7 @@ if ($action == 'create') { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -5024,7 +5062,7 @@ if ($action == 'create') { print ''; $label = ($langs->trans("PaymentType".$objp->payment_code) != ("PaymentType".$objp->payment_code)) ? $langs->trans("PaymentType".$objp->payment_code) : $objp->payment_label; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; @@ -5105,7 +5143,7 @@ if ($action == 'create') { print ''; print ''; print ''; $i++; if ($invoice->type == Facture::TYPE_CREDIT_NOTE) { @@ -5190,7 +5228,9 @@ if ($action == 'create') { } print ''; print ''; - print ''; + print ''; } // Retained warranty : usualy use on construction industry @@ -5522,9 +5562,9 @@ if ($action == 'create') { ) { print ''.$langs->trans('ConvertToReduc').''; } - // For deposit invoice + // For down payment invoice (deposit) if ($object->type == Facture::TYPE_DEPOSIT && $usercancreate && $object->statut > Facture::STATUS_DRAFT && empty($discount->id)) { - if (price2num($object->total_ttc, 'MT') == price2num($sumofpaymentall, 'MT')) { + if (price2num($object->total_ttc, 'MT') == price2num($sumofpaymentall, 'MT') || ($object->type == Facture::STATUS_ABANDONED && in_array($object->close_code, array('bankcharge', 'discount_vat', 'other')))) { // We can close a down payment only if paid amount is same than amount of down payment (by definition) print ''.$langs->trans('ConvertToReduc').''; } else { diff --git a/htdocs/compta/facture/class/api_invoices.class.php b/htdocs/compta/facture/class/api_invoices.class.php index a864168d161..51c094d898e 100644 --- a/htdocs/compta/facture/class/api_invoices.class.php +++ b/htdocs/compta/facture/class/api_invoices.class.php @@ -668,6 +668,8 @@ class Invoices extends DolibarrApi $result = $this->invoice->delete(DolibarrApiAccess::$user); if ($result < 0) { throw new RestException(500, 'Error when deleting invoice'); + } elseif ($result == 0) { + throw new RestException(403, 'Invoice not erasable'); } return array( @@ -1408,7 +1410,7 @@ class Invoices extends DolibarrApi throw new RestException(403, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if (empty($accountid)) { throw new RestException(400, 'Account ID is mandatory'); } @@ -1467,7 +1469,7 @@ class Invoices extends DolibarrApi throw new RestException(400, 'Payment error : '.$paymentobj->error); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $label = '(CustomerInvoicePayment)'; if ($paymentobj->paiementcode == 'CHQ' && empty($chqemetteur)) { @@ -1531,7 +1533,7 @@ class Invoices extends DolibarrApi } } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if (empty($accountid)) { throw new RestException(400, 'Account ID is mandatory'); } @@ -1615,7 +1617,7 @@ class Invoices extends DolibarrApi $this->db->rollback(); throw new RestException(400, 'Payment error : '.$paymentobj->error); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $label = '(CustomerInvoicePayment)'; if ($paymentobj->paiementcode == 'CHQ' && empty($chqemetteur)) { throw new RestException(400, 'Emetteur is mandatory when payment code is '.$paymentobj->paiementcode); diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 59564612cc2..0d2840adb97 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -167,7 +167,7 @@ class Facture extends CommonInvoice public $revenuestamp; /** - * ! Closing after partial payment: discount_vat, badsupplier, abandon + * ! Closing after partial payment: discount_vat, badcustomer or badsupplier, bankcharge, other * ! Closing when no payment: replaced, abandoned * @var string Close code */ @@ -424,7 +424,10 @@ class Facture extends CommonInvoice const STATUS_ABANDONED = 3; const CLOSECODE_DISCOUNTVAT = 'discount_vat'; // Abandonned remain - escompte - const CLOSECODE_BADDEBT = 'badcustomer'; // Abandonned - bad + const CLOSECODE_BADDEBT = 'badcustomer'; // Abandonned remain - bad customer + const CLOSECODE_BANKCHARGE = 'bankcharge'; // Abandonned remain - bank charge + const CLOSECODE_OTHER = 'other'; // Abandonned remain - other + const CLOSECODE_ABANDONED = 'abandon'; // Abandonned - other const CLOSECODE_REPLACED = 'replaced'; // Closed after doing a replacement invoice @@ -595,10 +598,10 @@ class Facture extends CommonInvoice $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($this->thirdparty->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($this->thirdparty->default_lang)) { $newlang = $this->thirdparty->default_lang; // for proposal, order, invoice, ... } - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($this->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($this->default_lang)) { $newlang = $this->default_lang; // for thirdparty } if (!empty($newlang)) { @@ -3137,6 +3140,7 @@ class Facture extends CommonInvoice } else { $num = $this->ref; } + $this->newref = dol_sanitizeFileName($num); if ($num) { @@ -3144,7 +3148,7 @@ class Facture extends CommonInvoice // Validate $sql = 'UPDATE '.MAIN_DB_PREFIX.'facture'; - $sql .= " SET ref='".$num."', fk_statut = ".self::STATUS_VALIDATED.", fk_user_valid = ".($user->id > 0 ? $user->id : "null").", date_valid = '".$this->db->idate($now)."'"; + $sql .= " SET ref = '".$this->db->escape($num)."', fk_statut = ".self::STATUS_VALIDATED.", fk_user_valid = ".($user->id > 0 ? $user->id : "null").", date_valid = '".$this->db->idate($now)."'"; if (!empty($conf->global->FAC_FORCE_DATE_VALIDATION)) { // If option enabled, we force invoice date $sql .= ", datef='".$this->db->idate($this->date)."'"; $sql .= ", date_lim_reglement='".$this->db->idate($this->date_lim_reglement)."'"; @@ -3278,6 +3282,25 @@ class Facture extends CommonInvoice } } + /* + * Set situation_final to 0 if is a credit note and the invoice source is a invoice situation (case when invoice situation is at 100%) + * So we can continue to create new invoice situation + */ + if (!$error && $this->type == self::TYPE_CREDIT_NOTE && $this->fk_facture_source > 0) { + $invoice_situation = new Facture($this->db); + $result = $invoice_situation->fetch($this->fk_facture_source); + if ($result > 0 && $invoice_situation->type == self::TYPE_SITUATION && $invoice_situation->situation_final == 1) { + $invoice_situation->situation_final = 0; + // Disable triggers because module can force situation_final to 1 by triggers (ex: SubTotal) + $result = $invoice_situation->setFinal($user, 1); + } + if ($result < 0) { + $this->error = $invoice_situation->error; + $this->errors = $invoice_situation->errors; + $error++; + } + } + // Trigger calls if (!$error && !$notrigger) { // Call trigger @@ -3816,6 +3839,7 @@ class Facture extends CommonInvoice return -2; } } else { + $this->errors[]='status of invoice must be Draft to allow use of ->addline()'; dol_syslog(get_class($this)."::addline status of invoice must be Draft to allow use of ->addline()", LOG_ERR); return -3; } @@ -4380,7 +4404,6 @@ class Facture extends CommonInvoice $mybool = false; - $file = $addon.'.php'; $classname = $addon; @@ -4418,8 +4441,10 @@ class Facture extends CommonInvoice } $obj = new $classname(); + $numref = $obj->getNextValue($soc, $this, $mode); + /** * $numref can be empty in case we ask for the last value because if there is no invoice created with the * set up mask. @@ -5446,14 +5471,13 @@ class Facture extends CommonInvoice dol_syslog(__METHOD__, LOG_DEBUG); - $this->db->begin(); - // Select all action comm reminder $sql = "SELECT rowid as id FROM ".MAIN_DB_PREFIX."facture as f"; if (!empty($paymentmode) && $paymentmode != 'all') { $sql .= ", ".MAIN_DB_PREFIX."c_paiement as cp"; } $sql .= " WHERE f.paye = 0"; + $sql .= " AND f.fk_statut = ".self::STATUS_VALIDATED; $sql .= " AND f.date_lim_reglement = '".$this->db->idate($tmpidate, 'gmt')."'"; $sql .= " AND f.entity IN (".getEntity('facture').")"; if (!empty($paymentmode) && $paymentmode != 'all') { @@ -5535,20 +5559,95 @@ class Facture extends CommonInvoice } if (!$error && $to) { + $this->db->begin(); + // Errors Recipient $errors_to = $conf->global->MAIN_MAIL_ERRORS_TO; $trackid = 'inv'.$tmpinvoice->id; + $sendcontext = 'standard'; + // Mail Creation - $cMailFile = new CMailFile($sendTopic, $to, $from, $sendContent, array(), array(), array(), '', "", 0, 1, $errors_to, '', $trackid, '', '', ''); + $cMailFile = new CMailFile($sendTopic, $to, $from, $sendContent, array(), array(), array(), '', "", 0, 1, $errors_to, '', $trackid, '', $sendcontext, ''); // Sending Mail if ($cMailFile->sendfile()) { $nbMailSend++; + + // Add a line into event table + require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; + + // Insert record of emails sent + $actioncomm = new ActionComm($this->db); + + $actioncomm->type_code = 'AC_OTH_AUTO'; // Event insert into agenda automatically + $actioncomm->socid = $tmpinvoice->thirdparty->id; // To link to a company + $actioncomm->contact_id = 0; + + $actioncomm->code = 'AC_EMAIL'; + $actioncomm->label = 'sendEmailsRemindersOnInvoiceDueDateOK'; + $actioncomm->note_private = $sendContent; + $actioncomm->fk_project = $tmpinvoice->fk_project; + $actioncomm->datep = dol_now(); + $actioncomm->datef = $actioncomm->datep; + $actioncomm->percentage = -1; // Not applicable + $actioncomm->authorid = $user->id; // User saving action + $actioncomm->userownerid = $user->id; // Owner of action + // Fields when action is an email (content should be added into note) + $actioncomm->email_msgid = $cMailFile->msgid; + $actioncomm->email_from = $from; + $actioncomm->email_sender = ''; + $actioncomm->email_to = $to; + //$actioncomm->email_tocc = $sendtocc; + //$actioncomm->email_tobcc = $sendtobcc; + //$actioncomm->email_subject = $subject; + $actioncomm->errors_to = $errors_to; + + $actioncomm->elementtype = 'invoice'; + $actioncomm->fk_element = $tmpinvoice->id; + + //$actioncomm->extraparams = $extraparams; + + $actioncomm->create($user); } else { $errormesg = $cMailFile->error.' : '.$to; $error++; + + // Add a line into event table + require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; + + // Insert record of emails sent + $actioncomm = new ActionComm($this->db); + + $actioncomm->type_code = 'AC_OTH_AUTO'; // Event insert into agenda automatically + $actioncomm->socid = $tmpinvoice->thirdparty->id; // To link to a company + $actioncomm->contact_id = 0; + + $actioncomm->code = 'AC_EMAIL'; + $actioncomm->label = 'sendEmailsRemindersOnInvoiceDueDateKO'; + $actioncomm->note_private = $errormesg; + $actioncomm->fk_project = $tmpinvoice->fk_project; + $actioncomm->datep = dol_now(); + $actioncomm->datef = $actioncomm->datep; + $actioncomm->percentage = -1; // Not applicable + $actioncomm->authorid = $user->id; // User saving action + $actioncomm->userownerid = $user->id; // Owner of action + // Fields when action is an email (content should be added into note) + $actioncomm->email_msgid = $cMailFile->msgid; + $actioncomm->email_from = $from; + $actioncomm->email_sender = ''; + $actioncomm->email_to = $to; + //$actioncomm->email_tocc = $sendtocc; + //$actioncomm->email_tobcc = $sendtobcc; + //$actioncomm->email_subject = $subject; + $actioncomm->errors_to = $errors_to; + + //$actioncomm->extraparams = $extraparams; + + $actioncomm->create($user); } + + $this->db->commit(); // We always commit } if ($errormesg) { @@ -5566,10 +5665,8 @@ class Facture extends CommonInvoice if (!$error) { $this->output .= 'Nb of emails sent : '.$nbMailSend; - $this->db->commit(); return 0; } else { - $this->db->commit(); // We commit also on error, to have the error message recorded. $this->error = 'Nb of emails sent : '.$nbMailSend.', '.(!empty($errorsMsg)) ? join(', ', $errorsMsg) : $error; return $error; } @@ -5577,8 +5674,9 @@ class Facture extends CommonInvoice /** * See if current invoice date is posterior to the last invoice date among validated invoices of same type. + * * @param boolean $allow_validated_drafts return true if the invoice has been validated before returning to DRAFT state. - * @return boolean + * @return array return array */ public function willBeLastOfSameType($allow_validated_drafts = false) { @@ -5602,10 +5700,10 @@ class Facture extends CommonInvoice $is_last_of_same_type = $is_last_of_same_type || (!strpos($this->ref, 'PROV') && $this->status == self::STATUS_DRAFT); } - return [$is_last_of_same_type, $last_date]; + return array($is_last_of_same_type, $last_date); } else { // element is first of type to be validated - return [true]; + return array(true); } } else { dol_print_error($this->db); diff --git a/htdocs/compta/facture/contact.php b/htdocs/compta/facture/contact.php index 1b75d43753e..78d1aaaa1cc 100644 --- a/htdocs/compta/facture/contact.php +++ b/htdocs/compta/facture/contact.php @@ -100,7 +100,7 @@ if ($action == 'addcontact' && $user->rights->facture->creer) { * View */ -$title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('ContactsAddresses'); +$title = $object->ref." - ".$langs->trans('ContactsAddresses'); $helpurl = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $helpurl); diff --git a/htdocs/compta/facture/document.php b/htdocs/compta/facture/document.php index 1685da08a2e..5c57f89f51b 100644 --- a/htdocs/compta/facture/document.php +++ b/htdocs/compta/facture/document.php @@ -100,8 +100,7 @@ if (empty($object->id)) { exit; } -$title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('Documents'); - +$title = $object->ref." - ".$langs->trans('Documents'); $help_url = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $help_url); diff --git a/htdocs/compta/facture/info.php b/htdocs/compta/facture/info.php index 4521c7e5096..ddd74de0211 100644 --- a/htdocs/compta/facture/info.php +++ b/htdocs/compta/facture/info.php @@ -65,7 +65,7 @@ $result = restrictedArea($user, 'facture', $object->id, '', '', 'fk_soc', 'rowid $form = new Form($db); -$title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('Info'); +$title = $object->ref." - ".$langs->trans('Info'); $help_url = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $help_url); diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index e963057f7ef..5442fd1704a 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -363,11 +363,11 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter', $search_datelimit_start = ''; $search_datelimit_end = ''; $search_fac_rec_source_title = ''; - $option = ''; - $filter = ''; $toselect = array(); $search_array_options = array(); $search_categ_cus = 0; + $option = ''; + $socid = 0; } if (empty($reshook)) { @@ -863,9 +863,9 @@ $sql .= empty($hookmanager->resPrint) ? "" : " HAVING 1=1 ".$hookmanager->resPri $nbtotalofrecords = ''; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { /* This old and fast method to get and count full list returns all record so use a high amount of memory. - $result = $db->query($sql); - $nbtotalofrecords = $db->num_rows($result); - */ + $result = $db->query($sql); + $nbtotalofrecords = $db->num_rows($result); + */ /* The fast and low memory method to get and count full list converts the sql into a sql count */ if ($sall || $search_product_category > 0 || $search_user > 0) { $sqlforcount = preg_replace('/^SELECT[a-zA-Z0-9\._\s\(\),=<>\:\-\']+\sFROM/', 'SELECT COUNT(DISTINCT f.rowid) as nbtotalofrecords FROM', $sql); @@ -919,7 +919,7 @@ if ($resql) { llxHeader('', $langs->trans('CustomersInvoices'), 'EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes'); - if ($socid) { + if ($socid > 0) { $soc = new Societe($db); $soc->fetch($socid); if (empty($search_company)) { @@ -1112,10 +1112,10 @@ if ($resql) { $arrayofmassactions['makepayment'] = img_picto('', 'payment', 'class="pictofixedwidth"').$langs->trans("MakePaymentAndClassifyPayed"); } if (!empty($conf->prelevement->enabled) && !empty($user->rights->prelevement->bons->creer)) { - $langs->load("withdrawals"); - $arrayofmassactions['withdrawrequest'] = img_picto('', 'payment', 'class="pictofixedwidth"').$langs->trans("MakeWithdrawRequest"); + $langs->load("withdrawals"); + $arrayofmassactions['withdrawrequest'] = img_picto('', 'payment', 'class="pictofixedwidth"').$langs->trans("MakeWithdrawRequest"); } - if ($user->rights->facture->supprimer) { + if (!empty($user->rights->facture->supprimer)) { if (!empty($conf->global->INVOICE_CAN_REMOVE_DRAFT_ONLY)) { $arrayofmassactions['predeletedraft'] = img_picto('', 'delete', 'class="pictofixedwidth"').$langs->trans("Deletedraft"); } elseif (!empty($conf->global->INVOICE_CAN_ALWAYS_BE_REMOVED)) { // mass deletion never possible on invoices on such situation @@ -1151,8 +1151,9 @@ if ($resql) { print ''; print ''; print ''; + print ''; - print_barre_liste($langs->trans('BillsCustomers').' '.($socid ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bill', 0, $newcardbutton, '', $limit, 0, 0, 1); + print_barre_liste($langs->trans('BillsCustomers').' '.($socid > 0 ? ' '.$soc->name : ''), $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, $massactionbutton, $num, $nbtotalofrecords, 'bill', 0, $newcardbutton, '', $limit, 0, 0, 1); $topicmail = "SendBillRef"; $modelmail = "facture_send"; @@ -1229,7 +1230,7 @@ if ($resql) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; - $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields + $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields // Show the massaction checkboxes only when this page is not opend from the Extended POS if ($massactionbutton && $contextpage != 'poslist') { @@ -1241,6 +1242,15 @@ if ($resql) { // Filters lines print ''; + + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + // Action column + print ''; + } + if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) { print ''; @@ -1300,11 +1310,11 @@ if ($resql) { print ''; + print ''; } // Alias if (!empty($arrayfields['s.name_alias']['checked'])) { @@ -1523,18 +1533,25 @@ if ($resql) { // Status if (!empty($arrayfields['f.fk_statut']['checked'])) { print ''; } // Action column - print ''; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } print "\n"; print ''; + + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + } + if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) { print_liste_field_titre('#', $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder); } @@ -1685,7 +1702,10 @@ if ($resql) { if (!empty($arrayfields['f.fk_statut']['checked'])) { print_liste_field_titre($arrayfields['f.fk_statut']['label'], $_SERVER["PHP_SELF"], "f.fk_statut,f.paye,f.type", "", $param, 'class="right"', $sortfield, $sortorder); } - print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', 'align="center"', $sortfield, $sortorder, 'maxwidthsearch '); + } + print "\n"; $projectstatic = new Project($db); @@ -1744,13 +1764,14 @@ if ($resql) { $facturestatic->note_public = $obj->note_public; $facturestatic->note_private = $obj->note_private; if (!empty($conf->global->INVOICE_USE_SITUATION) && !empty($conf->global->INVOICE_USE_RETAINED_WARRANTY)) { - $facturestatic->retained_warranty = $obj->retained_warranty; - $facturestatic->retained_warranty_date_limit = $obj->retained_warranty_date_limit; - $facturestatic->situation_final = $obj->retained_warranty_date_limit; - $facturestatic->situation_final = $obj->retained_warranty_date_limit; - $facturestatic->situation_cycle_ref = $obj->situation_cycle_ref; - $facturestatic->situation_counter = $obj->situation_counter; + $facturestatic->retained_warranty = $obj->retained_warranty; + $facturestatic->retained_warranty_date_limit = $obj->retained_warranty_date_limit; + $facturestatic->situation_final = $obj->retained_warranty_date_limit; + $facturestatic->situation_final = $obj->retained_warranty_date_limit; + $facturestatic->situation_cycle_ref = $obj->situation_cycle_ref; + $facturestatic->situation_counter = $obj->situation_counter; } + $companystatic->id = $obj->socid; $companystatic->name = $obj->name; $companystatic->name_alias = $obj->alias; @@ -1818,6 +1839,20 @@ if ($resql) { } print '>'; + + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } + // No if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER_IN_LIST)) { print ''; @@ -2050,14 +2085,14 @@ if ($resql) { // Amount HT if (!empty($arrayfields['f.total_ht']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } if (!$i) { $totalarray['pos'][$totalarray['nbfield']] = 'f.total_ht'; } - $totalarray['val']['f.total_ht'] += $obj->total_ht; + $totalarray['val']['f.total_ht'] += $obj->total_ht; } // Amount VAT if (!empty($arrayfields['f.total_tva']['checked'])) { @@ -2225,16 +2260,16 @@ if ($resql) { // Currency rate if (!empty($arrayfields['f.multicurrency_tx']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } } // Amount HT if (!empty($arrayfields['f.multicurrency_total_ht']['checked'])) { - print '\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } @@ -2384,7 +2419,7 @@ if ($resql) { // Status if (!empty($arrayfields['f.fk_statut']['checked'])) { print '"; if (!$i) { $totalarray['nbfield']++; @@ -2392,19 +2427,21 @@ if ($resql) { } // Action column (Show the massaction button only when this page is not opend from the Extended POS) - print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } - print "\n"; $i++; diff --git a/htdocs/compta/facture/note.php b/htdocs/compta/facture/note.php index 5b30d39da12..711921ee08e 100644 --- a/htdocs/compta/facture/note.php +++ b/htdocs/compta/facture/note.php @@ -85,7 +85,7 @@ if (empty($object->id)) { exit; } -$title = $langs->trans('InvoiceCustomer')." - ".$langs->trans('Notes'); +$title = $object->ref." - ".$langs->trans('Notes'); $helpurl = "EN:Customers_Invoices|FR:Factures_Clients|ES:Facturas_a_clientes"; llxHeader('', $title, $helpurl); diff --git a/htdocs/compta/index.php b/htdocs/compta/index.php index e7cb0b1d4b5..55ee99f4cb6 100644 --- a/htdocs/compta/index.php +++ b/htdocs/compta/index.php @@ -102,19 +102,24 @@ print load_fiche_titre($langs->trans("AccountancyTreasuryArea"), '', 'bill'); print '
'; -print getNumberInvoicesPieChart('customers'); -print '
'; +if (isModEnabled('facture')) { + print getNumberInvoicesPieChart('customers'); + print '
'; +} -if (!empty($conf->fournisseur->enabled)) { +if (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) { print getNumberInvoicesPieChart('fourn'); print '
'; } -print getCustomerInvoiceDraftTable($max, $socid); - -if (!empty($conf->fournisseur->enabled)) { +if (isModEnabled('facture')) { + print getCustomerInvoiceDraftTable($max, $socid); print '
'; +} + +if (isModEnabled('fournisseur') || isModEnabled('supplier_invoice')) { print getDraftSupplierTable($max, $socid); + print '
'; } print '
'; @@ -273,7 +278,7 @@ if (isModEnabled('facture') && !empty($user->rights->facture->lire)) { // Last modified supplier invoices -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) { +if ((isModEnabled('fournisseur') && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (isModEnabled('supplier_invoice') && $user->rights->supplier_invoice->lire)) { $langs->load("boxes"); $facstatic = new FactureFournisseur($db); @@ -400,7 +405,7 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU // Latest donations -if (!empty($conf->don->enabled) && !empty($user->rights->don->lire)) { +if (isModEnabled('don') && !empty($user->rights->don->lire)) { include_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; $langs->load("boxes"); @@ -490,7 +495,7 @@ if (!empty($conf->don->enabled) && !empty($user->rights->don->lire)) { /** * Social contributions to pay */ -if (!empty($conf->tax->enabled) && !empty($user->rights->tax->charges->lire)) { +if (isModEnabled('tax') && !empty($user->rights->tax->charges->lire)) { if (!$socid) { $chargestatic = new ChargeSociales($db); @@ -582,7 +587,7 @@ if (!empty($conf->tax->enabled) && !empty($user->rights->tax->charges->lire)) { /* * Customers orders to be billed */ -if (isModEnabled('facture') && !empty($conf->commande->enabled) && $user->rights->commande->lire && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { +if (isModEnabled('facture') && isModEnabled('commande') && $user->rights->commande->lire && empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) { $commandestatic = new Commande($db); $langs->load("orders"); diff --git a/htdocs/compta/localtax/card.php b/htdocs/compta/localtax/card.php index 9bd37eafa36..84f40f5cd19 100644 --- a/htdocs/compta/localtax/card.php +++ b/htdocs/compta/localtax/card.php @@ -174,7 +174,7 @@ if ($action == 'create') { // Amount print '
'; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Type payment print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($object->fk_account > 0) { $bankline = new AccountLine($db); $bankline->fetch($object->fk_bank); diff --git a/htdocs/compta/localtax/class/localtax.class.php b/htdocs/compta/localtax/class/localtax.class.php index 63b4f982316..ed467ec91f4 100644 --- a/htdocs/compta/localtax/class/localtax.class.php +++ b/htdocs/compta/localtax/class/localtax.class.php @@ -467,11 +467,11 @@ class Localtax extends CommonObject $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -4; } - if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) { + if (isModEnabled("banque") && (empty($this->accountid) || $this->accountid <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); return -5; } - if (!empty($conf->banque->enabled) && (empty($this->paymenttype) || $this->paymenttype <= 0)) { + if (isModEnabled("banque") && (empty($this->paymenttype) || $this->paymenttype <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); return -5; } @@ -503,7 +503,7 @@ class Localtax extends CommonObject $this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."localtax"); // TODO devrait s'appeler paiementlocaltax if ($this->id > 0) { $ok = 1; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Insertion dans llx_bank require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; diff --git a/htdocs/compta/paiement.php b/htdocs/compta/paiement.php index aea9f917dab..5aa41f10405 100644 --- a/htdocs/compta/paiement.php +++ b/htdocs/compta/paiement.php @@ -170,7 +170,7 @@ if (empty($reshook)) { $error++; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // If bank module is on, account is required to enter a payment if (GETPOST('accountid') <= 0) { setEventMessages($langs->transnoentities('ErrorFieldRequired', $langs->transnoentities('AccountToCredit')), null, 'errors'); @@ -244,7 +244,7 @@ if (empty($reshook)) { $multicurrency_code[$key] = $tmpinvoice->multicurrency_code; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // If the bank module is active, an account is required to input a payment if (GETPOST('accountid', 'int') <= 0) { setEventMessages($langs->trans('ErrorFieldRequired', $langs->transnoentities('AccountToCredit')), null, 'errors'); @@ -492,7 +492,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie // Bank account print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($facture->type != 2) { print ''; } diff --git a/htdocs/compta/paiement/card.php b/htdocs/compta/paiement/card.php index bd5c114e983..54b1e0e7bcd 100644 --- a/htdocs/compta/paiement/card.php +++ b/htdocs/compta/paiement/card.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/paiement/class/paiement.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -285,7 +285,7 @@ print ''; */ // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->fk_account > 0) { if ($object->type_code == 'CHQ' && $bankline->fk_bordereau > 0) { include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php'; diff --git a/htdocs/compta/paiement/cheque/card.php b/htdocs/compta/paiement/cheque/card.php index 8c859e6e689..5409d3c381e 100644 --- a/htdocs/compta/paiement/cheque/card.php +++ b/htdocs/compta/paiement/cheque/card.php @@ -59,8 +59,15 @@ $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $offset = $limit * $page; $upload_dir = $conf->bank->multidir_output[$object->entity ? $object->entity : $conf->entity]."/checkdeposits"; - -$filterdate = dol_mktime(0, 0, 0, GETPOST('fdmonth'), GETPOST('fdday'), GETPOST('fdyear')); +// filter by dates from / to +$search_date_start_day = GETPOST('search_date_start_day', 'int'); +$search_date_start_month = GETPOST('search_date_start_month', 'int'); +$search_date_start_year = GETPOST('search_date_start_year', 'int'); +$search_date_end_day = GETPOST('search_date_end_day', 'int'); +$search_date_end_month = GETPOST('search_date_end_month', 'int'); +$search_date_end_year = GETPOST('search_date_end_year', 'int'); +$search_date_start = dol_mktime(0, 0, 0, $search_date_start_month, $search_date_start_day, $search_date_start_year); +$search_date_end = dol_mktime(23, 59, 59, $search_date_end_month, $search_date_end_day, $search_date_end_year); $filteraccountid = GETPOST('accountid', 'int'); // Security check @@ -131,10 +138,10 @@ if ($action == 'create' && GETPOST("accountid", "int") > 0 && $user->rights->ban // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - //if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + //if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang=$object->client->default_lang; if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -182,10 +189,10 @@ if ($action == 'confirm_validate' && $confirm == 'yes' && $user->rights->banque- // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - //if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + //if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang=$object->client->default_lang; if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -224,10 +231,10 @@ if ($action == 'builddoc' && $user->rights->banque->cheque) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - //if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->client->default_lang; + //if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang=$object->client->default_lang; if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -265,7 +272,15 @@ if ($action == 'builddoc' && $user->rights->banque->cheque) { */ if (GETPOST('removefilter')) { - $filterdate = ''; + // filter by dates from / to + $search_date_start_day = ''; + $search_date_start_month = ''; + $search_date_start_year = ''; + $search_date_end_day = ''; + $search_date_end_month = ''; + $search_date_end_year = ''; + $search_date_start = ''; + $search_date_end = ''; $filteraccountid = 0; } @@ -352,7 +367,13 @@ if ($action == 'new') { //print ''; // Filter print ''; print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/compta/payment_vat/card.php b/htdocs/compta/payment_vat/card.php index 94dd817900e..401752af11b 100644 --- a/htdocs/compta/payment_vat/card.php +++ b/htdocs/compta/payment_vat/card.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/tva.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/tva/class/paymentvat.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -194,7 +194,7 @@ print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/compta/prelevement/list.php b/htdocs/compta/prelevement/list.php index ae92286dfec..d9cb6f6fb7d 100644 --- a/htdocs/compta/prelevement/list.php +++ b/htdocs/compta/prelevement/list.php @@ -1,8 +1,9 @@ - * Copyright (C) 2005-2016 Laurent Destailleur - * Copyright (C) 2005-2009 Regis Houssin - * Copyright (C) 2010-2018 Juanjo Menent +/* Copyright (C) 2005 Rodolphe Quiedeville + * Copyright (C) 2005-2016 Laurent Destailleur + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2010-2018 Juanjo Menent + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -108,7 +109,7 @@ llxHeader('', $langs->trans("WithdrawalsLines")); $sql = "SELECT p.rowid, p.ref, p.statut as status, p.datec"; $sql .= " , f.rowid as facid, f.ref as invoiceref, f.total_ttc"; -$sql .= " , s.rowid as socid, s.nom as name, s.code_client, s.email"; +$sql .= " , s.rowid as socid, s.nom as name, s.code_client, s.code_fournisseur, s.email"; $sql .= " , pl.amount, pl.statut as statut_ligne, pl.rowid as rowid_ligne"; $sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $sql .= " , ".MAIN_DB_PREFIX."prelevement_lignes as pl"; @@ -139,7 +140,7 @@ if ($search_bon) { } if ($type == 'bank-transfer') { if ($search_code) { - $sql .= natural_search("s.code_fourn", $search_code); + $sql .= natural_search("s.code_fournisseur", $search_code); } } else { if ($search_code) { @@ -172,6 +173,9 @@ if ($result) { $param = "&statut=".urlencode($statut); $param .= "&search_bon=".urlencode($search_bon); + if ($type == 'bank-transfer') { + $param .= '&type=bank-transfer'; + } if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.urlencode($limit); } @@ -204,7 +208,7 @@ if ($result) { print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; $columntitle = "WithdrawalsReceipts"; + $columntitlethirdparty = "CustomerCode"; + $columncodethirdparty = "s.code_client"; if ($type == 'bank-transfer') { $columntitle = "BankTransferReceipts"; + $columntitlethirdparty = "SupplierCode"; + $columncodethirdparty = "s.code_fournisseur"; } print ''; @@ -223,7 +231,7 @@ if ($result) { print_liste_field_titre("Line", $_SERVER["PHP_SELF"], '', '', $param, '', $sortfield, $sortorder); print_liste_field_titre("Bill", $_SERVER["PHP_SELF"], "f.ref", '', $param, '', $sortfield, $sortorder); print_liste_field_titre("Company", $_SERVER["PHP_SELF"], "s.nom", '', $param, '', $sortfield, $sortorder); - print_liste_field_titre("CustomerCode", $_SERVER["PHP_SELF"], "s.code_client", '', $param, '', $sortfield, $sortorder, 'center '); + print_liste_field_titre($columntitlethirdparty, $_SERVER["PHP_SELF"], $columncodethirdparty, '', $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("Date", $_SERVER["PHP_SELF"], "p.datec", "", $param, '', $sortfield, $sortorder, 'center '); print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "pl.amount", "", $param, '', $sortfield, $sortorder, 'right '); print_liste_field_titre(''); @@ -256,9 +264,17 @@ if ($result) { print ''; print '\n"; + $link_to_bill = '/compta/facture/card.php?facid='; + $link_title = 'Invoice'; + $link_picto = 'bill'; + if ($type == 'bank-transfer') { + $link_to_bill = '/fourn/facture/card.php?facid='; + $link_title = 'SupplierInvoice'; + $link_picto = 'supplier_invoice'; + } + print ''; + print img_object($langs->trans($link_title), $link_picto); + print ' '.$obj->invoiceref."\n"; print ''; print ''; @@ -266,7 +282,15 @@ if ($result) { print $company->getNomUrl(1); print "\n"; - print '\n"; + + print '\n"; print '\n"; diff --git a/htdocs/compta/prelevement/orders_list.php b/htdocs/compta/prelevement/orders_list.php index c80acb39f8e..ee370b9532e 100644 --- a/htdocs/compta/prelevement/orders_list.php +++ b/htdocs/compta/prelevement/orders_list.php @@ -132,6 +132,9 @@ if ($result) { if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); } + if ($type == 'bank-transfer') { + $param .= '&type=bank-transfer'; + } if ($limit > 0 && $limit != $conf->liste_limit) { $param .= '&limit='.urlencode($limit); } diff --git a/htdocs/compta/resultat/clientfourn.php b/htdocs/compta/resultat/clientfourn.php index 30d4f4ce825..dc4a2acfda7 100644 --- a/htdocs/compta/resultat/clientfourn.php +++ b/htdocs/compta/resultat/clientfourn.php @@ -69,12 +69,12 @@ if (!$sortorder) { // Date range $year = GETPOST('year', 'int'); if (empty($year)) { - $year_current = strftime("%Y", dol_now()); - $month_current = strftime("%m", dol_now()); + $year_current = dol_print_date(dol_now(), "%Y"); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year_current; } else { $year_current = $year; - $month_current = strftime("%m", dol_now()); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year; } $date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear); @@ -250,6 +250,7 @@ if ($date_endyear) { print '
'; print $langs->trans('BankAccount'); @@ -4806,7 +4844,7 @@ if ($action == 'create') { if (!empty($conf->project->enabled)) { $nbrows++; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbrows++; $nbcols++; } @@ -4835,7 +4873,7 @@ if ($action == 'create') { print ''.$langs->trans('ListOfSituationInvoices').''.$langs->trans('Situation').''.$langs->trans('AmountHT').''.$prev_invoice->getNomUrl(1).''.(($prev_invoice->type == Facture::TYPE_CREDIT_NOTE) ? $langs->trans('situationInvoiceShortcode_AS') : $langs->trans('situationInvoiceShortcode_S')).$prev_invoice->situation_counter.''.price($prev_invoice->total_ht).''.$object->getNomUrl(1).''.(($object->type == Facture::TYPE_CREDIT_NOTE) ? $langs->trans('situationInvoiceShortcode_AS') : $langs->trans('situationInvoiceShortcode_S')).$object->situation_counter.''.price($object->total_ht).''.price($total_global_ht).''.$next_invoice->getNomUrl(1).''.(($next_invoice->type == Facture::TYPE_CREDIT_NOTE) ? $langs->trans('situationInvoiceShortcode_AS') : $langs->trans('situationInvoiceShortcode_S')).$next_invoice->situation_counter.''.price($next_invoice->total_ht).'
'.price($total_global_ht).''.($object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')).''.$langs->trans('Date').''.$langs->trans('Type').''.$langs->trans('BankAccount').''.$langs->trans('Amount').''.$label.' '.$objp->num_payment.''.price($obj->amount_ttc).''; - print 'rowid.'">'.img_delete().''; + print 'rowid.'">'.img_delete().''; print '
'.(!empty($object->multicurrency_code) ? $object->multicurrency_code : $conf->currency).' '.price(price2num($object->multicurrency_tx*$resteapayeraffiche, 'MT')).' 
'; + //print (empty($object->multicurrency_code) ? $conf->currency : $object->multicurrency_code).' '; + print price(price2num($object->multicurrency_tx*$resteapayeraffiche, 'MT'), 1, $langs, 1, -1, -1, (empty($object->multicurrency_code) ? $conf->currency : $object->multicurrency_code)).' 
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; print ''; print '
'; /* - print $langs->trans('From').' '; - print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1, 'search_datelimit_start', 0, 0, 1); - print '
'; - print '
'; - print $langs->trans('to').' ';*/ + print $langs->trans('From').' '; + print $form->selectDate($search_datelimit_start ? $search_datelimit_start : -1, 'search_datelimit_start', 0, 0, 1); + print '
'; + print '
'; + print $langs->trans('to').' ';*/ print $form->selectDate($search_datelimit_end ? $search_datelimit_end : -1, 'search_datelimit_end', 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans("Before")); print '
'.$langs->trans("Alert"); print '
'; @@ -1320,7 +1330,7 @@ if ($resql) { } // Thirdparty if (!empty($arrayfields['s.nom']['checked'])) { - print '
0 ? " disabled" : "").'>'; - $liststatus = array('0'=>$langs->trans("BillShortStatusDraft"), '1'=>$langs->trans("BillShortStatusNotPaid"), '0,1'=>$langs->trans("BillShortStatusDraft").'+'.$langs->trans("BillShortStatusNotPaid"), '2'=>$langs->trans("BillShortStatusPaid"), '1,2'=>$langs->trans("BillShortStatusNotPaid").'+'.$langs->trans("BillShortStatusPaid"), '3'=>$langs->trans("BillShortStatusCanceled")); + $liststatus = array('0'=>$langs->trans("BillShortStatusDraft"), '0,1'=>$langs->trans("BillShortStatusDraft").'+'.$langs->trans("BillShortStatusNotPaid"), '1'=>$langs->trans("BillShortStatusNotPaid"), '1,2'=>$langs->trans("BillShortStatusNotPaid").'+'.$langs->trans("BillShortStatusPaid"), '2'=>$langs->trans("BillShortStatusPaid"), '3'=>$langs->trans("BillShortStatusCanceled")); print $form->selectarray('search_status', $liststatus, $search_status, 1, 0, 0, '', 0, 0, 0, '', '', 1); print ''; - $searchpicto = $form->showFilterButtons(); - print $searchpicto; - print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; + if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''.(($offset * $limit) + $i).''.price($obj->total_ht)."'.price($obj->total_ht)."'; - $form->form_multicurrency_rate($_SERVER['PHP_SELF'].'?id='.$obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code); - print "'; + $form->form_multicurrency_rate($_SERVER['PHP_SELF'].'?id='.$obj->rowid, $obj->multicurrency_tx, 'none', $obj->multicurrency_code); + print "'.price($obj->multicurrency_total_ht)."'.price($obj->multicurrency_total_ht)."'; - print $facturestatic->LibStatut($obj->paye, $obj->fk_statut, 5, $paiement, $obj->type); + print $facturestatic->getLibStatut(5, $paiement); print "'; - if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->id, $arrayofselected)) { - $selected = 1; + + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->id, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print '
'.$langs->trans("Amount").'
'.$langs->trans("PaymentMode").''; $form->select_types_paiements(GETPOST("paiementtype"), "paiementtype", '', 0, 1, 0, 0, 1, 'maxwidth500 widthcentpercentminusx'); @@ -243,7 +243,7 @@ if ($id) { print '
'.$langs->trans("Amount").''.price($object->amount).'
'.$langs->trans('AccountToCredit').'
'.$langs->trans('Amount').''.price($object->amount, '', $disable_delete = 0; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { $bankline = new AccountLine($db); if ($object->fk_account > 0) { @@ -327,7 +327,7 @@ print '
'.$langs->trans('Date').''.dol_print_date($now,'day').'
'.$langs->trans("DateChequeReceived").''; - print $form->selectDate($filterdate, 'fd', 0, 0, 1, '', 1, 1); + // filter by dates from / to + print '
'; + print $form->selectDate($search_date_start, 'search_date_start_', 0, 0, 1, '', 1, 1, 0, '', '', '', '', 1, '', $langs->trans('From')); + print '
'; + print '
'; + print $form->selectDate($search_date_end, 'search_date_end_', 0, 0, 1, '', 1, 1, 0, '', '', '', '', 1, '', $langs->trans('to')); + print '
'; print '
'.$langs->trans("BankAccount").''; $form->select_comptes($filteraccountid, 'accountid', 0, 'courant <> 2', 1); @@ -363,7 +384,7 @@ if ($action == 'new') { print '
'; print ''; - if ($filterdate || $filteraccountid > 0) { + if ($search_date_start || $search_date_end || $filteraccountid > 0) { print '   '; print ''; } @@ -382,8 +403,11 @@ if ($action == 'new') { $sql .= " AND ba.entity IN (".getEntity('bank_account').")"; $sql .= " AND b.fk_bordereau = 0"; $sql .= " AND b.amount > 0"; - if ($filterdate) { - $sql .= " AND b.dateo = '".$db->idate($filterdate)."'"; + if ($search_date_start) { + $sql .= " AND b.dateo >= '".$db->idate($search_date_start)."'"; + } + if ($search_date_end) { + $sql .= " AND b.dateo <= '".$db->idate($search_date_end)."'"; } if ($filteraccountid > 0) { $sql .= " AND ba.rowid = ".((int) $filteraccountid); diff --git a/htdocs/compta/paiement/class/paiement.class.php b/htdocs/compta/paiement/class/paiement.class.php index f63d58db933..6186083c211 100644 --- a/htdocs/compta/paiement/class/paiement.class.php +++ b/htdocs/compta/paiement/class/paiement.class.php @@ -8,7 +8,7 @@ * Copyright (C) 2015 Juanjo Menent * Copyright (C) 2018 Ferran Marcet * Copyright (C) 2018 Thibault FOUCART - * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018-2022 Frédéric France * Copyright (C) 2020 Andreu Bisquerra Gaya * Copyright (C) 2021 OpenDsi * @@ -57,6 +57,7 @@ class Paiement extends CommonObject public $facid; public $datepaye; + public $date; // same than $datepaye /** * @deprecated @@ -153,6 +154,7 @@ class Paiement extends CommonObject */ public $ref_ext; + /** * Constructor * @@ -453,7 +455,7 @@ class Paiement extends CommonObject $newlang = ''; $outputlangs = $langs; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $invoice->fetch_thirdparty(); $newlang = $invoice->thirdparty->default_lang; } @@ -462,8 +464,8 @@ class Paiement extends CommonObject $outputlangs->setDefaultLang($newlang); } - $hidedetails = ! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0; - $hidedesc = ! empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0; + $hidedetails = !empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DETAILS) ? 1 : 0; + $hidedesc = !empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_DESC) ? 1 : 0; $hideref = !empty($conf->global->MAIN_GENERATE_DOCUMENTS_HIDE_REF) ? 1 : 0; $ret = $invoice->fetch($facid); // Reload to get new records @@ -626,7 +628,7 @@ class Paiement extends CommonObject $error = 0; $bank_line_id = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($accountid <= 0) { $this->error = 'Bad value for parameter accountid='.$accountid; dol_syslog(get_class($this).'::addPaymentToBank '.$this->error, LOG_ERR); diff --git a/htdocs/compta/paiement/list.php b/htdocs/compta/paiement/list.php index 988d6e041be..e6b57137df8 100644 --- a/htdocs/compta/paiement/list.php +++ b/htdocs/compta/paiement/list.php @@ -104,8 +104,8 @@ $arrayfields = array( 'p.datep' => array('label'=>"Date", 'checked'=>1, 'position'=>20), 's.nom' => array('label'=>"ThirdParty", 'checked'=>1, 'position'=>30), 'c.libelle' => array('label'=>"Type", 'checked'=>1, 'position'=>40), - 'transaction' => array('label'=>"BankTransactionLine", 'checked'=>1, 'position'=>50, 'enabled'=>(!empty($conf->banque->enabled))), - 'ba.label' => array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enabled'=>(!empty($conf->banque->enabled))), + 'transaction' => array('label'=>"BankTransactionLine", 'checked'=>1, 'position'=>50, 'enabled'=>(isModEnabled("banque"))), + 'ba.label' => array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enabled'=>(isModEnabled("banque"))), 'p.num_paiement' => array('label'=>"Numero", 'checked'=>1, 'position'=>70, 'tooltip'=>"ChequeOrTransferNumber"), 'p.amount' => array('label'=>"Amount", 'checked'=>1, 'position'=>80), 'p.statut' => array('label'=>"Status", 'checked'=>1, 'position'=>90, 'enabled'=>(!empty($conf->global->BILL_ADD_PAYMENT_VALIDATION))), diff --git a/htdocs/compta/paiement_charge.php b/htdocs/compta/paiement_charge.php index ba62c36b0fa..50236a29e64 100644 --- a/htdocs/compta/paiement_charge.php +++ b/htdocs/compta/paiement_charge.php @@ -71,7 +71,7 @@ if ($action == 'add_payment' || ($action == 'confirm_paiement' && $confirm == 'y $error++; $action = 'create'; } - if (!empty($conf->banque->enabled) && !(GETPOST("accountid") > 0)) { + if (isModEnabled("banque") && !(GETPOST("accountid") > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); $error++; $action = 'create'; @@ -169,13 +169,8 @@ if ($action == 'create') { } print load_fiche_titre($langs->trans("DoPayment")); - print "
\n"; - if ($mesg) { - print "
$mesg
"; - } - - print '
'; + print ''; print ''; print ''; print ''; diff --git a/htdocs/compta/paiement_vat.php b/htdocs/compta/paiement_vat.php index 645fd36bc2a..f1f243bc06d 100644 --- a/htdocs/compta/paiement_vat.php +++ b/htdocs/compta/paiement_vat.php @@ -69,7 +69,7 @@ if ($action == 'add_payment' || ($action == 'confirm_paiement' && $confirm == 'y $error++; $action = 'create'; } - if (!empty($conf->banque->enabled) && !(GETPOST("accountid", 'int') > 0)) { + if (isModEnabled("banque") && !(GETPOST("accountid", 'int') > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToDebit")), null, 'errors'); $error++; $action = 'create'; diff --git a/htdocs/compta/payment_sc/card.php b/htdocs/compta/payment_sc/card.php index f5ff5a101f2..f76cc6b27c1 100644 --- a/htdocs/compta/payment_sc/card.php +++ b/htdocs/compta/payment_sc/card.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php' require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/paymentsocialcontribution.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -141,7 +141,7 @@ print '
'.$langs->trans('Amount').''.price($object-> print '
'.$langs->trans('Note').''.nl2br($object->note).'
'.$langs->trans('Amount').''.price($object-> print '
'.$langs->trans('Note').''.nl2br($object->note).'
   '; @@ -214,8 +218,12 @@ if ($result) { print '
'; - print ''; - print img_object($langs->trans("ShowBill"), "bill"); - print ' '.$obj->invoiceref."'.$obj->code_client."'; + $link_to_tab = '/comm/card.php?socid='; + $link_code = $obj->code_client; + if ($type == 'bank-transfer') { + $link_to_tab = '/fourn/card.php?socid='; + $link_code = $obj->code_fournisseur; + } + print ''.$link_code."'.dol_print_date($db->jdate($obj->datec), 'day')."
'; print ''; + if ($modecompta == 'BOOKKEEPING') { print_liste_field_titre("PredefinedGroups", $_SERVER["PHP_SELF"], 'f.thirdparty_code,f.rowid', '', $param, '', $sortfield, $sortorder, 'width200 '); } else { @@ -261,6 +262,8 @@ if ($modecompta == 'BOOKKEEPING') { } else { if ($modecompta == 'CREANCES-DETTES') { print_liste_field_titre("AmountHT", $_SERVER["PHP_SELF"], 'amount_ht', '', $param, 'class="right"', $sortfield, $sortorder); + } else { + print_liste_field_titre(''); // Make 4 columns in total whatever $modecompta is } print_liste_field_titre("AmountTTC", $_SERVER["PHP_SELF"], 'amount_ttc', '', $param, 'class="right"', $sortfield, $sortorder); } @@ -1036,7 +1039,7 @@ if ($modecompta == 'BOOKKEEPING') { if ($modecompta == 'CREANCES-DETTES' || $modecompta == 'RECETTES-DEPENSES') { $langs->load('trips'); if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(date_valid,'%Y-%m') as dm, sum(p.total_ht) as amount_ht,sum(p.total_ttc) as amount_ttc"; + $sql = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(date_valid,'%Y-%m') as dm, p.total_ht as amount_ht, p.total_ttc as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as p"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=p.fk_user_author"; $sql .= " WHERE p.entity IN (".getEntity('expensereport').")"; @@ -1044,7 +1047,7 @@ if ($modecompta == 'BOOKKEEPING') { $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 = "SELECT p.rowid, p.ref, u.rowid as userid, u.firstname, u.lastname, date_format(pe.datep,'%Y-%m') as dm, sum(pe.amount) as amount_ht, sum(pe.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as p"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON u.rowid=p.fk_user_author"; $sql .= " INNER JOIN ".MAIN_DB_PREFIX."payment_expensereport as pe ON pe.fk_expensereport = p.rowid"; @@ -1124,7 +1127,7 @@ if ($modecompta == 'BOOKKEEPING') { */ //$conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY = 1; - if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { + if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && isModEnabled("banque") && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { $subtotal_ht = 0; $subtotal_ttc = 0; @@ -1525,18 +1528,24 @@ print ''; print ''; if ($modecompta == 'CREANCES-DETTES') { print ''; +} else { + print ''; } print ''; print ''; print ''; if ($modecompta == 'CREANCES-DETTES') { print ''; +} else { + print ''; } print ''; print ''; print ''; if ($modecompta == 'CREANCES-DETTES') { print ''; +} else { + print ''; } print ''; print ''; diff --git a/htdocs/compta/resultat/index.php b/htdocs/compta/resultat/index.php index 719b1deb29a..90c24e8e905 100644 --- a/htdocs/compta/resultat/index.php +++ b/htdocs/compta/resultat/index.php @@ -47,12 +47,12 @@ $nbofyear = 4; // Date range $year = GETPOST('year', 'int'); if (empty($year)) { - $year_current = strftime("%Y", dol_now()); - $month_current = strftime("%m", dol_now()); + $year_current = dol_print_date(dol_now(), "%Y"); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year_current - ($nbofyear - 1); } else { $year_current = $year; - $month_current = strftime("%m", dol_now()); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year - ($nbofyear - 1); } $date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear); @@ -796,7 +796,7 @@ if (!empty($conf->don->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecom * Various Payments */ -if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && !empty($conf->banque->enabled) && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { +if (!empty($conf->global->ACCOUNTING_REPORTS_INCLUDE_VARPAY) && isModEnabled("banque") && ($modecompta == 'CREANCES-DETTES' || $modecompta == "RECETTES-DEPENSES")) { // decaiss $sql = "SELECT date_format(p.datep, '%Y-%m') AS dm, SUM(p.amount) AS amount FROM ".MAIN_DB_PREFIX."payment_various as p"; diff --git a/htdocs/compta/resultat/result.php b/htdocs/compta/resultat/result.php index c296d4037e5..81e6672a1e4 100644 --- a/htdocs/compta/resultat/result.php +++ b/htdocs/compta/resultat/result.php @@ -1,6 +1,6 @@ - * Copyright (C) 2016 Alexandre Spangaro + * Copyright (C) 2016-2022 Alexandre Spangaro * Copyright (C) 2018-2020 Laurent Destailleur * Copyright (C) 2018 Frédéric France * @@ -228,7 +228,7 @@ if ($modecompta == "CREANCES-DETTES") { $period .= '     '.$langs->trans("DetailByAccount").' '.$form->selectarray('showaccountdetail', $arraylist, $showaccountdetail, 0); $periodlink = $textprevyear.$textnextyear; $exportlink = ''; - $description = $langs->trans("RulesResultBookkeepingPersonalized"). + $description = $langs->trans("RulesResultBookkeepingPersonalized"); $description .= ' ('.$langs->trans("SeePageForSetup", DOL_URL_ROOT.'/accountancy/admin/categories_list.php?search_country_id='.$mysoc->country_id.'&mainmenu=accountancy&leftmenu=accountancy_admin', $langs->transnoentitiesnoconv("Accountancy").' / '.$langs->transnoentitiesnoconv("Setup").' / '.$langs->transnoentitiesnoconv("AccountingCategory")).')'; //if (! empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) $description.= $langs->trans("DepositsAreNotIncluded"); //else $description.= $langs->trans("DepositsAreIncluded"); diff --git a/htdocs/compta/sociales/card.php b/htdocs/compta/sociales/card.php index 6cc3496ced0..f6bc9b5fa02 100644 --- a/htdocs/compta/sociales/card.php +++ b/htdocs/compta/sociales/card.php @@ -192,7 +192,7 @@ if ($action == 'add' && $user->rights->tax->charges->creer) { } elseif (!$dateperiod) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Period")), null, 'errors'); $action = 'create'; - } elseif (!$actioncode > 0) { + } elseif (!($actioncode > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Type")), null, 'errors'); $action = 'create'; } elseif (empty($amount)) { @@ -426,7 +426,7 @@ if ($action == 'create') { print ''; // Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; @@ -638,7 +638,7 @@ if ($id > 0) { print ''; // Bank account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print '",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.2",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.2",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
").attr("role","tooltip"),i=V("
").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file diff --git a/htdocs/includes/php-iban/.travis.yml b/htdocs/includes/php-iban/.travis.yml new file mode 100644 index 00000000000..c775f178e7f --- /dev/null +++ b/htdocs/includes/php-iban/.travis.yml @@ -0,0 +1,21 @@ +matrix: + include: + - php: 5.3 + dist: precise +language: php +dist: trusty +php: + - '5.4' + - '5.5' + - '5.6' + - '7.0' + - '7.4' + - '8.0' + - '8.1' + - hhvm-3.3 + - hhvm-3.6 + - hhvm-3.9 + - hhvm-3.12 + - hhvm-3.15 + - hhvm-3.18 +script: php utils/test.php && php utils/ootest.php && php utils/other-tests.php diff --git a/htdocs/includes/php-iban/README.md b/htdocs/includes/php-iban/README.md new file mode 100644 index 00000000000..78b5c121c30 --- /dev/null +++ b/htdocs/includes/php-iban/README.md @@ -0,0 +1,1467 @@ +php-iban +======== + +`php-iban` is a library for parsing, validating and generating IBAN (and IIBAN) bank account information in PHP. + +[![Build Status](https://travis-ci.org/globalcitizen/php-iban.png)](https://travis-ci.org/globalcitizen/php-iban) +[![Latest Stable Version](https://poser.pugx.org/globalcitizen/php-iban/v/stable)](https://packagist.org/packages/globalcitizen/php-iban) +[![License](https://poser.pugx.org/globalcitizen/php-iban/license)](https://packagist.org/packages/globalcitizen/php-iban) + +All parts of an IBAN can be retrieved, including country code, checksum, BBAN, financial institution or bank code, account number, and where a fixed-length national system is in use, also branch/sort code. Legacy national checksums may also be retrieved, validated and correctly set, where available, whether they apply to the account number portion, bank and branch identifiers, part or all of the above. IBAN country codes can be converted in to ISO3166-1 alpha-2 and IANA formats, the parent IBAN country acting as registrar for dependent territories may be queried, the official national currency (ISO4217 alpha code format), central bank name and central bank URL may also be queried to ease integration. IBANs may be converted between human and machine representation. IBANs may be obfuscated for presentation to humans in special circumstances such as relative identification. A database of example/test IBANs from different countries is included. Finally, highly accurate suggestions for originally intended input can be made when an incorrect IBAN is detected and is due to mistranscription error. + +Tested on PHP versions: ![PHP 5.2](https://img.shields.io/badge/version-PHP%205.2%2B-lightgrey.svg) ![PHP 5.3](https://img.shields.io/badge/version-PHP%205.3%2B-lightgrey.svg) ![PHP 5.4](https://img.shields.io/badge/version-PHP%205.4%2B-lightgrey.svg) ![PHP 5.5](https://img.shields.io/badge/version-PHP%205.5%2B-lightgrey.svg) ![PHP 5.6](https://img.shields.io/badge/version-PHP%205.6%2B-lightgrey.svg) ![PHP 7.0](https://img.shields.io/badge/version-PHP%207.0%2B-lightgrey.svg) ![PHP 7.4](https://img.shields.io/badge/version-PHP%207.4%2B-lightgrey.svg) + +Test on HHVM versions: ![HHVM 3.3](https://img.shields.io/badge/version-HHVM%203.3%2B-lightgrey.svg) ![HHVM 3.6](https://img.shields.io/badge/version-HHVM%203.6%2B-lightgrey.svg) ![HHVM 3.9](https://img.shields.io/badge/version-HHVM%203.9%2B-lightgrey.svg) ![HHVM 3.12](https://img.shields.io/badge/version-HHVM%203.12%2B-lightgrey.svg) ![HHVM 3.15](https://img.shields.io/badge/version-HHVM%203.15%2B-lightgrey.svg) ![HHVM 3.18](https://img.shields.io/badge/version-HHVM%203.18%2B-lightgrey.svg) + +The parser was built using regular expressions to adapt the contents of the _official_ IBAN registry available from SWIFT then manually modified for special cases such as [errors and omissions in SWIFT's official specifications](https://raw.githubusercontent.com/globalcitizen/php-iban/master/docs/COMEDY-OF-ERRORS). + +Various deficiencies in the initial adaptation have since been rectified, and the current version should be a fairly correct and reliable implementation. + +Where appropriate, __European Committee for Banking Standards__ (ECBS) recommendations have also been incorporated. + +Please bear in mind that because the specification changes frequently, it may not be 100% up to date if a new version has been recently released - I do my best though. We are currently thought to be up to date with [the January 2020 release, ie. PDF release #86](https://www.swift.com/standards/data-standards/iban). + +Licensed under LGPL, it is free to use in commercial settings. + + +Countries Supported +------------------- + +The following 116 official and *unofficial* IBAN countries are supported. + +* Albania (AL) +* *Algeria* (DZ) +* Andorra (AD) +* *Angola* (AO) +* Austria (AT) +* Azerbaijan (AZ) +* Bahrain (BH) +* Belarus (BY) +* Belgium (BE) +* *Benin* (BJ) +* Bosnia and Herzegovina (BA) +* Brazil (BR) +* British Virgin Islands (VG) +* Bulgaria (BG) +* *Burkina Faso* (BF) +* *Burundi* (BI) +* *Cameroon* (CM) +* *Central African Republic* (CF) +* *Chad* (TD) +* *Cape Verde* (CV) +* *Comoros* (KM) +* *Congo* (CG) +* Costa Rica (CR) +* *Côte d'Ivoire* (CI) +* Croatia (HR) +* Cyprus (CY) +* Czech Republic (CZ) +* Denmark (DK) + * Faroe Islands (FO) + * Greenland (GL) +* *Djibouti* (DJ) +* Dominican Republic (DO) +* East Timor (TL) +* *Egypt* (EG) +* El Salvador (SV) +* *Equitorial Guinea* (GQ) +* Estonia (EE) +* Finland (FI) + * Åland Islands (AX) +* France (FR) + * French Guiana (GF) + * French Polynesia (PF) + * French Southern Territories (TF) + * Guadelope (GP) + * Martinique (MQ) + * Mayotte (YT) + * New Caledonia (NC) + * Réunion (RE) + * Saint Barhélemy (BL) + * Saint Martin (French Part) (MF) + * Saint-Pierre and Miquelon (PM) + * Wallis and Futuna (WF) +* *Gabon* (GA) +* Georgia (GE) +* Germany (DE) +* Gibraltar (GI) +* Greece (GR) +* Guatemala (GT) +* *Guinea-Bissau* (GW) +* *Honduras* (HN) +* Hungary (HU) +* Iceland (IS) +* *IIBAN (Internet)* (AA) +* *Iran* (IR) +* Iraq (IQ) +* Ireland (IE) +* Israel (IL) +* Italy (IT) +* Jordan (JO) +* Kazakhstan (KZ) +* Kosovo (XK) +* Kuwait (KW) +* Latvia (LV) +* Lebanon (LB) +* Liechtenstein (LI) +* Lithuania (LT) +* Luxembourg (LU) +* Macedonia (MK) +* *Madagascar* (MG) +* *Mali* (ML) +* Malta (MT) +* Mauritania (MR) +* Mauritius (MU) +* Moldova (MD) +* Monaco (MC) +* Montenegro (ME) +* *Morocco* (MA) +* *Mozambique* (MZ) +* Netherlands (NL) +* *Nicaragua* (NI) +* *Niger* (NE) +* Norway (NO) +* Pakistan (PK) +* Palestine (PS) +* Poland (PL) +* Portugal (PT) +* Qatar (QA) +* Romania (RO) +* Saint Lucia (LC) +* San Marino (SM) +* São Tomé and Príncipe (ST) +* Saudi Arabia (SA) +* *Senegal* (SN) +* Serbia (RS) +* Seychelles (SC) +* Slovakia (SK) +* Slovenia (SI) +* Spain (ES) +* Sweden (SE) +* Switzerland (CH) +* *Togo* (TG) +* Tunisia (TN) +* Turkey (TR) +* *Ukraine* (UA) +* United Arab Emirates (AE) +* United Kingdom (GB) + + +Installation via composer +------------------------- + +If you use [composer](https://getcomposer.org/) you can simply run `composer require globalcitizen/php-iban` to get going. Reportedly [![Daily Downloads](https://poser.pugx.org/globalcitizen/php-iban/d/daily)](https://packagist.org/packages/globalcitizen/php-iban) (and [![Monthly Downloads](https://poser.pugx.org/globalcitizen/php-iban/d/monthly)](https://packagist.org/packages/globalcitizen/php-iban)) were done via composer. + +(If you don't yet have `composer` and wish to install it in an insecure fashion (not recommended, but convenient) you can run `curl -sS https://getcomposer.org/installer | php` or `wget -O- https://getcomposer.org/installer | php`) + +Then just add the following to your `composer.json` file: + +```js +// composer.json +{ + "require": { + "globalcitizen/php-iban": "4.1.0" + } +} +``` + +Then, you can install the new dependencies by running `composer`'s update command from the directory where your `composer.json` file is located: + +```sh +# install +$ php composer.phar install +# update +$ php composer.phar update globalcitizen/php-iban + +# or you can simply execute composer command if you set it to +# your PATH environment variable +$ composer install +$ composer update globalcitizen/php-iban +``` + +You can [see this library on Packagist](https://packagist.org/packages/globalcitizen/php-iban). + + +Installation via git +-------------------- + +For a regular install, use the `git clone` command: + +```sh +# HTTP +$ git clone https://github.com/globalcitizen/php-iban.git +# SSH +$ git clone git@github.com:globalcitizen/php-iban.git +``` + + +Installation via git submodule +------------------------------ + +Alternatively, to embed the `php-iban` library in your own `git`-managed repository at a specific revision number, such that it is possible to update the version in a predictable way while maintaining a larger system that depends upon its functionality: +```sh +# enter your project's git repo +$ cd my-existing-project-with-a-git-repo/ +# select an appropriate place to create the php-iban subdir +$ cd lib/ +# add php-iban as a submodule +$ git submodule add https://github.com/globalcitizen/php-iban.git +# commit new submodule +$ git commit -m 'Add php-iban submodule' +``` + +Then, when checking out `git` projects with submodules for the first time, normally you need to make a couple of extra steps: +```sh +# check out your project as normal +$ git clone git@your-server.com:your/project.git +# initialize submodules +$ git submodule init +# update submodules +$ git submodule update +``` + +To skip these steps, add the `--recursive` argument to `git clone` when checking out: +```sh +# check out your project, initialize and update all submodules +$ git clone --recursive git@your-server.com:your/project.git +``` + +If you later wish to your project to use a newer version of `php-iban`, run: +```sh +# fetch changes +$ git submodule update --remote php-iban +# commit +$ git commit -m 'Update php-iban submodule' +``` + + +Manual installation +------------------- + +1. Fetch the latest release from [our github releases page](https://github.com/globalcitizen/php-iban/releases) in either `zip` or `tar.gz` format. +2. Extract the library using your favourite archive utility, for example `unzip filename.zip` on Unix-like platforms. +3. Write your code to depend on the library based upon its relative location to your source code. For example if you wish to include `php-iban` from the parent directory's subdirectory `libraries/php-iban` you could use the following [require_once()](http://php.net/manual/en/function.require-once.php) statement: +```php + +``` + + +Comparison of PHP IBAN libraries +-------------------------------- + +The following table compares __php-iban__ to other PHP projects offering IBAN-related functionality, on the basis of general project information and the programming paradigms supported. + +| Project | Lic. | Proc | OO | Began | Latest | Star | Watch | Fork | Installs | Home culture | Deps | +| ---------------------------------------------------------- | ---- | ---- | --- | ------ | ------ | ---- | ----- | ---- | -------- | ------------ | ------- | +| __php-iban__ | LGPL | ✔ | ✔ | 2009 | 4.1.0 | 344 | 26 | 76 | ~2M* | Global* | *none* | +| [Iban](https://github.com/jschaedl/Iban) | MIT | ✘ | ✔ | 2013 | 1.3.0 | 50 | 9 | 19 | 178.39k | German | lots | +| [IsoCodes](https://github.com/ronanguilloux/IsoCodes) | GPL3 | ✘ | ✔ | 2012 | 2.1.1 | 466 | 22 | 54 | 145k | French | lots | +| [SepaUtil's](https://github.com/AbcAeffchen/SepaUtilities) | GPL3 | ✘ | ✔ | 2014 | 1.2.3 | 8 | 4 | 3 | 25k | German | phpunit | +| [Symfony](https://github.com/symfony/symfony) | MIT | ✘ | ✔ | 2013 | 3.3.6 | 15k | 1214 | 5.6k | 23M+ | French | lots | + +Notes: + * Original download records for __php-iban__ releases were hosted on Google Code and are now lost. Prior to establishing a release process on Github, we just expected that people would download the code... so we're really not sure how many installs exist, but this is a fair guess (~11k + composer installs + a little bit now and then). + * __php-iban__ also powers: + * [adm-gravity-iban](https://github.com/InternativeNL/adm-gravity-iban) + * [Azzana consulting's XML Solver for ISO20022](http://www.azzana-consulting.com/xmlsolver/) + * [basepa Payment Gateway for WooCommerce](https://github.com/besepa/woocommerce-besepa) + * [org.civicoop.ibanaccounts extension](https://github.com/CiviCooP/org.civicoop.ibanaccounts) for [CiviCoop](http://www.civicoop.org/) + * [commerce_sepa](https://github.com/StephanGeorg/commerce_sepa) + * [contao-haste_plus](https://github.com/heimrichhannot/contao-haste_plus) + * [Dolibarr ERP & CRM](http://www.dolibarr.org/) ([website](https://github.com/Dolibarr/dolibarr/tree/develop/htdocs/includes/php-iban)) + * [fieldwork: Web forms for cool people](https://github.com/jmversteeg/fieldwork) + * [IBAN Validator](https://www.drupal.org/project/iban_validator) for Drupal + * [identity](https://github.com/mpijierro/identity) component for Laravel to check Spanish IDs + * [lib-bankaccount](https://github.com/majestixx/lib-bankaccount) (conversion to/from legacy German account format) + * [PHP SEPA XML](http://www.phpclasses.org/package/8179-PHP-Generate-XML-for-the-Single-Euro-Payments-Area.html) class ([github](https://github.com/dmitrirussu/php-sepa-xml-generator)) + * [Project60 SEPA direct debit](https://github.com/Project60/org.project60.sepa) + * [SEPA Payment Plugin](https://github.com/subs-guru/sepa-payment-plugin) for [SubsGuru](http://subs.guru/) + * [Silverstripe CMS module](https://github.com/denkfabrik-neueMedien/silverstripe-siteinfo) + * [statement](https://github.com/hiwye/statement) + * [WooCommerce Germanized](http://hookr.io/plugins/woocommerce-germanized/) + * [WooCommerce SEPA Payment Gateway](https://codecanyon.net/item/woocommerce-sepa-payment-gateway/7963419) + * php-iban's author is an Australian born, Australia/New Zealand/German citizen based in mainland China, who has formerly also worked and banked in the US, UK, and many Asian countries. + * The IsoCodes and SepaUtil's projects cover standards other than IBAN so their popularity should be considered in this light. (In essence, there is really only one directly competing library, Iban) + +Now let's take a look at features. + +| | + | ISO | IANA | SEPA | ₶ | UO | MT | NC | ₴ | CB | H? | Registry | +| ------------------------------------------------------------- | --- | --- | ---- | ---- | --- | --- | --- | --- | --- | --- | --- | ---------------------------------------------------------------------- | +| __php-iban__ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 116: [full, error-corrected CSV](https://github.com/globalcitizen/php-iban/blob/master/registry.txt) with [open-source toolchain](https://github.com/globalcitizen/php-iban/blob/master/utils/convert-registry.php) and [documentation](https://github.com/globalcitizen/php-iban/blob/master/docs/COMEDY-OF-ERRORS) | +| [Iban](https://github.com/jschaedl/Iban) | ✔* | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 54: [partial, hardcoded, dubious origin](https://github.com/jschaedl/Iban/blob/master/library/IBAN/Core/Constants.php#L44) | +| [IsoCodes](https://github.com/ronanguilloux/IsoCodes) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 66: [partial, hardcoded, dubious origin](https://github.com/ronanguilloux/IsoCodes/blob/master/src/IsoCodes/Iban.php#L25) | +| [SepaUtil's](https://github.com/AbcAeffchen/SepaUtilities) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 89: [partial, hardcoded, dubious origin](https://github.com/AbcAeffchen/SepaUtilities/blob/master/src/SepaUtilities.php#L89) | +| [Symfony](https://github.com/symfony/symfony) | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | ✘ | 95: [partial, hardcoded](https://github.com/symfony/symfony/blob/09f92ba516b8840f2ee2dc630b75cbccfca5976b/src/Symfony/Component/Validator/Tests/Constraints/IbanValidatorTest.php), [dubious origin](https://github.com/symfony/symfony/blob/a4f3baae3758b0e72005353f624101f089e4302b/src/Symfony/Component/Validator/Constraints/IbanValidator.php) + +Note: + * __+__ refers to the capacity to create checksum-accurate potential IBANs programatically. It is the author's opinion that generation features without IIBAN support (ie. authority) are of dubious use, except in one-off migrations. (See also NC, below) + * __ISO__ refers to the capacity to convert between IBAN country codes and ISO3166-1 alpha-2 country codes + * __IANA__ refers to the capacity to convert between IBAN country codes and IANA country codes (eg. 'GB' to '.uk' and vice versa) + * __SEPA__ refers to the ability to check whether a particular IBAN country is a member of the Single Euro Payments Area (SEPA) + * __₶__ describes support for IIBAN, the open [proposal](http://www.ifex-project.org/) for decentralized financial endpoint generation by private parties, such as crypto-currency exchanges, whilst maintaining compatibility with the emerging IBAN system. This system has been adopted by major cryptocurrency exchanges such as [Kraken](https://www.kraken.com/). + * __UO__ refers to support for unofficial countries whose IBAN formats have been [published as in informal use](http://www.nordea.com/en/our-services/cashmanagement/iban-validator-and-information/iban-countries/index.html) by major financial institutions, but are not official SWIFT-published registry entries. + * __MT__ refers to mistranscription support: the capacity to automatically detect what the user probably meant when they make a transcription error on IBANs, such as those manually written or printed in confusing fonts, for instance writing 'L' instead of 'I' or '1', or vice versa. + * __NC__ refers to national checksum support: the capacity to verify and, where appropriate, set and extract the national checksum portion of a BBAN, for countries that offered pre-IBAN national checksum algorithms. + * __₴__ refers to support for querying the official national currency's ISO4217 code for an IBAN country + * __CB__ refers to support for querying the name and URL of the central bank of an IBAN country + * __H?__ refers to support for input and output for the human, space-laden or presentation variant of an IBAN, ie. `IBAN XXXX XXXX XXXX XXXX` instead of `XXXXXXXXXXXXXXXX` - a lot more reasonable. + +In short, while composer users have apparently lept on rival libraries (particularly Iban), probably due to the time it took us to integrate a composer file, those libraries are often either full-fledged web frameworks or burdensome in dependencies, less mature, fail to hat-tip to the free software foundation, do not support the procedural programming paradigm (for when AbstractProductClassMakerFactories just won't cut it), use data from dubious sources, tend to use licenses that are incompatible with certain commercial uses, and are frankly short on features. + +So, fearless user ... __choose php-iban__: the ethical, functional, forward-looking, low-hassle library of choice for IBAN and IIBAN processing. __Choose to win!__ ;) + + +Your Help Wanted +---------------- + + * If you know the URL of __national IBAN, BBAN or national checksum documentation__ from official sources, please let us know at [issue #39](https://github.com/globalcitizen/php-iban/issues/39) and [issue #41](https://github.com/globalcitizen/php-iban/issues/41). + * __Faroe Islands__ (FO) banks do not respond, neither does the Danish National Bank who referred me to them. + * __Luxembourg__ (LU) does not seem to conform to any single checksum system. While some IBAN do validate with reasonably common systems, others don't or use others. The suggestion that Luxembourg has a national checksum system may in fact be incorrect. We need some clarification here, hopefully someone can dig up an official statement. + * __Mauritania__ (MR) has a dual character checksum system but our example IBAN does not match MOD97-10 which would be the expected system. Previously the IBAN here was always fixed to '13' checksum digits, however as of registry v66 it is now dynamic, which suggests a changed or at least now nationally relaxed checksum system. + + * If you are willing to spend some time searching, we could do with some more test IBANs for most countries, especially smaller ones... + +News: July 2021 +--------------- + +__[Version 4.1.0](https://github.com/globalcitizen/php-iban/releases/tag/v4.1.0)__ has been released. + * New feature to check for EU memberships - thanks to [@julianpollmann](https://github.com/julianpollman) + +News: August 2020 +----------------- +__[Version 4.0.0](https://github.com/globalcitizen/php-iban/releases/tag/v4.0.0)__ has been released. + * Major version upgrade to certainly fix missing dot in prior release version string, thus avoiding composer hassles. (See [#108](https://github.com/globalcitizen/php-iban/issues/108)). I am really beginning to hate composer. + +__[Version 3.0.3](https://github.com/globalcitizen/php-iban/releases/tag/v3.0.3)__ has been released. + * Official support for php-7.4 + +__[Version 3.0.2](https://github.com/globalcitizen/php-iban/releases/tag/v3.0.2)__ has been released. + * BBAN length fixes for Bahrain and Quatar (thanks to @jledrogo) + +News: July 2020 +--------------- + +__[Version 3.0.0](https://github.com/globalcitizen/php-iban/releases/tag/v3.0.0)__ has been released. + * Same as previous but bump version to fix issues with the addition of namespaces. (See [#104](https://github.com/globalcitizen/php-iban/issues/104)) + * Versions 2.8.x are being removed from the releases. + * Hopefully this should fix things for users upgrading from earlier versions via composer. + +__[Version 2.8.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.8.1)__ has been released. + * Same as previous but officially drop php-5.2 support due to lack of namespacing. + +__[Version 2.8.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.8.1)__ has been released. + * `TL` BBAN format regex removed extraneous spaces (did not affect IBAN validation). (Thanks to @DanyCorbineauBappli) + +News: June 2020 +--------------- +__[Version 2.8.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.8.0)__ has been released. + * Object oriented class is now namespaced. + +News: May 2020 +-------------- +__[Version 2.7.5](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.5)__ has been released. + * Corrections from newer IBAN registry releases + * Updated Egypt example IBAN and registry entry (disabled French national checksum scheme as this no longer works with the example IBAN provided. Users with insight please check, there are no examples visible online!) + * Corrections to Polish BBAN length (now fixed, previously spuriously specified as variable) + * Corrections to Seychelles BBAN and IBAN structure + +__[Version 2.7.4](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.4)__ has been released. + * New function `iban_to_obfsucated_format()` or `ObfuscatedFormat()` to obfuscate IBAN for specific output scenarios (such as relative identification) + * Thanks to @jaysee for feature request #99 + +News: November 2019 +------------------ +__[Version 2.7.3](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.3)__ has been released. + * Load registry only when used. This creates slightly more overhead in real world use, but nominally substantially reduces load times in the edge case event that you include the library but only want to use a function that does not require the IBAN registry to be loaded. + * Thanks to @manitu-opensource + +__[Version 2.7.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.2)__ has been released. + * Fix composer file to add license. + * Thanks to @SunMar + +News: October 2019 +------------------ +__[Version 2.7.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.1)__ has been released. + * Update erroneous bank ID stop offset for Costa Rica. + * Thanks to @thinkpozzitive + * Minor syntax updates + * Thanks to @bwurst + * Add quite a number of Costa Rica example IBANs for confidence in testing. + +News: July 2019 +--------------- + +__[Version 2.7.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.7.0)__ has been released. + * Fixed erroneous Liechtenstein BBAN length. + * Update National Bank of Greece name/website. + +News: August 2018 +----------------- + +__[Version 2.6.9](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.9)__ has been released. + * Added national checksum implementation for San Marino (`SM`) + * Thanks to @francescozanoni + +__[Version 2.6.8](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.8)__ has been released. + * Added national checksum implementation for Italy (`IT`) + * Thanks to @francescozanoni + +News: June 2018 +--------------- + +__[Version 2.6.7](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.7)__ has been released. + * Added national checksum implementation for Slovakia (`SK`) + * Thanks to @ostrolucky + +News: June 2018 +--------------- + +__[Version 2.6.6](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.6)__ has been released. + * Fixed generation of voluminous errors in environments without `ini_set` enabled + * Thanks to @agil-NUBBA + +News: March 2018 +---------------- + +__[Version 2.6.5](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.5)__ has been released. + * Fixed spurious warning when `gmp` extension was enabled + * Thanks to @marcovo + +__[Version 2.6.4](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.4)__ has been released. + * Remove spurious dependency on `bcmath` extension + * Minor documentation updates + +__[Version 2.6.3](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.3)__ has been released. + * Upgrade travis environment as old one broken + * Fix test execution under new Travis environment + * Re-addition of HHVM test environments + * Addition of PHP-5.2 test environment + * A few new test IBANs + +__[Version 2.6.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.2)__ has been released. + * Update Croatia SEPA status + * Thanks to @Pappshadow + +News: August 2017 +----------------- + +__[Version 2.6.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.1)__ has been released. + * Fixed missing registry data. + * Thanks to @monojp + +__[Version 2.6.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.6.0)__ has been released. + * World = conquered. + * We now have well over 100 supported countries. + * According to packagist, we are now the most popular IBAN-related project for PHP ... and quite possibly the internet! + * Addition of official countries + * Belarus (BY) + * El Salvador (SV) + * Iraq (IQ) + * Addition of unofficial countries + * Central African Republic (CF) + * Chad (TD) + * Comoros (KM) + * Congo (CG) + * Djibouti (DJ) + * Egypt (EG) + * Equitorial Guinea (GQ) + * Gabon (GA) + * Guinea-Bissau (GW) + * Honduras (HN) + * Morocco (MA) + * Nicaragua (NI) + * Niger (NE) + * Togo (TG) + * Additional example Iran (IR) IBANs. + * As HHVM is no longer supported by Travis we have dropped it from our automated testing, although php-iban should continue to work fine on HHVM. + * Minor documentation updates + + +News: October 2016 +------------------ + +__[Version 2.5.9](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.9)__ has been released. + * Bring us up to date with IBAN registry release #69 from #66 + * Release #67: fixes broken Costa Rica format and disables Croatia SEPA status + * Release #69: adds Sao Tome and Principe bank + branch offsets + + +News: August 2016 +----------------- + +__[Version 2.5.8](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.8)__ has been released. + * Fix [issue #52](https://github.com/globalcitizen/php-iban/issues/52) (thanks to [@simeucci](https://github.com/simeucci) for reporting), apologies for the delay! + * Minor documentation updates + + +News: June 2016 +--------------- + +__[Version 2.5.7](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.7)__ has been released. + * Minor changes missed in latest edition (May 2016, version 66) registry release + * New Seychelles (SC) example IBAN + * Unfix Mauritania (MR) checksum digits (no functional change) + * Minor documentation updates + + +News: May 2016 +-------------- + +__[Version 2.5.6](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.6)__ has been released. + * Update to conform with latest edition (May 2016, version 66) registry release + * Many of the corrections we had apparently already resolved on initial data import + * Moldova (MD): Split 20!c to 2!c18!c + * Seychelles (SC): Fix IBAN format (SWIFT markup) + * Tunisia (TN): Remove hardcoded 59 as IBAN checksum (following SWIFT; though inefficient) + * Minor documentation updates + * Update stats/figures for php-iban installs/stars/etc. + * Add new 'powered by' + + +News: April 2016 +---------------- + +__[Version 2.5.5](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.5)__ has been released. + * Update to conform with latest edition (April 2016, version 65) registry release + * Corrected account format for Seychelles (SC) to permit alphabetic characters (formerly numeric only) + + +News: March 2016 +---------------- + +__[Version 2.5.4](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.4)__ has been released. + * Update to conform with latest edition (March 2016, version 64) registry release + * Added Seychelles (SC) + * The three other changes apparently corrected registry errors we had already caught during record ingestion and testing + +__[Version 2.5.3](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.3)__ has been released. + * Added [Falsehoods Programmers Believe About IBANs](https://github.com/globalcitizen/php-iban/blob/master/docs/FALSEHOODS.md), inspired by... + * [Falsehoods Programmers Believe About Phone Numbers](https://github.com/googlei18n/libphonenumber/blob/master/FALSEHOODS.md) + * [Falsehoods Programmers Believe About Names](http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/) + * [Falsehoods Programmers Believe About Time](http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time) + * [Falsehoods Programmers Believe About Geography](http://wiesmann.codiferes.net/wordpress/?p=15187) + * [Falsehoods Programmers Believe About Addresses](https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/) + * Additional example IBANs + * Azerbaijan (AZ) + * Austria (AT) + * Angola (AO) + * San Marino (SM) + * Various minor changes + + +News: February 2016 +------------------- + +__[Version 2.5.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.2)__ has been released. + * Miscellaneous test library updated to validate example IBANs collection. + +__[Version 2.5.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.1)__ has been released. + * The 'Narodna banka Srbije' (`908`) bank in Serbia (RS) appears to have multiple live IBANs with broken national checksums, so we ignore all national checksums on accounts from that bank. + +__[Version 2.5.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.5.0)__ has been released. + * All users are encouraged to upgrade; this release is considered long term stable. + * The following national checksum schemes added in the 2.4.x series are now included and well validated, while invalid assumptions have been removed: + * Belgium (BE) + * Spain (ES) + * Monaco (MC) + * France (FR) + * Norway (NO) + * Montenegro (ME) + * Macedonia (MK) + * Netherlands (NL) - including exception for `INGB` (ING Bank) who have dropped the original checksum + * Portugal (PT) + * Serbia (RS) + * Slovenia (SI) - including exception for `01` (Bank of Slovenia) who do not honour checksums + * Timor Lest (TL) + * In addition, a library of test IBANs is being maintained under `utils/example-ibans` which has a good number of entries for a good number of countries already. This should simplify future research. + * Documented [ideas for the enhancement of the mistranscription error correction suggestion function](https://github.com/globalcitizen/php-iban/commit/045f39b33468e04ff4a64a3bd8cba92611149935#diff-61178a0267b9e23c2b5c19c0f4671a22). + +__[Version 2.4.20](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.20)__ has been released. + * Another bugfix release, based on further real world test IBANs from certain countries: + * Remove Bosnia (BA) national checksum support + +__[Version 2.4.19](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.19)__ has been released. + * Another bugfix release, based on further real world test IBANs from certain countries: + * Remove Finland (FI) national checksum support + +__[Version 2.4.18](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.18)__ has been released. + * Another bugfix release, based on further real world test IBANs from certain countries: + * Remove Poland (PL) national checksum support + +__[Version 2.4.17](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.17)__ has been released. + * Bank of Slovenia (bank code `01` under Slovenia (SI)) does not implement the national checksum scheme, as a special case. An exception has been added to the Slovenia national checksum implementation. + +__[Version 2.4.16](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.16)__ has been released. + * Another bugfix release, based on further real world test IBANs from certain countries: + * Remove Sweden (SE) national checksum support + * I am now instituting a new rule that if national checksum support has not been tested on 10+ real world IBANs, preferably 20+ across a range of institutions, then it does not get committed. This means that small countries will be impossible to add until research is done beyond web-browsing. + +__[Version 2.4.15](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.15)__ has been released. + * The Netherlands (NL) bank 'INGB' no longer uses the national checksum scheme, and has been excepted from the check. This marks our first bank-specific checksum feature. + +__[Version 2.4.14](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.14)__ has been released. + * Another bugfix release, based on further real world test IBANs from certain countries: + * Remove Estonia (EE) national checksum support + * Remove Hungary (HU) national checksum support + +__[Version 2.4.13](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.13)__ has been released. + * This release is mostly about bugfixes, after spending a lot of time gathering IBANs online and using them for further testing. + * Tunisia (TN) national checksum support has been removed, after additional testing with IBAN gathered from the internet it was found not to be correct. Perils of reverse-engineering! + * A couple of other bugfixes: + * The function `iban_mistranscription_suggestions()` now behaves correctly when passed loosely formatted IBAN-like strings + * The checksum algorithm `_verhoeff()` which supports certain national checksum implementations now behaves correctly when passed invalid input + +__[Version 2.4.12](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.12)__ has been released. + * Tunisia (TN) national checksum support has been added. + +__[Version 2.4.11](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.11)__ has been released. + * It is now possible to query the central bank name and URL for each country, from new registry fields `central_bank_url` and `central_bank_name`, for example: + * The central bank for New Caledonia (NC) is the 'Overseas Issuing Institute (Institut d'émission d'Outre-Mer)' and their URL is http://www.ieom.fr/ + * The central bank for the British Virgin Islands (BV) is 'The British Virgin Islands Financial Services Commission' and their URL is http://www.bvifsc.vg/ + * There is no central bank for the IIBAN (Internet) (AA). + +__[Version 2.4.10](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.10)__ has been released. + * New registry field `currency_iso4217` stores the official currency of the country in ISO4217 alpha code format, for example: + * The currency of Iceland (IS) is ISD + * The currency of Saint-Pierre and Miquelon (PM) is EUR + * The currency of Wallis and Futuna (WF) is XPF + +__[Version 2.4.9](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.9)__ has been released. + * New registry field `parent_registrar` stores the parent registrar IBAN country of an IBAN country, for example: + * Åland Islands (AX) parent registrar is Finland (FI) + * Faroe Islands (FO) parent registrar is Denmark (DK) + * New Caledonia (NC) parent registrar is France (FR) + +__[Version 2.4.8](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.8)__ has been released. + * Monaco (MC) national checksum support has been added. + +__[Version 2.4.7](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.7)__ has been released. + * Netherlands (NL) national checksum support has been added. + +__[Version 2.4.6](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.6)__ has been released. + * Poland (PL) national checksum support has been added. + +__[Version 2.4.5](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.5)__ has been released. + * Estonia (EE) national checksum support has been added. + * Finland (FI) national checksum support has been added. + * Macedonia (MK) national checksum support has been added. + * Montenegro (ME) national checksum support has been added. + * Norway (NO) national checksum support has been added. + * Serbia (RS) national checksum support has been added. + * Slovenia (SI) national checksum support has been added. + * Sweden (SE) national checksum support has been added. + +__[Version 2.4.4](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.4)__ has been released. + * Portugal (PT) national checksum support has been added. + +__[Version 2.4.3](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.3)__ has been released. + * Hungary (HU) national checksum support has been added. + +__[Version 2.4.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.2)__ has been released. + * Albania (AL) national checksum support has been added. + * Timor-Leste (TL) national checksum support has been added. + +__[Version 2.4.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.1)__ has been released. + * Bosnia (BA) national checksum support has been added. + +__[Version 2.4.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.4.0)__ has been released. + * It is now possible to determine, verify and set the correct national checksums for some countries that offered a pre-IBAN national checksum algorithm via the new functions `iban_{set|find|verify}_nationalchecksum()` and their OO-wrapper equivalents. Presently Belgium (BE), France (FR) and Spain (ES) are supported. If you would like to see your country supported, please see [issue #39](https://github.com/globalcitizen/php-iban/issues/39) and [issue #41](https://github.com/globalcitizen/php-iban/issues/41). + + +News: January 2016 +------------------ + +__[Version 2.3.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.3.1)__ has been released. + * Fix paste error in Bosnia IANA code + * Additional tests for new country functions + +__[Version 2.3.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.3.0)__ has been released. + * All IBAN country records can now be cross-referenced with their corresponding [IANA](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Country_code_top-level_domains) and [ISO3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Current_codes) codes, if available + +__[Version 2.2.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.2.0)__ has been released. + * Fully up to date with SEPA membership list. (Added new member for 2016, Andorra) + * Fully up to date with latest SWIFT IBAN registry PDF. + * Many fixes and new features since 2.1.0 + * All users are encouraged to ugprade. + +__[Version 2.1.9](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.9)__ has been released. + * Example field updates attempting to include what is possible from SWIFT IBAN registry PDF version #63. There persist [significant issues with this release process](https://github.com/globalcitizen/php-iban/blob/master/docs/COMEDY-OF-ERRORS). + +__[Version 2.1.8](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.8)__ has been released. + * National BBAN checksum offset data for Belgium added. + +__[Version 2.1.7](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.7)__ has been released. + * National BBAN checksum offset data added to registry. This can be queried via the new functions `iban_get_nationalchecksum_part()`, `iban_country_get_nationalchecksum_start_offset()` and `iban_country_get_nationalchecksum_stop_offset()` and their OO-wrapper equivalents `$myIban->NationalChecksum()`, `$myCountry->NationalChecksumStartOffset()` and `$mycountry->NationalChecksumStopOffset()`. Test and documentation updated. If you know anything about national checksum algorithms, please lend a hand at [issue #39](https://github.com/globalcitizen/php-iban/issues/39). + +__[Version 2.1.6](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.6)__ has been released. + * OO wrapper and documentation updated for new strict `machine_format_only` validation. + +__[Version 2.1.5](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.5)__ has been released. + * Additional strict `machine_format_only` mode for `verify_iban()` to close [issue #22](https://github.com/globalcitizen/php-iban/issues/22). + +__[Version 2.1.4](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.4)__ has been released. + * Simplified a function using a php4+ builtin. + +__[Version 2.1.3](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.3)__ has been released. + * Behavior of `iban_to_human_format()` has been fixed when passed input already containing spaces. + * OO-based tests are now executed following successful procedural tests. + * An additional test library for testing edge-case behavior in general functions is now executed following the main tests. + +__[Version 2.1.2](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.2)__ has been released. All known unofficial IBAN country codes are now integrated. As well as minor documentation updates and a shortening of the reported name of Kosovo, this version adds: + * Ivory Coast (CI) + * Madagascar (MG) + * Mali (ML) + * Mozambique (MZ) + * Senegal (SN) + * Ukraine (UA) + +__[Version 2.1.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.1)__ has been released. Currently unofficial IBAN country codes are being integrated, and the process remains ongoing. This version adds: + * Burkina Faso (BF) + * Burundi (BI) + * Cameroon (CM) + * Cape Verde (CV) + * Iran (IR) + +__[Version 2.1.0](https://github.com/globalcitizen/php-iban/releases/tag/v2.1.0)__ has been released. +Currently unofficial IBAN country codes are being integrated, and the process remains ongoing. A new flag has been created to check whether a country is an official, SWIFT-issued record or not. The following new countries have therefore been added. + * Algeria (DZ) + * Angola (AO) + * Benin (BJ) + +Note also that the IIBAN (AA) record has been marked unofficial, and features listed in `docs/TODO` have been migrated to Github issues and that file deleted. + +__[Version 2.0.1](https://github.com/globalcitizen/php-iban/releases/tag/v2.0.1)__ has been released. This is to celebrate real testing, composer support, as well as finally catching up with changes. This version should be up to date with all registry changes to the present, including changes or additions to the countries: + * IIBAN (AA) + * Brazil (BR) + * Costa Rica (CR) + * Kazakhstan (KZ) + * Kosovo (XK) + * Kuwait (KW) + * Saint Barthelemy (BL) + * Saint Lucia (LC) + * Saint Martin (French Part) (MF) + * Sao Tome and Principe (ST) + * Timor Leste (TL) + * Turkey (TR) + +__[Version 1.6.0](https://github.com/globalcitizen/php-iban/releases/tag/v1.6.0)__ has been released. This version features more registry corrections (newly added territories with faulty data, bad checksums in sample IBANs, etc.) as well as enhanced testing routines, extended documentation, and corrected documentation. All users are advised to upgrade. We now have automated test script execution with Travis CI, to provide additional robustness for all committed code. This took longer than expected as unfortunately I picked the exact time Travis broke their build logs - https://www.traviscistatus.com/incidents/fcllblkclgmb - to see what all the fuss was about... proving again that cloud computing is just *great* for breaking things unexpectedly. Because they want to hide things, there was literally no debug output whatsoever, and I was led to believe this was my fault. Fellow programmers, behold: it is the dawning of the age of the mystical fail. + +__[Version 1.5.0](https://github.com/globalcitizen/php-iban/releases/tag/v1.5.0)__ has been released. There are no code changes, but we now have http://packagist.org/ integration, hopefully this triggers it to start working. If you use packagist, you can now add the library to your project by just running `composer require globalcitizen/php-iban` (thanks to @acoulton for pointing the way) + +__[Version 1.4.9](https://github.com/globalcitizen/php-iban/releases/tag/v1.4.9)__ has been released using the new Github-based release process. Hopefully this provides a solid anchor point for those bundling the library with other software. We also have a contributed composer metadata file to ease integration. +New IBAN registry URLs integrated. +Removed old SVN tag/trunk structure. + +News: July 2015 +--------------- +Corrected SWIFT URL to IBAN page. +Emphasized mistranscription error support. + +News: March 2015 +---------------- +Finally, google has killed `code.google.com` and we have migrated to Github! Once the old `trunk`/`tag` structure (lingering from `svn`) is cleaned up and this document translated from the old wiki format to markdown, a new version will be issued. + +News: June 2014 +--------------- + +__Version 1.4.6__ has been released: + * Fixes for Jordan and Qatar. Turns out both of them have broken TXT registry entries, PDF entries differ and the PDF is the one to go for (familiar story). + * Some further improvements. + +Unfortunately, Google now requires `code.google.com` projects to use Google Drive. I tried to use Google Drive (sign up for a new account, jump through email hoops, get treated as a robot, learn stupid new touchy-feely-friendly interface, get meaningless error messages like 'Your sharing limit has been exceeded' (with 2x290KB files on a new account I was told to create) and lost patience entirely. + +So for the moment, you'll just have to download using `git`, instead. I will migrate `php-iban` to Github shortly. Google really is a pain in the ass recently, what with all of this Google+ and Google Drive junk, ruining Picasa, ruining Sketchup by lack of attention, etc. What are they thinking? + +News: March 2014 +---------------- +__Version 1.4.5__ has been released: + * Addition of Jordan and Qatar + * Minor changes to documentation and support scripts. + +__Version 1.4.4__ has been released: + * Fix SEPA status of Croatia (HR) + * Subsqeuent SEPA status audit based upon https://en.wikipedia.org/wiki/Single_Euro_Payments_Area turned up some other status issues (this information is not contained within the official IBAN registry) + * Faroe Islands, Greenland, San Marino status fixed. Everything else apparently hunky dory. + +*The project source code repository has switched from `svn` (ugh) to `git` (yay!)*. + * This should make future changes less painful. + + +News: September 2013 +-------------------- +__Version 1.4.3__ has been released: + * Add Aland Islands (AX), part of Finland (FI) that is only documented in the SEPA status field of Finland and does not have its own entry or mention elsewhere in the IBAN registry document. + * Consider but do not add either of the somewhat similar Canary Islands (CI) or Ceuta/Melilla (EA) - both minor territories of Spain (ES) - due to lack of any evidence of usage. + * Fix SEPA status for Spain (ES), Finland (FI), Porgual (PT) due to registry values being mixed with free text. + * Document this and further issues with the official IBAN registry document, both as documentation in `docs/COMEDY-OF-ERRORS` and inline within the registry converter. + * Update human country name of Palestine to better mirror current registry document ("State of" is dropped as is the reigning style, so simply "Palestine" is presented) + * Updating an outstanding last modified date within the registry from the previous release + +News: August 2013 +----------------- +__Version 1.4.2__ has been released: + * Resolve issue #19: incorrect SEPA status of France/French territories due to a parser bug. (Thanks to the reporter) + +__Version 1.4.1__ has been released: + * Requests + * Attempts to intelligently calculate the 'account' portion of a BBAN based upon the (non-)presence of a branch ID and bank ID portion, by request (for Germany/Austria. Previously this was requested for the Netherlands, however this solution should fix results for everyone!) + * Add 'IIBAN' prefix removal support to machine format conversion function + * Add _gmp_ disable flag (`$__disable_iiban_gmp_extension=true;`) + * Silence warnings on some PHP engine configurations + * Update Brazil record (minor) + * No longer redistribute IBAN registry in .txt format + * Improve inline documentation + +News: June 2013 +--------------- +__Version 1.4.1__ is still being prepared, squashing some bugs and updating the registry ... meanwhile, it has come to my attention that we have been featured in the Code Candy blog! http://www.codecandies.com/2012/05/30/no-exceptions/ Hooray for the German sense of humour! Hahah. + +News: March 2013 +---------------- +__Version 1.4.0__ has been released: + * Resolves an issue reported affecting the last few versions when attempting to generate a correct checksum for a checksum-invalid IBAN. + * Adds `VERSION` file, to include hard version information in source tree, by request. + +News: February 2013 +------------------- +__Version 1.3.9__ has been released: + * Resolves issue reported in 1.3.7 re-enables the more efficient PHP _gmp_ library based checksum code (thanks to rpkamp) + +__Version 1.3.8__ has been released: + * An error in checksum processing for some IBANs using the new _gmp_ library based MOD97 routine (_only affects users with php-iban 1.3.7 and the PHP _gmp_ library enabled_) has been reported. As an immediate workaround 1.3.8 is being released with the following changes: + ** Code from 1.3.6 + ** Registry from 1.3.7 + +__Version 1.3.7__ has been released: + * Added Brazil + * Added two new French overseas territories + * Reduced 'Moldova' to normalized short-form name + * Large CPU efficiency improvement in IBAN validation routine (16x if PHP _gmp_ extension is installed, 5x otherwise. Special thanks to algorithmic contributor Chris and to engineers everywhere upholding the Germanic tradition of precision and efficiency! Alas, I am but part-German, for shame...) + * Minor internal/tool updates + * Some comedy of errors additions + +News: November 2012 +------------------- + +__Version 1.3.6__ has been released: + * Update IIBAN format for latest IETF draft. + +News: October 2012 +------------------ + +__Version 1.3.5__ has been released: + * Correct lack of support for lower case alphabetic characters (ie. non ECBS-compliant) in human to machine format conversion function. + +__Version 1.3.4__ has been released: + * Add reference to the latest ECBS recommendations and include them in documentation. + +__Version 1.3.3__ has been released: + * Very minor efficiency improvement. + +News: September 2012 +-------------------- + +__Version 1.3.2__ has been released: + * Registry updates + * Added Palestinian Territories + * Moldova fixed its format + * Finland fixed its bank identifier location + * Saudi Arabia - remove spurious trailing space in example + +News: June 2012 +--------------- + +__Version 1.3.1__ has been released: + * New countries added + * Azerbaijan (AZ) + * Costa Rica (CR) + * Guatemala (GT) + * Moldova (MD) + * Pakistan (PK) + * British Virgin Islands (VG) + * Miscellaneous updates + * Normalize/simplify examples (FI,PT,SA) + * Normalize/simplify human country name (BH,LI,MK) + * Documentation updates + +News: December 2011 +------------------- +__Version 1.3.0__ has been released. This release adds mistranscription error suggestion support. + +__Version 1.2.0__ has been released. This release adds Internet International Bank Account Number (IIBAN) support, as per the current IIBAN Internet Draft at http://tools.ietf.org/html/draft-iiban-01 + +News: September 2011 +-------------------- +__Version 1.1.2__ has been released. This adds long open tags to the main library file in order to simplify deployment on many default PHP installations. + +News: August 2011 +----------------- +__Version 1.1.1__ has been released. This fixes a typo in a function call in the new OO wrapper. Non OO users do not need to upgrade. + +News: July 2011 +--------------- +__Version 1.1.0__ has been released. This version adds an object oriented wrapper library and related updates to documentation and test scripts. It is not critical for existing users to upgrade. + +__Version 1.0.0__ has been released. This version includes the following changes: + * *Support for the SEPA flag* ("Is this country a member of the Single Euro Payments Area?"), both in the registry and with a new function `iban_country_is_sepa($iban_country)` + * *Placeholder support for converting machine format IBAN to human format* (simply adds a space every four characters) with the function `iban_to_human_format($iban)` + * *Fixed a series of domestic example issues* in the registry file that had been imported from SWIFT's own broken IBAN registry + * *Normalised example fields* in the registry to better facilitate use in automated contexts (Austria, Germany, etc.) + * *Updated test code* + * *Added a significant amount of new documentation* + * *Reorganised file layout• + * *Moved to _x.y.z_ format versioning and use of subversion 'tags'* in conjunction with the 1.0.0 release. + +--- + +Earlier in the month... *Small maintenance release*, not critical. + * The _split()_ function has been replaced with _explode()_ to prevent warnings (or error on _very_ new PHP engines) + * Resolved an issue on PHP environments configured to display warnings would display a warning when an IBAN input to be validated did not include a prefix that was a valid IBAN country code. (Nobody should be running production PHP environments with such warnings enabled, anyway!) + +News: June 2011 +--------------- + * We are now well over 1000 downloads: not bad considering how specific this project is! + * A *new version* has been released that fixes many important changes to the official registry, plus adds some new features. + * *Add New French Territories* (GF,GP,MQ,RE) + Older versions of the specification did not include the GF,GP,MQ,RE French territories, only the PF,TF,YT,NC,PM,WF French territories. The new territories have now been added to the database. + * *Add New Countries* + We welcome Bahrain (BH), Dominican Republic (DO), Khazakstan (KZ), United Arab Emirates (AE) to the database. + * *Format/example updates* + There have apparently been some minor format/example changes, these have been rolled in to existing countries. + * *Inclusion of altered IBAN_Registry.txt* + Errors and omissions have been found within the official IBAN_Registry.txt file, namely the exclusion of Khazakstan (KZ) and only partial information on Kuwait (KW), and errors in both of these countries' PDF specifications. This is SWIFT's fault: shame on them! I suspect they have changed staff recently. Anyway, a version of IBAN_Registry.txt with these problems solved is now distributed along with php-iban. + * *Fix for Tunisia* + Strangely I visited Tunisia during the revolution in January this year. Sorry to the Tunisian people for getting their IBAN format wrong! TN59 + 20 digits is the correct format. This is now included in the new registry file. + * *Fix for Albania* + The SWIFT format information was updated for Albania. (Did not affect validation, since this uses regular expressions which were already correct) + * *Additional and revised documentation* + Further documentation has been added to the project. + * *Automated IBAN_Registry.txt fix/conversion tool* + A new _convert-registry_ tool has been added to the project that attempts to automatically normalise/fix problems with the official SWIFT .txt specification as much as possible. Note that this is not enough to get a good registry.txt file (the internal format used by php-iban) as SWIFT's .txt release excludes entire countries in the PDF specification. In addition, there are some errors in the PDF specification that need to be manually resolved at present. These can be seen resolved in the _IBAN_Registry.txt_ file. + +News: December 2009 +------------------- + +*We now have a http://groups.google.com/group/php-iban-users mailing list. Feel free to post your feedback, queries or suggestions - we'd love to know how you are using the library. To date, the project has reached over 400 downloads and still going strong, with more than one new user per day - a pretty good showing for a specialised library! + +*__version 12__ has been released. The registry file has been improved, partly as a result of user reports and partly as a result of issues uncovered while performing automated tests against version 11. + + * *Corrected header row* + Two columns were not represented in the title (`bban_length` and `iban_length`). They have now been added. + + * *Fixes to registry entries for French Territories* (PF,TF,YT,NC,PM,WF) + French territories are not explicitly included in the SWIFT specification textfile. + They were duplicated from France according to an unstructured comments against + that entry. Example IBANs were then made for illustrative purposes by simply + modifying the country prefix without regenerating the checksums. The IBAN + examples included for these territories should now be correct. + + * *Gibraltar and Hungary* (GI,HU) + Fixed a bug where both territories had a superfluous colon appended to their regular expressions after initial document conversion, which was causing validation failures for all IBANs in those countries. + + * *Mauritius* (MU) + Corrected IBAN length expectation from 31 to 30. + + * *Sweden* (SE) + Example IBAN had been manually modified from IBAN specification example early in development and did not pass checksum. The IBAN official example has been restored. + + * *Tunisia* (TN) + Corrected improper validation strings caused by a bug in initial document conversion (IBAN format-specifier to regular-expression conversion function). + + +Documentation (Procedural/Recommended) +====================================== + +```php +require_once('php-iban.php'); +# ... your code utilising IBAN functions... +``` + +Validation Functions +-------------------- + +```php +# Verify an IBAN number. +# An optional second argument specifies $machine_format_only (default is false) +# If true, the function will not tolerate unclean inputs +# (eg. spaces, dashes, leading 'IBAN ' or 'IIBAN ', lower case) +# If false (default), input can be in either: +# - printed ('IIBAN xx xx xx...' or 'IBAN xx xx xx...'); or +# - machine ('xxxxx') +# ... string formats. +# Returns true or false. +if(!verify_iban($iban,$machine_format_only=false)) { + # ... +} + +# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class +if(!iban_verify_checksum($iban)) { + # ... +} + +# Suggest what the user really meant in the case of transcription errors +$suggestions = iban_mistranscription_suggestions($bad_iban); +if(count($suggestions) == 1) { + print "You really meant " . $suggestions[0] . ", right?\n"; +} + +# Find the correct checksum for an IBAN +$correct_checksum = iban_find_checksum($iban); + +# Set the correct checksum for an IBAN +$fixed_iban = iban_set_checksum($iban); + +# Verify the pre-IBAN era, BBAN-level national checksum for those countries that +# have such a system and we have implemented. +# (Returns '' if unimplemented, true or false) +$result = iban_verify_nationalchecksum($iban); +if($result == '') { + print "National checksum system does not exist or remains unimplemented for the country of IBAN '$iban'.\n"; +} +elseif($result == true) { + print "IBAN '$iban' passes the national checksum algorithm for its country.\n"; +} +else { + print "IBAN '$iban' FAILS the national checksum algorithm for its country.\n"; +} + +# Set the pre-IBAN era, BBAN-level national checksum for those countries that +# have such a system, where that system results in a dedicated checksum +# substring, and that we have implemented. +# (Returns '' if unimplemented, or the corrected string) +# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum) +$national_checksum_algorithm_valid_iban = iban_set_nationalchecksum($iban); + +# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum +# for those countries that have such a system, where that system results in +# a dedicated checksum substring, and that we have implemented. +# (Returns '' if unimplemented, or the expected national checksum substring) +$expected_national_checksum = iban_find_nationalchecksum($iban); +``` + + +Utility Functions +----------------- + +```php +# Convert an IBAN to machine format. To do this, we +# remove IBAN from the start, if present, and remove +# non basic roman letter / digit characters +$machine_iban = iban_to_machine_format($iban); + +# Convert an IBAN to human format. To do this, we +# add a space every four characters. +$human_iban = iban_to_human_format($iban); + +# Convert an IBAN to obfuscated format for relative +# identification. To do this, we replace all but the +# leading country code and final four characters with +# asterisks. +$obfuscated_iban = iban_to_obfuscated_format($iban); +``` + + +IBAN Country-Level Functions +---------------------------- +```php +# Get the name of an IBAN country +$country_name = iban_country_get_country_name($iban_country); + +# Get the domestic example for an IBAN country +$country_domestic_example = iban_country_get_domestic_example($iban_country); + +# Get the BBAN example for an IBAN country +$country_bban_example = iban_country_get_bban_example($iban_country); + +# Get the BBAN format (in SWIFT format) for an IBAN country +$country_bban_format_as_swift = iban_country_get_bban_format_swift($iban_country); + +# Get the BBAN format (as a regular expression) for an IBAN country +$country_bban_format_as_regex = iban_country_get_bban_format_regex($iban_country); + +# Get the BBAN length for an IBAN country +$country_bban_length = iban_country_get_bban_length($iban_country); + +# Get the IBAN example for an IBAN country +$country_iban_example = iban_country_get_iban_example($iban_country); + +# Get the IBAN length for an IBAN country +$country_iban_length = iban_country_get_iban_length($iban_country); + +# Get the IBAN format (in SWIFT format) for an IBAN country +$country_iban_format_as_swift = iban_country_get_iban_format_swift ($iban_country); + +# Get the IBAN format (as a regular expression) for an IBAN country +$country_iban_format_as_regex = iban_country_get_iban_format_regex($iban_country); + +# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area) +if(!iban_country_is_sepa($iban_country)) { + # ... do something xenophobic ... +} + +# Get the bank ID start offset for an IBAN country +$country_bankid_start_offset = iban_country_get_bankid_start_offset($iban_country); + +# Get the bank ID stop offset for an IBAN country +$country_bankid_stop_offset = iban_country_get_bankid_stop_offset($iban_country); + +# Get the branch ID start offset for an IBAN country +$country_branchid_start_offset = iban_country_get_branchid_start_offset($iban_country); + +# Get the branch ID stop offset for an IBAN country +$country_branchid_stop_offset = iban_country_get_branchid_stop_offset($iban_country); + +# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A') +$country_registry_edition = iban_country_get_registry_edition($iban_country); + +# Determine whether an IBAN country is an official, SWIFT issued country record +if(!iban_country_get_country_swift_official($iban_country)) { + # ... do something against decentralization ... +} + +# Get the IANA code for an IBAN country +$country_iana = iban_country_get_iana($iban_country); + +# Get the ISO3166-1 alpha-2 code for an IBAN country +$country_iso3166 = iban_country_get_iso3166($iban_country); + +# Get the parent registrar IBAN country of an IBAN country +# (Returns '' in the normal case that the country is independently registered) +$registrar_country = iban_country_get_parent_registrar($iban_country); +if($registrar_country=='') { + print "The mighty nation of '$iban_country' stands strong and proud...\n"; + print " ... with its own heirarchy of bureaucrats!\n"; +} +else { + print "It has been foretold that the downtrodden natives of '$iban_country' will one day\n"; + print "rise up and throw off the shackles of the evil '$registrar_country' oppressors!\n"; +} + +# Get the official currency of an IBAN country as an ISO4217 alpha code +# (Returns '' in the Internet (IIBAN) case, ie. no official currency) +$official_currency = iban_country_get_currency_iso4217($iban_country); +if($official_currency == '') { + print "There is no official currency for the IBAN country '$iban_country'.\n"; +} + +# Get the URL of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +$central_bank_url = iban_country_get_central_bank_url($iban_country); + +# Get the name of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +$central_bank_name = iban_country_get_central_bank_name($iban_country); + +# Get the membership type of the country +# There are four types of memberships: +# * EU-Member States (eu_member) +# * EFTA-Member States (efta_member) +# * Other Memberships, which have monetary agreements with the EU (other_member) +# * Non-Members, which don't belong to the EU or have agreements (non_member) +$country_membership = iban_country_get_membership($iban_country); + +# Get if the country is a eu member state +# (Note: Returns true, if member state; false otherwise) +$country_membership = iban_country_get_is_eu_member($iban_country); +``` + + +Parsing Functions +----------------- +```php +# Get an array of all the parts from an IBAN +$iban_parts = iban_get_parts($iban); + +# Get the country part from an IBAN +$iban_country = iban_get_country_part($iban); + +# Get the BBAN part from an IBAN +$bban = iban_get_bban_part($iban); + +# Get the Bank ID (institution code) from an IBAN +$bank = iban_get_bank_part($iban); + +# Get the Branch ID (sort code) from an IBAN +# (NOTE: only available for some countries) +$sortcode = iban_get_branch_part($iban); + +# Get the (branch-local) account ID from an IBAN +# (NOTE: only available for some countries) +$account = iban_get_account_part($iban); + +# Get the checksum part from an IBAN +$checksum = iban_get_checksum_part($iban); + +# Get the national checksum part from an IBAN (if it exists) +$checksum = iban_get_nationalchecksum_part($iban); +``` + + +Documentation (Object Oriented Wrapper/Discouraged) +=================================================== + +OO use is discouraged as there is a present-day trend to overuse the model. However, if you prefer OO PHP then by all means use the object oriented wrapper, described below. +```php +require_once('oophp-iban.php'); +# ... your code utilising object oriented PHP IBAN functions... +``` + +Validation Functions +-------------------- +```php +# Example instantiation +$iban = 'AZ12345678901234' +$myIban = new IBAN($iban); + +# Verify an IBAN number. +# Tolerates spaces, prefixes "IBAN ...", dashes, lowercase input, etc. +# Returns true or false. +if(!$myIban->Verify()) { + # ... +} +# Verify an IBAN number in machine format only. +# Does not tolerate lowercase input, separators, whitespace or prefixes. +# Returns true or false. +if(!$myIban->VerifyMachineFormatOnly()) { + # ... +} + +# Check the checksum of an IBAN - code modified from Validate_Finance PEAR class +if(!$myIban->VerifyChecksum()) { + # ... +} + +# Suggest what the user really meant in the case of mistranscription errors +$suggestions = $badIban->MistranscriptionSuggestions(); +if(count($suggestions)==1) { + print "You really meant " . $suggestions[0] . ", right?\n"; +} + +# Find the correct checksum for an IBAN +$correct_checksum = $myIban->FindChecksum(); + +# Set the correct checksum for an IBAN +$fixed_iban = $myIban->SetChecksum() + +# Verify the pre-IBAN era, BBAN-level national checksum for those countries that +# have such a system and we have implemented. +# (Returns '' if unimplemented, true or false) +$result = $myIban->VerifyNationalChecksum(); +if($result == '') { + print "National checksum system does not exist or remains unimplemented for this IBAN's country.\n"; +} +elseif($result == true) { + print "IBAN passes the national checksum algorithm for its country.\n"; +} +else { + print "IBAN FAILS the national checksum algorithm for its country.\n"; +} + +# Set the pre-IBAN era, BBAN-level national checksum for those countries that +# have such a system, where that system results in a dedicated checksum +# substring, and that we have implemented. +# (Returns '' if unimplemented, or the corrected string) +# (NOTE: On success, the function also subsequently recalculates the IBAN-level checksum) +$myIban->SetNationalChecksum(); + +# Determine, but do not set, the pre-IBAN era, BBAN-level national checksum +# for those countries that have such a system, where that system results in +# a dedicated checksum substring, and that we have implemented. +# (Returns '' if unimplemented, or the expected national checksum substring) +$national_checksum = $myIban->FindNationalChecksum(); +``` + +Utility Functions +----------------- + +```php +# Convert an IBAN to machine format. To do this, we +# remove IBAN from the start, if present, and remove +# non basic roman letter / digit characters +$machine_iban = $myIban->MachineFormat(); + +# Convert an IBAN to human format. To do this, we +# add a space every four characters. +$human_iban = $myIban->HumanFormat(); + +# Convert an IBAN to obfuscated format for relative +# identification. To do this, we replace all but the +# leading country code and final four characters with +# asterisks. +$obfsucated_iban = $myIban->ObfuscatedFormat(); +``` + +IBAN Country-Level Functions +---------------------------- + +```php +# To list countries, use the IBAN Class... +$myIban->Countries(); + +# ... everything else is in the IBANCountry class. + +# Example instantiation +$countrycode = 'DE'; +$myCountry = new IBANCountry($countrycode); + +# Get the country code of an IBAN country +$country_code = $myCountry->Code(); + +# Get the name of an IBAN country +$country_name = $myCountry->Name(); + +# Get the domestic example for an IBAN country +$country_domestic_example = $myCountry->DomesticExample(); + +# Get the BBAN example for an IBAN country +$country_bban_example = $myCountry->BBANExample(); + +# Get the BBAN format (in SWIFT format) for an IBAN country +$country_bban_format_as_swift = $myCountry->BBANFormatSWIFT(); + +# Get the BBAN format (as a regular expression) for an IBAN country +$country_bban_format_as_regex = $myCountry->BBANFormatRegex(); + +# Get the BBAN length for an IBAN country +$country_bban_length = $myCountry->BBANLength(); + +# Get the IBAN example for an IBAN country +$country_iban_example = $myCountry->IBANExample(); + +# Get the IBAN length for an IBAN country +$country_iban_length = $myCountry->IBANLength(); + +# Get the IBAN format (in SWIFT format) for an IBAN country +$country_iban_format_as_swift = $myCountry->IBANFormatSWIFT(); + +# Get the IBAN format (as a regular expression) for an IBAN country +$country_iban_format_as_regex = $myCountry->IBANFormatRegex(); + +# Determine whether an IBAN country is a member of SEPA (Single Euro Payments Area) +if(!$myCountry->IsSEPA()) { + # ... do something xenophobic ... +} + +# Get the bank ID start offset for an IBAN country +$country_bankid_start_offset = $myCountry->BankIDStartOffset(); + +# Get the bank ID stop offset for an IBAN country +$country_bankid_stop_offset = $myCountry->BankIDStopOffset(); + +# Get the branch ID start offset for an IBAN country +$country_branchid_start_offset = $myCountry->BranchIDStartOffset(); + +# Get the branch ID stop offset for an IBAN country +$country_branchid_stop_offset = $myCountry->BranchIDStopOffset(); + +# Get the national checksum start offset for an IBAN country +$country_nationalchecksum_start_offset = $myCountry->NationalChecksumStartOffset(); + +# Get the national checksum stop offset for an IBAN country +$country_nationalchecksum_stop_offset = $myCountry->NationalChecksumStopOffset(); + +# Get the registry edition for an IBAN country (note: IIBAN country 'AA' returns 'N/A') +$country_registry_edition = $myCountry->RegistryEdition(); + +# Determine whether an IBAN country is an official, SWIFT issued country record +if(!$myCountry->SWIFTOfficial()) { + # ... do something against decentralization ... +} + +# Get the IANA code for an IBAN country +$country_iana = $myCountry->IANA(); + +# Get the ISO3166-1 alpha-2 code for an IBAN country +$country_iso3166 = $myCountry->ISO3166(); + +# Get the parent registrar IBAN country of an IBAN country +# (Returns '' in the normal case that the country is independently registered) +$registrar_country = $myCountry->ParentRegistrar(); +if($registrar_country=='') { + print "The mighty nation of '$iban_country' stands strong and proud...\n"; + print " ... with its own heirarchy of bureaucrats!\n"; +} +else { + print "It has been foretold that the downtrodden natives of '$iban_country' will one day\n"; + print "rise up and throw off the shackles of the evil '$registrar_country' oppressors!\n"; +} + +# Get the official currency of an IBAN country as an ISO4217 alpha code +# (Returns '' in the Internet (IIBAN) case, ie. no official currency) +$official_currency = $myCountry->CurrencyISO4217(); +if($official_currency == '') { + print "There is no official currency for the IBAN country '$iban_country'.\n"; +} + +# Get the URL of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +$central_bank_url = $myCountry->CentralBankURL(); + +# Get the name of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +$central_bank_name = $myCountry->CentralBankName(); +``` + + +Parsing Functions +----------------- + +```php +# Get an array of all the parts from an IBAN +$iban_parts = $myIban->Parts(); + +# Get the country part from an IBAN +$iban_country = $myIban->Country(); + +# Get the checksum part from an IBAN +$checksum = $myIban->Checksum(); + +# Get the BBAN part from an IBAN +$bban = $myIban->BBAN(); + +# Get the Bank ID (institution code) from an IBAN +$bank = $myIban->Bank(); + +# Get the Branch ID (sort code) from an IBAN +# (NOTE: only available for some countries) +$sortcode = $myIban->Branch(); + +# Get the (branch-local) account ID from an IBAN +# (NOTE: only available for some countries) +$account = $myIban->Account(); + +# Get the national checksum part from an IBAN +# (NOTE: only available for some countries) +$checksum = $myIban->NationalChecksum(); +``` + + +IBAN Libraries in Other Languages +--------------------------------- +See for yourself how our approach and features compare favourably with all of these libraries... + +| Language | Library +| ---------- | --------------------------------------------------------- +| C# | [iban-api-net](https://github.com/aventum-solutions/iban-api-net) +| Java | [iban-api-java](https://github.com/aventum-solutions/iban-api-java) +| Java | [iban4j](https://github.com/arturmkrtchyan/iban4j) +| Java | [java-iban](https://github.com/barend/java-iban) +| Javascript | [iban.js](https://github.com/arhs/iban.js) +| Javascript | [ng-iban](https://github.com/mmjmanders/ng-iban) +| ObjectiveC | [IBAN-Helper](https://github.com/xs4some/IBAN-Helper) +| ObjectiveC | [ibanValidation](https://github.com/smoldovansky/ibanValidation) +| Perl | [various CPAN libraries](http://search.cpan.org/search?query=iban&mode=all) +| Python | [django-localflavor](https://github.com/django/django-localflavor) +| Python | [iban-generator](https://github.com/lkraider/iban-generator) +| Ruby | [bank](https://github.com/max-power/bank) +| Ruby | [iban-tools](https://github.com/iulianu/iban-tools) +| Ruby | [ibandit](https://github.com/gocardless/ibandit) +| Ruby | [ibanizator](https://github.com/softwareinmotion/ibanizator) +| Ruby | [iso-iban](https://github.com/apeiros/iso-iban) diff --git a/htdocs/includes/php-iban/composer.json b/htdocs/includes/php-iban/composer.json new file mode 100644 index 00000000000..df0516f9a0b --- /dev/null +++ b/htdocs/includes/php-iban/composer.json @@ -0,0 +1,12 @@ +{ + "name": "globalcitizen/php-iban", + "description": "php-iban is a library for parsing and validating IBAN (and IIBAN) bank account information.", + "license": "LGPL-3.0-only", + "require": { + "php": "^5.4 || ^5.5 || ^5.6 || ^7.0 || ^7.4 || ^8.0 || ^8.1" + }, + "autoload": { + "files": ["oophp-iban.php","php-iban.php"] + } +} + diff --git a/htdocs/includes/php-iban/oophp-iban.php b/htdocs/includes/php-iban/oophp-iban.php index 76e3cd0d06b..2ef17a7112e 100644 --- a/htdocs/includes/php-iban/oophp-iban.php +++ b/htdocs/includes/php-iban/oophp-iban.php @@ -1,4 +1,5 @@ iban = $iban; } - public function Verify($iban='') { - if($iban!='') { return verify_iban($iban); } - return verify_iban($this->iban); + public function Verify($iban='',$machine_format_only=false) { + if($iban!='') { return verify_iban($iban,$machine_format_only); } + return verify_iban($this->iban,$machine_format_only); # we could throw exceptions of various types, but why - does it really # add anything? possibly some slightly better user feedback potential. # however, this can be written by hand by performing individual checks @@ -19,6 +20,11 @@ Class IBAN { # maintenance/documentation cost, i say, therefore: no. no exceptions. } + public function VerifyMachineFormatOnly($iban='') { + if($iban!='') { return verify_iban($iban,true); } + return verify_iban($this->iban,true); + } + public function MistranscriptionSuggestions() { return iban_mistranscription_suggestions($this->iban); } @@ -31,6 +37,10 @@ Class IBAN { return iban_to_human_format($this->iban); } + public function ObfuscatedFormat() { + return iban_to_obfuscated_format($this->iban); + } + public function Country($iban='') { return iban_get_country_part($this->iban); } @@ -39,6 +49,10 @@ Class IBAN { return iban_get_checksum_part($this->iban); } + public function NationalChecksum($iban='') { + return iban_get_nationalchecksum_part($this->iban); + } + public function BBAN() { return iban_get_bban_part($this->iban); } @@ -59,6 +73,18 @@ Class IBAN { return iban_checksum_string_replace($this->iban); } + public function FindNationalChecksum() { + return iban_find_nationalchecksum($this->iban); + } + + public function SetNationalChecksum() { + $this->iban = iban_set_nationalchecksum($this->iban); + } + + public function VerifyNationalChecksum() { + return iban_verify_nationalchecksum($this->iban); + } + public function Parts() { return iban_get_parts($this->iban); } @@ -88,6 +114,10 @@ Class IBANCountry { $this->code = $code; } + public function Code() { + return $this->code; + } + public function Name() { return iban_country_get_country_name($this->code); } @@ -144,14 +174,57 @@ Class IBANCountry { return iban_country_get_branchid_stop_offset($this->code); } + public function NationalChecksumStartOffset() { + return iban_country_get_nationalchecksum_start_offset($this->code); + } + + public function NationalChecksumStopOffset() { + return iban_country_get_nationalchecksum_stop_offset($this->code); + } + public function RegistryEdition() { return iban_country_get_registry_edition($this->code); } + public function SWIFTOfficial() { + return iban_country_get_country_swift_official($this->code); + } + public function IsSEPA() { return iban_country_is_sepa($this->code); } + public function IANA() { + return iban_country_get_iana($this->code); + } + + public function ISO3166() { + return iban_country_get_iso3166($this->code); + } + + public function ParentRegistrar() { + return iban_country_get_parent_registrar($this->code); + } + + public function CurrencyISO4217() { + return iban_country_get_currency_iso4217($this->code); + } + + public function CentralBankURL() { + return iban_country_get_central_bank_url($this->code); + } + + public function CentralBankName() { + return iban_country_get_central_bank_name($this->code); + } + + public function Membership() { + return iban_country_get_membership($this->code); + } + + public function IsEuMember() { + return iban_country_get_is_eu_member($this->code); + } } ?> diff --git a/htdocs/includes/php-iban/php-iban.php b/htdocs/includes/php-iban/php-iban.php index e4ef4d8dd1d..902cc1e2669 100644 --- a/htdocs/includes/php-iban/php-iban.php +++ b/htdocs/includes/php-iban/php-iban.php @@ -1,16 +1,18 @@ 0) && (($i+1)%4==0)) { $human_iban .= ' '; } + return wordwrap($iban,4,' ',true); +} + +# Convert an IBAN to obfuscated presentation. To do this, we +# replace the checksum and all subsequent characters with an +# asterisk, except for the final four characters, and then +# return in human format, ie. +# HU69107000246667654851100005 -> HU** **** **** **** **** **** 0005 +# +# We avoid the checksum as it may be used to infer the rest +# of the IBAN in cases where the country has few valid banks +# and branches, or other information about the account such +# as bank, branch, or date issued is known (where a sequential +# issuance scheme is in use). +# +# Note that output of this function should be presented with +# other information to a user, such as the date last used or +# the date added to their account, in order to better facilitate +# unambiguous relative identification. +function iban_to_obfuscated_format($iban) { + $iban = iban_to_machine_format($iban); + $tr = substr($iban,0,2); + for($i=2;$i iban_get_country_part($iban), - 'checksum' => iban_get_checksum_part($iban), - 'bban' => iban_get_bban_part($iban), - 'bank' => iban_get_bank_part($iban), - 'country' => iban_get_country_part($iban), - 'branch' => iban_get_branch_part($iban), - 'account' => iban_get_account_part($iban) + 'checksum' => iban_get_checksum_part($iban), + 'bban' => iban_get_bban_part($iban), + 'bank' => iban_get_bank_part($iban), + 'country' => iban_get_country_part($iban), + 'branch' => iban_get_branch_part($iban), + 'account' => iban_get_account_part($iban), + 'nationalchecksum' => iban_get_nationalchecksum_part($iban) ); } @@ -231,6 +254,18 @@ function iban_get_account_part($iban) { return ''; } +# Get the national checksum part from an IBAN +function iban_get_nationalchecksum_part($iban) { + $iban = iban_to_machine_format($iban); + $country = iban_get_country_part($iban); + $start = iban_country_get_nationalchecksum_start_offset($country); + if($start == '') { return ''; } + $stop = iban_country_get_nationalchecksum_stop_offset($country); + if($stop == '') { return ''; } + $bban = iban_get_bban_part($iban); + return substr($bban,$start,($stop-$start+1)); +} + # Get the name of an IBAN country function iban_country_get_country_name($iban_country) { return _iban_country_get_info($iban_country,'country_name'); @@ -301,33 +336,119 @@ function iban_country_get_branchid_stop_offset($iban_country) { return _iban_country_get_info($iban_country,'bban_branchid_stop_offset'); } +# Get the BBAN (national) checksum start offset for an IBAN country +# Returns '' when (often) not present) +function iban_country_get_nationalchecksum_start_offset($iban_country) { + return _iban_country_get_info($iban_country,'bban_checksum_start_offset'); +} + +# Get the BBAN (national) checksum stop offset for an IBAN country +# Returns '' when (often) not present) +function iban_country_get_nationalchecksum_stop_offset($iban_country) { + return _iban_country_get_info($iban_country,'bban_checksum_stop_offset'); +} + # Get the registry edition for an IBAN country function iban_country_get_registry_edition($iban_country) { return _iban_country_get_info($iban_country,'registry_edition'); } +# Is the IBAN country one official issued by SWIFT? +function iban_country_get_country_swift_official($iban_country) { + return _iban_country_get_info($iban_country,'country_swift_official'); +} + # Is the IBAN country a SEPA member? function iban_country_is_sepa($iban_country) { return _iban_country_get_info($iban_country,'country_sepa'); } +# Get the IANA code of an IBAN country +function iban_country_get_iana($iban_country) { + return _iban_country_get_info($iban_country,'country_iana'); +} + +# Get the ISO3166-1 alpha-2 code of an IBAN country +function iban_country_get_iso3166($iban_country) { + return _iban_country_get_info($iban_country,'country_iso3166'); +} + +# Get the parent registrar IBAN country of an IBAN country +function iban_country_get_parent_registrar($iban_country) { + return _iban_country_get_info($iban_country,'parent_registrar'); +} + +# Get the official currency of an IBAN country as an ISO4217 alpha code +# (Note: Returns '' if there is no official currency, eg. for AA (IIBAN)) +function iban_country_get_currency_iso4217($iban_country) { + return _iban_country_get_info($iban_country,'currency_iso4217'); +} + +# Get the URL of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +function iban_country_get_central_bank_url($iban_country) { + $result = _iban_country_get_info($iban_country,'central_bank_url'); + if($result!='') { $result = 'http://' . $result . '/'; } + return $result; +} + +# Get the name of an IBAN country's central bank +# (Note: Returns '' if there is no central bank. Also, note that +# sometimes multiple countries share one central bank) +function iban_country_get_central_bank_name($iban_country) { + return _iban_country_get_info($iban_country,'central_bank_name'); +} + # Get the list of all IBAN countries function iban_countries() { + _iban_load_registry(); global $_iban_registry; return array_keys($_iban_registry); } +# Get the membership of an IBAN country +# (Note: Possible Values eu_member, efta_member, other_member, non_member) +function iban_country_get_membership($iban_country) { + return _iban_country_get_info($iban_country,'membership'); +} + +# Get the membership of an IBAN country +# (Note: Possible Values eu_member, efta_member, other_member, non_member) +function iban_country_get_is_eu_member($iban_country) { + $membership = _iban_country_get_info($iban_country,'membership'); + if ($membership === 'eu_member') { + $result = true; + } else { + $result = false; + } + + return $result; +} + # Given an incorrect IBAN, return an array of zero or more checksum-valid # suggestions for what the user might have meant, based upon common # mistranscriptions. +# IDEAS: +# - length correction via adding/removing leading zeros from any single component +# - overlength correction via dropping final digit(s) +# - national checksum algorithm checks (apply same testing methodology, abstract to separate function) +# - length correction by removing double digits (xxyzabxybaaz = change aa to a, or xx to x) +# - validate bank codes +# - utilize format knowledge with regards to alphanumeric applicability in that offset in that national BBAN format +# - turkish TL/TK thing +# - norway NO gets dropped due to mis-identification with "No." for number (ie. if no country code try prepending NO) function iban_mistranscription_suggestions($incorrect_iban) { - + + # remove funky characters + $incorrect_iban = iban_to_machine_format($incorrect_iban); + # abort on ridiculous length input (but be liberal) $length = strlen($incorrect_iban); - if($length<5 || $length>34) { return array('(length bad)'); } + if($length<5 || $length>34) { return array('(supplied iban length insane)'); } # abort if mistranscriptions data is unable to load - if(!_iban_load_mistranscriptions()) { return array('(failed to load)'); } + if(!_iban_load_mistranscriptions()) { return array('(failed to load mistranscriptions)'); } # init global $_iban_mistranscriptions; @@ -396,7 +517,6 @@ function iban_mistranscription_suggestions($incorrect_iban) { # Load the IBAN registry from disk. global $_iban_registry; $_iban_registry = array(); -_iban_load_registry(); function _iban_load_registry() { global $_iban_registry; # if the registry is not yet loaded, or has been corrupted, reload @@ -407,14 +527,20 @@ function _iban_load_registry() { # loop through lines foreach($lines as $line) { if($line!='') { - # split to fields - $old_display_errors_value = ini_get('display_errors'); - ini_set('display_errors',false); - $old_error_reporting_value = ini_get('error_reporting'); - ini_set('error_reporting',false); - list($country,$country_name,$domestic_example,$bban_example,$bban_format_swift,$bban_format_regex,$bban_length,$iban_example,$iban_format_swift,$iban_format_regex,$iban_length,$bban_bankid_start_offset,$bban_bankid_stop_offset,$bban_branchid_start_offset,$bban_branchid_stop_offset,$registry_edition,$country_sepa) = explode('|',$line); - ini_set('display_errors',$old_display_errors_value); - ini_set('error_reporting',$old_error_reporting_value); + # avoid spewing tonnes of PHP warnings under bad PHP configs - see issue #69 + if(function_exists('ini_set')) { + # split to fields + $old_display_errors_value = ini_get('display_errors'); + ini_set('display_errors',false); + $old_error_reporting_value = ini_get('error_reporting'); + ini_set('error_reporting',false); + } + list($country,$country_name,$domestic_example,$bban_example,$bban_format_swift,$bban_format_regex,$bban_length,$iban_example,$iban_format_swift,$iban_format_regex,$iban_length,$bban_bankid_start_offset,$bban_bankid_stop_offset,$bban_branchid_start_offset,$bban_branchid_stop_offset,$registry_edition,$country_sepa,$country_swift_official,$bban_checksum_start_offset,$bban_checksum_stop_offset,$country_iana,$country_iso3166,$parent_registrar,$currency_iso4217,$central_bank_url,$central_bank_name,$membership) = explode('|',$line); + # avoid spewing tonnes of PHP warnings under bad PHP configs - see issue #69 + if(function_exists('ini_set')) { + ini_set('display_errors',$old_display_errors_value); + ini_set('error_reporting',$old_error_reporting_value); + } # assign to registry $_iban_registry[$country] = array( 'country' => $country, @@ -433,7 +559,17 @@ function _iban_load_registry() { 'bban_bankid_stop_offset' => $bban_bankid_stop_offset, 'bban_branchid_start_offset' => $bban_branchid_start_offset, 'bban_branchid_stop_offset' => $bban_branchid_stop_offset, - 'registry_edition' => $registry_edition + 'registry_edition' => $registry_edition, + 'country_swift_official' => $country_swift_official, + 'bban_checksum_start_offset' => $bban_checksum_start_offset, + 'bban_checksum_stop_offset' => $bban_checksum_stop_offset, + 'country_iana' => $country_iana, + 'country_iso3166' => $country_iso3166, + 'parent_registrar' => $parent_registrar, + 'currency_iso4217' => $currency_iso4217, + 'central_bank_url' => $central_bank_url, + 'central_bank_name' => $central_bank_name, + 'membership' => $membership ); } } @@ -448,6 +584,7 @@ function _iban_get_info($iban,$code) { # Get information from the IBAN registry by country / code combination function _iban_country_get_info($country,$code) { + _iban_load_registry(); global $_iban_registry; $country = strtoupper($country); $code = strtolower($code); @@ -483,4 +620,717 @@ function _iban_load_mistranscriptions() { return true; } +# Find the correct national checksum for an IBAN +# (Returns the correct national checksum as a string, or '' if unimplemented for this IBAN's country) +# (NOTE: only works for some countries) +function iban_find_nationalchecksum($iban) { + return _iban_nationalchecksum_implementation($iban,'find'); +} + +# Verify the correct national checksum for an IBAN +# (Returns true or false, or '' if unimplemented for this IBAN's country) +# (NOTE: only works for some countries) +function iban_verify_nationalchecksum($iban) { + return _iban_nationalchecksum_implementation($iban,'verify'); +} + +# Verify the correct national checksum for an IBAN +# (Returns the (possibly) corrected IBAN, or '' if unimplemented for this IBAN's country) +# (NOTE: only works for some countries) +function iban_set_nationalchecksum($iban) { + $result = _iban_nationalchecksum_implementation($iban,'set'); + if($result != '' ) { + $result = iban_set_checksum($result); # recalculate IBAN-level checksum + } + return $result; +} + +# Internal function to overwrite the national checksum portion of an IBAN +function _iban_nationalchecksum_set($iban,$nationalchecksum) { + $country = iban_get_country_part($iban); + $start = iban_country_get_nationalchecksum_start_offset($country); + if($start == '') { return ''; } + $stop = iban_country_get_nationalchecksum_stop_offset($country); + if($stop == '') { return ''; } + # determine the BBAN + $bban = iban_get_bban_part($iban); + # alter the BBAN + $firstbit = substr($bban,0,$start); # 'string before the checksum' + $lastbit = substr($bban,$stop+1); # 'string after the checksum' + $fixed_bban = $firstbit . $nationalchecksum . $lastbit; + # reconstruct the fixed IBAN + $fixed_iban = $country . iban_get_checksum_part($iban) . $fixed_bban; + return $fixed_iban; +} + +# Currently unused but may be useful for Norway. +# ISO7064 MOD11-2 +# Adapted from https://gist.github.com/andreCatita/5714353 by Andrew Catita +function _iso7064_mod112_catita($input) { + $p = 0; + for ($i = 0; $i < strlen($input); $i++) { + $c = $input[$i]; + $p = 2 * ($p + $c); + } + $p %= 11; + $result = (12 - $p) % 11; + if($result == 10) { $result = 'X'; } + return $result; +} + +# Currently unused but may be useful for Norway. +# ISO 7064:1983.MOD 11-2 +# by goseaside@sina.com +function _iso7064_mod112_goseaside($vString) { + $sigma = ''; + $wi = array(1, 2, 4, 8, 5, 10, 9, 7, 3, 6); + $hash_map = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); + $i_size = strlen($vString); + $bModify = '?' == substr($vString, -1); + $i_size1 = $bModify ? $i_size : $i_size + 1; + for ($i = 1; $i <= $i_size; $i++) { + $i1 = $vString[$i - 1] * 1; + $w1 = $wi[($i_size1 - $i) % 10]; + $sigma += ($i1 * $w1) % 11; + } + if($bModify) return str_replace('?', $hash_map[($sigma % 11)], $vString); + else return $hash_map[($sigma % 11)]; +} + +# ISO7064 MOD97-10 (Bosnia, etc.) +# (Credit: Adapted from https://github.com/stvkoch/ISO7064-Mod-97-10/blob/master/ISO7064Mod97_10.php) +function _iso7064_mod97_10($str) { + $ai=1; + $ch = ord($str[strlen($str)-1]) - 48; + if($ch < 0 || $ch > 9) return false; + $check=$ch; + for($i=strlen($str)-2;$i>=0;$i--) { + $ch = ord($str[$i]) - 48; + if ($ch < 0 || $ch > 9) return false; + $ai=($ai*10)%97; + $check+= ($ai * ((int)$ch)); + } + return (98-($check%97)); +} + +# Implement the national checksum for a Belgium (BE) IBAN +# (Credit: @gaetan-be) +function _iban_nationalchecksum_implementation_be($iban,$mode) { + if($mode != 'set' && $mode != 'find' && $mode != 'verify') { return ''; } # blank value on return to distinguish from correct execution + $nationalchecksum = iban_get_nationalchecksum_part($iban); + $account = iban_get_account_part($iban); + $account_less_checksum = substr($account,strlen($account)-2); + $expected_nationalchecksum = $account_less_checksum % 97; + if($mode=='find') { + return $expected_nationalchecksum; + } + elseif($mode=='set') { + return _iban_nationalchecksum_set($iban,$expected_nationalchecksum); + } + elseif($mode=='verify') { + return ($nationalchecksum == $expected_nationalchecksum); + } +} + +# MOD11 helper function for the Spanish (ES) IBAN national checksum implementation +# (Credit: @dem3trio, code lifted from Spanish Wikipedia at https://es.wikipedia.org/wiki/C%C3%B3digo_cuenta_cliente) +function _iban_nationalchecksum_implementation_es_mod11_helper($numero) { + if(strlen($numero)!=10) return "?"; + $cifras = Array(1,2,4,8,5,10,9,7,3,6); + $chequeo=0; + for($i=0; $i<10; $i++) { + $chequeo += substr($numero,$i,1) * $cifras[$i]; + } + $chequeo = 11 - ($chequeo % 11); + if ($chequeo == 11) $chequeo = 0; + if ($chequeo == 10) $chequeo = 1; + return $chequeo; +} + +# Implement the national checksum for a Spanish (ES) IBAN +# (Credit: @dem3trio, adapted from code on Spanish Wikipedia at https://es.wikipedia.org/wiki/C%C3%B3digo_cuenta_cliente) +function _iban_nationalchecksum_implementation_es($iban,$mode) { + if($mode != 'set' && $mode != 'find' && $mode != 'verify') { return ''; } # blank value on return to distinguish from correct execution + # extract appropriate substrings + $bankprefix = iban_get_bank_part($iban) . iban_get_branch_part($iban); + $nationalchecksum = iban_get_nationalchecksum_part($iban); + $account = iban_get_account_part($iban); + $account_less_checksum = substr($account,2); + # first we calculate the initial checksum digit, which is MOD11 of the bank prefix with '00' prepended + $expected_nationalchecksum = _iban_nationalchecksum_implementation_es_mod11_helper("00".$bankprefix); + # then we append the second digit, which is MOD11 of the account + $expected_nationalchecksum .= _iban_nationalchecksum_implementation_es_mod11_helper($account_less_checksum); + if($mode=='find') { + return $expected_nationalchecksum; + } + elseif($mode=='set') { + return _iban_nationalchecksum_set($iban,$expected_nationalchecksum); + } + elseif($mode=='verify') { + return ($nationalchecksum == $expected_nationalchecksum); + } +} + +# Helper function for the France (FR) BBAN national checksum implementation +# (Credit: @gaetan-be) +function _iban_nationalchecksum_implementation_fr_letters2numbers_helper($bban) { + $allNumbers = ""; + $conversion = array( + "A" => 1, "B" => 2, "C" => 3, "D" => 4, "E" => 5, "F" => 6, "G" => 7, "H" => 8, "I" => 9, + "J" => 1, "K" => 2, "L" => 3, "M" => 4, "N" => 5, "O" => 6, "P" => 7, "Q" => 8, "R" => 9, + "S" => 2, "T" => 3, "U" => 4, "V" => 5, "W" => 6, "X" => 7, "Y" => 8, "Z" => 9 + ); + for ($i=0; $i < strlen($bban); $i++) { + if(is_numeric($bban[$i])) { + $allNumbers .= $bban[$i]; + } + else { + $letter = strtoupper($bban[$i]); + if(array_key_exists($letter, $conversion)) { + $allNumbers .= $conversion[$letter]; + } + else { + return null; + } + } + } + return $allNumbers; +} + +# NOTE: Worryingly at least one domestic number found within CF online is +# not passing national checksum support. Perhaps banks do not issue +# with correct RIB (French-style national checksum) despite using +# the legacy format? Perhaps this is a mistranscribed number? +# http://www.radiomariacentrafrique.org/virement-bancaire.aspx +# ie. CF19 20001 00001 01401832401 40 +# The following two numbers work: +# http://fondationvoixducoeur.net/fr/pour-contribuer.html +# ie. CF4220002002003712551080145 and CF4220001004113717538890110 +# Since in the latter case the bank is the same as the former and +# the French structure, terminology and 2/3 correct is a fairly high +# correlation, we are going to assume that the first error is theirs. +# +# Implement the national checksum for a Central African Republic (CF) IBAN +function _iban_nationalchecksum_implementation_cf($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Chad (TD) IBAN +function _iban_nationalchecksum_implementation_td($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Comoros (KM) IBAN +function _iban_nationalchecksum_implementation_km($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Congo (CG) IBAN +function _iban_nationalchecksum_implementation_cg($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Djibouti (DJ) IBAN +function _iban_nationalchecksum_implementation_dj($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for an Equitorial Guinea (GQ) IBAN +function _iban_nationalchecksum_implementation_gq($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Gabon (GA) IBAN +function _iban_nationalchecksum_implementation_ga($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a Monaco (MC) IBAN +# (Credit: @gaetan-be) +function _iban_nationalchecksum_implementation_mc($iban,$mode) { + return _iban_nationalchecksum_implementation_fr($iban,$mode); +} + +# Implement the national checksum for a France (FR) IBAN +# (Credit: @gaetan-be, http://www.credit-card.be/BankAccount/ValidationRules.htm#FR_Validation and +# https://docs.oracle.com/cd/E18727_01/doc.121/e13483/T359831T498954.htm) +function _iban_nationalchecksum_implementation_fr($iban,$mode) { + if($mode != 'set' && $mode != 'find' && $mode != 'verify') { return ''; } # blank value on return to distinguish from correct execution + # first, extract the BBAN + $bban = iban_get_bban_part($iban); + # convert to numeric form + $bban_numeric_form = _iban_nationalchecksum_implementation_fr_letters2numbers_helper($bban); + # if the result was null, something is horribly wrong + if(is_null($bban_numeric_form)) { return ''; } + # extract other parts + $bank = substr($bban_numeric_form,0,5); + $branch = substr($bban_numeric_form,5,5); + $account = substr($bban_numeric_form,10,11); + # actual implementation: mod97( (89 x bank number "Code banque") + (15 x branch code "Code guichet") + (3 x account number "Numéro de compte") ) + $sum = (89*($bank+0)) + ((15*($branch+0))); + $sum += (3*($account+0)); + $expected_nationalchecksum = 97 - ($sum % 97); + if(strlen($expected_nationalchecksum) == 1) { $expected_nationalchecksum = '0' . $expected_nationalchecksum; } + # return + if($mode=='find') { + return $expected_nationalchecksum; + } + elseif($mode=='set') { + return _iban_nationalchecksum_set($iban,$expected_nationalchecksum); + } + elseif($mode=='verify') { + return (iban_get_nationalchecksum_part($iban) == $expected_nationalchecksum); + } +} + +# Implement the national checksum for a Norway (NO) IBAN +# (NOTE: Built from description at https://docs.oracle.com/cd/E18727_01/doc.121/e13483/T359831T498954.htm, not well tested) +function _iban_nationalchecksum_implementation_no($iban,$mode) { + if($mode != 'set' && $mode != 'find' && $mode != 'verify') { return ''; } # blank value on return to distinguish from correct execution + # first, extract the BBAN + $bban = iban_get_bban_part($iban); + # then, the account + $account = iban_get_account_part($iban); + # existing checksum + $nationalchecksum = iban_get_nationalchecksum_part($iban); + # bban less checksum + $bban_less_checksum = substr($bban,0,strlen($bban)-strlen($nationalchecksum)); + # factor table + $factors = array(5,4,3,2,7,6,5,4,3,2); + # calculate checksum + $total = 0; + for($i=0;$i<10;$i++) { + $total += $bban_less_checksum[$i] * $factors[$i]; + } + $total += $nationalchecksum; + # mod11 + $remainder = $total % 11; + # to find the correct check digit, we add the remainder to the current check digit, + # mod10 (ie. rounding at 10, such that 10 = 0, 11 = 1, etc.) + $calculated_checksum = ($nationalchecksum + $remainder)%10; + if($mode == 'find') { + if($remainder == 0) { return $nationalchecksum; } + else { + return $calculated_checksum; + } + } + elseif($mode == 'set') { + return _iban_nationalchecksum_set($iban,$calculated_checksum); + } + elseif($mode == 'verify') { + if($remainder == 0) { return true; } + return false; + } +} + +# ISO/IEC 7064, MOD 11-2 +# @param $input string Must contain only characters ('0123456789'). +# @output A 1 character string containing '0123456789X', +# or '' (empty string) on failure due to bad input. +# (Credit: php-iso7064 @ https://github.com/globalcitizen/php-iso7064) +function _iso7064_mod11_2($input) { + $input = strtoupper($input); # normalize + if(!preg_match('/^[0123456789]+$/',$input)) { return ''; } # bad input + $modulus = 11; + $radix = 2; + $output_values = '0123456789X'; + $p = 0; + for($i=0; $i $d) { + $checksum .= $i %2 !== 0 ? $d * 2 : $d; + } + return array_sum(str_split($checksum)) % 10; +} + +# Verhoeff checksum +# (Credit: Adapted from Semyon Velichko's code at https://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Verhoeff_Algorithm#PHP) +function _verhoeff($input) { + if($input == '' || preg_match('/[^0-9]/',$input)) { return ''; } # reject non-numeric input + $d = array( + array(0,1,2,3,4,5,6,7,8,9), + array(1,2,3,4,0,6,7,8,9,5), + array(2,3,4,0,1,7,8,9,5,6), + array(3,4,0,1,2,8,9,5,6,7), + array(4,0,1,2,3,9,5,6,7,8), + array(5,9,8,7,6,0,4,3,2,1), + array(6,5,9,8,7,1,0,4,3,2), + array(7,6,5,9,8,2,1,0,4,3), + array(8,7,6,5,9,3,2,1,0,4), + array(9,8,7,6,5,4,3,2,1,0) + ); + $p = array( + array(0,1,2,3,4,5,6,7,8,9), + array(1,5,7,6,2,8,3,0,9,4), + array(5,8,0,3,7,9,6,1,4,2), + array(8,9,1,6,0,4,3,5,2,7), + array(9,4,5,3,1,2,6,8,7,0), + array(4,2,8,6,5,7,3,9,0,1), + array(2,7,9,3,8,0,6,4,1,5), + array(7,0,4,6,9,1,3,2,5,8) + ); + $inv = array(0,4,3,2,1,5,6,7,8,9); + $r = 0; + foreach(array_reverse(str_split($input)) as $n => $N) { + $r = $d[$r][$p[($n+1)%8][$N]]; + } + return $inv[$r]; +} + +# Damm checksum +# (Credit: https://en.wikibooks.org/wiki/Algorithm_Implementation/Checksums/Damm_Algorithm#PHP) +function _damm($input) { + if($input=='' || preg_match('/[^0-9]/',$input)) { return ''; } # non-numeric input + // from http://www.md-software.de/math/DAMM_Quasigruppen.txt + $matrix = array( + array(0, 3, 1, 7, 5, 9, 8, 6, 4, 2), + array(7, 0, 9, 2, 1, 5, 4, 8, 6, 3), + array(4, 2, 0, 6, 8, 7, 1, 3, 5, 9), + array(1, 7, 5, 0, 9, 8, 3, 4, 2, 6), + array(6, 1, 2, 3, 0, 4, 5, 9, 7, 8), + array(3, 6, 7, 4, 2, 0, 9, 5, 8, 1), + array(5, 8, 6, 9, 7, 2, 0, 1, 3, 4), + array(8, 9, 4, 5, 3, 6, 2, 0, 1, 7), + array(9, 4, 3, 8, 6, 1, 7, 2, 0, 5), + array(2, 5, 8, 1, 4, 3, 6, 7, 9, 0), + ); + $checksum = 0; + for ($i=0; $i diff --git a/htdocs/includes/php-iban/registry.txt b/htdocs/includes/php-iban/registry.txt index ffe714139dd..1a7eb8f76f6 100644 --- a/htdocs/includes/php-iban/registry.txt +++ b/htdocs/includes/php-iban/registry.txt @@ -1,81 +1,117 @@ -country_code|country_name|domestic_example|bban_example|bban_format_swift|bban_format_regex|bban_length|iban_example|iban_format_swift|iban_format_regex|iban_length|bban_bankid_start_offset|bban_bankid_stop_offset|bban_branchid_start_offset|bban_branchid_stop_offset|registry_edition|country_sepa -AA|IIBAN (Internet)|0011123Z5678|0011123Z5678|12!a|^[A-Z0-9]{12}$|12|AA120011123Z5678|AA2!n12!a|^AA(\d{2})([A-Z0-9]{12})$|16|0|3|||N/A|0 -AL|Albania|0000000235698741|212110090000000235698741|8!n16!c|^(\d{8})([A-Za-z0-9]{16})$|24|AL47212110090000000235698741|AL2!n8!n16!c|^AL(\d{2})(\d{8})([A-Za-z0-9]{16})$|28|0|2|3|6|2011-06-20|0 -AD|Andorra|2030200359100100|00012030200359100100|4!n4!n12!c|^(\d{4})(\d{4})([A-Za-z0-9]{12})$|20|AD1200012030200359100100|AD2!n4!n4!n12!c|^AD(\d{2})(\d{4})(\d{4})([A-Za-z0-9]{12})$|24|0|3|4|7|2011-06-20|0 -AT|Austria|19043-234573201|1904300234573201|5!n11!n|^(\d{5})(\d{11})$|16|AT611904300234573201|AT2!n5!n11!n|^AT(\d{2})(\d{5})(\d{11})$|20|0|4|||2011-06-20|1 -AX|Aland Islands|123456-785|12345600000785|6!n7!n1!n|^(\d{6})(\d{7})(\d{1})$|14|AX2112345600000785|AX2!n6!n7!n1!n|^AX(\d{2})(\d{6})(\d{7})(\d{1})$|18|0|2|||2013-09-05|1 -AZ|Azerbaijan|NABZ00000000137010001944|NABZ00000000137010001944|4!a20!c|^([A-Z]{4})([A-Za-z0-9]{20})$|24|AZ21NABZ00000000137010001944|AZ2!n4!a20!c|^AZ(\d{2})([A-Z]{4})([A-Za-z0-9]{20})$|28|0|3|||2012-05-29|0 -BH|Bahrain|00001299123456|BMAG00001299123456|4!a14!c|^([A-Z]{4})([A-Za-z0-9]{14})$|22|BH67BMAG00001299123456|BH2!n4!a14!c|^BH(\d{2})([A-Z]{4})([A-Za-z0-9]{14})$|22|0|3|||2012-05-29|0 -BE|Belgium|539-0075470-34|539007547034|3!n7!n2!n|^(\d{3})(\d{7})(\d{2})$|12|BE68539007547034|BE2!n3!n7!n2!n|^BE(\d{2})(\d{3})(\d{7})(\d{2})$|16|0|2|||2011-06-20|1 -BA|Bosnia and Herzegovina|199-044-00012002-79|1990440001200279|3!n3!n8!n2!n|^(\d{3})(\d{3})(\d{8})(\d{2})$|16|BA391290079401028494|BA2!n3!n3!n8!n2!n|^BA(\d{2})(\d{3})(\d{3})(\d{8})(\d{2})$|20|0|2|3|5|2011-06-20|0 -BR|Brazil|0009795493C1|00360305000010009795493P1|8!n5!n10!n1!a1!c|^(\d{8})(\d{5})(\d{10})([A-Z]{1})([A-Za-z0-9]{1})$|25|BR2300360305000010009795493P1BR1800000000141455123924100C2|BR2!n8!n5!n10!n1!a1!c|^BR(\d{2})(\d{8})(\d{5})(\d{10})([A-Z]{1})([A-Za-z0-9]{1})$|29|0|7|8|12|2013-06-20|0 -BG|Bulgaria|BNBG 9661 1020 3456 78|BNBG96611020345678|4!a4!n2!n8!c|^([A-Z]{4})(\d{4})(\d{2})([A-Za-z0-9]{8})$|18|BG80BNBG96611020345678|BG2!n4!a4!n2!n8!c|^BG(\d{2})([A-Z]{4})(\d{4})(\d{2})([A-Za-z0-9]{8})$|22|0|3|4|7|2011-06-20|1 -CR|Costa Rica|1026284066|15202001026284066|3!n14!n|^(\d{3})(\d{14})$|7|CR91202001026284066|CR2!n3!n14!n|^CR(\d{2})(\d{3})(\d{14})$|21|0|2|||2012-05-29|0 -HR|Croatia|1001005-1863000160|10010051863000160|7!n10!n|^(\d{7})(\d{10})$|17|HR1210010051863000160|HR2!n7!n10!n|^HR(\d{2})(\d{7})(\d{10})$|21|0|6|||2011-06-20|1 -CY|Cyprus|1200527600|002001280000001200527600|3!n5!n16!c|^(\d{3})(\d{5})([A-Za-z0-9]{16})$|24|CY17002001280000001200527600|CY2!n3!n5!n16!c|^CY(\d{2})(\d{3})(\d{5})([A-Za-z0-9]{16})$|28|0|2|3|7|2011-06-20|1 -CZ|Czech Republic|19-2000145399/0800|08000000192000145399|4!n6!n10!n|^(\d{4})(\d{6})(\d{10})$|20|CZ6508000000192000145399|CZ2!n4!n6!n10!n|^CZ(\d{2})(\d{4})(\d{6})(\d{10})$|24|0|3|4|9|2011-06-20|1 -DK|Denmark|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|DK5000400440116243|DK2!n4!n9!n1!n|^DK(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|1 -FO|Faroe Islands|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|FO2000400440116243|FO2!n4!n9!n1!n|^FO(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|0 -GL|Greenland|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|GL2000400440116243|GL2!n4!n9!n1!n|^GL(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|0 -DO|Dominican Republic|1212453611324|AGR00000001212453611324|4!c20!n|^([A-Za-z0-9]{4})(\d{20})$|24|DO28BAGR00000001212453611324|DO2!n4!c20!n|^DO(\d{2})([A-Za-z0-9]{4})(\d{20})$|28|0|3|||2011-06-20|0 -EE|Estonia|221020145685|2200221020145685|2!n2!n11!n1!n|^(\d{2})(\d{2})(\d{11})(\d{1})$|16|EE382200221020145685|EE2!n2!n2!n11!n1!n|^EE(\d{2})(\d{2})(\d{2})(\d{11})(\d{1})$|20|0|1|||2011-06-20|1 -FI|Finland|123456-785|12345600000785|6!n7!n1!n|^(\d{6})(\d{7})(\d{1})$|14|FI2112345600000785|FI2!n6!n7!n1!n|^FI(\d{2})(\d{6})(\d{7})(\d{1})$|18|0|2|||2013-08-05|1 -FR|France|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|FR1420041010050500013M02606|FR2!n5!n5!n11!c2!n|^FR(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -BL|Saint Barthelemy|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|BL9820041010050500013M02606|BL2!n5!n5!n11!c2!n|^BL(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-02-08|0 -GF|French Guyana|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|GF4120041010050500013M02606|GF2!n5!n5!n11!c2!n|^GF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -GP|Guadelope|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|GP1120041010050500013M02606|GP2!n5!n5!n11!c2!n|^GP(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -MF|Saint Martin (French Part)|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MF9820041010050500013M02606|MF2!n5!n5!n11!c2!n|^MF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-02-08|0 -MQ|Martinique|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MQ5120041010050500013M02606|MQ2!n5!n5!n11!c2!n|^MQ(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -RE|Reunion|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|RE4220041010050500013M02606|RE2!n5!n5!n11!c2!n|^RE(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -PF|French Polynesia|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|PF5720041010050500013M02606|PF2!n5!n5!n11!c2!n|^PF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0 -TF|French Southern Territories|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|TF2120041010050500013M02606|TF2!n5!n5!n11!c2!n|^TF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0 -YT|Mayotte|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|YT3120041010050500013M02606|YT2!n5!n5!n11!c2!n|^YT(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -NC|New Caledonia|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|NC8420041010050500013M02606|NC2!n5!n5!n11!c2!n|^NC(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0 -PM|Saint Pierre et Miquelon|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|PM3620041010050500013M02606|PM2!n5!n5!n11!c2!n|^PM(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1 -WF|Wallis and Futuna Islands|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|WF9120041010050500013M02606|WF2!n5!n5!n11!c2!n|^WF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0 -GE|Georgia|0000000101904917|NB0000000101904917|2!a16!n|^([A-Z]{2})(\d{16})$|18|GE29NB0000000101904917|GE2!n2!a16!n|^GE(\d{2})([A-Z]{2})(\d{16})$|22|0|1|||2011-06-20|0 -DE|Germany|37040044-532013000|370400440532013000|8!n10!n|^(\d{8})(\d{10})$|18|DE89370400440532013000|DE2!n8!n10!n|^DE(\d{2})(\d{8})(\d{10})$|22|0|7|||2011-06-20|1 -GI|Gibraltar|0000 00007099 453|NWBK000000007099453|4!a15!c|^([A-Z]{4})([A-Za-z0-9]{15})$|19|GI75NWBK000000007099453|GI2!n4!a15!c|^GI(\d{2})([A-Z]{4})([A-Za-z0-9]{15})$|23|0|3|||2011-06-20|1 -GR|Greece|01250000000012300695|01101250000000012300695|3!n4!n16!c|^(\d{3})(\d{4})([A-Za-z0-9]{16})$|23|GR1601101250000000012300695|GR2!n3!n4!n16!c|^GR(\d{2})(\d{3})(\d{4})([A-Za-z0-9]{16})$|27|0|2|3|6|2011-06-20|1 -GT|Guatemala|01020000001210029690|TRAJ01020000001210029690|4!c20!c|^([A-Za-z0-9]{4})([A-Za-z0-9]{20})$|24|GT82TRAJ01020000001210029690|GT2!n4!c20!c|^GT(\d{2})([A-Za-z0-9]{4})([A-Za-z0-9]{20})$|28|0|3|||2012-05-29|0 -HU|Hungary|11773016-11111018-00000000|117730161111101800000000|3!n4!n1!n15!n1!n|^(\d{3})(\d{4})(\d{1})(\d{15})(\d{1})$|24|HU42117730161111101800000000|HU2!n3!n4!n1!n15!n1!n|^HU(\d{2})(\d{3})(\d{4})(\d{1})(\d{15})(\d{1})$|28|0|2|3|6|2011-06-20|1 -IS|Iceland|0159-26-007654-551073-0339|0159260076545510730339|4!n2!n6!n10!n|^(\d{4})(\d{2})(\d{6})(\d{10})$|22|IS140159260076545510730339|IS2!n4!n2!n6!n10!n|^IS(\d{2})(\d{4})(\d{2})(\d{6})(\d{10})$|26|0|3|6|11|2011-06-20|1 -IE|Ireland|93-11-52 12345678|AIBK93115212345678|4!a6!n8!n|^([A-Z]{4})(\d{6})(\d{8})$|18|IE29AIBK93115212345678|IE2!n4!a6!n8!n|^IE(\d{2})([A-Z]{4})(\d{6})(\d{8})$|22|0|3|4|9|2011-06-20|1 -IL|Israel|10-800-99999999|100800000099999000|3!n3!n13!n|^(\d{3})(\d{3})(\d{13})$|19|IL620108000000099999999|IL2!n3!n3!n13!n|^IL(\d{2})(\d{3})(\d{3})(\d{13})$|23|0|2|3|5|2011-06-20|0 -IT|Italy|X 05428 11101 000000123456|X0542811101000000123456|1!a5!n5!n12!c|^([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|23|IT60X0542811101000000123456|IT2!n1!a5!n5!n12!c|^IT(\d{2})([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|27|0|5|6|10|2011-06-20|1 -JO|Jordan|1310000302|CBJO0010000000000131000302|4!a4!n18!c|^([A-Z]{4})(\d{4})([A-Za-z0-9]{18})$|26|JO94CBJO0010000000000131000302|JO2!n4!a4!n18!c|^JO(\d{2})([A-Z]{4})(\d{4})([A-Za-z0-9]{18})$|30|0|3|4|7|2014-06-05|0 -KZ|Kazakhstan|KZ86 125K ZT50 0410 0100|125KZT5004100100|3!n13!c|^(\d{3})([A-Za-z0-9]{13})$|16|KZ07|KZ2!n3!n13!c|^KZ(\d{2})(\d{3})([A-Za-z0-9]{13})$||0|2|||2014-06-05|0 -KW|Kuwait|CBKU0000000000001234560101|CBKU0000000000001234560101|4!a22!c|^([A-Z]{4})([A-Za-z0-9]{22})$|26|KW81CBKU0000000000001234560101|KW2!n4!a22!n|^KW(\d{2})([A-Z]{4})(\d{22})$|30|0|3|||2011-06-20|0 -LV|Latvia|BANK 0000 4351 9500 1|BANK0000435195001|4!a13!c|^([A-Z]{4})([A-Za-z0-9]{13})$|17|LV80BANK0000435195001|LV2!n4!a13!c|^LV(\d{2})([A-Z]{4})([A-Za-z0-9]{13})$|21|0|3|||2011-06-20|1 -LB|Lebanon|01 001 901229114|0999 0000 0001 0019 0122 9114|4!n20!c|^(\d{4})([A-Za-z0-9]{20})$|24|LB62099900000001001901229114|LB2!n4!n20!c|^LB(\d{2})(\d{4})([A-Za-z0-9]{20})$|28|0|3|||2011-06-20|0 -LI|Liechtenstein|8810 2324013AA|088100002324013AA|5!n12!c|^(\d{5})([A-Za-z0-9]{12})$|19|LI21088100002324013AA|LI2!n5!n12!c|^LI(\d{2})(\d{5})([A-Za-z0-9]{12})$|21|0|4|||2012-05-29|1 -LT|Lithuania|1000 0111 0100 1000|10000011101001000|5!n11!n|^(\d{5})(\d{11})$|16|LT121000011101001000|LT2!n5!n11!n|^LT(\d{2})(\d{5})(\d{11})$|20|0|4|||2011-06-20|1 -LU|Luxembourg|0019 4006 4475 0000|0019400644750000|3!n13!c|^(\d{3})([A-Za-z0-9]{13})$|16|LU280019400644750000|LU2!n3!n13!c|^LU(\d{2})(\d{3})([A-Za-z0-9]{13})$|20|0|2|||2011-06-20|1 -MK|Macedonia|300 0000000424 25|250120000058984|3!n10!c2!n|^(\d{3})([A-Za-z0-9]{10})(\d{2})$|15|MK07250120000058984|MK2!n3!n10!c2!n|^MK(\d{2})(\d{3})([A-Za-z0-9]{10})(\d{2})$|19|0|2|||2012-05-29|0 -MT|Malta|12345MTLCAST001S|MALT011000012345MTLCAST001S|4!a5!n18!c|^([A-Z]{4})(\d{5})([A-Za-z0-9]{18})$|27|MT84MALT011000012345MTLCAST001S|MT2!n4!a5!n18!c|^MT(\d{2})([A-Z]{4})(\d{5})([A-Za-z0-9]{18})$|31|0|3|4|8|2011-06-20|1 -MR|Mauritania|00020 00101 00001234567 53|00020001010000123456753|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|MR1300020001010000123456753|MR135!n5!n11!n2!n|^MR13(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2011-06-20|0 -MU|Mauritius|BOMM 0101 1010 3030 0200 000M UR|BOMM0101101030300200000MUR|4!a2!n2!n12!n3!n3!a|^([A-Z]{4})(\d{2})(\d{2})(\d{12})(\d{3})([A-Z]{3})$|26|MU17BOMM0101101030300200000MUR|MU2!n4!a2!n2!n12!n3!n3!a|^MU(\d{2})([A-Z]{4})(\d{2})(\d{2})(\d{12})(\d{3})([A-Z]{3})$|30|0|5|6|7|2011-06-20|0 -MD|Moldova|00225100013104168|AG000225100013104168|2!c18!c|^([A-Za-z0-9]{2})([A-Za-z0-9]{18})$|20|MD24AG000225100013104168|MD2!n20!c|^MD(\d{2})([A-Za-z0-9]{20})$|24|0|1|||2012-09-09|0 -MC|Monaco|0011111000h|11222 00001 01234567890 30|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MC5811222000010123456789030|MC2!n5!n5!n11!c2!n|^MC(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|1 -ME|Montenegro|505 0000123456789 51|505000012345678951|3!n13!n2!n|^(\d{3})(\d{13})(\d{2})$|18|ME25505000012345678951|ME2!n3!n13!n2!n|^ME(\d{2})(\d{3})(\d{13})(\d{2})$|22|0|2|||2011-06-20|0 -NL|The Netherlands|041 71 64 300|ABNA0417164300|4!a10!n|^([A-Z]{4})(\d{10})$|14|NL91ABNA0417164300|NL2!n4!a10!n|^NL(\d{2})([A-Z]{4})(\d{10})$|18|0|3|4|3|2013-06-20|1 -NO|Norway|8601 11 17947|86011117947|4!n6!n1!n|^(\d{4})(\d{6})(\d{1})$|11|NO9386011117947|NO2!n4!n6!n1!n|^NO(\d{2})(\d{4})(\d{6})(\d{1})$|15|0|3|||2011-06-20|1 -PK|Pakistan|00260101036360|SCBL0000001123456702|4!a16!c|^([A-Z]{4})([A-Za-z0-9]{16})$|20|PK36SCBL0000001123456702|PK2!n4!a16!c|^PK(\d{2})([A-Z]{4})([A-Za-z0-9]{16})$|24|0|3|||2012-05-29|0 -PL|Poland|61 1090 1014 0000 0712 1981 2874|109010140000071219812874|8!n16!n|^(\d{8})(\d{16})$|24|PL61109010140000071219812874|PL2!n8!n16n|^PL(\d{2})(\d{8})(\d{1,16})$|28|0|7|||2011-06-20|1 -PS|Palestine|400123456702|PALS000000000400123456702|4!a21!c|^([A-Z]{4})([A-Za-z0-9]{21})$|25|PS92PALS000000000400123456702|PS2!n4!a21!c|^PS(\d{2})([A-Z]{4})([A-Za-z0-9]{21})$|29|0|3|||2013-09-05|0 -PT|Portugal|0002.0123.12345678901.54|000201231234567890154|4!n4!n11!n2!n|^(\d{4})(\d{4})(\d{11})(\d{2})$|21|PT50000201231234567890154|PT2!n4!n4!n11!n2!n|^PT(\d{2})(\d{4})(\d{4})(\d{11})(\d{2})$|25|0|3|4|7|2013-09-05|1 -QA|Qatar|QA58DOHB00001234567890ABCDEFG|DOHB00001234567890ABCDEFG|4!a4!n17!c|^([A-Z]{4})(\d{4})([A-Za-z0-9]{17})$|29|QA58DOHB00001234567890ABCDEFG|QA2!n4!a4!n17!c|^QA(\d{2})([A-Z]{4})(\d{4})([A-Za-z0-9]{17})$|29|0|3|4|7|2014-06-05|0 -RO|Romania|AAAA 1B31 0075 9384 0000|AAAA1B31007593840000|4!a16!c|^([A-Z]{4})([A-Za-z0-9]{16})$|20|RO49AAAA1B31007593840000|RO2!n4!a16!c|^RO(\d{2})([A-Z]{4})([A-Za-z0-9]{16})$|24|0|3|||2011-06-20|1 -SM|San Marino|U032 2509 8000 0000 0270 100|U0322509800000000270100|1!a5!n5!n12!c|^([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|23|SM86U0322509800000000270100|SM2!n1!a5!n5!n12!c|^SM(\d{2})([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|27|0|5|6|10|2011-06-20|1 -SA|Saudi Arabia|608010167519|80000000608010167519|2!n18!c|^(\d{2})([A-Za-z0-9]{18})$|20|SA0380000000608010167519|SA2!n2!n18!c|^SA(\d{2})(\d{2})([A-Za-z0-9]{18})$|24|0|1|||2012-05-29|0 -RS|Serbia|260-0056010016113-79|260005601001611379|3!n13!n2!n|^(\d{3})(\d{13})(\d{2})$|18|RS35260005601001611379|RS2!n3!n13!n2!n|^RS(\d{2})(\d{3})(\d{13})(\d{2})$|22|0|2|||2011-06-20|0 -SK|Slovak Republic|19-8742637541/1200|12000000198742637541|4!n6!n10!n|^(\d{4})(\d{6})(\d{10})$|20|SK3112000000198742637541|SK2!n4!n6!n10!n|^SK(\d{2})(\d{4})(\d{6})(\d{10})$|24|0|3|4|9|2011-06-20|1 -SI|Slovenia|2633 0001 2039 086|263300012039086|5!n8!n2!n|^(\d{5})(\d{8})(\d{2})$|15|SI56191000000123438|SI2!n5!n8!n2!n|^SI(\d{2})(\d{5})(\d{8})(\d{2})$|19|0|1|2|4|2012-09-09|1 -ES|Spain|2100 0418 45 0200051332|21000418450200051332|4!n4!n1!n1!n10!n|^(\d{4})(\d{4})(\d{1})(\d{1})(\d{10})$|20|ES9121000418450200051332|ES2!n4!n4!n1!n1!n10!n|^ES(\d{2})(\d{4})(\d{4})(\d{1})(\d{1})(\d{10})$|24|0|3|4|7|2013-09-05|1 -SE|Sweden|1234 12 3456 1|5000 0000 0583 9825 7466|3!n16!n1!n|^(\d{3})(\d{16})(\d{1})$|20|SE4550000000058398257466|SE2!n3!n16!n1!n|^SE(\d{2})(\d{3})(\d{16})(\d{1})$|24|0|2|||2011-06-20|1 -CH|Switzerland|762 1162-3852.957|00762011623852957|5!n12!c|^(\d{5})([A-Za-z0-9]{12})$|17|CH9300762011623852957|CH2!n5!n12!c|^CH(\d{2})(\d{5})([A-Za-z0-9]{12})$|21|0|4|||2011-06-20|1 -TN|Tunisia|10 006 0351835984788 31|10006035183598478831|2!n3!n13!n2!n|^(\d{2})(\d{3})(\d{13})(\d{2})$|20|TN5910006035183598478831|TN592!n3!n13!n2!n|^TN59(\d{2})(\d{3})(\d{13})(\d{2})$|24|0|1|2|4|2011-06-20|0 -TR|Turkey|0061 01299 1234567890123456789|0006100519786457841326|5!n1!c16!c|^(\d{5})([A-Za-z0-9]{1})([A-Za-z0-9]{16})$|22|TR330006100519786457841326|TR2!n5!n1!c16!c|^TR(\d{2})(\d{5})([A-Za-z0-9]{1})([A-Za-z0-9]{16})$|26|0|4|||2011-06-20|0 -AE|United Arab Emirates|1234567890123456|0331234567890123456|3!n16!n|^(\d{3})(\d{16})$|19|AE070331234567890123456|AE2!n3!n16!n|^AE(\d{2})(\d{3})(\d{16})$|23|0|2|||2011-06-20|0 -GB|United Kingdom|60-16-13 31926819|NWBK60161331926819|4!a6!n8!n|^([A-Z]{4})(\d{6})(\d{8})$|18|GB29NWBK60161331926819|GB2!n4!a6!n8!n|^GB(\d{2})([A-Z]{4})(\d{6})(\d{8})$|22|0|3|4|9|2011-06-20|1 -VG|British Virgin Islands|00000 12 345 678 901|VPVG0000012345678901|4!a16!n|^([A-Z]{4})(\d{16})$|20|VG96VPVG0000012345678901|VG2!n4!a16!n|^VG(\d{2})([A-Z]{4})(\d{16})$|24|0|3|||2012-05-29|0 +country_code|country_name|domestic_example|bban_example|bban_format_swift|bban_format_regex|bban_length|iban_example|iban_format_swift|iban_format_regex|iban_length|bban_bankid_start_offset|bban_bankid_stop_offset|bban_branchid_start_offset|bban_branchid_stop_offset|registry_edition|country_sepa|swift_official|bban_checksum_start_offset|bban_checksum_stop_offset|country_code_iana|country_code_iso3166_1_alpha2|parent_registrar|currency_iso4217|central_bank_url|central_bank_name|membership +AL|Albania|0000000235698741|212110090000000235698741|8!n16!c|^(\d{8})([A-Za-z0-9]{16})$|24|AL47212110090000000235698741|AL2!n8!n16!c|^AL(\d{2})(\d{8})([A-Za-z0-9]{16})$|28|0|2|3|6|2011-06-20|0|1|7|7|al|AL||ALL|www.bankofalbania.org|Bank of Albania|non_member +DZ|Algeria|12341234123412341234|12341234123412341234|20!n|^[0-9]{20}$|20|DZ3512341234123412341234|DZ2!n20!n|^DZ(\d{2})(\d{20})$|24|||||2016-01-22|0|0|||dz|DZ||DZD|www.bank-of-algeria.dz|Bank of Algeria|non_member +AD|Andorra|2030200359100100|00012030200359100100|4!n4!n12!c|^(\d{4})(\d{4})([A-Za-z0-9]{12})$|20|AD1200012030200359100100|AD2!n4!n4!n12!c|^AD(\d{2})(\d{4})(\d{4})([A-Za-z0-9]{12})$|24|0|3|4|7|2011-06-20|1|1|||ad|AD||EUR|www.inaf.ad|Institut Nacional Andorrà de Finances|other_member +AO|Angola|123412341234123412341|123412341234123412341|21!n|^[0-9]{21}$|21|AO44123412341234123412341|AO2!n21!n|^AO(\d{2})(\d{21})$|25|||||2016-01-22|0|0|||ao|AO||AOA|www.bna.ao|National Bank of Angola|non_member +AT|Austria|19043-234573201|1904300234573201|5!n11!n|^(\d{5})(\d{11})$|16|AT611904300234573201|AT2!n5!n11!n|^AT(\d{2})(\d{5})(\d{11})$|20|0|4|||2011-06-20|1|1|||at|AT||EUR|www.oenb.at|Austrian National Bank|eu_member +AZ|Azerbaijan|NABZ00000000137010001944|NABZ00000000137010001944|4!a20!c|^([A-Z]{4})([A-Za-z0-9]{20})$|24|AZ21NABZ00000000137010001944|AZ2!n4!a20!c|^AZ(\d{2})([A-Z]{4})([A-Za-z0-9]{20})$|28|0|3|||2012-05-29|0|1|||az|AZ||AZN|www.cbar.az|The Central Bank of the Republic of Azerbaijan|non_member +BH|Bahrain|00001299123456|BMAG00001299123456|4!a14!c|^([A-Z]{4})([A-Za-z0-9]{14})$|18|BH67BMAG00001299123456|BH2!n4!a14!c|^BH(\d{2})([A-Z]{4})([A-Za-z0-9]{14})$|22|0|3|||2012-05-29|0|1|||bh|BH||BHD|www.cbb.gov.bh|Central Bank of Bahrain|non_member +BE|Belgium|539-0075470-34|539007547034|3!n7!n2!n|^(\d{3})(\d{7})(\d{2})$|12|BE68539007547034|BE2!n3!n7!n2!n|^BE(\d{2})(\d{3})(\d{7})(\d{2})$|16|0|2|||2011-06-20|1|1|10|11|be|BE||EUR|www.nbb.be|National Bank of Belgium|eu_member +BJ|Benin|A12312341234123412341234|A12312341234123412341234|1!a23!n|^[A-Z]{1}[0-9]{23}$|24|BJ83A12312341234123412341234|BJ2!n1!a23!n|^BJ(\d{2})([A-Z]{1}[0-9]{23})$|28|||||2016-01-22|0|0|||bj|BJ||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +BA|Bosnia and Herzegovina|199-044-00012002-79|1990440001200279|3!n3!n8!n2!n|^(\d{3})(\d{3})(\d{8})(\d{2})$|16|BA391290079401028494|BA2!n3!n3!n8!n2!n|^BA(\d{2})(\d{3})(\d{3})(\d{8})(\d{2})$|20|0|2|3|5|2011-06-20|0|1|14|15|ba|BA||BAM|www.cbbh.ba|Central Bank of Bosnia and Herzegovina|non_member +BR|Brazil|0009795493C1|00360305000010009795493P1|8!n5!n10!n1!a1!c|^(\d{8})(\d{5})(\d{10})([A-Z]{1})([A-Za-z0-9]{1})$|25|BR9700360305000010009795493P1|BR2!n8!n5!n10!n1!a1!c|^BR(\d{2})(\d{8})(\d{5})(\d{10})([A-Z]{1})([A-Za-z0-9]{1})$|29|0|7|8|12|2013-06-20|0|1|||br|BR||BRL|www.bcb.gov.br|Central Bank of Brazil|non_member +VG|British Virgin Islands|00000 12 345 678 901|VPVG0000012345678901|4!a16!n|^([A-Z]{4})(\d{16})$|20|VG96VPVG0000012345678901|VG2!n4!a16!n|^VG(\d{2})([A-Z]{4})(\d{16})$|24|0|3|||2012-05-29|0|1|||vg|VG||USD|www.bvifsc.vg|The British Virgin Islands Financial Services Commission|non_member +BG|Bulgaria|BNBG 9661 1020 3456 78|BNBG96611020345678|4!a4!n2!n8!c|^([A-Z]{4})(\d{4})(\d{2})([A-Za-z0-9]{8})$|18|BG80BNBG96611020345678|BG2!n4!a4!n2!n8!c|^BG(\d{2})([A-Z]{4})(\d{4})(\d{2})([A-Za-z0-9]{8})$|22|0|3|4|7|2011-06-20|1|1|||bg|BG||BGN|www.bnb.bg|Bulgarian National Bank|eu_member +BF|Burkina Faso|12341234123412341234123|12341234123412341234123|23!n|^[0-9]{23}$|23|BF4512341234123412341234123|BF2!n23!n|^BF(\d{2})(\d{23})$|27|||||2016-01-22|0|0|||bf|BF||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +BI|Burundi|123412341234|123412341234|12!n|^[0-9]{12}$|12|BI33123412341234|BI2!n12!n|^BI(\d{2})(\d{12})$|16|||||2016-01-22|0|0|||bi|BI||BIF|www.brb.bi|Bank of the Republic of Burundi|non_member +BY|Belarus|3600 0000 0000 0Z00 AB00|NBRB 3600 0000 0000 0Z00 AB00|4!c4!n16!c|^([A-Za-z0-9]{4})(\d{4})([A-Za-z0-9]{16})$|24|BY13NBRB3600900000002Z00AB00|BY2!n4!c4!n16!c|^BY(\d{2})([A-Za-z0-9]{4})(\d{4})([A-Za-z0-9]{16})$|28|0|3|||2017-08-03|0|1|||by|BY||BYN|www.nbrb.by|National Bank of the Republic of Belarus|non_member +CM|Cameroon|12341234123412341234123|12341234123412341234123|23!n|^[0-9]{23}$|23|CM1512341234123412341234123|CM2!n23!n|^CM(\d{2})(\d{23})$|27|||||2016-01-22|0|0|||cm|CM||XAF|www.beac.int|Bank of Central African States|non_member +CV|Cape Verde|12341234123412341|12341234123412341|21!n|^[0-9]{21}$|21|CV05123412341234123412341|CV2!n21!n|^CV(\d{2})(\d{21})$|25|||||2016-01-22|0|0|||cv|CV||CVE|www.bcv.cv|Bank of Cape Verde|non_member +CF|Central African Republic|0140183240140|20001000010140183240140|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|CF4220001000010120069700160|CF2!n5!n5!n11!n2!n|^CF(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|cf|CF||XAF|www.beac.int|Bank of Central African States|non_member +TD|Chad|37102538601 74|60003000203710253860174|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|TD8960003000203710253860174|TD2!n5!n5!n11!n2!n|^TD(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|cf|CF||XAF|www.beac.int|Bank of Central African States|non_member +KM|Comoros|00109044001 37|00005000010010904400137|5!n5!n13!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|KM4600005000010010904400137|KM2!n5!n5!n13!n2!n|^KM(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|km|KM||LMF|www.banque-comores.km|Banque Centrale des Comores|non_member +CG|Congo|10134513000|30011000101013451300019|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|CG3930013020003710721836132|CG2!n5!n5!n11!n2!n|^CG(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-01|0|1|21|23|cg|CG||CDF|www.bcc.cd|Central Bank of the Congo|non_member +CR|Costa Rica|02001026284066|015202001026284066|4!n14!n|^(\d{4})(\d{14})$|18|CR05015202001026284066|CR2!n4!n14!n|^CR(\d{2})(\d{4})(\d{14})$|22|0|3|||2012-05-29|0|1|||cr|CR||CRC|www.bccr.fi.cr|Central Bank of Costa Rica|non_member +CI|Côte d'Ivoire|A12312341234123412341234|A12312341234123412341234|1!a23!n|^[A-Z]{1}[0-9]{23}$|24|CI77A12312341234123412341234|CI2!n1!a23!n|^CI(\d{2})([A-Z]{1})(\d{23})$|28|||||2016-01-22|0|0|||ci|CI||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +HR|Croatia|1001005-1863000160|10010051863000160|7!n10!n|^(\d{7})(\d{10})$|17|HR1210010051863000160|HR2!n7!n10!n|^HR(\d{2})(\d{7})(\d{10})$|21|0|6|||2011-06-20|1|1|||hr|HR||HRK|www.hnb.hr|Croatian National Bank|eu_member +CY|Cyprus|1200527600|002001280000001200527600|3!n5!n16!c|^(\d{3})(\d{5})([A-Za-z0-9]{16})$|24|CY17002001280000001200527600|CY2!n3!n5!n16!c|^CY(\d{2})(\d{3})(\d{5})([A-Za-z0-9]{16})$|28|0|2|3|7|2011-06-20|1|1|||cy|CY||EUR|www.centralbank.gov.cy|Central Bank of Cyprus|eu_member +CZ|Czech Republic|19-2000145399/0800|08000000192000145399|4!n6!n10!n|^(\d{4})(\d{6})(\d{10})$|20|CZ6508000000192000145399|CZ2!n4!n6!n10!n|^CZ(\d{2})(\d{4})(\d{6})(\d{10})$|24|0|3|4|9|2011-06-20|1|1|||cz|CZ||CZK|www.cnb.cz|Czech National Bank|eu_member +DK|Denmark|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|DK5000400440116243|DK2!n4!n9!n1!n|^DK(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|1|1|||dk|DK||DKK|www.nationalbanken.dk|National Bank of Denmark (Danmarks Nationalbank)||eu_member +FO|Faroe Islands|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|FO2000400440116243|FO2!n4!n9!n1!n|^FO(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|0|1|13|13|fo|FO|DK|DKK|www.nationalbanken.dk|National Bank of Denmark (Danmarks Nationalbank)|non_member +GL|Greenland|0040 0440116243, 6460 0001631634, 6471 0001000206|00400440116243, 64600001631634, 64710001000206|4!n9!n1!n|^(\d{4})(\d{9})(\d{1})$|14|GL2000400440116243|GL2!n4!n9!n1!n|^GL(\d{2})(\d{4})(\d{9})(\d{1})$|18|0|3|||2011-06-20|0|1|||gl|GL|DK|DKK|www.nationalbanken.dk|National Bank of Denmark (Danmarks Nationalbank)|non_member +DJ|Djibouti|04099430200 08|10002010010409943020008|5!n5!n13!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|DJ2110002010010409943020008|DJ2!n5!n5!n13!n2!n|^DJ(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|dj|DJ||DJF|www.banque-centrale.dj|Central Bank of Djibouti|non_member +DO|Dominican Republic|1212453611324|AGR00000001212453611324|4!c20!n|^([A-Za-z0-9]{4})(\d{20})$|24|DO28BAGR00000001212453611324|DO2!n4!c20!n|^DO(\d{2})([A-Za-z0-9]{4})(\d{20})$|28|0|3|||2011-06-20|0|1|||do|DO||DOP|www.bancentral.gov.do|Central Bank of the Dominican Republic|non_member +EG|Egypt|000263180002|0019000500000000263180002|4!n4!n17!n|(\d{4})(\d{4})(\d{17})|25|EG380019000500000000263180002|EG2!n4!n4!n17!n|^EG(\d{2})(\d{4})(\d{4})(\d{17})$|29|0|4|5|9|2020-01-01|0|0|||eg|EG||EGP|www.cbe.org.eg|Central Bank of Egypt|non_member +SV|El Salvador|00000000000000700025|CENR00000000000000700025|4!a20!n|^([A-Za-z0-9]{4})(\d{20})$|24|SV62CENR00000000000000700025|SV2!n4!a20!n|^SV(\d{2})([A-Za-z0-9]{4})(\d{20})$|28|0|3|||2017-08-03|0|1|||sv|SV||USD|www.bcr.gob.sv|Central Reserve Bank of El Salvador|non_member +GQ|Equitorial Guinea|37152281901 96|50002001003715228190196|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|GQ7050002001003715228190196|GQ2!n5!n5!n11!n2!n|^GQ(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|gq|GQ||XAF|www.beac.int|Bank of Central African States|non_member +EE|Estonia|221020145685|2200221020145685|2!n2!n11!n1!n|^(\d{2})(\d{2})(\d{11})(\d{1})$|16|EE382200221020145685|EE2!n2!n2!n11!n1!n|^EE(\d{2})(\d{2})(\d{2})(\d{11})(\d{1})$|20|0|1|||2011-06-20|1|1|15|15|ee|EE||EUR|www.eestipank.ee|Bank of Estonia|eu_member +FI|Finland|123456-785|12345600000785|6!n7!n1!n|^(\d{6})(\d{7})(\d{1})$|14|FI2112345600000785|FI2!n6!n7!n1!n|^FI(\d{2})(\d{6})(\d{7})(\d{1})$|18|0|2|||2013-08-05|1|1|13|13|fi|FI||EUR|www.suomenpankki.fi|Bank of Finland|eu_member +AX|Åland Islands|123456-785|12345600000785|6!n7!n1!n|^(\d{6})(\d{7})(\d{1})$|14|AX2112345600000785|AX2!n6!n7!n1!n|^AX(\d{2})(\d{6})(\d{7})(\d{1})$|18|0|2|||2013-09-05|1|1|||ax|AX|FI|EUR|www.suomenpankki.fi|Bank of Finland|eu_member +FR|France|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|FR1420041010050500013M02606|FR2!n5!n5!n11!c2!n|^FR(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|fr|FR||EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +GF|French Guiana|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|GF4120041010050500013M02606|GF2!n5!n5!n11!c2!n|^GF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|gf|GF|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +PF|French Polynesia|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|PF5720041010050500013M02606|PF2!n5!n5!n11!c2!n|^PF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0|1|21|22|pf|PF|FR|XPF|www.ieom.fr|Overseas Issuing Institute (Institut d'émission d'Outre-Mer)|other_member +TF|French Southern Territories|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|TF2120041010050500013M02606|TF2!n5!n5!n11!c2!n|^TF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0|1|21|22|tf|TF|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|other_member +GP|Guadelope|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|GP1120041010050500013M02606|GP2!n5!n5!n11!c2!n|^GP(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|gp|GP|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +MQ|Martinique|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MQ5120041010050500013M02606|MQ2!n5!n5!n11!c2!n|^MQ(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|mq|MQ|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +YT|Mayotte|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|YT3120041010050500013M02606|YT2!n5!n5!n11!c2!n|^YT(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|yt|YT|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +NC|New Caledonia|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|NC8420041010050500013M02606|NC2!n5!n5!n11!c2!n|^NC(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0|1|21|22|nc|NC|FR|XPF|www.ieom.fr|Overseas Issuing Institute (Institut d'émission d'Outre-Mer)|other_member +RE|Réunion|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|RE4220041010050500013M02606|RE2!n5!n5!n11!c2!n|^RE(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|re|RE|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +BL|Saint Barthélemy|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|BL6820041010050500013M02606|BL2!n5!n5!n11!c2!n|^BL(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-02-08|0|1|21|22||BL|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|other_member +MF|Saint Martin (French Part)|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MF8420041010050500013M02606|MF2!n5!n5!n11!c2!n|^MF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-02-08|0|1|21|22||MF|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|eu_member +PM|Saint-Pierre and Miquelon|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|PM3620041010050500013M02606|PM2!n5!n5!n11!c2!n|^PM(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2013-08-28|1|1|21|22|pm|PM|FR|EUR|www.banque-france.fr|Bank of France (Banque de France)|other_member +WF|Wallis and Futuna|20041 01005 0500013M026 06|20041010050500013M02606|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|WF9120041010050500013M02606|WF2!n5!n5!n11!c2!n|^WF(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|0|1|21|22|wf|WF|FR|XPF|www.ieom.fr|Overseas Issuing Institute (Institut d'émission d'Outre-Mer)|other_member +GA|Gabon|15200001069 63|42001007341520000106963|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|GA2142001007341520000106963|GA2!n5!n5!n11!n2!n|^GA(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2017-08-03|0|0|21|23|ga|GA||XAF|www.beac.int|Bank of Central African States|non_member +GE|Georgia|0000000101904917|NB0000000101904917|2!a16!n|^([A-Z]{2})(\d{16})$|18|GE29NB0000000101904917|GE2!n2!a16!n|^GE(\d{2})([A-Z]{2})(\d{16})$|22|0|1|||2011-06-20|0|1|||ge|GE||GEL|www.nbg.gov.ge|National Bank of Georgia|non_member +DE|Germany|37040044-532013000|370400440532013000|8!n10!n|^(\d{8})(\d{10})$|18|DE89370400440532013000|DE2!n8!n10!n|^DE(\d{2})(\d{8})(\d{10})$|22|0|7|||2011-06-20|1|1|||de|DE||EUR|www.bundesbank.de|Deutsche Bundesbank|eu_member +GI|Gibraltar|0000 00007099 453|NWBK000000007099453|4!a15!c|^([A-Z]{4})([A-Za-z0-9]{15})$|19|GI75NWBK000000007099453|GI2!n4!a15!c|^GI(\d{2})([A-Z]{4})([A-Za-z0-9]{15})$|23|0|3|||2011-06-20|1|1|||gi|GI||GIP|www.gibraltar.gov.gi|Government of Gibraltar|other_member +GR|Greece|01250000000012300695|01101250000000012300695|3!n4!n16!c|^(\d{3})(\d{4})([A-Za-z0-9]{16})$|23|GR1601101250000000012300695|GR2!n3!n4!n16!c|^GR(\d{2})(\d{3})(\d{4})([A-Za-z0-9]{16})$|27|0|2|3|6|2011-06-20|1|1|||gr|GR||EUR|www.nbg.gr|National Bank of Greece|eu_member +GT|Guatemala|01020000001210029690|TRAJ01020000001210029690|4!c20!c|^([A-Za-z0-9]{4})([A-Za-z0-9]{20})$|24|GT82TRAJ01020000001210029690|GT2!n4!c20!c|^GT(\d{2})([A-Za-z0-9]{4})([A-Za-z0-9]{20})$|28|0|3|||2012-05-29|0|1|||gt|GT||GTQ|www.banguat.gob.gt|Bank of Guatemala|non_member +GW|Guinea-Bissau|0181800637601|GW1430010181800637601|2!c2!n4!n11!n2!n|^([A-Za-z0-9]{2}\d{2})(\d{4})(\d{11})(\d{2})$|21|GW04GW1430010181800637601|GW2!n2!c2!n4!n11!n2!n|^GW(\d{2})([A-Za-z0-9]{2}\d{2})(\d{4})(\d{11})(\d{2})$|25|0|3|4|7|2017-08-03|0|0|||gw|GW||XOF|www.bceao.int|Central Bank of West African States|non_member +HN|Honduras|123124|PISA00000000000000123124|4!a20!n|^([A-Za-z]{4})(\d{20})$|24|HN54PISA00000000000000123124|HN2!n4!a20!n|^HN(\d{2})([A-Za-z]{4})(\d{20})$|28|0|3|||2017-08-03|0|0|||hn|HN||HNL|www.bch.hn|Central Bank of Honduras|non_member +HU|Hungary|11773016-11111018-00000000|117730161111101800000000|3!n4!n1!n15!n1!n|^(\d{3})(\d{4})(\d{1})(\d{15})(\d{1})$|24|HU42117730161111101800000000|HU2!n3!n4!n1!n15!n1!n|^HU(\d{2})(\d{3})(\d{4})(\d{1})(\d{15})(\d{1})$|28|0|2|3|6|2011-06-20|1|1|23|23|hu|HU||HUF|english.mnb.hu|Magyar Nemzeti Bank (Central Bank of Hungary)|eu_member +IS|Iceland|0159-26-007654-551073-0339|0159260076545510730339|4!n2!n6!n10!n|^(\d{4})(\d{2})(\d{6})(\d{10})$|22|IS140159260076545510730339|IS2!n4!n2!n6!n10!n|^IS(\d{2})(\d{4})(\d{2})(\d{6})(\d{10})$|26|0|3|6|11|2011-06-20|1|1|||is|IS||ISK|www.sedlabanki.is|Central Bank of Iceland|efta_member +AA|IIBAN (Internet)|0011123Z5678|0011123Z5678|12!a|^[A-Z0-9]{12}$|12|AA110011123Z5678|AA2!n12!a|^AA(\d{2})([A-Z0-9]{12})$|16|0|3||||0|0|||||||||non_member +IR|Iran|1234123412341234123412|123412341234123412|22!n|^[0-9]{22}$|22|IR081234123412341234123412|IR2!n22!n|^IR(\d{2})(\d{22})$|26|||||2016-01-22|0|0|||ir|IR||IRR|www.cbi.ir|The Central Bank of the Islamic Republic of Iran|non_member +IQ|Iraq|123456789012|NBIQ850123456789012|4!a3!n12!n|^([A-Za-z]{4})(\d{3})(\d{12})$|19|IQ98NBIQ850123456789012|IQ2!n4!a3!n12!n|^IQ(\d{2})([A-Za-z]{4})(\d{3})(\d{12})$|23|0|3|4|6|2017-08-03|0|1|||iq|IQ||IQD|www.cbi.iq|Central Bank of Iraq|non_member +IE|Ireland|93-11-52 12345678|AIBK93115212345678|4!a6!n8!n|^([A-Z]{4})(\d{6})(\d{8})$|18|IE29AIBK93115212345678|IE2!n4!a6!n8!n|^IE(\d{2})([A-Z]{4})(\d{6})(\d{8})$|22|0|3|4|9|2011-06-20|1|1|||ie|IE||EUR|www.centralbank.ie|Central Bank and Financial Services Authority of Ireland|eu_member +IL|Israel|10-800-99999999|010800000099999999|3!n3!n13!n|^(\d{3})(\d{3})(\d{13})$|19|IL620108000000099999999|IL2!n3!n3!n13!n|^IL(\d{2})(\d{3})(\d{3})(\d{13})$|23|0|2|3|5|2011-06-20|0|1|||il|IL||ILS|www.bankisrael.org.il|Bank of Israel|non_member +IT|Italy|X 05428 11101 000000123456|X0542811101000000123456|1!a5!n5!n12!c|^([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|23|IT60X0542811101000000123456|IT2!n1!a5!n5!n12!c|^IT(\d{2})([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|27|1|5|6|10|2011-06-20|1|1|0|0|it|IT||EUR|www.bancaditalia.it|Bank of Italy|eu_member +JO|Jordan|1310000302|CBJO0010000000000131000302|4!a4!n18!c|^([A-Z]{4})(\d{4})([A-Za-z0-9]{18})$|26|JO94CBJO0010000000000131000302|JO2!n4!a4!n18!c|^JO(\d{2})([A-Z]{4})(\d{4})([A-Za-z0-9]{18})$|30|0|3|4|7|2014-06-05|0|1|||jo|JO||JOD|www.cbj.gov.jo|Central Bank of Jordan|non_member +KZ|Kazakhstan|KZ86125KZT5004100100|125KZT5004100100|3!n13!c|^(\d{3})([A-Za-z0-9]{13})$|16|KZ86125KZT5004100100|KZ2!n3!n13!c|^KZ(\d{2})(\d{3})([A-Za-z0-9]{13})$|20|0|2|||2014-06-05|0|1|||kz|KZ||KZT|www.nationalbank.kz|National Bank of Kazakhstan|non_member +XK|Kosovo|1212 0123456789 06|1212012345678906|4!n10!n2!n|^(\d{4})(\d{10})(\d{2})$|16|XK051212012345678906|XK2!n4!n10!n2!n|^XK(\d{2})(\d{4})(\d{10})(\d{2})$|20|0|1|2|3|2016-01-21|0|1||||||EUR|www.bqk-kos.org|Central Bank of the Republic of Kosovo (Banka Qendrore e Kosovës)|non_member +KW|Kuwait|CBKU0000000000001234560101|CBKU0000000000001234560101|4!a22!c|^([A-Z]{4})([A-Za-z0-9]{22})$|26|KW81CBKU0000000000001234560101|KW2!n4!a22!c|^KW(\d{2})([A-Z]{4})([A-Za-z0-9]{22})$|30|0|3|||2016-01-21|0|1|||kw|KW||KWD|www.cbk.gov.kw|Central Bank of Kuwait|non_member +LV|Latvia|BANK 0000 4351 9500 1|BANK0000435195001|4!a13!c|^([A-Z]{4})([A-Za-z0-9]{13})$|17|LV80BANK0000435195001|LV2!n4!a13!c|^LV(\d{2})([A-Z]{4})([A-Za-z0-9]{13})$|21|0|3|||2011-06-20|1|1|||lv|LV||EUR|www.bank.lv/lat/main/all|Bank of Latvia|eu_member +LB|Lebanon|01 001 901229114|0999 0000 0001 0019 0122 9114|4!n20!c|^(\d{4})([A-Za-z0-9]{20})$|24|LB62099900000001001901229114|LB2!n4!n20!c|^LB(\d{2})(\d{4})([A-Za-z0-9]{20})$|28|0|3|||2011-06-20|0|1|||lb|LB||LBP|www.bdl.gov.lb|Central Bank of Lebanon|non_member +LI|Liechtenstein|8810 2324013AA|088100002324013AA|5!n12!c|^(\d{5})([A-Za-z0-9]{12})$|17|LI21088100002324013AA|LI2!n5!n12!c|^LI(\d{2})(\d{5})([A-Za-z0-9]{12})$|21|0|4|||2012-05-29|1|1|||li|LI||CHF|www.llb.li|National Bank of Liechtenstein (Liechtensteinische Landesbank)|efta_member +LT|Lithuania|1000 0111 0100 1000|10000011101001000|5!n11!n|^(\d{5})(\d{11})$|16|LT121000011101001000|LT2!n5!n11!n|^LT(\d{2})(\d{5})(\d{11})$|20|0|4|||2011-06-20|1|1|||lt|LT||EUR|www.lb.lt|Bank of Lithuania|eu_member +LU|Luxembourg|0019 4006 4475 0000|0019400644750000|3!n13!c|^(\d{3})([A-Za-z0-9]{13})$|16|LU280019400644750000|LU2!n3!n13!c|^LU(\d{2})(\d{3})([A-Za-z0-9]{13})$|20|0|2|||2011-06-20|1|1|14|15|lu|LU||EUR|www.bcl.lu|Central Bank of Luxembourg|eu_member +MK|Macedonia|300 0000000424 25|250120000058984|3!n10!c2!n|^(\d{3})([A-Za-z0-9]{10})(\d{2})$|15|MK07250120000058984|MK2!n3!n10!c2!n|^MK(\d{2})(\d{3})([A-Za-z0-9]{10})(\d{2})$|19|0|2|||2012-05-29|0|1|13|14|mk|MK||MKD|www.nbrm.mk|National Bank of the Republic of Macedonia|non_member +MG|Madagascar|12341234123412341234123|12341234123412341234123|23!n|^[0-9]{23}$|23|MG4012341234123412341234123|MG2!n23!n|^MG(\d{2})(\d{23})$|27|||||2016-01-22|0|0|||mg|MG||MGA|www.banque-centrale.mg|Central Bank of Madagascar|non_member +ML|Mali|A12312341234123412341234|A12312341234123412341234|1!a23!n|^[A-Z]{1}[0-9]{23}$|24|ML75A12312341234123412341234|ML2!n1!a23!n|^ML(\d{2})([A-Z]{1})(\d{23})$|28|||||2016-01-22|0|0|||ml|ML||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +MT|Malta|12345MTLCAST001S|MALT011000012345MTLCAST001S|4!a5!n18!c|^([A-Z]{4})(\d{5})([A-Za-z0-9]{18})$|27|MT84MALT011000012345MTLCAST001S|MT2!n4!a5!n18!c|^MT(\d{2})([A-Z]{4})(\d{5})([A-Za-z0-9]{18})$|31|0|3|4|8|2011-06-20|1|1|||mt|MT||EUR|www.centralbankmalta.org|Central Bank of Malta|eu_member +MR|Mauritania|00020 00101 00001234567 53|00020001010000123456753|5!n5!n11!n2!n|^(\d{5})(\d{5})(\d{11})(\d{2})$|23|MR1300020001010000123456753|MR2!n5!n5!n11!n2!n|^MR(\d{2})(\d{5})(\d{5})(\d{11})(\d{2})$|27|0|4|5|9|2016-06-11|0|1|21|22|mr|MR||MRO|www.bcm.mr|Central Bank of Mauritania|non_member +MU|Mauritius|BOMM 0101 1010 3030 0200 000M UR|BOMM0101101030300200000MUR|4!a2!n2!n12!n3!n3!a|^([A-Z]{4})(\d{2})(\d{2})(\d{12})(\d{3})([A-Z]{3})$|26|MU17BOMM0101101030300200000MUR|MU2!n4!a2!n2!n12!n3!n3!a|^MU(\d{2})([A-Z]{4})(\d{2})(\d{2})(\d{12})(\d{3})([A-Z]{3})$|30|0|5|6|7|2011-06-20|0|1|||mu|MU||MUR|www.bom.mu|Bank of Mauritius|non_member +MD|Moldova|00225100013104168|AG000225100013104168|2!c18!c|^([A-Za-z0-9]{2})([A-Za-z0-9]{18})$|20|MD24AG000225100013104168|MD2!n2!c18!c|^MD(\d{2})([A-Za-z0-9]{20})$|24|0|1|||2012-09-09|0|1|||md|MD||MDL|www.bnm.org|National Bank of Moldova|non_member +MC|Monaco|0011111000h|11222 00001 01234567890 30|5!n5!n11!c2!n|^(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|23|MC5811222000010123456789030|MC2!n5!n5!n11!c2!n|^MC(\d{2})(\d{5})(\d{5})([A-Za-z0-9]{11})(\d{2})$|27|0|4|5|9|2011-06-20|1|1|21|22|mc|MC||EUR|||other_member +ME|Montenegro|505 0000123456789 51|505000012345678951|3!n13!n2!n|^(\d{3})(\d{13})(\d{2})$|18|ME25505000012345678951|ME2!n3!n13!n2!n|^ME(\d{2})(\d{3})(\d{13})(\d{2})$|22|0|2|||2011-06-20|0|1|16|17|me|ME||EUR|www.cb-mn.org|Central Bank of Montenegro|non_member +MA|Morocco|00012050005349 21|011519000001205000534921|3!n5!n14!n2!n|^(\d{3})(\d{5})(\d{14})(\d{2})$|26|MA64011519000001205000534921|MA2!n3!n5!n14!n2!n|^MA(\d{2})(\d{3})(\d{5})(\d{14})(\d{2})$|28|0|2|3|7|2017-08-03|0|0|22|24|ma|MA||MAD|www.bkam.ma|Bank Al-Maghrib|non_member +MZ|Mozambique|12341234123412341|12341234123412341|21!n|^[0-9]{21}$|21|MZ97123412341234123412341|MZ2!n21!n|^MZ(\d{2})(\d{21})$|25|||||2016-01-22|0|0|||mz|MZ||MZN|www.bancomoc.mz|Bank of Mozambique|non_member +NL|Netherlands|041 71 64 300|ABNA0417164300|4!a10!n|^([A-Z]{4})(\d{10})$|14|NL91ABNA0417164300|NL2!n4!a10!n|^NL(\d{2})([A-Z]{4})(\d{10})$|18|0|3|4|3|2013-06-20|1|1|||nl|NL||EUR|www.dnb.nl|Netherlands Bank|eu_member +NI|Nicaragua|3123123|BAMC000000000000000003123123|28!n|^([A-Za-z]{4})(\d{24})$|28|NI92BAMC000000000000000003123123|NI2!n4!a24!n|^NI(\d{2})([A-Za-z]{4})(\d{24})$|32|0|3|||2017-08-03|0|0|||ni|NI||NIO|www.bcn.gob.ni|Central Bank of Nicaragua|non_member +NE|Niger|01303050002 68|NE0380100100130305000268|2!a3!n5!n12!n2!n|^([A-Za-z]{2}\d{3})(\d{5})(\d{12})(\d{2})$|23|NE58NE0380100100130305000268|NE2!n2!a3!n5!n12!n2!n|^NE(\d{2})([A-Za-z]{2}\d{3})(\d{5})(\d{12})(\d{2})$|28|0|4|5|9|2017-08-03|0|0|22|23|ne|NE||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +NO|Norway|8601 11 17947|86011117947|4!n6!n1!n|^(\d{4})(\d{6})(\d{1})$|11|NO9386011117947|NO2!n4!n6!n1!n|^NO(\d{2})(\d{4})(\d{6})(\d{1})$|15|0|3|||2011-06-20|1|1|10|10|no|NO||NOK|www.norges-bank.no|Central Bank of Norway (Norges Bank)|efta_member +PK|Pakistan|00260101036360|SCBL0000001123456702|4!a16!c|^([A-Z]{4})([A-Za-z0-9]{16})$|20|PK36SCBL0000001123456702|PK2!n4!a16!c|^PK(\d{2})([A-Z]{4})([A-Za-z0-9]{16})$|24|0|3|||2012-05-29|0|1|||pk|PK||PKR|www.sbp.org.pk|State Bank of Pakistan|non_member +PS|Palestine|400123456702|PALS000000000400123456702|4!a21!c|^([A-Z]{4})([A-Za-z0-9]{21})$|25|PS92PALS000000000400123456702|PS2!n4!a21!c|^PS(\d{2})([A-Z]{4})([A-Za-z0-9]{21})$|29|0|3|||2013-09-05|0|1|||ps|PS||ILS|www.pma.ps|Palestine Monetary Authority|non_member +PL|Poland|61 1090 1014 0000 0712 1981 2874|109010140000071219812874|8!n16!n|^(\d{8})(\d{16})$|24|PL61109010140000071219812874|PL2!n8!n16!n|^PL(\d{2})(\d{8})(\d{16})$|28|0|7|||2011-06-20|1|1|7|7|pl|PL||PLN|www.nbp.pl|National Bank of Poland|eu_member +PT|Portugal|0002.0123.12345678901.54|000201231234567890154|4!n4!n11!n2!n|^(\d{4})(\d{4})(\d{11})(\d{2})$|21|PT50000201231234567890154|PT2!n4!n4!n11!n2!n|^PT(\d{2})(\d{4})(\d{4})(\d{11})(\d{2})$|25|0|3|4|7|2013-09-05|1|1|19|20|pt|PT||EUR|www.bportugal.pt|Bank of Portugal|eu_member +QA|Qatar|QA58DOHB00001234567890ABCDEFG|DOHB00001234567890ABCDEFG|4!a4!n17!c|^([A-Z]{4})(\d{4})([A-Za-z0-9]{17})$|25|QA58DOHB00001234567890ABCDEFG|QA2!n4!a4!n17!c|^QA(\d{2})([A-Z]{4})(\d{4})([A-Za-z0-9]{17})$|29|0|3|4|7|2014-06-05|0|1|||qa|QA||QAR|www.qcb.gov.qa|Qatar Central Bank|non_member +RO|Romania|AAAA 1B31 0075 9384 0000|AAAA1B31007593840000|4!a16!c|^([A-Z]{4})([A-Za-z0-9]{16})$|20|RO49AAAA1B31007593840000|RO2!n4!a16!c|^RO(\d{2})([A-Z]{4})([A-Za-z0-9]{16})$|24|0|3|||2011-06-20|1|1|||ro|RO||RON|www.bnro.ro|National Bank of Romania|eu_member +LC|Saint Lucia|0001 0001 0012 0012 0002 3015|HEMM000100010012001200023015|4!a24!c|^([A-Z]{4})([A-Za-z0-9]{24})$|28|LC55HEMM000100010012001200023015|LC2!n4!a24!c|^LC(\d{2})([A-Z]{4})([A-Za-z0-9]{24})$|32|0|3|||2016-04-15|0|1|||lc|LC||XCD|www.eccb-centralbank.org|Eastern Caribbean Central Bank|non_member +SM|San Marino|U032 2509 8000 0000 0270 100|U0322509800000000270100|1!a5!n5!n12!c|^([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|23|SM86U0322509800000000270100|SM2!n1!a5!n5!n12!c|^SM(\d{2})([A-Z]{1})(\d{5})(\d{5})([A-Za-z0-9]{12})$|27|1|5|6|10|2011-06-20|1|1|0|0|sm|SM||EUR|www.bcsm.sm|Central Bank of the Republic of San Marino|other_member +ST|São Tomé and Príncipe|518453101|0001000100518453101|8!n11!n2!n|^(\d{8})(\d{11})(\d{2})$|21|ST68000100010051845310112|ST2!n8!n11!n2!n|^ST(\d{2})(\d{8})(\d{11})(\d{2})$|25|0|3|4|7|2016-01-21|0|1|||st|ST||STD|www.bcstp.st|Central Bank of São Tomé and Príncipe|non_member +SA|Saudi Arabia|608010167519|80000000608010167519|2!n18!c|^(\d{2})([A-Za-z0-9]{18})$|20|SA0380000000608010167519|SA2!n2!n18!c|^SA(\d{2})(\d{2})([A-Za-z0-9]{18})$|24|0|1|||2012-05-29|0|1|||sa|SA||SAR|www.sama.gov.sa|Saudi Arabian Monetary Agency|non_member +SN|Senegal|A12312341234123412341234|A12312341234123412341234|1!a23!n|^[A-Z]{1}[0-9]{23}$|24|SN15A12312341234123412341234|SN2!n1!a23!n|^SN(\d{2})([A-Z]{1})(\d{23})$|28|||||2016-01-22|0|0|||sn|SN||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +RS|Serbia|260-0056010016113-79|260005601001611379|3!n13!n2!n|^(\d{3})(\d{13})(\d{2})$|18|RS35260005601001611379|RS2!n3!n13!n2!n|^RS(\d{2})(\d{3})(\d{13})(\d{2})$|22|0|2|||2011-06-20|0|1|16|17|rs|RS||RSD|www.nbs.rs|National Bank of Serbia|non_member +SC|Seychelles|0000000000001497|SSCB11010000000000001497USD|4!a2!n2!n16!n3!a|^([A-Z]{4})(\d{2})(\d{2})(\d{16})([A-Z]{3})$|27|SC18SSCB11010000000000001497USD|SC2!n4!a2!n2!n16!n3!a|^SC(\d{2})([A-Z]{4})(\d{2})(\d{2})(\d{16})([A-Z]{3})$|31|0|3|4|7|2020-01-01|0|1|||sc|SC||SCR|www.cbs.sc|Central Bank of Seychelles|non_member +SK|Slovakia|19-8742637541/1200|12000000198742637541|4!n6!n10!n|^(\d{4})(\d{6})(\d{10})$|20|SK3112000000198742637541|SK2!n4!n6!n10!n|^SK(\d{2})(\d{4})(\d{6})(\d{10})$|24|0|3|4|9|2011-06-20|1|1|19|19|sk|SK||EUR|www.nbs.sk|National Bank of Slovakia|eu_member +SI|Slovenia|2633 0001 2039 086|263300012039086|5!n8!n2!n|^(\d{5})(\d{8})(\d{2})$|15|SI56191000000123438|SI2!n5!n8!n2!n|^SI(\d{2})(\d{5})(\d{8})(\d{2})$|19|0|1|2|4|2012-09-09|1|1|13|14|si|SI||EUR|www.bsi.si|Bank of Slovenia|eu_member +ES|Spain|2100 0418 45 0200051332|21000418450200051332|4!n4!n1!n1!n10!n|^(\d{4})(\d{4})(\d{1})(\d{1})(\d{10})$|20|ES9121000418450200051332|ES2!n4!n4!n1!n1!n10!n|^ES(\d{2})(\d{4})(\d{4})(\d{1})(\d{1})(\d{10})$|24|0|3|4|7|2013-09-05|1|1|8|9|es|ES||EUR|www.bde.es|Bank of Spain|eu_member +SE|Sweden|1234 12 3456 1|5000 0000 0583 9825 7466|3!n16!n1!n|^(\d{3})(\d{16})(\d{1})$|20|SE4550000000058398257466|SE2!n3!n16!n1!n|^SE(\d{2})(\d{3})(\d{16})(\d{1})$|24|0|2|||2011-06-20|1|1|19|19|se|SE||SEK|www.riksbank.com|Bank of Sweden (Sveriges Riksbank)|eu_member +CH|Switzerland|762 1162-3852.957|00762011623852957|5!n12!c|^(\d{5})([A-Za-z0-9]{12})$|17|CH9300762011623852957|CH2!n5!n12!c|^CH(\d{2})(\d{5})([A-Za-z0-9]{12})$|21|0|4|||2011-06-20|1|1|||ch|CH||CHF|www.snb.ch|Swiss National Bank|efta_member +TL|Timor-Leste|008 00123456789101 57|0080012345678910157|3!n 14!n 2!n|^(\d{3})(\d{14})(\d{2})$|19|TL380080012345678910157|TL2!n3!n14!n2!n|^TL(\d{2})(\d{3})(\d{14})(\d{2})$|23|0|3|4|6|2016-01-21|0|1|17|18|tl|TL||USD|www.bancocentral.tl|Central Bank of Timor-Leste (Banco Central de Timor-Leste)|non_member +TG|Togo|43103465004000 70|TG0090604310346500400070|2!a3!n5!n12!n2!n|^([A-Za-z]{2}\d{3})(\d{5})(\d{12})(\d{2})$|26|TG53TG0090604310346500400070|TG2!n2!a3!n5!n12!n2!n|^TG(\d{2})([A-Za-z]{2}\d{3})(\d{5})(\d{12})(\d{2})$|28|0|4|5|9|2017-08-03|0|0|22|24|tg|TG||XOF|www.bceao.int|Central Bank of West African States (BCEAO)|non_member +TN|Tunisia|10 006 0351835984788 31|10006035183598478831|2!n3!n13!n2!n|^(\d{2})(\d{3})(\d{13})(\d{2})$|20|TN5910006035183598478831|TN2!n2!n3!n13!n2!n|^TN(\d{2})(\d{2})(\d{3})(\d{13})(\d{2})$|24|0|1|2|4|2011-06-20|0|1|18|19|tn|TN||TND|www.bct.gov.tn|Central Bank of Tunisia|non_member +TR|Turkey|TR33 0006 1005 1978 6457 8413 26|0006100519786457841326|5!n1!n16!c|^(\d{5})(\d{1})([A-Za-z0-9]{16})$|22|TR330006100519786457841326|TR2!n5!n1!n16!c|^TR(\d{2})(\d{5})(\d{1})([A-Za-z0-9]{16})$|26|0|4|||2016-01-21|0|1|||tr|TR||TRY|www.tcmb.gov.tr|Central Bank of the Republic of Turkey|non_member +UA|Ukraine|3996220000026007233566001|3996220000026007233566001|6!n19!c|^[0-9]{6}[A-Za-z0-9]{19}$|25|UA213996220000026007233566001|UA2!n6!n19!c|^UA(\d{2})(\d{6})([A-Za-z0-9]{19})$|29|0|5|||2016-01-22|0|0|||ua|UA||UAH|www.bank.gov.ua|National Bank of Ukraine|non_member +AE|United Arab Emirates|1234567890123456|0331234567890123456|3!n16!n|^(\d{3})(\d{16})$|19|AE070331234567890123456|AE2!n3!n16!n|^AE(\d{2})(\d{3})(\d{16})$|23|0|2|||2011-06-20|0|1|||ae|AE||AED|www.centralbank.ae|Central Bank of the United Arab Emirates|non_member +GB|United Kingdom|60-16-13 31926819|NWBK60161331926819|4!a6!n8!n|^([A-Z]{4})(\d{6})(\d{8})$|18|GB29NWBK60161331926819|GB2!n4!a6!n8!n|^GB(\d{2})([A-Z]{4})(\d{6})(\d{8})$|22|0|3|4|9|2011-06-20|1|1|||uk|GB||GBP|www.bankofengland.co.uk|Bank of England|other_member diff --git a/htdocs/includes/tecnickcom/tcpdf/tcpdf_barcodes_1d.php b/htdocs/includes/tecnickcom/tcpdf/tcpdf_barcodes_1d.php index 78bfc5b5bf4..2fea49ef4ce 100644 --- a/htdocs/includes/tecnickcom/tcpdf/tcpdf_barcodes_1d.php +++ b/htdocs/includes/tecnickcom/tcpdf/tcpdf_barcodes_1d.php @@ -1337,14 +1337,14 @@ class TCPDFBarcode { // calculate check digit $sum_a = 0; for ($i = 1; $i < $data_len; $i+=2) { - $sum_a += $code[$i]; + $sum_a += (int) $code[$i]; } if ($len > 12) { $sum_a *= 3; } $sum_b = 0; for ($i = 0; $i < $data_len; $i+=2) { - $sum_b += ($code[$i]); + $sum_b += (int) ($code[$i]); } if ($len < 13) { $sum_b *= 3; @@ -2171,7 +2171,7 @@ class TCPDFBarcode { /** * IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200 - * + * * @param $code (string) pre-formatted IMB barcode (65 chars "FADT") * @return array barcode representation. * @protected diff --git a/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/bug_report.md b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000000..735fbe018f9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**Used config** +Please provide the used config, if you are not using the package default config. + +**Code to Reproduce** +The troubling code section which produces the reported bug. +```php +echo "Bug"; +``` + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop / Server (please complete the following information):** +- OS: [e.g. Debian 10] +- PHP: [e.g. 5.5.9] +- Version [e.g. v2.3.1] + +**Additional context** +Add any other context about the problem here. diff --git a/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/feature_request.md b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000000..066b2d920a2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/general-help-request.md b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/general-help-request.md new file mode 100644 index 00000000000..49809d14033 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/.github/ISSUE_TEMPLATE/general-help-request.md @@ -0,0 +1,12 @@ +--- +name: General help request +about: Feel free to ask about any project related stuff + +--- + +Please be aware that these issues will be closed if inactive for more then 14 days. + +Also make sure to use https://github.com/Webklex/php-imap/issues/new?template=bug_report.md if you want to report a bug +or https://github.com/Webklex/php-imap/issues/new?template=feature_request.md if you want to suggest a feature. + +Still here? Well clean this out and go ahead :) diff --git a/htdocs/includes/webklex/php-imap/.gitignore b/htdocs/includes/webklex/php-imap/.gitignore new file mode 100644 index 00000000000..82955a58640 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/.gitignore @@ -0,0 +1,3 @@ +composer.lock +.idea +/build/ diff --git a/htdocs/includes/webklex/php-imap/CHANGELOG.md b/htdocs/includes/webklex/php-imap/CHANGELOG.md new file mode 100755 index 00000000000..a2ce640de53 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/CHANGELOG.md @@ -0,0 +1,577 @@ +# Changelog + +All notable changes to `webklex/php-imap` will be documented in this file. + +Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles. + +## [UNRELEASED] +### Fixed +- NaN + +### Added +- NaN + +### Affected Classes +- NaN + +### Breaking changes +- NaN + +## [2.7.2] - 2021-09-27 +### Fixed +- Fixed problem with skipping last line of the response. #166 (thanks @szymekjanaczek) + +## [2.7.1] - 2021-09-08 +### Added +- Added `UID` as available search criteria #161 (thanks @szymekjanaczek) + +## [2.7.0] - 2021-09-04 +### Fixed +- Fixes handling of long header lines which are seperated by `\r\n\t` (thanks @Oliver-Holz) +- Fixes to line parsing with multiple addresses (thanks @Oliver-Holz) + +### Added +- Expose message folder path #154 (thanks @Magiczne) +- Adds mailparse_rfc822_parse_addresses integration (thanks @Oliver-Holz) +- Added moveManyMessages method (thanks @Magiczne) +- Added copyManyMessages method (thanks @Magiczne) + +### Affected Classes +- [Header::class](src/Header.php) +- [Message::class](src/Message.php) + +## [2.6.0] - 2021-08-20 +### Fixed +- POP3 fixes #151 (thanks @Korko) + +### Added +- Added imap 4 handling. #146 (thanks @szymekjanaczek) +- Added laravel's conditionable methods. #147 (thanks @szymekjanaczek) + +### Affected Classes +- [Query::class](src/Query/Query.php) +- [Client::class](src/Client.php) + +## [2.5.1] - 2021-06-19 +### Fixed +- Fix setting default mask from config #133 (thanks @shacky) +- Chunked fetch fails in case of less available mails than page size #114 +- Protocol::createStream() exception information fixed #137 +- Legacy methods (headers, content, flags) fixed #125 +- Legacy connection cycle fixed #124 (thanks @zssarkany) + +### Added +- Disable rfc822 header parsing via config option #115 + +## [2.5.0] - 2021-02-01 +### Fixed +- Attachment saving filename fixed +- Unnecessary parameter removed from `Client::getTimeout()` +- Missing encryption variable added - could have caused problems with unencrypted communications +- Prefer attachment filename attribute over name attribute #82 +- Missing connection settings added to `Folder:idle()` auto mode #89 +- Message move / copy expect a folder path #79 +- `Client::getFolder()` updated to circumvent special edge cases #79 +- Missing connection status checks added to various methods +- Unused default attribute `message_no` removed from `Message::class` + +### Added +- Dynamic Attribute access support added (e.g `$message->from[0]`) +- Message not found exception added #93 +- Chunked fetching support added `Query::chunked()`. Just in case you can't fetch all messages at once +- "Soft fail" support added +- Count method added to `Attribute:class` +- Convert an Attribute instance into a Carbon date object #95 + +### Affected Classes +- [Attachment::class](src/Attachment.php) +- [Attribute::class](src/Attribute.php) +- [Query::class](src/Query/Query.php) +- [Message::class](src/Message.php) +- [Client::class](src/Client.php) +- [Folder::class](src/Folder.php) + +### Breaking changes +- A new exception can occur if a message can't be fetched (`\Webklex\PHPIMAP\Exceptions\MessageNotFoundException::class`) +- `Message::move()` and `Message::copy()` no longer accept folder names as folder path +- A `Message::class` instance might no longer have a `message_no` attribute + +## [2.4.4] - 2021-01-22 +### Fixed +- Boundary detection simplified #90 +- Prevent potential body overwriting #90 +- CSV files are no longer regarded as plain body +- Boundary detection overhauled to support "related" and "alternative" multipart messages #90 #91 + +### Affected Classes +- [Structure::class](src/Structure.php) +- [Message::class](src/Message.php) +- [Header::class](src/Header.php) +- [Part::class](src/Part.php) + +## [2.4.3] - 2021-01-21 +### Fixed +- Attachment detection updated #82 #90 +- Timeout handling improved +- Additional utf-8 checks added to prevent decoding of unencoded values #76 + +### Added +- Auto reconnect option added to `Folder::idle()` #89 + +### Affected Classes +- [Folder::class](src/Folder.php) +- [Part::class](src/Part.php) +- [Client::class](src/Client.php) +- [Header::class](src/Header.php) + +## [2.4.2] - 2021-01-09 +### Fixed +- Attachment::save() return error 'A facade root has not been set' #87 +- Unused dependencies removed +- Fix PHP 8 error that changes null back in to an empty string. #88 (thanks @mennovanhout) +- Fix regex to be case insensitive #88 (thanks @mennovanhout) + +### Affected Classes +- [Attachment::class](src/Attachment.php) +- [Address::class](src/Address.php) +- [Attribute::class](src/Attribute.php) +- [Structure::class](src/Structure.php) + +## [2.4.1] - 2021-01-06 +### Fixed +- Debug line position fixed +- Handle incomplete address to string conversion #83 +- Configured message key gets overwritten by the first fetched message #84 + +### Affected Classes +- [Address::class](src/Address.php) +- [Query::class](src/Query/Query.php) + +## [2.4.0] - 2021-01-03 +### Fixed +- Get partial overview when `IMAP::ST_UID` is set #74 +- Unnecessary "'" removed from address names +- Folder referral typo fixed +- Legacy protocol fixed +- Treat message collection keys always as strings + +### Added +- Configurable supported default flags added +- Message attribute class added to unify value handling +- Address class added and integrated +- Alias `Message::attachments()` for `Message::getAttachments()` added +- Alias `Message::addFlag()` for `Message::setFlag()` added +- Alias `Message::removeFlag()` for `Message::unsetFlag()` added +- Alias `Message::flags()` for `Message::getFlags()` added +- New Exception `MessageFlagException::class` added +- New method `Message::setSequenceId($id)` added +- Optional Header attributizion option added + +### Affected Classes +- [Folder::class](src/Folder.php) +- [Header::class](src/Header.php) +- [Message::class](src/Message.php) +- [Address::class](src/Address.php) +- [Query::class](src/Query/Query.php) +- [Attribute::class](src/Attribute.php) + +### Breaking changes +- Stringified message headers are now separated by ", " instead of " ". +- All message header values such as subject, message_id, from, to, etc now consists of an `Àttribute::class` instance (should behave the same way as before, but might cause some problem in certain edge cases) +- The formal address object "from", "to", etc now consists of an `Address::class` instance (should behave the same way as before, but might cause some problem in certain edge cases) +- When fetching or manipulating message flags a `MessageFlagException::class` exception can be thrown if a runtime error occurs +- Learn more about the new `Attribute` class here: [www.php-imap.com/api/attribute](https://www.php-imap.com/api/attribute) +- Learn more about the new `Address` class here: [www.php-imap.com/api/address](https://www.php-imap.com/api/address) +- Folder attribute "referal" is now called "referral" + +## [2.3.1] - 2020-12-30 +### Fixed +- Missing RFC attributes added +- Set the message sequence when idling +- Missing UID commands added #64 + +### Added +- Get a message by its message number +- Get a message by its uid #72 #66 #63 + +### Affected Classes +- [Message::class](src/Message.php) +- [Folder::class](src/Folder.php) +- [Query::class](src/Query/Query.php) + +## [2.3.0] - 2020-12-21 +### Fixed +- Cert validation issue fixed +- Allow boundaries ending with a space or semicolon (thanks [@smartilabs](https://github.com/smartilabs)) +- Ignore IMAP DONE command response #57 +- Default `options.fetch` set to `IMAP::FT_PEEK` +- Address parsing fixed #60 +- Alternative rfc822 header parsing fixed #60 +- Parse more than one Received: header #61 +- Fetch folder overview fixed +- `Message::getTextBody()` fallback value fixed + +### Added +- Proxy support added +- Flexible disposition support added #58 +- New `options.message_key` option `uid` added +- Protocol UID support added +- Flexible sequence type support added + +### Affected Classes +- [Structure::class](src/Structure.php) +- [Query::class](src/Query/Query.php) +- [Client::class](src/Client.php) +- [Header::class](src/Header.php) +- [Folder::class](src/Folder.php) +- [Part::class](src/Part.php) + +### Breaking changes +- Depending on your configuration, your certificates actually get checked. Which can cause an aborted connection if the certificate can not be validated. +- Messages don't get flagged as read unless you are using your own custom config. +- All `Header::class` attribute keys are now in a snake_format and no longer minus-separated. +- `Message::getTextBody()` no longer returns false if no text body is present. `null` is returned instead. + +## [2.2.5] - 2020-12-11 +### Fixed +- Missing array decoder method added #51 (thanks [@lutchin](https://github.com/lutchin)) +- Additional checks added to prevent message from getting marked as seen #33 +- Boundary parsing improved #39 #36 (thanks [@AntonioDiPassio-AppSys](https://github.com/AntonioDiPassio-AppSys)) +- Idle operation updated #44 + +### Added +- Force a folder to be opened + +### Affected Classes +- [Header::class](src/Header.php) +- [Folder::class](src/Folder.php) +- [Query::class](src/Query/Query.php) +- [Message::class](src/Message.php) +- [Structure::class](src/Structure.php) + +## [2.2.4] - 2020-12-08 +### Fixed +- Search performance increased by fetching all headers, bodies and flags at once #42 +- Legacy protocol support updated +- Fix Query pagination. (#52 [@mikemiller891](https://github.com/mikemiller891)) + +### Added +- Missing message setter methods added +- `Folder::overview()` method added to fetch all headers of all messages in the current folder + +### Affected Classes +- [Message::class](src/Message.php) +- [Folder::class](src/Folder.php) +- [Query::class](src/Query/Query.php) +- [PaginatedCollection::class](src/Support/PaginatedCollection.php) + +## [2.2.3] - 2020-11-02 +### Fixed +- Text/Html body fetched as attachment if subtype is null #34 +- Potential header overwriting through header extensions #35 +- Prevent empty attachments #37 + +### Added +- Set fetch order during query #41 [@Max13](https://github.com/Max13) + +### Affected Classes +- [Message::class](src/Message.php) +- [Part::class](src/Part.php) +- [Header::class](src/Header.php) +- [Query::class](src/Query/Query.php) + + +## [2.2.2] - 2020-10-20 +### Fixed +- IMAP::FT_PEEK removing "Seen" flag issue fixed #33 + +### Affected Classes +- [Message::class](src/Message.php) + +## [2.2.1] - 2020-10-19 +### Fixed +- Header decoding problem fixed #31 + +### Added +- Search for messages by message-Id +- Search for messages by In-Reply-To +- Message threading added `Message::thread()` +- Default folder locations added + +### Affected Classes +- [Query::class](src/Query/Query.php) +- [Message::class](src/Message.php) +- [Header::class](src/Header.php) + + +## [2.2.0] - 2020-10-16 +### Fixed +- Prevent text bodies from being fetched as attachment #27 +- Missing variable check added to prevent exception while parsing an address [webklex/laravel-imap #356](https://github.com/Webklex/laravel-imap/issues/356) +- Missing variable check added to prevent exception while parsing a part subtype #27 +- Missing variable check added to prevent exception while parsing a part content-type [webklex/laravel-imap #356](https://github.com/Webklex/laravel-imap/issues/356) +- Mixed message header attribute `in_reply_to` "unified" to be always an array #26 +- Potential message moving / copying problem fixed #29 +- Move messages by using `Protocol::moveMessage()` instead of `Protocol::copyMessage()` and `Message::delete()` #29 + +### Added +- `Protocol::moveMessage()` method added #29 + +### Affected Classes +- [Message::class](src/Message.php) +- [Header::class](src/Header.php) +- [Part::class](src/Part.php) + +### Breaking changes +- Text bodies might no longer get fetched as attachment +- `Message::$in_reply_to` type changed from mixed to array + +## [2.1.13] - 2020-10-13 +### Fixed +- Boundary detection problem fixed (#28 [@DasTobbel](https://github.com/DasTobbel)) +- Content-Type detection problem fixed (#28 [@DasTobbel](https://github.com/DasTobbel)) + +### Affected Classes +- [Structure::class](src/Structure.php) + +## [2.1.12] - 2020-10-13 +### Fixed +- If content disposition is multiline, implode the array to a simple string (#25 [@DasTobbel](https://github.com/DasTobbel)) + +### Affected Classes +- [Part::class](src/Part.php) + +## [2.1.11] - 2020-10-13 +### Fixed +- Potential problematic prefixed white-spaces removed from header attributes + +### Added +- Expended `Client::getFolder($name, $deleimiter = null)` to accept either a folder name or path ([@DasTobbel](https://github.com/DasTobbel)) +- Special MS-Exchange header decoding support added + +### Affected Classes +- [Client::class](src/Client.php) +- [Header::class](src/Header.php) + +## [2.1.10] - 2020-10-09 +### Added +- `ClientManager::make()` method added to support undefined accounts + +### Affected Classes +- [ClientManager::class](src/ClientManager.php) + +## [2.1.9] - 2020-10-08 +### Fixed +- Fix inline attachments and embedded images (#22 [@dwalczyk](https://github.com/dwalczyk)) + +### Added +- Alternative attachment names support added (#20 [@oneFoldSoftware](https://github.com/oneFoldSoftware)) +- Fetch message content without leaving a "Seen" flag behind + +### Affected Classes +- [Attachment::class](src/Attachment.php) +- [Message::class](src/Message.php) +- [Part::class](src/Part.php) +- [Query::class](src/Query/Query.php) + +## [2.1.8] - 2020-10-08 +### Fixed +- Possible error during address decoding fixed (#16 [@Slauta](https://github.com/Slauta)) +- Flag event dispatching fixed #15 + +### Added +- Support multiple boundaries (#17, #19 [@dwalczyk](https://github.com/dwalczyk)) + +### Affected Classes +- [Structure::class](src/Structure.php) + +## [2.1.7] - 2020-10-03 +### Fixed +- Fixed `Query::paginate()` (#13 #14 by [@Max13](https://github.com/Max13)) + +### Affected Classes +- [Query::class](src/Query/Query.php) + +## [2.1.6] - 2020-10-02 +### Fixed +- `Message::getAttributes()` hasn't returned all parameters + +### Affected Classes +- [Message::class](src/Message.php) + +### Added +- Part number added to attachment +- `Client::getFolderByPath()` added (#12 by [@Max13](https://github.com/Max13)) +- `Client::getFolderByName()` added (#12 by [@Max13](https://github.com/Max13)) +- Throws exceptions if the authentication fails (#11 by [@Max13](https://github.com/Max13)) + +### Affected Classes +- [Client::class](src/Client.php) + +## [2.1.5] - 2020-09-30 +### Fixed +- Wrong message content property reference fixed (#10) + +## [2.1.4] - 2020-09-30 +### Fixed +- Fix header extension values +- Part header detection method changed (#10) + +### Affected Classes +- [Header::class](src/Header.php) +- [Part::class](src/Part.php) + +## [2.1.3] - 2020-09-29 +### Fixed +- Possible decoding problem fixed +- `Str::class` dependency removed from `Header::class` + +### Affected Classes +- [Header::class](src/Header.php) + +## [2.1.2] - 2020-09-28 +### Fixed +- Dependency problem in `Attachement::getExtension()` fixed (#9) + +### Affected Classes +- [Attachment::class](src/Attachment.php) + +## [2.1.1] - 2020-09-23 +### Fixed +- Missing default config parameter added + +### Added +- Default account config fallback added + +### Affected Classes +- [Client::class](src/Client.php) + +## [2.1.0] - 2020-09-22 +### Fixed +- Quota handling fixed + +### Added +- Event system and callbacks added + +### Affected Classes +- [Client::class](src/Client.php) +- [Folder::class](src/Folder.php) +- [Message::class](src/Message.php) + +## [2.0.1] - 2020-09-20 +### Fixed +- Carbon dependency fixed + +## [2.0.0] - 2020-09-20 +### Fixed +- Missing pagination item records fixed + +### Added +- php-imap module replaced by direct socket communication +- Legacy support added +- IDLE support added +- oAuth support added +- Charset detection method updated +- Decoding fallback charsets added + +### Affected Classes +- All + +## [1.4.5] - 2019-01-23 +### Fixed +- .csv attachement is not processed +- mail part structure property comparison changed to lowercase +- Replace helper functions for Laravel 6.0 #4 (@koenhoeijmakers) +- Date handling in Folder::appendMessage() fixed +- Carbon Exception Parse Data +- Convert sender name from non-utf8 to uf8 (@hwilok) +- Convert encoding of personal data struct + +### Added +- Path prefix option added to Client::getFolder() method +- Attachment size handling added +- Find messages by custom search criteria + +### Affected Classes +- [Query::class](src/Query/WhereQuery.php) +- [Mask::class](src/Support/Masks/Mask.php) +- [Attachment::class](src/Attachment.php) +- [Client::class](src/Client.php) +- [Folder::class](src/Folder.php) +- [Message::class](src/Message.php) + +## [1.4.2.1] - 2019-07-03 +### Fixed +- Error in Attachment::__construct #3 +- Examples added + +## [1.4.2] - 2019-07-02 +### Fixed +- Pagination count total bug #213 +- Changed internal message move and copy methods #210 +- Query::since() query returning empty response #215 +- Carbon Exception Parse Data #45 +- Reading a blank body (text / html) but only from this sender #203 +- Problem with Message::moveToFolder() and multiple moves #31 +- Problem with encoding conversion #203 +- Message null value attribute problem fixed +- Client connection path handling changed to be handled inside the calling method #31 +- iconv(): error suppressor for //IGNORE added #184 +- Typo Folder attribute fullName changed to full_name +- Query scope error fixed #153 +- Replace embedded image with URL #151 +- Fix sender name in non-latin emails sent from Gmail (#155) +- Fix broken non-latin characters in body in ASCII (us-ascii) charset #156 +- Message::getMessageId() returns wrong value #197 +- Message date validation extended #45 #192 +- Removed "-i" from "iso-8859-8-i" in Message::parseBody #146 + +### Added +- Message::getFolder() method +- Create a fast count method for queries #216 +- STARTTLS encryption alias added +- Mailbox fetching exception added #201 +- Message::moveToFolder() fetches new Message::class afterwards #31 +- Message structure accessor added #182 +- Shadow Imap const class added #188 +- Connectable "NOT" queries added +- Additional where methods added +- Message attribute handling changed +- Attachment attribute handling changed +- Message flag handling updated +- Message::getHTMLBody($callback) extended +- Masks added (take look at the examples for more information on masks) +- More examples added +- Query::paginate() method added +- Imap client timeout can be modified and read #186 +- Decoder config options added #175 +- Message search criteria "NOT" added #181 +- Invalid message date exception added +- Blade examples + +### Breaking changes +- Message::moveToFolder() returns either a Message::class instance or null and not a boolean +- Folder::fullName is now Folder::full_name +- Attachment::image_src might no longer work as expected - use Attachment::getImageSrc() instead + +### Affected Classes +- [Folder::class](src/Folder.php) +- [Client::class](src/Client.php) +- [Message::class](src/Message.php) +- [Attachment::class](src/Attachment.php) +- [Query::class](src/Query/Query.php) +- [WhereQuery::class](src/Query/WhereQuery.php) + +## 0.0.3 - 2018-12-02 +### Fixed +- Folder delimiter check added #137 +- Config setting not getting loaded +- Date parsing updated + +### Affected Classes +- [Folder::class](src/IMAP/Client.php) +- [Folder::class](src/IMAP/Message.php) + +## 0.0.1 - 2018-08-13 +### Added +- new php-imap package (fork from [webklex/laravel-imap](https://github.com/Webklex/laravel-imap)) diff --git a/htdocs/includes/webklex/php-imap/CODE_OF_CONDUCT.md b/htdocs/includes/webklex/php-imap/CODE_OF_CONDUCT.md new file mode 100644 index 00000000000..2ed07c83f5f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at github@webklex.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/htdocs/includes/webklex/php-imap/LICENSE b/htdocs/includes/webklex/php-imap/LICENSE new file mode 100644 index 00000000000..6c13191e712 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Webklex + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/LICENSE.md b/htdocs/includes/webklex/php-imap/LICENSE.md new file mode 100644 index 00000000000..feae5f320dc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/LICENSE.md @@ -0,0 +1,21 @@ +# The MIT License (MIT) + +Copyright (c) 2016 Malte Goldenbaum + +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/README.md b/htdocs/includes/webklex/php-imap/README.md new file mode 100755 index 00000000000..65012298af2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/README.md @@ -0,0 +1,158 @@ + +# IMAP Library for PHP + +[![Latest Version on Packagist][ico-version]][link-packagist] +[![Software License][ico-license]][link-license] +[![Build Status][ico-travis]][link-scrutinizer] +[![Total Downloads][ico-downloads]][link-downloads] +[![Hits][ico-hits]][link-hits] + + +## Description +PHP-IMAP is a wrapper for common IMAP communication without the need to have the php-imap module installed / enabled. +The protocol is completely integrated and therefore supports IMAP IDLE operation and the "new" oAuth authentication +process as well. +You can enable the `php-imap` module in order to handle edge cases, improve message decoding quality and is required if +you want to use legacy protocols such as pop3. + +Official documentation: [php-imap.com](https://www.php-imap.com/) + +Laravel wrapper: [webklex/laravel-imap](https://github.com/Webklex/laravel-imap) + + +## Table of Contents +- [Documentations](#documentations) +- [Basic usage example](#basic-usage-example) +- [Known issues](#known-issues) +- [Support](#support) +- [Features & pull requests](#features--pull-requests) +- [Security](#security) +- [Credits](#credits) +- [License](#license) + + +## Documentations +- Legacy (< v2.0.0): [legacy documentation](https://github.com/Webklex/php-imap/tree/1.4.5) +- Core documentation: [php-imap.com](https://www.php-imap.com/) + + +## Basic usage example +This is a basic example, which will echo out all Mails within all imap folders +and will move every message into INBOX.read. Please be aware that this should not be +tested in real life and is only meant to gives an impression on how things work. + +```php +use Webklex\PHPIMAP\ClientManager; + +$cm = new ClientManager('path/to/config/imap.php'); + +/** @var \Webklex\PHPIMAP\Client $client */ +$client = $cm->account('account_identifier'); + +//Connect to the IMAP Server +$client->connect(); + +//Get all Mailboxes +/** @var \Webklex\PHPIMAP\Support\FolderCollection $folders */ +$folders = $client->getFolders(); + +//Loop through every Mailbox +/** @var \Webklex\PHPIMAP\Folder $folder */ +foreach($folders as $folder){ + + //Get all Messages of the current Mailbox $folder + /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ + $messages = $folder->messages()->all()->get(); + + /** @var \Webklex\PHPIMAP\Message $message */ + foreach($messages as $message){ + echo $message->getSubject().'
'; + echo 'Attachments: '.$message->getAttachments()->count().'
'; + echo $message->getHTMLBody(); + + //Move the current Message to 'INBOX.read' + if($message->move('INBOX.read') == true){ + echo 'Message has ben moved'; + }else{ + echo 'Message could not be moved'; + } + } +} +``` + + +### Known issues +| Error | Solution | +| ------------------------------------------------------------------------- | ---------------------------------------------------------- | +| Kerberos error: No credentials cache file found (try running kinit) (...) | Uncomment "DISABLE_AUTHENTICATOR" inside your config and use the `legacy-imap` protocol | + + +## Support +If you encounter any problems or if you find a bug, please don't hesitate to create a new [issue](https://github.com/Webklex/php-imap/issues). +However please be aware that it might take some time to get an answer. +Off topic, rude or abusive issues will be deleted without any notice. + +If you need **commercial** support, feel free to send me a mail at github@webklex.com. + + +##### A little notice +If you write source code in your issue, please consider to format it correctly. This makes it so much nicer to read +and people are more likely to comment and help :) + +```php + +echo 'your php code...'; + +``` + +will turn into: +```php +echo 'your php code...'; +``` + + +## Features & pull requests +Everyone can contribute to this project. Every pull request will be considered but it can also happen to be declined. +To prevent unnecessary work, please consider to create a [feature issue](https://github.com/Webklex/php-imap/issues/new?template=feature_request.md) +first, if you're planning to do bigger changes. Of course you can also create a new [feature issue](https://github.com/Webklex/php-imap/issues/new?template=feature_request.md) +if you're just wishing a feature ;) + + +## Change log +Please see [CHANGELOG][link-changelog] for more information what has changed recently. + + +## Security +If you discover any security related issues, please email github@webklex.com instead of using the issue tracker. + + +## Credits +- [Webklex][link-author] +- [All Contributors][link-contributors] + + +## License +The MIT License (MIT). Please see [License File][link-license] for more information. + + +[ico-version]: https://img.shields.io/packagist/v/Webklex/php-imap.svg?style=flat-square +[ico-license]: https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square +[ico-travis]: https://img.shields.io/travis/Webklex/php-imap/master.svg?style=flat-square +[ico-scrutinizer]: https://img.shields.io/scrutinizer/coverage/g/Webklex/php-imap.svg?style=flat-square +[ico-code-quality]: https://img.shields.io/scrutinizer/g/Webklex/php-imap.svg?style=flat-square +[ico-downloads]: https://img.shields.io/packagist/dt/Webklex/php-imap.svg?style=flat-square +[ico-build]: https://img.shields.io/scrutinizer/build/g/Webklex/php-imap/master?style=flat-square +[ico-quality]: https://img.shields.io/scrutinizer/quality/g/Webklex/php-imap/master?style=flat-square +[ico-hits]: https://hits.webklex.com/svg/webklex/php-imap + +[link-packagist]: https://packagist.org/packages/Webklex/php-imap +[link-travis]: https://travis-ci.org/Webklex/php-imap +[link-scrutinizer]: https://scrutinizer-ci.com/g/Webklex/php-imap/code-structure +[link-code-quality]: https://scrutinizer-ci.com/g/Webklex/php-imap +[link-downloads]: https://packagist.org/packages/Webklex/php-imap +[link-author]: https://github.com/webklex +[link-contributors]: https://github.com/Webklex/php-imap/graphs/contributors +[link-license]: https://github.com/Webklex/php-imap/blob/master/LICENSE +[link-changelog]: https://github.com/Webklex/php-imap/blob/master/CHANGELOG.md +[link-jetbrains]: https://www.jetbrains.com +[link-hits]: https://hits.webklex.com diff --git a/htdocs/includes/webklex/php-imap/composer.json b/htdocs/includes/webklex/php-imap/composer.json new file mode 100644 index 00000000000..9bc3849a98f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/composer.json @@ -0,0 +1,55 @@ +{ + "name": "webklex/php-imap", + "type": "library", + "description": "PHP IMAP client", + "keywords": [ + "webklex", + "imap", + "pop3", + "php-imap", + "mail" + ], + "homepage": "https://github.com/webklex/php-imap", + "license": "MIT", + "authors": [ + { + "name": "Malte Goldenbaum", + "email": "github@webklex.com", + "role": "Developer" + } + ], + "require": { + "php": ">=5.5.9", + "ext-openssl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-iconv": "*", + "ext-fileinfo": "*", + "nesbot/carbon": ">=1.0", + "symfony/http-foundation": ">=2.8.0", + "illuminate/pagination": ">=5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "autoload": { + "psr-4": { + "Webklex\\PHPIMAP\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests" + } + }, + "scripts": { + "test": "phpunit" + }, + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "minimum-stability": "dev", + "prefer-stable": true +} diff --git a/htdocs/includes/webklex/php-imap/deleted.txt b/htdocs/includes/webklex/php-imap/deleted.txt new file mode 100644 index 00000000000..9993acc6994 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/deleted.txt @@ -0,0 +1,16 @@ +./vendor/carbon +./vendor/nesbot/carbon/bin +./vendor/phpunit +./vendor/sebastian +./vendor/psr +./vendor/webmozart +./vendor/symfony/http-foundation +./vendor/symfony/translation +./vendor/symfony/translation-contracts +./vendor/symfony/yaml +./vendor/voku +./vendor/phpspec +./vendor/phpdocumentor +./vendor/nesbot/carbon/src/Carbon/Lang +./vendor/doctrine +./tests diff --git a/htdocs/includes/webklex/php-imap/src/Address.php b/htdocs/includes/webklex/php-imap/src/Address.php new file mode 100644 index 00000000000..644158dd18d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Address.php @@ -0,0 +1,90 @@ +personal = $object->personal; } + if (property_exists($object, "mailbox")){ $this->mailbox = $object->mailbox; } + if (property_exists($object, "host")){ $this->host = $object->host; } + if (property_exists($object, "mail")){ $this->mail = $object->mail; } + if (property_exists($object, "full")){ $this->full = $object->full; } + } + + + /** + * Return the stringified address + * + * @return string + */ + public function __toString() { + return $this->full ? $this->full : ""; + } + + /** + * Return the serialized address + * + * @return array + */ + public function __serialize(){ + return [ + "personal" => $this->personal, + "mailbox" => $this->mailbox, + "host" => $this->host, + "mail" => $this->mail, + "full" => $this->full, + ]; + } + + /** + * Convert instance to array + * + * @return array + */ + public function toArray(){ + return $this->__serialize(); + } + + /** + * Return the stringified attribute + * + * @return string + */ + public function toString(){ + return $this->__toString(); + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Attachment.php b/htdocs/includes/webklex/php-imap/src/Attachment.php new file mode 100755 index 00000000000..29c3d44268a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Attachment.php @@ -0,0 +1,344 @@ + null, + 'type' => null, + 'part_number' => 0, + 'content_type' => null, + 'id' => null, + 'name' => null, + 'disposition' => null, + 'img_src' => null, + 'size' => null, + ]; + + /** + * Default mask + * + * @var string $mask + */ + protected $mask = AttachmentMask::class; + + /** + * Attachment constructor. + * @param Message $oMessage + * @param Part $part + */ + public function __construct(Message $oMessage, Part $part) { + $this->config = ClientManager::get('options'); + + $this->oMessage = $oMessage; + $this->part = $part; + $this->part_number = $part->part_number; + + $default_mask = $this->oMessage->getClient()->getDefaultAttachmentMask(); + if($default_mask != null) { + $this->mask = $default_mask; + } + + $this->findType(); + $this->fetch(); + } + + /** + * Call dynamic attribute setter and getter methods + * @param string $method + * @param array $arguments + * + * @return mixed + * @throws MethodNotFoundException + */ + public function __call($method, $arguments) { + if(strtolower(substr($method, 0, 3)) === 'get') { + $name = Str::snake(substr($method, 3)); + + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + return null; + }elseif (strtolower(substr($method, 0, 3)) === 'set') { + $name = Str::snake(substr($method, 3)); + + $this->attributes[$name] = array_pop($arguments); + + return $this->attributes[$name]; + } + + throw new MethodNotFoundException("Method ".self::class.'::'.$method.'() is not supported'); + } + + /** + * Magic setter + * @param $name + * @param $value + * + * @return mixed + */ + public function __set($name, $value) { + $this->attributes[$name] = $value; + + return $this->attributes[$name]; + } + + /** + * magic getter + * @param $name + * + * @return mixed|null + */ + public function __get($name) { + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + return null; + } + + /** + * Determine the structure type + */ + protected function findType() { + switch ($this->part->type) { + case IMAP::ATTACHMENT_TYPE_MESSAGE: + $this->type = 'message'; + break; + case IMAP::ATTACHMENT_TYPE_APPLICATION: + $this->type = 'application'; + break; + case IMAP::ATTACHMENT_TYPE_AUDIO: + $this->type = 'audio'; + break; + case IMAP::ATTACHMENT_TYPE_IMAGE: + $this->type = 'image'; + break; + case IMAP::ATTACHMENT_TYPE_VIDEO: + $this->type = 'video'; + break; + case IMAP::ATTACHMENT_TYPE_MODEL: + $this->type = 'model'; + break; + case IMAP::ATTACHMENT_TYPE_TEXT: + $this->type = 'text'; + break; + case IMAP::ATTACHMENT_TYPE_MULTIPART: + $this->type = 'multipart'; + break; + default: + $this->type = 'other'; + break; + } + } + + /** + * Fetch the given attachment + */ + protected function fetch() { + + $content = $this->part->content; + + $this->content_type = $this->part->content_type; + $this->content = $this->oMessage->decodeString($content, $this->part->encoding); + + if (($id = $this->part->id) !== null) { + $this->id = str_replace(['<', '>'], '', $id); + } + + $this->size = $this->part->bytes; + $this->disposition = $this->part->disposition; + + if (($filename = $this->part->filename) !== null) { + $this->setName($filename); + } elseif (($name = $this->part->name) !== null) { + $this->setName($name); + }else { + $this->setName("undefined"); + } + + if (IMAP::ATTACHMENT_TYPE_MESSAGE == $this->part->type) { + if ($this->part->ifdescription) { + $this->setName($this->part->description); + } else { + $this->setName($this->part->subtype); + } + } + } + + /** + * Save the attachment content to your filesystem + * @param string $path + * @param string|null $filename + * + * @return boolean + */ + public function save($path, $filename = null) { + $filename = $filename ? $filename : $this->getName(); + + return file_put_contents($path.$filename, $this->getContent()) !== false; + } + + /** + * Set the attachment name and try to decode it + * @param $name + */ + public function setName($name) { + $decoder = $this->config['decoder']['attachment']; + if ($name !== null) { + if($decoder === 'utf-8' && extension_loaded('imap')) { + $this->name = \imap_utf8($name); + }else{ + $this->name = mb_decode_mimeheader($name); + } + } + } + + /** + * Get the attachment mime type + * + * @return string|null + */ + public function getMimeType(){ + return (new \finfo())->buffer($this->getContent(), FILEINFO_MIME_TYPE); + } + + /** + * Try to guess the attachment file extension + * + * @return string|null + */ + public function getExtension(){ + $deprecated_guesser = "\Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesser"; + if (class_exists($deprecated_guesser) !== false){ + return $deprecated_guesser::getInstance()->guess($this->getMimeType()); + } + $guesser = "\Symfony\Component\Mime\MimeTypes"; + $extensions = $guesser::getDefault()->getExtensions($this->getMimeType()); + return isset($extensions[0]) ? $extensions[0] : null; + } + + /** + * Get all attributes + * + * @return array + */ + public function getAttributes(){ + return $this->attributes; + } + + /** + * @return Message + */ + public function getMessage(){ + return $this->oMessage; + } + + /** + * Set the default mask + * @param $mask + * + * @return $this + */ + public function setMask($mask){ + if(class_exists($mask)){ + $this->mask = $mask; + } + + return $this; + } + + /** + * Get the used default mask + * + * @return string + */ + public function getMask(){ + return $this->mask; + } + + /** + * Get a masked instance by providing a mask name + * @param string|null $mask + * + * @return mixed + * @throws MaskNotFoundException + */ + public function mask($mask = null){ + $mask = $mask !== null ? $mask : $this->mask; + if(class_exists($mask)){ + return new $mask($this); + } + + throw new MaskNotFoundException("Unknown mask provided: ".$mask); + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Attribute.php b/htdocs/includes/webklex/php-imap/src/Attribute.php new file mode 100644 index 00000000000..06dc6a7903d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Attribute.php @@ -0,0 +1,274 @@ +setName($name); + $this->add($value); + } + + + /** + * Return the stringified attribute + * + * @return string + */ + public function __toString() { + return implode(", ", $this->values); + } + + /** + * Return the stringified attribute + * + * @return string + */ + public function toString(){ + return $this->__toString(); + } + + /** + * Return the serialized attribute + * + * @return array + */ + public function __serialize(){ + return $this->values; + } + + /** + * Convert instance to array + * + * @return array + */ + public function toArray(){ + return $this->__serialize(); + } + + /** + * Convert first value to a date object + * + * @return Carbon|null + */ + public function toDate(){ + $date = $this->first(); + if ($date instanceof Carbon) return $date; + + return Carbon::parse($date); + } + + /** + * Determine if a value exists at an offset. + * + * @param mixed $key + * @return bool + */ + public function offsetExists($key) { + return array_key_exists($key, $this->values); + } + + /** + * Get a value at a given offset. + * + * @param mixed $key + * @return mixed + */ + public function offsetGet($key) { + return $this->values[$key]; + } + + /** + * Set the value at a given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + public function offsetSet($key, $value) { + if (is_null($key)) { + $this->values[] = $value; + } else { + $this->values[$key] = $value; + } + } + + /** + * Unset the value at a given offset. + * + * @param string $key + * @return void + */ + public function offsetUnset($key) { + unset($this->values[$key]); + } + + /** + * Add one or more values to the attribute + * @param array|mixed $value + * @param boolean $strict + * + * @return Attribute + */ + public function add($value, $strict = false) { + if (is_array($value)) { + return $this->merge($value, $strict); + }elseif ($value !== null) { + $this->attach($value, $strict); + } + + return $this; + } + + /** + * Merge a given array of values with the current values array + * @param array $values + * @param boolean $strict + * + * @return Attribute + */ + public function merge($values, $strict = false) { + if (is_array($values)) { + foreach ($values as $value) { + $this->attach($value, $strict); + } + } + + return $this; + } + + /** + * Check if the attribute contains the given value + * @param mixed $value + * + * @return bool + */ + public function contains($value) { + foreach ($this->values as $v) { + if ($v === $value) { + return true; + } + } + return false; + } + + /** + * Attach a given value to the current value array + * @param $value + * @param bool $strict + */ + public function attach($value, $strict = false) { + if ($strict === true) { + if ($this->contains($value) === false) { + $this->values[] = $value; + } + }else{ + $this->values[] = $value; + } + } + + /** + * Set the attribute name + * @param $name + * + * @return Attribute + */ + public function setName($name){ + $this->name = $name; + + return $this; + } + + /** + * Get the attribute name + * + * @return string + */ + public function getName(){ + return $this->name; + } + + /** + * Get all values + * + * @return array + */ + public function get(){ + return $this->values; + } + + /** + * Alias method for self::get() + * + * @return array + */ + public function all(){ + return $this->get(); + } + + /** + * Get the first value if possible + * + * @return mixed|null + */ + public function first(){ + if ($this->offsetExists(0)) { + return $this->values[0]; + } + return null; + } + + /** + * Get the last value if possible + * + * @return mixed|null + */ + public function last(){ + if (($cnt = $this->count()) > 0) { + return $this->values[$cnt - 1]; + } + return null; + } + + /** + * Get the number of values + * + * @return int + */ + public function count(){ + return count($this->values); + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Client.php b/htdocs/includes/webklex/php-imap/src/Client.php new file mode 100755 index 00000000000..15944e4c646 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Client.php @@ -0,0 +1,669 @@ + null, + 'request_fulluri' => false, + 'username' => null, + 'password' => null, + ]; + + /** + * Connection timeout + * @var int $timeout + */ + public $timeout; + + /** + * Account username/ + * + * @var mixed + */ + public $username; + + /** + * Account password. + * + * @var string + */ + public $password; + + /** + * Account authentication method. + * + * @var string + */ + public $authentication; + + /** + * Active folder path. + * + * @var string + */ + protected $active_folder = null; + + /** + * Default message mask + * + * @var string $default_message_mask + */ + protected $default_message_mask = MessageMask::class; + + /** + * Default attachment mask + * + * @var string $default_attachment_mask + */ + protected $default_attachment_mask = AttachmentMask::class; + + /** + * Used default account values + * + * @var array $default_account_config + */ + protected $default_account_config = [ + 'host' => 'localhost', + 'port' => 993, + 'protocol' => 'imap', + 'encryption' => 'ssl', + 'validate_cert' => true, + 'username' => '', + 'password' => '', + 'authentication' => null, + 'proxy' => [ + 'socket' => null, + 'request_fulluri' => false, + 'username' => null, + 'password' => null, + ], + "timeout" => 30 + ]; + + /** + * Client constructor. + * @param array $config + * + * @throws MaskNotFoundException + */ + public function __construct($config = []) { + $this->setConfig($config); + $this->setMaskFromConfig($config); + $this->setEventsFromConfig($config); + } + + /** + * Client destructor + */ + public function __destruct() { + $this->disconnect(); + } + + /** + * Set the Client configuration + * @param array $config + * + * @return self + */ + public function setConfig(array $config) { + $default_account = ClientManager::get('default'); + $default_config = ClientManager::get("accounts.$default_account"); + + foreach ($this->default_account_config as $key => $value) { + $this->setAccountConfig($key, $config, $default_config); + } + + return $this; + } + + /** + * Set a specific account config + * @param string $key + * @param array $config + * @param array $default_config + */ + private function setAccountConfig($key, $config, $default_config){ + $value = $this->default_account_config[$key]; + if(isset($config[$key])) { + $value = $config[$key]; + }elseif(isset($default_config[$key])) { + $value = $default_config[$key]; + } + $this->$key = $value; + } + + /** + * Look for a possible events in any available config + * @param $config + */ + protected function setEventsFromConfig($config) { + $this->events = ClientManager::get("events"); + if(isset($config['events'])){ + foreach($config['events'] as $section => $events) { + $this->events[$section] = array_merge($this->events[$section], $events); + } + } + } + + /** + * Look for a possible mask in any available config + * @param $config + * + * @throws MaskNotFoundException + */ + protected function setMaskFromConfig($config) { + $default_config = ClientManager::get("masks"); + + if(isset($config['masks'])){ + if(isset($config['masks']['message'])) { + if(class_exists($config['masks']['message'])) { + $this->default_message_mask = $config['masks']['message']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$config['masks']['message']); + } + }else{ + if(class_exists($default_config['message'])) { + $this->default_message_mask = $default_config['message']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$default_config['message']); + } + } + if(isset($config['masks']['attachment'])) { + if(class_exists($config['masks']['attachment'])) { + $this->default_attachment_mask = $config['masks']['attachment']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$config['masks']['attachment']); + } + }else{ + if(class_exists($default_config['attachment'])) { + $this->default_attachment_mask = $default_config['attachment']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$default_config['attachment']); + } + } + }else{ + if(class_exists($default_config['message'])) { + $this->default_message_mask = $default_config['message']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$default_config['message']); + } + + if(class_exists($default_config['attachment'])) { + $this->default_attachment_mask = $default_config['attachment']; + }else{ + throw new MaskNotFoundException("Unknown mask provided: ".$default_config['attachment']); + } + } + + } + + /** + * Get the current imap resource + * + * @return bool|Protocol|ProtocolInterface + * @throws ConnectionFailedException + */ + public function getConnection() { + $this->checkConnection(); + return $this->connection; + } + + /** + * Determine if connection was established. + * + * @return bool + */ + public function isConnected() { + return $this->connection ? $this->connection->connected() : false; + } + + /** + * Determine if connection was established and connect if not. + * + * @throws ConnectionFailedException + */ + public function checkConnection() { + if (!$this->isConnected()) { + $this->connect(); + } + } + + /** + * Force a reconnect + * + * @throws ConnectionFailedException + */ + public function reconnect() { + if ($this->isConnected()) { + $this->disconnect(); + } + $this->connect(); + } + + /** + * Connect to server. + * + * @return $this + * @throws ConnectionFailedException + */ + public function connect() { + $this->disconnect(); + $protocol = strtolower($this->protocol); + + if (in_array($protocol, ['imap', 'imap4', 'imap4rev1'])) { + $this->connection = new ImapProtocol($this->validate_cert, $this->encryption); + $this->connection->setConnectionTimeout($this->timeout); + $this->connection->setProxy($this->proxy); + }else{ + if (extension_loaded('imap') === false) { + throw new ConnectionFailedException("connection setup failed - no imap function", 0, new ProtocolNotSupportedException($protocol." is an unsupported protocol")); + } + $this->connection = new LegacyProtocol($this->validate_cert, $this->encryption); + if (strpos($protocol, "legacy-") === 0) { + $protocol = substr($protocol, 7); + } + $this->connection->setProtocol($protocol); + } + + try { + $this->connection->connect($this->host, $this->port); + } catch (ErrorException $e) { + throw new ConnectionFailedException("connection setup failed - connect exception", 0, $e); + } catch (Exceptions\RuntimeException $e) { + throw new ConnectionFailedException("connection setup failed - run exception", 0, $e); + } + $this->authenticate(); + + return $this; + } + + /** + * Authenticate the current session + * + * @throws ConnectionFailedException + */ + protected function authenticate() { + try { + if ($this->authentication == "oauth") { + if (!$this->connection->authenticate($this->username, $this->password)) { + throw new AuthFailedException(); + } + } elseif (!$this->connection->login($this->username, $this->password)) { + throw new AuthFailedException(); + } + } catch (AuthFailedException $e) { + throw new ConnectionFailedException("connection setup failed - authenticate", 0, $e); + } + } + + /** + * Disconnect from server. + * + * @return $this + */ + public function disconnect() { + if ($this->isConnected() && $this->connection !== false) { + $this->connection->logout(); + } + $this->active_folder = null; + + return $this; + } + + /** + * Get a folder instance by a folder name + * @param string $folder_name + * @param string|bool|null $delimiter + * + * @return mixed + * @throws ConnectionFailedException + * @throws FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function getFolder($folder_name, $delimiter = null) { + if ($delimiter !== false && $delimiter !== null) { + return $this->getFolderByPath($folder_name); + } + + // Set delimiter to false to force selection via getFolderByName (maybe useful for uncommon folder names) + $delimiter = is_null($delimiter) ? ClientManager::get('options.delimiter', "/") : $delimiter; + if (strpos($folder_name, (string)$delimiter) !== false) { + return $this->getFolderByPath($folder_name); + } + + return $this->getFolderByName($folder_name); + } + + /** + * Get a folder instance by a folder name + * @param $folder_name + * + * @return mixed + * @throws ConnectionFailedException + * @throws FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function getFolderByName($folder_name) { + return $this->getFolders(false)->where("name", $folder_name)->first(); + } + + /** + * Get a folder instance by a folder path + * @param $folder_path + * + * @return mixed + * @throws ConnectionFailedException + * @throws FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function getFolderByPath($folder_path) { + return $this->getFolders(false)->where("path", $folder_path)->first(); + } + + /** + * Get folders list. + * If hierarchical order is set to true, it will make a tree of folders, otherwise it will return flat array. + * + * @param boolean $hierarchical + * @param string|null $parent_folder + * + * @return FolderCollection + * @throws ConnectionFailedException + * @throws FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function getFolders($hierarchical = true, $parent_folder = null) { + $this->checkConnection(); + $folders = FolderCollection::make([]); + + $pattern = $parent_folder.($hierarchical ? '%' : '*'); + $items = $this->connection->folders('', $pattern); + + if(is_array($items)){ + foreach ($items as $folder_name => $item) { + $folder = new Folder($this, $folder_name, $item["delimiter"], $item["flags"]); + + if ($hierarchical && $folder->hasChildren()) { + $pattern = $folder->full_name.$folder->delimiter.'%'; + + $children = $this->getFolders(true, $pattern); + $folder->setChildren($children); + } + + $folders->push($folder); + } + + return $folders; + }else{ + throw new FolderFetchingException("failed to fetch any folders"); + } + } + + /** + * Open a given folder. + * @param string $folder_path + * @param boolean $force_select + * + * @return mixed + * @throws ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function openFolder($folder_path, $force_select = false) { + if ($this->active_folder == $folder_path && $this->isConnected() && $force_select === false) { + return true; + } + $this->checkConnection(); + $this->active_folder = $folder_path; + return $this->connection->selectFolder($folder_path); + } + + /** + * Create a new Folder + * @param string $folder + * @param boolean $expunge + * + * @return bool + * @throws ConnectionFailedException + * @throws FolderFetchingException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\RuntimeException + */ + public function createFolder($folder, $expunge = true) { + $this->checkConnection(); + $status = $this->connection->createFolder($folder); + + if($expunge) $this->expunge(); + + $folder = $this->getFolder($folder); + if($status && $folder) { + $event = $this->getEvent("folder", "new"); + $event::dispatch($folder); + } + + return $folder; + } + + /** + * Check a given folder + * @param $folder + * + * @return false|object + * @throws ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function checkFolder($folder) { + $this->checkConnection(); + return $this->connection->examineFolder($folder); + } + + /** + * Get the current active folder + * + * @return string + */ + public function getFolderPath(){ + return $this->active_folder; + } + + /** + * Retrieve the quota level settings, and usage statics per mailbox + * + * @return array + * @throws ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function getQuota() { + $this->checkConnection(); + return $this->connection->getQuota($this->username); + } + + /** + * Retrieve the quota settings per user + * @param string $quota_root + * + * @return array + * @throws ConnectionFailedException + */ + public function getQuotaRoot($quota_root = 'INBOX') { + $this->checkConnection(); + return $this->connection->getQuotaRoot($quota_root); + } + + /** + * Delete all messages marked for deletion + * + * @return bool + * @throws ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function expunge() { + $this->checkConnection(); + return $this->connection->expunge(); + } + + /** + * Set the connection timeout + * @param integer $timeout + * + * @return Protocol + * @throws ConnectionFailedException + */ + public function setTimeout($timeout) { + $this->checkConnection(); + return $this->connection->setConnectionTimeout($timeout); + } + + /** + * Get the connection timeout + * + * @return int + * @throws ConnectionFailedException + */ + public function getTimeout(){ + $this->checkConnection(); + return $this->connection->getConnectionTimeout(); + } + + /** + * Get the default message mask + * + * @return string + */ + public function getDefaultMessageMask(){ + return $this->default_message_mask; + } + + /** + * Get the default events for a given section + * @param $section + * + * @return array + */ + public function getDefaultEvents($section){ + return $this->events[$section]; + } + + /** + * Set the default message mask + * @param $mask + * + * @return $this + * @throws MaskNotFoundException + */ + public function setDefaultMessageMask($mask) { + if(class_exists($mask)) { + $this->default_message_mask = $mask; + + return $this; + } + + throw new MaskNotFoundException("Unknown mask provided: ".$mask); + } + + /** + * Get the default attachment mask + * + * @return string + */ + public function getDefaultAttachmentMask(){ + return $this->default_attachment_mask; + } + + /** + * Set the default attachment mask + * @param $mask + * + * @return $this + * @throws MaskNotFoundException + */ + public function setDefaultAttachmentMask($mask) { + if(class_exists($mask)) { + $this->default_attachment_mask = $mask; + + return $this; + } + + throw new MaskNotFoundException("Unknown mask provided: ".$mask); + } +} diff --git a/htdocs/includes/webklex/php-imap/src/ClientManager.php b/htdocs/includes/webklex/php-imap/src/ClientManager.php new file mode 100644 index 00000000000..3daf9f83f76 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/ClientManager.php @@ -0,0 +1,262 @@ +setConfig($config); + } + + /** + * Dynamically pass calls to the default account. + * @param string $method + * @param array $parameters + * + * @return mixed + * @throws Exceptions\MaskNotFoundException + */ + public function __call($method, $parameters) { + $callable = [$this->account(), $method]; + + return call_user_func_array($callable, $parameters); + } + + /** + * Safely create a new client instance which is not listed in accounts + * @param array $config + * + * @return Client + * @throws Exceptions\MaskNotFoundException + */ + public function make($config) { + return new Client($config); + } + + /** + * Get a dotted config parameter + * @param string $key + * @param null $default + * + * @return mixed|null + */ + public static function get($key, $default = null) { + $parts = explode('.', $key); + $value = null; + foreach($parts as $part) { + if($value === null) { + if(isset(self::$config[$part])) { + $value = self::$config[$part]; + }else{ + break; + } + }else{ + if(isset($value[$part])) { + $value = $value[$part]; + }else{ + break; + } + } + } + + return $value === null ? $default : $value; + } + + /** + * Resolve a account instance. + * @param string $name + * + * @return Client + * @throws Exceptions\MaskNotFoundException + */ + public function account($name = null) { + $name = $name ?: $this->getDefaultAccount(); + + // If the connection has not been resolved yet we will resolve it now as all + // of the connections are resolved when they are actually needed so we do + // not make any unnecessary connection to the various queue end-points. + if (!isset($this->accounts[$name])) { + $this->accounts[$name] = $this->resolve($name); + } + + return $this->accounts[$name]; + } + + /** + * Resolve a account. + * + * @param string $name + * + * @return Client + * @throws Exceptions\MaskNotFoundException + */ + protected function resolve($name) { + $config = $this->getClientConfig($name); + + return new Client($config); + } + + /** + * Get the account configuration. + * @param string $name + * + * @return array + */ + protected function getClientConfig($name) { + if ($name === null || $name === 'null') { + return ['driver' => 'null']; + } + + return self::$config["accounts"][$name]; + } + + /** + * Get the name of the default account. + * + * @return string + */ + public function getDefaultAccount() { + return self::$config['default']; + } + + /** + * Set the name of the default account. + * @param string $name + * + * @return void + */ + public function setDefaultAccount($name) { + self::$config['default'] = $name; + } + + + /** + * Merge the vendor settings with the local config + * + * The default account identifier will be used as default for any missing account parameters. + * If however the default account is missing a parameter the package default account parameter will be used. + * This can be disabled by setting imap.default in your config file to 'false' + * + * @param array|string $config + * + * @return $this + */ + public function setConfig($config) { + + if(is_array($config) === false) { + $config = require $config; + } + + $config_key = 'imap'; + $path = __DIR__.'/config/'.$config_key.'.php'; + + $vendor_config = require $path; + $config = $this->array_merge_recursive_distinct($vendor_config, $config); + + if(is_array($config)){ + if(isset($config['default'])){ + if(isset($config['accounts']) && $config['default'] != false){ + + $default_config = $vendor_config['accounts']['default']; + if(isset($config['accounts'][$config['default']])){ + $default_config = array_merge($default_config, $config['accounts'][$config['default']]); + } + + if(is_array($config['accounts'])){ + foreach($config['accounts'] as $account_key => $account){ + $config['accounts'][$account_key] = array_merge($default_config, $account); + } + } + } + } + } + + self::$config = $config; + + return $this; + } + + /** + * Marge arrays recursively and distinct + * + * Merges any number of arrays / parameters recursively, replacing + * entries with string keys with values from latter arrays. + * If the entry or the next value to be assigned is an array, then it + * automatically treats both arguments as an array. + * Numeric entries are appended, not replaced, but only if they are + * unique + * + * @param array $array1 Initial array to merge. + * @param array ... Variable list of arrays to recursively merge. + * + * @return array|mixed + * + * @link http://www.php.net/manual/en/function.array-merge-recursive.php#96201 + * @author Mark Roduner + */ + private function array_merge_recursive_distinct() { + + $arrays = func_get_args(); + $base = array_shift($arrays); + + if(!is_array($base)) $base = empty($base) ? array() : array($base); + + foreach($arrays as $append) { + + if(!is_array($append)) $append = array($append); + + foreach($append as $key => $value) { + + if(!array_key_exists($key, $base) and !is_numeric($key)) { + $base[$key] = $append[$key]; + continue; + } + + if(is_array($value) or is_array($base[$key])) { + $base[$key] = $this->array_merge_recursive_distinct($base[$key], $append[$key]); + } else if(is_numeric($key)) { + if(!in_array($value, $base)) $base[] = $value; + } else { + $base[$key] = $value; + } + + } + + } + + return $base; + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php new file mode 100644 index 00000000000..99da29d3c3a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php @@ -0,0 +1,1074 @@ +setCertValidation($cert_validation); + $this->encryption = $encryption; + } + + /** + * Public destructor + */ + public function __destruct() { + $this->logout(); + } + + /** + * Open connection to IMAP server + * @param string $host hostname or IP address of IMAP server + * @param int|null $port of IMAP server, default is 143 and 993 for ssl + * + * @throws ConnectionFailedException + */ + public function connect($host, $port = null) { + $transport = 'tcp'; + $encryption = ""; + + if ($this->encryption) { + $encryption = strtolower($this->encryption); + if ($encryption == "ssl") { + $transport = 'ssl'; + $port = $port === null ? 993 : $port; + } + } + $port = $port === null ? 143 : $port; + try { + $this->stream = $this->createStream($transport, $host, $port, $this->connection_timeout); + if (!$this->assumedNextLine('* OK')) { + throw new ConnectionFailedException('connection refused'); + } + if ($encryption == "tls") { + $this->enableTls(); + } + } catch (Exception $e) { + throw new ConnectionFailedException('connection failed', 0, $e); + } + } + + /** + * Enable tls on the current connection + * + * @throws ConnectionFailedException + * @throws RuntimeException + */ + protected function enableTls(){ + $response = $this->requestAndResponse('STARTTLS'); + $result = $response && stream_socket_enable_crypto($this->stream, true, $this->getCryptoMethod()); + if (!$result) { + throw new ConnectionFailedException('failed to enable TLS'); + } + } + + /** + * Get the next line from stream + * + * @return string next line + * @throws RuntimeException + */ + public function nextLine() { + $line = fgets($this->stream); + + if ($line === false) { + throw new RuntimeException('failed to read - connection closed?'); + } + + return $line; + } + + /** + * Get the next line and check if it starts with a given string + * @param string $start + * + * @return bool + * @throws RuntimeException + */ + protected function assumedNextLine($start) { + $line = $this->nextLine(); + return strpos($line, $start) === 0; + } + + /** + * Get the next line and split the tag + * @param string $tag reference tag + * + * @return string next line + * @throws RuntimeException + */ + protected function nextTaggedLine(&$tag) { + $line = $this->nextLine(); + list($tag, $line) = explode(' ', $line, 2); + + return $line; + } + + /** + * Split a given line in values. A value is literal of any form or a list + * @param string $line + * + * @return array + * @throws RuntimeException + */ + protected function decodeLine($line) { + $tokens = []; + $stack = []; + + // replace any trailing including spaces with a single space + $line = rtrim($line) . ' '; + while (($pos = strpos($line, ' ')) !== false) { + $token = substr($line, 0, $pos); + if (!strlen($token)) { + continue; + } + while ($token[0] == '(') { + array_push($stack, $tokens); + $tokens = []; + $token = substr($token, 1); + } + if ($token[0] == '"') { + if (preg_match('%^\(*"((.|\\\\|\\")*?)" *%', $line, $matches)) { + $tokens[] = $matches[1]; + $line = substr($line, strlen($matches[0])); + continue; + } + } + if ($token[0] == '{') { + $endPos = strpos($token, '}'); + $chars = substr($token, 1, $endPos - 1); + if (is_numeric($chars)) { + $token = ''; + while (strlen($token) < $chars) { + $token .= $this->nextLine(); + } + $line = ''; + if (strlen($token) > $chars) { + $line = substr($token, $chars); + $token = substr($token, 0, $chars); + } else { + $line .= $this->nextLine(); + } + $tokens[] = $token; + $line = trim($line) . ' '; + continue; + } + } + if ($stack && $token[strlen($token) - 1] == ')') { + // closing braces are not separated by spaces, so we need to count them + $braces = strlen($token); + $token = rtrim($token, ')'); + // only count braces if more than one + $braces -= strlen($token) + 1; + // only add if token had more than just closing braces + if (rtrim($token) != '') { + $tokens[] = rtrim($token); + } + $token = $tokens; + $tokens = array_pop($stack); + // special handline if more than one closing brace + while ($braces-- > 0) { + $tokens[] = $token; + $token = $tokens; + $tokens = array_pop($stack); + } + } + $tokens[] = $token; + $line = substr($line, $pos + 1); + } + + // maybe the server forgot to send some closing braces + while ($stack) { + $child = $tokens; + $tokens = array_pop($stack); + $tokens[] = $child; + } + + return $tokens; + } + + /** + * Read abd decode a response "line" + * @param array|string $tokens to decode + * @param string $wantedTag targeted tag + * @param bool $dontParse if true only the unparsed line is returned in $tokens + * + * @return bool + * @throws RuntimeException + */ + public function readLine(&$tokens = [], $wantedTag = '*', $dontParse = false) { + $line = $this->nextTaggedLine($tag); // get next tag + if (!$dontParse) { + $tokens = $this->decodeLine($line); + } else { + $tokens = $line; + } + if ($this->debug) echo "<< ".$line."\n"; + + // if tag is wanted tag we might be at the end of a multiline response + return $tag == $wantedTag; + } + + /** + * Read all lines of response until given tag is found + * @param string $tag request tag + * @param bool $dontParse if true every line is returned unparsed instead of the decoded tokens + * + * @return void|null|bool|array tokens if success, false if error, null if bad request + * @throws RuntimeException + */ + public function readResponse($tag, $dontParse = false) { + $lines = []; + $tokens = null; // define $tokens variable before first use + do { + $readAll = $this->readLine($tokens, $tag, $dontParse); + $lines[] = $tokens; + } while (!$readAll); + + if ($dontParse) { + // First two chars are still needed for the response code + $tokens = [substr($tokens, 0, 2)]; + } + + // last line has response code + if ($tokens[0] == 'OK') { + return $lines ? $lines : true; + } elseif ($tokens[0] == 'NO') { + return false; + } + + return; + } + + /** + * Send a new request + * @param string $command + * @param array $tokens additional parameters to command, use escapeString() to prepare + * @param string $tag provide a tag otherwise an autogenerated is returned + * + * @throws RuntimeException + */ + public function sendRequest($command, $tokens = [], &$tag = null) { + if (!$tag) { + $this->noun++; + $tag = 'TAG' . $this->noun; + } + + $line = $tag . ' ' . $command; + + foreach ($tokens as $token) { + if (is_array($token)) { + if (fwrite($this->stream, $line . ' ' . $token[0] . "\r\n") === false) { + throw new RuntimeException('failed to write - connection closed?'); + } + if (!$this->assumedNextLine('+ ')) { + throw new RuntimeException('failed to send literal string'); + } + $line = $token[1]; + } else { + $line .= ' ' . $token; + } + } + if ($this->debug) echo ">> ".$line."\n"; + + if (fwrite($this->stream, $line . "\r\n") === false) { + throw new RuntimeException('failed to write - connection closed?'); + } + } + + /** + * Send a request and get response at once + * @param string $command + * @param array $tokens parameters as in sendRequest() + * @param bool $dontParse if true unparsed lines are returned instead of tokens + * + * @return void|null|bool|array response as in readResponse() + * @throws RuntimeException + */ + public function requestAndResponse($command, $tokens = [], $dontParse = false) { + $this->sendRequest($command, $tokens, $tag); + + return $this->readResponse($tag, $dontParse); + } + + /** + * Escape one or more literals i.e. for sendRequest + * @param string|array $string the literal/-s + * + * @return string|array escape literals, literals with newline ar returned + * as array('{size}', 'string'); + */ + public function escapeString($string) { + if (func_num_args() < 2) { + if (strpos($string, "\n") !== false) { + return ['{' . strlen($string) . '}', $string]; + } else { + return '"' . str_replace(['\\', '"'], ['\\\\', '\\"'], $string) . '"'; + } + } + $result = []; + foreach (func_get_args() as $string) { + $result[] = $this->escapeString($string); + } + return $result; + } + + /** + * Escape a list with literals or lists + * @param array $list list with literals or lists as PHP array + * + * @return string escaped list for imap + */ + public function escapeList($list) { + $result = []; + foreach ($list as $v) { + if (!is_array($v)) { + $result[] = $v; + continue; + } + $result[] = $this->escapeList($v); + } + return '(' . implode(' ', $result) . ')'; + } + + /** + * Login to a new session. + * @param string $user username + * @param string $password password + * + * @return bool|mixed + * @throws AuthFailedException + */ + public function login($user, $password) { + try { + return $this->requestAndResponse('LOGIN', $this->escapeString($user, $password), true); + } catch (RuntimeException $e) { + throw new AuthFailedException("failed to authenticate", 0, $e); + } + } + + /** + * Authenticate your current IMAP session. + * @param string $user username + * @param string $token access token + * + * @return bool + * @throws AuthFailedException + */ + public function authenticate($user, $token) { + try { + $authenticateParams = ['XOAUTH2', base64_encode("user=$user\1auth=Bearer $token\1\1")]; + $this->sendRequest('AUTHENTICATE', $authenticateParams); + + while (true) { + $response = ""; + $is_plus = $this->readLine($response, '+', true); + if ($is_plus) { + // try to log the challenge somewhere where it can be found + error_log("got an extra server challenge: $response"); + // respond with an empty response. + $this->sendRequest(''); + } else { + if (preg_match('/^NO /i', $response) || + preg_match('/^BAD /i', $response)) { + error_log("got failure response: $response"); + return false; + } else if (preg_match("/^OK /i", $response)) { + return true; + } + } + } + } catch (RuntimeException $e) { + throw new AuthFailedException("failed to authenticate", 0, $e); + } + return false; + } + + /** + * Logout of imap server + * + * @return bool success + */ + public function logout() { + $result = false; + if ($this->stream) { + try { + $result = $this->requestAndResponse('LOGOUT', [], true); + } catch (Exception $e) {} + fclose($this->stream); + $this->stream = null; + } + return $result; + } + + /** + * Check if the current session is connected + * + * @return bool + */ + public function connected(){ + return (boolean) $this->stream; + } + + /** + * Get an array of available capabilities + * + * @return array list of capabilities + * @throws RuntimeException + */ + public function getCapabilities() { + $response = $this->requestAndResponse('CAPABILITY'); + + if (!$response) return []; + + $capabilities = []; + foreach ($response as $line) { + $capabilities = array_merge($capabilities, $line); + } + return $capabilities; + } + + /** + * Examine and select have the same response. + * @param string $command can be 'EXAMINE' or 'SELECT' + * @param string $folder target folder + * + * @return bool|array + * @throws RuntimeException + */ + public function examineOrSelect($command = 'EXAMINE', $folder = 'INBOX') { + $this->sendRequest($command, [$this->escapeString($folder)], $tag); + + $result = []; + $tokens = null; // define $tokens variable before first use + while (!$this->readLine($tokens, $tag)) { + if ($tokens[0] == 'FLAGS') { + array_shift($tokens); + $result['flags'] = $tokens; + continue; + } + switch ($tokens[1]) { + case 'EXISTS': + case 'RECENT': + $result[strtolower($tokens[1])] = $tokens[0]; + break; + case '[UIDVALIDITY': + $result['uidvalidity'] = (int)$tokens[2]; + break; + case '[UIDNEXT': + $result['uidnext'] = (int)$tokens[2]; + break; + default: + // ignore + break; + } + } + + if ($tokens[0] != 'OK') { + return false; + } + return $result; + } + + /** + * Change the current folder + * @param string $folder change to this folder + * + * @return bool|array see examineOrselect() + * @throws RuntimeException + */ + public function selectFolder($folder = 'INBOX') { + return $this->examineOrSelect('SELECT', $folder); + } + + /** + * Examine a given folder + * @param string $folder examine this folder + * + * @return bool|array see examineOrselect() + * @throws RuntimeException + */ + public function examineFolder($folder = 'INBOX') { + return $this->examineOrSelect('EXAMINE', $folder); + } + + /** + * Fetch one or more items of one or more messages + * @param string|array $items items to fetch [RFC822.HEADER, FLAGS, RFC822.TEXT, etc] + * @param int|array $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return string|array if only one item of one message is fetched it's returned as string + * if items of one message are fetched it's returned as (name => value) + * if one items of messages are fetched it's returned as (msgno => value) + * if items of messages are fetched it's returned as (msgno => (name => value)) + * @throws RuntimeException + */ + protected function fetch($items, $from, $to = null, $uid = false) { + if (is_array($from)) { + $set = implode(',', $from); + } elseif ($to === null) { + $set = (int)$from; + } elseif ($to === INF) { + $set = (int)$from . ':*'; + } else { + $set = (int)$from . ':' . (int)$to; + } + + $items = (array)$items; + $itemList = $this->escapeList($items); + + $this->sendRequest(($uid ? 'UID ' : '') . 'FETCH', [$set, $itemList], $tag); + + $result = []; + $tokens = null; // define $tokens variable before first use + while (!$this->readLine($tokens, $tag)) { + // ignore other responses + if ($tokens[1] != 'FETCH') { + continue; + } + + // find array key of UID value; try the last elements, or search for it + if ($uid) { + $count = count($tokens[2]); + if ($tokens[2][$count - 2] == 'UID') { + $uidKey = $count - 1; + } else if ($tokens[2][0] == 'UID') { + $uidKey = 1; + } else { + $uidKey = array_search('UID', $tokens[2]) + 1; + } + } + + // ignore other messages + if ($to === null && !is_array($from) && ($uid ? $tokens[2][$uidKey] != $from : $tokens[0] != $from)) { + continue; + } + + // if we only want one item we return that one directly + if (count($items) == 1) { + if ($tokens[2][0] == $items[0]) { + $data = $tokens[2][1]; + } elseif ($uid && $tokens[2][2] == $items[0]) { + $data = $tokens[2][3]; + } else { + // maybe the server send an other field we didn't wanted + $count = count($tokens[2]); + // we start with 2, because 0 was already checked + for ($i = 2; $i < $count; $i += 2) { + if ($tokens[2][$i] != $items[0]) { + continue; + } + $data = $tokens[2][$i + 1]; + break; + } + } + } else { + $data = []; + while (key($tokens[2]) !== null) { + $data[current($tokens[2])] = next($tokens[2]); + next($tokens[2]); + } + } + + // if we want only one message we can ignore everything else and just return + if ($to === null && !is_array($from) && ($uid ? $tokens[2][$uidKey] == $from : $tokens[0] == $from)) { + // we still need to read all lines + while (!$this->readLine($tokens, $tag)) + + return $data; + } + if ($uid) { + $result[$tokens[2][$uidKey]] = $data; + }else{ + $result[$tokens[0]] = $data; + } + } + + if ($to === null && !is_array($from)) { + throw new RuntimeException('the single id was not found in response'); + } + + return $result; + } + + /** + * Fetch message headers + * @param array|int $uids + * @param string $rfc + * @param bool $uid set to true if passing a unique id + * + * @return array + * @throws RuntimeException + */ + public function content($uids, $rfc = "RFC822", $uid = false) { + return $this->fetch(["$rfc.TEXT"], $uids, null, $uid); + } + + /** + * Fetch message headers + * @param array|int $uids + * @param string $rfc + * @param bool $uid set to true if passing a unique id + * + * @return array + * @throws RuntimeException + */ + public function headers($uids, $rfc = "RFC822", $uid = false){ + return $this->fetch(["$rfc.HEADER"], $uids, null, $uid); + } + + /** + * Fetch message flags + * @param array|int $uids + * @param bool $uid set to true if passing a unique id + * + * @return array + * @throws RuntimeException + */ + public function flags($uids, $uid = false){ + return $this->fetch(["FLAGS"], $uids, null, $uid); + } + + /** + * Get uid for a given id + * @param int|null $id message number + * + * @return array|string message number for given message or all messages as array + * @throws MessageNotFoundException + */ + public function getUid($id = null) { + try { + $uids = $this->fetch('UID', 1, INF); + if ($id == null) { + return $uids; + } + + foreach ($uids as $k => $v) { + if ($k == $id) { + return $v; + } + } + } catch (RuntimeException $e) {} + + throw new MessageNotFoundException('unique id not found'); + } + + /** + * Get a message number for a uid + * @param string $id uid + * + * @return int message number + * @throws MessageNotFoundException + */ + public function getMessageNumber($id) { + $ids = $this->getUid(); + foreach ($ids as $k => $v) { + if ($v == $id) { + return $k; + } + } + + throw new MessageNotFoundException('message number not found'); + } + + /** + * Get a list of available folders + * @param string $reference mailbox reference for list + * @param string $folder mailbox name match with wildcards + * + * @return array folders that matched $folder as array(name => array('delimiter' => .., 'flags' => ..)) + * @throws RuntimeException + */ + public function folders($reference = '', $folder = '*') { + $result = []; + $list = $this->requestAndResponse('LIST', $this->escapeString($reference, $folder)); + if (!$list || $list === true) { + return $result; + } + + foreach ($list as $item) { + if (count($item) != 4 || $item[0] != 'LIST') { + continue; + } + $result[$item[3]] = ['delimiter' => $item[2], 'flags' => $item[1]]; + } + + return $result; + } + + /** + * Manage flags + * @param array $flags flags to set, add or remove - see $mode + * @param int $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param string|null $mode '+' to add flags, '-' to remove flags, everything else sets the flags as given + * @param bool $silent if false the return values are the new flags for the wanted messages + * @param bool $uid set to true if passing a unique id + * + * @return bool|array new flags if $silent is false, else true or false depending on success + * @throws RuntimeException + */ + public function store(array $flags, $from, $to = null, $mode = null, $silent = true, $uid = false) { + $item = 'FLAGS'; + if ($mode == '+' || $mode == '-') { + $item = $mode . $item; + } + if ($silent) { + $item .= '.SILENT'; + } + + $flags = $this->escapeList($flags); + $set = (int)$from; + if ($to !== null) { + $set .= ':' . ($to == INF ? '*' : (int)$to); + } + + $command = ($uid ? "UID " : "")."STORE"; + $result = $this->requestAndResponse($command, [$set, $item, $flags], $silent); + + if ($silent) { + return (bool)$result; + } + + $tokens = $result; + $result = []; + foreach ($tokens as $token) { + if ($token[1] != 'FETCH' || $token[2][0] != 'FLAGS') { + continue; + } + $result[$token[0]] = $token[2][1]; + } + + return $result; + } + + /** + * Append a new message to given folder + * @param string $folder name of target folder + * @param string $message full message content + * @param array $flags flags for new message + * @param string $date date for new message + * + * @return bool success + * @throws RuntimeException + */ + public function appendMessage($folder, $message, $flags = null, $date = null) { + $tokens = []; + $tokens[] = $this->escapeString($folder); + if ($flags !== null) { + $tokens[] = $this->escapeList($flags); + } + if ($date !== null) { + $tokens[] = $this->escapeString($date); + } + $tokens[] = $this->escapeString($message); + + return $this->requestAndResponse('APPEND', $tokens, true); + } + + /** + * Copy a message set from current folder to an other folder + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + * @throws RuntimeException + */ + public function copyMessage($folder, $from, $to = null, $uid = false) { + $set = (int)$from; + if ($to !== null) { + $set .= ':' . ($to == INF ? '*' : (int)$to); + } + $command = ($uid ? "UID " : "")."COPY"; + + return $this->requestAndResponse($command, [$set, $this->escapeString($folder)], true); + } + + /** + * Copy multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + * + * @throws RuntimeException + */ + public function copyManyMessages($messages, $folder, $uid = false) { + $command = $uid ? 'UID COPY' : 'COPY'; + + $set = implode(',', $messages); + $tokens = [$set, $this->escapeString($folder)]; + + return $this->requestAndResponse($command, $tokens, true); + } + + /** + * Move a message set from current folder to an other folder + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + * @throws RuntimeException + */ + public function moveMessage($folder, $from, $to = null, $uid = false) { + $set = (int)$from; + if ($to !== null) { + $set .= ':' . ($to == INF ? '*' : (int)$to); + } + $command = ($uid ? "UID " : "")."MOVE"; + + return $this->requestAndResponse($command, [$set, $this->escapeString($folder)], true); + } + + /** + * Move multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + * + * @throws RuntimeException + */ + public function moveManyMessages($messages, $folder, $uid = false) { + $command = $uid ? 'UID MOVE' : 'MOVE'; + + $set = implode(',', $messages); + $tokens = [$set, $this->escapeString($folder)]; + + return $this->requestAndResponse($command, $tokens, true); + } + + /** + * Create a new folder (and parent folders if needed) + * @param string $folder folder name + * + * @return bool success + * @throws RuntimeException + */ + public function createFolder($folder) { + return $this->requestAndResponse('CREATE', [$this->escapeString($folder)], true); + } + + /** + * Rename an existing folder + * @param string $old old name + * @param string $new new name + * + * @return bool success + * @throws RuntimeException + */ + public function renameFolder($old, $new) { + return $this->requestAndResponse('RENAME', $this->escapeString($old, $new), true); + } + + /** + * Delete a folder + * @param string $folder folder name + * + * @return bool success + * @throws RuntimeException + */ + public function deleteFolder($folder) { + return $this->requestAndResponse('DELETE', [$this->escapeString($folder)], true); + } + + /** + * Subscribe to a folder + * @param string $folder folder name + * + * @return bool success + * @throws RuntimeException + */ + public function subscribeFolder($folder) { + return $this->requestAndResponse('SUBSCRIBE', [$this->escapeString($folder)], true); + } + + /** + * Unsubscribe from a folder + * @param string $folder folder name + * + * @return bool success + * @throws RuntimeException + */ + public function unsubscribeFolder($folder) { + return $this->requestAndResponse('UNSUBSCRIBE', [$this->escapeString($folder)], true); + } + + /** + * Apply session saved changes to the server + * + * @return bool success + * @throws RuntimeException + */ + public function expunge() { + return $this->requestAndResponse('EXPUNGE'); + } + + /** + * Send noop command + * + * @return bool success + * @throws RuntimeException + */ + public function noop() { + return $this->requestAndResponse('NOOP'); + } + + /** + * Retrieve the quota level settings, and usage statics per mailbox + * @param $username + * + * @return array + * @throws RuntimeException + */ + public function getQuota($username) { + return $this->requestAndResponse("GETQUOTA", ['"#user/'.$username.'"']); + } + + /** + * Retrieve the quota settings per user + * @param string $quota_root + * + * @return array + * @throws RuntimeException + */ + public function getQuotaRoot($quota_root = 'INBOX') { + return $this->requestAndResponse("QUOTA", [$quota_root]); + } + + /** + * Send idle command + * + * @throws RuntimeException + */ + public function idle() { + $this->sendRequest("IDLE"); + if (!$this->assumedNextLine('+ ')) { + throw new RuntimeException('idle failed'); + } + } + + /** + * Send done command + * @throws RuntimeException + */ + public function done() { + if (fwrite($this->stream, "DONE\r\n") === false) { + throw new RuntimeException('failed to write - connection closed?'); + } + return true; + } + + /** + * Search for matching messages + * @param array $params + * @param bool $uid set to true if passing a unique id + * + * @return array message ids + * @throws RuntimeException + */ + public function search(array $params, $uid = false) { + $token = $uid == true ? "UID SEARCH" : "SEARCH"; + $response = $this->requestAndResponse($token, $params); + if (!$response) { + return $response; + } + + foreach ($response as $ids) { + if ($ids[0] == 'SEARCH') { + array_shift($ids); + return $ids; + } + } + return []; + } + + /** + * Get a message overview + * @param string $sequence + * @param bool $uid set to true if passing a unique id + * + * @return array + * @throws RuntimeException + * @throws MessageNotFoundException + * @throws InvalidMessageDateException + */ + public function overview($sequence, $uid = false) { + $result = []; + list($from, $to) = explode(":", $sequence); + + $uids = $this->getUid(); + $ids = []; + foreach ($uids as $msgn => $v) { + $id = $uid ? $v : $msgn; + if ( ($to >= $id && $from <= $id) || ($to === "*" && $from <= $id) ){ + $ids[] = $id; + } + } + $headers = $this->headers($ids, "RFC822", $uid); + foreach ($headers as $id => $raw_header) { + $result[$id] = (new Header($raw_header, false))->getAttributes(); + } + return $result; + } + + /** + * Enable the debug mode + */ + public function enableDebug(){ + $this->debug = true; + } + + /** + * Disable the debug mode + */ + public function disableDebug(){ + $this->debug = false; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Connection/Protocols/LegacyProtocol.php b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/LegacyProtocol.php new file mode 100644 index 00000000000..96cc733f248 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/LegacyProtocol.php @@ -0,0 +1,607 @@ +setCertValidation($cert_validation); + $this->encryption = $encryption; + } + + /** + * Public destructor + */ + public function __destruct() { + $this->logout(); + } + + /** + * Save the information for a nw connection + * @param string $host + * @param null $port + */ + public function connect($host, $port = null) { + if ($this->encryption) { + $encryption = strtolower($this->encryption); + if ($encryption == "ssl") { + $port = $port === null ? 993 : $port; + } + } + $port = $port === null ? 143 : $port; + $this->host = $host; + $this->port = $port; + } + + /** + * Login to a new session. + * @param string $user username + * @param string $password password + * + * @return bool + * @throws AuthFailedException + * @throws RuntimeException + */ + public function login($user, $password) { + try { + $this->stream = \imap_open( + $this->getAddress(), + $user, + $password, + 0, + $attempts = 3, + ClientManager::get('options.open') + ); + } catch (\ErrorException $e) { + $errors = \imap_errors(); + $message = $e->getMessage().'. '.implode("; ", (is_array($errors) ? $errors : array())); + throw new AuthFailedException($message); + } + + if(!$this->stream) { + $errors = \imap_errors(); + $message = implode("; ", (is_array($errors) ? $errors : array())); + throw new AuthFailedException($message); + } + + $errors = \imap_errors(); + if(is_array($errors)) { + $status = $this->examineFolder(); + if($status['exists'] !== 0) { + $message = implode("; ", (is_array($errors) ? $errors : array())); + throw new RuntimeException($message); + } + } + + return $this->stream; + } + + /** + * Authenticate your current session. + * @param string $user username + * @param string $token access token + * + * @return bool|resource + * @throws AuthFailedException|RuntimeException + */ + public function authenticate($user, $token) { + return $this->login($user, $token); + } + + /** + * Get full address of mailbox. + * + * @return string + */ + protected function getAddress() { + $address = "{".$this->host.":".$this->port."/".$this->protocol; + if (!$this->cert_validation) { + $address .= '/novalidate-cert'; + } + if (in_array($this->encryption,['tls', 'notls', 'ssl'])) { + $address .= '/'.$this->encryption; + } elseif ($this->encryption === "starttls") { + $address .= '/tls'; + } + + $address .= '}'; + + return $address; + } + + /** + * Logout of the current session + * + * @return bool success + */ + public function logout() { + if ($this->stream) { + $result = \imap_close($this->stream, IMAP::CL_EXPUNGE); + $this->stream = false; + return $result; + } + return false; + } + + /** + * Check if the current session is connected + * + * @return bool + */ + public function connected(){ + return boolval($this->stream); + } + + /** + * Get an array of available capabilities + * + * @throws MethodNotSupportedException + */ + public function getCapabilities() { + throw new MethodNotSupportedException(); + } + + /** + * Change the current folder + * @param string $folder change to this folder + * + * @return bool|array see examineOrselect() + * @throws RuntimeException + */ + public function selectFolder($folder = 'INBOX') { + \imap_reopen($this->stream, $folder, IMAP::OP_READONLY, 3); + return $this->examineFolder($folder); + } + + /** + * Examine a given folder + * @param string $folder examine this folder + * + * @return bool|array + * @throws RuntimeException + */ + public function examineFolder($folder = 'INBOX') { + if (strpos($folder, ".") === 0) { + throw new RuntimeException("Segmentation fault prevented. Folders starts with an illegal char '.'."); + } + $folder = $this->getAddress().$folder; + $status = \imap_status($this->stream, $folder, IMAP::SA_ALL); + return [ + "flags" => [], + "exists" => $status->messages, + "recent" => $status->recent, + "unseen" => $status->unseen, + "uidnext" => $status->uidnext, + ]; + } + + /** + * Fetch message content + * @param array|int $uids + * @param string $rfc + * @param bool $uid set to true if passing a unique id + * + * @return array + */ + public function content($uids, $rfc = "RFC822", $uid = false) { + $result = []; + $uids = is_array($uids) ? $uids : [$uids]; + foreach ($uids as $id) { + $result[$id] = \imap_fetchbody($this->stream, $id, "", $uid ? IMAP::FT_UID : IMAP::NIL); + } + return $result; + } + + /** + * Fetch message headers + * @param array|int $uids + * @param string $rfc + * @param bool $uid set to true if passing a unique id + * + * @return array + */ + public function headers($uids, $rfc = "RFC822", $uid = false){ + $result = []; + $uids = is_array($uids) ? $uids : [$uids]; + foreach ($uids as $id) { + $result[$id] = \imap_fetchheader($this->stream, $id, $uid ? IMAP::FT_UID : IMAP::NIL); + } + return $result; + } + + /** + * Fetch message flags + * @param array|int $uids + * @param bool $uid set to true if passing a unique id + * + * @return array + */ + public function flags($uids, $uid = false){ + $result = []; + $uids = is_array($uids) ? $uids : [$uids]; + foreach ($uids as $id) { + $raw_flags = \imap_fetch_overview($this->stream, $id, $uid ? IMAP::FT_UID : IMAP::NIL); + $flags = []; + if (is_array($raw_flags) && isset($raw_flags[0])) { + $raw_flags = (array) $raw_flags[0]; + foreach($raw_flags as $flag => $value) { + if ($value === 1 && in_array($flag, ["size", "uid", "msgno", "update"]) === false){ + $flags[] = "\\".ucfirst($flag); + } + } + } + $result[$uid] = $flags; + } + + return $result; + } + + /** + * Get uid for a given id + * @param int|null $id message number + * + * @return array|string message number for given message or all messages as array + */ + public function getUid($id = null) { + if ($id === null) { + $overview = $this->overview("1:*"); + $uids = []; + foreach($overview as $set){ + $uids[$set->msgno] = $set->uid; + } + return $uids; + } + return \imap_uid($this->stream, $id); + } + + /** + * Get a message number for a uid + * @param string $id uid + * + * @return int message number + */ + public function getMessageNumber($id) { + return \imap_msgno($this->stream, $id); + } + + /** + * Get a message overview + * @param string $sequence uid sequence + * @param bool $uid set to true if passing a unique id + * + * @return array + */ + public function overview($sequence, $uid = false) { + return \imap_fetch_overview($this->stream, $sequence,$uid ? IMAP::FT_UID : IMAP::NIL); + } + + /** + * Get a list of available folders + * @param string $reference mailbox reference for list + * @param string $folder mailbox name match with wildcards + * + * @return array folders that matched $folder as array(name => array('delimiter' => .., 'flags' => ..)) + * @throws RuntimeException + */ + public function folders($reference = '', $folder = '*') { + $result = []; + + $items = \imap_getmailboxes($this->stream, $this->getAddress(), $reference.$folder); + if(is_array($items)){ + foreach ($items as $item) { + $name = $this->decodeFolderName($item->name); + $result[$name] = ['delimiter' => $item->delimiter, 'flags' => []]; + } + }else{ + throw new RuntimeException(\imap_last_error()); + } + + return $result; + } + + /** + * Manage flags + * @param array $flags flags to set, add or remove - see $mode + * @param int $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param string|null $mode '+' to add flags, '-' to remove flags, everything else sets the flags as given + * @param bool $silent if false the return values are the new flags for the wanted messages + * @param bool $uid set to true if passing a unique id + * + * @return bool|array new flags if $silent is false, else true or false depending on success + */ + public function store(array $flags, $from, $to = null, $mode = null, $silent = true, $uid = false) { + $flag = trim(is_array($flags) ? implode(" ", $flags) : $flags); + + if ($mode == "+"){ + $status = \imap_setflag_full($this->stream, $from, $flag, $uid ? IMAP::FT_UID : IMAP::NIL); + }else{ + $status = \imap_clearflag_full($this->stream, $from, $flag, $uid ? IMAP::FT_UID : IMAP::NIL); + } + + if ($silent === true) { + return $status; + } + + return $this->flags($from); + } + + /** + * Append a new message to given folder + * @param string $folder name of target folder + * @param string $message full message content + * @param array $flags flags for new message + * @param string $date date for new message + * + * @return bool success + */ + public function appendMessage($folder, $message, $flags = null, $date = null) { + if ($date != null) { + if ($date instanceof \Carbon\Carbon){ + $date = $date->format('d-M-Y H:i:s O'); + } + return \imap_append($this->stream, $folder, $message, $flags, $date); + } + + return \imap_append($this->stream, $folder, $message, $flags); + } + + /** + * Copy message set from current folder to other folder + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + */ + public function copyMessage($folder, $from, $to = null, $uid = false) { + return \imap_mail_copy($this->stream, $from, $folder, $uid ? IMAP::FT_UID : IMAP::NIL); + } + + /** + * Copy multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + */ + public function copyManyMessages($messages, $folder, $uid = false) { + foreach($messages as $msg) { + if ($this->copyMessage($folder, $msg, null, $uid) == false) { + return false; + } + } + + return $messages; + } + + /** + * Move a message set from current folder to an other folder + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + */ + public function moveMessage($folder, $from, $to = null, $uid = false) { + return \imap_mail_move($this->stream, $from, $folder, $uid ? IMAP::FT_UID : IMAP::NIL); + } + + /** + * Move multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + */ + public function moveManyMessages($messages, $folder, $uid = false) { + foreach($messages as $msg) { + if ($this->moveMessage($folder, $msg, null, $uid) == false) { + return false; + } + } + + return $messages; + } + + /** + * Create a new folder (and parent folders if needed) + * @param string $folder folder name + * + * @return bool success + */ + public function createFolder($folder) { + return \imap_createmailbox($this->stream, $folder); + } + + /** + * Rename an existing folder + * @param string $old old name + * @param string $new new name + * + * @return bool success + */ + public function renameFolder($old, $new) { + return \imap_renamemailbox($this->stream, $old, $new); + } + + /** + * Delete a folder + * @param string $folder folder name + * + * @return bool success + */ + public function deleteFolder($folder) { + return \imap_deletemailbox($this->stream, $folder); + } + + /** + * Subscribe to a folder + * @param string $folder folder name + * + * @throws MethodNotSupportedException + */ + public function subscribeFolder($folder) { + throw new MethodNotSupportedException(); + } + + /** + * Unsubscribe from a folder + * @param string $folder folder name + * + * @throws MethodNotSupportedException + */ + public function unsubscribeFolder($folder) { + throw new MethodNotSupportedException(); + } + + /** + * Apply session saved changes to the server + * + * @return bool success + */ + public function expunge() { + return \imap_expunge($this->stream); + } + + /** + * Send noop command + * + * @throws MethodNotSupportedException + */ + public function noop() { + throw new MethodNotSupportedException(); + } + + /** + * Send idle command + * + * @throws MethodNotSupportedException + */ + public function idle() { + throw new MethodNotSupportedException(); + } + + /** + * Send done command + * + * @throws MethodNotSupportedException + */ + public function done() { + throw new MethodNotSupportedException(); + } + + /** + * Search for matching messages + * + * @param array $params + * @return array message ids + */ + public function search(array $params, $uid = false) { + return \imap_search($this->stream, $params[0], $uid ? IMAP::FT_UID : IMAP::NIL); + } + + /** + * Enable the debug mode + */ + public function enableDebug(){ + $this->debug = true; + } + + /** + * Disable the debug mode + */ + public function disableDebug(){ + $this->debug = false; + } + + /** + * Decode name. + * It converts UTF7-IMAP encoding to UTF-8. + * + * @param $name + * + * @return mixed|string + */ + protected function decodeFolderName($name) { + preg_match('#\{(.*)\}(.*)#', $name, $preg); + return mb_convert_encoding($preg[2], "UTF-8", "UTF7-IMAP"); + } + + /** + * @return string + */ + public function getProtocol() { + return $this->protocol; + } + + /** + * Retrieve the quota level settings, and usage statics per mailbox + * @param $username + * + * @return array + */ + public function getQuota($username) { + return \imap_get_quota($this->stream, 'user.'.$username); + } + + /** + * Retrieve the quota settings per user + * @param string $quota_root + * + * @return array + */ + public function getQuotaRoot($quota_root = 'INBOX') { + return \imap_get_quotaroot($this->stream, $quota_root); + } + + /** + * @param string $protocol + * @return LegacyProtocol + */ + public function setProtocol($protocol) { + if (($pos = strpos($protocol, "legacy")) > 0) { + $protocol = substr($protocol, 0, ($pos + 2) * -1); + } + $this->protocol = $protocol; + return $this; + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Connection/Protocols/Protocol.php b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/Protocol.php new file mode 100644 index 00000000000..ef01d46ec9b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/Protocol.php @@ -0,0 +1,224 @@ + null, + 'request_fulluri' => false, + 'username' => null, + 'password' => null, + ]; + + /** + * Get an available cryptographic method + * + * @return int + */ + public function getCryptoMethod() { + // Allow the best TLS version(s) we can + $cryptoMethod = STREAM_CRYPTO_METHOD_TLS_CLIENT; + + // PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT + // so add them back in manually if we can + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + }elseif (defined('STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT')) { + $cryptoMethod = STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } + + return $cryptoMethod; + } + + /** + * Enable SSL certificate validation + * + * @return $this + */ + public function enableCertValidation() { + $this->cert_validation = true; + return $this; + } + + /** + * Disable SSL certificate validation + * @return $this + */ + public function disableCertValidation() { + $this->cert_validation = false; + return $this; + } + + /** + * Set SSL certificate validation + * @var int $cert_validation + * + * @return $this + */ + public function setCertValidation($cert_validation) { + $this->cert_validation = $cert_validation; + return $this; + } + + /** + * Should we validate SSL certificate? + * + * @return bool + */ + public function getCertValidation() { + return $this->cert_validation; + } + + /** + * Set connection proxy settings + * @var array $options + * + * @return $this + */ + public function setProxy($options) { + foreach ($this->proxy as $key => $val) { + if (isset($options[$key])) { + $this->proxy[$key] = $options[$key]; + } + } + + return $this; + } + + /** + * Get the current proxy settings + * + * @return array + */ + public function getProxy() { + return $this->proxy; + } + + /** + * Prepare socket options + * @var string $transport + * + * @return array + */ + private function defaultSocketOptions($transport) { + $options = []; + if ($this->encryption != false) { + $options["ssl"] = [ + 'verify_peer_name' => $this->getCertValidation(), + 'verify_peer' => $this->getCertValidation(), + ]; + } + + if ($this->proxy["socket"] != null) { + $options[$transport]["proxy"] = $this->proxy["socket"]; + $options[$transport]["request_fulluri"] = $this->proxy["request_fulluri"]; + + if ($this->proxy["username"] != null) { + $auth = base64_encode($this->proxy["username"].':'.$this->proxy["password"]); + + $options[$transport]["header"] = [ + "Proxy-Authorization: Basic $auth" + ]; + } + } + + return $options; + } + + /** + * Create a new resource stream + * @param $transport + * @param string $host hostname or IP address of IMAP server + * @param int $port of IMAP server, default is 143 (993 for ssl) + * @param int $timeout timeout in seconds for initiating session + * + * @return resource|boolean The socket created. + * @throws ConnectionFailedException + */ + protected function createStream($transport, $host, $port, $timeout) { + $socket = "$transport://$host:$port"; + $stream = stream_socket_client($socket, $errno, $errstr, $timeout, + STREAM_CLIENT_CONNECT, + stream_context_create($this->defaultSocketOptions($transport)) + ); + stream_set_timeout($stream, $timeout); + + if (!$stream) { + throw new ConnectionFailedException($errstr, $errno); + } + + if (false === stream_set_timeout($stream, $timeout)) { + throw new ConnectionFailedException('Failed to set stream timeout'); + } + + return $stream; + } + + /** + * @return int + */ + public function getConnectionTimeout() { + return $this->connection_timeout; + } + + /** + * @param int $connection_timeout + * @return Protocol + */ + public function setConnectionTimeout($connection_timeout) { + if ($connection_timeout !== null) { + $this->connection_timeout = $connection_timeout; + } + return $this; + } + +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ProtocolInterface.php b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ProtocolInterface.php new file mode 100644 index 00000000000..6770d8d4c7b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Connection/Protocols/ProtocolInterface.php @@ -0,0 +1,375 @@ + array('delim' => .., 'flags' => ..)) + * @throws RuntimeException + */ + public function folders($reference = '', $folder = '*'); + + /** + * Set message flags + * + * @param array $flags flags to set, add or remove + * @param int $from message for items or start message if $to !== null + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param string|null $mode '+' to add flags, '-' to remove flags, everything else sets the flags as given + * @param bool $silent if false the return values are the new flags for the wanted messages + * @param bool $uid set to true if passing a unique id + * + * @return bool|array new flags if $silent is false, else true or false depending on success + * @throws RuntimeException + */ + public function store(array $flags, $from, $to = null, $mode = null, $silent = true, $uid = false); + + /** + * Append a new message to given folder + * + * @param string $folder name of target folder + * @param string $message full message content + * @param array $flags flags for new message + * @param string $date date for new message + * @return bool success + * @throws RuntimeException + */ + public function appendMessage($folder, $message, $flags = null, $date = null); + + /** + * Copy message set from current folder to other folder + * + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + * @throws RuntimeException + */ + public function copyMessage($folder, $from, $to = null, $uid = false); + + /** + * Copy multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + * + * @throws RuntimeException + */ + public function copyManyMessages($messages, $folder, $uid = false); + + /** + * Move a message set from current folder to an other folder + * @param string $folder destination folder + * @param $from + * @param int|null $to if null only one message ($from) is fetched, else it's the + * last message, INF means last message available + * @param bool $uid set to true if passing a unique id + * + * @return bool success + */ + public function moveMessage($folder, $from, $to = null, $uid = false); + + /** + * Move multiple messages to the target folder + * + * @param array $messages List of message identifiers + * @param string $folder Destination folder + * @param bool $uid Set to true if you pass message unique identifiers instead of numbers + * @return array|bool Tokens if operation successful, false if an error occurred + * + * @throws RuntimeException + */ + public function moveManyMessages($messages, $folder, $uid = false); + + /** + * Create a new folder + * + * @param string $folder folder name + * @return bool success + * @throws RuntimeException + */ + public function createFolder($folder); + + /** + * Rename an existing folder + * + * @param string $old old name + * @param string $new new name + * @return bool success + * @throws RuntimeException + */ + public function renameFolder($old, $new); + + /** + * Delete a folder + * + * @param string $folder folder name + * @return bool success + * @throws RuntimeException + */ + public function deleteFolder($folder); + + /** + * Subscribe to a folder + * + * @param string $folder folder name + * @return bool success + * @throws RuntimeException + */ + public function subscribeFolder($folder); + + /** + * Unsubscribe from a folder + * @param string $folder folder name + * + * @return bool success + * @throws RuntimeException + */ + public function unsubscribeFolder($folder); + + /** + * Send idle command + * + * @throws RuntimeException + */ + public function idle(); + + /** + * Send done command + * @throws RuntimeException + */ + public function done(); + + /** + * Apply session saved changes to the server + * + * @return bool success + * @throws RuntimeException + */ + public function expunge(); + + /** + * Retrieve the quota level settings, and usage statics per mailbox + * @param $username + * + * @return array + * @throws RuntimeException + */ + public function getQuota($username); + + /** + * Retrieve the quota settings per user + * + * @param string $quota_root + * + * @return array + * @throws ConnectionFailedException + */ + public function getQuotaRoot($quota_root = 'INBOX'); + + /** + * Send noop command + * + * @return bool success + * @throws RuntimeException + */ + public function noop(); + + /** + * Do a search request + * + * @param array $params + * @param bool $uid set to true if passing a unique id + * + * @return array message ids + * @throws RuntimeException + */ + public function search(array $params, $uid = false); + + /** + * Get a message overview + * @param string $sequence uid sequence + * @param bool $uid set to true if passing a unique id + * + * @return array + * @throws RuntimeException + * @throws MessageNotFoundException + * @throws InvalidMessageDateException + */ + public function overview($sequence, $uid = false); + + /** + * Enable the debug mode + */ + public function enableDebug(); + + /** + * Disable the debug mode + */ + public function disableDebug(); +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/EncodingAliases.php b/htdocs/includes/webklex/php-imap/src/EncodingAliases.php new file mode 100644 index 00000000000..1eb16c131bb --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/EncodingAliases.php @@ -0,0 +1,482 @@ + "us-ascii", + "us-ascii" => "us-ascii", + "ansi_x3.4-1968" => "us-ascii", + "646" => "us-ascii", + "iso-8859-1" => "ISO-8859-1", + "iso-8859-2" => "ISO-8859-2", + "iso-8859-3" => "ISO-8859-3", + "iso-8859-4" => "ISO-8859-4", + "iso-8859-5" => "ISO-8859-5", + "iso-8859-6" => "ISO-8859-6", + "iso-8859-6-i" => "ISO-8859-6-I", + "iso-8859-6-e" => "ISO-8859-6-E", + "iso-8859-7" => "ISO-8859-7", + "iso-8859-8" => "ISO-8859-8", + "iso-8859-8-i" => "ISO-8859-8-I", + "iso-8859-8-e" => "ISO-8859-8-E", + "iso-8859-9" => "ISO-8859-9", + "iso-8859-10" => "ISO-8859-10", + "iso-8859-11" => "ISO-8859-11", + "iso-8859-13" => "ISO-8859-13", + "iso-8859-14" => "ISO-8859-14", + "iso-8859-15" => "ISO-8859-15", + "iso-8859-16" => "ISO-8859-16", + "iso-ir-111" => "ISO-IR-111", + "iso-2022-cn" => "ISO-2022-CN", + "iso-2022-cn-ext" => "ISO-2022-CN", + "iso-2022-kr" => "ISO-2022-KR", + "iso-2022-jp" => "ISO-2022-JP", + "utf-16be" => "UTF-16BE", + "utf-16le" => "UTF-16LE", + "utf-16" => "UTF-16", + "windows-1250" => "windows-1250", + "windows-1251" => "windows-1251", + "windows-1252" => "windows-1252", + "windows-1253" => "windows-1253", + "windows-1254" => "windows-1254", + "windows-1255" => "windows-1255", + "windows-1256" => "windows-1256", + "windows-1257" => "windows-1257", + "windows-1258" => "windows-1258", + "ibm866" => "IBM866", + "ibm850" => "IBM850", + "ibm852" => "IBM852", + "ibm855" => "IBM855", + "ibm857" => "IBM857", + "ibm862" => "IBM862", + "ibm864" => "IBM864", + "utf-8" => "UTF-8", + "utf-7" => "UTF-7", + "shift_jis" => "Shift_JIS", + "big5" => "Big5", + "euc-jp" => "EUC-JP", + "euc-kr" => "EUC-KR", + "gb2312" => "GB2312", + "gb18030" => "gb18030", + "viscii" => "VISCII", + "koi8-r" => "KOI8-R", + "koi8_r" => "KOI8-R", + "cskoi8r" => "KOI8-R", + "koi" => "KOI8-R", + "koi8" => "KOI8-R", + "koi8-u" => "KOI8-U", + "tis-620" => "TIS-620", + "t.61-8bit" => "T.61-8bit", + "hz-gb-2312" => "HZ-GB-2312", + "big5-hkscs" => "Big5-HKSCS", + "gbk" => "gbk", + "cns11643" => "x-euc-tw", + // + // Aliases for ISO-8859-1 + // + "latin1" => "ISO-8859-1", + "iso_8859-1" => "ISO-8859-1", + "iso8859-1" => "ISO-8859-1", + "iso8859-2" => "ISO-8859-2", + "iso8859-3" => "ISO-8859-3", + "iso8859-4" => "ISO-8859-4", + "iso8859-5" => "ISO-8859-5", + "iso8859-6" => "ISO-8859-6", + "iso8859-7" => "ISO-8859-7", + "iso8859-8" => "ISO-8859-8", + "iso8859-9" => "ISO-8859-9", + "iso8859-10" => "ISO-8859-10", + "iso8859-11" => "ISO-8859-11", + "iso8859-13" => "ISO-8859-13", + "iso8859-14" => "ISO-8859-14", + "iso8859-15" => "ISO-8859-15", + "iso_8859-1:1987" => "ISO-8859-1", + "iso-ir-100" => "ISO-8859-1", + "l1" => "ISO-8859-1", + "ibm819" => "ISO-8859-1", + "cp819" => "ISO-8859-1", + "csisolatin1" => "ISO-8859-1", + // + // Aliases for ISO-8859-2 + // + "latin2" => "ISO-8859-2", + "iso_8859-2" => "ISO-8859-2", + "iso_8859-2:1987" => "ISO-8859-2", + "iso-ir-101" => "ISO-8859-2", + "l2" => "ISO-8859-2", + "csisolatin2" => "ISO-8859-2", + // + // Aliases for ISO-8859-3 + // + "latin3" => "ISO-8859-3", + "iso_8859-3" => "ISO-8859-3", + "iso_8859-3:1988" => "ISO-8859-3", + "iso-ir-109" => "ISO-8859-3", + "l3" => "ISO-8859-3", + "csisolatin3" => "ISO-8859-3", + // + // Aliases for ISO-8859-4 + // + "latin4" => "ISO-8859-4", + "iso_8859-4" => "ISO-8859-4", + "iso_8859-4:1988" => "ISO-8859-4", + "iso-ir-110" => "ISO-8859-4", + "l4" => "ISO-8859-4", + "csisolatin4" => "ISO-8859-4", + // + // Aliases for ISO-8859-5 + // + "cyrillic" => "ISO-8859-5", + "iso_8859-5" => "ISO-8859-5", + "iso_8859-5:1988" => "ISO-8859-5", + "iso-ir-144" => "ISO-8859-5", + "csisolatincyrillic" => "ISO-8859-5", + // + // Aliases for ISO-8859-6 + // + "arabic" => "ISO-8859-6", + "iso_8859-6" => "ISO-8859-6", + "iso_8859-6:1987" => "ISO-8859-6", + "iso-ir-127" => "ISO-8859-6", + "ecma-114" => "ISO-8859-6", + "asmo-708" => "ISO-8859-6", + "csisolatinarabic" => "ISO-8859-6", + // + // Aliases for ISO-8859-6-I + // + "csiso88596i" => "ISO-8859-6-I", + // + // Aliases for ISO-8859-6-E", + // + "csiso88596e" => "ISO-8859-6-E", + // + // Aliases for ISO-8859-7", + // + "greek" => "ISO-8859-7", + "greek8" => "ISO-8859-7", + "sun_eu_greek" => "ISO-8859-7", + "iso_8859-7" => "ISO-8859-7", + "iso_8859-7:1987" => "ISO-8859-7", + "iso-ir-126" => "ISO-8859-7", + "elot_928" => "ISO-8859-7", + "ecma-118" => "ISO-8859-7", + "csisolatingreek" => "ISO-8859-7", + // + // Aliases for ISO-8859-8", + // + "hebrew" => "ISO-8859-8", + "iso_8859-8" => "ISO-8859-8", + "visual" => "ISO-8859-8", + "iso_8859-8:1988" => "ISO-8859-8", + "iso-ir-138" => "ISO-8859-8", + "csisolatinhebrew" => "ISO-8859-8", + // + // Aliases for ISO-8859-8-I", + // + "csiso88598i" => "ISO-8859-8-I", + "iso-8859-8i" => "ISO-8859-8-I", + "logical" => "ISO-8859-8-I", + // + // Aliases for ISO-8859-8-E", + // + "csiso88598e" => "ISO-8859-8-E", + // + // Aliases for ISO-8859-9", + // + "latin5" => "ISO-8859-9", + "iso_8859-9" => "ISO-8859-9", + "iso_8859-9:1989" => "ISO-8859-9", + "iso-ir-148" => "ISO-8859-9", + "l5" => "ISO-8859-9", + "csisolatin5" => "ISO-8859-9", + // + // Aliases for UTF-8", + // + "unicode-1-1-utf-8" => "UTF-8", + // nl_langinfo(CODESET) in HP/UX returns 'utf8' under UTF-8 locales", + "utf8" => "UTF-8", + // + // Aliases for Shift_JIS", + // + "x-sjis" => "Shift_JIS", + "shift-jis" => "Shift_JIS", + "ms_kanji" => "Shift_JIS", + "csshiftjis" => "Shift_JIS", + "windows-31j" => "Shift_JIS", + "cp932" => "Shift_JIS", + "sjis" => "Shift_JIS", + // + // Aliases for EUC_JP", + // + "cseucpkdfmtjapanese" => "EUC-JP", + "x-euc-jp" => "EUC-JP", + // + // Aliases for ISO-2022-JP", + // + "csiso2022jp" => "ISO-2022-JP", + // The following are really not aliases ISO-2022-JP, but sharing the same decoder", + "iso-2022-jp-2" => "ISO-2022-JP", + "csiso2022jp2" => "ISO-2022-JP", + // + // Aliases for Big5", + // + "csbig5" => "Big5", + "cn-big5" => "Big5", + // x-x-big5 is not really a alias for Big5, add it only for MS FrontPage", + "x-x-big5" => "Big5", + // Sun Solaris", + "zh_tw-big5" => "Big5", + // + // Aliases for EUC-KR", + // + "cseuckr" => "EUC-KR", + "ks_c_5601-1987" => "EUC-KR", + "iso-ir-149" => "EUC-KR", + "ks_c_5601-1989" => "EUC-KR", + "ksc_5601" => "EUC-KR", + "ksc5601" => "EUC-KR", + "korean" => "EUC-KR", + "csksc56011987" => "EUC-KR", + "5601" => "EUC-KR", + "windows-949" => "EUC-KR", + // + // Aliases for GB2312", + // + // The following are really not aliases GB2312, add them only for MS FrontPage", + "gb_2312-80" => "GB2312", + "iso-ir-58" => "GB2312", + "chinese" => "GB2312", + "csiso58gb231280" => "GB2312", + "csgb2312" => "GB2312", + "zh_cn.euc" => "GB2312", + // Sun Solaris", + "gb_2312" => "GB2312", + // + // Aliases for windows-125x ", + // + "x-cp1250" => "windows-1250", + "x-cp1251" => "windows-1251", + "x-cp1252" => "windows-1252", + "x-cp1253" => "windows-1253", + "x-cp1254" => "windows-1254", + "x-cp1255" => "windows-1255", + "x-cp1256" => "windows-1256", + "x-cp1257" => "windows-1257", + "x-cp1258" => "windows-1258", + // + // Aliases for windows-874 ", + // + "windows-874" => "windows-874", + "ibm874" => "windows-874", + "dos-874" => "windows-874", + // + // Aliases for macintosh", + // + "macintosh" => "macintosh", + "x-mac-roman" => "macintosh", + "mac" => "macintosh", + "csmacintosh" => "macintosh", + // + // Aliases for IBM866", + // + "cp866" => "IBM866", + "cp-866" => "IBM866", + "866" => "IBM866", + "csibm866" => "IBM866", + // + // Aliases for IBM850", + // + "cp850" => "IBM850", + "850" => "IBM850", + "csibm850" => "IBM850", + // + // Aliases for IBM852", + // + "cp852" => "IBM852", + "852" => "IBM852", + "csibm852" => "IBM852", + // + // Aliases for IBM855", + // + "cp855" => "IBM855", + "855" => "IBM855", + "csibm855" => "IBM855", + // + // Aliases for IBM857", + // + "cp857" => "IBM857", + "857" => "IBM857", + "csibm857" => "IBM857", + // + // Aliases for IBM862", + // + "cp862" => "IBM862", + "862" => "IBM862", + "csibm862" => "IBM862", + // + // Aliases for IBM864", + // + "cp864" => "IBM864", + "864" => "IBM864", + "csibm864" => "IBM864", + "ibm-864" => "IBM864", + // + // Aliases for T.61-8bit", + // + "t.61" => "T.61-8bit", + "iso-ir-103" => "T.61-8bit", + "csiso103t618bit" => "T.61-8bit", + // + // Aliases for UTF-7", + // + "x-unicode-2-0-utf-7" => "UTF-7", + "unicode-2-0-utf-7" => "UTF-7", + "unicode-1-1-utf-7" => "UTF-7", + "csunicode11utf7" => "UTF-7", + // + // Aliases for ISO-10646-UCS-2", + // + "csunicode" => "UTF-16BE", + "csunicode11" => "UTF-16BE", + "iso-10646-ucs-basic" => "UTF-16BE", + "csunicodeascii" => "UTF-16BE", + "iso-10646-unicode-latin1" => "UTF-16BE", + "csunicodelatin1" => "UTF-16BE", + "iso-10646" => "UTF-16BE", + "iso-10646-j-1" => "UTF-16BE", + // + // Aliases for ISO-8859-10", + // + "latin6" => "ISO-8859-10", + "iso-ir-157" => "ISO-8859-10", + "l6" => "ISO-8859-10", + // Currently .properties cannot handle : in key", + //iso_8859-10:1992" => "ISO-8859-10", + "csisolatin6" => "ISO-8859-10", + // + // Aliases for ISO-8859-15", + // + "iso_8859-15" => "ISO-8859-15", + "csisolatin9" => "ISO-8859-15", + "l9" => "ISO-8859-15", + // + // Aliases for ISO-IR-111", + // + "ecma-cyrillic" => "ISO-IR-111", + "csiso111ecmacyrillic" => "ISO-IR-111", + // + // Aliases for ISO-2022-KR", + // + "csiso2022kr" => "ISO-2022-KR", + // + // Aliases for VISCII", + // + "csviscii" => "VISCII", + // + // Aliases for x-euc-tw", + // + "zh_tw-euc" => "x-euc-tw", + // + // Following names appears in unix nl_langinfo(CODESET)", + // They can be compiled as platform specific if necessary", + // DONT put things here if it does not look generic enough (like hp15CN)", + // + "iso88591" => "ISO-8859-1", + "iso88592" => "ISO-8859-2", + "iso88593" => "ISO-8859-3", + "iso88594" => "ISO-8859-4", + "iso88595" => "ISO-8859-5", + "iso88596" => "ISO-8859-6", + "iso88597" => "ISO-8859-7", + "iso88598" => "ISO-8859-8", + "iso88599" => "ISO-8859-9", + "iso885910" => "ISO-8859-10", + "iso885911" => "ISO-8859-11", + "iso885912" => "ISO-8859-12", + "iso885913" => "ISO-8859-13", + "iso885914" => "ISO-8859-14", + "iso885915" => "ISO-8859-15", + "cp1250" => "windows-1250", + "cp1251" => "windows-1251", + "cp1252" => "windows-1252", + "cp1253" => "windows-1253", + "cp1254" => "windows-1254", + "cp1255" => "windows-1255", + "cp1256" => "windows-1256", + "cp1257" => "windows-1257", + "cp1258" => "windows-1258", + "x-gbk" => "gbk", + "windows-936" => "gbk", + "ansi-1251" => "windows-1251", + ]; + + /** + * Returns proper encoding mapping, if exsists. If it doesn't, return unchanged $encoding + * @param string $encoding + * @param string|null $fallback + * + * @return string + */ + public static function get($encoding, $fallback = null) { + if (isset(self::$aliases[strtolower($encoding)])) { + return self::$aliases[strtolower($encoding)]; + } + return $fallback !== null ? $fallback : $encoding; + } + +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/Event.php b/htdocs/includes/webklex/php-imap/src/Events/Event.php new file mode 100644 index 00000000000..921f28b25ed --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/Event.php @@ -0,0 +1,28 @@ +message = $arguments[0]; + $this->flag = $arguments[1]; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/FolderDeletedEvent.php b/htdocs/includes/webklex/php-imap/src/Events/FolderDeletedEvent.php new file mode 100644 index 00000000000..89b5083f975 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/FolderDeletedEvent.php @@ -0,0 +1,22 @@ +old_folder = $folders[0]; + $this->new_folder = $folders[1]; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/FolderNewEvent.php b/htdocs/includes/webklex/php-imap/src/Events/FolderNewEvent.php new file mode 100644 index 00000000000..d16bbbd67b6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/FolderNewEvent.php @@ -0,0 +1,35 @@ +folder = $folders[0]; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/MessageCopiedEvent.php b/htdocs/includes/webklex/php-imap/src/Events/MessageCopiedEvent.php new file mode 100644 index 00000000000..a6a3a447f50 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/MessageCopiedEvent.php @@ -0,0 +1,22 @@ +old_message = $messages[0]; + $this->new_message = $messages[1]; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/MessageNewEvent.php b/htdocs/includes/webklex/php-imap/src/Events/MessageNewEvent.php new file mode 100644 index 00000000000..1487e28d6bd --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/MessageNewEvent.php @@ -0,0 +1,35 @@ +message = $messages[0]; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Events/MessageRestoredEvent.php b/htdocs/includes/webklex/php-imap/src/Events/MessageRestoredEvent.php new file mode 100644 index 00000000000..25b6520a740 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Events/MessageRestoredEvent.php @@ -0,0 +1,22 @@ +client = $client; + + $this->events["message"] = $client->getDefaultEvents("message"); + $this->events["folder"] = $client->getDefaultEvents("folder"); + + $this->setDelimiter($delimiter); + $this->path = $folder_name; + $this->full_name = $this->decodeName($folder_name); + $this->name = $this->getSimpleName($this->delimiter, $this->full_name); + + $this->parseAttributes($attributes); + } + + /** + * Get a new search query instance + * @param string $charset + * + * @return WhereQuery + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function query($charset = 'UTF-8'){ + $this->getClient()->checkConnection(); + $this->getClient()->openFolder($this->path); + + return new WhereQuery($this->getClient(), $charset); + } + + /** + * @inheritdoc self::query($charset = 'UTF-8') + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function search($charset = 'UTF-8'){ + return $this->query($charset); + } + + /** + * @inheritdoc self::query($charset = 'UTF-8') + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function messages($charset = 'UTF-8'){ + return $this->query($charset); + } + + /** + * Determine if folder has children. + * + * @return bool + */ + public function hasChildren() { + return $this->has_children; + } + + /** + * Set children. + * @param FolderCollection|array $children + * + * @return self + */ + public function setChildren($children = []) { + $this->children = $children; + + return $this; + } + + /** + * Decode name. + * It converts UTF7-IMAP encoding to UTF-8. + * @param $name + * + * @return mixed|string + */ + protected function decodeName($name) { + return mb_convert_encoding($name, "UTF-8", "UTF7-IMAP"); + } + + /** + * Get simple name (without parent folders). + * @param $delimiter + * @param $full_name + * + * @return mixed + */ + protected function getSimpleName($delimiter, $full_name) { + $arr = explode($delimiter, $full_name); + + return end($arr); + } + + /** + * Parse attributes and set it to object properties. + * @param $attributes + */ + protected function parseAttributes($attributes) { + $this->no_inferiors = in_array('\NoInferiors', $attributes) ? true : false; + $this->no_select = in_array('\NoSelect', $attributes) ? true : false; + $this->marked = in_array('\Marked', $attributes) ? true : false; + $this->referral = in_array('\Referral', $attributes) ? true : false; + $this->has_children = in_array('\HasChildren', $attributes) ? true : false; + } + + /** + * Move or rename the current folder + * @param string $new_name + * @param boolean $expunge + * + * @return bool + * @throws ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function move($new_name, $expunge = true) { + $this->client->checkConnection(); + $status = $this->client->getConnection()->renameFolder($this->full_name, $new_name); + if($expunge) $this->client->expunge(); + + $folder = $this->client->getFolder($new_name); + $event = $this->getEvent("folder", "moved"); + $event::dispatch($this, $folder); + + return $status; + } + + /** + * Get a message overview + * @param string|null $sequence uid sequence + * + * @return array + * @throws ConnectionFailedException + * @throws Exceptions\InvalidMessageDateException + * @throws Exceptions\MessageNotFoundException + * @throws Exceptions\RuntimeException + */ + public function overview($sequence = null){ + $this->client->openFolder($this->path); + $sequence = $sequence === null ? "1:*" : $sequence; + $uid = ClientManager::get('options.sequence', IMAP::ST_MSGN) == IMAP::ST_UID; + return $this->client->getConnection()->overview($sequence, $uid); + } + + /** + * Append a string message to the current mailbox + * @param string $message + * @param string $options + * @param string $internal_date + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function appendMessage($message, $options = null, $internal_date = null) { + /** + * Check if $internal_date is parsed. If it is null it should not be set. Otherwise the message can't be stored. + * If this parameter is set, it will set the INTERNALDATE on the appended message. The parameter should be a + * date string that conforms to the rfc2060 specifications for a date_time value or be a Carbon object. + */ + + if ($internal_date != null) { + if ($internal_date instanceof Carbon){ + $internal_date = $internal_date->format('d-M-Y H:i:s O'); + } + } + + return $this->client->getConnection()->appendMessage($this->full_name, $message, $options, $internal_date); + } + + /** + * Rename the current folder + * @param string $new_name + * @param boolean $expunge + * + * @return bool + * @throws ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function rename($new_name, $expunge = true) { + return $this->move($new_name, $expunge); + } + + /** + * Delete the current folder + * @param boolean $expunge + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + * @throws Exceptions\EventNotFoundException + */ + public function delete($expunge = true) { + $status = $this->client->getConnection()->deleteFolder($this->path); + if($expunge) $this->client->expunge(); + + $event = $this->getEvent("folder", "deleted"); + $event::dispatch($this); + + return $status; + } + + /** + * Subscribe the current folder + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function subscribe() { + $this->client->openFolder($this->path); + return $this->client->getConnection()->subscribeFolder($this->path); + } + + /** + * Unsubscribe the current folder + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function unsubscribe() { + $this->client->openFolder($this->path); + return $this->client->getConnection()->unsubscribeFolder($this->path); + } + + /** + * Idle the current connection + * @param callable $callback + * @param integer $timeout max 1740 seconds - recommended by rfc2177 §3 + * @param boolean $auto_reconnect try to reconnect on connection close + * + * @throws ConnectionFailedException + * @throws Exceptions\InvalidMessageDateException + * @throws Exceptions\MessageContentFetchingException + * @throws Exceptions\MessageHeaderFetchingException + * @throws Exceptions\RuntimeException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\MessageFlagException + * @throws Exceptions\MessageNotFoundException + */ + public function idle(callable $callback, $timeout = 1200, $auto_reconnect = false) { + $this->client->getConnection()->setConnectionTimeout($timeout); + + $this->client->reconnect(); + $this->client->openFolder($this->path, true); + $connection = $this->client->getConnection(); + + $sequence = ClientManager::get('options.sequence', IMAP::ST_MSGN); + $connection->idle(); + + while (true) { + try { + $line = $connection->nextLine(); + if (($pos = strpos($line, "EXISTS")) !== false) { + $msgn = (int) substr($line, 2, $pos -2); + $connection->done(); + + $this->client->openFolder($this->path, true); + $message = $this->query()->getMessageByMsgn($msgn); + $message->setSequence($sequence); + $callback($message); + + $event = $this->getEvent("message", "new"); + $event::dispatch($message); + + $connection->idle(); + } + }catch (Exceptions\RuntimeException $e) { + if(strpos($e->getMessage(), "connection closed") === false) { + throw $e; + } + if ($auto_reconnect === true) { + $this->client->reconnect(); + $this->client->openFolder($this->path, true); + + $connection = $this->client->getConnection(); + $connection->idle(); + } + } + } + } + + /** + * Get folder status information + * + * @return array|bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function getStatus() { + return $this->examine(); + } + + /** + * Examine the current folder + * + * @return array + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function examine() { + return $this->client->getConnection()->examineFolder($this->path); + } + + /** + * Get the current Client instance + * + * @return Client + */ + public function getClient() { + return $this->client; + } + + /** + * Set the delimiter + * @param $delimiter + */ + public function setDelimiter($delimiter){ + if(in_array($delimiter, [null, '', ' ', false]) === true) { + $delimiter = ClientManager::get('options.delimiter', '/'); + } + + $this->delimiter = $delimiter; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Header.php b/htdocs/includes/webklex/php-imap/src/Header.php new file mode 100644 index 00000000000..9fecd69fa3c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Header.php @@ -0,0 +1,753 @@ +raw = $raw_header; + $this->config = ClientManager::get('options'); + $this->attributize = $attributize; + $this->parse(); + } + + /** + * Call dynamic attribute setter and getter methods + * @param string $method + * @param array $arguments + * + * @return Attribute|mixed + * @throws MethodNotFoundException + */ + public function __call($method, $arguments) { + if(strtolower(substr($method, 0, 3)) === 'get') { + $name = preg_replace('/(.)(?=[A-Z])/u', '$1_', substr(strtolower($method), 3)); + + if(in_array($name, array_keys($this->attributes))) { + return $this->attributes[$name]; + } + + } + + throw new MethodNotFoundException("Method ".self::class.'::'.$method.'() is not supported'); + } + + /** + * Magic getter + * @param $name + * + * @return Attribute|null + */ + public function __get($name) { + return $this->get($name); + } + + /** + * Get a specific header attribute + * @param $name + * + * @return Attribute|mixed + */ + public function get($name) { + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + return null; + } + + /** + * Set a specific attribute + * @param string $name + * @param array|mixed $value + * @param boolean $strict + * + * @return Attribute + */ + public function set($name, $value, $strict = false) { + if(isset($this->attributes[$name]) && $strict === false) { + if ($this->attributize) { + $this->attributes[$name]->add($value, true); + }else{ + if(isset($this->attributes[$name])) { + if (is_array($this->attributes[$name]) == false) { + $this->attributes[$name] = [$this->attributes[$name], $value]; + }else{ + $this->attributes[$name][] = $value; + } + }else{ + $this->attributes[$name] = $value; + } + } + }elseif($this->attributize == false){ + $this->attributes[$name] = $value; + }else{ + $this->attributes[$name] = new Attribute($name, $value); + } + + return $this->attributes[$name]; + } + + /** + * Perform a regex match all on the raw header and return the first result + * @param $pattern + * + * @return mixed|null + */ + public function find($pattern) { + if (preg_match_all($pattern, $this->raw, $matches)) { + if (isset($matches[1])) { + if(count($matches[1]) > 0) { + return $matches[1][0]; + } + } + } + return null; + } + + /** + * Try to find a boundary if possible + * + * @return string|null + */ + public function getBoundary(){ + $boundary = $this->find("/boundary\=(.*)/i"); + + if ($boundary === null) { + return null; + } + + return $this->clearBoundaryString($boundary); + } + + /** + * Remove all unwanted chars from a given boundary + * @param string $str + * + * @return string + */ + private function clearBoundaryString($str) { + return str_replace(['"', '\r', '\n', "\n", "\r", ";", "\s"], "", $str); + } + + /** + * Parse the raw headers + * + * @throws InvalidMessageDateException + */ + protected function parse(){ + $header = $this->rfc822_parse_headers($this->raw); + + $this->extractAddresses($header); + + if (property_exists($header, 'subject')) { + $this->set("subject", $this->decode($header->subject)); + } + if (property_exists($header, 'references')) { + $this->set("references", $this->decode($header->references)); + } + if (property_exists($header, 'message_id')) { + $this->set("message_id", str_replace(['<', '>'], '', $header->message_id)); + } + + $this->parseDate($header); + foreach ($header as $key => $value) { + $key = trim(rtrim(strtolower($key))); + if(!isset($this->attributes[$key])){ + $this->set($key, $value); + } + } + + $this->extractHeaderExtensions(); + $this->findPriority(); + } + + /** + * Parse mail headers from a string + * @link https://php.net/manual/en/function.imap-rfc822-parse-headers.php + * @param $raw_headers + * + * @return object + */ + public function rfc822_parse_headers($raw_headers){ + $headers = []; + $imap_headers = []; + if (extension_loaded('imap') && $this->config["rfc822"]) { + $raw_imap_headers = (array) \imap_rfc822_parse_headers($this->raw); + foreach($raw_imap_headers as $key => $values) { + $key = str_replace("-", "_", $key); + $imap_headers[$key] = $values; + } + } + $lines = explode("\r\n", str_replace("\r\n\t", ' ', $raw_headers)); + $prev_header = null; + foreach($lines as $line) { + if (substr($line, 0, 1) === "\n") { + $line = substr($line, 1); + } + + if (substr($line, 0, 1) === "\t") { + $line = substr($line, 1); + $line = trim(rtrim($line)); + if ($prev_header !== null) { + $headers[$prev_header][] = $line; + } + }elseif (substr($line, 0, 1) === " ") { + $line = substr($line, 1); + $line = trim(rtrim($line)); + if ($prev_header !== null) { + if (!isset($headers[$prev_header])) { + $headers[$prev_header] = ""; + } + if (is_array($headers[$prev_header])) { + $headers[$prev_header][] = $line; + }else{ + $headers[$prev_header] .= $line; + } + } + }else{ + if (($pos = strpos($line, ":")) > 0) { + $key = trim(rtrim(strtolower(substr($line, 0, $pos)))); + $key = str_replace("-", "_", $key); + + $value = trim(rtrim(substr($line, $pos + 1))); + if (isset($headers[$key])) { + $headers[$key][] = $value; + }else{ + $headers[$key] = [$value]; + } + $prev_header = $key; + } + } + } + + foreach($headers as $key => $values) { + if (isset($imap_headers[$key])) continue; + $value = null; + switch($key){ + case 'from': + case 'to': + case 'cc': + case 'bcc': + case 'reply_to': + case 'sender': + $value = $this->decodeAddresses($values); + $headers[$key."address"] = implode(", ", $values); + break; + case 'subject': + $value = implode(" ", $values); + break; + default: + if (is_array($values)) { + foreach($values as $k => $v) { + if ($v == "") { + unset($values[$k]); + } + } + $available_values = count($values); + if ($available_values === 1) { + $value = array_pop($values); + } elseif ($available_values === 2) { + $value = implode(" ", $values); + } elseif ($available_values > 2) { + $value = array_values($values); + } else { + $value = ""; + } + } + break; + } + $headers[$key] = $value; + } + + return (object) array_merge($headers, $imap_headers); + } + + /** + * Decode MIME header elements + * @link https://php.net/manual/en/function.imap-mime-header-decode.php + * @param string $text The MIME text + * + * @return array The decoded elements are returned in an array of objects, where each + * object has two properties, charset and text. + */ + public function mime_header_decode($text){ + if (extension_loaded('imap')) { + return \imap_mime_header_decode($text); + } + $charset = $this->getEncoding($text); + return [(object)[ + "charset" => $charset, + "text" => $this->convertEncoding($text, $charset) + ]]; + } + + /** + * Check if a given pair of strings has ben decoded + * @param $encoded + * @param $decoded + * + * @return bool + */ + private function notDecoded($encoded, $decoded) { + return 0 === strpos($decoded, '=?') + && strlen($decoded) - 2 === strpos($decoded, '?=') + && false !== strpos($encoded, $decoded); + } + + /** + * Convert the encoding + * @param $str + * @param string $from + * @param string $to + * + * @return mixed|string + */ + public function convertEncoding($str, $from = "ISO-8859-2", $to = "UTF-8") { + + $from = EncodingAliases::get($from, $this->fallback_encoding); + $to = EncodingAliases::get($to, $this->fallback_encoding); + + if ($from === $to) { + return $str; + } + + // We don't need to do convertEncoding() if charset is ASCII (us-ascii): + // ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded + // https://stackoverflow.com/a/11303410 + // + // us-ascii is the same as ASCII: + // ASCII is the traditional name for the encoding system; the Internet Assigned Numbers Authority (IANA) + // prefers the updated name US-ASCII, which clarifies that this system was developed in the US and + // based on the typographical symbols predominantly in use there. + // https://en.wikipedia.org/wiki/ASCII + // + // convertEncoding() function basically means convertToUtf8(), so when we convert ASCII string into UTF-8 it gets broken. + if (strtolower($from) == 'us-ascii' && $to == 'UTF-8') { + return $str; + } + + try { + if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') { + return iconv($from, $to, $str); + } else { + if (!$from) { + return mb_convert_encoding($str, $to); + } + return mb_convert_encoding($str, $to, $from); + } + } catch (\Exception $e) { + if (strstr($from, '-')) { + $from = str_replace('-', '', $from); + return $this->convertEncoding($str, $from, $to); + } else { + return $str; + } + } + } + + /** + * Get the encoding of a given abject + * @param object|string $structure + * + * @return string + */ + public function getEncoding($structure) { + if (property_exists($structure, 'parameters')) { + foreach ($structure->parameters as $parameter) { + if (strtolower($parameter->attribute) == "charset") { + return EncodingAliases::get($parameter->value, $this->fallback_encoding); + } + } + }elseif (property_exists($structure, 'charset')) { + return EncodingAliases::get($structure->charset, $this->fallback_encoding); + }elseif (is_string($structure) === true){ + return mb_detect_encoding($structure); + } + + return $this->fallback_encoding; + } + + /** + * Test if a given value is utf-8 encoded + * @param $value + * + * @return bool + */ + private function is_uft8($value) { + return strpos(strtolower($value), '=?utf-8?') === 0; + } + + /** + * Try to decode a specific header + * @param mixed $value + * + * @return mixed + */ + private function decode($value) { + if (is_array($value)) { + return $this->decodeArray($value); + } + $original_value = $value; + $decoder = $this->config['decoder']['message']; + + if ($value !== null) { + $is_utf8_base = $this->is_uft8($value); + + if($decoder === 'utf-8' && extension_loaded('imap')) { + $value = \imap_utf8($value); + $is_utf8_base = $this->is_uft8($value); + if ($is_utf8_base) { + $value = mb_decode_mimeheader($value); + } + if ($this->notDecoded($original_value, $value)) { + $decoded_value = $this->mime_header_decode($value); + if (count($decoded_value) > 0) { + if(property_exists($decoded_value[0], "text")) { + $value = $decoded_value[0]->text; + } + } + } + }elseif($decoder === 'iconv' && $is_utf8_base) { + $value = iconv_mime_decode($value); + }elseif($is_utf8_base){ + $value = mb_decode_mimeheader($value); + } + + if ($this->is_uft8($value)) { + $value = mb_decode_mimeheader($value); + } + + if ($this->notDecoded($original_value, $value)) { + $value = $this->convertEncoding($original_value, $this->getEncoding($original_value)); + } + } + + return $value; + } + + /** + * Decode a given array + * @param array $values + * + * @return array + */ + private function decodeArray($values) { + foreach($values as $key => $value) { + $values[$key] = $this->decode($value); + } + return $values; + } + + /** + * Try to extract the priority from a given raw header string + */ + private function findPriority() { + if(($priority = $this->get("x_priority")) === null) return; + switch((int)"$priority"){ + case IMAP::MESSAGE_PRIORITY_HIGHEST; + $priority = IMAP::MESSAGE_PRIORITY_HIGHEST; + break; + case IMAP::MESSAGE_PRIORITY_HIGH; + $priority = IMAP::MESSAGE_PRIORITY_HIGH; + break; + case IMAP::MESSAGE_PRIORITY_NORMAL; + $priority = IMAP::MESSAGE_PRIORITY_NORMAL; + break; + case IMAP::MESSAGE_PRIORITY_LOW; + $priority = IMAP::MESSAGE_PRIORITY_LOW; + break; + case IMAP::MESSAGE_PRIORITY_LOWEST; + $priority = IMAP::MESSAGE_PRIORITY_LOWEST; + break; + default: + $priority = IMAP::MESSAGE_PRIORITY_UNKNOWN; + break; + } + + $this->set("priority", $priority); + } + + /** + * Extract a given part as address array from a given header + * @param $values + * + * @return array + */ + private function decodeAddresses($values) { + $addresses = []; + + if (extension_loaded('mailparse') && $this->config["rfc822"]) { + foreach ($values as $address) { + foreach (\mailparse_rfc822_parse_addresses($address) as $parsed_address) { + if (isset($parsed_address['address'])) { + $mail_address = explode('@', $parsed_address['address']); + if (count($mail_address) == 2) { + $addresses[] = (object)[ + "personal" => isset($parsed_address['display']) ? $parsed_address['display'] : '', + "mailbox" => $mail_address[0], + "host" => $mail_address[1], + ]; + } + } + } + } + + return $addresses; + } + + foreach($values as $address) { + foreach (preg_split('/, (?=(?:[^"]*"[^"]*")*[^"]*$)/', $address) as $split_address) { + $split_address = trim(rtrim($split_address)); + + if (strpos($split_address, ",") == strlen($split_address) - 1) { + $split_address = substr($split_address, 0, -1); + } + if (preg_match( + '/^(?:(?P.+)\s)?(?(name)<|[^\s]+?)(?(name)>|>?)$/', + $split_address, + $matches + )) { + $name = trim(rtrim($matches["name"])); + $email = trim(rtrim($matches["email"])); + list($mailbox, $host) = array_pad(explode("@", $email), 2, null); + $addresses[] = (object)[ + "personal" => $name, + "mailbox" => $mailbox, + "host" => $host, + ]; + } + } + } + + return $addresses; + } + + /** + * Extract a given part as address array from a given header + * @param object $header + */ + private function extractAddresses($header) { + foreach(['from', 'to', 'cc', 'bcc', 'reply_to', 'sender'] as $key){ + if (property_exists($header, $key)) { + $this->set($key, $this->parseAddresses($header->$key)); + } + } + } + + /** + * Parse Addresses + * @param $list + * + * @return array + */ + private function parseAddresses($list) { + $addresses = []; + + if (is_array($list) === false) { + return $addresses; + } + + foreach ($list as $item) { + $address = (object) $item; + + if (!property_exists($address, 'mailbox')) { + $address->mailbox = false; + } + if (!property_exists($address, 'host')) { + $address->host = false; + } + if (!property_exists($address, 'personal')) { + $address->personal = false; + } else { + $personalParts = $this->mime_header_decode($address->personal); + + if(is_array($personalParts)) { + $address->personal = ''; + foreach ($personalParts as $p) { + $address->personal .= $this->convertEncoding($p->text, $this->getEncoding($p)); + } + } + + if (strpos($address->personal, "'") === 0) { + $address->personal = str_replace("'", "", $address->personal); + } + } + + $address->mail = ($address->mailbox && $address->host) ? $address->mailbox.'@'.$address->host : false; + $address->full = ($address->personal) ? $address->personal.' <'.$address->mail.'>' : $address->mail; + + $addresses[] = new Address($address); + } + + return $addresses; + } + + /** + * Search and extract potential header extensions + */ + private function extractHeaderExtensions(){ + foreach ($this->attributes as $key => $value) { + if (is_array($value)) { + $value = implode(", ", $value); + }else{ + $value = (string)$value; + } + // Only parse strings and don't parse any attributes like the user-agent + if (in_array($key, ["user_agent"]) === false) { + if (($pos = strpos($value, ";")) !== false){ + $original = substr($value, 0, $pos); + $this->set($key, trim(rtrim($original)), true); + + // Get all potential extensions + $extensions = explode(";", substr($value, $pos + 1)); + foreach($extensions as $extension) { + if (($pos = strpos($extension, "=")) !== false){ + $key = substr($extension, 0, $pos); + $key = trim(rtrim(strtolower($key))); + + if (isset($this->attributes[$key]) === false) { + $value = substr($extension, $pos + 1); + $value = str_replace('"', "", $value); + $value = trim(rtrim($value)); + + $this->set($key, $value); + } + } + } + } + } + } + } + + /** + * Exception handling for invalid dates + * + * Currently known invalid formats: + * ^ Datetime ^ Problem ^ Cause + * | Mon, 20 Nov 2017 20:31:31 +0800 (GMT+8:00) | Double timezone specification | A Windows feature + * | Thu, 8 Nov 2018 08:54:58 -0200 (-02) | + * | | and invalid timezone (max 6 char) | + * | 04 Jan 2018 10:12:47 UT | Missing letter "C" | Unknown + * | Thu, 31 May 2018 18:15:00 +0800 (added by) | Non-standard details added by the | Unknown + * | | mail server | + * | Sat, 31 Aug 2013 20:08:23 +0580 | Invalid timezone | PHPMailer bug https://sourceforge.net/p/phpmailer/mailman/message/6132703/ + * + * Please report any new invalid timestamps to [#45](https://github.com/Webklex/php-imap/issues) + * + * @param object $header + * + * @throws InvalidMessageDateException + */ + private function parseDate($header) { + + if (property_exists($header, 'date')) { + $parsed_date = null; + $date = $header->date; + + if(preg_match('/\+0580/', $date)) { + $date = str_replace('+0580', '+0530', $date); + } + + $date = trim(rtrim($date)); + try { + $parsed_date = Carbon::parse($date); + } catch (\Exception $e) { + switch (true) { + case preg_match('/([0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ UT)+$/i', $date) > 0: + case preg_match('/([A-Z]{2,3}\,\ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ UT)+$/i', $date) > 0: + $date .= 'C'; + break; + case preg_match('/([A-Z]{2,3}\,\ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ \+[0-9]{2,4}\ \(\+[0-9]{1,2}\))+$/i', $date) > 0: + case preg_match('/([A-Z]{2,3}[\,|\ \,]\ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}.*)+$/i', $date) > 0: + case preg_match('/([A-Z]{2,3}\,\ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ [\-|\+][0-9]{4}\ \(.*)\)+$/i', $date) > 0: + case preg_match('/([A-Z]{2,3}\, \ [0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{4}\ [0-9]{1,2}\:[0-9]{1,2}\:[0-9]{1,2}\ [\-|\+][0-9]{4}\ \(.*)\)+$/i', $date) > 0: + case preg_match('/([0-9]{1,2}\ [A-Z]{2,3}\ [0-9]{2,4}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2}\ [A-Z]{2}\ \-[0-9]{2}\:[0-9]{2}\ \([A-Z]{2,3}\ \-[0-9]{2}:[0-9]{2}\))+$/i', $date) > 0: + $array = explode('(', $date); + $array = array_reverse($array); + $date = trim(array_pop($array)); + break; + } + try{ + $parsed_date = Carbon::parse($date); + } catch (\Exception $_e) { + throw new InvalidMessageDateException("Invalid message date. ID:".$this->get("message_id"), 1100, $e); + } + } + + $this->set("date", $parsed_date); + } + } + + /** + * Get all available attributes + * + * @return array + */ + public function getAttributes() { + return $this->attributes; + } + +} diff --git a/htdocs/includes/webklex/php-imap/src/IMAP.php b/htdocs/includes/webklex/php-imap/src/IMAP.php new file mode 100644 index 00000000000..41ae8248b61 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/IMAP.php @@ -0,0 +1,375 @@ +imap_close + * @link http://php.net/manual/en/imap.constants.php + */ + const CL_EXPUNGE = 32768; + + /** + * The parameter is a UID + * @link http://php.net/manual/en/imap.constants.php + */ + const FT_UID = 1; + + /** + * Do not set the \Seen flag if not already set + * @link http://php.net/manual/en/imap.constants.php + */ + const FT_PEEK = 2; + const FT_NOT = 4; + + /** + * The return string is in internal format, will not canonicalize to CRLF. + * @link http://php.net/manual/en/imap.constants.php + */ + const FT_INTERNAL = 8; + const FT_PREFETCHTEXT = 32; + + /** + * The sequence argument contains UIDs instead of sequence numbers + * @link http://php.net/manual/en/imap.constants.php + */ + const ST_UID = 1; + const ST_SILENT = 2; + const ST_MSGN = 3; + const ST_SET = 4; + + /** + * the sequence numbers contain UIDS + * @link http://php.net/manual/en/imap.constants.php + */ + const CP_UID = 1; + + /** + * Delete the messages from the current mailbox after copying + * with imap_mail_copy + * @link http://php.net/manual/en/imap.constants.php + */ + const CP_MOVE = 2; + + /** + * Return UIDs instead of sequence numbers + * @link http://php.net/manual/en/imap.constants.php + */ + const SE_UID = 1; + const SE_FREE = 2; + + /** + * Don't prefetch searched messages + * @link http://php.net/manual/en/imap.constants.php + */ + const SE_NOPREFETCH = 4; + const SO_FREE = 8; + const SO_NOSERVER = 16; + const SA_MESSAGES = 1; + const SA_RECENT = 2; + const SA_UNSEEN = 4; + const SA_UIDNEXT = 8; + const SA_UIDVALIDITY = 16; + const SA_ALL = 31; + + /** + * This mailbox has no "children" (there are no + * mailboxes below this one). + * @link http://php.net/manual/en/imap.constants.php + */ + const LATT_NOINFERIORS = 1; + + /** + * This is only a container, not a mailbox - you + * cannot open it. + * @link http://php.net/manual/en/imap.constants.php + */ + const LATT_NOSELECT = 2; + + /** + * This mailbox is marked. Only used by UW-IMAPD. + * @link http://php.net/manual/en/imap.constants.php + */ + const LATT_MARKED = 4; + + /** + * This mailbox is not marked. Only used by + * UW-IMAPD. + * @link http://php.net/manual/en/imap.constants.php + */ + const LATT_UNMARKED = 8; + const LATT_REFERRAL = 16; + const LATT_HASCHILDREN = 32; + const LATT_HASNOCHILDREN = 64; + + /** + * Sort criteria for imap_sort: + * message Date + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTDATE = 0; + + /** + * Sort criteria for imap_sort: + * arrival date + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTARRIVAL = 1; + + /** + * Sort criteria for imap_sort: + * mailbox in first From address + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTFROM = 2; + + /** + * Sort criteria for imap_sort: + * message subject + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTSUBJECT = 3; + + /** + * Sort criteria for imap_sort: + * mailbox in first To address + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTTO = 4; + + /** + * Sort criteria for imap_sort: + * mailbox in first cc address + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTCC = 5; + + /** + * Sort criteria for imap_sort: + * size of message in octets + * @link http://php.net/manual/en/imap.constants.php + */ + const SORTSIZE = 6; + const TYPETEXT = 0; + const TYPEMULTIPART = 1; + const TYPEMESSAGE = 2; + const TYPEAPPLICATION = 3; + const TYPEAUDIO = 4; + const TYPEIMAGE = 5; + const TYPEVIDEO = 6; + const TYPEMODEL = 7; + const TYPEOTHER = 8; + const ENC7BIT = 0; + const ENC8BIT = 1; + const ENCBINARY = 2; + const ENCBASE64 = 3; + const ENCQUOTEDPRINTABLE = 4; + const ENCOTHER = 5; + + /** + * Garbage collector, clear message cache elements. + * @link http://php.net/manual/en/imap.constants.php + */ + const IMAP_GC_ELT = 1; + + /** + * Garbage collector, clear envelopes and bodies. + * @link http://php.net/manual/en/imap.constants.php + */ + const IMAP_GC_ENV = 2; + + /** + * Garbage collector, clear texts. + * @link http://php.net/manual/en/imap.constants.php + */ + const IMAP_GC_TEXTS = 4; + +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Message.php b/htdocs/includes/webklex/php-imap/src/Message.php new file mode 100755 index 00000000000..90ed1a89141 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Message.php @@ -0,0 +1,1419 @@ +boot(); + + $default_mask = $client->getDefaultMessageMask(); + if($default_mask != null) { + $this->mask = $default_mask; + } + $this->events["message"] = $client->getDefaultEvents("message"); + $this->events["flag"] = $client->getDefaultEvents("flag"); + + $this->folder_path = $client->getFolderPath(); + + $this->setSequence($sequence); + $this->setFetchOption($fetch_options); + $this->setFetchBodyOption($fetch_body); + $this->setFetchFlagsOption($fetch_flags); + + $this->client = $client; + $this->client->openFolder($this->folder_path); + + $this->setSequenceId($uid, $msglist); + + if ($this->fetch_options == IMAP::FT_PEEK) { + $this->parseFlags(); + } + + $this->parseHeader(); + + if ($this->getFetchBodyOption() === true) { + $this->parseBody(); + } + + if ($this->getFetchFlagsOption() === true && $this->fetch_options !== IMAP::FT_PEEK) { + $this->parseFlags(); + } + } + + /** + * Create a new instance without fetching the message header and providing them raw instead + * @param int $uid + * @param int|null $msglist + * @param Client $client + * @param string $raw_header + * @param string $raw_body + * @param array $raw_flags + * @param null $fetch_options + * @param null $sequence + * + * @return Message + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws ReflectionException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + * @throws Exceptions\MessageNotFoundException + */ + public static function make($uid, $msglist, Client $client, $raw_header, $raw_body, $raw_flags, $fetch_options = null, $sequence = null){ + $reflection = new ReflectionClass(self::class); + /** @var self $instance */ + $instance = $reflection->newInstanceWithoutConstructor(); + $instance->boot(); + + $default_mask = $client->getDefaultMessageMask(); + if($default_mask != null) { + $instance->setMask($default_mask); + } + $instance->setEvents([ + "message" => $client->getDefaultEvents("message"), + "flag" => $client->getDefaultEvents("flag"), + ]); + $instance->setFolderPath($client->getFolderPath()); + $instance->setSequence($sequence); + $instance->setFetchOption($fetch_options); + + $instance->setClient($client); + $instance->setSequenceId($uid, $msglist); + + $instance->parseRawHeader($raw_header); + $instance->parseRawFlags($raw_flags); + $instance->parseRawBody($raw_body); + $instance->peek(); + + return $instance; + } + + /** + * Boot a new instance + */ + public function boot(){ + $this->attributes = []; + + $this->config = ClientManager::get('options'); + $this->available_flags = ClientManager::get('flags'); + + $this->attachments = AttachmentCollection::make([]); + $this->flags = FlagCollection::make([]); + } + + /** + * Call dynamic attribute setter and getter methods + * @param string $method + * @param array $arguments + * + * @return mixed + * @throws MethodNotFoundException + */ + public function __call($method, $arguments) { + if(strtolower(substr($method, 0, 3)) === 'get') { + $name = Str::snake(substr($method, 3)); + return $this->get($name); + }elseif (strtolower(substr($method, 0, 3)) === 'set') { + $name = Str::snake(substr($method, 3)); + + if(in_array($name, array_keys($this->attributes))) { + return $this->__set($name, array_pop($arguments)); + } + + } + + throw new MethodNotFoundException("Method ".self::class.'::'.$method.'() is not supported'); + } + + /** + * Magic setter + * @param $name + * @param $value + * + * @return mixed + */ + public function __set($name, $value) { + $this->attributes[$name] = $value; + + return $this->attributes[$name]; + } + + /** + * Magic getter + * @param $name + * + * @return Attribute|mixed|null + */ + public function __get($name) { + return $this->get($name); + } + + /** + * Get an available message or message header attribute + * @param $name + * + * @return Attribute|mixed|null + */ + public function get($name) { + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + return $this->header->get($name); + } + + /** + * Check if the Message has a text body + * + * @return bool + */ + public function hasTextBody() { + return isset($this->bodies['text']); + } + + /** + * Get the Message text body + * + * @return mixed + */ + public function getTextBody() { + if (!isset($this->bodies['text'])) { + return null; + } + + return $this->bodies['text']; + } + + /** + * Check if the Message has a html body + * + * @return bool + */ + public function hasHTMLBody() { + return isset($this->bodies['html']); + } + + /** + * Get the Message html body + * + * @return string|null + */ + public function getHTMLBody() { + if (!isset($this->bodies['html'])) { + return null; + } + + return $this->bodies['html']; + } + + /** + * Parse all defined headers + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + * @throws InvalidMessageDateException + * @throws MessageHeaderFetchingException + */ + private function parseHeader() { + $sequence_id = $this->getSequenceId(); + $headers = $this->client->getConnection()->headers([$sequence_id], "RFC822", $this->sequence === IMAP::ST_UID); + if (!isset($headers[$sequence_id])) { + throw new MessageHeaderFetchingException("no headers found", 0); + } + + $this->parseRawHeader($headers[$sequence_id]); + } + + /** + * @param string $raw_header + * + * @throws InvalidMessageDateException + */ + public function parseRawHeader($raw_header){ + $this->header = new Header($raw_header); + } + + /** + * Parse additional raw flags + * @param array $raw_flags + */ + public function parseRawFlags($raw_flags) { + $this->flags = FlagCollection::make([]); + + foreach($raw_flags as $flag) { + if (strpos($flag, "\\") === 0){ + $flag = substr($flag, 1); + } + $flag_key = strtolower($flag); + if ($this->available_flags === null || in_array($flag_key, $this->available_flags)) { + $this->flags->put($flag_key, $flag); + } + } + } + + /** + * Parse additional flags + * + * @return void + * @throws Exceptions\ConnectionFailedException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + private function parseFlags() { + $this->client->openFolder($this->folder_path); + $this->flags = FlagCollection::make([]); + + $sequence_id = $this->getSequenceId(); + try { + $flags = $this->client->getConnection()->flags([$sequence_id], $this->sequence === IMAP::ST_UID); + } catch (Exceptions\RuntimeException $e) { + throw new MessageFlagException("flag could not be fetched", 0, $e); + } + + if (isset($flags[$sequence_id])) { + $this->parseRawFlags($flags[$sequence_id]); + } + } + + /** + * Parse the Message body + * + * @return $this + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\MessageContentFetchingException + * @throws InvalidMessageDateException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function parseBody() { + $this->client->openFolder($this->folder_path); + + $sequence_id = $this->getSequenceId(); + try { + $contents = $this->client->getConnection()->content([$sequence_id], "RFC822", $this->sequence === IMAP::ST_UID); + } catch (Exceptions\RuntimeException $e) { + throw new MessageContentFetchingException("failed to fetch content", 0); + } + if (!isset($contents[$sequence_id])) { + throw new MessageContentFetchingException("no content found", 0); + } + $content = $contents[$sequence_id]; + + $body = $this->parseRawBody($content); + $this->peek(); + + return $body; + } + + /** + * Handle auto "Seen" flag handling + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function peek(){ + if ($this->fetch_options == IMAP::FT_PEEK) { + if ($this->getFlags()->get("seen") == null) { + $this->unsetFlag("Seen"); + } + }elseif ($this->getFlags()->get("seen") != null) { + $this->setFlag("Seen"); + } + } + + /** + * Parse a given message body + * @param string $raw_body + * + * @return $this + * @throws Exceptions\ConnectionFailedException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws Exceptions\RuntimeException + */ + public function parseRawBody($raw_body) { + $this->structure = new Structure($raw_body, $this->header); + $this->fetchStructure($this->structure); + + return $this; + } + + /** + * Fetch the Message structure + * @param Structure $structure + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + private function fetchStructure($structure) { + $this->client->openFolder($this->folder_path); + + foreach ($structure->parts as $part) { + $this->fetchPart($part); + } + } + + /** + * Fetch a given part + * @param Part $part + */ + private function fetchPart(Part $part) { + if ($part->isAttachment()) { + $this->fetchAttachment($part); + }else{ + $encoding = $this->getEncoding($part); + + $content = $this->decodeString($part->content, $part->encoding); + + // We don't need to do convertEncoding() if charset is ASCII (us-ascii): + // ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded + // https://stackoverflow.com/a/11303410 + // + // us-ascii is the same as ASCII: + // ASCII is the traditional name for the encoding system; the Internet Assigned Numbers Authority (IANA) + // prefers the updated name US-ASCII, which clarifies that this system was developed in the US and + // based on the typographical symbols predominantly in use there. + // https://en.wikipedia.org/wiki/ASCII + // + // convertEncoding() function basically means convertToUtf8(), so when we convert ASCII string into UTF-8 it gets broken. + if ($encoding != 'us-ascii') { + $content = $this->convertEncoding($content, $encoding); + } + + $subtype = strtolower($part->subtype); + $subtype = $subtype == "plain" || $subtype == "" ? "text" : $subtype; + + if (isset($this->bodies[$subtype])) { + $this->bodies[$subtype] .= "\n".$content; + }else{ + $this->bodies[$subtype] = $content; + } + } + } + + /** + * Fetch the Message attachment + * @param Part $part + */ + protected function fetchAttachment($part) { + $oAttachment = new Attachment($this, $part); + + if ($oAttachment->getName() !== null && $oAttachment->getSize() > 0) { + if ($oAttachment->getId() !== null) { + $this->attachments->put($oAttachment->getId(), $oAttachment); + } else { + $this->attachments->push($oAttachment); + } + } + } + + /** + * Fail proof setter for $fetch_option + * @param $option + * + * @return $this + */ + public function setFetchOption($option) { + if (is_long($option) === true) { + $this->fetch_options = $option; + } elseif (is_null($option) === true) { + $config = ClientManager::get('options.fetch', IMAP::FT_UID); + $this->fetch_options = is_long($config) ? $config : 1; + } + + return $this; + } + + /** + * Set the sequence type + * @param int $sequence + * + * @return $this + */ + public function setSequence($sequence) { + if (is_long($sequence)) { + $this->sequence = $sequence; + } elseif (is_null($sequence)) { + $config = ClientManager::get('options.sequence', IMAP::ST_MSGN); + $this->sequence = is_long($config) ? $config : IMAP::ST_MSGN; + } + + return $this; + } + + /** + * Fail proof setter for $fetch_body + * @param $option + * + * @return $this + */ + public function setFetchBodyOption($option) { + if (is_bool($option)) { + $this->fetch_body = $option; + } elseif (is_null($option)) { + $config = ClientManager::get('options.fetch_body', true); + $this->fetch_body = is_bool($config) ? $config : true; + } + + return $this; + } + + /** + * Fail proof setter for $fetch_flags + * @param $option + * + * @return $this + */ + public function setFetchFlagsOption($option) { + if (is_bool($option)) { + $this->fetch_flags = $option; + } elseif (is_null($option)) { + $config = ClientManager::get('options.fetch_flags', true); + $this->fetch_flags = is_bool($config) ? $config : true; + } + + return $this; + } + + /** + * Decode a given string + * @param $string + * @param $encoding + * + * @return string + */ + public function decodeString($string, $encoding) { + switch ($encoding) { + case IMAP::MESSAGE_ENC_BINARY: + if (extension_loaded('imap')) { + return base64_decode(\imap_binary($string)); + } + return base64_decode($string); + case IMAP::MESSAGE_ENC_BASE64: + return base64_decode($string); + case IMAP::MESSAGE_ENC_QUOTED_PRINTABLE: + return quoted_printable_decode($string); + case IMAP::MESSAGE_ENC_8BIT: + case IMAP::MESSAGE_ENC_7BIT: + case IMAP::MESSAGE_ENC_OTHER: + default: + return $string; + } + } + + /** + * Convert the encoding + * @param $str + * @param string $from + * @param string $to + * + * @return mixed|string + */ + public function convertEncoding($str, $from = "ISO-8859-2", $to = "UTF-8") { + + $from = EncodingAliases::get($from); + $to = EncodingAliases::get($to); + + if ($from === $to) { + return $str; + } + + // We don't need to do convertEncoding() if charset is ASCII (us-ascii): + // ASCII is a subset of UTF-8, so all ASCII files are already UTF-8 encoded + // https://stackoverflow.com/a/11303410 + // + // us-ascii is the same as ASCII: + // ASCII is the traditional name for the encoding system; the Internet Assigned Numbers Authority (IANA) + // prefers the updated name US-ASCII, which clarifies that this system was developed in the US and + // based on the typographical symbols predominantly in use there. + // https://en.wikipedia.org/wiki/ASCII + // + // convertEncoding() function basically means convertToUtf8(), so when we convert ASCII string into UTF-8 it gets broken. + if (strtolower($from) == 'us-ascii' && $to == 'UTF-8') { + return $str; + } + + if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7') { + return @iconv($from, $to.'//IGNORE', $str); + } else { + if (!$from) { + return mb_convert_encoding($str, $to); + } + return mb_convert_encoding($str, $to, $from); + } + } + + /** + * Get the encoding of a given abject + * @param object|string $structure + * + * @return string + */ + public function getEncoding($structure) { + if (property_exists($structure, 'parameters')) { + foreach ($structure->parameters as $parameter) { + if (strtolower($parameter->attribute) == "charset") { + return EncodingAliases::get($parameter->value); + } + } + }elseif (property_exists($structure, 'charset')){ + return EncodingAliases::get($structure->charset); + }elseif (is_string($structure) === true){ + return mb_detect_encoding($structure); + } + + return 'UTF-8'; + } + + /** + * Get the messages folder + * + * @return mixed + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\RuntimeException + */ + public function getFolder(){ + return $this->client->getFolderByPath($this->folder_path); + } + + /** + * Create a message thread based on the current message + * @param Folder|null $sent_folder + * @param MessageCollection|null $thread + * @param Folder|null $folder + * + * @return MessageCollection|null + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\GetMessagesFailedException + * @throws Exceptions\RuntimeException + */ + public function thread($sent_folder = null, &$thread = null, $folder = null){ + $thread = $thread ? $thread : MessageCollection::make([]); + $folder = $folder ? $folder : $this->getFolder(); + $sent_folder = $sent_folder ? $sent_folder : $this->client->getFolderByPath(ClientManager::get("options.common_folders.sent", "INBOX/Sent")); + + /** @var Message $message */ + foreach($thread as $message) { + if ($message->message_id->first() == $this->message_id->first()) { + return $thread; + } + } + $thread->push($this); + + $this->fetchThreadByInReplyTo($thread, $this->message_id, $folder, $folder, $sent_folder); + $this->fetchThreadByInReplyTo($thread, $this->message_id, $sent_folder, $folder, $sent_folder); + + if (is_array($this->in_reply_to)) { + foreach($this->in_reply_to as $in_reply_to) { + $this->fetchThreadByMessageId($thread, $in_reply_to, $folder, $folder, $sent_folder); + $this->fetchThreadByMessageId($thread, $in_reply_to, $sent_folder, $folder, $sent_folder); + } + } + + return $thread; + } + + /** + * Fetch a partial thread by message id + * @param MessageCollection $thread + * @param string $in_reply_to + * @param Folder $primary_folder + * @param Folder $secondary_folder + * @param Folder $sent_folder + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\GetMessagesFailedException + * @throws Exceptions\RuntimeException + */ + protected function fetchThreadByInReplyTo(&$thread, $in_reply_to, $primary_folder, $secondary_folder, $sent_folder){ + $primary_folder->query()->inReplyTo($in_reply_to) + ->setFetchBody($this->getFetchBodyOption()) + ->leaveUnread()->get()->each(function($message) use(&$thread, $secondary_folder, $sent_folder){ + /** @var Message $message */ + $message->thread($sent_folder, $thread, $secondary_folder); + }); + } + + /** + * Fetch a partial thread by message id + * @param MessageCollection $thread + * @param string $message_id + * @param Folder $primary_folder + * @param Folder $secondary_folder + * @param Folder $sent_folder + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\GetMessagesFailedException + * @throws Exceptions\RuntimeException + */ + protected function fetchThreadByMessageId(&$thread, $message_id, $primary_folder, $secondary_folder, $sent_folder){ + $primary_folder->query()->messageId($message_id) + ->setFetchBody($this->getFetchBodyOption()) + ->leaveUnread()->get()->each(function($message) use(&$thread, $secondary_folder, $sent_folder){ + /** @var Message $message */ + $message->thread($sent_folder, $thread, $secondary_folder); + }); + } + + /** + * Copy the current Messages to a mailbox + * @param string $folder_path + * @param boolean $expunge + * + * @return null|Message + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\RuntimeException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageHeaderFetchingException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\MessageNotFoundException + */ + public function copy($folder_path, $expunge = false) { + $this->client->openFolder($folder_path); + $status = $this->client->getConnection()->examineFolder($folder_path); + + if (isset($status["uidnext"])) { + $next_uid = $status["uidnext"]; + + /** @var Folder $folder */ + $folder = $this->client->getFolderByPath($folder_path); + + $this->client->openFolder($this->folder_path); + if ($this->client->getConnection()->copyMessage($folder->path, $this->getSequenceId(), null, $this->sequence === IMAP::ST_UID) == true) { + return $this->fetchNewMail($folder, $next_uid, "copied", $expunge); + } + } + + return null; + } + + /** + * Move the current Messages to a mailbox + * @param string $folder_path + * @param boolean $expunge + * + * @return Message|null + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\FolderFetchingException + * @throws Exceptions\RuntimeException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageHeaderFetchingException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\MessageNotFoundException + */ + public function move($folder_path, $expunge = false) { + $this->client->openFolder($folder_path); + $status = $this->client->getConnection()->examineFolder($folder_path); + + if (isset($status["uidnext"])) { + $next_uid = $status["uidnext"]; + + /** @var Folder $folder */ + $folder = $this->client->getFolderByPath($folder_path); + + $this->client->openFolder($this->folder_path); + if ($this->client->getConnection()->moveMessage($folder->path, $this->getSequenceId(), null, $this->sequence === IMAP::ST_UID) == true) { + return $this->fetchNewMail($folder, $next_uid, "moved", $expunge); + } + } + + return null; + } + + /** + * Fetch a new message and fire a given event + * @param Folder $folder + * @param int $next_uid + * @param string $event + * @param boolean $expunge + * + * @return mixed + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\MessageNotFoundException + * @throws Exceptions\RuntimeException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageFlagException + * @throws MessageHeaderFetchingException + */ + protected function fetchNewMail($folder, $next_uid, $event, $expunge){ + if($expunge) $this->client->expunge(); + + $this->client->openFolder($folder->path); + + if ($this->sequence === IMAP::ST_UID) { + $sequence_id = $next_uid; + }else{ + $sequence_id = $this->client->getConnection()->getMessageNumber($next_uid); + } + + $message = $folder->query()->getMessage($sequence_id, null, $this->sequence); + $event = $this->getEvent("message", $event); + $event::dispatch($this, $message); + + return $message; + } + + /** + * Delete the current Message + * @param bool $expunge + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function delete($expunge = true) { + $status = $this->setFlag("Deleted"); + if($expunge) $this->client->expunge(); + + $event = $this->getEvent("message", "deleted"); + $event::dispatch($this); + + return $status; + } + + /** + * Restore a deleted Message + * @param boolean $expunge + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function restore($expunge = true) { + $status = $this->unsetFlag("Deleted"); + if($expunge) $this->client->expunge(); + + $event = $this->getEvent("message", "restored"); + $event::dispatch($this); + + return $status; + } + + /** + * Set a given flag + * @param string|array $flag + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws MessageFlagException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\RuntimeException + */ + public function setFlag($flag) { + $this->client->openFolder($this->folder_path); + $flag = "\\".trim(is_array($flag) ? implode(" \\", $flag) : $flag); + $sequence_id = $this->getSequenceId(); + try { + $status = $this->client->getConnection()->store([$flag], $sequence_id, $sequence_id, "+", true, $this->sequence === IMAP::ST_UID); + } catch (Exceptions\RuntimeException $e) { + throw new MessageFlagException("flag could not be set", 0, $e); + } + $this->parseFlags(); + + $event = $this->getEvent("flag", "new"); + $event::dispatch($this, $flag); + + return $status; + } + + /** + * Unset a given flag + * @param string|array $flag + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function unsetFlag($flag) { + $this->client->openFolder($this->folder_path); + + $flag = "\\".trim(is_array($flag) ? implode(" \\", $flag) : $flag); + $sequence_id = $this->getSequenceId(); + try { + $status = $this->client->getConnection()->store([$flag], $sequence_id, $sequence_id, "-", true, $this->sequence === IMAP::ST_UID); + } catch (Exceptions\RuntimeException $e) { + throw new MessageFlagException("flag could not be removed", 0, $e); + } + $this->parseFlags(); + + $event = $this->getEvent("flag", "deleted"); + $event::dispatch($this, $flag); + + return $status; + } + + /** + * Set a given flag + * @param string|array $flag + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws MessageFlagException + * @throws Exceptions\EventNotFoundException + * @throws Exceptions\RuntimeException + */ + public function addFlag($flag) { + return $this->setFlag($flag); + } + + /** + * Unset a given flag + * @param string|array $flag + * + * @return bool + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\EventNotFoundException + * @throws MessageFlagException + * @throws Exceptions\RuntimeException + */ + public function removeFlag($flag) { + return $this->unsetFlag($flag); + } + + /** + * Get all message attachments. + * + * @return AttachmentCollection + */ + public function getAttachments() { + return $this->attachments; + } + + /** + * Get all message attachments. + * + * @return AttachmentCollection + */ + public function attachments(){ + return $this->getAttachments(); + } + + /** + * Checks if there are any attachments present + * + * @return boolean + */ + public function hasAttachments() { + return $this->attachments->isEmpty() === false; + } + + /** + * Get the raw body + * + * @return string + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\RuntimeException + */ + public function getRawBody() { + if ($this->raw_body === null) { + $this->client->openFolder($this->folder_path); + + $this->raw_body = $this->structure->raw; + } + + return $this->raw_body; + } + + /** + * Get the message header + * + * @return Header + */ + public function getHeader() { + return $this->header; + } + + /** + * Get the current client + * + * @return Client + */ + public function getClient() { + return $this->client; + } + + /** + * Get the used fetch option + * + * @return integer + */ + public function getFetchOptions() { + return $this->fetch_options; + } + + /** + * Get the used fetch body option + * + * @return boolean + */ + public function getFetchBodyOption() { + return $this->fetch_body; + } + + /** + * Get the used fetch flags option + * + * @return boolean + */ + public function getFetchFlagsOption() { + return $this->fetch_flags; + } + + /** + * Get all available bodies + * + * @return array + */ + public function getBodies() { + return $this->bodies; + } + + /** + * Get all set flags + * + * @return FlagCollection + */ + public function getFlags() { + return $this->flags; + } + + /** + * Get all set flags + * + * @return FlagCollection + */ + public function flags(){ + return $this->getFlags(); + } + + /** + * Get the fetched structure + * + * @return Structure|null + */ + public function getStructure(){ + return $this->structure; + } + + /** + * Check if a message matches an other by comparing basic attributes + * + * @param null|Message $message + * @return boolean + */ + public function is(Message $message = null) { + if (is_null($message)) { + return false; + } + + return $this->uid == $message->uid + && $this->message_id->first() == $message->message_id->first() + && $this->subject->first() == $message->subject->first() + && $this->date->toDate()->eq($message->date); + } + + /** + * Get all message attributes + * + * @return array + */ + public function getAttributes(){ + return array_merge($this->attributes, $this->header->getAttributes()); + } + + /** + * Set the message mask + * @param $mask + * + * @return $this + */ + public function setMask($mask){ + if(class_exists($mask)){ + $this->mask = $mask; + } + + return $this; + } + + /** + * Get the used message mask + * + * @return string + */ + public function getMask(){ + return $this->mask; + } + + /** + * Get a masked instance by providing a mask name + * @param string|null $mask + * + * @return mixed + * @throws MaskNotFoundException + */ + public function mask($mask = null){ + $mask = $mask !== null ? $mask : $this->mask; + if(class_exists($mask)){ + return new $mask($this); + } + + throw new MaskNotFoundException("Unknown mask provided: ".$mask); + } + + /** + * Get the message path aka folder path + * + * @return string + */ + public function getFolderPath(){ + return $this->folder_path; + } + + /** + * Set the message path aka folder path + * @param $folder_path + * + * @return $this + */ + public function setFolderPath($folder_path){ + $this->folder_path = $folder_path; + + return $this; + } + + /** + * Set the config + * @param $config + * + * @return $this + */ + public function setConfig($config){ + $this->config = $config; + + return $this; + } + + /** + * Set the available flags + * @param $available_flags + * + * @return $this + */ + public function setAvailableFlags($available_flags){ + $this->available_flags = $available_flags; + + return $this; + } + + /** + * Set the attachment collection + * @param $attachments + * + * @return $this + */ + public function setAttachments($attachments){ + $this->attachments = $attachments; + + return $this; + } + + /** + * Set the flag collection + * @param $flags + * + * @return $this + */ + public function setFlags($flags){ + $this->flags = $flags; + + return $this; + } + + /** + * Set the client + * @param $client + * + * @return $this + * @throws Exceptions\RuntimeException + * @throws Exceptions\ConnectionFailedException + */ + public function setClient($client){ + $this->client = $client; + $this->client->openFolder($this->folder_path); + + return $this; + } + + /** + * Set the message number + * @param int $uid + * + * @return $this + * @throws Exceptions\MessageNotFoundException + * @throws Exceptions\ConnectionFailedException + */ + public function setUid($uid){ + $this->uid = $uid; + $this->msgn = $this->client->getConnection()->getMessageNumber($this->uid); + $this->msglist = null; + + return $this; + } + + /** + * Set the message number + * @param $msgn + * @param int|null $msglist + * + * @return $this + * @throws Exceptions\MessageNotFoundException + * @throws Exceptions\ConnectionFailedException + */ + public function setMsgn($msgn, $msglist = null){ + $this->msgn = $msgn; + $this->msglist = $msglist; + $this->uid = $this->client->getConnection()->getUid($this->msgn); + + return $this; + } + + /** + * Get the current sequence type + * + * @return int + */ + public function getSequence(){ + return $this->sequence; + } + + /** + * Set the sequence type + * + * @return int + */ + public function getSequenceId(){ + return $this->sequence === IMAP::ST_UID ? $this->uid : $this->msgn; + } + + /** + * Set the sequence id + * @param $uid + * @param int|null $msglist + * + * @throws Exceptions\ConnectionFailedException + * @throws Exceptions\MessageNotFoundException + */ + public function setSequenceId($uid, $msglist = null){ + if ($this->getSequence() === IMAP::ST_UID) { + $this->setUid($uid); + $this->setMsglist($msglist); + }else{ + $this->setMsgn($uid, $msglist); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Part.php b/htdocs/includes/webklex/php-imap/src/Part.php new file mode 100644 index 00000000000..a6a6748886f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Part.php @@ -0,0 +1,312 @@ +raw = $raw_part; + $this->header = $header; + $this->part_number = $part_number; + $this->parse(); + } + + /** + * Parse the raw parts + * + * @throws InvalidMessageDateException + */ + protected function parse(){ + if ($this->header === null) { + $body = $this->findHeaders(); + }else{ + $body = $this->raw; + } + + $this->parseDisposition(); + $this->parseDescription(); + $this->parseEncoding(); + + $this->charset = $this->header->get("charset"); + $this->name = $this->header->get("name"); + $this->filename = $this->header->get("filename"); + + if(!empty($this->header->get("id"))) { + $this->id = $this->header->get("id"); + } else if(!empty($this->header->get("x_attachment_id"))){ + $this->id = $this->header->get("x_attachment_id"); + } else if(!empty($this->header->get("content_id"))){ + $this->id = strtr($this->header->get("content_id"), [ + '<' => '', + '>' => '' + ]); + } + + $content_types = $this->header->get("content_type"); + if(!empty($content_types)){ + $this->subtype = $this->parseSubtype($content_types); + $content_type = $content_types; + if (is_array($content_types)) { + $content_type = $content_types[0]; + } + $parts = explode(';', $content_type); + $this->content_type = trim($parts[0]); + } + + + $this->content = trim(rtrim($body)); + $this->bytes = strlen($this->content); + } + + /** + * Find all available headers and return the left over body segment + * + * @return string + * @throws InvalidMessageDateException + */ + private function findHeaders(){ + $body = $this->raw; + while (($pos = strpos($body, "\r\n")) > 0) { + $body = substr($body, $pos + 2); + } + $headers = substr($this->raw, 0, strlen($body) * -1); + $body = substr($body, 0, -2); + + $this->header = new Header($headers); + + return (string) $body; + } + + /** + * Try to parse the subtype if any is present + * @param $content_type + * + * @return string + */ + private function parseSubtype($content_type){ + if (is_array($content_type)) { + foreach ($content_type as $part){ + if ((strpos($part, "/")) !== false){ + return $this->parseSubtype($part); + } + } + return null; + } + if (($pos = strpos($content_type, "/")) !== false){ + return substr($content_type, $pos + 1); + } + return null; + } + + /** + * Try to parse the disposition if any is present + */ + private function parseDisposition(){ + $content_disposition = $this->header->get("content_disposition"); + if($content_disposition !== null) { + $this->ifdisposition = true; + $this->disposition = (is_array($content_disposition)) ? implode(' ', $content_disposition) : $content_disposition; + } + } + + /** + * Try to parse the description if any is present + */ + private function parseDescription(){ + $content_description = $this->header->get("content_description"); + if($content_description !== null) { + $this->ifdescription = true; + $this->description = $content_description; + } + } + + /** + * Try to parse the encoding if any is present + */ + private function parseEncoding(){ + $encoding = $this->header->get("content_transfer_encoding"); + if($encoding !== null) { + switch (strtolower($encoding)) { + case "quoted-printable": + $this->encoding = IMAP::MESSAGE_ENC_QUOTED_PRINTABLE; + break; + case "base64": + $this->encoding = IMAP::MESSAGE_ENC_BASE64; + break; + case "7bit": + $this->encoding = IMAP::MESSAGE_ENC_7BIT; + break; + case "8bit": + $this->encoding = IMAP::MESSAGE_ENC_8BIT; + break; + case "binary": + $this->encoding = IMAP::MESSAGE_ENC_BINARY; + break; + default: + $this->encoding = IMAP::MESSAGE_ENC_OTHER; + break; + + } + } + } + + /** + * Check if the current part represents an attachment + * + * @return bool + */ + public function isAttachment(){ + $valid_disposition = in_array(strtolower($this->disposition), ClientManager::get('options.dispositions')); + + if ($this->type == IMAP::MESSAGE_TYPE_TEXT && ($this->ifdisposition == 0 || (empty($this->disposition))) && !$valid_disposition) { + if (($this->subtype == null || in_array((strtolower($this->subtype)), ["plain", "html"])) && $this->filename == null && $this->name == null) { + return false; + } + } + return true; + } + +} diff --git a/htdocs/includes/webklex/php-imap/src/Query/Query.php b/htdocs/includes/webklex/php-imap/src/Query/Query.php new file mode 100644 index 00000000000..b1806755f4d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Query/Query.php @@ -0,0 +1,842 @@ +setClient($client); + + $this->sequence = ClientManager::get('options.sequence', IMAP::ST_MSGN); + if (ClientManager::get('options.fetch') === IMAP::FT_PEEK) $this->leaveUnread(); + + if (ClientManager::get('options.fetch_order') === 'desc') { + $this->fetch_order = 'desc'; + } else { + $this->fetch_order = 'asc'; + } + + $this->date_format = ClientManager::get('date_format', 'd M y'); + $this->soft_fail = ClientManager::get('options.soft_fail', false); + + $this->charset = $charset; + $this->query = new Collection(); + $this->boot(); + } + + /** + * Instance boot method for additional functionality + */ + protected function boot() { + } + + /** + * Parse a given value + * @param mixed $value + * + * @return string + */ + protected function parse_value($value) { + switch (true) { + case $value instanceof Carbon: + $value = $value->format($this->date_format); + break; + } + + return (string)$value; + } + + /** + * Check if a given date is a valid carbon object and if not try to convert it + * @param string|Carbon $date + * + * @return Carbon + * @throws MessageSearchValidationException + */ + protected function parse_date($date) { + if ($date instanceof Carbon) return $date; + + try { + $date = Carbon::parse($date); + } catch (Exception $e) { + throw new MessageSearchValidationException(); + } + + return $date; + } + + /** + * Get the raw IMAP search query + * + * @return string + */ + public function generate_query() { + $query = ''; + $this->query->each(function($statement) use (&$query) { + if (count($statement) == 1) { + $query .= $statement[0]; + } else { + if ($statement[1] === null) { + $query .= $statement[0]; + } else { + $query .= $statement[0] . ' "' . $statement[1] . '"'; + } + } + $query .= ' '; + + }); + + $this->raw_query = trim($query); + + return $this->raw_query; + } + + /** + * Perform an imap search request + * + * @return Collection + * @throws GetMessagesFailedException + */ + protected function search() { + $this->generate_query(); + + try { + $available_messages = $this->client->getConnection()->search([$this->getRawQuery()], $this->sequence == IMAP::ST_UID); + return $available_messages !== false ? new Collection($available_messages) : new Collection(); + } catch (RuntimeException $e) { + throw new GetMessagesFailedException("failed to fetch messages", 0, $e); + } catch (ConnectionFailedException $e) { + throw new GetMessagesFailedException("failed to fetch messages", 0, $e); + } + } + + /** + * Count all available messages matching the current search criteria + * + * @return int + * @throws GetMessagesFailedException + */ + public function count() { + return $this->search()->count(); + } + + /** + * Fetch a given id collection + * @param Collection $available_messages + * + * @return array + * @throws ConnectionFailedException + * @throws RuntimeException + */ + protected function fetch($available_messages) { + if ($this->fetch_order === 'desc') { + $available_messages = $available_messages->reverse(); + } + + $uids = $available_messages->forPage($this->page, $this->limit)->toArray(); + $flags = $this->client->getConnection()->flags($uids, $this->sequence == IMAP::ST_UID); + $headers = $this->client->getConnection()->headers($uids, "RFC822", $this->sequence == IMAP::ST_UID); + + $contents = []; + if ($this->getFetchBody()) { + $contents = $this->client->getConnection()->content($uids, "RFC822", $this->sequence == IMAP::ST_UID); + } + + return [ + "uids" => $uids, + "flags" => $flags, + "headers" => $headers, + "contents" => $contents, + ]; + } + + /** + * Make a new message from given raw components + * @param integer $uid + * @param integer $msglist + * @param string $header + * @param string $content + * @param array $flags + * + * @return Message|null + * @throws ConnectionFailedException + * @throws EventNotFoundException + * @throws GetMessagesFailedException + * @throws ReflectionException + */ + protected function make($uid, $msglist, $header, $content, $flags){ + try { + return Message::make($uid, $msglist, $this->getClient(), $header, $content, $flags, $this->getFetchOptions(), $this->sequence); + }catch (MessageNotFoundException $e) { + $this->setError($uid, $e); + }catch (RuntimeException $e) { + $this->setError($uid, $e); + }catch (MessageFlagException $e) { + $this->setError($uid, $e); + }catch (InvalidMessageDateException $e) { + $this->setError($uid, $e); + }catch (MessageContentFetchingException $e) { + $this->setError($uid, $e); + } + + $this->handleException($uid); + + return null; + } + + /** + * Get the message key for a given message + * @param string $message_key + * @param integer $msglist + * @param Message $message + * + * @return string + */ + protected function getMessageKey($message_key, $msglist, $message){ + switch ($message_key) { + case 'number': + $key = $message->getMessageNo(); + break; + case 'list': + $key = $msglist; + break; + case 'uid': + $key = $message->getUid(); + break; + default: + $key = $message->getMessageId(); + break; + } + return (string)$key; + } + + /** + * Populate a given id collection and receive a fully fetched message collection + * @param Collection $available_messages + * + * @return MessageCollection + * @throws ConnectionFailedException + * @throws EventNotFoundException + * @throws GetMessagesFailedException + * @throws ReflectionException + * @throws RuntimeException + */ + protected function populate($available_messages) { + $messages = MessageCollection::make([]); + + $messages->total($available_messages->count()); + + $message_key = ClientManager::get('options.message_key'); + + $raw_messages = $this->fetch($available_messages); + + $msglist = 0; + foreach ($raw_messages["headers"] as $uid => $header) { + $content = isset($raw_messages["contents"][$uid]) ? $raw_messages["contents"][$uid] : ""; + $flag = isset($raw_messages["flags"][$uid]) ? $raw_messages["flags"][$uid] : []; + + $message = $this->make($uid, $msglist, $header, $content, $flag); + if ($message !== null) { + $key = $this->getMessageKey($message_key, $msglist, $message); + $messages->put("$key", $message); + } + $msglist++; + } + + return $messages; + } + + /** + * Fetch the current query and return all found messages + * + * @return MessageCollection + * @throws GetMessagesFailedException + */ + public function get() { + $available_messages = $this->search(); + + try { + if ($available_messages->count() > 0) { + return $this->populate($available_messages); + } + return MessageCollection::make([]); + } catch (Exception $e) { + throw new GetMessagesFailedException($e->getMessage(), 0, $e); + } + } + + /** + * Fetch the current query as chunked requests + * @param callable $callback + * @param int $chunk_size + * @param int $start_chunk + * + * @throws ConnectionFailedException + * @throws EventNotFoundException + * @throws GetMessagesFailedException + * @throws ReflectionException + * @throws RuntimeException + */ + public function chunked($callback, $chunk_size = 10, $start_chunk = 1) { + $available_messages = $this->search(); + if (($available_messages_count = $available_messages->count()) > 0) { + $old_limit = $this->limit; + $old_page = $this->page; + + $this->limit = $chunk_size; + $this->page = $start_chunk; + do { + $messages = $this->populate($available_messages); + $callback($messages, $this->page); + $this->page++; + } while ($this->limit * $this->page <= $available_messages_count); + $this->limit = $old_limit; + $this->page = $old_page; + } + } + + /** + * Paginate the current query + * @param int $per_page Results you which to receive per page + * @param int|null $page The current page you are on (e.g. 0, 1, 2, ...) use `null` to enable auto mode + * @param string $page_name The page name / uri parameter used for the generated links and the auto mode + * + * @return LengthAwarePaginator + * @throws GetMessagesFailedException + */ + public function paginate($per_page = 5, $page = null, $page_name = 'imap_page') { + if ( + $page === null + && isset($_GET[$page_name]) + && $_GET[$page_name] > 0 + ) { + $this->page = intval($_GET[$page_name]); + } elseif ($page > 0) { + $this->page = $page; + } + + $this->limit = $per_page; + + return $this->get()->paginate($per_page, $this->page, $page_name, true); + } + + /** + * Get a new Message instance + * @param int $uid + * @param int|null $msglist + * @param int|null $sequence + * + * @return Message + * @throws ConnectionFailedException + * @throws RuntimeException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageHeaderFetchingException + * @throws EventNotFoundException + * @throws MessageFlagException + * @throws MessageNotFoundException + */ + public function getMessage($uid, $msglist = null, $sequence = null) { + return new Message($uid, $msglist, $this->getClient(), $this->getFetchOptions(), $this->getFetchBody(), $this->getFetchFlags(), $sequence ? $sequence : $this->sequence); + } + + /** + * Get a message by its message number + * @param $msgn + * @param int|null $msglist + * + * @return Message + * @throws ConnectionFailedException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageHeaderFetchingException + * @throws RuntimeException + * @throws EventNotFoundException + * @throws MessageFlagException + * @throws MessageNotFoundException + */ + public function getMessageByMsgn($msgn, $msglist = null) { + return $this->getMessage($msgn, $msglist, IMAP::ST_MSGN); + } + + /** + * Get a message by its uid + * @param $uid + * + * @return Message + * @throws ConnectionFailedException + * @throws InvalidMessageDateException + * @throws MessageContentFetchingException + * @throws MessageHeaderFetchingException + * @throws RuntimeException + * @throws EventNotFoundException + * @throws MessageFlagException + * @throws MessageNotFoundException + */ + public function getMessageByUid($uid) { + return $this->getMessage($uid, null, IMAP::ST_UID); + } + + /** + * Don't mark messages as read when fetching + * + * @return $this + */ + public function leaveUnread() { + $this->setFetchOptions(IMAP::FT_PEEK); + + return $this; + } + + /** + * Mark all messages as read when fetching + * + * @return $this + */ + public function markAsRead() { + $this->setFetchOptions(IMAP::FT_UID); + + return $this; + } + + /** + * Set the sequence type + * @param int $sequence + * + * @return $this + */ + public function setSequence($sequence) { + $this->sequence = $sequence != IMAP::ST_MSGN ? IMAP::ST_UID : $sequence; + + return $this; + } + + /** + * @return Client + * @throws ConnectionFailedException + */ + public function getClient() { + $this->client->checkConnection(); + return $this->client; + } + + /** + * Set the limit and page for the current query + * @param int $limit + * @param int $page + * + * @return $this + */ + public function limit($limit, $page = 1) { + if ($page >= 1) $this->page = $page; + $this->limit = $limit; + + return $this; + } + + /** + * @return Collection + */ + public function getQuery() { + return $this->query; + } + + /** + * @param array $query + * @return Query + */ + public function setQuery($query) { + $this->query = new Collection($query); + return $this; + } + + /** + * @return string + */ + public function getRawQuery() { + return $this->raw_query; + } + + /** + * @param string $raw_query + * @return Query + */ + public function setRawQuery($raw_query) { + $this->raw_query = $raw_query; + return $this; + } + + /** + * @return string + */ + public function getCharset() { + return $this->charset; + } + + /** + * @param string $charset + * @return Query + */ + public function setCharset($charset) { + $this->charset = $charset; + return $this; + } + + /** + * @param Client $client + * @return Query + */ + public function setClient(Client $client) { + $this->client = $client; + return $this; + } + + /** + * @return int + */ + public function getLimit() { + return $this->limit; + } + + /** + * @param int $limit + * @return Query + */ + public function setLimit($limit) { + $this->limit = $limit <= 0 ? null : $limit; + return $this; + } + + /** + * @return int + */ + public function getPage() { + return $this->page; + } + + /** + * @param int $page + * @return Query + */ + public function setPage($page) { + $this->page = $page; + return $this; + } + + /** + * @param boolean $fetch_options + * @return Query + */ + public function setFetchOptions($fetch_options) { + $this->fetch_options = $fetch_options; + return $this; + } + + /** + * @param boolean $fetch_options + * @return Query + */ + public function fetchOptions($fetch_options) { + return $this->setFetchOptions($fetch_options); + } + + /** + * @return int + */ + public function getFetchOptions() { + return $this->fetch_options; + } + + /** + * @return boolean + */ + public function getFetchBody() { + return $this->fetch_body; + } + + /** + * @param boolean $fetch_body + * @return Query + */ + public function setFetchBody($fetch_body) { + $this->fetch_body = $fetch_body; + return $this; + } + + /** + * @param boolean $fetch_body + * @return Query + */ + public function fetchBody($fetch_body) { + return $this->setFetchBody($fetch_body); + } + + /** + * @return int + */ + public function getFetchFlags() { + return $this->fetch_flags; + } + + /** + * @param int $fetch_flags + * @return Query + */ + public function setFetchFlags($fetch_flags) { + $this->fetch_flags = $fetch_flags; + return $this; + } + + /** + * @param string $fetch_order + * @return Query + */ + public function setFetchOrder($fetch_order) { + $fetch_order = strtolower($fetch_order); + + if (in_array($fetch_order, ['asc', 'desc'])) { + $this->fetch_order = $fetch_order; + } + + return $this; + } + + /** + * @param string $fetch_order + * @return Query + */ + public function fetchOrder($fetch_order) { + return $this->setFetchOrder($fetch_order); + } + + /** + * @return string + */ + public function getFetchOrder() { + return $this->fetch_order; + } + + /** + * @return Query + */ + public function setFetchOrderAsc() { + return $this->setFetchOrder('asc'); + } + + /** + * @return Query + */ + public function fetchOrderAsc() { + return $this->setFetchOrderAsc(); + } + + /** + * @return Query + */ + public function setFetchOrderDesc() { + return $this->setFetchOrder('desc'); + } + + /** + * @return Query + */ + public function fetchOrderDesc() { + return $this->setFetchOrderDesc(); + } + + /** + * @var boolean $state + * + * @return Query + */ + public function softFail($state = true) { + return $this->setSoftFail($state); + } + + /** + * @var boolean $state + * + * @return Query + */ + public function setSoftFail($state = true) { + $this->soft_fail = $state; + + return $this; + } + + /** + * @return boolean + */ + public function getSoftFail() { + return $this->soft_fail; + } + + /** + * Handle the exception for a given uid + * @param integer $uid + * + * @throws GetMessagesFailedException + */ + protected function handleException($uid) { + if ($this->soft_fail === false && $this->hasError($uid)) { + $error = $this->getError($uid); + throw new GetMessagesFailedException($error->getMessage(), 0, $error); + } + } + + /** + * Add a new error to the error holder + * @param integer $uid + * @param Exception $error + */ + protected function setError($uid, $error) { + $this->errors[$uid] = $error; + } + + /** + * Check if there are any errors / exceptions present + * @var integer|null $uid + * + * @return boolean + */ + public function hasErrors($uid = null){ + if ($uid !== null) { + return $this->hasError($uid); + } + return count($this->errors) > 0; + } + + /** + * Check if there is an error / exception present + * @var integer $uid + * + * @return boolean + */ + public function hasError($uid){ + return isset($this->errors[$uid]); + } + + /** + * Get all available errors / exceptions + * + * @return array + */ + public function errors(){ + return $this->getErrors(); + } + + /** + * Get all available errors / exceptions + * + * @return array + */ + public function getErrors(){ + return $this->errors; + } + + /** + * Get a specific error / exception + * @var integer $uid + * + * @return Exception|null + */ + public function error($uid){ + return $this->getError($uid); + } + + /** + * Get a specific error / exception + * @var integer $uid + * + * @return Exception|null + */ + public function getError($uid){ + if ($this->hasError($uid)) { + return $this->errors[$uid]; + } + return null; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php b/htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php new file mode 100755 index 00000000000..4d23be866e7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Query/WhereQuery.php @@ -0,0 +1,551 @@ +whereNot(); + $name = substr($name, 3); + } + + if (strpos(strtolower($name), "where") === false) { + $method = 'where' . ucfirst($name); + } else { + $method = lcfirst($name); + } + + if (method_exists($this, $method) === true) { + return call_user_func_array([$that, $method], $arguments); + } + + throw new MethodNotFoundException("Method " . self::class . '::' . $method . '() is not supported'); + } + + /** + * Validate a given criteria + * @param $criteria + * + * @return string + * @throws InvalidWhereQueryCriteriaException + */ + protected function validate_criteria($criteria) { + $criteria = strtoupper($criteria); + if (substr($criteria, 0, 7) === "CUSTOM ") { + return substr($criteria, 7); + } + if (in_array($criteria, $this->available_criteria) === false) { + throw new InvalidWhereQueryCriteriaException(); + } + + return $criteria; + } + + + /** + * Register search parameters + * @param mixed $criteria + * @param null $value + * + * @return $this + * @throws InvalidWhereQueryCriteriaException + * + * Examples: + * $query->from("someone@email.tld")->seen(); + * $query->whereFrom("someone@email.tld")->whereSeen(); + * $query->where([["FROM" => "someone@email.tld"], ["SEEN"]]); + * $query->where(["FROM" => "someone@email.tld"])->where(["SEEN"]); + * $query->where(["FROM" => "someone@email.tld", "SEEN"]); + * $query->where("FROM", "someone@email.tld")->where("SEEN"); + */ + public function where($criteria, $value = null): WhereQuery { + if (is_array($criteria)) { + foreach ($criteria as $key => $value) { + if (is_numeric($key)) { + $this->where($value); + }else{ + $this->where($key, $value); + } + } + } else { + $this->push_search_criteria($criteria, $value); + } + + return $this; + } + + /** + * Push a given search criteria and value pair to the search query + * @param $criteria string + * @param $value mixed + * + * @throws InvalidWhereQueryCriteriaException + */ + protected function push_search_criteria(string $criteria, $value){ + $criteria = $this->validate_criteria($criteria); + $value = $this->parse_value($value); + + if ($value === null || $value === '') { + $this->query->push([$criteria]); + } else { + $this->query->push([$criteria, $value]); + } + } + + /** + * @param Closure $closure + * + * @return $this + */ + public function orWhere(Closure $closure = null) { + $this->query->push(['OR']); + if ($closure !== null) $closure($this); + + return $this; + } + + /** + * @param Closure $closure + * + * @return $this + */ + public function andWhere(Closure $closure = null) { + $this->query->push(['AND']); + if ($closure !== null) $closure($this); + + return $this; + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereAll() { + return $this->where('ALL'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereAnswered() { + return $this->where('ANSWERED'); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereBcc($value) { + return $this->where('BCC', $value); + } + + /** + * @param mixed $value + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + * @throws MessageSearchValidationException + */ + public function whereBefore($value) { + $date = $this->parse_date($value); + return $this->where('BEFORE', $date); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereBody($value) { + return $this->where('BODY', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereCc($value) { + return $this->where('CC', $value); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereDeleted() { + return $this->where('DELETED'); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereFlagged($value) { + return $this->where('FLAGGED', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereFrom($value) { + return $this->where('FROM', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereKeyword($value) { + return $this->where('KEYWORD', $value); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereNew() { + return $this->where('NEW'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereNot() { + return $this->where('NOT'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereOld() { + return $this->where('OLD'); + } + + /** + * @param mixed $value + * + * @return WhereQuery + * @throws MessageSearchValidationException + * @throws InvalidWhereQueryCriteriaException + */ + public function whereOn($value) { + $date = $this->parse_date($value); + return $this->where('ON', $date); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereRecent() { + return $this->where('RECENT'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereSeen() { + return $this->where('SEEN'); + } + + /** + * @param mixed $value + * + * @return WhereQuery + * @throws MessageSearchValidationException + * @throws InvalidWhereQueryCriteriaException + */ + public function whereSince($value) { + $date = $this->parse_date($value); + return $this->where('SINCE', $date); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereSubject($value) { + return $this->where('SUBJECT', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereText($value) { + return $this->where('TEXT', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereTo($value) { + return $this->where('TO', $value); + } + + /** + * @param string $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUnkeyword($value) { + return $this->where('UNKEYWORD', $value); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUnanswered() { + return $this->where('UNANSWERED'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUndeleted() { + return $this->where('UNDELETED'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUnflagged() { + return $this->where('UNFLAGGED'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUnseen() { + return $this->where('UNSEEN'); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereNoXSpam() { + return $this->where("CUSTOM X-Spam-Flag NO"); + } + + /** + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereIsXSpam() { + return $this->where("CUSTOM X-Spam-Flag YES"); + } + + /** + * Search for a specific header value + * @param $header + * @param $value + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereHeader($header, $value) { + return $this->where("CUSTOM HEADER $header $value"); + } + + /** + * Search for a specific message id + * @param $messageId + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereMessageId($messageId) { + return $this->whereHeader("Message-ID", $messageId); + } + + /** + * Search for a specific message id + * @param $messageId + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereInReplyTo($messageId) { + return $this->whereHeader("In-Reply-To", $messageId); + } + + /** + * @param $country_code + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereLanguage($country_code) { + return $this->where("Content-Language $country_code"); + } + + /** + * Get message be it UID. + * + * @param int|string $uid + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUid($uid) + { + return $this->where('UID', $uid); + } + + /** + * Get messages by their UIDs. + * + * @param array $uids + * + * @return WhereQuery + * @throws InvalidWhereQueryCriteriaException + */ + public function whereUidIn($uids) + { + $uids = implode(',', $uids); + return $this->where('UID', $uids); + } + + /** + * Apply the callback if the given "value" is truthy. + * copied from @url https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Traits/Conditionable.php + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + + * @return $this|mixed + */ + public function when($value, $callback, $default = null) { + if ($value) { + return $callback($this, $value) ?: $this; + } elseif ($default) { + return $default($this, $value) ?: $this; + } + + return $this; + } + + /** + * Apply the callback if the given "value" is falsy. + * copied from @url https://github.com/laravel/framework/blob/8.x/src/Illuminate/Support/Traits/Conditionable.php + * + * @param mixed $value + * @param callable $callback + * @param callable|null $default + + * @return $this|mixed + */ + public function unless($value, $callback, $default = null) { + if (! $value) { + return $callback($this, $value) ?: $this; + } elseif ($default) { + return $default($this, $value) ?: $this; + } + + return $this; + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Structure.php b/htdocs/includes/webklex/php-imap/src/Structure.php new file mode 100644 index 00000000000..a6e65b934a0 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Structure.php @@ -0,0 +1,174 @@ +raw = $raw_structure; + $this->header = $header; + $this->config = ClientManager::get('options'); + $this->parse(); + } + + /** + * Parse the given raw structure + * + * @throws MessageContentFetchingException + * @throws InvalidMessageDateException + */ + protected function parse(){ + $this->findContentType(); + $this->parts = $this->find_parts(); + } + + /** + * Determine the message content type + */ + public function findContentType(){ + $content_type = $this->header->get("content_type"); + $content_type = (is_array($content_type)) ? implode(' ', $content_type) : $content_type; + if(stripos($content_type, 'multipart') === 0) { + $this->type = IMAP::MESSAGE_TYPE_MULTIPART; + }else{ + $this->type = IMAP::MESSAGE_TYPE_TEXT; + } + } + + /** + * Find all available headers and return the left over body segment + * @var string $context + * @var integer $part_number + * + * @return Part[] + * @throws InvalidMessageDateException + */ + private function parsePart($context, $part_number = 0){ + $body = $context; + while (($pos = strpos($body, "\r\n")) > 0) { + $body = substr($body, $pos + 2); + } + $headers = substr($context, 0, strlen($body) * -1); + $body = substr($body, 0, -2); + + $headers = new Header($headers); + if (($boundary = $headers->getBoundary()) !== null) { + return $this->detectParts($boundary, $body, $part_number); + } + return [new Part($body, $headers, $part_number)]; + } + + /** + * @param string $boundary + * @param string $context + * @param int $part_number + * + * @return array + * @throws InvalidMessageDateException + */ + private function detectParts($boundary, $context, $part_number = 0){ + $base_parts = explode( $boundary, $context); + $final_parts = []; + foreach($base_parts as $ctx) { + $ctx = substr($ctx, 2); + if ($ctx !== "--" && $ctx != "") { + $parts = $this->parsePart($ctx, $part_number); + foreach ($parts as $part) { + $final_parts[] = $part; + $part_number = $part->part_number; + } + $part_number++; + } + } + return $final_parts; + } + + /** + * Find all available parts + * + * @return array + * @throws MessageContentFetchingException + * @throws InvalidMessageDateException + */ + public function find_parts(){ + if($this->type === IMAP::MESSAGE_TYPE_MULTIPART) { + if (($boundary = $this->header->getBoundary()) === null) { + throw new MessageContentFetchingException("no content found", 0); + } + + return $this->detectParts($boundary, $this->raw); + } + + return [new Part($this->raw, $this->header)]; + } + + /** + * Try to find a boundary if possible + * + * @return string|null + * @Depricated since version 2.4.4 + */ + public function getBoundary(){ + return $this->header->getBoundary(); + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Support/AttachmentCollection.php b/htdocs/includes/webklex/php-imap/src/Support/AttachmentCollection.php new file mode 100644 index 00000000000..8b3f9c32213 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Support/AttachmentCollection.php @@ -0,0 +1,22 @@ +parent->content); + } + + /** + * Get an base64 image src string + * + * @return string|null + */ + public function getImageSrc() { + return 'data:'.$this->parent->content_type.';base64,'.$this->getContentBase64Encoded(); + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php b/htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php new file mode 100755 index 00000000000..7483bd5e5b2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Support/Masks/Mask.php @@ -0,0 +1,137 @@ +parent = $parent; + + if(method_exists($this->parent, 'getAttributes')){ + $this->attributes = array_merge($this->attributes, $this->parent->getAttributes()); + } + + $this->boot(); + } + + /** + * Boot method made to be used by any custom mask + */ + protected function boot(){} + + /** + * Call dynamic attribute setter and getter methods and inherit the parent calls + * @param string $method + * @param array $arguments + * + * @return mixed + * @throws MethodNotFoundException + */ + public function __call($method, $arguments) { + if(strtolower(substr($method, 0, 3)) === 'get') { + $name = Str::snake(substr($method, 3)); + + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + }elseif (strtolower(substr($method, 0, 3)) === 'set') { + $name = Str::snake(substr($method, 3)); + + if(isset($this->attributes[$name])) { + $this->attributes[$name] = array_pop($arguments); + + return $this->attributes[$name]; + } + + } + + if(method_exists($this->parent, $method) === true){ + return call_user_func_array([$this->parent, $method], $arguments); + } + + throw new MethodNotFoundException("Method ".self::class.'::'.$method.'() is not supported'); + } + + /** + * Magic setter + * @param $name + * @param $value + * + * @return mixed + */ + public function __set($name, $value) { + $this->attributes[$name] = $value; + + return $this->attributes[$name]; + } + + /** + * Magic getter + * @param $name + * + * @return mixed|null + */ + public function __get($name) { + if(isset($this->attributes[$name])) { + return $this->attributes[$name]; + } + + return null; + } + + /** + * Get the parent instance + * + * @return mixed + */ + public function getParent(){ + return $this->parent; + } + + /** + * Get all available attributes + * + * @return array + */ + public function getAttributes(){ + return $this->attributes; + } + +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Support/Masks/MessageMask.php b/htdocs/includes/webklex/php-imap/src/Support/Masks/MessageMask.php new file mode 100644 index 00000000000..d072e8b6456 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Support/Masks/MessageMask.php @@ -0,0 +1,86 @@ +parent->getBodies(); + if (!isset($bodies['html'])) { + return null; + } + + if(is_object($bodies['html']) && property_exists($bodies['html'], 'content')) { + return $bodies['html']->content; + } + return $bodies['html']; + } + + /** + * Get the Message html body filtered by an optional callback + * @param callable|bool $callback + * + * @return string|null + */ + public function getCustomHTMLBody($callback = false) { + $body = $this->getHtmlBody(); + if($body === null) return null; + + if ($callback !== false) { + $aAttachment = $this->parent->getAttachments(); + $aAttachment->each(function($oAttachment) use(&$body, $callback) { + /** @var Attachment $oAttachment */ + if(is_callable($callback)) { + $body = $callback($body, $oAttachment); + }elseif(is_string($callback)) { + call_user_func($callback, [$body, $oAttachment]); + } + }); + } + + return $body; + } + + /** + * Get the Message html body with embedded base64 images + * the resulting $body. + * + * @return string|null + */ + public function getHTMLBodyWithEmbeddedBase64Images() { + return $this->getCustomHTMLBody(function($body, $oAttachment){ + /** @var Attachment $oAttachment */ + if ($oAttachment->id) { + $body = str_replace('cid:'.$oAttachment->id, 'data:'.$oAttachment->getContentType().';base64, '.base64_encode($oAttachment->getContent()), $body); + } + + return $body; + }); + } +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/Support/MessageCollection.php b/htdocs/includes/webklex/php-imap/src/Support/MessageCollection.php new file mode 100644 index 00000000000..6d1249fae52 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Support/MessageCollection.php @@ -0,0 +1,22 @@ +total ? $this->total : $this->count(); + + $results = !$prepaginated && $total ? $this->forPage($page, $per_page) : $this->all(); + + return $this->paginator($results, $total, $per_page, $page, [ + 'path' => Paginator::resolveCurrentPath(), + 'pageName' => $page_name, + ]); + } + + /** + * Create a new length-aware paginator instance. + * @param array $items + * @param int $total + * @param int $per_page + * @param int|null $current_page + * @param array $options + * + * @return LengthAwarePaginator + */ + protected function paginator($items, $total, $per_page, $current_page, array $options) { + return new LengthAwarePaginator($items, $total, $per_page, $current_page, $options); + } + + /** + * Get and set the total amount + * @param null $total + * + * @return int|null + */ + public function total($total = null) { + if($total === null) { + return $this->total; + } + + return $this->total = $total; + } +} diff --git a/htdocs/includes/webklex/php-imap/src/Traits/HasEvents.php b/htdocs/includes/webklex/php-imap/src/Traits/HasEvents.php new file mode 100644 index 00000000000..bc7ae68eb42 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/Traits/HasEvents.php @@ -0,0 +1,77 @@ +events[$section])) { + $this->events[$section][$event] = $class; + } + } + + /** + * Set all events + * @param $events + */ + public function setEvents($events) { + $this->events = $events; + } + + /** + * Get a specific event callback + * @param $section + * @param $event + * + * @return Event + * @throws EventNotFoundException + */ + public function getEvent($section, $event) { + if (isset($this->events[$section])) { + return $this->events[$section][$event]; + } + throw new EventNotFoundException(); + } + + /** + * Get all events + * + * @return array + */ + public function getEvents(){ + return $this->events; + } + +} \ No newline at end of file diff --git a/htdocs/includes/webklex/php-imap/src/config/imap.php b/htdocs/includes/webklex/php-imap/src/config/imap.php new file mode 100644 index 00000000000..1b605ee0465 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/src/config/imap.php @@ -0,0 +1,216 @@ + 'd-M-Y', + + /* + |-------------------------------------------------------------------------- + | Default account + |-------------------------------------------------------------------------- + | + | The default account identifier. It will be used as default for any missing account parameters. + | If however the default account is missing a parameter the package default will be used. + | Set to 'false' [boolean] to disable this functionality. + | + */ + 'default' => 'default', + + /* + |-------------------------------------------------------------------------- + | Available accounts + |-------------------------------------------------------------------------- + | + | Please list all IMAP accounts which you are planning to use within the + | array below. + | + */ + 'accounts' => [ + + 'default' => [// account identifier + 'host' => 'localhost', + 'port' => 993, + 'protocol' => 'imap', //might also use imap, [pop3 or nntp (untested)] + 'encryption' => 'ssl', // Supported: false, 'ssl', 'tls' + 'validate_cert' => true, + 'username' => 'root@example.com', + 'password' => '', + 'authentication' => null, + 'proxy' => [ + 'socket' => null, + 'request_fulluri' => false, + 'username' => null, + 'password' => null, + ], + "timeout" => 30 + ], + + /* + 'gmail' => [ // account identifier + 'host' => 'imap.gmail.com', + 'port' => 993, + 'encryption' => 'ssl', + 'validate_cert' => true, + 'username' => 'example@gmail.com', + 'password' => 'PASSWORD', + 'authentication' => 'oauth', + ], + + 'another' => [ // account identifier + 'host' => '', + 'port' => 993, + 'encryption' => false, + 'validate_cert' => true, + 'username' => '', + 'password' => '', + 'authentication' => null, + ] + */ + ], + + /* + |-------------------------------------------------------------------------- + | Available IMAP options + |-------------------------------------------------------------------------- + | + | Available php imap config parameters are listed below + | -Delimiter (optional): + | This option is only used when calling $oClient-> + | You can use any supported char such as ".", "/", (...) + | -Fetch option: + | IMAP::FT_UID - Message marked as read by fetching the body message + | IMAP::FT_PEEK - Fetch the message without setting the "seen" flag + | -Fetch sequence id: + | IMAP::ST_UID - Fetch message components using the message uid + | IMAP::ST_MSGN - Fetch message components using the message number + | -Body download option + | Default TRUE + | -Flag download option + | Default TRUE + | -Soft fail + | Default FALSE - Set to TRUE if you want to ignore certain exception while fetching bulk messages + | -RFC822 + | Default TRUE - Set to FALSE to prevent the usage of \imap_rfc822_parse_headers(). + | See https://github.com/Webklex/php-imap/issues/115 for more information. + | -Message key identifier option + | You can choose between the following: + | 'id' - Use the MessageID as array key (default, might cause hickups with yahoo mail) + | 'number' - Use the message number as array key (isn't always unique and can cause some interesting behavior) + | 'list' - Use the message list number as array key (incrementing integer (does not always start at 0 or 1) + | 'uid' - Use the message uid as array key (isn't always unique and can cause some interesting behavior) + | -Fetch order + | 'asc' - Order all messages ascending (probably results in oldest first) + | 'desc' - Order all messages descending (probably results in newest first) + | -Disposition types potentially considered an attachment + | Default ['attachment', 'inline'] + | -Common folders + | Default folder locations and paths assumed if none is provided + | -Open IMAP options: + | DISABLE_AUTHENTICATOR - Disable authentication properties. + | Use 'GSSAPI' if you encounter the following + | error: "Kerberos error: No credentials cache + | file found (try running kinit) (...)" + | or ['GSSAPI','PLAIN'] if you are using outlook mail + | -Decoder options (currently only the message subject and attachment name decoder can be set) + | 'utf-8' - Uses imap_utf8($string) to decode a string + | 'mimeheader' - Uses mb_decode_mimeheader($string) to decode a string + | + */ + 'options' => [ + 'delimiter' => '/', + 'fetch' => \Webklex\PHPIMAP\IMAP::FT_PEEK, + 'sequence' => \Webklex\PHPIMAP\IMAP::ST_MSGN, + 'fetch_body' => true, + 'fetch_flags' => true, + 'soft_fail' => false, + 'rfc822' => true, + 'message_key' => 'list', + 'fetch_order' => 'asc', + 'dispositions' => ['attachment', 'inline'], + 'common_folders' => [ + "root" => "INBOX", + "junk" => "INBOX/Junk", + "draft" => "INBOX/Drafts", + "sent" => "INBOX/Sent", + "trash" => "INBOX/Trash", + ], + 'decoder' => [ + 'message' => 'utf-8', // mimeheader + 'attachment' => 'utf-8' // mimeheader + ], + 'open' => [ + // 'DISABLE_AUTHENTICATOR' => 'GSSAPI' + ] + ], + + /* + |-------------------------------------------------------------------------- + | Available flags + |-------------------------------------------------------------------------- + | + | List all available / supported flags. Set to null to accept all given flags. + */ + 'flags' => ['recent', 'flagged', 'answered', 'deleted', 'seen', 'draft'], + + /* + |-------------------------------------------------------------------------- + | Available events + |-------------------------------------------------------------------------- + | + */ + 'events' => [ + "message" => [ + 'new' => \Webklex\PHPIMAP\Events\MessageNewEvent::class, + 'moved' => \Webklex\PHPIMAP\Events\MessageMovedEvent::class, + 'copied' => \Webklex\PHPIMAP\Events\MessageCopiedEvent::class, + 'deleted' => \Webklex\PHPIMAP\Events\MessageDeletedEvent::class, + 'restored' => \Webklex\PHPIMAP\Events\MessageRestoredEvent::class, + ], + "folder" => [ + 'new' => \Webklex\PHPIMAP\Events\FolderNewEvent::class, + 'moved' => \Webklex\PHPIMAP\Events\FolderMovedEvent::class, + 'deleted' => \Webklex\PHPIMAP\Events\FolderDeletedEvent::class, + ], + "flag" => [ + 'new' => \Webklex\PHPIMAP\Events\FlagNewEvent::class, + 'deleted' => \Webklex\PHPIMAP\Events\FlagDeletedEvent::class, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Available masking options + |-------------------------------------------------------------------------- + | + | By using your own custom masks you can implement your own methods for + | a better and faster access and less code to write. + | + | Checkout the two examples custom_attachment_mask and custom_message_mask + | for a quick start. + | + | The provided masks below are used as the default masks. + */ + 'masks' => [ + 'message' => \Webklex\PHPIMAP\Support\Masks\MessageMask::class, + 'attachment' => \Webklex\PHPIMAP\Support\Masks\AttachmentMask::class + ] +]; diff --git a/htdocs/includes/webklex/php-imap/vendor/autoload.php b/htdocs/includes/webklex/php-imap/vendor/autoload.php new file mode 100644 index 00000000000..f4e36963c6a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/autoload.php @@ -0,0 +1,74 @@ + __DIR__ . '/illuminate/macroable', + 1 => __DIR__ . '/illuminate/collections', + 2 => __DIR__ . '/illuminate/support', + 3 => __DIR__ . '/illuminate/contracts' + ); + foreach($listofdir as $dir) { + if (file_exists($dir . '/' . $class_name . '.php')) { + require_once $dir . '/' . $class_name . '.php'; + break; + } + } + } + + $preg_match = preg_match('/^Illuminate\\\Contracts\\\/', $class_name); + if (1 === $preg_match) { + $class_name = preg_replace('/\\\/', '/', $class_name); + $class_name = preg_replace('/^Illuminate\\/Contracts\\//', '', $class_name); + $listofdir = array( + 0 => __DIR__ . '/illuminate/contracts' + ); + foreach($listofdir as $dir) { + if (file_exists($dir . '/' . $class_name . '.php')) { + require_once $dir . '/' . $class_name . '.php'; + break; + } + } + } + + $preg_match = preg_match('/^Carbon\\\/', $class_name); + if (1 === $preg_match) { + $class_name = preg_replace('/\\\/', '/', $class_name); + $class_name = preg_replace('/^Carbon\\//', '', $class_name); + $listofdir = array( + 0 => __DIR__ . '/nesbot/carbon/src/Carbon' + ); + foreach($listofdir as $dir) { + if (file_exists($dir . '/' . $class_name . '.php')) { + require_once $dir . '/' . $class_name . '.php'; + break; + } + } + } + +}); diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/ClassLoader.php b/htdocs/includes/webklex/php-imap/vendor/composer/ClassLoader.php new file mode 100644 index 00000000000..afef3fa2ad8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/ClassLoader.php @@ -0,0 +1,572 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/InstalledVersions.php b/htdocs/includes/webklex/php-imap/vendor/composer/InstalledVersions.php new file mode 100644 index 00000000000..c6b54af7ba2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/InstalledVersions.php @@ -0,0 +1,352 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + * + * @final + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/LICENSE b/htdocs/includes/webklex/php-imap/vendor/composer/LICENSE new file mode 100644 index 00000000000..f27399a042d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/autoload_classmap.php b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_classmap.php new file mode 100644 index 00000000000..9a7ddd418e5 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_classmap.php @@ -0,0 +1,460 @@ + $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php', + 'File_Iterator' => $vendorDir . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => $vendorDir . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => $vendorDir . '/phpunit/php-file-iterator/src/Factory.php', + 'PHPUnit\\Framework\\Assert' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php', + 'PHPUnit\\Framework\\BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\Test' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/Test.php', + 'PHPUnit\\Framework\\TestCase' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit\\Framework\\TestSuite' => $vendorDir . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php', + 'PHPUnit_Exception' => $vendorDir . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => $vendorDir . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => $vendorDir . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => $vendorDir . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => $vendorDir . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => $vendorDir . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => $vendorDir . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => $vendorDir . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNull' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsTrue' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => $vendorDir . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_Error' => $vendorDir . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => $vendorDir . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => $vendorDir . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => $vendorDir . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetError' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => $vendorDir . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => $vendorDir . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => $vendorDir . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => $vendorDir . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => $vendorDir . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => $vendorDir . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => $vendorDir . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => $vendorDir . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => $vendorDir . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => $vendorDir . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => $vendorDir . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => $vendorDir . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => $vendorDir . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => $vendorDir . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Runner_BaseTestRunner' => $vendorDir . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => $vendorDir . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => $vendorDir . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => $vendorDir . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => $vendorDir . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => $vendorDir . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => $vendorDir . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => $vendorDir . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => $vendorDir . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ErrorHandler' => $vendorDir . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => $vendorDir . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => $vendorDir . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => $vendorDir . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => $vendorDir . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => $vendorDir . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => $vendorDir . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => $vendorDir . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_PHP' => $vendorDir . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => $vendorDir . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => $vendorDir . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => $vendorDir . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => $vendorDir . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => $vendorDir . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => $vendorDir . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestSuiteIterator' => $vendorDir . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => $vendorDir . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => $vendorDir . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_CodeCoverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'PHP_CodeCoverage_Driver' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php', + 'PHP_CodeCoverage_Driver_HHVM' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php', + 'PHP_CodeCoverage_Driver_PHPDBG' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php', + 'PHP_CodeCoverage_Driver_Xdebug' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php', + 'PHP_CodeCoverage_Exception' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php', + 'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php', + 'PHP_CodeCoverage_Filter' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php', + 'PHP_CodeCoverage_Report_Clover' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php', + 'PHP_CodeCoverage_Report_Crap4j' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php', + 'PHP_CodeCoverage_Report_Factory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php', + 'PHP_CodeCoverage_Report_HTML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php', + 'PHP_CodeCoverage_Report_HTML_Renderer' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php', + 'PHP_CodeCoverage_Report_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php', + 'PHP_CodeCoverage_Report_Node_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php', + 'PHP_CodeCoverage_Report_Node_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php', + 'PHP_CodeCoverage_Report_Node_Iterator' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php', + 'PHP_CodeCoverage_Report_PHP' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php', + 'PHP_CodeCoverage_Report_Text' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php', + 'PHP_CodeCoverage_Report_XML' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php', + 'PHP_CodeCoverage_Report_XML_Directory' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php', + 'PHP_CodeCoverage_Report_XML_File' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php', + 'PHP_CodeCoverage_Report_XML_File_Coverage' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php', + 'PHP_CodeCoverage_Report_XML_File_Method' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php', + 'PHP_CodeCoverage_Report_XML_File_Report' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php', + 'PHP_CodeCoverage_Report_XML_File_Unit' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php', + 'PHP_CodeCoverage_Report_XML_Node' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php', + 'PHP_CodeCoverage_Report_XML_Project' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php', + 'PHP_CodeCoverage_Report_XML_Tests' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php', + 'PHP_CodeCoverage_Report_XML_Totals' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php', + 'PHP_CodeCoverage_Util' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php', + 'PHP_CodeCoverage_Util_InvalidArgumentHelper' => $vendorDir . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php', + 'PHP_Timer' => $vendorDir . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => $vendorDir . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => $vendorDir . '/phpunit/php-token-stream/src/Token.php', + 'PhpToken' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => $vendorDir . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => $vendorDir . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => $vendorDir . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => $vendorDir . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => $vendorDir . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => $vendorDir . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => $vendorDir . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => $vendorDir . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => $vendorDir . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => $vendorDir . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => $vendorDir . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => $vendorDir . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => $vendorDir . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => $vendorDir . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => $vendorDir . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => $vendorDir . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => $vendorDir . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => $vendorDir . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => $vendorDir . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => $vendorDir . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => $vendorDir . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => $vendorDir . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => $vendorDir . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => $vendorDir . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => $vendorDir . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => $vendorDir . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => $vendorDir . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => $vendorDir . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => $vendorDir . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => $vendorDir . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\RecursionContext\\Context' => $vendorDir . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => $vendorDir . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => $vendorDir . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php', + 'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'Text_Template' => $vendorDir . '/phpunit/php-text-template/src/Template.php', + 'UnhandledMatchError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', +); diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/autoload_files.php b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_files.php new file mode 100644 index 00000000000..c4795d09367 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_files.php @@ -0,0 +1,15 @@ + $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', + '60799491728b879e74601d83e38b2cad' => $vendorDir . '/illuminate/collections/helpers.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', + '72579e7bd17821bb1321b87411366eae' => $vendorDir . '/illuminate/support/helpers.php', + '6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php', +); diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/autoload_namespaces.php b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_namespaces.php new file mode 100644 index 00000000000..15a2ff3ad6d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/voku/portable-ascii/src/voku'), + 'phpDocumentor\\Reflection\\' => array($vendorDir . '/phpdocumentor/reflection-common/src', $vendorDir . '/phpdocumentor/type-resolver/src', $vendorDir . '/phpdocumentor/reflection-docblock/src'), + 'Webmozart\\Assert\\' => array($vendorDir . '/webmozart/assert/src'), + 'Webklex\\PHPIMAP\\' => array($baseDir . '/src'), + 'Tests\\' => array($baseDir . '/tests'), + 'Symfony\\Polyfill\\Php80\\' => array($vendorDir . '/symfony/polyfill-php80'), + 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), + 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), + 'Symfony\\Contracts\\Translation\\' => array($vendorDir . '/symfony/translation-contracts'), + 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), + 'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'), + 'Symfony\\Component\\HttpFoundation\\' => array($vendorDir . '/symfony/http-foundation'), + 'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'), + 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'Prophecy\\' => array($vendorDir . '/phpspec/prophecy/src/Prophecy'), + 'Illuminate\\Support\\' => array($vendorDir . '/illuminate/macroable', $vendorDir . '/illuminate/collections', $vendorDir . '/illuminate/support'), + 'Illuminate\\Pagination\\' => array($vendorDir . '/illuminate/pagination'), + 'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'), + 'Doctrine\\Instantiator\\' => array($vendorDir . '/doctrine/instantiator/src/Doctrine/Instantiator'), + 'Doctrine\\Inflector\\' => array($vendorDir . '/doctrine/inflector/lib/Doctrine/Inflector'), + 'Carbon\\' => array($vendorDir . '/nesbot/carbon/src/Carbon'), +); diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/autoload_real.php b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_real.php new file mode 100644 index 00000000000..794a31affba --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_real.php @@ -0,0 +1,57 @@ +register(true); + + $includeFiles = \Composer\Autoload\ComposerStaticInit4da13270269c89a28e472e1f7324e6d1::$files; + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire4da13270269c89a28e472e1f7324e6d1($fileIdentifier, $file); + } + + return $loader; + } +} + +/** + * @param string $fileIdentifier + * @param string $file + * @return void + */ +function composerRequire4da13270269c89a28e472e1f7324e6d1($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/autoload_static.php b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_static.php new file mode 100644 index 00000000000..db56e4812b6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/autoload_static.php @@ -0,0 +1,623 @@ + __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', + '60799491728b879e74601d83e38b2cad' => __DIR__ . '/..' . '/illuminate/collections/helpers.php', + '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', + '72579e7bd17821bb1321b87411366eae' => __DIR__ . '/..' . '/illuminate/support/helpers.php', + '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'v' => + array ( + 'voku\\' => 5, + ), + 'p' => + array ( + 'phpDocumentor\\Reflection\\' => 25, + ), + 'W' => + array ( + 'Webmozart\\Assert\\' => 17, + 'Webklex\\PHPIMAP\\' => 16, + ), + 'T' => + array ( + 'Tests\\' => 6, + ), + 'S' => + array ( + 'Symfony\\Polyfill\\Php80\\' => 23, + 'Symfony\\Polyfill\\Mbstring\\' => 26, + 'Symfony\\Polyfill\\Ctype\\' => 23, + 'Symfony\\Contracts\\Translation\\' => 30, + 'Symfony\\Component\\Yaml\\' => 23, + 'Symfony\\Component\\Translation\\' => 30, + 'Symfony\\Component\\HttpFoundation\\' => 33, + ), + 'P' => + array ( + 'Psr\\SimpleCache\\' => 16, + 'Psr\\Container\\' => 14, + 'Prophecy\\' => 9, + ), + 'I' => + array ( + 'Illuminate\\Support\\' => 19, + 'Illuminate\\Pagination\\' => 22, + 'Illuminate\\Contracts\\' => 21, + ), + 'D' => + array ( + 'Doctrine\\Instantiator\\' => 22, + 'Doctrine\\Inflector\\' => 19, + ), + 'C' => + array ( + 'Carbon\\' => 7, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'voku\\' => + array ( + 0 => __DIR__ . '/..' . '/voku/portable-ascii/src/voku', + ), + 'phpDocumentor\\Reflection\\' => + array ( + 0 => __DIR__ . '/..' . '/phpdocumentor/reflection-common/src', + 1 => __DIR__ . '/..' . '/phpdocumentor/type-resolver/src', + 2 => __DIR__ . '/..' . '/phpdocumentor/reflection-docblock/src', + ), + 'Webmozart\\Assert\\' => + array ( + 0 => __DIR__ . '/..' . '/webmozart/assert/src', + ), + 'Webklex\\PHPIMAP\\' => + array ( + 0 => __DIR__ . '/../..' . '/src', + ), + 'Tests\\' => + array ( + 0 => __DIR__ . '/../..' . '/tests', + ), + 'Symfony\\Polyfill\\Php80\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-php80', + ), + 'Symfony\\Polyfill\\Mbstring\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', + ), + 'Symfony\\Polyfill\\Ctype\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', + ), + 'Symfony\\Contracts\\Translation\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/translation-contracts', + ), + 'Symfony\\Component\\Yaml\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/yaml', + ), + 'Symfony\\Component\\Translation\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/translation', + ), + 'Symfony\\Component\\HttpFoundation\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/http-foundation', + ), + 'Psr\\SimpleCache\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/simple-cache/src', + ), + 'Psr\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/container/src', + ), + 'Prophecy\\' => + array ( + 0 => __DIR__ . '/..' . '/phpspec/prophecy/src/Prophecy', + ), + 'Illuminate\\Support\\' => + array ( + 0 => __DIR__ . '/..' . '/illuminate/macroable', + 1 => __DIR__ . '/..' . '/illuminate/collections', + 2 => __DIR__ . '/..' . '/illuminate/support', + ), + 'Illuminate\\Pagination\\' => + array ( + 0 => __DIR__ . '/..' . '/illuminate/pagination', + ), + 'Illuminate\\Contracts\\' => + array ( + 0 => __DIR__ . '/..' . '/illuminate/contracts', + ), + 'Doctrine\\Instantiator\\' => + array ( + 0 => __DIR__ . '/..' . '/doctrine/instantiator/src/Doctrine/Instantiator', + ), + 'Doctrine\\Inflector\\' => + array ( + 0 => __DIR__ . '/..' . '/doctrine/inflector/lib/Doctrine/Inflector', + ), + 'Carbon\\' => + array ( + 0 => __DIR__ . '/..' . '/nesbot/carbon/src/Carbon', + ), + ); + + public static $classMap = array ( + 'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php', + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + 'File_Iterator' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Iterator.php', + 'File_Iterator_Facade' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Facade.php', + 'File_Iterator_Factory' => __DIR__ . '/..' . '/phpunit/php-file-iterator/src/Factory.php', + 'PHPUnit\\Framework\\Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Assert.php', + 'PHPUnit\\Framework\\AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/AssertionFailedError.php', + 'PHPUnit\\Framework\\BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/BaseTestListener.php', + 'PHPUnit\\Framework\\Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/Test.php', + 'PHPUnit\\Framework\\TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestCase.php', + 'PHPUnit\\Framework\\TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestListener.php', + 'PHPUnit\\Framework\\TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/ForwardCompatibility/TestSuite.php', + 'PHPUnit_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Exception.php', + 'PHPUnit_Extensions_GroupTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/GroupTestSuite.php', + 'PHPUnit_Extensions_PhptTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestCase.php', + 'PHPUnit_Extensions_PhptTestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/PhptTestSuite.php', + 'PHPUnit_Extensions_RepeatedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/RepeatedTest.php', + 'PHPUnit_Extensions_TestDecorator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TestDecorator.php', + 'PHPUnit_Extensions_TicketListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Extensions/TicketListener.php', + 'PHPUnit_Framework_Assert' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Assert.php', + 'PHPUnit_Framework_AssertionFailedError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/AssertionFailedError.php', + 'PHPUnit_Framework_BaseTestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/BaseTestListener.php', + 'PHPUnit_Framework_CodeCoverageException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/CodeCoverageException.php', + 'PHPUnit_Framework_Constraint' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint.php', + 'PHPUnit_Framework_Constraint_And' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/And.php', + 'PHPUnit_Framework_Constraint_ArrayHasKey' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArrayHasKey.php', + 'PHPUnit_Framework_Constraint_ArraySubset' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ArraySubset.php', + 'PHPUnit_Framework_Constraint_Attribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Attribute.php', + 'PHPUnit_Framework_Constraint_Callback' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Callback.php', + 'PHPUnit_Framework_Constraint_ClassHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasAttribute.php', + 'PHPUnit_Framework_Constraint_ClassHasStaticAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ClassHasStaticAttribute.php', + 'PHPUnit_Framework_Constraint_Composite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Composite.php', + 'PHPUnit_Framework_Constraint_Count' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Count.php', + 'PHPUnit_Framework_Constraint_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Exception.php', + 'PHPUnit_Framework_Constraint_ExceptionCode' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionCode.php', + 'PHPUnit_Framework_Constraint_ExceptionMessage' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessage.php', + 'PHPUnit_Framework_Constraint_ExceptionMessageRegExp' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ExceptionMessageRegExp.php', + 'PHPUnit_Framework_Constraint_FileExists' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/FileExists.php', + 'PHPUnit_Framework_Constraint_GreaterThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/GreaterThan.php', + 'PHPUnit_Framework_Constraint_IsAnything' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsAnything.php', + 'PHPUnit_Framework_Constraint_IsEmpty' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEmpty.php', + 'PHPUnit_Framework_Constraint_IsEqual' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsEqual.php', + 'PHPUnit_Framework_Constraint_IsFalse' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsFalse.php', + 'PHPUnit_Framework_Constraint_IsIdentical' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsIdentical.php', + 'PHPUnit_Framework_Constraint_IsInstanceOf' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsInstanceOf.php', + 'PHPUnit_Framework_Constraint_IsJson' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsJson.php', + 'PHPUnit_Framework_Constraint_IsNull' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsNull.php', + 'PHPUnit_Framework_Constraint_IsTrue' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsTrue.php', + 'PHPUnit_Framework_Constraint_IsType' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/IsType.php', + 'PHPUnit_Framework_Constraint_JsonMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches.php', + 'PHPUnit_Framework_Constraint_JsonMatches_ErrorMessageProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/JsonMatches/ErrorMessageProvider.php', + 'PHPUnit_Framework_Constraint_LessThan' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/LessThan.php', + 'PHPUnit_Framework_Constraint_Not' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Not.php', + 'PHPUnit_Framework_Constraint_ObjectHasAttribute' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/ObjectHasAttribute.php', + 'PHPUnit_Framework_Constraint_Or' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Or.php', + 'PHPUnit_Framework_Constraint_PCREMatch' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/PCREMatch.php', + 'PHPUnit_Framework_Constraint_SameSize' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/SameSize.php', + 'PHPUnit_Framework_Constraint_StringContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringContains.php', + 'PHPUnit_Framework_Constraint_StringEndsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringEndsWith.php', + 'PHPUnit_Framework_Constraint_StringMatches' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringMatches.php', + 'PHPUnit_Framework_Constraint_StringStartsWith' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/StringStartsWith.php', + 'PHPUnit_Framework_Constraint_TraversableContains' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php', + 'PHPUnit_Framework_Constraint_TraversableContainsOnly' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/TraversableContainsOnly.php', + 'PHPUnit_Framework_Constraint_Xor' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Constraint/Xor.php', + 'PHPUnit_Framework_Error' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error.php', + 'PHPUnit_Framework_Error_Deprecated' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Deprecated.php', + 'PHPUnit_Framework_Error_Notice' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Notice.php', + 'PHPUnit_Framework_Error_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Error/Warning.php', + 'PHPUnit_Framework_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Exception.php', + 'PHPUnit_Framework_ExceptionWrapper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExceptionWrapper.php', + 'PHPUnit_Framework_ExpectationFailedException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/ExpectationFailedException.php', + 'PHPUnit_Framework_IncompleteTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTest.php', + 'PHPUnit_Framework_IncompleteTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestCase.php', + 'PHPUnit_Framework_IncompleteTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/IncompleteTestError.php', + 'PHPUnit_Framework_InvalidCoversTargetError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetError.php', + 'PHPUnit_Framework_InvalidCoversTargetException' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/InvalidCoversTargetException.php', + 'PHPUnit_Framework_MockObject_BadMethodCallException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/BadMethodCallException.php', + 'PHPUnit_Framework_MockObject_Builder_Identity' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Identity.php', + 'PHPUnit_Framework_MockObject_Builder_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Builder_Match' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Match.php', + 'PHPUnit_Framework_MockObject_Builder_MethodNameMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/MethodNameMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Namespace' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Namespace.php', + 'PHPUnit_Framework_MockObject_Builder_ParametersMatch' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/ParametersMatch.php', + 'PHPUnit_Framework_MockObject_Builder_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Builder/Stub.php', + 'PHPUnit_Framework_MockObject_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/Exception.php', + 'PHPUnit_Framework_MockObject_Generator' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php', + 'PHPUnit_Framework_MockObject_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation.php', + 'PHPUnit_Framework_MockObject_InvocationMocker' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/InvocationMocker.php', + 'PHPUnit_Framework_MockObject_Invocation_Object' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Object.php', + 'PHPUnit_Framework_MockObject_Invocation_Static' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invocation/Static.php', + 'PHPUnit_Framework_MockObject_Invokable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Invokable.php', + 'PHPUnit_Framework_MockObject_Matcher' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyInvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyInvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_AnyParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/AnyParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/ConsecutiveParameters.php', + 'PHPUnit_Framework_MockObject_Matcher_Invocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Invocation.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtIndex' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtIndex.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtLeastOnce' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtLeastOnce.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedAtMostCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedAtMostCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedCount' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedCount.php', + 'PHPUnit_Framework_MockObject_Matcher_InvokedRecorder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/InvokedRecorder.php', + 'PHPUnit_Framework_MockObject_Matcher_MethodName' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/MethodName.php', + 'PHPUnit_Framework_MockObject_Matcher_Parameters' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php', + 'PHPUnit_Framework_MockObject_Matcher_StatelessInvocation' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/StatelessInvocation.php', + 'PHPUnit_Framework_MockObject_MockBuilder' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockBuilder.php', + 'PHPUnit_Framework_MockObject_MockObject' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/MockObject.php', + 'PHPUnit_Framework_MockObject_RuntimeException' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Exception/RuntimeException.php', + 'PHPUnit_Framework_MockObject_Stub' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub.php', + 'PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ConsecutiveCalls.php', + 'PHPUnit_Framework_MockObject_Stub_Exception' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Exception.php', + 'PHPUnit_Framework_MockObject_Stub_MatcherCollection' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/MatcherCollection.php', + 'PHPUnit_Framework_MockObject_Stub_Return' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/Return.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnArgument' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnArgument.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnCallback' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnCallback.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnSelf' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnSelf.php', + 'PHPUnit_Framework_MockObject_Stub_ReturnValueMap' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Stub/ReturnValueMap.php', + 'PHPUnit_Framework_MockObject_Verifiable' => __DIR__ . '/..' . '/phpunit/phpunit-mock-objects/src/Framework/MockObject/Verifiable.php', + 'PHPUnit_Framework_OutputError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/OutputError.php', + 'PHPUnit_Framework_RiskyTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTest.php', + 'PHPUnit_Framework_RiskyTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/RiskyTestError.php', + 'PHPUnit_Framework_SelfDescribing' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SelfDescribing.php', + 'PHPUnit_Framework_SkippedTest' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTest.php', + 'PHPUnit_Framework_SkippedTestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestCase.php', + 'PHPUnit_Framework_SkippedTestError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestError.php', + 'PHPUnit_Framework_SkippedTestSuiteError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SkippedTestSuiteError.php', + 'PHPUnit_Framework_SyntheticError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/SyntheticError.php', + 'PHPUnit_Framework_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Test.php', + 'PHPUnit_Framework_TestCase' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestCase.php', + 'PHPUnit_Framework_TestFailure' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestFailure.php', + 'PHPUnit_Framework_TestListener' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestListener.php', + 'PHPUnit_Framework_TestResult' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestResult.php', + 'PHPUnit_Framework_TestSuite' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite.php', + 'PHPUnit_Framework_TestSuite_DataProvider' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/TestSuite/DataProvider.php', + 'PHPUnit_Framework_UnintentionallyCoveredCodeError' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/UnintentionallyCoveredCodeError.php', + 'PHPUnit_Framework_Warning' => __DIR__ . '/..' . '/phpunit/phpunit/src/Framework/Warning.php', + 'PHPUnit_Runner_BaseTestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/BaseTestRunner.php', + 'PHPUnit_Runner_Exception' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Exception.php', + 'PHPUnit_Runner_Filter_Factory' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Factory.php', + 'PHPUnit_Runner_Filter_GroupFilterIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group.php', + 'PHPUnit_Runner_Filter_Group_Exclude' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Exclude.php', + 'PHPUnit_Runner_Filter_Group_Include' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Group/Include.php', + 'PHPUnit_Runner_Filter_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Filter/Test.php', + 'PHPUnit_Runner_StandardTestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/StandardTestSuiteLoader.php', + 'PHPUnit_Runner_TestSuiteLoader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/TestSuiteLoader.php', + 'PHPUnit_Runner_Version' => __DIR__ . '/..' . '/phpunit/phpunit/src/Runner/Version.php', + 'PHPUnit_TextUI_Command' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/Command.php', + 'PHPUnit_TextUI_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/ResultPrinter.php', + 'PHPUnit_TextUI_TestRunner' => __DIR__ . '/..' . '/phpunit/phpunit/src/TextUI/TestRunner.php', + 'PHPUnit_Util_Blacklist' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Blacklist.php', + 'PHPUnit_Util_Configuration' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Configuration.php', + 'PHPUnit_Util_ErrorHandler' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/ErrorHandler.php', + 'PHPUnit_Util_Fileloader' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Fileloader.php', + 'PHPUnit_Util_Filesystem' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filesystem.php', + 'PHPUnit_Util_Filter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Filter.php', + 'PHPUnit_Util_Getopt' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Getopt.php', + 'PHPUnit_Util_GlobalState' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/GlobalState.php', + 'PHPUnit_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/InvalidArgumentHelper.php', + 'PHPUnit_Util_Log_JSON' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JSON.php', + 'PHPUnit_Util_Log_JUnit' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/JUnit.php', + 'PHPUnit_Util_Log_TAP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Log/TAP.php', + 'PHPUnit_Util_PHP' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP.php', + 'PHPUnit_Util_PHP_Default' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Default.php', + 'PHPUnit_Util_PHP_Windows' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/PHP/Windows.php', + 'PHPUnit_Util_Printer' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Printer.php', + 'PHPUnit_Util_Regex' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Regex.php', + 'PHPUnit_Util_String' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/String.php', + 'PHPUnit_Util_Test' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Test.php', + 'PHPUnit_Util_TestDox_NamePrettifier' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/NamePrettifier.php', + 'PHPUnit_Util_TestDox_ResultPrinter' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter.php', + 'PHPUnit_Util_TestDox_ResultPrinter_HTML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/HTML.php', + 'PHPUnit_Util_TestDox_ResultPrinter_Text' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestDox/ResultPrinter/Text.php', + 'PHPUnit_Util_TestSuiteIterator' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/TestSuiteIterator.php', + 'PHPUnit_Util_Type' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/Type.php', + 'PHPUnit_Util_XML' => __DIR__ . '/..' . '/phpunit/phpunit/src/Util/XML.php', + 'PHP_CodeCoverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage.php', + 'PHP_CodeCoverage_Driver' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver.php', + 'PHP_CodeCoverage_Driver_HHVM' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/HHVM.php', + 'PHP_CodeCoverage_Driver_PHPDBG' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/PHPDBG.php', + 'PHP_CodeCoverage_Driver_Xdebug' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Driver/Xdebug.php', + 'PHP_CodeCoverage_Exception' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception.php', + 'PHP_CodeCoverage_Exception_UnintentionallyCoveredCode' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Exception/UnintentionallyCoveredCode.php', + 'PHP_CodeCoverage_Filter' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Filter.php', + 'PHP_CodeCoverage_Report_Clover' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Clover.php', + 'PHP_CodeCoverage_Report_Crap4j' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Crap4j.php', + 'PHP_CodeCoverage_Report_Factory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Factory.php', + 'PHP_CodeCoverage_Report_HTML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML.php', + 'PHP_CodeCoverage_Report_HTML_Renderer' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_Dashboard' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Dashboard.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/Directory.php', + 'PHP_CodeCoverage_Report_HTML_Renderer_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/HTML/Renderer/File.php', + 'PHP_CodeCoverage_Report_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php', + 'PHP_CodeCoverage_Report_Node_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php', + 'PHP_CodeCoverage_Report_Node_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/File.php', + 'PHP_CodeCoverage_Report_Node_Iterator' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Iterator.php', + 'PHP_CodeCoverage_Report_PHP' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/PHP.php', + 'PHP_CodeCoverage_Report_Text' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/Text.php', + 'PHP_CodeCoverage_Report_XML' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML.php', + 'PHP_CodeCoverage_Report_XML_Directory' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Directory.php', + 'PHP_CodeCoverage_Report_XML_File' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File.php', + 'PHP_CodeCoverage_Report_XML_File_Coverage' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Coverage.php', + 'PHP_CodeCoverage_Report_XML_File_Method' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Method.php', + 'PHP_CodeCoverage_Report_XML_File_Report' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Report.php', + 'PHP_CodeCoverage_Report_XML_File_Unit' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/File/Unit.php', + 'PHP_CodeCoverage_Report_XML_Node' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Node.php', + 'PHP_CodeCoverage_Report_XML_Project' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Project.php', + 'PHP_CodeCoverage_Report_XML_Tests' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Tests.php', + 'PHP_CodeCoverage_Report_XML_Totals' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Report/XML/Totals.php', + 'PHP_CodeCoverage_Util' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util.php', + 'PHP_CodeCoverage_Util_InvalidArgumentHelper' => __DIR__ . '/..' . '/phpunit/php-code-coverage/src/CodeCoverage/Util/InvalidArgumentHelper.php', + 'PHP_Timer' => __DIR__ . '/..' . '/phpunit/php-timer/src/Timer.php', + 'PHP_Token' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScope' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_TokenWithScopeAndVisibility' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ABSTRACT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AMPERSAND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AND_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ARRAY_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ASYNC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_AWAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BACKTICK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BAD_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOLEAN_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BOOL_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_BREAK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CALLABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CARET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CASE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CATCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CHARACTER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLASS_NAME_CONSTANT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLONE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CLOSE_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COALESCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMA' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_COMPILER_HALT_OFFSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONCAT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONSTANT_ENCAPSED_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CONTINUE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_CURLY_OPEN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DEFAULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DIV_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOC_COMMENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOLLAR_OPEN_CURLY_BRACES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_COLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_DOUBLE_QUOTES' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELLIPSIS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ELSEIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EMPTY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENCAPSED_AND_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDDECLARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDFOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDIF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDSWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENDWHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_END_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ENUM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EQUALS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EVAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXCLAMATION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_EXTENDS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FINALLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FOREACH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_FUNC_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GLOBAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GOTO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_HALT_COMPILER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IMPLEMENTS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INCLUDE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INLINE_HTML' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTANCEOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INSTEADOF' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INTERFACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_INT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ISSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_GREATER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_NOT_IDENTICAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_IS_SMALLER_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Includes' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_JOIN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_ARROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_CP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LAMBDA_OP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LINE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LIST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LNUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_AND' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_OR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LOGICAL_XOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_METHOD_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MINUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MOD_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MULT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_MUL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NAMESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NEW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NS_SEPARATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NULLSAFE_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_NUM_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OBJECT_OPERATOR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_ONUMBER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_BRACKET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_CURLY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_SQUARE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OPEN_TAG_WITH_ECHO' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_OR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PAAMAYIM_NEKUDOTAYIM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PERCENT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PIPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PLUS_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_POW_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRINT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PRIVATE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PROTECTED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_PUBLIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_QUESTION_MARK' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_REQUIRE_ONCE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_RETURN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SEMICOLON' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SHAPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SL_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SPACESHIP' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_START_HEREDOC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STATIC' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_STRING_VARNAME' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SUPER' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_SWITCH' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_Stream' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream.php', + 'PHP_Token_Stream_CachingFactory' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token/Stream/CachingFactory.php', + 'PHP_Token_THROW' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TILDE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRAIT_C' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TRY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_TYPELIST_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_UNSET_CAST' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_USE_FUNCTION' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VAR' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_VARIABLE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHERE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHILE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_WHITESPACE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_ATTRIBUTE' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CATEGORY_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_CHILDREN' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_LABEL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_REQUIRED' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_GT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TAG_LT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XHP_TEXT' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_XOR_EQUAL' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PHP_Token_YIELD_FROM' => __DIR__ . '/..' . '/phpunit/php-token-stream/src/Token.php', + 'PhpToken' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/PhpToken.php', + 'SebastianBergmann\\Comparator\\ArrayComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ArrayComparator.php', + 'SebastianBergmann\\Comparator\\Comparator' => __DIR__ . '/..' . '/sebastian/comparator/src/Comparator.php', + 'SebastianBergmann\\Comparator\\ComparisonFailure' => __DIR__ . '/..' . '/sebastian/comparator/src/ComparisonFailure.php', + 'SebastianBergmann\\Comparator\\DOMNodeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DOMNodeComparator.php', + 'SebastianBergmann\\Comparator\\DateTimeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DateTimeComparator.php', + 'SebastianBergmann\\Comparator\\DoubleComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/DoubleComparator.php', + 'SebastianBergmann\\Comparator\\ExceptionComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ExceptionComparator.php', + 'SebastianBergmann\\Comparator\\Factory' => __DIR__ . '/..' . '/sebastian/comparator/src/Factory.php', + 'SebastianBergmann\\Comparator\\MockObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/MockObjectComparator.php', + 'SebastianBergmann\\Comparator\\NumericComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/NumericComparator.php', + 'SebastianBergmann\\Comparator\\ObjectComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ObjectComparator.php', + 'SebastianBergmann\\Comparator\\ResourceComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ResourceComparator.php', + 'SebastianBergmann\\Comparator\\ScalarComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/ScalarComparator.php', + 'SebastianBergmann\\Comparator\\SplObjectStorageComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/SplObjectStorageComparator.php', + 'SebastianBergmann\\Comparator\\TypeComparator' => __DIR__ . '/..' . '/sebastian/comparator/src/TypeComparator.php', + 'SebastianBergmann\\Diff\\Chunk' => __DIR__ . '/..' . '/sebastian/diff/src/Chunk.php', + 'SebastianBergmann\\Diff\\Diff' => __DIR__ . '/..' . '/sebastian/diff/src/Diff.php', + 'SebastianBergmann\\Diff\\Differ' => __DIR__ . '/..' . '/sebastian/diff/src/Differ.php', + 'SebastianBergmann\\Diff\\LCS\\LongestCommonSubsequence' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/LongestCommonSubsequence.php', + 'SebastianBergmann\\Diff\\LCS\\MemoryEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/MemoryEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\LCS\\TimeEfficientImplementation' => __DIR__ . '/..' . '/sebastian/diff/src/LCS/TimeEfficientLongestCommonSubsequenceImplementation.php', + 'SebastianBergmann\\Diff\\Line' => __DIR__ . '/..' . '/sebastian/diff/src/Line.php', + 'SebastianBergmann\\Diff\\Parser' => __DIR__ . '/..' . '/sebastian/diff/src/Parser.php', + 'SebastianBergmann\\Environment\\Console' => __DIR__ . '/..' . '/sebastian/environment/src/Console.php', + 'SebastianBergmann\\Environment\\Runtime' => __DIR__ . '/..' . '/sebastian/environment/src/Runtime.php', + 'SebastianBergmann\\Exporter\\Exporter' => __DIR__ . '/..' . '/sebastian/exporter/src/Exporter.php', + 'SebastianBergmann\\GlobalState\\Blacklist' => __DIR__ . '/..' . '/sebastian/global-state/src/Blacklist.php', + 'SebastianBergmann\\GlobalState\\CodeExporter' => __DIR__ . '/..' . '/sebastian/global-state/src/CodeExporter.php', + 'SebastianBergmann\\GlobalState\\Exception' => __DIR__ . '/..' . '/sebastian/global-state/src/Exception.php', + 'SebastianBergmann\\GlobalState\\Restorer' => __DIR__ . '/..' . '/sebastian/global-state/src/Restorer.php', + 'SebastianBergmann\\GlobalState\\RuntimeException' => __DIR__ . '/..' . '/sebastian/global-state/src/RuntimeException.php', + 'SebastianBergmann\\GlobalState\\Snapshot' => __DIR__ . '/..' . '/sebastian/global-state/src/Snapshot.php', + 'SebastianBergmann\\RecursionContext\\Context' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Context.php', + 'SebastianBergmann\\RecursionContext\\Exception' => __DIR__ . '/..' . '/sebastian/recursion-context/src/Exception.php', + 'SebastianBergmann\\RecursionContext\\InvalidArgumentException' => __DIR__ . '/..' . '/sebastian/recursion-context/src/InvalidArgumentException.php', + 'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php', + 'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php', + 'Text_Template' => __DIR__ . '/..' . '/phpunit/php-text-template/src/Template.php', + 'UnhandledMatchError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/UnhandledMatchError.php', + 'ValueError' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/ValueError.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit4da13270269c89a28e472e1f7324e6d1::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit4da13270269c89a28e472e1f7324e6d1::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit4da13270269c89a28e472e1f7324e6d1::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/installed.json b/htdocs/includes/webklex/php-imap/vendor/composer/installed.json new file mode 100644 index 00000000000..ef8e77adb03 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/installed.json @@ -0,0 +1,2565 @@ +{ + "packages": [ + { + "name": "doctrine/inflector", + "version": "2.0.4", + "version_normalized": "2.0.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.10" + }, + "time": "2021-10-22T20:16:43+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "install-path": "../doctrine/inflector" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.1", + "version_normalized": "1.4.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" + }, + "time": "2022-03-03T08:28:38+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "install-path": "../doctrine/instantiator" + }, + { + "name": "illuminate/collections", + "version": "v8.83.23", + "version_normalized": "8.83.23.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/collections.git", + "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/collections/zipball/705a4e1ef93cd492c45b9b3e7911cccc990a07f4", + "reference": "705a4e1ef93cd492c45b9b3e7911cccc990a07f4", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "php": "^7.3|^8.0" + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^5.4)." + }, + "time": "2022-06-23T15:29:49+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Collections package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "install-path": "../illuminate/collections" + }, + { + "name": "illuminate/contracts", + "version": "v8.83.23", + "version_normalized": "8.83.23.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/contracts.git", + "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/5e0fd287a1b22a6b346a9f7cd484d8cf0234585d", + "reference": "5e0fd287a1b22a6b346a9f7cd484d8cf0234585d", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0" + }, + "time": "2022-01-13T14:47:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Illuminate\\Contracts\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Contracts package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "install-path": "../illuminate/contracts" + }, + { + "name": "illuminate/macroable", + "version": "v8.83.23", + "version_normalized": "8.83.23.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/macroable.git", + "reference": "aed81891a6e046fdee72edd497f822190f61c162" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/macroable/zipball/aed81891a6e046fdee72edd497f822190f61c162", + "reference": "aed81891a6e046fdee72edd497f822190f61c162", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "time": "2021-11-16T13:57:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Macroable package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "install-path": "../illuminate/macroable" + }, + { + "name": "illuminate/pagination", + "version": "v8.83.23", + "version_normalized": "8.83.23.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/pagination.git", + "reference": "16fe8dc35f9d18c58a3471469af656a02e9ab692" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/pagination/zipball/16fe8dc35f9d18c58a3471469af656a02e9ab692", + "reference": "16fe8dc35f9d18c58a3471469af656a02e9ab692", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/support": "^8.0", + "php": "^7.3|^8.0" + }, + "time": "2022-06-27T13:26:06+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Illuminate\\Pagination\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Pagination package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "install-path": "../illuminate/pagination" + }, + { + "name": "illuminate/support", + "version": "v8.83.23", + "version_normalized": "8.83.23.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/support.git", + "reference": "c3d643e77082786ae8a51502c757e9b1a3ee254e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/support/zipball/c3d643e77082786ae8a51502c757e9b1a3ee254e", + "reference": "c3d643e77082786ae8a51502c757e9b1a3ee254e", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.4|^2.0", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "nesbot/carbon": "^2.53.1", + "php": "^7.3|^8.0", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^8.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", + "symfony/process": "Required to use the composer class (^5.4).", + "symfony/var-dumper": "Required to use the dd function (^5.4).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + }, + "time": "2022-06-27T13:26:30+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Support package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "install-path": "../illuminate/support" + }, + { + "name": "nesbot/carbon", + "version": "2.61.0", + "version_normalized": "2.61.0.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "time": "2022-08-06T12:41:24+00:00", + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "install-path": "../nesbot/carbon" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "version_normalized": "2.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "time": "2020-06-27T09:03:43+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "install-path": "../phpdocumentor/reflection-common" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "version_normalized": "5.3.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "time": "2021-10-19T17:43:47+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "install-path": "../phpdocumentor/reflection-docblock" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.6.1", + "version_normalized": "1.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "77a32518733312af16a44300404e945338981de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", + "reference": "77a32518733312af16a44300404e945338981de3", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "time": "2022-03-15T21:29:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + }, + "install-path": "../phpdocumentor/type-resolver" + }, + { + "name": "phpspec/prophecy", + "version": "v1.10.3", + "version_normalized": "1.10.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "451c3cd1418cf640de218914901e51b064abb093" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" + }, + "time": "2020-03-05T15:02:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.10.3" + }, + "install-path": "../phpspec/prophecy" + }, + { + "name": "phpunit/php-code-coverage", + "version": "2.2.4", + "version_normalized": "2.2.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "phpunit/php-file-iterator": "~1.3", + "phpunit/php-text-template": "~1.2", + "phpunit/php-token-stream": "~1.3", + "sebastian/environment": "^1.3.2", + "sebastian/version": "~1.0" + }, + "require-dev": { + "ext-xdebug": ">=2.1.4", + "phpunit/phpunit": "~4" + }, + "suggest": { + "ext-dom": "*", + "ext-xdebug": ">=2.2.1", + "ext-xmlwriter": "*" + }, + "time": "2015-10-06T15:47:00+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "irc": "irc://irc.freenode.net/phpunit", + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/2.2" + }, + "install-path": "../phpunit/php-code-coverage" + }, + { + "name": "phpunit/php-file-iterator", + "version": "1.4.5", + "version_normalized": "1.4.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2017-11-27T13:52:08+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "irc": "irc://irc.freenode.net/phpunit", + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/1.4.5" + }, + "install-path": "../phpunit/php-file-iterator" + }, + { + "name": "phpunit/php-text-template", + "version": "1.2.1", + "version_normalized": "1.2.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "time": "2015-06-21T13:50:34+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/1.2.1" + }, + "install-path": "../phpunit/php-text-template" + }, + { + "name": "phpunit/php-timer", + "version": "1.0.9", + "version_normalized": "1.0.9.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "time": "2017-02-26T11:10:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/master" + }, + "install-path": "../phpunit/php-timer" + }, + { + "name": "phpunit/php-token-stream", + "version": "1.4.12", + "version_normalized": "1.4.12.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-token-stream.git", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "time": "2017-12-04T08:55:13+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Wrapper around PHP's tokenizer extension.", + "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "keywords": [ + "tokenizer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-token-stream/issues", + "source": "https://github.com/sebastianbergmann/php-token-stream/tree/1.4" + }, + "abandoned": true, + "install-path": "../phpunit/php-token-stream" + }, + { + "name": "phpunit/phpunit", + "version": "4.8.36", + "version_normalized": "4.8.36.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", + "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.3.3", + "phpspec/prophecy": "^1.3.1", + "phpunit/php-code-coverage": "~2.1", + "phpunit/php-file-iterator": "~1.4", + "phpunit/php-text-template": "~1.2", + "phpunit/php-timer": "^1.0.6", + "phpunit/phpunit-mock-objects": "~2.3", + "sebastian/comparator": "~1.2.2", + "sebastian/diff": "~1.2", + "sebastian/environment": "~1.3", + "sebastian/exporter": "~1.2", + "sebastian/global-state": "~1.0", + "sebastian/version": "~1.0", + "symfony/yaml": "~2.1|~3.0" + }, + "suggest": { + "phpunit/php-invoker": "~1.1" + }, + "time": "2017-06-21T08:07:12+00:00", + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.8.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/4.8.36" + }, + "install-path": "../phpunit/phpunit" + }, + { + "name": "phpunit/phpunit-mock-objects", + "version": "2.3.8", + "version_normalized": "2.3.8.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.0.2", + "php": ">=5.3.3", + "phpunit/php-text-template": "~1.2", + "sebastian/exporter": "~1.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "suggest": { + "ext-soap": "*" + }, + "time": "2015-10-02T06:51:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sb@sebastian-bergmann.de", + "role": "lead" + } + ], + "description": "Mock Object library for PHPUnit", + "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "keywords": [ + "mock", + "xunit" + ], + "support": { + "irc": "irc://irc.freenode.net/phpunit", + "issues": "https://github.com/sebastianbergmann/phpunit-mock-objects/issues", + "source": "https://github.com/sebastianbergmann/phpunit-mock-objects/tree/2.3" + }, + "abandoned": true, + "install-path": "../phpunit/phpunit-mock-objects" + }, + { + "name": "psr/container", + "version": "1.1.2", + "version_normalized": "1.1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "time": "2021-11-05T16:50:12+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "install-path": "../psr/container" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-10-23T01:57:42+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "install-path": "../psr/simple-cache" + }, + { + "name": "sebastian/comparator", + "version": "1.2.4", + "version_normalized": "1.2.4.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2017-01-29T09:50:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/1.2" + }, + "install-path": "../sebastian/comparator" + }, + { + "name": "sebastian/diff", + "version": "1.4.3", + "version_normalized": "1.4.3.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "time": "2017-05-22T07:24:03+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/1.4" + }, + "install-path": "../sebastian/diff" + }, + { + "name": "sebastian/environment", + "version": "1.3.8", + "version_normalized": "1.3.8.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8 || ^5.0" + }, + "time": "2016-08-18T05:49:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/1.3" + }, + "install-path": "../sebastian/environment" + }, + { + "name": "sebastian/exporter", + "version": "1.2.2", + "version_normalized": "1.2.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", + "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, + "time": "2016-06-17T09:04:28+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/master" + }, + "install-path": "../sebastian/exporter" + }, + { + "name": "sebastian/global-state", + "version": "1.1.1", + "version_normalized": "1.1.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", + "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.2" + }, + "suggest": { + "ext-uopz": "*" + }, + "time": "2015-10-12T03:26:01+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/1.1.1" + }, + "install-path": "../sebastian/global-state" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.5", + "version_normalized": "1.0.5.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "time": "2016-10-03T07:41:43+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/master" + }, + "install-path": "../sebastian/recursion-context" + }, + { + "name": "sebastian/version", + "version": "1.0.6", + "version_normalized": "1.0.6.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "shasum": "" + }, + "time": "2015-06-21T13:59:46+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/1.0.6" + }, + "install-path": "../sebastian/version" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "time": "2022-01-02T09:53:40+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/deprecation-contracts" + }, + { + "name": "symfony/http-foundation", + "version": "v5.4.11", + "version_normalized": "5.4.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", + "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" + }, + "time": "2022-07-20T13:00:38+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/http-foundation" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.26.0", + "version_normalized": "1.26.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "time": "2022-05-24T11:49:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-ctype" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "version_normalized": "1.26.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "time": "2022-05-24T11:49:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-mbstring" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.26.0", + "version_normalized": "1.26.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "time": "2022-05-10T07:21:04+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-php80" + }, + { + "name": "symfony/translation", + "version": "v4.4.44", + "version_normalized": "4.4.44.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "af947fefc306cec6ea5a1f6160c7e305a71f2493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/af947fefc306cec6ea5a1f6160c7e305a71f2493", + "reference": "af947fefc306cec6ea5a1f6160c7e305a71f2493", + "shasum": "" + }, + "require": { + "php": ">=7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0|2.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "time": "2022-07-20T09:59:04+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v4.4.44" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/translation" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.5.2", + "version_normalized": "2.5.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "time": "2022-06-27T16:58:25+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/translation-contracts" + }, + { + "name": "symfony/yaml", + "version": "v3.4.47", + "version_normalized": "3.4.47.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "88289caa3c166321883f67fe5130188ebbb47094" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094", + "reference": "88289caa3c166321883f67fe5130188ebbb47094", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "time": "2020-10-24T10:57:07+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v3.4.47" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/yaml" + }, + { + "name": "voku/portable-ascii", + "version": "1.6.1", + "version_normalized": "1.6.1.0", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/87337c91b9dfacee02452244ee14ab3c43bc485a", + "reference": "87337c91b9dfacee02452244ee14ab3c43bc485a", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "time": "2022-01-24T18:55:24+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/1.6.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "install-path": "../voku/portable-ascii" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "version_normalized": "1.11.0.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "time": "2022-06-03T18:03:27+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "install-path": "../webmozart/assert" + } + ], + "dev": true, + "dev-package-names": [ + "doctrine/instantiator", + "phpdocumentor/reflection-common", + "phpdocumentor/reflection-docblock", + "phpdocumentor/type-resolver", + "phpspec/prophecy", + "phpunit/php-code-coverage", + "phpunit/php-file-iterator", + "phpunit/php-text-template", + "phpunit/php-timer", + "phpunit/php-token-stream", + "phpunit/phpunit", + "phpunit/phpunit-mock-objects", + "sebastian/comparator", + "sebastian/diff", + "sebastian/environment", + "sebastian/exporter", + "sebastian/global-state", + "sebastian/recursion-context", + "sebastian/version", + "symfony/polyfill-ctype", + "symfony/yaml", + "webmozart/assert" + ] +} diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/installed.php b/htdocs/includes/webklex/php-imap/vendor/composer/installed.php new file mode 100644 index 00000000000..8af6845c505 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/installed.php @@ -0,0 +1,371 @@ + array( + 'name' => 'webklex/php-imap', + 'pretty_version' => 'dev-develop', + 'version' => 'dev-develop', + 'reference' => '0f467d1c4283cc035ef474db3c733653feeb570f', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev' => true, + ), + 'versions' => array( + 'doctrine/inflector' => array( + 'pretty_version' => '2.0.4', + 'version' => '2.0.4.0', + 'reference' => '8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/inflector', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'doctrine/instantiator' => array( + 'pretty_version' => '1.4.1', + 'version' => '1.4.1.0', + 'reference' => '10dcfce151b967d20fde1b34ae6640712c3891bc', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/instantiator', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'illuminate/collections' => array( + 'pretty_version' => 'v8.83.23', + 'version' => '8.83.23.0', + 'reference' => '705a4e1ef93cd492c45b9b3e7911cccc990a07f4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../illuminate/collections', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'illuminate/contracts' => array( + 'pretty_version' => 'v8.83.23', + 'version' => '8.83.23.0', + 'reference' => '5e0fd287a1b22a6b346a9f7cd484d8cf0234585d', + 'type' => 'library', + 'install_path' => __DIR__ . '/../illuminate/contracts', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'illuminate/macroable' => array( + 'pretty_version' => 'v8.83.23', + 'version' => '8.83.23.0', + 'reference' => 'aed81891a6e046fdee72edd497f822190f61c162', + 'type' => 'library', + 'install_path' => __DIR__ . '/../illuminate/macroable', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'illuminate/pagination' => array( + 'pretty_version' => 'v8.83.23', + 'version' => '8.83.23.0', + 'reference' => '16fe8dc35f9d18c58a3471469af656a02e9ab692', + 'type' => 'library', + 'install_path' => __DIR__ . '/../illuminate/pagination', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'illuminate/support' => array( + 'pretty_version' => 'v8.83.23', + 'version' => '8.83.23.0', + 'reference' => 'c3d643e77082786ae8a51502c757e9b1a3ee254e', + 'type' => 'library', + 'install_path' => __DIR__ . '/../illuminate/support', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'nesbot/carbon' => array( + 'pretty_version' => '2.61.0', + 'version' => '2.61.0.0', + 'reference' => 'bdf4f4fe3a3eac4de84dbec0738082a862c68ba6', + 'type' => 'library', + 'install_path' => __DIR__ . '/../nesbot/carbon', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'phpdocumentor/reflection-common' => array( + 'pretty_version' => '2.2.0', + 'version' => '2.2.0.0', + 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpdocumentor/reflection-common', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpdocumentor/reflection-docblock' => array( + 'pretty_version' => '5.3.0', + 'version' => '5.3.0.0', + 'reference' => '622548b623e81ca6d78b721c5e029f4ce664f170', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpdocumentor/reflection-docblock', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpdocumentor/type-resolver' => array( + 'pretty_version' => '1.6.1', + 'version' => '1.6.1.0', + 'reference' => '77a32518733312af16a44300404e945338981de3', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpdocumentor/type-resolver', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpspec/prophecy' => array( + 'pretty_version' => 'v1.10.3', + 'version' => '1.10.3.0', + 'reference' => '451c3cd1418cf640de218914901e51b064abb093', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpspec/prophecy', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/php-code-coverage' => array( + 'pretty_version' => '2.2.4', + 'version' => '2.2.4.0', + 'reference' => 'eabf68b476ac7d0f73793aada060f1c1a9bf8979', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-code-coverage', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/php-file-iterator' => array( + 'pretty_version' => '1.4.5', + 'version' => '1.4.5.0', + 'reference' => '730b01bc3e867237eaac355e06a36b85dd93a8b4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-file-iterator', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/php-text-template' => array( + 'pretty_version' => '1.2.1', + 'version' => '1.2.1.0', + 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-text-template', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/php-timer' => array( + 'pretty_version' => '1.0.9', + 'version' => '1.0.9.0', + 'reference' => '3dcf38ca72b158baf0bc245e9184d3fdffa9c46f', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-timer', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/php-token-stream' => array( + 'pretty_version' => '1.4.12', + 'version' => '1.4.12.0', + 'reference' => '1ce90ba27c42e4e44e6d8458241466380b51fa16', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/php-token-stream', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/phpunit' => array( + 'pretty_version' => '4.8.36', + 'version' => '4.8.36.0', + 'reference' => '46023de9a91eec7dfb06cc56cb4e260017298517', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/phpunit', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'phpunit/phpunit-mock-objects' => array( + 'pretty_version' => '2.3.8', + 'version' => '2.3.8.0', + 'reference' => 'ac8e7a3db35738d56ee9a76e78a4e03d97628983', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpunit/phpunit-mock-objects', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'psr/container' => array( + 'pretty_version' => '1.1.2', + 'version' => '1.1.2.0', + 'reference' => '513e0666f7216c7459170d56df27dfcefe1689ea', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/container', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'psr/simple-cache' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/simple-cache', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'sebastian/comparator' => array( + 'pretty_version' => '1.2.4', + 'version' => '1.2.4.0', + 'reference' => '2b7424b55f5047b47ac6e5ccb20b2aea4011d9be', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/comparator', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/diff' => array( + 'pretty_version' => '1.4.3', + 'version' => '1.4.3.0', + 'reference' => '7f066a26a962dbe58ddea9f72a4e82874a3975a4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/diff', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/environment' => array( + 'pretty_version' => '1.3.8', + 'version' => '1.3.8.0', + 'reference' => 'be2c607e43ce4c89ecd60e75c6a85c126e754aea', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/environment', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/exporter' => array( + 'pretty_version' => '1.2.2', + 'version' => '1.2.2.0', + 'reference' => '42c4c2eec485ee3e159ec9884f95b431287edde4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/exporter', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/global-state' => array( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'reference' => 'bc37d50fea7d017d3d340f230811c9f1d7280af4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/global-state', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/recursion-context' => array( + 'pretty_version' => '1.0.5', + 'version' => '1.0.5.0', + 'reference' => 'b19cc3298482a335a95f3016d2f8a6950f0fbcd7', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/recursion-context', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'sebastian/version' => array( + 'pretty_version' => '1.0.6', + 'version' => '1.0.6.0', + 'reference' => '58b3a85e7999757d6ad81c787a1fbf5ff6c628c6', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sebastian/version', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'symfony/deprecation-contracts' => array( + 'pretty_version' => 'v2.5.2', + 'version' => '2.5.2.0', + 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/http-foundation' => array( + 'pretty_version' => 'v5.4.11', + 'version' => '5.4.11.0', + 'reference' => '0a5868e0999e9d47859ba3d918548ff6943e6389', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/http-foundation', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/polyfill-ctype' => array( + 'pretty_version' => 'v1.26.0', + 'version' => '1.26.0.0', + 'reference' => '6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'symfony/polyfill-mbstring' => array( + 'pretty_version' => 'v1.26.0', + 'version' => '1.26.0.0', + 'reference' => '9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/polyfill-php80' => array( + 'pretty_version' => 'v1.26.0', + 'version' => '1.26.0.0', + 'reference' => 'cfa0ae98841b9e461207c13ab093d76b0fa7bace', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php80', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/translation' => array( + 'pretty_version' => 'v4.4.44', + 'version' => '4.4.44.0', + 'reference' => 'af947fefc306cec6ea5a1f6160c7e305a71f2493', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/translation', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/translation-contracts' => array( + 'pretty_version' => 'v2.5.2', + 'version' => '2.5.2.0', + 'reference' => '136b19dd05cdf0709db6537d058bcab6dd6e2dbe', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/translation-contracts', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'symfony/translation-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0|2.0', + ), + ), + 'symfony/yaml' => array( + 'pretty_version' => 'v3.4.47', + 'version' => '3.4.47.0', + 'reference' => '88289caa3c166321883f67fe5130188ebbb47094', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/yaml', + 'aliases' => array(), + 'dev_requirement' => true, + ), + 'voku/portable-ascii' => array( + 'pretty_version' => '1.6.1', + 'version' => '1.6.1.0', + 'reference' => '87337c91b9dfacee02452244ee14ab3c43bc485a', + 'type' => 'library', + 'install_path' => __DIR__ . '/../voku/portable-ascii', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'webklex/php-imap' => array( + 'pretty_version' => 'dev-develop', + 'version' => 'dev-develop', + 'reference' => '0f467d1c4283cc035ef474db3c733653feeb570f', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'dev_requirement' => false, + ), + 'webmozart/assert' => array( + 'pretty_version' => '1.11.0', + 'version' => '1.11.0.0', + 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', + 'type' => 'library', + 'install_path' => __DIR__ . '/../webmozart/assert', + 'aliases' => array(), + 'dev_requirement' => true, + ), + ), +); diff --git a/htdocs/includes/webklex/php-imap/vendor/composer/platform_check.php b/htdocs/includes/webklex/php-imap/vendor/composer/platform_check.php new file mode 100644 index 00000000000..580fa960955 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70400)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.4.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Arr.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Arr.php new file mode 100644 index 00000000000..fd7dca8a586 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Arr.php @@ -0,0 +1,747 @@ +all(); + } elseif (! is_array($values)) { + continue; + } + + $results[] = $values; + } + + return array_merge([], ...$results); + } + + /** + * Cross join the given arrays, returning all possible permutations. + * + * @param iterable ...$arrays + * @return array + */ + public static function crossJoin(...$arrays) + { + $results = [[]]; + + foreach ($arrays as $index => $array) { + $append = []; + + foreach ($results as $product) { + foreach ($array as $item) { + $product[$index] = $item; + + $append[] = $product; + } + } + + $results = $append; + } + + return $results; + } + + /** + * Divide an array into two arrays. One with keys and the other with values. + * + * @param array $array + * @return array + */ + public static function divide($array) + { + return [array_keys($array), array_values($array)]; + } + + /** + * Flatten a multi-dimensional associative array with dots. + * + * @param iterable $array + * @param string $prepend + * @return array + */ + public static function dot($array, $prepend = '') + { + $results = []; + + foreach ($array as $key => $value) { + if (is_array($value) && ! empty($value)) { + $results = array_merge($results, static::dot($value, $prepend.$key.'.')); + } else { + $results[$prepend.$key] = $value; + } + } + + return $results; + } + + /** + * Convert a flatten "dot" notation array into an expanded array. + * + * @param iterable $array + * @return array + */ + public static function undot($array) + { + $results = []; + + foreach ($array as $key => $value) { + static::set($results, $key, $value); + } + + return $results; + } + + /** + * Get all of the given array except for a specified array of keys. + * + * @param array $array + * @param array|string $keys + * @return array + */ + public static function except($array, $keys) + { + static::forget($array, $keys); + + return $array; + } + + /** + * Determine if the given key exists in the provided array. + * + * @param \ArrayAccess|array $array + * @param string|int $key + * @return bool + */ + public static function exists($array, $key) + { + if ($array instanceof Enumerable) { + return $array->has($key); + } + + if ($array instanceof ArrayAccess) { + return $array->offsetExists($key); + } + + return array_key_exists($key, $array); + } + + /** + * Return the first element in an array passing a given truth test. + * + * @param iterable $array + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public static function first($array, callable $callback = null, $default = null) + { + if (is_null($callback)) { + if (empty($array)) { + return value($default); + } + + foreach ($array as $item) { + return $item; + } + } + + foreach ($array as $key => $value) { + if ($callback($value, $key)) { + return $value; + } + } + + return value($default); + } + + /** + * Return the last element in an array passing a given truth test. + * + * @param array $array + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public static function last($array, callable $callback = null, $default = null) + { + if (is_null($callback)) { + return empty($array) ? value($default) : end($array); + } + + return static::first(array_reverse($array, true), $callback, $default); + } + + /** + * Flatten a multi-dimensional array into a single level. + * + * @param iterable $array + * @param int $depth + * @return array + */ + public static function flatten($array, $depth = INF) + { + $result = []; + + foreach ($array as $item) { + $item = $item instanceof Collection ? $item->all() : $item; + + if (! is_array($item)) { + $result[] = $item; + } else { + $values = $depth === 1 + ? array_values($item) + : static::flatten($item, $depth - 1); + + foreach ($values as $value) { + $result[] = $value; + } + } + } + + return $result; + } + + /** + * Remove one or many array items from a given array using "dot" notation. + * + * @param array $array + * @param array|string $keys + * @return void + */ + public static function forget(&$array, $keys) + { + $original = &$array; + + $keys = (array) $keys; + + if (count($keys) === 0) { + return; + } + + foreach ($keys as $key) { + // if the exact key exists in the top-level, remove it + if (static::exists($array, $key)) { + unset($array[$key]); + + continue; + } + + $parts = explode('.', $key); + + // clean up before each pass + $array = &$original; + + while (count($parts) > 1) { + $part = array_shift($parts); + + if (isset($array[$part]) && is_array($array[$part])) { + $array = &$array[$part]; + } else { + continue 2; + } + } + + unset($array[array_shift($parts)]); + } + } + + /** + * Get an item from an array using "dot" notation. + * + * @param \ArrayAccess|array $array + * @param string|int|null $key + * @param mixed $default + * @return mixed + */ + public static function get($array, $key, $default = null) + { + if (! static::accessible($array)) { + return value($default); + } + + if (is_null($key)) { + return $array; + } + + if (static::exists($array, $key)) { + return $array[$key]; + } + + if (strpos($key, '.') === false) { + return $array[$key] ?? value($default); + } + + foreach (explode('.', $key) as $segment) { + if (static::accessible($array) && static::exists($array, $segment)) { + $array = $array[$segment]; + } else { + return value($default); + } + } + + return $array; + } + + /** + * Check if an item or items exist in an array using "dot" notation. + * + * @param \ArrayAccess|array $array + * @param string|array $keys + * @return bool + */ + public static function has($array, $keys) + { + $keys = (array) $keys; + + if (! $array || $keys === []) { + return false; + } + + foreach ($keys as $key) { + $subKeyArray = $array; + + if (static::exists($array, $key)) { + continue; + } + + foreach (explode('.', $key) as $segment) { + if (static::accessible($subKeyArray) && static::exists($subKeyArray, $segment)) { + $subKeyArray = $subKeyArray[$segment]; + } else { + return false; + } + } + } + + return true; + } + + /** + * Determine if any of the keys exist in an array using "dot" notation. + * + * @param \ArrayAccess|array $array + * @param string|array $keys + * @return bool + */ + public static function hasAny($array, $keys) + { + if (is_null($keys)) { + return false; + } + + $keys = (array) $keys; + + if (! $array) { + return false; + } + + if ($keys === []) { + return false; + } + + foreach ($keys as $key) { + if (static::has($array, $key)) { + return true; + } + } + + return false; + } + + /** + * Determines if an array is associative. + * + * An array is "associative" if it doesn't have sequential numerical keys beginning with zero. + * + * @param array $array + * @return bool + */ + public static function isAssoc(array $array) + { + $keys = array_keys($array); + + return array_keys($keys) !== $keys; + } + + /** + * Determines if an array is a list. + * + * An array is a "list" if all array keys are sequential integers starting from 0 with no gaps in between. + * + * @param array $array + * @return bool + */ + public static function isList($array) + { + return ! self::isAssoc($array); + } + + /** + * Get a subset of the items from the given array. + * + * @param array $array + * @param array|string $keys + * @return array + */ + public static function only($array, $keys) + { + return array_intersect_key($array, array_flip((array) $keys)); + } + + /** + * Pluck an array of values from an array. + * + * @param iterable $array + * @param string|array|int|null $value + * @param string|array|null $key + * @return array + */ + public static function pluck($array, $value, $key = null) + { + $results = []; + + [$value, $key] = static::explodePluckParameters($value, $key); + + foreach ($array as $item) { + $itemValue = data_get($item, $value); + + // If the key is "null", we will just append the value to the array and keep + // looping. Otherwise we will key the array using the value of the key we + // received from the developer. Then we'll return the final array form. + if (is_null($key)) { + $results[] = $itemValue; + } else { + $itemKey = data_get($item, $key); + + if (is_object($itemKey) && method_exists($itemKey, '__toString')) { + $itemKey = (string) $itemKey; + } + + $results[$itemKey] = $itemValue; + } + } + + return $results; + } + + /** + * Explode the "value" and "key" arguments passed to "pluck". + * + * @param string|array $value + * @param string|array|null $key + * @return array + */ + protected static function explodePluckParameters($value, $key) + { + $value = is_string($value) ? explode('.', $value) : $value; + + $key = is_null($key) || is_array($key) ? $key : explode('.', $key); + + return [$value, $key]; + } + + /** + * Push an item onto the beginning of an array. + * + * @param array $array + * @param mixed $value + * @param mixed $key + * @return array + */ + public static function prepend($array, $value, $key = null) + { + if (func_num_args() == 2) { + array_unshift($array, $value); + } else { + $array = [$key => $value] + $array; + } + + return $array; + } + + /** + * Get a value from the array, and remove it. + * + * @param array $array + * @param string|int $key + * @param mixed $default + * @return mixed + */ + public static function pull(&$array, $key, $default = null) + { + $value = static::get($array, $key, $default); + + static::forget($array, $key); + + return $value; + } + + /** + * Convert the array into a query string. + * + * @param array $array + * @return string + */ + public static function query($array) + { + return http_build_query($array, '', '&', PHP_QUERY_RFC3986); + } + + /** + * Get one or a specified number of random values from an array. + * + * @param array $array + * @param int|null $number + * @param bool|false $preserveKeys + * @return mixed + * + * @throws \InvalidArgumentException + */ + public static function random($array, $number = null, $preserveKeys = false) + { + $requested = is_null($number) ? 1 : $number; + + $count = count($array); + + if ($requested > $count) { + throw new InvalidArgumentException( + "You requested {$requested} items, but there are only {$count} items available." + ); + } + + if (is_null($number)) { + return $array[array_rand($array)]; + } + + if ((int) $number === 0) { + return []; + } + + $keys = array_rand($array, $number); + + $results = []; + + if ($preserveKeys) { + foreach ((array) $keys as $key) { + $results[$key] = $array[$key]; + } + } else { + foreach ((array) $keys as $key) { + $results[] = $array[$key]; + } + } + + return $results; + } + + /** + * Set an array item to a given value using "dot" notation. + * + * If no key is given to the method, the entire array will be replaced. + * + * @param array $array + * @param string|null $key + * @param mixed $value + * @return array + */ + public static function set(&$array, $key, $value) + { + if (is_null($key)) { + return $array = $value; + } + + $keys = explode('.', $key); + + foreach ($keys as $i => $key) { + if (count($keys) === 1) { + break; + } + + unset($keys[$i]); + + // If the key doesn't exist at this depth, we will just create an empty array + // to hold the next value, allowing us to create the arrays to hold final + // values at the correct depth. Then we'll keep digging into the array. + if (! isset($array[$key]) || ! is_array($array[$key])) { + $array[$key] = []; + } + + $array = &$array[$key]; + } + + $array[array_shift($keys)] = $value; + + return $array; + } + + /** + * Shuffle the given array and return the result. + * + * @param array $array + * @param int|null $seed + * @return array + */ + public static function shuffle($array, $seed = null) + { + if (is_null($seed)) { + shuffle($array); + } else { + mt_srand($seed); + shuffle($array); + mt_srand(); + } + + return $array; + } + + /** + * Sort the array using the given callback or "dot" notation. + * + * @param array $array + * @param callable|array|string|null $callback + * @return array + */ + public static function sort($array, $callback = null) + { + return Collection::make($array)->sortBy($callback)->all(); + } + + /** + * Recursively sort an array by keys and values. + * + * @param array $array + * @param int $options + * @param bool $descending + * @return array + */ + public static function sortRecursive($array, $options = SORT_REGULAR, $descending = false) + { + foreach ($array as &$value) { + if (is_array($value)) { + $value = static::sortRecursive($value, $options, $descending); + } + } + + if (static::isAssoc($array)) { + $descending + ? krsort($array, $options) + : ksort($array, $options); + } else { + $descending + ? rsort($array, $options) + : sort($array, $options); + } + + return $array; + } + + /** + * Conditionally compile classes from an array into a CSS class list. + * + * @param array $array + * @return string + */ + public static function toCssClasses($array) + { + $classList = static::wrap($array); + + $classes = []; + + foreach ($classList as $class => $constraint) { + if (is_numeric($class)) { + $classes[] = $constraint; + } elseif ($constraint) { + $classes[] = $class; + } + } + + return implode(' ', $classes); + } + + /** + * Filter the array using the given callback. + * + * @param array $array + * @param callable $callback + * @return array + */ + public static function where($array, callable $callback) + { + return array_filter($array, $callback, ARRAY_FILTER_USE_BOTH); + } + + /** + * Filter items where the value is not null. + * + * @param array $array + * @return array + */ + public static function whereNotNull($array) + { + return static::where($array, function ($value) { + return ! is_null($value); + }); + } + + /** + * If the given value is not an array and not null, wrap it in one. + * + * @param mixed $value + * @return array + */ + public static function wrap($value) + { + if (is_null($value)) { + return []; + } + + return is_array($value) ? $value : [$value]; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Collection.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Collection.php new file mode 100644 index 00000000000..61a48841c11 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Collection.php @@ -0,0 +1,1672 @@ +items = $this->getArrayableItems($items); + } + + /** + * Create a collection with the given range. + * + * @param int $from + * @param int $to + * @return static + */ + public static function range($from, $to) + { + return new static(range($from, $to)); + } + + /** + * Get all of the items in the collection. + * + * @return array + */ + public function all() + { + return $this->items; + } + + /** + * Get a lazy collection for the items in this collection. + * + * @return \Illuminate\Support\LazyCollection + */ + public function lazy() + { + return new LazyCollection($this->items); + } + + /** + * Get the average value of a given key. + * + * @param callable|string|null $callback + * @return mixed + */ + public function avg($callback = null) + { + $callback = $this->valueRetriever($callback); + + $items = $this->map(function ($value) use ($callback) { + return $callback($value); + })->filter(function ($value) { + return ! is_null($value); + }); + + if ($count = $items->count()) { + return $items->sum() / $count; + } + } + + /** + * Get the median of a given key. + * + * @param string|array|null $key + * @return mixed + */ + public function median($key = null) + { + $values = (isset($key) ? $this->pluck($key) : $this) + ->filter(function ($item) { + return ! is_null($item); + })->sort()->values(); + + $count = $values->count(); + + if ($count === 0) { + return; + } + + $middle = (int) ($count / 2); + + if ($count % 2) { + return $values->get($middle); + } + + return (new static([ + $values->get($middle - 1), $values->get($middle), + ]))->average(); + } + + /** + * Get the mode of a given key. + * + * @param string|array|null $key + * @return array|null + */ + public function mode($key = null) + { + if ($this->count() === 0) { + return; + } + + $collection = isset($key) ? $this->pluck($key) : $this; + + $counts = new static; + + $collection->each(function ($value) use ($counts) { + $counts[$value] = isset($counts[$value]) ? $counts[$value] + 1 : 1; + }); + + $sorted = $counts->sort(); + + $highestValue = $sorted->last(); + + return $sorted->filter(function ($value) use ($highestValue) { + return $value == $highestValue; + })->sort()->keys()->all(); + } + + /** + * Collapse the collection of items into a single array. + * + * @return static + */ + public function collapse() + { + return new static(Arr::collapse($this->items)); + } + + /** + * Determine if an item exists in the collection. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function contains($key, $operator = null, $value = null) + { + if (func_num_args() === 1) { + if ($this->useAsCallable($key)) { + $placeholder = new stdClass; + + return $this->first($key, $placeholder) !== $placeholder; + } + + return in_array($key, $this->items); + } + + return $this->contains($this->operatorForWhere(...func_get_args())); + } + + /** + * Determine if an item is not contained in the collection. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function doesntContain($key, $operator = null, $value = null) + { + return ! $this->contains(...func_get_args()); + } + + /** + * Cross join with the given lists, returning all possible permutations. + * + * @param mixed ...$lists + * @return static + */ + public function crossJoin(...$lists) + { + return new static(Arr::crossJoin( + $this->items, ...array_map([$this, 'getArrayableItems'], $lists) + )); + } + + /** + * Get the items in the collection that are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diff($items) + { + return new static(array_diff($this->items, $this->getArrayableItems($items))); + } + + /** + * Get the items in the collection that are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffUsing($items, callable $callback) + { + return new static(array_udiff($this->items, $this->getArrayableItems($items), $callback)); + } + + /** + * Get the items in the collection whose keys and values are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diffAssoc($items) + { + return new static(array_diff_assoc($this->items, $this->getArrayableItems($items))); + } + + /** + * Get the items in the collection whose keys and values are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffAssocUsing($items, callable $callback) + { + return new static(array_diff_uassoc($this->items, $this->getArrayableItems($items), $callback)); + } + + /** + * Get the items in the collection whose keys are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diffKeys($items) + { + return new static(array_diff_key($this->items, $this->getArrayableItems($items))); + } + + /** + * Get the items in the collection whose keys are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffKeysUsing($items, callable $callback) + { + return new static(array_diff_ukey($this->items, $this->getArrayableItems($items), $callback)); + } + + /** + * Retrieve duplicate items from the collection. + * + * @param callable|string|null $callback + * @param bool $strict + * @return static + */ + public function duplicates($callback = null, $strict = false) + { + $items = $this->map($this->valueRetriever($callback)); + + $uniqueItems = $items->unique(null, $strict); + + $compare = $this->duplicateComparator($strict); + + $duplicates = new static; + + foreach ($items as $key => $value) { + if ($uniqueItems->isNotEmpty() && $compare($value, $uniqueItems->first())) { + $uniqueItems->shift(); + } else { + $duplicates[$key] = $value; + } + } + + return $duplicates; + } + + /** + * Retrieve duplicate items from the collection using strict comparison. + * + * @param callable|string|null $callback + * @return static + */ + public function duplicatesStrict($callback = null) + { + return $this->duplicates($callback, true); + } + + /** + * Get the comparison function to detect duplicates. + * + * @param bool $strict + * @return \Closure + */ + protected function duplicateComparator($strict) + { + if ($strict) { + return function ($a, $b) { + return $a === $b; + }; + } + + return function ($a, $b) { + return $a == $b; + }; + } + + /** + * Get all items except for those with the specified keys. + * + * @param \Illuminate\Support\Collection|mixed $keys + * @return static + */ + public function except($keys) + { + if ($keys instanceof Enumerable) { + $keys = $keys->all(); + } elseif (! is_array($keys)) { + $keys = func_get_args(); + } + + return new static(Arr::except($this->items, $keys)); + } + + /** + * Run a filter over each of the items. + * + * @param callable|null $callback + * @return static + */ + public function filter(callable $callback = null) + { + if ($callback) { + return new static(Arr::where($this->items, $callback)); + } + + return new static(array_filter($this->items)); + } + + /** + * Get the first item from the collection passing the given truth test. + * + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public function first(callable $callback = null, $default = null) + { + return Arr::first($this->items, $callback, $default); + } + + /** + * Get a flattened array of the items in the collection. + * + * @param int $depth + * @return static + */ + public function flatten($depth = INF) + { + return new static(Arr::flatten($this->items, $depth)); + } + + /** + * Flip the items in the collection. + * + * @return static + */ + public function flip() + { + return new static(array_flip($this->items)); + } + + /** + * Remove an item from the collection by key. + * + * @param string|int|array $keys + * @return $this + */ + public function forget($keys) + { + foreach ((array) $keys as $key) { + $this->offsetUnset($key); + } + + return $this; + } + + /** + * Get an item from the collection by key. + * + * @param mixed $key + * @param mixed $default + * @return mixed + */ + public function get($key, $default = null) + { + if (array_key_exists($key, $this->items)) { + return $this->items[$key]; + } + + return value($default); + } + + /** + * Get an item from the collection by key or add it to collection if it does not exist. + * + * @param mixed $key + * @param mixed $value + * @return mixed + */ + public function getOrPut($key, $value) + { + if (array_key_exists($key, $this->items)) { + return $this->items[$key]; + } + + $this->offsetSet($key, $value = value($value)); + + return $value; + } + + /** + * Group an associative array by a field or using a callback. + * + * @param array|callable|string $groupBy + * @param bool $preserveKeys + * @return static + */ + public function groupBy($groupBy, $preserveKeys = false) + { + if (! $this->useAsCallable($groupBy) && is_array($groupBy)) { + $nextGroups = $groupBy; + + $groupBy = array_shift($nextGroups); + } + + $groupBy = $this->valueRetriever($groupBy); + + $results = []; + + foreach ($this->items as $key => $value) { + $groupKeys = $groupBy($value, $key); + + if (! is_array($groupKeys)) { + $groupKeys = [$groupKeys]; + } + + foreach ($groupKeys as $groupKey) { + $groupKey = is_bool($groupKey) ? (int) $groupKey : $groupKey; + + if (! array_key_exists($groupKey, $results)) { + $results[$groupKey] = new static; + } + + $results[$groupKey]->offsetSet($preserveKeys ? $key : null, $value); + } + } + + $result = new static($results); + + if (! empty($nextGroups)) { + return $result->map->groupBy($nextGroups, $preserveKeys); + } + + return $result; + } + + /** + * Key an associative array by a field or using a callback. + * + * @param callable|string $keyBy + * @return static + */ + public function keyBy($keyBy) + { + $keyBy = $this->valueRetriever($keyBy); + + $results = []; + + foreach ($this->items as $key => $item) { + $resolvedKey = $keyBy($item, $key); + + if (is_object($resolvedKey)) { + $resolvedKey = (string) $resolvedKey; + } + + $results[$resolvedKey] = $item; + } + + return new static($results); + } + + /** + * Determine if an item exists in the collection by key. + * + * @param mixed $key + * @return bool + */ + public function has($key) + { + $keys = is_array($key) ? $key : func_get_args(); + + foreach ($keys as $value) { + if (! array_key_exists($value, $this->items)) { + return false; + } + } + + return true; + } + + /** + * Determine if any of the keys exist in the collection. + * + * @param mixed $key + * @return bool + */ + public function hasAny($key) + { + if ($this->isEmpty()) { + return false; + } + + $keys = is_array($key) ? $key : func_get_args(); + + foreach ($keys as $value) { + if ($this->has($value)) { + return true; + } + } + + return false; + } + + /** + * Concatenate values of a given key as a string. + * + * @param string $value + * @param string|null $glue + * @return string + */ + public function implode($value, $glue = null) + { + $first = $this->first(); + + if (is_array($first) || (is_object($first) && ! $first instanceof Stringable)) { + return implode($glue ?? '', $this->pluck($value)->all()); + } + + return implode($value ?? '', $this->items); + } + + /** + * Intersect the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function intersect($items) + { + return new static(array_intersect($this->items, $this->getArrayableItems($items))); + } + + /** + * Intersect the collection with the given items by key. + * + * @param mixed $items + * @return static + */ + public function intersectByKeys($items) + { + return new static(array_intersect_key( + $this->items, $this->getArrayableItems($items) + )); + } + + /** + * Determine if the collection is empty or not. + * + * @return bool + */ + public function isEmpty() + { + return empty($this->items); + } + + /** + * Determine if the collection contains a single item. + * + * @return bool + */ + public function containsOneItem() + { + return $this->count() === 1; + } + + /** + * Join all items from the collection using a string. The final items can use a separate glue string. + * + * @param string $glue + * @param string $finalGlue + * @return string + */ + public function join($glue, $finalGlue = '') + { + if ($finalGlue === '') { + return $this->implode($glue); + } + + $count = $this->count(); + + if ($count === 0) { + return ''; + } + + if ($count === 1) { + return $this->last(); + } + + $collection = new static($this->items); + + $finalItem = $collection->pop(); + + return $collection->implode($glue).$finalGlue.$finalItem; + } + + /** + * Get the keys of the collection items. + * + * @return static + */ + public function keys() + { + return new static(array_keys($this->items)); + } + + /** + * Get the last item from the collection. + * + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public function last(callable $callback = null, $default = null) + { + return Arr::last($this->items, $callback, $default); + } + + /** + * Get the values of a given key. + * + * @param string|array|int|null $value + * @param string|null $key + * @return static + */ + public function pluck($value, $key = null) + { + return new static(Arr::pluck($this->items, $value, $key)); + } + + /** + * Run a map over each of the items. + * + * @param callable $callback + * @return static + */ + public function map(callable $callback) + { + $keys = array_keys($this->items); + + $items = array_map($callback, $this->items, $keys); + + return new static(array_combine($keys, $items)); + } + + /** + * Run a dictionary map over the items. + * + * The callback should return an associative array with a single key/value pair. + * + * @param callable $callback + * @return static + */ + public function mapToDictionary(callable $callback) + { + $dictionary = []; + + foreach ($this->items as $key => $item) { + $pair = $callback($item, $key); + + $key = key($pair); + + $value = reset($pair); + + if (! isset($dictionary[$key])) { + $dictionary[$key] = []; + } + + $dictionary[$key][] = $value; + } + + return new static($dictionary); + } + + /** + * Run an associative map over each of the items. + * + * The callback should return an associative array with a single key/value pair. + * + * @param callable $callback + * @return static + */ + public function mapWithKeys(callable $callback) + { + $result = []; + + foreach ($this->items as $key => $value) { + $assoc = $callback($value, $key); + + foreach ($assoc as $mapKey => $mapValue) { + $result[$mapKey] = $mapValue; + } + } + + return new static($result); + } + + /** + * Merge the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function merge($items) + { + return new static(array_merge($this->items, $this->getArrayableItems($items))); + } + + /** + * Recursively merge the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function mergeRecursive($items) + { + return new static(array_merge_recursive($this->items, $this->getArrayableItems($items))); + } + + /** + * Create a collection by using this collection for keys and another for its values. + * + * @param mixed $values + * @return static + */ + public function combine($values) + { + return new static(array_combine($this->all(), $this->getArrayableItems($values))); + } + + /** + * Union the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function union($items) + { + return new static($this->items + $this->getArrayableItems($items)); + } + + /** + * Create a new collection consisting of every n-th element. + * + * @param int $step + * @param int $offset + * @return static + */ + public function nth($step, $offset = 0) + { + $new = []; + + $position = 0; + + foreach ($this->slice($offset)->items as $item) { + if ($position % $step === 0) { + $new[] = $item; + } + + $position++; + } + + return new static($new); + } + + /** + * Get the items with the specified keys. + * + * @param mixed $keys + * @return static + */ + public function only($keys) + { + if (is_null($keys)) { + return new static($this->items); + } + + if ($keys instanceof Enumerable) { + $keys = $keys->all(); + } + + $keys = is_array($keys) ? $keys : func_get_args(); + + return new static(Arr::only($this->items, $keys)); + } + + /** + * Get and remove the last N items from the collection. + * + * @param int $count + * @return mixed + */ + public function pop($count = 1) + { + if ($count === 1) { + return array_pop($this->items); + } + + if ($this->isEmpty()) { + return new static; + } + + $results = []; + + $collectionCount = $this->count(); + + foreach (range(1, min($count, $collectionCount)) as $item) { + array_push($results, array_pop($this->items)); + } + + return new static($results); + } + + /** + * Push an item onto the beginning of the collection. + * + * @param mixed $value + * @param mixed $key + * @return $this + */ + public function prepend($value, $key = null) + { + $this->items = Arr::prepend($this->items, ...func_get_args()); + + return $this; + } + + /** + * Push one or more items onto the end of the collection. + * + * @param mixed $values + * @return $this + */ + public function push(...$values) + { + foreach ($values as $value) { + $this->items[] = $value; + } + + return $this; + } + + /** + * Push all of the given items onto the collection. + * + * @param iterable $source + * @return static + */ + public function concat($source) + { + $result = new static($this); + + foreach ($source as $item) { + $result->push($item); + } + + return $result; + } + + /** + * Get and remove an item from the collection. + * + * @param mixed $key + * @param mixed $default + * @return mixed + */ + public function pull($key, $default = null) + { + return Arr::pull($this->items, $key, $default); + } + + /** + * Put an item in the collection by key. + * + * @param mixed $key + * @param mixed $value + * @return $this + */ + public function put($key, $value) + { + $this->offsetSet($key, $value); + + return $this; + } + + /** + * Get one or a specified number of items randomly from the collection. + * + * @param int|null $number + * @return static|mixed + * + * @throws \InvalidArgumentException + */ + public function random($number = null) + { + if (is_null($number)) { + return Arr::random($this->items); + } + + return new static(Arr::random($this->items, $number)); + } + + /** + * Replace the collection items with the given items. + * + * @param mixed $items + * @return static + */ + public function replace($items) + { + return new static(array_replace($this->items, $this->getArrayableItems($items))); + } + + /** + * Recursively replace the collection items with the given items. + * + * @param mixed $items + * @return static + */ + public function replaceRecursive($items) + { + return new static(array_replace_recursive($this->items, $this->getArrayableItems($items))); + } + + /** + * Reverse items order. + * + * @return static + */ + public function reverse() + { + return new static(array_reverse($this->items, true)); + } + + /** + * Search the collection for a given value and return the corresponding key if successful. + * + * @param mixed $value + * @param bool $strict + * @return mixed + */ + public function search($value, $strict = false) + { + if (! $this->useAsCallable($value)) { + return array_search($value, $this->items, $strict); + } + + foreach ($this->items as $key => $item) { + if ($value($item, $key)) { + return $key; + } + } + + return false; + } + + /** + * Get and remove the first N items from the collection. + * + * @param int $count + * @return mixed + */ + public function shift($count = 1) + { + if ($count === 1) { + return array_shift($this->items); + } + + if ($this->isEmpty()) { + return new static; + } + + $results = []; + + $collectionCount = $this->count(); + + foreach (range(1, min($count, $collectionCount)) as $item) { + array_push($results, array_shift($this->items)); + } + + return new static($results); + } + + /** + * Shuffle the items in the collection. + * + * @param int|null $seed + * @return static + */ + public function shuffle($seed = null) + { + return new static(Arr::shuffle($this->items, $seed)); + } + + /** + * Create chunks representing a "sliding window" view of the items in the collection. + * + * @param int $size + * @param int $step + * @return static + */ + public function sliding($size = 2, $step = 1) + { + $chunks = floor(($this->count() - $size) / $step) + 1; + + return static::times($chunks, function ($number) use ($size, $step) { + return $this->slice(($number - 1) * $step, $size); + }); + } + + /** + * Skip the first {$count} items. + * + * @param int $count + * @return static + */ + public function skip($count) + { + return $this->slice($count); + } + + /** + * Skip items in the collection until the given condition is met. + * + * @param mixed $value + * @return static + */ + public function skipUntil($value) + { + return new static($this->lazy()->skipUntil($value)->all()); + } + + /** + * Skip items in the collection while the given condition is met. + * + * @param mixed $value + * @return static + */ + public function skipWhile($value) + { + return new static($this->lazy()->skipWhile($value)->all()); + } + + /** + * Slice the underlying collection array. + * + * @param int $offset + * @param int|null $length + * @return static + */ + public function slice($offset, $length = null) + { + return new static(array_slice($this->items, $offset, $length, true)); + } + + /** + * Split a collection into a certain number of groups. + * + * @param int $numberOfGroups + * @return static + */ + public function split($numberOfGroups) + { + if ($this->isEmpty()) { + return new static; + } + + $groups = new static; + + $groupSize = floor($this->count() / $numberOfGroups); + + $remain = $this->count() % $numberOfGroups; + + $start = 0; + + for ($i = 0; $i < $numberOfGroups; $i++) { + $size = $groupSize; + + if ($i < $remain) { + $size++; + } + + if ($size) { + $groups->push(new static(array_slice($this->items, $start, $size))); + + $start += $size; + } + } + + return $groups; + } + + /** + * Split a collection into a certain number of groups, and fill the first groups completely. + * + * @param int $numberOfGroups + * @return static + */ + public function splitIn($numberOfGroups) + { + return $this->chunk(ceil($this->count() / $numberOfGroups)); + } + + /** + * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return mixed + * + * @throws \Illuminate\Support\ItemNotFoundException + * @throws \Illuminate\Support\MultipleItemsFoundException + */ + public function sole($key = null, $operator = null, $value = null) + { + $filter = func_num_args() > 1 + ? $this->operatorForWhere(...func_get_args()) + : $key; + + $items = $this->when($filter)->filter($filter); + + if ($items->isEmpty()) { + throw new ItemNotFoundException; + } + + if ($items->count() > 1) { + throw new MultipleItemsFoundException; + } + + return $items->first(); + } + + /** + * Get the first item in the collection but throw an exception if no matching items exist. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return mixed + * + * @throws \Illuminate\Support\ItemNotFoundException + */ + public function firstOrFail($key = null, $operator = null, $value = null) + { + $filter = func_num_args() > 1 + ? $this->operatorForWhere(...func_get_args()) + : $key; + + $placeholder = new stdClass(); + + $item = $this->first($filter, $placeholder); + + if ($item === $placeholder) { + throw new ItemNotFoundException; + } + + return $item; + } + + /** + * Chunk the collection into chunks of the given size. + * + * @param int $size + * @return static + */ + public function chunk($size) + { + if ($size <= 0) { + return new static; + } + + $chunks = []; + + foreach (array_chunk($this->items, $size, true) as $chunk) { + $chunks[] = new static($chunk); + } + + return new static($chunks); + } + + /** + * Chunk the collection into chunks with a callback. + * + * @param callable $callback + * @return static + */ + public function chunkWhile(callable $callback) + { + return new static( + $this->lazy()->chunkWhile($callback)->mapInto(static::class) + ); + } + + /** + * Sort through each item with a callback. + * + * @param callable|int|null $callback + * @return static + */ + public function sort($callback = null) + { + $items = $this->items; + + $callback && is_callable($callback) + ? uasort($items, $callback) + : asort($items, $callback ?? SORT_REGULAR); + + return new static($items); + } + + /** + * Sort items in descending order. + * + * @param int $options + * @return static + */ + public function sortDesc($options = SORT_REGULAR) + { + $items = $this->items; + + arsort($items, $options); + + return new static($items); + } + + /** + * Sort the collection using the given callback. + * + * @param callable|array|string $callback + * @param int $options + * @param bool $descending + * @return static + */ + public function sortBy($callback, $options = SORT_REGULAR, $descending = false) + { + if (is_array($callback) && ! is_callable($callback)) { + return $this->sortByMany($callback); + } + + $results = []; + + $callback = $this->valueRetriever($callback); + + // First we will loop through the items and get the comparator from a callback + // function which we were given. Then, we will sort the returned values and + // grab all the corresponding values for the sorted keys from this array. + foreach ($this->items as $key => $value) { + $results[$key] = $callback($value, $key); + } + + $descending ? arsort($results, $options) + : asort($results, $options); + + // Once we have sorted all of the keys in the array, we will loop through them + // and grab the corresponding model so we can set the underlying items list + // to the sorted version. Then we'll just return the collection instance. + foreach (array_keys($results) as $key) { + $results[$key] = $this->items[$key]; + } + + return new static($results); + } + + /** + * Sort the collection using multiple comparisons. + * + * @param array $comparisons + * @return static + */ + protected function sortByMany(array $comparisons = []) + { + $items = $this->items; + + usort($items, function ($a, $b) use ($comparisons) { + foreach ($comparisons as $comparison) { + $comparison = Arr::wrap($comparison); + + $prop = $comparison[0]; + + $ascending = Arr::get($comparison, 1, true) === true || + Arr::get($comparison, 1, true) === 'asc'; + + $result = 0; + + if (! is_string($prop) && is_callable($prop)) { + $result = $prop($a, $b); + } else { + $values = [data_get($a, $prop), data_get($b, $prop)]; + + if (! $ascending) { + $values = array_reverse($values); + } + + $result = $values[0] <=> $values[1]; + } + + if ($result === 0) { + continue; + } + + return $result; + } + }); + + return new static($items); + } + + /** + * Sort the collection in descending order using the given callback. + * + * @param callable|string $callback + * @param int $options + * @return static + */ + public function sortByDesc($callback, $options = SORT_REGULAR) + { + return $this->sortBy($callback, $options, true); + } + + /** + * Sort the collection keys. + * + * @param int $options + * @param bool $descending + * @return static + */ + public function sortKeys($options = SORT_REGULAR, $descending = false) + { + $items = $this->items; + + $descending ? krsort($items, $options) : ksort($items, $options); + + return new static($items); + } + + /** + * Sort the collection keys in descending order. + * + * @param int $options + * @return static + */ + public function sortKeysDesc($options = SORT_REGULAR) + { + return $this->sortKeys($options, true); + } + + /** + * Sort the collection keys using a callback. + * + * @param callable $callback + * @return static + */ + public function sortKeysUsing(callable $callback) + { + $items = $this->items; + + uksort($items, $callback); + + return new static($items); + } + + /** + * Splice a portion of the underlying collection array. + * + * @param int $offset + * @param int|null $length + * @param mixed $replacement + * @return static + */ + public function splice($offset, $length = null, $replacement = []) + { + if (func_num_args() === 1) { + return new static(array_splice($this->items, $offset)); + } + + return new static(array_splice($this->items, $offset, $length, $this->getArrayableItems($replacement))); + } + + /** + * Take the first or last {$limit} items. + * + * @param int $limit + * @return static + */ + public function take($limit) + { + if ($limit < 0) { + return $this->slice($limit, abs($limit)); + } + + return $this->slice(0, $limit); + } + + /** + * Take items in the collection until the given condition is met. + * + * @param mixed $value + * @return static + */ + public function takeUntil($value) + { + return new static($this->lazy()->takeUntil($value)->all()); + } + + /** + * Take items in the collection while the given condition is met. + * + * @param mixed $value + * @return static + */ + public function takeWhile($value) + { + return new static($this->lazy()->takeWhile($value)->all()); + } + + /** + * Transform each item in the collection using a callback. + * + * @param callable $callback + * @return $this + */ + public function transform(callable $callback) + { + $this->items = $this->map($callback)->all(); + + return $this; + } + + /** + * Convert a flatten "dot" notation array into an expanded array. + * + * @return static + */ + public function undot() + { + return new static(Arr::undot($this->all())); + } + + /** + * Return only unique items from the collection array. + * + * @param string|callable|null $key + * @param bool $strict + * @return static + */ + public function unique($key = null, $strict = false) + { + if (is_null($key) && $strict === false) { + return new static(array_unique($this->items, SORT_REGULAR)); + } + + $callback = $this->valueRetriever($key); + + $exists = []; + + return $this->reject(function ($item, $key) use ($callback, $strict, &$exists) { + if (in_array($id = $callback($item, $key), $exists, $strict)) { + return true; + } + + $exists[] = $id; + }); + } + + /** + * Reset the keys on the underlying array. + * + * @return static + */ + public function values() + { + return new static(array_values($this->items)); + } + + /** + * Zip the collection together with one or more arrays. + * + * e.g. new Collection([1, 2, 3])->zip([4, 5, 6]); + * => [[1, 4], [2, 5], [3, 6]] + * + * @param mixed ...$items + * @return static + */ + public function zip($items) + { + $arrayableItems = array_map(function ($items) { + return $this->getArrayableItems($items); + }, func_get_args()); + + $params = array_merge([function () { + return new static(func_get_args()); + }, $this->items], $arrayableItems); + + return new static(array_map(...$params)); + } + + /** + * Pad collection to the specified length with a value. + * + * @param int $size + * @param mixed $value + * @return static + */ + public function pad($size, $value) + { + return new static(array_pad($this->items, $size, $value)); + } + + /** + * Get an iterator for the items. + * + * @return \ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return new ArrayIterator($this->items); + } + + /** + * Count the number of items in the collection. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return count($this->items); + } + + /** + * Count the number of items in the collection by a field or using a callback. + * + * @param callable|string $countBy + * @return static + */ + public function countBy($countBy = null) + { + return new static($this->lazy()->countBy($countBy)->all()); + } + + /** + * Add an item to the collection. + * + * @param mixed $item + * @return $this + */ + public function add($item) + { + $this->items[] = $item; + + return $this; + } + + /** + * Get a base Support collection instance from this collection. + * + * @return \Illuminate\Support\Collection + */ + public function toBase() + { + return new self($this); + } + + /** + * Determine if an item exists at an offset. + * + * @param mixed $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return isset($this->items[$key]); + } + + /** + * Get an item at a given offset. + * + * @param mixed $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->items[$key]; + } + + /** + * Set the item at a given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + if (is_null($key)) { + $this->items[] = $value; + } else { + $this->items[$key] = $value; + } + } + + /** + * Unset the item at a given offset. + * + * @param mixed $key + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + unset($this->items[$key]); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Enumerable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Enumerable.php new file mode 100644 index 00000000000..261a0c856b3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/Enumerable.php @@ -0,0 +1,1027 @@ +zip([4, 5, 6]); + * => [[1, 4], [2, 5], [3, 6]] + * + * @param mixed ...$items + * @return static + */ + public function zip($items); + + /** + * Collect the values into a collection. + * + * @return \Illuminate\Support\Collection + */ + public function collect(); + + /** + * Convert the collection to its string representation. + * + * @return string + */ + public function __toString(); + + /** + * Add a method to the list of proxied methods. + * + * @param string $method + * @return void + */ + public static function proxy($method); + + /** + * Dynamically access collection proxies. + * + * @param string $key + * @return mixed + * + * @throws \Exception + */ + public function __get($key); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderCollectionProxy.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderCollectionProxy.php new file mode 100644 index 00000000000..106356c3acc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderCollectionProxy.php @@ -0,0 +1,63 @@ +method = $method; + $this->collection = $collection; + } + + /** + * Proxy accessing an attribute onto the collection items. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + return $this->collection->{$this->method}(function ($value) use ($key) { + return is_array($value) ? $value[$key] : $value->{$key}; + }); + } + + /** + * Proxy a method call onto the collection items. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->collection->{$this->method}(function ($value) use ($method, $parameters) { + return $value->{$method}(...$parameters); + }); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderWhenProxy.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderWhenProxy.php new file mode 100644 index 00000000000..6653c03a656 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/HigherOrderWhenProxy.php @@ -0,0 +1,63 @@ +condition = $condition; + $this->collection = $collection; + } + + /** + * Proxy accessing an attribute onto the collection. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + return $this->condition + ? $this->collection->{$key} + : $this->collection; + } + + /** + * Proxy a method call onto the collection. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->condition + ? $this->collection->{$method}(...$parameters) + : $this->collection; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/ItemNotFoundException.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/ItemNotFoundException.php new file mode 100644 index 00000000000..05a51d95475 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/ItemNotFoundException.php @@ -0,0 +1,9 @@ +source = $source; + } elseif (is_null($source)) { + $this->source = static::empty(); + } else { + $this->source = $this->getArrayableItems($source); + } + } + + /** + * Create a collection with the given range. + * + * @param int $from + * @param int $to + * @return static + */ + public static function range($from, $to) + { + return new static(function () use ($from, $to) { + if ($from <= $to) { + for (; $from <= $to; $from++) { + yield $from; + } + } else { + for (; $from >= $to; $from--) { + yield $from; + } + } + }); + } + + /** + * Get all items in the enumerable. + * + * @return array + */ + public function all() + { + if (is_array($this->source)) { + return $this->source; + } + + return iterator_to_array($this->getIterator()); + } + + /** + * Eager load all items into a new lazy collection backed by an array. + * + * @return static + */ + public function eager() + { + return new static($this->all()); + } + + /** + * Cache values as they're enumerated. + * + * @return static + */ + public function remember() + { + $iterator = $this->getIterator(); + + $iteratorIndex = 0; + + $cache = []; + + return new static(function () use ($iterator, &$iteratorIndex, &$cache) { + for ($index = 0; true; $index++) { + if (array_key_exists($index, $cache)) { + yield $cache[$index][0] => $cache[$index][1]; + + continue; + } + + if ($iteratorIndex < $index) { + $iterator->next(); + + $iteratorIndex++; + } + + if (! $iterator->valid()) { + break; + } + + $cache[$index] = [$iterator->key(), $iterator->current()]; + + yield $cache[$index][0] => $cache[$index][1]; + } + }); + } + + /** + * Get the average value of a given key. + * + * @param callable|string|null $callback + * @return mixed + */ + public function avg($callback = null) + { + return $this->collect()->avg($callback); + } + + /** + * Get the median of a given key. + * + * @param string|array|null $key + * @return mixed + */ + public function median($key = null) + { + return $this->collect()->median($key); + } + + /** + * Get the mode of a given key. + * + * @param string|array|null $key + * @return array|null + */ + public function mode($key = null) + { + return $this->collect()->mode($key); + } + + /** + * Collapse the collection of items into a single array. + * + * @return static + */ + public function collapse() + { + return new static(function () { + foreach ($this as $values) { + if (is_array($values) || $values instanceof Enumerable) { + foreach ($values as $value) { + yield $value; + } + } + } + }); + } + + /** + * Determine if an item exists in the enumerable. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function contains($key, $operator = null, $value = null) + { + if (func_num_args() === 1 && $this->useAsCallable($key)) { + $placeholder = new stdClass; + + return $this->first($key, $placeholder) !== $placeholder; + } + + if (func_num_args() === 1) { + $needle = $key; + + foreach ($this as $value) { + if ($value == $needle) { + return true; + } + } + + return false; + } + + return $this->contains($this->operatorForWhere(...func_get_args())); + } + + /** + * Determine if an item is not contained in the enumerable. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function doesntContain($key, $operator = null, $value = null) + { + return ! $this->contains(...func_get_args()); + } + + /** + * Cross join the given iterables, returning all possible permutations. + * + * @param array ...$arrays + * @return static + */ + public function crossJoin(...$arrays) + { + return $this->passthru('crossJoin', func_get_args()); + } + + /** + * Count the number of items in the collection by a field or using a callback. + * + * @param callable|string $countBy + * @return static + */ + public function countBy($countBy = null) + { + $countBy = is_null($countBy) + ? $this->identity() + : $this->valueRetriever($countBy); + + return new static(function () use ($countBy) { + $counts = []; + + foreach ($this as $key => $value) { + $group = $countBy($value, $key); + + if (empty($counts[$group])) { + $counts[$group] = 0; + } + + $counts[$group]++; + } + + yield from $counts; + }); + } + + /** + * Get the items that are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diff($items) + { + return $this->passthru('diff', func_get_args()); + } + + /** + * Get the items that are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffUsing($items, callable $callback) + { + return $this->passthru('diffUsing', func_get_args()); + } + + /** + * Get the items whose keys and values are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diffAssoc($items) + { + return $this->passthru('diffAssoc', func_get_args()); + } + + /** + * Get the items whose keys and values are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffAssocUsing($items, callable $callback) + { + return $this->passthru('diffAssocUsing', func_get_args()); + } + + /** + * Get the items whose keys are not present in the given items. + * + * @param mixed $items + * @return static + */ + public function diffKeys($items) + { + return $this->passthru('diffKeys', func_get_args()); + } + + /** + * Get the items whose keys are not present in the given items, using the callback. + * + * @param mixed $items + * @param callable $callback + * @return static + */ + public function diffKeysUsing($items, callable $callback) + { + return $this->passthru('diffKeysUsing', func_get_args()); + } + + /** + * Retrieve duplicate items. + * + * @param callable|string|null $callback + * @param bool $strict + * @return static + */ + public function duplicates($callback = null, $strict = false) + { + return $this->passthru('duplicates', func_get_args()); + } + + /** + * Retrieve duplicate items using strict comparison. + * + * @param callable|string|null $callback + * @return static + */ + public function duplicatesStrict($callback = null) + { + return $this->passthru('duplicatesStrict', func_get_args()); + } + + /** + * Get all items except for those with the specified keys. + * + * @param mixed $keys + * @return static + */ + public function except($keys) + { + return $this->passthru('except', func_get_args()); + } + + /** + * Run a filter over each of the items. + * + * @param callable|null $callback + * @return static + */ + public function filter(callable $callback = null) + { + if (is_null($callback)) { + $callback = function ($value) { + return (bool) $value; + }; + } + + return new static(function () use ($callback) { + foreach ($this as $key => $value) { + if ($callback($value, $key)) { + yield $key => $value; + } + } + }); + } + + /** + * Get the first item from the enumerable passing the given truth test. + * + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public function first(callable $callback = null, $default = null) + { + $iterator = $this->getIterator(); + + if (is_null($callback)) { + if (! $iterator->valid()) { + return value($default); + } + + return $iterator->current(); + } + + foreach ($iterator as $key => $value) { + if ($callback($value, $key)) { + return $value; + } + } + + return value($default); + } + + /** + * Get a flattened list of the items in the collection. + * + * @param int $depth + * @return static + */ + public function flatten($depth = INF) + { + $instance = new static(function () use ($depth) { + foreach ($this as $item) { + if (! is_array($item) && ! $item instanceof Enumerable) { + yield $item; + } elseif ($depth === 1) { + yield from $item; + } else { + yield from (new static($item))->flatten($depth - 1); + } + } + }); + + return $instance->values(); + } + + /** + * Flip the items in the collection. + * + * @return static + */ + public function flip() + { + return new static(function () { + foreach ($this as $key => $value) { + yield $value => $key; + } + }); + } + + /** + * Get an item by key. + * + * @param mixed $key + * @param mixed $default + * @return mixed + */ + public function get($key, $default = null) + { + if (is_null($key)) { + return; + } + + foreach ($this as $outerKey => $outerValue) { + if ($outerKey == $key) { + return $outerValue; + } + } + + return value($default); + } + + /** + * Group an associative array by a field or using a callback. + * + * @param array|callable|string $groupBy + * @param bool $preserveKeys + * @return static + */ + public function groupBy($groupBy, $preserveKeys = false) + { + return $this->passthru('groupBy', func_get_args()); + } + + /** + * Key an associative array by a field or using a callback. + * + * @param callable|string $keyBy + * @return static + */ + public function keyBy($keyBy) + { + return new static(function () use ($keyBy) { + $keyBy = $this->valueRetriever($keyBy); + + foreach ($this as $key => $item) { + $resolvedKey = $keyBy($item, $key); + + if (is_object($resolvedKey)) { + $resolvedKey = (string) $resolvedKey; + } + + yield $resolvedKey => $item; + } + }); + } + + /** + * Determine if an item exists in the collection by key. + * + * @param mixed $key + * @return bool + */ + public function has($key) + { + $keys = array_flip(is_array($key) ? $key : func_get_args()); + $count = count($keys); + + foreach ($this as $key => $value) { + if (array_key_exists($key, $keys) && --$count == 0) { + return true; + } + } + + return false; + } + + /** + * Determine if any of the keys exist in the collection. + * + * @param mixed $key + * @return bool + */ + public function hasAny($key) + { + $keys = array_flip(is_array($key) ? $key : func_get_args()); + + foreach ($this as $key => $value) { + if (array_key_exists($key, $keys)) { + return true; + } + } + + return false; + } + + /** + * Concatenate values of a given key as a string. + * + * @param string $value + * @param string|null $glue + * @return string + */ + public function implode($value, $glue = null) + { + return $this->collect()->implode(...func_get_args()); + } + + /** + * Intersect the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function intersect($items) + { + return $this->passthru('intersect', func_get_args()); + } + + /** + * Intersect the collection with the given items by key. + * + * @param mixed $items + * @return static + */ + public function intersectByKeys($items) + { + return $this->passthru('intersectByKeys', func_get_args()); + } + + /** + * Determine if the items are empty or not. + * + * @return bool + */ + public function isEmpty() + { + return ! $this->getIterator()->valid(); + } + + /** + * Determine if the collection contains a single item. + * + * @return bool + */ + public function containsOneItem() + { + return $this->take(2)->count() === 1; + } + + /** + * Join all items from the collection using a string. The final items can use a separate glue string. + * + * @param string $glue + * @param string $finalGlue + * @return string + */ + public function join($glue, $finalGlue = '') + { + return $this->collect()->join(...func_get_args()); + } + + /** + * Get the keys of the collection items. + * + * @return static + */ + public function keys() + { + return new static(function () { + foreach ($this as $key => $value) { + yield $key; + } + }); + } + + /** + * Get the last item from the collection. + * + * @param callable|null $callback + * @param mixed $default + * @return mixed + */ + public function last(callable $callback = null, $default = null) + { + $needle = $placeholder = new stdClass; + + foreach ($this as $key => $value) { + if (is_null($callback) || $callback($value, $key)) { + $needle = $value; + } + } + + return $needle === $placeholder ? value($default) : $needle; + } + + /** + * Get the values of a given key. + * + * @param string|array $value + * @param string|null $key + * @return static + */ + public function pluck($value, $key = null) + { + return new static(function () use ($value, $key) { + [$value, $key] = $this->explodePluckParameters($value, $key); + + foreach ($this as $item) { + $itemValue = data_get($item, $value); + + if (is_null($key)) { + yield $itemValue; + } else { + $itemKey = data_get($item, $key); + + if (is_object($itemKey) && method_exists($itemKey, '__toString')) { + $itemKey = (string) $itemKey; + } + + yield $itemKey => $itemValue; + } + } + }); + } + + /** + * Run a map over each of the items. + * + * @param callable $callback + * @return static + */ + public function map(callable $callback) + { + return new static(function () use ($callback) { + foreach ($this as $key => $value) { + yield $key => $callback($value, $key); + } + }); + } + + /** + * Run a dictionary map over the items. + * + * The callback should return an associative array with a single key/value pair. + * + * @param callable $callback + * @return static + */ + public function mapToDictionary(callable $callback) + { + return $this->passthru('mapToDictionary', func_get_args()); + } + + /** + * Run an associative map over each of the items. + * + * The callback should return an associative array with a single key/value pair. + * + * @param callable $callback + * @return static + */ + public function mapWithKeys(callable $callback) + { + return new static(function () use ($callback) { + foreach ($this as $key => $value) { + yield from $callback($value, $key); + } + }); + } + + /** + * Merge the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function merge($items) + { + return $this->passthru('merge', func_get_args()); + } + + /** + * Recursively merge the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function mergeRecursive($items) + { + return $this->passthru('mergeRecursive', func_get_args()); + } + + /** + * Create a collection by using this collection for keys and another for its values. + * + * @param mixed $values + * @return static + */ + public function combine($values) + { + return new static(function () use ($values) { + $values = $this->makeIterator($values); + + $errorMessage = 'Both parameters should have an equal number of elements'; + + foreach ($this as $key) { + if (! $values->valid()) { + trigger_error($errorMessage, E_USER_WARNING); + + break; + } + + yield $key => $values->current(); + + $values->next(); + } + + if ($values->valid()) { + trigger_error($errorMessage, E_USER_WARNING); + } + }); + } + + /** + * Union the collection with the given items. + * + * @param mixed $items + * @return static + */ + public function union($items) + { + return $this->passthru('union', func_get_args()); + } + + /** + * Create a new collection consisting of every n-th element. + * + * @param int $step + * @param int $offset + * @return static + */ + public function nth($step, $offset = 0) + { + return new static(function () use ($step, $offset) { + $position = 0; + + foreach ($this->slice($offset) as $item) { + if ($position % $step === 0) { + yield $item; + } + + $position++; + } + }); + } + + /** + * Get the items with the specified keys. + * + * @param mixed $keys + * @return static + */ + public function only($keys) + { + if ($keys instanceof Enumerable) { + $keys = $keys->all(); + } elseif (! is_null($keys)) { + $keys = is_array($keys) ? $keys : func_get_args(); + } + + return new static(function () use ($keys) { + if (is_null($keys)) { + yield from $this; + } else { + $keys = array_flip($keys); + + foreach ($this as $key => $value) { + if (array_key_exists($key, $keys)) { + yield $key => $value; + + unset($keys[$key]); + + if (empty($keys)) { + break; + } + } + } + } + }); + } + + /** + * Push all of the given items onto the collection. + * + * @param iterable $source + * @return static + */ + public function concat($source) + { + return (new static(function () use ($source) { + yield from $this; + yield from $source; + }))->values(); + } + + /** + * Get one or a specified number of items randomly from the collection. + * + * @param int|null $number + * @return static|mixed + * + * @throws \InvalidArgumentException + */ + public function random($number = null) + { + $result = $this->collect()->random(...func_get_args()); + + return is_null($number) ? $result : new static($result); + } + + /** + * Replace the collection items with the given items. + * + * @param mixed $items + * @return static + */ + public function replace($items) + { + return new static(function () use ($items) { + $items = $this->getArrayableItems($items); + + foreach ($this as $key => $value) { + if (array_key_exists($key, $items)) { + yield $key => $items[$key]; + + unset($items[$key]); + } else { + yield $key => $value; + } + } + + foreach ($items as $key => $value) { + yield $key => $value; + } + }); + } + + /** + * Recursively replace the collection items with the given items. + * + * @param mixed $items + * @return static + */ + public function replaceRecursive($items) + { + return $this->passthru('replaceRecursive', func_get_args()); + } + + /** + * Reverse items order. + * + * @return static + */ + public function reverse() + { + return $this->passthru('reverse', func_get_args()); + } + + /** + * Search the collection for a given value and return the corresponding key if successful. + * + * @param mixed $value + * @param bool $strict + * @return mixed + */ + public function search($value, $strict = false) + { + $predicate = $this->useAsCallable($value) + ? $value + : function ($item) use ($value, $strict) { + return $strict ? $item === $value : $item == $value; + }; + + foreach ($this as $key => $item) { + if ($predicate($item, $key)) { + return $key; + } + } + + return false; + } + + /** + * Shuffle the items in the collection. + * + * @param int|null $seed + * @return static + */ + public function shuffle($seed = null) + { + return $this->passthru('shuffle', func_get_args()); + } + + /** + * Create chunks representing a "sliding window" view of the items in the collection. + * + * @param int $size + * @param int $step + * @return static + */ + public function sliding($size = 2, $step = 1) + { + return new static(function () use ($size, $step) { + $iterator = $this->getIterator(); + + $chunk = []; + + while ($iterator->valid()) { + $chunk[$iterator->key()] = $iterator->current(); + + if (count($chunk) == $size) { + yield tap(new static($chunk), function () use (&$chunk, $step) { + $chunk = array_slice($chunk, $step, null, true); + }); + + // If the $step between chunks is bigger than each chunk's $size + // we will skip the extra items (which should never be in any + // chunk) before we continue to the next chunk in the loop. + if ($step > $size) { + $skip = $step - $size; + + for ($i = 0; $i < $skip && $iterator->valid(); $i++) { + $iterator->next(); + } + } + } + + $iterator->next(); + } + }); + } + + /** + * Skip the first {$count} items. + * + * @param int $count + * @return static + */ + public function skip($count) + { + return new static(function () use ($count) { + $iterator = $this->getIterator(); + + while ($iterator->valid() && $count--) { + $iterator->next(); + } + + while ($iterator->valid()) { + yield $iterator->key() => $iterator->current(); + + $iterator->next(); + } + }); + } + + /** + * Skip items in the collection until the given condition is met. + * + * @param mixed $value + * @return static + */ + public function skipUntil($value) + { + $callback = $this->useAsCallable($value) ? $value : $this->equality($value); + + return $this->skipWhile($this->negate($callback)); + } + + /** + * Skip items in the collection while the given condition is met. + * + * @param mixed $value + * @return static + */ + public function skipWhile($value) + { + $callback = $this->useAsCallable($value) ? $value : $this->equality($value); + + return new static(function () use ($callback) { + $iterator = $this->getIterator(); + + while ($iterator->valid() && $callback($iterator->current(), $iterator->key())) { + $iterator->next(); + } + + while ($iterator->valid()) { + yield $iterator->key() => $iterator->current(); + + $iterator->next(); + } + }); + } + + /** + * Get a slice of items from the enumerable. + * + * @param int $offset + * @param int|null $length + * @return static + */ + public function slice($offset, $length = null) + { + if ($offset < 0 || $length < 0) { + return $this->passthru('slice', func_get_args()); + } + + $instance = $this->skip($offset); + + return is_null($length) ? $instance : $instance->take($length); + } + + /** + * Split a collection into a certain number of groups. + * + * @param int $numberOfGroups + * @return static + */ + public function split($numberOfGroups) + { + return $this->passthru('split', func_get_args()); + } + + /** + * Get the first item in the collection, but only if exactly one item exists. Otherwise, throw an exception. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return mixed + * + * @throws \Illuminate\Support\ItemNotFoundException + * @throws \Illuminate\Support\MultipleItemsFoundException + */ + public function sole($key = null, $operator = null, $value = null) + { + $filter = func_num_args() > 1 + ? $this->operatorForWhere(...func_get_args()) + : $key; + + return $this + ->when($filter) + ->filter($filter) + ->take(2) + ->collect() + ->sole(); + } + + /** + * Get the first item in the collection but throw an exception if no matching items exist. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return mixed + * + * @throws \Illuminate\Support\ItemNotFoundException + */ + public function firstOrFail($key = null, $operator = null, $value = null) + { + $filter = func_num_args() > 1 + ? $this->operatorForWhere(...func_get_args()) + : $key; + + return $this + ->when($filter) + ->filter($filter) + ->take(1) + ->collect() + ->firstOrFail(); + } + + /** + * Chunk the collection into chunks of the given size. + * + * @param int $size + * @return static + */ + public function chunk($size) + { + if ($size <= 0) { + return static::empty(); + } + + return new static(function () use ($size) { + $iterator = $this->getIterator(); + + while ($iterator->valid()) { + $chunk = []; + + while (true) { + $chunk[$iterator->key()] = $iterator->current(); + + if (count($chunk) < $size) { + $iterator->next(); + + if (! $iterator->valid()) { + break; + } + } else { + break; + } + } + + yield new static($chunk); + + $iterator->next(); + } + }); + } + + /** + * Split a collection into a certain number of groups, and fill the first groups completely. + * + * @param int $numberOfGroups + * @return static + */ + public function splitIn($numberOfGroups) + { + return $this->chunk(ceil($this->count() / $numberOfGroups)); + } + + /** + * Chunk the collection into chunks with a callback. + * + * @param callable $callback + * @return static + */ + public function chunkWhile(callable $callback) + { + return new static(function () use ($callback) { + $iterator = $this->getIterator(); + + $chunk = new Collection; + + if ($iterator->valid()) { + $chunk[$iterator->key()] = $iterator->current(); + + $iterator->next(); + } + + while ($iterator->valid()) { + if (! $callback($iterator->current(), $iterator->key(), $chunk)) { + yield new static($chunk); + + $chunk = new Collection; + } + + $chunk[$iterator->key()] = $iterator->current(); + + $iterator->next(); + } + + if ($chunk->isNotEmpty()) { + yield new static($chunk); + } + }); + } + + /** + * Sort through each item with a callback. + * + * @param callable|null|int $callback + * @return static + */ + public function sort($callback = null) + { + return $this->passthru('sort', func_get_args()); + } + + /** + * Sort items in descending order. + * + * @param int $options + * @return static + */ + public function sortDesc($options = SORT_REGULAR) + { + return $this->passthru('sortDesc', func_get_args()); + } + + /** + * Sort the collection using the given callback. + * + * @param callable|string $callback + * @param int $options + * @param bool $descending + * @return static + */ + public function sortBy($callback, $options = SORT_REGULAR, $descending = false) + { + return $this->passthru('sortBy', func_get_args()); + } + + /** + * Sort the collection in descending order using the given callback. + * + * @param callable|string $callback + * @param int $options + * @return static + */ + public function sortByDesc($callback, $options = SORT_REGULAR) + { + return $this->passthru('sortByDesc', func_get_args()); + } + + /** + * Sort the collection keys. + * + * @param int $options + * @param bool $descending + * @return static + */ + public function sortKeys($options = SORT_REGULAR, $descending = false) + { + return $this->passthru('sortKeys', func_get_args()); + } + + /** + * Sort the collection keys in descending order. + * + * @param int $options + * @return static + */ + public function sortKeysDesc($options = SORT_REGULAR) + { + return $this->passthru('sortKeysDesc', func_get_args()); + } + + /** + * Sort the collection keys using a callback. + * + * @param callable $callback + * @return static + */ + public function sortKeysUsing(callable $callback) + { + return $this->passthru('sortKeysUsing', func_get_args()); + } + + /** + * Take the first or last {$limit} items. + * + * @param int $limit + * @return static + */ + public function take($limit) + { + if ($limit < 0) { + return $this->passthru('take', func_get_args()); + } + + return new static(function () use ($limit) { + $iterator = $this->getIterator(); + + while ($limit--) { + if (! $iterator->valid()) { + break; + } + + yield $iterator->key() => $iterator->current(); + + if ($limit) { + $iterator->next(); + } + } + }); + } + + /** + * Take items in the collection until the given condition is met. + * + * @param mixed $value + * @return static + */ + public function takeUntil($value) + { + $callback = $this->useAsCallable($value) ? $value : $this->equality($value); + + return new static(function () use ($callback) { + foreach ($this as $key => $item) { + if ($callback($item, $key)) { + break; + } + + yield $key => $item; + } + }); + } + + /** + * Take items in the collection until a given point in time. + * + * @param \DateTimeInterface $timeout + * @return static + */ + public function takeUntilTimeout(DateTimeInterface $timeout) + { + $timeout = $timeout->getTimestamp(); + + return $this->takeWhile(function () use ($timeout) { + return $this->now() < $timeout; + }); + } + + /** + * Take items in the collection while the given condition is met. + * + * @param mixed $value + * @return static + */ + public function takeWhile($value) + { + $callback = $this->useAsCallable($value) ? $value : $this->equality($value); + + return $this->takeUntil(function ($item, $key) use ($callback) { + return ! $callback($item, $key); + }); + } + + /** + * Pass each item in the collection to the given callback, lazily. + * + * @param callable $callback + * @return static + */ + public function tapEach(callable $callback) + { + return new static(function () use ($callback) { + foreach ($this as $key => $value) { + $callback($value, $key); + + yield $key => $value; + } + }); + } + + /** + * Convert a flatten "dot" notation array into an expanded array. + * + * @return static + */ + public function undot() + { + return $this->passthru('undot', []); + } + + /** + * Return only unique items from the collection array. + * + * @param string|callable|null $key + * @param bool $strict + * @return static + */ + public function unique($key = null, $strict = false) + { + $callback = $this->valueRetriever($key); + + return new static(function () use ($callback, $strict) { + $exists = []; + + foreach ($this as $key => $item) { + if (! in_array($id = $callback($item, $key), $exists, $strict)) { + yield $key => $item; + + $exists[] = $id; + } + } + }); + } + + /** + * Reset the keys on the underlying array. + * + * @return static + */ + public function values() + { + return new static(function () { + foreach ($this as $item) { + yield $item; + } + }); + } + + /** + * Zip the collection together with one or more arrays. + * + * e.g. new LazyCollection([1, 2, 3])->zip([4, 5, 6]); + * => [[1, 4], [2, 5], [3, 6]] + * + * @param mixed ...$items + * @return static + */ + public function zip($items) + { + $iterables = func_get_args(); + + return new static(function () use ($iterables) { + $iterators = Collection::make($iterables)->map(function ($iterable) { + return $this->makeIterator($iterable); + })->prepend($this->getIterator()); + + while ($iterators->contains->valid()) { + yield new static($iterators->map->current()); + + $iterators->each->next(); + } + }); + } + + /** + * Pad collection to the specified length with a value. + * + * @param int $size + * @param mixed $value + * @return static + */ + public function pad($size, $value) + { + if ($size < 0) { + return $this->passthru('pad', func_get_args()); + } + + return new static(function () use ($size, $value) { + $yielded = 0; + + foreach ($this as $index => $item) { + yield $index => $item; + + $yielded++; + } + + while ($yielded++ < $size) { + yield $value; + } + }); + } + + /** + * Get the values iterator. + * + * @return \Traversable + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return $this->makeIterator($this->source); + } + + /** + * Count the number of items in the collection. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + if (is_array($this->source)) { + return count($this->source); + } + + return iterator_count($this->getIterator()); + } + + /** + * Make an iterator from the given source. + * + * @param mixed $source + * @return \Traversable + */ + protected function makeIterator($source) + { + if ($source instanceof IteratorAggregate) { + return $source->getIterator(); + } + + if (is_array($source)) { + return new ArrayIterator($source); + } + + return $source(); + } + + /** + * Explode the "value" and "key" arguments passed to "pluck". + * + * @param string|array $value + * @param string|array|null $key + * @return array + */ + protected function explodePluckParameters($value, $key) + { + $value = is_string($value) ? explode('.', $value) : $value; + + $key = is_null($key) || is_array($key) ? $key : explode('.', $key); + + return [$value, $key]; + } + + /** + * Pass this lazy collection through a method on the collection class. + * + * @param string $method + * @param array $params + * @return static + */ + protected function passthru($method, array $params) + { + return new static(function () use ($method, $params) { + yield from $this->collect()->$method(...$params); + }); + } + + /** + * Get the current time. + * + * @return int + */ + protected function now() + { + return time(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/MultipleItemsFoundException.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/MultipleItemsFoundException.php new file mode 100644 index 00000000000..944b2dc6413 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/MultipleItemsFoundException.php @@ -0,0 +1,9 @@ +all() : $value; + } + + /** + * Create a new instance with no items. + * + * @return static + */ + public static function empty() + { + return new static([]); + } + + /** + * Create a new collection by invoking the callback a given amount of times. + * + * @param int $number + * @param callable|null $callback + * @return static + */ + public static function times($number, callable $callback = null) + { + if ($number < 1) { + return new static; + } + + return static::range(1, $number) + ->when($callback) + ->map($callback); + } + + /** + * Alias for the "avg" method. + * + * @param callable|string|null $callback + * @return mixed + */ + public function average($callback = null) + { + return $this->avg($callback); + } + + /** + * Alias for the "contains" method. + * + * @param mixed $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function some($key, $operator = null, $value = null) + { + return $this->contains(...func_get_args()); + } + + /** + * Determine if an item exists, using strict comparison. + * + * @param mixed $key + * @param mixed $value + * @return bool + */ + public function containsStrict($key, $value = null) + { + if (func_num_args() === 2) { + return $this->contains(function ($item) use ($key, $value) { + return data_get($item, $key) === $value; + }); + } + + if ($this->useAsCallable($key)) { + return ! is_null($this->first($key)); + } + + foreach ($this as $item) { + if ($item === $key) { + return true; + } + } + + return false; + } + + /** + * Dump the items and end the script. + * + * @param mixed ...$args + * @return void + */ + public function dd(...$args) + { + $this->dump(...$args); + + exit(1); + } + + /** + * Dump the items. + * + * @return $this + */ + public function dump() + { + (new Collection(func_get_args())) + ->push($this->all()) + ->each(function ($item) { + VarDumper::dump($item); + }); + + return $this; + } + + /** + * Execute a callback over each item. + * + * @param callable $callback + * @return $this + */ + public function each(callable $callback) + { + foreach ($this as $key => $item) { + if ($callback($item, $key) === false) { + break; + } + } + + return $this; + } + + /** + * Execute a callback over each nested chunk of items. + * + * @param callable $callback + * @return static + */ + public function eachSpread(callable $callback) + { + return $this->each(function ($chunk, $key) use ($callback) { + $chunk[] = $key; + + return $callback(...$chunk); + }); + } + + /** + * Determine if all items pass the given truth test. + * + * @param string|callable $key + * @param mixed $operator + * @param mixed $value + * @return bool + */ + public function every($key, $operator = null, $value = null) + { + if (func_num_args() === 1) { + $callback = $this->valueRetriever($key); + + foreach ($this as $k => $v) { + if (! $callback($v, $k)) { + return false; + } + } + + return true; + } + + return $this->every($this->operatorForWhere(...func_get_args())); + } + + /** + * Get the first item by the given key value pair. + * + * @param string $key + * @param mixed $operator + * @param mixed $value + * @return mixed + */ + public function firstWhere($key, $operator = null, $value = null) + { + return $this->first($this->operatorForWhere(...func_get_args())); + } + + /** + * Determine if the collection is not empty. + * + * @return bool + */ + public function isNotEmpty() + { + return ! $this->isEmpty(); + } + + /** + * Run a map over each nested chunk of items. + * + * @param callable $callback + * @return static + */ + public function mapSpread(callable $callback) + { + return $this->map(function ($chunk, $key) use ($callback) { + $chunk[] = $key; + + return $callback(...$chunk); + }); + } + + /** + * Run a grouping map over the items. + * + * The callback should return an associative array with a single key/value pair. + * + * @param callable $callback + * @return static + */ + public function mapToGroups(callable $callback) + { + $groups = $this->mapToDictionary($callback); + + return $groups->map([$this, 'make']); + } + + /** + * Map a collection and flatten the result by a single level. + * + * @param callable $callback + * @return static + */ + public function flatMap(callable $callback) + { + return $this->map($callback)->collapse(); + } + + /** + * Map the values into a new class. + * + * @param string $class + * @return static + */ + public function mapInto($class) + { + return $this->map(function ($value, $key) use ($class) { + return new $class($value, $key); + }); + } + + /** + * Get the min value of a given key. + * + * @param callable|string|null $callback + * @return mixed + */ + public function min($callback = null) + { + $callback = $this->valueRetriever($callback); + + return $this->map(function ($value) use ($callback) { + return $callback($value); + })->filter(function ($value) { + return ! is_null($value); + })->reduce(function ($result, $value) { + return is_null($result) || $value < $result ? $value : $result; + }); + } + + /** + * Get the max value of a given key. + * + * @param callable|string|null $callback + * @return mixed + */ + public function max($callback = null) + { + $callback = $this->valueRetriever($callback); + + return $this->filter(function ($value) { + return ! is_null($value); + })->reduce(function ($result, $item) use ($callback) { + $value = $callback($item); + + return is_null($result) || $value > $result ? $value : $result; + }); + } + + /** + * "Paginate" the collection by slicing it into a smaller collection. + * + * @param int $page + * @param int $perPage + * @return static + */ + public function forPage($page, $perPage) + { + $offset = max(0, ($page - 1) * $perPage); + + return $this->slice($offset, $perPage); + } + + /** + * Partition the collection into two arrays using the given callback or key. + * + * @param callable|string $key + * @param mixed $operator + * @param mixed $value + * @return static + */ + public function partition($key, $operator = null, $value = null) + { + $passed = []; + $failed = []; + + $callback = func_num_args() === 1 + ? $this->valueRetriever($key) + : $this->operatorForWhere(...func_get_args()); + + foreach ($this as $key => $item) { + if ($callback($item, $key)) { + $passed[$key] = $item; + } else { + $failed[$key] = $item; + } + } + + return new static([new static($passed), new static($failed)]); + } + + /** + * Get the sum of the given values. + * + * @param callable|string|null $callback + * @return mixed + */ + public function sum($callback = null) + { + $callback = is_null($callback) + ? $this->identity() + : $this->valueRetriever($callback); + + return $this->reduce(function ($result, $item) use ($callback) { + return $result + $callback($item); + }, 0); + } + + /** + * Apply the callback if the value is truthy. + * + * @param bool|mixed $value + * @param callable|null $callback + * @param callable|null $default + * @return static|mixed + */ + public function when($value, callable $callback = null, callable $default = null) + { + if (! $callback) { + return new HigherOrderWhenProxy($this, $value); + } + + if ($value) { + return $callback($this, $value); + } elseif ($default) { + return $default($this, $value); + } + + return $this; + } + + /** + * Apply the callback if the collection is empty. + * + * @param callable $callback + * @param callable|null $default + * @return static|mixed + */ + public function whenEmpty(callable $callback, callable $default = null) + { + return $this->when($this->isEmpty(), $callback, $default); + } + + /** + * Apply the callback if the collection is not empty. + * + * @param callable $callback + * @param callable|null $default + * @return static|mixed + */ + public function whenNotEmpty(callable $callback, callable $default = null) + { + return $this->when($this->isNotEmpty(), $callback, $default); + } + + /** + * Apply the callback if the value is falsy. + * + * @param bool $value + * @param callable $callback + * @param callable|null $default + * @return static|mixed + */ + public function unless($value, callable $callback, callable $default = null) + { + return $this->when(! $value, $callback, $default); + } + + /** + * Apply the callback unless the collection is empty. + * + * @param callable $callback + * @param callable|null $default + * @return static|mixed + */ + public function unlessEmpty(callable $callback, callable $default = null) + { + return $this->whenNotEmpty($callback, $default); + } + + /** + * Apply the callback unless the collection is not empty. + * + * @param callable $callback + * @param callable|null $default + * @return static|mixed + */ + public function unlessNotEmpty(callable $callback, callable $default = null) + { + return $this->whenEmpty($callback, $default); + } + + /** + * Filter items by the given key value pair. + * + * @param string $key + * @param mixed $operator + * @param mixed $value + * @return static + */ + public function where($key, $operator = null, $value = null) + { + return $this->filter($this->operatorForWhere(...func_get_args())); + } + + /** + * Filter items where the value for the given key is null. + * + * @param string|null $key + * @return static + */ + public function whereNull($key = null) + { + return $this->whereStrict($key, null); + } + + /** + * Filter items where the value for the given key is not null. + * + * @param string|null $key + * @return static + */ + public function whereNotNull($key = null) + { + return $this->where($key, '!==', null); + } + + /** + * Filter items by the given key value pair using strict comparison. + * + * @param string $key + * @param mixed $value + * @return static + */ + public function whereStrict($key, $value) + { + return $this->where($key, '===', $value); + } + + /** + * Filter items by the given key value pair. + * + * @param string $key + * @param mixed $values + * @param bool $strict + * @return static + */ + public function whereIn($key, $values, $strict = false) + { + $values = $this->getArrayableItems($values); + + return $this->filter(function ($item) use ($key, $values, $strict) { + return in_array(data_get($item, $key), $values, $strict); + }); + } + + /** + * Filter items by the given key value pair using strict comparison. + * + * @param string $key + * @param mixed $values + * @return static + */ + public function whereInStrict($key, $values) + { + return $this->whereIn($key, $values, true); + } + + /** + * Filter items such that the value of the given key is between the given values. + * + * @param string $key + * @param array $values + * @return static + */ + public function whereBetween($key, $values) + { + return $this->where($key, '>=', reset($values))->where($key, '<=', end($values)); + } + + /** + * Filter items such that the value of the given key is not between the given values. + * + * @param string $key + * @param array $values + * @return static + */ + public function whereNotBetween($key, $values) + { + return $this->filter(function ($item) use ($key, $values) { + return data_get($item, $key) < reset($values) || data_get($item, $key) > end($values); + }); + } + + /** + * Filter items by the given key value pair. + * + * @param string $key + * @param mixed $values + * @param bool $strict + * @return static + */ + public function whereNotIn($key, $values, $strict = false) + { + $values = $this->getArrayableItems($values); + + return $this->reject(function ($item) use ($key, $values, $strict) { + return in_array(data_get($item, $key), $values, $strict); + }); + } + + /** + * Filter items by the given key value pair using strict comparison. + * + * @param string $key + * @param mixed $values + * @return static + */ + public function whereNotInStrict($key, $values) + { + return $this->whereNotIn($key, $values, true); + } + + /** + * Filter the items, removing any items that don't match the given type(s). + * + * @param string|string[] $type + * @return static + */ + public function whereInstanceOf($type) + { + return $this->filter(function ($value) use ($type) { + if (is_array($type)) { + foreach ($type as $classType) { + if ($value instanceof $classType) { + return true; + } + } + + return false; + } + + return $value instanceof $type; + }); + } + + /** + * Pass the collection to the given callback and return the result. + * + * @param callable $callback + * @return mixed + */ + public function pipe(callable $callback) + { + return $callback($this); + } + + /** + * Pass the collection into a new class. + * + * @param string $class + * @return mixed + */ + public function pipeInto($class) + { + return new $class($this); + } + + /** + * Pass the collection through a series of callable pipes and return the result. + * + * @param array $pipes + * @return mixed + */ + public function pipeThrough($pipes) + { + return static::make($pipes)->reduce( + function ($carry, $pipe) { + return $pipe($carry); + }, + $this, + ); + } + + /** + * Pass the collection to the given callback and then return it. + * + * @param callable $callback + * @return $this + */ + public function tap(callable $callback) + { + $callback(clone $this); + + return $this; + } + + /** + * Reduce the collection to a single value. + * + * @param callable $callback + * @param mixed $initial + * @return mixed + */ + public function reduce(callable $callback, $initial = null) + { + $result = $initial; + + foreach ($this as $key => $value) { + $result = $callback($result, $value, $key); + } + + return $result; + } + + /** + * Reduce the collection to multiple aggregate values. + * + * @param callable $callback + * @param mixed ...$initial + * @return array + * + * @deprecated Use "reduceSpread" instead + * + * @throws \UnexpectedValueException + */ + public function reduceMany(callable $callback, ...$initial) + { + return $this->reduceSpread($callback, ...$initial); + } + + /** + * Reduce the collection to multiple aggregate values. + * + * @param callable $callback + * @param mixed ...$initial + * @return array + * + * @throws \UnexpectedValueException + */ + public function reduceSpread(callable $callback, ...$initial) + { + $result = $initial; + + foreach ($this as $key => $value) { + $result = call_user_func_array($callback, array_merge($result, [$value, $key])); + + if (! is_array($result)) { + throw new UnexpectedValueException(sprintf( + "%s::reduceMany expects reducer to return an array, but got a '%s' instead.", + class_basename(static::class), gettype($result) + )); + } + } + + return $result; + } + + /** + * Reduce an associative collection to a single value. + * + * @param callable $callback + * @param mixed $initial + * @return mixed + */ + public function reduceWithKeys(callable $callback, $initial = null) + { + return $this->reduce($callback, $initial); + } + + /** + * Create a collection of all elements that do not pass a given truth test. + * + * @param callable|mixed $callback + * @return static + */ + public function reject($callback = true) + { + $useAsCallable = $this->useAsCallable($callback); + + return $this->filter(function ($value, $key) use ($callback, $useAsCallable) { + return $useAsCallable + ? ! $callback($value, $key) + : $value != $callback; + }); + } + + /** + * Return only unique items from the collection array using strict comparison. + * + * @param string|callable|null $key + * @return static + */ + public function uniqueStrict($key = null) + { + return $this->unique($key, true); + } + + /** + * Collect the values into a collection. + * + * @return \Illuminate\Support\Collection + */ + public function collect() + { + return new Collection($this->all()); + } + + /** + * Get the collection of items as a plain array. + * + * @return array + */ + public function toArray() + { + return $this->map(function ($value) { + return $value instanceof Arrayable ? $value->toArray() : $value; + })->all(); + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return array_map(function ($value) { + if ($value instanceof JsonSerializable) { + return $value->jsonSerialize(); + } elseif ($value instanceof Jsonable) { + return json_decode($value->toJson(), true); + } elseif ($value instanceof Arrayable) { + return $value->toArray(); + } + + return $value; + }, $this->all()); + } + + /** + * Get the collection of items as JSON. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } + + /** + * Get a CachingIterator instance. + * + * @param int $flags + * @return \CachingIterator + */ + public function getCachingIterator($flags = CachingIterator::CALL_TOSTRING) + { + return new CachingIterator($this->getIterator(), $flags); + } + + /** + * Convert the collection to its string representation. + * + * @return string + */ + public function __toString() + { + return $this->escapeWhenCastingToString + ? e($this->toJson()) + : $this->toJson(); + } + + /** + * Indicate that the model's string representation should be escaped when __toString is invoked. + * + * @param bool $escape + * @return $this + */ + public function escapeWhenCastingToString($escape = true) + { + $this->escapeWhenCastingToString = $escape; + + return $this; + } + + /** + * Add a method to the list of proxied methods. + * + * @param string $method + * @return void + */ + public static function proxy($method) + { + static::$proxies[] = $method; + } + + /** + * Dynamically access collection proxies. + * + * @param string $key + * @return mixed + * + * @throws \Exception + */ + public function __get($key) + { + if (! in_array($key, static::$proxies)) { + throw new Exception("Property [{$key}] does not exist on this collection instance."); + } + + return new HigherOrderCollectionProxy($this, $key); + } + + /** + * Results array of items from Collection or Arrayable. + * + * @param mixed $items + * @return array + */ + protected function getArrayableItems($items) + { + if (is_array($items)) { + return $items; + } elseif ($items instanceof Enumerable) { + return $items->all(); + } elseif ($items instanceof Arrayable) { + return $items->toArray(); + } elseif ($items instanceof Jsonable) { + return json_decode($items->toJson(), true); + } elseif ($items instanceof JsonSerializable) { + return (array) $items->jsonSerialize(); + } elseif ($items instanceof Traversable) { + return iterator_to_array($items); + } elseif ($items instanceof UnitEnum) { + return [$items]; + } + + return (array) $items; + } + + /** + * Get an operator checker callback. + * + * @param string $key + * @param string|null $operator + * @param mixed $value + * @return \Closure + */ + protected function operatorForWhere($key, $operator = null, $value = null) + { + if (func_num_args() === 1) { + $value = true; + + $operator = '='; + } + + if (func_num_args() === 2) { + $value = $operator; + + $operator = '='; + } + + return function ($item) use ($key, $operator, $value) { + $retrieved = data_get($item, $key); + + $strings = array_filter([$retrieved, $value], function ($value) { + return is_string($value) || (is_object($value) && method_exists($value, '__toString')); + }); + + if (count($strings) < 2 && count(array_filter([$retrieved, $value], 'is_object')) == 1) { + return in_array($operator, ['!=', '<>', '!==']); + } + + switch ($operator) { + default: + case '=': + case '==': return $retrieved == $value; + case '!=': + case '<>': return $retrieved != $value; + case '<': return $retrieved < $value; + case '>': return $retrieved > $value; + case '<=': return $retrieved <= $value; + case '>=': return $retrieved >= $value; + case '===': return $retrieved === $value; + case '!==': return $retrieved !== $value; + } + }; + } + + /** + * Determine if the given value is callable, but not a string. + * + * @param mixed $value + * @return bool + */ + protected function useAsCallable($value) + { + return ! is_string($value) && is_callable($value); + } + + /** + * Get a value retrieving callback. + * + * @param callable|string|null $value + * @return callable + */ + protected function valueRetriever($value) + { + if ($this->useAsCallable($value)) { + return $value; + } + + return function ($item) use ($value) { + return data_get($item, $value); + }; + } + + /** + * Make a function to check an item's equality. + * + * @param mixed $value + * @return \Closure + */ + protected function equality($value) + { + return function ($item) use ($value) { + return $item === $value; + }; + } + + /** + * Make a function using another function, by negating its result. + * + * @param \Closure $callback + * @return \Closure + */ + protected function negate(Closure $callback) + { + return function (...$params) use ($callback) { + return ! $callback(...$params); + }; + } + + /** + * Make a function that returns what's passed to it. + * + * @return \Closure + */ + protected function identity() + { + return function ($value) { + return $value; + }; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/composer.json b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/composer.json new file mode 100644 index 00000000000..ecc45372663 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/composer.json @@ -0,0 +1,41 @@ +{ + "name": "illuminate/collections", + "description": "The Illuminate Collections package.", + "license": "MIT", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "require": { + "php": "^7.3|^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0" + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + }, + "files": [ + "helpers.php" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "suggest": { + "symfony/var-dumper": "Required to use the dump method (^5.4)." + }, + "config": { + "sort-packages": true + }, + "minimum-stability": "dev" +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/helpers.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/helpers.php new file mode 100644 index 00000000000..67669e5ce1c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/collections/helpers.php @@ -0,0 +1,186 @@ + $segment) { + unset($key[$i]); + + if (is_null($segment)) { + return $target; + } + + if ($segment === '*') { + if ($target instanceof Collection) { + $target = $target->all(); + } elseif (! is_array($target)) { + return value($default); + } + + $result = []; + + foreach ($target as $item) { + $result[] = data_get($item, $key); + } + + return in_array('*', $key) ? Arr::collapse($result) : $result; + } + + if (Arr::accessible($target) && Arr::exists($target, $segment)) { + $target = $target[$segment]; + } elseif (is_object($target) && isset($target->{$segment})) { + $target = $target->{$segment}; + } else { + return value($default); + } + } + + return $target; + } +} + +if (! function_exists('data_set')) { + /** + * Set an item on an array or object using dot notation. + * + * @param mixed $target + * @param string|array $key + * @param mixed $value + * @param bool $overwrite + * @return mixed + */ + function data_set(&$target, $key, $value, $overwrite = true) + { + $segments = is_array($key) ? $key : explode('.', $key); + + if (($segment = array_shift($segments)) === '*') { + if (! Arr::accessible($target)) { + $target = []; + } + + if ($segments) { + foreach ($target as &$inner) { + data_set($inner, $segments, $value, $overwrite); + } + } elseif ($overwrite) { + foreach ($target as &$inner) { + $inner = $value; + } + } + } elseif (Arr::accessible($target)) { + if ($segments) { + if (! Arr::exists($target, $segment)) { + $target[$segment] = []; + } + + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ($overwrite || ! Arr::exists($target, $segment)) { + $target[$segment] = $value; + } + } elseif (is_object($target)) { + if ($segments) { + if (! isset($target->{$segment})) { + $target->{$segment} = []; + } + + data_set($target->{$segment}, $segments, $value, $overwrite); + } elseif ($overwrite || ! isset($target->{$segment})) { + $target->{$segment} = $value; + } + } else { + $target = []; + + if ($segments) { + data_set($target[$segment], $segments, $value, $overwrite); + } elseif ($overwrite) { + $target[$segment] = $value; + } + } + + return $target; + } +} + +if (! function_exists('head')) { + /** + * Get the first element of an array. Useful for method chaining. + * + * @param array $array + * @return mixed + */ + function head($array) + { + return reset($array); + } +} + +if (! function_exists('last')) { + /** + * Get the last element from an array. + * + * @param array $array + * @return mixed + */ + function last($array) + { + return end($array); + } +} + +if (! function_exists('value')) { + /** + * Return the default value of the given value. + * + * @param mixed $value + * @return mixed + */ + function value($value, ...$args) + { + return $value instanceof Closure ? $value(...$args) : $value; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Auth/Access/Authorizable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Auth/Access/Authorizable.php new file mode 100644 index 00000000000..cedeb6ea344 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Auth/Access/Authorizable.php @@ -0,0 +1,15 @@ +id = $id; + $this->class = $class; + $this->relations = $relations; + $this->connection = $connection; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Debug/ExceptionHandler.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Debug/ExceptionHandler.php new file mode 100644 index 00000000000..54381a179af --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/contracts/Debug/ExceptionHandler.php @@ -0,0 +1,46 @@ +getMethods( + ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED + ); + + foreach ($methods as $method) { + if ($replace || ! static::hasMacro($method->name)) { + $method->setAccessible(true); + static::macro($method->name, $method->invoke($mixin)); + } + } + } + + /** + * Checks if macro is registered. + * + * @param string $name + * @return bool + */ + public static function hasMacro($name) + { + return isset(static::$macros[$name]); + } + + /** + * Flush the existing macros. + * + * @return void + */ + public static function flushMacros() + { + static::$macros = []; + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * + * @throws \BadMethodCallException + */ + public static function __callStatic($method, $parameters) + { + if (! static::hasMacro($method)) { + throw new BadMethodCallException(sprintf( + 'Method %s::%s does not exist.', static::class, $method + )); + } + + $macro = static::$macros[$method]; + + if ($macro instanceof Closure) { + $macro = $macro->bindTo(null, static::class); + } + + return $macro(...$parameters); + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method + * @param array $parameters + * @return mixed + * + * @throws \BadMethodCallException + */ + public function __call($method, $parameters) + { + if (! static::hasMacro($method)) { + throw new BadMethodCallException(sprintf( + 'Method %s::%s does not exist.', static::class, $method + )); + } + + $macro = static::$macros[$method]; + + if ($macro instanceof Closure) { + $macro = $macro->bindTo($this, static::class); + } + + return $macro(...$parameters); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/macroable/composer.json b/htdocs/includes/webklex/php-imap/vendor/illuminate/macroable/composer.json new file mode 100644 index 00000000000..dfa5c62be19 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/macroable/composer.json @@ -0,0 +1,33 @@ +{ + "name": "illuminate/macroable", + "description": "The Illuminate Macroable package.", + "license": "MIT", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "require": { + "php": "^7.3|^8.0" + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "config": { + "sort-packages": true + }, + "minimum-stability": "dev" +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractCursorPaginator.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractCursorPaginator.php new file mode 100644 index 00000000000..12344850b95 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractCursorPaginator.php @@ -0,0 +1,676 @@ +cursorName => $cursor->encode()]; + + if (count($this->query) > 0) { + $parameters = array_merge($this->query, $parameters); + } + + return $this->path() + .(Str::contains($this->path(), '?') ? '&' : '?') + .Arr::query($parameters) + .$this->buildFragment(); + } + + /** + * Get the URL for the previous page. + * + * @return string|null + */ + public function previousPageUrl() + { + if (is_null($previousCursor = $this->previousCursor())) { + return null; + } + + return $this->url($previousCursor); + } + + /** + * The URL for the next page, or null. + * + * @return string|null + */ + public function nextPageUrl() + { + if (is_null($nextCursor = $this->nextCursor())) { + return null; + } + + return $this->url($nextCursor); + } + + /** + * Get the "cursor" that points to the previous set of items. + * + * @return \Illuminate\Pagination\Cursor|null + */ + public function previousCursor() + { + if (is_null($this->cursor) || + ($this->cursor->pointsToPreviousItems() && ! $this->hasMore)) { + return null; + } + + if ($this->items->isEmpty()) { + return null; + } + + return $this->getCursorForItem($this->items->first(), false); + } + + /** + * Get the "cursor" that points to the next set of items. + * + * @return \Illuminate\Pagination\Cursor|null + */ + public function nextCursor() + { + if ((is_null($this->cursor) && ! $this->hasMore) || + (! is_null($this->cursor) && $this->cursor->pointsToNextItems() && ! $this->hasMore)) { + return null; + } + + if ($this->items->isEmpty()) { + return null; + } + + return $this->getCursorForItem($this->items->last(), true); + } + + /** + * Get a cursor instance for the given item. + * + * @param \ArrayAccess|\stdClass $item + * @param bool $isNext + * @return \Illuminate\Pagination\Cursor + */ + public function getCursorForItem($item, $isNext = true) + { + return new Cursor($this->getParametersForItem($item), $isNext); + } + + /** + * Get the cursor parameters for a given object. + * + * @param \ArrayAccess|\stdClass $item + * @return array + * + * @throws \Exception + */ + public function getParametersForItem($item) + { + return collect($this->parameters) + ->flip() + ->map(function ($_, $parameterName) use ($item) { + if ($item instanceof JsonResource) { + $item = $item->resource; + } + + if ($item instanceof Model && + ! is_null($parameter = $this->getPivotParameterForItem($item, $parameterName))) { + return $parameter; + } elseif ($item instanceof ArrayAccess || is_array($item)) { + return $this->ensureParameterIsPrimitive( + $item[$parameterName] ?? $item[Str::afterLast($parameterName, '.')] + ); + } elseif (is_object($item)) { + return $this->ensureParameterIsPrimitive( + $item->{$parameterName} ?? $item->{Str::afterLast($parameterName, '.')} + ); + } + + throw new Exception('Only arrays and objects are supported when cursor paginating items.'); + })->toArray(); + } + + /** + * Get the cursor parameter value from a pivot model if applicable. + * + * @param \ArrayAccess|\stdClass $item + * @param string $parameterName + * @return string|null + */ + protected function getPivotParameterForItem($item, $parameterName) + { + $table = Str::beforeLast($parameterName, '.'); + + foreach ($item->getRelations() as $relation) { + if ($relation instanceof Pivot && $relation->getTable() === $table) { + return $this->ensureParameterIsPrimitive( + $relation->getAttribute(Str::afterLast($parameterName, '.')) + ); + } + } + } + + /** + * Ensure the parameter is a primitive type. + * + * This can resolve issues that arise the developer uses a value object for an attribute. + * + * @param mixed $parameter + * @return mixed + */ + protected function ensureParameterIsPrimitive($parameter) + { + return is_object($parameter) && method_exists($parameter, '__toString') + ? (string) $parameter + : $parameter; + } + + /** + * Get / set the URL fragment to be appended to URLs. + * + * @param string|null $fragment + * @return $this|string|null + */ + public function fragment($fragment = null) + { + if (is_null($fragment)) { + return $this->fragment; + } + + $this->fragment = $fragment; + + return $this; + } + + /** + * Add a set of query string values to the paginator. + * + * @param array|string|null $key + * @param string|null $value + * @return $this + */ + public function appends($key, $value = null) + { + if (is_null($key)) { + return $this; + } + + if (is_array($key)) { + return $this->appendArray($key); + } + + return $this->addQuery($key, $value); + } + + /** + * Add an array of query string values. + * + * @param array $keys + * @return $this + */ + protected function appendArray(array $keys) + { + foreach ($keys as $key => $value) { + $this->addQuery($key, $value); + } + + return $this; + } + + /** + * Add all current query string values to the paginator. + * + * @return $this + */ + public function withQueryString() + { + if (! is_null($query = Paginator::resolveQueryString())) { + return $this->appends($query); + } + + return $this; + } + + /** + * Add a query string value to the paginator. + * + * @param string $key + * @param string $value + * @return $this + */ + protected function addQuery($key, $value) + { + if ($key !== $this->cursorName) { + $this->query[$key] = $value; + } + + return $this; + } + + /** + * Build the full fragment portion of a URL. + * + * @return string + */ + protected function buildFragment() + { + return $this->fragment ? '#'.$this->fragment : ''; + } + + /** + * Load a set of relationships onto the mixed relationship collection. + * + * @param string $relation + * @param array $relations + * @return $this + */ + public function loadMorph($relation, $relations) + { + $this->getCollection()->loadMorph($relation, $relations); + + return $this; + } + + /** + * Load a set of relationship counts onto the mixed relationship collection. + * + * @param string $relation + * @param array $relations + * @return $this + */ + public function loadMorphCount($relation, $relations) + { + $this->getCollection()->loadMorphCount($relation, $relations); + + return $this; + } + + /** + * Get the slice of items being paginated. + * + * @return array + */ + public function items() + { + return $this->items->all(); + } + + /** + * Transform each item in the slice of items using a callback. + * + * @param callable $callback + * @return $this + */ + public function through(callable $callback) + { + $this->items->transform($callback); + + return $this; + } + + /** + * Get the number of items shown per page. + * + * @return int + */ + public function perPage() + { + return $this->perPage; + } + + /** + * Get the current cursor being paginated. + * + * @return \Illuminate\Pagination\Cursor|null + */ + public function cursor() + { + return $this->cursor; + } + + /** + * Get the query string variable used to store the cursor. + * + * @return string + */ + public function getCursorName() + { + return $this->cursorName; + } + + /** + * Set the query string variable used to store the cursor. + * + * @param string $name + * @return $this + */ + public function setCursorName($name) + { + $this->cursorName = $name; + + return $this; + } + + /** + * Set the base path to assign to all URLs. + * + * @param string $path + * @return $this + */ + public function withPath($path) + { + return $this->setPath($path); + } + + /** + * Set the base path to assign to all URLs. + * + * @param string $path + * @return $this + */ + public function setPath($path) + { + $this->path = $path; + + return $this; + } + + /** + * Get the base path for paginator generated URLs. + * + * @return string|null + */ + public function path() + { + return $this->path; + } + + /** + * Resolve the current cursor or return the default value. + * + * @param string $cursorName + * @return \Illuminate\Pagination\Cursor|null + */ + public static function resolveCurrentCursor($cursorName = 'cursor', $default = null) + { + if (isset(static::$currentCursorResolver)) { + return call_user_func(static::$currentCursorResolver, $cursorName); + } + + return $default; + } + + /** + * Set the current cursor resolver callback. + * + * @param \Closure $resolver + * @return void + */ + public static function currentCursorResolver(Closure $resolver) + { + static::$currentCursorResolver = $resolver; + } + + /** + * Get an instance of the view factory from the resolver. + * + * @return \Illuminate\Contracts\View\Factory + */ + public static function viewFactory() + { + return Paginator::viewFactory(); + } + + /** + * Get an iterator for the items. + * + * @return \ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return $this->items->getIterator(); + } + + /** + * Determine if the list of items is empty. + * + * @return bool + */ + public function isEmpty() + { + return $this->items->isEmpty(); + } + + /** + * Determine if the list of items is not empty. + * + * @return bool + */ + public function isNotEmpty() + { + return $this->items->isNotEmpty(); + } + + /** + * Get the number of items for the current page. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return $this->items->count(); + } + + /** + * Get the paginator's underlying collection. + * + * @return \Illuminate\Support\Collection + */ + public function getCollection() + { + return $this->items; + } + + /** + * Set the paginator's underlying collection. + * + * @param \Illuminate\Support\Collection $collection + * @return $this + */ + public function setCollection(Collection $collection) + { + $this->items = $collection; + + return $this; + } + + /** + * Get the paginator options. + * + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * Determine if the given item exists. + * + * @param mixed $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return $this->items->has($key); + } + + /** + * Get the item at the given offset. + * + * @param mixed $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->items->get($key); + } + + /** + * Set the item at the given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + $this->items->put($key, $value); + } + + /** + * Unset the item at the given key. + * + * @param mixed $key + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + $this->items->forget($key); + } + + /** + * Render the contents of the paginator to HTML. + * + * @return string + */ + public function toHtml() + { + return (string) $this->render(); + } + + /** + * Make dynamic calls into the collection. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->forwardCallTo($this->getCollection(), $method, $parameters); + } + + /** + * Render the contents of the paginator when casting to a string. + * + * @return string + */ + public function __toString() + { + return (string) $this->render(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractPaginator.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractPaginator.php new file mode 100644 index 00000000000..ac9ef403503 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/AbstractPaginator.php @@ -0,0 +1,782 @@ += 1 && filter_var($page, FILTER_VALIDATE_INT) !== false; + } + + /** + * Get the URL for the previous page. + * + * @return string|null + */ + public function previousPageUrl() + { + if ($this->currentPage() > 1) { + return $this->url($this->currentPage() - 1); + } + } + + /** + * Create a range of pagination URLs. + * + * @param int $start + * @param int $end + * @return array + */ + public function getUrlRange($start, $end) + { + return collect(range($start, $end))->mapWithKeys(function ($page) { + return [$page => $this->url($page)]; + })->all(); + } + + /** + * Get the URL for a given page number. + * + * @param int $page + * @return string + */ + public function url($page) + { + if ($page <= 0) { + $page = 1; + } + + // If we have any extra query string key / value pairs that need to be added + // onto the URL, we will put them in query string form and then attach it + // to the URL. This allows for extra information like sortings storage. + $parameters = [$this->pageName => $page]; + + if (count($this->query) > 0) { + $parameters = array_merge($this->query, $parameters); + } + + return $this->path() + .(Str::contains($this->path(), '?') ? '&' : '?') + .Arr::query($parameters) + .$this->buildFragment(); + } + + /** + * Get / set the URL fragment to be appended to URLs. + * + * @param string|null $fragment + * @return $this|string|null + */ + public function fragment($fragment = null) + { + if (is_null($fragment)) { + return $this->fragment; + } + + $this->fragment = $fragment; + + return $this; + } + + /** + * Add a set of query string values to the paginator. + * + * @param array|string|null $key + * @param string|null $value + * @return $this + */ + public function appends($key, $value = null) + { + if (is_null($key)) { + return $this; + } + + if (is_array($key)) { + return $this->appendArray($key); + } + + return $this->addQuery($key, $value); + } + + /** + * Add an array of query string values. + * + * @param array $keys + * @return $this + */ + protected function appendArray(array $keys) + { + foreach ($keys as $key => $value) { + $this->addQuery($key, $value); + } + + return $this; + } + + /** + * Add all current query string values to the paginator. + * + * @return $this + */ + public function withQueryString() + { + if (isset(static::$queryStringResolver)) { + return $this->appends(call_user_func(static::$queryStringResolver)); + } + + return $this; + } + + /** + * Add a query string value to the paginator. + * + * @param string $key + * @param string $value + * @return $this + */ + protected function addQuery($key, $value) + { + if ($key !== $this->pageName) { + $this->query[$key] = $value; + } + + return $this; + } + + /** + * Build the full fragment portion of a URL. + * + * @return string + */ + protected function buildFragment() + { + return $this->fragment ? '#'.$this->fragment : ''; + } + + /** + * Load a set of relationships onto the mixed relationship collection. + * + * @param string $relation + * @param array $relations + * @return $this + */ + public function loadMorph($relation, $relations) + { + $this->getCollection()->loadMorph($relation, $relations); + + return $this; + } + + /** + * Load a set of relationship counts onto the mixed relationship collection. + * + * @param string $relation + * @param array $relations + * @return $this + */ + public function loadMorphCount($relation, $relations) + { + $this->getCollection()->loadMorphCount($relation, $relations); + + return $this; + } + + /** + * Get the slice of items being paginated. + * + * @return array + */ + public function items() + { + return $this->items->all(); + } + + /** + * Get the number of the first item in the slice. + * + * @return int + */ + public function firstItem() + { + return count($this->items) > 0 ? ($this->currentPage - 1) * $this->perPage + 1 : null; + } + + /** + * Get the number of the last item in the slice. + * + * @return int + */ + public function lastItem() + { + return count($this->items) > 0 ? $this->firstItem() + $this->count() - 1 : null; + } + + /** + * Transform each item in the slice of items using a callback. + * + * @param callable $callback + * @return $this + */ + public function through(callable $callback) + { + $this->items->transform($callback); + + return $this; + } + + /** + * Get the number of items shown per page. + * + * @return int + */ + public function perPage() + { + return $this->perPage; + } + + /** + * Determine if there are enough items to split into multiple pages. + * + * @return bool + */ + public function hasPages() + { + return $this->currentPage() != 1 || $this->hasMorePages(); + } + + /** + * Determine if the paginator is on the first page. + * + * @return bool + */ + public function onFirstPage() + { + return $this->currentPage() <= 1; + } + + /** + * Determine if the paginator is on the last page. + * + * @return bool + */ + public function onLastPage() + { + return ! $this->hasMorePages(); + } + + /** + * Get the current page. + * + * @return int + */ + public function currentPage() + { + return $this->currentPage; + } + + /** + * Get the query string variable used to store the page. + * + * @return string + */ + public function getPageName() + { + return $this->pageName; + } + + /** + * Set the query string variable used to store the page. + * + * @param string $name + * @return $this + */ + public function setPageName($name) + { + $this->pageName = $name; + + return $this; + } + + /** + * Set the base path to assign to all URLs. + * + * @param string $path + * @return $this + */ + public function withPath($path) + { + return $this->setPath($path); + } + + /** + * Set the base path to assign to all URLs. + * + * @param string $path + * @return $this + */ + public function setPath($path) + { + $this->path = $path; + + return $this; + } + + /** + * Set the number of links to display on each side of current page link. + * + * @param int $count + * @return $this + */ + public function onEachSide($count) + { + $this->onEachSide = $count; + + return $this; + } + + /** + * Get the base path for paginator generated URLs. + * + * @return string|null + */ + public function path() + { + return $this->path; + } + + /** + * Resolve the current request path or return the default value. + * + * @param string $default + * @return string + */ + public static function resolveCurrentPath($default = '/') + { + if (isset(static::$currentPathResolver)) { + return call_user_func(static::$currentPathResolver); + } + + return $default; + } + + /** + * Set the current request path resolver callback. + * + * @param \Closure $resolver + * @return void + */ + public static function currentPathResolver(Closure $resolver) + { + static::$currentPathResolver = $resolver; + } + + /** + * Resolve the current page or return the default value. + * + * @param string $pageName + * @param int $default + * @return int + */ + public static function resolveCurrentPage($pageName = 'page', $default = 1) + { + if (isset(static::$currentPageResolver)) { + return (int) call_user_func(static::$currentPageResolver, $pageName); + } + + return $default; + } + + /** + * Set the current page resolver callback. + * + * @param \Closure $resolver + * @return void + */ + public static function currentPageResolver(Closure $resolver) + { + static::$currentPageResolver = $resolver; + } + + /** + * Resolve the query string or return the default value. + * + * @param string|array|null $default + * @return string + */ + public static function resolveQueryString($default = null) + { + if (isset(static::$queryStringResolver)) { + return (static::$queryStringResolver)(); + } + + return $default; + } + + /** + * Set with query string resolver callback. + * + * @param \Closure $resolver + * @return void + */ + public static function queryStringResolver(Closure $resolver) + { + static::$queryStringResolver = $resolver; + } + + /** + * Get an instance of the view factory from the resolver. + * + * @return \Illuminate\Contracts\View\Factory + */ + public static function viewFactory() + { + return call_user_func(static::$viewFactoryResolver); + } + + /** + * Set the view factory resolver callback. + * + * @param \Closure $resolver + * @return void + */ + public static function viewFactoryResolver(Closure $resolver) + { + static::$viewFactoryResolver = $resolver; + } + + /** + * Set the default pagination view. + * + * @param string $view + * @return void + */ + public static function defaultView($view) + { + static::$defaultView = $view; + } + + /** + * Set the default "simple" pagination view. + * + * @param string $view + * @return void + */ + public static function defaultSimpleView($view) + { + static::$defaultSimpleView = $view; + } + + /** + * Indicate that Tailwind styling should be used for generated links. + * + * @return void + */ + public static function useTailwind() + { + static::defaultView('pagination::tailwind'); + static::defaultSimpleView('pagination::simple-tailwind'); + } + + /** + * Indicate that Bootstrap 4 styling should be used for generated links. + * + * @return void + */ + public static function useBootstrap() + { + static::defaultView('pagination::bootstrap-4'); + static::defaultSimpleView('pagination::simple-bootstrap-4'); + } + + /** + * Indicate that Bootstrap 3 styling should be used for generated links. + * + * @return void + */ + public static function useBootstrapThree() + { + static::defaultView('pagination::default'); + static::defaultSimpleView('pagination::simple-default'); + } + + /** + * Get an iterator for the items. + * + * @return \ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return $this->items->getIterator(); + } + + /** + * Determine if the list of items is empty. + * + * @return bool + */ + public function isEmpty() + { + return $this->items->isEmpty(); + } + + /** + * Determine if the list of items is not empty. + * + * @return bool + */ + public function isNotEmpty() + { + return $this->items->isNotEmpty(); + } + + /** + * Get the number of items for the current page. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return $this->items->count(); + } + + /** + * Get the paginator's underlying collection. + * + * @return \Illuminate\Support\Collection + */ + public function getCollection() + { + return $this->items; + } + + /** + * Set the paginator's underlying collection. + * + * @param \Illuminate\Support\Collection $collection + * @return $this + */ + public function setCollection(Collection $collection) + { + $this->items = $collection; + + return $this; + } + + /** + * Get the paginator options. + * + * @return array + */ + public function getOptions() + { + return $this->options; + } + + /** + * Determine if the given item exists. + * + * @param mixed $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return $this->items->has($key); + } + + /** + * Get the item at the given offset. + * + * @param mixed $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->items->get($key); + } + + /** + * Set the item at the given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + $this->items->put($key, $value); + } + + /** + * Unset the item at the given key. + * + * @param mixed $key + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + $this->items->forget($key); + } + + /** + * Render the contents of the paginator to HTML. + * + * @return string + */ + public function toHtml() + { + return (string) $this->render(); + } + + /** + * Make dynamic calls into the collection. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->forwardCallTo($this->getCollection(), $method, $parameters); + } + + /** + * Render the contents of the paginator when casting to a string. + * + * @return string + */ + public function __toString() + { + return (string) $this->render(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Cursor.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Cursor.php new file mode 100644 index 00000000000..e8edf6526bc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Cursor.php @@ -0,0 +1,132 @@ +parameters = $parameters; + $this->pointsToNextItems = $pointsToNextItems; + } + + /** + * Get the given parameter from the cursor. + * + * @param string $parameterName + * @return string|null + * + * @throws \UnexpectedValueException + */ + public function parameter(string $parameterName) + { + if (! array_key_exists($parameterName, $this->parameters)) { + throw new UnexpectedValueException("Unable to find parameter [{$parameterName}] in pagination item."); + } + + return $this->parameters[$parameterName]; + } + + /** + * Get the given parameters from the cursor. + * + * @param array $parameterNames + * @return array + */ + public function parameters(array $parameterNames) + { + return collect($parameterNames)->map(function ($parameterName) { + return $this->parameter($parameterName); + })->toArray(); + } + + /** + * Determine whether the cursor points to the next set of items. + * + * @return bool + */ + public function pointsToNextItems() + { + return $this->pointsToNextItems; + } + + /** + * Determine whether the cursor points to the previous set of items. + * + * @return bool + */ + public function pointsToPreviousItems() + { + return ! $this->pointsToNextItems; + } + + /** + * Get the array representation of the cursor. + * + * @return array + */ + public function toArray() + { + return array_merge($this->parameters, [ + '_pointsToNextItems' => $this->pointsToNextItems, + ]); + } + + /** + * Get the encoded string representation of the cursor to construct a URL. + * + * @return string + */ + public function encode() + { + return str_replace(['+', '/', '='], ['-', '_', ''], base64_encode(json_encode($this->toArray()))); + } + + /** + * Get a cursor instance from the encoded string representation. + * + * @param string|null $encodedString + * @return static|null + */ + public static function fromEncoded($encodedString) + { + if (is_null($encodedString) || ! is_string($encodedString)) { + return null; + } + + $parameters = json_decode(base64_decode(str_replace(['-', '_'], ['+', '/'], $encodedString)), true); + + if (json_last_error() !== JSON_ERROR_NONE) { + return null; + } + + $pointsToNextItems = $parameters['_pointsToNextItems']; + + unset($parameters['_pointsToNextItems']); + + return new static($parameters, $pointsToNextItems); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/CursorPaginationException.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/CursorPaginationException.php new file mode 100644 index 00000000000..b12ca607f18 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/CursorPaginationException.php @@ -0,0 +1,13 @@ +options = $options; + + foreach ($options as $key => $value) { + $this->{$key} = $value; + } + + $this->perPage = $perPage; + $this->cursor = $cursor; + $this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path; + + $this->setItems($items); + } + + /** + * Set the items for the paginator. + * + * @param mixed $items + * @return void + */ + protected function setItems($items) + { + $this->items = $items instanceof Collection ? $items : Collection::make($items); + + $this->hasMore = $this->items->count() > $this->perPage; + + $this->items = $this->items->slice(0, $this->perPage); + + if (! is_null($this->cursor) && $this->cursor->pointsToPreviousItems()) { + $this->items = $this->items->reverse()->values(); + } + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return \Illuminate\Contracts\Support\Htmlable + */ + public function links($view = null, $data = []) + { + return $this->render($view, $data); + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return \Illuminate\Contracts\Support\Htmlable + */ + public function render($view = null, $data = []) + { + return static::viewFactory()->make($view ?: Paginator::$defaultSimpleView, array_merge($data, [ + 'paginator' => $this, + ])); + } + + /** + * Determine if there are more items in the data source. + * + * @return bool + */ + public function hasMorePages() + { + return (is_null($this->cursor) && $this->hasMore) || + (! is_null($this->cursor) && $this->cursor->pointsToNextItems() && $this->hasMore) || + (! is_null($this->cursor) && $this->cursor->pointsToPreviousItems()); + } + + /** + * Determine if there are enough items to split into multiple pages. + * + * @return bool + */ + public function hasPages() + { + return ! $this->onFirstPage() || $this->hasMorePages(); + } + + /** + * Determine if the paginator is on the first page. + * + * @return bool + */ + public function onFirstPage() + { + return is_null($this->cursor) || ($this->cursor->pointsToPreviousItems() && ! $this->hasMore); + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return [ + 'data' => $this->items->toArray(), + 'path' => $this->path(), + 'per_page' => $this->perPage(), + 'next_page_url' => $this->nextPageUrl(), + 'prev_page_url' => $this->previousPageUrl(), + ]; + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Convert the object to its JSON representation. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LICENSE.md b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LICENSE.md new file mode 100644 index 00000000000..79810c848f8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Taylor Otwell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LengthAwarePaginator.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LengthAwarePaginator.php new file mode 100644 index 00000000000..24f68b121b8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/LengthAwarePaginator.php @@ -0,0 +1,232 @@ +options = $options; + + foreach ($options as $key => $value) { + $this->{$key} = $value; + } + + $this->total = $total; + $this->perPage = $perPage; + $this->lastPage = max((int) ceil($total / $perPage), 1); + $this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path; + $this->currentPage = $this->setCurrentPage($currentPage, $this->pageName); + $this->items = $items instanceof Collection ? $items : Collection::make($items); + } + + /** + * Get the current page for the request. + * + * @param int $currentPage + * @param string $pageName + * @return int + */ + protected function setCurrentPage($currentPage, $pageName) + { + $currentPage = $currentPage ?: static::resolveCurrentPage($pageName); + + return $this->isValidPageNumber($currentPage) ? (int) $currentPage : 1; + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return \Illuminate\Contracts\Support\Htmlable + */ + public function links($view = null, $data = []) + { + return $this->render($view, $data); + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return \Illuminate\Contracts\Support\Htmlable + */ + public function render($view = null, $data = []) + { + return static::viewFactory()->make($view ?: static::$defaultView, array_merge($data, [ + 'paginator' => $this, + 'elements' => $this->elements(), + ])); + } + + /** + * Get the paginator links as a collection (for JSON responses). + * + * @return \Illuminate\Support\Collection + */ + public function linkCollection() + { + return collect($this->elements())->flatMap(function ($item) { + if (! is_array($item)) { + return [['url' => null, 'label' => '...', 'active' => false]]; + } + + return collect($item)->map(function ($url, $page) { + return [ + 'url' => $url, + 'label' => (string) $page, + 'active' => $this->currentPage() === $page, + ]; + }); + })->prepend([ + 'url' => $this->previousPageUrl(), + 'label' => function_exists('__') ? __('pagination.previous') : 'Previous', + 'active' => false, + ])->push([ + 'url' => $this->nextPageUrl(), + 'label' => function_exists('__') ? __('pagination.next') : 'Next', + 'active' => false, + ]); + } + + /** + * Get the array of elements to pass to the view. + * + * @return array + */ + protected function elements() + { + $window = UrlWindow::make($this); + + return array_filter([ + $window['first'], + is_array($window['slider']) ? '...' : null, + $window['slider'], + is_array($window['last']) ? '...' : null, + $window['last'], + ]); + } + + /** + * Get the total number of items being paginated. + * + * @return int + */ + public function total() + { + return $this->total; + } + + /** + * Determine if there are more items in the data source. + * + * @return bool + */ + public function hasMorePages() + { + return $this->currentPage() < $this->lastPage(); + } + + /** + * Get the URL for the next page. + * + * @return string|null + */ + public function nextPageUrl() + { + if ($this->hasMorePages()) { + return $this->url($this->currentPage() + 1); + } + } + + /** + * Get the last page. + * + * @return int + */ + public function lastPage() + { + return $this->lastPage; + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return [ + 'current_page' => $this->currentPage(), + 'data' => $this->items->toArray(), + 'first_page_url' => $this->url(1), + 'from' => $this->firstItem(), + 'last_page' => $this->lastPage(), + 'last_page_url' => $this->url($this->lastPage()), + 'links' => $this->linkCollection()->toArray(), + 'next_page_url' => $this->nextPageUrl(), + 'path' => $this->path(), + 'per_page' => $this->perPage(), + 'prev_page_url' => $this->previousPageUrl(), + 'to' => $this->lastItem(), + 'total' => $this->total(), + ]; + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Convert the object to its JSON representation. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php new file mode 100755 index 00000000000..e94cebd6caf --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationServiceProvider.php @@ -0,0 +1,34 @@ +loadViewsFrom(__DIR__.'/resources/views', 'pagination'); + + if ($this->app->runningInConsole()) { + $this->publishes([ + __DIR__.'/resources/views' => $this->app->resourcePath('views/vendor/pagination'), + ], 'laravel-pagination'); + } + } + + /** + * Register the service provider. + * + * @return void + */ + public function register() + { + PaginationState::resolveUsing($this->app); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationState.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationState.php new file mode 100644 index 00000000000..ff8150ff2a9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/PaginationState.php @@ -0,0 +1,41 @@ +url(); + }); + + Paginator::currentPageResolver(function ($pageName = 'page') use ($app) { + $page = $app['request']->input($pageName); + + if (filter_var($page, FILTER_VALIDATE_INT) !== false && (int) $page >= 1) { + return (int) $page; + } + + return 1; + }); + + Paginator::queryStringResolver(function () use ($app) { + return $app['request']->query(); + }); + + CursorPaginator::currentCursorResolver(function ($cursorName = 'cursor') use ($app) { + return Cursor::fromEncoded($app['request']->input($cursorName)); + }); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Paginator.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Paginator.php new file mode 100644 index 00000000000..733edb8e00f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/Paginator.php @@ -0,0 +1,177 @@ +options = $options; + + foreach ($options as $key => $value) { + $this->{$key} = $value; + } + + $this->perPage = $perPage; + $this->currentPage = $this->setCurrentPage($currentPage); + $this->path = $this->path !== '/' ? rtrim($this->path, '/') : $this->path; + + $this->setItems($items); + } + + /** + * Get the current page for the request. + * + * @param int $currentPage + * @return int + */ + protected function setCurrentPage($currentPage) + { + $currentPage = $currentPage ?: static::resolveCurrentPage(); + + return $this->isValidPageNumber($currentPage) ? (int) $currentPage : 1; + } + + /** + * Set the items for the paginator. + * + * @param mixed $items + * @return void + */ + protected function setItems($items) + { + $this->items = $items instanceof Collection ? $items : Collection::make($items); + + $this->hasMore = $this->items->count() > $this->perPage; + + $this->items = $this->items->slice(0, $this->perPage); + } + + /** + * Get the URL for the next page. + * + * @return string|null + */ + public function nextPageUrl() + { + if ($this->hasMorePages()) { + return $this->url($this->currentPage() + 1); + } + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return string + */ + public function links($view = null, $data = []) + { + return $this->render($view, $data); + } + + /** + * Render the paginator using the given view. + * + * @param string|null $view + * @param array $data + * @return \Illuminate\Contracts\Support\Htmlable + */ + public function render($view = null, $data = []) + { + return static::viewFactory()->make($view ?: static::$defaultSimpleView, array_merge($data, [ + 'paginator' => $this, + ])); + } + + /** + * Manually indicate that the paginator does have more pages. + * + * @param bool $hasMore + * @return $this + */ + public function hasMorePagesWhen($hasMore = true) + { + $this->hasMore = $hasMore; + + return $this; + } + + /** + * Determine if there are more items in the data source. + * + * @return bool + */ + public function hasMorePages() + { + return $this->hasMore; + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return [ + 'current_page' => $this->currentPage(), + 'data' => $this->items->toArray(), + 'first_page_url' => $this->url(1), + 'from' => $this->firstItem(), + 'next_page_url' => $this->nextPageUrl(), + 'path' => $this->path(), + 'per_page' => $this->perPage(), + 'prev_page_url' => $this->previousPageUrl(), + 'to' => $this->lastItem(), + ]; + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Convert the object to its JSON representation. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/UrlWindow.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/UrlWindow.php new file mode 100644 index 00000000000..31c7cc2a430 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/UrlWindow.php @@ -0,0 +1,220 @@ +paginator = $paginator; + } + + /** + * Create a new URL window instance. + * + * @param \Illuminate\Contracts\Pagination\LengthAwarePaginator $paginator + * @return array + */ + public static function make(PaginatorContract $paginator) + { + return (new static($paginator))->get(); + } + + /** + * Get the window of URLs to be shown. + * + * @return array + */ + public function get() + { + $onEachSide = $this->paginator->onEachSide; + + if ($this->paginator->lastPage() < ($onEachSide * 2) + 8) { + return $this->getSmallSlider(); + } + + return $this->getUrlSlider($onEachSide); + } + + /** + * Get the slider of URLs there are not enough pages to slide. + * + * @return array + */ + protected function getSmallSlider() + { + return [ + 'first' => $this->paginator->getUrlRange(1, $this->lastPage()), + 'slider' => null, + 'last' => null, + ]; + } + + /** + * Create a URL slider links. + * + * @param int $onEachSide + * @return array + */ + protected function getUrlSlider($onEachSide) + { + $window = $onEachSide + 4; + + if (! $this->hasPages()) { + return ['first' => null, 'slider' => null, 'last' => null]; + } + + // If the current page is very close to the beginning of the page range, we will + // just render the beginning of the page range, followed by the last 2 of the + // links in this list, since we will not have room to create a full slider. + if ($this->currentPage() <= $window) { + return $this->getSliderTooCloseToBeginning($window, $onEachSide); + } + + // If the current page is close to the ending of the page range we will just get + // this first couple pages, followed by a larger window of these ending pages + // since we're too close to the end of the list to create a full on slider. + elseif ($this->currentPage() > ($this->lastPage() - $window)) { + return $this->getSliderTooCloseToEnding($window, $onEachSide); + } + + // If we have enough room on both sides of the current page to build a slider we + // will surround it with both the beginning and ending caps, with this window + // of pages in the middle providing a Google style sliding paginator setup. + return $this->getFullSlider($onEachSide); + } + + /** + * Get the slider of URLs when too close to beginning of window. + * + * @param int $window + * @param int $onEachSide + * @return array + */ + protected function getSliderTooCloseToBeginning($window, $onEachSide) + { + return [ + 'first' => $this->paginator->getUrlRange(1, $window + $onEachSide), + 'slider' => null, + 'last' => $this->getFinish(), + ]; + } + + /** + * Get the slider of URLs when too close to ending of window. + * + * @param int $window + * @param int $onEachSide + * @return array + */ + protected function getSliderTooCloseToEnding($window, $onEachSide) + { + $last = $this->paginator->getUrlRange( + $this->lastPage() - ($window + ($onEachSide - 1)), + $this->lastPage() + ); + + return [ + 'first' => $this->getStart(), + 'slider' => null, + 'last' => $last, + ]; + } + + /** + * Get the slider of URLs when a full slider can be made. + * + * @param int $onEachSide + * @return array + */ + protected function getFullSlider($onEachSide) + { + return [ + 'first' => $this->getStart(), + 'slider' => $this->getAdjacentUrlRange($onEachSide), + 'last' => $this->getFinish(), + ]; + } + + /** + * Get the page range for the current page window. + * + * @param int $onEachSide + * @return array + */ + public function getAdjacentUrlRange($onEachSide) + { + return $this->paginator->getUrlRange( + $this->currentPage() - $onEachSide, + $this->currentPage() + $onEachSide + ); + } + + /** + * Get the starting URLs of a pagination slider. + * + * @return array + */ + public function getStart() + { + return $this->paginator->getUrlRange(1, 2); + } + + /** + * Get the ending URLs of a pagination slider. + * + * @return array + */ + public function getFinish() + { + return $this->paginator->getUrlRange( + $this->lastPage() - 1, + $this->lastPage() + ); + } + + /** + * Determine if the underlying paginator being presented has pages to show. + * + * @return bool + */ + public function hasPages() + { + return $this->paginator->lastPage() > 1; + } + + /** + * Get the current page from the paginator. + * + * @return int + */ + protected function currentPage() + { + return $this->paginator->currentPage(); + } + + /** + * Get the last page from the paginator. + * + * @return int + */ + protected function lastPage() + { + return $this->paginator->lastPage(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json new file mode 100755 index 00000000000..5c8a380b2a3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/composer.json @@ -0,0 +1,37 @@ +{ + "name": "illuminate/pagination", + "description": "The Illuminate Pagination package.", + "license": "MIT", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "require": { + "php": "^7.3|^8.0", + "ext-json": "*", + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/support": "^8.0" + }, + "autoload": { + "psr-4": { + "Illuminate\\Pagination\\": "" + } + }, + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "config": { + "sort-packages": true + }, + "minimum-stability": "dev" +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/bootstrap-4.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/bootstrap-4.blade.php new file mode 100644 index 00000000000..63c6f56b59e --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/bootstrap-4.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) +
+@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/default.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/default.blade.php new file mode 100644 index 00000000000..0db70b56275 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/default.blade.php @@ -0,0 +1,46 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/semantic-ui.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/semantic-ui.blade.php new file mode 100644 index 00000000000..ef0dbb184c6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/semantic-ui.blade.php @@ -0,0 +1,36 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-bootstrap-4.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-bootstrap-4.blade.php new file mode 100644 index 00000000000..4bb491742a3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-bootstrap-4.blade.php @@ -0,0 +1,27 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-default.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-default.blade.php new file mode 100644 index 00000000000..36bdbc18c65 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-default.blade.php @@ -0,0 +1,19 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-tailwind.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-tailwind.blade.php new file mode 100644 index 00000000000..6872cca360d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/simple-tailwind.blade.php @@ -0,0 +1,25 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/tailwind.blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/tailwind.blade.php new file mode 100644 index 00000000000..5bf323b406f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/pagination/resources/views/tailwind.blade.php @@ -0,0 +1,106 @@ +@if ($paginator->hasPages()) + +@endif diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/AggregateServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/AggregateServiceProvider.php new file mode 100644 index 00000000000..d7425c5c258 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/AggregateServiceProvider.php @@ -0,0 +1,52 @@ +instances = []; + + foreach ($this->providers as $provider) { + $this->instances[] = $this->app->register($provider); + } + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + $provides = []; + + foreach ($this->providers as $provider) { + $instance = $this->app->resolveProvider($provider); + + $provides = array_merge($provides, $instance->provides()); + } + + return $provides; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Carbon.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Carbon.php new file mode 100644 index 00000000000..004b27b0751 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Carbon.php @@ -0,0 +1,18 @@ +files = $files; + $this->workingPath = $workingPath; + } + + /** + * Regenerate the Composer autoloader files. + * + * @param string|array $extra + * @return int + */ + public function dumpAutoloads($extra = '') + { + $extra = $extra ? (array) $extra : []; + + $command = array_merge($this->findComposer(), ['dump-autoload'], $extra); + + return $this->getProcess($command)->run(); + } + + /** + * Regenerate the optimized Composer autoloader files. + * + * @return int + */ + public function dumpOptimized() + { + return $this->dumpAutoloads('--optimize'); + } + + /** + * Get the composer command for the environment. + * + * @return array + */ + protected function findComposer() + { + if ($this->files->exists($this->workingPath.'/composer.phar')) { + return [$this->phpBinary(), 'composer.phar']; + } + + return ['composer']; + } + + /** + * Get the PHP binary. + * + * @return string + */ + protected function phpBinary() + { + return ProcessUtils::escapeArgument((new PhpExecutableFinder)->find(false)); + } + + /** + * Get a new Symfony process instance. + * + * @param array $command + * @return \Symfony\Component\Process\Process + */ + protected function getProcess(array $command) + { + return (new Process($command, $this->workingPath))->setTimeout(null); + } + + /** + * Set the working path used by the class. + * + * @param string $path + * @return $this + */ + public function setWorkingPath($path) + { + $this->workingPath = realpath($path); + + return $this; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ConfigurationUrlParser.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ConfigurationUrlParser.php new file mode 100644 index 00000000000..be54b9a83d5 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ConfigurationUrlParser.php @@ -0,0 +1,193 @@ + 'sqlsrv', + 'mysql2' => 'mysql', // RDS + 'postgres' => 'pgsql', + 'postgresql' => 'pgsql', + 'sqlite3' => 'sqlite', + 'redis' => 'tcp', + 'rediss' => 'tls', + ]; + + /** + * Parse the database configuration, hydrating options using a database configuration URL if possible. + * + * @param array|string $config + * @return array + */ + public function parseConfiguration($config) + { + if (is_string($config)) { + $config = ['url' => $config]; + } + + $url = Arr::pull($config, 'url'); + + if (! $url) { + return $config; + } + + $rawComponents = $this->parseUrl($url); + + $decodedComponents = $this->parseStringsToNativeTypes( + array_map('rawurldecode', $rawComponents) + ); + + return array_merge( + $config, + $this->getPrimaryOptions($decodedComponents), + $this->getQueryOptions($rawComponents) + ); + } + + /** + * Get the primary database connection options. + * + * @param array $url + * @return array + */ + protected function getPrimaryOptions($url) + { + return array_filter([ + 'driver' => $this->getDriver($url), + 'database' => $this->getDatabase($url), + 'host' => $url['host'] ?? null, + 'port' => $url['port'] ?? null, + 'username' => $url['user'] ?? null, + 'password' => $url['pass'] ?? null, + ], function ($value) { + return ! is_null($value); + }); + } + + /** + * Get the database driver from the URL. + * + * @param array $url + * @return string|null + */ + protected function getDriver($url) + { + $alias = $url['scheme'] ?? null; + + if (! $alias) { + return; + } + + return static::$driverAliases[$alias] ?? $alias; + } + + /** + * Get the database name from the URL. + * + * @param array $url + * @return string|null + */ + protected function getDatabase($url) + { + $path = $url['path'] ?? null; + + return $path && $path !== '/' ? substr($path, 1) : null; + } + + /** + * Get all of the additional database options from the query string. + * + * @param array $url + * @return array + */ + protected function getQueryOptions($url) + { + $queryString = $url['query'] ?? null; + + if (! $queryString) { + return []; + } + + $query = []; + + parse_str($queryString, $query); + + return $this->parseStringsToNativeTypes($query); + } + + /** + * Parse the string URL to an array of components. + * + * @param string $url + * @return array + * + * @throws \InvalidArgumentException + */ + protected function parseUrl($url) + { + $url = preg_replace('#^(sqlite3?):///#', '$1://null/', $url); + + $parsedUrl = parse_url($url); + + if ($parsedUrl === false) { + throw new InvalidArgumentException('The database configuration URL is malformed.'); + } + + return $parsedUrl; + } + + /** + * Convert string casted values to their native types. + * + * @param mixed $value + * @return mixed + */ + protected function parseStringsToNativeTypes($value) + { + if (is_array($value)) { + return array_map([$this, 'parseStringsToNativeTypes'], $value); + } + + if (! is_string($value)) { + return $value; + } + + $parsedValue = json_decode($value, true); + + if (json_last_error() === JSON_ERROR_NONE) { + return $parsedValue; + } + + return $value; + } + + /** + * Get all of the current drivers' aliases. + * + * @return array + */ + public static function getDriverAliases() + { + return static::$driverAliases; + } + + /** + * Add the given driver alias to the driver aliases array. + * + * @param string $alias + * @param string $driver + * @return void + */ + public static function addDriverAlias($alias, $driver) + { + static::$driverAliases[$alias] = $driver; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/DateFactory.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/DateFactory.php new file mode 100644 index 00000000000..f36cb46f312 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/DateFactory.php @@ -0,0 +1,231 @@ +$method(...$parameters); + } + + $dateClass = static::$dateClass ?: $defaultClassName; + + // Check if date can be created using public class method... + if (method_exists($dateClass, $method) || + method_exists($dateClass, 'hasMacro') && $dateClass::hasMacro($method)) { + return $dateClass::$method(...$parameters); + } + + // If that fails, create the date with the default class... + $date = $defaultClassName::$method(...$parameters); + + // If the configured class has an "instance" method, we'll try to pass our date into there... + if (method_exists($dateClass, 'instance')) { + return $dateClass::instance($date); + } + + // Otherwise, assume the configured class has a DateTime compatible constructor... + return new $dateClass($date->format('Y-m-d H:i:s.u'), $date->getTimezone()); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Env.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Env.php new file mode 100644 index 00000000000..b3100730406 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Env.php @@ -0,0 +1,103 @@ +addAdapter(PutenvAdapter::class); + } + + static::$repository = $builder->immutable()->make(); + } + + return static::$repository; + } + + /** + * Gets the value of an environment variable. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public static function get($key, $default = null) + { + return Option::fromValue(static::getRepository()->get($key)) + ->map(function ($value) { + switch (strtolower($value)) { + case 'true': + case '(true)': + return true; + case 'false': + case '(false)': + return false; + case 'empty': + case '(empty)': + return ''; + case 'null': + case '(null)': + return; + } + + if (preg_match('/\A([\'"])(.*)\1\z/', $value, $matches)) { + return $matches[2]; + } + + return $value; + }) + ->getOrCall(function () use ($default) { + return value($default); + }); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php new file mode 100755 index 00000000000..8fbec3d4c08 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/App.php @@ -0,0 +1,64 @@ +providerIsLoaded(UiServiceProvider::class)) { + throw new RuntimeException('In order to use the Auth::routes() method, please install the laravel/ui package.'); + } + + static::$app->make('router')->auth($options); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php new file mode 100755 index 00000000000..81019e288de --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Blade.php @@ -0,0 +1,46 @@ +dispatch(); + } + + /** + * Get the registered name of the component. + * + * @return string + */ + protected static function getFacadeAccessor() + { + return BusDispatcherContract::class; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php new file mode 100755 index 00000000000..70aa1dc4839 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Cache.php @@ -0,0 +1,40 @@ +cookie($key, null)); + } + + /** + * Retrieve a cookie from the request. + * + * @param string|null $key + * @param mixed $default + * @return string|array|null + */ + public static function get($key = null, $default = null) + { + return static::$app['request']->cookie($key, $default); + } + + /** + * Get the registered name of the component. + * + * @return string + */ + protected static function getFacadeAccessor() + { + return 'cookie'; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php new file mode 100755 index 00000000000..61eaaa83e3f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Crypt.php @@ -0,0 +1,27 @@ +resolved($accessor) === true) { + $callback(static::getFacadeRoot()); + } + + static::$app->afterResolving($accessor, function ($service) use ($callback) { + $callback($service); + }); + } + + /** + * Convert the facade into a Mockery spy. + * + * @return \Mockery\MockInterface + */ + public static function spy() + { + if (! static::isMock()) { + $class = static::getMockableClass(); + + return tap($class ? Mockery::spy($class) : Mockery::spy(), function ($spy) { + static::swap($spy); + }); + } + } + + /** + * Initiate a partial mock on the facade. + * + * @return \Mockery\MockInterface + */ + public static function partialMock() + { + $name = static::getFacadeAccessor(); + + $mock = static::isMock() + ? static::$resolvedInstance[$name] + : static::createFreshMockInstance(); + + return $mock->makePartial(); + } + + /** + * Initiate a mock expectation on the facade. + * + * @return \Mockery\Expectation + */ + public static function shouldReceive() + { + $name = static::getFacadeAccessor(); + + $mock = static::isMock() + ? static::$resolvedInstance[$name] + : static::createFreshMockInstance(); + + return $mock->shouldReceive(...func_get_args()); + } + + /** + * Create a fresh mock instance for the given class. + * + * @return \Mockery\MockInterface + */ + protected static function createFreshMockInstance() + { + return tap(static::createMock(), function ($mock) { + static::swap($mock); + + $mock->shouldAllowMockingProtectedMethods(); + }); + } + + /** + * Create a fresh mock instance for the given class. + * + * @return \Mockery\MockInterface + */ + protected static function createMock() + { + $class = static::getMockableClass(); + + return $class ? Mockery::mock($class) : Mockery::mock(); + } + + /** + * Determines whether a mock is set as the instance of the facade. + * + * @return bool + */ + protected static function isMock() + { + $name = static::getFacadeAccessor(); + + return isset(static::$resolvedInstance[$name]) && + static::$resolvedInstance[$name] instanceof LegacyMockInterface; + } + + /** + * Get the mockable class for the bound instance. + * + * @return string|null + */ + protected static function getMockableClass() + { + if ($root = static::getFacadeRoot()) { + return get_class($root); + } + } + + /** + * Hotswap the underlying instance behind the facade. + * + * @param mixed $instance + * @return void + */ + public static function swap($instance) + { + static::$resolvedInstance[static::getFacadeAccessor()] = $instance; + + if (isset(static::$app)) { + static::$app->instance(static::getFacadeAccessor(), $instance); + } + } + + /** + * Get the root object behind the facade. + * + * @return mixed + */ + public static function getFacadeRoot() + { + return static::resolveFacadeInstance(static::getFacadeAccessor()); + } + + /** + * Get the registered name of the component. + * + * @return string + * + * @throws \RuntimeException + */ + protected static function getFacadeAccessor() + { + throw new RuntimeException('Facade does not implement getFacadeAccessor method.'); + } + + /** + * Resolve the facade root instance from the container. + * + * @param object|string $name + * @return mixed + */ + protected static function resolveFacadeInstance($name) + { + if (is_object($name)) { + return $name; + } + + if (isset(static::$resolvedInstance[$name])) { + return static::$resolvedInstance[$name]; + } + + if (static::$app) { + return static::$resolvedInstance[$name] = static::$app[$name]; + } + } + + /** + * Clear a resolved facade instance. + * + * @param string $name + * @return void + */ + public static function clearResolvedInstance($name) + { + unset(static::$resolvedInstance[$name]); + } + + /** + * Clear all of the resolved instances. + * + * @return void + */ + public static function clearResolvedInstances() + { + static::$resolvedInstance = []; + } + + /** + * Get the application instance behind the facade. + * + * @return \Illuminate\Contracts\Foundation\Application + */ + public static function getFacadeApplication() + { + return static::$app; + } + + /** + * Set the application instance. + * + * @param \Illuminate\Contracts\Foundation\Application $app + * @return void + */ + public static function setFacadeApplication($app) + { + static::$app = $app; + } + + /** + * Handle dynamic, static calls to the object. + * + * @param string $method + * @param array $args + * @return mixed + * + * @throws \RuntimeException + */ + public static function __callStatic($method, $args) + { + $instance = static::getFacadeRoot(); + + if (! $instance) { + throw new RuntimeException('A facade root has not been set.'); + } + + return $instance->$method(...$args); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php new file mode 100755 index 00000000000..c22d363a855 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/File.php @@ -0,0 +1,62 @@ +route($channel, $route); + } + + /** + * Get the registered name of the component. + * + * @return string + */ + protected static function getFacadeAccessor() + { + return ChannelManager::class; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/ParallelTesting.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/ParallelTesting.php new file mode 100644 index 00000000000..c3976113501 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/ParallelTesting.php @@ -0,0 +1,26 @@ +connection($name)->getSchemaBuilder(); + } + + /** + * Get a schema builder instance for the default connection. + * + * @return \Illuminate\Database\Schema\Builder + */ + protected static function getFacadeAccessor() + { + return static::$app['db']->connection()->getSchemaBuilder(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php new file mode 100755 index 00000000000..a0723216912 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/Session.php @@ -0,0 +1,45 @@ +get('filesystems.default'); + + $root = storage_path('framework/testing/disks/'.$disk); + + if ($token = ParallelTesting::token()) { + $root = "{$root}_test_{$token}"; + } + + (new Filesystem)->cleanDirectory($root); + + static::set($disk, $fake = static::createLocalDriver(array_merge($config, [ + 'root' => $root, + ]))); + + return $fake; + } + + /** + * Replace the given disk with a persistent local testing disk. + * + * @param string|null $disk + * @param array $config + * @return \Illuminate\Contracts\Filesystem\Filesystem + */ + public static function persistentFake($disk = null, array $config = []) + { + $disk = $disk ?: static::$app['config']->get('filesystems.default'); + + static::set($disk, $fake = static::createLocalDriver(array_merge($config, [ + 'root' => storage_path('framework/testing/disks/'.$disk), + ]))); + + return $fake; + } + + /** + * Get the registered name of the component. + * + * @return string + */ + protected static function getFacadeAccessor() + { + return 'filesystem'; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php new file mode 100755 index 00000000000..7d9941d7c02 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Facades/URL.php @@ -0,0 +1,38 @@ + $value) { + $this->attributes[$key] = $value; + } + } + + /** + * Get an attribute from the fluent instance. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public function get($key, $default = null) + { + if (array_key_exists($key, $this->attributes)) { + return $this->attributes[$key]; + } + + return value($default); + } + + /** + * Get the attributes from the fluent instance. + * + * @return array + */ + public function getAttributes() + { + return $this->attributes; + } + + /** + * Convert the fluent instance to an array. + * + * @return array + */ + public function toArray() + { + return $this->attributes; + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Convert the fluent instance to JSON. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } + + /** + * Determine if the given offset exists. + * + * @param string $offset + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($offset) + { + return isset($this->attributes[$offset]); + } + + /** + * Get the value for a given offset. + * + * @param string $offset + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $this->get($offset); + } + + /** + * Set the value at the given offset. + * + * @param string $offset + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($offset, $value) + { + $this->attributes[$offset] = $value; + } + + /** + * Unset the value at the given offset. + * + * @param string $offset + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($offset) + { + unset($this->attributes[$offset]); + } + + /** + * Handle dynamic calls to the fluent instance to set attributes. + * + * @param string $method + * @param array $parameters + * @return $this + */ + public function __call($method, $parameters) + { + $this->attributes[$method] = count($parameters) > 0 ? $parameters[0] : true; + + return $this; + } + + /** + * Dynamically retrieve the value of an attribute. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + return $this->get($key); + } + + /** + * Dynamically set the value of an attribute. + * + * @param string $key + * @param mixed $value + * @return void + */ + public function __set($key, $value) + { + $this->offsetSet($key, $value); + } + + /** + * Dynamically check if an attribute is set. + * + * @param string $key + * @return bool + */ + public function __isset($key) + { + return $this->offsetExists($key); + } + + /** + * Dynamically unset an attribute. + * + * @param string $key + * @return void + */ + public function __unset($key) + { + $this->offsetUnset($key); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HigherOrderTapProxy.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HigherOrderTapProxy.php new file mode 100644 index 00000000000..bbf9b2e54db --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HigherOrderTapProxy.php @@ -0,0 +1,38 @@ +target = $target; + } + + /** + * Dynamically pass method calls to the target. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + $this->target->{$method}(...$parameters); + + return $this->target; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HtmlString.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HtmlString.php new file mode 100644 index 00000000000..d6b71d46cde --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/HtmlString.php @@ -0,0 +1,66 @@ +html = $html; + } + + /** + * Get the HTML string. + * + * @return string + */ + public function toHtml() + { + return $this->html; + } + + /** + * Determine if the given HTML string is empty. + * + * @return bool + */ + public function isEmpty() + { + return $this->html === ''; + } + + /** + * Determine if the given HTML string is not empty. + * + * @return bool + */ + public function isNotEmpty() + { + return ! $this->isEmpty(); + } + + /** + * Get the HTML string. + * + * @return string + */ + public function __toString() + { + return $this->toHtml(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/InteractsWithTime.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/InteractsWithTime.php new file mode 100644 index 00000000000..2b617c392a5 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/InteractsWithTime.php @@ -0,0 +1,64 @@ +parseDateInterval($delay); + + return $delay instanceof DateTimeInterface + ? max(0, $delay->getTimestamp() - $this->currentTime()) + : (int) $delay; + } + + /** + * Get the "available at" UNIX timestamp. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @return int + */ + protected function availableAt($delay = 0) + { + $delay = $this->parseDateInterval($delay); + + return $delay instanceof DateTimeInterface + ? $delay->getTimestamp() + : Carbon::now()->addRealSeconds($delay)->getTimestamp(); + } + + /** + * If the given value is an interval, convert it to a DateTime instance. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @return \DateTimeInterface|int + */ + protected function parseDateInterval($delay) + { + if ($delay instanceof DateInterval) { + $delay = Carbon::now()->add($delay); + } + + return $delay; + } + + /** + * Get the current system time as a UNIX timestamp. + * + * @return int + */ + protected function currentTime() + { + return Carbon::now()->getTimestamp(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Js.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Js.php new file mode 100644 index 00000000000..6d6de3440d7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Js.php @@ -0,0 +1,145 @@ +js = $this->convertDataToJavaScriptExpression($data, $flags, $depth); + } + + /** + * Create a new JavaScript string from the given data. + * + * @param mixed $data + * @param int $flags + * @param int $depth + * @return static + * + * @throws \JsonException + */ + public static function from($data, $flags = 0, $depth = 512) + { + return new static($data, $flags, $depth); + } + + /** + * Convert the given data to a JavaScript expression. + * + * @param mixed $data + * @param int $flags + * @param int $depth + * @return string + * + * @throws \JsonException + */ + protected function convertDataToJavaScriptExpression($data, $flags = 0, $depth = 512) + { + if ($data instanceof self) { + return $data->toHtml(); + } + + $json = $this->jsonEncode($data, $flags, $depth); + + if (is_string($data)) { + return "'".substr($json, 1, -1)."'"; + } + + return $this->convertJsonToJavaScriptExpression($json, $flags); + } + + /** + * Encode the given data as JSON. + * + * @param mixed $data + * @param int $flags + * @param int $depth + * @return string + * + * @throws \JsonException + */ + protected function jsonEncode($data, $flags = 0, $depth = 512) + { + if ($data instanceof Jsonable) { + return $data->toJson($flags | static::REQUIRED_FLAGS); + } + + if ($data instanceof Arrayable && ! ($data instanceof JsonSerializable)) { + $data = $data->toArray(); + } + + return json_encode($data, $flags | static::REQUIRED_FLAGS, $depth); + } + + /** + * Convert the given JSON to a JavaScript expression. + * + * @param string $json + * @param int $flags + * @return string + * + * @throws \JsonException + */ + protected function convertJsonToJavaScriptExpression($json, $flags = 0) + { + if ('[]' === $json || '{}' === $json) { + return $json; + } + + if (Str::startsWith($json, ['"', '{', '['])) { + return "JSON.parse('".substr(json_encode($json, $flags | static::REQUIRED_FLAGS), 1, -1)."')"; + } + + return $json; + } + + /** + * Get the string representation of the data for use in HTML. + * + * @return string + */ + public function toHtml() + { + return $this->js; + } + + /** + * Get the string representation of the data for use in HTML. + * + * @return string + */ + public function __toString() + { + return $this->toHtml(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/LICENSE.md b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/LICENSE.md new file mode 100644 index 00000000000..79810c848f8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/LICENSE.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Taylor Otwell + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php new file mode 100755 index 00000000000..f8ae0729b16 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Manager.php @@ -0,0 +1,193 @@ +container = $container; + $this->config = $container->make('config'); + } + + /** + * Get the default driver name. + * + * @return string + */ + abstract public function getDefaultDriver(); + + /** + * Get a driver instance. + * + * @param string|null $driver + * @return mixed + * + * @throws \InvalidArgumentException + */ + public function driver($driver = null) + { + $driver = $driver ?: $this->getDefaultDriver(); + + if (is_null($driver)) { + throw new InvalidArgumentException(sprintf( + 'Unable to resolve NULL driver for [%s].', static::class + )); + } + + // If the given driver has not been created before, we will create the instances + // here and cache it so we can return it next time very quickly. If there is + // already a driver created by this name, we'll just return that instance. + if (! isset($this->drivers[$driver])) { + $this->drivers[$driver] = $this->createDriver($driver); + } + + return $this->drivers[$driver]; + } + + /** + * Create a new driver instance. + * + * @param string $driver + * @return mixed + * + * @throws \InvalidArgumentException + */ + protected function createDriver($driver) + { + // First, we will determine if a custom driver creator exists for the given driver and + // if it does not we will check for a creator method for the driver. Custom creator + // callbacks allow developers to build their own "drivers" easily using Closures. + if (isset($this->customCreators[$driver])) { + return $this->callCustomCreator($driver); + } else { + $method = 'create'.Str::studly($driver).'Driver'; + + if (method_exists($this, $method)) { + return $this->$method(); + } + } + + throw new InvalidArgumentException("Driver [$driver] not supported."); + } + + /** + * Call a custom driver creator. + * + * @param string $driver + * @return mixed + */ + protected function callCustomCreator($driver) + { + return $this->customCreators[$driver]($this->container); + } + + /** + * Register a custom driver creator Closure. + * + * @param string $driver + * @param \Closure $callback + * @return $this + */ + public function extend($driver, Closure $callback) + { + $this->customCreators[$driver] = $callback; + + return $this; + } + + /** + * Get all of the created "drivers". + * + * @return array + */ + public function getDrivers() + { + return $this->drivers; + } + + /** + * Get the container instance used by the manager. + * + * @return \Illuminate\Contracts\Container\Container + */ + public function getContainer() + { + return $this->container; + } + + /** + * Set the container instance used by the manager. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return $this + */ + public function setContainer(Container $container) + { + $this->container = $container; + + return $this; + } + + /** + * Forget all of the resolved driver instances. + * + * @return $this + */ + public function forgetDrivers() + { + $this->drivers = []; + + return $this; + } + + /** + * Dynamically call the default driver instance. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->driver()->$method(...$parameters); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php new file mode 100755 index 00000000000..e53d509d37c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MessageBag.php @@ -0,0 +1,418 @@ + $value) { + $value = $value instanceof Arrayable ? $value->toArray() : (array) $value; + + $this->messages[$key] = array_unique($value); + } + } + + /** + * Get the keys present in the message bag. + * + * @return array + */ + public function keys() + { + return array_keys($this->messages); + } + + /** + * Add a message to the message bag. + * + * @param string $key + * @param string $message + * @return $this + */ + public function add($key, $message) + { + if ($this->isUnique($key, $message)) { + $this->messages[$key][] = $message; + } + + return $this; + } + + /** + * Add a message to the message bag if the given conditional is "true". + * + * @param bool $boolean + * @param string $key + * @param string $message + * @return $this + */ + public function addIf($boolean, $key, $message) + { + return $boolean ? $this->add($key, $message) : $this; + } + + /** + * Determine if a key and message combination already exists. + * + * @param string $key + * @param string $message + * @return bool + */ + protected function isUnique($key, $message) + { + $messages = (array) $this->messages; + + return ! isset($messages[$key]) || ! in_array($message, $messages[$key]); + } + + /** + * Merge a new array of messages into the message bag. + * + * @param \Illuminate\Contracts\Support\MessageProvider|array $messages + * @return $this + */ + public function merge($messages) + { + if ($messages instanceof MessageProvider) { + $messages = $messages->getMessageBag()->getMessages(); + } + + $this->messages = array_merge_recursive($this->messages, $messages); + + return $this; + } + + /** + * Determine if messages exist for all of the given keys. + * + * @param array|string|null $key + * @return bool + */ + public function has($key) + { + if ($this->isEmpty()) { + return false; + } + + if (is_null($key)) { + return $this->any(); + } + + $keys = is_array($key) ? $key : func_get_args(); + + foreach ($keys as $key) { + if ($this->first($key) === '') { + return false; + } + } + + return true; + } + + /** + * Determine if messages exist for any of the given keys. + * + * @param array|string $keys + * @return bool + */ + public function hasAny($keys = []) + { + if ($this->isEmpty()) { + return false; + } + + $keys = is_array($keys) ? $keys : func_get_args(); + + foreach ($keys as $key) { + if ($this->has($key)) { + return true; + } + } + + return false; + } + + /** + * Get the first message from the message bag for a given key. + * + * @param string|null $key + * @param string|null $format + * @return string + */ + public function first($key = null, $format = null) + { + $messages = is_null($key) ? $this->all($format) : $this->get($key, $format); + + $firstMessage = Arr::first($messages, null, ''); + + return is_array($firstMessage) ? Arr::first($firstMessage) : $firstMessage; + } + + /** + * Get all of the messages from the message bag for a given key. + * + * @param string $key + * @param string|null $format + * @return array + */ + public function get($key, $format = null) + { + // If the message exists in the message bag, we will transform it and return + // the message. Otherwise, we will check if the key is implicit & collect + // all the messages that match the given key and output it as an array. + if (array_key_exists($key, $this->messages)) { + return $this->transform( + $this->messages[$key], $this->checkFormat($format), $key + ); + } + + if (Str::contains($key, '*')) { + return $this->getMessagesForWildcardKey($key, $format); + } + + return []; + } + + /** + * Get the messages for a wildcard key. + * + * @param string $key + * @param string|null $format + * @return array + */ + protected function getMessagesForWildcardKey($key, $format) + { + return collect($this->messages) + ->filter(function ($messages, $messageKey) use ($key) { + return Str::is($key, $messageKey); + }) + ->map(function ($messages, $messageKey) use ($format) { + return $this->transform( + $messages, $this->checkFormat($format), $messageKey + ); + })->all(); + } + + /** + * Get all of the messages for every key in the message bag. + * + * @param string|null $format + * @return array + */ + public function all($format = null) + { + $format = $this->checkFormat($format); + + $all = []; + + foreach ($this->messages as $key => $messages) { + $all = array_merge($all, $this->transform($messages, $format, $key)); + } + + return $all; + } + + /** + * Get all of the unique messages for every key in the message bag. + * + * @param string|null $format + * @return array + */ + public function unique($format = null) + { + return array_unique($this->all($format)); + } + + /** + * Format an array of messages. + * + * @param array $messages + * @param string $format + * @param string $messageKey + * @return array + */ + protected function transform($messages, $format, $messageKey) + { + return collect((array) $messages) + ->map(function ($message) use ($format, $messageKey) { + // We will simply spin through the given messages and transform each one + // replacing the :message place holder with the real message allowing + // the messages to be easily formatted to each developer's desires. + return str_replace([':message', ':key'], [$message, $messageKey], $format); + })->all(); + } + + /** + * Get the appropriate format based on the given format. + * + * @param string $format + * @return string + */ + protected function checkFormat($format) + { + return $format ?: $this->format; + } + + /** + * Get the raw messages in the message bag. + * + * @return array + */ + public function messages() + { + return $this->messages; + } + + /** + * Get the raw messages in the message bag. + * + * @return array + */ + public function getMessages() + { + return $this->messages(); + } + + /** + * Get the messages for the instance. + * + * @return \Illuminate\Support\MessageBag + */ + public function getMessageBag() + { + return $this; + } + + /** + * Get the default message format. + * + * @return string + */ + public function getFormat() + { + return $this->format; + } + + /** + * Set the default message format. + * + * @param string $format + * @return \Illuminate\Support\MessageBag + */ + public function setFormat($format = ':message') + { + $this->format = $format; + + return $this; + } + + /** + * Determine if the message bag has any messages. + * + * @return bool + */ + public function isEmpty() + { + return ! $this->any(); + } + + /** + * Determine if the message bag has any messages. + * + * @return bool + */ + public function isNotEmpty() + { + return $this->any(); + } + + /** + * Determine if the message bag has any messages. + * + * @return bool + */ + public function any() + { + return $this->count() > 0; + } + + /** + * Get the number of messages in the message bag. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return count($this->messages, COUNT_RECURSIVE) - count($this->messages); + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return $this->getMessages(); + } + + /** + * Convert the object into something JSON serializable. + * + * @return array + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Convert the object to its JSON representation. + * + * @param int $options + * @return string + */ + public function toJson($options = 0) + { + return json_encode($this->jsonSerialize(), $options); + } + + /** + * Convert the message bag to its string representation. + * + * @return string + */ + public function __toString() + { + return $this->toJson(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MultipleInstanceManager.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MultipleInstanceManager.php new file mode 100644 index 00000000000..97cee33af20 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/MultipleInstanceManager.php @@ -0,0 +1,191 @@ +app = $app; + } + + /** + * Get the default instance name. + * + * @return string + */ + abstract public function getDefaultInstance(); + + /** + * Set the default instance name. + * + * @param string $name + * @return void + */ + abstract public function setDefaultInstance($name); + + /** + * Get the instance specific configuration. + * + * @param string $name + * @return array + */ + abstract public function getInstanceConfig($name); + + /** + * Get an instance instance by name. + * + * @param string|null $name + * @return mixed + */ + public function instance($name = null) + { + $name = $name ?: $this->getDefaultInstance(); + + return $this->instances[$name] = $this->get($name); + } + + /** + * Attempt to get an instance from the local cache. + * + * @param string $name + * @return mixed + */ + protected function get($name) + { + return $this->instances[$name] ?? $this->resolve($name); + } + + /** + * Resolve the given instance. + * + * @param string $name + * @return mixed + * + * @throws \InvalidArgumentException + */ + protected function resolve($name) + { + $config = $this->getInstanceConfig($name); + + if (is_null($config)) { + throw new InvalidArgumentException("Instance [{$name}] is not defined."); + } + + if (! array_key_exists('driver', $config)) { + throw new RuntimeException("Instance [{$name}] does not specify a driver."); + } + + if (isset($this->customCreators[$config['driver']])) { + return $this->callCustomCreator($config); + } else { + $driverMethod = 'create'.ucfirst($config['driver']).'Driver'; + + if (method_exists($this, $driverMethod)) { + return $this->{$driverMethod}($config); + } else { + throw new InvalidArgumentException("Instance driver [{$config['driver']}] is not supported."); + } + } + } + + /** + * Call a custom instance creator. + * + * @param array $config + * @return mixed + */ + protected function callCustomCreator(array $config) + { + return $this->customCreators[$config['driver']]($this->app, $config); + } + + /** + * Unset the given instances. + * + * @param array|string|null $name + * @return $this + */ + public function forgetInstance($name = null) + { + $name = $name ?? $this->getDefaultInstance(); + + foreach ((array) $name as $instanceName) { + if (isset($this->instances[$instanceName])) { + unset($this->instances[$instanceName]); + } + } + + return $this; + } + + /** + * Disconnect the given instance and remove from local cache. + * + * @param string|null $name + * @return void + */ + public function purge($name = null) + { + $name = $name ?? $this->getDefaultInstance(); + + unset($this->instances[$name]); + } + + /** + * Register a custom instance creator Closure. + * + * @param string $name + * @param \Closure $callback + * @return $this + */ + public function extend($name, Closure $callback) + { + $this->customCreators[$name] = $callback->bindTo($this, $this); + + return $this; + } + + /** + * Dynamically call the default instance. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->instance()->$method(...$parameters); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php new file mode 100755 index 00000000000..a0d8508b281 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/NamespacedItemResolver.php @@ -0,0 +1,112 @@ +parsed[$key])) { + return $this->parsed[$key]; + } + + // If the key does not contain a double colon, it means the key is not in a + // namespace, and is just a regular configuration item. Namespaces are a + // tool for organizing configuration items for things such as modules. + if (strpos($key, '::') === false) { + $segments = explode('.', $key); + + $parsed = $this->parseBasicSegments($segments); + } else { + $parsed = $this->parseNamespacedSegments($key); + } + + // Once we have the parsed array of this key's elements, such as its groups + // and namespace, we will cache each array inside a simple list that has + // the key and the parsed array for quick look-ups for later requests. + return $this->parsed[$key] = $parsed; + } + + /** + * Parse an array of basic segments. + * + * @param array $segments + * @return array + */ + protected function parseBasicSegments(array $segments) + { + // The first segment in a basic array will always be the group, so we can go + // ahead and grab that segment. If there is only one total segment we are + // just pulling an entire group out of the array and not a single item. + $group = $segments[0]; + + // If there is more than one segment in this group, it means we are pulling + // a specific item out of a group and will need to return this item name + // as well as the group so we know which item to pull from the arrays. + $item = count($segments) === 1 + ? null + : implode('.', array_slice($segments, 1)); + + return [null, $group, $item]; + } + + /** + * Parse an array of namespaced segments. + * + * @param string $key + * @return array + */ + protected function parseNamespacedSegments($key) + { + [$namespace, $item] = explode('::', $key); + + // First we'll just explode the first segment to get the namespace and group + // since the item should be in the remaining segments. Once we have these + // two pieces of data we can proceed with parsing out the item's value. + $itemSegments = explode('.', $item); + + $groupAndItem = array_slice( + $this->parseBasicSegments($itemSegments), 1 + ); + + return array_merge([$namespace], $groupAndItem); + } + + /** + * Set the parsed value of a key. + * + * @param string $key + * @param array $parsed + * @return void + */ + public function setParsedKey($key, $parsed) + { + $this->parsed[$key] = $parsed; + } + + /** + * Flush the cache of parsed keys. + * + * @return void + */ + public function flushParsedKeys() + { + $this->parsed = []; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Optional.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Optional.php new file mode 100644 index 00000000000..816190dd7a2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Optional.php @@ -0,0 +1,135 @@ +value = $value; + } + + /** + * Dynamically access a property on the underlying object. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + if (is_object($this->value)) { + return $this->value->{$key} ?? null; + } + } + + /** + * Dynamically check a property exists on the underlying object. + * + * @param mixed $name + * @return bool + */ + public function __isset($name) + { + if (is_object($this->value)) { + return isset($this->value->{$name}); + } + + if (is_array($this->value) || $this->value instanceof ArrayObject) { + return isset($this->value[$name]); + } + + return false; + } + + /** + * Determine if an item exists at an offset. + * + * @param mixed $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return Arr::accessible($this->value) && Arr::exists($this->value, $key); + } + + /** + * Get an item at a given offset. + * + * @param mixed $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return Arr::get($this->value, $key); + } + + /** + * Set the item at a given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + if (Arr::accessible($this->value)) { + $this->value[$key] = $value; + } + } + + /** + * Unset the item at a given offset. + * + * @param string $key + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + if (Arr::accessible($this->value)) { + unset($this->value[$key]); + } + } + + /** + * Dynamically pass a method to the underlying object. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + if (static::hasMacro($method)) { + return $this->macroCall($method, $parameters); + } + + if (is_object($this->value)) { + return $this->value->{$method}(...$parameters); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php new file mode 100755 index 00000000000..109a10816d7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Pluralizer.php @@ -0,0 +1,142 @@ +pluralize($value); + + return static::matchCase($plural, $value); + } + + /** + * Get the singular form of an English word. + * + * @param string $value + * @return string + */ + public static function singular($value) + { + $singular = static::inflector()->singularize($value); + + return static::matchCase($singular, $value); + } + + /** + * Determine if the given value is uncountable. + * + * @param string $value + * @return bool + */ + protected static function uncountable($value) + { + return in_array(strtolower($value), static::$uncountable); + } + + /** + * Attempt to match the case on two strings. + * + * @param string $value + * @param string $comparison + * @return string + */ + protected static function matchCase($value, $comparison) + { + $functions = ['mb_strtolower', 'mb_strtoupper', 'ucfirst', 'ucwords']; + + foreach ($functions as $function) { + if ($function($comparison) === $comparison) { + return $function($value); + } + } + + return $value; + } + + /** + * Get the inflector instance. + * + * @return \Doctrine\Inflector\Inflector + */ + public static function inflector() + { + static $inflector; + + if (is_null($inflector)) { + $inflector = InflectorFactory::createForLanguage('english')->build(); + } + + return $inflector; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ProcessUtils.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ProcessUtils.php new file mode 100644 index 00000000000..1caa9e168a6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ProcessUtils.php @@ -0,0 +1,69 @@ +isPublic(); + } + + if (is_object($var[0]) && method_exists($class, '__call')) { + return (new ReflectionMethod($class, '__call'))->isPublic(); + } + + if (! is_object($var[0]) && method_exists($class, '__callStatic')) { + return (new ReflectionMethod($class, '__callStatic'))->isPublic(); + } + + return false; + } + + /** + * Get the class name of the given parameter's type, if possible. + * + * @param \ReflectionParameter $parameter + * @return string|null + */ + public static function getParameterClassName($parameter) + { + $type = $parameter->getType(); + + if (! $type instanceof ReflectionNamedType || $type->isBuiltin()) { + return; + } + + return static::getTypeName($parameter, $type); + } + + /** + * Get the class names of the given parameter's type, including union types. + * + * @param \ReflectionParameter $parameter + * @return array + */ + public static function getParameterClassNames($parameter) + { + $type = $parameter->getType(); + + if (! $type instanceof ReflectionUnionType) { + return array_filter([static::getParameterClassName($parameter)]); + } + + $unionTypes = []; + + foreach ($type->getTypes() as $listedType) { + if (! $listedType instanceof ReflectionNamedType || $listedType->isBuiltin()) { + continue; + } + + $unionTypes[] = static::getTypeName($parameter, $listedType); + } + + return array_filter($unionTypes); + } + + /** + * Get the given type's class name. + * + * @param \ReflectionParameter $parameter + * @param \ReflectionNamedType $type + * @return string + */ + protected static function getTypeName($parameter, $type) + { + $name = $type->getName(); + + if (! is_null($class = $parameter->getDeclaringClass())) { + if ($name === 'self') { + return $class->getName(); + } + + if ($name === 'parent' && $parent = $class->getParentClass()) { + return $parent->getName(); + } + } + + return $name; + } + + /** + * Determine if the parameter's type is a subclass of the given type. + * + * @param \ReflectionParameter $parameter + * @param string $className + * @return bool + */ + public static function isParameterSubclassOf($parameter, $className) + { + $paramClassName = static::getParameterClassName($parameter); + + return $paramClassName + && (class_exists($paramClassName) || interface_exists($paramClassName)) + && (new ReflectionClass($paramClassName))->isSubclassOf($className); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php new file mode 100755 index 00000000000..6c530c121d3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ServiceProvider.php @@ -0,0 +1,437 @@ +app = $app; + } + + /** + * Register any application services. + * + * @return void + */ + public function register() + { + // + } + + /** + * Register a booting callback to be run before the "boot" method is called. + * + * @param \Closure $callback + * @return void + */ + public function booting(Closure $callback) + { + $this->bootingCallbacks[] = $callback; + } + + /** + * Register a booted callback to be run after the "boot" method is called. + * + * @param \Closure $callback + * @return void + */ + public function booted(Closure $callback) + { + $this->bootedCallbacks[] = $callback; + } + + /** + * Call the registered booting callbacks. + * + * @return void + */ + public function callBootingCallbacks() + { + $index = 0; + + while ($index < count($this->bootingCallbacks)) { + $this->app->call($this->bootingCallbacks[$index]); + + $index++; + } + } + + /** + * Call the registered booted callbacks. + * + * @return void + */ + public function callBootedCallbacks() + { + $index = 0; + + while ($index < count($this->bootedCallbacks)) { + $this->app->call($this->bootedCallbacks[$index]); + + $index++; + } + } + + /** + * Merge the given configuration with the existing configuration. + * + * @param string $path + * @param string $key + * @return void + */ + protected function mergeConfigFrom($path, $key) + { + if (! ($this->app instanceof CachesConfiguration && $this->app->configurationIsCached())) { + $config = $this->app->make('config'); + + $config->set($key, array_merge( + require $path, $config->get($key, []) + )); + } + } + + /** + * Load the given routes file if routes are not already cached. + * + * @param string $path + * @return void + */ + protected function loadRoutesFrom($path) + { + if (! ($this->app instanceof CachesRoutes && $this->app->routesAreCached())) { + require $path; + } + } + + /** + * Register a view file namespace. + * + * @param string|array $path + * @param string $namespace + * @return void + */ + protected function loadViewsFrom($path, $namespace) + { + $this->callAfterResolving('view', function ($view) use ($path, $namespace) { + if (isset($this->app->config['view']['paths']) && + is_array($this->app->config['view']['paths'])) { + foreach ($this->app->config['view']['paths'] as $viewPath) { + if (is_dir($appPath = $viewPath.'/vendor/'.$namespace)) { + $view->addNamespace($namespace, $appPath); + } + } + } + + $view->addNamespace($namespace, $path); + }); + } + + /** + * Register the given view components with a custom prefix. + * + * @param string $prefix + * @param array $components + * @return void + */ + protected function loadViewComponentsAs($prefix, array $components) + { + $this->callAfterResolving(BladeCompiler::class, function ($blade) use ($prefix, $components) { + foreach ($components as $alias => $component) { + $blade->component($component, is_string($alias) ? $alias : null, $prefix); + } + }); + } + + /** + * Register a translation file namespace. + * + * @param string $path + * @param string $namespace + * @return void + */ + protected function loadTranslationsFrom($path, $namespace) + { + $this->callAfterResolving('translator', function ($translator) use ($path, $namespace) { + $translator->addNamespace($namespace, $path); + }); + } + + /** + * Register a JSON translation file path. + * + * @param string $path + * @return void + */ + protected function loadJsonTranslationsFrom($path) + { + $this->callAfterResolving('translator', function ($translator) use ($path) { + $translator->addJsonPath($path); + }); + } + + /** + * Register database migration paths. + * + * @param array|string $paths + * @return void + */ + protected function loadMigrationsFrom($paths) + { + $this->callAfterResolving('migrator', function ($migrator) use ($paths) { + foreach ((array) $paths as $path) { + $migrator->path($path); + } + }); + } + + /** + * Register Eloquent model factory paths. + * + * @deprecated Will be removed in a future Laravel version. + * + * @param array|string $paths + * @return void + */ + protected function loadFactoriesFrom($paths) + { + $this->callAfterResolving(ModelFactory::class, function ($factory) use ($paths) { + foreach ((array) $paths as $path) { + $factory->load($path); + } + }); + } + + /** + * Setup an after resolving listener, or fire immediately if already resolved. + * + * @param string $name + * @param callable $callback + * @return void + */ + protected function callAfterResolving($name, $callback) + { + $this->app->afterResolving($name, $callback); + + if ($this->app->resolved($name)) { + $callback($this->app->make($name), $this->app); + } + } + + /** + * Register paths to be published by the publish command. + * + * @param array $paths + * @param mixed $groups + * @return void + */ + protected function publishes(array $paths, $groups = null) + { + $this->ensurePublishArrayInitialized($class = static::class); + + static::$publishes[$class] = array_merge(static::$publishes[$class], $paths); + + foreach ((array) $groups as $group) { + $this->addPublishGroup($group, $paths); + } + } + + /** + * Ensure the publish array for the service provider is initialized. + * + * @param string $class + * @return void + */ + protected function ensurePublishArrayInitialized($class) + { + if (! array_key_exists($class, static::$publishes)) { + static::$publishes[$class] = []; + } + } + + /** + * Add a publish group / tag to the service provider. + * + * @param string $group + * @param array $paths + * @return void + */ + protected function addPublishGroup($group, $paths) + { + if (! array_key_exists($group, static::$publishGroups)) { + static::$publishGroups[$group] = []; + } + + static::$publishGroups[$group] = array_merge( + static::$publishGroups[$group], $paths + ); + } + + /** + * Get the paths to publish. + * + * @param string|null $provider + * @param string|null $group + * @return array + */ + public static function pathsToPublish($provider = null, $group = null) + { + if (! is_null($paths = static::pathsForProviderOrGroup($provider, $group))) { + return $paths; + } + + return collect(static::$publishes)->reduce(function ($paths, $p) { + return array_merge($paths, $p); + }, []); + } + + /** + * Get the paths for the provider or group (or both). + * + * @param string|null $provider + * @param string|null $group + * @return array + */ + protected static function pathsForProviderOrGroup($provider, $group) + { + if ($provider && $group) { + return static::pathsForProviderAndGroup($provider, $group); + } elseif ($group && array_key_exists($group, static::$publishGroups)) { + return static::$publishGroups[$group]; + } elseif ($provider && array_key_exists($provider, static::$publishes)) { + return static::$publishes[$provider]; + } elseif ($group || $provider) { + return []; + } + } + + /** + * Get the paths for the provider and group. + * + * @param string $provider + * @param string $group + * @return array + */ + protected static function pathsForProviderAndGroup($provider, $group) + { + if (! empty(static::$publishes[$provider]) && ! empty(static::$publishGroups[$group])) { + return array_intersect_key(static::$publishes[$provider], static::$publishGroups[$group]); + } + + return []; + } + + /** + * Get the service providers available for publishing. + * + * @return array + */ + public static function publishableProviders() + { + return array_keys(static::$publishes); + } + + /** + * Get the groups available for publishing. + * + * @return array + */ + public static function publishableGroups() + { + return array_keys(static::$publishGroups); + } + + /** + * Register the package's custom Artisan commands. + * + * @param array|mixed $commands + * @return void + */ + public function commands($commands) + { + $commands = is_array($commands) ? $commands : func_get_args(); + + Artisan::starting(function ($artisan) use ($commands) { + $artisan->resolveCommands($commands); + }); + } + + /** + * Get the services provided by the provider. + * + * @return array + */ + public function provides() + { + return []; + } + + /** + * Get the events that trigger this service provider to register. + * + * @return array + */ + public function when() + { + return []; + } + + /** + * Determine if the provider is deferred. + * + * @return bool + */ + public function isDeferred() + { + return $this instanceof DeferrableProvider; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Str.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Str.php new file mode 100644 index 00000000000..21e19040389 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Str.php @@ -0,0 +1,1033 @@ + 0; + } + + /** + * Convert a string to kebab case. + * + * @param string $value + * @return string + */ + public static function kebab($value) + { + return static::snake($value, '-'); + } + + /** + * Return the length of the given string. + * + * @param string $value + * @param string|null $encoding + * @return int + */ + public static function length($value, $encoding = null) + { + if ($encoding) { + return mb_strlen($value, $encoding); + } + + return mb_strlen($value); + } + + /** + * Limit the number of characters in a string. + * + * @param string $value + * @param int $limit + * @param string $end + * @return string + */ + public static function limit($value, $limit = 100, $end = '...') + { + if (mb_strwidth($value, 'UTF-8') <= $limit) { + return $value; + } + + return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end; + } + + /** + * Convert the given string to lower-case. + * + * @param string $value + * @return string + */ + public static function lower($value) + { + return mb_strtolower($value, 'UTF-8'); + } + + /** + * Limit the number of words in a string. + * + * @param string $value + * @param int $words + * @param string $end + * @return string + */ + public static function words($value, $words = 100, $end = '...') + { + preg_match('/^\s*+(?:\S++\s*+){1,'.$words.'}/u', $value, $matches); + + if (! isset($matches[0]) || static::length($value) === static::length($matches[0])) { + return $value; + } + + return rtrim($matches[0]).$end; + } + + /** + * Converts GitHub flavored Markdown into HTML. + * + * @param string $string + * @param array $options + * @return string + */ + public static function markdown($string, array $options = []) + { + $converter = new GithubFlavoredMarkdownConverter($options); + + return (string) $converter->convertToHtml($string); + } + + /** + * Masks a portion of a string with a repeated character. + * + * @param string $string + * @param string $character + * @param int $index + * @param int|null $length + * @param string $encoding + * @return string + */ + public static function mask($string, $character, $index, $length = null, $encoding = 'UTF-8') + { + if ($character === '') { + return $string; + } + + if (is_null($length) && PHP_MAJOR_VERSION < 8) { + $length = mb_strlen($string, $encoding); + } + + $segment = mb_substr($string, $index, $length, $encoding); + + if ($segment === '') { + return $string; + } + + $strlen = mb_strlen($string, $encoding); + $startIndex = $index; + + if ($index < 0) { + $startIndex = $index < -$strlen ? 0 : $strlen + $index; + } + + $start = mb_substr($string, 0, $startIndex, $encoding); + $segmentLen = mb_strlen($segment, $encoding); + $end = mb_substr($string, $startIndex + $segmentLen); + + return $start.str_repeat(mb_substr($character, 0, 1, $encoding), $segmentLen).$end; + } + + /** + * Get the string matching the given pattern. + * + * @param string $pattern + * @param string $subject + * @return string + */ + public static function match($pattern, $subject) + { + preg_match($pattern, $subject, $matches); + + if (! $matches) { + return ''; + } + + return $matches[1] ?? $matches[0]; + } + + /** + * Get the string matching the given pattern. + * + * @param string $pattern + * @param string $subject + * @return \Illuminate\Support\Collection + */ + public static function matchAll($pattern, $subject) + { + preg_match_all($pattern, $subject, $matches); + + if (empty($matches[0])) { + return collect(); + } + + return collect($matches[1] ?? $matches[0]); + } + + /** + * Pad both sides of a string with another. + * + * @param string $value + * @param int $length + * @param string $pad + * @return string + */ + public static function padBoth($value, $length, $pad = ' ') + { + return str_pad($value, strlen($value) - mb_strlen($value) + $length, $pad, STR_PAD_BOTH); + } + + /** + * Pad the left side of a string with another. + * + * @param string $value + * @param int $length + * @param string $pad + * @return string + */ + public static function padLeft($value, $length, $pad = ' ') + { + return str_pad($value, strlen($value) - mb_strlen($value) + $length, $pad, STR_PAD_LEFT); + } + + /** + * Pad the right side of a string with another. + * + * @param string $value + * @param int $length + * @param string $pad + * @return string + */ + public static function padRight($value, $length, $pad = ' ') + { + return str_pad($value, strlen($value) - mb_strlen($value) + $length, $pad, STR_PAD_RIGHT); + } + + /** + * Parse a Class[@]method style callback into class and method. + * + * @param string $callback + * @param string|null $default + * @return array + */ + public static function parseCallback($callback, $default = null) + { + return static::contains($callback, '@') ? explode('@', $callback, 2) : [$callback, $default]; + } + + /** + * Get the plural form of an English word. + * + * @param string $value + * @param int|array|\Countable $count + * @return string + */ + public static function plural($value, $count = 2) + { + return Pluralizer::plural($value, $count); + } + + /** + * Pluralize the last word of an English, studly caps case string. + * + * @param string $value + * @param int|array|\Countable $count + * @return string + */ + public static function pluralStudly($value, $count = 2) + { + $parts = preg_split('/(.)(?=[A-Z])/u', $value, -1, PREG_SPLIT_DELIM_CAPTURE); + + $lastWord = array_pop($parts); + + return implode('', $parts).self::plural($lastWord, $count); + } + + /** + * Generate a more truly "random" alpha-numeric string. + * + * @param int $length + * @return string + */ + public static function random($length = 16) + { + $string = ''; + + while (($len = strlen($string)) < $length) { + $size = $length - $len; + + $bytes = random_bytes($size); + + $string .= substr(str_replace(['/', '+', '='], '', base64_encode($bytes)), 0, $size); + } + + return $string; + } + + /** + * Repeat the given string. + * + * @param string $string + * @param int $times + * @return string + */ + public static function repeat(string $string, int $times) + { + return str_repeat($string, $times); + } + + /** + * Replace a given value in the string sequentially with an array. + * + * @param string $search + * @param array $replace + * @param string $subject + * @return string + */ + public static function replaceArray($search, array $replace, $subject) + { + $segments = explode($search, $subject); + + $result = array_shift($segments); + + foreach ($segments as $segment) { + $result .= (array_shift($replace) ?? $search).$segment; + } + + return $result; + } + + /** + * Replace the given value in the given string. + * + * @param string|string[] $search + * @param string|string[] $replace + * @param string|string[] $subject + * @return string + */ + public static function replace($search, $replace, $subject) + { + return str_replace($search, $replace, $subject); + } + + /** + * Replace the first occurrence of a given value in the string. + * + * @param string $search + * @param string $replace + * @param string $subject + * @return string + */ + public static function replaceFirst($search, $replace, $subject) + { + if ($search === '') { + return $subject; + } + + $position = strpos($subject, $search); + + if ($position !== false) { + return substr_replace($subject, $replace, $position, strlen($search)); + } + + return $subject; + } + + /** + * Replace the last occurrence of a given value in the string. + * + * @param string $search + * @param string $replace + * @param string $subject + * @return string + */ + public static function replaceLast($search, $replace, $subject) + { + if ($search === '') { + return $subject; + } + + $position = strrpos($subject, $search); + + if ($position !== false) { + return substr_replace($subject, $replace, $position, strlen($search)); + } + + return $subject; + } + + /** + * Remove any occurrence of the given string in the subject. + * + * @param string|array $search + * @param string $subject + * @param bool $caseSensitive + * @return string + */ + public static function remove($search, $subject, $caseSensitive = true) + { + $subject = $caseSensitive + ? str_replace($search, '', $subject) + : str_ireplace($search, '', $subject); + + return $subject; + } + + /** + * Reverse the given string. + * + * @param string $value + * @return string + */ + public static function reverse(string $value) + { + return implode(array_reverse(mb_str_split($value))); + } + + /** + * Begin a string with a single instance of a given value. + * + * @param string $value + * @param string $prefix + * @return string + */ + public static function start($value, $prefix) + { + $quoted = preg_quote($prefix, '/'); + + return $prefix.preg_replace('/^(?:'.$quoted.')+/u', '', $value); + } + + /** + * Convert the given string to upper-case. + * + * @param string $value + * @return string + */ + public static function upper($value) + { + return mb_strtoupper($value, 'UTF-8'); + } + + /** + * Convert the given string to title case. + * + * @param string $value + * @return string + */ + public static function title($value) + { + return mb_convert_case($value, MB_CASE_TITLE, 'UTF-8'); + } + + /** + * Convert the given string to title case for each word. + * + * @param string $value + * @return string + */ + public static function headline($value) + { + $parts = explode(' ', $value); + + $parts = count($parts) > 1 + ? $parts = array_map([static::class, 'title'], $parts) + : $parts = array_map([static::class, 'title'], static::ucsplit(implode('_', $parts))); + + $collapsed = static::replace(['-', '_', ' '], '_', implode('_', $parts)); + + return implode(' ', array_filter(explode('_', $collapsed))); + } + + /** + * Get the singular form of an English word. + * + * @param string $value + * @return string + */ + public static function singular($value) + { + return Pluralizer::singular($value); + } + + /** + * Generate a URL friendly "slug" from a given string. + * + * @param string $title + * @param string $separator + * @param string|null $language + * @return string + */ + public static function slug($title, $separator = '-', $language = 'en') + { + $title = $language ? static::ascii($title, $language) : $title; + + // Convert all dashes/underscores into separator + $flip = $separator === '-' ? '_' : '-'; + + $title = preg_replace('!['.preg_quote($flip).']+!u', $separator, $title); + + // Replace @ with the word 'at' + $title = str_replace('@', $separator.'at'.$separator, $title); + + // Remove all characters that are not the separator, letters, numbers, or whitespace. + $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', static::lower($title)); + + // Replace all separator characters and whitespace by a single separator + $title = preg_replace('!['.preg_quote($separator).'\s]+!u', $separator, $title); + + return trim($title, $separator); + } + + /** + * Convert a string to snake case. + * + * @param string $value + * @param string $delimiter + * @return string + */ + public static function snake($value, $delimiter = '_') + { + $key = $value; + + if (isset(static::$snakeCache[$key][$delimiter])) { + return static::$snakeCache[$key][$delimiter]; + } + + if (! ctype_lower($value)) { + $value = preg_replace('/\s+/u', '', ucwords($value)); + + $value = static::lower(preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value)); + } + + return static::$snakeCache[$key][$delimiter] = $value; + } + + /** + * Determine if a given string starts with a given substring. + * + * @param string $haystack + * @param string|string[] $needles + * @return bool + */ + public static function startsWith($haystack, $needles) + { + foreach ((array) $needles as $needle) { + if ((string) $needle !== '' && strncmp($haystack, $needle, strlen($needle)) === 0) { + return true; + } + } + + return false; + } + + /** + * Convert a value to studly caps case. + * + * @param string $value + * @return string + */ + public static function studly($value) + { + $key = $value; + + if (isset(static::$studlyCache[$key])) { + return static::$studlyCache[$key]; + } + + $words = explode(' ', static::replace(['-', '_'], ' ', $value)); + + $studlyWords = array_map(function ($word) { + return static::ucfirst($word); + }, $words); + + return static::$studlyCache[$key] = implode($studlyWords); + } + + /** + * Returns the portion of the string specified by the start and length parameters. + * + * @param string $string + * @param int $start + * @param int|null $length + * @return string + */ + public static function substr($string, $start, $length = null) + { + return mb_substr($string, $start, $length, 'UTF-8'); + } + + /** + * Returns the number of substring occurrences. + * + * @param string $haystack + * @param string $needle + * @param int $offset + * @param int|null $length + * @return int + */ + public static function substrCount($haystack, $needle, $offset = 0, $length = null) + { + if (! is_null($length)) { + return substr_count($haystack, $needle, $offset, $length); + } else { + return substr_count($haystack, $needle, $offset); + } + } + + /** + * Replace text within a portion of a string. + * + * @param string|array $string + * @param string|array $replace + * @param array|int $offset + * @param array|int|null $length + * @return string|array + */ + public static function substrReplace($string, $replace, $offset = 0, $length = null) + { + if ($length === null) { + $length = strlen($string); + } + + return substr_replace($string, $replace, $offset, $length); + } + + /** + * Swap multiple keywords in a string with other keywords. + * + * @param array $map + * @param string $subject + * @return string + */ + public static function swap(array $map, $subject) + { + return strtr($subject, $map); + } + + /** + * Make a string's first character uppercase. + * + * @param string $string + * @return string + */ + public static function ucfirst($string) + { + return static::upper(static::substr($string, 0, 1)).static::substr($string, 1); + } + + /** + * Split a string into pieces by uppercase characters. + * + * @param string $string + * @return array + */ + public static function ucsplit($string) + { + return preg_split('/(?=\p{Lu})/u', $string, -1, PREG_SPLIT_NO_EMPTY); + } + + /** + * Get the number of words a string contains. + * + * @param string $string + * @return int + */ + public static function wordCount($string) + { + return str_word_count($string); + } + + /** + * Generate a UUID (version 4). + * + * @return \Ramsey\Uuid\UuidInterface + */ + public static function uuid() + { + return static::$uuidFactory + ? call_user_func(static::$uuidFactory) + : Uuid::uuid4(); + } + + /** + * Generate a time-ordered UUID (version 4). + * + * @return \Ramsey\Uuid\UuidInterface + */ + public static function orderedUuid() + { + if (static::$uuidFactory) { + return call_user_func(static::$uuidFactory); + } + + $factory = new UuidFactory; + + $factory->setRandomGenerator(new CombGenerator( + $factory->getRandomGenerator(), + $factory->getNumberConverter() + )); + + $factory->setCodec(new TimestampFirstCombCodec( + $factory->getUuidBuilder() + )); + + return $factory->uuid4(); + } + + /** + * Set the callable that will be used to generate UUIDs. + * + * @param callable|null $factory + * @return void + */ + public static function createUuidsUsing(callable $factory = null) + { + static::$uuidFactory = $factory; + } + + /** + * Indicate that UUIDs should be created normally and not using a custom factory. + * + * @return void + */ + public static function createUuidsNormally() + { + static::$uuidFactory = null; + } + + /** + * Remove all strings from the casing caches. + * + * @return void + */ + public static function flushCache() + { + static::$snakeCache = []; + static::$camelCache = []; + static::$studlyCache = []; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Stringable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Stringable.php new file mode 100644 index 00000000000..414be0c2735 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Stringable.php @@ -0,0 +1,1026 @@ +value = (string) $value; + } + + /** + * Return the remainder of a string after the first occurrence of a given value. + * + * @param string $search + * @return static + */ + public function after($search) + { + return new static(Str::after($this->value, $search)); + } + + /** + * Return the remainder of a string after the last occurrence of a given value. + * + * @param string $search + * @return static + */ + public function afterLast($search) + { + return new static(Str::afterLast($this->value, $search)); + } + + /** + * Append the given values to the string. + * + * @param array $values + * @return static + */ + public function append(...$values) + { + return new static($this->value.implode('', $values)); + } + + /** + * Transliterate a UTF-8 value to ASCII. + * + * @param string $language + * @return static + */ + public function ascii($language = 'en') + { + return new static(Str::ascii($this->value, $language)); + } + + /** + * Get the trailing name component of the path. + * + * @param string $suffix + * @return static + */ + public function basename($suffix = '') + { + return new static(basename($this->value, $suffix)); + } + + /** + * Get the basename of the class path. + * + * @return static + */ + public function classBasename() + { + return new static(class_basename($this->value)); + } + + /** + * Get the portion of a string before the first occurrence of a given value. + * + * @param string $search + * @return static + */ + public function before($search) + { + return new static(Str::before($this->value, $search)); + } + + /** + * Get the portion of a string before the last occurrence of a given value. + * + * @param string $search + * @return static + */ + public function beforeLast($search) + { + return new static(Str::beforeLast($this->value, $search)); + } + + /** + * Get the portion of a string between two given values. + * + * @param string $from + * @param string $to + * @return static + */ + public function between($from, $to) + { + return new static(Str::between($this->value, $from, $to)); + } + + /** + * Convert a value to camel case. + * + * @return static + */ + public function camel() + { + return new static(Str::camel($this->value)); + } + + /** + * Determine if a given string contains a given substring. + * + * @param string|array $needles + * @return bool + */ + public function contains($needles) + { + return Str::contains($this->value, $needles); + } + + /** + * Determine if a given string contains all array values. + * + * @param array $needles + * @return bool + */ + public function containsAll(array $needles) + { + return Str::containsAll($this->value, $needles); + } + + /** + * Get the parent directory's path. + * + * @param int $levels + * @return static + */ + public function dirname($levels = 1) + { + return new static(dirname($this->value, $levels)); + } + + /** + * Determine if a given string ends with a given substring. + * + * @param string|array $needles + * @return bool + */ + public function endsWith($needles) + { + return Str::endsWith($this->value, $needles); + } + + /** + * Determine if the string is an exact match with the given value. + * + * @param string $value + * @return bool + */ + public function exactly($value) + { + return $this->value === $value; + } + + /** + * Explode the string into an array. + * + * @param string $delimiter + * @param int $limit + * @return \Illuminate\Support\Collection + */ + public function explode($delimiter, $limit = PHP_INT_MAX) + { + return collect(explode($delimiter, $this->value, $limit)); + } + + /** + * Split a string using a regular expression or by length. + * + * @param string|int $pattern + * @param int $limit + * @param int $flags + * @return \Illuminate\Support\Collection + */ + public function split($pattern, $limit = -1, $flags = 0) + { + if (filter_var($pattern, FILTER_VALIDATE_INT) !== false) { + return collect(mb_str_split($this->value, $pattern)); + } + + $segments = preg_split($pattern, $this->value, $limit, $flags); + + return ! empty($segments) ? collect($segments) : collect(); + } + + /** + * Cap a string with a single instance of a given value. + * + * @param string $cap + * @return static + */ + public function finish($cap) + { + return new static(Str::finish($this->value, $cap)); + } + + /** + * Determine if a given string matches a given pattern. + * + * @param string|array $pattern + * @return bool + */ + public function is($pattern) + { + return Str::is($pattern, $this->value); + } + + /** + * Determine if a given string is 7 bit ASCII. + * + * @return bool + */ + public function isAscii() + { + return Str::isAscii($this->value); + } + + /** + * Determine if a given string is a valid UUID. + * + * @return bool + */ + public function isUuid() + { + return Str::isUuid($this->value); + } + + /** + * Determine if the given string is empty. + * + * @return bool + */ + public function isEmpty() + { + return $this->value === ''; + } + + /** + * Determine if the given string is not empty. + * + * @return bool + */ + public function isNotEmpty() + { + return ! $this->isEmpty(); + } + + /** + * Convert a string to kebab case. + * + * @return static + */ + public function kebab() + { + return new static(Str::kebab($this->value)); + } + + /** + * Return the length of the given string. + * + * @param string $encoding + * @return int + */ + public function length($encoding = null) + { + return Str::length($this->value, $encoding); + } + + /** + * Limit the number of characters in a string. + * + * @param int $limit + * @param string $end + * @return static + */ + public function limit($limit = 100, $end = '...') + { + return new static(Str::limit($this->value, $limit, $end)); + } + + /** + * Convert the given string to lower-case. + * + * @return static + */ + public function lower() + { + return new static(Str::lower($this->value)); + } + + /** + * Convert GitHub flavored Markdown into HTML. + * + * @param array $options + * @return static + */ + public function markdown(array $options = []) + { + return new static(Str::markdown($this->value, $options)); + } + + /** + * Masks a portion of a string with a repeated character. + * + * @param string $character + * @param int $index + * @param int|null $length + * @param string $encoding + * @return static + */ + public function mask($character, $index, $length = null, $encoding = 'UTF-8') + { + return new static(Str::mask($this->value, $character, $index, $length, $encoding)); + } + + /** + * Get the string matching the given pattern. + * + * @param string $pattern + * @return static + */ + public function match($pattern) + { + return new static(Str::match($pattern, $this->value)); + } + + /** + * Get the string matching the given pattern. + * + * @param string $pattern + * @return \Illuminate\Support\Collection + */ + public function matchAll($pattern) + { + return Str::matchAll($pattern, $this->value); + } + + /** + * Determine if the string matches the given pattern. + * + * @param string $pattern + * @return bool + */ + public function test($pattern) + { + return $this->match($pattern)->isNotEmpty(); + } + + /** + * Pad both sides of the string with another. + * + * @param int $length + * @param string $pad + * @return static + */ + public function padBoth($length, $pad = ' ') + { + return new static(Str::padBoth($this->value, $length, $pad)); + } + + /** + * Pad the left side of the string with another. + * + * @param int $length + * @param string $pad + * @return static + */ + public function padLeft($length, $pad = ' ') + { + return new static(Str::padLeft($this->value, $length, $pad)); + } + + /** + * Pad the right side of the string with another. + * + * @param int $length + * @param string $pad + * @return static + */ + public function padRight($length, $pad = ' ') + { + return new static(Str::padRight($this->value, $length, $pad)); + } + + /** + * Parse a Class@method style callback into class and method. + * + * @param string|null $default + * @return array + */ + public function parseCallback($default = null) + { + return Str::parseCallback($this->value, $default); + } + + /** + * Call the given callback and return a new string. + * + * @param callable $callback + * @return static + */ + public function pipe(callable $callback) + { + return new static(call_user_func($callback, $this)); + } + + /** + * Get the plural form of an English word. + * + * @param int $count + * @return static + */ + public function plural($count = 2) + { + return new static(Str::plural($this->value, $count)); + } + + /** + * Pluralize the last word of an English, studly caps case string. + * + * @param int $count + * @return static + */ + public function pluralStudly($count = 2) + { + return new static(Str::pluralStudly($this->value, $count)); + } + + /** + * Prepend the given values to the string. + * + * @param array $values + * @return static + */ + public function prepend(...$values) + { + return new static(implode('', $values).$this->value); + } + + /** + * Remove any occurrence of the given string in the subject. + * + * @param string|array $search + * @param bool $caseSensitive + * @return static + */ + public function remove($search, $caseSensitive = true) + { + return new static(Str::remove($search, $this->value, $caseSensitive)); + } + + /** + * Reverse the string. + * + * @return static + */ + public function reverse() + { + return new static(Str::reverse($this->value)); + } + + /** + * Repeat the string. + * + * @param int $times + * @return static + */ + public function repeat(int $times) + { + return new static(Str::repeat($this->value, $times)); + } + + /** + * Replace the given value in the given string. + * + * @param string|string[] $search + * @param string|string[] $replace + * @return static + */ + public function replace($search, $replace) + { + return new static(Str::replace($search, $replace, $this->value)); + } + + /** + * Replace a given value in the string sequentially with an array. + * + * @param string $search + * @param array $replace + * @return static + */ + public function replaceArray($search, array $replace) + { + return new static(Str::replaceArray($search, $replace, $this->value)); + } + + /** + * Replace the first occurrence of a given value in the string. + * + * @param string $search + * @param string $replace + * @return static + */ + public function replaceFirst($search, $replace) + { + return new static(Str::replaceFirst($search, $replace, $this->value)); + } + + /** + * Replace the last occurrence of a given value in the string. + * + * @param string $search + * @param string $replace + * @return static + */ + public function replaceLast($search, $replace) + { + return new static(Str::replaceLast($search, $replace, $this->value)); + } + + /** + * Replace the patterns matching the given regular expression. + * + * @param string $pattern + * @param \Closure|string $replace + * @param int $limit + * @return static + */ + public function replaceMatches($pattern, $replace, $limit = -1) + { + if ($replace instanceof Closure) { + return new static(preg_replace_callback($pattern, $replace, $this->value, $limit)); + } + + return new static(preg_replace($pattern, $replace, $this->value, $limit)); + } + + /** + * Parse input from a string to a collection, according to a format. + * + * @param string $format + * @return \Illuminate\Support\Collection + */ + public function scan($format) + { + return collect(sscanf($this->value, $format)); + } + + /** + * Begin a string with a single instance of a given value. + * + * @param string $prefix + * @return static + */ + public function start($prefix) + { + return new static(Str::start($this->value, $prefix)); + } + + /** + * Strip HTML and PHP tags from the given string. + * + * @param string $allowedTags + * @return static + */ + public function stripTags($allowedTags = null) + { + return new static(strip_tags($this->value, $allowedTags)); + } + + /** + * Convert the given string to upper-case. + * + * @return static + */ + public function upper() + { + return new static(Str::upper($this->value)); + } + + /** + * Convert the given string to title case. + * + * @return static + */ + public function title() + { + return new static(Str::title($this->value)); + } + + /** + * Convert the given string to title case for each word. + * + * @return static + */ + public function headline() + { + return new static(Str::headline($this->value)); + } + + /** + * Get the singular form of an English word. + * + * @return static + */ + public function singular() + { + return new static(Str::singular($this->value)); + } + + /** + * Generate a URL friendly "slug" from a given string. + * + * @param string $separator + * @param string|null $language + * @return static + */ + public function slug($separator = '-', $language = 'en') + { + return new static(Str::slug($this->value, $separator, $language)); + } + + /** + * Convert a string to snake case. + * + * @param string $delimiter + * @return static + */ + public function snake($delimiter = '_') + { + return new static(Str::snake($this->value, $delimiter)); + } + + /** + * Determine if a given string starts with a given substring. + * + * @param string|array $needles + * @return bool + */ + public function startsWith($needles) + { + return Str::startsWith($this->value, $needles); + } + + /** + * Convert a value to studly caps case. + * + * @return static + */ + public function studly() + { + return new static(Str::studly($this->value)); + } + + /** + * Returns the portion of the string specified by the start and length parameters. + * + * @param int $start + * @param int|null $length + * @return static + */ + public function substr($start, $length = null) + { + return new static(Str::substr($this->value, $start, $length)); + } + + /** + * Returns the number of substring occurrences. + * + * @param string $needle + * @param int|null $offset + * @param int|null $length + * @return int + */ + public function substrCount($needle, $offset = null, $length = null) + { + return Str::substrCount($this->value, $needle, $offset ?? 0, $length); + } + + /** + * Replace text within a portion of a string. + * + * @param string|array $replace + * @param array|int $offset + * @param array|int|null $length + * @return static + */ + public function substrReplace($replace, $offset = 0, $length = null) + { + return new static(Str::substrReplace($this->value, $replace, $offset, $length)); + } + + /** + * Swap multiple keywords in a string with other keywords. + * + * @param array $map + * @return static + */ + public function swap(array $map) + { + return new static(strtr($this->value, $map)); + } + + /** + * Trim the string of the given characters. + * + * @param string $characters + * @return static + */ + public function trim($characters = null) + { + return new static(trim(...array_merge([$this->value], func_get_args()))); + } + + /** + * Left trim the string of the given characters. + * + * @param string $characters + * @return static + */ + public function ltrim($characters = null) + { + return new static(ltrim(...array_merge([$this->value], func_get_args()))); + } + + /** + * Right trim the string of the given characters. + * + * @param string $characters + * @return static + */ + public function rtrim($characters = null) + { + return new static(rtrim(...array_merge([$this->value], func_get_args()))); + } + + /** + * Make a string's first character uppercase. + * + * @return static + */ + public function ucfirst() + { + return new static(Str::ucfirst($this->value)); + } + + /** + * Split a string by uppercase characters. + * + * @return \Illuminate\Support\Collection + */ + public function ucsplit() + { + return collect(Str::ucsplit($this->value)); + } + + /** + * Execute the given callback if the string contains a given substring. + * + * @param string|array $needles + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenContains($needles, $callback, $default = null) + { + return $this->when($this->contains($needles), $callback, $default); + } + + /** + * Execute the given callback if the string contains all array values. + * + * @param array $needles + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenContainsAll(array $needles, $callback, $default = null) + { + return $this->when($this->containsAll($needles), $callback, $default); + } + + /** + * Execute the given callback if the string is empty. + * + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenEmpty($callback, $default = null) + { + return $this->when($this->isEmpty(), $callback, $default); + } + + /** + * Execute the given callback if the string is not empty. + * + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenNotEmpty($callback, $default = null) + { + return $this->when($this->isNotEmpty(), $callback, $default); + } + + /** + * Execute the given callback if the string ends with a given substring. + * + * @param string|array $needles + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenEndsWith($needles, $callback, $default = null) + { + return $this->when($this->endsWith($needles), $callback, $default); + } + + /** + * Execute the given callback if the string is an exact match with the given value. + * + * @param string $value + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenExactly($value, $callback, $default = null) + { + return $this->when($this->exactly($value), $callback, $default); + } + + /** + * Execute the given callback if the string matches a given pattern. + * + * @param string|array $pattern + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenIs($pattern, $callback, $default = null) + { + return $this->when($this->is($pattern), $callback, $default); + } + + /** + * Execute the given callback if the string is 7 bit ASCII. + * + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenIsAscii($callback, $default = null) + { + return $this->when($this->isAscii(), $callback, $default); + } + + /** + * Execute the given callback if the string is a valid UUID. + * + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenIsUuid($callback, $default = null) + { + return $this->when($this->isUuid(), $callback, $default); + } + + /** + * Execute the given callback if the string starts with a given substring. + * + * @param string|array $needles + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenStartsWith($needles, $callback, $default = null) + { + return $this->when($this->startsWith($needles), $callback, $default); + } + + /** + * Execute the given callback if the string matches the given pattern. + * + * @param string $pattern + * @param callable $callback + * @param callable|null $default + * @return static + */ + public function whenTest($pattern, $callback, $default = null) + { + return $this->when($this->test($pattern), $callback, $default); + } + + /** + * Limit the number of words in a string. + * + * @param int $words + * @param string $end + * @return static + */ + public function words($words = 100, $end = '...') + { + return new static(Str::words($this->value, $words, $end)); + } + + /** + * Get the number of words a string contains. + * + * @return int + */ + public function wordCount() + { + return str_word_count($this->value); + } + + /** + * Convert the string into a `HtmlString` instance. + * + * @return \Illuminate\Support\HtmlString + */ + public function toHtmlString() + { + return new HtmlString($this->value); + } + + /** + * Dump the string. + * + * @return $this + */ + public function dump() + { + VarDumper::dump($this->value); + + return $this; + } + + /** + * Dump the string and end the script. + * + * @return never + */ + public function dd() + { + $this->dump(); + + exit(1); + } + + /** + * Convert the object to a string when JSON encoded. + * + * @return string + */ + #[\ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->__toString(); + } + + /** + * Proxy dynamic properties onto methods. + * + * @param string $key + * @return mixed + */ + public function __get($key) + { + return $this->{$key}(); + } + + /** + * Get the raw string value. + * + * @return string + */ + public function __toString() + { + return (string) $this->value; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php new file mode 100644 index 00000000000..d9661334ce0 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BatchRepositoryFake.php @@ -0,0 +1,142 @@ +name, + count($batch->jobs), + count($batch->jobs), + 0, + [], + $batch->options, + CarbonImmutable::now(), + null, + null + ); + } + + /** + * Increment the total number of jobs within the batch. + * + * @param string $batchId + * @param int $amount + * @return void + */ + public function incrementTotalJobs(string $batchId, int $amount) + { + // + } + + /** + * Decrement the total number of pending jobs for the batch. + * + * @param string $batchId + * @param string $jobId + * @return \Illuminate\Bus\UpdatedBatchJobCounts + */ + public function decrementPendingJobs(string $batchId, string $jobId) + { + return new UpdatedBatchJobCounts; + } + + /** + * Increment the total number of failed jobs for the batch. + * + * @param string $batchId + * @param string $jobId + * @return \Illuminate\Bus\UpdatedBatchJobCounts + */ + public function incrementFailedJobs(string $batchId, string $jobId) + { + return new UpdatedBatchJobCounts; + } + + /** + * Mark the batch that has the given ID as finished. + * + * @param string $batchId + * @return void + */ + public function markAsFinished(string $batchId) + { + // + } + + /** + * Cancel the batch that has the given ID. + * + * @param string $batchId + * @return void + */ + public function cancel(string $batchId) + { + // + } + + /** + * Delete the batch that has the given ID. + * + * @param string $batchId + * @return void + */ + public function delete(string $batchId) + { + // + } + + /** + * Execute the given Closure within a storage specific transaction. + * + * @param \Closure $callback + * @return mixed + */ + public function transaction(Closure $callback) + { + return $callback(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BusFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BusFake.php new file mode 100644 index 00000000000..122252d8f00 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/BusFake.php @@ -0,0 +1,739 @@ +dispatcher = $dispatcher; + + $this->jobsToFake = Arr::wrap($jobsToFake); + } + + /** + * Assert if a job was dispatched based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|int|null $callback + * @return void + */ + public function assertDispatched($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + if (is_numeric($callback)) { + return $this->assertDispatchedTimes($command, $callback); + } + + PHPUnit::assertTrue( + $this->dispatched($command, $callback)->count() > 0 || + $this->dispatchedAfterResponse($command, $callback)->count() > 0 || + $this->dispatchedSync($command, $callback)->count() > 0, + "The expected [{$command}] job was not dispatched." + ); + } + + /** + * Assert if a job was pushed a number of times. + * + * @param string $command + * @param int $times + * @return void + */ + public function assertDispatchedTimes($command, $times = 1) + { + $count = $this->dispatched($command)->count() + + $this->dispatchedAfterResponse($command)->count() + + $this->dispatchedSync($command)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$command}] job was pushed {$count} times instead of {$times} times." + ); + } + + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + */ + public function assertNotDispatched($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + PHPUnit::assertTrue( + $this->dispatched($command, $callback)->count() === 0 && + $this->dispatchedAfterResponse($command, $callback)->count() === 0 && + $this->dispatchedSync($command, $callback)->count() === 0, + "The unexpected [{$command}] job was dispatched." + ); + } + + /** + * Assert that no jobs were dispatched. + * + * @return void + */ + public function assertNothingDispatched() + { + PHPUnit::assertEmpty($this->commands, 'Jobs were dispatched unexpectedly.'); + } + + /** + * Assert if a job was explicitly dispatched synchronously based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|int|null $callback + * @return void + */ + public function assertDispatchedSync($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + if (is_numeric($callback)) { + return $this->assertDispatchedSyncTimes($command, $callback); + } + + PHPUnit::assertTrue( + $this->dispatchedSync($command, $callback)->count() > 0, + "The expected [{$command}] job was not dispatched synchronously." + ); + } + + /** + * Assert if a job was pushed synchronously a number of times. + * + * @param string $command + * @param int $times + * @return void + */ + public function assertDispatchedSyncTimes($command, $times = 1) + { + $count = $this->dispatchedSync($command)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$command}] job was synchronously pushed {$count} times instead of {$times} times." + ); + } + + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + */ + public function assertNotDispatchedSync($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + PHPUnit::assertCount( + 0, $this->dispatchedSync($command, $callback), + "The unexpected [{$command}] job was dispatched synchronously." + ); + } + + /** + * Assert if a job was dispatched after the response was sent based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|int|null $callback + * @return void + */ + public function assertDispatchedAfterResponse($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + if (is_numeric($callback)) { + return $this->assertDispatchedAfterResponseTimes($command, $callback); + } + + PHPUnit::assertTrue( + $this->dispatchedAfterResponse($command, $callback)->count() > 0, + "The expected [{$command}] job was not dispatched after sending the response." + ); + } + + /** + * Assert if a job was pushed after the response was sent a number of times. + * + * @param string $command + * @param int $times + * @return void + */ + public function assertDispatchedAfterResponseTimes($command, $times = 1) + { + $count = $this->dispatchedAfterResponse($command)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$command}] job was pushed {$count} times instead of {$times} times." + ); + } + + /** + * Determine if a job was dispatched based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + */ + public function assertNotDispatchedAfterResponse($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + PHPUnit::assertCount( + 0, $this->dispatchedAfterResponse($command, $callback), + "The unexpected [{$command}] job was dispatched after sending the response." + ); + } + + /** + * Assert if a chain of jobs was dispatched. + * + * @param array $expectedChain + * @return void + */ + public function assertChained(array $expectedChain) + { + $command = $expectedChain[0]; + + $expectedChain = array_slice($expectedChain, 1); + + $callback = null; + + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } elseif (! is_string($command)) { + $instance = $command; + + $command = get_class($instance); + + $callback = function ($job) use ($instance) { + return serialize($this->resetChainPropertiesToDefaults($job)) === serialize($instance); + }; + } + + PHPUnit::assertTrue( + $this->dispatched($command, $callback)->isNotEmpty(), + "The expected [{$command}] job was not dispatched." + ); + + PHPUnit::assertTrue( + collect($expectedChain)->isNotEmpty(), + 'The expected chain can not be empty.' + ); + + $this->isChainOfObjects($expectedChain) + ? $this->assertDispatchedWithChainOfObjects($command, $expectedChain, $callback) + : $this->assertDispatchedWithChainOfClasses($command, $expectedChain, $callback); + } + + /** + * Reset the chain properties to their default values on the job. + * + * @param mixed $job + * @return mixed + */ + protected function resetChainPropertiesToDefaults($job) + { + return tap(clone $job, function ($job) { + $job->chainConnection = null; + $job->chainQueue = null; + $job->chainCatchCallbacks = null; + $job->chained = []; + }); + } + + /** + * Assert if a job was dispatched with an empty chain based on a truth-test callback. + * + * @param string|\Closure $command + * @param callable|null $callback + * @return void + */ + public function assertDispatchedWithoutChain($command, $callback = null) + { + if ($command instanceof Closure) { + [$command, $callback] = [$this->firstClosureParameterType($command), $command]; + } + + PHPUnit::assertTrue( + $this->dispatched($command, $callback)->isNotEmpty(), + "The expected [{$command}] job was not dispatched." + ); + + $this->assertDispatchedWithChainOfClasses($command, [], $callback); + } + + /** + * Assert if a job was dispatched with chained jobs based on a truth-test callback. + * + * @param string $command + * @param array $expectedChain + * @param callable|null $callback + * @return void + */ + protected function assertDispatchedWithChainOfObjects($command, $expectedChain, $callback) + { + $chain = collect($expectedChain)->map(function ($job) { + return serialize($job); + })->all(); + + PHPUnit::assertTrue( + $this->dispatched($command, $callback)->filter(function ($job) use ($chain) { + return $job->chained == $chain; + })->isNotEmpty(), + 'The expected chain was not dispatched.' + ); + } + + /** + * Assert if a job was dispatched with chained jobs based on a truth-test callback. + * + * @param string $command + * @param array $expectedChain + * @param callable|null $callback + * @return void + */ + protected function assertDispatchedWithChainOfClasses($command, $expectedChain, $callback) + { + $matching = $this->dispatched($command, $callback)->map->chained->map(function ($chain) { + return collect($chain)->map(function ($job) { + return get_class(unserialize($job)); + }); + })->filter(function ($chain) use ($expectedChain) { + return $chain->all() === $expectedChain; + }); + + PHPUnit::assertTrue( + $matching->isNotEmpty(), 'The expected chain was not dispatched.' + ); + } + + /** + * Determine if the given chain is entirely composed of objects. + * + * @param array $chain + * @return bool + */ + protected function isChainOfObjects($chain) + { + return ! collect($chain)->contains(function ($job) { + return ! is_object($job); + }); + } + + /** + * Assert if a batch was dispatched based on a truth-test callback. + * + * @param callable $callback + * @return void + */ + public function assertBatched(callable $callback) + { + PHPUnit::assertTrue( + $this->batched($callback)->count() > 0, + 'The expected batch was not dispatched.' + ); + } + + /** + * Assert the number of batches that have been dispatched. + * + * @param int $count + * @return void + */ + public function assertBatchCount($count) + { + PHPUnit::assertCount( + $count, $this->batches, + ); + } + + /** + * Get all of the jobs matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function dispatched($command, $callback = null) + { + if (! $this->hasDispatched($command)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return collect($this->commands[$command])->filter(function ($command) use ($callback) { + return $callback($command); + }); + } + + /** + * Get all of the jobs dispatched synchronously matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function dispatchedSync(string $command, $callback = null) + { + if (! $this->hasDispatchedSync($command)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return collect($this->commandsSync[$command])->filter(function ($command) use ($callback) { + return $callback($command); + }); + } + + /** + * Get all of the jobs dispatched after the response was sent matching a truth-test callback. + * + * @param string $command + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function dispatchedAfterResponse(string $command, $callback = null) + { + if (! $this->hasDispatchedAfterResponse($command)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return collect($this->commandsAfterResponse[$command])->filter(function ($command) use ($callback) { + return $callback($command); + }); + } + + /** + * Get all of the pending batches matching a truth-test callback. + * + * @param callable $callback + * @return \Illuminate\Support\Collection + */ + public function batched(callable $callback) + { + if (empty($this->batches)) { + return collect(); + } + + return collect($this->batches)->filter(function ($batch) use ($callback) { + return $callback($batch); + }); + } + + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + */ + public function hasDispatched($command) + { + return isset($this->commands[$command]) && ! empty($this->commands[$command]); + } + + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + */ + public function hasDispatchedSync($command) + { + return isset($this->commandsSync[$command]) && ! empty($this->commandsSync[$command]); + } + + /** + * Determine if there are any stored commands for a given class. + * + * @param string $command + * @return bool + */ + public function hasDispatchedAfterResponse($command) + { + return isset($this->commandsAfterResponse[$command]) && ! empty($this->commandsAfterResponse[$command]); + } + + /** + * Dispatch a command to its appropriate handler. + * + * @param mixed $command + * @return mixed + */ + public function dispatch($command) + { + if ($this->shouldFakeJob($command)) { + $this->commands[get_class($command)][] = $command; + } else { + return $this->dispatcher->dispatch($command); + } + } + + /** + * Dispatch a command to its appropriate handler in the current process. + * + * Queueable jobs will be dispatched to the "sync" queue. + * + * @param mixed $command + * @param mixed $handler + * @return mixed + */ + public function dispatchSync($command, $handler = null) + { + if ($this->shouldFakeJob($command)) { + $this->commandsSync[get_class($command)][] = $command; + } else { + return $this->dispatcher->dispatchSync($command, $handler); + } + } + + /** + * Dispatch a command to its appropriate handler in the current process. + * + * @param mixed $command + * @param mixed $handler + * @return mixed + */ + public function dispatchNow($command, $handler = null) + { + if ($this->shouldFakeJob($command)) { + $this->commands[get_class($command)][] = $command; + } else { + return $this->dispatcher->dispatchNow($command, $handler); + } + } + + /** + * Dispatch a command to its appropriate handler behind a queue. + * + * @param mixed $command + * @return mixed + */ + public function dispatchToQueue($command) + { + if ($this->shouldFakeJob($command)) { + $this->commands[get_class($command)][] = $command; + } else { + return $this->dispatcher->dispatchToQueue($command); + } + } + + /** + * Dispatch a command to its appropriate handler. + * + * @param mixed $command + * @return mixed + */ + public function dispatchAfterResponse($command) + { + if ($this->shouldFakeJob($command)) { + $this->commandsAfterResponse[get_class($command)][] = $command; + } else { + return $this->dispatcher->dispatch($command); + } + } + + /** + * Create a new chain of queueable jobs. + * + * @param \Illuminate\Support\Collection|array $jobs + * @return \Illuminate\Foundation\Bus\PendingChain + */ + public function chain($jobs) + { + $jobs = Collection::wrap($jobs); + + return new PendingChainFake($this, $jobs->shift(), $jobs->toArray()); + } + + /** + * Attempt to find the batch with the given ID. + * + * @param string $batchId + * @return \Illuminate\Bus\Batch|null + */ + public function findBatch(string $batchId) + { + // + } + + /** + * Create a new batch of queueable jobs. + * + * @param \Illuminate\Support\Collection|array $jobs + * @return \Illuminate\Bus\PendingBatch + */ + public function batch($jobs) + { + return new PendingBatchFake($this, Collection::wrap($jobs)); + } + + /** + * Record the fake pending batch dispatch. + * + * @param \Illuminate\Bus\PendingBatch $pendingBatch + * @return \Illuminate\Bus\Batch + */ + public function recordPendingBatch(PendingBatch $pendingBatch) + { + $this->batches[] = $pendingBatch; + + return (new BatchRepositoryFake)->store($pendingBatch); + } + + /** + * Determine if a command should be faked or actually dispatched. + * + * @param mixed $command + * @return bool + */ + protected function shouldFakeJob($command) + { + if (empty($this->jobsToFake)) { + return true; + } + + return collect($this->jobsToFake) + ->filter(function ($job) use ($command) { + return $job instanceof Closure + ? $job($command) + : $job === get_class($command); + })->isNotEmpty(); + } + + /** + * Set the pipes commands should be piped through before dispatching. + * + * @param array $pipes + * @return $this + */ + public function pipeThrough(array $pipes) + { + $this->dispatcher->pipeThrough($pipes); + + return $this; + } + + /** + * Determine if the given command has a handler. + * + * @param mixed $command + * @return bool + */ + public function hasCommandHandler($command) + { + return $this->dispatcher->hasCommandHandler($command); + } + + /** + * Retrieve the handler for a command. + * + * @param mixed $command + * @return mixed + */ + public function getCommandHandler($command) + { + return $this->dispatcher->getCommandHandler($command); + } + + /** + * Map a command to a handler. + * + * @param array $map + * @return $this + */ + public function map(array $map) + { + $this->dispatcher->map($map); + + return $this; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/EventFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/EventFake.php new file mode 100644 index 00000000000..436173e9d3a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/EventFake.php @@ -0,0 +1,325 @@ +dispatcher = $dispatcher; + + $this->eventsToFake = Arr::wrap($eventsToFake); + } + + /** + * Assert if an event has a listener attached to it. + * + * @param string $expectedEvent + * @param string $expectedListener + * @return void + */ + public function assertListening($expectedEvent, $expectedListener) + { + foreach ($this->dispatcher->getListeners($expectedEvent) as $listenerClosure) { + $actualListener = (new ReflectionFunction($listenerClosure)) + ->getStaticVariables()['listener']; + + if (is_string($actualListener) && Str::endsWith($actualListener, '@handle')) { + $actualListener = Str::parseCallback($actualListener)[0]; + } + + if ($actualListener === $expectedListener || + ($actualListener instanceof Closure && + $expectedListener === Closure::class)) { + PHPUnit::assertTrue(true); + + return; + } + } + + PHPUnit::assertTrue( + false, + sprintf( + 'Event [%s] does not have the [%s] listener attached to it', + $expectedEvent, + print_r($expectedListener, true) + ) + ); + } + + /** + * Assert if an event was dispatched based on a truth-test callback. + * + * @param string|\Closure $event + * @param callable|int|null $callback + * @return void + */ + public function assertDispatched($event, $callback = null) + { + if ($event instanceof Closure) { + [$event, $callback] = [$this->firstClosureParameterType($event), $event]; + } + + if (is_int($callback)) { + return $this->assertDispatchedTimes($event, $callback); + } + + PHPUnit::assertTrue( + $this->dispatched($event, $callback)->count() > 0, + "The expected [{$event}] event was not dispatched." + ); + } + + /** + * Assert if an event was dispatched a number of times. + * + * @param string $event + * @param int $times + * @return void + */ + public function assertDispatchedTimes($event, $times = 1) + { + $count = $this->dispatched($event)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$event}] event was dispatched {$count} times instead of {$times} times." + ); + } + + /** + * Determine if an event was dispatched based on a truth-test callback. + * + * @param string|\Closure $event + * @param callable|null $callback + * @return void + */ + public function assertNotDispatched($event, $callback = null) + { + if ($event instanceof Closure) { + [$event, $callback] = [$this->firstClosureParameterType($event), $event]; + } + + PHPUnit::assertCount( + 0, $this->dispatched($event, $callback), + "The unexpected [{$event}] event was dispatched." + ); + } + + /** + * Assert that no events were dispatched. + * + * @return void + */ + public function assertNothingDispatched() + { + $count = count(Arr::flatten($this->events)); + + PHPUnit::assertSame( + 0, $count, + "{$count} unexpected events were dispatched." + ); + } + + /** + * Get all of the events matching a truth-test callback. + * + * @param string $event + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function dispatched($event, $callback = null) + { + if (! $this->hasDispatched($event)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return collect($this->events[$event])->filter(function ($arguments) use ($callback) { + return $callback(...$arguments); + }); + } + + /** + * Determine if the given event has been dispatched. + * + * @param string $event + * @return bool + */ + public function hasDispatched($event) + { + return isset($this->events[$event]) && ! empty($this->events[$event]); + } + + /** + * Register an event listener with the dispatcher. + * + * @param \Closure|string|array $events + * @param mixed $listener + * @return void + */ + public function listen($events, $listener = null) + { + $this->dispatcher->listen($events, $listener); + } + + /** + * Determine if a given event has listeners. + * + * @param string $eventName + * @return bool + */ + public function hasListeners($eventName) + { + return $this->dispatcher->hasListeners($eventName); + } + + /** + * Register an event and payload to be dispatched later. + * + * @param string $event + * @param array $payload + * @return void + */ + public function push($event, $payload = []) + { + // + } + + /** + * Register an event subscriber with the dispatcher. + * + * @param object|string $subscriber + * @return void + */ + public function subscribe($subscriber) + { + $this->dispatcher->subscribe($subscriber); + } + + /** + * Flush a set of pushed events. + * + * @param string $event + * @return void + */ + public function flush($event) + { + // + } + + /** + * Fire an event and call the listeners. + * + * @param string|object $event + * @param mixed $payload + * @param bool $halt + * @return array|null + */ + public function dispatch($event, $payload = [], $halt = false) + { + $name = is_object($event) ? get_class($event) : (string) $event; + + if ($this->shouldFakeEvent($name, $payload)) { + $this->events[$name][] = func_get_args(); + } else { + return $this->dispatcher->dispatch($event, $payload, $halt); + } + } + + /** + * Determine if an event should be faked or actually dispatched. + * + * @param string $eventName + * @param mixed $payload + * @return bool + */ + protected function shouldFakeEvent($eventName, $payload) + { + if (empty($this->eventsToFake)) { + return true; + } + + return collect($this->eventsToFake) + ->filter(function ($event) use ($eventName, $payload) { + return $event instanceof Closure + ? $event($eventName, $payload) + : $event === $eventName; + }) + ->isNotEmpty(); + } + + /** + * Remove a set of listeners from the dispatcher. + * + * @param string $event + * @return void + */ + public function forget($event) + { + // + } + + /** + * Forget all of the queued listeners. + * + * @return void + */ + public function forgetPushed() + { + // + } + + /** + * Dispatch an event and call the listeners. + * + * @param string|object $event + * @param mixed $payload + * @return array|null + */ + public function until($event, $payload = []) + { + return $this->dispatch($event, $payload, true); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/MailFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/MailFake.php new file mode 100644 index 00000000000..fff5f8fcb78 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/MailFake.php @@ -0,0 +1,445 @@ +prepareMailableAndCallback($mailable, $callback); + + if (is_numeric($callback)) { + return $this->assertSentTimes($mailable, $callback); + } + + $message = "The expected [{$mailable}] mailable was not sent."; + + if (count($this->queuedMailables) > 0) { + $message .= ' Did you mean to use assertQueued() instead?'; + } + + PHPUnit::assertTrue( + $this->sent($mailable, $callback)->count() > 0, + $message + ); + } + + /** + * Assert if a mailable was sent a number of times. + * + * @param string $mailable + * @param int $times + * @return void + */ + protected function assertSentTimes($mailable, $times = 1) + { + $count = $this->sent($mailable)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$mailable}] mailable was sent {$count} times instead of {$times} times." + ); + } + + /** + * Determine if a mailable was not sent or queued to be sent based on a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void + */ + public function assertNotOutgoing($mailable, $callback = null) + { + $this->assertNotSent($mailable, $callback); + $this->assertNotQueued($mailable, $callback); + } + + /** + * Determine if a mailable was not sent based on a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void + */ + public function assertNotSent($mailable, $callback = null) + { + [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback); + + PHPUnit::assertCount( + 0, $this->sent($mailable, $callback), + "The unexpected [{$mailable}] mailable was sent." + ); + } + + /** + * Assert that no mailables were sent or queued to be sent. + * + * @return void + */ + public function assertNothingOutgoing() + { + $this->assertNothingSent(); + $this->assertNothingQueued(); + } + + /** + * Assert that no mailables were sent. + * + * @return void + */ + public function assertNothingSent() + { + $mailableNames = collect($this->mailables)->map(function ($mailable) { + return get_class($mailable); + })->join(', '); + + PHPUnit::assertEmpty($this->mailables, 'The following mailables were sent unexpectedly: '.$mailableNames); + } + + /** + * Assert if a mailable was queued based on a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|int|null $callback + * @return void + */ + public function assertQueued($mailable, $callback = null) + { + [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback); + + if (is_numeric($callback)) { + return $this->assertQueuedTimes($mailable, $callback); + } + + PHPUnit::assertTrue( + $this->queued($mailable, $callback)->count() > 0, + "The expected [{$mailable}] mailable was not queued." + ); + } + + /** + * Assert if a mailable was queued a number of times. + * + * @param string $mailable + * @param int $times + * @return void + */ + protected function assertQueuedTimes($mailable, $times = 1) + { + $count = $this->queued($mailable)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$mailable}] mailable was queued {$count} times instead of {$times} times." + ); + } + + /** + * Determine if a mailable was not queued based on a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return void + */ + public function assertNotQueued($mailable, $callback = null) + { + [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback); + + PHPUnit::assertCount( + 0, $this->queued($mailable, $callback), + "The unexpected [{$mailable}] mailable was queued." + ); + } + + /** + * Assert that no mailables were queued. + * + * @return void + */ + public function assertNothingQueued() + { + $mailableNames = collect($this->queuedMailables)->map(function ($mailable) { + return get_class($mailable); + })->join(', '); + + PHPUnit::assertEmpty($this->queuedMailables, 'The following mailables were queued unexpectedly: '.$mailableNames); + } + + /** + * Get all of the mailables matching a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function sent($mailable, $callback = null) + { + [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback); + + if (! $this->hasSent($mailable)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return $this->mailablesOf($mailable)->filter(function ($mailable) use ($callback) { + return $callback($mailable); + }); + } + + /** + * Determine if the given mailable has been sent. + * + * @param string $mailable + * @return bool + */ + public function hasSent($mailable) + { + return $this->mailablesOf($mailable)->count() > 0; + } + + /** + * Get all of the queued mailables matching a truth-test callback. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function queued($mailable, $callback = null) + { + [$mailable, $callback] = $this->prepareMailableAndCallback($mailable, $callback); + + if (! $this->hasQueued($mailable)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return $this->queuedMailablesOf($mailable)->filter(function ($mailable) use ($callback) { + return $callback($mailable); + }); + } + + /** + * Determine if the given mailable has been queued. + * + * @param string $mailable + * @return bool + */ + public function hasQueued($mailable) + { + return $this->queuedMailablesOf($mailable)->count() > 0; + } + + /** + * Get all of the mailed mailables for a given type. + * + * @param string $type + * @return \Illuminate\Support\Collection + */ + protected function mailablesOf($type) + { + return collect($this->mailables)->filter(function ($mailable) use ($type) { + return $mailable instanceof $type; + }); + } + + /** + * Get all of the mailed mailables for a given type. + * + * @param string $type + * @return \Illuminate\Support\Collection + */ + protected function queuedMailablesOf($type) + { + return collect($this->queuedMailables)->filter(function ($mailable) use ($type) { + return $mailable instanceof $type; + }); + } + + /** + * Get a mailer instance by name. + * + * @param string|null $name + * @return \Illuminate\Contracts\Mail\Mailer + */ + public function mailer($name = null) + { + $this->currentMailer = $name; + + return $this; + } + + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + */ + public function to($users) + { + return (new PendingMailFake($this))->to($users); + } + + /** + * Begin the process of mailing a mailable class instance. + * + * @param mixed $users + * @return \Illuminate\Mail\PendingMail + */ + public function bcc($users) + { + return (new PendingMailFake($this))->bcc($users); + } + + /** + * Send a new message with only a raw text part. + * + * @param string $text + * @param \Closure|string $callback + * @return void + */ + public function raw($text, $callback) + { + // + } + + /** + * Send a new message using a view. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param array $data + * @param \Closure|string|null $callback + * @return void + */ + public function send($view, array $data = [], $callback = null) + { + if (! $view instanceof Mailable) { + return; + } + + $view->mailer($this->currentMailer); + + if ($view instanceof ShouldQueue) { + return $this->queue($view, $data); + } + + $this->currentMailer = null; + + $this->mailables[] = $view; + } + + /** + * Queue a new e-mail message for sending. + * + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed + */ + public function queue($view, $queue = null) + { + if (! $view instanceof Mailable) { + return; + } + + $view->mailer($this->currentMailer); + + $this->currentMailer = null; + + $this->queuedMailables[] = $view; + } + + /** + * Queue a new e-mail message for sending after (n) seconds. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @param \Illuminate\Contracts\Mail\Mailable|string|array $view + * @param string|null $queue + * @return mixed + */ + public function later($delay, $view, $queue = null) + { + $this->queue($view, $queue); + } + + /** + * Get the array of failed recipients. + * + * @return array + */ + public function failures() + { + return []; + } + + /** + * Infer mailable class using reflection if a typehinted closure is passed to assertion. + * + * @param string|\Closure $mailable + * @param callable|null $callback + * @return array + */ + protected function prepareMailableAndCallback($mailable, $callback) + { + if ($mailable instanceof Closure) { + return [$this->firstClosureParameterType($mailable), $mailable]; + } + + return [$mailable, $callback]; + } + + /** + * Forget all of the resolved mailer instances. + * + * @return $this + */ + public function forgetMailers() + { + $this->currentMailer = null; + + return $this; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/NotificationFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/NotificationFake.php new file mode 100644 index 00000000000..c7b12f42d47 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/NotificationFake.php @@ -0,0 +1,327 @@ +assertSentTo(new AnonymousNotifiable, $notification, $callback); + } + + /** + * Assert if a notification was sent based on a truth-test callback. + * + * @param mixed $notifiable + * @param string|\Closure $notification + * @param callable|null $callback + * @return void + * + * @throws \Exception + */ + public function assertSentTo($notifiable, $notification, $callback = null) + { + if (is_array($notifiable) || $notifiable instanceof Collection) { + if (count($notifiable) === 0) { + throw new Exception('No notifiable given.'); + } + + foreach ($notifiable as $singleNotifiable) { + $this->assertSentTo($singleNotifiable, $notification, $callback); + } + + return; + } + + if ($notification instanceof Closure) { + [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification]; + } + + if (is_numeric($callback)) { + return $this->assertSentToTimes($notifiable, $notification, $callback); + } + + PHPUnit::assertTrue( + $this->sent($notifiable, $notification, $callback)->count() > 0, + "The expected [{$notification}] notification was not sent." + ); + } + + /** + * Assert if a notification was sent on-demand a number of times. + * + * @param string $notification + * @param int $times + * @return void + */ + public function assertSentOnDemandTimes($notification, $times = 1) + { + return $this->assertSentToTimes(new AnonymousNotifiable, $notification, $times); + } + + /** + * Assert if a notification was sent a number of times. + * + * @param mixed $notifiable + * @param string $notification + * @param int $times + * @return void + */ + public function assertSentToTimes($notifiable, $notification, $times = 1) + { + $count = $this->sent($notifiable, $notification)->count(); + + PHPUnit::assertSame( + $times, $count, + "Expected [{$notification}] to be sent {$times} times, but was sent {$count} times." + ); + } + + /** + * Determine if a notification was sent based on a truth-test callback. + * + * @param mixed $notifiable + * @param string|\Closure $notification + * @param callable|null $callback + * @return void + * + * @throws \Exception + */ + public function assertNotSentTo($notifiable, $notification, $callback = null) + { + if (is_array($notifiable) || $notifiable instanceof Collection) { + if (count($notifiable) === 0) { + throw new Exception('No notifiable given.'); + } + + foreach ($notifiable as $singleNotifiable) { + $this->assertNotSentTo($singleNotifiable, $notification, $callback); + } + + return; + } + + if ($notification instanceof Closure) { + [$notification, $callback] = [$this->firstClosureParameterType($notification), $notification]; + } + + PHPUnit::assertCount( + 0, $this->sent($notifiable, $notification, $callback), + "The unexpected [{$notification}] notification was sent." + ); + } + + /** + * Assert that no notifications were sent. + * + * @return void + */ + public function assertNothingSent() + { + PHPUnit::assertEmpty($this->notifications, 'Notifications were sent unexpectedly.'); + } + + /** + * Assert the total amount of times a notification was sent. + * + * @param string $notification + * @param int $expectedCount + * @return void + */ + public function assertSentTimes($notification, $expectedCount) + { + $actualCount = collect($this->notifications) + ->flatten(1) + ->reduce(function ($count, $sent) use ($notification) { + return $count + count($sent[$notification] ?? []); + }, 0); + + PHPUnit::assertSame( + $expectedCount, $actualCount, + "Expected [{$notification}] to be sent {$expectedCount} times, but was sent {$actualCount} times." + ); + } + + /** + * Assert the total amount of times a notification was sent. + * + * @param int $expectedCount + * @param string $notification + * @return void + * + * @deprecated Use the assertSentTimes method instead + */ + public function assertTimesSent($expectedCount, $notification) + { + $this->assertSentTimes($notification, $expectedCount); + } + + /** + * Get all of the notifications matching a truth-test callback. + * + * @param mixed $notifiable + * @param string $notification + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function sent($notifiable, $notification, $callback = null) + { + if (! $this->hasSent($notifiable, $notification)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + $notifications = collect($this->notificationsFor($notifiable, $notification)); + + return $notifications->filter(function ($arguments) use ($callback) { + return $callback(...array_values($arguments)); + })->pluck('notification'); + } + + /** + * Determine if there are more notifications left to inspect. + * + * @param mixed $notifiable + * @param string $notification + * @return bool + */ + public function hasSent($notifiable, $notification) + { + return ! empty($this->notificationsFor($notifiable, $notification)); + } + + /** + * Get all of the notifications for a notifiable entity by type. + * + * @param mixed $notifiable + * @param string $notification + * @return array + */ + protected function notificationsFor($notifiable, $notification) + { + return $this->notifications[get_class($notifiable)][$notifiable->getKey()][$notification] ?? []; + } + + /** + * Send the given notification to the given notifiable entities. + * + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification + * @return void + */ + public function send($notifiables, $notification) + { + $this->sendNow($notifiables, $notification); + } + + /** + * Send the given notification immediately. + * + * @param \Illuminate\Support\Collection|array|mixed $notifiables + * @param mixed $notification + * @param array|null $channels + * @return void + */ + public function sendNow($notifiables, $notification, array $channels = null) + { + if (! $notifiables instanceof Collection && ! is_array($notifiables)) { + $notifiables = [$notifiables]; + } + + foreach ($notifiables as $notifiable) { + if (! $notification->id) { + $notification->id = Str::uuid()->toString(); + } + + $notifiableChannels = $channels ?: $notification->via($notifiable); + + if (method_exists($notification, 'shouldSend')) { + $notifiableChannels = array_filter( + $notifiableChannels, + function ($channel) use ($notification, $notifiable) { + return $notification->shouldSend($notifiable, $channel) !== false; + } + ); + + if (empty($notifiableChannels)) { + continue; + } + } + + $this->notifications[get_class($notifiable)][$notifiable->getKey()][get_class($notification)][] = [ + 'notification' => $notification, + 'channels' => $notifiableChannels, + 'notifiable' => $notifiable, + 'locale' => $notification->locale ?? $this->locale ?? value(function () use ($notifiable) { + if ($notifiable instanceof HasLocalePreference) { + return $notifiable->preferredLocale(); + } + }), + ]; + } + } + + /** + * Get a channel instance by name. + * + * @param string|null $name + * @return mixed + */ + public function channel($name = null) + { + // + } + + /** + * Set the locale of notifications. + * + * @param string $locale + * @return $this + */ + public function locale($locale) + { + $this->locale = $locale; + + return $this; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php new file mode 100644 index 00000000000..c60b4b50ba7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingBatchFake.php @@ -0,0 +1,39 @@ +bus = $bus; + $this->jobs = $jobs; + } + + /** + * Dispatch the batch. + * + * @return \Illuminate\Bus\Batch + */ + public function dispatch() + { + return $this->bus->recordPendingBatch($this); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php new file mode 100644 index 00000000000..533c6498b33 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingChainFake.php @@ -0,0 +1,56 @@ +bus = $bus; + $this->job = $job; + $this->chain = $chain; + } + + /** + * Dispatch the job with the given arguments. + * + * @return \Illuminate\Foundation\Bus\PendingDispatch + */ + public function dispatch() + { + if (is_string($this->job)) { + $firstJob = new $this->job(...func_get_args()); + } elseif ($this->job instanceof Closure) { + $firstJob = CallQueuedClosure::create($this->job); + } else { + $firstJob = $this->job; + } + + $firstJob->allOnConnection($this->connection); + $firstJob->allOnQueue($this->queue); + $firstJob->chain($this->chain); + $firstJob->delay($this->delay); + $firstJob->chainCatchCallbacks = $this->catchCallbacks(); + + return $this->bus->dispatch($firstJob); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php new file mode 100644 index 00000000000..52251301ceb --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/PendingMailFake.php @@ -0,0 +1,42 @@ +mailer = $mailer; + } + + /** + * Send a new mailable message instance. + * + * @param \Illuminate\Contracts\Mail\Mailable $mailable + * @return void + */ + public function send(Mailable $mailable) + { + $this->mailer->send($this->fill($mailable)); + } + + /** + * Push the given mailable onto the queue. + * + * @param \Illuminate\Contracts\Mail\Mailable $mailable + * @return mixed + */ + public function queue(Mailable $mailable) + { + return $this->mailer->queue($this->fill($mailable)); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/QueueFake.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/QueueFake.php new file mode 100644 index 00000000000..d37cd67237a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Testing/Fakes/QueueFake.php @@ -0,0 +1,414 @@ +firstClosureParameterType($job), $job]; + } + + if (is_numeric($callback)) { + return $this->assertPushedTimes($job, $callback); + } + + PHPUnit::assertTrue( + $this->pushed($job, $callback)->count() > 0, + "The expected [{$job}] job was not pushed." + ); + } + + /** + * Assert if a job was pushed a number of times. + * + * @param string $job + * @param int $times + * @return void + */ + protected function assertPushedTimes($job, $times = 1) + { + $count = $this->pushed($job)->count(); + + PHPUnit::assertSame( + $times, $count, + "The expected [{$job}] job was pushed {$count} times instead of {$times} times." + ); + } + + /** + * Assert if a job was pushed based on a truth-test callback. + * + * @param string $queue + * @param string|\Closure $job + * @param callable|null $callback + * @return void + */ + public function assertPushedOn($queue, $job, $callback = null) + { + if ($job instanceof Closure) { + [$job, $callback] = [$this->firstClosureParameterType($job), $job]; + } + + $this->assertPushed($job, function ($job, $pushedQueue) use ($callback, $queue) { + if ($pushedQueue !== $queue) { + return false; + } + + return $callback ? $callback(...func_get_args()) : true; + }); + } + + /** + * Assert if a job was pushed with chained jobs based on a truth-test callback. + * + * @param string $job + * @param array $expectedChain + * @param callable|null $callback + * @return void + */ + public function assertPushedWithChain($job, $expectedChain = [], $callback = null) + { + PHPUnit::assertTrue( + $this->pushed($job, $callback)->isNotEmpty(), + "The expected [{$job}] job was not pushed." + ); + + PHPUnit::assertTrue( + collect($expectedChain)->isNotEmpty(), + 'The expected chain can not be empty.' + ); + + $this->isChainOfObjects($expectedChain) + ? $this->assertPushedWithChainOfObjects($job, $expectedChain, $callback) + : $this->assertPushedWithChainOfClasses($job, $expectedChain, $callback); + } + + /** + * Assert if a job was pushed with an empty chain based on a truth-test callback. + * + * @param string $job + * @param callable|null $callback + * @return void + */ + public function assertPushedWithoutChain($job, $callback = null) + { + PHPUnit::assertTrue( + $this->pushed($job, $callback)->isNotEmpty(), + "The expected [{$job}] job was not pushed." + ); + + $this->assertPushedWithChainOfClasses($job, [], $callback); + } + + /** + * Assert if a job was pushed with chained jobs based on a truth-test callback. + * + * @param string $job + * @param array $expectedChain + * @param callable|null $callback + * @return void + */ + protected function assertPushedWithChainOfObjects($job, $expectedChain, $callback) + { + $chain = collect($expectedChain)->map(function ($job) { + return serialize($job); + })->all(); + + PHPUnit::assertTrue( + $this->pushed($job, $callback)->filter(function ($job) use ($chain) { + return $job->chained == $chain; + })->isNotEmpty(), + 'The expected chain was not pushed.' + ); + } + + /** + * Assert if a job was pushed with chained jobs based on a truth-test callback. + * + * @param string $job + * @param array $expectedChain + * @param callable|null $callback + * @return void + */ + protected function assertPushedWithChainOfClasses($job, $expectedChain, $callback) + { + $matching = $this->pushed($job, $callback)->map->chained->map(function ($chain) { + return collect($chain)->map(function ($job) { + return get_class(unserialize($job)); + }); + })->filter(function ($chain) use ($expectedChain) { + return $chain->all() === $expectedChain; + }); + + PHPUnit::assertTrue( + $matching->isNotEmpty(), 'The expected chain was not pushed.' + ); + } + + /** + * Determine if the given chain is entirely composed of objects. + * + * @param array $chain + * @return bool + */ + protected function isChainOfObjects($chain) + { + return ! collect($chain)->contains(function ($job) { + return ! is_object($job); + }); + } + + /** + * Determine if a job was pushed based on a truth-test callback. + * + * @param string|\Closure $job + * @param callable|null $callback + * @return void + */ + public function assertNotPushed($job, $callback = null) + { + if ($job instanceof Closure) { + [$job, $callback] = [$this->firstClosureParameterType($job), $job]; + } + + PHPUnit::assertCount( + 0, $this->pushed($job, $callback), + "The unexpected [{$job}] job was pushed." + ); + } + + /** + * Assert that no jobs were pushed. + * + * @return void + */ + public function assertNothingPushed() + { + PHPUnit::assertEmpty($this->jobs, 'Jobs were pushed unexpectedly.'); + } + + /** + * Get all of the jobs matching a truth-test callback. + * + * @param string $job + * @param callable|null $callback + * @return \Illuminate\Support\Collection + */ + public function pushed($job, $callback = null) + { + if (! $this->hasPushed($job)) { + return collect(); + } + + $callback = $callback ?: function () { + return true; + }; + + return collect($this->jobs[$job])->filter(function ($data) use ($callback) { + return $callback($data['job'], $data['queue']); + })->pluck('job'); + } + + /** + * Determine if there are any stored jobs for a given class. + * + * @param string $job + * @return bool + */ + public function hasPushed($job) + { + return isset($this->jobs[$job]) && ! empty($this->jobs[$job]); + } + + /** + * Resolve a queue connection instance. + * + * @param mixed $value + * @return \Illuminate\Contracts\Queue\Queue + */ + public function connection($value = null) + { + return $this; + } + + /** + * Get the size of the queue. + * + * @param string|null $queue + * @return int + */ + public function size($queue = null) + { + return collect($this->jobs)->flatten(1)->filter(function ($job) use ($queue) { + return $job['queue'] === $queue; + })->count(); + } + + /** + * Push a new job onto the queue. + * + * @param string|object $job + * @param mixed $data + * @param string|null $queue + * @return mixed + */ + public function push($job, $data = '', $queue = null) + { + $this->jobs[is_object($job) ? get_class($job) : $job][] = [ + 'job' => $job, + 'queue' => $queue, + ]; + } + + /** + * Push a raw payload onto the queue. + * + * @param string $payload + * @param string|null $queue + * @param array $options + * @return mixed + */ + public function pushRaw($payload, $queue = null, array $options = []) + { + // + } + + /** + * Push a new job onto the queue after a delay. + * + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @param string|null $queue + * @return mixed + */ + public function later($delay, $job, $data = '', $queue = null) + { + return $this->push($job, $data, $queue); + } + + /** + * Push a new job onto the queue. + * + * @param string $queue + * @param string|object $job + * @param mixed $data + * @return mixed + */ + public function pushOn($queue, $job, $data = '') + { + return $this->push($job, $data, $queue); + } + + /** + * Push a new job onto the queue after a delay. + * + * @param string $queue + * @param \DateTimeInterface|\DateInterval|int $delay + * @param string|object $job + * @param mixed $data + * @return mixed + */ + public function laterOn($queue, $delay, $job, $data = '') + { + return $this->push($job, $data, $queue); + } + + /** + * Pop the next job off of the queue. + * + * @param string|null $queue + * @return \Illuminate\Contracts\Queue\Job|null + */ + public function pop($queue = null) + { + // + } + + /** + * Push an array of jobs onto the queue. + * + * @param array $jobs + * @param mixed $data + * @param string|null $queue + * @return mixed + */ + public function bulk($jobs, $data = '', $queue = null) + { + foreach ($jobs as $job) { + $this->push($job, $data, $queue); + } + } + + /** + * Get the jobs that have been pushed. + * + * @return array + */ + public function pushedJobs() + { + return $this->jobs; + } + + /** + * Get the connection name for the queue. + * + * @return string + */ + public function getConnectionName() + { + // + } + + /** + * Set the connection name for the queue. + * + * @param string $name + * @return $this + */ + public function setConnectionName($name) + { + return $this; + } + + /** + * Override the QueueManager to prevent circular dependency. + * + * @param string $method + * @param array $parameters + * @return mixed + * + * @throws \BadMethodCallException + */ + public function __call($method, $parameters) + { + throw new BadMethodCallException(sprintf( + 'Call to undefined method %s::%s()', static::class, $method + )); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/CapsuleManagerTrait.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/CapsuleManagerTrait.php new file mode 100644 index 00000000000..0532755228b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/CapsuleManagerTrait.php @@ -0,0 +1,69 @@ +container = $container; + + if (! $this->container->bound('config')) { + $this->container->instance('config', new Fluent); + } + } + + /** + * Make this capsule instance available globally. + * + * @return void + */ + public function setAsGlobal() + { + static::$instance = $this; + } + + /** + * Get the IoC container instance. + * + * @return \Illuminate\Contracts\Container\Container + */ + public function getContainer() + { + return $this->container; + } + + /** + * Set the IoC container instance. + * + * @param \Illuminate\Contracts\Container\Container $container + * @return void + */ + public function setContainer(Container $container) + { + $this->container = $container; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Conditionable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Conditionable.php new file mode 100644 index 00000000000..798082794f1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Conditionable.php @@ -0,0 +1,44 @@ +{$method}(...$parameters); + } catch (Error|BadMethodCallException $e) { + $pattern = '~^Call to undefined method (?P[^:]+)::(?P[^\(]+)\(\)$~'; + + if (! preg_match($pattern, $e->getMessage(), $matches)) { + throw $e; + } + + if ($matches['class'] != get_class($object) || + $matches['method'] != $method) { + throw $e; + } + + static::throwBadMethodCallException($method); + } + } + + /** + * Forward a method call to the given object, returning $this if the forwarded call returned itself. + * + * @param mixed $object + * @param string $method + * @param array $parameters + * @return mixed + * + * @throws \BadMethodCallException + */ + protected function forwardDecoratedCallTo($object, $method, $parameters) + { + $result = $this->forwardCallTo($object, $method, $parameters); + + if ($result === $object) { + return $this; + } + + return $result; + } + + /** + * Throw a bad method call exception for the given method. + * + * @param string $method + * @return void + * + * @throws \BadMethodCallException + */ + protected static function throwBadMethodCallException($method) + { + throw new BadMethodCallException(sprintf( + 'Call to undefined method %s::%s()', static::class, $method + )); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Localizable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Localizable.php new file mode 100644 index 00000000000..1e9fa58c90b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Localizable.php @@ -0,0 +1,34 @@ +getLocale(); + + try { + $app->setLocale($locale); + + return $callback(); + } finally { + $app->setLocale($original); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/ReflectsClosures.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/ReflectsClosures.php new file mode 100644 index 00000000000..bf47d7ec20c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/ReflectsClosures.php @@ -0,0 +1,88 @@ +closureParameterTypes($closure)); + + if (! $types) { + throw new RuntimeException('The given Closure has no parameters.'); + } + + if ($types[0] === null) { + throw new RuntimeException('The first parameter of the given Closure is missing a type hint.'); + } + + return $types[0]; + } + + /** + * Get the class names of the first parameter of the given Closure, including union types. + * + * @param \Closure $closure + * @return array + * + * @throws \ReflectionException + * @throws \RuntimeException + */ + protected function firstClosureParameterTypes(Closure $closure) + { + $reflection = new ReflectionFunction($closure); + + $types = collect($reflection->getParameters())->mapWithKeys(function ($parameter) { + if ($parameter->isVariadic()) { + return [$parameter->getName() => null]; + } + + return [$parameter->getName() => Reflector::getParameterClassNames($parameter)]; + })->filter()->values()->all(); + + if (empty($types)) { + throw new RuntimeException('The given Closure has no parameters.'); + } + + if (isset($types[0]) && empty($types[0])) { + throw new RuntimeException('The first parameter of the given Closure is missing a type hint.'); + } + + return $types[0]; + } + + /** + * Get the class names / types of the parameters of the given Closure. + * + * @param \Closure $closure + * @return array + * + * @throws \ReflectionException + */ + protected function closureParameterTypes(Closure $closure) + { + $reflection = new ReflectionFunction($closure); + + return collect($reflection->getParameters())->mapWithKeys(function ($parameter) { + if ($parameter->isVariadic()) { + return [$parameter->getName() => null]; + } + + return [$parameter->getName() => Reflector::getParameterClassName($parameter)]; + })->all(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Tappable.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Tappable.php new file mode 100644 index 00000000000..9353451ad0c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/Traits/Tappable.php @@ -0,0 +1,17 @@ +input = $input; + } + + /** + * Get a subset containing the provided keys with values from the input data. + * + * @param array|mixed $keys + * @return array + */ + public function only($keys) + { + $results = []; + + $input = $this->input; + + $placeholder = new stdClass; + + foreach (is_array($keys) ? $keys : func_get_args() as $key) { + $value = data_get($input, $key, $placeholder); + + if ($value !== $placeholder) { + Arr::set($results, $key, $value); + } + } + + return $results; + } + + /** + * Get all of the input except for a specified array of items. + * + * @param array|mixed $keys + * @return array + */ + public function except($keys) + { + $keys = is_array($keys) ? $keys : func_get_args(); + + $results = $this->input; + + Arr::forget($results, $keys); + + return $results; + } + + /** + * Merge the validated input with the given array of additional data. + * + * @param array $items + * @return static + */ + public function merge(array $items) + { + return new static(array_merge($this->input, $items)); + } + + /** + * Get the input as a collection. + * + * @return \Illuminate\Support\Collection + */ + public function collect() + { + return new Collection($this->input); + } + + /** + * Get the raw, underlying input array. + * + * @return array + */ + public function all() + { + return $this->input; + } + + /** + * Get the instance as an array. + * + * @return array + */ + public function toArray() + { + return $this->all(); + } + + /** + * Dynamically access input data. + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + return $this->input[$name]; + } + + /** + * Dynamically set input data. + * + * @param string $name + * @param mixed $value + * @return mixed + */ + public function __set($name, $value) + { + $this->input[$name] = $value; + } + + /** + * Determine if an input key is set. + * + * @return bool + */ + public function __isset($name) + { + return isset($this->input[$name]); + } + + /** + * Remove an input key. + * + * @param string $name + * @return void + */ + public function __unset($name) + { + unset($this->input[$name]); + } + + /** + * Determine if an item exists at an offset. + * + * @param mixed $key + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($key) + { + return isset($this->input[$key]); + } + + /** + * Get an item at a given offset. + * + * @param mixed $key + * @return mixed + */ + #[\ReturnTypeWillChange] + public function offsetGet($key) + { + return $this->input[$key]; + } + + /** + * Set the item at a given offset. + * + * @param mixed $key + * @param mixed $value + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetSet($key, $value) + { + if (is_null($key)) { + $this->input[] = $value; + } else { + $this->input[$key] = $value; + } + } + + /** + * Unset the item at a given offset. + * + * @param string $key + * @return void + */ + #[\ReturnTypeWillChange] + public function offsetUnset($key) + { + unset($this->input[$key]); + } + + /** + * Get an iterator for the input. + * + * @return \ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return new ArrayIterator($this->input); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ViewErrorBag.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ViewErrorBag.php new file mode 100644 index 00000000000..d51bb534d84 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/ViewErrorBag.php @@ -0,0 +1,131 @@ +bags[$key]); + } + + /** + * Get a MessageBag instance from the bags. + * + * @param string $key + * @return \Illuminate\Contracts\Support\MessageBag + */ + public function getBag($key) + { + return Arr::get($this->bags, $key) ?: new MessageBag; + } + + /** + * Get all the bags. + * + * @return array + */ + public function getBags() + { + return $this->bags; + } + + /** + * Add a new MessageBag instance to the bags. + * + * @param string $key + * @param \Illuminate\Contracts\Support\MessageBag $bag + * @return $this + */ + public function put($key, MessageBagContract $bag) + { + $this->bags[$key] = $bag; + + return $this; + } + + /** + * Determine if the default message bag has any messages. + * + * @return bool + */ + public function any() + { + return $this->count() > 0; + } + + /** + * Get the number of messages in the default bag. + * + * @return int + */ + #[\ReturnTypeWillChange] + public function count() + { + return $this->getBag('default')->count(); + } + + /** + * Dynamically call methods on the default bag. + * + * @param string $method + * @param array $parameters + * @return mixed + */ + public function __call($method, $parameters) + { + return $this->getBag('default')->$method(...$parameters); + } + + /** + * Dynamically access a view error bag. + * + * @param string $key + * @return \Illuminate\Contracts\Support\MessageBag + */ + public function __get($key) + { + return $this->getBag($key); + } + + /** + * Dynamically set a view error bag. + * + * @param string $key + * @param \Illuminate\Contracts\Support\MessageBag $value + * @return void + */ + public function __set($key, $value) + { + $this->put($key, $value); + } + + /** + * Convert the default bag to its string representation. + * + * @return string + */ + public function __toString() + { + return (string) $this->getBag('default'); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/composer.json b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/composer.json new file mode 100644 index 00000000000..527bdcbb869 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/composer.json @@ -0,0 +1,55 @@ +{ + "name": "illuminate/support", + "description": "The Illuminate Support package.", + "license": "MIT", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "require": { + "php": "^7.3|^8.0", + "ext-json": "*", + "ext-mbstring": "*", + "doctrine/inflector": "^1.4|^2.0", + "illuminate/collections": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "nesbot/carbon": "^2.53.1", + "voku/portable-ascii": "^1.6.1" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "autoload": { + "psr-4": { + "Illuminate\\Support\\": "" + }, + "files": [ + "helpers.php" + ] + }, + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "suggest": { + "illuminate/filesystem": "Required to use the composer class (^8.0).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^1.3|^2.0.2).", + "ramsey/uuid": "Required to use Str::uuid() (^4.2.2).", + "symfony/process": "Required to use the composer class (^5.4).", + "symfony/var-dumper": "Required to use the dd function (^5.4).", + "vlucas/phpdotenv": "Required to use the Env class and env helper (^5.4.1)." + }, + "config": { + "sort-packages": true + }, + "minimum-stability": "dev" +} diff --git a/htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php new file mode 100755 index 00000000000..0b82fe76939 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/illuminate/support/helpers.php @@ -0,0 +1,379 @@ + $value) { + if (is_numeric($key)) { + $start++; + + $array[$start] = Arr::pull($array, $key); + } + } + + return $array; + } +} + +if (! function_exists('blank')) { + /** + * Determine if the given value is "blank". + * + * @param mixed $value + * @return bool + */ + function blank($value) + { + if (is_null($value)) { + return true; + } + + if (is_string($value)) { + return trim($value) === ''; + } + + if (is_numeric($value) || is_bool($value)) { + return false; + } + + if ($value instanceof Countable) { + return count($value) === 0; + } + + return empty($value); + } +} + +if (! function_exists('class_basename')) { + /** + * Get the class "basename" of the given object / class. + * + * @param string|object $class + * @return string + */ + function class_basename($class) + { + $class = is_object($class) ? get_class($class) : $class; + + return basename(str_replace('\\', '/', $class)); + } +} + +if (! function_exists('class_uses_recursive')) { + /** + * Returns all traits used by a class, its parent classes and trait of their traits. + * + * @param object|string $class + * @return array + */ + function class_uses_recursive($class) + { + if (is_object($class)) { + $class = get_class($class); + } + + $results = []; + + foreach (array_reverse(class_parents($class)) + [$class => $class] as $class) { + $results += trait_uses_recursive($class); + } + + return array_unique($results); + } +} + +if (! function_exists('e')) { + /** + * Encode HTML special characters in a string. + * + * @param \Illuminate\Contracts\Support\DeferringDisplayableValue|\Illuminate\Contracts\Support\Htmlable|string|null $value + * @param bool $doubleEncode + * @return string + */ + function e($value, $doubleEncode = true) + { + if ($value instanceof DeferringDisplayableValue) { + $value = $value->resolveDisplayableValue(); + } + + if ($value instanceof Htmlable) { + return $value->toHtml(); + } + + return htmlspecialchars($value ?? '', ENT_QUOTES, 'UTF-8', $doubleEncode); + } +} + +if (! function_exists('env')) { + /** + * Gets the value of an environment variable. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + function env($key, $default = null) + { + return Env::get($key, $default); + } +} + +if (! function_exists('filled')) { + /** + * Determine if a value is "filled". + * + * @param mixed $value + * @return bool + */ + function filled($value) + { + return ! blank($value); + } +} + +if (! function_exists('object_get')) { + /** + * Get an item from an object using "dot" notation. + * + * @param object $object + * @param string|null $key + * @param mixed $default + * @return mixed + */ + function object_get($object, $key, $default = null) + { + if (is_null($key) || trim($key) === '') { + return $object; + } + + foreach (explode('.', $key) as $segment) { + if (! is_object($object) || ! isset($object->{$segment})) { + return value($default); + } + + $object = $object->{$segment}; + } + + return $object; + } +} + +if (! function_exists('optional')) { + /** + * Provide access to optional objects. + * + * @param mixed $value + * @param callable|null $callback + * @return mixed + */ + function optional($value = null, callable $callback = null) + { + if (is_null($callback)) { + return new Optional($value); + } elseif (! is_null($value)) { + return $callback($value); + } + } +} + +if (! function_exists('preg_replace_array')) { + /** + * Replace a given pattern with each value in the array in sequentially. + * + * @param string $pattern + * @param array $replacements + * @param string $subject + * @return string + */ + function preg_replace_array($pattern, array $replacements, $subject) + { + return preg_replace_callback($pattern, function () use (&$replacements) { + foreach ($replacements as $key => $value) { + return array_shift($replacements); + } + }, $subject); + } +} + +if (! function_exists('retry')) { + /** + * Retry an operation a given number of times. + * + * @param int $times + * @param callable $callback + * @param int|\Closure $sleepMilliseconds + * @param callable|null $when + * @return mixed + * + * @throws \Exception + */ + function retry($times, callable $callback, $sleepMilliseconds = 0, $when = null) + { + $attempts = 0; + + beginning: + $attempts++; + $times--; + + try { + return $callback($attempts); + } catch (Exception $e) { + if ($times < 1 || ($when && ! $when($e))) { + throw $e; + } + + if ($sleepMilliseconds) { + usleep(value($sleepMilliseconds, $attempts) * 1000); + } + + goto beginning; + } + } +} + +if (! function_exists('tap')) { + /** + * Call the given Closure with the given value then return the value. + * + * @param mixed $value + * @param callable|null $callback + * @return mixed + */ + function tap($value, $callback = null) + { + if (is_null($callback)) { + return new HigherOrderTapProxy($value); + } + + $callback($value); + + return $value; + } +} + +if (! function_exists('throw_if')) { + /** + * Throw the given exception if the given condition is true. + * + * @param mixed $condition + * @param \Throwable|string $exception + * @param mixed ...$parameters + * @return mixed + * + * @throws \Throwable + */ + function throw_if($condition, $exception = 'RuntimeException', ...$parameters) + { + if ($condition) { + if (is_string($exception) && class_exists($exception)) { + $exception = new $exception(...$parameters); + } + + throw is_string($exception) ? new RuntimeException($exception) : $exception; + } + + return $condition; + } +} + +if (! function_exists('throw_unless')) { + /** + * Throw the given exception unless the given condition is true. + * + * @param mixed $condition + * @param \Throwable|string $exception + * @param mixed ...$parameters + * @return mixed + * + * @throws \Throwable + */ + function throw_unless($condition, $exception = 'RuntimeException', ...$parameters) + { + throw_if(! $condition, $exception, ...$parameters); + + return $condition; + } +} + +if (! function_exists('trait_uses_recursive')) { + /** + * Returns all traits used by a trait and its traits. + * + * @param string $trait + * @return array + */ + function trait_uses_recursive($trait) + { + $traits = class_uses($trait) ?: []; + + foreach ($traits as $trait) { + $traits += trait_uses_recursive($trait); + } + + return $traits; + } +} + +if (! function_exists('transform')) { + /** + * Transform the given value if it is present. + * + * @param mixed $value + * @param callable $callback + * @param mixed $default + * @return mixed|null + */ + function transform($value, callable $callback, $default = null) + { + if (filled($value)) { + return $callback($value); + } + + if (is_callable($default)) { + return $default($value); + } + + return $default; + } +} + +if (! function_exists('windows_os')) { + /** + * Determine whether the current environment is Windows based. + * + * @return bool + */ + function windows_os() + { + return PHP_OS_FAMILY === 'Windows'; + } +} + +if (! function_exists('with')) { + /** + * Return the given value, optionally passed through the given callback. + * + * @param mixed $value + * @param callable|null $callback + * @return mixed + */ + function with($value, callable $callback = null) + { + return is_null($callback) ? $value : $callback($value); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/LICENSE b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/LICENSE new file mode 100644 index 00000000000..6de45ebf882 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/LICENSE @@ -0,0 +1,19 @@ +Copyright (C) Brian Nesbitt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/composer.json b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/composer.json new file mode 100644 index 00000000000..cdbbc1219d8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/composer.json @@ -0,0 +1,120 @@ +{ + "name": "nesbot/carbon", + "description": "An API extension for DateTime that supports 281 different languages.", + "license": "MIT", + "type": "library", + "keywords": [ + "date", + "time", + "DateTime" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "homepage": "https://carbon.nesbot.com", + "support": { + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon", + "docs": "https://carbon.nesbot.com/docs" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + } + ], + "require": { + "php": "^7.1.8 || ^8.0", + "ext-json": "*", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + }, + "require-dev": { + "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/orm": "^2.7", + "friendsofphp/php-cs-fixer": "^3.0", + "kylekatarnls/multi-tester": "^2.0", + "ondrejmirtes/better-reflection": "*", + "phpmd/phpmd": "^2.9", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.99 || ^1.7.14", + "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "squizlabs/php_codesniffer": "^3.4" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + }, + "files": [ + "tests/Laravel/ServiceProvider.php" + ] + }, + "bin": [ + "bin/carbon" + ], + "config": { + "allow-plugins": { + "phpstan/extension-installer": true, + "composer/package-versions-deprecated": true + }, + "process-timeout": 0, + "sort-packages": true + }, + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "scripts": { + "phpcs": "php-cs-fixer fix -v --diff --dry-run", + "phpdoc": "php phpdoc.php", + "phpmd": "phpmd src text /phpmd.xml", + "phpstan": "phpstan analyse --configuration phpstan.neon", + "phpunit": "phpunit --verbose", + "style-check": [ + "@phpcs", + "@phpstan", + "@phpmd" + ], + "test": [ + "@phpunit", + "@style-check" + ] + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/extension.neon b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/extension.neon new file mode 100644 index 00000000000..33bf794fc6c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/extension.neon @@ -0,0 +1,5 @@ +services: + - + class: Carbon\PHPStan\MacroExtension + tags: + - phpstan.broker.methodsClassReflectionExtension diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php new file mode 100644 index 00000000000..1504b0abc06 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroBuiltin.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use ReflectionMethod; + +if (!class_exists(AbstractReflectionMacro::class, false)) { + abstract class AbstractReflectionMacro extends AbstractMacro + { + /** + * {@inheritdoc} + */ + public function getReflection(): ?ReflectionMethod + { + return $this->reflectionFunction instanceof ReflectionMethod + ? $this->reflectionFunction + : null; + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php new file mode 100644 index 00000000000..450dceb8030 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/AbstractMacroStatic.php @@ -0,0 +1,41 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use PHPStan\BetterReflection\Reflection; +use ReflectionMethod; + +if (!class_exists(AbstractReflectionMacro::class, false)) { + abstract class AbstractReflectionMacro extends AbstractMacro + { + /** + * {@inheritdoc} + */ + public function getReflection(): ?Reflection\Adapter\ReflectionMethod + { + if ($this->reflectionFunction instanceof Reflection\Adapter\ReflectionMethod) { + return $this->reflectionFunction; + } + + return $this->reflectionFunction instanceof ReflectionMethod + ? new Reflection\Adapter\ReflectionMethod( + Reflection\ReflectionMethod::createFromName( + $this->reflectionFunction->getDeclaringClass()->getName(), + $this->reflectionFunction->getName() + ) + ) + : null; + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php new file mode 100644 index 00000000000..47002c47f32 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroStrongType.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +if (!class_exists(LazyMacro::class, false)) { + abstract class LazyMacro extends AbstractReflectionMacro + { + /** + * {@inheritdoc} + */ + public function getFileName(): ?string + { + return $this->reflectionFunction->getFileName(); + } + + /** + * {@inheritdoc} + */ + public function getStartLine(): ?int + { + return $this->reflectionFunction->getStartLine(); + } + + /** + * {@inheritdoc} + */ + public function getEndLine(): ?int + { + return $this->reflectionFunction->getEndLine(); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php new file mode 100644 index 00000000000..c47d70ed5e9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/PHPStan/MacroWeakType.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +if (!class_exists(LazyMacro::class, false)) { + abstract class LazyMacro extends AbstractReflectionMacro + { + /** + * {@inheritdoc} + * + * @return string|false + */ + public function getFileName() + { + return $this->reflectionFunction->getFileName(); + } + + /** + * {@inheritdoc} + * + * @return int|false + */ + public function getStartLine() + { + return $this->reflectionFunction->getStartLine(); + } + + /** + * {@inheritdoc} + * + * @return int|false + */ + public function getEndLine() + { + return $this->reflectionFunction->getEndLine(); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php new file mode 100644 index 00000000000..d35308a66c2 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorStrongType.php @@ -0,0 +1,52 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Symfony\Component\Translation\MessageCatalogueInterface; + +if (!class_exists(LazyTranslator::class, false)) { + class LazyTranslator extends AbstractTranslator implements TranslatorStrongTypeInterface + { + public function trans(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string + { + return $this->translate($id, $parameters, $domain, $locale); + } + + public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages') + { + $messages = $this->getPrivateProperty($catalogue, 'messages'); + + if (isset($messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id])) { + return $messages[$domain.MessageCatalogueInterface::INTL_DOMAIN_SUFFIX][$id]; + } + + if (isset($messages[$domain][$id])) { + return $messages[$domain][$id]; + } + + $fallbackCatalogue = $this->getPrivateProperty($catalogue, 'fallbackCatalogue'); + + if ($fallbackCatalogue !== null) { + return $this->getFromCatalogue($fallbackCatalogue, $id, $domain); + } + + return $id; + } + + private function getPrivateProperty($instance, string $field) + { + return (function (string $field) { + return $this->$field; + })->call($instance, $field); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php new file mode 100644 index 00000000000..94dbdc30ae4 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/lazy/Carbon/TranslatorWeakType.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +if (!class_exists(LazyTranslator::class, false)) { + class LazyTranslator extends AbstractTranslator + { + /** + * Returns the translation. + * + * @param string|null $id + * @param array $parameters + * @param string|null $domain + * @param string|null $locale + * + * @return string + */ + public function trans($id, array $parameters = [], $domain = null, $locale = null) + { + return $this->translate($id, $parameters, $domain, $locale); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/readme.md b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/readme.md new file mode 100644 index 00000000000..100e60f200c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/readme.md @@ -0,0 +1,148 @@ +# Carbon + +[![Latest Stable Version](https://img.shields.io/packagist/v/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) +[![Total Downloads](https://img.shields.io/packagist/dt/nesbot/carbon.svg?style=flat-square)](https://packagist.org/packages/nesbot/carbon) +[![GitHub Actions](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fbriannesbitt%2FCarbon%2Fbadge&style=flat-square&label=Build&logo=none)](https://actions-badge.atrox.dev/briannesbitt/Carbon/goto) +[![codecov.io](https://img.shields.io/codecov/c/github/briannesbitt/Carbon.svg?style=flat-square)](https://codecov.io/github/briannesbitt/Carbon?branch=master) +[![Tidelift](https://tidelift.com/badges/github/briannesbitt/Carbon)](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) + +An international PHP extension for DateTime. [https://carbon.nesbot.com](https://carbon.nesbot.com) + +```php +toDateTimeString()); +printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); //implicit __toString() +$tomorrow = Carbon::now()->addDay(); +$lastWeek = Carbon::now()->subWeek(); +$nextSummerOlympics = Carbon::createFromDate(2016)->addYears(4); + +$officialDate = Carbon::now()->toRfc2822String(); + +$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age; + +$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London'); + +$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT'); + +// Don't really want this to happen so mock now +Carbon::setTestNow(Carbon::createFromDate(2000, 1, 1)); + +// comparisons are always done in UTC +if (Carbon::now()->gte($internetWillBlowUpOn)) { + die(); +} + +// Phew! Return to normal behaviour +Carbon::setTestNow(); + +if (Carbon::now()->isWeekend()) { + echo 'Party!'; +} +// Over 200 languages (and over 500 regional variants) supported: +echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago' +echo Carbon::now()->subMinutes(2)->locale('zh_CN')->diffForHumans(); // '2分钟前' +echo Carbon::parse('2019-07-23 14:51')->isoFormat('LLLL'); // 'Tuesday, July 23, 2019 2:51 PM' +echo Carbon::parse('2019-07-23 14:51')->locale('fr_FR')->isoFormat('LLLL'); // 'mardi 23 juillet 2019 14:51' + +// ... but also does 'from now', 'after' and 'before' +// rolling up to seconds, minutes, hours, days, months, years + +$daysSinceEpoch = Carbon::createFromTimestamp(0)->diffInDays(); +``` + +[Get supported nesbot/carbon with the Tidelift Subscription](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme) + +## Installation + +### With Composer + +``` +$ composer require nesbot/carbon +``` + +```json +{ + "require": { + "nesbot/carbon": "^2.16" + } +} +``` + +```php + + +### Translators + +[Thanks to people helping us to translate Carbon in so many languages](https://carbon.nesbot.com/contribute/translators/) + +### Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. + + + + + + + + + + + + + +[[Become a sponsor](https://opencollective.com/Carbon#sponsor)] + +### Backers + +Thank you to all our backers! 🙏 + + + +[[Become a backer](https://opencollective.com/Carbon#backer)] + +## Carbon for enterprise + +Available as part of the Tidelift Subscription. + +The maintainers of ``Carbon`` and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source dependencies you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact dependencies you use. [Learn more.](https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=enterprise&utm_term=repo) diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php new file mode 100644 index 00000000000..949e159beef --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/AbstractTranslator.php @@ -0,0 +1,397 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Closure; +use ReflectionException; +use ReflectionFunction; +use Symfony\Component\Translation; +use Symfony\Component\Translation\Formatter\MessageFormatterInterface; +use Symfony\Component\Translation\Loader\ArrayLoader; + +abstract class AbstractTranslator extends Translation\Translator +{ + /** + * Translator singletons for each language. + * + * @var array + */ + protected static $singletons = []; + + /** + * List of custom localized messages. + * + * @var array + */ + protected $messages = []; + + /** + * List of custom directories that contain translation files. + * + * @var string[] + */ + protected $directories = []; + + /** + * Set to true while constructing. + * + * @var bool + */ + protected $initializing = false; + + /** + * List of locales aliases. + * + * @var string[] + */ + protected $aliases = [ + 'me' => 'sr_Latn_ME', + 'scr' => 'sh', + ]; + + /** + * Return a singleton instance of Translator. + * + * @param string|null $locale optional initial locale ("en" - english by default) + * + * @return static + */ + public static function get($locale = null) + { + $locale = $locale ?: 'en'; + $key = static::class === Translator::class ? $locale : static::class.'|'.$locale; + + if (!isset(static::$singletons[$key])) { + static::$singletons[$key] = new static($locale); + } + + return static::$singletons[$key]; + } + + public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false) + { + parent::setLocale($locale); + $this->initializing = true; + $this->directories = [__DIR__.'/Lang']; + $this->addLoader('array', new ArrayLoader()); + parent::__construct($locale, $formatter, $cacheDir, $debug); + $this->initializing = false; + } + + /** + * Returns the list of directories translation files are searched in. + * + * @return array + */ + public function getDirectories(): array + { + return $this->directories; + } + + /** + * Set list of directories translation files are searched in. + * + * @param array $directories new directories list + * + * @return $this + */ + public function setDirectories(array $directories) + { + $this->directories = $directories; + + return $this; + } + + /** + * Add a directory to the list translation files are searched in. + * + * @param string $directory new directory + * + * @return $this + */ + public function addDirectory(string $directory) + { + $this->directories[] = $directory; + + return $this; + } + + /** + * Remove a directory from the list translation files are searched in. + * + * @param string $directory directory path + * + * @return $this + */ + public function removeDirectory(string $directory) + { + $search = rtrim(strtr($directory, '\\', '/'), '/'); + + return $this->setDirectories(array_filter($this->getDirectories(), function ($item) use ($search) { + return rtrim(strtr($item, '\\', '/'), '/') !== $search; + })); + } + + /** + * Reset messages of a locale (all locale if no locale passed). + * Remove custom messages and reload initial messages from matching + * file in Lang directory. + * + * @param string|null $locale + * + * @return bool + */ + public function resetMessages($locale = null) + { + if ($locale === null) { + $this->messages = []; + + return true; + } + + foreach ($this->getDirectories() as $directory) { + $data = @include sprintf('%s/%s.php', rtrim($directory, '\\/'), $locale); + + if ($data !== false) { + $this->messages[$locale] = $data; + $this->addResource('array', $this->messages[$locale], $locale); + + return true; + } + } + + return false; + } + + /** + * Returns the list of files matching a given locale prefix (or all if empty). + * + * @param string $prefix prefix required to filter result + * + * @return array + */ + public function getLocalesFiles($prefix = '') + { + $files = []; + + foreach ($this->getDirectories() as $directory) { + $directory = rtrim($directory, '\\/'); + + foreach (glob("$directory/$prefix*.php") as $file) { + $files[] = $file; + } + } + + return array_unique($files); + } + + /** + * Returns the list of internally available locales and already loaded custom locales. + * (It will ignore custom translator dynamic loading.) + * + * @param string $prefix prefix required to filter result + * + * @return array + */ + public function getAvailableLocales($prefix = '') + { + $locales = []; + foreach ($this->getLocalesFiles($prefix) as $file) { + $locales[] = substr($file, strrpos($file, '/') + 1, -4); + } + + return array_unique(array_merge($locales, array_keys($this->messages))); + } + + protected function translate(?string $id, array $parameters = [], ?string $domain = null, ?string $locale = null): string + { + if ($domain === null) { + $domain = 'messages'; + } + + $catalogue = $this->getCatalogue($locale); + $format = $this instanceof TranslatorStrongTypeInterface + ? $this->getFromCatalogue($catalogue, (string) $id, $domain) + : $this->getCatalogue($locale)->get((string) $id, $domain); // @codeCoverageIgnore + + if ($format instanceof Closure) { + // @codeCoverageIgnoreStart + try { + $count = (new ReflectionFunction($format))->getNumberOfRequiredParameters(); + } catch (ReflectionException $exception) { + $count = 0; + } + // @codeCoverageIgnoreEnd + + return $format( + ...array_values($parameters), + ...array_fill(0, max(0, $count - \count($parameters)), null) + ); + } + + return parent::trans($id, $parameters, $domain, $locale); + } + + /** + * Init messages language from matching file in Lang directory. + * + * @param string $locale + * + * @return bool + */ + protected function loadMessagesFromFile($locale) + { + return isset($this->messages[$locale]) || $this->resetMessages($locale); + } + + /** + * Set messages of a locale and take file first if present. + * + * @param string $locale + * @param array $messages + * + * @return $this + */ + public function setMessages($locale, $messages) + { + $this->loadMessagesFromFile($locale); + $this->addResource('array', $messages, $locale); + $this->messages[$locale] = array_merge( + $this->messages[$locale] ?? [], + $messages + ); + + return $this; + } + + /** + * Set messages of the current locale and take file first if present. + * + * @param array $messages + * + * @return $this + */ + public function setTranslations($messages) + { + return $this->setMessages($this->getLocale(), $messages); + } + + /** + * Get messages of a locale, if none given, return all the + * languages. + * + * @param string|null $locale + * + * @return array + */ + public function getMessages($locale = null) + { + return $locale === null ? $this->messages : $this->messages[$locale]; + } + + /** + * Set the current translator locale and indicate if the source locale file exists + * + * @param string $locale locale ex. en + * + * @return bool + */ + public function setLocale($locale) + { + $locale = preg_replace_callback('/[-_]([a-z]{2,}|\d{2,})/', function ($matches) { + // _2-letters or YUE is a region, _3+-letters is a variant + $upper = strtoupper($matches[1]); + + if ($upper === 'YUE' || $upper === 'ISO' || \strlen($upper) < 3) { + return "_$upper"; + } + + return '_'.ucfirst($matches[1]); + }, strtolower($locale)); + + $previousLocale = $this->getLocale(); + + if ($previousLocale === $locale && isset($this->messages[$locale])) { + return true; + } + + unset(static::$singletons[$previousLocale]); + + if ($locale === 'auto') { + $completeLocale = setlocale(LC_TIME, '0'); + $locale = preg_replace('/^([^_.-]+).*$/', '$1', $completeLocale); + $locales = $this->getAvailableLocales($locale); + + $completeLocaleChunks = preg_split('/[_.-]+/', $completeLocale); + + $getScore = function ($language) use ($completeLocaleChunks) { + return self::compareChunkLists($completeLocaleChunks, preg_split('/[_.-]+/', $language)); + }; + + usort($locales, function ($first, $second) use ($getScore) { + return $getScore($second) <=> $getScore($first); + }); + + $locale = $locales[0]; + } + + if (isset($this->aliases[$locale])) { + $locale = $this->aliases[$locale]; + } + + // If subtag (ex: en_CA) first load the macro (ex: en) to have a fallback + if (str_contains($locale, '_') && + $this->loadMessagesFromFile($macroLocale = preg_replace('/^([^_]+).*$/', '$1', $locale)) + ) { + parent::setLocale($macroLocale); + } + + if (!$this->loadMessagesFromFile($locale) && !$this->initializing) { + return false; + } + + parent::setLocale($locale); + + return true; + } + + /** + * Show locale on var_dump(). + * + * @return array + */ + public function __debugInfo() + { + return [ + 'locale' => $this->getLocale(), + ]; + } + + private static function compareChunkLists($referenceChunks, $chunks) + { + $score = 0; + + foreach ($referenceChunks as $index => $chunk) { + if (!isset($chunks[$index])) { + $score++; + + continue; + } + + if (strtolower($chunks[$index]) === strtolower($chunk)) { + $score += 10; + } + } + + return $score; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Carbon.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Carbon.php new file mode 100644 index 00000000000..e327590e2cd --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Carbon.php @@ -0,0 +1,523 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Traits\Date; +use Carbon\Traits\DeprecatedProperties; +use DateTime; +use DateTimeInterface; +use DateTimeZone; + +/** + * A simple API extension for DateTime. + * + * @mixin DeprecatedProperties + * + * + * + * @property int $year + * @property int $yearIso + * @property int $month + * @property int $day + * @property int $hour + * @property int $minute + * @property int $second + * @property int $micro + * @property int $microsecond + * @property int|float|string $timestamp seconds since the Unix Epoch + * @property string $englishDayOfWeek the day of week in English + * @property string $shortEnglishDayOfWeek the abbreviated day of week in English + * @property string $englishMonth the month in English + * @property string $shortEnglishMonth the abbreviated month in English + * @property int $milliseconds + * @property int $millisecond + * @property int $milli + * @property int $week 1 through 53 + * @property int $isoWeek 1 through 53 + * @property int $weekYear year according to week format + * @property int $isoWeekYear year according to ISO week format + * @property int $dayOfYear 1 through 366 + * @property int $age does a diffInYears() with default parameters + * @property int $offset the timezone offset in seconds from UTC + * @property int $offsetMinutes the timezone offset in minutes from UTC + * @property int $offsetHours the timezone offset in hours from UTC + * @property CarbonTimeZone $timezone the current timezone + * @property CarbonTimeZone $tz alias of $timezone + * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) + * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) + * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday + * @property-read int $daysInMonth number of days in the given month + * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read int $noZeroHour current hour from 1 to 24 + * @property-read int $weeksInYear 51 through 53 + * @property-read int $isoWeeksInYear 51 through 53 + * @property-read int $weekOfMonth 1 through 5 + * @property-read int $weekNumberInMonth 1 through 5 + * @property-read int $firstWeekDay 0 through 6 + * @property-read int $lastWeekDay 0 through 6 + * @property-read int $daysInYear 365 or 366 + * @property-read int $quarter the quarter of this instance, 1 - 4 + * @property-read int $decade the decade of this instance + * @property-read int $century the century of this instance + * @property-read int $millennium the millennium of this instance + * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise + * @property-read bool $local checks if the timezone is local, true if local, false otherwise + * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise + * @property-read string $timezoneName the current timezone name + * @property-read string $tzName alias of $timezoneName + * @property-read string $locale locale of the current instance + * + * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + * @method bool isLocal() Check if the current instance has non-UTC timezone. + * @method bool isValid() Check if the current instance is a valid date. + * @method bool isDST() Check if the current instance is in a daylight saving time. + * @method bool isSunday() Checks if the instance day is sunday. + * @method bool isMonday() Checks if the instance day is monday. + * @method bool isTuesday() Checks if the instance day is tuesday. + * @method bool isWednesday() Checks if the instance day is wednesday. + * @method bool isThursday() Checks if the instance day is thursday. + * @method bool isFriday() Checks if the instance day is friday. + * @method bool isSaturday() Checks if the instance day is saturday. + * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. + * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. + * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. + * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. + * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. + * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. + * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. + * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. + * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. + * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. + * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. + * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. + * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. + * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. + * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. + * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. + * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. + * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. + * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. + * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. + * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. + * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. + * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. + * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. + * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. + * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. + * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. + * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. + * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. + * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. + * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. + * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. + * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. + * @method $this years(int $value) Set current instance year to the given value. + * @method $this year(int $value) Set current instance year to the given value. + * @method $this setYears(int $value) Set current instance year to the given value. + * @method $this setYear(int $value) Set current instance year to the given value. + * @method $this months(int $value) Set current instance month to the given value. + * @method $this month(int $value) Set current instance month to the given value. + * @method $this setMonths(int $value) Set current instance month to the given value. + * @method $this setMonth(int $value) Set current instance month to the given value. + * @method $this days(int $value) Set current instance day to the given value. + * @method $this day(int $value) Set current instance day to the given value. + * @method $this setDays(int $value) Set current instance day to the given value. + * @method $this setDay(int $value) Set current instance day to the given value. + * @method $this hours(int $value) Set current instance hour to the given value. + * @method $this hour(int $value) Set current instance hour to the given value. + * @method $this setHours(int $value) Set current instance hour to the given value. + * @method $this setHour(int $value) Set current instance hour to the given value. + * @method $this minutes(int $value) Set current instance minute to the given value. + * @method $this minute(int $value) Set current instance minute to the given value. + * @method $this setMinutes(int $value) Set current instance minute to the given value. + * @method $this setMinute(int $value) Set current instance minute to the given value. + * @method $this seconds(int $value) Set current instance second to the given value. + * @method $this second(int $value) Set current instance second to the given value. + * @method $this setSeconds(int $value) Set current instance second to the given value. + * @method $this setSecond(int $value) Set current instance second to the given value. + * @method $this millis(int $value) Set current instance millisecond to the given value. + * @method $this milli(int $value) Set current instance millisecond to the given value. + * @method $this setMillis(int $value) Set current instance millisecond to the given value. + * @method $this setMilli(int $value) Set current instance millisecond to the given value. + * @method $this milliseconds(int $value) Set current instance millisecond to the given value. + * @method $this millisecond(int $value) Set current instance millisecond to the given value. + * @method $this setMilliseconds(int $value) Set current instance millisecond to the given value. + * @method $this setMillisecond(int $value) Set current instance millisecond to the given value. + * @method $this micros(int $value) Set current instance microsecond to the given value. + * @method $this micro(int $value) Set current instance microsecond to the given value. + * @method $this setMicros(int $value) Set current instance microsecond to the given value. + * @method $this setMicro(int $value) Set current instance microsecond to the given value. + * @method $this microseconds(int $value) Set current instance microsecond to the given value. + * @method $this microsecond(int $value) Set current instance microsecond to the given value. + * @method $this setMicroseconds(int $value) Set current instance microsecond to the given value. + * @method $this setMicrosecond(int $value) Set current instance microsecond to the given value. + * @method $this addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). + * @method $this addYear() Add one year to the instance (using date interval). + * @method $this subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). + * @method $this subYear() Sub one year to the instance (using date interval). + * @method $this addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. + * @method $this subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. + * @method $this addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). + * @method $this addMonth() Add one month to the instance (using date interval). + * @method $this subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). + * @method $this subMonth() Sub one month to the instance (using date interval). + * @method $this addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). + * @method $this addDay() Add one day to the instance (using date interval). + * @method $this subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). + * @method $this subDay() Sub one day to the instance (using date interval). + * @method $this addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). + * @method $this addHour() Add one hour to the instance (using date interval). + * @method $this subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). + * @method $this subHour() Sub one hour to the instance (using date interval). + * @method $this addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). + * @method $this addMinute() Add one minute to the instance (using date interval). + * @method $this subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). + * @method $this subMinute() Sub one minute to the instance (using date interval). + * @method $this addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). + * @method $this addSecond() Add one second to the instance (using date interval). + * @method $this subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). + * @method $this subSecond() Sub one second to the instance (using date interval). + * @method $this addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMilli() Add one millisecond to the instance (using date interval). + * @method $this subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMilli() Sub one millisecond to the instance (using date interval). + * @method $this addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMillisecond() Add one millisecond to the instance (using date interval). + * @method $this subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMillisecond() Sub one millisecond to the instance (using date interval). + * @method $this addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMicro() Add one microsecond to the instance (using date interval). + * @method $this subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMicro() Sub one microsecond to the instance (using date interval). + * @method $this addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method $this addMicrosecond() Add one microsecond to the instance (using date interval). + * @method $this subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method $this subMicrosecond() Sub one microsecond to the instance (using date interval). + * @method $this addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). + * @method $this addMillennium() Add one millennium to the instance (using date interval). + * @method $this subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). + * @method $this subMillennium() Sub one millennium to the instance (using date interval). + * @method $this addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method $this addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). + * @method $this addCentury() Add one century to the instance (using date interval). + * @method $this subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). + * @method $this subCentury() Sub one century to the instance (using date interval). + * @method $this addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. + * @method $this subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. + * @method $this addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). + * @method $this addDecade() Add one decade to the instance (using date interval). + * @method $this subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). + * @method $this subDecade() Sub one decade to the instance (using date interval). + * @method $this addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. + * @method $this subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. + * @method $this addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). + * @method $this addQuarter() Add one quarter to the instance (using date interval). + * @method $this subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). + * @method $this subQuarter() Sub one quarter to the instance (using date interval). + * @method $this addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method $this subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method $this subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method $this addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method $this subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method $this addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). + * @method $this addWeek() Add one week to the instance (using date interval). + * @method $this subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). + * @method $this subWeek() Sub one week to the instance (using date interval). + * @method $this addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). + * @method $this addWeekday() Add one weekday to the instance (using date interval). + * @method $this subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). + * @method $this subWeekday() Sub one weekday to the instance (using date interval). + * @method $this addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMicro() Add one microsecond to the instance (using timestamp). + * @method $this subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMicro() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method $this addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMicrosecond() Add one microsecond to the instance (using timestamp). + * @method $this subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMicrosecond() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method $this addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMilli() Add one millisecond to the instance (using timestamp). + * @method $this subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMilli() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method $this addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMillisecond() Add one millisecond to the instance (using timestamp). + * @method $this subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMillisecond() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method $this addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). + * @method $this addRealSecond() Add one second to the instance (using timestamp). + * @method $this subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). + * @method $this subRealSecond() Sub one second to the instance (using timestamp). + * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. + * @method $this addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMinute() Add one minute to the instance (using timestamp). + * @method $this subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMinute() Sub one minute to the instance (using timestamp). + * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. + * @method $this addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). + * @method $this addRealHour() Add one hour to the instance (using timestamp). + * @method $this subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). + * @method $this subRealHour() Sub one hour to the instance (using timestamp). + * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. + * @method $this addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). + * @method $this addRealDay() Add one day to the instance (using timestamp). + * @method $this subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). + * @method $this subRealDay() Sub one day to the instance (using timestamp). + * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. + * @method $this addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). + * @method $this addRealWeek() Add one week to the instance (using timestamp). + * @method $this subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). + * @method $this subRealWeek() Sub one week to the instance (using timestamp). + * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. + * @method $this addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMonth() Add one month to the instance (using timestamp). + * @method $this subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMonth() Sub one month to the instance (using timestamp). + * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. + * @method $this addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). + * @method $this addRealQuarter() Add one quarter to the instance (using timestamp). + * @method $this subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). + * @method $this subRealQuarter() Sub one quarter to the instance (using timestamp). + * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. + * @method $this addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). + * @method $this addRealYear() Add one year to the instance (using timestamp). + * @method $this subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). + * @method $this subRealYear() Sub one year to the instance (using timestamp). + * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. + * @method $this addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). + * @method $this addRealDecade() Add one decade to the instance (using timestamp). + * @method $this subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). + * @method $this subRealDecade() Sub one decade to the instance (using timestamp). + * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. + * @method $this addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). + * @method $this addRealCentury() Add one century to the instance (using timestamp). + * @method $this subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). + * @method $this subRealCentury() Sub one century to the instance (using timestamp). + * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. + * @method $this addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). + * @method $this addRealMillennium() Add one millennium to the instance (using timestamp). + * @method $this subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). + * @method $this subRealMillennium() Sub one millennium to the instance (using timestamp). + * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. + * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method static Carbon|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new Carbon object according to the specified format. + * @method static Carbon __set_state(array $array) https://php.net/manual/en/datetime.set-state.php + * + * + */ +class Carbon extends DateTime implements CarbonInterface +{ + use Date; + + /** + * Returns true if the current class/instance is mutable. + * + * @return bool + */ + public static function isMutable() + { + return true; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php new file mode 100644 index 00000000000..1ce967b255b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonConverterInterface.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use DateTimeInterface; + +interface CarbonConverterInterface +{ + public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php new file mode 100644 index 00000000000..6d1194ee780 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonImmutable.php @@ -0,0 +1,582 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Traits\Date; +use Carbon\Traits\DeprecatedProperties; +use DateTimeImmutable; +use DateTimeInterface; +use DateTimeZone; + +/** + * A simple API extension for DateTimeImmutable. + * + * @mixin DeprecatedProperties + * + * + * + * @property int $year + * @property int $yearIso + * @property int $month + * @property int $day + * @property int $hour + * @property int $minute + * @property int $second + * @property int $micro + * @property int $microsecond + * @property int|float|string $timestamp seconds since the Unix Epoch + * @property string $englishDayOfWeek the day of week in English + * @property string $shortEnglishDayOfWeek the abbreviated day of week in English + * @property string $englishMonth the month in English + * @property string $shortEnglishMonth the abbreviated month in English + * @property int $milliseconds + * @property int $millisecond + * @property int $milli + * @property int $week 1 through 53 + * @property int $isoWeek 1 through 53 + * @property int $weekYear year according to week format + * @property int $isoWeekYear year according to ISO week format + * @property int $dayOfYear 1 through 366 + * @property int $age does a diffInYears() with default parameters + * @property int $offset the timezone offset in seconds from UTC + * @property int $offsetMinutes the timezone offset in minutes from UTC + * @property int $offsetHours the timezone offset in hours from UTC + * @property CarbonTimeZone $timezone the current timezone + * @property CarbonTimeZone $tz alias of $timezone + * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) + * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) + * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday + * @property-read int $daysInMonth number of days in the given month + * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read int $noZeroHour current hour from 1 to 24 + * @property-read int $weeksInYear 51 through 53 + * @property-read int $isoWeeksInYear 51 through 53 + * @property-read int $weekOfMonth 1 through 5 + * @property-read int $weekNumberInMonth 1 through 5 + * @property-read int $firstWeekDay 0 through 6 + * @property-read int $lastWeekDay 0 through 6 + * @property-read int $daysInYear 365 or 366 + * @property-read int $quarter the quarter of this instance, 1 - 4 + * @property-read int $decade the decade of this instance + * @property-read int $century the century of this instance + * @property-read int $millennium the millennium of this instance + * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise + * @property-read bool $local checks if the timezone is local, true if local, false otherwise + * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise + * @property-read string $timezoneName the current timezone name + * @property-read string $tzName alias of $timezoneName + * @property-read string $locale locale of the current instance + * + * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + * @method bool isLocal() Check if the current instance has non-UTC timezone. + * @method bool isValid() Check if the current instance is a valid date. + * @method bool isDST() Check if the current instance is in a daylight saving time. + * @method bool isSunday() Checks if the instance day is sunday. + * @method bool isMonday() Checks if the instance day is monday. + * @method bool isTuesday() Checks if the instance day is tuesday. + * @method bool isWednesday() Checks if the instance day is wednesday. + * @method bool isThursday() Checks if the instance day is thursday. + * @method bool isFriday() Checks if the instance day is friday. + * @method bool isSaturday() Checks if the instance day is saturday. + * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. + * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. + * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. + * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. + * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. + * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. + * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. + * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. + * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. + * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. + * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. + * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. + * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. + * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. + * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. + * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. + * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. + * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. + * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. + * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. + * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. + * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. + * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. + * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. + * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. + * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. + * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. + * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. + * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. + * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. + * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. + * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. + * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. + * @method CarbonImmutable years(int $value) Set current instance year to the given value. + * @method CarbonImmutable year(int $value) Set current instance year to the given value. + * @method CarbonImmutable setYears(int $value) Set current instance year to the given value. + * @method CarbonImmutable setYear(int $value) Set current instance year to the given value. + * @method CarbonImmutable months(int $value) Set current instance month to the given value. + * @method CarbonImmutable month(int $value) Set current instance month to the given value. + * @method CarbonImmutable setMonths(int $value) Set current instance month to the given value. + * @method CarbonImmutable setMonth(int $value) Set current instance month to the given value. + * @method CarbonImmutable days(int $value) Set current instance day to the given value. + * @method CarbonImmutable day(int $value) Set current instance day to the given value. + * @method CarbonImmutable setDays(int $value) Set current instance day to the given value. + * @method CarbonImmutable setDay(int $value) Set current instance day to the given value. + * @method CarbonImmutable hours(int $value) Set current instance hour to the given value. + * @method CarbonImmutable hour(int $value) Set current instance hour to the given value. + * @method CarbonImmutable setHours(int $value) Set current instance hour to the given value. + * @method CarbonImmutable setHour(int $value) Set current instance hour to the given value. + * @method CarbonImmutable minutes(int $value) Set current instance minute to the given value. + * @method CarbonImmutable minute(int $value) Set current instance minute to the given value. + * @method CarbonImmutable setMinutes(int $value) Set current instance minute to the given value. + * @method CarbonImmutable setMinute(int $value) Set current instance minute to the given value. + * @method CarbonImmutable seconds(int $value) Set current instance second to the given value. + * @method CarbonImmutable second(int $value) Set current instance second to the given value. + * @method CarbonImmutable setSeconds(int $value) Set current instance second to the given value. + * @method CarbonImmutable setSecond(int $value) Set current instance second to the given value. + * @method CarbonImmutable millis(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable milli(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable setMillis(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable setMilli(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable milliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable millisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable setMilliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable setMillisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonImmutable micros(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable micro(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable setMicros(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable setMicro(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable microseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable microsecond(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable setMicroseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable setMicrosecond(int $value) Set current instance microsecond to the given value. + * @method CarbonImmutable addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addYear() Add one year to the instance (using date interval). + * @method CarbonImmutable subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subYear() Sub one year to the instance (using date interval). + * @method CarbonImmutable addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMonth() Add one month to the instance (using date interval). + * @method CarbonImmutable subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMonth() Sub one month to the instance (using date interval). + * @method CarbonImmutable addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addDay() Add one day to the instance (using date interval). + * @method CarbonImmutable subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subDay() Sub one day to the instance (using date interval). + * @method CarbonImmutable addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addHour() Add one hour to the instance (using date interval). + * @method CarbonImmutable subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subHour() Sub one hour to the instance (using date interval). + * @method CarbonImmutable addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMinute() Add one minute to the instance (using date interval). + * @method CarbonImmutable subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMinute() Sub one minute to the instance (using date interval). + * @method CarbonImmutable addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addSecond() Add one second to the instance (using date interval). + * @method CarbonImmutable subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subSecond() Sub one second to the instance (using date interval). + * @method CarbonImmutable addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMilli() Add one millisecond to the instance (using date interval). + * @method CarbonImmutable subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMilli() Sub one millisecond to the instance (using date interval). + * @method CarbonImmutable addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMillisecond() Add one millisecond to the instance (using date interval). + * @method CarbonImmutable subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMillisecond() Sub one millisecond to the instance (using date interval). + * @method CarbonImmutable addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMicro() Add one microsecond to the instance (using date interval). + * @method CarbonImmutable subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMicro() Sub one microsecond to the instance (using date interval). + * @method CarbonImmutable addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMicrosecond() Add one microsecond to the instance (using date interval). + * @method CarbonImmutable subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMicrosecond() Sub one microsecond to the instance (using date interval). + * @method CarbonImmutable addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addMillennium() Add one millennium to the instance (using date interval). + * @method CarbonImmutable subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subMillennium() Sub one millennium to the instance (using date interval). + * @method CarbonImmutable addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addCentury() Add one century to the instance (using date interval). + * @method CarbonImmutable subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subCentury() Sub one century to the instance (using date interval). + * @method CarbonImmutable addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addDecade() Add one decade to the instance (using date interval). + * @method CarbonImmutable subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subDecade() Sub one decade to the instance (using date interval). + * @method CarbonImmutable addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addQuarter() Add one quarter to the instance (using date interval). + * @method CarbonImmutable subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subQuarter() Sub one quarter to the instance (using date interval). + * @method CarbonImmutable addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonImmutable addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonImmutable addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addWeek() Add one week to the instance (using date interval). + * @method CarbonImmutable subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subWeek() Sub one week to the instance (using date interval). + * @method CarbonImmutable addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable addWeekday() Add one weekday to the instance (using date interval). + * @method CarbonImmutable subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonImmutable subWeekday() Sub one weekday to the instance (using date interval). + * @method CarbonImmutable addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMicro() Add one microsecond to the instance (using timestamp). + * @method CarbonImmutable subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMicro() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonImmutable addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMicrosecond() Add one microsecond to the instance (using timestamp). + * @method CarbonImmutable subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMicrosecond() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonImmutable addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMilli() Add one millisecond to the instance (using timestamp). + * @method CarbonImmutable subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMilli() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonImmutable addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMillisecond() Add one millisecond to the instance (using timestamp). + * @method CarbonImmutable subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMillisecond() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonImmutable addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealSecond() Add one second to the instance (using timestamp). + * @method CarbonImmutable subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealSecond() Sub one second to the instance (using timestamp). + * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. + * @method CarbonImmutable addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMinute() Add one minute to the instance (using timestamp). + * @method CarbonImmutable subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMinute() Sub one minute to the instance (using timestamp). + * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. + * @method CarbonImmutable addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealHour() Add one hour to the instance (using timestamp). + * @method CarbonImmutable subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealHour() Sub one hour to the instance (using timestamp). + * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. + * @method CarbonImmutable addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealDay() Add one day to the instance (using timestamp). + * @method CarbonImmutable subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealDay() Sub one day to the instance (using timestamp). + * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. + * @method CarbonImmutable addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealWeek() Add one week to the instance (using timestamp). + * @method CarbonImmutable subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealWeek() Sub one week to the instance (using timestamp). + * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. + * @method CarbonImmutable addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMonth() Add one month to the instance (using timestamp). + * @method CarbonImmutable subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMonth() Sub one month to the instance (using timestamp). + * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. + * @method CarbonImmutable addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealQuarter() Add one quarter to the instance (using timestamp). + * @method CarbonImmutable subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealQuarter() Sub one quarter to the instance (using timestamp). + * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. + * @method CarbonImmutable addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealYear() Add one year to the instance (using timestamp). + * @method CarbonImmutable subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealYear() Sub one year to the instance (using timestamp). + * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. + * @method CarbonImmutable addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealDecade() Add one decade to the instance (using timestamp). + * @method CarbonImmutable subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealDecade() Sub one decade to the instance (using timestamp). + * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. + * @method CarbonImmutable addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealCentury() Add one century to the instance (using timestamp). + * @method CarbonImmutable subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealCentury() Sub one century to the instance (using timestamp). + * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. + * @method CarbonImmutable addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable addRealMillennium() Add one millennium to the instance (using timestamp). + * @method CarbonImmutable subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonImmutable subRealMillennium() Sub one millennium to the instance (using timestamp). + * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. + * @method CarbonImmutable roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonImmutable roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonImmutable floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonImmutable floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonImmutable ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonImmutable ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonImmutable roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonImmutable roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonImmutable floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonImmutable floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonImmutable ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonImmutable ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonImmutable roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonImmutable roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonImmutable floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonImmutable floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonImmutable ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonImmutable ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonImmutable roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonImmutable roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonImmutable floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonImmutable floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonImmutable ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonImmutable ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonImmutable roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonImmutable roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonImmutable floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonImmutable floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonImmutable ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonImmutable ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonImmutable roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonImmutable roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonImmutable floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonImmutable floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonImmutable ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonImmutable ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonImmutable roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonImmutable roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonImmutable floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonImmutable floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonImmutable ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonImmutable ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonImmutable roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonImmutable roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonImmutable floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonImmutable floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonImmutable ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonImmutable ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonImmutable roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonImmutable roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonImmutable floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonImmutable floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonImmutable ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonImmutable ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonImmutable roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonImmutable roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonImmutable floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonImmutable floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonImmutable ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonImmutable ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonImmutable roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonImmutable roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonImmutable floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonImmutable floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonImmutable ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonImmutable ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonImmutable roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonImmutable roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonImmutable floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonImmutable floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonImmutable ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method CarbonImmutable ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method static CarbonImmutable|false createFromFormat(string $format, string $time, string|DateTimeZone $timezone = null) Parse a string into a new CarbonImmutable object according to the specified format. + * @method static CarbonImmutable __set_state(array $array) https://php.net/manual/en/datetime.set-state.php + * + * + */ +class CarbonImmutable extends DateTimeImmutable implements CarbonInterface +{ + use Date { + __clone as dateTraitClone; + } + + public function __clone() + { + $this->dateTraitClone(); + $this->endOfTime = false; + $this->startOfTime = false; + } + + /** + * Create a very old date representing start of time. + * + * @return static + */ + public static function startOfTime(): self + { + $date = static::parse('0001-01-01')->years(self::getStartOfTimeYear()); + $date->startOfTime = true; + + return $date; + } + + /** + * Create a very far date representing end of time. + * + * @return static + */ + public static function endOfTime(): self + { + $date = static::parse('9999-12-31 23:59:59.999999')->years(self::getEndOfTimeYear()); + $date->endOfTime = true; + + return $date; + } + + /** + * @codeCoverageIgnore + */ + private static function getEndOfTimeYear(): int + { + if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { + return 145261681241552; + } + + // Remove if https://bugs.php.net/bug.php?id=81107 is fixed + if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) { + return 1118290769066902787; + } + + return PHP_INT_MAX; + } + + /** + * @codeCoverageIgnore + */ + private static function getStartOfTimeYear(): int + { + if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { + return -135908816449551; + } + + // Remove if https://bugs.php.net/bug.php?id=81107 is fixed + if (version_compare(PHP_VERSION, '8.1.0-dev', '>=')) { + return -1118290769066898816; + } + + return max(PHP_INT_MIN, -9223372036854773760); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php new file mode 100644 index 00000000000..c3db85043aa --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterface.php @@ -0,0 +1,5078 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use BadMethodCallException; +use Carbon\Exceptions\BadComparisonUnitException; +use Carbon\Exceptions\ImmutableException; +use Carbon\Exceptions\InvalidDateException; +use Carbon\Exceptions\InvalidFormatException; +use Carbon\Exceptions\UnknownGetterException; +use Carbon\Exceptions\UnknownMethodException; +use Carbon\Exceptions\UnknownSetterException; +use Closure; +use DateInterval; +use DateTime; +use DateTimeImmutable; +use DateTimeInterface; +use DateTimeZone; +use JsonSerializable; +use ReflectionException; +use ReturnTypeWillChange; +use Symfony\Component\Translation\TranslatorInterface; +use Throwable; + +/** + * Common interface for Carbon and CarbonImmutable. + * + * + * + * @property int $year + * @property int $yearIso + * @property int $month + * @property int $day + * @property int $hour + * @property int $minute + * @property int $second + * @property int $micro + * @property int $microsecond + * @property int|float|string $timestamp seconds since the Unix Epoch + * @property string $englishDayOfWeek the day of week in English + * @property string $shortEnglishDayOfWeek the abbreviated day of week in English + * @property string $englishMonth the month in English + * @property string $shortEnglishMonth the abbreviated month in English + * @property int $milliseconds + * @property int $millisecond + * @property int $milli + * @property int $week 1 through 53 + * @property int $isoWeek 1 through 53 + * @property int $weekYear year according to week format + * @property int $isoWeekYear year according to ISO week format + * @property int $dayOfYear 1 through 366 + * @property int $age does a diffInYears() with default parameters + * @property int $offset the timezone offset in seconds from UTC + * @property int $offsetMinutes the timezone offset in minutes from UTC + * @property int $offsetHours the timezone offset in hours from UTC + * @property CarbonTimeZone $timezone the current timezone + * @property CarbonTimeZone $tz alias of $timezone + * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) + * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) + * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday + * @property-read int $daysInMonth number of days in the given month + * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read int $noZeroHour current hour from 1 to 24 + * @property-read int $weeksInYear 51 through 53 + * @property-read int $isoWeeksInYear 51 through 53 + * @property-read int $weekOfMonth 1 through 5 + * @property-read int $weekNumberInMonth 1 through 5 + * @property-read int $firstWeekDay 0 through 6 + * @property-read int $lastWeekDay 0 through 6 + * @property-read int $daysInYear 365 or 366 + * @property-read int $quarter the quarter of this instance, 1 - 4 + * @property-read int $decade the decade of this instance + * @property-read int $century the century of this instance + * @property-read int $millennium the millennium of this instance + * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise + * @property-read bool $local checks if the timezone is local, true if local, false otherwise + * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise + * @property-read string $timezoneName the current timezone name + * @property-read string $tzName alias of $timezoneName + * @property-read string $locale locale of the current instance + * + * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + * @method bool isLocal() Check if the current instance has non-UTC timezone. + * @method bool isValid() Check if the current instance is a valid date. + * @method bool isDST() Check if the current instance is in a daylight saving time. + * @method bool isSunday() Checks if the instance day is sunday. + * @method bool isMonday() Checks if the instance day is monday. + * @method bool isTuesday() Checks if the instance day is tuesday. + * @method bool isWednesday() Checks if the instance day is wednesday. + * @method bool isThursday() Checks if the instance day is thursday. + * @method bool isFriday() Checks if the instance day is friday. + * @method bool isSaturday() Checks if the instance day is saturday. + * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. + * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. + * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. + * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. + * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. + * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. + * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. + * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. + * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. + * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. + * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. + * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. + * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. + * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. + * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. + * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. + * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. + * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. + * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. + * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. + * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. + * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. + * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. + * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. + * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. + * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. + * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. + * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. + * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. + * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. + * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. + * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. + * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. + * @method CarbonInterface years(int $value) Set current instance year to the given value. + * @method CarbonInterface year(int $value) Set current instance year to the given value. + * @method CarbonInterface setYears(int $value) Set current instance year to the given value. + * @method CarbonInterface setYear(int $value) Set current instance year to the given value. + * @method CarbonInterface months(int $value) Set current instance month to the given value. + * @method CarbonInterface month(int $value) Set current instance month to the given value. + * @method CarbonInterface setMonths(int $value) Set current instance month to the given value. + * @method CarbonInterface setMonth(int $value) Set current instance month to the given value. + * @method CarbonInterface days(int $value) Set current instance day to the given value. + * @method CarbonInterface day(int $value) Set current instance day to the given value. + * @method CarbonInterface setDays(int $value) Set current instance day to the given value. + * @method CarbonInterface setDay(int $value) Set current instance day to the given value. + * @method CarbonInterface hours(int $value) Set current instance hour to the given value. + * @method CarbonInterface hour(int $value) Set current instance hour to the given value. + * @method CarbonInterface setHours(int $value) Set current instance hour to the given value. + * @method CarbonInterface setHour(int $value) Set current instance hour to the given value. + * @method CarbonInterface minutes(int $value) Set current instance minute to the given value. + * @method CarbonInterface minute(int $value) Set current instance minute to the given value. + * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value. + * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value. + * @method CarbonInterface seconds(int $value) Set current instance second to the given value. + * @method CarbonInterface second(int $value) Set current instance second to the given value. + * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value. + * @method CarbonInterface setSecond(int $value) Set current instance second to the given value. + * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addYear() Add one year to the instance (using date interval). + * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subYear() Sub one year to the instance (using date interval). + * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMonth() Add one month to the instance (using date interval). + * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMonth() Sub one month to the instance (using date interval). + * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addDay() Add one day to the instance (using date interval). + * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subDay() Sub one day to the instance (using date interval). + * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addHour() Add one hour to the instance (using date interval). + * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subHour() Sub one hour to the instance (using date interval). + * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMinute() Add one minute to the instance (using date interval). + * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval). + * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addSecond() Add one second to the instance (using date interval). + * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subSecond() Sub one second to the instance (using date interval). + * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval). + * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval). + * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval). + * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval). + * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval). + * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval). + * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval). + * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval). + * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval). + * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval). + * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addCentury() Add one century to the instance (using date interval). + * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subCentury() Sub one century to the instance (using date interval). + * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addDecade() Add one decade to the instance (using date interval). + * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval). + * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval). + * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval). + * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addWeek() Add one week to the instance (using date interval). + * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subWeek() Sub one week to the instance (using date interval). + * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval). + * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval). + * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp). + * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp). + * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp). + * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp). + * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp). + * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp). + * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. + * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp). + * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp). + * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. + * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp). + * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp). + * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. + * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp). + * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp). + * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. + * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp). + * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp). + * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. + * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp). + * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp). + * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. + * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp). + * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp). + * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. + * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp). + * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp). + * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. + * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp). + * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp). + * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. + * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp). + * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp). + * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. + * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp). + * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp). + * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. + * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * + * + */ +interface CarbonInterface extends DateTimeInterface, JsonSerializable +{ + /** + * Diff wording options(expressed in octal). + */ + public const NO_ZERO_DIFF = 01; + public const JUST_NOW = 02; + public const ONE_DAY_WORDS = 04; + public const TWO_DAY_WORDS = 010; + public const SEQUENTIAL_PARTS_ONLY = 020; + public const ROUND = 040; + public const FLOOR = 0100; + public const CEIL = 0200; + + /** + * Diff syntax options. + */ + public const DIFF_ABSOLUTE = 1; // backward compatibility with true + public const DIFF_RELATIVE_AUTO = 0; // backward compatibility with false + public const DIFF_RELATIVE_TO_NOW = 2; + public const DIFF_RELATIVE_TO_OTHER = 3; + + /** + * Translate string options. + */ + public const TRANSLATE_MONTHS = 1; + public const TRANSLATE_DAYS = 2; + public const TRANSLATE_UNITS = 4; + public const TRANSLATE_MERIDIEM = 8; + public const TRANSLATE_DIFF = 0x10; + public const TRANSLATE_ALL = self::TRANSLATE_MONTHS | self::TRANSLATE_DAYS | self::TRANSLATE_UNITS | self::TRANSLATE_MERIDIEM | self::TRANSLATE_DIFF; + + /** + * The day constants. + */ + public const SUNDAY = 0; + public const MONDAY = 1; + public const TUESDAY = 2; + public const WEDNESDAY = 3; + public const THURSDAY = 4; + public const FRIDAY = 5; + public const SATURDAY = 6; + + /** + * The month constants. + * These aren't used by Carbon itself but exist for + * convenience sake alone. + */ + public const JANUARY = 1; + public const FEBRUARY = 2; + public const MARCH = 3; + public const APRIL = 4; + public const MAY = 5; + public const JUNE = 6; + public const JULY = 7; + public const AUGUST = 8; + public const SEPTEMBER = 9; + public const OCTOBER = 10; + public const NOVEMBER = 11; + public const DECEMBER = 12; + + /** + * Number of X in Y. + */ + public const YEARS_PER_MILLENNIUM = 1000; + public const YEARS_PER_CENTURY = 100; + public const YEARS_PER_DECADE = 10; + public const MONTHS_PER_YEAR = 12; + public const MONTHS_PER_QUARTER = 3; + public const QUARTERS_PER_YEAR = 4; + public const WEEKS_PER_YEAR = 52; + public const WEEKS_PER_MONTH = 4; + public const DAYS_PER_YEAR = 365; + public const DAYS_PER_WEEK = 7; + public const HOURS_PER_DAY = 24; + public const MINUTES_PER_HOUR = 60; + public const SECONDS_PER_MINUTE = 60; + public const MILLISECONDS_PER_SECOND = 1000; + public const MICROSECONDS_PER_MILLISECOND = 1000; + public const MICROSECONDS_PER_SECOND = 1000000; + + /** + * Special settings to get the start of week from current locale culture. + */ + public const WEEK_DAY_AUTO = 'auto'; + + /** + * RFC7231 DateTime format. + * + * @var string + */ + public const RFC7231_FORMAT = 'D, d M Y H:i:s \G\M\T'; + + /** + * Default format to use for __toString method when type juggling occurs. + * + * @var string + */ + public const DEFAULT_TO_STRING_FORMAT = 'Y-m-d H:i:s'; + + /** + * Format for converting mocked time, includes microseconds. + * + * @var string + */ + public const MOCK_DATETIME_FORMAT = 'Y-m-d H:i:s.u'; + + /** + * Pattern detection for ->isoFormat and ::createFromIsoFormat. + * + * @var string + */ + public const ISO_FORMAT_REGEXP = '(O[YMDHhms]|[Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY?|g{1,5}|G{1,5}|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?)'; + + // + + /** + * Dynamically handle calls to the class. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable + * + * @return mixed + */ + public function __call($method, $parameters); + + /** + * Dynamically handle calls to the class. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @throws BadMethodCallException + * + * @return mixed + */ + public static function __callStatic($method, $parameters); + + /** + * Update constructedObjectId on cloned. + */ + public function __clone(); + + /** + * Create a new Carbon instance. + * + * Please see the testing aids section (specifically static::setTestNow()) + * for more on the possibility of this constructor returning a test instance. + * + * @param DateTimeInterface|string|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + */ + public function __construct($time = null, $tz = null); + + /** + * Show truthy properties on var_dump(). + * + * @return array + */ + public function __debugInfo(); + + /** + * Get a part of the Carbon object + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return string|int|bool|DateTimeZone|null + */ + public function __get($name); + + /** + * Check if an attribute exists on the object + * + * @param string $name + * + * @return bool + */ + public function __isset($name); + + /** + * Set a part of the Carbon object + * + * @param string $name + * @param string|int|DateTimeZone $value + * + * @throws UnknownSetterException|ReflectionException + * + * @return void + */ + public function __set($name, $value); + + /** + * The __set_state handler. + * + * @param string|array $dump + * + * @return static + */ + #[ReturnTypeWillChange] + public static function __set_state($dump); + + /** + * Returns the list of properties to dump on serialize() called on. + * + * @return array + */ + public function __sleep(); + + /** + * Format the instance as a string using the set format + * + * @example + * ``` + * echo Carbon::now(); // Carbon instances can be casted to string + * ``` + * + * @return string + */ + public function __toString(); + + /** + * Add given units or interval to the current instance. + * + * @example $date->add('hour', 3) + * @example $date->add(15, 'days') + * @example $date->add(CarbonInterval::days(4)) + * + * @param string|DateInterval|Closure|CarbonConverterInterface $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + #[ReturnTypeWillChange] + public function add($unit, $value = 1, $overflow = null); + + /** + * Add seconds to the instance using timestamp. Positive $value travels + * forward while negative $value travels into the past. + * + * @param string $unit + * @param int $value + * + * @return static + */ + public function addRealUnit($unit, $value = 1); + + /** + * Add given units to the current instance. + * + * @param string $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function addUnit($unit, $value = 1, $overflow = null); + + /** + * Add any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value amount to add to the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function addUnitNoOverflow($valueUnit, $value, $overflowUnit); + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given to now + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single part) + * @param int $options human diff options + * + * @return string + */ + public function ago($syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Modify the current instance to the average of a given instance (default now) and the current instance + * (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date + * + * @return static + */ + public function average($date = null); + + /** + * Clone the current instance if it's mutable. + * + * This method is convenient to ensure you don't mutate the initial object + * but avoid to make a useless copy of it if it's already immutable. + * + * @return static + */ + public function avoidMutation(); + + /** + * Determines if the instance is between two others. + * + * The third argument allow you to specify if bounds are included or not (true by default) + * but for when you including/excluding bounds may produce different results in your application, + * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function between($date1, $date2, $equal = true): bool; + + /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return bool + */ + public function betweenExcluded($date1, $date2): bool; + + /** + * Determines if the instance is between two others, bounds included. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return bool + */ + public function betweenIncluded($date1, $date2): bool; + + /** + * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days, + * or a calendar date (e.g. "10/29/2017") otherwise. + * + * Language, date and time formats will change according to the current locale. + * + * @param Carbon|\DateTimeInterface|string|null $referenceTime + * @param array $formats + * + * @return string + */ + public function calendar($referenceTime = null, array $formats = []); + + /** + * Checks if the (date)time string is in a given format and valid to create a + * new instance. + * + * @example + * ``` + * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true + * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function canBeCreatedFromFormat($date, $format); + + /** + * Return the Carbon instance passed through, a now instance in the same timezone + * if null given or parse the input if string given. + * + * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date + * + * @return static + */ + public function carbonize($date = null); + + /** + * Cast the current instance into the given class. + * + * @param string $className The $className::instance() method will be called to cast the current object. + * + * @return DateTimeInterface + */ + public function cast(string $className); + + /** + * Ceil the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * + * @return CarbonInterface + */ + public function ceil($precision = 1); + + /** + * Ceil the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int $precision + * + * @return CarbonInterface + */ + public function ceilUnit($unit, $precision = 1); + + /** + * Ceil the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function ceilWeek($weekStartsAt = null); + + /** + * Similar to native modify() method of DateTime but can handle more grammars. + * + * @example + * ``` + * echo Carbon::now()->change('next 2pm'); + * ``` + * + * @link https://php.net/manual/en/datetime.modify.php + * + * @param string $modifier + * + * @return static + */ + public function change($modifier); + + /** + * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested. + * foreach ($date as $_) {} + * serializer($date) + * var_export($date) + * get_object_vars($date) + */ + public function cleanupDumpProperties(); + + /** + * @alias copy + * + * Get a copy of the instance. + * + * @return static + */ + public function clone(); + + /** + * Get the closest date from the instance (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return static + */ + public function closest($date1, $date2); + + /** + * Get a copy of the instance. + * + * @return static + */ + public function copy(); + + /** + * Create a new Carbon instance from a specific date and time. + * + * If any of $year, $month or $day are set to null their now() values will + * be used. + * + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * + * If $hour is not null then the default values for $minute and $second + * will be 0. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null); + + /** + * Create a Carbon instance from just a date. The time portion is set to now. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromDate($year = null, $month = null, $day = null, $tz = null); + + /** + * Create a Carbon instance from a specific format. + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + #[ReturnTypeWillChange] + public static function createFromFormat($format, $time, $tz = null); + + /** + * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz optional timezone + * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use) + * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null); + + /** + * Create a Carbon instance from a specific format and a string in a given language. + * + * @param string $format Datetime format + * @param string $locale + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromLocaleFormat($format, $locale, $time, $tz = null); + + /** + * Create a Carbon instance from a specific ISO format and a string in a given language. + * + * @param string $format Datetime ISO format + * @param string $locale + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null); + + /** + * Create a Carbon instance from just a time. The date portion is set to today. + * + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null); + + /** + * Create a Carbon instance from a time string. The date portion is set to today. + * + * @param string $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromTimeString($time, $tz = null); + + /** + * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * @param \DateTimeZone|string|null $tz + * + * @return static + */ + public static function createFromTimestamp($timestamp, $tz = null); + + /** + * Create a Carbon instance from a timestamp in milliseconds. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * @param \DateTimeZone|string|null $tz + * + * @return static + */ + public static function createFromTimestampMs($timestamp, $tz = null); + + /** + * Create a Carbon instance from a timestamp in milliseconds. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * + * @return static + */ + public static function createFromTimestampMsUTC($timestamp); + + /** + * Create a Carbon instance from an timestamp keeping the timezone to UTC. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * + * @return static + */ + public static function createFromTimestampUTC($timestamp); + + /** + * Create a Carbon instance from just a date. The time portion is set to midnight. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null); + + /** + * Create a new safe Carbon instance from a specific date and time. + * + * If any of $year, $month or $day are set to null their now() values will + * be used. + * + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * + * If $hour is not null then the default values for $minute and $second + * will be 0. + * + * If one of the set values is not valid, an InvalidDateException + * will be thrown. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidDateException + * + * @return static|false + */ + public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null); + + /** + * Create a new Carbon instance from a specific date and time using strict validation. + * + * @see create() + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null); + + /** + * Get/set the day of year. + * + * @param int|null $value new value for day of year if using as setter. + * + * @return static|int + */ + public function dayOfYear($value = null); + + /** + * Get the difference as a CarbonInterval instance. + * Return relative interval (negative if $absolute flag is not set to true and the given date is before + * current one). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return CarbonInterval + */ + public function diffAsCarbonInterval($date = null, $absolute = true); + + /** + * Get the difference by the given interval using a filter closure. + * + * @param CarbonInterval $ci An interval to traverse by + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true); + + /** + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @example + * ``` + * echo Carbon::tomorrow()->diffForHumans() . "\n"; + * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n"; + * ``` + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'skip' entry, list of units to skip (array of strings or a single string, + * ` it can be the unit name (singular or plural) or its shortcut + * ` (y, m, w, d, h, min, s, ms, µs). + * - 'aUnit' entry, prefer "an hour" over "1 hour" if true + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * - 'minimumUnit' entry determines the smallest unit of time to display can be long or + * ` short form of the units, e.g. 'hour' or 'h' (default value: s) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Get the difference in days rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInDays($date = null, $absolute = true); + + /** + * Get the difference in days using a filter closure rounded down. + * + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true); + + /** + * Get the difference in hours rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInHours($date = null, $absolute = true); + + /** + * Get the difference in hours using a filter closure rounded down. + * + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true); + + /** + * Get the difference in microseconds. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMicroseconds($date = null, $absolute = true); + + /** + * Get the difference in milliseconds rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMilliseconds($date = null, $absolute = true); + + /** + * Get the difference in minutes rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMinutes($date = null, $absolute = true); + + /** + * Get the difference in months rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMonths($date = null, $absolute = true); + + /** + * Get the difference in quarters rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInQuarters($date = null, $absolute = true); + + /** + * Get the difference in hours rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealHours($date = null, $absolute = true); + + /** + * Get the difference in microseconds using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMicroseconds($date = null, $absolute = true); + + /** + * Get the difference in milliseconds rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMilliseconds($date = null, $absolute = true); + + /** + * Get the difference in minutes rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMinutes($date = null, $absolute = true); + + /** + * Get the difference in seconds using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealSeconds($date = null, $absolute = true); + + /** + * Get the difference in seconds rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInSeconds($date = null, $absolute = true); + + /** + * Get the difference in weekdays rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeekdays($date = null, $absolute = true); + + /** + * Get the difference in weekend days using a filter rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeekendDays($date = null, $absolute = true); + + /** + * Get the difference in weeks rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeeks($date = null, $absolute = true); + + /** + * Get the difference in years + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInYears($date = null, $absolute = true); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOption + */ + public static function disableHumanDiffOption($humanDiffOption); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOption + */ + public static function enableHumanDiffOption($humanDiffOption); + + /** + * Modify to end of current given unit. + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOf('month') + * ->endOf('week', Carbon::FRIDAY); + * ``` + * + * @param string $unit + * @param array $params + * + * @return static + */ + public function endOf($unit, ...$params); + + /** + * Resets the date to end of the century and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury(); + * ``` + * + * @return static + */ + public function endOfCentury(); + + /** + * Resets the time to 23:59:59.999999 end of day + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay(); + * ``` + * + * @return static + */ + public function endOfDay(); + + /** + * Resets the date to end of the decade and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade(); + * ``` + * + * @return static + */ + public function endOfDecade(); + + /** + * Modify to end of current hour, minutes and seconds become 59 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour(); + * ``` + * + * @return static + */ + public function endOfHour(); + + /** + * Resets the date to end of the millennium and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium(); + * ``` + * + * @return static + */ + public function endOfMillennium(); + + /** + * Modify to end of current minute, seconds become 59 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute(); + * ``` + * + * @return static + */ + public function endOfMinute(); + + /** + * Resets the date to end of the month and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth(); + * ``` + * + * @return static + */ + public function endOfMonth(); + + /** + * Resets the date to end of the quarter and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter(); + * ``` + * + * @return static + */ + public function endOfQuarter(); + + /** + * Modify to end of current second, microseconds become 999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->endOfSecond() + * ->format('H:i:s.u'); + * ``` + * + * @return static + */ + public function endOfSecond(); + + /** + * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n"; + * ``` + * + * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week + * + * @return static + */ + public function endOfWeek($weekEndsAt = null); + + /** + * Resets the date to end of the year and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear(); + * ``` + * + * @return static + */ + public function endOfYear(); + + /** + * Determines if the instance is equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see equalTo() + * + * @return bool + */ + public function eq($date): bool; + + /** + * Determines if the instance is equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function equalTo($date): bool; + + /** + * Set the current locale to the given, execute the passed function, reset the locale to previous one, + * then return the result of the closure (or null if the closure was void). + * + * @param string $locale locale ex. en + * @param callable $func + * + * @return mixed + */ + public static function executeWithLocale($locale, $func); + + /** + * Get the farthest date from the instance (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return static + */ + public function farthest($date1, $date2); + + /** + * Modify to the first occurrence of a given day of the week + * in the current month. If no dayOfWeek is provided, modify to the + * first day of the current month. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek + * + * @return static + */ + public function firstOfMonth($dayOfWeek = null); + + /** + * Modify to the first occurrence of a given day of the week + * in the current quarter. If no dayOfWeek is provided, modify to the + * first day of the current quarter. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function firstOfQuarter($dayOfWeek = null); + + /** + * Modify to the first occurrence of a given day of the week + * in the current year. If no dayOfWeek is provided, modify to the + * first day of the current year. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function firstOfYear($dayOfWeek = null); + + /** + * Get the difference in days as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInDays($date = null, $absolute = true); + + /** + * Get the difference in hours as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInHours($date = null, $absolute = true); + + /** + * Get the difference in minutes as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInMinutes($date = null, $absolute = true); + + /** + * Get the difference in months as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInMonths($date = null, $absolute = true); + + /** + * Get the difference in days as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealDays($date = null, $absolute = true); + + /** + * Get the difference in hours as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealHours($date = null, $absolute = true); + + /** + * Get the difference in minutes as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealMinutes($date = null, $absolute = true); + + /** + * Get the difference in months as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealMonths($date = null, $absolute = true); + + /** + * Get the difference in seconds as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealSeconds($date = null, $absolute = true); + + /** + * Get the difference in weeks as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealWeeks($date = null, $absolute = true); + + /** + * Get the difference in year as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealYears($date = null, $absolute = true); + + /** + * Get the difference in seconds as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInSeconds($date = null, $absolute = true); + + /** + * Get the difference in weeks as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInWeeks($date = null, $absolute = true); + + /** + * Get the difference in year as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInYears($date = null, $absolute = true); + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * + * @return CarbonInterface + */ + public function floor($precision = 1); + + /** + * Truncate the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int $precision + * + * @return CarbonInterface + */ + public function floorUnit($unit, $precision = 1); + + /** + * Truncate the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function floorWeek($weekStartsAt = null); + + /** + * Format the instance with the current locale. You can set the current + * locale using setlocale() https://php.net/setlocale. + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat() instead. + * Deprecated since 2.55.0 + * + * @param string $format + * + * @return string + */ + public function formatLocalized($format); + + /** + * @alias diffForHumans + * + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Get the difference in a human readable format in the current locale from current + * instance to now. + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function fromNow($syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Create an instance from a serialized string. + * + * @param string $value + * + * @throws InvalidFormatException + * + * @return static + */ + public static function fromSerialized($value); + + /** + * Register a custom macro. + * + * @param object|callable $macro + * @param int $priority marco with higher priority is tried first + * + * @return void + */ + public static function genericMacro($macro, $priority = 0); + + /** + * Get a part of the Carbon object + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return string|int|bool|DateTimeZone|null + */ + public function get($name); + + /** + * Returns the alternative number for a given date property if available in the current locale. + * + * @param string $key date property + * + * @return string + */ + public function getAltNumber(string $key): string; + + /** + * Returns the list of internally available locales and already loaded custom locales. + * (It will ignore custom translator dynamic loading.) + * + * @return array + */ + public static function getAvailableLocales(); + + /** + * Returns list of Language object for each available locale. This object allow you to get the ISO name, native + * name, region and variant of the locale. + * + * @return Language[] + */ + public static function getAvailableLocalesInfo(); + + /** + * Returns list of calendar formats for ISO formatting. + * + * @param string|null $locale current locale used if null + * + * @return array + */ + public function getCalendarFormats($locale = null); + + /** + * Get the days of the week + * + * @return array + */ + public static function getDays(); + + /** + * Get the fallback locale. + * + * @see https://symfony.com/doc/current/components/translation.html#fallback-locales + * + * @return string|null + */ + public static function getFallbackLocale(); + + /** + * List of replacements from date() format to isoFormat(). + * + * @return array + */ + public static function getFormatsToIsoReplacements(); + + /** + * Return default humanDiff() options (merged flags as integer). + * + * @return int + */ + public static function getHumanDiffOptions(); + + /** + * Returns list of locale formats for ISO formatting. + * + * @param string|null $locale current locale used if null + * + * @return array + */ + public function getIsoFormats($locale = null); + + /** + * Returns list of locale units for ISO formatting. + * + * @return array + */ + public static function getIsoUnits(); + + /** + * {@inheritdoc} + * + * @return array + */ + #[ReturnTypeWillChange] + public static function getLastErrors(); + + /** + * Get the raw callable macro registered globally or locally for a given name. + * + * @param string $name + * + * @return callable|null + */ + public function getLocalMacro($name); + + /** + * Get the translator of the current instance or the default if none set. + * + * @return \Symfony\Component\Translation\TranslatorInterface + */ + public function getLocalTranslator(); + + /** + * Get the current translator locale. + * + * @return string + */ + public static function getLocale(); + + /** + * Get the raw callable macro registered globally for a given name. + * + * @param string $name + * + * @return callable|null + */ + public static function getMacro($name); + + /** + * get midday/noon hour + * + * @return int + */ + public static function getMidDayAt(); + + /** + * Returns the offset hour and minute formatted with +/- and a given separator (":" by default). + * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first + * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something + * like "-12:00". + * + * @param string $separator string to place between hours and minutes (":" by default) + * + * @return string + */ + public function getOffsetString($separator = ':'); + + /** + * Returns a unit of the instance padded with 0 by default or any other string if specified. + * + * @param string $unit Carbon unit name + * @param int $length Length of the output (2 by default) + * @param string $padString String to use for padding ("0" by default) + * @param int $padType Side(s) to pad (STR_PAD_LEFT by default) + * + * @return string + */ + public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = 0); + + /** + * Returns a timestamp rounded with the given precision (6 by default). + * + * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision) + * @example getPreciseTimestamp(6) 1532087464437474 + * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision) + * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision) + * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision) + * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision) + * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision) + * @example getPreciseTimestamp(0) 1532087464 (second precision) + * @example getPreciseTimestamp(-1) 153208746 (10 second precision) + * @example getPreciseTimestamp(-2) 15320875 (100 second precision) + * + * @param int $precision + * + * @return float + */ + public function getPreciseTimestamp($precision = 6); + + /** + * Returns current local settings. + * + * @return array + */ + public function getSettings(); + + /** + * Get the Carbon instance (real or mock) to be returned when a "now" + * instance is created. + * + * @return Closure|static the current instance used for testing + */ + public static function getTestNow(); + + /** + * Return a format from H:i to H:i:s.u according to given unit precision. + * + * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond" + * + * @return string + */ + public static function getTimeFormatByPrecision($unitPrecision); + + /** + * Returns the timestamp with millisecond precision. + * + * @return int + */ + public function getTimestampMs(); + + /** + * Get the translation of the current week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * @param string $keySuffix "", "_short" or "_min" + * @param string|null $defaultValue default value if translation missing + * + * @return string + */ + public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null); + + /** + * Get the translation of the current abbreviated week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedMinDayName($context = null); + + /** + * Get the translation of the current month day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * @param string $keySuffix "" or "_short" + * @param string|null $defaultValue default value if translation missing + * + * @return string + */ + public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null); + + /** + * Get the translation of the current short week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedShortDayName($context = null); + + /** + * Get the translation of the current short month day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedShortMonthName($context = null); + + /** + * Returns raw translation message for a given key. + * + * @param string $key key to find + * @param string|null $locale current locale used if null + * @param string|null $default default value if translation returns the key + * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use + * + * @return string + */ + public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null); + + /** + * Returns raw translation message for a given key. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use + * @param string $key key to find + * @param string|null $locale current locale used if null + * @param string|null $default default value if translation returns the key + * + * @return string + */ + public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null); + + /** + * Get the default translator instance in use. + * + * @return \Symfony\Component\Translation\TranslatorInterface + */ + public static function getTranslator(); + + /** + * Get the last day of week + * + * @return int + */ + public static function getWeekEndsAt(); + + /** + * Get the first day of week + * + * @return int + */ + public static function getWeekStartsAt(); + + /** + * Get weekend days + * + * @return array + */ + public static function getWeekendDays(); + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function greaterThan($date): bool; + + /** + * Determines if the instance is greater (after) than or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function greaterThanOrEqualTo($date): bool; + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThan() + * + * @return bool + */ + public function gt($date): bool; + + /** + * Determines if the instance is greater (after) than or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThanOrEqualTo() + * + * @return bool + */ + public function gte($date): bool; + + /** + * Checks if the (date)time string is in a given format. + * + * @example + * ``` + * Carbon::hasFormat('11:12:45', 'h:i:s'); // true + * Carbon::hasFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function hasFormat($date, $format); + + /** + * Checks if the (date)time string is in a given format. + * + * @example + * ``` + * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true + * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function hasFormatWithModifiers($date, $format): bool; + + /** + * Checks if macro is registered globally or locally. + * + * @param string $name + * + * @return bool + */ + public function hasLocalMacro($name); + + /** + * Return true if the current instance has its own translator. + * + * @return bool + */ + public function hasLocalTranslator(); + + /** + * Checks if macro is registered globally. + * + * @param string $name + * + * @return bool + */ + public static function hasMacro($name); + + /** + * Determine if a time string will produce a relative date. + * + * @param string $time + * + * @return bool true if time match a relative date, false if absolute or invalid time string + */ + public static function hasRelativeKeywords($time); + + /** + * Determine if there is a valid test instance set. A valid test instance + * is anything that is not null. + * + * @return bool true if there is a test instance, otherwise false + */ + public static function hasTestNow(); + + /** + * Create a Carbon instance from a DateTime one. + * + * @param DateTimeInterface $date + * + * @return static + */ + public static function instance($date); + + /** + * Returns true if the current date matches the given string. + * + * @example + * ``` + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true + * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true + * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false + * ``` + * + * @param string $tester day name, month name, hour, date, etc. as string + * + * @return bool + */ + public function is(string $tester); + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThan() + * + * @return bool + */ + public function isAfter($date): bool; + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThan() + * + * @return bool + */ + public function isBefore($date): bool; + + /** + * Determines if the instance is between two others + * + * @example + * ``` + * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function isBetween($date1, $date2, $equal = true): bool; + + /** + * Check if its the birthday. Compares the date/month values of the two dates. + * + * @example + * ``` + * Carbon::now()->subYears(5)->isBirthday(); // true + * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. + * + * @return bool + */ + public function isBirthday($date = null); + + /** + * Determines if the instance is in the current unit given. + * + * @example + * ``` + * Carbon::now()->isCurrentUnit('hour'); // true + * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false + * ``` + * + * @param string $unit The unit to test. + * + * @throws BadMethodCallException + * + * @return bool + */ + public function isCurrentUnit($unit); + + /** + * Checks if this day is a specific day of the week. + * + * @example + * ``` + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false + * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true + * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false + * ``` + * + * @param int $dayOfWeek + * + * @return bool + */ + public function isDayOfWeek($dayOfWeek); + + /** + * Check if the instance is end of day. + * + * @example + * ``` + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false + * ``` + * + * @param bool $checkMicroseconds check time at microseconds precision + * + * @return bool + */ + public function isEndOfDay($checkMicroseconds = false); + + /** + * Returns true if the date was created using CarbonImmutable::endOfTime() + * + * @return bool + */ + public function isEndOfTime(): bool; + + /** + * Determines if the instance is in the future, ie. greater (after) than now. + * + * @example + * ``` + * Carbon::now()->addHours(5)->isFuture(); // true + * Carbon::now()->subHours(5)->isFuture(); // false + * ``` + * + * @return bool + */ + public function isFuture(); + + /** + * Returns true if the current class/instance is immutable. + * + * @return bool + */ + public static function isImmutable(); + + /** + * Check if today is the last day of the Month + * + * @example + * ``` + * Carbon::parse('2019-02-28')->isLastOfMonth(); // true + * Carbon::parse('2019-03-28')->isLastOfMonth(); // false + * Carbon::parse('2019-03-30')->isLastOfMonth(); // false + * Carbon::parse('2019-03-31')->isLastOfMonth(); // true + * Carbon::parse('2019-04-30')->isLastOfMonth(); // true + * ``` + * + * @return bool + */ + public function isLastOfMonth(); + + /** + * Determines if the instance is a leap year. + * + * @example + * ``` + * Carbon::parse('2020-01-01')->isLeapYear(); // true + * Carbon::parse('2019-01-01')->isLeapYear(); // false + * ``` + * + * @return bool + */ + public function isLeapYear(); + + /** + * Determines if the instance is a long year + * + * @example + * ``` + * Carbon::parse('2015-01-01')->isLongYear(); // true + * Carbon::parse('2016-01-01')->isLongYear(); // false + * ``` + * + * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates + * + * @return bool + */ + public function isLongYear(); + + /** + * Check if the instance is midday. + * + * @example + * ``` + * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false + * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false + * ``` + * + * @return bool + */ + public function isMidday(); + + /** + * Check if the instance is start of day / midnight. + * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false + * ``` + * + * @return bool + */ + public function isMidnight(); + + /** + * Returns true if a property can be changed via setter. + * + * @param string $unit + * + * @return bool + */ + public static function isModifiableUnit($unit); + + /** + * Returns true if the current class/instance is mutable. + * + * @return bool + */ + public static function isMutable(); + + /** + * Determines if the instance is in the past, ie. less (before) than now. + * + * @example + * ``` + * Carbon::now()->subHours(5)->isPast(); // true + * Carbon::now()->addHours(5)->isPast(); // false + * ``` + * + * @return bool + */ + public function isPast(); + + /** + * Compares the formatted values of the two dates. + * + * @example + * ``` + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false + * ``` + * + * @param string $format date formats to compare. + * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day. + * + * @return bool + */ + public function isSameAs($format, $date = null); + + /** + * Checks if the passed in date is in the same month as the instance´s month. + * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. + * @param bool $ofSameYear Check if it is the same month in the same year. + * + * @return bool + */ + public function isSameMonth($date = null, $ofSameYear = true); + + /** + * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). + * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day. + * @param bool $ofSameYear Check if it is the same month in the same year. + * + * @return bool + */ + public function isSameQuarter($date = null, $ofSameYear = true); + + /** + * Determines if the instance is in the current unit given. + * + * @example + * ``` + * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true + * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false + * ``` + * + * @param string $unit singular unit string + * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. + * + * @throws BadComparisonUnitException + * + * @return bool + */ + public function isSameUnit($unit, $date = null); + + /** + * Check if the instance is start of day / midnight. + * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false + * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true + * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false + * ``` + * + * @param bool $checkMicroseconds check time at microseconds precision + * + * @return bool + */ + public function isStartOfDay($checkMicroseconds = false); + + /** + * Returns true if the date was created using CarbonImmutable::startOfTime() + * + * @return bool + */ + public function isStartOfTime(): bool; + + /** + * Returns true if the strict mode is globally in use, false else. + * (It can be overridden in specific instances.) + * + * @return bool + */ + public static function isStrictModeEnabled(); + + /** + * Determines if the instance is today. + * + * @example + * ``` + * Carbon::today()->isToday(); // true + * Carbon::tomorrow()->isToday(); // false + * ``` + * + * @return bool + */ + public function isToday(); + + /** + * Determines if the instance is tomorrow. + * + * @example + * ``` + * Carbon::tomorrow()->isTomorrow(); // true + * Carbon::yesterday()->isTomorrow(); // false + * ``` + * + * @return bool + */ + public function isTomorrow(); + + /** + * Determines if the instance is a weekday. + * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekday(); // false + * Carbon::parse('2019-07-15')->isWeekday(); // true + * ``` + * + * @return bool + */ + public function isWeekday(); + + /** + * Determines if the instance is a weekend day. + * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekend(); // true + * Carbon::parse('2019-07-15')->isWeekend(); // false + * ``` + * + * @return bool + */ + public function isWeekend(); + + /** + * Determines if the instance is yesterday. + * + * @example + * ``` + * Carbon::yesterday()->isYesterday(); // true + * Carbon::tomorrow()->isYesterday(); // false + * ``` + * + * @return bool + */ + public function isYesterday(); + + /** + * Format in the current language using ISO replacement patterns. + * + * @param string $format + * @param string|null $originalFormat provide context if a chunk has been passed alone + * + * @return string + */ + public function isoFormat(string $format, ?string $originalFormat = null): string; + + /** + * Get/set the week number using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $week + * @param int|null $dayOfWeek + * @param int|null $dayOfYear + * + * @return int|static + */ + public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null); + + /** + * Set/get the week number of year using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int|static + */ + public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null); + + /** + * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday). + * + * @param int|null $value new value for weekday if using as setter. + * + * @return static|int + */ + public function isoWeekday($value = null); + + /** + * Get the number of weeks of the current week-year using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int + */ + public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null); + + /** + * Prepare the object for JSON serialization. + * + * @return array|string + */ + #[ReturnTypeWillChange] + public function jsonSerialize(); + + /** + * Modify to the last occurrence of a given day of the week + * in the current month. If no dayOfWeek is provided, modify to the + * last day of the current month. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek + * + * @return static + */ + public function lastOfMonth($dayOfWeek = null); + + /** + * Modify to the last occurrence of a given day of the week + * in the current quarter. If no dayOfWeek is provided, modify to the + * last day of the current quarter. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function lastOfQuarter($dayOfWeek = null); + + /** + * Modify to the last occurrence of a given day of the week + * in the current year. If no dayOfWeek is provided, modify to the + * last day of the current year. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function lastOfYear($dayOfWeek = null); + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function lessThan($date): bool; + + /** + * Determines if the instance is less (before) or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function lessThanOrEqualTo($date): bool; + + /** + * Get/set the locale for the current instance. + * + * @param string|null $locale + * @param string ...$fallbackLocales + * + * @return $this|string + */ + public function locale(?string $locale = null, ...$fallbackLocales); + + /** + * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). + * Support is considered enabled if the 3 words are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffOneDayWords($locale); + + /** + * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffSyntax($locale); + + /** + * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). + * Support is considered enabled if the 2 words are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffTwoDayWords($locale); + + /** + * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasPeriodSyntax($locale); + + /** + * Returns true if the given locale is internally supported and has short-units support. + * Support is considered enabled if either year, day or hour has a short variant translated. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasShortUnits($locale); + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThan() + * + * @return bool + */ + public function lt($date): bool; + + /** + * Determines if the instance is less (before) or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThanOrEqualTo() + * + * @return bool + */ + public function lte($date): bool; + + /** + * Register a custom macro. + * + * @example + * ``` + * $userSettings = [ + * 'locale' => 'pt', + * 'timezone' => 'America/Sao_Paulo', + * ]; + * Carbon::macro('userFormat', function () use ($userSettings) { + * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar(); + * }); + * echo Carbon::yesterday()->hours(11)->userFormat(); + * ``` + * + * @param string $name + * @param object|callable $macro + * + * @return void + */ + public static function macro($name, $macro); + + /** + * Make a Carbon instance from given variable if possible. + * + * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals + * and recurrences). Throw an exception for invalid format, but otherwise return null. + * + * @param mixed $var + * + * @throws InvalidFormatException + * + * @return static|null + */ + public static function make($var); + + /** + * Get the maximum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return static + */ + public function max($date = null); + + /** + * Create a Carbon instance for the greatest supported date. + * + * @return static + */ + public static function maxValue(); + + /** + * Get the maximum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see max() + * + * @return static + */ + public function maximum($date = null); + + /** + * Return the meridiem of the current time in the current locale. + * + * @param bool $isLower if true, returns lowercase variant if available in the current locale. + * + * @return string + */ + public function meridiem(bool $isLower = false): string; + + /** + * Modify to midday, default to self::$midDayAt + * + * @return static + */ + public function midDay(); + + /** + * Get the minimum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return static + */ + public function min($date = null); + + /** + * Create a Carbon instance for the lowest supported date. + * + * @return static + */ + public static function minValue(); + + /** + * Get the minimum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see min() + * + * @return static + */ + public function minimum($date = null); + + /** + * Mix another object into the class. + * + * @example + * ``` + * Carbon::mixin(new class { + * public function addMoon() { + * return function () { + * return $this->addDays(30); + * }; + * } + * public function subMoon() { + * return function () { + * return $this->subDays(30); + * }; + * } + * }); + * $fullMoon = Carbon::create('2018-12-22'); + * $nextFullMoon = $fullMoon->addMoon(); + * $blackMoon = Carbon::create('2019-01-06'); + * $previousBlackMoon = $blackMoon->subMoon(); + * echo "$nextFullMoon\n"; + * echo "$previousBlackMoon\n"; + * ``` + * + * @param object|string $mixin + * + * @throws ReflectionException + * + * @return void + */ + public static function mixin($mixin); + + /** + * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else. + * + * @see https://php.net/manual/en/datetime.modify.php + * + * @return static|false + */ + #[ReturnTypeWillChange] + public function modify($modify); + + /** + * Determines if the instance is not equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($date): bool; + + /** + * Modify to the next occurrence of a given modifier such as a day of + * the week. If no modifier is provided, modify to the next occurrence + * of the current day of the week. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param string|int|null $modifier + * + * @return static + */ + public function next($modifier = null); + + /** + * Go forward to the next weekday. + * + * @return static + */ + public function nextWeekday(); + + /** + * Go forward to the next weekend day. + * + * @return static + */ + public function nextWeekendDay(); + + /** + * Determines if the instance is not equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function notEqualTo($date): bool; + + /** + * Get a Carbon instance for the current date and time. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function now($tz = null); + + /** + * Returns a present instance in the same timezone. + * + * @return static + */ + public function nowWithSameTz(); + + /** + * Modify to the given occurrence of a given day of the week + * in the current month. If the calculated occurrence is outside the scope + * of the current month, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfMonth($nth, $dayOfWeek); + + /** + * Modify to the given occurrence of a given day of the week + * in the current quarter. If the calculated occurrence is outside the scope + * of the current quarter, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfQuarter($nth, $dayOfWeek); + + /** + * Modify to the given occurrence of a given day of the week + * in the current year. If the calculated occurrence is outside the scope + * of the current year, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfYear($nth, $dayOfWeek); + + /** + * Return a property with its ordinal. + * + * @param string $key + * @param string|null $period + * + * @return string + */ + public function ordinal(string $key, ?string $period = null): string; + + /** + * Create a carbon instance from a string. + * + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * + * @param string|DateTimeInterface|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function parse($time = null, $tz = null); + + /** + * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). + * + * @param string $time date/time string in the given language (may also contain English). + * @param string|null $locale if locale is null or not specified, current global locale will be + * used instead. + * @param DateTimeZone|string|null $tz optional timezone for the new instance. + * + * @throws InvalidFormatException + * + * @return static + */ + public static function parseFromLocale($time, $locale = null, $tz = null); + + /** + * Returns standardized plural of a given singular/plural unit name (in English). + * + * @param string $unit + * + * @return string + */ + public static function pluralUnit(string $unit): string; + + /** + * Modify to the previous occurrence of a given modifier such as a day of + * the week. If no dayOfWeek is provided, modify to the previous occurrence + * of the current day of the week. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param string|int|null $modifier + * + * @return static + */ + public function previous($modifier = null); + + /** + * Go backward to the previous weekday. + * + * @return static + */ + public function previousWeekday(); + + /** + * Go backward to the previous weekend day. + * + * @return static + */ + public function previousWeekendDay(); + + /** + * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). + * + * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date + * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit + * @param string|null $unit if specified, $interval must be an integer + * + * @return CarbonPeriod + */ + public function range($end = null, $interval = null, $unit = null); + + /** + * Call native PHP DateTime/DateTimeImmutable add() method. + * + * @param DateInterval $interval + * + * @return static + */ + public function rawAdd(DateInterval $interval); + + /** + * Create a Carbon instance from a specific format. + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function rawCreateFromFormat($format, $time, $tz = null); + + /** + * @see https://php.net/manual/en/datetime.format.php + * + * @param string $format + * + * @return string + */ + public function rawFormat($format); + + /** + * Create a carbon instance from a string. + * + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * + * @param string|DateTimeInterface|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function rawParse($time = null, $tz = null); + + /** + * Call native PHP DateTime/DateTimeImmutable sub() method. + * + * @param DateInterval $interval + * + * @return static + */ + public function rawSub(DateInterval $interval); + + /** + * Remove all macros and generic macros. + */ + public static function resetMacros(); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Reset the month overflow behavior. + * + * @return void + */ + public static function resetMonthsOverflow(); + + /** + * Reset the format used to the default when type juggling a Carbon instance to a string + * + * @return void + */ + public static function resetToStringFormat(); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Reset the month overflow behavior. + * + * @return void + */ + public static function resetYearsOverflow(); + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * @param string $function + * + * @return CarbonInterface + */ + public function round($precision = 1, $function = 'round'); + + /** + * Round the current instance at the given unit with given precision if specified and the given function. + * + * @param string $unit + * @param float|int $precision + * @param string $function + * + * @return CarbonInterface + */ + public function roundUnit($unit, $precision = 1, $function = 'round'); + + /** + * Round the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function roundWeek($weekStartsAt = null); + + /** + * The number of seconds since midnight. + * + * @return int + */ + public function secondsSinceMidnight(); + + /** + * The number of seconds until 23:59:59. + * + * @return int + */ + public function secondsUntilEndOfDay(); + + /** + * Return a serialized string of the instance. + * + * @return string + */ + public function serialize(); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather transform Carbon object before the serialization. + * + * JSON serialize all Carbon instances using the given callback. + * + * @param callable $callback + * + * @return void + */ + public static function serializeUsing($callback); + + /** + * Set a part of the Carbon object + * + * @param string|array $name + * @param string|int|DateTimeZone $value + * + * @throws ImmutableException|UnknownSetterException + * + * @return $this + */ + public function set($name, $value = null); + + /** + * Set the date with gregorian year, month and day numbers. + * + * @see https://php.net/manual/en/datetime.setdate.php + * + * @param int $year + * @param int $month + * @param int $day + * + * @return static + */ + #[ReturnTypeWillChange] + public function setDate($year, $month, $day); + + /** + * Set the year, month, and date for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date now if null + * + * @return static + */ + public function setDateFrom($date = null); + + /** + * Set the date and time all together. + * + * @param int $year + * @param int $month + * @param int $day + * @param int $hour + * @param int $minute + * @param int $second + * @param int $microseconds + * + * @return static + */ + public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0); + + /** + * Set the date and time for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date + * + * @return static + */ + public function setDateTimeFrom($date = null); + + /** + * Set the fallback locale. + * + * @see https://symfony.com/doc/current/components/translation.html#fallback-locales + * + * @param string $locale + */ + public static function setFallbackLocale($locale); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOptions + */ + public static function setHumanDiffOptions($humanDiffOptions); + + /** + * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates. + * + * @see https://php.net/manual/en/datetime.setisodate.php + * + * @param int $year + * @param int $week + * @param int $day + * + * @return static + */ + #[ReturnTypeWillChange] + public function setISODate($year, $week, $day = 1); + + /** + * Set the translator for the current instance. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * + * @return $this + */ + public function setLocalTranslator(TranslatorInterface $translator); + + /** + * Set the current translator locale and indicate if the source locale file exists. + * Pass 'auto' as locale to use closest language from the current LC_TIME locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function setLocale($locale); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider mid-day is always 12pm, then if you need to test if it's an other + * hour, test it explicitly: + * $date->format('G') == 13 + * or to set explicitly to a given hour: + * $date->setTime(13, 0, 0, 0) + * + * Set midday/noon hour + * + * @param int $hour midday hour + * + * @return void + */ + public static function setMidDayAt($hour); + + /** + * Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * + * Note the timezone parameter was left out of the examples above and + * has no affect as the mock value will be returned regardless of its value. + * + * Only the moment is mocked with setTestNow(), the timezone will still be the one passed + * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). + * + * To clear the test instance call this method using the default + * parameter of null. + * + * /!\ Use this method for unit tests only. + * + * @param Closure|static|string|false|null $testNow real or mock Carbon instance + */ + public static function setTestNow($testNow = null); + + /** + * Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * + * It will also align default timezone (e.g. call date_default_timezone_set()) with + * the second argument or if null, with the timezone of the given date object. + * + * To clear the test instance call this method using the default + * parameter of null. + * + * /!\ Use this method for unit tests only. + * + * @param Closure|static|string|false|null $testNow real or mock Carbon instance + */ + public static function setTestNowAndTimezone($testNow = null, $tz = null); + + /** + * Resets the current time of the DateTime object to a different time. + * + * @see https://php.net/manual/en/datetime.settime.php + * + * @param int $hour + * @param int $minute + * @param int $second + * @param int $microseconds + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTime($hour, $minute, $second = 0, $microseconds = 0); + + /** + * Set the hour, minute, second and microseconds for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date now if null + * + * @return static + */ + public function setTimeFrom($date = null); + + /** + * Set the time by time string. + * + * @param string $time + * + * @return static + */ + public function setTimeFromTimeString($time); + + /** + * Set the instance's timestamp. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $unixTimestamp + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTimestamp($unixTimestamp); + + /** + * Set the instance's timezone from a string or object. + * + * @param DateTimeZone|string $value + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTimezone($value); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and + * use other method or custom format passed to format() method if you need to dump an other string + * format. + * + * Set the default format used when type juggling a Carbon instance to a string + * + * @param string|Closure|null $format + * + * @return void + */ + public static function setToStringFormat($format); + + /** + * Set the default translator instance to use. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * + * @return void + */ + public static function setTranslator(TranslatorInterface $translator); + + /** + * Set specified unit to new given value. + * + * @param string $unit year, month, day, hour, minute, second or microsecond + * @param int $value new value for given unit + * + * @return static + */ + public function setUnit($unit, $value = null); + + /** + * Set any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value new value for the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function setUnitNoOverflow($valueUnit, $value, $overflowUnit); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use UTF-8 language packages on every machine. + * + * Set if UTF8 will be used for localized date/time. + * + * @param bool $utf8 + */ + public static function setUtf8($utf8); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek + * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the + * start of week according to current locale selected and implicitly the end of week. + * + * Set the last day of week + * + * @param int|string $day week end day (or 'auto' to get the day before the first day of week + * from Carbon::getLocale() culture). + * + * @return void + */ + public static function setWeekEndsAt($day); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the + * 'first_day_of_week' locale setting to change the start of week according to current locale + * selected and implicitly the end of week. + * + * Set the first day of week + * + * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture). + * + * @return void + */ + public static function setWeekStartsAt($day); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider week-end is always saturday and sunday, and if you have some custom + * week-end days to handle, give to those days an other name and create a macro for them: + * + * ``` + * Carbon::macro('isDayOff', function ($date) { + * return $date->isSunday() || $date->isMonday(); + * }); + * Carbon::macro('isNotDayOff', function ($date) { + * return !$date->isDayOff(); + * }); + * if ($someDate->isDayOff()) ... + * if ($someDate->isNotDayOff()) ... + * // Add 5 not-off days + * $count = 5; + * while ($someDate->isDayOff() || ($count-- > 0)) { + * $someDate->addDay(); + * } + * ``` + * + * Set weekend days + * + * @param array $days + * + * @return void + */ + public static function setWeekendDays($days); + + /** + * Set specific options. + * - strictMode: true|false|null + * - monthOverflow: true|false|null + * - yearOverflow: true|false|null + * - humanDiffOptions: int|null + * - toStringFormat: string|Closure|null + * - toJsonFormat: string|Closure|null + * - locale: string|null + * - timezone: \DateTimeZone|string|int|null + * - macros: array|null + * - genericMacros: array|null + * + * @param array $settings + * + * @return $this|static + */ + public function settings(array $settings); + + /** + * Set the instance's timezone from a string or object and add/subtract the offset difference. + * + * @param DateTimeZone|string $value + * + * @return static + */ + public function shiftTimezone($value); + + /** + * Get the month overflow global behavior (can be overridden in specific instances). + * + * @return bool + */ + public static function shouldOverflowMonths(); + + /** + * Get the month overflow global behavior (can be overridden in specific instances). + * + * @return bool + */ + public static function shouldOverflowYears(); + + /** + * @alias diffForHumans + * + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + */ + public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Returns standardized singular of a given singular/plural unit name (in English). + * + * @param string $unit + * + * @return string + */ + public static function singularUnit(string $unit): string; + + /** + * Modify to start of current given unit. + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOf('month') + * ->endOf('week', Carbon::FRIDAY); + * ``` + * + * @param string $unit + * @param array $params + * + * @return static + */ + public function startOf($unit, ...$params); + + /** + * Resets the date to the first day of the century and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury(); + * ``` + * + * @return static + */ + public function startOfCentury(); + + /** + * Resets the time to 00:00:00 start of day + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay(); + * ``` + * + * @return static + */ + public function startOfDay(); + + /** + * Resets the date to the first day of the decade and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade(); + * ``` + * + * @return static + */ + public function startOfDecade(); + + /** + * Modify to start of current hour, minutes and seconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour(); + * ``` + * + * @return static + */ + public function startOfHour(); + + /** + * Resets the date to the first day of the millennium and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium(); + * ``` + * + * @return static + */ + public function startOfMillennium(); + + /** + * Modify to start of current minute, seconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute(); + * ``` + * + * @return static + */ + public function startOfMinute(); + + /** + * Resets the date to the first day of the month and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth(); + * ``` + * + * @return static + */ + public function startOfMonth(); + + /** + * Resets the date to the first day of the quarter and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter(); + * ``` + * + * @return static + */ + public function startOfQuarter(); + + /** + * Modify to start of current second, microseconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOfSecond() + * ->format('H:i:s.u'); + * ``` + * + * @return static + */ + public function startOfSecond(); + + /** + * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n"; + * ``` + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return static + */ + public function startOfWeek($weekStartsAt = null); + + /** + * Resets the date to the first day of the year and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear(); + * ``` + * + * @return static + */ + public function startOfYear(); + + /** + * Subtract given units or interval to the current instance. + * + * @example $date->sub('hour', 3) + * @example $date->sub(15, 'days') + * @example $date->sub(CarbonInterval::days(4)) + * + * @param string|DateInterval|Closure|CarbonConverterInterface $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + #[ReturnTypeWillChange] + public function sub($unit, $value = 1, $overflow = null); + + public function subRealUnit($unit, $value = 1); + + /** + * Subtract given units to the current instance. + * + * @param string $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function subUnit($unit, $value = 1, $overflow = null); + + /** + * Subtract any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value amount to subtract to the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function subUnitNoOverflow($valueUnit, $value, $overflowUnit); + + /** + * Subtract given units or interval to the current instance. + * + * @see sub() + * + * @param string|DateInterval $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function subtract($unit, $value = 1, $overflow = null); + + /** + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @return string + */ + public function timespan($other = null, $timezone = null); + + /** + * Set the instance's timestamp. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $unixTimestamp + * + * @return static + */ + public function timestamp($unixTimestamp); + + /** + * @alias setTimezone + * + * @param DateTimeZone|string $value + * + * @return static + */ + public function timezone($value); + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given (or now if null given) to current instance. + * + * When comparing a value in the past to default now: + * 1 hour from now + * 5 months from now + * + * When comparing a value in the future to default now: + * 1 hour ago + * 5 months ago + * + * When comparing a value in the past to another value: + * 1 hour after + * 5 months after + * + * When comparing a value in the future to another value: + * 1 hour before + * 5 months before + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Get default array representation. + * + * @example + * ``` + * var_dump(Carbon::now()->toArray()); + * ``` + * + * @return array + */ + public function toArray(); + + /** + * Format the instance as ATOM + * + * @example + * ``` + * echo Carbon::now()->toAtomString(); + * ``` + * + * @return string + */ + public function toAtomString(); + + /** + * Format the instance as COOKIE + * + * @example + * ``` + * echo Carbon::now()->toCookieString(); + * ``` + * + * @return string + */ + public function toCookieString(); + + /** + * @alias toDateTime + * + * Return native DateTime PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDate()); + * ``` + * + * @return DateTime + */ + public function toDate(); + + /** + * Format the instance as date + * + * @example + * ``` + * echo Carbon::now()->toDateString(); + * ``` + * + * @return string + */ + public function toDateString(); + + /** + * Return native DateTime PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDateTime()); + * ``` + * + * @return DateTime + */ + public function toDateTime(); + + /** + * Return native toDateTimeImmutable PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDateTimeImmutable()); + * ``` + * + * @return DateTimeImmutable + */ + public function toDateTimeImmutable(); + + /** + * Format the instance as date and time T-separated with no timezone + * + * @example + * ``` + * echo Carbon::now()->toDateTimeLocalString(); + * echo "\n"; + * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toDateTimeLocalString($unitPrecision = 'second'); + + /** + * Format the instance as date and time + * + * @example + * ``` + * echo Carbon::now()->toDateTimeString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toDateTimeString($unitPrecision = 'second'); + + /** + * Format the instance with day, date and time + * + * @example + * ``` + * echo Carbon::now()->toDayDateTimeString(); + * ``` + * + * @return string + */ + public function toDayDateTimeString(); + + /** + * Format the instance as a readable date + * + * @example + * ``` + * echo Carbon::now()->toFormattedDateString(); + * ``` + * + * @return string + */ + public function toFormattedDateString(); + + /** + * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept: + * 1977-04-22T01:00:00-05:00). + * + * @example + * ``` + * echo Carbon::now('America/Toronto')->toISOString() . "\n"; + * echo Carbon::now('America/Toronto')->toISOString(true) . "\n"; + * ``` + * + * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC. + * + * @return null|string + */ + public function toISOString($keepOffset = false); + + /** + * Return a immutable copy of the instance. + * + * @return CarbonImmutable + */ + public function toImmutable(); + + /** + * Format the instance as ISO8601 + * + * @example + * ``` + * echo Carbon::now()->toIso8601String(); + * ``` + * + * @return string + */ + public function toIso8601String(); + + /** + * Convert the instance to UTC and return as Zulu ISO8601 + * + * @example + * ``` + * echo Carbon::now()->toIso8601ZuluString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toIso8601ZuluString($unitPrecision = 'second'); + + /** + * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone. + * + * @example + * ``` + * echo Carbon::now('America/Toronto')->toJSON(); + * ``` + * + * @return null|string + */ + public function toJSON(); + + /** + * Return a mutable copy of the instance. + * + * @return Carbon + */ + public function toMutable(); + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given to now + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single part) + * @param int $options human diff options + * + * @return string + */ + public function toNow($syntax = null, $short = false, $parts = 1, $options = null); + + /** + * Get default object representation. + * + * @example + * ``` + * var_dump(Carbon::now()->toObject()); + * ``` + * + * @return object + */ + public function toObject(); + + /** + * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). + * + * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int + * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit + * @param string|null $unit if specified, $interval must be an integer + * + * @return CarbonPeriod + */ + public function toPeriod($end = null, $interval = null, $unit = null); + + /** + * Format the instance as RFC1036 + * + * @example + * ``` + * echo Carbon::now()->toRfc1036String(); + * ``` + * + * @return string + */ + public function toRfc1036String(); + + /** + * Format the instance as RFC1123 + * + * @example + * ``` + * echo Carbon::now()->toRfc1123String(); + * ``` + * + * @return string + */ + public function toRfc1123String(); + + /** + * Format the instance as RFC2822 + * + * @example + * ``` + * echo Carbon::now()->toRfc2822String(); + * ``` + * + * @return string + */ + public function toRfc2822String(); + + /** + * Format the instance as RFC3339 + * + * @param bool $extended + * + * @example + * ``` + * echo Carbon::now()->toRfc3339String() . "\n"; + * echo Carbon::now()->toRfc3339String(true) . "\n"; + * ``` + * + * @return string + */ + public function toRfc3339String($extended = false); + + /** + * Format the instance as RFC7231 + * + * @example + * ``` + * echo Carbon::now()->toRfc7231String(); + * ``` + * + * @return string + */ + public function toRfc7231String(); + + /** + * Format the instance as RFC822 + * + * @example + * ``` + * echo Carbon::now()->toRfc822String(); + * ``` + * + * @return string + */ + public function toRfc822String(); + + /** + * Format the instance as RFC850 + * + * @example + * ``` + * echo Carbon::now()->toRfc850String(); + * ``` + * + * @return string + */ + public function toRfc850String(); + + /** + * Format the instance as RSS + * + * @example + * ``` + * echo Carbon::now()->toRssString(); + * ``` + * + * @return string + */ + public function toRssString(); + + /** + * Returns english human readable complete date string. + * + * @example + * ``` + * echo Carbon::now()->toString(); + * ``` + * + * @return string + */ + public function toString(); + + /** + * Format the instance as time + * + * @example + * ``` + * echo Carbon::now()->toTimeString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toTimeString($unitPrecision = 'second'); + + /** + * Format the instance as W3C + * + * @example + * ``` + * echo Carbon::now()->toW3cString(); + * ``` + * + * @return string + */ + public function toW3cString(); + + /** + * Create a Carbon instance for today. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function today($tz = null); + + /** + * Create a Carbon instance for tomorrow. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function tomorrow($tz = null); + + /** + * Translate using translation string or callback available. + * + * @param string $key + * @param array $parameters + * @param string|int|float|null $number + * @param \Symfony\Component\Translation\TranslatorInterface|null $translator + * @param bool $altNumbers + * + * @return string + */ + public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string; + + /** + * Returns the alternative number for a given integer if available in the current locale. + * + * @param int $number + * + * @return string + */ + public function translateNumber(int $number): string; + + /** + * Translate a time string from a locale to an other. + * + * @param string $timeString date/time/duration string to translate (may also contain English) + * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default) + * @param string|null $to output locale of the result returned (`"en"` by default) + * @param int $mode specify what to translate with options: + * - self::TRANSLATE_ALL (default) + * - CarbonInterface::TRANSLATE_MONTHS + * - CarbonInterface::TRANSLATE_DAYS + * - CarbonInterface::TRANSLATE_UNITS + * - CarbonInterface::TRANSLATE_MERIDIEM + * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS + * + * @return string + */ + public static function translateTimeString($timeString, $from = null, $to = null, $mode = self::TRANSLATE_ALL); + + /** + * Translate a time string from the current locale (`$date->locale()`) to an other. + * + * @param string $timeString time string to translate + * @param string|null $to output locale of the result returned ("en" by default) + * + * @return string + */ + public function translateTimeStringTo($timeString, $to = null); + + /** + * Translate using translation string or callback available. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * @param string $key + * @param array $parameters + * @param null $number + * + * @return string + */ + public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string; + + /** + * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php) + * but translate words whenever possible (months, day names, etc.) using the current locale. + * + * @param string $format + * + * @return string + */ + public function translatedFormat(string $format): string; + + /** + * Set the timezone or returns the timezone name if no arguments passed. + * + * @param DateTimeZone|string $value + * + * @return static|string + */ + public function tz($value = null); + + /** + * @alias getTimestamp + * + * Returns the UNIX timestamp for the current date. + * + * @return int + */ + public function unix(); + + /** + * @alias to + * + * Get the difference in a human readable format in the current locale from an other + * instance given (or now if null given) to current instance. + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Indicates if months should be calculated with overflow. + * + * @param bool $monthsOverflow + * + * @return void + */ + public static function useMonthsOverflow($monthsOverflow = true); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * Enable the strict mode (or disable with passing false). + * + * @param bool $strictModeEnabled + */ + public static function useStrictMode($strictModeEnabled = true); + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Indicates if years should be calculated with overflow. + * + * @param bool $yearsOverflow + * + * @return void + */ + public static function useYearsOverflow($yearsOverflow = true); + + /** + * Set the instance's timezone to UTC. + * + * @return static + */ + public function utc(); + + /** + * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed. + * + * @param int|null $minuteOffset + * + * @return int|static + */ + public function utcOffset(?int $minuteOffset = null); + + /** + * Returns the milliseconds timestamps used amongst other by Date javascript objects. + * + * @return float + */ + public function valueOf(); + + /** + * Get/set the week number using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $week + * @param int|null $dayOfWeek + * @param int|null $dayOfYear + * + * @return int|static + */ + public function week($week = null, $dayOfWeek = null, $dayOfYear = null); + + /** + * Set/get the week number of year using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int|static + */ + public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null); + + /** + * Get/set the weekday from 0 (Sunday) to 6 (Saturday). + * + * @param int|null $value new value for weekday if using as setter. + * + * @return static|int + */ + public function weekday($value = null); + + /** + * Get the number of weeks of the current week-year using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int + */ + public function weeksInYear($dayOfWeek = null, $dayOfYear = null); + + /** + * Temporarily sets a static date to be used within the callback. + * Using setTestNow to set the date, executing the callback, then + * clearing the test instance. + * + * /!\ Use this method for unit tests only. + * + * @param Closure|static|string|false|null $testNow real or mock Carbon instance + * @param Closure|null $callback + * + * @return mixed + */ + public static function withTestNow($testNow = null, $callback = null); + + /** + * Create a Carbon instance for yesterday. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function yesterday($tz = null); + + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php new file mode 100644 index 00000000000..592eaa7a419 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonInterval.php @@ -0,0 +1,2779 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Exceptions\BadFluentConstructorException; +use Carbon\Exceptions\BadFluentSetterException; +use Carbon\Exceptions\InvalidCastException; +use Carbon\Exceptions\InvalidIntervalException; +use Carbon\Exceptions\ParseErrorException; +use Carbon\Exceptions\UnitNotConfiguredException; +use Carbon\Exceptions\UnknownGetterException; +use Carbon\Exceptions\UnknownSetterException; +use Carbon\Exceptions\UnknownUnitException; +use Carbon\Traits\IntervalRounding; +use Carbon\Traits\IntervalStep; +use Carbon\Traits\Mixin; +use Carbon\Traits\Options; +use Closure; +use DateInterval; +use DateTimeInterface; +use DateTimeZone; +use Exception; +use ReflectionException; +use ReturnTypeWillChange; +use Throwable; + +/** + * A simple API extension for DateInterval. + * The implementation provides helpers to handle weeks but only days are saved. + * Weeks are calculated based on the total days of the current instance. + * + * @property int $years Total years of the current interval. + * @property int $months Total months of the current interval. + * @property int $weeks Total weeks of the current interval calculated from the days. + * @property int $dayz Total days of the current interval (weeks * 7 + days). + * @property int $hours Total hours of the current interval. + * @property int $minutes Total minutes of the current interval. + * @property int $seconds Total seconds of the current interval. + * @property int $microseconds Total microseconds of the current interval. + * @property int $milliseconds Total microseconds of the current interval. + * @property int $microExcludeMilli Remaining microseconds without the milliseconds. + * @property int $dayzExcludeWeeks Total days remaining in the final week of the current instance (days % 7). + * @property int $daysExcludeWeeks alias of dayzExcludeWeeks + * @property-read float $totalYears Number of years equivalent to the interval. + * @property-read float $totalMonths Number of months equivalent to the interval. + * @property-read float $totalWeeks Number of weeks equivalent to the interval. + * @property-read float $totalDays Number of days equivalent to the interval. + * @property-read float $totalDayz Alias for totalDays. + * @property-read float $totalHours Number of hours equivalent to the interval. + * @property-read float $totalMinutes Number of minutes equivalent to the interval. + * @property-read float $totalSeconds Number of seconds equivalent to the interval. + * @property-read float $totalMilliseconds Number of milliseconds equivalent to the interval. + * @property-read float $totalMicroseconds Number of microseconds equivalent to the interval. + * @property-read string $locale locale of the current instance + * + * @method static CarbonInterval years($years = 1) Create instance specifying a number of years or modify the number of years if called on an instance. + * @method static CarbonInterval year($years = 1) Alias for years() + * @method static CarbonInterval months($months = 1) Create instance specifying a number of months or modify the number of months if called on an instance. + * @method static CarbonInterval month($months = 1) Alias for months() + * @method static CarbonInterval weeks($weeks = 1) Create instance specifying a number of weeks or modify the number of weeks if called on an instance. + * @method static CarbonInterval week($weeks = 1) Alias for weeks() + * @method static CarbonInterval days($days = 1) Create instance specifying a number of days or modify the number of days if called on an instance. + * @method static CarbonInterval dayz($days = 1) Alias for days() + * @method static CarbonInterval daysExcludeWeeks($days = 1) Create instance specifying a number of days or modify the number of days (keeping the current number of weeks) if called on an instance. + * @method static CarbonInterval dayzExcludeWeeks($days = 1) Alias for daysExcludeWeeks() + * @method static CarbonInterval day($days = 1) Alias for days() + * @method static CarbonInterval hours($hours = 1) Create instance specifying a number of hours or modify the number of hours if called on an instance. + * @method static CarbonInterval hour($hours = 1) Alias for hours() + * @method static CarbonInterval minutes($minutes = 1) Create instance specifying a number of minutes or modify the number of minutes if called on an instance. + * @method static CarbonInterval minute($minutes = 1) Alias for minutes() + * @method static CarbonInterval seconds($seconds = 1) Create instance specifying a number of seconds or modify the number of seconds if called on an instance. + * @method static CarbonInterval second($seconds = 1) Alias for seconds() + * @method static CarbonInterval milliseconds($milliseconds = 1) Create instance specifying a number of milliseconds or modify the number of milliseconds if called on an instance. + * @method static CarbonInterval millisecond($milliseconds = 1) Alias for milliseconds() + * @method static CarbonInterval microseconds($microseconds = 1) Create instance specifying a number of microseconds or modify the number of microseconds if called on an instance. + * @method static CarbonInterval microsecond($microseconds = 1) Alias for microseconds() + * @method $this addYears(int $years) Add given number of years to the current interval + * @method $this subYears(int $years) Subtract given number of years to the current interval + * @method $this addMonths(int $months) Add given number of months to the current interval + * @method $this subMonths(int $months) Subtract given number of months to the current interval + * @method $this addWeeks(int|float $weeks) Add given number of weeks to the current interval + * @method $this subWeeks(int|float $weeks) Subtract given number of weeks to the current interval + * @method $this addDays(int|float $days) Add given number of days to the current interval + * @method $this subDays(int|float $days) Subtract given number of days to the current interval + * @method $this addHours(int|float $hours) Add given number of hours to the current interval + * @method $this subHours(int|float $hours) Subtract given number of hours to the current interval + * @method $this addMinutes(int|float $minutes) Add given number of minutes to the current interval + * @method $this subMinutes(int|float $minutes) Subtract given number of minutes to the current interval + * @method $this addSeconds(int|float $seconds) Add given number of seconds to the current interval + * @method $this subSeconds(int|float $seconds) Subtract given number of seconds to the current interval + * @method $this addMilliseconds(int|float $milliseconds) Add given number of milliseconds to the current interval + * @method $this subMilliseconds(int|float $milliseconds) Subtract given number of milliseconds to the current interval + * @method $this addMicroseconds(int|float $microseconds) Add given number of microseconds to the current interval + * @method $this subMicroseconds(int|float $microseconds) Subtract given number of microseconds to the current interval + * @method $this roundYear(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this roundYears(int|float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this floorYear(int|float $precision = 1) Truncate the current instance year with given precision. + * @method $this floorYears(int|float $precision = 1) Truncate the current instance year with given precision. + * @method $this ceilYear(int|float $precision = 1) Ceil the current instance year with given precision. + * @method $this ceilYears(int|float $precision = 1) Ceil the current instance year with given precision. + * @method $this roundMonth(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this roundMonths(int|float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this floorMonth(int|float $precision = 1) Truncate the current instance month with given precision. + * @method $this floorMonths(int|float $precision = 1) Truncate the current instance month with given precision. + * @method $this ceilMonth(int|float $precision = 1) Ceil the current instance month with given precision. + * @method $this ceilMonths(int|float $precision = 1) Ceil the current instance month with given precision. + * @method $this roundWeek(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundWeeks(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorWeek(int|float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorWeeks(int|float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilWeek(int|float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilWeeks(int|float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundDay(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundDays(int|float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorDay(int|float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorDays(int|float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilDay(int|float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilDays(int|float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundHour(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this roundHours(int|float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this floorHour(int|float $precision = 1) Truncate the current instance hour with given precision. + * @method $this floorHours(int|float $precision = 1) Truncate the current instance hour with given precision. + * @method $this ceilHour(int|float $precision = 1) Ceil the current instance hour with given precision. + * @method $this ceilHours(int|float $precision = 1) Ceil the current instance hour with given precision. + * @method $this roundMinute(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this roundMinutes(int|float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this floorMinute(int|float $precision = 1) Truncate the current instance minute with given precision. + * @method $this floorMinutes(int|float $precision = 1) Truncate the current instance minute with given precision. + * @method $this ceilMinute(int|float $precision = 1) Ceil the current instance minute with given precision. + * @method $this ceilMinutes(int|float $precision = 1) Ceil the current instance minute with given precision. + * @method $this roundSecond(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this roundSeconds(int|float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this floorSecond(int|float $precision = 1) Truncate the current instance second with given precision. + * @method $this floorSeconds(int|float $precision = 1) Truncate the current instance second with given precision. + * @method $this ceilSecond(int|float $precision = 1) Ceil the current instance second with given precision. + * @method $this ceilSeconds(int|float $precision = 1) Ceil the current instance second with given precision. + * @method $this roundMillennium(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this roundMillennia(int|float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this floorMillennium(int|float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this floorMillennia(int|float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this ceilMillennium(int|float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this ceilMillennia(int|float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this roundCentury(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this roundCenturies(int|float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this floorCentury(int|float $precision = 1) Truncate the current instance century with given precision. + * @method $this floorCenturies(int|float $precision = 1) Truncate the current instance century with given precision. + * @method $this ceilCentury(int|float $precision = 1) Ceil the current instance century with given precision. + * @method $this ceilCenturies(int|float $precision = 1) Ceil the current instance century with given precision. + * @method $this roundDecade(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this roundDecades(int|float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this floorDecade(int|float $precision = 1) Truncate the current instance decade with given precision. + * @method $this floorDecades(int|float $precision = 1) Truncate the current instance decade with given precision. + * @method $this ceilDecade(int|float $precision = 1) Ceil the current instance decade with given precision. + * @method $this ceilDecades(int|float $precision = 1) Ceil the current instance decade with given precision. + * @method $this roundQuarter(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this roundQuarters(int|float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this floorQuarter(int|float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this floorQuarters(int|float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this ceilQuarter(int|float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this ceilQuarters(int|float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this roundMillisecond(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this roundMilliseconds(int|float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this floorMillisecond(int|float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this floorMilliseconds(int|float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this ceilMillisecond(int|float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this ceilMilliseconds(int|float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this roundMicrosecond(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this roundMicroseconds(int|float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this floorMicrosecond(int|float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this floorMicroseconds(int|float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this ceilMicrosecond(int|float $precision = 1) Ceil the current instance microsecond with given precision. + * @method $this ceilMicroseconds(int|float $precision = 1) Ceil the current instance microsecond with given precision. + */ +class CarbonInterval extends DateInterval implements CarbonConverterInterface +{ + use IntervalRounding; + use IntervalStep; + use Mixin { + Mixin::mixin as baseMixin; + } + use Options; + + /** + * Interval spec period designators + */ + public const PERIOD_PREFIX = 'P'; + public const PERIOD_YEARS = 'Y'; + public const PERIOD_MONTHS = 'M'; + public const PERIOD_DAYS = 'D'; + public const PERIOD_TIME_PREFIX = 'T'; + public const PERIOD_HOURS = 'H'; + public const PERIOD_MINUTES = 'M'; + public const PERIOD_SECONDS = 'S'; + + /** + * A translator to ... er ... translate stuff + * + * @var \Symfony\Component\Translation\TranslatorInterface + */ + protected static $translator; + + /** + * @var array|null + */ + protected static $cascadeFactors; + + /** + * @var array + */ + protected static $formats = [ + 'y' => 'y', + 'Y' => 'y', + 'o' => 'y', + 'm' => 'm', + 'n' => 'm', + 'W' => 'weeks', + 'd' => 'd', + 'j' => 'd', + 'z' => 'd', + 'h' => 'h', + 'g' => 'h', + 'H' => 'h', + 'G' => 'h', + 'i' => 'i', + 's' => 's', + 'u' => 'micro', + 'v' => 'milli', + ]; + + /** + * @var array|null + */ + private static $flipCascadeFactors; + + /** + * The registered macros. + * + * @var array + */ + protected static $macros = []; + + /** + * Timezone handler for settings() method. + * + * @var mixed + */ + protected $tzName; + + /** + * Set the instance's timezone from a string or object. + * + * @param \DateTimeZone|string $tzName + * + * @return static + */ + public function setTimezone($tzName) + { + $this->tzName = $tzName; + + return $this; + } + + /** + * @internal + * + * Set the instance's timezone from a string or object and add/subtract the offset difference. + * + * @param \DateTimeZone|string $tzName + * + * @return static + */ + public function shiftTimezone($tzName) + { + $this->tzName = $tzName; + + return $this; + } + + /** + * Mapping of units and factors for cascading. + * + * Should only be modified by changing the factors or referenced constants. + * + * @return array + */ + public static function getCascadeFactors() + { + return static::$cascadeFactors ?: [ + 'milliseconds' => [Carbon::MICROSECONDS_PER_MILLISECOND, 'microseconds'], + 'seconds' => [Carbon::MILLISECONDS_PER_SECOND, 'milliseconds'], + 'minutes' => [Carbon::SECONDS_PER_MINUTE, 'seconds'], + 'hours' => [Carbon::MINUTES_PER_HOUR, 'minutes'], + 'dayz' => [Carbon::HOURS_PER_DAY, 'hours'], + 'weeks' => [Carbon::DAYS_PER_WEEK, 'dayz'], + 'months' => [Carbon::WEEKS_PER_MONTH, 'weeks'], + 'years' => [Carbon::MONTHS_PER_YEAR, 'months'], + ]; + } + + private static function standardizeUnit($unit) + { + $unit = rtrim($unit, 'sz').'s'; + + return $unit === 'days' ? 'dayz' : $unit; + } + + private static function getFlipCascadeFactors() + { + if (!self::$flipCascadeFactors) { + self::$flipCascadeFactors = []; + + foreach (static::getCascadeFactors() as $to => [$factor, $from]) { + self::$flipCascadeFactors[self::standardizeUnit($from)] = [self::standardizeUnit($to), $factor]; + } + } + + return self::$flipCascadeFactors; + } + + /** + * Set default cascading factors for ->cascade() method. + * + * @param array $cascadeFactors + */ + public static function setCascadeFactors(array $cascadeFactors) + { + self::$flipCascadeFactors = null; + static::$cascadeFactors = $cascadeFactors; + } + + /////////////////////////////////////////////////////////////////// + //////////////////////////// CONSTRUCTORS ///////////////////////// + /////////////////////////////////////////////////////////////////// + + /** + * Create a new CarbonInterval instance. + * + * @param Closure|DateInterval|string|int|null $years + * @param int|null $months + * @param int|null $weeks + * @param int|null $days + * @param int|null $hours + * @param int|null $minutes + * @param int|null $seconds + * @param int|null $microseconds + * + * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval. + */ + public function __construct($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null) + { + if ($years instanceof Closure) { + $this->step = $years; + $years = null; + } + + if ($years instanceof DateInterval) { + parent::__construct(static::getDateIntervalSpec($years)); + $this->f = $years->f; + self::copyNegativeUnits($years, $this); + + return; + } + + $spec = $years; + + if (!\is_string($spec) || (float) $years || preg_match('/^[\d.]/', $years)) { + $spec = static::PERIOD_PREFIX; + + $spec .= $years > 0 ? $years.static::PERIOD_YEARS : ''; + $spec .= $months > 0 ? $months.static::PERIOD_MONTHS : ''; + + $specDays = 0; + $specDays += $weeks > 0 ? $weeks * static::getDaysPerWeek() : 0; + $specDays += $days > 0 ? $days : 0; + + $spec .= $specDays > 0 ? $specDays.static::PERIOD_DAYS : ''; + + if ($hours > 0 || $minutes > 0 || $seconds > 0) { + $spec .= static::PERIOD_TIME_PREFIX; + $spec .= $hours > 0 ? $hours.static::PERIOD_HOURS : ''; + $spec .= $minutes > 0 ? $minutes.static::PERIOD_MINUTES : ''; + $spec .= $seconds > 0 ? $seconds.static::PERIOD_SECONDS : ''; + } + + if ($spec === static::PERIOD_PREFIX) { + // Allow the zero interval. + $spec .= '0'.static::PERIOD_YEARS; + } + } + + parent::__construct($spec); + + if ($microseconds !== null) { + $this->f = $microseconds / Carbon::MICROSECONDS_PER_SECOND; + } + } + + /** + * Returns the factor for a given source-to-target couple. + * + * @param string $source + * @param string $target + * + * @return int|null + */ + public static function getFactor($source, $target) + { + $source = self::standardizeUnit($source); + $target = self::standardizeUnit($target); + $factors = self::getFlipCascadeFactors(); + + if (isset($factors[$source])) { + [$to, $factor] = $factors[$source]; + + if ($to === $target) { + return $factor; + } + + return $factor * static::getFactor($to, $target); + } + + return null; + } + + /** + * Returns the factor for a given source-to-target couple if set, + * else try to find the appropriate constant as the factor, such as Carbon::DAYS_PER_WEEK. + * + * @param string $source + * @param string $target + * + * @return int|null + */ + public static function getFactorWithDefault($source, $target) + { + $factor = self::getFactor($source, $target); + + if ($factor) { + return $factor; + } + + static $defaults = [ + 'month' => ['year' => Carbon::MONTHS_PER_YEAR], + 'week' => ['month' => Carbon::WEEKS_PER_MONTH], + 'day' => ['week' => Carbon::DAYS_PER_WEEK], + 'hour' => ['day' => Carbon::HOURS_PER_DAY], + 'minute' => ['hour' => Carbon::MINUTES_PER_HOUR], + 'second' => ['minute' => Carbon::SECONDS_PER_MINUTE], + 'millisecond' => ['second' => Carbon::MILLISECONDS_PER_SECOND], + 'microsecond' => ['millisecond' => Carbon::MICROSECONDS_PER_MILLISECOND], + ]; + + return $defaults[$source][$target] ?? null; + } + + /** + * Returns current config for days per week. + * + * @return int + */ + public static function getDaysPerWeek() + { + return static::getFactor('dayz', 'weeks') ?: Carbon::DAYS_PER_WEEK; + } + + /** + * Returns current config for hours per day. + * + * @return int + */ + public static function getHoursPerDay() + { + return static::getFactor('hours', 'dayz') ?: Carbon::HOURS_PER_DAY; + } + + /** + * Returns current config for minutes per hour. + * + * @return int + */ + public static function getMinutesPerHour() + { + return static::getFactor('minutes', 'hours') ?: Carbon::MINUTES_PER_HOUR; + } + + /** + * Returns current config for seconds per minute. + * + * @return int + */ + public static function getSecondsPerMinute() + { + return static::getFactor('seconds', 'minutes') ?: Carbon::SECONDS_PER_MINUTE; + } + + /** + * Returns current config for microseconds per second. + * + * @return int + */ + public static function getMillisecondsPerSecond() + { + return static::getFactor('milliseconds', 'seconds') ?: Carbon::MILLISECONDS_PER_SECOND; + } + + /** + * Returns current config for microseconds per second. + * + * @return int + */ + public static function getMicrosecondsPerMillisecond() + { + return static::getFactor('microseconds', 'milliseconds') ?: Carbon::MICROSECONDS_PER_MILLISECOND; + } + + /** + * Create a new CarbonInterval instance from specific values. + * This is an alias for the constructor that allows better fluent + * syntax as it allows you to do CarbonInterval::create(1)->fn() rather than + * (new CarbonInterval(1))->fn(). + * + * @param int $years + * @param int $months + * @param int $weeks + * @param int $days + * @param int $hours + * @param int $minutes + * @param int $seconds + * @param int $microseconds + * + * @throws Exception when the interval_spec (passed as $years) cannot be parsed as an interval. + * + * @return static + */ + public static function create($years = 1, $months = null, $weeks = null, $days = null, $hours = null, $minutes = null, $seconds = null, $microseconds = null) + { + return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $microseconds); + } + + /** + * Parse a string into a new CarbonInterval object according to the specified format. + * + * @example + * ``` + * echo Carboninterval::createFromFormat('H:i', '1:30'); + * ``` + * + * @param string $format Format of the $interval input string + * @param string|null $interval Input string to convert into an interval + * + * @throws \Carbon\Exceptions\ParseErrorException when the $interval cannot be parsed as an interval. + * + * @return static + */ + public static function createFromFormat(string $format, ?string $interval) + { + $instance = new static(0); + $length = mb_strlen($format); + + if (preg_match('/s([,.])([uv])$/', $format, $match)) { + $interval = explode($match[1], $interval); + $index = \count($interval) - 1; + $interval[$index] = str_pad($interval[$index], $match[2] === 'v' ? 3 : 6, '0'); + $interval = implode($match[1], $interval); + } + + $interval = $interval ?? ''; + + for ($index = 0; $index < $length; $index++) { + $expected = mb_substr($format, $index, 1); + $nextCharacter = mb_substr($interval, 0, 1); + $unit = static::$formats[$expected] ?? null; + + if ($unit) { + if (!preg_match('/^-?\d+/', $interval, $match)) { + throw new ParseErrorException('number', $nextCharacter); + } + + $interval = mb_substr($interval, mb_strlen($match[0])); + $instance->$unit += (int) ($match[0]); + + continue; + } + + if ($nextCharacter !== $expected) { + throw new ParseErrorException( + "'$expected'", + $nextCharacter, + 'Allowed substitutes for interval formats are '.implode(', ', array_keys(static::$formats))."\n". + 'See https://php.net/manual/en/function.date.php for their meaning' + ); + } + + $interval = mb_substr($interval, 1); + } + + if ($interval !== '') { + throw new ParseErrorException( + 'end of string', + $interval + ); + } + + return $instance; + } + + /** + * Get a copy of the instance. + * + * @return static + */ + public function copy() + { + $date = new static(0); + $date->copyProperties($this); + $date->step = $this->step; + + return $date; + } + + /** + * Get a copy of the instance. + * + * @return static + */ + public function clone() + { + return $this->copy(); + } + + /** + * Provide static helpers to create instances. Allows CarbonInterval::years(3). + * + * Note: This is done using the magic method to allow static and instance methods to + * have the same names. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @return static|null + */ + public static function __callStatic($method, $parameters) + { + try { + $interval = new static(0); + $localStrictModeEnabled = $interval->localStrictModeEnabled; + $interval->localStrictModeEnabled = true; + + $result = static::hasMacro($method) + ? static::bindMacroContext(null, function () use (&$method, &$parameters, &$interval) { + return $interval->callMacro($method, $parameters); + }) + : $interval->$method(...$parameters); + + $interval->localStrictModeEnabled = $localStrictModeEnabled; + + return $result; + } catch (BadFluentSetterException $exception) { + if (Carbon::isStrictModeEnabled()) { + throw new BadFluentConstructorException($method, 0, $exception); + } + + return null; + } + } + + /** + * Return the current context from inside a macro callee or a new one if static. + * + * @return static + */ + protected static function this() + { + return end(static::$macroContextStack) ?: new static(0); + } + + /** + * Creates a CarbonInterval from string. + * + * Format: + * + * Suffix | Unit | Example | DateInterval expression + * -------|---------|---------|------------------------ + * y | years | 1y | P1Y + * mo | months | 3mo | P3M + * w | weeks | 2w | P2W + * d | days | 28d | P28D + * h | hours | 4h | PT4H + * m | minutes | 12m | PT12M + * s | seconds | 59s | PT59S + * + * e. g. `1w 3d 4h 32m 23s` is converted to 10 days 4 hours 32 minutes and 23 seconds. + * + * Special cases: + * - An empty string will return a zero interval + * - Fractions are allowed for weeks, days, hours and minutes and will be converted + * and rounded to the next smaller value (caution: 0.5w = 4d) + * + * @param string $intervalDefinition + * + * @return static + */ + public static function fromString($intervalDefinition) + { + if (empty($intervalDefinition)) { + return new static(0); + } + + $years = 0; + $months = 0; + $weeks = 0; + $days = 0; + $hours = 0; + $minutes = 0; + $seconds = 0; + $milliseconds = 0; + $microseconds = 0; + + $pattern = '/(\d+(?:\.\d+)?)\h*([^\d\h]*)/i'; + preg_match_all($pattern, $intervalDefinition, $parts, PREG_SET_ORDER); + + while ([$part, $value, $unit] = array_shift($parts)) { + $intValue = (int) $value; + $fraction = (float) $value - $intValue; + + // Fix calculation precision + switch (round($fraction, 6)) { + case 1: + $fraction = 0; + $intValue++; + + break; + case 0: + $fraction = 0; + + break; + } + + switch ($unit === 'µs' ? 'µs' : strtolower($unit)) { + case 'millennia': + case 'millennium': + $years += $intValue * CarbonInterface::YEARS_PER_MILLENNIUM; + + break; + + case 'century': + case 'centuries': + $years += $intValue * CarbonInterface::YEARS_PER_CENTURY; + + break; + + case 'decade': + case 'decades': + $years += $intValue * CarbonInterface::YEARS_PER_DECADE; + + break; + + case 'year': + case 'years': + case 'y': + $years += $intValue; + + break; + + case 'quarter': + case 'quarters': + $months += $intValue * CarbonInterface::MONTHS_PER_QUARTER; + + break; + + case 'month': + case 'months': + case 'mo': + $months += $intValue; + + break; + + case 'week': + case 'weeks': + case 'w': + $weeks += $intValue; + + if ($fraction) { + $parts[] = [null, $fraction * static::getDaysPerWeek(), 'd']; + } + + break; + + case 'day': + case 'days': + case 'd': + $days += $intValue; + + if ($fraction) { + $parts[] = [null, $fraction * static::getHoursPerDay(), 'h']; + } + + break; + + case 'hour': + case 'hours': + case 'h': + $hours += $intValue; + + if ($fraction) { + $parts[] = [null, $fraction * static::getMinutesPerHour(), 'm']; + } + + break; + + case 'minute': + case 'minutes': + case 'm': + $minutes += $intValue; + + if ($fraction) { + $parts[] = [null, $fraction * static::getSecondsPerMinute(), 's']; + } + + break; + + case 'second': + case 'seconds': + case 's': + $seconds += $intValue; + + if ($fraction) { + $parts[] = [null, $fraction * static::getMillisecondsPerSecond(), 'ms']; + } + + break; + + case 'millisecond': + case 'milliseconds': + case 'milli': + case 'ms': + $milliseconds += $intValue; + + if ($fraction) { + $microseconds += round($fraction * static::getMicrosecondsPerMillisecond()); + } + + break; + + case 'microsecond': + case 'microseconds': + case 'micro': + case 'µs': + $microseconds += $intValue; + + break; + + default: + throw new InvalidIntervalException( + sprintf('Invalid part %s in definition %s', $part, $intervalDefinition) + ); + } + } + + return new static($years, $months, $weeks, $days, $hours, $minutes, $seconds, $milliseconds * Carbon::MICROSECONDS_PER_MILLISECOND + $microseconds); + } + + /** + * Creates a CarbonInterval from string using a different locale. + * + * @param string $interval interval string in the given language (may also contain English). + * @param string|null $locale if locale is null or not specified, current global locale will be used instead. + * + * @return static + */ + public static function parseFromLocale($interval, $locale = null) + { + return static::fromString(Carbon::translateTimeString($interval, $locale ?: static::getLocale(), 'en')); + } + + private static function castIntervalToClass(DateInterval $interval, string $className) + { + $mainClass = DateInterval::class; + + if (!is_a($className, $mainClass, true)) { + throw new InvalidCastException("$className is not a sub-class of $mainClass."); + } + + $microseconds = $interval->f; + $instance = new $className(static::getDateIntervalSpec($interval)); + + if ($microseconds) { + $instance->f = $microseconds; + } + + if ($interval instanceof self && is_a($className, self::class, true)) { + self::copyStep($interval, $instance); + } + + self::copyNegativeUnits($interval, $instance); + + return $instance; + } + + private static function copyNegativeUnits(DateInterval $from, DateInterval $to): void + { + $to->invert = $from->invert; + + foreach (['y', 'm', 'd', 'h', 'i', 's'] as $unit) { + if ($from->$unit < 0) { + $to->$unit *= -1; + } + } + } + + private static function copyStep(self $from, self $to): void + { + $to->setStep($from->getStep()); + } + + /** + * Cast the current instance into the given class. + * + * @param string $className The $className::instance() method will be called to cast the current object. + * + * @return DateInterval + */ + public function cast(string $className) + { + return self::castIntervalToClass($this, $className); + } + + /** + * Create a CarbonInterval instance from a DateInterval one. Can not instance + * DateInterval objects created from DateTime::diff() as you can't externally + * set the $days field. + * + * @param DateInterval $interval + * + * @return static + */ + public static function instance(DateInterval $interval) + { + return self::castIntervalToClass($interval, static::class); + } + + /** + * Make a CarbonInterval instance from given variable if possible. + * + * Always return a new instance. Parse only strings and only these likely to be intervals (skip dates + * and recurrences). Throw an exception for invalid format, but otherwise return null. + * + * @param mixed|int|DateInterval|string|Closure|null $interval interval or number of the given $unit + * @param string|null $unit if specified, $interval must be an integer + * + * @return static|null + */ + public static function make($interval, $unit = null) + { + if ($unit) { + $interval = "$interval ".Carbon::pluralUnit($unit); + } + + if ($interval instanceof DateInterval) { + return static::instance($interval); + } + + if ($interval instanceof Closure) { + return new static($interval); + } + + if (!\is_string($interval)) { + return null; + } + + return static::makeFromString($interval); + } + + protected static function makeFromString(string $interval) + { + $interval = preg_replace('/\s+/', ' ', trim($interval)); + + if (preg_match('/^P[T\d]/', $interval)) { + return new static($interval); + } + + if (preg_match('/^(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+$/i', $interval)) { + return static::fromString($interval); + } + + /** @var static $interval */ + $interval = static::createFromDateString($interval); + + return !$interval || $interval->isEmpty() ? null : $interval; + } + + protected function resolveInterval($interval) + { + if (!($interval instanceof self)) { + return self::make($interval); + } + + return $interval; + } + + /** + * Sets up a DateInterval from the relative parts of the string. + * + * @param string $time + * + * @return static + * + * @link https://php.net/manual/en/dateinterval.createfromdatestring.php + */ + #[ReturnTypeWillChange] + public static function createFromDateString($time) + { + $interval = @parent::createFromDateString(strtr($time, [ + ',' => ' ', + ' and ' => ' ', + ])); + + if ($interval instanceof DateInterval) { + $interval = static::instance($interval); + } + + return $interval; + } + + /////////////////////////////////////////////////////////////////// + ///////////////////////// GETTERS AND SETTERS ///////////////////// + /////////////////////////////////////////////////////////////////// + + /** + * Get a part of the CarbonInterval object. + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return int|float|string + */ + public function get($name) + { + if (str_starts_with($name, 'total')) { + return $this->total(substr($name, 5)); + } + + switch ($name) { + case 'years': + return $this->y; + + case 'months': + return $this->m; + + case 'dayz': + return $this->d; + + case 'hours': + return $this->h; + + case 'minutes': + return $this->i; + + case 'seconds': + return $this->s; + + case 'milli': + case 'milliseconds': + return (int) (round($this->f * Carbon::MICROSECONDS_PER_SECOND) / Carbon::MICROSECONDS_PER_MILLISECOND); + + case 'micro': + case 'microseconds': + return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND); + + case 'microExcludeMilli': + return (int) round($this->f * Carbon::MICROSECONDS_PER_SECOND) % Carbon::MICROSECONDS_PER_MILLISECOND; + + case 'weeks': + return (int) ($this->d / static::getDaysPerWeek()); + + case 'daysExcludeWeeks': + case 'dayzExcludeWeeks': + return $this->d % static::getDaysPerWeek(); + + case 'locale': + return $this->getTranslatorLocale(); + + default: + throw new UnknownGetterException($name); + } + } + + /** + * Get a part of the CarbonInterval object. + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return int|float|string + */ + public function __get($name) + { + return $this->get($name); + } + + /** + * Set a part of the CarbonInterval object. + * + * @param string|array $name + * @param int $value + * + * @throws UnknownSetterException + * + * @return $this + */ + public function set($name, $value = null) + { + $properties = \is_array($name) ? $name : [$name => $value]; + + foreach ($properties as $key => $value) { + switch (Carbon::singularUnit(rtrim($key, 'z'))) { + case 'year': + $this->y = $value; + + break; + + case 'month': + $this->m = $value; + + break; + + case 'week': + $this->d = $value * static::getDaysPerWeek(); + + break; + + case 'day': + $this->d = $value; + + break; + + case 'daysexcludeweek': + case 'dayzexcludeweek': + $this->d = $this->weeks * static::getDaysPerWeek() + $value; + + break; + + case 'hour': + $this->h = $value; + + break; + + case 'minute': + $this->i = $value; + + break; + + case 'second': + $this->s = $value; + + break; + + case 'milli': + case 'millisecond': + $this->microseconds = $value * Carbon::MICROSECONDS_PER_MILLISECOND + $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND; + + break; + + case 'micro': + case 'microsecond': + $this->f = $value / Carbon::MICROSECONDS_PER_SECOND; + + break; + + default: + if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) { + throw new UnknownSetterException($key); + } + + $this->$key = $value; + } + } + + return $this; + } + + /** + * Set a part of the CarbonInterval object. + * + * @param string $name + * @param int $value + * + * @throws UnknownSetterException + */ + public function __set($name, $value) + { + $this->set($name, $value); + } + + /** + * Allow setting of weeks and days to be cumulative. + * + * @param int $weeks Number of weeks to set + * @param int $days Number of days to set + * + * @return static + */ + public function weeksAndDays($weeks, $days) + { + $this->dayz = ($weeks * static::getDaysPerWeek()) + $days; + + return $this; + } + + /** + * Returns true if the interval is empty for each unit. + * + * @return bool + */ + public function isEmpty() + { + return $this->years === 0 && + $this->months === 0 && + $this->dayz === 0 && + !$this->days && + $this->hours === 0 && + $this->minutes === 0 && + $this->seconds === 0 && + $this->microseconds === 0; + } + + /** + * Register a custom macro. + * + * @example + * ``` + * CarbonInterval::macro('twice', function () { + * return $this->times(2); + * }); + * echo CarbonInterval::hours(2)->twice(); + * ``` + * + * @param string $name + * @param object|callable $macro + * + * @return void + */ + public static function macro($name, $macro) + { + static::$macros[$name] = $macro; + } + + /** + * Register macros from a mixin object. + * + * @example + * ``` + * CarbonInterval::mixin(new class { + * public function daysToHours() { + * return function () { + * $this->hours += $this->days; + * $this->days = 0; + * + * return $this; + * }; + * } + * public function hoursToDays() { + * return function () { + * $this->days += $this->hours; + * $this->hours = 0; + * + * return $this; + * }; + * } + * }); + * echo CarbonInterval::hours(5)->hoursToDays() . "\n"; + * echo CarbonInterval::days(5)->daysToHours() . "\n"; + * ``` + * + * @param object|string $mixin + * + * @throws ReflectionException + * + * @return void + */ + public static function mixin($mixin) + { + static::baseMixin($mixin); + } + + /** + * Check if macro is registered. + * + * @param string $name + * + * @return bool + */ + public static function hasMacro($name) + { + return isset(static::$macros[$name]); + } + + /** + * Call given macro. + * + * @param string $name + * @param array $parameters + * + * @return mixed + */ + protected function callMacro($name, $parameters) + { + $macro = static::$macros[$name]; + + if ($macro instanceof Closure) { + $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); + + return ($boundMacro ?: $macro)(...$parameters); + } + + return $macro(...$parameters); + } + + /** + * Allow fluent calls on the setters... CarbonInterval::years(3)->months(5)->day(). + * + * Note: This is done using the magic method to allow static and instance methods to + * have the same names. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @throws BadFluentSetterException|Throwable + * + * @return static + */ + public function __call($method, $parameters) + { + if (static::hasMacro($method)) { + return static::bindMacroContext($this, function () use (&$method, &$parameters) { + return $this->callMacro($method, $parameters); + }); + } + + $roundedValue = $this->callRoundMethod($method, $parameters); + + if ($roundedValue !== null) { + return $roundedValue; + } + + if (preg_match('/^(?add|sub)(?[A-Z].*)$/', $method, $match)) { + return $this->{$match['method']}($parameters[0], $match['unit']); + } + + try { + $this->set($method, \count($parameters) === 0 ? 1 : $parameters[0]); + } catch (UnknownSetterException $exception) { + if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) { + throw new BadFluentSetterException($method, 0, $exception); + } + } + + return $this; + } + + protected function getForHumansInitialVariables($syntax, $short) + { + if (\is_array($syntax)) { + return $syntax; + } + + if (\is_int($short)) { + return [ + 'parts' => $short, + 'short' => false, + ]; + } + + if (\is_bool($syntax)) { + return [ + 'short' => $syntax, + 'syntax' => CarbonInterface::DIFF_ABSOLUTE, + ]; + } + + return []; + } + + /** + * @param mixed $syntax + * @param mixed $short + * @param mixed $parts + * @param mixed $options + * + * @return array + */ + protected function getForHumansParameters($syntax = null, $short = false, $parts = -1, $options = null) + { + $optionalSpace = ' '; + $default = $this->getTranslationMessage('list.0') ?? $this->getTranslationMessage('list') ?? ' '; + $join = $default === '' ? '' : ' '; + $altNumbers = false; + $aUnit = false; + $minimumUnit = 's'; + $skip = []; + extract($this->getForHumansInitialVariables($syntax, $short)); + $skip = array_filter((array) $skip, static function ($value) { + return \is_string($value) && $value !== ''; + }); + + if ($syntax === null) { + $syntax = CarbonInterface::DIFF_ABSOLUTE; + } + + if ($parts === -1) { + $parts = INF; + } + + if ($options === null) { + $options = static::getHumanDiffOptions(); + } + + if ($join === false) { + $join = ' '; + } elseif ($join === true) { + $join = [ + $default, + $this->getTranslationMessage('list.1') ?? $default, + ]; + } + + if ($altNumbers && $altNumbers !== true) { + $language = new Language($this->locale); + $altNumbers = \in_array($language->getCode(), (array) $altNumbers, true); + } + + if (\is_array($join)) { + [$default, $last] = $join; + + if ($default !== ' ') { + $optionalSpace = ''; + } + + $join = function ($list) use ($default, $last) { + if (\count($list) < 2) { + return implode('', $list); + } + + $end = array_pop($list); + + return implode($default, $list).$last.$end; + }; + } + + if (\is_string($join)) { + if ($join !== ' ') { + $optionalSpace = ''; + } + + $glue = $join; + $join = function ($list) use ($glue) { + return implode($glue, $list); + }; + } + + $interpolations = [ + ':optional-space' => $optionalSpace, + ]; + + return [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip]; + } + + protected static function getRoundingMethodFromOptions(int $options): ?string + { + if ($options & CarbonInterface::ROUND) { + return 'round'; + } + + if ($options & CarbonInterface::CEIL) { + return 'ceil'; + } + + if ($options & CarbonInterface::FLOOR) { + return 'floor'; + } + + return null; + } + + /** + * Returns interval values as an array where key are the unit names and values the counts. + * + * @return int[] + */ + public function toArray() + { + return [ + 'years' => $this->years, + 'months' => $this->months, + 'weeks' => $this->weeks, + 'days' => $this->daysExcludeWeeks, + 'hours' => $this->hours, + 'minutes' => $this->minutes, + 'seconds' => $this->seconds, + 'microseconds' => $this->microseconds, + ]; + } + + /** + * Returns interval non-zero values as an array where key are the unit names and values the counts. + * + * @return int[] + */ + public function getNonZeroValues() + { + return array_filter($this->toArray(), 'intval'); + } + + /** + * Returns interval values as an array where key are the unit names and values the counts + * from the biggest non-zero one the the smallest non-zero one. + * + * @return int[] + */ + public function getValuesSequence() + { + $nonZeroValues = $this->getNonZeroValues(); + + if ($nonZeroValues === []) { + return []; + } + + $keys = array_keys($nonZeroValues); + $firstKey = $keys[0]; + $lastKey = $keys[\count($keys) - 1]; + $values = []; + $record = false; + + foreach ($this->toArray() as $unit => $count) { + if ($unit === $firstKey) { + $record = true; + } + + if ($record) { + $values[$unit] = $count; + } + + if ($unit === $lastKey) { + $record = false; + } + } + + return $values; + } + + /** + * Get the current interval in a human readable format in the current locale. + * + * @example + * ``` + * echo CarbonInterval::fromString('4d 3h 40m')->forHumans() . "\n"; + * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 2]) . "\n"; + * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['parts' => 3, 'join' => true]) . "\n"; + * echo CarbonInterval::fromString('4d 3h 40m')->forHumans(['short' => true]) . "\n"; + * echo CarbonInterval::fromString('1d 24h')->forHumans(['join' => ' or ']) . "\n"; + * echo CarbonInterval::fromString('1d 24h')->forHumans(['minimumUnit' => 'hour']) . "\n"; + * ``` + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'skip' entry, list of units to skip (array of strings or a single string, + * ` it can be the unit name (singular or plural) or its shortcut + * ` (y, m, w, d, h, min, s, ms, µs). + * - 'aUnit' entry, prefer "an hour" over "1 hour" if true + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'minimumUnit' entry determines the smallest unit of time to display can be long or + * ` short form of the units, e.g. 'hour' or 'h' (default value: s) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: -1: no limits) + * @param int $options human diff options + * + * @throws Exception + * + * @return string + */ + public function forHumans($syntax = null, $short = false, $parts = -1, $options = null) + { + [$syntax, $short, $parts, $options, $join, $aUnit, $altNumbers, $interpolations, $minimumUnit, $skip] = $this + ->getForHumansParameters($syntax, $short, $parts, $options); + + $interval = []; + + $syntax = (int) ($syntax ?? CarbonInterface::DIFF_ABSOLUTE); + $absolute = $syntax === CarbonInterface::DIFF_ABSOLUTE; + $relativeToNow = $syntax === CarbonInterface::DIFF_RELATIVE_TO_NOW; + $count = 1; + $unit = $short ? 's' : 'second'; + $isFuture = $this->invert === 1; + $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before'); + $declensionMode = null; + + /** @var \Symfony\Component\Translation\Translator $translator */ + $translator = $this->getLocalTranslator(); + + $handleDeclensions = function ($unit, $count, $index = 0, $parts = 1) use ($interpolations, $transId, $translator, $altNumbers, $absolute, &$declensionMode) { + if (!$absolute) { + $declensionMode = $declensionMode ?? $this->translate($transId.'_mode'); + + if ($this->needsDeclension($declensionMode, $index, $parts)) { + // Some languages have special pluralization for past and future tense. + $key = $unit.'_'.$transId; + $result = $this->translate($key, $interpolations, $count, $translator, $altNumbers); + + if ($result !== $key) { + return $result; + } + } + } + + $result = $this->translate($unit, $interpolations, $count, $translator, $altNumbers); + + if ($result !== $unit) { + return $result; + } + + return null; + }; + + $intervalValues = $this; + $method = static::getRoundingMethodFromOptions($options); + + if ($method) { + $previousCount = INF; + + while ( + \count($intervalValues->getNonZeroValues()) > $parts && + ($count = \count($keys = array_keys($intervalValues->getValuesSequence()))) > 1 + ) { + $index = min($count, $previousCount - 1) - 2; + + if ($index < 0) { + break; + } + + $intervalValues = $this->copy()->roundUnit( + $keys[$index], + 1, + $method + ); + $previousCount = $count; + } + } + + $diffIntervalArray = [ + ['value' => $intervalValues->years, 'unit' => 'year', 'unitShort' => 'y'], + ['value' => $intervalValues->months, 'unit' => 'month', 'unitShort' => 'm'], + ['value' => $intervalValues->weeks, 'unit' => 'week', 'unitShort' => 'w'], + ['value' => $intervalValues->daysExcludeWeeks, 'unit' => 'day', 'unitShort' => 'd'], + ['value' => $intervalValues->hours, 'unit' => 'hour', 'unitShort' => 'h'], + ['value' => $intervalValues->minutes, 'unit' => 'minute', 'unitShort' => 'min'], + ['value' => $intervalValues->seconds, 'unit' => 'second', 'unitShort' => 's'], + ['value' => $intervalValues->milliseconds, 'unit' => 'millisecond', 'unitShort' => 'ms'], + ['value' => $intervalValues->microExcludeMilli, 'unit' => 'microsecond', 'unitShort' => 'µs'], + ]; + + if (!empty($skip)) { + foreach ($diffIntervalArray as $index => &$unitData) { + $nextIndex = $index + 1; + + if ($unitData['value'] && + isset($diffIntervalArray[$nextIndex]) && + \count(array_intersect([$unitData['unit'], $unitData['unit'].'s', $unitData['unitShort']], $skip)) + ) { + $diffIntervalArray[$nextIndex]['value'] += $unitData['value'] * + self::getFactorWithDefault($diffIntervalArray[$nextIndex]['unit'], $unitData['unit']); + $unitData['value'] = 0; + } + } + } + + $transChoice = function ($short, $unitData, $index, $parts) use ($absolute, $handleDeclensions, $translator, $aUnit, $altNumbers, $interpolations) { + $count = $unitData['value']; + + if ($short) { + $result = $handleDeclensions($unitData['unitShort'], $count, $index, $parts); + + if ($result !== null) { + return $result; + } + } elseif ($aUnit) { + $result = $handleDeclensions('a_'.$unitData['unit'], $count, $index, $parts); + + if ($result !== null) { + return $result; + } + } + + if (!$absolute) { + return $handleDeclensions($unitData['unit'], $count, $index, $parts); + } + + return $this->translate($unitData['unit'], $interpolations, $count, $translator, $altNumbers); + }; + + $fallbackUnit = ['second', 's']; + + foreach ($diffIntervalArray as $diffIntervalData) { + if ($diffIntervalData['value'] > 0) { + $unit = $short ? $diffIntervalData['unitShort'] : $diffIntervalData['unit']; + $count = $diffIntervalData['value']; + $interval[] = [$short, $diffIntervalData]; + } elseif ($options & CarbonInterface::SEQUENTIAL_PARTS_ONLY && \count($interval) > 0) { + break; + } + + // break the loop after we get the required number of parts in array + if (\count($interval) >= $parts) { + break; + } + + // break the loop after we have reached the minimum unit + if (\in_array($minimumUnit, [$diffIntervalData['unit'], $diffIntervalData['unitShort']], true)) { + $fallbackUnit = [$diffIntervalData['unit'], $diffIntervalData['unitShort']]; + + break; + } + } + + $actualParts = \count($interval); + + foreach ($interval as $index => &$item) { + $item = $transChoice($item[0], $item[1], $index, $actualParts); + } + + if (\count($interval) === 0) { + if ($relativeToNow && $options & CarbonInterface::JUST_NOW) { + $key = 'diff_now'; + $translation = $this->translate($key, $interpolations, null, $translator); + + if ($translation !== $key) { + return $translation; + } + } + + $count = $options & CarbonInterface::NO_ZERO_DIFF ? 1 : 0; + $unit = $fallbackUnit[$short ? 1 : 0]; + $interval[] = $this->translate($unit, $interpolations, $count, $translator, $altNumbers); + } + + // join the interval parts by a space + $time = $join($interval); + + unset($diffIntervalArray, $interval); + + if ($absolute) { + return $time; + } + + $isFuture = $this->invert === 1; + + $transId = $relativeToNow ? ($isFuture ? 'from_now' : 'ago') : ($isFuture ? 'after' : 'before'); + + if ($parts === 1) { + if ($relativeToNow && $unit === 'day') { + if ($count === 1 && $options & CarbonInterface::ONE_DAY_WORDS) { + $key = $isFuture ? 'diff_tomorrow' : 'diff_yesterday'; + $translation = $this->translate($key, $interpolations, null, $translator); + + if ($translation !== $key) { + return $translation; + } + } + + if ($count === 2 && $options & CarbonInterface::TWO_DAY_WORDS) { + $key = $isFuture ? 'diff_after_tomorrow' : 'diff_before_yesterday'; + $translation = $this->translate($key, $interpolations, null, $translator); + + if ($translation !== $key) { + return $translation; + } + } + } + + $aTime = $aUnit ? $handleDeclensions('a_'.$unit, $count) : null; + + $time = $aTime ?: $handleDeclensions($unit, $count) ?: $time; + } + + $time = [':time' => $time]; + + return $this->translate($transId, array_merge($time, $interpolations, $time), null, $translator); + } + + /** + * Format the instance as a string using the forHumans() function. + * + * @throws Exception + * + * @return string + */ + public function __toString() + { + $format = $this->localToStringFormat; + + if (!$format) { + return $this->forHumans(); + } + + if ($format instanceof Closure) { + return $format($this); + } + + return $this->format($format); + } + + /** + * Return native DateInterval PHP object matching the current instance. + * + * @example + * ``` + * var_dump(CarbonInterval::hours(2)->toDateInterval()); + * ``` + * + * @return DateInterval + */ + public function toDateInterval() + { + return self::castIntervalToClass($this, DateInterval::class); + } + + /** + * Convert the interval to a CarbonPeriod. + * + * @param DateTimeInterface|string|int ...$params Start date, [end date or recurrences] and optional settings. + * + * @return CarbonPeriod + */ + public function toPeriod(...$params) + { + if ($this->tzName) { + $tz = \is_string($this->tzName) ? new DateTimeZone($this->tzName) : $this->tzName; + + if ($tz instanceof DateTimeZone) { + array_unshift($params, $tz); + } + } + + return CarbonPeriod::create($this, ...$params); + } + + /** + * Invert the interval. + * + * @param bool|int $inverted if a parameter is passed, the passed value casted as 1 or 0 is used + * as the new value of the ->invert property. + * + * @return $this + */ + public function invert($inverted = null) + { + $this->invert = (\func_num_args() === 0 ? !$this->invert : $inverted) ? 1 : 0; + + return $this; + } + + protected function solveNegativeInterval() + { + if (!$this->isEmpty() && $this->years <= 0 && $this->months <= 0 && $this->dayz <= 0 && $this->hours <= 0 && $this->minutes <= 0 && $this->seconds <= 0 && $this->microseconds <= 0) { + $this->years *= -1; + $this->months *= -1; + $this->dayz *= -1; + $this->hours *= -1; + $this->minutes *= -1; + $this->seconds *= -1; + $this->microseconds *= -1; + $this->invert(); + } + + return $this; + } + + /** + * Add the passed interval to the current instance. + * + * @param string|DateInterval $unit + * @param int|float $value + * + * @return $this + */ + public function add($unit, $value = 1) + { + if (is_numeric($unit)) { + [$value, $unit] = [$unit, $value]; + } + + if (\is_string($unit) && !preg_match('/^\s*\d/', $unit)) { + $unit = "$value $unit"; + $value = 1; + } + + $interval = static::make($unit); + + if (!$interval) { + throw new InvalidIntervalException('This type of data cannot be added/subtracted.'); + } + + if ($value !== 1) { + $interval->times($value); + } + + $sign = ($this->invert === 1) !== ($interval->invert === 1) ? -1 : 1; + $this->years += $interval->y * $sign; + $this->months += $interval->m * $sign; + $this->dayz += ($interval->days === false ? $interval->d : $interval->days) * $sign; + $this->hours += $interval->h * $sign; + $this->minutes += $interval->i * $sign; + $this->seconds += $interval->s * $sign; + $this->microseconds += $interval->microseconds * $sign; + + $this->solveNegativeInterval(); + + return $this; + } + + /** + * Subtract the passed interval to the current instance. + * + * @param string|DateInterval $unit + * @param int|float $value + * + * @return $this + */ + public function sub($unit, $value = 1) + { + if (is_numeric($unit)) { + [$value, $unit] = [$unit, $value]; + } + + return $this->add($unit, -(float) $value); + } + + /** + * Subtract the passed interval to the current instance. + * + * @param string|DateInterval $unit + * @param int|float $value + * + * @return $this + */ + public function subtract($unit, $value = 1) + { + return $this->sub($unit, $value); + } + + /** + * Add given parameters to the current interval. + * + * @param int $years + * @param int $months + * @param int|float $weeks + * @param int|float $days + * @param int|float $hours + * @param int|float $minutes + * @param int|float $seconds + * @param int|float $microseconds + * + * @return $this + */ + public function plus( + $years = 0, + $months = 0, + $weeks = 0, + $days = 0, + $hours = 0, + $minutes = 0, + $seconds = 0, + $microseconds = 0 + ): self { + return $this->add(" + $years years $months months $weeks weeks $days days + $hours hours $minutes minutes $seconds seconds $microseconds microseconds + "); + } + + /** + * Add given parameters to the current interval. + * + * @param int $years + * @param int $months + * @param int|float $weeks + * @param int|float $days + * @param int|float $hours + * @param int|float $minutes + * @param int|float $seconds + * @param int|float $microseconds + * + * @return $this + */ + public function minus( + $years = 0, + $months = 0, + $weeks = 0, + $days = 0, + $hours = 0, + $minutes = 0, + $seconds = 0, + $microseconds = 0 + ): self { + return $this->sub(" + $years years $months months $weeks weeks $days days + $hours hours $minutes minutes $seconds seconds $microseconds microseconds + "); + } + + /** + * Multiply current instance given number of times. times() is naive, it multiplies each unit + * (so day can be greater than 31, hour can be greater than 23, etc.) and the result is rounded + * separately for each unit. + * + * Use times() when you want a fast and approximated calculation that does not cascade units. + * + * For a precise and cascaded calculation, + * + * @see multiply() + * + * @param float|int $factor + * + * @return $this + */ + public function times($factor) + { + if ($factor < 0) { + $this->invert = $this->invert ? 0 : 1; + $factor = -$factor; + } + + $this->years = (int) round($this->years * $factor); + $this->months = (int) round($this->months * $factor); + $this->dayz = (int) round($this->dayz * $factor); + $this->hours = (int) round($this->hours * $factor); + $this->minutes = (int) round($this->minutes * $factor); + $this->seconds = (int) round($this->seconds * $factor); + $this->microseconds = (int) round($this->microseconds * $factor); + + return $this; + } + + /** + * Divide current instance by a given divider. shares() is naive, it divides each unit separately + * and the result is rounded for each unit. So 5 hours and 20 minutes shared by 3 becomes 2 hours + * and 7 minutes. + * + * Use shares() when you want a fast and approximated calculation that does not cascade units. + * + * For a precise and cascaded calculation, + * + * @see divide() + * + * @param float|int $divider + * + * @return $this + */ + public function shares($divider) + { + return $this->times(1 / $divider); + } + + protected function copyProperties(self $interval, $ignoreSign = false) + { + $this->years = $interval->years; + $this->months = $interval->months; + $this->dayz = $interval->dayz; + $this->hours = $interval->hours; + $this->minutes = $interval->minutes; + $this->seconds = $interval->seconds; + $this->microseconds = $interval->microseconds; + + if (!$ignoreSign) { + $this->invert = $interval->invert; + } + + return $this; + } + + /** + * Multiply and cascade current instance by a given factor. + * + * @param float|int $factor + * + * @return $this + */ + public function multiply($factor) + { + if ($factor < 0) { + $this->invert = $this->invert ? 0 : 1; + $factor = -$factor; + } + + $yearPart = (int) floor($this->years * $factor); // Split calculation to prevent imprecision + + if ($yearPart) { + $this->years -= $yearPart / $factor; + } + + return $this->copyProperties( + static::create($yearPart) + ->microseconds(abs($this->totalMicroseconds) * $factor) + ->cascade(), + true + ); + } + + /** + * Divide and cascade current instance by a given divider. + * + * @param float|int $divider + * + * @return $this + */ + public function divide($divider) + { + return $this->multiply(1 / $divider); + } + + /** + * Get the interval_spec string of a date interval. + * + * @param DateInterval $interval + * + * @return string + */ + public static function getDateIntervalSpec(DateInterval $interval, bool $microseconds = false) + { + $date = array_filter([ + static::PERIOD_YEARS => abs($interval->y), + static::PERIOD_MONTHS => abs($interval->m), + static::PERIOD_DAYS => abs($interval->d), + ]); + + $seconds = abs($interval->s); + if ($microseconds && $interval->f > 0) { + $seconds = sprintf('%d.%06d', $seconds, abs($interval->f) * 1000000); + } + + $time = array_filter([ + static::PERIOD_HOURS => abs($interval->h), + static::PERIOD_MINUTES => abs($interval->i), + static::PERIOD_SECONDS => $seconds, + ]); + + $specString = static::PERIOD_PREFIX; + + foreach ($date as $key => $value) { + $specString .= $value.$key; + } + + if (\count($time) > 0) { + $specString .= static::PERIOD_TIME_PREFIX; + foreach ($time as $key => $value) { + $specString .= $value.$key; + } + } + + return $specString === static::PERIOD_PREFIX ? 'PT0S' : $specString; + } + + /** + * Get the interval_spec string. + * + * @return string + */ + public function spec(bool $microseconds = false) + { + return static::getDateIntervalSpec($this, $microseconds); + } + + /** + * Comparing 2 date intervals. + * + * @param DateInterval $first + * @param DateInterval $second + * + * @return int + */ + public static function compareDateIntervals(DateInterval $first, DateInterval $second) + { + $current = Carbon::now(); + $passed = $current->avoidMutation()->add($second); + $current->add($first); + + if ($current < $passed) { + return -1; + } + if ($current > $passed) { + return 1; + } + + return 0; + } + + /** + * Comparing with passed interval. + * + * @param DateInterval $interval + * + * @return int + */ + public function compare(DateInterval $interval) + { + return static::compareDateIntervals($this, $interval); + } + + private function invertCascade(array $values) + { + return $this->set(array_map(function ($value) { + return -$value; + }, $values))->doCascade(true)->invert(); + } + + private function doCascade(bool $deep) + { + $originalData = $this->toArray(); + $originalData['milliseconds'] = (int) ($originalData['microseconds'] / static::getMicrosecondsPerMillisecond()); + $originalData['microseconds'] = $originalData['microseconds'] % static::getMicrosecondsPerMillisecond(); + $originalData['daysExcludeWeeks'] = $originalData['days']; + unset($originalData['days']); + $newData = $originalData; + + foreach (self::getFlipCascadeFactors() as $source => [$target, $factor]) { + foreach (['source', 'target'] as $key) { + if ($$key === 'dayz') { + $$key = 'daysExcludeWeeks'; + } + } + + $value = $newData[$source]; + $modulo = ($factor + ($value % $factor)) % $factor; + $newData[$source] = $modulo; + $newData[$target] += ($value - $modulo) / $factor; + } + + $positive = null; + + if (!$deep) { + foreach ($newData as $value) { + if ($value) { + if ($positive === null) { + $positive = ($value > 0); + + continue; + } + + if (($value > 0) !== $positive) { + return $this->invertCascade($originalData) + ->solveNegativeInterval(); + } + } + } + } + + return $this->set($newData) + ->solveNegativeInterval(); + } + + /** + * Convert overflowed values into bigger units. + * + * @return $this + */ + public function cascade() + { + return $this->doCascade(false); + } + + public function hasNegativeValues(): bool + { + foreach ($this->toArray() as $value) { + if ($value < 0) { + return true; + } + } + + return false; + } + + public function hasPositiveValues(): bool + { + foreach ($this->toArray() as $value) { + if ($value > 0) { + return true; + } + } + + return false; + } + + /** + * Get amount of given unit equivalent to the interval. + * + * @param string $unit + * + * @throws UnknownUnitException|UnitNotConfiguredException + * + * @return float + */ + public function total($unit) + { + $realUnit = $unit = strtolower($unit); + + if (\in_array($unit, ['days', 'weeks'])) { + $realUnit = 'dayz'; + } elseif (!\in_array($unit, ['microseconds', 'milliseconds', 'seconds', 'minutes', 'hours', 'dayz', 'months', 'years'])) { + throw new UnknownUnitException($unit); + } + + $result = 0; + $cumulativeFactor = 0; + $unitFound = false; + $factors = self::getFlipCascadeFactors(); + $daysPerWeek = static::getDaysPerWeek(); + + $values = [ + 'years' => $this->years, + 'months' => $this->months, + 'weeks' => (int) ($this->d / $daysPerWeek), + 'dayz' => $this->d % $daysPerWeek, + 'hours' => $this->hours, + 'minutes' => $this->minutes, + 'seconds' => $this->seconds, + 'milliseconds' => (int) ($this->microseconds / Carbon::MICROSECONDS_PER_MILLISECOND), + 'microseconds' => $this->microseconds % Carbon::MICROSECONDS_PER_MILLISECOND, + ]; + + if (isset($factors['dayz']) && $factors['dayz'][0] !== 'weeks') { + $values['dayz'] += $values['weeks'] * $daysPerWeek; + $values['weeks'] = 0; + } + + foreach ($factors as $source => [$target, $factor]) { + if ($source === $realUnit) { + $unitFound = true; + $value = $values[$source]; + $result += $value; + $cumulativeFactor = 1; + } + + if ($factor === false) { + if ($unitFound) { + break; + } + + $result = 0; + $cumulativeFactor = 0; + + continue; + } + + if ($target === $realUnit) { + $unitFound = true; + } + + if ($cumulativeFactor) { + $cumulativeFactor *= $factor; + $result += $values[$target] * $cumulativeFactor; + + continue; + } + + $value = $values[$source]; + + $result = ($result + $value) / $factor; + } + + if (isset($target) && !$cumulativeFactor) { + $result += $values[$target]; + } + + if (!$unitFound) { + throw new UnitNotConfiguredException($unit); + } + + if ($this->invert) { + $result *= -1; + } + + if ($unit === 'weeks') { + return $result / $daysPerWeek; + } + + return $result; + } + + /** + * Determines if the instance is equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see equalTo() + * + * @return bool + */ + public function eq($interval): bool + { + return $this->equalTo($interval); + } + + /** + * Determines if the instance is equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function equalTo($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval !== null && $this->totalMicroseconds === $interval->totalMicroseconds; + } + + /** + * Determines if the instance is not equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($interval): bool + { + return $this->notEqualTo($interval); + } + + /** + * Determines if the instance is not equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function notEqualTo($interval): bool + { + return !$this->eq($interval); + } + + /** + * Determines if the instance is greater (longer) than another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see greaterThan() + * + * @return bool + */ + public function gt($interval): bool + { + return $this->greaterThan($interval); + } + + /** + * Determines if the instance is greater (longer) than another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function greaterThan($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval === null || $this->totalMicroseconds > $interval->totalMicroseconds; + } + + /** + * Determines if the instance is greater (longer) than or equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see greaterThanOrEqualTo() + * + * @return bool + */ + public function gte($interval): bool + { + return $this->greaterThanOrEqualTo($interval); + } + + /** + * Determines if the instance is greater (longer) than or equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function greaterThanOrEqualTo($interval): bool + { + return $this->greaterThan($interval) || $this->equalTo($interval); + } + + /** + * Determines if the instance is less (shorter) than another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see lessThan() + * + * @return bool + */ + public function lt($interval): bool + { + return $this->lessThan($interval); + } + + /** + * Determines if the instance is less (shorter) than another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function lessThan($interval): bool + { + $interval = $this->resolveInterval($interval); + + return $interval !== null && $this->totalMicroseconds < $interval->totalMicroseconds; + } + + /** + * Determines if the instance is less (shorter) than or equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @see lessThanOrEqualTo() + * + * @return bool + */ + public function lte($interval): bool + { + return $this->lessThanOrEqualTo($interval); + } + + /** + * Determines if the instance is less (shorter) than or equal to another + * + * @param CarbonInterval|DateInterval|mixed $interval + * + * @return bool + */ + public function lessThanOrEqualTo($interval): bool + { + return $this->lessThan($interval) || $this->equalTo($interval); + } + + /** + * Determines if the instance is between two others. + * + * The third argument allow you to specify if bounds are included or not (true by default) + * but for when you including/excluding bounds may produce different results in your application, + * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. + * + * @example + * ``` + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2)); // true + * CarbonInterval::hours(48)->between(CarbonInterval::day(), CarbonInterval::days(2), false); // false + * ``` + * + * @param CarbonInterval|DateInterval|mixed $interval1 + * @param CarbonInterval|DateInterval|mixed $interval2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function between($interval1, $interval2, $equal = true): bool + { + return $equal + ? $this->greaterThanOrEqualTo($interval1) && $this->lessThanOrEqualTo($interval2) + : $this->greaterThan($interval1) && $this->lessThan($interval2); + } + + /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // true + * ``` + * + * @param CarbonInterval|DateInterval|mixed $interval1 + * @param CarbonInterval|DateInterval|mixed $interval2 + * + * @return bool + */ + public function betweenIncluded($interval1, $interval2): bool + { + return $this->between($interval1, $interval2, true); + } + + /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->betweenExcluded(CarbonInterval::day(), CarbonInterval::days(2)); // false + * ``` + * + * @param CarbonInterval|DateInterval|mixed $interval1 + * @param CarbonInterval|DateInterval|mixed $interval2 + * + * @return bool + */ + public function betweenExcluded($interval1, $interval2): bool + { + return $this->between($interval1, $interval2, false); + } + + /** + * Determines if the instance is between two others + * + * @example + * ``` + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(3)); // true + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::hours(36)); // false + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2)); // true + * CarbonInterval::hours(48)->isBetween(CarbonInterval::day(), CarbonInterval::days(2), false); // false + * ``` + * + * @param CarbonInterval|DateInterval|mixed $interval1 + * @param CarbonInterval|DateInterval|mixed $interval2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function isBetween($interval1, $interval2, $equal = true): bool + { + return $this->between($interval1, $interval2, $equal); + } + + /** + * Round the current instance at the given unit with given precision if specified and the given function. + * + * @param string $unit + * @param float|int|string|DateInterval|null $precision + * @param string $function + * + * @throws Exception + * + * @return $this + */ + public function roundUnit($unit, $precision = 1, $function = 'round') + { + $base = CarbonImmutable::parse('2000-01-01 00:00:00', 'UTC') + ->roundUnit($unit, $precision, $function); + $next = $base->add($this); + $inverted = $next < $base; + + if ($inverted) { + $next = $base->sub($this); + } + + $this->copyProperties( + $next + ->roundUnit($unit, $precision, $function) + ->diffAsCarbonInterval($base) + ); + + return $this->invert($inverted); + } + + /** + * Truncate the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int|string|DateInterval|null $precision + * + * @throws Exception + * + * @return $this + */ + public function floorUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'floor'); + } + + /** + * Ceil the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int|string|DateInterval|null $precision + * + * @throws Exception + * + * @return $this + */ + public function ceilUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'ceil'); + } + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|DateInterval|null $precision + * @param string $function + * + * @throws Exception + * + * @return $this + */ + public function round($precision = 1, $function = 'round') + { + return $this->roundWith($precision, $function); + } + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|DateInterval|null $precision + * + * @throws Exception + * + * @return $this + */ + public function floor($precision = 1) + { + return $this->round($precision, 'floor'); + } + + /** + * Ceil the current instance second with given precision if specified. + * + * @param float|int|string|DateInterval|null $precision + * + * @throws Exception + * + * @return $this + */ + public function ceil($precision = 1) + { + return $this->round($precision, 'ceil'); + } + + private function needsDeclension(string $mode, int $index, int $parts): bool + { + switch ($mode) { + case 'last': + return $index === $parts - 1; + default: + return true; + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php new file mode 100644 index 00000000000..e2be2cdae4f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonPeriod.php @@ -0,0 +1,2643 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Exceptions\EndLessPeriodException; +use Carbon\Exceptions\InvalidCastException; +use Carbon\Exceptions\InvalidIntervalException; +use Carbon\Exceptions\InvalidPeriodDateException; +use Carbon\Exceptions\InvalidPeriodParameterException; +use Carbon\Exceptions\NotACarbonClassException; +use Carbon\Exceptions\NotAPeriodException; +use Carbon\Exceptions\UnknownGetterException; +use Carbon\Exceptions\UnknownMethodException; +use Carbon\Exceptions\UnreachableException; +use Carbon\Traits\IntervalRounding; +use Carbon\Traits\Mixin; +use Carbon\Traits\Options; +use Closure; +use Countable; +use DateInterval; +use DatePeriod; +use DateTime; +use DateTimeImmutable; +use DateTimeInterface; +use DateTimeZone; +use InvalidArgumentException; +use Iterator; +use JsonSerializable; +use ReflectionException; +use ReturnTypeWillChange; +use RuntimeException; + +/** + * Substitution of DatePeriod with some modifications and many more features. + * + * @property-read int|float $recurrences number of recurrences (if end not set). + * @property-read bool $include_start_date rather the start date is included in the iteration. + * @property-read bool $include_end_date rather the end date is included in the iteration (if recurrences not set). + * @property-read CarbonInterface $start Period start date. + * @property-read CarbonInterface $current Current date from the iteration. + * @property-read CarbonInterface $end Period end date. + * @property-read CarbonInterval $interval Underlying date interval instance. Always present, one day by default. + * + * @method static CarbonPeriod start($date, $inclusive = null) Create instance specifying start date or modify the start date if called on an instance. + * @method static CarbonPeriod since($date, $inclusive = null) Alias for start(). + * @method static CarbonPeriod sinceNow($inclusive = null) Create instance with start date set to now or set the start date to now if called on an instance. + * @method static CarbonPeriod end($date = null, $inclusive = null) Create instance specifying end date or modify the end date if called on an instance. + * @method static CarbonPeriod until($date = null, $inclusive = null) Alias for end(). + * @method static CarbonPeriod untilNow($inclusive = null) Create instance with end date set to now or set the end date to now if called on an instance. + * @method static CarbonPeriod dates($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance. + * @method static CarbonPeriod between($start, $end = null) Create instance with start and end dates or modify the start and end dates if called on an instance. + * @method static CarbonPeriod recurrences($recurrences = null) Create instance with maximum number of recurrences or modify the number of recurrences if called on an instance. + * @method static CarbonPeriod times($recurrences = null) Alias for recurrences(). + * @method static CarbonPeriod options($options = null) Create instance with options or modify the options if called on an instance. + * @method static CarbonPeriod toggle($options, $state = null) Create instance with options toggled on or off, or toggle options if called on an instance. + * @method static CarbonPeriod filter($callback, $name = null) Create instance with filter added to the stack or append a filter if called on an instance. + * @method static CarbonPeriod push($callback, $name = null) Alias for filter(). + * @method static CarbonPeriod prepend($callback, $name = null) Create instance with filter prepended to the stack or prepend a filter if called on an instance. + * @method static CarbonPeriod filters(array $filters = []) Create instance with filters stack or replace the whole filters stack if called on an instance. + * @method static CarbonPeriod interval($interval) Create instance with given date interval or modify the interval if called on an instance. + * @method static CarbonPeriod each($interval) Create instance with given date interval or modify the interval if called on an instance. + * @method static CarbonPeriod every($interval) Create instance with given date interval or modify the interval if called on an instance. + * @method static CarbonPeriod step($interval) Create instance with given date interval or modify the interval if called on an instance. + * @method static CarbonPeriod stepBy($interval) Create instance with given date interval or modify the interval if called on an instance. + * @method static CarbonPeriod invert() Create instance with inverted date interval or invert the interval if called on an instance. + * @method static CarbonPeriod years($years = 1) Create instance specifying a number of years for date interval or replace the interval by the given a number of years if called on an instance. + * @method static CarbonPeriod year($years = 1) Alias for years(). + * @method static CarbonPeriod months($months = 1) Create instance specifying a number of months for date interval or replace the interval by the given a number of months if called on an instance. + * @method static CarbonPeriod month($months = 1) Alias for months(). + * @method static CarbonPeriod weeks($weeks = 1) Create instance specifying a number of weeks for date interval or replace the interval by the given a number of weeks if called on an instance. + * @method static CarbonPeriod week($weeks = 1) Alias for weeks(). + * @method static CarbonPeriod days($days = 1) Create instance specifying a number of days for date interval or replace the interval by the given a number of days if called on an instance. + * @method static CarbonPeriod dayz($days = 1) Alias for days(). + * @method static CarbonPeriod day($days = 1) Alias for days(). + * @method static CarbonPeriod hours($hours = 1) Create instance specifying a number of hours for date interval or replace the interval by the given a number of hours if called on an instance. + * @method static CarbonPeriod hour($hours = 1) Alias for hours(). + * @method static CarbonPeriod minutes($minutes = 1) Create instance specifying a number of minutes for date interval or replace the interval by the given a number of minutes if called on an instance. + * @method static CarbonPeriod minute($minutes = 1) Alias for minutes(). + * @method static CarbonPeriod seconds($seconds = 1) Create instance specifying a number of seconds for date interval or replace the interval by the given a number of seconds if called on an instance. + * @method static CarbonPeriod second($seconds = 1) Alias for seconds(). + * @method $this roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method $this floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method $this floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method $this ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method $this ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method $this roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method $this floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method $this floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method $this ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method $this ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method $this roundWeek(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundWeeks(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorWeek(float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorWeeks(float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilWeek(float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilWeeks(float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method $this floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method $this floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method $this ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method $this ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method $this roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method $this floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method $this ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method $this roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method $this floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method $this ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method $this roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method $this floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method $this floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method $this ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method $this ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method $this roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method $this floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method $this ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method $this roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method $this floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method $this floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method $this ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method $this ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method $this roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method $this floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method $this ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method $this roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method $this floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method $this ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method $this roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method $this floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method $this ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method $this roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method $this floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method $this ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method $this ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * + * @SuppressWarnings(PHPMD.CouplingBetweenObjects) + */ +class CarbonPeriod implements Iterator, Countable, JsonSerializable +{ + use IntervalRounding; + use Mixin { + Mixin::mixin as baseMixin; + } + use Options; + + /** + * Built-in filter for limit by recurrences. + * + * @var callable + */ + public const RECURRENCES_FILTER = [self::class, 'filterRecurrences']; + + /** + * Built-in filter for limit to an end. + * + * @var callable + */ + public const END_DATE_FILTER = [self::class, 'filterEndDate']; + + /** + * Special value which can be returned by filters to end iteration. Also a filter. + * + * @var callable + */ + public const END_ITERATION = [self::class, 'endIteration']; + + /** + * Exclude start date from iteration. + * + * @var int + */ + public const EXCLUDE_START_DATE = 1; + + /** + * Exclude end date from iteration. + * + * @var int + */ + public const EXCLUDE_END_DATE = 2; + + /** + * Yield CarbonImmutable instances. + * + * @var int + */ + public const IMMUTABLE = 4; + + /** + * Number of maximum attempts before giving up on finding next valid date. + * + * @var int + */ + public const NEXT_MAX_ATTEMPTS = 1000; + + /** + * Number of maximum attempts before giving up on finding end date. + * + * @var int + */ + public const END_MAX_ATTEMPTS = 10000; + + /** + * The registered macros. + * + * @var array + */ + protected static $macros = []; + + /** + * Date class of iteration items. + * + * @var string + */ + protected $dateClass = Carbon::class; + + /** + * Underlying date interval instance. Always present, one day by default. + * + * @var CarbonInterval + */ + protected $dateInterval; + + /** + * Whether current date interval was set by default. + * + * @var bool + */ + protected $isDefaultInterval; + + /** + * The filters stack. + * + * @var array + */ + protected $filters = []; + + /** + * Period start date. Applied on rewind. Always present, now by default. + * + * @var CarbonInterface + */ + protected $startDate; + + /** + * Period end date. For inverted interval should be before the start date. Applied via a filter. + * + * @var CarbonInterface|null + */ + protected $endDate; + + /** + * Limit for number of recurrences. Applied via a filter. + * + * @var int|null + */ + protected $recurrences; + + /** + * Iteration options. + * + * @var int + */ + protected $options; + + /** + * Index of current date. Always sequential, even if some dates are skipped by filters. + * Equal to null only before the first iteration. + * + * @var int + */ + protected $key; + + /** + * Current date. May temporarily hold unaccepted value when looking for a next valid date. + * Equal to null only before the first iteration. + * + * @var CarbonInterface + */ + protected $current; + + /** + * Timezone of current date. Taken from the start date. + * + * @var \DateTimeZone|null + */ + protected $timezone; + + /** + * The cached validation result for current date. + * + * @var bool|string|null + */ + protected $validationResult; + + /** + * Timezone handler for settings() method. + * + * @var mixed + */ + protected $tzName; + + /** + * Make a CarbonPeriod instance from given variable if possible. + * + * @param mixed $var + * + * @return static|null + */ + public static function make($var) + { + try { + return static::instance($var); + } catch (NotAPeriodException $e) { + return static::create($var); + } + } + + /** + * Create a new instance from a DatePeriod or CarbonPeriod object. + * + * @param CarbonPeriod|DatePeriod $period + * + * @return static + */ + public static function instance($period) + { + if ($period instanceof static) { + return $period->copy(); + } + + if ($period instanceof self) { + return new static( + $period->getStartDate(), + $period->getEndDate() ?: $period->getRecurrences(), + $period->getDateInterval(), + $period->getOptions() + ); + } + + if ($period instanceof DatePeriod) { + return new static( + $period->start, + $period->end ?: ($period->recurrences - 1), + $period->interval, + $period->include_start_date ? 0 : static::EXCLUDE_START_DATE + ); + } + + $class = static::class; + $type = \gettype($period); + + throw new NotAPeriodException( + 'Argument 1 passed to '.$class.'::'.__METHOD__.'() '. + 'must be an instance of DatePeriod or '.$class.', '. + ($type === 'object' ? 'instance of '.\get_class($period) : $type).' given.' + ); + } + + /** + * Create a new instance. + * + * @return static + */ + public static function create(...$params) + { + return static::createFromArray($params); + } + + /** + * Create a new instance from an array of parameters. + * + * @param array $params + * + * @return static + */ + public static function createFromArray(array $params) + { + return new static(...$params); + } + + /** + * Create CarbonPeriod from ISO 8601 string. + * + * @param string $iso + * @param int|null $options + * + * @return static + */ + public static function createFromIso($iso, $options = null) + { + $params = static::parseIso8601($iso); + + $instance = static::createFromArray($params); + + if ($options !== null) { + $instance->setOptions($options); + } + + return $instance; + } + + /** + * Return whether given interval contains non zero value of any time unit. + * + * @param \DateInterval $interval + * + * @return bool + */ + protected static function intervalHasTime(DateInterval $interval) + { + return $interval->h || $interval->i || $interval->s || $interval->f; + } + + /** + * Return whether given variable is an ISO 8601 specification. + * + * Note: Check is very basic, as actual validation will be done later when parsing. + * We just want to ensure that variable is not any other type of a valid parameter. + * + * @param mixed $var + * + * @return bool + */ + protected static function isIso8601($var) + { + if (!\is_string($var)) { + return false; + } + + // Match slash but not within a timezone name. + $part = '[a-z]+(?:[_-][a-z]+)*'; + + preg_match("#\b$part/$part\b|(/)#i", $var, $match); + + return isset($match[1]); + } + + /** + * Parse given ISO 8601 string into an array of arguments. + * + * @SuppressWarnings(PHPMD.ElseExpression) + * + * @param string $iso + * + * @return array + */ + protected static function parseIso8601($iso) + { + $result = []; + + $interval = null; + $start = null; + $end = null; + + foreach (explode('/', $iso) as $key => $part) { + if ($key === 0 && preg_match('/^R(\d*|INF)$/', $part, $match)) { + $parsed = \strlen($match[1]) ? (($match[1] !== 'INF') ? (int) $match[1] : INF) : null; + } elseif ($interval === null && $parsed = CarbonInterval::make($part)) { + $interval = $part; + } elseif ($start === null && $parsed = Carbon::make($part)) { + $start = $part; + } elseif ($end === null && $parsed = Carbon::make(static::addMissingParts($start ?? '', $part))) { + $end = $part; + } else { + throw new InvalidPeriodParameterException("Invalid ISO 8601 specification: $iso."); + } + + $result[] = $parsed; + } + + return $result; + } + + /** + * Add missing parts of the target date from the soure date. + * + * @param string $source + * @param string $target + * + * @return string + */ + protected static function addMissingParts($source, $target) + { + $pattern = '/'.preg_replace('/\d+/', '[0-9]+', preg_quote($target, '/')).'$/'; + + $result = preg_replace($pattern, $target, $source, 1, $count); + + return $count ? $result : $target; + } + + /** + * Register a custom macro. + * + * @example + * ``` + * CarbonPeriod::macro('middle', function () { + * return $this->getStartDate()->average($this->getEndDate()); + * }); + * echo CarbonPeriod::since('2011-05-12')->until('2011-06-03')->middle(); + * ``` + * + * @param string $name + * @param object|callable $macro + * + * @return void + */ + public static function macro($name, $macro) + { + static::$macros[$name] = $macro; + } + + /** + * Register macros from a mixin object. + * + * @example + * ``` + * CarbonPeriod::mixin(new class { + * public function addDays() { + * return function ($count = 1) { + * return $this->setStartDate( + * $this->getStartDate()->addDays($count) + * )->setEndDate( + * $this->getEndDate()->addDays($count) + * ); + * }; + * } + * public function subDays() { + * return function ($count = 1) { + * return $this->setStartDate( + * $this->getStartDate()->subDays($count) + * )->setEndDate( + * $this->getEndDate()->subDays($count) + * ); + * }; + * } + * }); + * echo CarbonPeriod::create('2000-01-01', '2000-02-01')->addDays(5)->subDays(3); + * ``` + * + * @param object|string $mixin + * + * @throws ReflectionException + * + * @return void + */ + public static function mixin($mixin) + { + static::baseMixin($mixin); + } + + /** + * Check if macro is registered. + * + * @param string $name + * + * @return bool + */ + public static function hasMacro($name) + { + return isset(static::$macros[$name]); + } + + /** + * Provide static proxy for instance aliases. + * + * @param string $method + * @param array $parameters + * + * @return mixed + */ + public static function __callStatic($method, $parameters) + { + $date = new static(); + + if (static::hasMacro($method)) { + return static::bindMacroContext(null, function () use (&$method, &$parameters, &$date) { + return $date->callMacro($method, $parameters); + }); + } + + return $date->$method(...$parameters); + } + + /** + * CarbonPeriod constructor. + * + * @SuppressWarnings(PHPMD.ElseExpression) + * + * @throws InvalidArgumentException + */ + public function __construct(...$arguments) + { + // Parse and assign arguments one by one. First argument may be an ISO 8601 spec, + // which will be first parsed into parts and then processed the same way. + + $argumentsCount = \count($arguments); + + if ($argumentsCount && static::isIso8601($iso = $arguments[0])) { + array_splice($arguments, 0, 1, static::parseIso8601($iso)); + } + + if ($argumentsCount === 1) { + if ($arguments[0] instanceof DatePeriod) { + $arguments = [ + $arguments[0]->start, + $arguments[0]->end ?: ($arguments[0]->recurrences - 1), + $arguments[0]->interval, + $arguments[0]->include_start_date ? 0 : static::EXCLUDE_START_DATE, + ]; + } elseif ($arguments[0] instanceof self) { + $arguments = [ + $arguments[0]->getStartDate(), + $arguments[0]->getEndDate() ?: $arguments[0]->getRecurrences(), + $arguments[0]->getDateInterval(), + $arguments[0]->getOptions(), + ]; + } + } + + foreach ($arguments as $argument) { + $parsedDate = null; + + if ($argument instanceof DateTimeZone) { + $this->setTimezone($argument); + } elseif ($this->dateInterval === null && + ( + (\is_string($argument) && preg_match( + '/^(-?\d(\d(?![\/-])|[^\d\/-]([\/-])?)*|P[T\d].*|(?:\h*\d+(?:\.\d+)?\h*[a-z]+)+)$/i', + $argument + )) || + $argument instanceof DateInterval || + $argument instanceof Closure + ) && + $parsedInterval = @CarbonInterval::make($argument) + ) { + $this->setDateInterval($parsedInterval); + } elseif ($this->startDate === null && $parsedDate = $this->makeDateTime($argument)) { + $this->setStartDate($parsedDate); + } elseif ($this->endDate === null && ($parsedDate = $parsedDate ?? $this->makeDateTime($argument))) { + $this->setEndDate($parsedDate); + } elseif ($this->recurrences === null && $this->endDate === null && is_numeric($argument)) { + $this->setRecurrences($argument); + } elseif ($this->options === null && (\is_int($argument) || $argument === null)) { + $this->setOptions($argument); + } else { + throw new InvalidPeriodParameterException('Invalid constructor parameters.'); + } + } + + if ($this->startDate === null) { + $this->setStartDate(Carbon::now()); + } + + if ($this->dateInterval === null) { + $this->setDateInterval(CarbonInterval::day()); + + $this->isDefaultInterval = true; + } + + if ($this->options === null) { + $this->setOptions(0); + } + } + + /** + * Get a copy of the instance. + * + * @return static + */ + public function copy() + { + return clone $this; + } + + /** + * Get the getter for a property allowing both `DatePeriod` snakeCase and camelCase names. + * + * @param string $name + * + * @return callable|null + */ + protected function getGetter(string $name) + { + switch (strtolower(preg_replace('/[A-Z]/', '_$0', $name))) { + case 'start': + case 'start_date': + return [$this, 'getStartDate']; + case 'end': + case 'end_date': + return [$this, 'getEndDate']; + case 'interval': + case 'date_interval': + return [$this, 'getDateInterval']; + case 'recurrences': + return [$this, 'getRecurrences']; + case 'include_start_date': + return [$this, 'isStartIncluded']; + case 'include_end_date': + return [$this, 'isEndIncluded']; + case 'current': + return [$this, 'current']; + default: + return null; + } + } + + /** + * Get a property allowing both `DatePeriod` snakeCase and camelCase names. + * + * @param string $name + * + * @return bool|CarbonInterface|CarbonInterval|int|null + */ + public function get(string $name) + { + $getter = $this->getGetter($name); + + if ($getter) { + return $getter(); + } + + throw new UnknownGetterException($name); + } + + /** + * Get a property allowing both `DatePeriod` snakeCase and camelCase names. + * + * @param string $name + * + * @return bool|CarbonInterface|CarbonInterval|int|null + */ + public function __get(string $name) + { + return $this->get($name); + } + + /** + * Check if an attribute exists on the object + * + * @param string $name + * + * @return bool + */ + public function __isset(string $name): bool + { + return $this->getGetter($name) !== null; + } + + /** + * @alias copy + * + * Get a copy of the instance. + * + * @return static + */ + public function clone() + { + return clone $this; + } + + /** + * Set the iteration item class. + * + * @param string $dateClass + * + * @return $this + */ + public function setDateClass(string $dateClass) + { + if (!is_a($dateClass, CarbonInterface::class, true)) { + throw new NotACarbonClassException($dateClass); + } + + $this->dateClass = $dateClass; + + if (is_a($dateClass, Carbon::class, true)) { + $this->toggleOptions(static::IMMUTABLE, false); + } elseif (is_a($dateClass, CarbonImmutable::class, true)) { + $this->toggleOptions(static::IMMUTABLE, true); + } + + return $this; + } + + /** + * Returns iteration item date class. + * + * @return string + */ + public function getDateClass(): string + { + return $this->dateClass; + } + + /** + * Change the period date interval. + * + * @param DateInterval|string $interval + * + * @throws InvalidIntervalException + * + * @return $this + */ + public function setDateInterval($interval) + { + if (!$interval = CarbonInterval::make($interval)) { + throw new InvalidIntervalException('Invalid interval.'); + } + + if ($interval->spec() === 'PT0S' && !$interval->f && !$interval->getStep()) { + throw new InvalidIntervalException('Empty interval is not accepted.'); + } + + $this->dateInterval = $interval; + + $this->isDefaultInterval = false; + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Invert the period date interval. + * + * @return $this + */ + public function invertDateInterval() + { + $interval = $this->dateInterval->invert(); + + return $this->setDateInterval($interval); + } + + /** + * Set start and end date. + * + * @param DateTime|DateTimeInterface|string $start + * @param DateTime|DateTimeInterface|string|null $end + * + * @return $this + */ + public function setDates($start, $end) + { + $this->setStartDate($start); + $this->setEndDate($end); + + return $this; + } + + /** + * Change the period options. + * + * @param int|null $options + * + * @throws InvalidArgumentException + * + * @return $this + */ + public function setOptions($options) + { + if (!\is_int($options) && $options !== null) { + throw new InvalidPeriodParameterException('Invalid options.'); + } + + $this->options = $options ?: 0; + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Get the period options. + * + * @return int + */ + public function getOptions() + { + return $this->options; + } + + /** + * Toggle given options on or off. + * + * @param int $options + * @param bool|null $state + * + * @throws \InvalidArgumentException + * + * @return $this + */ + public function toggleOptions($options, $state = null) + { + if ($state === null) { + $state = ($this->options & $options) !== $options; + } + + return $this->setOptions( + $state ? + $this->options | $options : + $this->options & ~$options + ); + } + + /** + * Toggle EXCLUDE_START_DATE option. + * + * @param bool $state + * + * @return $this + */ + public function excludeStartDate($state = true) + { + return $this->toggleOptions(static::EXCLUDE_START_DATE, $state); + } + + /** + * Toggle EXCLUDE_END_DATE option. + * + * @param bool $state + * + * @return $this + */ + public function excludeEndDate($state = true) + { + return $this->toggleOptions(static::EXCLUDE_END_DATE, $state); + } + + /** + * Get the underlying date interval. + * + * @return CarbonInterval + */ + public function getDateInterval() + { + return $this->dateInterval->copy(); + } + + /** + * Get start date of the period. + * + * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. + * + * @return CarbonInterface + */ + public function getStartDate(string $rounding = null) + { + $date = $this->startDate->avoidMutation(); + + return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date; + } + + /** + * Get end date of the period. + * + * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. + * + * @return CarbonInterface|null + */ + public function getEndDate(string $rounding = null) + { + if (!$this->endDate) { + return null; + } + + $date = $this->endDate->avoidMutation(); + + return $rounding ? $date->round($this->getDateInterval(), $rounding) : $date; + } + + /** + * Get number of recurrences. + * + * @return int|float|null + */ + public function getRecurrences() + { + return $this->recurrences; + } + + /** + * Returns true if the start date should be excluded. + * + * @return bool + */ + public function isStartExcluded() + { + return ($this->options & static::EXCLUDE_START_DATE) !== 0; + } + + /** + * Returns true if the end date should be excluded. + * + * @return bool + */ + public function isEndExcluded() + { + return ($this->options & static::EXCLUDE_END_DATE) !== 0; + } + + /** + * Returns true if the start date should be included. + * + * @return bool + */ + public function isStartIncluded() + { + return !$this->isStartExcluded(); + } + + /** + * Returns true if the end date should be included. + * + * @return bool + */ + public function isEndIncluded() + { + return !$this->isEndExcluded(); + } + + /** + * Return the start if it's included by option, else return the start + 1 period interval. + * + * @return CarbonInterface + */ + public function getIncludedStartDate() + { + $start = $this->getStartDate(); + + if ($this->isStartExcluded()) { + return $start->add($this->getDateInterval()); + } + + return $start; + } + + /** + * Return the end if it's included by option, else return the end - 1 period interval. + * Warning: if the period has no fixed end, this method will iterate the period to calculate it. + * + * @return CarbonInterface + */ + public function getIncludedEndDate() + { + $end = $this->getEndDate(); + + if (!$end) { + return $this->calculateEnd(); + } + + if ($this->isEndExcluded()) { + return $end->sub($this->getDateInterval()); + } + + return $end; + } + + /** + * Add a filter to the stack. + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * + * @param callable $callback + * @param string $name + * + * @return $this + */ + public function addFilter($callback, $name = null) + { + $tuple = $this->createFilterTuple(\func_get_args()); + + $this->filters[] = $tuple; + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Prepend a filter to the stack. + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * + * @param callable $callback + * @param string $name + * + * @return $this + */ + public function prependFilter($callback, $name = null) + { + $tuple = $this->createFilterTuple(\func_get_args()); + + array_unshift($this->filters, $tuple); + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Remove a filter by instance or name. + * + * @param callable|string $filter + * + * @return $this + */ + public function removeFilter($filter) + { + $key = \is_callable($filter) ? 0 : 1; + + $this->filters = array_values(array_filter( + $this->filters, + function ($tuple) use ($key, $filter) { + return $tuple[$key] !== $filter; + } + )); + + $this->updateInternalState(); + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Return whether given instance or name is in the filter stack. + * + * @param callable|string $filter + * + * @return bool + */ + public function hasFilter($filter) + { + $key = \is_callable($filter) ? 0 : 1; + + foreach ($this->filters as $tuple) { + if ($tuple[$key] === $filter) { + return true; + } + } + + return false; + } + + /** + * Get filters stack. + * + * @return array + */ + public function getFilters() + { + return $this->filters; + } + + /** + * Set filters stack. + * + * @param array $filters + * + * @return $this + */ + public function setFilters(array $filters) + { + $this->filters = $filters; + + $this->updateInternalState(); + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Reset filters stack. + * + * @return $this + */ + public function resetFilters() + { + $this->filters = []; + + if ($this->endDate !== null) { + $this->filters[] = [static::END_DATE_FILTER, null]; + } + + if ($this->recurrences !== null) { + $this->filters[] = [static::RECURRENCES_FILTER, null]; + } + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Add a recurrences filter (set maximum number of recurrences). + * + * @param int|float|null $recurrences + * + * @throws InvalidArgumentException + * + * @return $this + */ + public function setRecurrences($recurrences) + { + if ((!is_numeric($recurrences) && $recurrences !== null) || $recurrences < 0) { + throw new InvalidPeriodParameterException('Invalid number of recurrences.'); + } + + if ($recurrences === null) { + return $this->removeFilter(static::RECURRENCES_FILTER); + } + + $this->recurrences = $recurrences === INF ? INF : (int) $recurrences; + + if (!$this->hasFilter(static::RECURRENCES_FILTER)) { + return $this->addFilter(static::RECURRENCES_FILTER); + } + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Change the period start date. + * + * @param DateTime|DateTimeInterface|string $date + * @param bool|null $inclusive + * + * @throws InvalidPeriodDateException + * + * @return $this + */ + public function setStartDate($date, $inclusive = null) + { + if (!$this->isInfiniteDate($date) && !($date = ([$this->dateClass, 'make'])($date))) { + throw new InvalidPeriodDateException('Invalid start date.'); + } + + $this->startDate = $date; + + if ($inclusive !== null) { + $this->toggleOptions(static::EXCLUDE_START_DATE, !$inclusive); + } + + return $this; + } + + /** + * Change the period end date. + * + * @param DateTime|DateTimeInterface|string|null $date + * @param bool|null $inclusive + * + * @throws \InvalidArgumentException + * + * @return $this + */ + public function setEndDate($date, $inclusive = null) + { + if ($date !== null && !$this->isInfiniteDate($date) && !$date = ([$this->dateClass, 'make'])($date)) { + throw new InvalidPeriodDateException('Invalid end date.'); + } + + if (!$date) { + return $this->removeFilter(static::END_DATE_FILTER); + } + + $this->endDate = $date; + + if ($inclusive !== null) { + $this->toggleOptions(static::EXCLUDE_END_DATE, !$inclusive); + } + + if (!$this->hasFilter(static::END_DATE_FILTER)) { + return $this->addFilter(static::END_DATE_FILTER); + } + + $this->handleChangedParameters(); + + return $this; + } + + /** + * Check if the current position is valid. + * + * @return bool + */ + #[ReturnTypeWillChange] + public function valid() + { + return $this->validateCurrentDate() === true; + } + + /** + * Return the current key. + * + * @return int|null + */ + #[ReturnTypeWillChange] + public function key() + { + return $this->valid() + ? $this->key + : null; + } + + /** + * Return the current date. + * + * @return CarbonInterface|null + */ + #[ReturnTypeWillChange] + public function current() + { + return $this->valid() + ? $this->prepareForReturn($this->current) + : null; + } + + /** + * Move forward to the next date. + * + * @throws RuntimeException + * + * @return void + */ + #[ReturnTypeWillChange] + public function next() + { + if ($this->current === null) { + $this->rewind(); + } + + if ($this->validationResult !== static::END_ITERATION) { + $this->key++; + + $this->incrementCurrentDateUntilValid(); + } + } + + /** + * Rewind to the start date. + * + * Iterating over a date in the UTC timezone avoids bug during backward DST change. + * + * @see https://bugs.php.net/bug.php?id=72255 + * @see https://bugs.php.net/bug.php?id=74274 + * @see https://wiki.php.net/rfc/datetime_and_daylight_saving_time + * + * @throws RuntimeException + * + * @return void + */ + #[ReturnTypeWillChange] + public function rewind() + { + $this->key = 0; + $this->current = ([$this->dateClass, 'make'])($this->startDate); + $settings = $this->getSettings(); + + if ($this->hasLocalTranslator()) { + $settings['locale'] = $this->getTranslatorLocale(); + } + + $this->current->settings($settings); + $this->timezone = static::intervalHasTime($this->dateInterval) ? $this->current->getTimezone() : null; + + if ($this->timezone) { + $this->current = $this->current->utc(); + } + + $this->validationResult = null; + + if ($this->isStartExcluded() || $this->validateCurrentDate() === false) { + $this->incrementCurrentDateUntilValid(); + } + } + + /** + * Skip iterations and returns iteration state (false if ended, true if still valid). + * + * @param int $count steps number to skip (1 by default) + * + * @return bool + */ + public function skip($count = 1) + { + for ($i = $count; $this->valid() && $i > 0; $i--) { + $this->next(); + } + + return $this->valid(); + } + + /** + * Format the date period as ISO 8601. + * + * @return string + */ + public function toIso8601String() + { + $parts = []; + + if ($this->recurrences !== null) { + $parts[] = 'R'.$this->recurrences; + } + + $parts[] = $this->startDate->toIso8601String(); + + $parts[] = $this->dateInterval->spec(); + + if ($this->endDate !== null) { + $parts[] = $this->endDate->toIso8601String(); + } + + return implode('/', $parts); + } + + /** + * Convert the date period into a string. + * + * @return string + */ + public function toString() + { + $translator = ([$this->dateClass, 'getTranslator'])(); + + $parts = []; + + $format = !$this->startDate->isStartOfDay() || ($this->endDate && !$this->endDate->isStartOfDay()) + ? 'Y-m-d H:i:s' + : 'Y-m-d'; + + if ($this->recurrences !== null) { + $parts[] = $this->translate('period_recurrences', [], $this->recurrences, $translator); + } + + $parts[] = $this->translate('period_interval', [':interval' => $this->dateInterval->forHumans([ + 'join' => true, + ])], null, $translator); + + $parts[] = $this->translate('period_start_date', [':date' => $this->startDate->rawFormat($format)], null, $translator); + + if ($this->endDate !== null) { + $parts[] = $this->translate('period_end_date', [':date' => $this->endDate->rawFormat($format)], null, $translator); + } + + $result = implode(' ', $parts); + + return mb_strtoupper(mb_substr($result, 0, 1)).mb_substr($result, 1); + } + + /** + * Format the date period as ISO 8601. + * + * @return string + */ + public function spec() + { + return $this->toIso8601String(); + } + + /** + * Cast the current instance into the given class. + * + * @param string $className The $className::instance() method will be called to cast the current object. + * + * @return DatePeriod + */ + public function cast(string $className) + { + if (!method_exists($className, 'instance')) { + if (is_a($className, DatePeriod::class, true)) { + return new $className( + $this->rawDate($this->getStartDate()), + $this->getDateInterval(), + $this->getEndDate() ? $this->rawDate($this->getIncludedEndDate()) : $this->getRecurrences(), + $this->isStartExcluded() ? DatePeriod::EXCLUDE_START_DATE : 0 + ); + } + + throw new InvalidCastException("$className has not the instance() method needed to cast the date."); + } + + return $className::instance($this); + } + + /** + * Return native DatePeriod PHP object matching the current instance. + * + * @example + * ``` + * var_dump(CarbonPeriod::create('2021-01-05', '2021-02-15')->toDatePeriod()); + * ``` + * + * @return DatePeriod + */ + public function toDatePeriod() + { + return $this->cast(DatePeriod::class); + } + + /** + * Return `true` if the period has no custom filter and is guaranteed to be endless. + * + * Note that we can't check if a period is endless as soon as it has custom filters + * because filters can emit `CarbonPeriod::END_ITERATION` to stop the iteration in + * a way we can't predict without actually iterating the period. + */ + public function isUnfilteredAndEndLess(): bool + { + foreach ($this->filters as $filter) { + switch ($filter) { + case [static::RECURRENCES_FILTER, null]: + if ($this->recurrences !== null && is_finite($this->recurrences)) { + return false; + } + + break; + + case [static::END_DATE_FILTER, null]: + if ($this->endDate !== null && !$this->endDate->isEndOfTime()) { + return false; + } + + break; + + default: + return false; + } + } + + return true; + } + + /** + * Convert the date period into an array without changing current iteration state. + * + * @return CarbonInterface[] + */ + public function toArray() + { + if ($this->isUnfilteredAndEndLess()) { + throw new EndLessPeriodException("Endless period can't be converted to array nor counted."); + } + + $state = [ + $this->key, + $this->current ? $this->current->avoidMutation() : null, + $this->validationResult, + ]; + + $result = iterator_to_array($this); + + [$this->key, $this->current, $this->validationResult] = $state; + + return $result; + } + + /** + * Count dates in the date period. + * + * @return int + */ + #[ReturnTypeWillChange] + public function count() + { + return \count($this->toArray()); + } + + /** + * Return the first date in the date period. + * + * @return CarbonInterface|null + */ + public function first() + { + if ($this->isUnfilteredAndEndLess()) { + foreach ($this as $date) { + $this->rewind(); + + return $date; + } + + return null; + } + + return ($this->toArray() ?: [])[0] ?? null; + } + + /** + * Return the last date in the date period. + * + * @return CarbonInterface|null + */ + public function last() + { + $array = $this->toArray(); + + return $array ? $array[\count($array) - 1] : null; + } + + /** + * Convert the date period into a string. + * + * @return string + */ + public function __toString() + { + return $this->toString(); + } + + /** + * Add aliases for setters. + * + * CarbonPeriod::days(3)->hours(5)->invert() + * ->sinceNow()->until('2010-01-10') + * ->filter(...) + * ->count() + * + * Note: We use magic method to let static and instance aliases with the same names. + * + * @param string $method + * @param array $parameters + * + * @return mixed + */ + public function __call($method, $parameters) + { + if (static::hasMacro($method)) { + return static::bindMacroContext($this, function () use (&$method, &$parameters) { + return $this->callMacro($method, $parameters); + }); + } + + $roundedValue = $this->callRoundMethod($method, $parameters); + + if ($roundedValue !== null) { + return $roundedValue; + } + + $first = \count($parameters) >= 1 ? $parameters[0] : null; + $second = \count($parameters) >= 2 ? $parameters[1] : null; + + switch ($method) { + case 'start': + case 'since': + return $this->setStartDate($first, $second); + + case 'sinceNow': + return $this->setStartDate(new Carbon(), $first); + + case 'end': + case 'until': + return $this->setEndDate($first, $second); + + case 'untilNow': + return $this->setEndDate(new Carbon(), $first); + + case 'dates': + case 'between': + return $this->setDates($first, $second); + + case 'recurrences': + case 'times': + return $this->setRecurrences($first); + + case 'options': + return $this->setOptions($first); + + case 'toggle': + return $this->toggleOptions($first, $second); + + case 'filter': + case 'push': + return $this->addFilter($first, $second); + + case 'prepend': + return $this->prependFilter($first, $second); + + case 'filters': + return $this->setFilters($first ?: []); + + case 'interval': + case 'each': + case 'every': + case 'step': + case 'stepBy': + return $this->setDateInterval($first); + + case 'invert': + return $this->invertDateInterval(); + + case 'years': + case 'year': + case 'months': + case 'month': + case 'weeks': + case 'week': + case 'days': + case 'dayz': + case 'day': + case 'hours': + case 'hour': + case 'minutes': + case 'minute': + case 'seconds': + case 'second': + return $this->setDateInterval(( + // Override default P1D when instantiating via fluent setters. + [$this->isDefaultInterval ? new CarbonInterval('PT0S') : $this->dateInterval, $method] + )( + \count($parameters) === 0 ? 1 : $first + )); + } + + if ($this->localStrictModeEnabled ?? Carbon::isStrictModeEnabled()) { + throw new UnknownMethodException($method); + } + + return $this; + } + + /** + * Set the instance's timezone from a string or object and apply it to start/end. + * + * @param \DateTimeZone|string $timezone + * + * @return static + */ + public function setTimezone($timezone) + { + $this->tzName = $timezone; + $this->timezone = $timezone; + + if ($this->startDate) { + $this->setStartDate($this->startDate->setTimezone($timezone)); + } + + if ($this->endDate) { + $this->setEndDate($this->endDate->setTimezone($timezone)); + } + + return $this; + } + + /** + * Set the instance's timezone from a string or object and add/subtract the offset difference to start/end. + * + * @param \DateTimeZone|string $timezone + * + * @return static + */ + public function shiftTimezone($timezone) + { + $this->tzName = $timezone; + $this->timezone = $timezone; + + if ($this->startDate) { + $this->setStartDate($this->startDate->shiftTimezone($timezone)); + } + + if ($this->endDate) { + $this->setEndDate($this->endDate->shiftTimezone($timezone)); + } + + return $this; + } + + /** + * Returns the end is set, else calculated from start an recurrences. + * + * @param string|null $rounding Optional rounding 'floor', 'ceil', 'round' using the period interval. + * + * @return CarbonInterface + */ + public function calculateEnd(string $rounding = null) + { + if ($end = $this->getEndDate($rounding)) { + return $end; + } + + if ($this->dateInterval->isEmpty()) { + return $this->getStartDate($rounding); + } + + $date = $this->getEndFromRecurrences() ?? $this->iterateUntilEnd(); + + if ($date && $rounding) { + $date = $date->avoidMutation()->round($this->getDateInterval(), $rounding); + } + + return $date; + } + + /** + * @return CarbonInterface|null + */ + private function getEndFromRecurrences() + { + if ($this->recurrences === null) { + throw new UnreachableException( + "Could not calculate period end without either explicit end or recurrences.\n". + "If you're looking for a forever-period, use ->setRecurrences(INF)." + ); + } + + if ($this->recurrences === INF) { + $start = $this->getStartDate(); + + return $start < $start->avoidMutation()->add($this->getDateInterval()) + ? CarbonImmutable::endOfTime() + : CarbonImmutable::startOfTime(); + } + + if ($this->filters === [[static::RECURRENCES_FILTER, null]]) { + return $this->getStartDate()->avoidMutation()->add( + $this->getDateInterval()->times( + $this->recurrences - ($this->isStartExcluded() ? 0 : 1) + ) + ); + } + + return null; + } + + /** + * @return CarbonInterface|null + */ + private function iterateUntilEnd() + { + $attempts = 0; + $date = null; + + foreach ($this as $date) { + if (++$attempts > static::END_MAX_ATTEMPTS) { + throw new UnreachableException( + 'Could not calculate period end after iterating '.static::END_MAX_ATTEMPTS.' times.' + ); + } + } + + return $date; + } + + /** + * Returns true if the current period overlaps the given one (if 1 parameter passed) + * or the period between 2 dates (if 2 parameters passed). + * + * @param CarbonPeriod|\DateTimeInterface|Carbon|CarbonImmutable|string $rangeOrRangeStart + * @param \DateTimeInterface|Carbon|CarbonImmutable|string|null $rangeEnd + * + * @return bool + */ + public function overlaps($rangeOrRangeStart, $rangeEnd = null) + { + $range = $rangeEnd ? static::create($rangeOrRangeStart, $rangeEnd) : $rangeOrRangeStart; + + if (!($range instanceof self)) { + $range = static::create($range); + } + + [$start, $end] = $this->orderCouple($this->getStartDate(), $this->calculateEnd()); + [$rangeStart, $rangeEnd] = $this->orderCouple($range->getStartDate(), $range->calculateEnd()); + + return $end > $rangeStart && $rangeEnd > $start; + } + + /** + * Execute a given function on each date of the period. + * + * @example + * ``` + * Carbon::create('2020-11-29')->daysUntil('2020-12-24')->forEach(function (Carbon $date) { + * echo $date->diffInDays('2020-12-25')." days before Christmas!\n"; + * }); + * ``` + * + * @param callable $callback + */ + public function forEach(callable $callback) + { + foreach ($this as $date) { + $callback($date); + } + } + + /** + * Execute a given function on each date of the period and yield the result of this function. + * + * @example + * ``` + * $period = Carbon::create('2020-11-29')->daysUntil('2020-12-24'); + * echo implode("\n", iterator_to_array($period->map(function (Carbon $date) { + * return $date->diffInDays('2020-12-25').' days before Christmas!'; + * }))); + * ``` + * + * @param callable $callback + * + * @return \Generator + */ + public function map(callable $callback) + { + foreach ($this as $date) { + yield $callback($date); + } + } + + /** + * Determines if the instance is equal to another. + * Warning: if options differ, instances wil never be equal. + * + * @param mixed $period + * + * @see equalTo() + * + * @return bool + */ + public function eq($period): bool + { + return $this->equalTo($period); + } + + /** + * Determines if the instance is equal to another. + * Warning: if options differ, instances wil never be equal. + * + * @param mixed $period + * + * @return bool + */ + public function equalTo($period): bool + { + if (!($period instanceof self)) { + $period = self::make($period); + } + + $end = $this->getEndDate(); + + return $period !== null + && $this->getDateInterval()->eq($period->getDateInterval()) + && $this->getStartDate()->eq($period->getStartDate()) + && ($end ? $end->eq($period->getEndDate()) : $this->getRecurrences() === $period->getRecurrences()) + && ($this->getOptions() & (~static::IMMUTABLE)) === ($period->getOptions() & (~static::IMMUTABLE)); + } + + /** + * Determines if the instance is not equal to another. + * Warning: if options differ, instances wil never be equal. + * + * @param mixed $period + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($period): bool + { + return $this->notEqualTo($period); + } + + /** + * Determines if the instance is not equal to another. + * Warning: if options differ, instances wil never be equal. + * + * @param mixed $period + * + * @return bool + */ + public function notEqualTo($period): bool + { + return !$this->eq($period); + } + + /** + * Determines if the start date is before an other given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function startsBefore($date = null): bool + { + return $this->getStartDate()->lessThan($this->resolveCarbon($date)); + } + + /** + * Determines if the start date is before or the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function startsBeforeOrAt($date = null): bool + { + return $this->getStartDate()->lessThanOrEqualTo($this->resolveCarbon($date)); + } + + /** + * Determines if the start date is after an other given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function startsAfter($date = null): bool + { + return $this->getStartDate()->greaterThan($this->resolveCarbon($date)); + } + + /** + * Determines if the start date is after or the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function startsAfterOrAt($date = null): bool + { + return $this->getStartDate()->greaterThanOrEqualTo($this->resolveCarbon($date)); + } + + /** + * Determines if the start date is the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function startsAt($date = null): bool + { + return $this->getStartDate()->equalTo($this->resolveCarbon($date)); + } + + /** + * Determines if the end date is before an other given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function endsBefore($date = null): bool + { + return $this->calculateEnd()->lessThan($this->resolveCarbon($date)); + } + + /** + * Determines if the end date is before or the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function endsBeforeOrAt($date = null): bool + { + return $this->calculateEnd()->lessThanOrEqualTo($this->resolveCarbon($date)); + } + + /** + * Determines if the end date is after an other given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function endsAfter($date = null): bool + { + return $this->calculateEnd()->greaterThan($this->resolveCarbon($date)); + } + + /** + * Determines if the end date is after or the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function endsAfterOrAt($date = null): bool + { + return $this->calculateEnd()->greaterThanOrEqualTo($this->resolveCarbon($date)); + } + + /** + * Determines if the end date is the same as a given date. + * (Rather start/end are included by options is ignored.) + * + * @param mixed $date + * + * @return bool + */ + public function endsAt($date = null): bool + { + return $this->calculateEnd()->equalTo($this->resolveCarbon($date)); + } + + /** + * Return true if start date is now or later. + * (Rather start/end are included by options is ignored.) + * + * @return bool + */ + public function isStarted(): bool + { + return $this->startsBeforeOrAt(); + } + + /** + * Return true if end date is now or later. + * (Rather start/end are included by options is ignored.) + * + * @return bool + */ + public function isEnded(): bool + { + return $this->endsBeforeOrAt(); + } + + /** + * Return true if now is between start date (included) and end date (excluded). + * (Rather start/end are included by options is ignored.) + * + * @return bool + */ + public function isInProgress(): bool + { + return $this->isStarted() && !$this->isEnded(); + } + + /** + * Round the current instance at the given unit with given precision if specified and the given function. + * + * @param string $unit + * @param float|int|string|\DateInterval|null $precision + * @param string $function + * + * @return $this + */ + public function roundUnit($unit, $precision = 1, $function = 'round') + { + $this->setStartDate($this->getStartDate()->roundUnit($unit, $precision, $function)); + + if ($this->endDate) { + $this->setEndDate($this->getEndDate()->roundUnit($unit, $precision, $function)); + } + + $this->setDateInterval($this->getDateInterval()->roundUnit($unit, $precision, $function)); + + return $this; + } + + /** + * Truncate the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int|string|\DateInterval|null $precision + * + * @return $this + */ + public function floorUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'floor'); + } + + /** + * Ceil the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int|string|\DateInterval|null $precision + * + * @return $this + */ + public function ceilUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'ceil'); + } + + /** + * Round the current instance second with given precision if specified (else period interval is used). + * + * @param float|int|string|\DateInterval|null $precision + * @param string $function + * + * @return $this + */ + public function round($precision = null, $function = 'round') + { + return $this->roundWith( + $precision ?? $this->getDateInterval()->setLocalTranslator(TranslatorImmutable::get('en'))->forHumans(), + $function + ); + } + + /** + * Round the current instance second with given precision if specified (else period interval is used). + * + * @param float|int|string|\DateInterval|null $precision + * + * @return $this + */ + public function floor($precision = null) + { + return $this->round($precision, 'floor'); + } + + /** + * Ceil the current instance second with given precision if specified (else period interval is used). + * + * @param float|int|string|\DateInterval|null $precision + * + * @return $this + */ + public function ceil($precision = null) + { + return $this->round($precision, 'ceil'); + } + + /** + * Specify data which should be serialized to JSON. + * + * @link https://php.net/manual/en/jsonserializable.jsonserialize.php + * + * @return CarbonInterface[] + */ + #[ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->toArray(); + } + + /** + * Return true if the given date is between start and end. + * + * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date + * + * @return bool + */ + public function contains($date = null): bool + { + $startMethod = 'startsBefore'.($this->isStartIncluded() ? 'OrAt' : ''); + $endMethod = 'endsAfter'.($this->isEndIncluded() ? 'OrAt' : ''); + + return $this->$startMethod($date) && $this->$endMethod($date); + } + + /** + * Return true if the current period follows a given other period (with no overlap). + * For instance, [2019-08-01 -> 2019-08-12] follows [2019-07-29 -> 2019-07-31] + * Note than in this example, follows() would be false if 2019-08-01 or 2019-07-31 was excluded by options. + * + * @param \Carbon\CarbonPeriod|\DatePeriod|string $period + * + * @return bool + */ + public function follows($period, ...$arguments): bool + { + $period = $this->resolveCarbonPeriod($period, ...$arguments); + + return $this->getIncludedStartDate()->equalTo($period->getIncludedEndDate()->add($period->getDateInterval())); + } + + /** + * Return true if the given other period follows the current one (with no overlap). + * For instance, [2019-07-29 -> 2019-07-31] is followed by [2019-08-01 -> 2019-08-12] + * Note than in this example, isFollowedBy() would be false if 2019-08-01 or 2019-07-31 was excluded by options. + * + * @param \Carbon\CarbonPeriod|\DatePeriod|string $period + * + * @return bool + */ + public function isFollowedBy($period, ...$arguments): bool + { + $period = $this->resolveCarbonPeriod($period, ...$arguments); + + return $period->follows($this); + } + + /** + * Return true if the given period either follows or is followed by the current one. + * + * @see follows() + * @see isFollowedBy() + * + * @param \Carbon\CarbonPeriod|\DatePeriod|string $period + * + * @return bool + */ + public function isConsecutiveWith($period, ...$arguments): bool + { + return $this->follows($period, ...$arguments) || $this->isFollowedBy($period, ...$arguments); + } + + /** + * Update properties after removing built-in filters. + * + * @return void + */ + protected function updateInternalState() + { + if (!$this->hasFilter(static::END_DATE_FILTER)) { + $this->endDate = null; + } + + if (!$this->hasFilter(static::RECURRENCES_FILTER)) { + $this->recurrences = null; + } + } + + /** + * Create a filter tuple from raw parameters. + * + * Will create an automatic filter callback for one of Carbon's is* methods. + * + * @param array $parameters + * + * @return array + */ + protected function createFilterTuple(array $parameters) + { + $method = array_shift($parameters); + + if (!$this->isCarbonPredicateMethod($method)) { + return [$method, array_shift($parameters)]; + } + + return [function ($date) use ($method, $parameters) { + return ([$date, $method])(...$parameters); + }, $method]; + } + + /** + * Return whether given callable is a string pointing to one of Carbon's is* methods + * and should be automatically converted to a filter callback. + * + * @param callable $callable + * + * @return bool + */ + protected function isCarbonPredicateMethod($callable) + { + return \is_string($callable) && str_starts_with($callable, 'is') && + (method_exists($this->dateClass, $callable) || ([$this->dateClass, 'hasMacro'])($callable)); + } + + /** + * Recurrences filter callback (limits number of recurrences). + * + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * + * @param \Carbon\Carbon $current + * @param int $key + * + * @return bool|string + */ + protected function filterRecurrences($current, $key) + { + if ($key < $this->recurrences) { + return true; + } + + return static::END_ITERATION; + } + + /** + * End date filter callback. + * + * @param \Carbon\Carbon $current + * + * @return bool|string + */ + protected function filterEndDate($current) + { + if (!$this->isEndExcluded() && $current == $this->endDate) { + return true; + } + + if ($this->dateInterval->invert ? $current > $this->endDate : $current < $this->endDate) { + return true; + } + + return static::END_ITERATION; + } + + /** + * End iteration filter callback. + * + * @return string + */ + protected function endIteration() + { + return static::END_ITERATION; + } + + /** + * Handle change of the parameters. + */ + protected function handleChangedParameters() + { + if (($this->getOptions() & static::IMMUTABLE) && $this->dateClass === Carbon::class) { + $this->setDateClass(CarbonImmutable::class); + } elseif (!($this->getOptions() & static::IMMUTABLE) && $this->dateClass === CarbonImmutable::class) { + $this->setDateClass(Carbon::class); + } + + $this->validationResult = null; + } + + /** + * Validate current date and stop iteration when necessary. + * + * Returns true when current date is valid, false if it is not, or static::END_ITERATION + * when iteration should be stopped. + * + * @return bool|string + */ + protected function validateCurrentDate() + { + if ($this->current === null) { + $this->rewind(); + } + + // Check after the first rewind to avoid repeating the initial validation. + return $this->validationResult ?? ($this->validationResult = $this->checkFilters()); + } + + /** + * Check whether current value and key pass all the filters. + * + * @return bool|string + */ + protected function checkFilters() + { + $current = $this->prepareForReturn($this->current); + + foreach ($this->filters as $tuple) { + $result = \call_user_func( + $tuple[0], + $current->avoidMutation(), + $this->key, + $this + ); + + if ($result === static::END_ITERATION) { + return static::END_ITERATION; + } + + if (!$result) { + return false; + } + } + + return true; + } + + /** + * Prepare given date to be returned to the external logic. + * + * @param CarbonInterface $date + * + * @return CarbonInterface + */ + protected function prepareForReturn(CarbonInterface $date) + { + $date = ([$this->dateClass, 'make'])($date); + + if ($this->timezone) { + $date = $date->setTimezone($this->timezone); + } + + return $date; + } + + /** + * Keep incrementing the current date until a valid date is found or the iteration is ended. + * + * @throws RuntimeException + * + * @return void + */ + protected function incrementCurrentDateUntilValid() + { + $attempts = 0; + + do { + $this->current = $this->current->add($this->dateInterval); + + $this->validationResult = null; + + if (++$attempts > static::NEXT_MAX_ATTEMPTS) { + throw new UnreachableException('Could not find next valid date.'); + } + } while ($this->validateCurrentDate() === false); + } + + /** + * Call given macro. + * + * @param string $name + * @param array $parameters + * + * @return mixed + */ + protected function callMacro($name, $parameters) + { + $macro = static::$macros[$name]; + + if ($macro instanceof Closure) { + $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); + + return ($boundMacro ?: $macro)(...$parameters); + } + + return $macro(...$parameters); + } + + /** + * Return the Carbon instance passed through, a now instance in the same timezone + * if null given or parse the input if string given. + * + * @param \Carbon\Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|\DateTimeInterface|string|null $date + * + * @return \Carbon\CarbonInterface + */ + protected function resolveCarbon($date = null) + { + return $this->getStartDate()->nowWithSameTz()->carbonize($date); + } + + /** + * Resolve passed arguments or DatePeriod to a CarbonPeriod object. + * + * @param mixed $period + * @param mixed ...$arguments + * + * @return static + */ + protected function resolveCarbonPeriod($period, ...$arguments) + { + if ($period instanceof self) { + return $period; + } + + return $period instanceof DatePeriod + ? static::instance($period) + : static::create($period, ...$arguments); + } + + private function orderCouple($first, $second): array + { + return $first > $second ? [$second, $first] : [$first, $second]; + } + + private function makeDateTime($value): ?DateTimeInterface + { + if ($value instanceof DateTimeInterface) { + return $value; + } + + if (\is_string($value)) { + $value = trim($value); + + if (!preg_match('/^P[\dT]/', $value) && + !preg_match('/^R\d/', $value) && + preg_match('/[a-z\d]/i', $value) + ) { + return Carbon::parse($value, $this->tzName); + } + } + + return null; + } + + private function isInfiniteDate($date): bool + { + return $date instanceof CarbonInterface && ($date->isEndOfTime() || $date->isStartOfTime()); + } + + private function rawDate($date): ?DateTimeInterface + { + if ($date === false || $date === null) { + return null; + } + + if ($date instanceof CarbonInterface) { + return $date->isMutable() + ? $date->toDateTime() + : $date->toDateTimeImmutable(); + } + + if (\in_array(\get_class($date), [DateTime::class, DateTimeImmutable::class], true)) { + return $date; + } + + $class = $date instanceof DateTime ? DateTime::class : DateTimeImmutable::class; + + return new $class($date->format('Y-m-d H:i:s.u'), $date->getTimezone()); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php new file mode 100644 index 00000000000..c81899f1ea4 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/CarbonTimeZone.php @@ -0,0 +1,320 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Exceptions\InvalidCastException; +use Carbon\Exceptions\InvalidTimeZoneException; +use DateTimeInterface; +use DateTimeZone; +use Throwable; + +class CarbonTimeZone extends DateTimeZone +{ + public function __construct($timezone = null) + { + parent::__construct(static::getDateTimeZoneNameFromMixed($timezone)); + } + + protected static function parseNumericTimezone($timezone) + { + if ($timezone <= -100 || $timezone >= 100) { + throw new InvalidTimeZoneException('Absolute timezone offset cannot be greater than 100.'); + } + + return ($timezone >= 0 ? '+' : '').ltrim($timezone, '+').':00'; + } + + protected static function getDateTimeZoneNameFromMixed($timezone) + { + if ($timezone === null) { + return date_default_timezone_get(); + } + + if (\is_string($timezone)) { + $timezone = preg_replace('/^\s*([+-]\d+)(\d{2})\s*$/', '$1:$2', $timezone); + } + + if (is_numeric($timezone)) { + return static::parseNumericTimezone($timezone); + } + + return $timezone; + } + + protected static function getDateTimeZoneFromName(&$name) + { + return @timezone_open($name = (string) static::getDateTimeZoneNameFromMixed($name)); + } + + /** + * Cast the current instance into the given class. + * + * @param string $className The $className::instance() method will be called to cast the current object. + * + * @return DateTimeZone + */ + public function cast(string $className) + { + if (!method_exists($className, 'instance')) { + if (is_a($className, DateTimeZone::class, true)) { + return new $className($this->getName()); + } + + throw new InvalidCastException("$className has not the instance() method needed to cast the date."); + } + + return $className::instance($this); + } + + /** + * Create a CarbonTimeZone from mixed input. + * + * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it. + * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages. + * + * @throws InvalidTimeZoneException + * + * @return false|static + */ + public static function instance($object = null, $objectDump = null) + { + $tz = $object; + + if ($tz instanceof static) { + return $tz; + } + + if ($tz === null) { + return new static(); + } + + if (!$tz instanceof DateTimeZone) { + $tz = static::getDateTimeZoneFromName($object); + } + + if ($tz !== false) { + return new static($tz->getName()); + } + + if (Carbon::isStrictModeEnabled()) { + throw new InvalidTimeZoneException('Unknown or bad timezone ('.($objectDump ?: $object).')'); + } + + return false; + } + + /** + * Returns abbreviated name of the current timezone according to DST setting. + * + * @param bool $dst + * + * @return string + */ + public function getAbbreviatedName($dst = false) + { + $name = $this->getName(); + + foreach ($this->listAbbreviations() as $abbreviation => $zones) { + foreach ($zones as $zone) { + if ($zone['timezone_id'] === $name && $zone['dst'] == $dst) { + return $abbreviation; + } + } + } + + return 'unknown'; + } + + /** + * @alias getAbbreviatedName + * + * Returns abbreviated name of the current timezone according to DST setting. + * + * @param bool $dst + * + * @return string + */ + public function getAbbr($dst = false) + { + return $this->getAbbreviatedName($dst); + } + + /** + * Get the offset as string "sHH:MM" (such as "+00:00" or "-12:30"). + * + * @param DateTimeInterface|null $date + * + * @return string + */ + public function toOffsetName(DateTimeInterface $date = null) + { + return static::getOffsetNameFromMinuteOffset( + $this->getOffset($date ?: Carbon::now($this)) / 60 + ); + } + + /** + * Returns a new CarbonTimeZone object using the offset string instead of region string. + * + * @param DateTimeInterface|null $date + * + * @return CarbonTimeZone + */ + public function toOffsetTimeZone(DateTimeInterface $date = null) + { + return new static($this->toOffsetName($date)); + } + + /** + * Returns the first region string (such as "America/Toronto") that matches the current timezone or + * false if no match is found. + * + * @see timezone_name_from_abbr native PHP function. + * + * @param DateTimeInterface|null $date + * @param int $isDst + * + * @return string|false + */ + public function toRegionName(DateTimeInterface $date = null, $isDst = 1) + { + $name = $this->getName(); + $firstChar = substr($name, 0, 1); + + if ($firstChar !== '+' && $firstChar !== '-') { + return $name; + } + + $date = $date ?: Carbon::now($this); + + // Integer construction no longer supported since PHP 8 + // @codeCoverageIgnoreStart + try { + $offset = @$this->getOffset($date) ?: 0; + } catch (Throwable $e) { + $offset = 0; + } + // @codeCoverageIgnoreEnd + + $name = @timezone_name_from_abbr('', $offset, $isDst); + + if ($name) { + return $name; + } + + foreach (timezone_identifiers_list() as $timezone) { + if (Carbon::instance($date)->tz($timezone)->getOffset() === $offset) { + return $timezone; + } + } + + return false; + } + + /** + * Returns a new CarbonTimeZone object using the region string instead of offset string. + * + * @param DateTimeInterface|null $date + * + * @return CarbonTimeZone|false + */ + public function toRegionTimeZone(DateTimeInterface $date = null) + { + $tz = $this->toRegionName($date); + + if ($tz !== false) { + return new static($tz); + } + + if (Carbon::isStrictModeEnabled()) { + throw new InvalidTimeZoneException('Unknown timezone for offset '.$this->getOffset($date ?: Carbon::now($this)).' seconds.'); + } + + return false; + } + + /** + * Cast to string (get timezone name). + * + * @return string + */ + public function __toString() + { + return $this->getName(); + } + + /** + * Return the type number: + * + * Type 1; A UTC offset, such as -0300 + * Type 2; A timezone abbreviation, such as GMT + * Type 3: A timezone identifier, such as Europe/London + */ + public function getType(): int + { + return preg_match('/"timezone_type";i:(\d)/', serialize($this), $match) ? (int) $match[1] : 3; + } + + /** + * Create a CarbonTimeZone from mixed input. + * + * @param DateTimeZone|string|int|null $object + * + * @return false|static + */ + public static function create($object = null) + { + return static::instance($object); + } + + /** + * Create a CarbonTimeZone from int/float hour offset. + * + * @param float $hourOffset number of hour of the timezone shift (can be decimal). + * + * @return false|static + */ + public static function createFromHourOffset(float $hourOffset) + { + return static::createFromMinuteOffset($hourOffset * Carbon::MINUTES_PER_HOUR); + } + + /** + * Create a CarbonTimeZone from int/float minute offset. + * + * @param float $minuteOffset number of total minutes of the timezone shift. + * + * @return false|static + */ + public static function createFromMinuteOffset(float $minuteOffset) + { + return static::instance(static::getOffsetNameFromMinuteOffset($minuteOffset)); + } + + /** + * Convert a total minutes offset into a standardized timezone offset string. + * + * @param float $minutes number of total minutes of the timezone shift. + * + * @return string + */ + public static function getOffsetNameFromMinuteOffset(float $minutes): string + { + $minutes = round($minutes); + $unsignedMinutes = abs($minutes); + + return ($minutes < 0 ? '-' : '+'). + str_pad((string) floor($unsignedMinutes / 60), 2, '0', STR_PAD_LEFT). + ':'. + str_pad((string) ($unsignedMinutes % 60), 2, '0', STR_PAD_LEFT); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php new file mode 100644 index 00000000000..4f35d6c618f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Cli/Invoker.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Cli; + +class Invoker +{ + public const CLI_CLASS_NAME = 'Carbon\\Cli'; + + protected function runWithCli(string $className, array $parameters): bool + { + $cli = new $className(); + + return $cli(...$parameters); + } + + public function __invoke(...$parameters): bool + { + if (class_exists(self::CLI_CLASS_NAME)) { + return $this->runWithCli(self::CLI_CLASS_NAME, $parameters); + } + + $function = (($parameters[1] ?? '') === 'install' ? ($parameters[2] ?? null) : null) ?: 'shell_exec'; + $function('composer require carbon-cli/carbon-cli --no-interaction'); + + echo 'Installation succeeded.'; + + return true; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php new file mode 100644 index 00000000000..ccc457fcd20 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonDoctrineType.php @@ -0,0 +1,23 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Doctrine; + +use Doctrine\DBAL\Platforms\AbstractPlatform; + +interface CarbonDoctrineType +{ + public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform); + + public function convertToPHPValue($value, AbstractPlatform $platform); + + public function convertToDatabaseValue($value, AbstractPlatform $platform); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php new file mode 100644 index 00000000000..bf476a77e5b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonImmutableType.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Doctrine; + +use Doctrine\DBAL\Platforms\AbstractPlatform; + +class CarbonImmutableType extends DateTimeImmutableType implements CarbonDoctrineType +{ + /** + * {@inheritdoc} + * + * @return string + */ + public function getName() + { + return 'carbon_immutable'; + } + + /** + * {@inheritdoc} + * + * @return bool + */ + public function requiresSQLCommentHint(AbstractPlatform $platform) + { + return true; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php new file mode 100644 index 00000000000..9289d84d348 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonType.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Doctrine; + +use Doctrine\DBAL\Platforms\AbstractPlatform; + +class CarbonType extends DateTimeType implements CarbonDoctrineType +{ + /** + * {@inheritdoc} + * + * @return string + */ + public function getName() + { + return 'carbon'; + } + + /** + * {@inheritdoc} + * + * @return bool + */ + public function requiresSQLCommentHint(AbstractPlatform $platform) + { + return true; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php new file mode 100644 index 00000000000..ecfe17e7938 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/CarbonTypeConverter.php @@ -0,0 +1,123 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Doctrine; + +use Carbon\Carbon; +use Carbon\CarbonInterface; +use DateTimeInterface; +use Doctrine\DBAL\Platforms\AbstractPlatform; +use Doctrine\DBAL\Types\ConversionException; +use Exception; + +/** + * @template T of CarbonInterface + */ +trait CarbonTypeConverter +{ + /** + * @return class-string + */ + protected function getCarbonClassName(): string + { + return Carbon::class; + } + + /** + * @return string + */ + public function getSQLDeclaration(array $fieldDeclaration, AbstractPlatform $platform) + { + $precision = $fieldDeclaration['precision'] ?: 10; + + if ($fieldDeclaration['secondPrecision'] ?? false) { + $precision = 0; + } + + if ($precision === 10) { + $precision = DateTimeDefaultPrecision::get(); + } + + $type = parent::getSQLDeclaration($fieldDeclaration, $platform); + + if (!$precision) { + return $type; + } + + if (str_contains($type, '(')) { + return preg_replace('/\(\d+\)/', "($precision)", $type); + } + + [$before, $after] = explode(' ', "$type "); + + return trim("$before($precision) $after"); + } + + /** + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * + * @return T|null + */ + public function convertToPHPValue($value, AbstractPlatform $platform) + { + $class = $this->getCarbonClassName(); + + if ($value === null || is_a($value, $class)) { + return $value; + } + + if ($value instanceof DateTimeInterface) { + return $class::instance($value); + } + + $date = null; + $error = null; + + try { + $date = $class::parse($value); + } catch (Exception $exception) { + $error = $exception; + } + + if (!$date) { + throw ConversionException::conversionFailedFormat( + $value, + $this->getName(), + 'Y-m-d H:i:s.u or any format supported by '.$class.'::parse()', + $error + ); + } + + return $date; + } + + /** + * @SuppressWarnings(PHPMD.UnusedFormalParameter) + * + * @return string|null + */ + public function convertToDatabaseValue($value, AbstractPlatform $platform) + { + if ($value === null) { + return $value; + } + + if ($value instanceof DateTimeInterface) { + return $value->format('Y-m-d H:i:s.u'); + } + + throw ConversionException::conversionFailedInvalidType( + $value, + $this->getName(), + ['null', 'DateTime', 'Carbon'] + ); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php new file mode 100644 index 00000000000..642fd41354b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeDefaultPrecision.php @@ -0,0 +1,37 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Doctrine; + +class DateTimeDefaultPrecision +{ + private static $precision = 6; + + /** + * Change the default Doctrine datetime and datetime_immutable precision. + * + * @param int $precision + */ + public static function set(int $precision): void + { + self::$precision = $precision; + } + + /** + * Get the default Doctrine datetime and datetime_immutable precision. + * + * @return int + */ + public static function get(): int + { + return self::$precision; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php new file mode 100644 index 00000000000..499271031e3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeImmutableType.php @@ -0,0 +1,24 @@ + */ + use CarbonTypeConverter; + + /** + * @return class-string + */ + protected function getCarbonClassName(): string + { + return CarbonImmutable::class; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php new file mode 100644 index 00000000000..29b0bb955e3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Doctrine/DateTimeType.php @@ -0,0 +1,16 @@ + */ + use CarbonTypeConverter; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php new file mode 100644 index 00000000000..3ca8837d182 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadComparisonUnitException.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use Throwable; + +class BadComparisonUnitException extends UnitException +{ + /** + * The unit. + * + * @var string + */ + protected $unit; + + /** + * Constructor. + * + * @param string $unit + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($unit, $code = 0, Throwable $previous = null) + { + $this->unit = $unit; + + parent::__construct("Bad comparison unit: '$unit'", $code, $previous); + } + + /** + * Get the unit. + * + * @return string + */ + public function getUnit(): string + { + return $this->unit; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php new file mode 100644 index 00000000000..2e222e54e96 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentConstructorException.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use BadMethodCallException as BaseBadMethodCallException; +use Throwable; + +class BadFluentConstructorException extends BaseBadMethodCallException implements BadMethodCallException +{ + /** + * The method. + * + * @var string + */ + protected $method; + + /** + * Constructor. + * + * @param string $method + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($method, $code = 0, Throwable $previous = null) + { + $this->method = $method; + + parent::__construct(sprintf("Unknown fluent constructor '%s'.", $method), $code, $previous); + } + + /** + * Get the method. + * + * @return string + */ + public function getMethod(): string + { + return $this->method; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php new file mode 100644 index 00000000000..4ceaa2ef066 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadFluentSetterException.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use BadMethodCallException as BaseBadMethodCallException; +use Throwable; + +class BadFluentSetterException extends BaseBadMethodCallException implements BadMethodCallException +{ + /** + * The setter. + * + * @var string + */ + protected $setter; + + /** + * Constructor. + * + * @param string $setter + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($setter, $code = 0, Throwable $previous = null) + { + $this->setter = $setter; + + parent::__construct(sprintf("Unknown fluent setter '%s'", $setter), $code, $previous); + } + + /** + * Get the setter. + * + * @return string + */ + public function getSetter(): string + { + return $this->setter; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php new file mode 100644 index 00000000000..108206d3eb7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/BadMethodCallException.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +interface BadMethodCallException extends Exception +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php new file mode 100644 index 00000000000..e10492693c3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/EndLessPeriodException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use RuntimeException as BaseRuntimeException; + +final class EndLessPeriodException extends BaseRuntimeException implements RuntimeException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php new file mode 100644 index 00000000000..8ad747e75f8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/Exception.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +interface Exception +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php new file mode 100644 index 00000000000..db334c6c9cc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ImmutableException.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use RuntimeException as BaseRuntimeException; +use Throwable; + +class ImmutableException extends BaseRuntimeException implements RuntimeException +{ + /** + * The value. + * + * @var string + */ + protected $value; + + /** + * Constructor. + * + * @param string $value the immutable type/value + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($value, $code = 0, Throwable $previous = null) + { + $this->value = $value; + parent::__construct("$value is immutable.", $code, $previous); + } + + /** + * Get the value. + * + * @return string + */ + public function getValue(): string + { + return $this->value; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php new file mode 100644 index 00000000000..5b013cd5078 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidArgumentException.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +interface InvalidArgumentException extends Exception +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php new file mode 100644 index 00000000000..a421401f6d9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidCastException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidCastException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php new file mode 100644 index 00000000000..c9ecb6b0606 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php @@ -0,0 +1,67 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class InvalidDateException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * The invalid field. + * + * @var string + */ + private $field; + + /** + * The invalid value. + * + * @var mixed + */ + private $value; + + /** + * Constructor. + * + * @param string $field + * @param mixed $value + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($field, $value, $code = 0, Throwable $previous = null) + { + $this->field = $field; + $this->value = $value; + parent::__construct($field.' : '.$value.' is not a valid value.', $code, $previous); + } + + /** + * Get the invalid field. + * + * @return string + */ + public function getField() + { + return $this->field; + } + + /** + * Get the invalid value. + * + * @return mixed + */ + public function getValue() + { + return $this->value; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php new file mode 100644 index 00000000000..92d55fe3539 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidFormatException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidFormatException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php new file mode 100644 index 00000000000..69cf4128a9c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidIntervalException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidIntervalException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php new file mode 100644 index 00000000000..9bd84a96d42 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodDateException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidPeriodDateException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php new file mode 100644 index 00000000000..cf2c9024097 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidPeriodParameterException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidPeriodParameterException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php new file mode 100644 index 00000000000..f72595583c0 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTimeZoneException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidTimeZoneException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php new file mode 100644 index 00000000000..2c8ec9ba044 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/InvalidTypeException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class InvalidTypeException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php new file mode 100644 index 00000000000..7a87632c41a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotACarbonClassException.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use Carbon\CarbonInterface; +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class NotACarbonClassException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * The className. + * + * @var string + */ + protected $className; + + /** + * Constructor. + * + * @param string $className + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($className, $code = 0, Throwable $previous = null) + { + $this->className = $className; + + parent::__construct(sprintf('Given class does not implement %s: %s', CarbonInterface::class, $className), $code, $previous); + } + + /** + * Get the className. + * + * @return string + */ + public function getClassName(): string + { + return $this->className; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php new file mode 100644 index 00000000000..4edd7a4841c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class NotAPeriodException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php new file mode 100644 index 00000000000..f2c546843b1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/NotLocaleAwareException.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class NotLocaleAwareException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * Constructor. + * + * @param mixed $object + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($object, $code = 0, Throwable $previous = null) + { + $dump = \is_object($object) ? \get_class($object) : \gettype($object); + + parent::__construct("$dump does neither implements Symfony\Contracts\Translation\LocaleAwareInterface nor getLocale() method.", $code, $previous); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php new file mode 100644 index 00000000000..2c586d0b760 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/OutOfRangeException.php @@ -0,0 +1,101 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +// This will extends OutOfRangeException instead of InvalidArgumentException since 3.0.0 +// use OutOfRangeException as BaseOutOfRangeException; + +class OutOfRangeException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * The unit or name of the value. + * + * @var string + */ + private $unit; + + /** + * The range minimum. + * + * @var mixed + */ + private $min; + + /** + * The range maximum. + * + * @var mixed + */ + private $max; + + /** + * The invalid value. + * + * @var mixed + */ + private $value; + + /** + * Constructor. + * + * @param string $unit + * @param mixed $min + * @param mixed $max + * @param mixed $value + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($unit, $min, $max, $value, $code = 0, Throwable $previous = null) + { + $this->unit = $unit; + $this->min = $min; + $this->max = $max; + $this->value = $value; + + parent::__construct("$unit must be between $min and $max, $value given", $code, $previous); + } + + /** + * @return mixed + */ + public function getMax() + { + return $this->max; + } + + /** + * @return mixed + */ + public function getMin() + { + return $this->min; + } + + /** + * @return mixed + */ + public function getUnit() + { + return $this->unit; + } + + /** + * @return mixed + */ + public function getValue() + { + return $this->value; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php new file mode 100644 index 00000000000..5416fd1491b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/ParseErrorException.php @@ -0,0 +1,88 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class ParseErrorException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * The expected. + * + * @var string + */ + protected $expected; + + /** + * The actual. + * + * @var string + */ + protected $actual; + + /** + * The help message. + * + * @var string + */ + protected $help; + + /** + * Constructor. + * + * @param string $expected + * @param string $actual + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($expected, $actual, $help = '', $code = 0, Throwable $previous = null) + { + $this->expected = $expected; + $this->actual = $actual; + $this->help = $help; + + $actual = $actual === '' ? 'data is missing' : "get '$actual'"; + + parent::__construct(trim("Format expected $expected but $actual\n$help"), $code, $previous); + } + + /** + * Get the expected. + * + * @return string + */ + public function getExpected(): string + { + return $this->expected; + } + + /** + * Get the actual. + * + * @return string + */ + public function getActual(): string + { + return $this->actual; + } + + /** + * Get the help message. + * + * @return string + */ + public function getHelp(): string + { + return $this->help; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php new file mode 100644 index 00000000000..ad196f79d58 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/RuntimeException.php @@ -0,0 +1,17 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +interface RuntimeException extends Exception +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php new file mode 100644 index 00000000000..ee99953b4d3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; + +class UnitException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php new file mode 100644 index 00000000000..0e7230563b4 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnitNotConfiguredException.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use Throwable; + +class UnitNotConfiguredException extends UnitException +{ + /** + * The unit. + * + * @var string + */ + protected $unit; + + /** + * Constructor. + * + * @param string $unit + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($unit, $code = 0, Throwable $previous = null) + { + $this->unit = $unit; + + parent::__construct("Unit $unit have no configuration to get total from other units.", $code, $previous); + } + + /** + * Get the unit. + * + * @return string + */ + public function getUnit(): string + { + return $this->unit; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php new file mode 100644 index 00000000000..5c504975aa0 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownGetterException.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class UnknownGetterException extends BaseInvalidArgumentException implements InvalidArgumentException +{ + /** + * The getter. + * + * @var string + */ + protected $getter; + + /** + * Constructor. + * + * @param string $getter getter name + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($getter, $code = 0, Throwable $previous = null) + { + $this->getter = $getter; + + parent::__construct("Unknown getter '$getter'", $code, $previous); + } + + /** + * Get the getter. + * + * @return string + */ + public function getGetter(): string + { + return $this->getter; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php new file mode 100644 index 00000000000..75273a706e3 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownMethodException.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use BadMethodCallException as BaseBadMethodCallException; +use Throwable; + +class UnknownMethodException extends BaseBadMethodCallException implements BadMethodCallException +{ + /** + * The method. + * + * @var string + */ + protected $method; + + /** + * Constructor. + * + * @param string $method + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($method, $code = 0, Throwable $previous = null) + { + $this->method = $method; + + parent::__construct("Method $method does not exist.", $code, $previous); + } + + /** + * Get the method. + * + * @return string + */ + public function getMethod(): string + { + return $this->method; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php new file mode 100644 index 00000000000..a795f5d725a --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownSetterException.php @@ -0,0 +1,49 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use InvalidArgumentException as BaseInvalidArgumentException; +use Throwable; + +class UnknownSetterException extends BaseInvalidArgumentException implements BadMethodCallException +{ + /** + * The setter. + * + * @var string + */ + protected $setter; + + /** + * Constructor. + * + * @param string $setter setter name + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($setter, $code = 0, Throwable $previous = null) + { + $this->setter = $setter; + + parent::__construct("Unknown setter '$setter'", $code, $previous); + } + + /** + * Get the setter. + * + * @return string + */ + public function getSetter(): string + { + return $this->setter; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php new file mode 100644 index 00000000000..ecd7f7a5925 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnknownUnitException.php @@ -0,0 +1,48 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use Throwable; + +class UnknownUnitException extends UnitException +{ + /** + * The unit. + * + * @var string + */ + protected $unit; + + /** + * Constructor. + * + * @param string $unit + * @param int $code + * @param Throwable|null $previous + */ + public function __construct($unit, $code = 0, Throwable $previous = null) + { + $this->unit = $unit; + + parent::__construct("Unknown unit '$unit'.", $code, $previous); + } + + /** + * Get the unit. + * + * @return string + */ + public function getUnit(): string + { + return $this->unit; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php new file mode 100644 index 00000000000..1654ab11b54 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Exceptions/UnreachableException.php @@ -0,0 +1,19 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Exceptions; + +use RuntimeException as BaseRuntimeException; + +class UnreachableException extends BaseRuntimeException implements RuntimeException +{ + // +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Factory.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Factory.php new file mode 100644 index 00000000000..f8c72890cbc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Factory.php @@ -0,0 +1,326 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Closure; +use DateTimeInterface; +use ReflectionMethod; + +/** + * A factory to generate Carbon instances with common settings. + * + * + * + * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a + * new instance. + * @method Carbon|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time. + * If any of $year, $month or $day are set to null their now() values will + * be used. + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * If $hour is not null then the default values for $minute and $second + * will be 0. + * @method Carbon createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now. + * @method Carbon|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. + * @method Carbon|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). + * @method Carbon|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language. + * @method Carbon|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language. + * @method Carbon createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today. + * @method Carbon createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today. + * @method Carbon createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method Carbon createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method Carbon createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method Carbon createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method Carbon createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight. + * @method Carbon|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time. + * If any of $year, $month or $day are set to null their now() values will + * be used. + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * If $hour is not null then the default values for $minute and $second + * will be 0. + * If one of the set values is not valid, an InvalidDateException + * will be thrown. + * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation. + * @method Carbon disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method Carbon enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one, + * then return the result of the closure (or null if the closure was void). + * @method Carbon fromSerialized($value) Create an instance from a serialized string. + * @method void genericMacro($macro, $priority = 0) Register a custom macro. + * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales. + * (It will ignore custom translator dynamic loading.) + * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native + * name, region and variant of the locale. + * @method array getDays() Get the days of the week + * @method string|null getFallbackLocale() Get the fallback locale. + * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat(). + * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer). + * @method array getIsoUnits() Returns list of locale units for ISO formatting. + * @method array getLastErrors() {@inheritdoc} + * @method string getLocale() Get the current translator locale. + * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name. + * @method int getMidDayAt() get midday/noon hour + * @method Closure|Carbon getTestNow() Get the Carbon instance (real or mock) to be returned when a "now" + * instance is created. + * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision. + * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key. + * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use. + * @method int getWeekEndsAt() Get the last day of week + * @method int getWeekStartsAt() Get the first day of week + * @method array getWeekendDays() Get weekend days + * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format. + * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format. + * @method bool hasMacro($name) Checks if macro is registered globally. + * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date. + * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance + * is anything that is not null. + * @method Carbon instance($date) Create a Carbon instance from a DateTime one. + * @method bool isImmutable() Returns true if the current class/instance is immutable. + * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. + * @method bool isMutable() Returns true if the current class/instance is mutable. + * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. + * (It can be overridden in specific instances.) + * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). + * Support is considered enabled if the 3 words are translated in the given locale. + * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). + * Support is considered enabled if the 2 words are translated in the given locale. + * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support. + * Support is considered enabled if either year, day or hour has a short variant translated. + * @method void macro($name, $macro) Register a custom macro. + * @method Carbon|null make($var) Make a Carbon instance from given variable if possible. + * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals + * and recurrences). Throw an exception for invalid format, but otherwise return null. + * @method Carbon maxValue() Create a Carbon instance for the greatest supported date. + * @method Carbon minValue() Create a Carbon instance for the lowest supported date. + * @method void mixin($mixin) Mix another object into the class. + * @method Carbon now($tz = null) Get a Carbon instance for the current date and time. + * @method Carbon parse($time = null, $tz = null) Create a carbon instance from a string. + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * @method Carbon parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). + * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English). + * @method Carbon|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. + * @method Carbon rawParse($time = null, $tz = null) Create a carbon instance from a string. + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * @method Carbon resetMacros() Remove all macros and generic macros. + * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string + * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather transform Carbon object before the serialization. + * JSON serialize all Carbon instances using the given callback. + * @method Carbon setFallbackLocale($locale) Set the fallback locale. + * @method Carbon setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists. + * Pass 'auto' as locale to use closest language from the current LC_TIME locale. + * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider mid-day is always 12pm, then if you need to test if it's an other + * hour, test it explicitly: + * $date->format('G') == 13 + * or to set explicitly to a given hour: + * $date->setTime(13, 0, 0, 0) + * Set midday/noon hour + * @method Carbon setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * Note the timezone parameter was left out of the examples above and + * has no affect as the mock value will be returned regardless of its value. + * Only the moment is mocked with setTestNow(), the timezone will still be the one passed + * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). + * To clear the test instance call this method using the default + * parameter of null. + * /!\ Use this method for unit tests only. + * @method Carbon setTestNowAndTimezone($testNow = null, $tz = null) Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * It will also align default timezone (e.g. call date_default_timezone_set()) with + * the second argument or if null, with the timezone of the given date object. + * To clear the test instance call this method using the default + * parameter of null. + * /!\ Use this method for unit tests only. + * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and + * use other method or custom format passed to format() method if you need to dump an other string + * format. + * Set the default format used when type juggling a Carbon instance to a string + * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use. + * @method Carbon setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use UTF-8 language packages on every machine. + * Set if UTF8 will be used for localized date/time. + * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek + * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the + * start of week according to current locale selected and implicitly the end of week. + * Set the last day of week + * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the + * 'first_day_of_week' locale setting to change the start of week according to current locale + * selected and implicitly the end of week. + * Set the first day of week + * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider week-end is always saturday and sunday, and if you have some custom + * week-end days to handle, give to those days an other name and create a macro for them: + * ``` + * Carbon::macro('isDayOff', function ($date) { + * return $date->isSunday() || $date->isMonday(); + * }); + * Carbon::macro('isNotDayOff', function ($date) { + * return !$date->isDayOff(); + * }); + * if ($someDate->isDayOff()) ... + * if ($someDate->isNotDayOff()) ... + * // Add 5 not-off days + * $count = 5; + * while ($someDate->isDayOff() || ($count-- > 0)) { + * $someDate->addDay(); + * } + * ``` + * Set weekend days + * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances). + * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances). + * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English). + * @method Carbon today($tz = null) Create a Carbon instance for today. + * @method Carbon tomorrow($tz = null) Create a Carbon instance for tomorrow. + * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other. + * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available. + * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method Carbon useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method mixed withTestNow($testNow = null, $callback = null) Temporarily sets a static date to be used within the callback. + * Using setTestNow to set the date, executing the callback, then + * clearing the test instance. + * /!\ Use this method for unit tests only. + * @method Carbon yesterday($tz = null) Create a Carbon instance for yesterday. + * + * + */ +class Factory +{ + protected $className = Carbon::class; + + protected $settings = []; + + public function __construct(array $settings = [], ?string $className = null) + { + if ($className) { + $this->className = $className; + } + + $this->settings = $settings; + } + + public function getClassName() + { + return $this->className; + } + + public function setClassName(string $className) + { + $this->className = $className; + + return $this; + } + + public function className(string $className = null) + { + return $className === null ? $this->getClassName() : $this->setClassName($className); + } + + public function getSettings() + { + return $this->settings; + } + + public function setSettings(array $settings) + { + $this->settings = $settings; + + return $this; + } + + public function settings(array $settings = null) + { + return $settings === null ? $this->getSettings() : $this->setSettings($settings); + } + + public function mergeSettings(array $settings) + { + $this->settings = array_merge($this->settings, $settings); + + return $this; + } + + public function __call($name, $arguments) + { + $method = new ReflectionMethod($this->className, $name); + $settings = $this->settings; + + if ($settings && isset($settings['timezone'])) { + $tzParameters = array_filter($method->getParameters(), function ($parameter) { + return \in_array($parameter->getName(), ['tz', 'timezone'], true); + }); + + if (isset($arguments[0]) && \in_array($name, ['instance', 'make', 'create', 'parse'], true)) { + if ($arguments[0] instanceof DateTimeInterface) { + $settings['innerTimezone'] = $settings['timezone']; + } elseif (\is_string($arguments[0]) && date_parse($arguments[0])['is_localtime']) { + unset($settings['timezone'], $settings['innerTimezone']); + } + } elseif (\count($tzParameters)) { + array_splice($arguments, key($tzParameters), 0, [$settings['timezone']]); + unset($settings['timezone']); + } + } + + $result = $this->className::$name(...$arguments); + + return $result instanceof CarbonInterface && !empty($settings) + ? $result->settings($settings) + : $result; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php new file mode 100644 index 00000000000..596ee8064a9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/FactoryImmutable.php @@ -0,0 +1,243 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Closure; + +/** + * A factory to generate CarbonImmutable instances with common settings. + * + * + * + * @method bool canBeCreatedFromFormat($date, $format) Checks if the (date)time string is in a given format and valid to create a + * new instance. + * @method CarbonImmutable|false create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) Create a new Carbon instance from a specific date and time. + * If any of $year, $month or $day are set to null their now() values will + * be used. + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * If $hour is not null then the default values for $minute and $second + * will be 0. + * @method CarbonImmutable createFromDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to now. + * @method CarbonImmutable|false createFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. + * @method CarbonImmutable|false createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). + * @method CarbonImmutable|false createFromLocaleFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific format and a string in a given language. + * @method CarbonImmutable|false createFromLocaleIsoFormat($format, $locale, $time, $tz = null) Create a Carbon instance from a specific ISO format and a string in a given language. + * @method CarbonImmutable createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) Create a Carbon instance from just a time. The date portion is set to today. + * @method CarbonImmutable createFromTimeString($time, $tz = null) Create a Carbon instance from a time string. The date portion is set to today. + * @method CarbonImmutable createFromTimestamp($timestamp, $tz = null) Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method CarbonImmutable createFromTimestampMs($timestamp, $tz = null) Create a Carbon instance from a timestamp in milliseconds. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method CarbonImmutable createFromTimestampMsUTC($timestamp) Create a Carbon instance from a timestamp in milliseconds. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method CarbonImmutable createFromTimestampUTC($timestamp) Create a Carbon instance from an timestamp keeping the timezone to UTC. + * Timestamp input can be given as int, float or a string containing one or more numbers. + * @method CarbonImmutable createMidnightDate($year = null, $month = null, $day = null, $tz = null) Create a Carbon instance from just a date. The time portion is set to midnight. + * @method CarbonImmutable|false createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) Create a new safe Carbon instance from a specific date and time. + * If any of $year, $month or $day are set to null their now() values will + * be used. + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * If $hour is not null then the default values for $minute and $second + * will be 0. + * If one of the set values is not valid, an InvalidDateException + * will be thrown. + * @method CarbonInterface createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null) Create a new Carbon instance from a specific date and time using strict validation. + * @method CarbonImmutable disableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method CarbonImmutable enableHumanDiffOption($humanDiffOption) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method mixed executeWithLocale($locale, $func) Set the current locale to the given, execute the passed function, reset the locale to previous one, + * then return the result of the closure (or null if the closure was void). + * @method CarbonImmutable fromSerialized($value) Create an instance from a serialized string. + * @method void genericMacro($macro, $priority = 0) Register a custom macro. + * @method array getAvailableLocales() Returns the list of internally available locales and already loaded custom locales. + * (It will ignore custom translator dynamic loading.) + * @method Language[] getAvailableLocalesInfo() Returns list of Language object for each available locale. This object allow you to get the ISO name, native + * name, region and variant of the locale. + * @method array getDays() Get the days of the week + * @method string|null getFallbackLocale() Get the fallback locale. + * @method array getFormatsToIsoReplacements() List of replacements from date() format to isoFormat(). + * @method int getHumanDiffOptions() Return default humanDiff() options (merged flags as integer). + * @method array getIsoUnits() Returns list of locale units for ISO formatting. + * @method array getLastErrors() {@inheritdoc} + * @method string getLocale() Get the current translator locale. + * @method callable|null getMacro($name) Get the raw callable macro registered globally for a given name. + * @method int getMidDayAt() get midday/noon hour + * @method Closure|CarbonImmutable getTestNow() Get the Carbon instance (real or mock) to be returned when a "now" + * instance is created. + * @method string getTimeFormatByPrecision($unitPrecision) Return a format from H:i to H:i:s.u according to given unit precision. + * @method string getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) Returns raw translation message for a given key. + * @method \Symfony\Component\Translation\TranslatorInterface getTranslator() Get the default translator instance in use. + * @method int getWeekEndsAt() Get the last day of week + * @method int getWeekStartsAt() Get the first day of week + * @method array getWeekendDays() Get weekend days + * @method bool hasFormat($date, $format) Checks if the (date)time string is in a given format. + * @method bool hasFormatWithModifiers($date, $format) Checks if the (date)time string is in a given format. + * @method bool hasMacro($name) Checks if macro is registered globally. + * @method bool hasRelativeKeywords($time) Determine if a time string will produce a relative date. + * @method bool hasTestNow() Determine if there is a valid test instance set. A valid test instance + * is anything that is not null. + * @method CarbonImmutable instance($date) Create a Carbon instance from a DateTime one. + * @method bool isImmutable() Returns true if the current class/instance is immutable. + * @method bool isModifiableUnit($unit) Returns true if a property can be changed via setter. + * @method bool isMutable() Returns true if the current class/instance is mutable. + * @method bool isStrictModeEnabled() Returns true if the strict mode is globally in use, false else. + * (It can be overridden in specific instances.) + * @method bool localeHasDiffOneDayWords($locale) Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). + * Support is considered enabled if the 3 words are translated in the given locale. + * @method bool localeHasDiffSyntax($locale) Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * @method bool localeHasDiffTwoDayWords($locale) Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). + * Support is considered enabled if the 2 words are translated in the given locale. + * @method bool localeHasPeriodSyntax($locale) Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * @method bool localeHasShortUnits($locale) Returns true if the given locale is internally supported and has short-units support. + * Support is considered enabled if either year, day or hour has a short variant translated. + * @method void macro($name, $macro) Register a custom macro. + * @method CarbonImmutable|null make($var) Make a Carbon instance from given variable if possible. + * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals + * and recurrences). Throw an exception for invalid format, but otherwise return null. + * @method CarbonImmutable maxValue() Create a Carbon instance for the greatest supported date. + * @method CarbonImmutable minValue() Create a Carbon instance for the lowest supported date. + * @method void mixin($mixin) Mix another object into the class. + * @method CarbonImmutable now($tz = null) Get a Carbon instance for the current date and time. + * @method CarbonImmutable parse($time = null, $tz = null) Create a carbon instance from a string. + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * @method CarbonImmutable parseFromLocale($time, $locale = null, $tz = null) Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). + * @method string pluralUnit(string $unit) Returns standardized plural of a given singular/plural unit name (in English). + * @method CarbonImmutable|false rawCreateFromFormat($format, $time, $tz = null) Create a Carbon instance from a specific format. + * @method CarbonImmutable rawParse($time = null, $tz = null) Create a carbon instance from a string. + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * @method CarbonImmutable resetMacros() Remove all macros and generic macros. + * @method void resetMonthsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method void resetToStringFormat() Reset the format used to the default when type juggling a Carbon instance to a string + * @method void resetYearsOverflow() @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method void serializeUsing($callback) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather transform Carbon object before the serialization. + * JSON serialize all Carbon instances using the given callback. + * @method CarbonImmutable setFallbackLocale($locale) Set the fallback locale. + * @method CarbonImmutable setHumanDiffOptions($humanDiffOptions) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method bool setLocale($locale) Set the current translator locale and indicate if the source locale file exists. + * Pass 'auto' as locale to use closest language from the current LC_TIME locale. + * @method void setMidDayAt($hour) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider mid-day is always 12pm, then if you need to test if it's an other + * hour, test it explicitly: + * $date->format('G') == 13 + * or to set explicitly to a given hour: + * $date->setTime(13, 0, 0, 0) + * Set midday/noon hour + * @method CarbonImmutable setTestNow($testNow = null) Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * Note the timezone parameter was left out of the examples above and + * has no affect as the mock value will be returned regardless of its value. + * Only the moment is mocked with setTestNow(), the timezone will still be the one passed + * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). + * To clear the test instance call this method using the default + * parameter of null. + * /!\ Use this method for unit tests only. + * @method CarbonImmutable setTestNowAndTimezone($testNow = null, $tz = null) Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * It will also align default timezone (e.g. call date_default_timezone_set()) with + * the second argument or if null, with the timezone of the given date object. + * To clear the test instance call this method using the default + * parameter of null. + * /!\ Use this method for unit tests only. + * @method void setToStringFormat($format) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and + * use other method or custom format passed to format() method if you need to dump an other string + * format. + * Set the default format used when type juggling a Carbon instance to a string + * @method void setTranslator(TranslatorInterface $translator) Set the default translator instance to use. + * @method CarbonImmutable setUtf8($utf8) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use UTF-8 language packages on every machine. + * Set if UTF8 will be used for localized date/time. + * @method void setWeekEndsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek + * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the + * start of week according to current locale selected and implicitly the end of week. + * Set the last day of week + * @method void setWeekStartsAt($day) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the + * 'first_day_of_week' locale setting to change the start of week according to current locale + * selected and implicitly the end of week. + * Set the first day of week + * @method void setWeekendDays($days) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider week-end is always saturday and sunday, and if you have some custom + * week-end days to handle, give to those days an other name and create a macro for them: + * ``` + * Carbon::macro('isDayOff', function ($date) { + * return $date->isSunday() || $date->isMonday(); + * }); + * Carbon::macro('isNotDayOff', function ($date) { + * return !$date->isDayOff(); + * }); + * if ($someDate->isDayOff()) ... + * if ($someDate->isNotDayOff()) ... + * // Add 5 not-off days + * $count = 5; + * while ($someDate->isDayOff() || ($count-- > 0)) { + * $someDate->addDay(); + * } + * ``` + * Set weekend days + * @method bool shouldOverflowMonths() Get the month overflow global behavior (can be overridden in specific instances). + * @method bool shouldOverflowYears() Get the month overflow global behavior (can be overridden in specific instances). + * @method string singularUnit(string $unit) Returns standardized singular of a given singular/plural unit name (in English). + * @method CarbonImmutable today($tz = null) Create a Carbon instance for today. + * @method CarbonImmutable tomorrow($tz = null) Create a Carbon instance for tomorrow. + * @method string translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) Translate a time string from a locale to an other. + * @method string translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null) Translate using translation string or callback available. + * @method void useMonthsOverflow($monthsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method CarbonImmutable useStrictMode($strictModeEnabled = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @method void useYearsOverflow($yearsOverflow = true) @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @method mixed withTestNow($testNow = null, $callback = null) Temporarily sets a static date to be used within the callback. + * Using setTestNow to set the date, executing the callback, then + * clearing the test instance. + * /!\ Use this method for unit tests only. + * @method CarbonImmutable yesterday($tz = null) Create a Carbon instance for yesterday. + * + * + */ +class FactoryImmutable extends Factory +{ + protected $className = CarbonImmutable::class; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Language.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Language.php new file mode 100644 index 00000000000..1fb5bafdc84 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Language.php @@ -0,0 +1,342 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use JsonSerializable; +use ReturnTypeWillChange; + +class Language implements JsonSerializable +{ + /** + * @var array + */ + protected static $languagesNames; + + /** + * @var array + */ + protected static $regionsNames; + + /** + * @var string + */ + protected $id; + + /** + * @var string + */ + protected $code; + + /** + * @var string|null + */ + protected $variant; + + /** + * @var string|null + */ + protected $region; + + /** + * @var array + */ + protected $names; + + /** + * @var string + */ + protected $isoName; + + /** + * @var string + */ + protected $nativeName; + + public function __construct(string $id) + { + $this->id = str_replace('-', '_', $id); + $parts = explode('_', $this->id); + $this->code = $parts[0]; + + if (isset($parts[1])) { + if (!preg_match('/^[A-Z]+$/', $parts[1])) { + $this->variant = $parts[1]; + $parts[1] = $parts[2] ?? null; + } + if ($parts[1]) { + $this->region = $parts[1]; + } + } + } + + /** + * Get the list of the known languages. + * + * @return array + */ + public static function all() + { + if (!static::$languagesNames) { + static::$languagesNames = require __DIR__.'/List/languages.php'; + } + + return static::$languagesNames; + } + + /** + * Get the list of the known regions. + * + * @return array + */ + public static function regions() + { + if (!static::$regionsNames) { + static::$regionsNames = require __DIR__.'/List/regions.php'; + } + + return static::$regionsNames; + } + + /** + * Get both isoName and nativeName as an array. + * + * @return array + */ + public function getNames(): array + { + if (!$this->names) { + $this->names = static::all()[$this->code] ?? [ + 'isoName' => $this->code, + 'nativeName' => $this->code, + ]; + } + + return $this->names; + } + + /** + * Returns the original locale ID. + * + * @return string + */ + public function getId(): string + { + return $this->id; + } + + /** + * Returns the code of the locale "en"/"fr". + * + * @return string + */ + public function getCode(): string + { + return $this->code; + } + + /** + * Returns the variant code such as cyrl/latn. + * + * @return string|null + */ + public function getVariant(): ?string + { + return $this->variant; + } + + /** + * Returns the variant such as Cyrillic/Latin. + * + * @return string|null + */ + public function getVariantName(): ?string + { + if ($this->variant === 'Latn') { + return 'Latin'; + } + + if ($this->variant === 'Cyrl') { + return 'Cyrillic'; + } + + return $this->variant; + } + + /** + * Returns the region part of the locale. + * + * @return string|null + */ + public function getRegion(): ?string + { + return $this->region; + } + + /** + * Returns the region name for the current language. + * + * @return string|null + */ + public function getRegionName(): ?string + { + return $this->region ? (static::regions()[$this->region] ?? $this->region) : null; + } + + /** + * Returns the long ISO language name. + * + * @return string + */ + public function getFullIsoName(): string + { + if (!$this->isoName) { + $this->isoName = $this->getNames()['isoName']; + } + + return $this->isoName; + } + + /** + * Set the ISO language name. + * + * @param string $isoName + */ + public function setIsoName(string $isoName): self + { + $this->isoName = $isoName; + + return $this; + } + + /** + * Return the full name of the language in this language. + * + * @return string + */ + public function getFullNativeName(): string + { + if (!$this->nativeName) { + $this->nativeName = $this->getNames()['nativeName']; + } + + return $this->nativeName; + } + + /** + * Set the name of the language in this language. + * + * @param string $nativeName + */ + public function setNativeName(string $nativeName): self + { + $this->nativeName = $nativeName; + + return $this; + } + + /** + * Returns the short ISO language name. + * + * @return string + */ + public function getIsoName(): string + { + $name = $this->getFullIsoName(); + + return trim(strstr($name, ',', true) ?: $name); + } + + /** + * Get the short name of the language in this language. + * + * @return string + */ + public function getNativeName(): string + { + $name = $this->getFullNativeName(); + + return trim(strstr($name, ',', true) ?: $name); + } + + /** + * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable. + * + * @return string + */ + public function getIsoDescription() + { + $region = $this->getRegionName(); + $variant = $this->getVariantName(); + + return $this->getIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); + } + + /** + * Get a string with short native name, region in parentheses if applicable, variant in parentheses if applicable. + * + * @return string + */ + public function getNativeDescription() + { + $region = $this->getRegionName(); + $variant = $this->getVariantName(); + + return $this->getNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); + } + + /** + * Get a string with long ISO name, region in parentheses if applicable, variant in parentheses if applicable. + * + * @return string + */ + public function getFullIsoDescription() + { + $region = $this->getRegionName(); + $variant = $this->getVariantName(); + + return $this->getFullIsoName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); + } + + /** + * Get a string with long native name, region in parentheses if applicable, variant in parentheses if applicable. + * + * @return string + */ + public function getFullNativeDescription() + { + $region = $this->getRegionName(); + $variant = $this->getVariantName(); + + return $this->getFullNativeName().($region ? ' ('.$region.')' : '').($variant ? ' ('.$variant.')' : ''); + } + + /** + * Returns the original locale ID. + * + * @return string + */ + public function __toString() + { + return $this->getId(); + } + + /** + * Get a string with short ISO name, region in parentheses if applicable, variant in parentheses if applicable. + * + * @return string + */ + #[ReturnTypeWillChange] + public function jsonSerialize() + { + return $this->getIsoDescription(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php new file mode 100644 index 00000000000..84e241e3eff --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Laravel/ServiceProvider.php @@ -0,0 +1,127 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Laravel; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; +use Carbon\CarbonInterval; +use Carbon\CarbonPeriod; +use Illuminate\Contracts\Events\Dispatcher as DispatcherContract; +use Illuminate\Events\Dispatcher; +use Illuminate\Events\EventDispatcher; +use Illuminate\Support\Carbon as IlluminateCarbon; +use Illuminate\Support\Facades\Date; +use Throwable; + +class ServiceProvider extends \Illuminate\Support\ServiceProvider +{ + /** @var callable|null */ + protected $appGetter = null; + + /** @var callable|null */ + protected $localeGetter = null; + + public function setAppGetter(?callable $appGetter): void + { + $this->appGetter = $appGetter; + } + + public function setLocaleGetter(?callable $localeGetter): void + { + $this->localeGetter = $localeGetter; + } + + public function boot() + { + $this->updateLocale(); + + if (!$this->app->bound('events')) { + return; + } + + $service = $this; + $events = $this->app['events']; + + if ($this->isEventDispatcher($events)) { + $events->listen(class_exists('Illuminate\Foundation\Events\LocaleUpdated') ? 'Illuminate\Foundation\Events\LocaleUpdated' : 'locale.changed', function () use ($service) { + $service->updateLocale(); + }); + } + } + + public function updateLocale() + { + $locale = $this->getLocale(); + + if ($locale === null) { + return; + } + + Carbon::setLocale($locale); + CarbonImmutable::setLocale($locale); + CarbonPeriod::setLocale($locale); + CarbonInterval::setLocale($locale); + + if (class_exists(IlluminateCarbon::class)) { + IlluminateCarbon::setLocale($locale); + } + + if (class_exists(Date::class)) { + try { + $root = Date::getFacadeRoot(); + $root->setLocale($locale); + } catch (Throwable $e) { + // Non Carbon class in use in Date facade + } + } + } + + public function register() + { + // Needed for Laravel < 5.3 compatibility + } + + protected function getLocale() + { + if ($this->localeGetter) { + return ($this->localeGetter)(); + } + + $app = $this->getApp(); + $app = $app && method_exists($app, 'getLocale') + ? $app + : $this->getGlobalApp('translator'); + + return $app ? $app->getLocale() : null; + } + + protected function getApp() + { + if ($this->appGetter) { + return ($this->appGetter)(); + } + + return $this->app ?? $this->getGlobalApp(); + } + + protected function getGlobalApp(...$args) + { + return \function_exists('app') ? \app(...$args) : null; + } + + protected function isEventDispatcher($instance) + { + return $instance instanceof EventDispatcher + || $instance instanceof Dispatcher + || $instance instanceof DispatcherContract; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/languages.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/languages.php new file mode 100644 index 00000000000..5b5d9a1e7b7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/languages.php @@ -0,0 +1,1239 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +return [ + /* + * ISO 639-2 + */ + 'ab' => [ + 'isoName' => 'Abkhazian', + 'nativeName' => 'аҧсуа бызшәа, аҧсшәа', + ], + 'aa' => [ + 'isoName' => 'Afar', + 'nativeName' => 'Afaraf', + ], + 'af' => [ + 'isoName' => 'Afrikaans', + 'nativeName' => 'Afrikaans', + ], + 'ak' => [ + 'isoName' => 'Akan', + 'nativeName' => 'Akan', + ], + 'sq' => [ + 'isoName' => 'Albanian', + 'nativeName' => 'Shqip', + ], + 'am' => [ + 'isoName' => 'Amharic', + 'nativeName' => 'አማርኛ', + ], + 'ar' => [ + 'isoName' => 'Arabic', + 'nativeName' => 'العربية', + ], + 'an' => [ + 'isoName' => 'Aragonese', + 'nativeName' => 'aragonés', + ], + 'hy' => [ + 'isoName' => 'Armenian', + 'nativeName' => 'Հայերեն', + ], + 'as' => [ + 'isoName' => 'Assamese', + 'nativeName' => 'অসমীয়া', + ], + 'av' => [ + 'isoName' => 'Avaric', + 'nativeName' => 'авар мацӀ, магӀарул мацӀ', + ], + 'ae' => [ + 'isoName' => 'Avestan', + 'nativeName' => 'avesta', + ], + 'ay' => [ + 'isoName' => 'Aymara', + 'nativeName' => 'aymar aru', + ], + 'az' => [ + 'isoName' => 'Azerbaijani', + 'nativeName' => 'azərbaycan dili', + ], + 'bm' => [ + 'isoName' => 'Bambara', + 'nativeName' => 'bamanankan', + ], + 'ba' => [ + 'isoName' => 'Bashkir', + 'nativeName' => 'башҡорт теле', + ], + 'eu' => [ + 'isoName' => 'Basque', + 'nativeName' => 'euskara, euskera', + ], + 'be' => [ + 'isoName' => 'Belarusian', + 'nativeName' => 'беларуская мова', + ], + 'bn' => [ + 'isoName' => 'Bengali', + 'nativeName' => 'বাংলা', + ], + 'bh' => [ + 'isoName' => 'Bihari languages', + 'nativeName' => 'भोजपुरी', + ], + 'bi' => [ + 'isoName' => 'Bislama', + 'nativeName' => 'Bislama', + ], + 'bs' => [ + 'isoName' => 'Bosnian', + 'nativeName' => 'bosanski jezik', + ], + 'br' => [ + 'isoName' => 'Breton', + 'nativeName' => 'brezhoneg', + ], + 'bg' => [ + 'isoName' => 'Bulgarian', + 'nativeName' => 'български език', + ], + 'my' => [ + 'isoName' => 'Burmese', + 'nativeName' => 'ဗမာစာ', + ], + 'ca' => [ + 'isoName' => 'Catalan, Valencian', + 'nativeName' => 'català, valencià', + ], + 'ch' => [ + 'isoName' => 'Chamorro', + 'nativeName' => 'Chamoru', + ], + 'ce' => [ + 'isoName' => 'Chechen', + 'nativeName' => 'нохчийн мотт', + ], + 'ny' => [ + 'isoName' => 'Chichewa, Chewa, Nyanja', + 'nativeName' => 'chiCheŵa, chinyanja', + ], + 'zh' => [ + 'isoName' => 'Chinese', + 'nativeName' => '中文 (Zhōngwén), 汉语, 漢語', + ], + 'cv' => [ + 'isoName' => 'Chuvash', + 'nativeName' => 'чӑваш чӗлхи', + ], + 'kw' => [ + 'isoName' => 'Cornish', + 'nativeName' => 'Kernewek', + ], + 'co' => [ + 'isoName' => 'Corsican', + 'nativeName' => 'corsu, lingua corsa', + ], + 'cr' => [ + 'isoName' => 'Cree', + 'nativeName' => 'ᓀᐦᐃᔭᐍᐏᐣ', + ], + 'hr' => [ + 'isoName' => 'Croatian', + 'nativeName' => 'hrvatski jezik', + ], + 'cs' => [ + 'isoName' => 'Czech', + 'nativeName' => 'čeština, český jazyk', + ], + 'da' => [ + 'isoName' => 'Danish', + 'nativeName' => 'dansk', + ], + 'dv' => [ + 'isoName' => 'Divehi, Dhivehi, Maldivian', + 'nativeName' => 'ދިވެހި', + ], + 'nl' => [ + 'isoName' => 'Dutch, Flemish', + 'nativeName' => 'Nederlands, Vlaams', + ], + 'dz' => [ + 'isoName' => 'Dzongkha', + 'nativeName' => 'རྫོང་ཁ', + ], + 'en' => [ + 'isoName' => 'English', + 'nativeName' => 'English', + ], + 'eo' => [ + 'isoName' => 'Esperanto', + 'nativeName' => 'Esperanto', + ], + 'et' => [ + 'isoName' => 'Estonian', + 'nativeName' => 'eesti, eesti keel', + ], + 'ee' => [ + 'isoName' => 'Ewe', + 'nativeName' => 'Eʋegbe', + ], + 'fo' => [ + 'isoName' => 'Faroese', + 'nativeName' => 'føroyskt', + ], + 'fj' => [ + 'isoName' => 'Fijian', + 'nativeName' => 'vosa Vakaviti', + ], + 'fi' => [ + 'isoName' => 'Finnish', + 'nativeName' => 'suomi, suomen kieli', + ], + 'fr' => [ + 'isoName' => 'French', + 'nativeName' => 'français', + ], + 'ff' => [ + 'isoName' => 'Fulah', + 'nativeName' => 'Fulfulde, Pulaar, Pular', + ], + 'gl' => [ + 'isoName' => 'Galician', + 'nativeName' => 'Galego', + ], + 'ka' => [ + 'isoName' => 'Georgian', + 'nativeName' => 'ქართული', + ], + 'de' => [ + 'isoName' => 'German', + 'nativeName' => 'Deutsch', + ], + 'el' => [ + 'isoName' => 'Greek (modern)', + 'nativeName' => 'ελληνικά', + ], + 'gn' => [ + 'isoName' => 'Guaraní', + 'nativeName' => 'Avañe\'ẽ', + ], + 'gu' => [ + 'isoName' => 'Gujarati', + 'nativeName' => 'ગુજરાતી', + ], + 'ht' => [ + 'isoName' => 'Haitian, Haitian Creole', + 'nativeName' => 'Kreyòl ayisyen', + ], + 'ha' => [ + 'isoName' => 'Hausa', + 'nativeName' => '(Hausa) هَوُسَ', + ], + 'he' => [ + 'isoName' => 'Hebrew (modern)', + 'nativeName' => 'עברית', + ], + 'hz' => [ + 'isoName' => 'Herero', + 'nativeName' => 'Otjiherero', + ], + 'hi' => [ + 'isoName' => 'Hindi', + 'nativeName' => 'हिन्दी, हिंदी', + ], + 'ho' => [ + 'isoName' => 'Hiri Motu', + 'nativeName' => 'Hiri Motu', + ], + 'hu' => [ + 'isoName' => 'Hungarian', + 'nativeName' => 'magyar', + ], + 'ia' => [ + 'isoName' => 'Interlingua', + 'nativeName' => 'Interlingua', + ], + 'id' => [ + 'isoName' => 'Indonesian', + 'nativeName' => 'Bahasa Indonesia', + ], + 'ie' => [ + 'isoName' => 'Interlingue', + 'nativeName' => 'Originally called Occidental; then Interlingue after WWII', + ], + 'ga' => [ + 'isoName' => 'Irish', + 'nativeName' => 'Gaeilge', + ], + 'ig' => [ + 'isoName' => 'Igbo', + 'nativeName' => 'Asụsụ Igbo', + ], + 'ik' => [ + 'isoName' => 'Inupiaq', + 'nativeName' => 'Iñupiaq, Iñupiatun', + ], + 'io' => [ + 'isoName' => 'Ido', + 'nativeName' => 'Ido', + ], + 'is' => [ + 'isoName' => 'Icelandic', + 'nativeName' => 'Íslenska', + ], + 'it' => [ + 'isoName' => 'Italian', + 'nativeName' => 'Italiano', + ], + 'iu' => [ + 'isoName' => 'Inuktitut', + 'nativeName' => 'ᐃᓄᒃᑎᑐᑦ', + ], + 'ja' => [ + 'isoName' => 'Japanese', + 'nativeName' => '日本語 (にほんご)', + ], + 'jv' => [ + 'isoName' => 'Javanese', + 'nativeName' => 'ꦧꦱꦗꦮ, Basa Jawa', + ], + 'kl' => [ + 'isoName' => 'Kalaallisut, Greenlandic', + 'nativeName' => 'kalaallisut, kalaallit oqaasii', + ], + 'kn' => [ + 'isoName' => 'Kannada', + 'nativeName' => 'ಕನ್ನಡ', + ], + 'kr' => [ + 'isoName' => 'Kanuri', + 'nativeName' => 'Kanuri', + ], + 'ks' => [ + 'isoName' => 'Kashmiri', + 'nativeName' => 'कश्मीरी, كشميري‎', + ], + 'kk' => [ + 'isoName' => 'Kazakh', + 'nativeName' => 'қазақ тілі', + ], + 'km' => [ + 'isoName' => 'Central Khmer', + 'nativeName' => 'ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ', + ], + 'ki' => [ + 'isoName' => 'Kikuyu, Gikuyu', + 'nativeName' => 'Gĩkũyũ', + ], + 'rw' => [ + 'isoName' => 'Kinyarwanda', + 'nativeName' => 'Ikinyarwanda', + ], + 'ky' => [ + 'isoName' => 'Kirghiz, Kyrgyz', + 'nativeName' => 'Кыргызча, Кыргыз тили', + ], + 'kv' => [ + 'isoName' => 'Komi', + 'nativeName' => 'коми кыв', + ], + 'kg' => [ + 'isoName' => 'Kongo', + 'nativeName' => 'Kikongo', + ], + 'ko' => [ + 'isoName' => 'Korean', + 'nativeName' => '한국어', + ], + 'ku' => [ + 'isoName' => 'Kurdish', + 'nativeName' => 'Kurdî, کوردی‎', + ], + 'kj' => [ + 'isoName' => 'Kuanyama, Kwanyama', + 'nativeName' => 'Kuanyama', + ], + 'la' => [ + 'isoName' => 'Latin', + 'nativeName' => 'latine, lingua latina', + ], + 'lb' => [ + 'isoName' => 'Luxembourgish, Letzeburgesch', + 'nativeName' => 'Lëtzebuergesch', + ], + 'lg' => [ + 'isoName' => 'Ganda', + 'nativeName' => 'Luganda', + ], + 'li' => [ + 'isoName' => 'Limburgan, Limburger, Limburgish', + 'nativeName' => 'Limburgs', + ], + 'ln' => [ + 'isoName' => 'Lingala', + 'nativeName' => 'Lingála', + ], + 'lo' => [ + 'isoName' => 'Lao', + 'nativeName' => 'ພາສາລາວ', + ], + 'lt' => [ + 'isoName' => 'Lithuanian', + 'nativeName' => 'lietuvių kalba', + ], + 'lu' => [ + 'isoName' => 'Luba-Katanga', + 'nativeName' => 'Kiluba', + ], + 'lv' => [ + 'isoName' => 'Latvian', + 'nativeName' => 'latviešu valoda', + ], + 'gv' => [ + 'isoName' => 'Manx', + 'nativeName' => 'Gaelg, Gailck', + ], + 'mk' => [ + 'isoName' => 'Macedonian', + 'nativeName' => 'македонски јазик', + ], + 'mg' => [ + 'isoName' => 'Malagasy', + 'nativeName' => 'fiteny malagasy', + ], + 'ms' => [ + 'isoName' => 'Malay', + 'nativeName' => 'Bahasa Melayu, بهاس ملايو‎', + ], + 'ml' => [ + 'isoName' => 'Malayalam', + 'nativeName' => 'മലയാളം', + ], + 'mt' => [ + 'isoName' => 'Maltese', + 'nativeName' => 'Malti', + ], + 'mi' => [ + 'isoName' => 'Maori', + 'nativeName' => 'te reo Māori', + ], + 'mr' => [ + 'isoName' => 'Marathi', + 'nativeName' => 'मराठी', + ], + 'mh' => [ + 'isoName' => 'Marshallese', + 'nativeName' => 'Kajin M̧ajeļ', + ], + 'mn' => [ + 'isoName' => 'Mongolian', + 'nativeName' => 'Монгол хэл', + ], + 'na' => [ + 'isoName' => 'Nauru', + 'nativeName' => 'Dorerin Naoero', + ], + 'nv' => [ + 'isoName' => 'Navajo, Navaho', + 'nativeName' => 'Diné bizaad', + ], + 'nd' => [ + 'isoName' => 'North Ndebele', + 'nativeName' => 'isiNdebele', + ], + 'ne' => [ + 'isoName' => 'Nepali', + 'nativeName' => 'नेपाली', + ], + 'ng' => [ + 'isoName' => 'Ndonga', + 'nativeName' => 'Owambo', + ], + 'nb' => [ + 'isoName' => 'Norwegian Bokmål', + 'nativeName' => 'Norsk Bokmål', + ], + 'nn' => [ + 'isoName' => 'Norwegian Nynorsk', + 'nativeName' => 'Norsk Nynorsk', + ], + 'no' => [ + 'isoName' => 'Norwegian', + 'nativeName' => 'Norsk', + ], + 'ii' => [ + 'isoName' => 'Sichuan Yi, Nuosu', + 'nativeName' => 'ꆈꌠ꒿ Nuosuhxop', + ], + 'nr' => [ + 'isoName' => 'South Ndebele', + 'nativeName' => 'isiNdebele', + ], + 'oc' => [ + 'isoName' => 'Occitan', + 'nativeName' => 'occitan, lenga d\'òc', + ], + 'oj' => [ + 'isoName' => 'Ojibwa', + 'nativeName' => 'ᐊᓂᔑᓈᐯᒧᐎᓐ', + ], + 'cu' => [ + 'isoName' => 'Church Slavic, Church Slavonic, Old Church Slavonic, Old Slavonic, Old Bulgarian', + 'nativeName' => 'ѩзыкъ словѣньскъ', + ], + 'om' => [ + 'isoName' => 'Oromo', + 'nativeName' => 'Afaan Oromoo', + ], + 'or' => [ + 'isoName' => 'Oriya', + 'nativeName' => 'ଓଡ଼ିଆ', + ], + 'os' => [ + 'isoName' => 'Ossetian, Ossetic', + 'nativeName' => 'ирон æвзаг', + ], + 'pa' => [ + 'isoName' => 'Panjabi, Punjabi', + 'nativeName' => 'ਪੰਜਾਬੀ', + ], + 'pi' => [ + 'isoName' => 'Pali', + 'nativeName' => 'पाऴि', + ], + 'fa' => [ + 'isoName' => 'Persian', + 'nativeName' => 'فارسی', + ], + 'pl' => [ + 'isoName' => 'Polish', + 'nativeName' => 'język polski, polszczyzna', + ], + 'ps' => [ + 'isoName' => 'Pashto, Pushto', + 'nativeName' => 'پښتو', + ], + 'pt' => [ + 'isoName' => 'Portuguese', + 'nativeName' => 'Português', + ], + 'qu' => [ + 'isoName' => 'Quechua', + 'nativeName' => 'Runa Simi, Kichwa', + ], + 'rm' => [ + 'isoName' => 'Romansh', + 'nativeName' => 'Rumantsch Grischun', + ], + 'rn' => [ + 'isoName' => 'Rundi', + 'nativeName' => 'Ikirundi', + ], + 'ro' => [ + 'isoName' => 'Romanian, Moldavian, Moldovan', + 'nativeName' => 'Română', + ], + 'ru' => [ + 'isoName' => 'Russian', + 'nativeName' => 'русский', + ], + 'sa' => [ + 'isoName' => 'Sanskrit', + 'nativeName' => 'संस्कृतम्', + ], + 'sc' => [ + 'isoName' => 'Sardinian', + 'nativeName' => 'sardu', + ], + 'sd' => [ + 'isoName' => 'Sindhi', + 'nativeName' => 'सिन्धी, سنڌي، سندھی‎', + ], + 'se' => [ + 'isoName' => 'Northern Sami', + 'nativeName' => 'Davvisámegiella', + ], + 'sm' => [ + 'isoName' => 'Samoan', + 'nativeName' => 'gagana fa\'a Samoa', + ], + 'sg' => [ + 'isoName' => 'Sango', + 'nativeName' => 'yângâ tî sängö', + ], + 'sr' => [ + 'isoName' => 'Serbian', + 'nativeName' => 'српски језик', + ], + 'gd' => [ + 'isoName' => 'Gaelic, Scottish Gaelic', + 'nativeName' => 'Gàidhlig', + ], + 'sn' => [ + 'isoName' => 'Shona', + 'nativeName' => 'chiShona', + ], + 'si' => [ + 'isoName' => 'Sinhala, Sinhalese', + 'nativeName' => 'සිංහල', + ], + 'sk' => [ + 'isoName' => 'Slovak', + 'nativeName' => 'Slovenčina, Slovenský Jazyk', + ], + 'sl' => [ + 'isoName' => 'Slovene', + 'nativeName' => 'Slovenski Jezik, Slovenščina', + ], + 'so' => [ + 'isoName' => 'Somali', + 'nativeName' => 'Soomaaliga, af Soomaali', + ], + 'st' => [ + 'isoName' => 'Southern Sotho', + 'nativeName' => 'Sesotho', + ], + 'es' => [ + 'isoName' => 'Spanish, Castilian', + 'nativeName' => 'Español', + ], + 'su' => [ + 'isoName' => 'Sundanese', + 'nativeName' => 'Basa Sunda', + ], + 'sw' => [ + 'isoName' => 'Swahili', + 'nativeName' => 'Kiswahili', + ], + 'ss' => [ + 'isoName' => 'Swati', + 'nativeName' => 'SiSwati', + ], + 'sv' => [ + 'isoName' => 'Swedish', + 'nativeName' => 'Svenska', + ], + 'ta' => [ + 'isoName' => 'Tamil', + 'nativeName' => 'தமிழ்', + ], + 'te' => [ + 'isoName' => 'Telugu', + 'nativeName' => 'తెలుగు', + ], + 'tg' => [ + 'isoName' => 'Tajik', + 'nativeName' => 'тоҷикӣ, toçikī, تاجیکی‎', + ], + 'th' => [ + 'isoName' => 'Thai', + 'nativeName' => 'ไทย', + ], + 'ti' => [ + 'isoName' => 'Tigrinya', + 'nativeName' => 'ትግርኛ', + ], + 'bo' => [ + 'isoName' => 'Tibetan', + 'nativeName' => 'བོད་ཡིག', + ], + 'tk' => [ + 'isoName' => 'Turkmen', + 'nativeName' => 'Türkmen, Түркмен', + ], + 'tl' => [ + 'isoName' => 'Tagalog', + 'nativeName' => 'Wikang Tagalog', + ], + 'tn' => [ + 'isoName' => 'Tswana', + 'nativeName' => 'Setswana', + ], + 'to' => [ + 'isoName' => 'Tongan (Tonga Islands)', + 'nativeName' => 'Faka Tonga', + ], + 'tr' => [ + 'isoName' => 'Turkish', + 'nativeName' => 'Türkçe', + ], + 'ts' => [ + 'isoName' => 'Tsonga', + 'nativeName' => 'Xitsonga', + ], + 'tt' => [ + 'isoName' => 'Tatar', + 'nativeName' => 'татар теле, tatar tele', + ], + 'tw' => [ + 'isoName' => 'Twi', + 'nativeName' => 'Twi', + ], + 'ty' => [ + 'isoName' => 'Tahitian', + 'nativeName' => 'Reo Tahiti', + ], + 'ug' => [ + 'isoName' => 'Uighur, Uyghur', + 'nativeName' => 'Uyƣurqə, ‫ئۇيغۇرچ', + ], + 'uk' => [ + 'isoName' => 'Ukrainian', + 'nativeName' => 'Українська', + ], + 'ur' => [ + 'isoName' => 'Urdu', + 'nativeName' => 'اردو', + ], + 'uz' => [ + 'isoName' => 'Uzbek', + 'nativeName' => 'Oʻzbek, Ўзбек, أۇزبېك‎', + ], + 've' => [ + 'isoName' => 'Venda', + 'nativeName' => 'Tshivenḓa', + ], + 'vi' => [ + 'isoName' => 'Vietnamese', + 'nativeName' => 'Tiếng Việt', + ], + 'vo' => [ + 'isoName' => 'Volapük', + 'nativeName' => 'Volapük', + ], + 'wa' => [ + 'isoName' => 'Walloon', + 'nativeName' => 'Walon', + ], + 'cy' => [ + 'isoName' => 'Welsh', + 'nativeName' => 'Cymraeg', + ], + 'wo' => [ + 'isoName' => 'Wolof', + 'nativeName' => 'Wollof', + ], + 'fy' => [ + 'isoName' => 'Western Frisian', + 'nativeName' => 'Frysk', + ], + 'xh' => [ + 'isoName' => 'Xhosa', + 'nativeName' => 'isiXhosa', + ], + 'yi' => [ + 'isoName' => 'Yiddish', + 'nativeName' => 'ייִדיש', + ], + 'yo' => [ + 'isoName' => 'Yoruba', + 'nativeName' => 'Yorùbá', + ], + 'za' => [ + 'isoName' => 'Zhuang, Chuang', + 'nativeName' => 'Saɯ cueŋƅ, Saw cuengh', + ], + 'zu' => [ + 'isoName' => 'Zulu', + 'nativeName' => 'isiZulu', + ], + /* + * Add ISO 639-3 languages available in Carbon + */ + 'agq' => [ + 'isoName' => 'Aghem', + 'nativeName' => 'Aghem', + ], + 'agr' => [ + 'isoName' => 'Aguaruna', + 'nativeName' => 'Aguaruna', + ], + 'anp' => [ + 'isoName' => 'Angika', + 'nativeName' => 'Angika', + ], + 'asa' => [ + 'isoName' => 'Asu', + 'nativeName' => 'Asu', + ], + 'ast' => [ + 'isoName' => 'Asturian', + 'nativeName' => 'Asturian', + ], + 'ayc' => [ + 'isoName' => 'Southern Aymara', + 'nativeName' => 'Southern Aymara', + ], + 'bas' => [ + 'isoName' => 'Basaa', + 'nativeName' => 'Basaa', + ], + 'bem' => [ + 'isoName' => 'Bemba', + 'nativeName' => 'Bemba', + ], + 'bez' => [ + 'isoName' => 'Bena', + 'nativeName' => 'Bena', + ], + 'bhb' => [ + 'isoName' => 'Bhili', + 'nativeName' => 'Bhili', + ], + 'bho' => [ + 'isoName' => 'Bhojpuri', + 'nativeName' => 'Bhojpuri', + ], + 'brx' => [ + 'isoName' => 'Bodo', + 'nativeName' => 'Bodo', + ], + 'byn' => [ + 'isoName' => 'Bilin', + 'nativeName' => 'Bilin', + ], + 'ccp' => [ + 'isoName' => 'Chakma', + 'nativeName' => 'Chakma', + ], + 'cgg' => [ + 'isoName' => 'Chiga', + 'nativeName' => 'Chiga', + ], + 'chr' => [ + 'isoName' => 'Cherokee', + 'nativeName' => 'Cherokee', + ], + 'cmn' => [ + 'isoName' => 'Chinese', + 'nativeName' => 'Chinese', + ], + 'crh' => [ + 'isoName' => 'Crimean Turkish', + 'nativeName' => 'Crimean Turkish', + ], + 'csb' => [ + 'isoName' => 'Kashubian', + 'nativeName' => 'Kashubian', + ], + 'dav' => [ + 'isoName' => 'Taita', + 'nativeName' => 'Taita', + ], + 'dje' => [ + 'isoName' => 'Zarma', + 'nativeName' => 'Zarma', + ], + 'doi' => [ + 'isoName' => 'Dogri (macrolanguage)', + 'nativeName' => 'Dogri (macrolanguage)', + ], + 'dsb' => [ + 'isoName' => 'Lower Sorbian', + 'nativeName' => 'Lower Sorbian', + ], + 'dua' => [ + 'isoName' => 'Duala', + 'nativeName' => 'Duala', + ], + 'dyo' => [ + 'isoName' => 'Jola-Fonyi', + 'nativeName' => 'Jola-Fonyi', + ], + 'ebu' => [ + 'isoName' => 'Embu', + 'nativeName' => 'Embu', + ], + 'ewo' => [ + 'isoName' => 'Ewondo', + 'nativeName' => 'Ewondo', + ], + 'fil' => [ + 'isoName' => 'Filipino', + 'nativeName' => 'Filipino', + ], + 'fur' => [ + 'isoName' => 'Friulian', + 'nativeName' => 'Friulian', + ], + 'gez' => [ + 'isoName' => 'Geez', + 'nativeName' => 'Geez', + ], + 'gom' => [ + 'isoName' => 'Konkani, Goan', + 'nativeName' => 'ಕೊಂಕಣಿ', + ], + 'gsw' => [ + 'isoName' => 'Swiss German', + 'nativeName' => 'Swiss German', + ], + 'guz' => [ + 'isoName' => 'Gusii', + 'nativeName' => 'Gusii', + ], + 'hak' => [ + 'isoName' => 'Hakka Chinese', + 'nativeName' => 'Hakka Chinese', + ], + 'haw' => [ + 'isoName' => 'Hawaiian', + 'nativeName' => 'Hawaiian', + ], + 'hif' => [ + 'isoName' => 'Fiji Hindi', + 'nativeName' => 'Fiji Hindi', + ], + 'hne' => [ + 'isoName' => 'Chhattisgarhi', + 'nativeName' => 'Chhattisgarhi', + ], + 'hsb' => [ + 'isoName' => 'Upper Sorbian', + 'nativeName' => 'Upper Sorbian', + ], + 'jgo' => [ + 'isoName' => 'Ngomba', + 'nativeName' => 'Ngomba', + ], + 'jmc' => [ + 'isoName' => 'Machame', + 'nativeName' => 'Machame', + ], + 'kab' => [ + 'isoName' => 'Kabyle', + 'nativeName' => 'Kabyle', + ], + 'kam' => [ + 'isoName' => 'Kamba', + 'nativeName' => 'Kamba', + ], + 'kde' => [ + 'isoName' => 'Makonde', + 'nativeName' => 'Makonde', + ], + 'kea' => [ + 'isoName' => 'Kabuverdianu', + 'nativeName' => 'Kabuverdianu', + ], + 'khq' => [ + 'isoName' => 'Koyra Chiini', + 'nativeName' => 'Koyra Chiini', + ], + 'kkj' => [ + 'isoName' => 'Kako', + 'nativeName' => 'Kako', + ], + 'kln' => [ + 'isoName' => 'Kalenjin', + 'nativeName' => 'Kalenjin', + ], + 'kok' => [ + 'isoName' => 'Konkani', + 'nativeName' => 'Konkani', + ], + 'ksb' => [ + 'isoName' => 'Shambala', + 'nativeName' => 'Shambala', + ], + 'ksf' => [ + 'isoName' => 'Bafia', + 'nativeName' => 'Bafia', + ], + 'ksh' => [ + 'isoName' => 'Colognian', + 'nativeName' => 'Colognian', + ], + 'lag' => [ + 'isoName' => 'Langi', + 'nativeName' => 'Langi', + ], + 'lij' => [ + 'isoName' => 'Ligurian', + 'nativeName' => 'Ligurian', + ], + 'lkt' => [ + 'isoName' => 'Lakota', + 'nativeName' => 'Lakota', + ], + 'lrc' => [ + 'isoName' => 'Northern Luri', + 'nativeName' => 'Northern Luri', + ], + 'luo' => [ + 'isoName' => 'Luo', + 'nativeName' => 'Luo', + ], + 'luy' => [ + 'isoName' => 'Luyia', + 'nativeName' => 'Luyia', + ], + 'lzh' => [ + 'isoName' => 'Literary Chinese', + 'nativeName' => 'Literary Chinese', + ], + 'mag' => [ + 'isoName' => 'Magahi', + 'nativeName' => 'Magahi', + ], + 'mai' => [ + 'isoName' => 'Maithili', + 'nativeName' => 'Maithili', + ], + 'mas' => [ + 'isoName' => 'Masai', + 'nativeName' => 'Masai', + ], + 'mer' => [ + 'isoName' => 'Meru', + 'nativeName' => 'Meru', + ], + 'mfe' => [ + 'isoName' => 'Morisyen', + 'nativeName' => 'Morisyen', + ], + 'mgh' => [ + 'isoName' => 'Makhuwa-Meetto', + 'nativeName' => 'Makhuwa-Meetto', + ], + 'mgo' => [ + 'isoName' => 'Metaʼ', + 'nativeName' => 'Metaʼ', + ], + 'mhr' => [ + 'isoName' => 'Eastern Mari', + 'nativeName' => 'Eastern Mari', + ], + 'miq' => [ + 'isoName' => 'Mískito', + 'nativeName' => 'Mískito', + ], + 'mjw' => [ + 'isoName' => 'Karbi', + 'nativeName' => 'Karbi', + ], + 'mni' => [ + 'isoName' => 'Manipuri', + 'nativeName' => 'Manipuri', + ], + 'mua' => [ + 'isoName' => 'Mundang', + 'nativeName' => 'Mundang', + ], + 'mzn' => [ + 'isoName' => 'Mazanderani', + 'nativeName' => 'Mazanderani', + ], + 'nan' => [ + 'isoName' => 'Min Nan Chinese', + 'nativeName' => 'Min Nan Chinese', + ], + 'naq' => [ + 'isoName' => 'Nama', + 'nativeName' => 'Nama', + ], + 'nds' => [ + 'isoName' => 'Low German', + 'nativeName' => 'Low German', + ], + 'nhn' => [ + 'isoName' => 'Central Nahuatl', + 'nativeName' => 'Central Nahuatl', + ], + 'niu' => [ + 'isoName' => 'Niuean', + 'nativeName' => 'Niuean', + ], + 'nmg' => [ + 'isoName' => 'Kwasio', + 'nativeName' => 'Kwasio', + ], + 'nnh' => [ + 'isoName' => 'Ngiemboon', + 'nativeName' => 'Ngiemboon', + ], + 'nso' => [ + 'isoName' => 'Northern Sotho', + 'nativeName' => 'Northern Sotho', + ], + 'nus' => [ + 'isoName' => 'Nuer', + 'nativeName' => 'Nuer', + ], + 'nyn' => [ + 'isoName' => 'Nyankole', + 'nativeName' => 'Nyankole', + ], + 'pap' => [ + 'isoName' => 'Papiamento', + 'nativeName' => 'Papiamento', + ], + 'prg' => [ + 'isoName' => 'Prussian', + 'nativeName' => 'Prussian', + ], + 'quz' => [ + 'isoName' => 'Cusco Quechua', + 'nativeName' => 'Cusco Quechua', + ], + 'raj' => [ + 'isoName' => 'Rajasthani', + 'nativeName' => 'Rajasthani', + ], + 'rof' => [ + 'isoName' => 'Rombo', + 'nativeName' => 'Rombo', + ], + 'rwk' => [ + 'isoName' => 'Rwa', + 'nativeName' => 'Rwa', + ], + 'sah' => [ + 'isoName' => 'Sakha', + 'nativeName' => 'Sakha', + ], + 'saq' => [ + 'isoName' => 'Samburu', + 'nativeName' => 'Samburu', + ], + 'sat' => [ + 'isoName' => 'Santali', + 'nativeName' => 'Santali', + ], + 'sbp' => [ + 'isoName' => 'Sangu', + 'nativeName' => 'Sangu', + ], + 'scr' => [ + 'isoName' => 'Serbo Croatian', + 'nativeName' => 'Serbo Croatian', + ], + 'seh' => [ + 'isoName' => 'Sena', + 'nativeName' => 'Sena', + ], + 'ses' => [ + 'isoName' => 'Koyraboro Senni', + 'nativeName' => 'Koyraboro Senni', + ], + 'sgs' => [ + 'isoName' => 'Samogitian', + 'nativeName' => 'Samogitian', + ], + 'shi' => [ + 'isoName' => 'Tachelhit', + 'nativeName' => 'Tachelhit', + ], + 'shn' => [ + 'isoName' => 'Shan', + 'nativeName' => 'Shan', + ], + 'shs' => [ + 'isoName' => 'Shuswap', + 'nativeName' => 'Shuswap', + ], + 'sid' => [ + 'isoName' => 'Sidamo', + 'nativeName' => 'Sidamo', + ], + 'smn' => [ + 'isoName' => 'Inari Sami', + 'nativeName' => 'Inari Sami', + ], + 'szl' => [ + 'isoName' => 'Silesian', + 'nativeName' => 'Silesian', + ], + 'tcy' => [ + 'isoName' => 'Tulu', + 'nativeName' => 'Tulu', + ], + 'teo' => [ + 'isoName' => 'Teso', + 'nativeName' => 'Teso', + ], + 'tet' => [ + 'isoName' => 'Tetum', + 'nativeName' => 'Tetum', + ], + 'the' => [ + 'isoName' => 'Chitwania Tharu', + 'nativeName' => 'Chitwania Tharu', + ], + 'tig' => [ + 'isoName' => 'Tigre', + 'nativeName' => 'Tigre', + ], + 'tlh' => [ + 'isoName' => 'Klingon', + 'nativeName' => 'tlhIngan Hol', + ], + 'tpi' => [ + 'isoName' => 'Tok Pisin', + 'nativeName' => 'Tok Pisin', + ], + 'twq' => [ + 'isoName' => 'Tasawaq', + 'nativeName' => 'Tasawaq', + ], + 'tzl' => [ + 'isoName' => 'Talossan', + 'nativeName' => 'Talossan', + ], + 'tzm' => [ + 'isoName' => 'Tamazight, Central Atlas', + 'nativeName' => 'ⵜⵎⴰⵣⵉⵖⵜ', + ], + 'unm' => [ + 'isoName' => 'Unami', + 'nativeName' => 'Unami', + ], + 'vai' => [ + 'isoName' => 'Vai', + 'nativeName' => 'Vai', + ], + 'vun' => [ + 'isoName' => 'Vunjo', + 'nativeName' => 'Vunjo', + ], + 'wae' => [ + 'isoName' => 'Walser', + 'nativeName' => 'Walser', + ], + 'wal' => [ + 'isoName' => 'Wolaytta', + 'nativeName' => 'Wolaytta', + ], + 'xog' => [ + 'isoName' => 'Soga', + 'nativeName' => 'Soga', + ], + 'yav' => [ + 'isoName' => 'Yangben', + 'nativeName' => 'Yangben', + ], + 'yue' => [ + 'isoName' => 'Cantonese', + 'nativeName' => 'Cantonese', + ], + 'yuw' => [ + 'isoName' => 'Yau (Morobe Province)', + 'nativeName' => 'Yau (Morobe Province)', + ], + 'zgh' => [ + 'isoName' => 'Standard Moroccan Tamazight', + 'nativeName' => 'Standard Moroccan Tamazight', + ], +]; diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/regions.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/regions.php new file mode 100644 index 00000000000..8ab8a9e3aef --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/List/regions.php @@ -0,0 +1,265 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +/* + * ISO 3166-2 + */ +return [ + 'AD' => 'Andorra', + 'AE' => 'United Arab Emirates', + 'AF' => 'Afghanistan', + 'AG' => 'Antigua and Barbuda', + 'AI' => 'Anguilla', + 'AL' => 'Albania', + 'AM' => 'Armenia', + 'AO' => 'Angola', + 'AQ' => 'Antarctica', + 'AR' => 'Argentina', + 'AS' => 'American Samoa', + 'AT' => 'Austria', + 'AU' => 'Australia', + 'AW' => 'Aruba', + 'AX' => 'Åland Islands', + 'AZ' => 'Azerbaijan', + 'BA' => 'Bosnia and Herzegovina', + 'BB' => 'Barbados', + 'BD' => 'Bangladesh', + 'BE' => 'Belgium', + 'BF' => 'Burkina Faso', + 'BG' => 'Bulgaria', + 'BH' => 'Bahrain', + 'BI' => 'Burundi', + 'BJ' => 'Benin', + 'BL' => 'Saint Barthélemy', + 'BM' => 'Bermuda', + 'BN' => 'Brunei Darussalam', + 'BO' => 'Bolivia (Plurinational State of)', + 'BQ' => 'Bonaire, Sint Eustatius and Saba', + 'BR' => 'Brazil', + 'BS' => 'Bahamas', + 'BT' => 'Bhutan', + 'BV' => 'Bouvet Island', + 'BW' => 'Botswana', + 'BY' => 'Belarus', + 'BZ' => 'Belize', + 'CA' => 'Canada', + 'CC' => 'Cocos (Keeling) Islands', + 'CD' => 'Congo, Democratic Republic of the', + 'CF' => 'Central African Republic', + 'CG' => 'Congo', + 'CH' => 'Switzerland', + 'CI' => 'Côte d\'Ivoire', + 'CK' => 'Cook Islands', + 'CL' => 'Chile', + 'CM' => 'Cameroon', + 'CN' => 'China', + 'CO' => 'Colombia', + 'CR' => 'Costa Rica', + 'CU' => 'Cuba', + 'CV' => 'Cabo Verde', + 'CW' => 'Curaçao', + 'CX' => 'Christmas Island', + 'CY' => 'Cyprus', + 'CZ' => 'Czechia', + 'DE' => 'Germany', + 'DJ' => 'Djibouti', + 'DK' => 'Denmark', + 'DM' => 'Dominica', + 'DO' => 'Dominican Republic', + 'DZ' => 'Algeria', + 'EC' => 'Ecuador', + 'EE' => 'Estonia', + 'EG' => 'Egypt', + 'EH' => 'Western Sahara', + 'ER' => 'Eritrea', + 'ES' => 'Spain', + 'ET' => 'Ethiopia', + 'FI' => 'Finland', + 'FJ' => 'Fiji', + 'FK' => 'Falkland Islands (Malvinas)', + 'FM' => 'Micronesia (Federated States of)', + 'FO' => 'Faroe Islands', + 'FR' => 'France', + 'GA' => 'Gabon', + 'GB' => 'United Kingdom of Great Britain and Northern Ireland', + 'GD' => 'Grenada', + 'GE' => 'Georgia', + 'GF' => 'French Guiana', + 'GG' => 'Guernsey', + 'GH' => 'Ghana', + 'GI' => 'Gibraltar', + 'GL' => 'Greenland', + 'GM' => 'Gambia', + 'GN' => 'Guinea', + 'GP' => 'Guadeloupe', + 'GQ' => 'Equatorial Guinea', + 'GR' => 'Greece', + 'GS' => 'South Georgia and the South Sandwich Islands', + 'GT' => 'Guatemala', + 'GU' => 'Guam', + 'GW' => 'Guinea-Bissau', + 'GY' => 'Guyana', + 'HK' => 'Hong Kong', + 'HM' => 'Heard Island and McDonald Islands', + 'HN' => 'Honduras', + 'HR' => 'Croatia', + 'HT' => 'Haiti', + 'HU' => 'Hungary', + 'ID' => 'Indonesia', + 'IE' => 'Ireland', + 'IL' => 'Israel', + 'IM' => 'Isle of Man', + 'IN' => 'India', + 'IO' => 'British Indian Ocean Territory', + 'IQ' => 'Iraq', + 'IR' => 'Iran (Islamic Republic of)', + 'IS' => 'Iceland', + 'IT' => 'Italy', + 'JE' => 'Jersey', + 'JM' => 'Jamaica', + 'JO' => 'Jordan', + 'JP' => 'Japan', + 'KE' => 'Kenya', + 'KG' => 'Kyrgyzstan', + 'KH' => 'Cambodia', + 'KI' => 'Kiribati', + 'KM' => 'Comoros', + 'KN' => 'Saint Kitts and Nevis', + 'KP' => 'Korea (Democratic People\'s Republic of)', + 'KR' => 'Korea, Republic of', + 'KW' => 'Kuwait', + 'KY' => 'Cayman Islands', + 'KZ' => 'Kazakhstan', + 'LA' => 'Lao People\'s Democratic Republic', + 'LB' => 'Lebanon', + 'LC' => 'Saint Lucia', + 'LI' => 'Liechtenstein', + 'LK' => 'Sri Lanka', + 'LR' => 'Liberia', + 'LS' => 'Lesotho', + 'LT' => 'Lithuania', + 'LU' => 'Luxembourg', + 'LV' => 'Latvia', + 'LY' => 'Libya', + 'MA' => 'Morocco', + 'MC' => 'Monaco', + 'MD' => 'Moldova, Republic of', + 'ME' => 'Montenegro', + 'MF' => 'Saint Martin (French part)', + 'MG' => 'Madagascar', + 'MH' => 'Marshall Islands', + 'MK' => 'Macedonia, the former Yugoslav Republic of', + 'ML' => 'Mali', + 'MM' => 'Myanmar', + 'MN' => 'Mongolia', + 'MO' => 'Macao', + 'MP' => 'Northern Mariana Islands', + 'MQ' => 'Martinique', + 'MR' => 'Mauritania', + 'MS' => 'Montserrat', + 'MT' => 'Malta', + 'MU' => 'Mauritius', + 'MV' => 'Maldives', + 'MW' => 'Malawi', + 'MX' => 'Mexico', + 'MY' => 'Malaysia', + 'MZ' => 'Mozambique', + 'NA' => 'Namibia', + 'NC' => 'New Caledonia', + 'NE' => 'Niger', + 'NF' => 'Norfolk Island', + 'NG' => 'Nigeria', + 'NI' => 'Nicaragua', + 'NL' => 'Netherlands', + 'NO' => 'Norway', + 'NP' => 'Nepal', + 'NR' => 'Nauru', + 'NU' => 'Niue', + 'NZ' => 'New Zealand', + 'OM' => 'Oman', + 'PA' => 'Panama', + 'PE' => 'Peru', + 'PF' => 'French Polynesia', + 'PG' => 'Papua New Guinea', + 'PH' => 'Philippines', + 'PK' => 'Pakistan', + 'PL' => 'Poland', + 'PM' => 'Saint Pierre and Miquelon', + 'PN' => 'Pitcairn', + 'PR' => 'Puerto Rico', + 'PS' => 'Palestine, State of', + 'PT' => 'Portugal', + 'PW' => 'Palau', + 'PY' => 'Paraguay', + 'QA' => 'Qatar', + 'RE' => 'Réunion', + 'RO' => 'Romania', + 'RS' => 'Serbia', + 'RU' => 'Russian Federation', + 'RW' => 'Rwanda', + 'SA' => 'Saudi Arabia', + 'SB' => 'Solomon Islands', + 'SC' => 'Seychelles', + 'SD' => 'Sudan', + 'SE' => 'Sweden', + 'SG' => 'Singapore', + 'SH' => 'Saint Helena, Ascension and Tristan da Cunha', + 'SI' => 'Slovenia', + 'SJ' => 'Svalbard and Jan Mayen', + 'SK' => 'Slovakia', + 'SL' => 'Sierra Leone', + 'SM' => 'San Marino', + 'SN' => 'Senegal', + 'SO' => 'Somalia', + 'SR' => 'Suriname', + 'SS' => 'South Sudan', + 'ST' => 'Sao Tome and Principe', + 'SV' => 'El Salvador', + 'SX' => 'Sint Maarten (Dutch part)', + 'SY' => 'Syrian Arab Republic', + 'SZ' => 'Eswatini', + 'TC' => 'Turks and Caicos Islands', + 'TD' => 'Chad', + 'TF' => 'French Southern Territories', + 'TG' => 'Togo', + 'TH' => 'Thailand', + 'TJ' => 'Tajikistan', + 'TK' => 'Tokelau', + 'TL' => 'Timor-Leste', + 'TM' => 'Turkmenistan', + 'TN' => 'Tunisia', + 'TO' => 'Tonga', + 'TR' => 'Turkey', + 'TT' => 'Trinidad and Tobago', + 'TV' => 'Tuvalu', + 'TW' => 'Taiwan, Province of China', + 'TZ' => 'Tanzania, United Republic of', + 'UA' => 'Ukraine', + 'UG' => 'Uganda', + 'UM' => 'United States Minor Outlying Islands', + 'US' => 'United States of America', + 'UY' => 'Uruguay', + 'UZ' => 'Uzbekistan', + 'VA' => 'Holy See', + 'VC' => 'Saint Vincent and the Grenadines', + 'VE' => 'Venezuela (Bolivarian Republic of)', + 'VG' => 'Virgin Islands (British)', + 'VI' => 'Virgin Islands (U.S.)', + 'VN' => 'Viet Nam', + 'VU' => 'Vanuatu', + 'WF' => 'Wallis and Futuna', + 'WS' => 'Samoa', + 'YE' => 'Yemen', + 'YT' => 'Mayotte', + 'ZA' => 'South Africa', + 'ZM' => 'Zambia', + 'ZW' => 'Zimbabwe', +]; diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php new file mode 100644 index 00000000000..0369e809f9f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/AbstractMacro.php @@ -0,0 +1,212 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use Closure; +use PHPStan\Reflection\Php\BuiltinMethodReflection; +use PHPStan\TrinaryLogic; +use ReflectionClass; +use ReflectionFunction; +use ReflectionMethod; +use ReflectionParameter; +use ReflectionType; +use stdClass; +use Throwable; + +abstract class AbstractMacro implements BuiltinMethodReflection +{ + /** + * The reflection function/method. + * + * @var ReflectionFunction|ReflectionMethod + */ + protected $reflectionFunction; + + /** + * The class name. + * + * @var class-string + */ + private $className; + + /** + * The method name. + * + * @var string + */ + private $methodName; + + /** + * The parameters. + * + * @var ReflectionParameter[] + */ + private $parameters; + + /** + * The is static. + * + * @var bool + */ + private $static = false; + + /** + * Macro constructor. + * + * @param string $className + * @phpstan-param class-string $className + * + * @param string $methodName + * @param callable $macro + */ + public function __construct(string $className, string $methodName, $macro) + { + $this->className = $className; + $this->methodName = $methodName; + $this->reflectionFunction = \is_array($macro) + ? new ReflectionMethod($macro[0], $macro[1]) + : new ReflectionFunction($macro); + $this->parameters = $this->reflectionFunction->getParameters(); + + if ($this->reflectionFunction->isClosure()) { + try { + $closure = $this->reflectionFunction->getClosure(); + $boundClosure = Closure::bind($closure, new stdClass()); + $this->static = (!$boundClosure || (new ReflectionFunction($boundClosure))->getClosureThis() === null); + } catch (Throwable $e) { + $this->static = true; + } + } + } + + /** + * {@inheritdoc} + */ + public function getDeclaringClass(): ReflectionClass + { + return new ReflectionClass($this->className); + } + + /** + * {@inheritdoc} + */ + public function isPrivate(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function isPublic(): bool + { + return true; + } + + /** + * {@inheritdoc} + */ + public function isFinal(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function isInternal(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function isAbstract(): bool + { + return false; + } + + /** + * {@inheritdoc} + */ + public function isStatic(): bool + { + return $this->static; + } + + /** + * {@inheritdoc} + */ + public function getDocComment(): ?string + { + return $this->reflectionFunction->getDocComment() ?: null; + } + + /** + * {@inheritdoc} + */ + public function getName(): string + { + return $this->methodName; + } + + /** + * {@inheritdoc} + */ + public function getParameters(): array + { + return $this->parameters; + } + + /** + * {@inheritdoc} + */ + public function getReturnType(): ?ReflectionType + { + return $this->reflectionFunction->getReturnType(); + } + + /** + * {@inheritdoc} + */ + public function isDeprecated(): TrinaryLogic + { + return TrinaryLogic::createFromBoolean( + $this->reflectionFunction->isDeprecated() || + preg_match('/@deprecated/i', $this->getDocComment() ?: '') + ); + } + + /** + * {@inheritdoc} + */ + public function isVariadic(): bool + { + return $this->reflectionFunction->isVariadic(); + } + + /** + * {@inheritdoc} + */ + public function getPrototype(): BuiltinMethodReflection + { + return $this; + } + + public function getTentativeReturnType(): ?ReflectionType + { + return null; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php new file mode 100644 index 00000000000..de3e51f6a06 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/Macro.php @@ -0,0 +1,34 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use PHPStan\BetterReflection\Reflection\Adapter; +use PHPStan\Reflection\Php\BuiltinMethodReflection; +use ReflectionMethod; + +$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getReflection'); + +require $method->hasReturnType() && $method->getReturnType()->getName() === Adapter\ReflectionMethod::class + ? __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroStatic.php' + : __DIR__.'/../../../lazy/Carbon/PHPStan/AbstractMacroBuiltin.php'; + +$method = new ReflectionMethod(BuiltinMethodReflection::class, 'getFileName'); + +require $method->hasReturnType() + ? __DIR__.'/../../../lazy/Carbon/PHPStan/MacroStrongType.php' + : __DIR__.'/../../../lazy/Carbon/PHPStan/MacroWeakType.php'; + +final class Macro extends LazyMacro +{ +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php new file mode 100644 index 00000000000..8e2524c0991 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroExtension.php @@ -0,0 +1,78 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use PHPStan\Reflection\ClassReflection; +use PHPStan\Reflection\MethodReflection; +use PHPStan\Reflection\MethodsClassReflectionExtension; +use PHPStan\Reflection\Php\PhpMethodReflectionFactory; +use PHPStan\Type\TypehintHelper; + +/** + * Class MacroExtension. + * + * @codeCoverageIgnore Pure PHPStan wrapper. + */ +final class MacroExtension implements MethodsClassReflectionExtension +{ + /** + * @var PhpMethodReflectionFactory + */ + protected $methodReflectionFactory; + + /** + * @var MacroScanner + */ + protected $scanner; + + /** + * Extension constructor. + * + * @param PhpMethodReflectionFactory $methodReflectionFactory + */ + public function __construct(PhpMethodReflectionFactory $methodReflectionFactory) + { + $this->scanner = new MacroScanner(); + $this->methodReflectionFactory = $methodReflectionFactory; + } + + /** + * {@inheritdoc} + */ + public function hasMethod(ClassReflection $classReflection, string $methodName): bool + { + return $this->scanner->hasMethod($classReflection->getName(), $methodName); + } + + /** + * {@inheritdoc} + */ + public function getMethod(ClassReflection $classReflection, string $methodName): MethodReflection + { + $builtinMacro = $this->scanner->getMethod($classReflection->getName(), $methodName); + + return $this->methodReflectionFactory->create( + $classReflection, + null, + $builtinMacro, + $classReflection->getActiveTemplateTypeMap(), + [], + TypehintHelper::decideTypeFromReflection($builtinMacro->getReturnType()), + null, + null, + $builtinMacro->isDeprecated()->yes(), + $builtinMacro->isInternal(), + $builtinMacro->isFinal(), + $builtinMacro->getDocComment() + ); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php new file mode 100644 index 00000000000..d169939d821 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/PHPStan/MacroScanner.php @@ -0,0 +1,63 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\PHPStan; + +use Carbon\CarbonInterface; +use ReflectionClass; +use ReflectionException; + +final class MacroScanner +{ + /** + * Return true if the given pair class-method is a Carbon macro. + * + * @param string $className + * @phpstan-param class-string $className + * + * @param string $methodName + * + * @return bool + */ + public function hasMethod(string $className, string $methodName): bool + { + return is_a($className, CarbonInterface::class, true) && + \is_callable([$className, 'hasMacro']) && + $className::hasMacro($methodName); + } + + /** + * Return the Macro for a given pair class-method. + * + * @param string $className + * @phpstan-param class-string $className + * + * @param string $methodName + * + * @throws ReflectionException + * + * @return Macro + */ + public function getMethod(string $className, string $methodName): Macro + { + $reflectionClass = new ReflectionClass($className); + $property = $reflectionClass->getProperty('globalMacros'); + + $property->setAccessible(true); + $macro = $property->getValue()[$methodName]; + + return new Macro( + $className, + $methodName, + $macro + ); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php new file mode 100644 index 00000000000..71bbb723015 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php @@ -0,0 +1,443 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Exceptions\UnknownUnitException; + +/** + * Trait Boundaries. + * + * startOf, endOf and derived method for each unit. + * + * Depends on the following properties: + * + * @property int $year + * @property int $month + * @property int $daysInMonth + * @property int $quarter + * + * Depends on the following methods: + * + * @method $this setTime(int $hour, int $minute, int $second = 0, int $microseconds = 0) + * @method $this setDate(int $year, int $month, int $day) + * @method $this addMonths(int $value = 1) + */ +trait Boundaries +{ + /** + * Resets the time to 00:00:00 start of day + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay(); + * ``` + * + * @return static + */ + public function startOfDay() + { + return $this->setTime(0, 0, 0, 0); + } + + /** + * Resets the time to 23:59:59.999999 end of day + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay(); + * ``` + * + * @return static + */ + public function endOfDay() + { + return $this->setTime(static::HOURS_PER_DAY - 1, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); + } + + /** + * Resets the date to the first day of the month and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth(); + * ``` + * + * @return static + */ + public function startOfMonth() + { + return $this->setDate($this->year, $this->month, 1)->startOfDay(); + } + + /** + * Resets the date to end of the month and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth(); + * ``` + * + * @return static + */ + public function endOfMonth() + { + return $this->setDate($this->year, $this->month, $this->daysInMonth)->endOfDay(); + } + + /** + * Resets the date to the first day of the quarter and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter(); + * ``` + * + * @return static + */ + public function startOfQuarter() + { + $month = ($this->quarter - 1) * static::MONTHS_PER_QUARTER + 1; + + return $this->setDate($this->year, $month, 1)->startOfDay(); + } + + /** + * Resets the date to end of the quarter and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter(); + * ``` + * + * @return static + */ + public function endOfQuarter() + { + return $this->startOfQuarter()->addMonths(static::MONTHS_PER_QUARTER - 1)->endOfMonth(); + } + + /** + * Resets the date to the first day of the year and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear(); + * ``` + * + * @return static + */ + public function startOfYear() + { + return $this->setDate($this->year, 1, 1)->startOfDay(); + } + + /** + * Resets the date to end of the year and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear(); + * ``` + * + * @return static + */ + public function endOfYear() + { + return $this->setDate($this->year, 12, 31)->endOfDay(); + } + + /** + * Resets the date to the first day of the decade and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade(); + * ``` + * + * @return static + */ + public function startOfDecade() + { + $year = $this->year - $this->year % static::YEARS_PER_DECADE; + + return $this->setDate($year, 1, 1)->startOfDay(); + } + + /** + * Resets the date to end of the decade and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade(); + * ``` + * + * @return static + */ + public function endOfDecade() + { + $year = $this->year - $this->year % static::YEARS_PER_DECADE + static::YEARS_PER_DECADE - 1; + + return $this->setDate($year, 12, 31)->endOfDay(); + } + + /** + * Resets the date to the first day of the century and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury(); + * ``` + * + * @return static + */ + public function startOfCentury() + { + $year = $this->year - ($this->year - 1) % static::YEARS_PER_CENTURY; + + return $this->setDate($year, 1, 1)->startOfDay(); + } + + /** + * Resets the date to end of the century and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury(); + * ``` + * + * @return static + */ + public function endOfCentury() + { + $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_CENTURY + static::YEARS_PER_CENTURY; + + return $this->setDate($year, 12, 31)->endOfDay(); + } + + /** + * Resets the date to the first day of the millennium and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium(); + * ``` + * + * @return static + */ + public function startOfMillennium() + { + $year = $this->year - ($this->year - 1) % static::YEARS_PER_MILLENNIUM; + + return $this->setDate($year, 1, 1)->startOfDay(); + } + + /** + * Resets the date to end of the millennium and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium(); + * ``` + * + * @return static + */ + public function endOfMillennium() + { + $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_MILLENNIUM + static::YEARS_PER_MILLENNIUM; + + return $this->setDate($year, 12, 31)->endOfDay(); + } + + /** + * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n"; + * ``` + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return static + */ + public function startOfWeek($weekStartsAt = null) + { + return $this->subDays((7 + $this->dayOfWeek - ($weekStartsAt ?? $this->firstWeekDay)) % 7)->startOfDay(); + } + + /** + * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n"; + * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n"; + * ``` + * + * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week + * + * @return static + */ + public function endOfWeek($weekEndsAt = null) + { + return $this->addDays((7 - $this->dayOfWeek + ($weekEndsAt ?? $this->lastWeekDay)) % 7)->endOfDay(); + } + + /** + * Modify to start of current hour, minutes and seconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour(); + * ``` + * + * @return static + */ + public function startOfHour() + { + return $this->setTime($this->hour, 0, 0, 0); + } + + /** + * Modify to end of current hour, minutes and seconds become 59 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour(); + * ``` + * + * @return static + */ + public function endOfHour() + { + return $this->setTime($this->hour, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); + } + + /** + * Modify to start of current minute, seconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute(); + * ``` + * + * @return static + */ + public function startOfMinute() + { + return $this->setTime($this->hour, $this->minute, 0, 0); + } + + /** + * Modify to end of current minute, seconds become 59 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute(); + * ``` + * + * @return static + */ + public function endOfMinute() + { + return $this->setTime($this->hour, $this->minute, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1); + } + + /** + * Modify to start of current second, microseconds become 0 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOfSecond() + * ->format('H:i:s.u'); + * ``` + * + * @return static + */ + public function startOfSecond() + { + return $this->setTime($this->hour, $this->minute, $this->second, 0); + } + + /** + * Modify to end of current second, microseconds become 999999 + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->endOfSecond() + * ->format('H:i:s.u'); + * ``` + * + * @return static + */ + public function endOfSecond() + { + return $this->setTime($this->hour, $this->minute, $this->second, static::MICROSECONDS_PER_SECOND - 1); + } + + /** + * Modify to start of current given unit. + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOf('month') + * ->endOf('week', Carbon::FRIDAY); + * ``` + * + * @param string $unit + * @param array $params + * + * @return static + */ + public function startOf($unit, ...$params) + { + $ucfUnit = ucfirst(static::singularUnit($unit)); + $method = "startOf$ucfUnit"; + if (!method_exists($this, $method)) { + throw new UnknownUnitException($unit); + } + + return $this->$method(...$params); + } + + /** + * Modify to end of current given unit. + * + * @example + * ``` + * echo Carbon::parse('2018-07-25 12:45:16.334455') + * ->startOf('month') + * ->endOf('week', Carbon::FRIDAY); + * ``` + * + * @param string $unit + * @param array $params + * + * @return static + */ + public function endOf($unit, ...$params) + { + $ucfUnit = ucfirst(static::singularUnit($unit)); + $method = "endOf$ucfUnit"; + if (!method_exists($this, $method)) { + throw new UnknownUnitException($unit); + } + + return $this->$method(...$params); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php new file mode 100644 index 00000000000..5f7c7c011ab --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Cast.php @@ -0,0 +1,43 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Exceptions\InvalidCastException; +use DateTimeInterface; + +/** + * Trait Cast. + * + * Utils to cast into an other class. + */ +trait Cast +{ + /** + * Cast the current instance into the given class. + * + * @param string $className The $className::instance() method will be called to cast the current object. + * + * @return DateTimeInterface + */ + public function cast(string $className) + { + if (!method_exists($className, 'instance')) { + if (is_a($className, DateTimeInterface::class, true)) { + return new $className($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); + } + + throw new InvalidCastException("$className has not the instance() method needed to cast the date."); + } + + return $className::instance($this); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php new file mode 100644 index 00000000000..d4c2d8c8e2f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Comparison.php @@ -0,0 +1,1099 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use BadMethodCallException; +use Carbon\CarbonInterface; +use Carbon\Exceptions\BadComparisonUnitException; +use InvalidArgumentException; + +/** + * Trait Comparison. + * + * Comparison utils and testers. All the following methods return booleans. + * nowWithSameTz + * + * Depends on the following methods: + * + * @method static resolveCarbon($date) + * @method static copy() + * @method static nowWithSameTz() + * @method static static yesterday($timezone = null) + * @method static static tomorrow($timezone = null) + */ +trait Comparison +{ + /** @var bool */ + protected $endOfTime = false; + + /** @var bool */ + protected $startOfTime = false; + + /** + * Determines if the instance is equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->eq(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->eq('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see equalTo() + * + * @return bool + */ + public function eq($date): bool + { + return $this->equalTo($date); + } + + /** + * Determines if the instance is equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo(Carbon::parse('2018-07-25 12:45:16')); // true + * Carbon::parse('2018-07-25 12:45:16')->equalTo('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function equalTo($date): bool + { + $this->discourageNull($date); + $this->discourageBoolean($date); + + return $this == $this->resolveCarbon($date); + } + + /** + * Determines if the instance is not equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->ne(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->ne('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see notEqualTo() + * + * @return bool + */ + public function ne($date): bool + { + return $this->notEqualTo($date); + } + + /** + * Determines if the instance is not equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo(Carbon::parse('2018-07-25 12:45:16')); // false + * Carbon::parse('2018-07-25 12:45:16')->notEqualTo('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function notEqualTo($date): bool + { + return !$this->equalTo($date); + } + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->gt('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThan() + * + * @return bool + */ + public function gt($date): bool + { + return $this->greaterThan($date); + } + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->greaterThan('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function greaterThan($date): bool + { + $this->discourageNull($date); + $this->discourageBoolean($date); + + return $this > $this->resolveCarbon($date); + } + + /** + * Determines if the instance is greater (after) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isAfter('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThan() + * + * @return bool + */ + public function isAfter($date): bool + { + return $this->greaterThan($date); + } + + /** + * Determines if the instance is greater (after) than or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->gte('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see greaterThanOrEqualTo() + * + * @return bool + */ + public function gte($date): bool + { + return $this->greaterThanOrEqualTo($date); + } + + /** + * Determines if the instance is greater (after) than or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:15'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->greaterThanOrEqualTo('2018-07-25 12:45:17'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function greaterThanOrEqualTo($date): bool + { + $this->discourageNull($date); + $this->discourageBoolean($date); + + return $this >= $this->resolveCarbon($date); + } + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lt('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThan() + * + * @return bool + */ + public function lt($date): bool + { + return $this->lessThan($date); + } + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThan('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function lessThan($date): bool + { + $this->discourageNull($date); + $this->discourageBoolean($date); + + return $this < $this->resolveCarbon($date); + } + + /** + * Determines if the instance is less (before) than another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:16'); // false + * Carbon::parse('2018-07-25 12:45:16')->isBefore('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThan() + * + * @return bool + */ + public function isBefore($date): bool + { + return $this->lessThan($date); + } + + /** + * Determines if the instance is less (before) or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lte('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see lessThanOrEqualTo() + * + * @return bool + */ + public function lte($date): bool + { + return $this->lessThanOrEqualTo($date); + } + + /** + * Determines if the instance is less (before) or equal to another + * + * @example + * ``` + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:15'); // false + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:16'); // true + * Carbon::parse('2018-07-25 12:45:16')->lessThanOrEqualTo('2018-07-25 12:45:17'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return bool + */ + public function lessThanOrEqualTo($date): bool + { + $this->discourageNull($date); + $this->discourageBoolean($date); + + return $this <= $this->resolveCarbon($date); + } + + /** + * Determines if the instance is between two others. + * + * The third argument allow you to specify if bounds are included or not (true by default) + * but for when you including/excluding bounds may produce different results in your application, + * we recommend to use the explicit methods ->betweenIncluded() or ->betweenExcluded() instead. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->between('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->between('2018-07-25', '2018-08-01', false); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function between($date1, $date2, $equal = true): bool + { + $date1 = $this->resolveCarbon($date1); + $date2 = $this->resolveCarbon($date2); + + if ($date1->greaterThan($date2)) { + [$date1, $date2] = [$date2, $date1]; + } + + if ($equal) { + return $this >= $date1 && $this <= $date2; + } + + return $this > $date1 && $this < $date2; + } + + /** + * Determines if the instance is between two others, bounds included. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->betweenIncluded('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->betweenIncluded('2018-07-25', '2018-08-01'); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return bool + */ + public function betweenIncluded($date1, $date2): bool + { + return $this->between($date1, $date2, true); + } + + /** + * Determines if the instance is between two others, bounds excluded. + * + * @example + * ``` + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->betweenExcluded('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->betweenExcluded('2018-07-25', '2018-08-01'); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return bool + */ + public function betweenExcluded($date1, $date2): bool + { + return $this->between($date1, $date2, false); + } + + /** + * Determines if the instance is between two others + * + * @example + * ``` + * Carbon::parse('2018-07-25')->isBetween('2018-07-14', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-08-01', '2018-08-20'); // false + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01'); // true + * Carbon::parse('2018-07-25')->isBetween('2018-07-25', '2018-08-01', false); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * @param bool $equal Indicates if an equal to comparison should be done + * + * @return bool + */ + public function isBetween($date1, $date2, $equal = true): bool + { + return $this->between($date1, $date2, $equal); + } + + /** + * Determines if the instance is a weekday. + * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekday(); // false + * Carbon::parse('2019-07-15')->isWeekday(); // true + * ``` + * + * @return bool + */ + public function isWeekday() + { + return !$this->isWeekend(); + } + + /** + * Determines if the instance is a weekend day. + * + * @example + * ``` + * Carbon::parse('2019-07-14')->isWeekend(); // true + * Carbon::parse('2019-07-15')->isWeekend(); // false + * ``` + * + * @return bool + */ + public function isWeekend() + { + return \in_array($this->dayOfWeek, static::$weekendDays, true); + } + + /** + * Determines if the instance is yesterday. + * + * @example + * ``` + * Carbon::yesterday()->isYesterday(); // true + * Carbon::tomorrow()->isYesterday(); // false + * ``` + * + * @return bool + */ + public function isYesterday() + { + return $this->toDateString() === static::yesterday($this->getTimezone())->toDateString(); + } + + /** + * Determines if the instance is today. + * + * @example + * ``` + * Carbon::today()->isToday(); // true + * Carbon::tomorrow()->isToday(); // false + * ``` + * + * @return bool + */ + public function isToday() + { + return $this->toDateString() === $this->nowWithSameTz()->toDateString(); + } + + /** + * Determines if the instance is tomorrow. + * + * @example + * ``` + * Carbon::tomorrow()->isTomorrow(); // true + * Carbon::yesterday()->isTomorrow(); // false + * ``` + * + * @return bool + */ + public function isTomorrow() + { + return $this->toDateString() === static::tomorrow($this->getTimezone())->toDateString(); + } + + /** + * Determines if the instance is in the future, ie. greater (after) than now. + * + * @example + * ``` + * Carbon::now()->addHours(5)->isFuture(); // true + * Carbon::now()->subHours(5)->isFuture(); // false + * ``` + * + * @return bool + */ + public function isFuture() + { + return $this->greaterThan($this->nowWithSameTz()); + } + + /** + * Determines if the instance is in the past, ie. less (before) than now. + * + * @example + * ``` + * Carbon::now()->subHours(5)->isPast(); // true + * Carbon::now()->addHours(5)->isPast(); // false + * ``` + * + * @return bool + */ + public function isPast() + { + return $this->lessThan($this->nowWithSameTz()); + } + + /** + * Determines if the instance is a leap year. + * + * @example + * ``` + * Carbon::parse('2020-01-01')->isLeapYear(); // true + * Carbon::parse('2019-01-01')->isLeapYear(); // false + * ``` + * + * @return bool + */ + public function isLeapYear() + { + return $this->rawFormat('L') === '1'; + } + + /** + * Determines if the instance is a long year + * + * @example + * ``` + * Carbon::parse('2015-01-01')->isLongYear(); // true + * Carbon::parse('2016-01-01')->isLongYear(); // false + * ``` + * + * @see https://en.wikipedia.org/wiki/ISO_8601#Week_dates + * + * @return bool + */ + public function isLongYear() + { + return static::create($this->year, 12, 28, 0, 0, 0, $this->tz)->weekOfYear === 53; + } + + /** + * Compares the formatted values of the two dates. + * + * @example + * ``` + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-12-13')); // true + * Carbon::parse('2019-06-13')->isSameAs('Y-d', Carbon::parse('2019-06-14')); // false + * ``` + * + * @param string $format date formats to compare. + * @param \Carbon\Carbon|\DateTimeInterface|string|null $date instance to compare with or null to use current day. + * + * @return bool + */ + public function isSameAs($format, $date = null) + { + return $this->rawFormat($format) === $this->resolveCarbon($date)->rawFormat($format); + } + + /** + * Determines if the instance is in the current unit given. + * + * @example + * ``` + * Carbon::parse('2019-01-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // true + * Carbon::parse('2018-12-13')->isSameUnit('year', Carbon::parse('2019-12-25')); // false + * ``` + * + * @param string $unit singular unit string + * @param \Carbon\Carbon|\DateTimeInterface|null $date instance to compare with or null to use current day. + * + * @throws BadComparisonUnitException + * + * @return bool + */ + public function isSameUnit($unit, $date = null) + { + $units = [ + // @call isSameUnit + 'year' => 'Y', + // @call isSameUnit + 'week' => 'o-W', + // @call isSameUnit + 'day' => 'Y-m-d', + // @call isSameUnit + 'hour' => 'Y-m-d H', + // @call isSameUnit + 'minute' => 'Y-m-d H:i', + // @call isSameUnit + 'second' => 'Y-m-d H:i:s', + // @call isSameUnit + 'micro' => 'Y-m-d H:i:s.u', + // @call isSameUnit + 'microsecond' => 'Y-m-d H:i:s.u', + ]; + + if (isset($units[$unit])) { + return $this->isSameAs($units[$unit], $date); + } + + if (isset($this->$unit)) { + return $this->resolveCarbon($date)->$unit === $this->$unit; + } + + if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { + throw new BadComparisonUnitException($unit); + } + + return false; + } + + /** + * Determines if the instance is in the current unit given. + * + * @example + * ``` + * Carbon::now()->isCurrentUnit('hour'); // true + * Carbon::now()->subHours(2)->isCurrentUnit('hour'); // false + * ``` + * + * @param string $unit The unit to test. + * + * @throws BadMethodCallException + * + * @return bool + */ + public function isCurrentUnit($unit) + { + return $this->{'isSame'.ucfirst($unit)}(); + } + + /** + * Checks if the passed in date is in the same quarter as the instance quarter (and year if needed). + * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-03-01')); // true + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2019-04-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01')); // false + * Carbon::parse('2019-01-12')->isSameQuarter(Carbon::parse('2018-03-01'), false); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|string|null $date The instance to compare with or null to use current day. + * @param bool $ofSameYear Check if it is the same month in the same year. + * + * @return bool + */ + public function isSameQuarter($date = null, $ofSameYear = true) + { + $date = $this->resolveCarbon($date); + + return $this->quarter === $date->quarter && (!$ofSameYear || $this->isSameYear($date)); + } + + /** + * Checks if the passed in date is in the same month as the instance´s month. + * + * @example + * ``` + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-01-01')); // true + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2019-02-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01')); // false + * Carbon::parse('2019-01-12')->isSameMonth(Carbon::parse('2018-01-01'), false); // true + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use the current date. + * @param bool $ofSameYear Check if it is the same month in the same year. + * + * @return bool + */ + public function isSameMonth($date = null, $ofSameYear = true) + { + return $this->isSameAs($ofSameYear ? 'Y-m' : 'm', $date); + } + + /** + * Checks if this day is a specific day of the week. + * + * @example + * ``` + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::WEDNESDAY); // true + * Carbon::parse('2019-07-17')->isDayOfWeek(Carbon::FRIDAY); // false + * Carbon::parse('2019-07-17')->isDayOfWeek('Wednesday'); // true + * Carbon::parse('2019-07-17')->isDayOfWeek('Friday'); // false + * ``` + * + * @param int $dayOfWeek + * + * @return bool + */ + public function isDayOfWeek($dayOfWeek) + { + if (\is_string($dayOfWeek) && \defined($constant = static::class.'::'.strtoupper($dayOfWeek))) { + $dayOfWeek = \constant($constant); + } + + return $this->dayOfWeek === $dayOfWeek; + } + + /** + * Check if its the birthday. Compares the date/month values of the two dates. + * + * @example + * ``` + * Carbon::now()->subYears(5)->isBirthday(); // true + * Carbon::now()->subYears(5)->subDay()->isBirthday(); // false + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-05')); // true + * Carbon::parse('2019-06-05')->isBirthday(Carbon::parse('2001-06-06')); // false + * ``` + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date The instance to compare with or null to use current day. + * + * @return bool + */ + public function isBirthday($date = null) + { + return $this->isSameAs('md', $date); + } + + /** + * Check if today is the last day of the Month + * + * @example + * ``` + * Carbon::parse('2019-02-28')->isLastOfMonth(); // true + * Carbon::parse('2019-03-28')->isLastOfMonth(); // false + * Carbon::parse('2019-03-30')->isLastOfMonth(); // false + * Carbon::parse('2019-03-31')->isLastOfMonth(); // true + * Carbon::parse('2019-04-30')->isLastOfMonth(); // true + * ``` + * + * @return bool + */ + public function isLastOfMonth() + { + return $this->day === $this->daysInMonth; + } + + /** + * Check if the instance is start of day / midnight. + * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isStartOfDay(); // true + * Carbon::parse('2019-02-28 00:00:01')->isStartOfDay(); // false + * Carbon::parse('2019-02-28 00:00:00.000000')->isStartOfDay(true); // true + * Carbon::parse('2019-02-28 00:00:00.000012')->isStartOfDay(true); // false + * ``` + * + * @param bool $checkMicroseconds check time at microseconds precision + * + * @return bool + */ + public function isStartOfDay($checkMicroseconds = false) + { + /* @var CarbonInterface $this */ + return $checkMicroseconds + ? $this->rawFormat('H:i:s.u') === '00:00:00.000000' + : $this->rawFormat('H:i:s') === '00:00:00'; + } + + /** + * Check if the instance is end of day. + * + * @example + * ``` + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(); // true + * Carbon::parse('2019-02-28 23:59:58.999999')->isEndOfDay(); // false + * Carbon::parse('2019-02-28 23:59:59.999999')->isEndOfDay(true); // true + * Carbon::parse('2019-02-28 23:59:59.123456')->isEndOfDay(true); // false + * Carbon::parse('2019-02-28 23:59:59')->isEndOfDay(true); // false + * ``` + * + * @param bool $checkMicroseconds check time at microseconds precision + * + * @return bool + */ + public function isEndOfDay($checkMicroseconds = false) + { + /* @var CarbonInterface $this */ + return $checkMicroseconds + ? $this->rawFormat('H:i:s.u') === '23:59:59.999999' + : $this->rawFormat('H:i:s') === '23:59:59'; + } + + /** + * Check if the instance is start of day / midnight. + * + * @example + * ``` + * Carbon::parse('2019-02-28 00:00:00')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:00.999999')->isMidnight(); // true + * Carbon::parse('2019-02-28 00:00:01')->isMidnight(); // false + * ``` + * + * @return bool + */ + public function isMidnight() + { + return $this->isStartOfDay(); + } + + /** + * Check if the instance is midday. + * + * @example + * ``` + * Carbon::parse('2019-02-28 11:59:59.999999')->isMidday(); // false + * Carbon::parse('2019-02-28 12:00:00')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:00.999999')->isMidday(); // true + * Carbon::parse('2019-02-28 12:00:01')->isMidday(); // false + * ``` + * + * @return bool + */ + public function isMidday() + { + /* @var CarbonInterface $this */ + return $this->rawFormat('G:i:s') === static::$midDayAt.':00:00'; + } + + /** + * Checks if the (date)time string is in a given format. + * + * @example + * ``` + * Carbon::hasFormat('11:12:45', 'h:i:s'); // true + * Carbon::hasFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function hasFormat($date, $format) + { + // createFromFormat() is known to handle edge cases silently. + // E.g. "1975-5-1" (Y-n-j) will still be parsed correctly when "Y-m-d" is supplied as the format. + // To ensure we're really testing against our desired format, perform an additional regex validation. + + return self::matchFormatPattern((string) $date, preg_quote((string) $format, '/'), static::$regexFormats); + } + + /** + * Checks if the (date)time string is in a given format. + * + * @example + * ``` + * Carbon::hasFormatWithModifiers('31/08/2015', 'd#m#Y'); // true + * Carbon::hasFormatWithModifiers('31/08/2015', 'm#d#Y'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function hasFormatWithModifiers($date, $format): bool + { + return self::matchFormatPattern((string) $date, (string) $format, array_merge(static::$regexFormats, static::$regexFormatModifiers)); + } + + /** + * Checks if the (date)time string is in a given format and valid to create a + * new instance. + * + * @example + * ``` + * Carbon::canBeCreatedFromFormat('11:12:45', 'h:i:s'); // true + * Carbon::canBeCreatedFromFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @param string $date + * @param string $format + * + * @return bool + */ + public static function canBeCreatedFromFormat($date, $format) + { + try { + // Try to create a DateTime object. Throws an InvalidArgumentException if the provided time string + // doesn't match the format in any way. + if (!static::rawCreateFromFormat($format, $date)) { + return false; + } + } catch (InvalidArgumentException $e) { + return false; + } + + return static::hasFormatWithModifiers($date, $format); + } + + /** + * Returns true if the current date matches the given string. + * + * @example + * ``` + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2018')); // false + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('06-02')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('2019-06-02')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('Sunday')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('June')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:45')); // true + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12:23:00')); // false + * var_dump(Carbon::parse('2019-06-02 12:23:45')->is('12h')); // true + * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3pm')); // true + * var_dump(Carbon::parse('2019-06-02 15:23:45')->is('3am')); // false + * ``` + * + * @param string $tester day name, month name, hour, date, etc. as string + * + * @return bool + */ + public function is(string $tester) + { + $tester = trim($tester); + + if (preg_match('/^\d+$/', $tester)) { + return $this->year === (int) $tester; + } + + if (preg_match('/^\d{3,}-\d{1,2}$/', $tester)) { + return $this->isSameMonth(static::parse($tester)); + } + + if (preg_match('/^\d{1,2}-\d{1,2}$/', $tester)) { + return $this->isSameDay(static::parse($this->year.'-'.$tester)); + } + + $modifier = preg_replace('/(\d)h$/i', '$1:00', $tester); + + /* @var CarbonInterface $max */ + $median = static::parse('5555-06-15 12:30:30.555555')->modify($modifier); + $current = $this->avoidMutation(); + /* @var CarbonInterface $other */ + $other = $this->avoidMutation()->modify($modifier); + + if ($current->eq($other)) { + return true; + } + + if (preg_match('/\d:\d{1,2}:\d{1,2}$/', $tester)) { + return $current->startOfSecond()->eq($other); + } + + if (preg_match('/\d:\d{1,2}$/', $tester)) { + return $current->startOfMinute()->eq($other); + } + + if (preg_match('/\d(h|am|pm)$/', $tester)) { + return $current->startOfHour()->eq($other); + } + + if (preg_match( + '/^(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d+$/i', + $tester + )) { + return $current->startOfMonth()->eq($other->startOfMonth()); + } + + $units = [ + 'month' => [1, 'year'], + 'day' => [1, 'month'], + 'hour' => [0, 'day'], + 'minute' => [0, 'hour'], + 'second' => [0, 'minute'], + 'microsecond' => [0, 'second'], + ]; + + foreach ($units as $unit => [$minimum, $startUnit]) { + if ($minimum === $median->$unit) { + $current = $current->startOf($startUnit); + + break; + } + } + + return $current->eq($other); + } + + /** + * Checks if the (date)time string is in a given format with + * given list of pattern replacements. + * + * @example + * ``` + * Carbon::hasFormat('11:12:45', 'h:i:s'); // true + * Carbon::hasFormat('13:12:45', 'h:i:s'); // false + * ``` + * + * @param string $date + * @param string $format + * @param array $replacements + * + * @return bool + */ + private static function matchFormatPattern(string $date, string $format, array $replacements): bool + { + // Preg quote, but remove escaped backslashes since we'll deal with escaped characters in the format string. + $regex = str_replace('\\\\', '\\', $format); + // Replace not-escaped letters + $regex = preg_replace_callback( + '/(?startOfTime ?? false; + } + + /** + * Returns true if the date was created using CarbonImmutable::endOfTime() + * + * @return bool + */ + public function isEndOfTime(): bool + { + return $this->endOfTime ?? false; + } + + private function discourageNull($value): void + { + if ($value === null) { + @trigger_error("Since 2.61.0, it's deprecated to compare a date to null, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate null values.", \E_USER_DEPRECATED); + } + } + + private function discourageBoolean($value): void + { + if (\is_bool($value)) { + @trigger_error("Since 2.61.0, it's deprecated to compare a date to true or false, meaning of such comparison is ambiguous and will no longer be possible in 3.0.0, you should explicitly pass 'now' or make an other check to eliminate boolean values.", \E_USER_DEPRECATED); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php new file mode 100644 index 00000000000..12689dc7805 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Converter.php @@ -0,0 +1,653 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; +use Carbon\CarbonInterface; +use Carbon\CarbonInterval; +use Carbon\CarbonPeriod; +use Carbon\Exceptions\UnitException; +use Closure; +use DateTime; +use DateTimeImmutable; +use ReturnTypeWillChange; + +/** + * Trait Converter. + * + * Change date into different string formats and types and + * handle the string cast. + * + * Depends on the following methods: + * + * @method static copy() + */ +trait Converter +{ + /** + * Format to use for __toString method when type juggling occurs. + * + * @var string|Closure|null + */ + protected static $toStringFormat; + + /** + * Reset the format used to the default when type juggling a Carbon instance to a string + * + * @return void + */ + public static function resetToStringFormat() + { + static::setToStringFormat(null); + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather let Carbon object being casted to string with DEFAULT_TO_STRING_FORMAT, and + * use other method or custom format passed to format() method if you need to dump an other string + * format. + * + * Set the default format used when type juggling a Carbon instance to a string + * + * @param string|Closure|null $format + * + * @return void + */ + public static function setToStringFormat($format) + { + static::$toStringFormat = $format; + } + + /** + * Returns the formatted date string on success or FALSE on failure. + * + * @see https://php.net/manual/en/datetime.format.php + * + * @param string $format + * + * @return string + */ + #[ReturnTypeWillChange] + public function format($format) + { + $function = $this->localFormatFunction ?: static::$formatFunction; + + if (!$function) { + return $this->rawFormat($format); + } + + if (\is_string($function) && method_exists($this, $function)) { + $function = [$this, $function]; + } + + return $function(...\func_get_args()); + } + + /** + * @see https://php.net/manual/en/datetime.format.php + * + * @param string $format + * + * @return string + */ + public function rawFormat($format) + { + return parent::format($format); + } + + /** + * Format the instance as a string using the set format + * + * @example + * ``` + * echo Carbon::now(); // Carbon instances can be casted to string + * ``` + * + * @return string + */ + public function __toString() + { + $format = $this->localToStringFormat ?? static::$toStringFormat; + + return $format instanceof Closure + ? $format($this) + : $this->rawFormat($format ?: ( + \defined('static::DEFAULT_TO_STRING_FORMAT') + ? static::DEFAULT_TO_STRING_FORMAT + : CarbonInterface::DEFAULT_TO_STRING_FORMAT + )); + } + + /** + * Format the instance as date + * + * @example + * ``` + * echo Carbon::now()->toDateString(); + * ``` + * + * @return string + */ + public function toDateString() + { + return $this->rawFormat('Y-m-d'); + } + + /** + * Format the instance as a readable date + * + * @example + * ``` + * echo Carbon::now()->toFormattedDateString(); + * ``` + * + * @return string + */ + public function toFormattedDateString() + { + return $this->rawFormat('M j, Y'); + } + + /** + * Format the instance as time + * + * @example + * ``` + * echo Carbon::now()->toTimeString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toTimeString($unitPrecision = 'second') + { + return $this->rawFormat(static::getTimeFormatByPrecision($unitPrecision)); + } + + /** + * Format the instance as date and time + * + * @example + * ``` + * echo Carbon::now()->toDateTimeString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toDateTimeString($unitPrecision = 'second') + { + return $this->rawFormat('Y-m-d '.static::getTimeFormatByPrecision($unitPrecision)); + } + + /** + * Return a format from H:i to H:i:s.u according to given unit precision. + * + * @param string $unitPrecision "minute", "second", "millisecond" or "microsecond" + * + * @return string + */ + public static function getTimeFormatByPrecision($unitPrecision) + { + switch (static::singularUnit($unitPrecision)) { + case 'minute': + return 'H:i'; + case 'second': + return 'H:i:s'; + case 'm': + case 'millisecond': + return 'H:i:s.v'; + case 'µ': + case 'microsecond': + return 'H:i:s.u'; + } + + throw new UnitException('Precision unit expected among: minute, second, millisecond and microsecond.'); + } + + /** + * Format the instance as date and time T-separated with no timezone + * + * @example + * ``` + * echo Carbon::now()->toDateTimeLocalString(); + * echo "\n"; + * echo Carbon::now()->toDateTimeLocalString('minute'); // You can specify precision among: minute, second, millisecond and microsecond + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toDateTimeLocalString($unitPrecision = 'second') + { + return $this->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision)); + } + + /** + * Format the instance with day, date and time + * + * @example + * ``` + * echo Carbon::now()->toDayDateTimeString(); + * ``` + * + * @return string + */ + public function toDayDateTimeString() + { + return $this->rawFormat('D, M j, Y g:i A'); + } + + /** + * Format the instance as ATOM + * + * @example + * ``` + * echo Carbon::now()->toAtomString(); + * ``` + * + * @return string + */ + public function toAtomString() + { + return $this->rawFormat(DateTime::ATOM); + } + + /** + * Format the instance as COOKIE + * + * @example + * ``` + * echo Carbon::now()->toCookieString(); + * ``` + * + * @return string + */ + public function toCookieString() + { + return $this->rawFormat(DateTime::COOKIE); + } + + /** + * Format the instance as ISO8601 + * + * @example + * ``` + * echo Carbon::now()->toIso8601String(); + * ``` + * + * @return string + */ + public function toIso8601String() + { + return $this->toAtomString(); + } + + /** + * Format the instance as RFC822 + * + * @example + * ``` + * echo Carbon::now()->toRfc822String(); + * ``` + * + * @return string + */ + public function toRfc822String() + { + return $this->rawFormat(DateTime::RFC822); + } + + /** + * Convert the instance to UTC and return as Zulu ISO8601 + * + * @example + * ``` + * echo Carbon::now()->toIso8601ZuluString(); + * ``` + * + * @param string $unitPrecision + * + * @return string + */ + public function toIso8601ZuluString($unitPrecision = 'second') + { + return $this->avoidMutation() + ->utc() + ->rawFormat('Y-m-d\T'.static::getTimeFormatByPrecision($unitPrecision).'\Z'); + } + + /** + * Format the instance as RFC850 + * + * @example + * ``` + * echo Carbon::now()->toRfc850String(); + * ``` + * + * @return string + */ + public function toRfc850String() + { + return $this->rawFormat(DateTime::RFC850); + } + + /** + * Format the instance as RFC1036 + * + * @example + * ``` + * echo Carbon::now()->toRfc1036String(); + * ``` + * + * @return string + */ + public function toRfc1036String() + { + return $this->rawFormat(DateTime::RFC1036); + } + + /** + * Format the instance as RFC1123 + * + * @example + * ``` + * echo Carbon::now()->toRfc1123String(); + * ``` + * + * @return string + */ + public function toRfc1123String() + { + return $this->rawFormat(DateTime::RFC1123); + } + + /** + * Format the instance as RFC2822 + * + * @example + * ``` + * echo Carbon::now()->toRfc2822String(); + * ``` + * + * @return string + */ + public function toRfc2822String() + { + return $this->rawFormat(DateTime::RFC2822); + } + + /** + * Format the instance as RFC3339 + * + * @param bool $extended + * + * @example + * ``` + * echo Carbon::now()->toRfc3339String() . "\n"; + * echo Carbon::now()->toRfc3339String(true) . "\n"; + * ``` + * + * @return string + */ + public function toRfc3339String($extended = false) + { + $format = DateTime::RFC3339; + if ($extended) { + $format = DateTime::RFC3339_EXTENDED; + } + + return $this->rawFormat($format); + } + + /** + * Format the instance as RSS + * + * @example + * ``` + * echo Carbon::now()->toRssString(); + * ``` + * + * @return string + */ + public function toRssString() + { + return $this->rawFormat(DateTime::RSS); + } + + /** + * Format the instance as W3C + * + * @example + * ``` + * echo Carbon::now()->toW3cString(); + * ``` + * + * @return string + */ + public function toW3cString() + { + return $this->rawFormat(DateTime::W3C); + } + + /** + * Format the instance as RFC7231 + * + * @example + * ``` + * echo Carbon::now()->toRfc7231String(); + * ``` + * + * @return string + */ + public function toRfc7231String() + { + return $this->avoidMutation() + ->setTimezone('GMT') + ->rawFormat(\defined('static::RFC7231_FORMAT') ? static::RFC7231_FORMAT : CarbonInterface::RFC7231_FORMAT); + } + + /** + * Get default array representation. + * + * @example + * ``` + * var_dump(Carbon::now()->toArray()); + * ``` + * + * @return array + */ + public function toArray() + { + return [ + 'year' => $this->year, + 'month' => $this->month, + 'day' => $this->day, + 'dayOfWeek' => $this->dayOfWeek, + 'dayOfYear' => $this->dayOfYear, + 'hour' => $this->hour, + 'minute' => $this->minute, + 'second' => $this->second, + 'micro' => $this->micro, + 'timestamp' => $this->timestamp, + 'formatted' => $this->rawFormat(\defined('static::DEFAULT_TO_STRING_FORMAT') ? static::DEFAULT_TO_STRING_FORMAT : CarbonInterface::DEFAULT_TO_STRING_FORMAT), + 'timezone' => $this->timezone, + ]; + } + + /** + * Get default object representation. + * + * @example + * ``` + * var_dump(Carbon::now()->toObject()); + * ``` + * + * @return object + */ + public function toObject() + { + return (object) $this->toArray(); + } + + /** + * Returns english human readable complete date string. + * + * @example + * ``` + * echo Carbon::now()->toString(); + * ``` + * + * @return string + */ + public function toString() + { + return $this->avoidMutation()->locale('en')->isoFormat('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); + } + + /** + * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z, if $keepOffset truthy, offset will be kept: + * 1977-04-22T01:00:00-05:00). + * + * @example + * ``` + * echo Carbon::now('America/Toronto')->toISOString() . "\n"; + * echo Carbon::now('America/Toronto')->toISOString(true) . "\n"; + * ``` + * + * @param bool $keepOffset Pass true to keep the date offset. Else forced to UTC. + * + * @return null|string + */ + public function toISOString($keepOffset = false) + { + if (!$this->isValid()) { + return null; + } + + $yearFormat = $this->year < 0 || $this->year > 9999 ? 'YYYYYY' : 'YYYY'; + $tzFormat = $keepOffset ? 'Z' : '[Z]'; + $date = $keepOffset ? $this : $this->avoidMutation()->utc(); + + return $date->isoFormat("$yearFormat-MM-DD[T]HH:mm:ss.SSSSSS$tzFormat"); + } + + /** + * Return the ISO-8601 string (ex: 1977-04-22T06:00:00Z) with UTC timezone. + * + * @example + * ``` + * echo Carbon::now('America/Toronto')->toJSON(); + * ``` + * + * @return null|string + */ + public function toJSON() + { + return $this->toISOString(); + } + + /** + * Return native DateTime PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDateTime()); + * ``` + * + * @return DateTime + */ + public function toDateTime() + { + return new DateTime($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); + } + + /** + * Return native toDateTimeImmutable PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDateTimeImmutable()); + * ``` + * + * @return DateTimeImmutable + */ + public function toDateTimeImmutable() + { + return new DateTimeImmutable($this->rawFormat('Y-m-d H:i:s.u'), $this->getTimezone()); + } + + /** + * @alias toDateTime + * + * Return native DateTime PHP object matching the current instance. + * + * @example + * ``` + * var_dump(Carbon::now()->toDate()); + * ``` + * + * @return DateTime + */ + public function toDate() + { + return $this->toDateTime(); + } + + /** + * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). + * + * @param \DateTimeInterface|Carbon|CarbonImmutable|int|null $end period end date or recurrences count if int + * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit + * @param string|null $unit if specified, $interval must be an integer + * + * @return CarbonPeriod + */ + public function toPeriod($end = null, $interval = null, $unit = null) + { + if ($unit) { + $interval = CarbonInterval::make("$interval ".static::pluralUnit($unit)); + } + + $period = (new CarbonPeriod())->setDateClass(static::class)->setStartDate($this); + + if ($interval) { + $period->setDateInterval($interval); + } + + if (\is_int($end) || (\is_string($end) && ctype_digit($end))) { + $period->setRecurrences($end); + } elseif ($end) { + $period->setEndDate($end); + } + + return $period; + } + + /** + * Create a iterable CarbonPeriod object from current date to a given end date (and optional interval). + * + * @param \DateTimeInterface|Carbon|CarbonImmutable|null $end period end date + * @param int|\DateInterval|string|null $interval period default interval or number of the given $unit + * @param string|null $unit if specified, $interval must be an integer + * + * @return CarbonPeriod + */ + public function range($end = null, $interval = null, $unit = null) + { + return $this->toPeriod($end, $interval, $unit); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php new file mode 100644 index 00000000000..c28fc368ea9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Creator.php @@ -0,0 +1,943 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; +use Carbon\CarbonInterface; +use Carbon\Exceptions\InvalidDateException; +use Carbon\Exceptions\InvalidFormatException; +use Carbon\Exceptions\OutOfRangeException; +use Carbon\Translator; +use Closure; +use DateTimeInterface; +use DateTimeZone; +use Exception; +use ReturnTypeWillChange; + +/** + * Trait Creator. + * + * Static creators. + * + * Depends on the following methods: + * + * @method static Carbon|CarbonImmutable getTestNow() + */ +trait Creator +{ + use ObjectInitialisation; + + /** + * The errors that can occur. + * + * @var array + */ + protected static $lastErrors; + + /** + * Create a new Carbon instance. + * + * Please see the testing aids section (specifically static::setTestNow()) + * for more on the possibility of this constructor returning a test instance. + * + * @param DateTimeInterface|string|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + */ + public function __construct($time = null, $tz = null) + { + if ($time instanceof DateTimeInterface) { + $time = $this->constructTimezoneFromDateTime($time, $tz)->format('Y-m-d H:i:s.u'); + } + + if (is_numeric($time) && (!\is_string($time) || !preg_match('/^\d{1,14}$/', $time))) { + $time = static::createFromTimestampUTC($time)->format('Y-m-d\TH:i:s.uP'); + } + + // If the class has a test now set and we are trying to create a now() + // instance then override as required + $isNow = empty($time) || $time === 'now'; + + if (method_exists(static::class, 'hasTestNow') && + method_exists(static::class, 'getTestNow') && + static::hasTestNow() && + ($isNow || static::hasRelativeKeywords($time)) + ) { + static::mockConstructorParameters($time, $tz); + } + + // Work-around for PHP bug https://bugs.php.net/bug.php?id=67127 + if (!str_contains((string) .1, '.')) { + $locale = setlocale(LC_NUMERIC, '0'); // @codeCoverageIgnore + setlocale(LC_NUMERIC, 'C'); // @codeCoverageIgnore + } + + try { + parent::__construct($time ?: 'now', static::safeCreateDateTimeZone($tz) ?: null); + } catch (Exception $exception) { + throw new InvalidFormatException($exception->getMessage(), 0, $exception); + } + + $this->constructedObjectId = spl_object_hash($this); + + if (isset($locale)) { + setlocale(LC_NUMERIC, $locale); // @codeCoverageIgnore + } + + self::setLastErrors(parent::getLastErrors()); + } + + /** + * Get timezone from a datetime instance. + * + * @param DateTimeInterface $date + * @param DateTimeZone|string|null $tz + * + * @return DateTimeInterface + */ + private function constructTimezoneFromDateTime(DateTimeInterface $date, &$tz) + { + if ($tz !== null) { + $safeTz = static::safeCreateDateTimeZone($tz); + + if ($safeTz) { + return $date->setTimezone($safeTz); + } + + return $date; + } + + $tz = $date->getTimezone(); + + return $date; + } + + /** + * Update constructedObjectId on cloned. + */ + public function __clone() + { + $this->constructedObjectId = spl_object_hash($this); + } + + /** + * Create a Carbon instance from a DateTime one. + * + * @param DateTimeInterface $date + * + * @return static + */ + public static function instance($date) + { + if ($date instanceof static) { + return clone $date; + } + + static::expectDateTime($date); + + $instance = new static($date->format('Y-m-d H:i:s.u'), $date->getTimezone()); + + if ($date instanceof CarbonInterface) { + $settings = $date->getSettings(); + + if (!$date->hasLocalTranslator()) { + unset($settings['locale']); + } + + $instance->settings($settings); + } + + return $instance; + } + + /** + * Create a carbon instance from a string. + * + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * + * @param string|DateTimeInterface|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function rawParse($time = null, $tz = null) + { + if ($time instanceof DateTimeInterface) { + return static::instance($time); + } + + try { + return new static($time, $tz); + } catch (Exception $exception) { + $date = @static::now($tz)->change($time); + + if (!$date) { + throw new InvalidFormatException("Could not parse '$time': ".$exception->getMessage(), 0, $exception); + } + + return $date; + } + } + + /** + * Create a carbon instance from a string. + * + * This is an alias for the constructor that allows better fluent syntax + * as it allows you to do Carbon::parse('Monday next week')->fn() rather + * than (new Carbon('Monday next week'))->fn(). + * + * @param string|DateTimeInterface|null $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function parse($time = null, $tz = null) + { + $function = static::$parseFunction; + + if (!$function) { + return static::rawParse($time, $tz); + } + + if (\is_string($function) && method_exists(static::class, $function)) { + $function = [static::class, $function]; + } + + return $function(...\func_get_args()); + } + + /** + * Create a carbon instance from a localized string (in French, Japanese, Arabic, etc.). + * + * @param string $time date/time string in the given language (may also contain English). + * @param string|null $locale if locale is null or not specified, current global locale will be + * used instead. + * @param DateTimeZone|string|null $tz optional timezone for the new instance. + * + * @throws InvalidFormatException + * + * @return static + */ + public static function parseFromLocale($time, $locale = null, $tz = null) + { + return static::rawParse(static::translateTimeString($time, $locale, 'en'), $tz); + } + + /** + * Get a Carbon instance for the current date and time. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function now($tz = null) + { + return new static(null, $tz); + } + + /** + * Create a Carbon instance for today. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function today($tz = null) + { + return static::rawParse('today', $tz); + } + + /** + * Create a Carbon instance for tomorrow. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function tomorrow($tz = null) + { + return static::rawParse('tomorrow', $tz); + } + + /** + * Create a Carbon instance for yesterday. + * + * @param DateTimeZone|string|null $tz + * + * @return static + */ + public static function yesterday($tz = null) + { + return static::rawParse('yesterday', $tz); + } + + /** + * Create a Carbon instance for the greatest supported date. + * + * @return static + */ + public static function maxValue() + { + if (self::$PHPIntSize === 4) { + // 32 bit + return static::createFromTimestamp(PHP_INT_MAX); // @codeCoverageIgnore + } + + // 64 bit + return static::create(9999, 12, 31, 23, 59, 59); + } + + /** + * Create a Carbon instance for the lowest supported date. + * + * @return static + */ + public static function minValue() + { + if (self::$PHPIntSize === 4) { + // 32 bit + return static::createFromTimestamp(~PHP_INT_MAX); // @codeCoverageIgnore + } + + // 64 bit + return static::create(1, 1, 1, 0, 0, 0); + } + + private static function assertBetween($unit, $value, $min, $max) + { + if (static::isStrictModeEnabled() && ($value < $min || $value > $max)) { + throw new OutOfRangeException($unit, $min, $max, $value); + } + } + + private static function createNowInstance($tz) + { + if (!static::hasTestNow()) { + return static::now($tz); + } + + $now = static::getTestNow(); + + if ($now instanceof Closure) { + return $now(static::now($tz)); + } + + return $now->avoidMutation()->tz($tz); + } + + /** + * Create a new Carbon instance from a specific date and time. + * + * If any of $year, $month or $day are set to null their now() values will + * be used. + * + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * + * If $hour is not null then the default values for $minute and $second + * will be 0. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function create($year = 0, $month = 1, $day = 1, $hour = 0, $minute = 0, $second = 0, $tz = null) + { + if ((\is_string($year) && !is_numeric($year)) || $year instanceof DateTimeInterface) { + return static::parse($year, $tz ?: (\is_string($month) || $month instanceof DateTimeZone ? $month : null)); + } + + $defaults = null; + $getDefault = function ($unit) use ($tz, &$defaults) { + if ($defaults === null) { + $now = self::createNowInstance($tz); + + $defaults = array_combine([ + 'year', + 'month', + 'day', + 'hour', + 'minute', + 'second', + ], explode('-', $now->rawFormat('Y-n-j-G-i-s.u'))); + } + + return $defaults[$unit]; + }; + + $year = $year ?? $getDefault('year'); + $month = $month ?? $getDefault('month'); + $day = $day ?? $getDefault('day'); + $hour = $hour ?? $getDefault('hour'); + $minute = $minute ?? $getDefault('minute'); + $second = (float) ($second ?? $getDefault('second')); + + self::assertBetween('month', $month, 0, 99); + self::assertBetween('day', $day, 0, 99); + self::assertBetween('hour', $hour, 0, 99); + self::assertBetween('minute', $minute, 0, 99); + self::assertBetween('second', $second, 0, 99); + + $fixYear = null; + + if ($year < 0) { + $fixYear = $year; + $year = 0; + } elseif ($year > 9999) { + $fixYear = $year - 9999; + $year = 9999; + } + + $second = ($second < 10 ? '0' : '').number_format($second, 6); + $instance = static::rawCreateFromFormat('!Y-n-j G:i:s.u', sprintf('%s-%s-%s %s:%02s:%02s', $year, $month, $day, $hour, $minute, $second), $tz); + + if ($fixYear !== null) { + $instance = $instance->addYears($fixYear); + } + + return $instance; + } + + /** + * Create a new safe Carbon instance from a specific date and time. + * + * If any of $year, $month or $day are set to null their now() values will + * be used. + * + * If $hour is null it will be set to its now() value and the default + * values for $minute and $second will be their now() values. + * + * If $hour is not null then the default values for $minute and $second + * will be 0. + * + * If one of the set values is not valid, an InvalidDateException + * will be thrown. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidDateException + * + * @return static|false + */ + public static function createSafe($year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $tz = null) + { + $fields = static::getRangesByUnit(); + + foreach ($fields as $field => $range) { + if ($$field !== null && (!\is_int($$field) || $$field < $range[0] || $$field > $range[1])) { + if (static::isStrictModeEnabled()) { + throw new InvalidDateException($field, $$field); + } + + return false; + } + } + + $instance = static::create($year, $month, $day, $hour, $minute, $second, $tz); + + foreach (array_reverse($fields) as $field => $range) { + if ($$field !== null && (!\is_int($$field) || $$field !== $instance->$field)) { + if (static::isStrictModeEnabled()) { + throw new InvalidDateException($field, $$field); + } + + return false; + } + } + + return $instance; + } + + /** + * Create a new Carbon instance from a specific date and time using strict validation. + * + * @see create() + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createStrict(?int $year = 0, ?int $month = 1, ?int $day = 1, ?int $hour = 0, ?int $minute = 0, ?int $second = 0, $tz = null): self + { + $initialStrictMode = static::isStrictModeEnabled(); + static::useStrictMode(true); + + try { + $date = static::create($year, $month, $day, $hour, $minute, $second, $tz); + } finally { + static::useStrictMode($initialStrictMode); + } + + return $date; + } + + /** + * Create a Carbon instance from just a date. The time portion is set to now. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromDate($year = null, $month = null, $day = null, $tz = null) + { + return static::create($year, $month, $day, null, null, null, $tz); + } + + /** + * Create a Carbon instance from just a date. The time portion is set to midnight. + * + * @param int|null $year + * @param int|null $month + * @param int|null $day + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createMidnightDate($year = null, $month = null, $day = null, $tz = null) + { + return static::create($year, $month, $day, 0, 0, 0, $tz); + } + + /** + * Create a Carbon instance from just a time. The date portion is set to today. + * + * @param int|null $hour + * @param int|null $minute + * @param int|null $second + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromTime($hour = 0, $minute = 0, $second = 0, $tz = null) + { + return static::create(null, null, null, $hour, $minute, $second, $tz); + } + + /** + * Create a Carbon instance from a time string. The date portion is set to today. + * + * @param string $time + * @param DateTimeZone|string|null $tz + * + * @throws InvalidFormatException + * + * @return static + */ + public static function createFromTimeString($time, $tz = null) + { + return static::today($tz)->setTimeFromTimeString($time); + } + + /** + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $originalTz + * + * @return DateTimeInterface|false + */ + private static function createFromFormatAndTimezone($format, $time, $originalTz) + { + // Work-around for https://bugs.php.net/bug.php?id=75577 + // @codeCoverageIgnoreStart + if (version_compare(PHP_VERSION, '7.3.0-dev', '<')) { + $format = str_replace('.v', '.u', $format); + } + // @codeCoverageIgnoreEnd + + if ($originalTz === null) { + return parent::createFromFormat($format, (string) $time); + } + + $tz = \is_int($originalTz) + ? @timezone_name_from_abbr('', (int) ($originalTz * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE), 1) + : $originalTz; + + $tz = static::safeCreateDateTimeZone($tz, $originalTz); + + if ($tz === false) { + return false; + } + + return parent::createFromFormat($format, (string) $time, $tz); + } + + /** + * Create a Carbon instance from a specific format. + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function rawCreateFromFormat($format, $time, $tz = null) + { + // Work-around for https://bugs.php.net/bug.php?id=80141 + $format = preg_replace('/(?getTimezone(); + } + + // Set microseconds to zero to match behavior of DateTime::createFromFormat() + // See https://bugs.php.net/bug.php?id=74332 + $mock = $mock->copy()->microsecond(0); + + // Prepend mock datetime only if the format does not contain non escaped unix epoch reset flag. + if (!preg_match("/{$nonEscaped}[!|]/", $format)) { + $format = static::MOCK_DATETIME_FORMAT.' '.$format; + $time = ($mock instanceof self ? $mock->rawFormat(static::MOCK_DATETIME_FORMAT) : $mock->format(static::MOCK_DATETIME_FORMAT)).' '.$time; + } + + // Regenerate date from the modified format to base result on the mocked instance instead of now. + $date = self::createFromFormatAndTimezone($format, $time, $tz); + } + + if ($date instanceof DateTimeInterface) { + $instance = static::instance($date); + $instance::setLastErrors($lastErrors); + + return $instance; + } + + if (static::isStrictModeEnabled()) { + throw new InvalidFormatException(implode(PHP_EOL, $lastErrors['errors'])); + } + + return false; + } + + /** + * Create a Carbon instance from a specific format. + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + #[ReturnTypeWillChange] + public static function createFromFormat($format, $time, $tz = null) + { + $function = static::$createFromFormatFunction; + + if (!$function) { + return static::rawCreateFromFormat($format, $time, $tz); + } + + if (\is_string($function) && method_exists(static::class, $function)) { + $function = [static::class, $function]; + } + + return $function(...\func_get_args()); + } + + /** + * Create a Carbon instance from a specific ISO format (same replacements as ->isoFormat()). + * + * @param string $format Datetime format + * @param string $time + * @param DateTimeZone|string|false|null $tz optional timezone + * @param string|null $locale locale to be used for LTS, LT, LL, LLL, etc. macro-formats (en by fault, unneeded if no such macro-format in use) + * @param \Symfony\Component\Translation\TranslatorInterface $translator optional custom translator to use for macro-formats + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromIsoFormat($format, $time, $tz = null, $locale = 'en', $translator = null) + { + $format = preg_replace_callback('/(? static::getTranslationMessageWith($translator, 'formats.LT', $locale, 'h:mm A'), + 'LTS' => static::getTranslationMessageWith($translator, 'formats.LTS', $locale, 'h:mm:ss A'), + 'L' => static::getTranslationMessageWith($translator, 'formats.L', $locale, 'MM/DD/YYYY'), + 'LL' => static::getTranslationMessageWith($translator, 'formats.LL', $locale, 'MMMM D, YYYY'), + 'LLL' => static::getTranslationMessageWith($translator, 'formats.LLL', $locale, 'MMMM D, YYYY h:mm A'), + 'LLLL' => static::getTranslationMessageWith($translator, 'formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'), + ]; + } + + return $formats[$code] ?? preg_replace_callback( + '/MMMM|MM|DD|dddd/', + function ($code) { + return mb_substr($code[0], 1); + }, + $formats[strtoupper($code)] ?? '' + ); + }, $format); + + $format = preg_replace_callback('/(? 'd', + 'OM' => 'M', + 'OY' => 'Y', + 'OH' => 'G', + 'Oh' => 'g', + 'Om' => 'i', + 'Os' => 's', + 'D' => 'd', + 'DD' => 'd', + 'Do' => 'd', + 'd' => '!', + 'dd' => '!', + 'ddd' => 'D', + 'dddd' => 'D', + 'DDD' => 'z', + 'DDDD' => 'z', + 'DDDo' => 'z', + 'e' => '!', + 'E' => '!', + 'H' => 'G', + 'HH' => 'H', + 'h' => 'g', + 'hh' => 'h', + 'k' => 'G', + 'kk' => 'G', + 'hmm' => 'gi', + 'hmmss' => 'gis', + 'Hmm' => 'Gi', + 'Hmmss' => 'Gis', + 'm' => 'i', + 'mm' => 'i', + 'a' => 'a', + 'A' => 'a', + 's' => 's', + 'ss' => 's', + 'S' => '*', + 'SS' => '*', + 'SSS' => '*', + 'SSSS' => '*', + 'SSSSS' => '*', + 'SSSSSS' => 'u', + 'SSSSSSS' => 'u*', + 'SSSSSSSS' => 'u*', + 'SSSSSSSSS' => 'u*', + 'M' => 'm', + 'MM' => 'm', + 'MMM' => 'M', + 'MMMM' => 'M', + 'Mo' => 'm', + 'Q' => '!', + 'Qo' => '!', + 'G' => '!', + 'GG' => '!', + 'GGG' => '!', + 'GGGG' => '!', + 'GGGGG' => '!', + 'g' => '!', + 'gg' => '!', + 'ggg' => '!', + 'gggg' => '!', + 'ggggg' => '!', + 'W' => '!', + 'WW' => '!', + 'Wo' => '!', + 'w' => '!', + 'ww' => '!', + 'wo' => '!', + 'x' => 'U???', + 'X' => 'U', + 'Y' => 'Y', + 'YY' => 'y', + 'YYYY' => 'Y', + 'YYYYY' => 'Y', + 'YYYYYY' => 'Y', + 'z' => 'e', + 'zz' => 'e', + 'Z' => 'e', + 'ZZ' => 'e', + ]; + } + + $format = $replacements[$code] ?? '?'; + + if ($format === '!') { + throw new InvalidFormatException("Format $code not supported for creation."); + } + + return $format; + }, $format); + + return static::rawCreateFromFormat($format, $time, $tz); + } + + /** + * Create a Carbon instance from a specific format and a string in a given language. + * + * @param string $format Datetime format + * @param string $locale + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromLocaleFormat($format, $locale, $time, $tz = null) + { + return static::rawCreateFromFormat($format, static::translateTimeString($time, $locale, 'en'), $tz); + } + + /** + * Create a Carbon instance from a specific ISO format and a string in a given language. + * + * @param string $format Datetime ISO format + * @param string $locale + * @param string $time + * @param DateTimeZone|string|false|null $tz + * + * @throws InvalidFormatException + * + * @return static|false + */ + public static function createFromLocaleIsoFormat($format, $locale, $time, $tz = null) + { + $time = static::translateTimeString($time, $locale, 'en', CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS | CarbonInterface::TRANSLATE_MERIDIEM); + + return static::createFromIsoFormat($format, $time, $tz, $locale); + } + + /** + * Make a Carbon instance from given variable if possible. + * + * Always return a new instance. Parse only strings and only these likely to be dates (skip intervals + * and recurrences). Throw an exception for invalid format, but otherwise return null. + * + * @param mixed $var + * + * @throws InvalidFormatException + * + * @return static|null + */ + public static function make($var) + { + if ($var instanceof DateTimeInterface) { + return static::instance($var); + } + + $date = null; + + if (\is_string($var)) { + $var = trim($var); + + if (!preg_match('/^P[\dT]/', $var) && + !preg_match('/^R\d/', $var) && + preg_match('/[a-z\d]/i', $var) + ) { + $date = static::parse($var); + } + } + + return $date; + } + + /** + * Set last errors. + * + * @param array $lastErrors + * + * @return void + */ + private static function setLastErrors(array $lastErrors) + { + static::$lastErrors = $lastErrors; + } + + /** + * {@inheritdoc} + * + * @return array + */ + #[ReturnTypeWillChange] + public static function getLastErrors() + { + return static::$lastErrors; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Date.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Date.php new file mode 100644 index 00000000000..b05b3652c40 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Date.php @@ -0,0 +1,2697 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use BadMethodCallException; +use Carbon\Carbon; +use Carbon\CarbonInterface; +use Carbon\CarbonPeriod; +use Carbon\CarbonTimeZone; +use Carbon\Exceptions\BadComparisonUnitException; +use Carbon\Exceptions\ImmutableException; +use Carbon\Exceptions\InvalidTimeZoneException; +use Carbon\Exceptions\InvalidTypeException; +use Carbon\Exceptions\UnknownGetterException; +use Carbon\Exceptions\UnknownMethodException; +use Carbon\Exceptions\UnknownSetterException; +use Carbon\Exceptions\UnknownUnitException; +use Closure; +use DateInterval; +use DatePeriod; +use DateTime; +use DateTimeImmutable; +use DateTimeInterface; +use DateTimeZone; +use InvalidArgumentException; +use ReflectionException; +use ReturnTypeWillChange; +use Throwable; + +/** + * A simple API extension for DateTime. + * + * @mixin DeprecatedProperties + * + * + * + * @property int $year + * @property int $yearIso + * @property int $month + * @property int $day + * @property int $hour + * @property int $minute + * @property int $second + * @property int $micro + * @property int $microsecond + * @property int|float|string $timestamp seconds since the Unix Epoch + * @property string $englishDayOfWeek the day of week in English + * @property string $shortEnglishDayOfWeek the abbreviated day of week in English + * @property string $englishMonth the month in English + * @property string $shortEnglishMonth the abbreviated month in English + * @property int $milliseconds + * @property int $millisecond + * @property int $milli + * @property int $week 1 through 53 + * @property int $isoWeek 1 through 53 + * @property int $weekYear year according to week format + * @property int $isoWeekYear year according to ISO week format + * @property int $dayOfYear 1 through 366 + * @property int $age does a diffInYears() with default parameters + * @property int $offset the timezone offset in seconds from UTC + * @property int $offsetMinutes the timezone offset in minutes from UTC + * @property int $offsetHours the timezone offset in hours from UTC + * @property CarbonTimeZone $timezone the current timezone + * @property CarbonTimeZone $tz alias of $timezone + * @property-read int $dayOfWeek 0 (for Sunday) through 6 (for Saturday) + * @property-read int $dayOfWeekIso 1 (for Monday) through 7 (for Sunday) + * @property-read int $weekOfYear ISO-8601 week number of year, weeks starting on Monday + * @property-read int $daysInMonth number of days in the given month + * @property-read string $latinMeridiem "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + * @property-read string $latinUpperMeridiem "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + * @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + * @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + * @property-read string $dayName long name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortDayName short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $minDayName very short name of weekday translated according to Carbon locale, in english if no translation available for current language + * @property-read string $monthName long name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $shortMonthName short name of month translated according to Carbon locale, in english if no translation available for current language + * @property-read string $meridiem lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read string $upperMeridiem uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + * @property-read int $noZeroHour current hour from 1 to 24 + * @property-read int $weeksInYear 51 through 53 + * @property-read int $isoWeeksInYear 51 through 53 + * @property-read int $weekOfMonth 1 through 5 + * @property-read int $weekNumberInMonth 1 through 5 + * @property-read int $firstWeekDay 0 through 6 + * @property-read int $lastWeekDay 0 through 6 + * @property-read int $daysInYear 365 or 366 + * @property-read int $quarter the quarter of this instance, 1 - 4 + * @property-read int $decade the decade of this instance + * @property-read int $century the century of this instance + * @property-read int $millennium the millennium of this instance + * @property-read bool $dst daylight savings time indicator, true if DST, false otherwise + * @property-read bool $local checks if the timezone is local, true if local, false otherwise + * @property-read bool $utc checks if the timezone is UTC, true if UTC, false otherwise + * @property-read string $timezoneName the current timezone name + * @property-read string $tzName alias of $timezoneName + * @property-read string $locale locale of the current instance + * + * @method bool isUtc() Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + * @method bool isLocal() Check if the current instance has non-UTC timezone. + * @method bool isValid() Check if the current instance is a valid date. + * @method bool isDST() Check if the current instance is in a daylight saving time. + * @method bool isSunday() Checks if the instance day is sunday. + * @method bool isMonday() Checks if the instance day is monday. + * @method bool isTuesday() Checks if the instance day is tuesday. + * @method bool isWednesday() Checks if the instance day is wednesday. + * @method bool isThursday() Checks if the instance day is thursday. + * @method bool isFriday() Checks if the instance day is friday. + * @method bool isSaturday() Checks if the instance day is saturday. + * @method bool isSameYear(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same year as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentYear() Checks if the instance is in the same year as the current moment. + * @method bool isNextYear() Checks if the instance is in the same year as the current moment next year. + * @method bool isLastYear() Checks if the instance is in the same year as the current moment last year. + * @method bool isSameWeek(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same week as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentWeek() Checks if the instance is in the same week as the current moment. + * @method bool isNextWeek() Checks if the instance is in the same week as the current moment next week. + * @method bool isLastWeek() Checks if the instance is in the same week as the current moment last week. + * @method bool isSameDay(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same day as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDay() Checks if the instance is in the same day as the current moment. + * @method bool isNextDay() Checks if the instance is in the same day as the current moment next day. + * @method bool isLastDay() Checks if the instance is in the same day as the current moment last day. + * @method bool isSameHour(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same hour as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentHour() Checks if the instance is in the same hour as the current moment. + * @method bool isNextHour() Checks if the instance is in the same hour as the current moment next hour. + * @method bool isLastHour() Checks if the instance is in the same hour as the current moment last hour. + * @method bool isSameMinute(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same minute as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMinute() Checks if the instance is in the same minute as the current moment. + * @method bool isNextMinute() Checks if the instance is in the same minute as the current moment next minute. + * @method bool isLastMinute() Checks if the instance is in the same minute as the current moment last minute. + * @method bool isSameSecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same second as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentSecond() Checks if the instance is in the same second as the current moment. + * @method bool isNextSecond() Checks if the instance is in the same second as the current moment next second. + * @method bool isLastSecond() Checks if the instance is in the same second as the current moment last second. + * @method bool isSameMicro(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicro() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicro() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicro() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isSameMicrosecond(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same microsecond as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMicrosecond() Checks if the instance is in the same microsecond as the current moment. + * @method bool isNextMicrosecond() Checks if the instance is in the same microsecond as the current moment next microsecond. + * @method bool isLastMicrosecond() Checks if the instance is in the same microsecond as the current moment last microsecond. + * @method bool isCurrentMonth() Checks if the instance is in the same month as the current moment. + * @method bool isNextMonth() Checks if the instance is in the same month as the current moment next month. + * @method bool isLastMonth() Checks if the instance is in the same month as the current moment last month. + * @method bool isCurrentQuarter() Checks if the instance is in the same quarter as the current moment. + * @method bool isNextQuarter() Checks if the instance is in the same quarter as the current moment next quarter. + * @method bool isLastQuarter() Checks if the instance is in the same quarter as the current moment last quarter. + * @method bool isSameDecade(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same decade as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentDecade() Checks if the instance is in the same decade as the current moment. + * @method bool isNextDecade() Checks if the instance is in the same decade as the current moment next decade. + * @method bool isLastDecade() Checks if the instance is in the same decade as the current moment last decade. + * @method bool isSameCentury(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same century as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentCentury() Checks if the instance is in the same century as the current moment. + * @method bool isNextCentury() Checks if the instance is in the same century as the current moment next century. + * @method bool isLastCentury() Checks if the instance is in the same century as the current moment last century. + * @method bool isSameMillennium(Carbon|DateTimeInterface|string|null $date = null) Checks if the given date is in the same millennium as the instance. If null passed, compare to now (with the same timezone). + * @method bool isCurrentMillennium() Checks if the instance is in the same millennium as the current moment. + * @method bool isNextMillennium() Checks if the instance is in the same millennium as the current moment next millennium. + * @method bool isLastMillennium() Checks if the instance is in the same millennium as the current moment last millennium. + * @method CarbonInterface years(int $value) Set current instance year to the given value. + * @method CarbonInterface year(int $value) Set current instance year to the given value. + * @method CarbonInterface setYears(int $value) Set current instance year to the given value. + * @method CarbonInterface setYear(int $value) Set current instance year to the given value. + * @method CarbonInterface months(int $value) Set current instance month to the given value. + * @method CarbonInterface month(int $value) Set current instance month to the given value. + * @method CarbonInterface setMonths(int $value) Set current instance month to the given value. + * @method CarbonInterface setMonth(int $value) Set current instance month to the given value. + * @method CarbonInterface days(int $value) Set current instance day to the given value. + * @method CarbonInterface day(int $value) Set current instance day to the given value. + * @method CarbonInterface setDays(int $value) Set current instance day to the given value. + * @method CarbonInterface setDay(int $value) Set current instance day to the given value. + * @method CarbonInterface hours(int $value) Set current instance hour to the given value. + * @method CarbonInterface hour(int $value) Set current instance hour to the given value. + * @method CarbonInterface setHours(int $value) Set current instance hour to the given value. + * @method CarbonInterface setHour(int $value) Set current instance hour to the given value. + * @method CarbonInterface minutes(int $value) Set current instance minute to the given value. + * @method CarbonInterface minute(int $value) Set current instance minute to the given value. + * @method CarbonInterface setMinutes(int $value) Set current instance minute to the given value. + * @method CarbonInterface setMinute(int $value) Set current instance minute to the given value. + * @method CarbonInterface seconds(int $value) Set current instance second to the given value. + * @method CarbonInterface second(int $value) Set current instance second to the given value. + * @method CarbonInterface setSeconds(int $value) Set current instance second to the given value. + * @method CarbonInterface setSecond(int $value) Set current instance second to the given value. + * @method CarbonInterface millis(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface milli(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMillis(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMilli(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface milliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface millisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMilliseconds(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface setMillisecond(int $value) Set current instance millisecond to the given value. + * @method CarbonInterface micros(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface micro(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicros(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicro(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface microseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface microsecond(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicroseconds(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface setMicrosecond(int $value) Set current instance microsecond to the given value. + * @method CarbonInterface addYears(int $value = 1) Add years (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addYear() Add one year to the instance (using date interval). + * @method CarbonInterface subYears(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subYear() Sub one year to the instance (using date interval). + * @method CarbonInterface addYearsWithOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addYearWithOverflow() Add one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subYearsWithOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subYearWithOverflow() Sub one year to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addYearsWithoutOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearWithoutOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsWithoutOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearWithoutOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearsWithNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearWithNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsWithNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearWithNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearsNoOverflow(int $value = 1) Add years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addYearNoOverflow() Add one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearsNoOverflow(int $value = 1) Sub years (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subYearNoOverflow() Sub one year to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonths(int $value = 1) Add months (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMonth() Add one month to the instance (using date interval). + * @method CarbonInterface subMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMonth() Sub one month to the instance (using date interval). + * @method CarbonInterface addMonthsWithOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMonthWithOverflow() Add one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMonthsWithOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMonthWithOverflow() Sub one month to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMonthsWithoutOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthWithoutOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsWithoutOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthWithoutOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthsWithNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthWithNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsWithNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthWithNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthsNoOverflow(int $value = 1) Add months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMonthNoOverflow() Add one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthsNoOverflow(int $value = 1) Sub months (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMonthNoOverflow() Sub one month to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDays(int $value = 1) Add days (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addDay() Add one day to the instance (using date interval). + * @method CarbonInterface subDays(int $value = 1) Sub days (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subDay() Sub one day to the instance (using date interval). + * @method CarbonInterface addHours(int $value = 1) Add hours (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addHour() Add one hour to the instance (using date interval). + * @method CarbonInterface subHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subHour() Sub one hour to the instance (using date interval). + * @method CarbonInterface addMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMinute() Add one minute to the instance (using date interval). + * @method CarbonInterface subMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMinute() Sub one minute to the instance (using date interval). + * @method CarbonInterface addSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addSecond() Add one second to the instance (using date interval). + * @method CarbonInterface subSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subSecond() Sub one second to the instance (using date interval). + * @method CarbonInterface addMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMilli() Add one millisecond to the instance (using date interval). + * @method CarbonInterface subMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMilli() Sub one millisecond to the instance (using date interval). + * @method CarbonInterface addMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMillisecond() Add one millisecond to the instance (using date interval). + * @method CarbonInterface subMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMillisecond() Sub one millisecond to the instance (using date interval). + * @method CarbonInterface addMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMicro() Add one microsecond to the instance (using date interval). + * @method CarbonInterface subMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMicro() Sub one microsecond to the instance (using date interval). + * @method CarbonInterface addMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMicrosecond() Add one microsecond to the instance (using date interval). + * @method CarbonInterface subMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMicrosecond() Sub one microsecond to the instance (using date interval). + * @method CarbonInterface addMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addMillennium() Add one millennium to the instance (using date interval). + * @method CarbonInterface subMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subMillennium() Sub one millennium to the instance (using date interval). + * @method CarbonInterface addMillenniaWithOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMillenniumWithOverflow() Add one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMillenniaWithOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subMillenniumWithOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addMillenniaWithoutOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumWithoutOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaWithoutOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumWithoutOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniaWithNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumWithNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaWithNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumWithNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniaNoOverflow(int $value = 1) Add millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addMillenniumNoOverflow() Add one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniaNoOverflow(int $value = 1) Sub millennia (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subMillenniumNoOverflow() Sub one millennium to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addCentury() Add one century to the instance (using date interval). + * @method CarbonInterface subCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subCentury() Sub one century to the instance (using date interval). + * @method CarbonInterface addCenturiesWithOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addCenturyWithOverflow() Add one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subCenturiesWithOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subCenturyWithOverflow() Sub one century to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addCenturiesWithoutOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyWithoutOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesWithoutOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyWithoutOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturiesWithNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyWithNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesWithNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyWithNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturiesNoOverflow(int $value = 1) Add centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addCenturyNoOverflow() Add one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturiesNoOverflow(int $value = 1) Sub centuries (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subCenturyNoOverflow() Sub one century to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addDecade() Add one decade to the instance (using date interval). + * @method CarbonInterface subDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subDecade() Sub one decade to the instance (using date interval). + * @method CarbonInterface addDecadesWithOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addDecadeWithOverflow() Add one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subDecadesWithOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subDecadeWithOverflow() Sub one decade to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addDecadesWithoutOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeWithoutOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesWithoutOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeWithoutOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadesWithNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeWithNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesWithNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeWithNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadesNoOverflow(int $value = 1) Add decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addDecadeNoOverflow() Add one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadesNoOverflow(int $value = 1) Sub decades (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subDecadeNoOverflow() Sub one decade to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addQuarter() Add one quarter to the instance (using date interval). + * @method CarbonInterface subQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subQuarter() Sub one quarter to the instance (using date interval). + * @method CarbonInterface addQuartersWithOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addQuarterWithOverflow() Add one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subQuartersWithOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface subQuarterWithOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly allowed. + * @method CarbonInterface addQuartersWithoutOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterWithoutOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersWithoutOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterWithoutOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuartersWithNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterWithNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersWithNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterWithNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuartersNoOverflow(int $value = 1) Add quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addQuarterNoOverflow() Add one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuartersNoOverflow(int $value = 1) Sub quarters (the $value count passed in) to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface subQuarterNoOverflow() Sub one quarter to the instance (using date interval) with overflow explicitly forbidden. + * @method CarbonInterface addWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addWeek() Add one week to the instance (using date interval). + * @method CarbonInterface subWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subWeek() Sub one week to the instance (using date interval). + * @method CarbonInterface addWeekdays(int $value = 1) Add weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface addWeekday() Add one weekday to the instance (using date interval). + * @method CarbonInterface subWeekdays(int $value = 1) Sub weekdays (the $value count passed in) to the instance (using date interval). + * @method CarbonInterface subWeekday() Sub one weekday to the instance (using date interval). + * @method CarbonInterface addRealMicros(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMicro() Add one microsecond to the instance (using timestamp). + * @method CarbonInterface subRealMicros(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMicro() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonInterface addRealMicroseconds(int $value = 1) Add microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMicrosecond() Add one microsecond to the instance (using timestamp). + * @method CarbonInterface subRealMicroseconds(int $value = 1) Sub microseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMicrosecond() Sub one microsecond to the instance (using timestamp). + * @method CarbonPeriod microsecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each microsecond or every X microseconds if a factor is given. + * @method CarbonInterface addRealMillis(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMilli() Add one millisecond to the instance (using timestamp). + * @method CarbonInterface subRealMillis(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMilli() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonInterface addRealMilliseconds(int $value = 1) Add milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMillisecond() Add one millisecond to the instance (using timestamp). + * @method CarbonInterface subRealMilliseconds(int $value = 1) Sub milliseconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMillisecond() Sub one millisecond to the instance (using timestamp). + * @method CarbonPeriod millisecondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millisecond or every X milliseconds if a factor is given. + * @method CarbonInterface addRealSeconds(int $value = 1) Add seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealSecond() Add one second to the instance (using timestamp). + * @method CarbonInterface subRealSeconds(int $value = 1) Sub seconds (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealSecond() Sub one second to the instance (using timestamp). + * @method CarbonPeriod secondsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each second or every X seconds if a factor is given. + * @method CarbonInterface addRealMinutes(int $value = 1) Add minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMinute() Add one minute to the instance (using timestamp). + * @method CarbonInterface subRealMinutes(int $value = 1) Sub minutes (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMinute() Sub one minute to the instance (using timestamp). + * @method CarbonPeriod minutesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each minute or every X minutes if a factor is given. + * @method CarbonInterface addRealHours(int $value = 1) Add hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealHour() Add one hour to the instance (using timestamp). + * @method CarbonInterface subRealHours(int $value = 1) Sub hours (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealHour() Sub one hour to the instance (using timestamp). + * @method CarbonPeriod hoursUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each hour or every X hours if a factor is given. + * @method CarbonInterface addRealDays(int $value = 1) Add days (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealDay() Add one day to the instance (using timestamp). + * @method CarbonInterface subRealDays(int $value = 1) Sub days (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealDay() Sub one day to the instance (using timestamp). + * @method CarbonPeriod daysUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each day or every X days if a factor is given. + * @method CarbonInterface addRealWeeks(int $value = 1) Add weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealWeek() Add one week to the instance (using timestamp). + * @method CarbonInterface subRealWeeks(int $value = 1) Sub weeks (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealWeek() Sub one week to the instance (using timestamp). + * @method CarbonPeriod weeksUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each week or every X weeks if a factor is given. + * @method CarbonInterface addRealMonths(int $value = 1) Add months (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMonth() Add one month to the instance (using timestamp). + * @method CarbonInterface subRealMonths(int $value = 1) Sub months (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMonth() Sub one month to the instance (using timestamp). + * @method CarbonPeriod monthsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each month or every X months if a factor is given. + * @method CarbonInterface addRealQuarters(int $value = 1) Add quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealQuarter() Add one quarter to the instance (using timestamp). + * @method CarbonInterface subRealQuarters(int $value = 1) Sub quarters (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealQuarter() Sub one quarter to the instance (using timestamp). + * @method CarbonPeriod quartersUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each quarter or every X quarters if a factor is given. + * @method CarbonInterface addRealYears(int $value = 1) Add years (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealYear() Add one year to the instance (using timestamp). + * @method CarbonInterface subRealYears(int $value = 1) Sub years (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealYear() Sub one year to the instance (using timestamp). + * @method CarbonPeriod yearsUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each year or every X years if a factor is given. + * @method CarbonInterface addRealDecades(int $value = 1) Add decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealDecade() Add one decade to the instance (using timestamp). + * @method CarbonInterface subRealDecades(int $value = 1) Sub decades (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealDecade() Sub one decade to the instance (using timestamp). + * @method CarbonPeriod decadesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each decade or every X decades if a factor is given. + * @method CarbonInterface addRealCenturies(int $value = 1) Add centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealCentury() Add one century to the instance (using timestamp). + * @method CarbonInterface subRealCenturies(int $value = 1) Sub centuries (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealCentury() Sub one century to the instance (using timestamp). + * @method CarbonPeriod centuriesUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each century or every X centuries if a factor is given. + * @method CarbonInterface addRealMillennia(int $value = 1) Add millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface addRealMillennium() Add one millennium to the instance (using timestamp). + * @method CarbonInterface subRealMillennia(int $value = 1) Sub millennia (the $value count passed in) to the instance (using timestamp). + * @method CarbonInterface subRealMillennium() Sub one millennium to the instance (using timestamp). + * @method CarbonPeriod millenniaUntil($endDate = null, int $factor = 1) Return an iterable period from current date to given end (string, DateTime or Carbon instance) for each millennium or every X millennia if a factor is given. + * @method CarbonInterface roundYear(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonInterface roundYears(float $precision = 1, string $function = "round") Round the current instance year with given precision using the given function. + * @method CarbonInterface floorYear(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonInterface floorYears(float $precision = 1) Truncate the current instance year with given precision. + * @method CarbonInterface ceilYear(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonInterface ceilYears(float $precision = 1) Ceil the current instance year with given precision. + * @method CarbonInterface roundMonth(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonInterface roundMonths(float $precision = 1, string $function = "round") Round the current instance month with given precision using the given function. + * @method CarbonInterface floorMonth(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonInterface floorMonths(float $precision = 1) Truncate the current instance month with given precision. + * @method CarbonInterface ceilMonth(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonInterface ceilMonths(float $precision = 1) Ceil the current instance month with given precision. + * @method CarbonInterface roundDay(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonInterface roundDays(float $precision = 1, string $function = "round") Round the current instance day with given precision using the given function. + * @method CarbonInterface floorDay(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonInterface floorDays(float $precision = 1) Truncate the current instance day with given precision. + * @method CarbonInterface ceilDay(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonInterface ceilDays(float $precision = 1) Ceil the current instance day with given precision. + * @method CarbonInterface roundHour(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonInterface roundHours(float $precision = 1, string $function = "round") Round the current instance hour with given precision using the given function. + * @method CarbonInterface floorHour(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonInterface floorHours(float $precision = 1) Truncate the current instance hour with given precision. + * @method CarbonInterface ceilHour(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonInterface ceilHours(float $precision = 1) Ceil the current instance hour with given precision. + * @method CarbonInterface roundMinute(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonInterface roundMinutes(float $precision = 1, string $function = "round") Round the current instance minute with given precision using the given function. + * @method CarbonInterface floorMinute(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonInterface floorMinutes(float $precision = 1) Truncate the current instance minute with given precision. + * @method CarbonInterface ceilMinute(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonInterface ceilMinutes(float $precision = 1) Ceil the current instance minute with given precision. + * @method CarbonInterface roundSecond(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonInterface roundSeconds(float $precision = 1, string $function = "round") Round the current instance second with given precision using the given function. + * @method CarbonInterface floorSecond(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonInterface floorSeconds(float $precision = 1) Truncate the current instance second with given precision. + * @method CarbonInterface ceilSecond(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonInterface ceilSeconds(float $precision = 1) Ceil the current instance second with given precision. + * @method CarbonInterface roundMillennium(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonInterface roundMillennia(float $precision = 1, string $function = "round") Round the current instance millennium with given precision using the given function. + * @method CarbonInterface floorMillennium(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonInterface floorMillennia(float $precision = 1) Truncate the current instance millennium with given precision. + * @method CarbonInterface ceilMillennium(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonInterface ceilMillennia(float $precision = 1) Ceil the current instance millennium with given precision. + * @method CarbonInterface roundCentury(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonInterface roundCenturies(float $precision = 1, string $function = "round") Round the current instance century with given precision using the given function. + * @method CarbonInterface floorCentury(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonInterface floorCenturies(float $precision = 1) Truncate the current instance century with given precision. + * @method CarbonInterface ceilCentury(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonInterface ceilCenturies(float $precision = 1) Ceil the current instance century with given precision. + * @method CarbonInterface roundDecade(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonInterface roundDecades(float $precision = 1, string $function = "round") Round the current instance decade with given precision using the given function. + * @method CarbonInterface floorDecade(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonInterface floorDecades(float $precision = 1) Truncate the current instance decade with given precision. + * @method CarbonInterface ceilDecade(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonInterface ceilDecades(float $precision = 1) Ceil the current instance decade with given precision. + * @method CarbonInterface roundQuarter(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonInterface roundQuarters(float $precision = 1, string $function = "round") Round the current instance quarter with given precision using the given function. + * @method CarbonInterface floorQuarter(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonInterface floorQuarters(float $precision = 1) Truncate the current instance quarter with given precision. + * @method CarbonInterface ceilQuarter(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonInterface ceilQuarters(float $precision = 1) Ceil the current instance quarter with given precision. + * @method CarbonInterface roundMillisecond(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonInterface roundMilliseconds(float $precision = 1, string $function = "round") Round the current instance millisecond with given precision using the given function. + * @method CarbonInterface floorMillisecond(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonInterface floorMilliseconds(float $precision = 1) Truncate the current instance millisecond with given precision. + * @method CarbonInterface ceilMillisecond(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonInterface ceilMilliseconds(float $precision = 1) Ceil the current instance millisecond with given precision. + * @method CarbonInterface roundMicrosecond(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonInterface roundMicroseconds(float $precision = 1, string $function = "round") Round the current instance microsecond with given precision using the given function. + * @method CarbonInterface floorMicrosecond(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonInterface floorMicroseconds(float $precision = 1) Truncate the current instance microsecond with given precision. + * @method CarbonInterface ceilMicrosecond(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method CarbonInterface ceilMicroseconds(float $precision = 1) Ceil the current instance microsecond with given precision. + * @method string shortAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longAbsoluteDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Absolute' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'Relative' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToNowDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToNow' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string shortRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (short format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * @method string longRelativeToOtherDiffForHumans(DateTimeInterface $other = null, int $parts = 1) Get the difference (long format, 'RelativeToOther' mode) in a human readable format in the current locale. ($other and $parts parameters can be swapped.) + * + * + */ +trait Date +{ + use Boundaries; + use Comparison; + use Converter; + use Creator; + use Difference; + use Macro; + use Modifiers; + use Mutability; + use ObjectInitialisation; + use Options; + use Rounding; + use Serialization; + use Test; + use Timestamp; + use Units; + use Week; + + /** + * Names of days of the week. + * + * @var array + */ + protected static $days = [ + // @call isDayOfWeek + CarbonInterface::SUNDAY => 'Sunday', + // @call isDayOfWeek + CarbonInterface::MONDAY => 'Monday', + // @call isDayOfWeek + CarbonInterface::TUESDAY => 'Tuesday', + // @call isDayOfWeek + CarbonInterface::WEDNESDAY => 'Wednesday', + // @call isDayOfWeek + CarbonInterface::THURSDAY => 'Thursday', + // @call isDayOfWeek + CarbonInterface::FRIDAY => 'Friday', + // @call isDayOfWeek + CarbonInterface::SATURDAY => 'Saturday', + ]; + + /** + * Will UTF8 encoding be used to print localized date/time ? + * + * @var bool + */ + protected static $utf8 = false; + + /** + * List of unit and magic methods associated as doc-comments. + * + * @var array + */ + protected static $units = [ + // @call setUnit + // @call addUnit + 'year', + // @call setUnit + // @call addUnit + 'month', + // @call setUnit + // @call addUnit + 'day', + // @call setUnit + // @call addUnit + 'hour', + // @call setUnit + // @call addUnit + 'minute', + // @call setUnit + // @call addUnit + 'second', + // @call setUnit + // @call addUnit + 'milli', + // @call setUnit + // @call addUnit + 'millisecond', + // @call setUnit + // @call addUnit + 'micro', + // @call setUnit + // @call addUnit + 'microsecond', + ]; + + /** + * Creates a DateTimeZone from a string, DateTimeZone or integer offset. + * + * @param DateTimeZone|string|int|null $object original value to get CarbonTimeZone from it. + * @param DateTimeZone|string|int|null $objectDump dump of the object for error messages. + * + * @throws InvalidTimeZoneException + * + * @return CarbonTimeZone|false + */ + protected static function safeCreateDateTimeZone($object, $objectDump = null) + { + return CarbonTimeZone::instance($object, $objectDump); + } + + /** + * Get the TimeZone associated with the Carbon instance (as CarbonTimeZone). + * + * @return CarbonTimeZone + * + * @link https://php.net/manual/en/datetime.gettimezone.php + */ + #[ReturnTypeWillChange] + public function getTimezone() + { + return CarbonTimeZone::instance(parent::getTimezone()); + } + + /** + * List of minimum and maximums for each unit. + * + * @return array + */ + protected static function getRangesByUnit(int $daysInMonth = 31): array + { + return [ + // @call roundUnit + 'year' => [1, 9999], + // @call roundUnit + 'month' => [1, static::MONTHS_PER_YEAR], + // @call roundUnit + 'day' => [1, $daysInMonth], + // @call roundUnit + 'hour' => [0, static::HOURS_PER_DAY - 1], + // @call roundUnit + 'minute' => [0, static::MINUTES_PER_HOUR - 1], + // @call roundUnit + 'second' => [0, static::SECONDS_PER_MINUTE - 1], + ]; + } + + /** + * Get a copy of the instance. + * + * @return static + */ + public function copy() + { + return clone $this; + } + + /** + * @alias copy + * + * Get a copy of the instance. + * + * @return static + */ + public function clone() + { + return clone $this; + } + + /** + * Clone the current instance if it's mutable. + * + * This method is convenient to ensure you don't mutate the initial object + * but avoid to make a useless copy of it if it's already immutable. + * + * @return static + */ + public function avoidMutation(): self + { + if ($this instanceof DateTimeImmutable) { + return $this; + } + + return clone $this; + } + + /** + * Returns a present instance in the same timezone. + * + * @return static + */ + public function nowWithSameTz() + { + return static::now($this->getTimezone()); + } + + /** + * Throws an exception if the given object is not a DateTime and does not implement DateTimeInterface. + * + * @param mixed $date + * @param string|array $other + * + * @throws InvalidTypeException + */ + protected static function expectDateTime($date, $other = []) + { + $message = 'Expected '; + foreach ((array) $other as $expect) { + $message .= "$expect, "; + } + + if (!$date instanceof DateTime && !$date instanceof DateTimeInterface) { + throw new InvalidTypeException( + $message.'DateTime or DateTimeInterface, '. + (\is_object($date) ? \get_class($date) : \gettype($date)).' given' + ); + } + } + + /** + * Return the Carbon instance passed through, a now instance in the same timezone + * if null given or parse the input if string given. + * + * @param Carbon|DateTimeInterface|string|null $date + * + * @return static + */ + protected function resolveCarbon($date = null) + { + if (!$date) { + return $this->nowWithSameTz(); + } + + if (\is_string($date)) { + return static::parse($date, $this->getTimezone()); + } + + static::expectDateTime($date, ['null', 'string']); + + return $date instanceof self ? $date : static::instance($date); + } + + /** + * Return the Carbon instance passed through, a now instance in UTC + * if null given or parse the input if string given (using current timezone + * then switching to UTC). + * + * @param Carbon|DateTimeInterface|string|null $date + * + * @return static + */ + protected function resolveUTC($date = null): self + { + if (!$date) { + return static::now('UTC'); + } + + if (\is_string($date)) { + return static::parse($date, $this->getTimezone())->utc(); + } + + static::expectDateTime($date, ['null', 'string']); + + return $date instanceof self ? $date : static::instance($date)->utc(); + } + + /** + * Return the Carbon instance passed through, a now instance in the same timezone + * if null given or parse the input if string given. + * + * @param Carbon|\Carbon\CarbonPeriod|\Carbon\CarbonInterval|\DateInterval|\DatePeriod|DateTimeInterface|string|null $date + * + * @return static + */ + public function carbonize($date = null) + { + if ($date instanceof DateInterval) { + return $this->avoidMutation()->add($date); + } + + if ($date instanceof DatePeriod || $date instanceof CarbonPeriod) { + $date = $date->getStartDate(); + } + + return $this->resolveCarbon($date); + } + + /////////////////////////////////////////////////////////////////// + ///////////////////////// GETTERS AND SETTERS ///////////////////// + /////////////////////////////////////////////////////////////////// + + /** + * Get a part of the Carbon object + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return string|int|bool|DateTimeZone|null + */ + public function __get($name) + { + return $this->get($name); + } + + /** + * Get a part of the Carbon object + * + * @param string $name + * + * @throws UnknownGetterException + * + * @return string|int|bool|DateTimeZone|null + */ + public function get($name) + { + static $formats = [ + // @property int + 'year' => 'Y', + // @property int + 'yearIso' => 'o', + // @property int + // @call isSameUnit + 'month' => 'n', + // @property int + 'day' => 'j', + // @property int + 'hour' => 'G', + // @property int + 'minute' => 'i', + // @property int + 'second' => 's', + // @property int + 'micro' => 'u', + // @property int + 'microsecond' => 'u', + // @property-read int 0 (for Sunday) through 6 (for Saturday) + 'dayOfWeek' => 'w', + // @property-read int 1 (for Monday) through 7 (for Sunday) + 'dayOfWeekIso' => 'N', + // @property-read int ISO-8601 week number of year, weeks starting on Monday + 'weekOfYear' => 'W', + // @property-read int number of days in the given month + 'daysInMonth' => 't', + // @property int|float|string seconds since the Unix Epoch + 'timestamp' => 'U', + // @property-read string "am"/"pm" (Ante meridiem or Post meridiem latin lowercase mark) + 'latinMeridiem' => 'a', + // @property-read string "AM"/"PM" (Ante meridiem or Post meridiem latin uppercase mark) + 'latinUpperMeridiem' => 'A', + // @property string the day of week in English + 'englishDayOfWeek' => 'l', + // @property string the abbreviated day of week in English + 'shortEnglishDayOfWeek' => 'D', + // @property string the month in English + 'englishMonth' => 'F', + // @property string the abbreviated month in English + 'shortEnglishMonth' => 'M', + // @property string the day of week in current locale LC_TIME + // @deprecated + // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. + // replacement: Use ->isoFormat('MMM') instead. + // since: 2.55.0 + 'localeDayOfWeek' => '%A', + // @property string the abbreviated day of week in current locale LC_TIME + // @deprecated + // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. + // replacement: Use ->isoFormat('dddd') instead. + // since: 2.55.0 + 'shortLocaleDayOfWeek' => '%a', + // @property string the month in current locale LC_TIME + // @deprecated + // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. + // replacement: Use ->isoFormat('ddd') instead. + // since: 2.55.0 + 'localeMonth' => '%B', + // @property string the abbreviated month in current locale LC_TIME + // @deprecated + // reason: It uses OS language package and strftime() which is deprecated since PHP 8.1. + // replacement: Use ->isoFormat('MMMM') instead. + // since: 2.55.0 + 'shortLocaleMonth' => '%b', + // @property-read string $timezoneAbbreviatedName the current timezone abbreviated name + 'timezoneAbbreviatedName' => 'T', + // @property-read string $tzAbbrName alias of $timezoneAbbreviatedName + 'tzAbbrName' => 'T', + ]; + + switch (true) { + case isset($formats[$name]): + $format = $formats[$name]; + $method = str_starts_with($format, '%') ? 'formatLocalized' : 'rawFormat'; + $value = $this->$method($format); + + return is_numeric($value) ? (int) $value : $value; + + // @property-read string long name of weekday translated according to Carbon locale, in english if no translation available for current language + case $name === 'dayName': + return $this->getTranslatedDayName(); + // @property-read string short name of weekday translated according to Carbon locale, in english if no translation available for current language + case $name === 'shortDayName': + return $this->getTranslatedShortDayName(); + // @property-read string very short name of weekday translated according to Carbon locale, in english if no translation available for current language + case $name === 'minDayName': + return $this->getTranslatedMinDayName(); + // @property-read string long name of month translated according to Carbon locale, in english if no translation available for current language + case $name === 'monthName': + return $this->getTranslatedMonthName(); + // @property-read string short name of month translated according to Carbon locale, in english if no translation available for current language + case $name === 'shortMonthName': + return $this->getTranslatedShortMonthName(); + // @property-read string lowercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + case $name === 'meridiem': + return $this->meridiem(true); + // @property-read string uppercase meridiem mark translated according to Carbon locale, in latin if no translation available for current language + case $name === 'upperMeridiem': + return $this->meridiem(); + // @property-read int current hour from 1 to 24 + case $name === 'noZeroHour': + return $this->hour ?: 24; + // @property int + case $name === 'milliseconds': + // @property int + case $name === 'millisecond': + // @property int + case $name === 'milli': + return (int) floor(((int) $this->rawFormat('u')) / 1000); + + // @property int 1 through 53 + case $name === 'week': + return (int) $this->week(); + + // @property int 1 through 53 + case $name === 'isoWeek': + return (int) $this->isoWeek(); + + // @property int year according to week format + case $name === 'weekYear': + return (int) $this->weekYear(); + + // @property int year according to ISO week format + case $name === 'isoWeekYear': + return (int) $this->isoWeekYear(); + + // @property-read int 51 through 53 + case $name === 'weeksInYear': + return $this->weeksInYear(); + + // @property-read int 51 through 53 + case $name === 'isoWeeksInYear': + return $this->isoWeeksInYear(); + + // @property-read int 1 through 5 + case $name === 'weekOfMonth': + return (int) ceil($this->day / static::DAYS_PER_WEEK); + + // @property-read int 1 through 5 + case $name === 'weekNumberInMonth': + return (int) ceil(($this->day + $this->avoidMutation()->startOfMonth()->dayOfWeekIso - 1) / static::DAYS_PER_WEEK); + + // @property-read int 0 through 6 + case $name === 'firstWeekDay': + return $this->localTranslator ? ($this->getTranslationMessage('first_day_of_week') ?? 0) : static::getWeekStartsAt(); + + // @property-read int 0 through 6 + case $name === 'lastWeekDay': + return $this->localTranslator ? (($this->getTranslationMessage('first_day_of_week') ?? 0) + static::DAYS_PER_WEEK - 1) % static::DAYS_PER_WEEK : static::getWeekEndsAt(); + + // @property int 1 through 366 + case $name === 'dayOfYear': + return 1 + (int) ($this->rawFormat('z')); + + // @property-read int 365 or 366 + case $name === 'daysInYear': + return $this->isLeapYear() ? 366 : 365; + + // @property int does a diffInYears() with default parameters + case $name === 'age': + return $this->diffInYears(); + + // @property-read int the quarter of this instance, 1 - 4 + // @call isSameUnit + case $name === 'quarter': + return (int) ceil($this->month / static::MONTHS_PER_QUARTER); + + // @property-read int the decade of this instance + // @call isSameUnit + case $name === 'decade': + return (int) ceil($this->year / static::YEARS_PER_DECADE); + + // @property-read int the century of this instance + // @call isSameUnit + case $name === 'century': + $factor = 1; + $year = $this->year; + if ($year < 0) { + $year = -$year; + $factor = -1; + } + + return (int) ($factor * ceil($year / static::YEARS_PER_CENTURY)); + + // @property-read int the millennium of this instance + // @call isSameUnit + case $name === 'millennium': + $factor = 1; + $year = $this->year; + if ($year < 0) { + $year = -$year; + $factor = -1; + } + + return (int) ($factor * ceil($year / static::YEARS_PER_MILLENNIUM)); + + // @property int the timezone offset in seconds from UTC + case $name === 'offset': + return $this->getOffset(); + + // @property int the timezone offset in minutes from UTC + case $name === 'offsetMinutes': + return $this->getOffset() / static::SECONDS_PER_MINUTE; + + // @property int the timezone offset in hours from UTC + case $name === 'offsetHours': + return $this->getOffset() / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR; + + // @property-read bool daylight savings time indicator, true if DST, false otherwise + case $name === 'dst': + return $this->rawFormat('I') === '1'; + + // @property-read bool checks if the timezone is local, true if local, false otherwise + case $name === 'local': + return $this->getOffset() === $this->avoidMutation()->setTimezone(date_default_timezone_get())->getOffset(); + + // @property-read bool checks if the timezone is UTC, true if UTC, false otherwise + case $name === 'utc': + return $this->getOffset() === 0; + + // @property CarbonTimeZone $timezone the current timezone + // @property CarbonTimeZone $tz alias of $timezone + case $name === 'timezone' || $name === 'tz': + return CarbonTimeZone::instance($this->getTimezone()); + + // @property-read string $timezoneName the current timezone name + // @property-read string $tzName alias of $timezoneName + case $name === 'timezoneName' || $name === 'tzName': + return $this->getTimezone()->getName(); + + // @property-read string locale of the current instance + case $name === 'locale': + return $this->getTranslatorLocale(); + + default: + $macro = $this->getLocalMacro('get'.ucfirst($name)); + + if ($macro) { + return $this->executeCallableWithContext($macro); + } + + throw new UnknownGetterException($name); + } + } + + /** + * Check if an attribute exists on the object + * + * @param string $name + * + * @return bool + */ + public function __isset($name) + { + try { + $this->__get($name); + } catch (UnknownGetterException | ReflectionException $e) { + return false; + } + + return true; + } + + /** + * Set a part of the Carbon object + * + * @param string $name + * @param string|int|DateTimeZone $value + * + * @throws UnknownSetterException|ReflectionException + * + * @return void + */ + public function __set($name, $value) + { + if ($this->constructedObjectId === spl_object_hash($this)) { + $this->set($name, $value); + + return; + } + + $this->$name = $value; + } + + /** + * Set a part of the Carbon object + * + * @param string|array $name + * @param string|int|DateTimeZone $value + * + * @throws ImmutableException|UnknownSetterException + * + * @return $this + */ + public function set($name, $value = null) + { + if ($this->isImmutable()) { + throw new ImmutableException(sprintf('%s class', static::class)); + } + + if (\is_array($name)) { + foreach ($name as $key => $value) { + $this->set($key, $value); + } + + return $this; + } + + switch ($name) { + case 'milliseconds': + case 'millisecond': + case 'milli': + case 'microseconds': + case 'microsecond': + case 'micro': + if (str_starts_with($name, 'milli')) { + $value *= 1000; + } + + while ($value < 0) { + $this->subSecond(); + $value += static::MICROSECONDS_PER_SECOND; + } + + while ($value >= static::MICROSECONDS_PER_SECOND) { + $this->addSecond(); + $value -= static::MICROSECONDS_PER_SECOND; + } + + $this->modify($this->rawFormat('H:i:s.').str_pad((string) round($value), 6, '0', STR_PAD_LEFT)); + + break; + + case 'year': + case 'month': + case 'day': + case 'hour': + case 'minute': + case 'second': + [$year, $month, $day, $hour, $minute, $second] = array_map('intval', explode('-', $this->rawFormat('Y-n-j-G-i-s'))); + $$name = $value; + $this->setDateTime($year, $month, $day, $hour, $minute, $second); + + break; + + case 'week': + $this->week($value); + + break; + + case 'isoWeek': + $this->isoWeek($value); + + break; + + case 'weekYear': + $this->weekYear($value); + + break; + + case 'isoWeekYear': + $this->isoWeekYear($value); + + break; + + case 'dayOfYear': + $this->addDays($value - $this->dayOfYear); + + break; + + case 'timestamp': + $this->setTimestamp($value); + + break; + + case 'offset': + $this->setTimezone(static::safeCreateDateTimeZone($value / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR)); + + break; + + case 'offsetMinutes': + $this->setTimezone(static::safeCreateDateTimeZone($value / static::MINUTES_PER_HOUR)); + + break; + + case 'offsetHours': + $this->setTimezone(static::safeCreateDateTimeZone($value)); + + break; + + case 'timezone': + case 'tz': + $this->setTimezone($value); + + break; + + default: + $macro = $this->getLocalMacro('set'.ucfirst($name)); + + if ($macro) { + $this->executeCallableWithContext($macro, $value); + + break; + } + + if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { + throw new UnknownSetterException($name); + } + + $this->$name = $value; + } + + return $this; + } + + protected function getTranslatedFormByRegExp($baseKey, $keySuffix, $context, $subKey, $defaultValue) + { + $key = $baseKey.$keySuffix; + $standaloneKey = "{$key}_standalone"; + $baseTranslation = $this->getTranslationMessage($key); + + if ($baseTranslation instanceof Closure) { + return $baseTranslation($this, $context, $subKey) ?: $defaultValue; + } + + if ( + $this->getTranslationMessage("$standaloneKey.$subKey") && + (!$context || (($regExp = $this->getTranslationMessage("{$baseKey}_regexp")) && !preg_match($regExp, $context))) + ) { + $key = $standaloneKey; + } + + return $this->getTranslationMessage("$key.$subKey", null, $defaultValue); + } + + /** + * Get the translation of the current week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * @param string $keySuffix "", "_short" or "_min" + * @param string|null $defaultValue default value if translation missing + * + * @return string + */ + public function getTranslatedDayName($context = null, $keySuffix = '', $defaultValue = null) + { + return $this->getTranslatedFormByRegExp('weekdays', $keySuffix, $context, $this->dayOfWeek, $defaultValue ?: $this->englishDayOfWeek); + } + + /** + * Get the translation of the current short week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedShortDayName($context = null) + { + return $this->getTranslatedDayName($context, '_short', $this->shortEnglishDayOfWeek); + } + + /** + * Get the translation of the current abbreviated week day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedMinDayName($context = null) + { + return $this->getTranslatedDayName($context, '_min', $this->shortEnglishDayOfWeek); + } + + /** + * Get the translation of the current month day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * @param string $keySuffix "" or "_short" + * @param string|null $defaultValue default value if translation missing + * + * @return string + */ + public function getTranslatedMonthName($context = null, $keySuffix = '', $defaultValue = null) + { + return $this->getTranslatedFormByRegExp('months', $keySuffix, $context, $this->month - 1, $defaultValue ?: $this->englishMonth); + } + + /** + * Get the translation of the current short month day name (with context for languages with multiple forms). + * + * @param string|null $context whole format string + * + * @return string + */ + public function getTranslatedShortMonthName($context = null) + { + return $this->getTranslatedMonthName($context, '_short', $this->shortEnglishMonth); + } + + /** + * Get/set the day of year. + * + * @param int|null $value new value for day of year if using as setter. + * + * @return static|int + */ + public function dayOfYear($value = null) + { + $dayOfYear = $this->dayOfYear; + + return $value === null ? $dayOfYear : $this->addDays($value - $dayOfYear); + } + + /** + * Get/set the weekday from 0 (Sunday) to 6 (Saturday). + * + * @param int|null $value new value for weekday if using as setter. + * + * @return static|int + */ + public function weekday($value = null) + { + $dayOfWeek = ($this->dayOfWeek + 7 - (int) ($this->getTranslationMessage('first_day_of_week') ?? 0)) % 7; + + return $value === null ? $dayOfWeek : $this->addDays($value - $dayOfWeek); + } + + /** + * Get/set the ISO weekday from 1 (Monday) to 7 (Sunday). + * + * @param int|null $value new value for weekday if using as setter. + * + * @return static|int + */ + public function isoWeekday($value = null) + { + $dayOfWeekIso = $this->dayOfWeekIso; + + return $value === null ? $dayOfWeekIso : $this->addDays($value - $dayOfWeekIso); + } + + /** + * Set any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value new value for the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function setUnitNoOverflow($valueUnit, $value, $overflowUnit) + { + try { + $original = $this->avoidMutation(); + /** @var static $date */ + $date = $this->$valueUnit($value); + $end = $original->avoidMutation()->endOf($overflowUnit); + $start = $original->avoidMutation()->startOf($overflowUnit); + if ($date < $start) { + $date = $date->setDateTimeFrom($start); + } elseif ($date > $end) { + $date = $date->setDateTimeFrom($end); + } + + return $date; + } catch (BadMethodCallException | ReflectionException $exception) { + throw new UnknownUnitException($valueUnit, 0, $exception); + } + } + + /** + * Add any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value amount to add to the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function addUnitNoOverflow($valueUnit, $value, $overflowUnit) + { + return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit + $value, $overflowUnit); + } + + /** + * Subtract any unit to a new value without overflowing current other unit given. + * + * @param string $valueUnit unit name to modify + * @param int $value amount to subtract to the input unit + * @param string $overflowUnit unit name to not overflow + * + * @return static + */ + public function subUnitNoOverflow($valueUnit, $value, $overflowUnit) + { + return $this->setUnitNoOverflow($valueUnit, $this->$valueUnit - $value, $overflowUnit); + } + + /** + * Returns the minutes offset to UTC if no arguments passed, else set the timezone with given minutes shift passed. + * + * @param int|null $minuteOffset + * + * @return int|static + */ + public function utcOffset(int $minuteOffset = null) + { + if (\func_num_args() < 1) { + return $this->offsetMinutes; + } + + return $this->setTimezone(CarbonTimeZone::createFromMinuteOffset($minuteOffset)); + } + + /** + * Set the date with gregorian year, month and day numbers. + * + * @see https://php.net/manual/en/datetime.setdate.php + * + * @param int $year + * @param int $month + * @param int $day + * + * @return static + */ + #[ReturnTypeWillChange] + public function setDate($year, $month, $day) + { + return parent::setDate((int) $year, (int) $month, (int) $day); + } + + /** + * Set a date according to the ISO 8601 standard - using weeks and day offsets rather than specific dates. + * + * @see https://php.net/manual/en/datetime.setisodate.php + * + * @param int $year + * @param int $week + * @param int $day + * + * @return static + */ + #[ReturnTypeWillChange] + public function setISODate($year, $week, $day = 1) + { + return parent::setISODate((int) $year, (int) $week, (int) $day); + } + + /** + * Set the date and time all together. + * + * @param int $year + * @param int $month + * @param int $day + * @param int $hour + * @param int $minute + * @param int $second + * @param int $microseconds + * + * @return static + */ + public function setDateTime($year, $month, $day, $hour, $minute, $second = 0, $microseconds = 0) + { + return $this->setDate($year, $month, $day)->setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds); + } + + /** + * Resets the current time of the DateTime object to a different time. + * + * @see https://php.net/manual/en/datetime.settime.php + * + * @param int $hour + * @param int $minute + * @param int $second + * @param int $microseconds + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTime($hour, $minute, $second = 0, $microseconds = 0) + { + return parent::setTime((int) $hour, (int) $minute, (int) $second, (int) $microseconds); + } + + /** + * Set the instance's timestamp. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $unixTimestamp + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTimestamp($unixTimestamp) + { + [$timestamp, $microseconds] = self::getIntegerAndDecimalParts($unixTimestamp); + + return parent::setTimestamp((int) $timestamp)->setMicroseconds((int) $microseconds); + } + + /** + * Set the time by time string. + * + * @param string $time + * + * @return static + */ + public function setTimeFromTimeString($time) + { + if (!str_contains($time, ':')) { + $time .= ':0'; + } + + return $this->modify($time); + } + + /** + * @alias setTimezone + * + * @param DateTimeZone|string $value + * + * @return static + */ + public function timezone($value) + { + return $this->setTimezone($value); + } + + /** + * Set the timezone or returns the timezone name if no arguments passed. + * + * @param DateTimeZone|string $value + * + * @return static|string + */ + public function tz($value = null) + { + if (\func_num_args() < 1) { + return $this->tzName; + } + + return $this->setTimezone($value); + } + + /** + * Set the instance's timezone from a string or object. + * + * @param DateTimeZone|string $value + * + * @return static + */ + #[ReturnTypeWillChange] + public function setTimezone($value) + { + $tz = static::safeCreateDateTimeZone($value); + + if ($tz === false && !self::isStrictModeEnabled()) { + $tz = new CarbonTimeZone(); + } + + return parent::setTimezone($tz); + } + + /** + * Set the instance's timezone from a string or object and add/subtract the offset difference. + * + * @param DateTimeZone|string $value + * + * @return static + */ + public function shiftTimezone($value) + { + $dateTimeString = $this->format('Y-m-d H:i:s.u'); + + return $this + ->setTimezone($value) + ->modify($dateTimeString); + } + + /** + * Set the instance's timezone to UTC. + * + * @return static + */ + public function utc() + { + return $this->setTimezone('UTC'); + } + + /** + * Set the year, month, and date for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date now if null + * + * @return static + */ + public function setDateFrom($date = null) + { + $date = $this->resolveCarbon($date); + + return $this->setDate($date->year, $date->month, $date->day); + } + + /** + * Set the hour, minute, second and microseconds for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date now if null + * + * @return static + */ + public function setTimeFrom($date = null) + { + $date = $this->resolveCarbon($date); + + return $this->setTime($date->hour, $date->minute, $date->second, $date->microsecond); + } + + /** + * Set the date and time for this instance to that of the passed instance. + * + * @param Carbon|DateTimeInterface $date + * + * @return static + */ + public function setDateTimeFrom($date = null) + { + $date = $this->resolveCarbon($date); + + return $this->modify($date->rawFormat('Y-m-d H:i:s.u')); + } + + /** + * Get the days of the week + * + * @return array + */ + public static function getDays() + { + return static::$days; + } + + /////////////////////////////////////////////////////////////////// + /////////////////////// WEEK SPECIAL DAYS ///////////////////////// + /////////////////////////////////////////////////////////////////// + + private static function getFirstDayOfWeek(): int + { + return (int) static::getTranslationMessageWith( + static::getTranslator(), + 'first_day_of_week' + ); + } + + /** + * Get the first day of week + * + * @return int + */ + public static function getWeekStartsAt() + { + if (static::$weekStartsAt === static::WEEK_DAY_AUTO) { + return self::getFirstDayOfWeek(); + } + + return static::$weekStartsAt; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekEndsAt optional parameter instead when using endOfWeek method. You can also use the + * 'first_day_of_week' locale setting to change the start of week according to current locale + * selected and implicitly the end of week. + * + * Set the first day of week + * + * @param int|string $day week start day (or 'auto' to get the first day of week from Carbon::getLocale() culture). + * + * @return void + */ + public static function setWeekStartsAt($day) + { + static::$weekStartsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7); + } + + /** + * Get the last day of week + * + * @return int + */ + public static function getWeekEndsAt() + { + if (static::$weekStartsAt === static::WEEK_DAY_AUTO) { + return (int) (static::DAYS_PER_WEEK - 1 + self::getFirstDayOfWeek()) % static::DAYS_PER_WEEK; + } + + return static::$weekEndsAt; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * Use $weekStartsAt optional parameter instead when using startOfWeek, floorWeek, ceilWeek + * or roundWeek method. You can also use the 'first_day_of_week' locale setting to change the + * start of week according to current locale selected and implicitly the end of week. + * + * Set the last day of week + * + * @param int|string $day week end day (or 'auto' to get the day before the first day of week + * from Carbon::getLocale() culture). + * + * @return void + */ + public static function setWeekEndsAt($day) + { + static::$weekEndsAt = $day === static::WEEK_DAY_AUTO ? $day : max(0, (7 + $day) % 7); + } + + /** + * Get weekend days + * + * @return array + */ + public static function getWeekendDays() + { + return static::$weekendDays; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider week-end is always saturday and sunday, and if you have some custom + * week-end days to handle, give to those days an other name and create a macro for them: + * + * ``` + * Carbon::macro('isDayOff', function ($date) { + * return $date->isSunday() || $date->isMonday(); + * }); + * Carbon::macro('isNotDayOff', function ($date) { + * return !$date->isDayOff(); + * }); + * if ($someDate->isDayOff()) ... + * if ($someDate->isNotDayOff()) ... + * // Add 5 not-off days + * $count = 5; + * while ($someDate->isDayOff() || ($count-- > 0)) { + * $someDate->addDay(); + * } + * ``` + * + * Set weekend days + * + * @param array $days + * + * @return void + */ + public static function setWeekendDays($days) + { + static::$weekendDays = $days; + } + + /** + * Determine if a time string will produce a relative date. + * + * @param string $time + * + * @return bool true if time match a relative date, false if absolute or invalid time string + */ + public static function hasRelativeKeywords($time) + { + if (!$time || strtotime($time) === false) { + return false; + } + + $date1 = new DateTime('2000-01-01T00:00:00Z'); + $date1->modify($time); + $date2 = new DateTime('2001-12-25T00:00:00Z'); + $date2->modify($time); + + return $date1 != $date2; + } + + /////////////////////////////////////////////////////////////////// + /////////////////////// STRING FORMATTING ///////////////////////// + /////////////////////////////////////////////////////////////////// + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use UTF-8 language packages on every machine. + * + * Set if UTF8 will be used for localized date/time. + * + * @param bool $utf8 + */ + public static function setUtf8($utf8) + { + static::$utf8 = $utf8; + } + + /** + * Format the instance with the current locale. You can set the current + * locale using setlocale() https://php.net/setlocale. + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat() instead. + * Deprecated since 2.55.0 + * + * @param string $format + * + * @return string + */ + public function formatLocalized($format) + { + // Check for Windows to find and replace the %e modifier correctly. + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { + $format = preg_replace('#(?toDateTimeString()); + $formatted = ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) + ? strftime($format, $time) + : @strftime($format, $time); + + return static::$utf8 + ? ( + \function_exists('mb_convert_encoding') + ? mb_convert_encoding($formatted, 'UTF-8', mb_list_encodings()) + : utf8_encode($formatted) + ) + : $formatted; + } + + /** + * Returns list of locale formats for ISO formatting. + * + * @param string|null $locale current locale used if null + * + * @return array + */ + public function getIsoFormats($locale = null) + { + return [ + 'LT' => $this->getTranslationMessage('formats.LT', $locale, 'h:mm A'), + 'LTS' => $this->getTranslationMessage('formats.LTS', $locale, 'h:mm:ss A'), + 'L' => $this->getTranslationMessage('formats.L', $locale, 'MM/DD/YYYY'), + 'LL' => $this->getTranslationMessage('formats.LL', $locale, 'MMMM D, YYYY'), + 'LLL' => $this->getTranslationMessage('formats.LLL', $locale, 'MMMM D, YYYY h:mm A'), + 'LLLL' => $this->getTranslationMessage('formats.LLLL', $locale, 'dddd, MMMM D, YYYY h:mm A'), + ]; + } + + /** + * Returns list of calendar formats for ISO formatting. + * + * @param string|null $locale current locale used if null + * + * @return array + */ + public function getCalendarFormats($locale = null) + { + return [ + 'sameDay' => $this->getTranslationMessage('calendar.sameDay', $locale, '[Today at] LT'), + 'nextDay' => $this->getTranslationMessage('calendar.nextDay', $locale, '[Tomorrow at] LT'), + 'nextWeek' => $this->getTranslationMessage('calendar.nextWeek', $locale, 'dddd [at] LT'), + 'lastDay' => $this->getTranslationMessage('calendar.lastDay', $locale, '[Yesterday at] LT'), + 'lastWeek' => $this->getTranslationMessage('calendar.lastWeek', $locale, '[Last] dddd [at] LT'), + 'sameElse' => $this->getTranslationMessage('calendar.sameElse', $locale, 'L'), + ]; + } + + /** + * Returns list of locale units for ISO formatting. + * + * @return array + */ + public static function getIsoUnits() + { + static $units = null; + + if ($units === null) { + $units = [ + 'OD' => ['getAltNumber', ['day']], + 'OM' => ['getAltNumber', ['month']], + 'OY' => ['getAltNumber', ['year']], + 'OH' => ['getAltNumber', ['hour']], + 'Oh' => ['getAltNumber', ['h']], + 'Om' => ['getAltNumber', ['minute']], + 'Os' => ['getAltNumber', ['second']], + 'D' => 'day', + 'DD' => ['rawFormat', ['d']], + 'Do' => ['ordinal', ['day', 'D']], + 'd' => 'dayOfWeek', + 'dd' => function (CarbonInterface $date, $originalFormat = null) { + return $date->getTranslatedMinDayName($originalFormat); + }, + 'ddd' => function (CarbonInterface $date, $originalFormat = null) { + return $date->getTranslatedShortDayName($originalFormat); + }, + 'dddd' => function (CarbonInterface $date, $originalFormat = null) { + return $date->getTranslatedDayName($originalFormat); + }, + 'DDD' => 'dayOfYear', + 'DDDD' => ['getPaddedUnit', ['dayOfYear', 3]], + 'DDDo' => ['ordinal', ['dayOfYear', 'DDD']], + 'e' => ['weekday', []], + 'E' => 'dayOfWeekIso', + 'H' => ['rawFormat', ['G']], + 'HH' => ['rawFormat', ['H']], + 'h' => ['rawFormat', ['g']], + 'hh' => ['rawFormat', ['h']], + 'k' => 'noZeroHour', + 'kk' => ['getPaddedUnit', ['noZeroHour']], + 'hmm' => ['rawFormat', ['gi']], + 'hmmss' => ['rawFormat', ['gis']], + 'Hmm' => ['rawFormat', ['Gi']], + 'Hmmss' => ['rawFormat', ['Gis']], + 'm' => 'minute', + 'mm' => ['rawFormat', ['i']], + 'a' => 'meridiem', + 'A' => 'upperMeridiem', + 's' => 'second', + 'ss' => ['getPaddedUnit', ['second']], + 'S' => function (CarbonInterface $date) { + return (string) floor($date->micro / 100000); + }, + 'SS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro / 10000), 2, '0', STR_PAD_LEFT); + }, + 'SSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro / 1000), 3, '0', STR_PAD_LEFT); + }, + 'SSSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro / 100), 4, '0', STR_PAD_LEFT); + }, + 'SSSSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro / 10), 5, '0', STR_PAD_LEFT); + }, + 'SSSSSS' => ['getPaddedUnit', ['micro', 6]], + 'SSSSSSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro * 10), 7, '0', STR_PAD_LEFT); + }, + 'SSSSSSSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro * 100), 8, '0', STR_PAD_LEFT); + }, + 'SSSSSSSSS' => function (CarbonInterface $date) { + return str_pad((string) floor($date->micro * 1000), 9, '0', STR_PAD_LEFT); + }, + 'M' => 'month', + 'MM' => ['rawFormat', ['m']], + 'MMM' => function (CarbonInterface $date, $originalFormat = null) { + $month = $date->getTranslatedShortMonthName($originalFormat); + $suffix = $date->getTranslationMessage('mmm_suffix'); + if ($suffix && $month !== $date->monthName) { + $month .= $suffix; + } + + return $month; + }, + 'MMMM' => function (CarbonInterface $date, $originalFormat = null) { + return $date->getTranslatedMonthName($originalFormat); + }, + 'Mo' => ['ordinal', ['month', 'M']], + 'Q' => 'quarter', + 'Qo' => ['ordinal', ['quarter', 'M']], + 'G' => 'isoWeekYear', + 'GG' => ['getPaddedUnit', ['isoWeekYear']], + 'GGG' => ['getPaddedUnit', ['isoWeekYear', 3]], + 'GGGG' => ['getPaddedUnit', ['isoWeekYear', 4]], + 'GGGGG' => ['getPaddedUnit', ['isoWeekYear', 5]], + 'g' => 'weekYear', + 'gg' => ['getPaddedUnit', ['weekYear']], + 'ggg' => ['getPaddedUnit', ['weekYear', 3]], + 'gggg' => ['getPaddedUnit', ['weekYear', 4]], + 'ggggg' => ['getPaddedUnit', ['weekYear', 5]], + 'W' => 'isoWeek', + 'WW' => ['getPaddedUnit', ['isoWeek']], + 'Wo' => ['ordinal', ['isoWeek', 'W']], + 'w' => 'week', + 'ww' => ['getPaddedUnit', ['week']], + 'wo' => ['ordinal', ['week', 'w']], + 'x' => ['valueOf', []], + 'X' => 'timestamp', + 'Y' => 'year', + 'YY' => ['rawFormat', ['y']], + 'YYYY' => ['getPaddedUnit', ['year', 4]], + 'YYYYY' => ['getPaddedUnit', ['year', 5]], + 'YYYYYY' => function (CarbonInterface $date) { + return ($date->year < 0 ? '' : '+').$date->getPaddedUnit('year', 6); + }, + 'z' => ['rawFormat', ['T']], + 'zz' => 'tzName', + 'Z' => ['getOffsetString', []], + 'ZZ' => ['getOffsetString', ['']], + ]; + } + + return $units; + } + + /** + * Returns a unit of the instance padded with 0 by default or any other string if specified. + * + * @param string $unit Carbon unit name + * @param int $length Length of the output (2 by default) + * @param string $padString String to use for padding ("0" by default) + * @param int $padType Side(s) to pad (STR_PAD_LEFT by default) + * + * @return string + */ + public function getPaddedUnit($unit, $length = 2, $padString = '0', $padType = STR_PAD_LEFT) + { + return ($this->$unit < 0 ? '-' : '').str_pad((string) abs($this->$unit), $length, $padString, $padType); + } + + /** + * Return a property with its ordinal. + * + * @param string $key + * @param string|null $period + * + * @return string + */ + public function ordinal(string $key, ?string $period = null): string + { + $number = $this->$key; + $result = $this->translate('ordinal', [ + ':number' => $number, + ':period' => (string) $period, + ]); + + return (string) ($result === 'ordinal' ? $number : $result); + } + + /** + * Return the meridiem of the current time in the current locale. + * + * @param bool $isLower if true, returns lowercase variant if available in the current locale. + * + * @return string + */ + public function meridiem(bool $isLower = false): string + { + $hour = $this->hour; + $index = $hour < 12 ? 0 : 1; + + if ($isLower) { + $key = 'meridiem.'.($index + 2); + $result = $this->translate($key); + + if ($result !== $key) { + return $result; + } + } + + $key = "meridiem.$index"; + $result = $this->translate($key); + if ($result === $key) { + $result = $this->translate('meridiem', [ + ':hour' => $this->hour, + ':minute' => $this->minute, + ':isLower' => $isLower, + ]); + + if ($result === 'meridiem') { + return $isLower ? $this->latinMeridiem : $this->latinUpperMeridiem; + } + } elseif ($isLower) { + $result = mb_strtolower($result); + } + + return $result; + } + + /** + * Returns the alternative number for a given date property if available in the current locale. + * + * @param string $key date property + * + * @return string + */ + public function getAltNumber(string $key): string + { + return $this->translateNumber(\strlen($key) > 1 ? $this->$key : $this->rawFormat('h')); + } + + /** + * Format in the current language using ISO replacement patterns. + * + * @param string $format + * @param string|null $originalFormat provide context if a chunk has been passed alone + * + * @return string + */ + public function isoFormat(string $format, ?string $originalFormat = null): string + { + $result = ''; + $length = mb_strlen($format); + $originalFormat = $originalFormat ?: $format; + $inEscaped = false; + $formats = null; + $units = null; + + for ($i = 0; $i < $length; $i++) { + $char = mb_substr($format, $i, 1); + + if ($char === '\\') { + $result .= mb_substr($format, ++$i, 1); + + continue; + } + + if ($char === '[' && !$inEscaped) { + $inEscaped = true; + + continue; + } + + if ($char === ']' && $inEscaped) { + $inEscaped = false; + + continue; + } + + if ($inEscaped) { + $result .= $char; + + continue; + } + + $input = mb_substr($format, $i); + + if (preg_match('/^(LTS|LT|[Ll]{1,4})/', $input, $match)) { + if ($formats === null) { + $formats = $this->getIsoFormats(); + } + + $code = $match[0]; + $sequence = $formats[$code] ?? preg_replace_callback( + '/MMMM|MM|DD|dddd/', + function ($code) { + return mb_substr($code[0], 1); + }, + $formats[strtoupper($code)] ?? '' + ); + $rest = mb_substr($format, $i + mb_strlen($code)); + $format = mb_substr($format, 0, $i).$sequence.$rest; + $length = mb_strlen($format); + $input = $sequence.$rest; + } + + if (preg_match('/^'.CarbonInterface::ISO_FORMAT_REGEXP.'/', $input, $match)) { + $code = $match[0]; + + if ($units === null) { + $units = static::getIsoUnits(); + } + + $sequence = $units[$code] ?? ''; + + if ($sequence instanceof Closure) { + $sequence = $sequence($this, $originalFormat); + } elseif (\is_array($sequence)) { + try { + $sequence = $this->{$sequence[0]}(...$sequence[1]); + } catch (ReflectionException | InvalidArgumentException | BadMethodCallException $e) { + $sequence = ''; + } + } elseif (\is_string($sequence)) { + $sequence = $this->$sequence ?? $code; + } + + $format = mb_substr($format, 0, $i).$sequence.mb_substr($format, $i + mb_strlen($code)); + $i += mb_strlen((string) $sequence) - 1; + $length = mb_strlen($format); + $char = $sequence; + } + + $result .= $char; + } + + return $result; + } + + /** + * List of replacements from date() format to isoFormat(). + * + * @return array + */ + public static function getFormatsToIsoReplacements() + { + static $replacements = null; + + if ($replacements === null) { + $replacements = [ + 'd' => true, + 'D' => 'ddd', + 'j' => true, + 'l' => 'dddd', + 'N' => true, + 'S' => function ($date) { + $day = $date->rawFormat('j'); + + return str_replace((string) $day, '', $date->isoFormat('Do')); + }, + 'w' => true, + 'z' => true, + 'W' => true, + 'F' => 'MMMM', + 'm' => true, + 'M' => 'MMM', + 'n' => true, + 't' => true, + 'L' => true, + 'o' => true, + 'Y' => true, + 'y' => true, + 'a' => 'a', + 'A' => 'A', + 'B' => true, + 'g' => true, + 'G' => true, + 'h' => true, + 'H' => true, + 'i' => true, + 's' => true, + 'u' => true, + 'v' => true, + 'E' => true, + 'I' => true, + 'O' => true, + 'P' => true, + 'Z' => true, + 'c' => true, + 'r' => true, + 'U' => true, + ]; + } + + return $replacements; + } + + /** + * Format as ->format() do (using date replacements patterns from https://php.net/manual/en/function.date.php) + * but translate words whenever possible (months, day names, etc.) using the current locale. + * + * @param string $format + * + * @return string + */ + public function translatedFormat(string $format): string + { + $replacements = static::getFormatsToIsoReplacements(); + $context = ''; + $isoFormat = ''; + $length = mb_strlen($format); + + for ($i = 0; $i < $length; $i++) { + $char = mb_substr($format, $i, 1); + + if ($char === '\\') { + $replacement = mb_substr($format, $i, 2); + $isoFormat .= $replacement; + $i++; + + continue; + } + + if (!isset($replacements[$char])) { + $replacement = preg_match('/^[A-Za-z]$/', $char) ? "\\$char" : $char; + $isoFormat .= $replacement; + $context .= $replacement; + + continue; + } + + $replacement = $replacements[$char]; + + if ($replacement === true) { + static $contextReplacements = null; + + if ($contextReplacements === null) { + $contextReplacements = [ + 'm' => 'MM', + 'd' => 'DD', + 't' => 'D', + 'j' => 'D', + 'N' => 'e', + 'w' => 'e', + 'n' => 'M', + 'o' => 'YYYY', + 'Y' => 'YYYY', + 'y' => 'YY', + 'g' => 'h', + 'G' => 'H', + 'h' => 'hh', + 'H' => 'HH', + 'i' => 'mm', + 's' => 'ss', + ]; + } + + $isoFormat .= '['.$this->rawFormat($char).']'; + $context .= $contextReplacements[$char] ?? ' '; + + continue; + } + + if ($replacement instanceof Closure) { + $replacement = '['.$replacement($this).']'; + $isoFormat .= $replacement; + $context .= $replacement; + + continue; + } + + $isoFormat .= $replacement; + $context .= $replacement; + } + + return $this->isoFormat($isoFormat, $context); + } + + /** + * Returns the offset hour and minute formatted with +/- and a given separator (":" by default). + * For example, if the time zone is 9 hours 30 minutes, you'll get "+09:30", with "@@" as first + * argument, "+09@@30", with "" as first argument, "+0930". Negative offset will return something + * like "-12:00". + * + * @param string $separator string to place between hours and minutes (":" by default) + * + * @return string + */ + public function getOffsetString($separator = ':') + { + $second = $this->getOffset(); + $symbol = $second < 0 ? '-' : '+'; + $minute = abs($second) / static::SECONDS_PER_MINUTE; + $hour = str_pad((string) floor($minute / static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT); + $minute = str_pad((string) (((int) $minute) % static::MINUTES_PER_HOUR), 2, '0', STR_PAD_LEFT); + + return "$symbol$hour$separator$minute"; + } + + protected static function executeStaticCallable($macro, ...$parameters) + { + return static::bindMacroContext(null, function () use (&$macro, &$parameters) { + if ($macro instanceof Closure) { + $boundMacro = @Closure::bind($macro, null, static::class); + + return ($boundMacro ?: $macro)(...$parameters); + } + + return $macro(...$parameters); + }); + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @throws BadMethodCallException + * + * @return mixed + */ + public static function __callStatic($method, $parameters) + { + if (!static::hasMacro($method)) { + foreach (static::getGenericMacros() as $callback) { + try { + return static::executeStaticCallable($callback, $method, ...$parameters); + } catch (BadMethodCallException $exception) { + continue; + } + } + if (static::isStrictModeEnabled()) { + throw new UnknownMethodException(sprintf('%s::%s', static::class, $method)); + } + + return null; + } + + return static::executeStaticCallable(static::$globalMacros[$method], ...$parameters); + } + + /** + * Set specified unit to new given value. + * + * @param string $unit year, month, day, hour, minute, second or microsecond + * @param int $value new value for given unit + * + * @return static + */ + public function setUnit($unit, $value = null) + { + $unit = static::singularUnit($unit); + $dateUnits = ['year', 'month', 'day']; + if (\in_array($unit, $dateUnits)) { + return $this->setDate(...array_map(function ($name) use ($unit, $value) { + return (int) ($name === $unit ? $value : $this->$name); + }, $dateUnits)); + } + + $units = ['hour', 'minute', 'second', 'micro']; + if ($unit === 'millisecond' || $unit === 'milli') { + $value *= 1000; + $unit = 'micro'; + } elseif ($unit === 'microsecond') { + $unit = 'micro'; + } + + return $this->setTime(...array_map(function ($name) use ($unit, $value) { + return (int) ($name === $unit ? $value : $this->$name); + }, $units)); + } + + /** + * Returns standardized singular of a given singular/plural unit name (in English). + * + * @param string $unit + * + * @return string + */ + public static function singularUnit(string $unit): string + { + $unit = rtrim(mb_strtolower($unit), 's'); + + if ($unit === 'centurie') { + return 'century'; + } + + if ($unit === 'millennia') { + return 'millennium'; + } + + return $unit; + } + + /** + * Returns standardized plural of a given singular/plural unit name (in English). + * + * @param string $unit + * + * @return string + */ + public static function pluralUnit(string $unit): string + { + $unit = rtrim(strtolower($unit), 's'); + + if ($unit === 'century') { + return 'centuries'; + } + + if ($unit === 'millennium' || $unit === 'millennia') { + return 'millennia'; + } + + return "{$unit}s"; + } + + protected function executeCallable($macro, ...$parameters) + { + if ($macro instanceof Closure) { + $boundMacro = @$macro->bindTo($this, static::class) ?: @$macro->bindTo(null, static::class); + + return ($boundMacro ?: $macro)(...$parameters); + } + + return $macro(...$parameters); + } + + protected function executeCallableWithContext($macro, ...$parameters) + { + return static::bindMacroContext($this, function () use (&$macro, &$parameters) { + return $this->executeCallable($macro, ...$parameters); + }); + } + + protected static function getGenericMacros() + { + foreach (static::$globalGenericMacros as $list) { + foreach ($list as $macro) { + yield $macro; + } + } + } + + /** + * Dynamically handle calls to the class. + * + * @param string $method magic method name called + * @param array $parameters parameters list + * + * @throws UnknownMethodException|BadMethodCallException|ReflectionException|Throwable + * + * @return mixed + */ + public function __call($method, $parameters) + { + $diffSizes = [ + // @mode diffForHumans + 'short' => true, + // @mode diffForHumans + 'long' => false, + ]; + $diffSyntaxModes = [ + // @call diffForHumans + 'Absolute' => CarbonInterface::DIFF_ABSOLUTE, + // @call diffForHumans + 'Relative' => CarbonInterface::DIFF_RELATIVE_AUTO, + // @call diffForHumans + 'RelativeToNow' => CarbonInterface::DIFF_RELATIVE_TO_NOW, + // @call diffForHumans + 'RelativeToOther' => CarbonInterface::DIFF_RELATIVE_TO_OTHER, + ]; + $sizePattern = implode('|', array_keys($diffSizes)); + $syntaxPattern = implode('|', array_keys($diffSyntaxModes)); + + if (preg_match("/^(?$sizePattern)(?$syntaxPattern)DiffForHumans$/", $method, $match)) { + $dates = array_filter($parameters, function ($parameter) { + return $parameter instanceof DateTimeInterface; + }); + $other = null; + + if (\count($dates)) { + $key = key($dates); + $other = current($dates); + array_splice($parameters, $key, 1); + } + + return $this->diffForHumans($other, $diffSyntaxModes[$match['syntax']], $diffSizes[$match['size']], ...$parameters); + } + + $roundedValue = $this->callRoundMethod($method, $parameters); + + if ($roundedValue !== null) { + return $roundedValue; + } + + $unit = rtrim($method, 's'); + + if (str_starts_with($unit, 'is')) { + $word = substr($unit, 2); + + if (\in_array($word, static::$days, true)) { + return $this->isDayOfWeek($word); + } + + switch ($word) { + // @call is Check if the current instance has UTC timezone. (Both isUtc and isUTC cases are valid.) + case 'Utc': + case 'UTC': + return $this->utc; + // @call is Check if the current instance has non-UTC timezone. + case 'Local': + return $this->local; + // @call is Check if the current instance is a valid date. + case 'Valid': + return $this->year !== 0; + // @call is Check if the current instance is in a daylight saving time. + case 'DST': + return $this->dst; + } + } + + $action = substr($unit, 0, 3); + $overflow = null; + + if ($action === 'set') { + $unit = strtolower(substr($unit, 3)); + } + + if (\in_array($unit, static::$units, true)) { + return $this->setUnit($unit, ...$parameters); + } + + if ($action === 'add' || $action === 'sub') { + $unit = substr($unit, 3); + + if (str_starts_with($unit, 'Real')) { + $unit = static::singularUnit(substr($unit, 4)); + + return $this->{"{$action}RealUnit"}($unit, ...$parameters); + } + + if (preg_match('/^(Month|Quarter|Year|Decade|Century|Centurie|Millennium|Millennia)s?(No|With|Without|WithNo)Overflow$/', $unit, $match)) { + $unit = $match[1]; + $overflow = $match[2] === 'With'; + } + + $unit = static::singularUnit($unit); + } + + if (static::isModifiableUnit($unit)) { + return $this->{"{$action}Unit"}($unit, $parameters[0] ?? 1, $overflow); + } + + $sixFirstLetters = substr($unit, 0, 6); + $factor = -1; + + if ($sixFirstLetters === 'isLast') { + $sixFirstLetters = 'isNext'; + $factor = 1; + } + + if ($sixFirstLetters === 'isNext') { + $lowerUnit = strtolower(substr($unit, 6)); + + if (static::isModifiableUnit($lowerUnit)) { + return $this->copy()->addUnit($lowerUnit, $factor, false)->isSameUnit($lowerUnit, ...$parameters); + } + } + + if ($sixFirstLetters === 'isSame') { + try { + return $this->isSameUnit(strtolower(substr($unit, 6)), ...$parameters); + } catch (BadComparisonUnitException $exception) { + // Try next + } + } + + if (str_starts_with($unit, 'isCurrent')) { + try { + return $this->isCurrentUnit(strtolower(substr($unit, 9))); + } catch (BadComparisonUnitException | BadMethodCallException $exception) { + // Try next + } + } + + if (str_ends_with($method, 'Until')) { + try { + $unit = static::singularUnit(substr($method, 0, -5)); + + return $this->range($parameters[0] ?? $this, $parameters[1] ?? 1, $unit); + } catch (InvalidArgumentException $exception) { + // Try macros + } + } + + return static::bindMacroContext($this, function () use (&$method, &$parameters) { + $macro = $this->getLocalMacro($method); + + if (!$macro) { + foreach ([$this->localGenericMacros ?: [], static::getGenericMacros()] as $list) { + foreach ($list as $callback) { + try { + return $this->executeCallable($callback, $method, ...$parameters); + } catch (BadMethodCallException $exception) { + continue; + } + } + } + + if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { + throw new UnknownMethodException($method); + } + + return null; + } + + return $this->executeCallable($macro, ...$parameters); + }); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php new file mode 100644 index 00000000000..5acc6f5c7ef --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/DeprecatedProperties.php @@ -0,0 +1,61 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +trait DeprecatedProperties +{ + /** + * the day of week in current locale LC_TIME + * + * @var string + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat('MMM') instead. + * Deprecated since 2.55.0 + */ + public $localeDayOfWeek; + + /** + * the abbreviated day of week in current locale LC_TIME + * + * @var string + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat('dddd') instead. + * Deprecated since 2.55.0 + */ + public $shortLocaleDayOfWeek; + + /** + * the month in current locale LC_TIME + * + * @var string + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat('ddd') instead. + * Deprecated since 2.55.0 + */ + public $localeMonth; + + /** + * the abbreviated month in current locale LC_TIME + * + * @var string + * + * @deprecated It uses OS language package and strftime() which is deprecated since PHP 8.1. + * Use ->isoFormat('MMMM') instead. + * Deprecated since 2.55.0 + */ + public $shortLocaleMonth; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php new file mode 100644 index 00000000000..e7045dc85b6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Difference.php @@ -0,0 +1,1169 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; +use Carbon\CarbonInterface; +use Carbon\CarbonInterval; +use Carbon\CarbonPeriod; +use Carbon\Translator; +use Closure; +use DateInterval; +use DateTimeInterface; +use ReturnTypeWillChange; + +/** + * Trait Difference. + * + * Depends on the following methods: + * + * @method bool lessThan($date) + * @method static copy() + * @method static resolveCarbon($date = null) + * @method static Translator translator() + */ +trait Difference +{ + /** + * @codeCoverageIgnore + * + * @param CarbonInterval $diff + */ + protected static function fixNegativeMicroseconds(CarbonInterval $diff) + { + if ($diff->s !== 0 || $diff->i !== 0 || $diff->h !== 0 || $diff->d !== 0 || $diff->m !== 0 || $diff->y !== 0) { + $diff->f = (round($diff->f * 1000000) + 1000000) / 1000000; + $diff->s--; + + if ($diff->s < 0) { + $diff->s += 60; + $diff->i--; + + if ($diff->i < 0) { + $diff->i += 60; + $diff->h--; + + if ($diff->h < 0) { + $diff->h += 24; + $diff->d--; + + if ($diff->d < 0) { + $diff->d += 30; + $diff->m--; + + if ($diff->m < 0) { + $diff->m += 12; + $diff->y--; + } + } + } + } + } + + return; + } + + $diff->f *= -1; + $diff->invert(); + } + + /** + * @param DateInterval $diff + * @param bool $absolute + * + * @return CarbonInterval + */ + protected static function fixDiffInterval(DateInterval $diff, $absolute) + { + $diff = CarbonInterval::instance($diff); + + // Work-around for https://bugs.php.net/bug.php?id=77145 + // @codeCoverageIgnoreStart + if ($diff->f > 0 && $diff->y === -1 && $diff->m === 11 && $diff->d >= 27 && $diff->h === 23 && $diff->i === 59 && $diff->s === 59) { + $diff->y = 0; + $diff->m = 0; + $diff->d = 0; + $diff->h = 0; + $diff->i = 0; + $diff->s = 0; + $diff->f = (1000000 - round($diff->f * 1000000)) / 1000000; + $diff->invert(); + } elseif ($diff->f < 0) { + static::fixNegativeMicroseconds($diff); + } + // @codeCoverageIgnoreEnd + + if ($absolute && $diff->invert) { + $diff->invert(); + } + + return $diff; + } + + /** + * Get the difference as a DateInterval instance. + * Return relative interval (negative if $absolute flag is not set to true and the given date is before + * current one). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return DateInterval + */ + #[ReturnTypeWillChange] + public function diff($date = null, $absolute = false) + { + $other = $this->resolveCarbon($date); + + // Work-around for https://bugs.php.net/bug.php?id=81458 + // It was initially introduced for https://bugs.php.net/bug.php?id=80998 + // The very specific case of 80998 was fixed in PHP 8.1beta3, but it introduced 81458 + // So we still need to keep this for now + // @codeCoverageIgnoreStart + if (version_compare(PHP_VERSION, '8.1.0-dev', '>=') && $other->tz !== $this->tz) { + $other = $other->avoidMutation()->tz($this->tz); + } + // @codeCoverageIgnoreEnd + + return parent::diff($other, (bool) $absolute); + } + + /** + * Get the difference as a CarbonInterval instance. + * Return relative interval (negative if $absolute flag is not set to true and the given date is before + * current one). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return CarbonInterval + */ + public function diffAsCarbonInterval($date = null, $absolute = true) + { + return static::fixDiffInterval($this->diff($this->resolveCarbon($date), $absolute), $absolute); + } + + /** + * Get the difference in years + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInYears($date = null, $absolute = true) + { + return (int) $this->diff($this->resolveCarbon($date), $absolute)->format('%r%y'); + } + + /** + * Get the difference in quarters rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInQuarters($date = null, $absolute = true) + { + return (int) ($this->diffInMonths($date, $absolute) / static::MONTHS_PER_QUARTER); + } + + /** + * Get the difference in months rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMonths($date = null, $absolute = true) + { + $date = $this->resolveCarbon($date); + + return $this->diffInYears($date, $absolute) * static::MONTHS_PER_YEAR + (int) $this->diff($date, $absolute)->format('%r%m'); + } + + /** + * Get the difference in weeks rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeeks($date = null, $absolute = true) + { + return (int) ($this->diffInDays($date, $absolute) / static::DAYS_PER_WEEK); + } + + /** + * Get the difference in days rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInDays($date = null, $absolute = true) + { + return $this->getIntervalDayDiff($this->diff($this->resolveCarbon($date), $absolute)); + } + + /** + * Get the difference in days using a filter closure rounded down. + * + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInDaysFiltered(Closure $callback, $date = null, $absolute = true) + { + return $this->diffFiltered(CarbonInterval::day(), $callback, $date, $absolute); + } + + /** + * Get the difference in hours using a filter closure rounded down. + * + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInHoursFiltered(Closure $callback, $date = null, $absolute = true) + { + return $this->diffFiltered(CarbonInterval::hour(), $callback, $date, $absolute); + } + + /** + * Get the difference by the given interval using a filter closure. + * + * @param CarbonInterval $ci An interval to traverse by + * @param Closure $callback + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffFiltered(CarbonInterval $ci, Closure $callback, $date = null, $absolute = true) + { + $start = $this; + $end = $this->resolveCarbon($date); + $inverse = false; + + if ($end < $start) { + $start = $end; + $end = $this; + $inverse = true; + } + + $options = CarbonPeriod::EXCLUDE_END_DATE | ($this->isMutable() ? 0 : CarbonPeriod::IMMUTABLE); + $diff = $ci->toPeriod($start, $end, $options)->filter($callback)->count(); + + return $inverse && !$absolute ? -$diff : $diff; + } + + /** + * Get the difference in weekdays rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeekdays($date = null, $absolute = true) + { + return $this->diffInDaysFiltered(function (CarbonInterface $date) { + return $date->isWeekday(); + }, $date, $absolute); + } + + /** + * Get the difference in weekend days using a filter rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInWeekendDays($date = null, $absolute = true) + { + return $this->diffInDaysFiltered(function (CarbonInterface $date) { + return $date->isWeekend(); + }, $date, $absolute); + } + + /** + * Get the difference in hours rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInHours($date = null, $absolute = true) + { + return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR); + } + + /** + * Get the difference in hours rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealHours($date = null, $absolute = true) + { + return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE / static::MINUTES_PER_HOUR); + } + + /** + * Get the difference in minutes rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMinutes($date = null, $absolute = true) + { + return (int) ($this->diffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE); + } + + /** + * Get the difference in minutes rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMinutes($date = null, $absolute = true) + { + return (int) ($this->diffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE); + } + + /** + * Get the difference in seconds rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInSeconds($date = null, $absolute = true) + { + $diff = $this->diff($date); + + if ($diff->days === 0) { + $diff = static::fixDiffInterval($diff, $absolute); + } + + $value = (((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + + $diff->h) * static::MINUTES_PER_HOUR + + $diff->i) * static::SECONDS_PER_MINUTE + + $diff->s; + + return $absolute || !$diff->invert ? $value : -$value; + } + + /** + * Get the difference in microseconds. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMicroseconds($date = null, $absolute = true) + { + $diff = $this->diff($date); + $value = (int) round(((((($diff->m || $diff->y ? $diff->days : $diff->d) * static::HOURS_PER_DAY) + + $diff->h) * static::MINUTES_PER_HOUR + + $diff->i) * static::SECONDS_PER_MINUTE + + ($diff->f + $diff->s)) * static::MICROSECONDS_PER_SECOND); + + return $absolute || !$diff->invert ? $value : -$value; + } + + /** + * Get the difference in milliseconds rounded down. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInMilliseconds($date = null, $absolute = true) + { + return (int) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND); + } + + /** + * Get the difference in seconds using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealSeconds($date = null, $absolute = true) + { + /** @var CarbonInterface $date */ + $date = $this->resolveCarbon($date); + $value = $date->getTimestamp() - $this->getTimestamp(); + + return $absolute ? abs($value) : $value; + } + + /** + * Get the difference in microseconds using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMicroseconds($date = null, $absolute = true) + { + /** @var CarbonInterface $date */ + $date = $this->resolveCarbon($date); + $value = ($date->timestamp - $this->timestamp) * static::MICROSECONDS_PER_SECOND + + $date->micro - $this->micro; + + return $absolute ? abs($value) : $value; + } + + /** + * Get the difference in milliseconds rounded down using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return int + */ + public function diffInRealMilliseconds($date = null, $absolute = true) + { + return (int) ($this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_MILLISECOND); + } + + /** + * Get the difference in seconds as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInSeconds($date = null, $absolute = true) + { + return (float) ($this->diffInMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND); + } + + /** + * Get the difference in minutes as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInMinutes($date = null, $absolute = true) + { + return $this->floatDiffInSeconds($date, $absolute) / static::SECONDS_PER_MINUTE; + } + + /** + * Get the difference in hours as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInHours($date = null, $absolute = true) + { + return $this->floatDiffInMinutes($date, $absolute) / static::MINUTES_PER_HOUR; + } + + /** + * Get the difference in days as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInDays($date = null, $absolute = true) + { + $hoursDiff = $this->floatDiffInHours($date, $absolute); + $interval = $this->diff($date, $absolute); + + if ($interval->y === 0 && $interval->m === 0 && $interval->d === 0) { + return $hoursDiff / static::HOURS_PER_DAY; + } + + $daysDiff = $this->getIntervalDayDiff($interval); + + return $daysDiff + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY; + } + + /** + * Get the difference in weeks as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInWeeks($date = null, $absolute = true) + { + return $this->floatDiffInDays($date, $absolute) / static::DAYS_PER_WEEK; + } + + /** + * Get the difference in months as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInMonths($date = null, $absolute = true) + { + $start = $this; + $end = $this->resolveCarbon($date); + $ascending = ($start <= $end); + $sign = $absolute || $ascending ? 1 : -1; + if (!$ascending) { + [$start, $end] = [$end, $start]; + } + $monthsDiff = $start->diffInMonths($end); + /** @var Carbon|CarbonImmutable $floorEnd */ + $floorEnd = $start->avoidMutation()->addMonths($monthsDiff); + + if ($floorEnd >= $end) { + return $sign * $monthsDiff; + } + + /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */ + $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth(); + + if ($startOfMonthAfterFloorEnd > $end) { + return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInMonth); + } + + return $sign * ($monthsDiff + $floorEnd->floatDiffInDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInDays($end) / $end->daysInMonth); + } + + /** + * Get the difference in year as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInYears($date = null, $absolute = true) + { + $start = $this; + $end = $this->resolveCarbon($date); + $ascending = ($start <= $end); + $sign = $absolute || $ascending ? 1 : -1; + if (!$ascending) { + [$start, $end] = [$end, $start]; + } + $yearsDiff = $start->diffInYears($end); + /** @var Carbon|CarbonImmutable $floorEnd */ + $floorEnd = $start->avoidMutation()->addYears($yearsDiff); + + if ($floorEnd >= $end) { + return $sign * $yearsDiff; + } + + /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */ + $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear(); + + if ($startOfYearAfterFloorEnd > $end) { + return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($end) / $floorEnd->daysInYear); + } + + return $sign * ($yearsDiff + $floorEnd->floatDiffInDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInDays($end) / $end->daysInYear); + } + + /** + * Get the difference in seconds as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealSeconds($date = null, $absolute = true) + { + return $this->diffInRealMicroseconds($date, $absolute) / static::MICROSECONDS_PER_SECOND; + } + + /** + * Get the difference in minutes as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealMinutes($date = null, $absolute = true) + { + return $this->floatDiffInRealSeconds($date, $absolute) / static::SECONDS_PER_MINUTE; + } + + /** + * Get the difference in hours as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealHours($date = null, $absolute = true) + { + return $this->floatDiffInRealMinutes($date, $absolute) / static::MINUTES_PER_HOUR; + } + + /** + * Get the difference in days as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealDays($date = null, $absolute = true) + { + $date = $this->resolveUTC($date); + $utc = $this->avoidMutation()->utc(); + $hoursDiff = $utc->floatDiffInRealHours($date, $absolute); + + return ($hoursDiff < 0 ? -1 : 1) * $utc->diffInDays($date) + fmod($hoursDiff, static::HOURS_PER_DAY) / static::HOURS_PER_DAY; + } + + /** + * Get the difference in weeks as float (microsecond-precision). + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealWeeks($date = null, $absolute = true) + { + return $this->floatDiffInRealDays($date, $absolute) / static::DAYS_PER_WEEK; + } + + /** + * Get the difference in months as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealMonths($date = null, $absolute = true) + { + $start = $this; + $end = $this->resolveCarbon($date); + $ascending = ($start <= $end); + $sign = $absolute || $ascending ? 1 : -1; + if (!$ascending) { + [$start, $end] = [$end, $start]; + } + $monthsDiff = $start->diffInMonths($end); + /** @var Carbon|CarbonImmutable $floorEnd */ + $floorEnd = $start->avoidMutation()->addMonths($monthsDiff); + + if ($floorEnd >= $end) { + return $sign * $monthsDiff; + } + + /** @var Carbon|CarbonImmutable $startOfMonthAfterFloorEnd */ + $startOfMonthAfterFloorEnd = $floorEnd->avoidMutation()->addMonth()->startOfMonth(); + + if ($startOfMonthAfterFloorEnd > $end) { + return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInMonth); + } + + return $sign * ($monthsDiff + $floorEnd->floatDiffInRealDays($startOfMonthAfterFloorEnd) / $floorEnd->daysInMonth + $startOfMonthAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInMonth); + } + + /** + * Get the difference in year as float (microsecond-precision) using timestamps. + * + * @param \Carbon\CarbonInterface|\DateTimeInterface|string|null $date + * @param bool $absolute Get the absolute of the difference + * + * @return float + */ + public function floatDiffInRealYears($date = null, $absolute = true) + { + $start = $this; + $end = $this->resolveCarbon($date); + $ascending = ($start <= $end); + $sign = $absolute || $ascending ? 1 : -1; + if (!$ascending) { + [$start, $end] = [$end, $start]; + } + $yearsDiff = $start->diffInYears($end); + /** @var Carbon|CarbonImmutable $floorEnd */ + $floorEnd = $start->avoidMutation()->addYears($yearsDiff); + + if ($floorEnd >= $end) { + return $sign * $yearsDiff; + } + + /** @var Carbon|CarbonImmutable $startOfYearAfterFloorEnd */ + $startOfYearAfterFloorEnd = $floorEnd->avoidMutation()->addYear()->startOfYear(); + + if ($startOfYearAfterFloorEnd > $end) { + return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($end) / $floorEnd->daysInYear); + } + + return $sign * ($yearsDiff + $floorEnd->floatDiffInRealDays($startOfYearAfterFloorEnd) / $floorEnd->daysInYear + $startOfYearAfterFloorEnd->floatDiffInRealDays($end) / $end->daysInYear); + } + + /** + * The number of seconds since midnight. + * + * @return int + */ + public function secondsSinceMidnight() + { + return $this->diffInSeconds($this->avoidMutation()->startOfDay()); + } + + /** + * The number of seconds until 23:59:59. + * + * @return int + */ + public function secondsUntilEndOfDay() + { + return $this->diffInSeconds($this->avoidMutation()->endOfDay()); + } + + /** + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @example + * ``` + * echo Carbon::tomorrow()->diffForHumans() . "\n"; + * echo Carbon::tomorrow()->diffForHumans(['parts' => 2]) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(['parts' => 3, 'join' => true]) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday()) . "\n"; + * echo Carbon::tomorrow()->diffForHumans(Carbon::yesterday(), ['short' => true]) . "\n"; + * ``` + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'skip' entry, list of units to skip (array of strings or a single string, + * ` it can be the unit name (singular or plural) or its shortcut + * ` (y, m, w, d, h, min, s, ms, µs). + * - 'aUnit' entry, prefer "an hour" over "1 hour" if true + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * - 'minimumUnit' entry determines the smallest unit of time to display can be long or + * ` short form of the units, e.g. 'hour' or 'h' (default value: s) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function diffForHumans($other = null, $syntax = null, $short = false, $parts = 1, $options = null) + { + /* @var CarbonInterface $this */ + if (\is_array($other)) { + $other['syntax'] = \array_key_exists('syntax', $other) ? $other['syntax'] : $syntax; + $syntax = $other; + $other = $syntax['other'] ?? null; + } + + $intSyntax = &$syntax; + if (\is_array($syntax)) { + $syntax['syntax'] = $syntax['syntax'] ?? null; + $intSyntax = &$syntax['syntax']; + } + $intSyntax = (int) ($intSyntax ?? static::DIFF_RELATIVE_AUTO); + $intSyntax = $intSyntax === static::DIFF_RELATIVE_AUTO && $other === null ? static::DIFF_RELATIVE_TO_NOW : $intSyntax; + + $parts = min(7, max(1, (int) $parts)); + + return $this->diffAsCarbonInterval($other, false) + ->setLocalTranslator($this->getLocalTranslator()) + ->forHumans($syntax, (bool) $short, $parts, $options ?? $this->localHumanDiffOptions ?? static::getHumanDiffOptions()); + } + + /** + * @alias diffForHumans + * + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function from($other = null, $syntax = null, $short = false, $parts = 1, $options = null) + { + return $this->diffForHumans($other, $syntax, $short, $parts, $options); + } + + /** + * @alias diffForHumans + * + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + */ + public function since($other = null, $syntax = null, $short = false, $parts = 1, $options = null) + { + return $this->diffForHumans($other, $syntax, $short, $parts, $options); + } + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given (or now if null given) to current instance. + * + * When comparing a value in the past to default now: + * 1 hour from now + * 5 months from now + * + * When comparing a value in the future to default now: + * 1 hour ago + * 5 months ago + * + * When comparing a value in the past to another value: + * 1 hour after + * 5 months after + * + * When comparing a value in the future to another value: + * 1 hour before + * 5 months before + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function to($other = null, $syntax = null, $short = false, $parts = 1, $options = null) + { + if (!$syntax && !$other) { + $syntax = CarbonInterface::DIFF_RELATIVE_TO_NOW; + } + + return $this->resolveCarbon($other)->diffForHumans($this, $syntax, $short, $parts, $options); + } + + /** + * @alias to + * + * Get the difference in a human readable format in the current locale from an other + * instance given (or now if null given) to current instance. + * + * @param Carbon|\DateTimeInterface|string|array|null $other if array passed, will be used as parameters array, see $syntax below; + * if null passed, now will be used as comparison reference; + * if any other type, it will be converted to date and used as reference. + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * - 'other' entry (see above) + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function until($other = null, $syntax = null, $short = false, $parts = 1, $options = null) + { + return $this->to($other, $syntax, $short, $parts, $options); + } + + /** + * Get the difference in a human readable format in the current locale from current + * instance to now. + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single unit) + * @param int $options human diff options + * + * @return string + */ + public function fromNow($syntax = null, $short = false, $parts = 1, $options = null) + { + $other = null; + + if ($syntax instanceof DateTimeInterface) { + [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null); + } + + return $this->from($other, $syntax, $short, $parts, $options); + } + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given to now + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single part) + * @param int $options human diff options + * + * @return string + */ + public function toNow($syntax = null, $short = false, $parts = 1, $options = null) + { + return $this->to(null, $syntax, $short, $parts, $options); + } + + /** + * Get the difference in a human readable format in the current locale from an other + * instance given to now + * + * @param int|array $syntax if array passed, parameters will be extracted from it, the array may contains: + * - 'syntax' entry (see below) + * - 'short' entry (see below) + * - 'parts' entry (see below) + * - 'options' entry (see below) + * - 'join' entry determines how to join multiple parts of the string + * ` - if $join is a string, it's used as a joiner glue + * ` - if $join is a callable/closure, it get the list of string and should return a string + * ` - if $join is an array, the first item will be the default glue, and the second item + * ` will be used instead of the glue for the last item + * ` - if $join is true, it will be guessed from the locale ('list' translation file entry) + * ` - if $join is missing, a space will be used as glue + * if int passed, it add modifiers: + * Possible values: + * - CarbonInterface::DIFF_ABSOLUTE no modifiers + * - CarbonInterface::DIFF_RELATIVE_TO_NOW add ago/from now modifier + * - CarbonInterface::DIFF_RELATIVE_TO_OTHER add before/after modifier + * Default value: CarbonInterface::DIFF_ABSOLUTE + * @param bool $short displays short format of time units + * @param int $parts maximum number of parts to display (default value: 1: single part) + * @param int $options human diff options + * + * @return string + */ + public function ago($syntax = null, $short = false, $parts = 1, $options = null) + { + $other = null; + + if ($syntax instanceof DateTimeInterface) { + [$other, $syntax, $short, $parts, $options] = array_pad(\func_get_args(), 5, null); + } + + return $this->from($other, $syntax, $short, $parts, $options); + } + + /** + * Get the difference in a human readable format in the current locale from current instance to an other + * instance given (or now if null given). + * + * @return string + */ + public function timespan($other = null, $timezone = null) + { + if (!$other instanceof DateTimeInterface) { + $other = static::parse($other, $timezone); + } + + return $this->diffForHumans($other, [ + 'join' => ', ', + 'syntax' => CarbonInterface::DIFF_ABSOLUTE, + 'options' => CarbonInterface::NO_ZERO_DIFF, + 'parts' => -1, + ]); + } + + /** + * Returns either day of week + time (e.g. "Last Friday at 3:30 PM") if reference time is within 7 days, + * or a calendar date (e.g. "10/29/2017") otherwise. + * + * Language, date and time formats will change according to the current locale. + * + * @param Carbon|\DateTimeInterface|string|null $referenceTime + * @param array $formats + * + * @return string + */ + public function calendar($referenceTime = null, array $formats = []) + { + /** @var CarbonInterface $current */ + $current = $this->avoidMutation()->startOfDay(); + /** @var CarbonInterface $other */ + $other = $this->resolveCarbon($referenceTime)->avoidMutation()->setTimezone($this->getTimezone())->startOfDay(); + $diff = $other->diffInDays($current, false); + $format = $diff < -6 ? 'sameElse' : ( + $diff < -1 ? 'lastWeek' : ( + $diff < 0 ? 'lastDay' : ( + $diff < 1 ? 'sameDay' : ( + $diff < 2 ? 'nextDay' : ( + $diff < 7 ? 'nextWeek' : 'sameElse' + ) + ) + ) + ) + ); + $format = array_merge($this->getCalendarFormats(), $formats)[$format]; + if ($format instanceof Closure) { + $format = $format($current, $other) ?? ''; + } + + return $this->isoFormat((string) $format); + } + + private function getIntervalDayDiff(DateInterval $interval): int + { + $daysDiff = (int) $interval->format('%a'); + $sign = $interval->format('%r') === '-' ? -1 : 1; + + if (\is_int($interval->days) && + $interval->y === 0 && + $interval->m === 0 && + version_compare(PHP_VERSION, '8.1.0-dev', '<') && + abs($interval->d - $daysDiff) === 1 + ) { + $daysDiff = abs($interval->d); // @codeCoverageIgnore + } + + return $daysDiff * $sign; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php new file mode 100644 index 00000000000..4cd66b676f1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalRounding.php @@ -0,0 +1,57 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterval; +use Carbon\Exceptions\InvalidIntervalException; +use DateInterval; + +/** + * Trait to call rounding methods to interval or the interval of a period. + */ +trait IntervalRounding +{ + protected function callRoundMethod(string $method, array $parameters) + { + $action = substr($method, 0, 4); + + if ($action !== 'ceil') { + $action = substr($method, 0, 5); + } + + if (\in_array($action, ['round', 'floor', 'ceil'])) { + return $this->{$action.'Unit'}(substr($method, \strlen($action)), ...$parameters); + } + + return null; + } + + protected function roundWith($precision, $function) + { + $unit = 'second'; + + if ($precision instanceof DateInterval) { + $precision = (string) CarbonInterval::instance($precision); + } + + if (\is_string($precision) && preg_match('/^\s*(?\d+)?\s*(?\w+)(?\W.*)?$/', $precision, $match)) { + if (trim($match['other'] ?? '') !== '') { + throw new InvalidIntervalException('Rounding is only possible with single unit intervals.'); + } + + $precision = (int) ($match['precision'] ?: 1); + $unit = $match['unit']; + } + + return $this->roundUnit($unit, $precision, $function); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php new file mode 100644 index 00000000000..82d7c32649b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/IntervalStep.php @@ -0,0 +1,93 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; +use Carbon\CarbonInterface; +use Closure; +use DateTimeImmutable; +use DateTimeInterface; + +trait IntervalStep +{ + /** + * Step to apply instead of a fixed interval to get the new date. + * + * @var Closure|null + */ + protected $step; + + /** + * Get the dynamic step in use. + * + * @return Closure + */ + public function getStep(): ?Closure + { + return $this->step; + } + + /** + * Set a step to apply instead of a fixed interval to get the new date. + * + * Or pass null to switch to fixed interval. + * + * @param Closure|null $step + */ + public function setStep(?Closure $step): void + { + $this->step = $step; + } + + /** + * Take a date and apply either the step if set, or the current interval else. + * + * The interval/step is applied negatively (typically subtraction instead of addition) if $negated is true. + * + * @param DateTimeInterface $dateTime + * @param bool $negated + * + * @return CarbonInterface + */ + public function convertDate(DateTimeInterface $dateTime, bool $negated = false): CarbonInterface + { + /** @var CarbonInterface $carbonDate */ + $carbonDate = $dateTime instanceof CarbonInterface ? $dateTime : $this->resolveCarbon($dateTime); + + if ($this->step) { + return $carbonDate->setDateTimeFrom(($this->step)($carbonDate->avoidMutation(), $negated)); + } + + if ($negated) { + return $carbonDate->rawSub($this); + } + + return $carbonDate->rawAdd($this); + } + + /** + * Convert DateTimeImmutable instance to CarbonImmutable instance and DateTime instance to Carbon instance. + * + * @param DateTimeInterface $dateTime + * + * @return Carbon|CarbonImmutable + */ + private function resolveCarbon(DateTimeInterface $dateTime) + { + if ($dateTime instanceof DateTimeImmutable) { + return CarbonImmutable::instance($dateTime); + } + + return Carbon::instance($dateTime); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php new file mode 100644 index 00000000000..bd641743255 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Localization.php @@ -0,0 +1,824 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterface; +use Carbon\Exceptions\InvalidTypeException; +use Carbon\Exceptions\NotLocaleAwareException; +use Carbon\Language; +use Carbon\Translator; +use Carbon\TranslatorStrongTypeInterface; +use Closure; +use Symfony\Component\Translation\TranslatorBagInterface; +use Symfony\Component\Translation\TranslatorInterface; +use Symfony\Contracts\Translation\LocaleAwareInterface; +use Symfony\Contracts\Translation\TranslatorInterface as ContractsTranslatorInterface; + +if (interface_exists('Symfony\\Contracts\\Translation\\TranslatorInterface') && + !interface_exists('Symfony\\Component\\Translation\\TranslatorInterface') +) { + class_alias( + 'Symfony\\Contracts\\Translation\\TranslatorInterface', + 'Symfony\\Component\\Translation\\TranslatorInterface' + ); +} + +/** + * Trait Localization. + * + * Embed default and locale translators and translation base methods. + */ +trait Localization +{ + /** + * Default translator. + * + * @var \Symfony\Component\Translation\TranslatorInterface + */ + protected static $translator; + + /** + * Specific translator of the current instance. + * + * @var \Symfony\Component\Translation\TranslatorInterface + */ + protected $localTranslator; + + /** + * Options for diffForHumans(). + * + * @var int + */ + protected static $humanDiffOptions = CarbonInterface::NO_ZERO_DIFF; + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOptions + */ + public static function setHumanDiffOptions($humanDiffOptions) + { + static::$humanDiffOptions = $humanDiffOptions; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOption + */ + public static function enableHumanDiffOption($humanDiffOption) + { + static::$humanDiffOptions = static::getHumanDiffOptions() | $humanDiffOption; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * @param int $humanDiffOption + */ + public static function disableHumanDiffOption($humanDiffOption) + { + static::$humanDiffOptions = static::getHumanDiffOptions() & ~$humanDiffOption; + } + + /** + * Return default humanDiff() options (merged flags as integer). + * + * @return int + */ + public static function getHumanDiffOptions() + { + return static::$humanDiffOptions; + } + + /** + * Get the default translator instance in use. + * + * @return \Symfony\Component\Translation\TranslatorInterface + */ + public static function getTranslator() + { + return static::translator(); + } + + /** + * Set the default translator instance to use. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * + * @return void + */ + public static function setTranslator(TranslatorInterface $translator) + { + static::$translator = $translator; + } + + /** + * Return true if the current instance has its own translator. + * + * @return bool + */ + public function hasLocalTranslator() + { + return isset($this->localTranslator); + } + + /** + * Get the translator of the current instance or the default if none set. + * + * @return \Symfony\Component\Translation\TranslatorInterface + */ + public function getLocalTranslator() + { + return $this->localTranslator ?: static::translator(); + } + + /** + * Set the translator for the current instance. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * + * @return $this + */ + public function setLocalTranslator(TranslatorInterface $translator) + { + $this->localTranslator = $translator; + + return $this; + } + + /** + * Returns raw translation message for a given key. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator the translator to use + * @param string $key key to find + * @param string|null $locale current locale used if null + * @param string|null $default default value if translation returns the key + * + * @return string + */ + public static function getTranslationMessageWith($translator, string $key, ?string $locale = null, ?string $default = null) + { + if (!($translator instanceof TranslatorBagInterface && $translator instanceof TranslatorInterface)) { + throw new InvalidTypeException( + 'Translator does not implement '.TranslatorInterface::class.' and '.TranslatorBagInterface::class.'. '. + (\is_object($translator) ? \get_class($translator) : \gettype($translator)).' has been given.' + ); + } + + if (!$locale && $translator instanceof LocaleAwareInterface) { + $locale = $translator->getLocale(); + } + + $result = self::getFromCatalogue($translator, $translator->getCatalogue($locale), $key); + + return $result === $key ? $default : $result; + } + + /** + * Returns raw translation message for a given key. + * + * @param string $key key to find + * @param string|null $locale current locale used if null + * @param string|null $default default value if translation returns the key + * @param \Symfony\Component\Translation\TranslatorInterface $translator an optional translator to use + * + * @return string + */ + public function getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null) + { + return static::getTranslationMessageWith($translator ?: $this->getLocalTranslator(), $key, $locale, $default); + } + + /** + * Translate using translation string or callback available. + * + * @param \Symfony\Component\Translation\TranslatorInterface $translator + * @param string $key + * @param array $parameters + * @param null $number + * + * @return string + */ + public static function translateWith(TranslatorInterface $translator, string $key, array $parameters = [], $number = null): string + { + $message = static::getTranslationMessageWith($translator, $key, null, $key); + if ($message instanceof Closure) { + return (string) $message(...array_values($parameters)); + } + + if ($number !== null) { + $parameters['%count%'] = $number; + } + if (isset($parameters['%count%'])) { + $parameters[':count'] = $parameters['%count%']; + } + + // @codeCoverageIgnoreStart + $choice = $translator instanceof ContractsTranslatorInterface + ? $translator->trans($key, $parameters) + : $translator->transChoice($key, $number, $parameters); + // @codeCoverageIgnoreEnd + + return (string) $choice; + } + + /** + * Translate using translation string or callback available. + * + * @param string $key + * @param array $parameters + * @param string|int|float|null $number + * @param \Symfony\Component\Translation\TranslatorInterface|null $translator + * @param bool $altNumbers + * + * @return string + */ + public function translate(string $key, array $parameters = [], $number = null, ?TranslatorInterface $translator = null, bool $altNumbers = false): string + { + $translation = static::translateWith($translator ?: $this->getLocalTranslator(), $key, $parameters, $number); + + if ($number !== null && $altNumbers) { + return str_replace($number, $this->translateNumber($number), $translation); + } + + return $translation; + } + + /** + * Returns the alternative number for a given integer if available in the current locale. + * + * @param int $number + * + * @return string + */ + public function translateNumber(int $number): string + { + $translateKey = "alt_numbers.$number"; + $symbol = $this->translate($translateKey); + + if ($symbol !== $translateKey) { + return $symbol; + } + + if ($number > 99 && $this->translate('alt_numbers.99') !== 'alt_numbers.99') { + $start = ''; + foreach ([10000, 1000, 100] as $exp) { + $key = "alt_numbers_pow.$exp"; + if ($number >= $exp && $number < $exp * 10 && ($pow = $this->translate($key)) !== $key) { + $unit = floor($number / $exp); + $number -= $unit * $exp; + $start .= ($unit > 1 ? $this->translate("alt_numbers.$unit") : '').$pow; + } + } + $result = ''; + while ($number) { + $chunk = $number % 100; + $result = $this->translate("alt_numbers.$chunk").$result; + $number = floor($number / 100); + } + + return "$start$result"; + } + + if ($number > 9 && $this->translate('alt_numbers.9') !== 'alt_numbers.9') { + $result = ''; + while ($number) { + $chunk = $number % 10; + $result = $this->translate("alt_numbers.$chunk").$result; + $number = floor($number / 10); + } + + return $result; + } + + return (string) $number; + } + + /** + * Translate a time string from a locale to an other. + * + * @param string $timeString date/time/duration string to translate (may also contain English) + * @param string|null $from input locale of the $timeString parameter (`Carbon::getLocale()` by default) + * @param string|null $to output locale of the result returned (`"en"` by default) + * @param int $mode specify what to translate with options: + * - CarbonInterface::TRANSLATE_ALL (default) + * - CarbonInterface::TRANSLATE_MONTHS + * - CarbonInterface::TRANSLATE_DAYS + * - CarbonInterface::TRANSLATE_UNITS + * - CarbonInterface::TRANSLATE_MERIDIEM + * You can use pipe to group: CarbonInterface::TRANSLATE_MONTHS | CarbonInterface::TRANSLATE_DAYS + * + * @return string + */ + public static function translateTimeString($timeString, $from = null, $to = null, $mode = CarbonInterface::TRANSLATE_ALL) + { + // Fallback source and destination locales + $from = $from ?: static::getLocale(); + $to = $to ?: 'en'; + + if ($from === $to) { + return $timeString; + } + + // Standardize apostrophe + $timeString = strtr($timeString, ['’' => "'"]); + + $fromTranslations = []; + $toTranslations = []; + + foreach (['from', 'to'] as $key) { + $language = $$key; + $translator = Translator::get($language); + $translations = $translator->getMessages(); + + if (!isset($translations[$language])) { + return $timeString; + } + + $translationKey = $key.'Translations'; + $messages = $translations[$language]; + $months = $messages['months'] ?? []; + $weekdays = $messages['weekdays'] ?? []; + $meridiem = $messages['meridiem'] ?? ['AM', 'PM']; + + if ($key === 'from') { + foreach (['months', 'weekdays'] as $variable) { + $list = $messages[$variable.'_standalone'] ?? null; + + if ($list) { + foreach ($$variable as $index => &$name) { + $name .= '|'.$messages[$variable.'_standalone'][$index]; + } + } + } + } + + $$translationKey = array_merge( + $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($months, 12, $timeString) : [], + $mode & CarbonInterface::TRANSLATE_MONTHS ? static::getTranslationArray($messages['months_short'] ?? [], 12, $timeString) : [], + $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($weekdays, 7, $timeString) : [], + $mode & CarbonInterface::TRANSLATE_DAYS ? static::getTranslationArray($messages['weekdays_short'] ?? [], 7, $timeString) : [], + $mode & CarbonInterface::TRANSLATE_DIFF ? static::translateWordsByKeys([ + 'diff_now', + 'diff_today', + 'diff_yesterday', + 'diff_tomorrow', + 'diff_before_yesterday', + 'diff_after_tomorrow', + ], $messages, $key) : [], + $mode & CarbonInterface::TRANSLATE_UNITS ? static::translateWordsByKeys([ + 'year', + 'month', + 'week', + 'day', + 'hour', + 'minute', + 'second', + ], $messages, $key) : [], + $mode & CarbonInterface::TRANSLATE_MERIDIEM ? array_map(function ($hour) use ($meridiem) { + if (\is_array($meridiem)) { + return $meridiem[$hour < 12 ? 0 : 1]; + } + + return $meridiem($hour, 0, false); + }, range(0, 23)) : [] + ); + } + + return substr(preg_replace_callback('/(?<=[\d\s+.\/,_-])('.implode('|', $fromTranslations).')(?=[\d\s+.\/,_-])/iu', function ($match) use ($fromTranslations, $toTranslations) { + [$chunk] = $match; + + foreach ($fromTranslations as $index => $word) { + if (preg_match("/^$word\$/iu", $chunk)) { + return $toTranslations[$index] ?? ''; + } + } + + return $chunk; // @codeCoverageIgnore + }, " $timeString "), 1, -1); + } + + /** + * Translate a time string from the current locale (`$date->locale()`) to an other. + * + * @param string $timeString time string to translate + * @param string|null $to output locale of the result returned ("en" by default) + * + * @return string + */ + public function translateTimeStringTo($timeString, $to = null) + { + return static::translateTimeString($timeString, $this->getTranslatorLocale(), $to); + } + + /** + * Get/set the locale for the current instance. + * + * @param string|null $locale + * @param string ...$fallbackLocales + * + * @return $this|string + */ + public function locale(string $locale = null, ...$fallbackLocales) + { + if ($locale === null) { + return $this->getTranslatorLocale(); + } + + if (!$this->localTranslator || $this->getTranslatorLocale($this->localTranslator) !== $locale) { + $translator = Translator::get($locale); + + if (!empty($fallbackLocales)) { + $translator->setFallbackLocales($fallbackLocales); + + foreach ($fallbackLocales as $fallbackLocale) { + $messages = Translator::get($fallbackLocale)->getMessages(); + + if (isset($messages[$fallbackLocale])) { + $translator->setMessages($fallbackLocale, $messages[$fallbackLocale]); + } + } + } + + $this->localTranslator = $translator; + } + + return $this; + } + + /** + * Get the current translator locale. + * + * @return string + */ + public static function getLocale() + { + return static::getLocaleAwareTranslator()->getLocale(); + } + + /** + * Set the current translator locale and indicate if the source locale file exists. + * Pass 'auto' as locale to use closest language from the current LC_TIME locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function setLocale($locale) + { + return static::getLocaleAwareTranslator()->setLocale($locale) !== false; + } + + /** + * Set the fallback locale. + * + * @see https://symfony.com/doc/current/components/translation.html#fallback-locales + * + * @param string $locale + */ + public static function setFallbackLocale($locale) + { + $translator = static::getTranslator(); + + if (method_exists($translator, 'setFallbackLocales')) { + $translator->setFallbackLocales([$locale]); + + if ($translator instanceof Translator) { + $preferredLocale = $translator->getLocale(); + $translator->setMessages($preferredLocale, array_replace_recursive( + $translator->getMessages()[$locale] ?? [], + Translator::get($locale)->getMessages()[$locale] ?? [], + $translator->getMessages($preferredLocale) + )); + } + } + } + + /** + * Get the fallback locale. + * + * @see https://symfony.com/doc/current/components/translation.html#fallback-locales + * + * @return string|null + */ + public static function getFallbackLocale() + { + $translator = static::getTranslator(); + + if (method_exists($translator, 'getFallbackLocales')) { + return $translator->getFallbackLocales()[0] ?? null; + } + + return null; + } + + /** + * Set the current locale to the given, execute the passed function, reset the locale to previous one, + * then return the result of the closure (or null if the closure was void). + * + * @param string $locale locale ex. en + * @param callable $func + * + * @return mixed + */ + public static function executeWithLocale($locale, $func) + { + $currentLocale = static::getLocale(); + $result = $func(static::setLocale($locale) ? static::getLocale() : false, static::translator()); + static::setLocale($currentLocale); + + return $result; + } + + /** + * Returns true if the given locale is internally supported and has short-units support. + * Support is considered enabled if either year, day or hour has a short variant translated. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasShortUnits($locale) + { + return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { + return ($newLocale && (($y = static::translateWith($translator, 'y')) !== 'y' && $y !== static::translateWith($translator, 'year'))) || ( + ($y = static::translateWith($translator, 'd')) !== 'd' && + $y !== static::translateWith($translator, 'day') + ) || ( + ($y = static::translateWith($translator, 'h')) !== 'h' && + $y !== static::translateWith($translator, 'hour') + ); + }); + } + + /** + * Returns true if the given locale is internally supported and has diff syntax support (ago, from now, before, after). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffSyntax($locale) + { + return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { + if (!$newLocale) { + return false; + } + + foreach (['ago', 'from_now', 'before', 'after'] as $key) { + if ($translator instanceof TranslatorBagInterface && + self::getFromCatalogue($translator, $translator->getCatalogue($newLocale), $key) instanceof Closure + ) { + continue; + } + + if ($translator->trans($key) === $key) { + return false; + } + } + + return true; + }); + } + + /** + * Returns true if the given locale is internally supported and has words for 1-day diff (just now, yesterday, tomorrow). + * Support is considered enabled if the 3 words are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffOneDayWords($locale) + { + return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { + return $newLocale && + $translator->trans('diff_now') !== 'diff_now' && + $translator->trans('diff_yesterday') !== 'diff_yesterday' && + $translator->trans('diff_tomorrow') !== 'diff_tomorrow'; + }); + } + + /** + * Returns true if the given locale is internally supported and has words for 2-days diff (before yesterday, after tomorrow). + * Support is considered enabled if the 2 words are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasDiffTwoDayWords($locale) + { + return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { + return $newLocale && + $translator->trans('diff_before_yesterday') !== 'diff_before_yesterday' && + $translator->trans('diff_after_tomorrow') !== 'diff_after_tomorrow'; + }); + } + + /** + * Returns true if the given locale is internally supported and has period syntax support (X times, every X, from X, to X). + * Support is considered enabled if the 4 sentences are translated in the given locale. + * + * @param string $locale locale ex. en + * + * @return bool + */ + public static function localeHasPeriodSyntax($locale) + { + return static::executeWithLocale($locale, function ($newLocale, TranslatorInterface $translator) { + return $newLocale && + $translator->trans('period_recurrences') !== 'period_recurrences' && + $translator->trans('period_interval') !== 'period_interval' && + $translator->trans('period_start_date') !== 'period_start_date' && + $translator->trans('period_end_date') !== 'period_end_date'; + }); + } + + /** + * Returns the list of internally available locales and already loaded custom locales. + * (It will ignore custom translator dynamic loading.) + * + * @return array + */ + public static function getAvailableLocales() + { + $translator = static::getLocaleAwareTranslator(); + + return $translator instanceof Translator + ? $translator->getAvailableLocales() + : [$translator->getLocale()]; + } + + /** + * Returns list of Language object for each available locale. This object allow you to get the ISO name, native + * name, region and variant of the locale. + * + * @return Language[] + */ + public static function getAvailableLocalesInfo() + { + $languages = []; + foreach (static::getAvailableLocales() as $id) { + $languages[$id] = new Language($id); + } + + return $languages; + } + + /** + * Initialize the default translator instance if necessary. + * + * @return \Symfony\Component\Translation\TranslatorInterface + */ + protected static function translator() + { + if (static::$translator === null) { + static::$translator = Translator::get(); + } + + return static::$translator; + } + + /** + * Get the locale of a given translator. + * + * If null or omitted, current local translator is used. + * If no local translator is in use, current global translator is used. + * + * @param null $translator + * + * @return string|null + */ + protected function getTranslatorLocale($translator = null): ?string + { + if (\func_num_args() === 0) { + $translator = $this->getLocalTranslator(); + } + + $translator = static::getLocaleAwareTranslator($translator); + + return $translator ? $translator->getLocale() : null; + } + + /** + * Throw an error if passed object is not LocaleAwareInterface. + * + * @param LocaleAwareInterface|null $translator + * + * @return LocaleAwareInterface|null + */ + protected static function getLocaleAwareTranslator($translator = null) + { + if (\func_num_args() === 0) { + $translator = static::translator(); + } + + if ($translator && !($translator instanceof LocaleAwareInterface || method_exists($translator, 'getLocale'))) { + throw new NotLocaleAwareException($translator); // @codeCoverageIgnore + } + + return $translator; + } + + /** + * @param mixed $translator + * @param \Symfony\Component\Translation\MessageCatalogueInterface $catalogue + * + * @return mixed + */ + private static function getFromCatalogue($translator, $catalogue, string $id, string $domain = 'messages') + { + return $translator instanceof TranslatorStrongTypeInterface + ? $translator->getFromCatalogue($catalogue, $id, $domain) // @codeCoverageIgnore + : $catalogue->get($id, $domain); + } + + /** + * Return the word cleaned from its translation codes. + * + * @param string $word + * + * @return string + */ + private static function cleanWordFromTranslationString($word) + { + $word = str_replace([':count', '%count', ':time'], '', $word); + $word = strtr($word, ['’' => "'"]); + $word = preg_replace('/({\d+(,(\d+|Inf))?}|[\[\]]\d+(,(\d+|Inf))?[\[\]])/', '', $word); + + return trim($word); + } + + /** + * Translate a list of words. + * + * @param string[] $keys keys to translate. + * @param string[] $messages messages bag handling translations. + * @param string $key 'to' (to get the translation) or 'from' (to get the detection RegExp pattern). + * + * @return string[] + */ + private static function translateWordsByKeys($keys, $messages, $key): array + { + return array_map(function ($wordKey) use ($messages, $key) { + $message = $key === 'from' && isset($messages[$wordKey.'_regexp']) + ? $messages[$wordKey.'_regexp'] + : ($messages[$wordKey] ?? null); + + if (!$message) { + return '>>DO NOT REPLACE<<'; + } + + $parts = explode('|', $message); + + return $key === 'to' + ? self::cleanWordFromTranslationString(end($parts)) + : '(?:'.implode('|', array_map([static::class, 'cleanWordFromTranslationString'], $parts)).')'; + }, $keys); + } + + /** + * Get an array of translations based on the current date. + * + * @param callable $translation + * @param int $length + * @param string $timeString + * + * @return string[] + */ + private static function getTranslationArray($translation, $length, $timeString): array + { + $filler = '>>DO NOT REPLACE<<'; + + if (\is_array($translation)) { + return array_pad($translation, $length, $filler); + } + + $list = []; + $date = static::now(); + + for ($i = 0; $i < $length; $i++) { + $list[] = $translation($date, $timeString, $i) ?? $filler; + } + + return $list; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php new file mode 100644 index 00000000000..92b6c9d866d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Macro.php @@ -0,0 +1,136 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +/** + * Trait Macros. + * + * Allows users to register macros within the Carbon class. + */ +trait Macro +{ + use Mixin; + + /** + * The registered macros. + * + * @var array + */ + protected static $globalMacros = []; + + /** + * The registered generic macros. + * + * @var array + */ + protected static $globalGenericMacros = []; + + /** + * Register a custom macro. + * + * @example + * ``` + * $userSettings = [ + * 'locale' => 'pt', + * 'timezone' => 'America/Sao_Paulo', + * ]; + * Carbon::macro('userFormat', function () use ($userSettings) { + * return $this->copy()->locale($userSettings['locale'])->tz($userSettings['timezone'])->calendar(); + * }); + * echo Carbon::yesterday()->hours(11)->userFormat(); + * ``` + * + * @param string $name + * @param object|callable $macro + * + * @return void + */ + public static function macro($name, $macro) + { + static::$globalMacros[$name] = $macro; + } + + /** + * Remove all macros and generic macros. + */ + public static function resetMacros() + { + static::$globalMacros = []; + static::$globalGenericMacros = []; + } + + /** + * Register a custom macro. + * + * @param object|callable $macro + * @param int $priority marco with higher priority is tried first + * + * @return void + */ + public static function genericMacro($macro, $priority = 0) + { + if (!isset(static::$globalGenericMacros[$priority])) { + static::$globalGenericMacros[$priority] = []; + krsort(static::$globalGenericMacros, SORT_NUMERIC); + } + + static::$globalGenericMacros[$priority][] = $macro; + } + + /** + * Checks if macro is registered globally. + * + * @param string $name + * + * @return bool + */ + public static function hasMacro($name) + { + return isset(static::$globalMacros[$name]); + } + + /** + * Get the raw callable macro registered globally for a given name. + * + * @param string $name + * + * @return callable|null + */ + public static function getMacro($name) + { + return static::$globalMacros[$name] ?? null; + } + + /** + * Checks if macro is registered globally or locally. + * + * @param string $name + * + * @return bool + */ + public function hasLocalMacro($name) + { + return ($this->localMacros && isset($this->localMacros[$name])) || static::hasMacro($name); + } + + /** + * Get the raw callable macro registered globally or locally for a given name. + * + * @param string $name + * + * @return callable|null + */ + public function getLocalMacro($name) + { + return ($this->localMacros ?? [])[$name] ?? static::getMacro($name); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php new file mode 100644 index 00000000000..88b251df480 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mixin.php @@ -0,0 +1,191 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Closure; +use Generator; +use ReflectionClass; +use ReflectionException; +use ReflectionMethod; +use Throwable; + +/** + * Trait Mixin. + * + * Allows mixing in entire classes with multiple macros. + */ +trait Mixin +{ + /** + * Stack of macro instance contexts. + * + * @var array + */ + protected static $macroContextStack = []; + + /** + * Mix another object into the class. + * + * @example + * ``` + * Carbon::mixin(new class { + * public function addMoon() { + * return function () { + * return $this->addDays(30); + * }; + * } + * public function subMoon() { + * return function () { + * return $this->subDays(30); + * }; + * } + * }); + * $fullMoon = Carbon::create('2018-12-22'); + * $nextFullMoon = $fullMoon->addMoon(); + * $blackMoon = Carbon::create('2019-01-06'); + * $previousBlackMoon = $blackMoon->subMoon(); + * echo "$nextFullMoon\n"; + * echo "$previousBlackMoon\n"; + * ``` + * + * @param object|string $mixin + * + * @throws ReflectionException + * + * @return void + */ + public static function mixin($mixin) + { + \is_string($mixin) && trait_exists($mixin) + ? self::loadMixinTrait($mixin) + : self::loadMixinClass($mixin); + } + + /** + * @param object|string $mixin + * + * @throws ReflectionException + */ + private static function loadMixinClass($mixin) + { + $methods = (new ReflectionClass($mixin))->getMethods( + ReflectionMethod::IS_PUBLIC | ReflectionMethod::IS_PROTECTED + ); + + foreach ($methods as $method) { + if ($method->isConstructor() || $method->isDestructor()) { + continue; + } + + $method->setAccessible(true); + + static::macro($method->name, $method->invoke($mixin)); + } + } + + /** + * @param string $trait + */ + private static function loadMixinTrait($trait) + { + $context = eval(self::getAnonymousClassCodeForTrait($trait)); + $className = \get_class($context); + + foreach (self::getMixableMethods($context) as $name) { + $closureBase = Closure::fromCallable([$context, $name]); + + static::macro($name, function () use ($closureBase, $className) { + /** @phpstan-ignore-next-line */ + $context = isset($this) ? $this->cast($className) : new $className(); + + try { + // @ is required to handle error if not converted into exceptions + $closure = @$closureBase->bindTo($context); + } catch (Throwable $throwable) { // @codeCoverageIgnore + $closure = $closureBase; // @codeCoverageIgnore + } + + // in case of errors not converted into exceptions + $closure = $closure ?: $closureBase; + + return $closure(...\func_get_args()); + }); + } + } + + private static function getAnonymousClassCodeForTrait(string $trait) + { + return 'return new class() extends '.static::class.' {use '.$trait.';};'; + } + + private static function getMixableMethods(self $context): Generator + { + foreach (get_class_methods($context) as $name) { + if (method_exists(static::class, $name)) { + continue; + } + + yield $name; + } + } + + /** + * Stack a Carbon context from inside calls of self::this() and execute a given action. + * + * @param static|null $context + * @param callable $callable + * + * @throws Throwable + * + * @return mixed + */ + protected static function bindMacroContext($context, callable $callable) + { + static::$macroContextStack[] = $context; + $exception = null; + $result = null; + + try { + $result = $callable(); + } catch (Throwable $throwable) { + $exception = $throwable; + } + + array_pop(static::$macroContextStack); + + if ($exception) { + throw $exception; + } + + return $result; + } + + /** + * Return the current context from inside a macro callee or a null if static. + * + * @return static|null + */ + protected static function context() + { + return end(static::$macroContextStack) ?: null; + } + + /** + * Return the current context from inside a macro callee or a new one if static. + * + * @return static + */ + protected static function this() + { + return end(static::$macroContextStack) ?: new static(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php new file mode 100644 index 00000000000..164dbbd105d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Modifiers.php @@ -0,0 +1,472 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterface; +use ReturnTypeWillChange; + +/** + * Trait Modifiers. + * + * Returns dates relative to current date using modifier short-hand. + */ +trait Modifiers +{ + /** + * Midday/noon hour. + * + * @var int + */ + protected static $midDayAt = 12; + + /** + * get midday/noon hour + * + * @return int + */ + public static function getMidDayAt() + { + return static::$midDayAt; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather consider mid-day is always 12pm, then if you need to test if it's an other + * hour, test it explicitly: + * $date->format('G') == 13 + * or to set explicitly to a given hour: + * $date->setTime(13, 0, 0, 0) + * + * Set midday/noon hour + * + * @param int $hour midday hour + * + * @return void + */ + public static function setMidDayAt($hour) + { + static::$midDayAt = $hour; + } + + /** + * Modify to midday, default to self::$midDayAt + * + * @return static + */ + public function midDay() + { + return $this->setTime(static::$midDayAt, 0, 0, 0); + } + + /** + * Modify to the next occurrence of a given modifier such as a day of + * the week. If no modifier is provided, modify to the next occurrence + * of the current day of the week. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param string|int|null $modifier + * + * @return static + */ + public function next($modifier = null) + { + if ($modifier === null) { + $modifier = $this->dayOfWeek; + } + + return $this->change( + 'next '.(\is_string($modifier) ? $modifier : static::$days[$modifier]) + ); + } + + /** + * Go forward or backward to the next week- or weekend-day. + * + * @param bool $weekday + * @param bool $forward + * + * @return static + */ + private function nextOrPreviousDay($weekday = true, $forward = true) + { + /** @var CarbonInterface $date */ + $date = $this; + $step = $forward ? 1 : -1; + + do { + $date = $date->addDays($step); + } while ($weekday ? $date->isWeekend() : $date->isWeekday()); + + return $date; + } + + /** + * Go forward to the next weekday. + * + * @return static + */ + public function nextWeekday() + { + return $this->nextOrPreviousDay(); + } + + /** + * Go backward to the previous weekday. + * + * @return static + */ + public function previousWeekday() + { + return $this->nextOrPreviousDay(true, false); + } + + /** + * Go forward to the next weekend day. + * + * @return static + */ + public function nextWeekendDay() + { + return $this->nextOrPreviousDay(false); + } + + /** + * Go backward to the previous weekend day. + * + * @return static + */ + public function previousWeekendDay() + { + return $this->nextOrPreviousDay(false, false); + } + + /** + * Modify to the previous occurrence of a given modifier such as a day of + * the week. If no dayOfWeek is provided, modify to the previous occurrence + * of the current day of the week. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param string|int|null $modifier + * + * @return static + */ + public function previous($modifier = null) + { + if ($modifier === null) { + $modifier = $this->dayOfWeek; + } + + return $this->change( + 'last '.(\is_string($modifier) ? $modifier : static::$days[$modifier]) + ); + } + + /** + * Modify to the first occurrence of a given day of the week + * in the current month. If no dayOfWeek is provided, modify to the + * first day of the current month. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek + * + * @return static + */ + public function firstOfMonth($dayOfWeek = null) + { + $date = $this->startOfDay(); + + if ($dayOfWeek === null) { + return $date->day(1); + } + + return $date->modify('first '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year); + } + + /** + * Modify to the last occurrence of a given day of the week + * in the current month. If no dayOfWeek is provided, modify to the + * last day of the current month. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek + * + * @return static + */ + public function lastOfMonth($dayOfWeek = null) + { + $date = $this->startOfDay(); + + if ($dayOfWeek === null) { + return $date->day($date->daysInMonth); + } + + return $date->modify('last '.static::$days[$dayOfWeek].' of '.$date->rawFormat('F').' '.$date->year); + } + + /** + * Modify to the given occurrence of a given day of the week + * in the current month. If the calculated occurrence is outside the scope + * of the current month, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfMonth($nth, $dayOfWeek) + { + $date = $this->avoidMutation()->firstOfMonth(); + $check = $date->rawFormat('Y-m'); + $date = $date->modify('+'.$nth.' '.static::$days[$dayOfWeek]); + + return $date->rawFormat('Y-m') === $check ? $this->modify((string) $date) : false; + } + + /** + * Modify to the first occurrence of a given day of the week + * in the current quarter. If no dayOfWeek is provided, modify to the + * first day of the current quarter. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function firstOfQuarter($dayOfWeek = null) + { + return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER - 2, 1)->firstOfMonth($dayOfWeek); + } + + /** + * Modify to the last occurrence of a given day of the week + * in the current quarter. If no dayOfWeek is provided, modify to the + * last day of the current quarter. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function lastOfQuarter($dayOfWeek = null) + { + return $this->setDate($this->year, $this->quarter * static::MONTHS_PER_QUARTER, 1)->lastOfMonth($dayOfWeek); + } + + /** + * Modify to the given occurrence of a given day of the week + * in the current quarter. If the calculated occurrence is outside the scope + * of the current quarter, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfQuarter($nth, $dayOfWeek) + { + $date = $this->avoidMutation()->day(1)->month($this->quarter * static::MONTHS_PER_QUARTER); + $lastMonth = $date->month; + $year = $date->year; + $date = $date->firstOfQuarter()->modify('+'.$nth.' '.static::$days[$dayOfWeek]); + + return ($lastMonth < $date->month || $year !== $date->year) ? false : $this->modify((string) $date); + } + + /** + * Modify to the first occurrence of a given day of the week + * in the current year. If no dayOfWeek is provided, modify to the + * first day of the current year. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function firstOfYear($dayOfWeek = null) + { + return $this->month(1)->firstOfMonth($dayOfWeek); + } + + /** + * Modify to the last occurrence of a given day of the week + * in the current year. If no dayOfWeek is provided, modify to the + * last day of the current year. Use the supplied constants + * to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int|null $dayOfWeek day of the week default null + * + * @return static + */ + public function lastOfYear($dayOfWeek = null) + { + return $this->month(static::MONTHS_PER_YEAR)->lastOfMonth($dayOfWeek); + } + + /** + * Modify to the given occurrence of a given day of the week + * in the current year. If the calculated occurrence is outside the scope + * of the current year, then return false and no modifications are made. + * Use the supplied constants to indicate the desired dayOfWeek, ex. static::MONDAY. + * + * @param int $nth + * @param int $dayOfWeek + * + * @return mixed + */ + public function nthOfYear($nth, $dayOfWeek) + { + $date = $this->avoidMutation()->firstOfYear()->modify('+'.$nth.' '.static::$days[$dayOfWeek]); + + return $this->year === $date->year ? $this->modify((string) $date) : false; + } + + /** + * Modify the current instance to the average of a given instance (default now) and the current instance + * (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|null $date + * + * @return static + */ + public function average($date = null) + { + return $this->addRealMicroseconds((int) ($this->diffInRealMicroseconds($this->resolveCarbon($date), false) / 2)); + } + + /** + * Get the closest date from the instance (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return static + */ + public function closest($date1, $date2) + { + return $this->diffInRealMicroseconds($date1) < $this->diffInRealMicroseconds($date2) ? $date1 : $date2; + } + + /** + * Get the farthest date from the instance (second-precision). + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date1 + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date2 + * + * @return static + */ + public function farthest($date1, $date2) + { + return $this->diffInRealMicroseconds($date1) > $this->diffInRealMicroseconds($date2) ? $date1 : $date2; + } + + /** + * Get the minimum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return static + */ + public function min($date = null) + { + $date = $this->resolveCarbon($date); + + return $this->lt($date) ? $this : $date; + } + + /** + * Get the minimum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see min() + * + * @return static + */ + public function minimum($date = null) + { + return $this->min($date); + } + + /** + * Get the maximum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @return static + */ + public function max($date = null) + { + $date = $this->resolveCarbon($date); + + return $this->gt($date) ? $this : $date; + } + + /** + * Get the maximum instance between a given instance (default now) and the current instance. + * + * @param \Carbon\Carbon|\DateTimeInterface|mixed $date + * + * @see max() + * + * @return static + */ + public function maximum($date = null) + { + return $this->max($date); + } + + /** + * Calls \DateTime::modify if mutable or \DateTimeImmutable::modify else. + * + * @see https://php.net/manual/en/datetime.modify.php + * + * @return static|false + */ + #[ReturnTypeWillChange] + public function modify($modify) + { + return parent::modify((string) $modify); + } + + /** + * Similar to native modify() method of DateTime but can handle more grammars. + * + * @example + * ``` + * echo Carbon::now()->change('next 2pm'); + * ``` + * + * @link https://php.net/manual/en/datetime.modify.php + * + * @param string $modifier + * + * @return static + */ + public function change($modifier) + { + return $this->modify(preg_replace_callback('/^(next|previous|last)\s+(\d{1,2}(h|am|pm|:\d{1,2}(:\d{1,2})?))$/i', function ($match) { + $match[2] = str_replace('h', ':00', $match[2]); + $test = $this->avoidMutation()->modify($match[2]); + $method = $match[1] === 'next' ? 'lt' : 'gt'; + $match[1] = $test->$method($this) ? $match[1].' day' : 'today'; + + return $match[1].' '.$match[2]; + }, strtr(trim($modifier), [ + ' at ' => ' ', + 'just now' => 'now', + 'after tomorrow' => 'tomorrow +1 day', + 'before yesterday' => 'yesterday -1 day', + ]))); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php new file mode 100644 index 00000000000..561c867d0f1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Mutability.php @@ -0,0 +1,71 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Carbon; +use Carbon\CarbonImmutable; + +/** + * Trait Mutability. + * + * Utils to know if the current object is mutable or immutable and convert it. + */ +trait Mutability +{ + use Cast; + + /** + * Returns true if the current class/instance is mutable. + * + * @return bool + */ + public static function isMutable() + { + return false; + } + + /** + * Returns true if the current class/instance is immutable. + * + * @return bool + */ + public static function isImmutable() + { + return !static::isMutable(); + } + + /** + * Return a mutable copy of the instance. + * + * @return Carbon + */ + public function toMutable() + { + /** @var Carbon $date */ + $date = $this->cast(Carbon::class); + + return $date; + } + + /** + * Return a immutable copy of the instance. + * + * @return CarbonImmutable + */ + public function toImmutable() + { + /** @var CarbonImmutable $date */ + $date = $this->cast(CarbonImmutable::class); + + return $date; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php new file mode 100644 index 00000000000..c77a102444e --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/ObjectInitialisation.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +trait ObjectInitialisation +{ + /** + * True when parent::__construct has been called. + * + * @var string + */ + protected $constructedObjectId; +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Options.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Options.php new file mode 100644 index 00000000000..0ddee8dd639 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Options.php @@ -0,0 +1,471 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterface; +use DateTimeInterface; +use Throwable; + +/** + * Trait Options. + * + * Embed base methods to change settings of Carbon classes. + * + * Depends on the following methods: + * + * @method \Carbon\Carbon|\Carbon\CarbonImmutable shiftTimezone($timezone) Set the timezone + */ +trait Options +{ + use Localization; + + /** + * Customizable PHP_INT_SIZE override. + * + * @var int + */ + public static $PHPIntSize = PHP_INT_SIZE; + + /** + * First day of week. + * + * @var int|string + */ + protected static $weekStartsAt = CarbonInterface::MONDAY; + + /** + * Last day of week. + * + * @var int|string + */ + protected static $weekEndsAt = CarbonInterface::SUNDAY; + + /** + * Days of weekend. + * + * @var array + */ + protected static $weekendDays = [ + CarbonInterface::SATURDAY, + CarbonInterface::SUNDAY, + ]; + + /** + * Format regex patterns. + * + * @var array + */ + protected static $regexFormats = [ + 'd' => '(3[01]|[12][0-9]|0[1-9])', + 'D' => '(Sun|Mon|Tue|Wed|Thu|Fri|Sat)', + 'j' => '([123][0-9]|[1-9])', + 'l' => '([a-zA-Z]{2,})', + 'N' => '([1-7])', + 'S' => '(st|nd|rd|th)', + 'w' => '([0-6])', + 'z' => '(36[0-5]|3[0-5][0-9]|[12][0-9]{2}|[1-9]?[0-9])', + 'W' => '(5[012]|[1-4][0-9]|0?[1-9])', + 'F' => '([a-zA-Z]{2,})', + 'm' => '(1[012]|0[1-9])', + 'M' => '([a-zA-Z]{3})', + 'n' => '(1[012]|[1-9])', + 't' => '(2[89]|3[01])', + 'L' => '(0|1)', + 'o' => '([1-9][0-9]{0,4})', + 'Y' => '([1-9]?[0-9]{4})', + 'y' => '([0-9]{2})', + 'a' => '(am|pm)', + 'A' => '(AM|PM)', + 'B' => '([0-9]{3})', + 'g' => '(1[012]|[1-9])', + 'G' => '(2[0-3]|1?[0-9])', + 'h' => '(1[012]|0[1-9])', + 'H' => '(2[0-3]|[01][0-9])', + 'i' => '([0-5][0-9])', + 's' => '([0-5][0-9])', + 'u' => '([0-9]{1,6})', + 'v' => '([0-9]{1,3})', + 'e' => '([a-zA-Z]{1,5})|([a-zA-Z]*\\/[a-zA-Z]*)', + 'I' => '(0|1)', + 'O' => '([+-](1[012]|0[0-9])[0134][05])', + 'P' => '([+-](1[012]|0[0-9]):[0134][05])', + 'p' => '(Z|[+-](1[012]|0[0-9]):[0134][05])', + 'T' => '([a-zA-Z]{1,5})', + 'Z' => '(-?[1-5]?[0-9]{1,4})', + 'U' => '([0-9]*)', + + // The formats below are combinations of the above formats. + 'c' => '(([1-9]?[0-9]{4})-(1[012]|0[1-9])-(3[01]|[12][0-9]|0[1-9])T(2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9])[+-](1[012]|0[0-9]):([0134][05]))', // Y-m-dTH:i:sP + 'r' => '(([a-zA-Z]{3}), ([123][0-9]|0[1-9]) ([a-zA-Z]{3}) ([1-9]?[0-9]{4}) (2[0-3]|[01][0-9]):([0-5][0-9]):([0-5][0-9]) [+-](1[012]|0[0-9])([0134][05]))', // D, d M Y H:i:s O + ]; + + /** + * Format modifiers (such as available in createFromFormat) regex patterns. + * + * @var array + */ + protected static $regexFormatModifiers = [ + '*' => '.+', + ' ' => '[ ]', + '#' => '[;:\\/.,()-]', + '?' => '([^a]|[a])', + '!' => '', + '|' => '', + '+' => '', + ]; + + /** + * Indicates if months should be calculated with overflow. + * Global setting. + * + * @var bool + */ + protected static $monthsOverflow = true; + + /** + * Indicates if years should be calculated with overflow. + * Global setting. + * + * @var bool + */ + protected static $yearsOverflow = true; + + /** + * Indicates if the strict mode is in use. + * Global setting. + * + * @var bool + */ + protected static $strictModeEnabled = true; + + /** + * Function to call instead of format. + * + * @var string|callable|null + */ + protected static $formatFunction; + + /** + * Function to call instead of createFromFormat. + * + * @var string|callable|null + */ + protected static $createFromFormatFunction; + + /** + * Function to call instead of parse. + * + * @var string|callable|null + */ + protected static $parseFunction; + + /** + * Indicates if months should be calculated with overflow. + * Specific setting. + * + * @var bool|null + */ + protected $localMonthsOverflow; + + /** + * Indicates if years should be calculated with overflow. + * Specific setting. + * + * @var bool|null + */ + protected $localYearsOverflow; + + /** + * Indicates if the strict mode is in use. + * Specific setting. + * + * @var bool|null + */ + protected $localStrictModeEnabled; + + /** + * Options for diffForHumans and forHumans methods. + * + * @var bool|null + */ + protected $localHumanDiffOptions; + + /** + * Format to use on string cast. + * + * @var string|null + */ + protected $localToStringFormat; + + /** + * Format to use on JSON serialization. + * + * @var string|null + */ + protected $localSerializer; + + /** + * Instance-specific macros. + * + * @var array|null + */ + protected $localMacros; + + /** + * Instance-specific generic macros. + * + * @var array|null + */ + protected $localGenericMacros; + + /** + * Function to call instead of format. + * + * @var string|callable|null + */ + protected $localFormatFunction; + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * @see settings + * + * Enable the strict mode (or disable with passing false). + * + * @param bool $strictModeEnabled + */ + public static function useStrictMode($strictModeEnabled = true) + { + static::$strictModeEnabled = $strictModeEnabled; + } + + /** + * Returns true if the strict mode is globally in use, false else. + * (It can be overridden in specific instances.) + * + * @return bool + */ + public static function isStrictModeEnabled() + { + return static::$strictModeEnabled; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Indicates if months should be calculated with overflow. + * + * @param bool $monthsOverflow + * + * @return void + */ + public static function useMonthsOverflow($monthsOverflow = true) + { + static::$monthsOverflow = $monthsOverflow; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addMonthsWithOverflow/addMonthsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Reset the month overflow behavior. + * + * @return void + */ + public static function resetMonthsOverflow() + { + static::$monthsOverflow = true; + } + + /** + * Get the month overflow global behavior (can be overridden in specific instances). + * + * @return bool + */ + public static function shouldOverflowMonths() + { + return static::$monthsOverflow; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Indicates if years should be calculated with overflow. + * + * @param bool $yearsOverflow + * + * @return void + */ + public static function useYearsOverflow($yearsOverflow = true) + { + static::$yearsOverflow = $yearsOverflow; + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather use the ->settings() method. + * Or you can use method variants: addYearsWithOverflow/addYearsNoOverflow, same variants + * are available for quarters, years, decade, centuries, millennia (singular and plural forms). + * @see settings + * + * Reset the month overflow behavior. + * + * @return void + */ + public static function resetYearsOverflow() + { + static::$yearsOverflow = true; + } + + /** + * Get the month overflow global behavior (can be overridden in specific instances). + * + * @return bool + */ + public static function shouldOverflowYears() + { + return static::$yearsOverflow; + } + + /** + * Set specific options. + * - strictMode: true|false|null + * - monthOverflow: true|false|null + * - yearOverflow: true|false|null + * - humanDiffOptions: int|null + * - toStringFormat: string|Closure|null + * - toJsonFormat: string|Closure|null + * - locale: string|null + * - timezone: \DateTimeZone|string|int|null + * - macros: array|null + * - genericMacros: array|null + * + * @param array $settings + * + * @return $this|static + */ + public function settings(array $settings) + { + $this->localStrictModeEnabled = $settings['strictMode'] ?? null; + $this->localMonthsOverflow = $settings['monthOverflow'] ?? null; + $this->localYearsOverflow = $settings['yearOverflow'] ?? null; + $this->localHumanDiffOptions = $settings['humanDiffOptions'] ?? null; + $this->localToStringFormat = $settings['toStringFormat'] ?? null; + $this->localSerializer = $settings['toJsonFormat'] ?? null; + $this->localMacros = $settings['macros'] ?? null; + $this->localGenericMacros = $settings['genericMacros'] ?? null; + $this->localFormatFunction = $settings['formatFunction'] ?? null; + + if (isset($settings['locale'])) { + $locales = $settings['locale']; + + if (!\is_array($locales)) { + $locales = [$locales]; + } + + $this->locale(...$locales); + } + + if (isset($settings['innerTimezone'])) { + return $this->setTimezone($settings['innerTimezone']); + } + + if (isset($settings['timezone'])) { + return $this->shiftTimezone($settings['timezone']); + } + + return $this; + } + + /** + * Returns current local settings. + * + * @return array + */ + public function getSettings() + { + $settings = []; + $map = [ + 'localStrictModeEnabled' => 'strictMode', + 'localMonthsOverflow' => 'monthOverflow', + 'localYearsOverflow' => 'yearOverflow', + 'localHumanDiffOptions' => 'humanDiffOptions', + 'localToStringFormat' => 'toStringFormat', + 'localSerializer' => 'toJsonFormat', + 'localMacros' => 'macros', + 'localGenericMacros' => 'genericMacros', + 'locale' => 'locale', + 'tzName' => 'timezone', + 'localFormatFunction' => 'formatFunction', + ]; + + foreach ($map as $property => $key) { + $value = $this->$property ?? null; + + if ($value !== null) { + $settings[$key] = $value; + } + } + + return $settings; + } + + /** + * Show truthy properties on var_dump(). + * + * @return array + */ + public function __debugInfo() + { + $infos = array_filter(get_object_vars($this), function ($var) { + return $var; + }); + + foreach (['dumpProperties', 'constructedObjectId'] as $property) { + if (isset($infos[$property])) { + unset($infos[$property]); + } + } + + $this->addExtraDebugInfos($infos); + + return $infos; + } + + protected function addExtraDebugInfos(&$infos): void + { + if ($this instanceof DateTimeInterface) { + try { + if (!isset($infos['date'])) { + $infos['date'] = $this->format(CarbonInterface::MOCK_DATETIME_FORMAT); + } + + if (!isset($infos['timezone'])) { + $infos['timezone'] = $this->tzName; + } + } catch (Throwable $exception) { + // noop + } + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php new file mode 100644 index 00000000000..c991a9b0aa9 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Rounding.php @@ -0,0 +1,239 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterface; +use Carbon\Exceptions\UnknownUnitException; + +/** + * Trait Rounding. + * + * Round, ceil, floor units. + * + * Depends on the following methods: + * + * @method static copy() + * @method static startOfWeek(int $weekStartsAt = null) + */ +trait Rounding +{ + use IntervalRounding; + + /** + * Round the current instance at the given unit with given precision if specified and the given function. + * + * @param string $unit + * @param float|int $precision + * @param string $function + * + * @return CarbonInterface + */ + public function roundUnit($unit, $precision = 1, $function = 'round') + { + $metaUnits = [ + // @call roundUnit + 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'], + // @call roundUnit + 'century' => [static::YEARS_PER_CENTURY, 'year'], + // @call roundUnit + 'decade' => [static::YEARS_PER_DECADE, 'year'], + // @call roundUnit + 'quarter' => [static::MONTHS_PER_QUARTER, 'month'], + // @call roundUnit + 'millisecond' => [1000, 'microsecond'], + ]; + $normalizedUnit = static::singularUnit($unit); + $ranges = array_merge(static::getRangesByUnit($this->daysInMonth), [ + // @call roundUnit + 'microsecond' => [0, 999999], + ]); + $factor = 1; + $initialMonth = $this->month; + + if ($normalizedUnit === 'week') { + $normalizedUnit = 'day'; + $precision *= static::DAYS_PER_WEEK; + } + + if (isset($metaUnits[$normalizedUnit])) { + [$factor, $normalizedUnit] = $metaUnits[$normalizedUnit]; + } + + $precision *= $factor; + + if (!isset($ranges[$normalizedUnit])) { + throw new UnknownUnitException($unit); + } + + $found = false; + $fraction = 0; + $arguments = null; + $factor = $this->year < 0 ? -1 : 1; + $changes = []; + + foreach ($ranges as $unit => [$minimum, $maximum]) { + if ($normalizedUnit === $unit) { + $arguments = [$this->$unit, $minimum]; + $fraction = $precision - floor($precision); + $found = true; + + continue; + } + + if ($found) { + $delta = $maximum + 1 - $minimum; + $factor /= $delta; + $fraction *= $delta; + $arguments[0] += ($this->$unit - $minimum) * $factor; + $changes[$unit] = round( + $minimum + ($fraction ? $fraction * $function(($this->$unit - $minimum) / $fraction) : 0) + ); + + // Cannot use modulo as it lose double precision + while ($changes[$unit] >= $delta) { + $changes[$unit] -= $delta; + } + + $fraction -= floor($fraction); + } + } + + [$value, $minimum] = $arguments; + $normalizedValue = floor($function(($value - $minimum) / $precision) * $precision + $minimum); + + /** @var CarbonInterface $result */ + $result = $this->$normalizedUnit($normalizedValue); + + foreach ($changes as $unit => $value) { + $result = $result->$unit($value); + } + + return $normalizedUnit === 'month' && $precision <= 1 && abs($result->month - $initialMonth) === 2 + // Re-run the change in case an overflow occurred + ? $result->$normalizedUnit($normalizedValue) + : $result; + } + + /** + * Truncate the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int $precision + * + * @return CarbonInterface + */ + public function floorUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'floor'); + } + + /** + * Ceil the current instance at the given unit with given precision if specified. + * + * @param string $unit + * @param float|int $precision + * + * @return CarbonInterface + */ + public function ceilUnit($unit, $precision = 1) + { + return $this->roundUnit($unit, $precision, 'ceil'); + } + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * @param string $function + * + * @return CarbonInterface + */ + public function round($precision = 1, $function = 'round') + { + return $this->roundWith($precision, $function); + } + + /** + * Round the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * + * @return CarbonInterface + */ + public function floor($precision = 1) + { + return $this->round($precision, 'floor'); + } + + /** + * Ceil the current instance second with given precision if specified. + * + * @param float|int|string|\DateInterval|null $precision + * + * @return CarbonInterface + */ + public function ceil($precision = 1) + { + return $this->round($precision, 'ceil'); + } + + /** + * Round the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function roundWeek($weekStartsAt = null) + { + return $this->closest( + $this->avoidMutation()->floorWeek($weekStartsAt), + $this->avoidMutation()->ceilWeek($weekStartsAt) + ); + } + + /** + * Truncate the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function floorWeek($weekStartsAt = null) + { + return $this->startOfWeek($weekStartsAt); + } + + /** + * Ceil the current instance week. + * + * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week + * + * @return CarbonInterface + */ + public function ceilWeek($weekStartsAt = null) + { + if ($this->isMutable()) { + $startOfWeek = $this->avoidMutation()->startOfWeek($weekStartsAt); + + return $startOfWeek != $this ? + $this->startOfWeek($weekStartsAt)->addWeek() : + $this; + } + + $startOfWeek = $this->startOfWeek($weekStartsAt); + + return $startOfWeek != $this ? + $startOfWeek->addWeek() : + $this->avoidMutation(); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php new file mode 100644 index 00000000000..9e86bd3e9b7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Serialization.php @@ -0,0 +1,304 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\Exceptions\InvalidFormatException; +use ReturnTypeWillChange; +use Throwable; + +/** + * Trait Serialization. + * + * Serialization and JSON stuff. + * + * Depends on the following properties: + * + * @property int $year + * @property int $month + * @property int $daysInMonth + * @property int $quarter + * + * Depends on the following methods: + * + * @method string|static locale(string $locale = null, string ...$fallbackLocales) + * @method string toJSON() + */ +trait Serialization +{ + use ObjectInitialisation; + + /** + * The custom Carbon JSON serializer. + * + * @var callable|null + */ + protected static $serializer; + + /** + * List of key to use for dump/serialization. + * + * @var string[] + */ + protected $dumpProperties = ['date', 'timezone_type', 'timezone']; + + /** + * Locale to dump comes here before serialization. + * + * @var string|null + */ + protected $dumpLocale; + + /** + * Embed date properties to dump in a dedicated variables so it won't overlap native + * DateTime ones. + * + * @var array|null + */ + protected $dumpDateProperties; + + /** + * Return a serialized string of the instance. + * + * @return string + */ + public function serialize() + { + return serialize($this); + } + + /** + * Create an instance from a serialized string. + * + * @param string $value + * + * @throws InvalidFormatException + * + * @return static + */ + public static function fromSerialized($value) + { + $instance = @unserialize((string) $value); + + if (!$instance instanceof static) { + throw new InvalidFormatException("Invalid serialized value: $value"); + } + + return $instance; + } + + /** + * The __set_state handler. + * + * @param string|array $dump + * + * @return static + */ + #[ReturnTypeWillChange] + public static function __set_state($dump) + { + if (\is_string($dump)) { + return static::parse($dump); + } + + /** @var \DateTimeInterface $date */ + $date = get_parent_class(static::class) && method_exists(parent::class, '__set_state') + ? parent::__set_state((array) $dump) + : (object) $dump; + + return static::instance($date); + } + + /** + * Returns the list of properties to dump on serialize() called on. + * + * @return array + */ + public function __sleep() + { + $properties = $this->getSleepProperties(); + + if ($this->localTranslator ?? null) { + $properties[] = 'dumpLocale'; + $this->dumpLocale = $this->locale ?? null; + } + + return $properties; + } + + public function __serialize(): array + { + if (isset($this->timezone_type)) { + return [ + 'date' => $this->date ?? null, + 'timezone_type' => $this->timezone_type, + 'timezone' => $this->timezone ?? null, + ]; + } + + $timezone = $this->getTimezone(); + $export = [ + 'date' => $this->format('Y-m-d H:i:s.u'), + 'timezone_type' => $timezone->getType(), + 'timezone' => $timezone->getName(), + ]; + + // @codeCoverageIgnoreStart + if (\extension_loaded('msgpack') && isset($this->constructedObjectId)) { + $export['dumpDateProperties'] = [ + 'date' => $this->format('Y-m-d H:i:s.u'), + 'timezone' => serialize($this->timezone ?? null), + ]; + } + // @codeCoverageIgnoreEnd + + if ($this->localTranslator ?? null) { + $export['dumpLocale'] = $this->locale ?? null; + } + + return $export; + } + + /** + * Set locale if specified on unserialize() called. + * + * @return void + */ + #[ReturnTypeWillChange] + public function __wakeup() + { + if (parent::class && method_exists(parent::class, '__wakeup')) { + // @codeCoverageIgnoreStart + try { + parent::__wakeup(); + } catch (Throwable $exception) { + try { + // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later. + ['date' => $date, 'timezone' => $timezone] = $this->dumpDateProperties; + parent::__construct($date, unserialize($timezone)); + } catch (Throwable $ignoredException) { + throw $exception; + } + } + // @codeCoverageIgnoreEnd + } + + $this->constructedObjectId = spl_object_hash($this); + + if (isset($this->dumpLocale)) { + $this->locale($this->dumpLocale); + $this->dumpLocale = null; + } + + $this->cleanupDumpProperties(); + } + + public function __unserialize(array $data): void + { + // @codeCoverageIgnoreStart + try { + $this->__construct($data['date'] ?? null, $data['timezone'] ?? null); + } catch (Throwable $exception) { + if (!isset($data['dumpDateProperties']['date'], $data['dumpDateProperties']['timezone'])) { + throw $exception; + } + + try { + // FatalError occurs when calling msgpack_unpack() in PHP 7.4 or later. + ['date' => $date, 'timezone' => $timezone] = $data['dumpDateProperties']; + $this->__construct($date, unserialize($timezone)); + } catch (Throwable $ignoredException) { + throw $exception; + } + } + // @codeCoverageIgnoreEnd + + if (isset($data['dumpLocale'])) { + $this->locale($data['dumpLocale']); + } + } + + /** + * Prepare the object for JSON serialization. + * + * @return array|string + */ + #[ReturnTypeWillChange] + public function jsonSerialize() + { + $serializer = $this->localSerializer ?? static::$serializer; + + if ($serializer) { + return \is_string($serializer) + ? $this->rawFormat($serializer) + : $serializer($this); + } + + return $this->toJSON(); + } + + /** + * @deprecated To avoid conflict between different third-party libraries, static setters should not be used. + * You should rather transform Carbon object before the serialization. + * + * JSON serialize all Carbon instances using the given callback. + * + * @param callable $callback + * + * @return void + */ + public static function serializeUsing($callback) + { + static::$serializer = $callback; + } + + /** + * Cleanup properties attached to the public scope of DateTime when a dump of the date is requested. + * foreach ($date as $_) {} + * serializer($date) + * var_export($date) + * get_object_vars($date) + */ + public function cleanupDumpProperties() + { + if (PHP_VERSION < 8.2) { + foreach ($this->dumpProperties as $property) { + if (isset($this->$property)) { + unset($this->$property); + } + } + } + + return $this; + } + + private function getSleepProperties(): array + { + $properties = $this->dumpProperties; + + // @codeCoverageIgnoreStart + if (!\extension_loaded('msgpack')) { + return $properties; + } + + if (isset($this->constructedObjectId)) { + $this->dumpDateProperties = [ + 'date' => $this->format('Y-m-d H:i:s.u'), + 'timezone' => serialize($this->timezone ?? null), + ]; + + $properties[] = 'dumpDateProperties'; + } + + return $properties; + // @codeCoverageIgnoreEnd + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Test.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Test.php new file mode 100644 index 00000000000..e0c9e80683f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Test.php @@ -0,0 +1,226 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonInterface; +use Carbon\CarbonTimeZone; +use Closure; +use DateTimeImmutable; +use DateTimeInterface; +use InvalidArgumentException; +use Throwable; + +trait Test +{ + /////////////////////////////////////////////////////////////////// + ///////////////////////// TESTING AIDS //////////////////////////// + /////////////////////////////////////////////////////////////////// + + /** + * A test Carbon instance to be returned when now instances are created. + * + * @var Closure|static|null + */ + protected static $testNow; + + /** + * The timezone to resto to when clearing the time mock. + * + * @var string|null + */ + protected static $testDefaultTimezone; + + /** + * Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * + * Note the timezone parameter was left out of the examples above and + * has no affect as the mock value will be returned regardless of its value. + * + * Only the moment is mocked with setTestNow(), the timezone will still be the one passed + * as parameter of date_default_timezone_get() as a fallback (see setTestNowAndTimezone()). + * + * To clear the test instance call this method using the default + * parameter of null. + * + * /!\ Use this method for unit tests only. + * + * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance + */ + public static function setTestNow($testNow = null) + { + static::$testNow = $testNow instanceof self || $testNow instanceof Closure + ? $testNow + : static::make($testNow); + } + + /** + * Set a Carbon instance (real or mock) to be returned when a "now" + * instance is created. The provided instance will be returned + * specifically under the following conditions: + * - A call to the static now() method, ex. Carbon::now() + * - When a null (or blank string) is passed to the constructor or parse(), ex. new Carbon(null) + * - When the string "now" is passed to the constructor or parse(), ex. new Carbon('now') + * - When a string containing the desired time is passed to Carbon::parse(). + * + * It will also align default timezone (e.g. call date_default_timezone_set()) with + * the second argument or if null, with the timezone of the given date object. + * + * To clear the test instance call this method using the default + * parameter of null. + * + * /!\ Use this method for unit tests only. + * + * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance + */ + public static function setTestNowAndTimezone($testNow = null, $tz = null) + { + if ($testNow) { + self::$testDefaultTimezone = self::$testDefaultTimezone ?? date_default_timezone_get(); + } + + $useDateInstanceTimezone = $testNow instanceof DateTimeInterface; + + if ($useDateInstanceTimezone) { + self::setDefaultTimezone($testNow->getTimezone()->getName(), $testNow); + } + + static::setTestNow($testNow); + + if (!$useDateInstanceTimezone) { + $now = static::getMockedTestNow(\func_num_args() === 1 ? null : $tz); + $tzName = $now ? $now->tzName : null; + self::setDefaultTimezone($tzName ?? self::$testDefaultTimezone ?? 'UTC', $now); + } + + if (!$testNow) { + self::$testDefaultTimezone = null; + } + } + + /** + * Temporarily sets a static date to be used within the callback. + * Using setTestNow to set the date, executing the callback, then + * clearing the test instance. + * + * /!\ Use this method for unit tests only. + * + * @param DateTimeInterface|Closure|static|string|false|null $testNow real or mock Carbon instance + * @param Closure|null $callback + * + * @return mixed + */ + public static function withTestNow($testNow = null, $callback = null) + { + static::setTestNow($testNow); + + try { + $result = $callback(); + } finally { + static::setTestNow(); + } + + return $result; + } + + /** + * Get the Carbon instance (real or mock) to be returned when a "now" + * instance is created. + * + * @return Closure|static the current instance used for testing + */ + public static function getTestNow() + { + return static::$testNow; + } + + /** + * Determine if there is a valid test instance set. A valid test instance + * is anything that is not null. + * + * @return bool true if there is a test instance, otherwise false + */ + public static function hasTestNow() + { + return static::getTestNow() !== null; + } + + /** + * Get the mocked date passed in setTestNow() and if it's a Closure, execute it. + * + * @param string|\DateTimeZone $tz + * + * @return \Carbon\CarbonImmutable|\Carbon\Carbon|null + */ + protected static function getMockedTestNow($tz) + { + $testNow = static::getTestNow(); + + if ($testNow instanceof Closure) { + $realNow = new DateTimeImmutable('now'); + $testNow = $testNow(static::parse( + $realNow->format('Y-m-d H:i:s.u'), + $tz ?: $realNow->getTimezone() + )); + } + /* @var \Carbon\CarbonImmutable|\Carbon\Carbon|null $testNow */ + + return $testNow instanceof CarbonInterface + ? $testNow->avoidMutation()->tz($tz) + : $testNow; + } + + protected static function mockConstructorParameters(&$time, $tz) + { + /** @var \Carbon\CarbonImmutable|\Carbon\Carbon $testInstance */ + $testInstance = clone static::getMockedTestNow($tz); + + if (static::hasRelativeKeywords($time)) { + $testInstance = $testInstance->modify($time); + } + + $time = $testInstance instanceof self + ? $testInstance->rawFormat(static::MOCK_DATETIME_FORMAT) + : $testInstance->format(static::MOCK_DATETIME_FORMAT); + } + + private static function setDefaultTimezone($timezone, DateTimeInterface $date = null) + { + $previous = null; + $success = false; + + try { + $success = date_default_timezone_set($timezone); + } catch (Throwable $exception) { + $previous = $exception; + } + + if (!$success) { + $suggestion = @CarbonTimeZone::create($timezone)->toRegionName($date); + + throw new InvalidArgumentException( + "Timezone ID '$timezone' is invalid". + ($suggestion && $suggestion !== $timezone ? ", did you mean '$suggestion'?" : '.')."\n". + "It must be one of the IDs from DateTimeZone::listIdentifiers(),\n". + 'For the record, hours/minutes offset are relevant only for a particular moment, '. + 'but not as a default timezone.', + 0, + $previous + ); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php new file mode 100644 index 00000000000..88a465c938c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Timestamp.php @@ -0,0 +1,198 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +/** + * Trait Timestamp. + */ +trait Timestamp +{ + /** + * Create a Carbon instance from a timestamp and set the timezone (use default one if not specified). + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * @param \DateTimeZone|string|null $tz + * + * @return static + */ + public static function createFromTimestamp($timestamp, $tz = null) + { + return static::createFromTimestampUTC($timestamp)->setTimezone($tz); + } + + /** + * Create a Carbon instance from an timestamp keeping the timezone to UTC. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * + * @return static + */ + public static function createFromTimestampUTC($timestamp) + { + [$integer, $decimal] = self::getIntegerAndDecimalParts($timestamp); + $delta = floor($decimal / static::MICROSECONDS_PER_SECOND); + $integer += $delta; + $decimal -= $delta * static::MICROSECONDS_PER_SECOND; + $decimal = str_pad((string) $decimal, 6, '0', STR_PAD_LEFT); + + return static::rawCreateFromFormat('U u', "$integer $decimal"); + } + + /** + * Create a Carbon instance from a timestamp in milliseconds. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * + * @return static + */ + public static function createFromTimestampMsUTC($timestamp) + { + [$milliseconds, $microseconds] = self::getIntegerAndDecimalParts($timestamp, 3); + $sign = $milliseconds < 0 || ($milliseconds === 0.0 && $microseconds < 0) ? -1 : 1; + $milliseconds = abs($milliseconds); + $microseconds = $sign * abs($microseconds) + static::MICROSECONDS_PER_MILLISECOND * ($milliseconds % static::MILLISECONDS_PER_SECOND); + $seconds = $sign * floor($milliseconds / static::MILLISECONDS_PER_SECOND); + $delta = floor($microseconds / static::MICROSECONDS_PER_SECOND); + $seconds += $delta; + $microseconds -= $delta * static::MICROSECONDS_PER_SECOND; + $microseconds = str_pad($microseconds, 6, '0', STR_PAD_LEFT); + + return static::rawCreateFromFormat('U u', "$seconds $microseconds"); + } + + /** + * Create a Carbon instance from a timestamp in milliseconds. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $timestamp + * @param \DateTimeZone|string|null $tz + * + * @return static + */ + public static function createFromTimestampMs($timestamp, $tz = null) + { + return static::createFromTimestampMsUTC($timestamp) + ->setTimezone($tz); + } + + /** + * Set the instance's timestamp. + * + * Timestamp input can be given as int, float or a string containing one or more numbers. + * + * @param float|int|string $unixTimestamp + * + * @return static + */ + public function timestamp($unixTimestamp) + { + return $this->setTimestamp($unixTimestamp); + } + + /** + * Returns a timestamp rounded with the given precision (6 by default). + * + * @example getPreciseTimestamp() 1532087464437474 (microsecond maximum precision) + * @example getPreciseTimestamp(6) 1532087464437474 + * @example getPreciseTimestamp(5) 153208746443747 (1/100000 second precision) + * @example getPreciseTimestamp(4) 15320874644375 (1/10000 second precision) + * @example getPreciseTimestamp(3) 1532087464437 (millisecond precision) + * @example getPreciseTimestamp(2) 153208746444 (1/100 second precision) + * @example getPreciseTimestamp(1) 15320874644 (1/10 second precision) + * @example getPreciseTimestamp(0) 1532087464 (second precision) + * @example getPreciseTimestamp(-1) 153208746 (10 second precision) + * @example getPreciseTimestamp(-2) 15320875 (100 second precision) + * + * @param int $precision + * + * @return float + */ + public function getPreciseTimestamp($precision = 6) + { + return round(((float) $this->rawFormat('Uu')) / pow(10, 6 - $precision)); + } + + /** + * Returns the milliseconds timestamps used amongst other by Date javascript objects. + * + * @return float + */ + public function valueOf() + { + return $this->getPreciseTimestamp(3); + } + + /** + * Returns the timestamp with millisecond precision. + * + * @return int + */ + public function getTimestampMs() + { + return (int) $this->getPreciseTimestamp(3); + } + + /** + * @alias getTimestamp + * + * Returns the UNIX timestamp for the current date. + * + * @return int + */ + public function unix() + { + return $this->getTimestamp(); + } + + /** + * Return an array with integer part digits and decimals digits split from one or more positive numbers + * (such as timestamps) as string with the given number of decimals (6 by default). + * + * By splitting integer and decimal, this method obtain a better precision than + * number_format when the input is a string. + * + * @param float|int|string $numbers one or more numbers + * @param int $decimals number of decimals precision (6 by default) + * + * @return array 0-index is integer part, 1-index is decimal part digits + */ + private static function getIntegerAndDecimalParts($numbers, $decimals = 6) + { + if (\is_int($numbers) || \is_float($numbers)) { + $numbers = number_format($numbers, $decimals, '.', ''); + } + + $sign = str_starts_with($numbers, '-') ? -1 : 1; + $integer = 0; + $decimal = 0; + + foreach (preg_split('`[^\d.]+`', $numbers) as $chunk) { + [$integerPart, $decimalPart] = explode('.', "$chunk."); + + $integer += (int) $integerPart; + $decimal += (float) ("0.$decimalPart"); + } + + $overflow = floor($decimal); + $integer += $overflow; + $decimal -= $overflow; + + return [$sign * $integer, $decimal === 0.0 ? 0.0 : $sign * round($decimal * pow(10, $decimals))]; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Units.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Units.php new file mode 100644 index 00000000000..4fc7d23305b --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Units.php @@ -0,0 +1,404 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +use Carbon\CarbonConverterInterface; +use Carbon\CarbonInterface; +use Carbon\CarbonInterval; +use Carbon\Exceptions\UnitException; +use Closure; +use DateInterval; +use ReturnTypeWillChange; + +/** + * Trait Units. + * + * Add, subtract and set units. + */ +trait Units +{ + /** + * Add seconds to the instance using timestamp. Positive $value travels + * forward while negative $value travels into the past. + * + * @param string $unit + * @param int $value + * + * @return static + */ + public function addRealUnit($unit, $value = 1) + { + switch ($unit) { + // @call addRealUnit + case 'micro': + + // @call addRealUnit + case 'microsecond': + /* @var CarbonInterface $this */ + $diff = $this->microsecond + $value; + $time = $this->getTimestamp(); + $seconds = (int) floor($diff / static::MICROSECONDS_PER_SECOND); + $time += $seconds; + $diff -= $seconds * static::MICROSECONDS_PER_SECOND; + $microtime = str_pad((string) $diff, 6, '0', STR_PAD_LEFT); + $tz = $this->tz; + + return $this->tz('UTC')->modify("@$time.$microtime")->tz($tz); + + // @call addRealUnit + case 'milli': + // @call addRealUnit + case 'millisecond': + return $this->addRealUnit('microsecond', $value * static::MICROSECONDS_PER_MILLISECOND); + + // @call addRealUnit + case 'second': + break; + + // @call addRealUnit + case 'minute': + $value *= static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'hour': + $value *= static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'day': + $value *= static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'week': + $value *= static::DAYS_PER_WEEK * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'month': + $value *= 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'quarter': + $value *= static::MONTHS_PER_QUARTER * 30 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'year': + $value *= 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'decade': + $value *= static::YEARS_PER_DECADE * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'century': + $value *= static::YEARS_PER_CENTURY * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + // @call addRealUnit + case 'millennium': + $value *= static::YEARS_PER_MILLENNIUM * 365 * static::HOURS_PER_DAY * static::MINUTES_PER_HOUR * static::SECONDS_PER_MINUTE; + + break; + + default: + if ($this->localStrictModeEnabled ?? static::isStrictModeEnabled()) { + throw new UnitException("Invalid unit for real timestamp add/sub: '$unit'"); + } + + return $this; + } + + /* @var CarbonInterface $this */ + return $this->setTimestamp((int) ($this->getTimestamp() + $value)); + } + + public function subRealUnit($unit, $value = 1) + { + return $this->addRealUnit($unit, -$value); + } + + /** + * Returns true if a property can be changed via setter. + * + * @param string $unit + * + * @return bool + */ + public static function isModifiableUnit($unit) + { + static $modifiableUnits = [ + // @call addUnit + 'millennium', + // @call addUnit + 'century', + // @call addUnit + 'decade', + // @call addUnit + 'quarter', + // @call addUnit + 'week', + // @call addUnit + 'weekday', + ]; + + return \in_array($unit, $modifiableUnits, true) || \in_array($unit, static::$units, true); + } + + /** + * Call native PHP DateTime/DateTimeImmutable add() method. + * + * @param DateInterval $interval + * + * @return static + */ + public function rawAdd(DateInterval $interval) + { + return parent::add($interval); + } + + /** + * Add given units or interval to the current instance. + * + * @example $date->add('hour', 3) + * @example $date->add(15, 'days') + * @example $date->add(CarbonInterval::days(4)) + * + * @param string|DateInterval|Closure|CarbonConverterInterface $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + #[ReturnTypeWillChange] + public function add($unit, $value = 1, $overflow = null) + { + if (\is_string($unit) && \func_num_args() === 1) { + $unit = CarbonInterval::make($unit); + } + + if ($unit instanceof CarbonConverterInterface) { + return $this->resolveCarbon($unit->convertDate($this, false)); + } + + if ($unit instanceof Closure) { + return $this->resolveCarbon($unit($this, false)); + } + + if ($unit instanceof DateInterval) { + return parent::add($unit); + } + + if (is_numeric($unit)) { + [$value, $unit] = [$unit, $value]; + } + + return $this->addUnit($unit, $value, $overflow); + } + + /** + * Add given units to the current instance. + * + * @param string $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function addUnit($unit, $value = 1, $overflow = null) + { + $date = $this; + + if (!is_numeric($value) || !(float) $value) { + return $date->isMutable() ? $date : $date->avoidMutation(); + } + + $unit = self::singularUnit($unit); + $metaUnits = [ + 'millennium' => [static::YEARS_PER_MILLENNIUM, 'year'], + 'century' => [static::YEARS_PER_CENTURY, 'year'], + 'decade' => [static::YEARS_PER_DECADE, 'year'], + 'quarter' => [static::MONTHS_PER_QUARTER, 'month'], + ]; + + if (isset($metaUnits[$unit])) { + [$factor, $unit] = $metaUnits[$unit]; + $value *= $factor; + } + + if ($unit === 'weekday') { + $weekendDays = static::getWeekendDays(); + + if ($weekendDays !== [static::SATURDAY, static::SUNDAY]) { + $absoluteValue = abs($value); + $sign = $value / max(1, $absoluteValue); + $weekDaysCount = 7 - min(6, \count(array_unique($weekendDays))); + $weeks = floor($absoluteValue / $weekDaysCount); + + for ($diff = $absoluteValue % $weekDaysCount; $diff; $diff--) { + /** @var static $date */ + $date = $date->addDays($sign); + + while (\in_array($date->dayOfWeek, $weekendDays, true)) { + $date = $date->addDays($sign); + } + } + + $value = $weeks * $sign; + $unit = 'week'; + } + + $timeString = $date->toTimeString(); + } elseif ($canOverflow = (\in_array($unit, [ + 'month', + 'year', + ]) && ($overflow === false || ( + $overflow === null && + ($ucUnit = ucfirst($unit).'s') && + !($this->{'local'.$ucUnit.'Overflow'} ?? static::{'shouldOverflow'.$ucUnit}()) + )))) { + $day = $date->day; + } + + $value = (int) $value; + + if ($unit === 'milli' || $unit === 'millisecond') { + $unit = 'microsecond'; + $value *= static::MICROSECONDS_PER_MILLISECOND; + } + + // Work-around for bug https://bugs.php.net/bug.php?id=75642 + if ($unit === 'micro' || $unit === 'microsecond') { + $microseconds = $this->micro + $value; + $second = (int) floor($microseconds / static::MICROSECONDS_PER_SECOND); + $microseconds %= static::MICROSECONDS_PER_SECOND; + if ($microseconds < 0) { + $microseconds += static::MICROSECONDS_PER_SECOND; + } + $date = $date->microseconds($microseconds); + $unit = 'second'; + $value = $second; + } + $date = $date->modify("$value $unit"); + + if (isset($timeString)) { + $date = $date->setTimeFromTimeString($timeString); + } elseif (isset($canOverflow, $day) && $canOverflow && $day !== $date->day) { + $date = $date->modify('last day of previous month'); + } + + if (!$date) { + throw new UnitException('Unable to add unit '.var_export(\func_get_args(), true)); + } + + return $date; + } + + /** + * Subtract given units to the current instance. + * + * @param string $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function subUnit($unit, $value = 1, $overflow = null) + { + return $this->addUnit($unit, -$value, $overflow); + } + + /** + * Call native PHP DateTime/DateTimeImmutable sub() method. + * + * @param DateInterval $interval + * + * @return static + */ + public function rawSub(DateInterval $interval) + { + return parent::sub($interval); + } + + /** + * Subtract given units or interval to the current instance. + * + * @example $date->sub('hour', 3) + * @example $date->sub(15, 'days') + * @example $date->sub(CarbonInterval::days(4)) + * + * @param string|DateInterval|Closure|CarbonConverterInterface $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + #[ReturnTypeWillChange] + public function sub($unit, $value = 1, $overflow = null) + { + if (\is_string($unit) && \func_num_args() === 1) { + $unit = CarbonInterval::make($unit); + } + + if ($unit instanceof CarbonConverterInterface) { + return $this->resolveCarbon($unit->convertDate($this, true)); + } + + if ($unit instanceof Closure) { + return $this->resolveCarbon($unit($this, true)); + } + + if ($unit instanceof DateInterval) { + return parent::sub($unit); + } + + if (is_numeric($unit)) { + [$value, $unit] = [$unit, $value]; + } + + return $this->addUnit($unit, -(float) $value, $overflow); + } + + /** + * Subtract given units or interval to the current instance. + * + * @see sub() + * + * @param string|DateInterval $unit + * @param int $value + * @param bool|null $overflow + * + * @return static + */ + public function subtract($unit, $value = 1, $overflow = null) + { + if (\is_string($unit) && \func_num_args() === 1) { + $unit = CarbonInterval::make($unit); + } + + return $this->sub($unit, $value, $overflow); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Week.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Week.php new file mode 100644 index 00000000000..6f1481456ac --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Traits/Week.php @@ -0,0 +1,219 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon\Traits; + +/** + * Trait Week. + * + * week and ISO week number, year and count in year. + * + * Depends on the following properties: + * + * @property int $daysInYear + * @property int $dayOfWeek + * @property int $dayOfYear + * @property int $year + * + * Depends on the following methods: + * + * @method static addWeeks(int $weeks = 1) + * @method static copy() + * @method static dayOfYear(int $dayOfYear) + * @method string getTranslationMessage(string $key, ?string $locale = null, ?string $default = null, $translator = null) + * @method static next(int|string $day = null) + * @method static startOfWeek(int $day = 1) + * @method static subWeeks(int $weeks = 1) + * @method static year(int $year = null) + */ +trait Week +{ + /** + * Set/get the week number of year using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int|static + */ + public function isoWeekYear($year = null, $dayOfWeek = null, $dayOfYear = null) + { + return $this->weekYear( + $year, + $dayOfWeek ?? 1, + $dayOfYear ?? 4 + ); + } + + /** + * Set/get the week number of year using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $year if null, act as a getter, if not null, set the year and return current instance. + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int|static + */ + public function weekYear($year = null, $dayOfWeek = null, $dayOfYear = null) + { + $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; + $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; + + if ($year !== null) { + $year = (int) round($year); + + if ($this->weekYear(null, $dayOfWeek, $dayOfYear) === $year) { + return $this->avoidMutation(); + } + + $week = $this->week(null, $dayOfWeek, $dayOfYear); + $day = $this->dayOfWeek; + $date = $this->year($year); + switch ($date->weekYear(null, $dayOfWeek, $dayOfYear) - $year) { + case 1: + $date = $date->subWeeks(26); + + break; + case -1: + $date = $date->addWeeks(26); + + break; + } + + $date = $date->addWeeks($week - $date->week(null, $dayOfWeek, $dayOfYear))->startOfWeek($dayOfWeek); + + if ($date->dayOfWeek === $day) { + return $date; + } + + return $date->next($day); + } + + $year = $this->year; + $day = $this->dayOfYear; + $date = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + + if ($date->year === $year && $day < $date->dayOfYear) { + return $year - 1; + } + + $date = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + + if ($date->year === $year && $day >= $date->dayOfYear) { + return $year + 1; + } + + return $year; + } + + /** + * Get the number of weeks of the current week-year using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int + */ + public function isoWeeksInYear($dayOfWeek = null, $dayOfYear = null) + { + return $this->weeksInYear( + $dayOfWeek ?? 1, + $dayOfYear ?? 4 + ); + } + + /** + * Get the number of weeks of the current week-year using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $dayOfWeek first date of week from 0 (Sunday) to 6 (Saturday) + * @param int|null $dayOfYear first day of year included in the week #1 + * + * @return int + */ + public function weeksInYear($dayOfWeek = null, $dayOfYear = null) + { + $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; + $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; + $year = $this->year; + $start = $this->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + $startDay = $start->dayOfYear; + if ($start->year !== $year) { + $startDay -= $start->daysInYear; + } + $end = $this->avoidMutation()->addYear()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + $endDay = $end->dayOfYear; + if ($end->year !== $year) { + $endDay += $this->daysInYear; + } + + return (int) round(($endDay - $startDay) / 7); + } + + /** + * Get/set the week number using given first day of week and first + * day of year included in the first week. Or use US format if no settings + * given (Sunday / Jan 6). + * + * @param int|null $week + * @param int|null $dayOfWeek + * @param int|null $dayOfYear + * + * @return int|static + */ + public function week($week = null, $dayOfWeek = null, $dayOfYear = null) + { + $date = $this; + $dayOfWeek = $dayOfWeek ?? $this->getTranslationMessage('first_day_of_week') ?? 0; + $dayOfYear = $dayOfYear ?? $this->getTranslationMessage('day_of_first_week_of_year') ?? 1; + + if ($week !== null) { + return $date->addWeeks(round($week) - $this->week(null, $dayOfWeek, $dayOfYear)); + } + + $start = $date->avoidMutation()->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + $end = $date->avoidMutation()->startOfWeek($dayOfWeek); + if ($start > $end) { + $start = $start->subWeeks(26)->dayOfYear($dayOfYear)->startOfWeek($dayOfWeek); + } + $week = (int) ($start->diffInDays($end) / 7 + 1); + + return $week > $end->weeksInYear($dayOfWeek, $dayOfYear) ? 1 : $week; + } + + /** + * Get/set the week number using given first day of week and first + * day of year included in the first week. Or use ISO format if no settings + * given. + * + * @param int|null $week + * @param int|null $dayOfWeek + * @param int|null $dayOfYear + * + * @return int|static + */ + public function isoWeek($week = null, $dayOfWeek = null, $dayOfYear = null) + { + return $this->week( + $week, + $dayOfWeek ?? 1, + $dayOfYear ?? 4 + ); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Translator.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Translator.php new file mode 100644 index 00000000000..491c9e72048 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/Translator.php @@ -0,0 +1,32 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use ReflectionMethod; +use Symfony\Component\Translation; +use Symfony\Contracts\Translation\TranslatorInterface; + +$transMethod = new ReflectionMethod( + class_exists(TranslatorInterface::class) + ? TranslatorInterface::class + : Translation\Translator::class, + 'trans' +); + +require $transMethod->hasReturnType() + ? __DIR__.'/../../lazy/Carbon/TranslatorStrongType.php' + : __DIR__.'/../../lazy/Carbon/TranslatorWeakType.php'; + +class Translator extends LazyTranslator +{ + // Proxy dynamically loaded LazyTranslator in a static way +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php new file mode 100644 index 00000000000..ad36c6704f1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorImmutable.php @@ -0,0 +1,99 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Carbon\Exceptions\ImmutableException; +use Symfony\Component\Config\ConfigCacheFactoryInterface; +use Symfony\Component\Translation\Formatter\MessageFormatterInterface; + +class TranslatorImmutable extends Translator +{ + /** @var bool */ + private $constructed = false; + + public function __construct($locale, MessageFormatterInterface $formatter = null, $cacheDir = null, $debug = false) + { + parent::__construct($locale, $formatter, $cacheDir, $debug); + $this->constructed = true; + } + + /** + * @codeCoverageIgnore + */ + public function setDirectories(array $directories) + { + $this->disallowMutation(__METHOD__); + + return parent::setDirectories($directories); + } + + public function setLocale($locale) + { + $this->disallowMutation(__METHOD__); + + return parent::setLocale($locale); + } + + /** + * @codeCoverageIgnore + */ + public function setMessages($locale, $messages) + { + $this->disallowMutation(__METHOD__); + + return parent::setMessages($locale, $messages); + } + + /** + * @codeCoverageIgnore + */ + public function setTranslations($messages) + { + $this->disallowMutation(__METHOD__); + + return parent::setTranslations($messages); + } + + /** + * @codeCoverageIgnore + */ + public function setConfigCacheFactory(ConfigCacheFactoryInterface $configCacheFactory) + { + $this->disallowMutation(__METHOD__); + + parent::setConfigCacheFactory($configCacheFactory); + } + + public function resetMessages($locale = null) + { + $this->disallowMutation(__METHOD__); + + return parent::resetMessages($locale); + } + + /** + * @codeCoverageIgnore + */ + public function setFallbackLocales(array $locales) + { + $this->disallowMutation(__METHOD__); + + parent::setFallbackLocales($locales); + } + + private function disallowMutation($method) + { + if ($this->constructed) { + throw new ImmutableException($method.' not allowed on '.static::class); + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php new file mode 100644 index 00000000000..ef4dee8e287 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/nesbot/carbon/src/Carbon/TranslatorStrongTypeInterface.php @@ -0,0 +1,22 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Carbon; + +use Symfony\Component\Translation\MessageCatalogueInterface; + +/** + * Mark translator using strong type from symfony/translation >= 6. + */ +interface TranslatorStrongTypeInterface +{ + public function getFromCatalogue(MessageCatalogueInterface $catalogue, string $id, string $domain = 'messages'); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/.gitignore b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/.gitignore new file mode 100644 index 00000000000..c49a5d8df5c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/CHANGELOG.md b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/CHANGELOG.md new file mode 100644 index 00000000000..7932e26132d --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/CHANGELOG.md @@ -0,0 +1,5 @@ +CHANGELOG +========= + +The changelog is maintained for all Symfony contracts at the following URL: +https://github.com/symfony/contracts/blob/main/CHANGELOG.md diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/LICENSE b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/LICENSE new file mode 100644 index 00000000000..406242ff285 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020-2022 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/README.md b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/README.md new file mode 100644 index 00000000000..4957933a6cc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/README.md @@ -0,0 +1,26 @@ +Symfony Deprecation Contracts +============================= + +A generic function and convention to trigger deprecation notices. + +This package provides a single global function named `trigger_deprecation()` that triggers silenced deprecation notices. + +By using a custom PHP error handler such as the one provided by the Symfony ErrorHandler component, +the triggered deprecations can be caught and logged for later discovery, both on dev and prod environments. + +The function requires at least 3 arguments: + - the name of the Composer package that is triggering the deprecation + - the version of the package that introduced the deprecation + - the message of the deprecation + - more arguments can be provided: they will be inserted in the message using `printf()` formatting + +Example: +```php +trigger_deprecation('symfony/blockchain', '8.9', 'Using "%s" is deprecated, use "%s" instead.', 'bitcoin', 'fabcoin'); +``` + +This will generate the following message: +`Since symfony/blockchain 8.9: Using "bitcoin" is deprecated, use "fabcoin" instead.` + +While not necessarily recommended, the deprecation notices can be completely ignored by declaring an empty +`function trigger_deprecation() {}` in your application. diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/composer.json b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/composer.json new file mode 100644 index 00000000000..cc7cc12372f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/composer.json @@ -0,0 +1,35 @@ +{ + "name": "symfony/deprecation-contracts", + "type": "library", + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/function.php b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/function.php new file mode 100644 index 00000000000..d4371504a03 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/deprecation-contracts/function.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +if (!function_exists('trigger_deprecation')) { + /** + * Triggers a silenced deprecation notice. + * + * @param string $package The name of the Composer package that is triggering the deprecation + * @param string $version The version of the package that introduced the deprecation + * @param string $message The message of the deprecation + * @param mixed ...$args Values to insert in the message using printf() formatting + * + * @author Nicolas Grekas + */ + function trigger_deprecation(string $package, string $version, string $message, ...$args): void + { + @trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/Ctype.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/Ctype.php new file mode 100644 index 00000000000..ba75a2c95fc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/Ctype.php @@ -0,0 +1,232 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Ctype; + +/** + * Ctype implementation through regex. + * + * @internal + * + * @author Gert de Pagter + */ +final class Ctype +{ + /** + * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. + * + * @see https://php.net/ctype-alnum + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alnum($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is a letter, FALSE otherwise. + * + * @see https://php.net/ctype-alpha + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_alpha($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); + } + + /** + * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. + * + * @see https://php.net/ctype-cntrl + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_cntrl($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); + } + + /** + * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. + * + * @see https://php.net/ctype-digit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_digit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); + } + + /** + * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. + * + * @see https://php.net/ctype-graph + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_graph($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); + } + + /** + * Returns TRUE if every character in text is a lowercase letter. + * + * @see https://php.net/ctype-lower + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_lower($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); + } + + /** + * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. + * + * @see https://php.net/ctype-print + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_print($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); + } + + /** + * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. + * + * @see https://php.net/ctype-punct + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_punct($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); + } + + /** + * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. + * + * @see https://php.net/ctype-space + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_space($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); + } + + /** + * Returns TRUE if every character in text is an uppercase letter. + * + * @see https://php.net/ctype-upper + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_upper($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); + } + + /** + * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. + * + * @see https://php.net/ctype-xdigit + * + * @param mixed $text + * + * @return bool + */ + public static function ctype_xdigit($text) + { + $text = self::convert_int_to_char_for_ctype($text, __FUNCTION__); + + return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); + } + + /** + * Converts integers to their char versions according to normal ctype behaviour, if needed. + * + * If an integer between -128 and 255 inclusive is provided, + * it is interpreted as the ASCII value of a single character + * (negative values have 256 added in order to allow characters in the Extended ASCII range). + * Any other integer is interpreted as a string containing the decimal digits of the integer. + * + * @param mixed $int + * @param string $function + * + * @return mixed + */ + private static function convert_int_to_char_for_ctype($int, $function) + { + if (!\is_int($int)) { + return $int; + } + + if ($int < -128 || $int > 255) { + return (string) $int; + } + + if (\PHP_VERSION_ID >= 80100) { + @trigger_error($function.'(): Argument of type int will be interpreted as string in the future', \E_USER_DEPRECATED); + } + + if ($int < 0) { + $int += 256; + } + + return \chr($int); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/LICENSE b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/LICENSE new file mode 100644 index 00000000000..3f853aaf35f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2018-2019 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/README.md b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/README.md new file mode 100644 index 00000000000..b144d03c3c6 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/README.md @@ -0,0 +1,12 @@ +Symfony Polyfill / Ctype +======================== + +This component provides `ctype_*` functions to users who run php versions without the ctype extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap.php new file mode 100644 index 00000000000..d54524b31b4 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap.php @@ -0,0 +1,50 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('ctype_alnum')) { + function ctype_alnum($text) { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha($text) { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl($text) { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit($text) { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph($text) { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower($text) { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print($text) { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct($text) { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space($text) { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper($text) { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit($text) { return p\Ctype::ctype_xdigit($text); } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap80.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap80.php new file mode 100644 index 00000000000..ab2f8611dac --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/bootstrap80.php @@ -0,0 +1,46 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Ctype as p; + +if (!function_exists('ctype_alnum')) { + function ctype_alnum(mixed $text): bool { return p\Ctype::ctype_alnum($text); } +} +if (!function_exists('ctype_alpha')) { + function ctype_alpha(mixed $text): bool { return p\Ctype::ctype_alpha($text); } +} +if (!function_exists('ctype_cntrl')) { + function ctype_cntrl(mixed $text): bool { return p\Ctype::ctype_cntrl($text); } +} +if (!function_exists('ctype_digit')) { + function ctype_digit(mixed $text): bool { return p\Ctype::ctype_digit($text); } +} +if (!function_exists('ctype_graph')) { + function ctype_graph(mixed $text): bool { return p\Ctype::ctype_graph($text); } +} +if (!function_exists('ctype_lower')) { + function ctype_lower(mixed $text): bool { return p\Ctype::ctype_lower($text); } +} +if (!function_exists('ctype_print')) { + function ctype_print(mixed $text): bool { return p\Ctype::ctype_print($text); } +} +if (!function_exists('ctype_punct')) { + function ctype_punct(mixed $text): bool { return p\Ctype::ctype_punct($text); } +} +if (!function_exists('ctype_space')) { + function ctype_space(mixed $text): bool { return p\Ctype::ctype_space($text); } +} +if (!function_exists('ctype_upper')) { + function ctype_upper(mixed $text): bool { return p\Ctype::ctype_upper($text); } +} +if (!function_exists('ctype_xdigit')) { + function ctype_xdigit(mixed $text): bool { return p\Ctype::ctype_xdigit($text); } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/composer.json b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/composer.json new file mode 100644 index 00000000000..ee5c931cd1c --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-ctype/composer.json @@ -0,0 +1,41 @@ +{ + "name": "symfony/polyfill-ctype", + "type": "library", + "description": "Symfony polyfill for ctype functions", + "keywords": ["polyfill", "compatibility", "portable", "ctype"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Ctype\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/LICENSE b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/LICENSE new file mode 100644 index 00000000000..4cd8bdd3007 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2019 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Mbstring.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Mbstring.php new file mode 100644 index 00000000000..693749f22b8 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Mbstring.php @@ -0,0 +1,873 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Mbstring; + +/** + * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. + * + * Implemented: + * - mb_chr - Returns a specific character from its Unicode code point + * - mb_convert_encoding - Convert character encoding + * - mb_convert_variables - Convert character code in variable(s) + * - mb_decode_mimeheader - Decode string in MIME header field + * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED + * - mb_decode_numericentity - Decode HTML numeric string reference to character + * - mb_encode_numericentity - Encode character to HTML numeric string reference + * - mb_convert_case - Perform case folding on a string + * - mb_detect_encoding - Detect character encoding + * - mb_get_info - Get internal settings of mbstring + * - mb_http_input - Detect HTTP input character encoding + * - mb_http_output - Set/Get HTTP output character encoding + * - mb_internal_encoding - Set/Get internal character encoding + * - mb_list_encodings - Returns an array of all supported encodings + * - mb_ord - Returns the Unicode code point of a character + * - mb_output_handler - Callback function converts character encoding in output buffer + * - mb_scrub - Replaces ill-formed byte sequences with substitute characters + * - mb_strlen - Get string length + * - mb_strpos - Find position of first occurrence of string in a string + * - mb_strrpos - Find position of last occurrence of a string in a string + * - mb_str_split - Convert a string to an array + * - mb_strtolower - Make a string lowercase + * - mb_strtoupper - Make a string uppercase + * - mb_substitute_character - Set/Get substitution character + * - mb_substr - Get part of string + * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive + * - mb_stristr - Finds first occurrence of a string within another, case insensitive + * - mb_strrchr - Finds the last occurrence of a character in a string within another + * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive + * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive + * - mb_strstr - Finds first occurrence of a string within another + * - mb_strwidth - Return width of string + * - mb_substr_count - Count the number of substring occurrences + * + * Not implemented: + * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) + * - mb_ereg_* - Regular expression with multibyte support + * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable + * - mb_preferred_mime_name - Get MIME charset string + * - mb_regex_encoding - Returns current encoding for multibyte regex as string + * - mb_regex_set_options - Set/Get the default options for mbregex functions + * - mb_send_mail - Send encoded mail + * - mb_split - Split multibyte string using regular expression + * - mb_strcut - Get part of string + * - mb_strimwidth - Get truncated string with specified width + * + * @author Nicolas Grekas + * + * @internal + */ +final class Mbstring +{ + public const MB_CASE_FOLD = \PHP_INT_MAX; + + private const CASE_FOLD = [ + ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], + ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], + ]; + + private static $encodingList = ['ASCII', 'UTF-8']; + private static $language = 'neutral'; + private static $internalEncoding = 'UTF-8'; + + public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) + { + if (\is_array($fromEncoding) || ($fromEncoding !== null && false !== strpos($fromEncoding, ','))) { + $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); + } else { + $fromEncoding = self::getEncoding($fromEncoding); + } + + $toEncoding = self::getEncoding($toEncoding); + + if ('BASE64' === $fromEncoding) { + $s = base64_decode($s); + $fromEncoding = $toEncoding; + } + + if ('BASE64' === $toEncoding) { + return base64_encode($s); + } + + if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { + if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { + $fromEncoding = 'Windows-1252'; + } + if ('UTF-8' !== $fromEncoding) { + $s = \iconv($fromEncoding, 'UTF-8//IGNORE', $s); + } + + return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s); + } + + if ('HTML-ENTITIES' === $fromEncoding) { + $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8'); + $fromEncoding = 'UTF-8'; + } + + return \iconv($fromEncoding, $toEncoding.'//IGNORE', $s); + } + + public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars) + { + $ok = true; + array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { + if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { + $ok = false; + } + }); + + return $ok ? $fromEncoding : false; + } + + public static function mb_decode_mimeheader($s) + { + return \iconv_mime_decode($s, 2, self::$internalEncoding); + } + + public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) + { + trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING); + } + + public static function mb_decode_numericentity($s, $convmap, $encoding = null) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return ''; // Instead of null (cf. mb_encode_numericentity). + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $cnt = floor(\count($convmap) / 4) * 4; + + for ($i = 0; $i < $cnt; $i += 4) { + // collector_decode_htmlnumericentity ignores $convmap[$i + 3] + $convmap[$i] += $convmap[$i + 2]; + $convmap[$i + 1] += $convmap[$i + 2]; + } + + $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { + $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; + for ($i = 0; $i < $cnt; $i += 4) { + if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { + return self::mb_chr($c - $convmap[$i + 2]); + } + } + + return $m[0]; + }, $s); + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; // Instead of '' (cf. mb_decode_numericentity). + } + + if (null !== $is_hex && !is_scalar($is_hex)) { + trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $cnt = floor(\count($convmap) / 4) * 4; + $i = 0; + $len = \strlen($s); + $result = ''; + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + $c = self::mb_ord($uchr); + + for ($j = 0; $j < $cnt; $j += 4) { + if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { + $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; + $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; + continue 2; + } + } + $result .= $uchr; + } + + if (null === $encoding) { + return $result; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $result); + } + + public static function mb_convert_case($s, $mode, $encoding = null) + { + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + if (\MB_CASE_TITLE == $mode) { + static $titleRegexp = null; + if (null === $titleRegexp) { + $titleRegexp = self::getData('titleCaseRegexp'); + } + $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); + } else { + if (\MB_CASE_UPPER == $mode) { + static $upper = null; + if (null === $upper) { + $upper = self::getData('upperCase'); + } + $map = $upper; + } else { + if (self::MB_CASE_FOLD === $mode) { + $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); + } + + static $lower = null; + if (null === $lower) { + $lower = self::getData('lowerCase'); + } + $map = $lower; + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $i = 0; + $len = \strlen($s); + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + + if (isset($map[$uchr])) { + $uchr = $map[$uchr]; + $nlen = \strlen($uchr); + + if ($nlen == $ulen) { + $nlen = $i; + do { + $s[--$nlen] = $uchr[--$ulen]; + } while ($ulen); + } else { + $s = substr_replace($s, $uchr, $i - $ulen, $ulen); + $len += $nlen - $ulen; + $i += $nlen - $ulen; + } + } + } + } + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_internal_encoding($encoding = null) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + $normalizedEncoding = self::getEncoding($encoding); + + if ('UTF-8' === $normalizedEncoding || false !== @\iconv($normalizedEncoding, $normalizedEncoding, ' ')) { + self::$internalEncoding = $normalizedEncoding; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); + } + + public static function mb_language($lang = null) + { + if (null === $lang) { + return self::$language; + } + + switch ($normalizedLang = strtolower($lang)) { + case 'uni': + case 'neutral': + self::$language = $normalizedLang; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); + } + + public static function mb_list_encodings() + { + return ['UTF-8']; + } + + public static function mb_encoding_aliases($encoding) + { + switch (strtoupper($encoding)) { + case 'UTF8': + case 'UTF-8': + return ['utf8']; + } + + return false; + } + + public static function mb_check_encoding($var = null, $encoding = null) + { + if (null === $encoding) { + if (null === $var) { + return false; + } + $encoding = self::$internalEncoding; + } + + return self::mb_detect_encoding($var, [$encoding]) || false !== @\iconv($encoding, $encoding, $var); + } + + public static function mb_detect_encoding($str, $encodingList = null, $strict = false) + { + if (null === $encodingList) { + $encodingList = self::$encodingList; + } else { + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + } + + foreach ($encodingList as $enc) { + switch ($enc) { + case 'ASCII': + if (!preg_match('/[\x80-\xFF]/', $str)) { + return $enc; + } + break; + + case 'UTF8': + case 'UTF-8': + if (preg_match('//u', $str)) { + return 'UTF-8'; + } + break; + + default: + if (0 === strncmp($enc, 'ISO-8859-', 9)) { + return $enc; + } + } + } + + return false; + } + + public static function mb_detect_order($encodingList = null) + { + if (null === $encodingList) { + return self::$encodingList; + } + + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + + foreach ($encodingList as $enc) { + switch ($enc) { + default: + if (strncmp($enc, 'ISO-8859-', 9)) { + return false; + } + // no break + case 'ASCII': + case 'UTF8': + case 'UTF-8': + } + } + + self::$encodingList = $encodingList; + + return true; + } + + public static function mb_strlen($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return \strlen($s); + } + + return @\iconv_strlen($s, $encoding); + } + + public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strpos($haystack, $needle, $offset); + } + + $needle = (string) $needle; + if ('' === $needle) { + if (80000 > \PHP_VERSION_ID) { + trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); + + return false; + } + + return 0; + } + + return \iconv_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strrpos($haystack, $needle, $offset); + } + + if ($offset != (int) $offset) { + $offset = 0; + } elseif ($offset = (int) $offset) { + if ($offset < 0) { + if (0 > $offset += self::mb_strlen($needle)) { + $haystack = self::mb_substr($haystack, 0, $offset, $encoding); + } + $offset = 0; + } else { + $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); + } + } + + $pos = '' !== $needle || 80000 > \PHP_VERSION_ID + ? \iconv_strrpos($haystack, $needle, $encoding) + : self::mb_strlen($haystack, $encoding); + + return false !== $pos ? $offset + $pos : false; + } + + public static function mb_str_split($string, $split_length = 1, $encoding = null) + { + if (null !== $string && !is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { + trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); + + return null; + } + + if (1 > $split_length = (int) $split_length) { + if (80000 > \PHP_VERSION_ID) { + trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); + return false; + } + + throw new \ValueError('Argument #2 ($length) must be greater than 0'); + } + + if (null === $encoding) { + $encoding = mb_internal_encoding(); + } + + if ('UTF-8' === $encoding = self::getEncoding($encoding)) { + $rx = '/('; + while (65535 < $split_length) { + $rx .= '.{65535}'; + $split_length -= 65535; + } + $rx .= '.{'.$split_length.'})/us'; + + return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); + } + + $result = []; + $length = mb_strlen($string, $encoding); + + for ($i = 0; $i < $length; $i += $split_length) { + $result[] = mb_substr($string, $i, $split_length, $encoding); + } + + return $result; + } + + public static function mb_strtolower($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); + } + + public static function mb_strtoupper($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); + } + + public static function mb_substitute_character($c = null) + { + if (null === $c) { + return 'none'; + } + if (0 === strcasecmp($c, 'none')) { + return true; + } + if (80000 > \PHP_VERSION_ID) { + return false; + } + if (\is_int($c) || 'long' === $c || 'entity' === $c) { + return false; + } + + throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); + } + + public static function mb_substr($s, $start, $length = null, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return (string) substr($s, $start, null === $length ? 2147483647 : $length); + } + + if ($start < 0) { + $start = \iconv_strlen($s, $encoding) + $start; + if ($start < 0) { + $start = 0; + } + } + + if (null === $length) { + $length = 2147483647; + } elseif ($length < 0) { + $length = \iconv_strlen($s, $encoding) + $length - $start; + if ($length < 0) { + return ''; + } + } + + return (string) \iconv_substr($s, $start, $length, $encoding); + } + + public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) + { + $pos = self::mb_stripos($haystack, $needle, 0, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + $pos = strrpos($haystack, $needle); + } else { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = \iconv_strrpos($haystack, $needle, $encoding); + } + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) + { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = self::mb_strripos($haystack, $needle, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strrpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) + { + $pos = strpos($haystack, $needle); + if (false === $pos) { + return false; + } + if ($part) { + return substr($haystack, 0, $pos); + } + + return substr($haystack, $pos); + } + + public static function mb_get_info($type = 'all') + { + $info = [ + 'internal_encoding' => self::$internalEncoding, + 'http_output' => 'pass', + 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', + 'func_overload' => 0, + 'func_overload_list' => 'no overload', + 'mail_charset' => 'UTF-8', + 'mail_header_encoding' => 'BASE64', + 'mail_body_encoding' => 'BASE64', + 'illegal_chars' => 0, + 'encoding_translation' => 'Off', + 'language' => self::$language, + 'detect_order' => self::$encodingList, + 'substitute_character' => 'none', + 'strict_detection' => 'Off', + ]; + + if ('all' === $type) { + return $info; + } + if (isset($info[$type])) { + return $info[$type]; + } + + return false; + } + + public static function mb_http_input($type = '') + { + return false; + } + + public static function mb_http_output($encoding = null) + { + return null !== $encoding ? 'pass' === $encoding : 'pass'; + } + + public static function mb_strwidth($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + + if ('UTF-8' !== $encoding) { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); + + return ($wide << 1) + \iconv_strlen($s, 'UTF-8'); + } + + public static function mb_substr_count($haystack, $needle, $encoding = null) + { + return substr_count($haystack, $needle); + } + + public static function mb_output_handler($contents, $status) + { + return $contents; + } + + public static function mb_chr($code, $encoding = null) + { + if (0x80 > $code %= 0x200000) { + $s = \chr($code); + } elseif (0x800 > $code) { + $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); + } elseif (0x10000 > $code) { + $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } else { + $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } + + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, $encoding, 'UTF-8'); + } + + return $s; + } + + public static function mb_ord($s, $encoding = null) + { + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, 'UTF-8', $encoding); + } + + if (1 === \strlen($s)) { + return \ord($s); + } + + $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; + if (0xF0 <= $code) { + return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; + } + if (0xE0 <= $code) { + return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; + } + if (0xC0 <= $code) { + return (($code - 0xC0) << 6) + $s[2] - 0x80; + } + + return $code; + } + + private static function getSubpart($pos, $part, $haystack, $encoding) + { + if (false === $pos) { + return false; + } + if ($part) { + return self::mb_substr($haystack, 0, $pos, $encoding); + } + + return self::mb_substr($haystack, $pos, null, $encoding); + } + + private static function html_encoding_callback(array $m) + { + $i = 1; + $entities = ''; + $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); + + while (isset($m[$i])) { + if (0x80 > $m[$i]) { + $entities .= \chr($m[$i++]); + continue; + } + if (0xF0 <= $m[$i]) { + $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } elseif (0xE0 <= $m[$i]) { + $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } else { + $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; + } + + $entities .= '&#'.$c.';'; + } + + return $entities; + } + + private static function title_case(array $s) + { + return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); + } + + private static function getData($file) + { + if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { + return require $file; + } + + return false; + } + + private static function getEncoding($encoding) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + if ('UTF-8' === $encoding) { + return 'UTF-8'; + } + + $encoding = strtoupper($encoding); + + if ('8BIT' === $encoding || 'BINARY' === $encoding) { + return 'CP850'; + } + + if ('UTF8' === $encoding) { + return 'UTF-8'; + } + + return $encoding; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/README.md b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/README.md new file mode 100644 index 00000000000..478b40da25e --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/README.md @@ -0,0 +1,13 @@ +Symfony Polyfill / Mbstring +=========================== + +This component provides a partial, native PHP implementation for the +[Mbstring](https://php.net/mbstring) extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php new file mode 100644 index 00000000000..fac60b081a1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php @@ -0,0 +1,1397 @@ + 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + 'À' => 'à', + 'Á' => 'á', + 'Â' => 'â', + 'Ã' => 'ã', + 'Ä' => 'ä', + 'Å' => 'å', + 'Æ' => 'æ', + 'Ç' => 'ç', + 'È' => 'è', + 'É' => 'é', + 'Ê' => 'ê', + 'Ë' => 'ë', + 'Ì' => 'ì', + 'Í' => 'í', + 'Î' => 'î', + 'Ï' => 'ï', + 'Ð' => 'ð', + 'Ñ' => 'ñ', + 'Ò' => 'ò', + 'Ó' => 'ó', + 'Ô' => 'ô', + 'Õ' => 'õ', + 'Ö' => 'ö', + 'Ø' => 'ø', + 'Ù' => 'ù', + 'Ú' => 'ú', + 'Û' => 'û', + 'Ü' => 'ü', + 'Ý' => 'ý', + 'Þ' => 'þ', + 'Ā' => 'ā', + 'Ă' => 'ă', + 'Ą' => 'ą', + 'Ć' => 'ć', + 'Ĉ' => 'ĉ', + 'Ċ' => 'ċ', + 'Č' => 'č', + 'Ď' => 'ď', + 'Đ' => 'đ', + 'Ē' => 'ē', + 'Ĕ' => 'ĕ', + 'Ė' => 'ė', + 'Ę' => 'ę', + 'Ě' => 'ě', + 'Ĝ' => 'ĝ', + 'Ğ' => 'ğ', + 'Ġ' => 'ġ', + 'Ģ' => 'ģ', + 'Ĥ' => 'ĥ', + 'Ħ' => 'ħ', + 'Ĩ' => 'ĩ', + 'Ī' => 'ī', + 'Ĭ' => 'ĭ', + 'Į' => 'į', + 'İ' => 'i̇', + 'IJ' => 'ij', + 'Ĵ' => 'ĵ', + 'Ķ' => 'ķ', + 'Ĺ' => 'ĺ', + 'Ļ' => 'ļ', + 'Ľ' => 'ľ', + 'Ŀ' => 'ŀ', + 'Ł' => 'ł', + 'Ń' => 'ń', + 'Ņ' => 'ņ', + 'Ň' => 'ň', + 'Ŋ' => 'ŋ', + 'Ō' => 'ō', + 'Ŏ' => 'ŏ', + 'Ő' => 'ő', + 'Œ' => 'œ', + 'Ŕ' => 'ŕ', + 'Ŗ' => 'ŗ', + 'Ř' => 'ř', + 'Ś' => 'ś', + 'Ŝ' => 'ŝ', + 'Ş' => 'ş', + 'Š' => 'š', + 'Ţ' => 'ţ', + 'Ť' => 'ť', + 'Ŧ' => 'ŧ', + 'Ũ' => 'ũ', + 'Ū' => 'ū', + 'Ŭ' => 'ŭ', + 'Ů' => 'ů', + 'Ű' => 'ű', + 'Ų' => 'ų', + 'Ŵ' => 'ŵ', + 'Ŷ' => 'ŷ', + 'Ÿ' => 'ÿ', + 'Ź' => 'ź', + 'Ż' => 'ż', + 'Ž' => 'ž', + 'Ɓ' => 'ɓ', + 'Ƃ' => 'ƃ', + 'Ƅ' => 'ƅ', + 'Ɔ' => 'ɔ', + 'Ƈ' => 'ƈ', + 'Ɖ' => 'ɖ', + 'Ɗ' => 'ɗ', + 'Ƌ' => 'ƌ', + 'Ǝ' => 'ǝ', + 'Ə' => 'ə', + 'Ɛ' => 'ɛ', + 'Ƒ' => 'ƒ', + 'Ɠ' => 'ɠ', + 'Ɣ' => 'ɣ', + 'Ɩ' => 'ɩ', + 'Ɨ' => 'ɨ', + 'Ƙ' => 'ƙ', + 'Ɯ' => 'ɯ', + 'Ɲ' => 'ɲ', + 'Ɵ' => 'ɵ', + 'Ơ' => 'ơ', + 'Ƣ' => 'ƣ', + 'Ƥ' => 'ƥ', + 'Ʀ' => 'ʀ', + 'Ƨ' => 'ƨ', + 'Ʃ' => 'ʃ', + 'Ƭ' => 'ƭ', + 'Ʈ' => 'ʈ', + 'Ư' => 'ư', + 'Ʊ' => 'ʊ', + 'Ʋ' => 'ʋ', + 'Ƴ' => 'ƴ', + 'Ƶ' => 'ƶ', + 'Ʒ' => 'ʒ', + 'Ƹ' => 'ƹ', + 'Ƽ' => 'ƽ', + 'DŽ' => 'dž', + 'Dž' => 'dž', + 'LJ' => 'lj', + 'Lj' => 'lj', + 'NJ' => 'nj', + 'Nj' => 'nj', + 'Ǎ' => 'ǎ', + 'Ǐ' => 'ǐ', + 'Ǒ' => 'ǒ', + 'Ǔ' => 'ǔ', + 'Ǖ' => 'ǖ', + 'Ǘ' => 'ǘ', + 'Ǚ' => 'ǚ', + 'Ǜ' => 'ǜ', + 'Ǟ' => 'ǟ', + 'Ǡ' => 'ǡ', + 'Ǣ' => 'ǣ', + 'Ǥ' => 'ǥ', + 'Ǧ' => 'ǧ', + 'Ǩ' => 'ǩ', + 'Ǫ' => 'ǫ', + 'Ǭ' => 'ǭ', + 'Ǯ' => 'ǯ', + 'DZ' => 'dz', + 'Dz' => 'dz', + 'Ǵ' => 'ǵ', + 'Ƕ' => 'ƕ', + 'Ƿ' => 'ƿ', + 'Ǹ' => 'ǹ', + 'Ǻ' => 'ǻ', + 'Ǽ' => 'ǽ', + 'Ǿ' => 'ǿ', + 'Ȁ' => 'ȁ', + 'Ȃ' => 'ȃ', + 'Ȅ' => 'ȅ', + 'Ȇ' => 'ȇ', + 'Ȉ' => 'ȉ', + 'Ȋ' => 'ȋ', + 'Ȍ' => 'ȍ', + 'Ȏ' => 'ȏ', + 'Ȑ' => 'ȑ', + 'Ȓ' => 'ȓ', + 'Ȕ' => 'ȕ', + 'Ȗ' => 'ȗ', + 'Ș' => 'ș', + 'Ț' => 'ț', + 'Ȝ' => 'ȝ', + 'Ȟ' => 'ȟ', + 'Ƞ' => 'ƞ', + 'Ȣ' => 'ȣ', + 'Ȥ' => 'ȥ', + 'Ȧ' => 'ȧ', + 'Ȩ' => 'ȩ', + 'Ȫ' => 'ȫ', + 'Ȭ' => 'ȭ', + 'Ȯ' => 'ȯ', + 'Ȱ' => 'ȱ', + 'Ȳ' => 'ȳ', + 'Ⱥ' => 'ⱥ', + 'Ȼ' => 'ȼ', + 'Ƚ' => 'ƚ', + 'Ⱦ' => 'ⱦ', + 'Ɂ' => 'ɂ', + 'Ƀ' => 'ƀ', + 'Ʉ' => 'ʉ', + 'Ʌ' => 'ʌ', + 'Ɇ' => 'ɇ', + 'Ɉ' => 'ɉ', + 'Ɋ' => 'ɋ', + 'Ɍ' => 'ɍ', + 'Ɏ' => 'ɏ', + 'Ͱ' => 'ͱ', + 'Ͳ' => 'ͳ', + 'Ͷ' => 'ͷ', + 'Ϳ' => 'ϳ', + 'Ά' => 'ά', + 'Έ' => 'έ', + 'Ή' => 'ή', + 'Ί' => 'ί', + 'Ό' => 'ό', + 'Ύ' => 'ύ', + 'Ώ' => 'ώ', + 'Α' => 'α', + 'Β' => 'β', + 'Γ' => 'γ', + 'Δ' => 'δ', + 'Ε' => 'ε', + 'Ζ' => 'ζ', + 'Η' => 'η', + 'Θ' => 'θ', + 'Ι' => 'ι', + 'Κ' => 'κ', + 'Λ' => 'λ', + 'Μ' => 'μ', + 'Ν' => 'ν', + 'Ξ' => 'ξ', + 'Ο' => 'ο', + 'Π' => 'π', + 'Ρ' => 'ρ', + 'Σ' => 'σ', + 'Τ' => 'τ', + 'Υ' => 'υ', + 'Φ' => 'φ', + 'Χ' => 'χ', + 'Ψ' => 'ψ', + 'Ω' => 'ω', + 'Ϊ' => 'ϊ', + 'Ϋ' => 'ϋ', + 'Ϗ' => 'ϗ', + 'Ϙ' => 'ϙ', + 'Ϛ' => 'ϛ', + 'Ϝ' => 'ϝ', + 'Ϟ' => 'ϟ', + 'Ϡ' => 'ϡ', + 'Ϣ' => 'ϣ', + 'Ϥ' => 'ϥ', + 'Ϧ' => 'ϧ', + 'Ϩ' => 'ϩ', + 'Ϫ' => 'ϫ', + 'Ϭ' => 'ϭ', + 'Ϯ' => 'ϯ', + 'ϴ' => 'θ', + 'Ϸ' => 'ϸ', + 'Ϲ' => 'ϲ', + 'Ϻ' => 'ϻ', + 'Ͻ' => 'ͻ', + 'Ͼ' => 'ͼ', + 'Ͽ' => 'ͽ', + 'Ѐ' => 'ѐ', + 'Ё' => 'ё', + 'Ђ' => 'ђ', + 'Ѓ' => 'ѓ', + 'Є' => 'є', + 'Ѕ' => 'ѕ', + 'І' => 'і', + 'Ї' => 'ї', + 'Ј' => 'ј', + 'Љ' => 'љ', + 'Њ' => 'њ', + 'Ћ' => 'ћ', + 'Ќ' => 'ќ', + 'Ѝ' => 'ѝ', + 'Ў' => 'ў', + 'Џ' => 'џ', + 'А' => 'а', + 'Б' => 'б', + 'В' => 'в', + 'Г' => 'г', + 'Д' => 'д', + 'Е' => 'е', + 'Ж' => 'ж', + 'З' => 'з', + 'И' => 'и', + 'Й' => 'й', + 'К' => 'к', + 'Л' => 'л', + 'М' => 'м', + 'Н' => 'н', + 'О' => 'о', + 'П' => 'п', + 'Р' => 'р', + 'С' => 'с', + 'Т' => 'т', + 'У' => 'у', + 'Ф' => 'ф', + 'Х' => 'х', + 'Ц' => 'ц', + 'Ч' => 'ч', + 'Ш' => 'ш', + 'Щ' => 'щ', + 'Ъ' => 'ъ', + 'Ы' => 'ы', + 'Ь' => 'ь', + 'Э' => 'э', + 'Ю' => 'ю', + 'Я' => 'я', + 'Ѡ' => 'ѡ', + 'Ѣ' => 'ѣ', + 'Ѥ' => 'ѥ', + 'Ѧ' => 'ѧ', + 'Ѩ' => 'ѩ', + 'Ѫ' => 'ѫ', + 'Ѭ' => 'ѭ', + 'Ѯ' => 'ѯ', + 'Ѱ' => 'ѱ', + 'Ѳ' => 'ѳ', + 'Ѵ' => 'ѵ', + 'Ѷ' => 'ѷ', + 'Ѹ' => 'ѹ', + 'Ѻ' => 'ѻ', + 'Ѽ' => 'ѽ', + 'Ѿ' => 'ѿ', + 'Ҁ' => 'ҁ', + 'Ҋ' => 'ҋ', + 'Ҍ' => 'ҍ', + 'Ҏ' => 'ҏ', + 'Ґ' => 'ґ', + 'Ғ' => 'ғ', + 'Ҕ' => 'ҕ', + 'Җ' => 'җ', + 'Ҙ' => 'ҙ', + 'Қ' => 'қ', + 'Ҝ' => 'ҝ', + 'Ҟ' => 'ҟ', + 'Ҡ' => 'ҡ', + 'Ң' => 'ң', + 'Ҥ' => 'ҥ', + 'Ҧ' => 'ҧ', + 'Ҩ' => 'ҩ', + 'Ҫ' => 'ҫ', + 'Ҭ' => 'ҭ', + 'Ү' => 'ү', + 'Ұ' => 'ұ', + 'Ҳ' => 'ҳ', + 'Ҵ' => 'ҵ', + 'Ҷ' => 'ҷ', + 'Ҹ' => 'ҹ', + 'Һ' => 'һ', + 'Ҽ' => 'ҽ', + 'Ҿ' => 'ҿ', + 'Ӏ' => 'ӏ', + 'Ӂ' => 'ӂ', + 'Ӄ' => 'ӄ', + 'Ӆ' => 'ӆ', + 'Ӈ' => 'ӈ', + 'Ӊ' => 'ӊ', + 'Ӌ' => 'ӌ', + 'Ӎ' => 'ӎ', + 'Ӑ' => 'ӑ', + 'Ӓ' => 'ӓ', + 'Ӕ' => 'ӕ', + 'Ӗ' => 'ӗ', + 'Ә' => 'ә', + 'Ӛ' => 'ӛ', + 'Ӝ' => 'ӝ', + 'Ӟ' => 'ӟ', + 'Ӡ' => 'ӡ', + 'Ӣ' => 'ӣ', + 'Ӥ' => 'ӥ', + 'Ӧ' => 'ӧ', + 'Ө' => 'ө', + 'Ӫ' => 'ӫ', + 'Ӭ' => 'ӭ', + 'Ӯ' => 'ӯ', + 'Ӱ' => 'ӱ', + 'Ӳ' => 'ӳ', + 'Ӵ' => 'ӵ', + 'Ӷ' => 'ӷ', + 'Ӹ' => 'ӹ', + 'Ӻ' => 'ӻ', + 'Ӽ' => 'ӽ', + 'Ӿ' => 'ӿ', + 'Ԁ' => 'ԁ', + 'Ԃ' => 'ԃ', + 'Ԅ' => 'ԅ', + 'Ԇ' => 'ԇ', + 'Ԉ' => 'ԉ', + 'Ԋ' => 'ԋ', + 'Ԍ' => 'ԍ', + 'Ԏ' => 'ԏ', + 'Ԑ' => 'ԑ', + 'Ԓ' => 'ԓ', + 'Ԕ' => 'ԕ', + 'Ԗ' => 'ԗ', + 'Ԙ' => 'ԙ', + 'Ԛ' => 'ԛ', + 'Ԝ' => 'ԝ', + 'Ԟ' => 'ԟ', + 'Ԡ' => 'ԡ', + 'Ԣ' => 'ԣ', + 'Ԥ' => 'ԥ', + 'Ԧ' => 'ԧ', + 'Ԩ' => 'ԩ', + 'Ԫ' => 'ԫ', + 'Ԭ' => 'ԭ', + 'Ԯ' => 'ԯ', + 'Ա' => 'ա', + 'Բ' => 'բ', + 'Գ' => 'գ', + 'Դ' => 'դ', + 'Ե' => 'ե', + 'Զ' => 'զ', + 'Է' => 'է', + 'Ը' => 'ը', + 'Թ' => 'թ', + 'Ժ' => 'ժ', + 'Ի' => 'ի', + 'Լ' => 'լ', + 'Խ' => 'խ', + 'Ծ' => 'ծ', + 'Կ' => 'կ', + 'Հ' => 'հ', + 'Ձ' => 'ձ', + 'Ղ' => 'ղ', + 'Ճ' => 'ճ', + 'Մ' => 'մ', + 'Յ' => 'յ', + 'Ն' => 'ն', + 'Շ' => 'շ', + 'Ո' => 'ո', + 'Չ' => 'չ', + 'Պ' => 'պ', + 'Ջ' => 'ջ', + 'Ռ' => 'ռ', + 'Ս' => 'ս', + 'Վ' => 'վ', + 'Տ' => 'տ', + 'Ր' => 'ր', + 'Ց' => 'ց', + 'Ւ' => 'ւ', + 'Փ' => 'փ', + 'Ք' => 'ք', + 'Օ' => 'օ', + 'Ֆ' => 'ֆ', + 'Ⴀ' => 'ⴀ', + 'Ⴁ' => 'ⴁ', + 'Ⴂ' => 'ⴂ', + 'Ⴃ' => 'ⴃ', + 'Ⴄ' => 'ⴄ', + 'Ⴅ' => 'ⴅ', + 'Ⴆ' => 'ⴆ', + 'Ⴇ' => 'ⴇ', + 'Ⴈ' => 'ⴈ', + 'Ⴉ' => 'ⴉ', + 'Ⴊ' => 'ⴊ', + 'Ⴋ' => 'ⴋ', + 'Ⴌ' => 'ⴌ', + 'Ⴍ' => 'ⴍ', + 'Ⴎ' => 'ⴎ', + 'Ⴏ' => 'ⴏ', + 'Ⴐ' => 'ⴐ', + 'Ⴑ' => 'ⴑ', + 'Ⴒ' => 'ⴒ', + 'Ⴓ' => 'ⴓ', + 'Ⴔ' => 'ⴔ', + 'Ⴕ' => 'ⴕ', + 'Ⴖ' => 'ⴖ', + 'Ⴗ' => 'ⴗ', + 'Ⴘ' => 'ⴘ', + 'Ⴙ' => 'ⴙ', + 'Ⴚ' => 'ⴚ', + 'Ⴛ' => 'ⴛ', + 'Ⴜ' => 'ⴜ', + 'Ⴝ' => 'ⴝ', + 'Ⴞ' => 'ⴞ', + 'Ⴟ' => 'ⴟ', + 'Ⴠ' => 'ⴠ', + 'Ⴡ' => 'ⴡ', + 'Ⴢ' => 'ⴢ', + 'Ⴣ' => 'ⴣ', + 'Ⴤ' => 'ⴤ', + 'Ⴥ' => 'ⴥ', + 'Ⴧ' => 'ⴧ', + 'Ⴭ' => 'ⴭ', + 'Ꭰ' => 'ꭰ', + 'Ꭱ' => 'ꭱ', + 'Ꭲ' => 'ꭲ', + 'Ꭳ' => 'ꭳ', + 'Ꭴ' => 'ꭴ', + 'Ꭵ' => 'ꭵ', + 'Ꭶ' => 'ꭶ', + 'Ꭷ' => 'ꭷ', + 'Ꭸ' => 'ꭸ', + 'Ꭹ' => 'ꭹ', + 'Ꭺ' => 'ꭺ', + 'Ꭻ' => 'ꭻ', + 'Ꭼ' => 'ꭼ', + 'Ꭽ' => 'ꭽ', + 'Ꭾ' => 'ꭾ', + 'Ꭿ' => 'ꭿ', + 'Ꮀ' => 'ꮀ', + 'Ꮁ' => 'ꮁ', + 'Ꮂ' => 'ꮂ', + 'Ꮃ' => 'ꮃ', + 'Ꮄ' => 'ꮄ', + 'Ꮅ' => 'ꮅ', + 'Ꮆ' => 'ꮆ', + 'Ꮇ' => 'ꮇ', + 'Ꮈ' => 'ꮈ', + 'Ꮉ' => 'ꮉ', + 'Ꮊ' => 'ꮊ', + 'Ꮋ' => 'ꮋ', + 'Ꮌ' => 'ꮌ', + 'Ꮍ' => 'ꮍ', + 'Ꮎ' => 'ꮎ', + 'Ꮏ' => 'ꮏ', + 'Ꮐ' => 'ꮐ', + 'Ꮑ' => 'ꮑ', + 'Ꮒ' => 'ꮒ', + 'Ꮓ' => 'ꮓ', + 'Ꮔ' => 'ꮔ', + 'Ꮕ' => 'ꮕ', + 'Ꮖ' => 'ꮖ', + 'Ꮗ' => 'ꮗ', + 'Ꮘ' => 'ꮘ', + 'Ꮙ' => 'ꮙ', + 'Ꮚ' => 'ꮚ', + 'Ꮛ' => 'ꮛ', + 'Ꮜ' => 'ꮜ', + 'Ꮝ' => 'ꮝ', + 'Ꮞ' => 'ꮞ', + 'Ꮟ' => 'ꮟ', + 'Ꮠ' => 'ꮠ', + 'Ꮡ' => 'ꮡ', + 'Ꮢ' => 'ꮢ', + 'Ꮣ' => 'ꮣ', + 'Ꮤ' => 'ꮤ', + 'Ꮥ' => 'ꮥ', + 'Ꮦ' => 'ꮦ', + 'Ꮧ' => 'ꮧ', + 'Ꮨ' => 'ꮨ', + 'Ꮩ' => 'ꮩ', + 'Ꮪ' => 'ꮪ', + 'Ꮫ' => 'ꮫ', + 'Ꮬ' => 'ꮬ', + 'Ꮭ' => 'ꮭ', + 'Ꮮ' => 'ꮮ', + 'Ꮯ' => 'ꮯ', + 'Ꮰ' => 'ꮰ', + 'Ꮱ' => 'ꮱ', + 'Ꮲ' => 'ꮲ', + 'Ꮳ' => 'ꮳ', + 'Ꮴ' => 'ꮴ', + 'Ꮵ' => 'ꮵ', + 'Ꮶ' => 'ꮶ', + 'Ꮷ' => 'ꮷ', + 'Ꮸ' => 'ꮸ', + 'Ꮹ' => 'ꮹ', + 'Ꮺ' => 'ꮺ', + 'Ꮻ' => 'ꮻ', + 'Ꮼ' => 'ꮼ', + 'Ꮽ' => 'ꮽ', + 'Ꮾ' => 'ꮾ', + 'Ꮿ' => 'ꮿ', + 'Ᏸ' => 'ᏸ', + 'Ᏹ' => 'ᏹ', + 'Ᏺ' => 'ᏺ', + 'Ᏻ' => 'ᏻ', + 'Ᏼ' => 'ᏼ', + 'Ᏽ' => 'ᏽ', + 'Ა' => 'ა', + 'Ბ' => 'ბ', + 'Გ' => 'გ', + 'Დ' => 'დ', + 'Ე' => 'ე', + 'Ვ' => 'ვ', + 'Ზ' => 'ზ', + 'Თ' => 'თ', + 'Ი' => 'ი', + 'Კ' => 'კ', + 'Ლ' => 'ლ', + 'Მ' => 'მ', + 'Ნ' => 'ნ', + 'Ო' => 'ო', + 'Პ' => 'პ', + 'Ჟ' => 'ჟ', + 'Რ' => 'რ', + 'Ს' => 'ს', + 'Ტ' => 'ტ', + 'Უ' => 'უ', + 'Ფ' => 'ფ', + 'Ქ' => 'ქ', + 'Ღ' => 'ღ', + 'Ყ' => 'ყ', + 'Შ' => 'შ', + 'Ჩ' => 'ჩ', + 'Ც' => 'ც', + 'Ძ' => 'ძ', + 'Წ' => 'წ', + 'Ჭ' => 'ჭ', + 'Ხ' => 'ხ', + 'Ჯ' => 'ჯ', + 'Ჰ' => 'ჰ', + 'Ჱ' => 'ჱ', + 'Ჲ' => 'ჲ', + 'Ჳ' => 'ჳ', + 'Ჴ' => 'ჴ', + 'Ჵ' => 'ჵ', + 'Ჶ' => 'ჶ', + 'Ჷ' => 'ჷ', + 'Ჸ' => 'ჸ', + 'Ჹ' => 'ჹ', + 'Ჺ' => 'ჺ', + 'Ჽ' => 'ჽ', + 'Ჾ' => 'ჾ', + 'Ჿ' => 'ჿ', + 'Ḁ' => 'ḁ', + 'Ḃ' => 'ḃ', + 'Ḅ' => 'ḅ', + 'Ḇ' => 'ḇ', + 'Ḉ' => 'ḉ', + 'Ḋ' => 'ḋ', + 'Ḍ' => 'ḍ', + 'Ḏ' => 'ḏ', + 'Ḑ' => 'ḑ', + 'Ḓ' => 'ḓ', + 'Ḕ' => 'ḕ', + 'Ḗ' => 'ḗ', + 'Ḙ' => 'ḙ', + 'Ḛ' => 'ḛ', + 'Ḝ' => 'ḝ', + 'Ḟ' => 'ḟ', + 'Ḡ' => 'ḡ', + 'Ḣ' => 'ḣ', + 'Ḥ' => 'ḥ', + 'Ḧ' => 'ḧ', + 'Ḩ' => 'ḩ', + 'Ḫ' => 'ḫ', + 'Ḭ' => 'ḭ', + 'Ḯ' => 'ḯ', + 'Ḱ' => 'ḱ', + 'Ḳ' => 'ḳ', + 'Ḵ' => 'ḵ', + 'Ḷ' => 'ḷ', + 'Ḹ' => 'ḹ', + 'Ḻ' => 'ḻ', + 'Ḽ' => 'ḽ', + 'Ḿ' => 'ḿ', + 'Ṁ' => 'ṁ', + 'Ṃ' => 'ṃ', + 'Ṅ' => 'ṅ', + 'Ṇ' => 'ṇ', + 'Ṉ' => 'ṉ', + 'Ṋ' => 'ṋ', + 'Ṍ' => 'ṍ', + 'Ṏ' => 'ṏ', + 'Ṑ' => 'ṑ', + 'Ṓ' => 'ṓ', + 'Ṕ' => 'ṕ', + 'Ṗ' => 'ṗ', + 'Ṙ' => 'ṙ', + 'Ṛ' => 'ṛ', + 'Ṝ' => 'ṝ', + 'Ṟ' => 'ṟ', + 'Ṡ' => 'ṡ', + 'Ṣ' => 'ṣ', + 'Ṥ' => 'ṥ', + 'Ṧ' => 'ṧ', + 'Ṩ' => 'ṩ', + 'Ṫ' => 'ṫ', + 'Ṭ' => 'ṭ', + 'Ṯ' => 'ṯ', + 'Ṱ' => 'ṱ', + 'Ṳ' => 'ṳ', + 'Ṵ' => 'ṵ', + 'Ṷ' => 'ṷ', + 'Ṹ' => 'ṹ', + 'Ṻ' => 'ṻ', + 'Ṽ' => 'ṽ', + 'Ṿ' => 'ṿ', + 'Ẁ' => 'ẁ', + 'Ẃ' => 'ẃ', + 'Ẅ' => 'ẅ', + 'Ẇ' => 'ẇ', + 'Ẉ' => 'ẉ', + 'Ẋ' => 'ẋ', + 'Ẍ' => 'ẍ', + 'Ẏ' => 'ẏ', + 'Ẑ' => 'ẑ', + 'Ẓ' => 'ẓ', + 'Ẕ' => 'ẕ', + 'ẞ' => 'ß', + 'Ạ' => 'ạ', + 'Ả' => 'ả', + 'Ấ' => 'ấ', + 'Ầ' => 'ầ', + 'Ẩ' => 'ẩ', + 'Ẫ' => 'ẫ', + 'Ậ' => 'ậ', + 'Ắ' => 'ắ', + 'Ằ' => 'ằ', + 'Ẳ' => 'ẳ', + 'Ẵ' => 'ẵ', + 'Ặ' => 'ặ', + 'Ẹ' => 'ẹ', + 'Ẻ' => 'ẻ', + 'Ẽ' => 'ẽ', + 'Ế' => 'ế', + 'Ề' => 'ề', + 'Ể' => 'ể', + 'Ễ' => 'ễ', + 'Ệ' => 'ệ', + 'Ỉ' => 'ỉ', + 'Ị' => 'ị', + 'Ọ' => 'ọ', + 'Ỏ' => 'ỏ', + 'Ố' => 'ố', + 'Ồ' => 'ồ', + 'Ổ' => 'ổ', + 'Ỗ' => 'ỗ', + 'Ộ' => 'ộ', + 'Ớ' => 'ớ', + 'Ờ' => 'ờ', + 'Ở' => 'ở', + 'Ỡ' => 'ỡ', + 'Ợ' => 'ợ', + 'Ụ' => 'ụ', + 'Ủ' => 'ủ', + 'Ứ' => 'ứ', + 'Ừ' => 'ừ', + 'Ử' => 'ử', + 'Ữ' => 'ữ', + 'Ự' => 'ự', + 'Ỳ' => 'ỳ', + 'Ỵ' => 'ỵ', + 'Ỷ' => 'ỷ', + 'Ỹ' => 'ỹ', + 'Ỻ' => 'ỻ', + 'Ỽ' => 'ỽ', + 'Ỿ' => 'ỿ', + 'Ἀ' => 'ἀ', + 'Ἁ' => 'ἁ', + 'Ἂ' => 'ἂ', + 'Ἃ' => 'ἃ', + 'Ἄ' => 'ἄ', + 'Ἅ' => 'ἅ', + 'Ἆ' => 'ἆ', + 'Ἇ' => 'ἇ', + 'Ἐ' => 'ἐ', + 'Ἑ' => 'ἑ', + 'Ἒ' => 'ἒ', + 'Ἓ' => 'ἓ', + 'Ἔ' => 'ἔ', + 'Ἕ' => 'ἕ', + 'Ἠ' => 'ἠ', + 'Ἡ' => 'ἡ', + 'Ἢ' => 'ἢ', + 'Ἣ' => 'ἣ', + 'Ἤ' => 'ἤ', + 'Ἥ' => 'ἥ', + 'Ἦ' => 'ἦ', + 'Ἧ' => 'ἧ', + 'Ἰ' => 'ἰ', + 'Ἱ' => 'ἱ', + 'Ἲ' => 'ἲ', + 'Ἳ' => 'ἳ', + 'Ἴ' => 'ἴ', + 'Ἵ' => 'ἵ', + 'Ἶ' => 'ἶ', + 'Ἷ' => 'ἷ', + 'Ὀ' => 'ὀ', + 'Ὁ' => 'ὁ', + 'Ὂ' => 'ὂ', + 'Ὃ' => 'ὃ', + 'Ὄ' => 'ὄ', + 'Ὅ' => 'ὅ', + 'Ὑ' => 'ὑ', + 'Ὓ' => 'ὓ', + 'Ὕ' => 'ὕ', + 'Ὗ' => 'ὗ', + 'Ὠ' => 'ὠ', + 'Ὡ' => 'ὡ', + 'Ὢ' => 'ὢ', + 'Ὣ' => 'ὣ', + 'Ὤ' => 'ὤ', + 'Ὥ' => 'ὥ', + 'Ὦ' => 'ὦ', + 'Ὧ' => 'ὧ', + 'ᾈ' => 'ᾀ', + 'ᾉ' => 'ᾁ', + 'ᾊ' => 'ᾂ', + 'ᾋ' => 'ᾃ', + 'ᾌ' => 'ᾄ', + 'ᾍ' => 'ᾅ', + 'ᾎ' => 'ᾆ', + 'ᾏ' => 'ᾇ', + 'ᾘ' => 'ᾐ', + 'ᾙ' => 'ᾑ', + 'ᾚ' => 'ᾒ', + 'ᾛ' => 'ᾓ', + 'ᾜ' => 'ᾔ', + 'ᾝ' => 'ᾕ', + 'ᾞ' => 'ᾖ', + 'ᾟ' => 'ᾗ', + 'ᾨ' => 'ᾠ', + 'ᾩ' => 'ᾡ', + 'ᾪ' => 'ᾢ', + 'ᾫ' => 'ᾣ', + 'ᾬ' => 'ᾤ', + 'ᾭ' => 'ᾥ', + 'ᾮ' => 'ᾦ', + 'ᾯ' => 'ᾧ', + 'Ᾰ' => 'ᾰ', + 'Ᾱ' => 'ᾱ', + 'Ὰ' => 'ὰ', + 'Ά' => 'ά', + 'ᾼ' => 'ᾳ', + 'Ὲ' => 'ὲ', + 'Έ' => 'έ', + 'Ὴ' => 'ὴ', + 'Ή' => 'ή', + 'ῌ' => 'ῃ', + 'Ῐ' => 'ῐ', + 'Ῑ' => 'ῑ', + 'Ὶ' => 'ὶ', + 'Ί' => 'ί', + 'Ῠ' => 'ῠ', + 'Ῡ' => 'ῡ', + 'Ὺ' => 'ὺ', + 'Ύ' => 'ύ', + 'Ῥ' => 'ῥ', + 'Ὸ' => 'ὸ', + 'Ό' => 'ό', + 'Ὼ' => 'ὼ', + 'Ώ' => 'ώ', + 'ῼ' => 'ῳ', + 'Ω' => 'ω', + 'K' => 'k', + 'Å' => 'å', + 'Ⅎ' => 'ⅎ', + 'Ⅰ' => 'ⅰ', + 'Ⅱ' => 'ⅱ', + 'Ⅲ' => 'ⅲ', + 'Ⅳ' => 'ⅳ', + 'Ⅴ' => 'ⅴ', + 'Ⅵ' => 'ⅵ', + 'Ⅶ' => 'ⅶ', + 'Ⅷ' => 'ⅷ', + 'Ⅸ' => 'ⅸ', + 'Ⅹ' => 'ⅹ', + 'Ⅺ' => 'ⅺ', + 'Ⅻ' => 'ⅻ', + 'Ⅼ' => 'ⅼ', + 'Ⅽ' => 'ⅽ', + 'Ⅾ' => 'ⅾ', + 'Ⅿ' => 'ⅿ', + 'Ↄ' => 'ↄ', + 'Ⓐ' => 'ⓐ', + 'Ⓑ' => 'ⓑ', + 'Ⓒ' => 'ⓒ', + 'Ⓓ' => 'ⓓ', + 'Ⓔ' => 'ⓔ', + 'Ⓕ' => 'ⓕ', + 'Ⓖ' => 'ⓖ', + 'Ⓗ' => 'ⓗ', + 'Ⓘ' => 'ⓘ', + 'Ⓙ' => 'ⓙ', + 'Ⓚ' => 'ⓚ', + 'Ⓛ' => 'ⓛ', + 'Ⓜ' => 'ⓜ', + 'Ⓝ' => 'ⓝ', + 'Ⓞ' => 'ⓞ', + 'Ⓟ' => 'ⓟ', + 'Ⓠ' => 'ⓠ', + 'Ⓡ' => 'ⓡ', + 'Ⓢ' => 'ⓢ', + 'Ⓣ' => 'ⓣ', + 'Ⓤ' => 'ⓤ', + 'Ⓥ' => 'ⓥ', + 'Ⓦ' => 'ⓦ', + 'Ⓧ' => 'ⓧ', + 'Ⓨ' => 'ⓨ', + 'Ⓩ' => 'ⓩ', + 'Ⰰ' => 'ⰰ', + 'Ⰱ' => 'ⰱ', + 'Ⰲ' => 'ⰲ', + 'Ⰳ' => 'ⰳ', + 'Ⰴ' => 'ⰴ', + 'Ⰵ' => 'ⰵ', + 'Ⰶ' => 'ⰶ', + 'Ⰷ' => 'ⰷ', + 'Ⰸ' => 'ⰸ', + 'Ⰹ' => 'ⰹ', + 'Ⰺ' => 'ⰺ', + 'Ⰻ' => 'ⰻ', + 'Ⰼ' => 'ⰼ', + 'Ⰽ' => 'ⰽ', + 'Ⰾ' => 'ⰾ', + 'Ⰿ' => 'ⰿ', + 'Ⱀ' => 'ⱀ', + 'Ⱁ' => 'ⱁ', + 'Ⱂ' => 'ⱂ', + 'Ⱃ' => 'ⱃ', + 'Ⱄ' => 'ⱄ', + 'Ⱅ' => 'ⱅ', + 'Ⱆ' => 'ⱆ', + 'Ⱇ' => 'ⱇ', + 'Ⱈ' => 'ⱈ', + 'Ⱉ' => 'ⱉ', + 'Ⱊ' => 'ⱊ', + 'Ⱋ' => 'ⱋ', + 'Ⱌ' => 'ⱌ', + 'Ⱍ' => 'ⱍ', + 'Ⱎ' => 'ⱎ', + 'Ⱏ' => 'ⱏ', + 'Ⱐ' => 'ⱐ', + 'Ⱑ' => 'ⱑ', + 'Ⱒ' => 'ⱒ', + 'Ⱓ' => 'ⱓ', + 'Ⱔ' => 'ⱔ', + 'Ⱕ' => 'ⱕ', + 'Ⱖ' => 'ⱖ', + 'Ⱗ' => 'ⱗ', + 'Ⱘ' => 'ⱘ', + 'Ⱙ' => 'ⱙ', + 'Ⱚ' => 'ⱚ', + 'Ⱛ' => 'ⱛ', + 'Ⱜ' => 'ⱜ', + 'Ⱝ' => 'ⱝ', + 'Ⱞ' => 'ⱞ', + 'Ⱡ' => 'ⱡ', + 'Ɫ' => 'ɫ', + 'Ᵽ' => 'ᵽ', + 'Ɽ' => 'ɽ', + 'Ⱨ' => 'ⱨ', + 'Ⱪ' => 'ⱪ', + 'Ⱬ' => 'ⱬ', + 'Ɑ' => 'ɑ', + 'Ɱ' => 'ɱ', + 'Ɐ' => 'ɐ', + 'Ɒ' => 'ɒ', + 'Ⱳ' => 'ⱳ', + 'Ⱶ' => 'ⱶ', + 'Ȿ' => 'ȿ', + 'Ɀ' => 'ɀ', + 'Ⲁ' => 'ⲁ', + 'Ⲃ' => 'ⲃ', + 'Ⲅ' => 'ⲅ', + 'Ⲇ' => 'ⲇ', + 'Ⲉ' => 'ⲉ', + 'Ⲋ' => 'ⲋ', + 'Ⲍ' => 'ⲍ', + 'Ⲏ' => 'ⲏ', + 'Ⲑ' => 'ⲑ', + 'Ⲓ' => 'ⲓ', + 'Ⲕ' => 'ⲕ', + 'Ⲗ' => 'ⲗ', + 'Ⲙ' => 'ⲙ', + 'Ⲛ' => 'ⲛ', + 'Ⲝ' => 'ⲝ', + 'Ⲟ' => 'ⲟ', + 'Ⲡ' => 'ⲡ', + 'Ⲣ' => 'ⲣ', + 'Ⲥ' => 'ⲥ', + 'Ⲧ' => 'ⲧ', + 'Ⲩ' => 'ⲩ', + 'Ⲫ' => 'ⲫ', + 'Ⲭ' => 'ⲭ', + 'Ⲯ' => 'ⲯ', + 'Ⲱ' => 'ⲱ', + 'Ⲳ' => 'ⲳ', + 'Ⲵ' => 'ⲵ', + 'Ⲷ' => 'ⲷ', + 'Ⲹ' => 'ⲹ', + 'Ⲻ' => 'ⲻ', + 'Ⲽ' => 'ⲽ', + 'Ⲿ' => 'ⲿ', + 'Ⳁ' => 'ⳁ', + 'Ⳃ' => 'ⳃ', + 'Ⳅ' => 'ⳅ', + 'Ⳇ' => 'ⳇ', + 'Ⳉ' => 'ⳉ', + 'Ⳋ' => 'ⳋ', + 'Ⳍ' => 'ⳍ', + 'Ⳏ' => 'ⳏ', + 'Ⳑ' => 'ⳑ', + 'Ⳓ' => 'ⳓ', + 'Ⳕ' => 'ⳕ', + 'Ⳗ' => 'ⳗ', + 'Ⳙ' => 'ⳙ', + 'Ⳛ' => 'ⳛ', + 'Ⳝ' => 'ⳝ', + 'Ⳟ' => 'ⳟ', + 'Ⳡ' => 'ⳡ', + 'Ⳣ' => 'ⳣ', + 'Ⳬ' => 'ⳬ', + 'Ⳮ' => 'ⳮ', + 'Ⳳ' => 'ⳳ', + 'Ꙁ' => 'ꙁ', + 'Ꙃ' => 'ꙃ', + 'Ꙅ' => 'ꙅ', + 'Ꙇ' => 'ꙇ', + 'Ꙉ' => 'ꙉ', + 'Ꙋ' => 'ꙋ', + 'Ꙍ' => 'ꙍ', + 'Ꙏ' => 'ꙏ', + 'Ꙑ' => 'ꙑ', + 'Ꙓ' => 'ꙓ', + 'Ꙕ' => 'ꙕ', + 'Ꙗ' => 'ꙗ', + 'Ꙙ' => 'ꙙ', + 'Ꙛ' => 'ꙛ', + 'Ꙝ' => 'ꙝ', + 'Ꙟ' => 'ꙟ', + 'Ꙡ' => 'ꙡ', + 'Ꙣ' => 'ꙣ', + 'Ꙥ' => 'ꙥ', + 'Ꙧ' => 'ꙧ', + 'Ꙩ' => 'ꙩ', + 'Ꙫ' => 'ꙫ', + 'Ꙭ' => 'ꙭ', + 'Ꚁ' => 'ꚁ', + 'Ꚃ' => 'ꚃ', + 'Ꚅ' => 'ꚅ', + 'Ꚇ' => 'ꚇ', + 'Ꚉ' => 'ꚉ', + 'Ꚋ' => 'ꚋ', + 'Ꚍ' => 'ꚍ', + 'Ꚏ' => 'ꚏ', + 'Ꚑ' => 'ꚑ', + 'Ꚓ' => 'ꚓ', + 'Ꚕ' => 'ꚕ', + 'Ꚗ' => 'ꚗ', + 'Ꚙ' => 'ꚙ', + 'Ꚛ' => 'ꚛ', + 'Ꜣ' => 'ꜣ', + 'Ꜥ' => 'ꜥ', + 'Ꜧ' => 'ꜧ', + 'Ꜩ' => 'ꜩ', + 'Ꜫ' => 'ꜫ', + 'Ꜭ' => 'ꜭ', + 'Ꜯ' => 'ꜯ', + 'Ꜳ' => 'ꜳ', + 'Ꜵ' => 'ꜵ', + 'Ꜷ' => 'ꜷ', + 'Ꜹ' => 'ꜹ', + 'Ꜻ' => 'ꜻ', + 'Ꜽ' => 'ꜽ', + 'Ꜿ' => 'ꜿ', + 'Ꝁ' => 'ꝁ', + 'Ꝃ' => 'ꝃ', + 'Ꝅ' => 'ꝅ', + 'Ꝇ' => 'ꝇ', + 'Ꝉ' => 'ꝉ', + 'Ꝋ' => 'ꝋ', + 'Ꝍ' => 'ꝍ', + 'Ꝏ' => 'ꝏ', + 'Ꝑ' => 'ꝑ', + 'Ꝓ' => 'ꝓ', + 'Ꝕ' => 'ꝕ', + 'Ꝗ' => 'ꝗ', + 'Ꝙ' => 'ꝙ', + 'Ꝛ' => 'ꝛ', + 'Ꝝ' => 'ꝝ', + 'Ꝟ' => 'ꝟ', + 'Ꝡ' => 'ꝡ', + 'Ꝣ' => 'ꝣ', + 'Ꝥ' => 'ꝥ', + 'Ꝧ' => 'ꝧ', + 'Ꝩ' => 'ꝩ', + 'Ꝫ' => 'ꝫ', + 'Ꝭ' => 'ꝭ', + 'Ꝯ' => 'ꝯ', + 'Ꝺ' => 'ꝺ', + 'Ꝼ' => 'ꝼ', + 'Ᵹ' => 'ᵹ', + 'Ꝿ' => 'ꝿ', + 'Ꞁ' => 'ꞁ', + 'Ꞃ' => 'ꞃ', + 'Ꞅ' => 'ꞅ', + 'Ꞇ' => 'ꞇ', + 'Ꞌ' => 'ꞌ', + 'Ɥ' => 'ɥ', + 'Ꞑ' => 'ꞑ', + 'Ꞓ' => 'ꞓ', + 'Ꞗ' => 'ꞗ', + 'Ꞙ' => 'ꞙ', + 'Ꞛ' => 'ꞛ', + 'Ꞝ' => 'ꞝ', + 'Ꞟ' => 'ꞟ', + 'Ꞡ' => 'ꞡ', + 'Ꞣ' => 'ꞣ', + 'Ꞥ' => 'ꞥ', + 'Ꞧ' => 'ꞧ', + 'Ꞩ' => 'ꞩ', + 'Ɦ' => 'ɦ', + 'Ɜ' => 'ɜ', + 'Ɡ' => 'ɡ', + 'Ɬ' => 'ɬ', + 'Ɪ' => 'ɪ', + 'Ʞ' => 'ʞ', + 'Ʇ' => 'ʇ', + 'Ʝ' => 'ʝ', + 'Ꭓ' => 'ꭓ', + 'Ꞵ' => 'ꞵ', + 'Ꞷ' => 'ꞷ', + 'Ꞹ' => 'ꞹ', + 'Ꞻ' => 'ꞻ', + 'Ꞽ' => 'ꞽ', + 'Ꞿ' => 'ꞿ', + 'Ꟃ' => 'ꟃ', + 'Ꞔ' => 'ꞔ', + 'Ʂ' => 'ʂ', + 'Ᶎ' => 'ᶎ', + 'Ꟈ' => 'ꟈ', + 'Ꟊ' => 'ꟊ', + 'Ꟶ' => 'ꟶ', + 'A' => 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + '𐐀' => '𐐨', + '𐐁' => '𐐩', + '𐐂' => '𐐪', + '𐐃' => '𐐫', + '𐐄' => '𐐬', + '𐐅' => '𐐭', + '𐐆' => '𐐮', + '𐐇' => '𐐯', + '𐐈' => '𐐰', + '𐐉' => '𐐱', + '𐐊' => '𐐲', + '𐐋' => '𐐳', + '𐐌' => '𐐴', + '𐐍' => '𐐵', + '𐐎' => '𐐶', + '𐐏' => '𐐷', + '𐐐' => '𐐸', + '𐐑' => '𐐹', + '𐐒' => '𐐺', + '𐐓' => '𐐻', + '𐐔' => '𐐼', + '𐐕' => '𐐽', + '𐐖' => '𐐾', + '𐐗' => '𐐿', + '𐐘' => '𐑀', + '𐐙' => '𐑁', + '𐐚' => '𐑂', + '𐐛' => '𐑃', + '𐐜' => '𐑄', + '𐐝' => '𐑅', + '𐐞' => '𐑆', + '𐐟' => '𐑇', + '𐐠' => '𐑈', + '𐐡' => '𐑉', + '𐐢' => '𐑊', + '𐐣' => '𐑋', + '𐐤' => '𐑌', + '𐐥' => '𐑍', + '𐐦' => '𐑎', + '𐐧' => '𐑏', + '𐒰' => '𐓘', + '𐒱' => '𐓙', + '𐒲' => '𐓚', + '𐒳' => '𐓛', + '𐒴' => '𐓜', + '𐒵' => '𐓝', + '𐒶' => '𐓞', + '𐒷' => '𐓟', + '𐒸' => '𐓠', + '𐒹' => '𐓡', + '𐒺' => '𐓢', + '𐒻' => '𐓣', + '𐒼' => '𐓤', + '𐒽' => '𐓥', + '𐒾' => '𐓦', + '𐒿' => '𐓧', + '𐓀' => '𐓨', + '𐓁' => '𐓩', + '𐓂' => '𐓪', + '𐓃' => '𐓫', + '𐓄' => '𐓬', + '𐓅' => '𐓭', + '𐓆' => '𐓮', + '𐓇' => '𐓯', + '𐓈' => '𐓰', + '𐓉' => '𐓱', + '𐓊' => '𐓲', + '𐓋' => '𐓳', + '𐓌' => '𐓴', + '𐓍' => '𐓵', + '𐓎' => '𐓶', + '𐓏' => '𐓷', + '𐓐' => '𐓸', + '𐓑' => '𐓹', + '𐓒' => '𐓺', + '𐓓' => '𐓻', + '𐲀' => '𐳀', + '𐲁' => '𐳁', + '𐲂' => '𐳂', + '𐲃' => '𐳃', + '𐲄' => '𐳄', + '𐲅' => '𐳅', + '𐲆' => '𐳆', + '𐲇' => '𐳇', + '𐲈' => '𐳈', + '𐲉' => '𐳉', + '𐲊' => '𐳊', + '𐲋' => '𐳋', + '𐲌' => '𐳌', + '𐲍' => '𐳍', + '𐲎' => '𐳎', + '𐲏' => '𐳏', + '𐲐' => '𐳐', + '𐲑' => '𐳑', + '𐲒' => '𐳒', + '𐲓' => '𐳓', + '𐲔' => '𐳔', + '𐲕' => '𐳕', + '𐲖' => '𐳖', + '𐲗' => '𐳗', + '𐲘' => '𐳘', + '𐲙' => '𐳙', + '𐲚' => '𐳚', + '𐲛' => '𐳛', + '𐲜' => '𐳜', + '𐲝' => '𐳝', + '𐲞' => '𐳞', + '𐲟' => '𐳟', + '𐲠' => '𐳠', + '𐲡' => '𐳡', + '𐲢' => '𐳢', + '𐲣' => '𐳣', + '𐲤' => '𐳤', + '𐲥' => '𐳥', + '𐲦' => '𐳦', + '𐲧' => '𐳧', + '𐲨' => '𐳨', + '𐲩' => '𐳩', + '𐲪' => '𐳪', + '𐲫' => '𐳫', + '𐲬' => '𐳬', + '𐲭' => '𐳭', + '𐲮' => '𐳮', + '𐲯' => '𐳯', + '𐲰' => '𐳰', + '𐲱' => '𐳱', + '𐲲' => '𐳲', + '𑢠' => '𑣀', + '𑢡' => '𑣁', + '𑢢' => '𑣂', + '𑢣' => '𑣃', + '𑢤' => '𑣄', + '𑢥' => '𑣅', + '𑢦' => '𑣆', + '𑢧' => '𑣇', + '𑢨' => '𑣈', + '𑢩' => '𑣉', + '𑢪' => '𑣊', + '𑢫' => '𑣋', + '𑢬' => '𑣌', + '𑢭' => '𑣍', + '𑢮' => '𑣎', + '𑢯' => '𑣏', + '𑢰' => '𑣐', + '𑢱' => '𑣑', + '𑢲' => '𑣒', + '𑢳' => '𑣓', + '𑢴' => '𑣔', + '𑢵' => '𑣕', + '𑢶' => '𑣖', + '𑢷' => '𑣗', + '𑢸' => '𑣘', + '𑢹' => '𑣙', + '𑢺' => '𑣚', + '𑢻' => '𑣛', + '𑢼' => '𑣜', + '𑢽' => '𑣝', + '𑢾' => '𑣞', + '𑢿' => '𑣟', + '𖹀' => '𖹠', + '𖹁' => '𖹡', + '𖹂' => '𖹢', + '𖹃' => '𖹣', + '𖹄' => '𖹤', + '𖹅' => '𖹥', + '𖹆' => '𖹦', + '𖹇' => '𖹧', + '𖹈' => '𖹨', + '𖹉' => '𖹩', + '𖹊' => '𖹪', + '𖹋' => '𖹫', + '𖹌' => '𖹬', + '𖹍' => '𖹭', + '𖹎' => '𖹮', + '𖹏' => '𖹯', + '𖹐' => '𖹰', + '𖹑' => '𖹱', + '𖹒' => '𖹲', + '𖹓' => '𖹳', + '𖹔' => '𖹴', + '𖹕' => '𖹵', + '𖹖' => '𖹶', + '𖹗' => '𖹷', + '𖹘' => '𖹸', + '𖹙' => '𖹹', + '𖹚' => '𖹺', + '𖹛' => '𖹻', + '𖹜' => '𖹼', + '𖹝' => '𖹽', + '𖹞' => '𖹾', + '𖹟' => '𖹿', + '𞤀' => '𞤢', + '𞤁' => '𞤣', + '𞤂' => '𞤤', + '𞤃' => '𞤥', + '𞤄' => '𞤦', + '𞤅' => '𞤧', + '𞤆' => '𞤨', + '𞤇' => '𞤩', + '𞤈' => '𞤪', + '𞤉' => '𞤫', + '𞤊' => '𞤬', + '𞤋' => '𞤭', + '𞤌' => '𞤮', + '𞤍' => '𞤯', + '𞤎' => '𞤰', + '𞤏' => '𞤱', + '𞤐' => '𞤲', + '𞤑' => '𞤳', + '𞤒' => '𞤴', + '𞤓' => '𞤵', + '𞤔' => '𞤶', + '𞤕' => '𞤷', + '𞤖' => '𞤸', + '𞤗' => '𞤹', + '𞤘' => '𞤺', + '𞤙' => '𞤻', + '𞤚' => '𞤼', + '𞤛' => '𞤽', + '𞤜' => '𞤾', + '𞤝' => '𞤿', + '𞤞' => '𞥀', + '𞤟' => '𞥁', + '𞤠' => '𞥂', + '𞤡' => '𞥃', +); diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php new file mode 100644 index 00000000000..2a8f6e73b99 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php @@ -0,0 +1,5 @@ + 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + 'µ' => 'Μ', + 'à' => 'À', + 'á' => 'Á', + 'â' => 'Â', + 'ã' => 'Ã', + 'ä' => 'Ä', + 'å' => 'Å', + 'æ' => 'Æ', + 'ç' => 'Ç', + 'è' => 'È', + 'é' => 'É', + 'ê' => 'Ê', + 'ë' => 'Ë', + 'ì' => 'Ì', + 'í' => 'Í', + 'î' => 'Î', + 'ï' => 'Ï', + 'ð' => 'Ð', + 'ñ' => 'Ñ', + 'ò' => 'Ò', + 'ó' => 'Ó', + 'ô' => 'Ô', + 'õ' => 'Õ', + 'ö' => 'Ö', + 'ø' => 'Ø', + 'ù' => 'Ù', + 'ú' => 'Ú', + 'û' => 'Û', + 'ü' => 'Ü', + 'ý' => 'Ý', + 'þ' => 'Þ', + 'ÿ' => 'Ÿ', + 'ā' => 'Ā', + 'ă' => 'Ă', + 'ą' => 'Ą', + 'ć' => 'Ć', + 'ĉ' => 'Ĉ', + 'ċ' => 'Ċ', + 'č' => 'Č', + 'ď' => 'Ď', + 'đ' => 'Đ', + 'ē' => 'Ē', + 'ĕ' => 'Ĕ', + 'ė' => 'Ė', + 'ę' => 'Ę', + 'ě' => 'Ě', + 'ĝ' => 'Ĝ', + 'ğ' => 'Ğ', + 'ġ' => 'Ġ', + 'ģ' => 'Ģ', + 'ĥ' => 'Ĥ', + 'ħ' => 'Ħ', + 'ĩ' => 'Ĩ', + 'ī' => 'Ī', + 'ĭ' => 'Ĭ', + 'į' => 'Į', + 'ı' => 'I', + 'ij' => 'IJ', + 'ĵ' => 'Ĵ', + 'ķ' => 'Ķ', + 'ĺ' => 'Ĺ', + 'ļ' => 'Ļ', + 'ľ' => 'Ľ', + 'ŀ' => 'Ŀ', + 'ł' => 'Ł', + 'ń' => 'Ń', + 'ņ' => 'Ņ', + 'ň' => 'Ň', + 'ŋ' => 'Ŋ', + 'ō' => 'Ō', + 'ŏ' => 'Ŏ', + 'ő' => 'Ő', + 'œ' => 'Œ', + 'ŕ' => 'Ŕ', + 'ŗ' => 'Ŗ', + 'ř' => 'Ř', + 'ś' => 'Ś', + 'ŝ' => 'Ŝ', + 'ş' => 'Ş', + 'š' => 'Š', + 'ţ' => 'Ţ', + 'ť' => 'Ť', + 'ŧ' => 'Ŧ', + 'ũ' => 'Ũ', + 'ū' => 'Ū', + 'ŭ' => 'Ŭ', + 'ů' => 'Ů', + 'ű' => 'Ű', + 'ų' => 'Ų', + 'ŵ' => 'Ŵ', + 'ŷ' => 'Ŷ', + 'ź' => 'Ź', + 'ż' => 'Ż', + 'ž' => 'Ž', + 'ſ' => 'S', + 'ƀ' => 'Ƀ', + 'ƃ' => 'Ƃ', + 'ƅ' => 'Ƅ', + 'ƈ' => 'Ƈ', + 'ƌ' => 'Ƌ', + 'ƒ' => 'Ƒ', + 'ƕ' => 'Ƕ', + 'ƙ' => 'Ƙ', + 'ƚ' => 'Ƚ', + 'ƞ' => 'Ƞ', + 'ơ' => 'Ơ', + 'ƣ' => 'Ƣ', + 'ƥ' => 'Ƥ', + 'ƨ' => 'Ƨ', + 'ƭ' => 'Ƭ', + 'ư' => 'Ư', + 'ƴ' => 'Ƴ', + 'ƶ' => 'Ƶ', + 'ƹ' => 'Ƹ', + 'ƽ' => 'Ƽ', + 'ƿ' => 'Ƿ', + 'Dž' => 'DŽ', + 'dž' => 'DŽ', + 'Lj' => 'LJ', + 'lj' => 'LJ', + 'Nj' => 'NJ', + 'nj' => 'NJ', + 'ǎ' => 'Ǎ', + 'ǐ' => 'Ǐ', + 'ǒ' => 'Ǒ', + 'ǔ' => 'Ǔ', + 'ǖ' => 'Ǖ', + 'ǘ' => 'Ǘ', + 'ǚ' => 'Ǚ', + 'ǜ' => 'Ǜ', + 'ǝ' => 'Ǝ', + 'ǟ' => 'Ǟ', + 'ǡ' => 'Ǡ', + 'ǣ' => 'Ǣ', + 'ǥ' => 'Ǥ', + 'ǧ' => 'Ǧ', + 'ǩ' => 'Ǩ', + 'ǫ' => 'Ǫ', + 'ǭ' => 'Ǭ', + 'ǯ' => 'Ǯ', + 'Dz' => 'DZ', + 'dz' => 'DZ', + 'ǵ' => 'Ǵ', + 'ǹ' => 'Ǹ', + 'ǻ' => 'Ǻ', + 'ǽ' => 'Ǽ', + 'ǿ' => 'Ǿ', + 'ȁ' => 'Ȁ', + 'ȃ' => 'Ȃ', + 'ȅ' => 'Ȅ', + 'ȇ' => 'Ȇ', + 'ȉ' => 'Ȉ', + 'ȋ' => 'Ȋ', + 'ȍ' => 'Ȍ', + 'ȏ' => 'Ȏ', + 'ȑ' => 'Ȑ', + 'ȓ' => 'Ȓ', + 'ȕ' => 'Ȕ', + 'ȗ' => 'Ȗ', + 'ș' => 'Ș', + 'ț' => 'Ț', + 'ȝ' => 'Ȝ', + 'ȟ' => 'Ȟ', + 'ȣ' => 'Ȣ', + 'ȥ' => 'Ȥ', + 'ȧ' => 'Ȧ', + 'ȩ' => 'Ȩ', + 'ȫ' => 'Ȫ', + 'ȭ' => 'Ȭ', + 'ȯ' => 'Ȯ', + 'ȱ' => 'Ȱ', + 'ȳ' => 'Ȳ', + 'ȼ' => 'Ȼ', + 'ȿ' => 'Ȿ', + 'ɀ' => 'Ɀ', + 'ɂ' => 'Ɂ', + 'ɇ' => 'Ɇ', + 'ɉ' => 'Ɉ', + 'ɋ' => 'Ɋ', + 'ɍ' => 'Ɍ', + 'ɏ' => 'Ɏ', + 'ɐ' => 'Ɐ', + 'ɑ' => 'Ɑ', + 'ɒ' => 'Ɒ', + 'ɓ' => 'Ɓ', + 'ɔ' => 'Ɔ', + 'ɖ' => 'Ɖ', + 'ɗ' => 'Ɗ', + 'ə' => 'Ə', + 'ɛ' => 'Ɛ', + 'ɜ' => 'Ɜ', + 'ɠ' => 'Ɠ', + 'ɡ' => 'Ɡ', + 'ɣ' => 'Ɣ', + 'ɥ' => 'Ɥ', + 'ɦ' => 'Ɦ', + 'ɨ' => 'Ɨ', + 'ɩ' => 'Ɩ', + 'ɪ' => 'Ɪ', + 'ɫ' => 'Ɫ', + 'ɬ' => 'Ɬ', + 'ɯ' => 'Ɯ', + 'ɱ' => 'Ɱ', + 'ɲ' => 'Ɲ', + 'ɵ' => 'Ɵ', + 'ɽ' => 'Ɽ', + 'ʀ' => 'Ʀ', + 'ʂ' => 'Ʂ', + 'ʃ' => 'Ʃ', + 'ʇ' => 'Ʇ', + 'ʈ' => 'Ʈ', + 'ʉ' => 'Ʉ', + 'ʊ' => 'Ʊ', + 'ʋ' => 'Ʋ', + 'ʌ' => 'Ʌ', + 'ʒ' => 'Ʒ', + 'ʝ' => 'Ʝ', + 'ʞ' => 'Ʞ', + 'ͅ' => 'Ι', + 'ͱ' => 'Ͱ', + 'ͳ' => 'Ͳ', + 'ͷ' => 'Ͷ', + 'ͻ' => 'Ͻ', + 'ͼ' => 'Ͼ', + 'ͽ' => 'Ͽ', + 'ά' => 'Ά', + 'έ' => 'Έ', + 'ή' => 'Ή', + 'ί' => 'Ί', + 'α' => 'Α', + 'β' => 'Β', + 'γ' => 'Γ', + 'δ' => 'Δ', + 'ε' => 'Ε', + 'ζ' => 'Ζ', + 'η' => 'Η', + 'θ' => 'Θ', + 'ι' => 'Ι', + 'κ' => 'Κ', + 'λ' => 'Λ', + 'μ' => 'Μ', + 'ν' => 'Ν', + 'ξ' => 'Ξ', + 'ο' => 'Ο', + 'π' => 'Π', + 'ρ' => 'Ρ', + 'ς' => 'Σ', + 'σ' => 'Σ', + 'τ' => 'Τ', + 'υ' => 'Υ', + 'φ' => 'Φ', + 'χ' => 'Χ', + 'ψ' => 'Ψ', + 'ω' => 'Ω', + 'ϊ' => 'Ϊ', + 'ϋ' => 'Ϋ', + 'ό' => 'Ό', + 'ύ' => 'Ύ', + 'ώ' => 'Ώ', + 'ϐ' => 'Β', + 'ϑ' => 'Θ', + 'ϕ' => 'Φ', + 'ϖ' => 'Π', + 'ϗ' => 'Ϗ', + 'ϙ' => 'Ϙ', + 'ϛ' => 'Ϛ', + 'ϝ' => 'Ϝ', + 'ϟ' => 'Ϟ', + 'ϡ' => 'Ϡ', + 'ϣ' => 'Ϣ', + 'ϥ' => 'Ϥ', + 'ϧ' => 'Ϧ', + 'ϩ' => 'Ϩ', + 'ϫ' => 'Ϫ', + 'ϭ' => 'Ϭ', + 'ϯ' => 'Ϯ', + 'ϰ' => 'Κ', + 'ϱ' => 'Ρ', + 'ϲ' => 'Ϲ', + 'ϳ' => 'Ϳ', + 'ϵ' => 'Ε', + 'ϸ' => 'Ϸ', + 'ϻ' => 'Ϻ', + 'а' => 'А', + 'б' => 'Б', + 'в' => 'В', + 'г' => 'Г', + 'д' => 'Д', + 'е' => 'Е', + 'ж' => 'Ж', + 'з' => 'З', + 'и' => 'И', + 'й' => 'Й', + 'к' => 'К', + 'л' => 'Л', + 'м' => 'М', + 'н' => 'Н', + 'о' => 'О', + 'п' => 'П', + 'р' => 'Р', + 'с' => 'С', + 'т' => 'Т', + 'у' => 'У', + 'ф' => 'Ф', + 'х' => 'Х', + 'ц' => 'Ц', + 'ч' => 'Ч', + 'ш' => 'Ш', + 'щ' => 'Щ', + 'ъ' => 'Ъ', + 'ы' => 'Ы', + 'ь' => 'Ь', + 'э' => 'Э', + 'ю' => 'Ю', + 'я' => 'Я', + 'ѐ' => 'Ѐ', + 'ё' => 'Ё', + 'ђ' => 'Ђ', + 'ѓ' => 'Ѓ', + 'є' => 'Є', + 'ѕ' => 'Ѕ', + 'і' => 'І', + 'ї' => 'Ї', + 'ј' => 'Ј', + 'љ' => 'Љ', + 'њ' => 'Њ', + 'ћ' => 'Ћ', + 'ќ' => 'Ќ', + 'ѝ' => 'Ѝ', + 'ў' => 'Ў', + 'џ' => 'Џ', + 'ѡ' => 'Ѡ', + 'ѣ' => 'Ѣ', + 'ѥ' => 'Ѥ', + 'ѧ' => 'Ѧ', + 'ѩ' => 'Ѩ', + 'ѫ' => 'Ѫ', + 'ѭ' => 'Ѭ', + 'ѯ' => 'Ѯ', + 'ѱ' => 'Ѱ', + 'ѳ' => 'Ѳ', + 'ѵ' => 'Ѵ', + 'ѷ' => 'Ѷ', + 'ѹ' => 'Ѹ', + 'ѻ' => 'Ѻ', + 'ѽ' => 'Ѽ', + 'ѿ' => 'Ѿ', + 'ҁ' => 'Ҁ', + 'ҋ' => 'Ҋ', + 'ҍ' => 'Ҍ', + 'ҏ' => 'Ҏ', + 'ґ' => 'Ґ', + 'ғ' => 'Ғ', + 'ҕ' => 'Ҕ', + 'җ' => 'Җ', + 'ҙ' => 'Ҙ', + 'қ' => 'Қ', + 'ҝ' => 'Ҝ', + 'ҟ' => 'Ҟ', + 'ҡ' => 'Ҡ', + 'ң' => 'Ң', + 'ҥ' => 'Ҥ', + 'ҧ' => 'Ҧ', + 'ҩ' => 'Ҩ', + 'ҫ' => 'Ҫ', + 'ҭ' => 'Ҭ', + 'ү' => 'Ү', + 'ұ' => 'Ұ', + 'ҳ' => 'Ҳ', + 'ҵ' => 'Ҵ', + 'ҷ' => 'Ҷ', + 'ҹ' => 'Ҹ', + 'һ' => 'Һ', + 'ҽ' => 'Ҽ', + 'ҿ' => 'Ҿ', + 'ӂ' => 'Ӂ', + 'ӄ' => 'Ӄ', + 'ӆ' => 'Ӆ', + 'ӈ' => 'Ӈ', + 'ӊ' => 'Ӊ', + 'ӌ' => 'Ӌ', + 'ӎ' => 'Ӎ', + 'ӏ' => 'Ӏ', + 'ӑ' => 'Ӑ', + 'ӓ' => 'Ӓ', + 'ӕ' => 'Ӕ', + 'ӗ' => 'Ӗ', + 'ә' => 'Ә', + 'ӛ' => 'Ӛ', + 'ӝ' => 'Ӝ', + 'ӟ' => 'Ӟ', + 'ӡ' => 'Ӡ', + 'ӣ' => 'Ӣ', + 'ӥ' => 'Ӥ', + 'ӧ' => 'Ӧ', + 'ө' => 'Ө', + 'ӫ' => 'Ӫ', + 'ӭ' => 'Ӭ', + 'ӯ' => 'Ӯ', + 'ӱ' => 'Ӱ', + 'ӳ' => 'Ӳ', + 'ӵ' => 'Ӵ', + 'ӷ' => 'Ӷ', + 'ӹ' => 'Ӹ', + 'ӻ' => 'Ӻ', + 'ӽ' => 'Ӽ', + 'ӿ' => 'Ӿ', + 'ԁ' => 'Ԁ', + 'ԃ' => 'Ԃ', + 'ԅ' => 'Ԅ', + 'ԇ' => 'Ԇ', + 'ԉ' => 'Ԉ', + 'ԋ' => 'Ԋ', + 'ԍ' => 'Ԍ', + 'ԏ' => 'Ԏ', + 'ԑ' => 'Ԑ', + 'ԓ' => 'Ԓ', + 'ԕ' => 'Ԕ', + 'ԗ' => 'Ԗ', + 'ԙ' => 'Ԙ', + 'ԛ' => 'Ԛ', + 'ԝ' => 'Ԝ', + 'ԟ' => 'Ԟ', + 'ԡ' => 'Ԡ', + 'ԣ' => 'Ԣ', + 'ԥ' => 'Ԥ', + 'ԧ' => 'Ԧ', + 'ԩ' => 'Ԩ', + 'ԫ' => 'Ԫ', + 'ԭ' => 'Ԭ', + 'ԯ' => 'Ԯ', + 'ա' => 'Ա', + 'բ' => 'Բ', + 'գ' => 'Գ', + 'դ' => 'Դ', + 'ե' => 'Ե', + 'զ' => 'Զ', + 'է' => 'Է', + 'ը' => 'Ը', + 'թ' => 'Թ', + 'ժ' => 'Ժ', + 'ի' => 'Ի', + 'լ' => 'Լ', + 'խ' => 'Խ', + 'ծ' => 'Ծ', + 'կ' => 'Կ', + 'հ' => 'Հ', + 'ձ' => 'Ձ', + 'ղ' => 'Ղ', + 'ճ' => 'Ճ', + 'մ' => 'Մ', + 'յ' => 'Յ', + 'ն' => 'Ն', + 'շ' => 'Շ', + 'ո' => 'Ո', + 'չ' => 'Չ', + 'պ' => 'Պ', + 'ջ' => 'Ջ', + 'ռ' => 'Ռ', + 'ս' => 'Ս', + 'վ' => 'Վ', + 'տ' => 'Տ', + 'ր' => 'Ր', + 'ց' => 'Ց', + 'ւ' => 'Ւ', + 'փ' => 'Փ', + 'ք' => 'Ք', + 'օ' => 'Օ', + 'ֆ' => 'Ֆ', + 'ა' => 'Ა', + 'ბ' => 'Ბ', + 'გ' => 'Გ', + 'დ' => 'Დ', + 'ე' => 'Ე', + 'ვ' => 'Ვ', + 'ზ' => 'Ზ', + 'თ' => 'Თ', + 'ი' => 'Ი', + 'კ' => 'Კ', + 'ლ' => 'Ლ', + 'მ' => 'Მ', + 'ნ' => 'Ნ', + 'ო' => 'Ო', + 'პ' => 'Პ', + 'ჟ' => 'Ჟ', + 'რ' => 'Რ', + 'ს' => 'Ს', + 'ტ' => 'Ტ', + 'უ' => 'Უ', + 'ფ' => 'Ფ', + 'ქ' => 'Ქ', + 'ღ' => 'Ღ', + 'ყ' => 'Ყ', + 'შ' => 'Შ', + 'ჩ' => 'Ჩ', + 'ც' => 'Ც', + 'ძ' => 'Ძ', + 'წ' => 'Წ', + 'ჭ' => 'Ჭ', + 'ხ' => 'Ხ', + 'ჯ' => 'Ჯ', + 'ჰ' => 'Ჰ', + 'ჱ' => 'Ჱ', + 'ჲ' => 'Ჲ', + 'ჳ' => 'Ჳ', + 'ჴ' => 'Ჴ', + 'ჵ' => 'Ჵ', + 'ჶ' => 'Ჶ', + 'ჷ' => 'Ჷ', + 'ჸ' => 'Ჸ', + 'ჹ' => 'Ჹ', + 'ჺ' => 'Ჺ', + 'ჽ' => 'Ჽ', + 'ჾ' => 'Ჾ', + 'ჿ' => 'Ჿ', + 'ᏸ' => 'Ᏸ', + 'ᏹ' => 'Ᏹ', + 'ᏺ' => 'Ᏺ', + 'ᏻ' => 'Ᏻ', + 'ᏼ' => 'Ᏼ', + 'ᏽ' => 'Ᏽ', + 'ᲀ' => 'В', + 'ᲁ' => 'Д', + 'ᲂ' => 'О', + 'ᲃ' => 'С', + 'ᲄ' => 'Т', + 'ᲅ' => 'Т', + 'ᲆ' => 'Ъ', + 'ᲇ' => 'Ѣ', + 'ᲈ' => 'Ꙋ', + 'ᵹ' => 'Ᵹ', + 'ᵽ' => 'Ᵽ', + 'ᶎ' => 'Ᶎ', + 'ḁ' => 'Ḁ', + 'ḃ' => 'Ḃ', + 'ḅ' => 'Ḅ', + 'ḇ' => 'Ḇ', + 'ḉ' => 'Ḉ', + 'ḋ' => 'Ḋ', + 'ḍ' => 'Ḍ', + 'ḏ' => 'Ḏ', + 'ḑ' => 'Ḑ', + 'ḓ' => 'Ḓ', + 'ḕ' => 'Ḕ', + 'ḗ' => 'Ḗ', + 'ḙ' => 'Ḙ', + 'ḛ' => 'Ḛ', + 'ḝ' => 'Ḝ', + 'ḟ' => 'Ḟ', + 'ḡ' => 'Ḡ', + 'ḣ' => 'Ḣ', + 'ḥ' => 'Ḥ', + 'ḧ' => 'Ḧ', + 'ḩ' => 'Ḩ', + 'ḫ' => 'Ḫ', + 'ḭ' => 'Ḭ', + 'ḯ' => 'Ḯ', + 'ḱ' => 'Ḱ', + 'ḳ' => 'Ḳ', + 'ḵ' => 'Ḵ', + 'ḷ' => 'Ḷ', + 'ḹ' => 'Ḹ', + 'ḻ' => 'Ḻ', + 'ḽ' => 'Ḽ', + 'ḿ' => 'Ḿ', + 'ṁ' => 'Ṁ', + 'ṃ' => 'Ṃ', + 'ṅ' => 'Ṅ', + 'ṇ' => 'Ṇ', + 'ṉ' => 'Ṉ', + 'ṋ' => 'Ṋ', + 'ṍ' => 'Ṍ', + 'ṏ' => 'Ṏ', + 'ṑ' => 'Ṑ', + 'ṓ' => 'Ṓ', + 'ṕ' => 'Ṕ', + 'ṗ' => 'Ṗ', + 'ṙ' => 'Ṙ', + 'ṛ' => 'Ṛ', + 'ṝ' => 'Ṝ', + 'ṟ' => 'Ṟ', + 'ṡ' => 'Ṡ', + 'ṣ' => 'Ṣ', + 'ṥ' => 'Ṥ', + 'ṧ' => 'Ṧ', + 'ṩ' => 'Ṩ', + 'ṫ' => 'Ṫ', + 'ṭ' => 'Ṭ', + 'ṯ' => 'Ṯ', + 'ṱ' => 'Ṱ', + 'ṳ' => 'Ṳ', + 'ṵ' => 'Ṵ', + 'ṷ' => 'Ṷ', + 'ṹ' => 'Ṹ', + 'ṻ' => 'Ṻ', + 'ṽ' => 'Ṽ', + 'ṿ' => 'Ṿ', + 'ẁ' => 'Ẁ', + 'ẃ' => 'Ẃ', + 'ẅ' => 'Ẅ', + 'ẇ' => 'Ẇ', + 'ẉ' => 'Ẉ', + 'ẋ' => 'Ẋ', + 'ẍ' => 'Ẍ', + 'ẏ' => 'Ẏ', + 'ẑ' => 'Ẑ', + 'ẓ' => 'Ẓ', + 'ẕ' => 'Ẕ', + 'ẛ' => 'Ṡ', + 'ạ' => 'Ạ', + 'ả' => 'Ả', + 'ấ' => 'Ấ', + 'ầ' => 'Ầ', + 'ẩ' => 'Ẩ', + 'ẫ' => 'Ẫ', + 'ậ' => 'Ậ', + 'ắ' => 'Ắ', + 'ằ' => 'Ằ', + 'ẳ' => 'Ẳ', + 'ẵ' => 'Ẵ', + 'ặ' => 'Ặ', + 'ẹ' => 'Ẹ', + 'ẻ' => 'Ẻ', + 'ẽ' => 'Ẽ', + 'ế' => 'Ế', + 'ề' => 'Ề', + 'ể' => 'Ể', + 'ễ' => 'Ễ', + 'ệ' => 'Ệ', + 'ỉ' => 'Ỉ', + 'ị' => 'Ị', + 'ọ' => 'Ọ', + 'ỏ' => 'Ỏ', + 'ố' => 'Ố', + 'ồ' => 'Ồ', + 'ổ' => 'Ổ', + 'ỗ' => 'Ỗ', + 'ộ' => 'Ộ', + 'ớ' => 'Ớ', + 'ờ' => 'Ờ', + 'ở' => 'Ở', + 'ỡ' => 'Ỡ', + 'ợ' => 'Ợ', + 'ụ' => 'Ụ', + 'ủ' => 'Ủ', + 'ứ' => 'Ứ', + 'ừ' => 'Ừ', + 'ử' => 'Ử', + 'ữ' => 'Ữ', + 'ự' => 'Ự', + 'ỳ' => 'Ỳ', + 'ỵ' => 'Ỵ', + 'ỷ' => 'Ỷ', + 'ỹ' => 'Ỹ', + 'ỻ' => 'Ỻ', + 'ỽ' => 'Ỽ', + 'ỿ' => 'Ỿ', + 'ἀ' => 'Ἀ', + 'ἁ' => 'Ἁ', + 'ἂ' => 'Ἂ', + 'ἃ' => 'Ἃ', + 'ἄ' => 'Ἄ', + 'ἅ' => 'Ἅ', + 'ἆ' => 'Ἆ', + 'ἇ' => 'Ἇ', + 'ἐ' => 'Ἐ', + 'ἑ' => 'Ἑ', + 'ἒ' => 'Ἒ', + 'ἓ' => 'Ἓ', + 'ἔ' => 'Ἔ', + 'ἕ' => 'Ἕ', + 'ἠ' => 'Ἠ', + 'ἡ' => 'Ἡ', + 'ἢ' => 'Ἢ', + 'ἣ' => 'Ἣ', + 'ἤ' => 'Ἤ', + 'ἥ' => 'Ἥ', + 'ἦ' => 'Ἦ', + 'ἧ' => 'Ἧ', + 'ἰ' => 'Ἰ', + 'ἱ' => 'Ἱ', + 'ἲ' => 'Ἲ', + 'ἳ' => 'Ἳ', + 'ἴ' => 'Ἴ', + 'ἵ' => 'Ἵ', + 'ἶ' => 'Ἶ', + 'ἷ' => 'Ἷ', + 'ὀ' => 'Ὀ', + 'ὁ' => 'Ὁ', + 'ὂ' => 'Ὂ', + 'ὃ' => 'Ὃ', + 'ὄ' => 'Ὄ', + 'ὅ' => 'Ὅ', + 'ὑ' => 'Ὑ', + 'ὓ' => 'Ὓ', + 'ὕ' => 'Ὕ', + 'ὗ' => 'Ὗ', + 'ὠ' => 'Ὠ', + 'ὡ' => 'Ὡ', + 'ὢ' => 'Ὢ', + 'ὣ' => 'Ὣ', + 'ὤ' => 'Ὤ', + 'ὥ' => 'Ὥ', + 'ὦ' => 'Ὦ', + 'ὧ' => 'Ὧ', + 'ὰ' => 'Ὰ', + 'ά' => 'Ά', + 'ὲ' => 'Ὲ', + 'έ' => 'Έ', + 'ὴ' => 'Ὴ', + 'ή' => 'Ή', + 'ὶ' => 'Ὶ', + 'ί' => 'Ί', + 'ὸ' => 'Ὸ', + 'ό' => 'Ό', + 'ὺ' => 'Ὺ', + 'ύ' => 'Ύ', + 'ὼ' => 'Ὼ', + 'ώ' => 'Ώ', + 'ᾀ' => 'ἈΙ', + 'ᾁ' => 'ἉΙ', + 'ᾂ' => 'ἊΙ', + 'ᾃ' => 'ἋΙ', + 'ᾄ' => 'ἌΙ', + 'ᾅ' => 'ἍΙ', + 'ᾆ' => 'ἎΙ', + 'ᾇ' => 'ἏΙ', + 'ᾐ' => 'ἨΙ', + 'ᾑ' => 'ἩΙ', + 'ᾒ' => 'ἪΙ', + 'ᾓ' => 'ἫΙ', + 'ᾔ' => 'ἬΙ', + 'ᾕ' => 'ἭΙ', + 'ᾖ' => 'ἮΙ', + 'ᾗ' => 'ἯΙ', + 'ᾠ' => 'ὨΙ', + 'ᾡ' => 'ὩΙ', + 'ᾢ' => 'ὪΙ', + 'ᾣ' => 'ὫΙ', + 'ᾤ' => 'ὬΙ', + 'ᾥ' => 'ὭΙ', + 'ᾦ' => 'ὮΙ', + 'ᾧ' => 'ὯΙ', + 'ᾰ' => 'Ᾰ', + 'ᾱ' => 'Ᾱ', + 'ᾳ' => 'ΑΙ', + 'ι' => 'Ι', + 'ῃ' => 'ΗΙ', + 'ῐ' => 'Ῐ', + 'ῑ' => 'Ῑ', + 'ῠ' => 'Ῠ', + 'ῡ' => 'Ῡ', + 'ῥ' => 'Ῥ', + 'ῳ' => 'ΩΙ', + 'ⅎ' => 'Ⅎ', + 'ⅰ' => 'Ⅰ', + 'ⅱ' => 'Ⅱ', + 'ⅲ' => 'Ⅲ', + 'ⅳ' => 'Ⅳ', + 'ⅴ' => 'Ⅴ', + 'ⅵ' => 'Ⅵ', + 'ⅶ' => 'Ⅶ', + 'ⅷ' => 'Ⅷ', + 'ⅸ' => 'Ⅸ', + 'ⅹ' => 'Ⅹ', + 'ⅺ' => 'Ⅺ', + 'ⅻ' => 'Ⅻ', + 'ⅼ' => 'Ⅼ', + 'ⅽ' => 'Ⅽ', + 'ⅾ' => 'Ⅾ', + 'ⅿ' => 'Ⅿ', + 'ↄ' => 'Ↄ', + 'ⓐ' => 'Ⓐ', + 'ⓑ' => 'Ⓑ', + 'ⓒ' => 'Ⓒ', + 'ⓓ' => 'Ⓓ', + 'ⓔ' => 'Ⓔ', + 'ⓕ' => 'Ⓕ', + 'ⓖ' => 'Ⓖ', + 'ⓗ' => 'Ⓗ', + 'ⓘ' => 'Ⓘ', + 'ⓙ' => 'Ⓙ', + 'ⓚ' => 'Ⓚ', + 'ⓛ' => 'Ⓛ', + 'ⓜ' => 'Ⓜ', + 'ⓝ' => 'Ⓝ', + 'ⓞ' => 'Ⓞ', + 'ⓟ' => 'Ⓟ', + 'ⓠ' => 'Ⓠ', + 'ⓡ' => 'Ⓡ', + 'ⓢ' => 'Ⓢ', + 'ⓣ' => 'Ⓣ', + 'ⓤ' => 'Ⓤ', + 'ⓥ' => 'Ⓥ', + 'ⓦ' => 'Ⓦ', + 'ⓧ' => 'Ⓧ', + 'ⓨ' => 'Ⓨ', + 'ⓩ' => 'Ⓩ', + 'ⰰ' => 'Ⰰ', + 'ⰱ' => 'Ⰱ', + 'ⰲ' => 'Ⰲ', + 'ⰳ' => 'Ⰳ', + 'ⰴ' => 'Ⰴ', + 'ⰵ' => 'Ⰵ', + 'ⰶ' => 'Ⰶ', + 'ⰷ' => 'Ⰷ', + 'ⰸ' => 'Ⰸ', + 'ⰹ' => 'Ⰹ', + 'ⰺ' => 'Ⰺ', + 'ⰻ' => 'Ⰻ', + 'ⰼ' => 'Ⰼ', + 'ⰽ' => 'Ⰽ', + 'ⰾ' => 'Ⰾ', + 'ⰿ' => 'Ⰿ', + 'ⱀ' => 'Ⱀ', + 'ⱁ' => 'Ⱁ', + 'ⱂ' => 'Ⱂ', + 'ⱃ' => 'Ⱃ', + 'ⱄ' => 'Ⱄ', + 'ⱅ' => 'Ⱅ', + 'ⱆ' => 'Ⱆ', + 'ⱇ' => 'Ⱇ', + 'ⱈ' => 'Ⱈ', + 'ⱉ' => 'Ⱉ', + 'ⱊ' => 'Ⱊ', + 'ⱋ' => 'Ⱋ', + 'ⱌ' => 'Ⱌ', + 'ⱍ' => 'Ⱍ', + 'ⱎ' => 'Ⱎ', + 'ⱏ' => 'Ⱏ', + 'ⱐ' => 'Ⱐ', + 'ⱑ' => 'Ⱑ', + 'ⱒ' => 'Ⱒ', + 'ⱓ' => 'Ⱓ', + 'ⱔ' => 'Ⱔ', + 'ⱕ' => 'Ⱕ', + 'ⱖ' => 'Ⱖ', + 'ⱗ' => 'Ⱗ', + 'ⱘ' => 'Ⱘ', + 'ⱙ' => 'Ⱙ', + 'ⱚ' => 'Ⱚ', + 'ⱛ' => 'Ⱛ', + 'ⱜ' => 'Ⱜ', + 'ⱝ' => 'Ⱝ', + 'ⱞ' => 'Ⱞ', + 'ⱡ' => 'Ⱡ', + 'ⱥ' => 'Ⱥ', + 'ⱦ' => 'Ⱦ', + 'ⱨ' => 'Ⱨ', + 'ⱪ' => 'Ⱪ', + 'ⱬ' => 'Ⱬ', + 'ⱳ' => 'Ⱳ', + 'ⱶ' => 'Ⱶ', + 'ⲁ' => 'Ⲁ', + 'ⲃ' => 'Ⲃ', + 'ⲅ' => 'Ⲅ', + 'ⲇ' => 'Ⲇ', + 'ⲉ' => 'Ⲉ', + 'ⲋ' => 'Ⲋ', + 'ⲍ' => 'Ⲍ', + 'ⲏ' => 'Ⲏ', + 'ⲑ' => 'Ⲑ', + 'ⲓ' => 'Ⲓ', + 'ⲕ' => 'Ⲕ', + 'ⲗ' => 'Ⲗ', + 'ⲙ' => 'Ⲙ', + 'ⲛ' => 'Ⲛ', + 'ⲝ' => 'Ⲝ', + 'ⲟ' => 'Ⲟ', + 'ⲡ' => 'Ⲡ', + 'ⲣ' => 'Ⲣ', + 'ⲥ' => 'Ⲥ', + 'ⲧ' => 'Ⲧ', + 'ⲩ' => 'Ⲩ', + 'ⲫ' => 'Ⲫ', + 'ⲭ' => 'Ⲭ', + 'ⲯ' => 'Ⲯ', + 'ⲱ' => 'Ⲱ', + 'ⲳ' => 'Ⲳ', + 'ⲵ' => 'Ⲵ', + 'ⲷ' => 'Ⲷ', + 'ⲹ' => 'Ⲹ', + 'ⲻ' => 'Ⲻ', + 'ⲽ' => 'Ⲽ', + 'ⲿ' => 'Ⲿ', + 'ⳁ' => 'Ⳁ', + 'ⳃ' => 'Ⳃ', + 'ⳅ' => 'Ⳅ', + 'ⳇ' => 'Ⳇ', + 'ⳉ' => 'Ⳉ', + 'ⳋ' => 'Ⳋ', + 'ⳍ' => 'Ⳍ', + 'ⳏ' => 'Ⳏ', + 'ⳑ' => 'Ⳑ', + 'ⳓ' => 'Ⳓ', + 'ⳕ' => 'Ⳕ', + 'ⳗ' => 'Ⳗ', + 'ⳙ' => 'Ⳙ', + 'ⳛ' => 'Ⳛ', + 'ⳝ' => 'Ⳝ', + 'ⳟ' => 'Ⳟ', + 'ⳡ' => 'Ⳡ', + 'ⳣ' => 'Ⳣ', + 'ⳬ' => 'Ⳬ', + 'ⳮ' => 'Ⳮ', + 'ⳳ' => 'Ⳳ', + 'ⴀ' => 'Ⴀ', + 'ⴁ' => 'Ⴁ', + 'ⴂ' => 'Ⴂ', + 'ⴃ' => 'Ⴃ', + 'ⴄ' => 'Ⴄ', + 'ⴅ' => 'Ⴅ', + 'ⴆ' => 'Ⴆ', + 'ⴇ' => 'Ⴇ', + 'ⴈ' => 'Ⴈ', + 'ⴉ' => 'Ⴉ', + 'ⴊ' => 'Ⴊ', + 'ⴋ' => 'Ⴋ', + 'ⴌ' => 'Ⴌ', + 'ⴍ' => 'Ⴍ', + 'ⴎ' => 'Ⴎ', + 'ⴏ' => 'Ⴏ', + 'ⴐ' => 'Ⴐ', + 'ⴑ' => 'Ⴑ', + 'ⴒ' => 'Ⴒ', + 'ⴓ' => 'Ⴓ', + 'ⴔ' => 'Ⴔ', + 'ⴕ' => 'Ⴕ', + 'ⴖ' => 'Ⴖ', + 'ⴗ' => 'Ⴗ', + 'ⴘ' => 'Ⴘ', + 'ⴙ' => 'Ⴙ', + 'ⴚ' => 'Ⴚ', + 'ⴛ' => 'Ⴛ', + 'ⴜ' => 'Ⴜ', + 'ⴝ' => 'Ⴝ', + 'ⴞ' => 'Ⴞ', + 'ⴟ' => 'Ⴟ', + 'ⴠ' => 'Ⴠ', + 'ⴡ' => 'Ⴡ', + 'ⴢ' => 'Ⴢ', + 'ⴣ' => 'Ⴣ', + 'ⴤ' => 'Ⴤ', + 'ⴥ' => 'Ⴥ', + 'ⴧ' => 'Ⴧ', + 'ⴭ' => 'Ⴭ', + 'ꙁ' => 'Ꙁ', + 'ꙃ' => 'Ꙃ', + 'ꙅ' => 'Ꙅ', + 'ꙇ' => 'Ꙇ', + 'ꙉ' => 'Ꙉ', + 'ꙋ' => 'Ꙋ', + 'ꙍ' => 'Ꙍ', + 'ꙏ' => 'Ꙏ', + 'ꙑ' => 'Ꙑ', + 'ꙓ' => 'Ꙓ', + 'ꙕ' => 'Ꙕ', + 'ꙗ' => 'Ꙗ', + 'ꙙ' => 'Ꙙ', + 'ꙛ' => 'Ꙛ', + 'ꙝ' => 'Ꙝ', + 'ꙟ' => 'Ꙟ', + 'ꙡ' => 'Ꙡ', + 'ꙣ' => 'Ꙣ', + 'ꙥ' => 'Ꙥ', + 'ꙧ' => 'Ꙧ', + 'ꙩ' => 'Ꙩ', + 'ꙫ' => 'Ꙫ', + 'ꙭ' => 'Ꙭ', + 'ꚁ' => 'Ꚁ', + 'ꚃ' => 'Ꚃ', + 'ꚅ' => 'Ꚅ', + 'ꚇ' => 'Ꚇ', + 'ꚉ' => 'Ꚉ', + 'ꚋ' => 'Ꚋ', + 'ꚍ' => 'Ꚍ', + 'ꚏ' => 'Ꚏ', + 'ꚑ' => 'Ꚑ', + 'ꚓ' => 'Ꚓ', + 'ꚕ' => 'Ꚕ', + 'ꚗ' => 'Ꚗ', + 'ꚙ' => 'Ꚙ', + 'ꚛ' => 'Ꚛ', + 'ꜣ' => 'Ꜣ', + 'ꜥ' => 'Ꜥ', + 'ꜧ' => 'Ꜧ', + 'ꜩ' => 'Ꜩ', + 'ꜫ' => 'Ꜫ', + 'ꜭ' => 'Ꜭ', + 'ꜯ' => 'Ꜯ', + 'ꜳ' => 'Ꜳ', + 'ꜵ' => 'Ꜵ', + 'ꜷ' => 'Ꜷ', + 'ꜹ' => 'Ꜹ', + 'ꜻ' => 'Ꜻ', + 'ꜽ' => 'Ꜽ', + 'ꜿ' => 'Ꜿ', + 'ꝁ' => 'Ꝁ', + 'ꝃ' => 'Ꝃ', + 'ꝅ' => 'Ꝅ', + 'ꝇ' => 'Ꝇ', + 'ꝉ' => 'Ꝉ', + 'ꝋ' => 'Ꝋ', + 'ꝍ' => 'Ꝍ', + 'ꝏ' => 'Ꝏ', + 'ꝑ' => 'Ꝑ', + 'ꝓ' => 'Ꝓ', + 'ꝕ' => 'Ꝕ', + 'ꝗ' => 'Ꝗ', + 'ꝙ' => 'Ꝙ', + 'ꝛ' => 'Ꝛ', + 'ꝝ' => 'Ꝝ', + 'ꝟ' => 'Ꝟ', + 'ꝡ' => 'Ꝡ', + 'ꝣ' => 'Ꝣ', + 'ꝥ' => 'Ꝥ', + 'ꝧ' => 'Ꝧ', + 'ꝩ' => 'Ꝩ', + 'ꝫ' => 'Ꝫ', + 'ꝭ' => 'Ꝭ', + 'ꝯ' => 'Ꝯ', + 'ꝺ' => 'Ꝺ', + 'ꝼ' => 'Ꝼ', + 'ꝿ' => 'Ꝿ', + 'ꞁ' => 'Ꞁ', + 'ꞃ' => 'Ꞃ', + 'ꞅ' => 'Ꞅ', + 'ꞇ' => 'Ꞇ', + 'ꞌ' => 'Ꞌ', + 'ꞑ' => 'Ꞑ', + 'ꞓ' => 'Ꞓ', + 'ꞔ' => 'Ꞔ', + 'ꞗ' => 'Ꞗ', + 'ꞙ' => 'Ꞙ', + 'ꞛ' => 'Ꞛ', + 'ꞝ' => 'Ꞝ', + 'ꞟ' => 'Ꞟ', + 'ꞡ' => 'Ꞡ', + 'ꞣ' => 'Ꞣ', + 'ꞥ' => 'Ꞥ', + 'ꞧ' => 'Ꞧ', + 'ꞩ' => 'Ꞩ', + 'ꞵ' => 'Ꞵ', + 'ꞷ' => 'Ꞷ', + 'ꞹ' => 'Ꞹ', + 'ꞻ' => 'Ꞻ', + 'ꞽ' => 'Ꞽ', + 'ꞿ' => 'Ꞿ', + 'ꟃ' => 'Ꟃ', + 'ꟈ' => 'Ꟈ', + 'ꟊ' => 'Ꟊ', + 'ꟶ' => 'Ꟶ', + 'ꭓ' => 'Ꭓ', + 'ꭰ' => 'Ꭰ', + 'ꭱ' => 'Ꭱ', + 'ꭲ' => 'Ꭲ', + 'ꭳ' => 'Ꭳ', + 'ꭴ' => 'Ꭴ', + 'ꭵ' => 'Ꭵ', + 'ꭶ' => 'Ꭶ', + 'ꭷ' => 'Ꭷ', + 'ꭸ' => 'Ꭸ', + 'ꭹ' => 'Ꭹ', + 'ꭺ' => 'Ꭺ', + 'ꭻ' => 'Ꭻ', + 'ꭼ' => 'Ꭼ', + 'ꭽ' => 'Ꭽ', + 'ꭾ' => 'Ꭾ', + 'ꭿ' => 'Ꭿ', + 'ꮀ' => 'Ꮀ', + 'ꮁ' => 'Ꮁ', + 'ꮂ' => 'Ꮂ', + 'ꮃ' => 'Ꮃ', + 'ꮄ' => 'Ꮄ', + 'ꮅ' => 'Ꮅ', + 'ꮆ' => 'Ꮆ', + 'ꮇ' => 'Ꮇ', + 'ꮈ' => 'Ꮈ', + 'ꮉ' => 'Ꮉ', + 'ꮊ' => 'Ꮊ', + 'ꮋ' => 'Ꮋ', + 'ꮌ' => 'Ꮌ', + 'ꮍ' => 'Ꮍ', + 'ꮎ' => 'Ꮎ', + 'ꮏ' => 'Ꮏ', + 'ꮐ' => 'Ꮐ', + 'ꮑ' => 'Ꮑ', + 'ꮒ' => 'Ꮒ', + 'ꮓ' => 'Ꮓ', + 'ꮔ' => 'Ꮔ', + 'ꮕ' => 'Ꮕ', + 'ꮖ' => 'Ꮖ', + 'ꮗ' => 'Ꮗ', + 'ꮘ' => 'Ꮘ', + 'ꮙ' => 'Ꮙ', + 'ꮚ' => 'Ꮚ', + 'ꮛ' => 'Ꮛ', + 'ꮜ' => 'Ꮜ', + 'ꮝ' => 'Ꮝ', + 'ꮞ' => 'Ꮞ', + 'ꮟ' => 'Ꮟ', + 'ꮠ' => 'Ꮠ', + 'ꮡ' => 'Ꮡ', + 'ꮢ' => 'Ꮢ', + 'ꮣ' => 'Ꮣ', + 'ꮤ' => 'Ꮤ', + 'ꮥ' => 'Ꮥ', + 'ꮦ' => 'Ꮦ', + 'ꮧ' => 'Ꮧ', + 'ꮨ' => 'Ꮨ', + 'ꮩ' => 'Ꮩ', + 'ꮪ' => 'Ꮪ', + 'ꮫ' => 'Ꮫ', + 'ꮬ' => 'Ꮬ', + 'ꮭ' => 'Ꮭ', + 'ꮮ' => 'Ꮮ', + 'ꮯ' => 'Ꮯ', + 'ꮰ' => 'Ꮰ', + 'ꮱ' => 'Ꮱ', + 'ꮲ' => 'Ꮲ', + 'ꮳ' => 'Ꮳ', + 'ꮴ' => 'Ꮴ', + 'ꮵ' => 'Ꮵ', + 'ꮶ' => 'Ꮶ', + 'ꮷ' => 'Ꮷ', + 'ꮸ' => 'Ꮸ', + 'ꮹ' => 'Ꮹ', + 'ꮺ' => 'Ꮺ', + 'ꮻ' => 'Ꮻ', + 'ꮼ' => 'Ꮼ', + 'ꮽ' => 'Ꮽ', + 'ꮾ' => 'Ꮾ', + 'ꮿ' => 'Ꮿ', + 'a' => 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + '𐐨' => '𐐀', + '𐐩' => '𐐁', + '𐐪' => '𐐂', + '𐐫' => '𐐃', + '𐐬' => '𐐄', + '𐐭' => '𐐅', + '𐐮' => '𐐆', + '𐐯' => '𐐇', + '𐐰' => '𐐈', + '𐐱' => '𐐉', + '𐐲' => '𐐊', + '𐐳' => '𐐋', + '𐐴' => '𐐌', + '𐐵' => '𐐍', + '𐐶' => '𐐎', + '𐐷' => '𐐏', + '𐐸' => '𐐐', + '𐐹' => '𐐑', + '𐐺' => '𐐒', + '𐐻' => '𐐓', + '𐐼' => '𐐔', + '𐐽' => '𐐕', + '𐐾' => '𐐖', + '𐐿' => '𐐗', + '𐑀' => '𐐘', + '𐑁' => '𐐙', + '𐑂' => '𐐚', + '𐑃' => '𐐛', + '𐑄' => '𐐜', + '𐑅' => '𐐝', + '𐑆' => '𐐞', + '𐑇' => '𐐟', + '𐑈' => '𐐠', + '𐑉' => '𐐡', + '𐑊' => '𐐢', + '𐑋' => '𐐣', + '𐑌' => '𐐤', + '𐑍' => '𐐥', + '𐑎' => '𐐦', + '𐑏' => '𐐧', + '𐓘' => '𐒰', + '𐓙' => '𐒱', + '𐓚' => '𐒲', + '𐓛' => '𐒳', + '𐓜' => '𐒴', + '𐓝' => '𐒵', + '𐓞' => '𐒶', + '𐓟' => '𐒷', + '𐓠' => '𐒸', + '𐓡' => '𐒹', + '𐓢' => '𐒺', + '𐓣' => '𐒻', + '𐓤' => '𐒼', + '𐓥' => '𐒽', + '𐓦' => '𐒾', + '𐓧' => '𐒿', + '𐓨' => '𐓀', + '𐓩' => '𐓁', + '𐓪' => '𐓂', + '𐓫' => '𐓃', + '𐓬' => '𐓄', + '𐓭' => '𐓅', + '𐓮' => '𐓆', + '𐓯' => '𐓇', + '𐓰' => '𐓈', + '𐓱' => '𐓉', + '𐓲' => '𐓊', + '𐓳' => '𐓋', + '𐓴' => '𐓌', + '𐓵' => '𐓍', + '𐓶' => '𐓎', + '𐓷' => '𐓏', + '𐓸' => '𐓐', + '𐓹' => '𐓑', + '𐓺' => '𐓒', + '𐓻' => '𐓓', + '𐳀' => '𐲀', + '𐳁' => '𐲁', + '𐳂' => '𐲂', + '𐳃' => '𐲃', + '𐳄' => '𐲄', + '𐳅' => '𐲅', + '𐳆' => '𐲆', + '𐳇' => '𐲇', + '𐳈' => '𐲈', + '𐳉' => '𐲉', + '𐳊' => '𐲊', + '𐳋' => '𐲋', + '𐳌' => '𐲌', + '𐳍' => '𐲍', + '𐳎' => '𐲎', + '𐳏' => '𐲏', + '𐳐' => '𐲐', + '𐳑' => '𐲑', + '𐳒' => '𐲒', + '𐳓' => '𐲓', + '𐳔' => '𐲔', + '𐳕' => '𐲕', + '𐳖' => '𐲖', + '𐳗' => '𐲗', + '𐳘' => '𐲘', + '𐳙' => '𐲙', + '𐳚' => '𐲚', + '𐳛' => '𐲛', + '𐳜' => '𐲜', + '𐳝' => '𐲝', + '𐳞' => '𐲞', + '𐳟' => '𐲟', + '𐳠' => '𐲠', + '𐳡' => '𐲡', + '𐳢' => '𐲢', + '𐳣' => '𐲣', + '𐳤' => '𐲤', + '𐳥' => '𐲥', + '𐳦' => '𐲦', + '𐳧' => '𐲧', + '𐳨' => '𐲨', + '𐳩' => '𐲩', + '𐳪' => '𐲪', + '𐳫' => '𐲫', + '𐳬' => '𐲬', + '𐳭' => '𐲭', + '𐳮' => '𐲮', + '𐳯' => '𐲯', + '𐳰' => '𐲰', + '𐳱' => '𐲱', + '𐳲' => '𐲲', + '𑣀' => '𑢠', + '𑣁' => '𑢡', + '𑣂' => '𑢢', + '𑣃' => '𑢣', + '𑣄' => '𑢤', + '𑣅' => '𑢥', + '𑣆' => '𑢦', + '𑣇' => '𑢧', + '𑣈' => '𑢨', + '𑣉' => '𑢩', + '𑣊' => '𑢪', + '𑣋' => '𑢫', + '𑣌' => '𑢬', + '𑣍' => '𑢭', + '𑣎' => '𑢮', + '𑣏' => '𑢯', + '𑣐' => '𑢰', + '𑣑' => '𑢱', + '𑣒' => '𑢲', + '𑣓' => '𑢳', + '𑣔' => '𑢴', + '𑣕' => '𑢵', + '𑣖' => '𑢶', + '𑣗' => '𑢷', + '𑣘' => '𑢸', + '𑣙' => '𑢹', + '𑣚' => '𑢺', + '𑣛' => '𑢻', + '𑣜' => '𑢼', + '𑣝' => '𑢽', + '𑣞' => '𑢾', + '𑣟' => '𑢿', + '𖹠' => '𖹀', + '𖹡' => '𖹁', + '𖹢' => '𖹂', + '𖹣' => '𖹃', + '𖹤' => '𖹄', + '𖹥' => '𖹅', + '𖹦' => '𖹆', + '𖹧' => '𖹇', + '𖹨' => '𖹈', + '𖹩' => '𖹉', + '𖹪' => '𖹊', + '𖹫' => '𖹋', + '𖹬' => '𖹌', + '𖹭' => '𖹍', + '𖹮' => '𖹎', + '𖹯' => '𖹏', + '𖹰' => '𖹐', + '𖹱' => '𖹑', + '𖹲' => '𖹒', + '𖹳' => '𖹓', + '𖹴' => '𖹔', + '𖹵' => '𖹕', + '𖹶' => '𖹖', + '𖹷' => '𖹗', + '𖹸' => '𖹘', + '𖹹' => '𖹙', + '𖹺' => '𖹚', + '𖹻' => '𖹛', + '𖹼' => '𖹜', + '𖹽' => '𖹝', + '𖹾' => '𖹞', + '𖹿' => '𖹟', + '𞤢' => '𞤀', + '𞤣' => '𞤁', + '𞤤' => '𞤂', + '𞤥' => '𞤃', + '𞤦' => '𞤄', + '𞤧' => '𞤅', + '𞤨' => '𞤆', + '𞤩' => '𞤇', + '𞤪' => '𞤈', + '𞤫' => '𞤉', + '𞤬' => '𞤊', + '𞤭' => '𞤋', + '𞤮' => '𞤌', + '𞤯' => '𞤍', + '𞤰' => '𞤎', + '𞤱' => '𞤏', + '𞤲' => '𞤐', + '𞤳' => '𞤑', + '𞤴' => '𞤒', + '𞤵' => '𞤓', + '𞤶' => '𞤔', + '𞤷' => '𞤕', + '𞤸' => '𞤖', + '𞤹' => '𞤗', + '𞤺' => '𞤘', + '𞤻' => '𞤙', + '𞤼' => '𞤚', + '𞤽' => '𞤛', + '𞤾' => '𞤜', + '𞤿' => '𞤝', + '𞥀' => '𞤞', + '𞥁' => '𞤟', + '𞥂' => '𞤠', + '𞥃' => '𞤡', + 'ß' => 'SS', + 'ff' => 'FF', + 'fi' => 'FI', + 'fl' => 'FL', + 'ffi' => 'FFI', + 'ffl' => 'FFL', + 'ſt' => 'ST', + 'st' => 'ST', + 'և' => 'ԵՒ', + 'ﬓ' => 'ՄՆ', + 'ﬔ' => 'ՄԵ', + 'ﬕ' => 'ՄԻ', + 'ﬖ' => 'ՎՆ', + 'ﬗ' => 'ՄԽ', + 'ʼn' => 'ʼN', + 'ΐ' => 'Ϊ́', + 'ΰ' => 'Ϋ́', + 'ǰ' => 'J̌', + 'ẖ' => 'H̱', + 'ẗ' => 'T̈', + 'ẘ' => 'W̊', + 'ẙ' => 'Y̊', + 'ẚ' => 'Aʾ', + 'ὐ' => 'Υ̓', + 'ὒ' => 'Υ̓̀', + 'ὔ' => 'Υ̓́', + 'ὖ' => 'Υ̓͂', + 'ᾶ' => 'Α͂', + 'ῆ' => 'Η͂', + 'ῒ' => 'Ϊ̀', + 'ΐ' => 'Ϊ́', + 'ῖ' => 'Ι͂', + 'ῗ' => 'Ϊ͂', + 'ῢ' => 'Ϋ̀', + 'ΰ' => 'Ϋ́', + 'ῤ' => 'Ρ̓', + 'ῦ' => 'Υ͂', + 'ῧ' => 'Ϋ͂', + 'ῶ' => 'Ω͂', + 'ᾈ' => 'ἈΙ', + 'ᾉ' => 'ἉΙ', + 'ᾊ' => 'ἊΙ', + 'ᾋ' => 'ἋΙ', + 'ᾌ' => 'ἌΙ', + 'ᾍ' => 'ἍΙ', + 'ᾎ' => 'ἎΙ', + 'ᾏ' => 'ἏΙ', + 'ᾘ' => 'ἨΙ', + 'ᾙ' => 'ἩΙ', + 'ᾚ' => 'ἪΙ', + 'ᾛ' => 'ἫΙ', + 'ᾜ' => 'ἬΙ', + 'ᾝ' => 'ἭΙ', + 'ᾞ' => 'ἮΙ', + 'ᾟ' => 'ἯΙ', + 'ᾨ' => 'ὨΙ', + 'ᾩ' => 'ὩΙ', + 'ᾪ' => 'ὪΙ', + 'ᾫ' => 'ὫΙ', + 'ᾬ' => 'ὬΙ', + 'ᾭ' => 'ὭΙ', + 'ᾮ' => 'ὮΙ', + 'ᾯ' => 'ὯΙ', + 'ᾼ' => 'ΑΙ', + 'ῌ' => 'ΗΙ', + 'ῼ' => 'ΩΙ', + 'ᾲ' => 'ᾺΙ', + 'ᾴ' => 'ΆΙ', + 'ῂ' => 'ῊΙ', + 'ῄ' => 'ΉΙ', + 'ῲ' => 'ῺΙ', + 'ῴ' => 'ΏΙ', + 'ᾷ' => 'Α͂Ι', + 'ῇ' => 'Η͂Ι', + 'ῷ' => 'Ω͂Ι', +); diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap.php new file mode 100644 index 00000000000..1fedd1f7c84 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap.php @@ -0,0 +1,147 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language($language = null) { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap80.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap80.php new file mode 100644 index 00000000000..82f5ac4d0f1 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -0,0 +1,143 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/composer.json b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/composer.json new file mode 100644 index 00000000000..9cd2e924e9f --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-mbstring/composer.json @@ -0,0 +1,41 @@ +{ + "name": "symfony/polyfill-mbstring", + "type": "library", + "description": "Symfony polyfill for the Mbstring extension", + "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/LICENSE b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/LICENSE new file mode 100644 index 00000000000..5593b1d84f7 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Php80.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Php80.php new file mode 100644 index 00000000000..362dd1a9596 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Php80.php @@ -0,0 +1,115 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php80; + +/** + * @author Ion Bazan + * @author Nico Oelgart + * @author Nicolas Grekas + * + * @internal + */ +final class Php80 +{ + public static function fdiv(float $dividend, float $divisor): float + { + return @($dividend / $divisor); + } + + public static function get_debug_type($value): string + { + switch (true) { + case null === $value: return 'null'; + case \is_bool($value): return 'bool'; + case \is_string($value): return 'string'; + case \is_array($value): return 'array'; + case \is_int($value): return 'int'; + case \is_float($value): return 'float'; + case \is_object($value): break; + case $value instanceof \__PHP_Incomplete_Class: return '__PHP_Incomplete_Class'; + default: + if (null === $type = @get_resource_type($value)) { + return 'unknown'; + } + + if ('Unknown' === $type) { + $type = 'closed'; + } + + return "resource ($type)"; + } + + $class = \get_class($value); + + if (false === strpos($class, '@')) { + return $class; + } + + return (get_parent_class($class) ?: key(class_implements($class)) ?: 'class').'@anonymous'; + } + + public static function get_resource_id($res): int + { + if (!\is_resource($res) && null === @get_resource_type($res)) { + throw new \TypeError(sprintf('Argument 1 passed to get_resource_id() must be of the type resource, %s given', get_debug_type($res))); + } + + return (int) $res; + } + + public static function preg_last_error_msg(): string + { + switch (preg_last_error()) { + case \PREG_INTERNAL_ERROR: + return 'Internal error'; + case \PREG_BAD_UTF8_ERROR: + return 'Malformed UTF-8 characters, possibly incorrectly encoded'; + case \PREG_BAD_UTF8_OFFSET_ERROR: + return 'The offset did not correspond to the beginning of a valid UTF-8 code point'; + case \PREG_BACKTRACK_LIMIT_ERROR: + return 'Backtrack limit exhausted'; + case \PREG_RECURSION_LIMIT_ERROR: + return 'Recursion limit exhausted'; + case \PREG_JIT_STACKLIMIT_ERROR: + return 'JIT stack limit exhausted'; + case \PREG_NO_ERROR: + return 'No error'; + default: + return 'Unknown error'; + } + } + + public static function str_contains(string $haystack, string $needle): bool + { + return '' === $needle || false !== strpos($haystack, $needle); + } + + public static function str_starts_with(string $haystack, string $needle): bool + { + return 0 === strncmp($haystack, $needle, \strlen($needle)); + } + + public static function str_ends_with(string $haystack, string $needle): bool + { + if ('' === $needle || $needle === $haystack) { + return true; + } + + if ('' === $haystack) { + return false; + } + + $needleLength = \strlen($needle); + + return $needleLength <= \strlen($haystack) && 0 === substr_compare($haystack, $needle, -$needleLength); + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/PhpToken.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/PhpToken.php new file mode 100644 index 00000000000..fe6e6910562 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/PhpToken.php @@ -0,0 +1,103 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Php80; + +/** + * @author Fedonyuk Anton + * + * @internal + */ +class PhpToken implements \Stringable +{ + /** + * @var int + */ + public $id; + + /** + * @var string + */ + public $text; + + /** + * @var int + */ + public $line; + + /** + * @var int + */ + public $pos; + + public function __construct(int $id, string $text, int $line = -1, int $position = -1) + { + $this->id = $id; + $this->text = $text; + $this->line = $line; + $this->pos = $position; + } + + public function getTokenName(): ?string + { + if ('UNKNOWN' === $name = token_name($this->id)) { + $name = \strlen($this->text) > 1 || \ord($this->text) < 32 ? null : $this->text; + } + + return $name; + } + + /** + * @param int|string|array $kind + */ + public function is($kind): bool + { + foreach ((array) $kind as $value) { + if (\in_array($value, [$this->id, $this->text], true)) { + return true; + } + } + + return false; + } + + public function isIgnorable(): bool + { + return \in_array($this->id, [\T_WHITESPACE, \T_COMMENT, \T_DOC_COMMENT, \T_OPEN_TAG], true); + } + + public function __toString(): string + { + return (string) $this->text; + } + + /** + * @return static[] + */ + public static function tokenize(string $code, int $flags = 0): array + { + $line = 1; + $position = 0; + $tokens = token_get_all($code, $flags); + foreach ($tokens as $index => $token) { + if (\is_string($token)) { + $id = \ord($token); + $text = $token; + } else { + [$id, $text, $line] = $token; + } + $tokens[$index] = new static($id, $text, $line, $position); + $position += \strlen($text); + } + + return $tokens; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/README.md b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/README.md new file mode 100644 index 00000000000..3816c559d57 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/README.md @@ -0,0 +1,25 @@ +Symfony Polyfill / Php80 +======================== + +This component provides features added to PHP 8.0 core: + +- [`Stringable`](https://php.net/stringable) interface +- [`fdiv`](https://php.net/fdiv) +- [`ValueError`](https://php.net/valueerror) class +- [`UnhandledMatchError`](https://php.net/unhandledmatcherror) class +- `FILTER_VALIDATE_BOOL` constant +- [`get_debug_type`](https://php.net/get_debug_type) +- [`PhpToken`](https://php.net/phptoken) class +- [`preg_last_error_msg`](https://php.net/preg_last_error_msg) +- [`str_contains`](https://php.net/str_contains) +- [`str_starts_with`](https://php.net/str_starts_with) +- [`str_ends_with`](https://php.net/str_ends_with) +- [`get_resource_id`](https://php.net/get_resource_id) + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php new file mode 100644 index 00000000000..7ea6d2772dc --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/Attribute.php @@ -0,0 +1,22 @@ +flags = $flags; + } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php new file mode 100644 index 00000000000..72f10812b36 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/Resources/stubs/PhpToken.php @@ -0,0 +1,7 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Php80 as p; + +if (\PHP_VERSION_ID >= 80000) { + return; +} + +if (!defined('FILTER_VALIDATE_BOOL') && defined('FILTER_VALIDATE_BOOLEAN')) { + define('FILTER_VALIDATE_BOOL', \FILTER_VALIDATE_BOOLEAN); +} + +if (!function_exists('fdiv')) { + function fdiv(float $num1, float $num2): float { return p\Php80::fdiv($num1, $num2); } +} +if (!function_exists('preg_last_error_msg')) { + function preg_last_error_msg(): string { return p\Php80::preg_last_error_msg(); } +} +if (!function_exists('str_contains')) { + function str_contains(?string $haystack, ?string $needle): bool { return p\Php80::str_contains($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_starts_with')) { + function str_starts_with(?string $haystack, ?string $needle): bool { return p\Php80::str_starts_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('str_ends_with')) { + function str_ends_with(?string $haystack, ?string $needle): bool { return p\Php80::str_ends_with($haystack ?? '', $needle ?? ''); } +} +if (!function_exists('get_debug_type')) { + function get_debug_type($value): string { return p\Php80::get_debug_type($value); } +} +if (!function_exists('get_resource_id')) { + function get_resource_id($resource): int { return p\Php80::get_resource_id($resource); } +} diff --git a/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/composer.json b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/composer.json new file mode 100644 index 00000000000..cd3e9b65f46 --- /dev/null +++ b/htdocs/includes/webklex/php-imap/vendor/symfony/polyfill-php80/composer.json @@ -0,0 +1,40 @@ +{ + "name": "symfony/polyfill-php80", + "type": "library", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "keywords": ["polyfill", "shim", "compatibility", "portable"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, + "files": [ "bootstrap.php" ], + "classmap": [ "Resources/stubs" ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/htdocs/index.php b/htdocs/index.php index 6ada359cee6..553fee4855f 100644 --- a/htdocs/index.php +++ b/htdocs/index.php @@ -155,28 +155,28 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { require_once DOL_DOCUMENT_ROOT.'/core/class/workboardresponse.class.php'; // Number of actions to do (late) - if (isModEnabled('agenda') && empty($conf->global->MAIN_DISABLE_BLOCK_AGENDA) && $user->rights->agenda->myactions->read) { + if (isModEnabled('agenda') && empty($conf->global->MAIN_DISABLE_BLOCK_AGENDA) && $user->hasRight('agenda', 'myactions', 'read')) { include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; $board = new ActionComm($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of project opened - if (!empty($conf->project->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_PROJECT) && $user->rights->projet->lire) { + if (isModEnabled('project') && empty($conf->global->MAIN_DISABLE_BLOCK_PROJECT) && $user->hasRight('projet', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $board = new Project($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of tasks to do (late) - if (!empty($conf->project->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_PROJECT) && empty($conf->global->PROJECT_HIDE_TASKS) && $user->rights->projet->lire) { + if (isModEnabled('project') && empty($conf->global->MAIN_DISABLE_BLOCK_PROJECT) && empty($conf->global->PROJECT_HIDE_TASKS) && $user->hasRight('projet', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/projet/class/task.class.php'; $board = new Task($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of commercial customer proposals open (expired) - if (!empty($conf->propal->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->rights->propale->lire) { + if (isModEnabled('propal') && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->hasRight('propale', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $board = new Propal($db); $dashboardlines[$board->element.'_opened'] = $board->load_board($user, "opened"); @@ -185,7 +185,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of supplier proposals open (expired) - if (!empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && $user->rights->supplier_proposal->lire) { + if (isModEnabled('supplier_proposal') && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && $user->hasRight('supplier_proposal', 'lire')) { $langs->load("supplier_proposal"); include_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; $board = new SupplierProposal($db); @@ -195,14 +195,14 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of customer orders a deal - if (!empty($conf->commande->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->rights->commande->lire) { + if (isModEnabled('commande') && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->hasRight('commande', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; $board = new Commande($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of suppliers orders a deal - if (!empty($conf->supplier_order->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && $user->rights->fournisseur->commande->lire) { + if (isModEnabled('supplier_order') && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && $user->hasRight('fournisseur', 'commande', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; $board = new CommandeFournisseur($db); $dashboardlines[$board->element.'_opened'] = $board->load_board($user, "opened"); @@ -210,7 +210,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of contract / services enabled (delayed) - if (!empty($conf->contrat->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_CONTRACT) && $user->rights->contrat->lire) { + if (isModEnabled('contrat') && empty($conf->global->MAIN_DISABLE_BLOCK_CONTRACT) && $user->hasRight('contrat', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/contrat/class/contrat.class.php'; $board = new Contrat($db); $dashboardlines[$board->element.'_inactive'] = $board->load_board($user, "inactive"); @@ -219,7 +219,7 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of tickets open - if (!empty($conf->ticket->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_TICKET) && $user->rights->ticket->read) { + if (isModEnabled('ticket') && empty($conf->global->MAIN_DISABLE_BLOCK_TICKET) && $user->hasRight('ticket', 'read')) { include_once DOL_DOCUMENT_ROOT.'/ticket/class/ticket.class.php'; $board = new Ticket($db); $dashboardlines[$board->element.'_opened'] = $board->load_board($user, "opened"); @@ -228,21 +228,21 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of invoices customers (paid) - if (isModEnabled('facture') && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->rights->facture->lire) { + if (isModEnabled('facture') && empty($conf->global->MAIN_DISABLE_BLOCK_CUSTOMER) && $user->hasRight('facture', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; $board = new Facture($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of supplier invoices (paid) - if (!empty($conf->supplier_invoice->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && !empty($user->rights->fournisseur->facture->lire)) { + if (isModEnabled('supplier_invoice') && empty($conf->global->MAIN_DISABLE_BLOCK_SUPPLIER) && $user->hasRight('fournisseur', 'facture', 'lire')) { include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; $board = new FactureFournisseur($db); $dashboardlines[$board->element] = $board->load_board($user); } // Number of transactions to conciliate - if (!empty($conf->banque->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_BANK) && $user->rights->banque->lire && !$user->socid) { + if (isModEnabled('banque') && empty($conf->global->MAIN_DISABLE_BLOCK_BANK) && $user->hasRight('banque', 'lire') && !$user->socid) { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $board = new Account($db); $nb = $board->countAccountToReconcile(); // Get nb of account to reconciliate @@ -253,26 +253,26 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { // Number of cheque to send - if (!empty($conf->banque->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_BANK) && $user->rights->banque->lire && !$user->socid) { + if (isModEnabled('banque') && empty($conf->global->MAIN_DISABLE_BLOCK_BANK) && $user->hasRight('banque', 'lire') && !$user->socid) { if (empty($conf->global->BANK_DISABLE_CHECK_DEPOSIT)) { - include_once DOL_DOCUMENT_ROOT.'/compta/paiement/cheque/class/remisecheque.class.php'; + include_once DOL_DOCUMENT_ROOT . '/compta/paiement/cheque/class/remisecheque.class.php'; $board = new RemiseCheque($db); $dashboardlines[$board->element] = $board->load_board($user); } - if (!empty($conf->prelevement->enabled)) { + if (isModEnabled('prelevement')) { include_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; $board = new BonPrelevement($db); - $dashboardlines[$board->element.'_direct_debit'] = $board->load_board($user, 'direct_debit'); + $dashboardlines[$board->element . '_direct_debit'] = $board->load_board($user, 'direct_debit'); } - if (!empty($conf->paymentbybanktransfer->enabled)) { + if (isModEnabled('paymentbybanktransfer')) { include_once DOL_DOCUMENT_ROOT.'/compta/prelevement/class/bonprelevement.class.php'; $board = new BonPrelevement($db); - $dashboardlines[$board->element.'_credit_transfer'] = $board->load_board($user, 'credit_transfer'); + $dashboardlines[$board->element . '_credit_transfer'] = $board->load_board($user, 'credit_transfer'); } } // Number of foundation members - if (!empty($conf->adherent->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_ADHERENT) && $user->rights->adherent->lire && !$user->socid) { + if (isModEnabled('adherent') && empty($conf->global->MAIN_DISABLE_BLOCK_ADHERENT) && $user->hasRight('adherent', 'lire') && !$user->socid) { include_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; $board = new Adherent($db); $dashboardlines[$board->element.'_shift'] = $board->load_board($user, 'shift'); @@ -280,21 +280,21 @@ if (empty($conf->global->MAIN_DISABLE_GLOBAL_WORKBOARD)) { } // Number of expense reports to approve - if (!empty($conf->expensereport->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_EXPENSEREPORT) && $user->rights->expensereport->approve) { + if (isModEnabled('expensereport') && empty($conf->global->MAIN_DISABLE_BLOCK_EXPENSEREPORT) && $user->hasRight('expensereport', 'approve')) { include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; $board = new ExpenseReport($db); $dashboardlines[$board->element.'_toapprove'] = $board->load_board($user, 'toapprove'); } // Number of expense reports to pay - if (!empty($conf->expensereport->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_EXPENSEREPORT) && $user->rights->expensereport->to_paid) { + if (isModEnabled('expensereport') && empty($conf->global->MAIN_DISABLE_BLOCK_EXPENSEREPORT) && $user->hasRight('expensereport', 'to_paid')) { include_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; $board = new ExpenseReport($db); $dashboardlines[$board->element.'_topay'] = $board->load_board($user, 'topay'); } // Number of holidays to approve - if (!empty($conf->holiday->enabled) && empty($conf->global->MAIN_DISABLE_BLOCK_HOLIDAY) && $user->rights->holiday->approve) { + if (isModEnabled('holiday') && empty($conf->global->MAIN_DISABLE_BLOCK_HOLIDAY) && $user->hasRight('holiday', 'approve')) { include_once DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php'; $board = new Holiday($db); $dashboardlines[$board->element] = $board->load_board($user); diff --git a/htdocs/install/check.php b/htdocs/install/check.php index aba44fbe684..1923204c272 100644 --- a/htdocs/install/check.php +++ b/htdocs/install/check.php @@ -80,8 +80,8 @@ if (!empty($useragent)) { } -// Check PHP version -$arrayphpminversionerror = array(5, 5, 0); +// Check PHP version min +$arrayphpminversionerror = array(5, 6, 0); $arrayphpminversionwarning = array(5, 6, 0); if (versioncompare(versionphparray(), $arrayphpminversionerror) < 0) { // Minimum to use (error if lower) print 'Error '.$langs->trans("ErrorPHPVersionTooLow", versiontostring($arrayphpminversionerror)); @@ -97,6 +97,14 @@ if (empty($force_install_nophpinfo)) { } print "
\n"; +// Check PHP version max +$arrayphpmaxversionwarning = array(8, 1, 0); +if (versioncompare(versionphparray(), $arrayphpmaxversionwarning) > 0 && versioncompare(versionphparray(), $arrayphpmaxversionwarning) < 3) { // Maximum to use (warning if higher) + print 'Error '.$langs->trans("ErrorPHPVersionTooHigh", versiontostring($arrayphpmaxversionwarning)); + $checksok = 1; // 0=error, 1=warning + print "
\n"; +} + // Check PHP support for $_GET and $_POST if (!isset($_GET["testget"]) && !isset($_POST["testpost"])) { // We must keep $_GET and $_POST here @@ -454,10 +462,12 @@ if (!file_exists($conffile)) { $migrationscript = array(); $handle = opendir($dir); if (is_resource($handle)) { + $versiontousetoqualifyscript = preg_replace('/-.*/', '', DOL_VERSION); while (($file = readdir($handle)) !== false) { $reg = array(); if (preg_match('/^(\d+\.\d+\.\d+)-(\d+\.\d+\.\d+)\.sql$/i', $file, $reg)) { - if (!empty($reg[2]) && version_compare(DOL_VERSION, $reg[2])) { + //var_dump(DOL_VERSION." ".$reg[2]." ".$versiontousetoqualifyscript." ".version_compare($versiontousetoqualifyscript, $reg[2])); + if (!empty($reg[2]) && version_compare($versiontousetoqualifyscript, $reg[2]) >= 0) { $migrationscript[] = array('from' => $reg[1], 'to' => $reg[2]); } } diff --git a/htdocs/install/default.css b/htdocs/install/default.css index e7bbe6c7771..79f6d3eb9c1 100644 --- a/htdocs/install/default.css +++ b/htdocs/install/default.css @@ -129,6 +129,10 @@ a.button.runupgrade { padding: 10px; } +tr.title.tablesupport-title { + height: 100px; +} + /* Force values for small screen 570 */ @media only screen and (max-width: 570px) { @@ -464,7 +468,7 @@ table.login.tablesupport .title { } table.tablesupport { - min-height: 250px; + min-height: 300px; border: 1px solid #E0E0E0; background: #FFF; } diff --git a/htdocs/install/doctemplates/websites/website_template-corporate.zip b/htdocs/install/doctemplates/websites/website_template-corporate.zip index dc0065bc12c..e7f645d168a 100644 Binary files a/htdocs/install/doctemplates/websites/website_template-corporate.zip and b/htdocs/install/doctemplates/websites/website_template-corporate.zip differ diff --git a/htdocs/install/doctemplates/websites/website_template-stellar.zip b/htdocs/install/doctemplates/websites/website_template-stellar.zip index 7607cb9bd8a..3c9643c8960 100644 Binary files a/htdocs/install/doctemplates/websites/website_template-stellar.zip and b/htdocs/install/doctemplates/websites/website_template-stellar.zip differ diff --git a/htdocs/install/doctemplates/websites/website_template-style01.jpg b/htdocs/install/doctemplates/websites/website_template-style01.jpg new file mode 100644 index 00000000000..5464bf5dd5d Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style01.jpg differ diff --git a/htdocs/install/doctemplates/websites/website_template-style01.zip b/htdocs/install/doctemplates/websites/website_template-style01.zip new file mode 100644 index 00000000000..7bca0dd1e21 Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style01.zip differ diff --git a/htdocs/install/doctemplates/websites/website_template-style02.jpg b/htdocs/install/doctemplates/websites/website_template-style02.jpg new file mode 100644 index 00000000000..63622f3b1cd Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style02.jpg differ diff --git a/htdocs/install/doctemplates/websites/website_template-style03.jpg b/htdocs/install/doctemplates/websites/website_template-style03.jpg new file mode 100644 index 00000000000..1479f08b5d9 Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style03.jpg differ diff --git a/htdocs/install/doctemplates/websites/website_template-style03.zip b/htdocs/install/doctemplates/websites/website_template-style03.zip new file mode 100644 index 00000000000..f2a7684cc4e Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style03.zip differ diff --git a/htdocs/install/doctemplates/websites/website_template-style04.png b/htdocs/install/doctemplates/websites/website_template-style04.png new file mode 100644 index 00000000000..26325e7e795 Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style04.png differ diff --git a/htdocs/install/doctemplates/websites/website_template-style04.zip b/htdocs/install/doctemplates/websites/website_template-style04.zip new file mode 100644 index 00000000000..996d98697c3 Binary files /dev/null and b/htdocs/install/doctemplates/websites/website_template-style04.zip differ diff --git a/htdocs/install/inc.php b/htdocs/install/inc.php index 27a3fc01abd..a20c3489866 100644 --- a/htdocs/install/inc.php +++ b/htdocs/install/inc.php @@ -195,6 +195,10 @@ if (preg_match('/install\.lock/i', $_SERVER["SCRIPT_FILENAME"])) { $langs->setDefaultLang('auto'); } $langs->load("install"); + + header("X-Content-Type-Options: nosniff"); + header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) + print $langs->trans("YouTryInstallDisabledByDirLock"); if (!empty($dolibarr_main_url_root)) { print 'Click on following link, '; @@ -216,6 +220,10 @@ if (@file_exists($lockfile)) { $langs->setDefaultLang('auto'); } $langs->load("install"); + + header("X-Content-Type-Options: nosniff"); + header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) + print $langs->trans("YouTryInstallDisabledByFileLock"); if (!empty($dolibarr_main_url_root)) { print $langs->trans("ClickOnLinkOrRemoveManualy").'
'; @@ -419,6 +427,7 @@ function pHeader($subtitle, $next, $action = 'set', $param = '', $forcejqueryurl // We force the content charset header("Content-type: text/html; charset=".$conf->file->character_set_client); header("X-Content-Type-Options: nosniff"); + header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) print ''."\n"; print ''."\n"; diff --git a/htdocs/install/mysql/data/llx_00_c_country.sql b/htdocs/install/mysql/data/llx_00_c_country.sql index 61b3f346b39..d8c193bce19 100644 --- a/htdocs/install/mysql/data/llx_00_c_country.sql +++ b/htdocs/install/mysql/data/llx_00_c_country.sql @@ -6,7 +6,7 @@ -- Copyright (C) 2005-2009 Regis Houssin -- Copyright (C) 2007 Patrick Raguin -- Copyright (C) 2014 Alexandre Spangaro --- Copyright (C) 2021 Udo Tamm +-- Copyright (C) 2021-2022 Udo Tamm -- -- 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 @@ -89,21 +89,21 @@ INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (58 INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (59,'BG','BGR','Bulgaria',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (60,'BF','BFA','Burkina Faso',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (61,'BI','BDI','Burundi',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (62,'KH','KHM','Cambodge',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (62,'KH','KHM','Cambodge / Cambodia',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (63,'CV','CPV','Cap-Vert',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (64,'KY','CYM','Iles Cayman',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (65,'CF','CAF','République centrafricaine',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (65,'CF','CAF','Central African Republic (CAR/RCA)',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (66,'TD','TCD','Tchad',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (67,'CL','CHL','Chili',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (67,'CL','CHL','Chile',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (68,'CX','CXR','Ile Christmas',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (69,'CC','CCK','Iles des Cocos (Keeling)',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (70,'CO','COL','Colombie',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (71,'KM','COM','Comores',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (72,'CG','COG','Congo',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (73,'CD','COD','République démocratique du Congo',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (73,'CD','COD','DR Congo (RDC)',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (74,'CK','COK','Iles Cook',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (75,'CR','CRI','Costa Rica',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (76,'HR','HRV','Croatie',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (76,'HR','HRV','Croatia',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (77,'CU','CUB','Cuba',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (78,'CY','CYP','Cyprus',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (79,'CZ','CZE','Czech Republic',1,0); @@ -138,17 +138,17 @@ INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (10 INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (109,'GW','GNB','Guinea-Bissao',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (111,'HT','HTI','Haiti',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (112,'HM','HMD','Iles Heard et McDonald',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (113,'VA','VAT','Saint-Siège (Vatican)',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (113,'VA','VAT','Vatican City (Saint-Siège)',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (114,'HN','HND','Honduras',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (115,'HK','HKG','Hong Kong',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (116,'IS','ISL','Islande',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (117,'IN','IND','India',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (118,'ID','IDN','Indonésie',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (118,'ID','IDN','Indonesia',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (119,'IR','IRN','Iran',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (120,'IQ','IRQ','Iraq',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (121,'IL','ISR','Israel',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (122,'JM','JAM','Jamaïque',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (123,'JP','JPN','Japon',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (122,'JM','JAM','Jamaica',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (123,'JP','JPN','Japan (Nippon)',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (124,'JO','JOR','Jordanie',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (125,'KZ','KAZ','Kazakhstan',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (126,'KE','KEN','Kenya',1,0); @@ -167,7 +167,7 @@ INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (13 INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (139,'LT','LTU','Lituanie',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (140,'LU','LUX','Luxembourg',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (141,'MO','MAC','Macao',1,0); -INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (142,'MK','MKD','ex-République yougoslave de Macédoine',1,0); +INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (142,'MK','MKD','North Macedonia',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (143,'MG','MDG','Madagascar',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (144,'MW','MWI','Malawi',1,0); INSERT INTO llx_c_country (rowid,code,code_iso,label,active,favorite) VALUES (145,'MY','MYS','Malaisie',1,0); diff --git a/htdocs/install/mysql/data/llx_10_c_regions.sql b/htdocs/install/mysql/data/llx_10_c_regions.sql index 752bc7de395..ffd02aa9cf9 100644 --- a/htdocs/install/mysql/data/llx_10_c_regions.sql +++ b/htdocs/install/mysql/data/llx_10_c_regions.sql @@ -533,3 +533,5 @@ INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 2 INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 232, 23208, '', 0, 'Nor-Oriental'); INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 232, 23209, '', 0, 'Zuliana'); +-- Japan Region (id country=123) +INSERT INTO llx_c_regions (fk_pays, code_region, cheflieu, tncc, nom) values ( 123, 12301, '', 0,'日本'); diff --git a/htdocs/install/mysql/data/llx_20_c_departements.sql b/htdocs/install/mysql/data/llx_20_c_departements.sql index 642bd69960b..b0ffb509c18 100644 --- a/htdocs/install/mysql/data/llx_20_c_departements.sql +++ b/htdocs/install/mysql/data/llx_20_c_departements.sql @@ -40,7 +40,9 @@ -- NOTES/CONTENT --------------------------------------------------------------- --- Departements/Cantons/Provinces/States +-- +-- Table of Content (TOC) +-- Departements/Cantons/Provinces/States: -- -- Algeria -- Andorra @@ -57,6 +59,7 @@ -- Croatia -- France -- Germany +-- Greece -- Honduras -- Hungary -- Italy @@ -81,7 +84,8 @@ -- TEMPLATE ------------------------------------------------------------------------------------------------------------- INSERT INTO llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) VALUES ( 0, '0', '0',0,'-','-'); --- active is always set as on = 1 +-- +-- field 'active' is not requiered - all lines are always set as active = on (1) by default -- Algeria Provinces (id country=13) @@ -540,6 +544,76 @@ INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom) VALUES (5 INSERT INTO llx_c_departements (fk_region, code_departement, ncc, nom) VALUES (501, 'TH', 'THÜRINGEN', 'Thüringen'); +-- Greece Provinces (id country=102) +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('66', 10201, '', 0, '', 'Αθήνα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('67', 10205, '', 0, '', 'Δράμα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('01', 10205, '', 0, '', 'Έβρος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('02', 10205, '', 0, '', 'Θάσος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('03', 10205, '', 0, '', 'Καβάλα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('04', 10205, '', 0, '', 'Ξάνθη'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('05', 10205, '', 0, '', 'Ροδόπη'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('06', 10203, '', 0, '', 'Ημαθία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('07', 10203, '', 0, '', 'Θεσσαλονίκη'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('08', 10203, '', 0, '', 'Κιλκίς'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('09', 10203, '', 0, '', 'Πέλλα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('10', 10203, '', 0, '', 'Πιερία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('11', 10203, '', 0, '', 'Σέρρες'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('12', 10203, '', 0, '', 'Χαλκιδική'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('13', 10206, '', 0, '', 'Άρτα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('14', 10206, '', 0, '', 'Θεσπρωτία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('15', 10206, '', 0, '', 'Ιωάννινα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('16', 10206, '', 0, '', 'Πρέβεζα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('17', 10213, '', 0, '', 'Γρεβενά'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('18', 10213, '', 0, '', 'Καστοριά'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('19', 10213, '', 0, '', 'Κοζάνη'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('20', 10213, '', 0, '', 'Φλώρινα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('21', 10212, '', 0, '', 'Καρδίτσα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('22', 10212, '', 0, '', 'Λάρισα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('23', 10212, '', 0, '', 'Μαγνησία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('24', 10212, '', 0, '', 'Τρίκαλα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('25', 10212, '', 0, '', 'Σποράδες'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('26', 10212, '', 0, '', 'Βοιωτία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('27', 10202, '', 0, '', 'Εύβοια'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('28', 10202, '', 0, '', 'Ευρυτανία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('29', 10202, '', 0, '', 'Φθιώτιδα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('30', 10202, '', 0, '', 'Φωκίδα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('31', 10209, '', 0, '', 'Αργολίδα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('32', 10209, '', 0, '', 'Αρκαδία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('33', 10209, '', 0, '', 'Κορινθία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('34', 10209, '', 0, '', 'Λακωνία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('35', 10209, '', 0, '', 'Μεσσηνία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('36', 10211, '', 0, '', 'Αιτωλοακαρνανία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('37', 10211, '', 0, '', 'Αχαΐα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('38', 10211, '', 0, '', 'Ηλεία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('39', 10207, '', 0, '', 'Ζάκυνθος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('40', 10207, '', 0, '', 'Κέρκυρα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('41', 10207, '', 0, '', 'Κεφαλληνία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('42', 10207, '', 0, '', 'Ιθάκη'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('43', 10207, '', 0, '', 'Λευκάδα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('44', 10208, '', 0, '', 'Ικαρία'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('45', 10208, '', 0, '', 'Λέσβος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('46', 10208, '', 0, '', 'Λήμνος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('47', 10208, '', 0, '', 'Σάμος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('48', 10208, '', 0, '', 'Χίος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('49', 10210, '', 0, '', 'Άνδρος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('50', 10210, '', 0, '', 'Θήρα'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('51', 10210, '', 0, '', 'Κάλυμνος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('52', 10210, '', 0, '', 'Κάρπαθος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('53', 10210, '', 0, '', 'Κέα-Κύθνος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('54', 10210, '', 0, '', 'Κω'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('55', 10210, '', 0, '', 'Μήλος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('56', 10210, '', 0, '', 'Μύκονος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('57', 10210, '', 0, '', 'Νάξος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('58', 10210, '', 0, '', 'Πάρος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('59', 10210, '', 0, '', 'Ρόδος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('60', 10210, '', 0, '', 'Σύρος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('61', 10210, '', 0, '', 'Τήνος'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('62', 10204, '', 0, '', 'Ηράκλειο'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('63', 10204, '', 0, '', 'Λασίθι'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('64', 10204, '', 0, '', 'Ρέθυμνο'); +INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('65', 10204, '', 0, '', 'Χανιά'); + + -- Honduras Departamentos (id country=114) INSERT INTO llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) VALUES (11401, 'AT', '', 0, 'AT', 'Atlántida'); INSERT INTO llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom) VALUES (11401, 'CH', '', 0, 'CH', 'Choluteca'); @@ -1272,118 +1346,118 @@ insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc -- Provinces Bolivia (id country=52) -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('001', 5201, '', 0, '', 'Belisario Boeto', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('002', 5201, '', 0, '', 'Hernando Siles', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('003', 5201, '', 0, '', 'Jaime Zudáñez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('004', 5201, '', 0, '', 'Juana Azurduy de Padilla', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('005', 5201, '', 0, '', 'Luis Calvo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('006', 5201, '', 0, '', 'Nor Cinti', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('007', 5201, '', 0, '', 'Oropeza', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('008', 5201, '', 0, '', 'Sud Cinti', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('009', 5201, '', 0, '', 'Tomina', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('010', 5201, '', 0, '', 'Yamparáez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('011', 5202, '', 0, '', 'Abel Iturralde', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('012', 5202, '', 0, '', 'Aroma', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('013', 5202, '', 0, '', 'Bautista Saavedra', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('014', 5202, '', 0, '', 'Caranavi', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('015', 5202, '', 0, '', 'Eliodoro Camacho', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('016', 5202, '', 0, '', 'Franz Tamayo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('017', 5202, '', 0, '', 'Gualberto Villarroel', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('018', 5202, '', 0, '', 'Ingaví', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('019', 5202, '', 0, '', 'Inquisivi', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('020', 5202, '', 0, '', 'José Ramón Loayza', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('021', 5202, '', 0, '', 'Larecaja', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('022', 5202, '', 0, '', 'Los Andes (Bolivia)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('023', 5202, '', 0, '', 'Manco Kapac', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('024', 5202, '', 0, '', 'Muñecas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('025', 5202, '', 0, '', 'Nor Yungas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('026', 5202, '', 0, '', 'Omasuyos', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('027', 5202, '', 0, '', 'Pacajes', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('028', 5202, '', 0, '', 'Pedro Domingo Murillo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('029', 5202, '', 0, '', 'Sud Yungas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('030', 5202, '', 0, '', 'General José Manuel Pando', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('031', 5203, '', 0, '', 'Arani', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('032', 5203, '', 0, '', 'Arque', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('033', 5203, '', 0, '', 'Ayopaya', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('034', 5203, '', 0, '', 'Bolívar (Bolivia)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('035', 5203, '', 0, '', 'Campero', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('036', 5203, '', 0, '', 'Capinota', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('037', 5203, '', 0, '', 'Cercado (Cochabamba)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('038', 5203, '', 0, '', 'Esteban Arze', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('039', 5203, '', 0, '', 'Germán Jordán', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('040', 5203, '', 0, '', 'José Carrasco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('041', 5203, '', 0, '', 'Mizque', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('042', 5203, '', 0, '', 'Punata', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('043', 5203, '', 0, '', 'Quillacollo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('044', 5203, '', 0, '', 'Tapacarí', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('045', 5203, '', 0, '', 'Tiraque', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('046', 5203, '', 0, '', 'Chapare', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('047', 5204, '', 0, '', 'Carangas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('048', 5204, '', 0, '', 'Cercado (Oruro)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('049', 5204, '', 0, '', 'Eduardo Avaroa', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('050', 5204, '', 0, '', 'Ladislao Cabrera', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('051', 5204, '', 0, '', 'Litoral de Atacama', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('052', 5204, '', 0, '', 'Mejillones', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('053', 5204, '', 0, '', 'Nor Carangas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('054', 5204, '', 0, '', 'Pantaleón Dalence', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('055', 5204, '', 0, '', 'Poopó', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('056', 5204, '', 0, '', 'Sabaya', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('057', 5204, '', 0, '', 'Sajama', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('058', 5204, '', 0, '', 'San Pedro de Totora', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('059', 5204, '', 0, '', 'Saucarí', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('060', 5204, '', 0, '', 'Sebastián Pagador', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('061', 5204, '', 0, '', 'Sud Carangas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('062', 5204, '', 0, '', 'Tomás Barrón', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('063', 5205, '', 0, '', 'Alonso de Ibáñez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('064', 5205, '', 0, '', 'Antonio Quijarro', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('065', 5205, '', 0, '', 'Bernardino Bilbao', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('066', 5205, '', 0, '', 'Charcas (Potosí)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('067', 5205, '', 0, '', 'Chayanta', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('068', 5205, '', 0, '', 'Cornelio Saavedra', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('069', 5205, '', 0, '', 'Daniel Campos', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('070', 5205, '', 0, '', 'Enrique Baldivieso', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('071', 5205, '', 0, '', 'José María Linares', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('072', 5205, '', 0, '', 'Modesto Omiste', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('073', 5205, '', 0, '', 'Nor Chichas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('074', 5205, '', 0, '', 'Nor Lípez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('075', 5205, '', 0, '', 'Rafael Bustillo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('076', 5205, '', 0, '', 'Sud Chichas', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('077', 5205, '', 0, '', 'Sud Lípez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('078', 5205, '', 0, '', 'Tomás Frías', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('079', 5206, '', 0, '', 'Aniceto Arce', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('080', 5206, '', 0, '', 'Burdet O''Connor', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('081', 5206, '', 0, '', 'Cercado (Tarija)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('082', 5206, '', 0, '', 'Eustaquio Méndez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('083', 5206, '', 0, '', 'José María Avilés', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('084', 5206, '', 0, '', 'Gran Chaco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('085', 5207, '', 0, '', 'Andrés Ibáñez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('086', 5207, '', 0, '', 'Caballero', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('087', 5207, '', 0, '', 'Chiquitos', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('088', 5207, '', 0, '', 'Cordillera (Bolivia)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('089', 5207, '', 0, '', 'Florida', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('090', 5207, '', 0, '', 'Germán Busch', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('091', 5207, '', 0, '', 'Guarayos', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('092', 5207, '', 0, '', 'Ichilo', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('093', 5207, '', 0, '', 'Obispo Santistevan', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('094', 5207, '', 0, '', 'Sara', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('095', 5207, '', 0, '', 'Vallegrande', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('096', 5207, '', 0, '', 'Velasco', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('097', 5207, '', 0, '', 'Warnes', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('098', 5207, '', 0, '', 'Ángel Sandóval', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('099', 5207, '', 0, '', 'Ñuflo de Chaves', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('100', 5208, '', 0, '', 'Cercado (Beni)', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('101', 5208, '', 0, '', 'Iténez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('102', 5208, '', 0, '', 'Mamoré', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('103', 5208, '', 0, '', 'Marbán', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('104', 5208, '', 0, '', 'Moxos', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('105', 5208, '', 0, '', 'Vaca Díez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('106', 5208, '', 0, '', 'Yacuma', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('107', 5208, '', 0, '', 'General José Ballivián Segurola', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('108', 5209, '', 0, '', 'Abuná', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('109', 5209, '', 0, '', 'Madre de Dios', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('110', 5209, '', 0, '', 'Manuripi', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('111', 5209, '', 0, '', 'Nicolás Suárez', 1); -INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('112', 5209, '', 0, '', 'General Federico Román', 1); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('001', 5201, '', 0, '', 'Belisario Boeto'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('002', 5201, '', 0, '', 'Hernando Siles'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('003', 5201, '', 0, '', 'Jaime Zudáñez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('004', 5201, '', 0, '', 'Juana Azurduy de Padilla'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('005', 5201, '', 0, '', 'Luis Calvo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('006', 5201, '', 0, '', 'Nor Cinti'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('007', 5201, '', 0, '', 'Oropeza'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('008', 5201, '', 0, '', 'Sud Cinti'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('009', 5201, '', 0, '', 'Tomina'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('010', 5201, '', 0, '', 'Yamparáez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('011', 5202, '', 0, '', 'Abel Iturralde'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('012', 5202, '', 0, '', 'Aroma'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('013', 5202, '', 0, '', 'Bautista Saavedra'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('014', 5202, '', 0, '', 'Caranavi'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('015', 5202, '', 0, '', 'Eliodoro Camacho'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('016', 5202, '', 0, '', 'Franz Tamayo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('017', 5202, '', 0, '', 'Gualberto Villarroel'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('018', 5202, '', 0, '', 'Ingaví'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('019', 5202, '', 0, '', 'Inquisivi'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('020', 5202, '', 0, '', 'José Ramón Loayza'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('021', 5202, '', 0, '', 'Larecaja'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('022', 5202, '', 0, '', 'Los Andes (Bolivia)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('023', 5202, '', 0, '', 'Manco Kapac'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('024', 5202, '', 0, '', 'Muñecas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('025', 5202, '', 0, '', 'Nor Yungas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('026', 5202, '', 0, '', 'Omasuyos'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('027', 5202, '', 0, '', 'Pacajes'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('028', 5202, '', 0, '', 'Pedro Domingo Murillo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('029', 5202, '', 0, '', 'Sud Yungas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('030', 5202, '', 0, '', 'General José Manuel Pando'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('031', 5203, '', 0, '', 'Arani'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('032', 5203, '', 0, '', 'Arque'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('033', 5203, '', 0, '', 'Ayopaya'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('034', 5203, '', 0, '', 'Bolívar (Bolivia)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('035', 5203, '', 0, '', 'Campero'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('036', 5203, '', 0, '', 'Capinota'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('037', 5203, '', 0, '', 'Cercado (Cochabamba)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('038', 5203, '', 0, '', 'Esteban Arze'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('039', 5203, '', 0, '', 'Germán Jordán'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('040', 5203, '', 0, '', 'José Carrasco'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('041', 5203, '', 0, '', 'Mizque'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('042', 5203, '', 0, '', 'Punata'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('043', 5203, '', 0, '', 'Quillacollo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('044', 5203, '', 0, '', 'Tapacarí'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('045', 5203, '', 0, '', 'Tiraque'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('046', 5203, '', 0, '', 'Chapare'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('047', 5204, '', 0, '', 'Carangas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('048', 5204, '', 0, '', 'Cercado (Oruro)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('049', 5204, '', 0, '', 'Eduardo Avaroa'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('050', 5204, '', 0, '', 'Ladislao Cabrera'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('051', 5204, '', 0, '', 'Litoral de Atacama'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('052', 5204, '', 0, '', 'Mejillones'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('053', 5204, '', 0, '', 'Nor Carangas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('054', 5204, '', 0, '', 'Pantaleón Dalence'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('055', 5204, '', 0, '', 'Poopó'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('056', 5204, '', 0, '', 'Sabaya'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('057', 5204, '', 0, '', 'Sajama'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('058', 5204, '', 0, '', 'San Pedro de Totora'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('059', 5204, '', 0, '', 'Saucarí'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('060', 5204, '', 0, '', 'Sebastián Pagador'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('061', 5204, '', 0, '', 'Sud Carangas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('062', 5204, '', 0, '', 'Tomás Barrón'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('063', 5205, '', 0, '', 'Alonso de Ibáñez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('064', 5205, '', 0, '', 'Antonio Quijarro'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('065', 5205, '', 0, '', 'Bernardino Bilbao'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('066', 5205, '', 0, '', 'Charcas (Potosí)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('067', 5205, '', 0, '', 'Chayanta'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('068', 5205, '', 0, '', 'Cornelio Saavedra'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('069', 5205, '', 0, '', 'Daniel Campos'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('070', 5205, '', 0, '', 'Enrique Baldivieso'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('071', 5205, '', 0, '', 'José María Linares'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('072', 5205, '', 0, '', 'Modesto Omiste'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('073', 5205, '', 0, '', 'Nor Chichas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('074', 5205, '', 0, '', 'Nor Lípez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('075', 5205, '', 0, '', 'Rafael Bustillo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('076', 5205, '', 0, '', 'Sud Chichas'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('077', 5205, '', 0, '', 'Sud Lípez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('078', 5205, '', 0, '', 'Tomás Frías'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('079', 5206, '', 0, '', 'Aniceto Arce'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('080', 5206, '', 0, '', 'Burdet O''Connor'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('081', 5206, '', 0, '', 'Cercado (Tarija)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('082', 5206, '', 0, '', 'Eustaquio Méndez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('083', 5206, '', 0, '', 'José María Avilés'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('084', 5206, '', 0, '', 'Gran Chaco'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('085', 5207, '', 0, '', 'Andrés Ibáñez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('086', 5207, '', 0, '', 'Caballero'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('087', 5207, '', 0, '', 'Chiquitos'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('088', 5207, '', 0, '', 'Cordillera (Bolivia)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('089', 5207, '', 0, '', 'Florida'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('090', 5207, '', 0, '', 'Germán Busch'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('091', 5207, '', 0, '', 'Guarayos'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('092', 5207, '', 0, '', 'Ichilo'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('093', 5207, '', 0, '', 'Obispo Santistevan'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('094', 5207, '', 0, '', 'Sara'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('095', 5207, '', 0, '', 'Vallegrande'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('096', 5207, '', 0, '', 'Velasco'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('097', 5207, '', 0, '', 'Warnes'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('098', 5207, '', 0, '', 'Ángel Sandóval'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('099', 5207, '', 0, '', 'Ñuflo de Chaves'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('100', 5208, '', 0, '', 'Cercado (Beni)'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('101', 5208, '', 0, '', 'Iténez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('102', 5208, '', 0, '', 'Mamoré'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('103', 5208, '', 0, '', 'Marbán'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('104', 5208, '', 0, '', 'Moxos'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('105', 5208, '', 0, '', 'Vaca Díez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('106', 5208, '', 0, '', 'Yacuma'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('107', 5208, '', 0, '', 'General José Ballivián Segurola'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('108', 5209, '', 0, '', 'Abuná'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('109', 5209, '', 0, '', 'Madre de Dios'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('110', 5209, '', 0, '', 'Manuripi'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('111', 5209, '', 0, '', 'Nicolás Suárez'); +INSERT INTO llx_c_departements ( code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('112', 5209, '', 0, '', 'General Federico Román'); -- Provinces Spain (id country=4) in order of province (for logical pick list) @@ -1441,77 +1515,6 @@ INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('Z', '402', '50', 1, 'ZARAGOZA', 'Zaragoza'); --- Provinces Greece (id country=102) -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('66', 10201, '', 0, '', 'Αθήνα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('67', 10205, '', 0, '', 'Δράμα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('01', 10205, '', 0, '', 'Έβρος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('02', 10205, '', 0, '', 'Θάσος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('03', 10205, '', 0, '', 'Καβάλα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('04', 10205, '', 0, '', 'Ξάνθη', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('05', 10205, '', 0, '', 'Ροδόπη', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('06', 10203, '', 0, '', 'Ημαθία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('07', 10203, '', 0, '', 'Θεσσαλονίκη', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('08', 10203, '', 0, '', 'Κιλκίς', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('09', 10203, '', 0, '', 'Πέλλα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('10', 10203, '', 0, '', 'Πιερία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('11', 10203, '', 0, '', 'Σέρρες', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('12', 10203, '', 0, '', 'Χαλκιδική', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('13', 10206, '', 0, '', 'Άρτα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('14', 10206, '', 0, '', 'Θεσπρωτία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('15', 10206, '', 0, '', 'Ιωάννινα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('16', 10206, '', 0, '', 'Πρέβεζα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('17', 10213, '', 0, '', 'Γρεβενά', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('18', 10213, '', 0, '', 'Καστοριά', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('19', 10213, '', 0, '', 'Κοζάνη', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('20', 10213, '', 0, '', 'Φλώρινα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('21', 10212, '', 0, '', 'Καρδίτσα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('22', 10212, '', 0, '', 'Λάρισα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('23', 10212, '', 0, '', 'Μαγνησία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('24', 10212, '', 0, '', 'Τρίκαλα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('25', 10212, '', 0, '', 'Σποράδες', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('26', 10212, '', 0, '', 'Βοιωτία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('27', 10202, '', 0, '', 'Εύβοια', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('28', 10202, '', 0, '', 'Ευρυτανία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('29', 10202, '', 0, '', 'Φθιώτιδα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('30', 10202, '', 0, '', 'Φωκίδα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('31', 10209, '', 0, '', 'Αργολίδα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('32', 10209, '', 0, '', 'Αρκαδία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('33', 10209, '', 0, '', 'Κορινθία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('34', 10209, '', 0, '', 'Λακωνία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('35', 10209, '', 0, '', 'Μεσσηνία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('36', 10211, '', 0, '', 'Αιτωλοακαρνανία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('37', 10211, '', 0, '', 'Αχαΐα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('38', 10211, '', 0, '', 'Ηλεία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('39', 10207, '', 0, '', 'Ζάκυνθος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('40', 10207, '', 0, '', 'Κέρκυρα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('41', 10207, '', 0, '', 'Κεφαλληνία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('42', 10207, '', 0, '', 'Ιθάκη', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('43', 10207, '', 0, '', 'Λευκάδα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('44', 10208, '', 0, '', 'Ικαρία', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('45', 10208, '', 0, '', 'Λέσβος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('46', 10208, '', 0, '', 'Λήμνος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('47', 10208, '', 0, '', 'Σάμος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('48', 10208, '', 0, '', 'Χίος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('49', 10210, '', 0, '', 'Άνδρος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('50', 10210, '', 0, '', 'Θήρα', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('51', 10210, '', 0, '', 'Κάλυμνος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('52', 10210, '', 0, '', 'Κάρπαθος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('53', 10210, '', 0, '', 'Κέα-Κύθνος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('54', 10210, '', 0, '', 'Κω', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('55', 10210, '', 0, '', 'Μήλος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('56', 10210, '', 0, '', 'Μύκονος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('57', 10210, '', 0, '', 'Νάξος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('58', 10210, '', 0, '', 'Πάρος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('59', 10210, '', 0, '', 'Ρόδος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('60', 10210, '', 0, '', 'Σύρος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('61', 10210, '', 0, '', 'Τήνος', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('62', 10204, '', 0, '', 'Ηράκλειο', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('63', 10204, '', 0, '', 'Λασίθι', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('64', 10204, '', 0, '', 'Ρέθυμνο', 1); -INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('65', 10204, '', 0, '', 'Χανιά', 1); - - - -- Provinces GB (id country=7) INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('701', 701, NULL, 0,NULL, 'Bedfordshire', 1); INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom, active) VALUES ('702', 701, NULL, 0,NULL, 'Berkshire', 1); @@ -1899,3 +1902,52 @@ INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('AE-5', 22701, '', 0, '', 'Ras al-Khaimah'); INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('AE-6', 22701, '', 0, '', 'Sharjah'); INSERT INTO llx_c_departements (code_departement, fk_region, cheflieu, tncc, ncc, nom) VALUES ('AE-7', 22701, '', 0, '', 'Umm al-Quwain'); + +-- Japan 都道府県 (id country=123) +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '01', '', 0, '北海', '北海道', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '02', '', 0, '青森', '青森県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '03', '', 0, '岩手', '岩手県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '04', '', 0, '宮城', '宮城県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '05', '', 0, '秋田', '秋田県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '06', '', 0, '山形', '山形県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '07', '', 0, '福島', '福島県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '08', '', 0, '茨城', '茨城県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '09', '', 0, '栃木', '栃木県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '10', '', 0, '群馬', '群馬県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '11', '', 0, '埼玉', '埼玉県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '12', '', 0, '千葉', '千葉県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '13', '', 0, '東京', '東京都', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '14', '', 0, '神奈川', '神奈川県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '15', '', 0, '新潟', '新潟県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '16', '', 0, '富山', '富山県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '17', '', 0, '石川', '石川県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '18', '', 0, '福井', '福井県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '19', '', 0, '山梨', '山梨県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '20', '', 0, '長野', '長野県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '21', '', 0, '岐阜', '岐阜県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '22', '', 0, '静岡', '静岡県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '23', '', 0, '愛知', '愛知県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '24', '', 0, '三重', '三重県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '25', '', 0, '滋賀', '滋賀県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '26', '', 0, '京都', '京都府', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '27', '', 0, '大阪', '大阪府', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '28', '', 0, '兵庫', '兵庫県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '29', '', 0, '奈良', '奈良県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '30', '', 0, '和歌山', '和歌山県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '31', '', 0, '鳥取', '鳥取県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '32', '', 0, '島根', '島根県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '33', '', 0, '岡山', '岡山県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '34', '', 0, '広島', '広島県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '35', '', 0, '山口', '山口県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '36', '', 0, '徳島', '徳島県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '37', '', 0, '香川', '香川県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '38', '', 0, '愛媛', '愛媛県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '39', '', 0, '高知', '高知県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '40', '', 0, '福岡', '福岡県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '41', '', 0, '佐賀', '佐賀県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '42', '', 0, '長崎', '長崎県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '43', '', 0, '熊本', '熊本県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '44', '', 0, '大分', '大分県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '45', '', 0, '宮崎', '宮崎県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '46', '', 0, '鹿児島', '鹿児島県', 1); +insert into llx_c_departements (fk_region, code_departement, cheflieu, tncc, ncc, nom, active) values (12301, '47', '', 0, '沖縄', '沖縄県', 1); diff --git a/htdocs/install/mysql/data/llx_accounting_abc.sql b/htdocs/install/mysql/data/llx_accounting_abc.sql index 7c8deec073c..8874fad0784 100644 --- a/htdocs/install/mysql/data/llx_accounting_abc.sql +++ b/htdocs/install/mysql/data/llx_accounting_abc.sql @@ -183,3 +183,6 @@ INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUE -- Description of chart of account Mexico SAT/24-2019 INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUES ( 154, 'SAT/24-2019', 'Catalogo y codigo agrupador fiscal del 2019', 1); + +-- Description of chart of account Japan JPN-BASE +INSERT INTO llx_accounting_system (fk_country, pcg_version, label, active) VALUES ( 123, 'JPN-BASE', '日本 勘定科目表 基本版', 1); diff --git a/htdocs/install/mysql/data/llx_accounting_account_jp.sql b/htdocs/install/mysql/data/llx_accounting_account_jp.sql new file mode 100644 index 00000000000..2b852ae273f --- /dev/null +++ b/htdocs/install/mysql/data/llx_accounting_account_jp.sql @@ -0,0 +1,365 @@ +-- Copyright (C) 2001-2004 Rodolphe Quiedeville +-- Copyright (C) 2003 Jean-Louis Bergamo +-- Copyright (C) 2004-2009 Laurent Destailleur +-- Copyright (C) 2004 Benoit Mortier +-- Copyright (C) 2004 Guillaume Delecourt +-- Copyright (C) 2005-2009 Regis Houssin +-- Copyright (C) 2007 Patrick Raguin +-- Copyright (C) 2011-2017 Alexandre Spangaro +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- 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 . +-- +-- Note (JPN-BASE): INCOME = REVENUE +-- Note (JPN-BASE): EXPENSE = EXPENSES +-- Note (JPN-BASE): CAPITAL = EQUITY +-- +-- Ne pas placer de commentaire en fin de ligne, ce fichier est parsé lors +-- de l''install et tous les sigles '--' sont supprimés. +-- Note: To replace a string thas is '__, 0' into an increasing number, you can use vi with comment +-- :let @a=1 | %s/__, 0/\='__, '.(@a+setreg('a',@a+1))/g + +-- Descriptif des plans comptables Japan JPN-BASE +-- ID 10000 - 99999 +-- ADD 12300000 to rowid # Do no remove this comment -- + +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 10000, 'JPN-BASE', 'ASSETS', '10000000', '0', '資産合計', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11000, 'JPN-BASE', 'ASSETS', '11000000', '10000000', '流動資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11100, 'JPN-BASE', 'ASSETS', '11100000', '11000000', '当座資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11101, 'JPN-BASE', 'ASSETS', '11110000', '11100000', '現金及び預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11102, 'JPN-BASE', 'ASSETS', '11111000', '11110000', '現金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11103, 'JPN-BASE', 'ASSETS', '11111100', '11111000', '現金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11104, 'JPN-BASE', 'ASSETS', '11111200', '11111000', '小口現金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11105, 'JPN-BASE', 'ASSETS', '11111300', '11111000', '小切手', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11106, 'JPN-BASE', 'ASSETS', '11111400', '11111000', '転送中現金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11107, 'JPN-BASE', 'ASSETS', '11112000', '11110000', '流動性預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11108, 'JPN-BASE', 'ASSETS', '11112100', '11112000', '当座預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11109, 'JPN-BASE', 'ASSETS', '11112200', '11112000', '普通預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11110, 'JPN-BASE', 'ASSETS', '11112300', '11112000', '通知預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11111, 'JPN-BASE', 'ASSETS', '11112400', '11112000', 'その他流動性預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11112, 'JPN-BASE', 'ASSETS', '11112500', '11112000', '銀行通過中預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11113, 'JPN-BASE', 'ASSETS', '11112600', '11112000', '銀行未確認受領', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11114, 'JPN-BASE', 'ASSETS', '11112700', '11112000', '未配分受取預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11115, 'JPN-BASE', 'ASSETS', '11113000', '11110000', '固定性預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11116, 'JPN-BASE', 'ASSETS', '11113100', '11113000', '定期預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11117, 'JPN-BASE', 'ASSETS', '11113200', '11113000', '定期積金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11118, 'JPN-BASE', 'ASSETS', '11113300', '11113000', 'その他固定性預金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11119, 'JPN-BASE', 'ASSETS', '11120000', '11100000', 'その他当座資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11120, 'JPN-BASE', 'ASSETS', '11121000', '11120000', '受取手形', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11121, 'JPN-BASE', 'ASSETS', '11122000', '11120000', '売掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11122, 'JPN-BASE', 'ASSETS', '11123000', '11120000', 'サービス売掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11123, 'JPN-BASE', 'ASSETS', '11124000', '11120000', '有価証券', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11124, 'JPN-BASE', 'ASSETS', '11125000', '11120000', 'その他当座資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11125, 'JPN-BASE', 'ASSETS', '11126000', '11120000', '未請求売掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11200, 'JPN-BASE', 'ASSETS', '11200000', '11000000', '棚卸資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11201, 'JPN-BASE', 'ASSETS', '11201000', '11200000', '商品', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11202, 'JPN-BASE', 'ASSETS', '11202000', '11200000', '製品', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11203, 'JPN-BASE', 'ASSETS', '11203000', '11200000', '製品資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11204, 'JPN-BASE', 'ASSETS', '11204000', '11200000', '倉庫資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11205, 'JPN-BASE', 'ASSETS', '11205000', '11200000', '原材料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11206, 'JPN-BASE', 'ASSETS', '11206000', '11200000', '半製品・仕掛品', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11207, 'JPN-BASE', 'ASSETS', '11207000', '11200000', '貯蔵品', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11208, 'JPN-BASE', 'ASSETS', '11208000', '11200000', '補助材料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11209, 'JPN-BASE', 'ASSETS', '11209000', '11200000', 'その他棚卸資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11210, 'JPN-BASE', 'ASSETS', '11210000', '11200000', '仕掛品在庫', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11211, 'JPN-BASE', 'ASSETS', '11211000', '11200000', '検品中在庫', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11300, 'JPN-BASE', 'ASSETS', '11300000', '11000000', 'その他流動資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11301, 'JPN-BASE', 'ASSETS', '11301000', '11300000', '前渡金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11302, 'JPN-BASE', 'ASSETS', '11302000', '11300000', '短期貸付金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11303, 'JPN-BASE', 'ASSETS', '11303000', '11300000', '立替金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11304, 'JPN-BASE', 'ASSETS', '11304000', '11300000', '従業員立替', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11305, 'JPN-BASE', 'ASSETS', '11305000', '11300000', '未収入金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11306, 'JPN-BASE', 'ASSETS', '11306000', '11300000', '仮払金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11307, 'JPN-BASE', 'ASSETS', '11307000', '11300000', '前払金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11308, 'JPN-BASE', 'ASSETS', '11308000', '11300000', '仮払消費税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11309, 'JPN-BASE', 'ASSETS', '11309000', '11300000', '未収法人税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11310, 'JPN-BASE', 'ASSETS', '11310000', '11300000', '繰延税金資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11311, 'JPN-BASE', 'ASSETS', '11311000', '11300000', 'その他流動資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11312, 'JPN-BASE', 'ASSETS', '11312000', '11300000', '不渡手形', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11313, 'JPN-BASE', 'ASSETS', '11313000', '11300000', '債権償却特別勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 11314, 'JPN-BASE', 'ASSETS', '11314000', '11300000', '貸倒引当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12000, 'JPN-BASE', 'ASSETS', '12000000', '10000000', '固定資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12100, 'JPN-BASE', 'ASSETS', '12100000', '12000000', '有形固定資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12101, 'JPN-BASE', 'ASSETS', '12101000', '12100000', '建物', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12102, 'JPN-BASE', 'ASSETS', '12102000', '12100000', '建物付属設備', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12103, 'JPN-BASE', 'ASSETS', '12103000', '12100000', '構築物', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12104, 'JPN-BASE', 'ASSETS', '12104000', '12100000', '機械装置', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12105, 'JPN-BASE', 'ASSETS', '12105000', '12100000', '車両運搬具', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12106, 'JPN-BASE', 'ASSETS', '12106000', '12100000', '工具器具備品', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12107, 'JPN-BASE', 'ASSETS', '12107000', '12100000', '土地', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12108, 'JPN-BASE', 'ASSETS', '12108000', '12100000', '建設仮勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12109, 'JPN-BASE', 'ASSETS', '12109000', '12100000', 'その他有形固定資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12110, 'JPN-BASE', 'ASSETS', '12110000', '12100000', '減価償却累計額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12200, 'JPN-BASE', 'ASSETS', '12200000', '12000000', '無形固定資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12201, 'JPN-BASE', 'ASSETS', '12201000', '12200000', '電話加入権', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12202, 'JPN-BASE', 'ASSETS', '12202000', '12200000', 'その他無形固定資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12203, 'JPN-BASE', 'ASSETS', '12203000', '12200000', 'ソフトウェア資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12300, 'JPN-BASE', 'ASSETS', '12300000', '12000000', '投資その他の資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12301, 'JPN-BASE', 'ASSETS', '12301000', '12300000', '投資有価証券', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12302, 'JPN-BASE', 'ASSETS', '12302000', '12300000', '出資金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12303, 'JPN-BASE', 'ASSETS', '12303000', '12300000', '長期貸付金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12304, 'JPN-BASE', 'ASSETS', '12304000', '12300000', '長期前払費用', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12305, 'JPN-BASE', 'ASSETS', '12305000', '12300000', '保証金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12306, 'JPN-BASE', 'ASSETS', '12306000', '12300000', '事業保険積立金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12307, 'JPN-BASE', 'ASSETS', '12307000', '12300000', '長期繰延税金資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12308, 'JPN-BASE', 'ASSETS', '12308000', '12300000', 'その他投資', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12309, 'JPN-BASE', 'ASSETS', '12410000', '12000000', 'プロジェクト資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 12310, 'JPN-BASE', 'ASSETS', '12420000', '12000000', 'プロジェクト仕掛', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 13000, 'JPN-BASE', 'ASSETS', '13000000', '10000000', '繰延資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 13001, 'JPN-BASE', 'ASSETS', '13100000', '13000000', '創立費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 13002, 'JPN-BASE', 'ASSETS', '13200000', '13000000', '開発費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 13003, 'JPN-BASE', 'ASSETS', '13300000', '13000000', '試験研究費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 13004, 'JPN-BASE', 'ASSETS', '13400000', '13000000', 'その他繰延資産', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 14000, 'JPN-BASE', 'ASSETS', '14000000', '10000000', '関係会社取引元勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 20000, 'JPN-BASE', 'LIABILITIES_EQUITY', '20000000', '0', '負債・純資産合計', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21000, 'JPN-BASE', 'LIABILITIES', '21000000', '20000000', '負債合計', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21001, 'JPN-BASE', 'LIABILITIES', '21100000', '21000000', '流動負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21002, 'JPN-BASE', 'LIABILITIES', '21101000', '21100000', '支払手形', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21003, 'JPN-BASE', 'LIABILITIES', '21102000', '21100000', '買掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21004, 'JPN-BASE', 'LIABILITIES', '21103000', '21100000', 'サービス買掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21005, 'JPN-BASE', 'LIABILITIES', '21104000', '21100000', '短期借入金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21006, 'JPN-BASE', 'LIABILITIES', '21105000', '21100000', '1年内返済長期借入金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21007, 'JPN-BASE', 'LIABILITIES', '21106000', '21100000', '未払金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21008, 'JPN-BASE', 'LIABILITIES', '21107000', '21100000', '未払費用', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21009, 'JPN-BASE', 'LIABILITIES', '21108000', '21100000', '前受金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21010, 'JPN-BASE', 'LIABILITIES', '21109000', '21100000', '仮受金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21011, 'JPN-BASE', 'LIABILITIES', '21110000', '21100000', '預り金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21012, 'JPN-BASE', 'LIABILITIES', '21111000', '21100000', '従業員預り金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21013, 'JPN-BASE', 'LIABILITIES', '21112000', '21100000', '割引手形', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21014, 'JPN-BASE', 'LIABILITIES', '21113000', '21100000', '裏書手形', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21015, 'JPN-BASE', 'LIABILITIES', '21114000', '21100000', '未払法人税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21016, 'JPN-BASE', 'LIABILITIES', '21115000', '21100000', '賞与引当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21017, 'JPN-BASE', 'LIABILITIES', '21116000', '21100000', '仮受消費税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21018, 'JPN-BASE', 'LIABILITIES', '21117000', '21100000', '繰延税金負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21019, 'JPN-BASE', 'LIABILITIES', '21118000', '21100000', 'その他流動負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21020, 'JPN-BASE', 'LIABILITIES', '21119000', '21100000', '未請求受領書', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21021, 'JPN-BASE', 'LIABILITIES', '21200000', '21000000', '固定負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21022, 'JPN-BASE', 'LIABILITIES', '21201000', '21200000', '長期借入金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21023, 'JPN-BASE', 'LIABILITIES', '21202000', '21200000', '預り保証金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21024, 'JPN-BASE', 'LIABILITIES', '21203000', '21200000', '退職給与引当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21025, 'JPN-BASE', 'LIABILITIES', '21204000', '21200000', '長期繰延税金負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21026, 'JPN-BASE', 'LIABILITIES', '21205000', '21200000', 'その他固定負債', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21027, 'JPN-BASE', 'LIABILITIES', '21300000', '21000000', '引当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21028, 'JPN-BASE', 'LIABILITIES', '21301000', '21300000', '引当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21029, 'JPN-BASE', 'LIABILITIES', '21410000', '21000000', '関係会社取引先勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21030, 'JPN-BASE', 'LIABILITIES', '21420000', '21000000', '源泉所得税', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 21031, 'JPN-BASE', 'LIABILITIES', '21430000', '21000000', '支払中買掛金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22000, 'JPN-BASE', 'EQUITY', '22000000', '20000000', '純資産合計', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22001, 'JPN-BASE', 'EQUITY', '22100000', '22000000', '株主資本', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22002, 'JPN-BASE', 'EQUITY', '22110000', '22100000', '資本金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22003, 'JPN-BASE', 'EQUITY', '22111000', '22110000', '資本金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22004, 'JPN-BASE', 'EQUITY', '22120000', '22100000', '新株式申込証拠金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22005, 'JPN-BASE', 'EQUITY', '22121000', '22120000', '新株式申込証拠金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22006, 'JPN-BASE', 'EQUITY', '22130000', '22100000', '資本剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22007, 'JPN-BASE', 'EQUITY', '22131000', '22130000', '資本準備金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22008, 'JPN-BASE', 'EQUITY', '22131100', '22131000', 'その他資本剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22009, 'JPN-BASE', 'EQUITY', '22131110', '22131100', '資本・資本準備金減少差益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22010, 'JPN-BASE', 'EQUITY', '22131120', '22131100', '自己株式処分差益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22011, 'JPN-BASE', 'EQUITY', '22140000', '22100000', '利益剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22012, 'JPN-BASE', 'EQUITY', '22141000', '22140000', '利益準備金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22013, 'JPN-BASE', 'EQUITY', '22142000', '22140000', 'その他利益剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22014, 'JPN-BASE', 'EQUITY', '22142100', '22142000', '退職給与積立金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22015, 'JPN-BASE', 'EQUITY', '22142200', '22142000', '別途積立金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22016, 'JPN-BASE', 'EQUITY', '22142300', '22142000', 'その他任意積立金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22017, 'JPN-BASE', 'EQUITY', '22142400', '22142000', '繰越利益剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22018, 'JPN-BASE', 'EQUITY', '22142410', '22142400', '繰越利益剰余金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22019, 'JPN-BASE', 'EQUITY', '22150000', '22100000', '自己株式', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22020, 'JPN-BASE', 'EQUITY', '22151000', '22150000', '自己株式', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22021, 'JPN-BASE', 'EQUITY', '22160000', '22100000', '自己株式申込証拠金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22022, 'JPN-BASE', 'EQUITY', '22161000', '22160000', '自己株式申込証拠金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22023, 'JPN-BASE', 'EQUITY', '22200000', '22000000', '評価・換算差額等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22024, 'JPN-BASE', 'EQUITY', '22210000', '22200000', '他有価証券評価差額金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22025, 'JPN-BASE', 'EQUITY', '22211000', '22210000', '他有価証券評価差額金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22026, 'JPN-BASE', 'EQUITY', '22220000', '22200000', '繰越ヘッジ損益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22027, 'JPN-BASE', 'EQUITY', '22221000', '22220000', '繰越ヘッジ損益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22028, 'JPN-BASE', 'EQUITY', '22300000', '22000000', '新株予約権', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22029, 'JPN-BASE', 'EQUITY', '22310000', '22300000', '新株予約権', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 22030, 'JPN-BASE', 'EQUITY', '22320000', '22300000', '自己新株予約権', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30000, 'JPN-BASE', 'INCOME', '30000000', '0', '純売上高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30001, 'JPN-BASE', 'INCOME', '30001000', '30000000', '商品売上高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30002, 'JPN-BASE', 'INCOME', '30002000', '30000000', '製品売上高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30003, 'JPN-BASE', 'INCOME', '30003000', '30000000', 'サービス売上高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30004, 'JPN-BASE', 'INCOME', '30004000', '30000000', '売上値引高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30005, 'JPN-BASE', 'INCOME', '30005000', '30000000', '売上戻り高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30006, 'JPN-BASE', 'INCOME', '30006000', '30000000', '売上割戻し高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30007, 'JPN-BASE', 'INCOME', '30007000', '30000000', '前受収益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 30008, 'JPN-BASE', 'INCOME', '30008000', '30000000', '未請求売上', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31000, 'JPN-BASE', 'COGS', '31000000', '0', '売上原価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31001, 'JPN-BASE', 'COGS', '31100000', '31000000', '商品売上原価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31002, 'JPN-BASE', 'COGS', '31200000', '31000000', '製品売上原価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31003, 'JPN-BASE', 'COGS', '31201000', '31000000', '製品経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31004, 'JPN-BASE', 'COGS', '31202000', '31000000', '製品原価調整', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31005, 'JPN-BASE', 'COGS', '31203000', '31000000', '入庫請求仮勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31006, 'JPN-BASE', 'COGS', '31204000', '31000000', '請求価格差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31007, 'JPN-BASE', 'COGS', '31205000', '31000000', '標準価格差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31008, 'JPN-BASE', 'COGS', '31206000', '31000000', '平均原価差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31009, 'JPN-BASE', 'COGS', '31207000', '31000000', '倉庫差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31010, 'JPN-BASE', 'COGS', '31208000', '31000000', '在庫調整', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31011, 'JPN-BASE', 'COGS', '31209000', '31000000', '棚卸再評価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31012, 'JPN-BASE', 'COGS', '31300000', '31000000', '期首棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31400, 'JPN-BASE', 'COGS', '31400000', '31000000', '仕入高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31401, 'JPN-BASE', 'COGS', '31410000', '31400000', '商品仕入高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31402, 'JPN-BASE', 'COGS', '31420000', '31400000', 'サービス仕入高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31403, 'JPN-BASE', 'COGS', '31430000', '31400000', '仕入値引高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31404, 'JPN-BASE', 'COGS', '31440000', '31400000', '仕入戻り高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31405, 'JPN-BASE', 'COGS', '31450000', '31400000', '仕入割戻し高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31406, 'JPN-BASE', 'COGS', '31460000', '31400000', '仕入等配賦額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31500, 'JPN-BASE', 'COGS', '31500000', '31000000', '当期製品製造原価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31501, 'JPN-BASE', 'COGS', '31510000', '31500000', '当期総製造費用', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31502, 'JPN-BASE', 'COGS', '31511000', '31510000', '材料費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31503, 'JPN-BASE', 'COGS', '31511100', '31511000', '期首材料棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31504, 'JPN-BASE', 'COGS', '31511200', '31511000', '材料仕入高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31505, 'JPN-BASE', 'COGS', '31511300', '31511000', '期末材料棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31506, 'JPN-BASE', 'COGS', '31512000', '31510000', '労務費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31507, 'JPN-BASE', 'COGS', '31512100', '31512000', '賃金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31508, 'JPN-BASE', 'COGS', '31512200', '31512000', '賞与', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31509, 'JPN-BASE', 'COGS', '31512300', '31512000', '退職金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31510, 'JPN-BASE', 'COGS', '31512400', '31512000', '法定福利費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31511, 'JPN-BASE', 'COGS', '31512500', '31512000', '福利厚生費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31512, 'JPN-BASE', 'COGS', '31512600', '31512000', '賞与引当金繰入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31513, 'JPN-BASE', 'COGS', '31512700', '31512000', '退職給与引当金繰入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31514, 'JPN-BASE', 'COGS', '31512800', '31512000', 'その他労務費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31515, 'JPN-BASE', 'COGS', '31512900', '31512000', '雑給', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31516, 'JPN-BASE', 'COGS', '31513000', '31510000', '外注加工費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31517, 'JPN-BASE', 'COGS', '31513100', '31513000', '外注加工費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31518, 'JPN-BASE', 'COGS', '31514000', '31510000', '製造経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31519, 'JPN-BASE', 'COGS', '31514010', '31514000', '電力費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31520, 'JPN-BASE', 'COGS', '31514020', '31514000', '燃料費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31521, 'JPN-BASE', 'COGS', '31514030', '31514000', '水道光熱費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31522, 'JPN-BASE', 'COGS', '31514040', '31514000', '車両関連費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31523, 'JPN-BASE', 'COGS', '31514050', '31514000', '運賃', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31524, 'JPN-BASE', 'COGS', '31514060', '31514000', '工場消耗品費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31525, 'JPN-BASE', 'COGS', '31514070', '31514000', '賃借料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31526, 'JPN-BASE', 'COGS', '31514080', '31514000', '支払保険料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31527, 'JPN-BASE', 'COGS', '31514090', '31514000', '修繕費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31528, 'JPN-BASE', 'COGS', '31514100', '31514000', '租税公課', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31529, 'JPN-BASE', 'COGS', '31514110', '31514000', '減価償却費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31530, 'JPN-BASE', 'COGS', '31514120', '31514000', '旅費交通費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31531, 'JPN-BASE', 'COGS', '31514130', '31514000', '通信費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31532, 'JPN-BASE', 'COGS', '31514140', '31514000', '支払手数料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31533, 'JPN-BASE', 'COGS', '31514150', '31514000', '会議費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31534, 'JPN-BASE', 'COGS', '31514160', '31514000', '諸会費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31535, 'JPN-BASE', 'COGS', '31514170', '31514000', '図書教育費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31536, 'JPN-BASE', 'COGS', '31514180', '31514000', '試験研究費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31537, 'JPN-BASE', 'COGS', '31514190', '31514000', 'その他製造経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31538, 'JPN-BASE', 'COGS', '31514200', '31514000', '雑費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31539, 'JPN-BASE', 'COGS', '31515010', '31514000', '製造原価', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31540, 'JPN-BASE', 'COGS', '31515020', '31514000', 'スクラップ', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31541, 'JPN-BASE', 'COGS', '31515030', '31514000', '外注加工費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31542, 'JPN-BASE', 'COGS', '31515040', '31514000', '数量差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31543, 'JPN-BASE', 'COGS', '31515050', '31514000', '仕様変更差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31544, 'JPN-BASE', 'COGS', '31515060', '31514000', '賃率差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31545, 'JPN-BASE', 'COGS', '31515070', '31514000', '準変動費差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31546, 'JPN-BASE', 'COGS', '31515080', '31514000', '労務費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31547, 'JPN-BASE', 'COGS', '31515090', '31514000', '負担', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31548, 'JPN-BASE', 'COGS', '31515100', '31514000', '間接諸経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31549, 'JPN-BASE', 'COGS', '31520000', '31500000', '仕掛品棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31550, 'JPN-BASE', 'COGS', '31521000', '31520000', '製造原価配賦額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31551, 'JPN-BASE', 'COGS', '31522000', '31520000', '期首仕掛品棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31552, 'JPN-BASE', 'COGS', '31523000', '31520000', '期末仕掛品棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31553, 'JPN-BASE', 'COGS', '31524000', '31520000', '他勘定振替高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 31600, 'JPN-BASE', 'COGS', '31600000', '31000000', '期末棚卸高', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41000, 'JPN-BASE', 'EXPENSE', '41000000', '0', '販売費及び一般管理費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41100, 'JPN-BASE', 'EXPENSE', '41100000', '41000000', '人件費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41101, 'JPN-BASE', 'EXPENSE', '41101000', '41100000', '役員報酬', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41102, 'JPN-BASE', 'EXPENSE', '41102000', '41100000', '役員賞与', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41103, 'JPN-BASE', 'EXPENSE', '41103000', '41100000', '給料手当', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41104, 'JPN-BASE', 'EXPENSE', '41104000', '41100000', '賞与', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41105, 'JPN-BASE', 'EXPENSE', '41105000', '41100000', '退職金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41106, 'JPN-BASE', 'EXPENSE', '41106000', '41100000', '法定福利費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41107, 'JPN-BASE', 'EXPENSE', '41107000', '41100000', '福利厚生費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41108, 'JPN-BASE', 'EXPENSE', '41108000', '41100000', '賞与引当金繰入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41109, 'JPN-BASE', 'EXPENSE', '41109000', '41100000', '退職給与引当金繰入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41110, 'JPN-BASE', 'EXPENSE', '41110000', '41100000', 'その他人件費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41111, 'JPN-BASE', 'EXPENSE', '41111000', '41100000', '雑給', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41112, 'JPN-BASE', 'EXPENSE', '41112000', '41100000', '従業員経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41200, 'JPN-BASE', 'EXPENSE', '41200000', '41000000', '販売直接費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41201, 'JPN-BASE', 'EXPENSE', '41201000', '41200000', '広告宣伝費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41202, 'JPN-BASE', 'EXPENSE', '41202000', '41200000', '運賃', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41203, 'JPN-BASE', 'EXPENSE', '41203000', '41200000', '販売手数料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41204, 'JPN-BASE', 'EXPENSE', '41204000', '41200000', '容器包装費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41205, 'JPN-BASE', 'EXPENSE', '41205000', '41200000', 'その他販売直接費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41300, 'JPN-BASE', 'EXPENSE', '41300000', '41000000', '一般管理費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41301, 'JPN-BASE', 'EXPENSE', '41301000', '41300000', '水道光熱費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41302, 'JPN-BASE', 'EXPENSE', '41302000', '41300000', '車両関連費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41303, 'JPN-BASE', 'EXPENSE', '41303000', '41300000', '事務用消耗品費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41304, 'JPN-BASE', 'EXPENSE', '41304000', '41300000', '消耗品費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41305, 'JPN-BASE', 'EXPENSE', '41305000', '41300000', '賃借料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41306, 'JPN-BASE', 'EXPENSE', '41306000', '41300000', '支払保険料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41307, 'JPN-BASE', 'EXPENSE', '41307000', '41300000', '修繕費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41308, 'JPN-BASE', 'EXPENSE', '41308000', '41300000', '租税公課', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41309, 'JPN-BASE', 'EXPENSE', '41309000', '41300000', '減価償却費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41310, 'JPN-BASE', 'EXPENSE', '41310000', '41300000', '接待交際費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41311, 'JPN-BASE', 'EXPENSE', '41311000', '41300000', '旅費交通費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41312, 'JPN-BASE', 'EXPENSE', '41312000', '41300000', '通信費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41313, 'JPN-BASE', 'EXPENSE', '41313000', '41300000', '支払手数料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41314, 'JPN-BASE', 'EXPENSE', '41314000', '41300000', '会議費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41315, 'JPN-BASE', 'EXPENSE', '41315000', '41300000', '諸会費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41316, 'JPN-BASE', 'EXPENSE', '41316000', '41300000', '寄付金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41317, 'JPN-BASE', 'EXPENSE', '41317000', '41300000', '図書教育費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41318, 'JPN-BASE', 'EXPENSE', '41318000', '41300000', '試験研究費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41319, 'JPN-BASE', 'EXPENSE', '41319000', '41300000', 'その他管理費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41320, 'JPN-BASE', 'EXPENSE', '41320000', '41300000', '貸倒引当金繰入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41321, 'JPN-BASE', 'EXPENSE', '41321000', '41300000', '銀行手数料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41322, 'JPN-BASE', 'EXPENSE', '41322000', '41300000', '現金差異', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41323, 'JPN-BASE', 'EXPENSE', '41323000', '41300000', '雑費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 41400, 'JPN-BASE', 'EXPENSE', '41400000', '41000000', '販管費配賦額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51000, 'JPN-BASE', 'OTHER_REVENUE', '51000000', '0', '営業外収益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51001, 'JPN-BASE', 'OTHER_REVENUE', '51010000', '51000000', '受取利息', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51002, 'JPN-BASE', 'OTHER_REVENUE', '51020000', '51000000', '受取配当金', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51003, 'JPN-BASE', 'OTHER_REVENUE', '51030000', '51000000', '銀行再評価益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51004, 'JPN-BASE', 'OTHER_REVENUE', '51040000', '51000000', '銀行決済利益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51005, 'JPN-BASE', 'OTHER_REVENUE', '51050000', '51000000', '手数料収益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51006, 'JPN-BASE', 'OTHER_REVENUE', '51060000', '51000000', 'その他営業外収益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51007, 'JPN-BASE', 'OTHER_REVENUE', '51070000', '51000000', '支払割引費科目', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51008, 'JPN-BASE', 'OTHER_REVENUE', '51080000', '51000000', '許可割引料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51009, 'JPN-BASE', 'OTHER_REVENUE', '51090000', '51000000', '現金出納帳受取', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51010, 'JPN-BASE', 'OTHER_REVENUE', '51100000', '51000000', '未実現利益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51011, 'JPN-BASE', 'OTHER_REVENUE', '51110000', '51000000', '実現利益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 51012, 'JPN-BASE', 'OTHER_REVENUE', '51120000', '51000000', '雑収入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52000, 'JPN-BASE', 'OTHER_EXPENSES', '52000000', '0', '営業外費用', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52001, 'JPN-BASE', 'OTHER_EXPENSES', '52010000', '52000000', '支払利息', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52002, 'JPN-BASE', 'OTHER_EXPENSES', '52020000', '52000000', '銀行再評価損', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52003, 'JPN-BASE', 'OTHER_EXPENSES', '52030000', '52000000', '銀行決済損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52004, 'JPN-BASE', 'OTHER_EXPENSES', '52040000', '52000000', '手数料経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52005, 'JPN-BASE', 'OTHER_EXPENSES', '52050000', '52000000', '手形売却損', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52006, 'JPN-BASE', 'OTHER_EXPENSES', '52060000', '52000000', 'その他営業外費用', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52007, 'JPN-BASE', 'OTHER_EXPENSES', '52070000', '52000000', '支払割引売上科目', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52008, 'JPN-BASE', 'OTHER_EXPENSES', '52080000', '52000000', '受取割引料', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52009, 'JPN-BASE', 'OTHER_EXPENSES', '52090000', '52000000', '貸倒損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52010, 'JPN-BASE', 'OTHER_EXPENSES', '52100000', '52000000', '現金出納帳経費', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52011, 'JPN-BASE', 'OTHER_EXPENSES', '52110000', '52000000', '未実現損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52012, 'JPN-BASE', 'OTHER_EXPENSES', '52120000', '52000000', '実現損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52013, 'JPN-BASE', 'OTHER_EXPENSES', '52130000', '52000000', '雑損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 52014, 'JPN-BASE', 'OTHER_EXPENSES', '52140000', '52000000', '営業外配賦額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 61000, 'JPN-BASE', 'EXTRAORDINALY_REVENUE', '61000000', '0', '特別利益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 61001, 'JPN-BASE', 'EXTRAORDINALY_REVENUE', '61100000', '61000000', '固定資産売却益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 61002, 'JPN-BASE', 'EXTRAORDINALY_REVENUE', '61200000', '61000000', '貸倒引当金戻入', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 61003, 'JPN-BASE', 'EXTRAORDINALY_REVENUE', '61300000', '61000000', 'その他特別利益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 61004, 'JPN-BASE', 'EXTRAORDINALY_REVENUE', '61400000', '61000000', '前期損益修正益', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 62000, 'JPN-BASE', 'EXTRAORDINALY_EXPENSES', '62000000', '0', '特別損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 62001, 'JPN-BASE', 'EXTRAORDINALY_EXPENSES', '62100000', '62000000', '固定資産売却除却損', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 62002, 'JPN-BASE', 'EXTRAORDINALY_EXPENSES', '62200000', '62000000', 'その他特別損失', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 62003, 'JPN-BASE', 'EXTRAORDINALY_EXPENSES', '62300000', '62000000', '前期損益修正損', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71100, 'JPN-BASE', 'INCOME_TAXES', '71100000', '0', '法人税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71101, 'JPN-BASE', 'INCOME_TAXES', '71110000', '71100000', '法人税等', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 71102, 'JPN-BASE', 'INCOME_TAXES', '71120000', '71100000', '法人税等調整額', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81101, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81101000', '0', 'デフォルト勘定科目', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81102, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81102000', '0', '貸借不一致仮勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81103, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81103000', '0', 'エラー仮勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81104, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81104000', '0', '通貨貸借不一致仮勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81105, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81105000', '0', '損益勘定', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 81106, 'JPN-BASE', 'OTHER_INCOME_EXPENSES', '81106000', '0', '購入価格差異相殺', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 82101, 'JPN-BASE', 'MEMO', '82100000', '0', 'コミッション相殺', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 82102, 'JPN-BASE', 'MEMO', '82200000', '0', '販売コミッション相殺', 1); +INSERT INTO llx_accounting_account (entity, rowid, fk_pcg_version, pcg_type, account_number, account_parent, label, active) VALUES (__ENTITY__, 82103, 'JPN-BASE', 'MEMO', '99999999', '0', '諸口', 1); diff --git a/htdocs/install/mysql/data/llx_c_asset_disposal_type.sql b/htdocs/install/mysql/data/llx_c_asset_disposal_type-asset.sql similarity index 100% rename from htdocs/install/mysql/data/llx_c_asset_disposal_type.sql rename to htdocs/install/mysql/data/llx_c_asset_disposal_type-asset.sql diff --git a/htdocs/install/mysql/data/llx_c_currencies.sql b/htdocs/install/mysql/data/llx_c_currencies.sql index bc5a01c3992..04d17e98b6a 100644 --- a/htdocs/install/mysql/data/llx_c_currencies.sql +++ b/htdocs/install/mysql/data/llx_c_currencies.sql @@ -116,6 +116,7 @@ INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MRO' INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MUR', '[8360]', 1, 'Mauritius Rupee'); INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MXN', '[36]', 1, 'Mexico Peso'); INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MDL', NULL, 1, 'Moldova Leu'); +INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MMK', '[75]', 1, 'Myanmar Kyat'); INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MNT', '[8366]', 1, 'Mongolia Tughrik'); INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MAD', NULL, 1, 'Morocco Dirham'); INSERT INTO llx_c_currencies ( code_iso, unicode, active, label ) VALUES ( 'MZN', '[77,84]', 1, 'Mozambique Metical'); diff --git a/htdocs/install/mysql/data/llx_c_forme_juridique.sql b/htdocs/install/mysql/data/llx_c_forme_juridique.sql index bb8dd4c4efb..c35824fa235 100644 --- a/htdocs/install/mysql/data/llx_c_forme_juridique.sql +++ b/htdocs/install/mysql/data/llx_c_forme_juridique.sql @@ -109,7 +109,7 @@ insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '228', 'VO insert into llx_c_forme_juridique (fk_pays, code, libelle) values (2, '229', 'VS0 - Vennootschap met sociaal oogmerk'); --- France: Extrait de http://www.insee.fr/fr/nom_def_met/nomenclatures/cj/cjniveau2.htm +-- France: Extrait de https://www.insee.fr/fr/information/2028129 insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'11','Artisan Commerçant (EI)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'12','Commerçant (EI)'); insert into llx_c_forme_juridique (fk_pays, code, libelle) values (1,'13','Artisan (EI)'); @@ -403,3 +403,36 @@ INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (76, '7608', ' INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (76, '7609', 'Državno tijelo'); INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (76, '7610', 'Kućna radinost'); INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (76, '7611', 'Sporedno zanimanje'); + +-- Japan (id country=123) +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12301', '株式会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12302', '有限会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12303', '合資会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12304', '合名会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12305', '相互会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12306', '医療法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12307', '財団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12308', '社団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12309', '社会福祉法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12310', '学校法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12311', '特定非営利活動法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12312', 'NPO法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12313', '商工組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12314', '林業組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12315', '同業組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12316', '農業協同組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12317', '漁業協同組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12318', '農事組合法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12319', '生活互助会'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12320', '協業組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12321', '協同組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12322', '生活協同組合'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12323', '連合会'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12324', '組合連合会'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12325', '協同組合連合会'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12329', '一般社団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12330', '公益社団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12331', '一般財団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12332', '公益財団法人'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12333', '合同会社'); +INSERT INTO llx_c_forme_juridique (fk_pays, code, libelle) VALUES (123, '12399', '個人又はその他の法人'); diff --git a/htdocs/install/mysql/data/llx_c_hrm_public_holiday.sql b/htdocs/install/mysql/data/llx_c_hrm_public_holiday.sql index 80f59680df5..a8e9ac3be80 100644 --- a/htdocs/install/mysql/data/llx_c_hrm_public_holiday.sql +++ b/htdocs/install/mysql/data/llx_c_hrm_public_holiday.sql @@ -47,6 +47,16 @@ INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, m INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('FR-ASCENSION', 0, 1, 'ascension', 0, 0, 0, 1); INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('FR-PENTECOST', 0, 1, 'pentecost', 0, 0, 0, 1); +-- Belgium only (2) +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-VICTORYDAY', 0, 2, '', 0, 5, 8, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-NATIONALDAY', 0, 2, '', 0, 7, 21, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ASSOMPTION', 0, 2, '', 0, 8, 15, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-TOUSSAINT', 0, 2, '', 0, 11, 1, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ARMISTICE', 0, 2, '', 0, 11, 11, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-EASTER', 0, 2, 'eastermonday', 0, 0, 0, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ASCENSION', 0, 2, 'ascension', 0, 0, 0, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-PENTECOST', 0, 2, 'pentecost', 0, 0, 0, 1); + -- Italy (3) INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('IT-LIBEAZIONE', 0, 3, 0, 4, 25, 1); INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, year, month, day, active) VALUES('IT-EPIPHANY', 0, 3, 0, 6, 1, 1); diff --git a/htdocs/install/mysql/data/llx_c_socialnetworks.sql b/htdocs/install/mysql/data/llx_c_socialnetworks.sql index 468086291fc..7741f8cdfef 100644 --- a/htdocs/install/mysql/data/llx_c_socialnetworks.sql +++ b/htdocs/install/mysql/data/llx_c_socialnetworks.sql @@ -37,7 +37,7 @@ INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'gifycat', 'Gificat', '{socialid}', '', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'giphy', 'Giphy', '{socialid}', '', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'github', 'GitHub', 'https://www.github.com/{socialid}', '', 0); -INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'googleplus', 'GooglePlus', 'https://www.googleplus.com/{socialid}', 'fa-google-plus-g', 0); +INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'googleplus', 'GooglePlus', 'https://www.googleplus.com/{socialid}', 'fa-google-plus', 0); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'instagram', 'Instagram', 'https://www.instagram.com/{socialid}', 'fa-instagram', 1); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'linkedin', 'LinkedIn', 'https://www.linkedin.com/{socialid}', 'fa-linkedin', 1); INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ( 1, 'mastodon', 'Mastodon', '{socialid}', '', 0); diff --git a/htdocs/install/mysql/data/llx_c_type_contact.sql b/htdocs/install/mysql/data/llx_c_type_contact.sql index 825e21ddf42..5852e295c6b 100644 --- a/htdocs/install/mysql/data/llx_c_type_contact.sql +++ b/htdocs/install/mysql/data/llx_c_type_contact.sql @@ -32,88 +32,89 @@ -- -- The types of contact of an element --- Les types de contact d'un element +-- +-- The unique key is set on (element, source, code) -- -- Contract / Contrat -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (10, 'contrat', 'internal', 'SALESREPSIGN', 'Commercial signataire du contrat', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (11, 'contrat', 'internal', 'SALESREPFOLL', 'Commercial suivi du contrat', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (20, 'contrat', 'external', 'BILLING', 'Contact client facturation contrat', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (21, 'contrat', 'external', 'CUSTOMER', 'Contact client suivi contrat', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (22, 'contrat', 'external', 'SALESREPSIGN', 'Contact client signataire contrat', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('contrat', 'internal', 'SALESREPSIGN', 'Commercial signataire du contrat', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('contrat', 'internal', 'SALESREPFOLL', 'Commercial suivi du contrat', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('contrat', 'external', 'BILLING', 'Contact client facturation contrat', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('contrat', 'external', 'CUSTOMER', 'Contact client suivi contrat', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('contrat', 'external', 'SALESREPSIGN', 'Contact client signataire contrat', 1); -- Proposal / Propal -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (31, 'propal', 'internal', 'SALESREPFOLL', 'Commercial à l''origine de la propale', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (40, 'propal', 'external', 'BILLING', 'Contact client facturation propale', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (41, 'propal', 'external', 'CUSTOMER', 'Contact client suivi propale', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (42, 'propal', 'external', 'SHIPPING', 'Contact client livraison propale', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('propal', 'internal', 'SALESREPFOLL', 'Commercial à l''origine de la propale', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('propal', 'external', 'BILLING', 'Contact client facturation propale', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('propal', 'external', 'CUSTOMER', 'Contact client suivi propale', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('propal', 'external', 'SHIPPING', 'Contact client livraison propale', 1); -- Customer Invoice / Facture -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (50, 'facture', 'internal', 'SALESREPFOLL', 'Responsable suivi du paiement', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (60, 'facture', 'external', 'BILLING', 'Contact client facturation', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (61, 'facture', 'external', 'SHIPPING', 'Contact client livraison', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (62, 'facture', 'external', 'SERVICE', 'Contact client prestation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('facture', 'internal', 'SALESREPFOLL', 'Responsable suivi du paiement', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('facture', 'external', 'BILLING', 'Contact client facturation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('facture', 'external', 'SHIPPING', 'Contact client livraison', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('facture', 'external', 'SERVICE', 'Contact client prestation', 1); -- Supplier Invoice -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (70, 'invoice_supplier', 'internal', 'SALESREPFOLL', 'Responsable suivi du paiement', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (71, 'invoice_supplier', 'external', 'BILLING', 'Contact fournisseur facturation', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (72, 'invoice_supplier', 'external', 'SHIPPING', 'Contact fournisseur livraison', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (73, 'invoice_supplier', 'external', 'SERVICE', 'Contact fournisseur prestation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('invoice_supplier', 'internal', 'SALESREPFOLL', 'Responsable suivi du paiement', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('invoice_supplier', 'external', 'BILLING', 'Contact fournisseur facturation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('invoice_supplier', 'external', 'SHIPPING', 'Contact fournisseur livraison', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('invoice_supplier', 'external', 'SERVICE', 'Contact fournisseur prestation', 1); -- Agenda -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (80, 'agenda', 'internal', 'ACTOR', 'Responsable', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (81, 'agenda', 'internal', 'GUEST', 'Guest', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (85, 'agenda', 'external', 'ACTOR', 'Responsable', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (86, 'agenda', 'external', 'GUEST', 'Guest', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('agenda', 'internal', 'ACTOR', 'Responsable', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('agenda', 'internal', 'GUEST', 'Guest', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('agenda', 'external', 'ACTOR', 'Responsable', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('agenda', 'external', 'GUEST', 'Guest', 1); -- Customer Order / Commande -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (91, 'commande', 'internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (100,'commande', 'external', 'BILLING', 'Contact client facturation commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (101,'commande', 'external', 'CUSTOMER', 'Contact client suivi commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (102,'commande', 'external', 'SHIPPING', 'Contact client livraison commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('commande', 'internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('commande', 'external', 'BILLING', 'Contact client facturation commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('commande', 'external', 'CUSTOMER', 'Contact client suivi commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('commande', 'external', 'SHIPPING', 'Contact client livraison commande', 1); -- Intervention / Fichinter -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (120, 'fichinter', 'internal', 'INTERREPFOLL', 'Responsable suivi de l''intervention', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (121, 'fichinter', 'internal', 'INTERVENING', 'Intervenant', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (130, 'fichinter', 'external', 'BILLING', 'Contact client facturation intervention', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (131, 'fichinter', 'external', 'CUSTOMER', 'Contact client suivi de l''intervention', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('fichinter', 'internal', 'INTERREPFOLL', 'Responsable suivi de l''intervention', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('fichinter', 'internal', 'INTERVENING', 'Intervenant', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('fichinter', 'external', 'BILLING', 'Contact client facturation intervention', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('fichinter', 'external', 'CUSTOMER', 'Contact client suivi de l''intervention', 1); -- Supplier Order -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (140, 'order_supplier', 'internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (141, 'order_supplier', 'internal', 'SHIPPING', 'Responsable réception de la commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (142, 'order_supplier', 'external', 'BILLING', 'Contact fournisseur facturation commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (143, 'order_supplier', 'external', 'CUSTOMER', 'Contact fournisseur suivi commande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (145, 'order_supplier', 'external', 'SHIPPING', 'Contact fournisseur livraison commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('order_supplier', 'internal', 'SALESREPFOLL', 'Responsable suivi de la commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('order_supplier', 'internal', 'SHIPPING', 'Responsable réception de la commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('order_supplier', 'external', 'BILLING', 'Contact fournisseur facturation commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('order_supplier', 'external', 'CUSTOMER', 'Contact fournisseur suivi commande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('order_supplier', 'external', 'SHIPPING', 'Contact fournisseur livraison commande', 1); -- Resource -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (150, 'dolresource', 'internal', 'USERINCHARGE', 'In charge of resource', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (151, 'dolresource', 'external', 'THIRDINCHARGE', 'In charge of resource', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('dolresource', 'internal', 'USERINCHARGE', 'In charge of resource', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('dolresource', 'external', 'THIRDINCHARGE', 'In charge of resource', 1); -- Tickets -insert into llx_c_type_contact (rowid, element, source, code, libelle, active, module) values (155, 'ticket', 'internal', 'SUPPORTTEC', 'Utilisateur contact support', 1, NULL); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active, module) values (156, 'ticket', 'internal', 'CONTRIBUTOR', 'Intervenant', 1, NULL); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active, module) values (157, 'ticket', 'external', 'SUPPORTCLI', 'Contact client suivi incident', 1, NULL); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active, module) values (158, 'ticket', 'external', 'CONTRIBUTOR', 'Intervenant', 1, NULL); +insert into llx_c_type_contact (element, source, code, libelle, active, module) values ('ticket', 'internal', 'SUPPORTTEC', 'Utilisateur contact support', 1, NULL); +insert into llx_c_type_contact (element, source, code, libelle, active, module) values ('ticket', 'internal', 'CONTRIBUTOR', 'Intervenant', 1, NULL); +insert into llx_c_type_contact (element, source, code, libelle, active, module) values ('ticket', 'external', 'SUPPORTCLI', 'Contact client suivi incident', 1, NULL); +insert into llx_c_type_contact (element, source, code, libelle, active, module) values ('ticket', 'external', 'CONTRIBUTOR', 'Intervenant', 1, NULL); -- Projects / Projet - All project code can start with 'PROJECT' -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (160, 'project', 'internal', 'PROJECTLEADER', 'Chef de Projet', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (161, 'project', 'internal', 'PROJECTCONTRIBUTOR', 'Intervenant', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (170, 'project', 'external', 'PROJECTLEADER', 'Chef de Projet', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (171, 'project', 'external', 'PROJECTCONTRIBUTOR', 'Intervenant', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project', 'internal', 'PROJECTLEADER', 'Chef de Projet', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project', 'internal', 'PROJECTCONTRIBUTOR', 'Intervenant', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project', 'external', 'PROJECTLEADER', 'Chef de Projet', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project', 'external', 'PROJECTCONTRIBUTOR', 'Intervenant', 1); -- Project Tasks - All task code can start with 'TASK' -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (180, 'project_task', 'internal', 'TASKEXECUTIVE', 'Responsable', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (181, 'project_task', 'internal', 'TASKCONTRIBUTOR', 'Intervenant', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (190, 'project_task', 'external', 'TASKEXECUTIVE', 'Responsable', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (191, 'project_task', 'external', 'TASKCONTRIBUTOR', 'Intervenant', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project_task', 'internal', 'TASKEXECUTIVE', 'Responsable', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project_task', 'internal', 'TASKCONTRIBUTOR', 'Intervenant', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project_task', 'external', 'TASKEXECUTIVE', 'Responsable', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('project_task', 'external', 'TASKCONTRIBUTOR', 'Intervenant', 1); -- Supplier proposal -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (110, 'supplier_proposal', 'internal', 'SALESREPFOLL', 'Responsable suivi de la demande', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (111, 'supplier_proposal', 'external', 'BILLING', 'Contact fournisseur facturation', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (112, 'supplier_proposal', 'external', 'SHIPPING', 'Contact fournisseur livraison', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (113, 'supplier_proposal', 'external', 'SERVICE', 'Contact fournisseur prestation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('supplier_proposal', 'internal', 'SALESREPFOLL', 'Responsable suivi de la demande', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('supplier_proposal', 'external', 'BILLING', 'Contact fournisseur facturation', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('supplier_proposal', 'external', 'SHIPPING', 'Contact fournisseur livraison', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('supplier_proposal', 'external', 'SERVICE', 'Contact fournisseur prestation', 1); -- Event Organization -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (210, 'conferenceorbooth', 'internal', 'MANAGER', 'Conference or Booth manager', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (211, 'conferenceorbooth', 'external', 'SPEAKER', 'Conference Speaker', 1); -insert into llx_c_type_contact (rowid, element, source, code, libelle, active ) values (212, 'conferenceorbooth', 'external', 'RESPONSIBLE', 'Booth responsible', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('conferenceorbooth', 'internal', 'MANAGER', 'Conference or Booth manager', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('conferenceorbooth', 'external', 'SPEAKER', 'Conference Speaker', 1); +insert into llx_c_type_contact (element, source, code, libelle, active ) values ('conferenceorbooth', 'external', 'RESPONSIBLE', 'Booth responsible', 1); diff --git a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql index a632a32271b..4a48e8b97fd 100644 --- a/htdocs/install/mysql/migration/12.0.0-13.0.0.sql +++ b/htdocs/install/mysql/migration/12.0.0-13.0.0.sql @@ -568,6 +568,7 @@ INSERT INTO llx_c_socialnetworks (entity, code, label, url, icon, active) VALUES ALTER TABLE llx_product_fournisseur_price ADD COLUMN packaging varchar(64) DEFAULT NULL; ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging varchar(64) DEFAULT NULL; +-- VPGSQL8.2 ALTER TABLE llx_product_fournisseur_price ALTER COLUMN packaging DROP DEFAULT; ALTER TABLE llx_projet ADD COLUMN fk_opp_status_end integer DEFAULT NULL; diff --git a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql index 2ec43548bb6..b335cf7f3f6 100644 --- a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql +++ b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql @@ -85,7 +85,9 @@ UPDATE llx_const set value = __ENCRYPT('eldy')__ WHERE __DECRYPT('value')__ = 'c DELETE FROM llx_user_param where param = 'MAIN_THEME' and value in ('auguria', 'amarok', 'cameleo'); ALTER TABLE llx_product_fournisseur_price ADD COLUMN packaging real DEFAULT NULL; -ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging real DEFAULT NULL; +-- VMYSQL4.3 ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging real DEFAULT NULL; +-- VPGSQL8.2 ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging real DEFAULT NULL USING packaging::real; +-- VPGSQL8.2 ALTER TABLE llx_product_fournisseur_price ALTER COLUMN packaging DROP DEFAULT; -- For v14 diff --git a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql index a945f078bbb..7eb3403e3ed 100644 --- a/htdocs/install/mysql/migration/14.0.0-15.0.0.sql +++ b/htdocs/install/mysql/migration/14.0.0-15.0.0.sql @@ -38,6 +38,7 @@ ALTER TABLE llx_product_fournisseur_price ADD COLUMN packaging real DEFAULT NULL; -- VMYSQL4.3 ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging real DEFAULT NULL; -- VPGSQL8.2 ALTER TABLE llx_product_fournisseur_price MODIFY COLUMN packaging real DEFAULT NULL USING packaging::real; +-- VPGSQL8.2 ALTER TABLE llx_product_fournisseur_price ALTER COLUMN packaging DROP DEFAULT; ALTER TABLE llx_accounting_bookkeeping ADD COLUMN date_export datetime DEFAULT NULL; diff --git a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql index 52194bdac2c..6d9aebf934f 100644 --- a/htdocs/install/mysql/migration/15.0.0-16.0.0.sql +++ b/htdocs/install/mysql/migration/15.0.0-16.0.0.sql @@ -51,7 +51,8 @@ -- VPGSQL8.2 ALTER TABLE llx_c_payment_term ALTER COLUMN rowid SET DEFAULT nextval('llx_c_payment_term_rowid_seq'); -- VPGSQL8.2 SELECT setval('llx_c_payment_term_rowid_seq', MAX(rowid)) FROM llx_c_payment_term; - +ALTER TABLE llx_entrepot ADD COLUMN barcode varchar(180) DEFAULT NULL; +ALTER TABLE llx_entrepot ADD COLUMN fk_barcode_type integer DEFAULT NULL; ALTER TABLE llx_c_transport_mode ADD UNIQUE INDEX uk_c_transport_mode (code, entity); @@ -134,8 +135,32 @@ ALTER TABLE llx_partnership ADD UNIQUE INDEX uk_fk_type_fk_member (fk_type, fk_m ALTER TABLE llx_bank ADD COLUMN amount_main_currency double(24,8) NULL; + -- v16 +ALTER TABLE llx_element_contact DROP FOREIGN KEY fk_element_contact_fk_c_type_contact; +ALTER TABLE llx_societe_contacts DROP FOREIGN KEY fk_societe_contacts_fk_c_type_contact; + +-- VMYSQL4.3 ALTER TABLE llx_c_type_contact ADD PRIMARY KEY(rowid); +-- VMYSQL4.3 ALTER TABLE llx_c_type_contact CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; + +-- VPGSQL8.2 CREATE SEQUENCE llx_c_type_contact_rowid_seq OWNED BY llx_c_type_contact.rowid; +-- VPGSQL8.2 ALTER TABLE llx_c_type_contact ADD PRIMARY KEY (rowid); +-- VPGSQL8.2 ALTER TABLE llx_c_type_contact ALTER COLUMN rowid SET DEFAULT nextval('llx_c_type_contact_rowid_seq'); +-- VPGSQL8.2 SELECT setval('llx_c_type_contact_rowid_seq', MAX(rowid)) FROM llx_c_type_contact; + +insert into llx_c_type_contact(element, source, code, libelle, active ) values ('conferenceorbooth', 'internal', 'MANAGER', 'Conference or Booth manager', 1); +insert into llx_c_type_contact(element, source, code, libelle, active ) values ('conferenceorbooth', 'external', 'SPEAKER', 'Conference Speaker', 1); +insert into llx_c_type_contact(element, source, code, libelle, active ) values ('conferenceorbooth', 'external', 'RESPONSIBLE', 'Booth responsible', 1); + +ALTER TABLE llx_element_contact ADD CONSTRAINT fk_element_contact_fk_c_type_contact FOREIGN KEY (fk_c_type_contact) REFERENCES llx_c_type_contact(rowid); +ALTER TABLE llx_societe_contacts ADD CONSTRAINT fk_societe_contacts_fk_c_type_contact FOREIGN KEY (fk_c_type_contact) REFERENCES llx_c_type_contact(rowid); + + +DROP TABLE llx_payment_salary_extrafields; +DROP TABLE llx_asset_model_extrafields; +DROP TABLE llx_asset_type_extrafields; + ALTER TABLE llx_projet_task_time ADD COLUMN intervention_id integer DEFAULT NULL; ALTER TABLE llx_projet_task_time ADD COLUMN intervention_line_id integer DEFAULT NULL; @@ -149,6 +174,8 @@ ALTER TABLE llx_facture ADD INDEX idx_facture_datef (datef); ALTER TABLE llx_projet_task_time ADD COLUMN fk_product integer NULL; +ALTER TABLE llx_c_action_trigger MODIFY elementtype VARCHAR(64); + INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('PROPAL_MODIFY','Customer proposal modified','Executed when a customer proposal is modified','propal',2); INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('ORDER_MODIFY','Customer order modified','Executed when a customer order is set modified','commande',5); INSERT INTO llx_c_action_trigger (code,label,description,elementtype,rang) values ('BILL_MODIFY','Customer invoice modified','Executed when a customer invoice is modified','facture',7); @@ -627,10 +654,11 @@ ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN lastname ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN email_company varchar(128) after email; -ALTER TABLE llx_c_email_template ADD COLUMN email_from varchar(255); -ALTER TABLE llx_c_email_template ADD COLUMN email_to varchar(255); -ALTER TABLE llx_c_email_template ADD COLUMN email_tocc varchar(255); -ALTER TABLE llx_c_email_template ADD COLUMN email_tobcc varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN joinfiles text; +ALTER TABLE llx_c_email_templates ADD COLUMN email_from varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_to varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_tocc varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_tobcc varchar(255); ALTER TABLE llx_fichinter ADD COLUMN ref_client varchar(255) after ref_ext; @@ -658,3 +686,6 @@ DELETE FROM llx_cronjob WHERE label = 'PurgeDeleteTemporaryFilesShort' AND param ALTER TABLE llx_cronjob DROP INDEX uk_cronjob; ALTER TABLE llx_cronjob ADD UNIQUE INDEX uk_cronjob (label, entity); +ALTER TABLE llx_expedition ADD COLUMN billed smallint DEFAULT 0; + +ALTER TABLE llx_loan_schedule ADD UNIQUE INDEX uk_loan_schedule_ref (fk_loan, datep); diff --git a/htdocs/install/mysql/migration/16.0.0-17.0.0.sql b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql new file mode 100644 index 00000000000..5f297619c50 --- /dev/null +++ b/htdocs/install/mysql/migration/16.0.0-17.0.0.sql @@ -0,0 +1,127 @@ +-- +-- Be carefull to requests order. +-- This file must be loaded by calling /install/index.php page +-- when current version is 16.0.0 or higher. +-- +-- To restrict request to Mysql version x.y minimum use -- VMYSQLx.y +-- To restrict request to Pgsql version x.y minimum use -- VPGSQLx.y +-- To rename a table: ALTER TABLE llx_table RENAME TO llx_table_new; +-- To add a column: ALTER TABLE llx_table ADD COLUMN newcol varchar(60) NOT NULL DEFAULT '0' AFTER existingcol; +-- To rename a column: ALTER TABLE llx_table CHANGE COLUMN oldname newname varchar(60); +-- To drop a column: ALTER TABLE llx_table DROP COLUMN oldname; +-- To change type of field: ALTER TABLE llx_table MODIFY COLUMN name varchar(60); +-- To drop a foreign key: ALTER TABLE llx_table DROP FOREIGN KEY fk_name; +-- To create a unique index ALTER TABLE llx_table ADD UNIQUE INDEX uk_table_field (field); +-- To drop an index: -- VMYSQL4.1 DROP INDEX nomindex on llx_table; +-- To drop an index: -- VPGSQL8.2 DROP INDEX nomindex; +-- To make pk to be auto increment (mysql): +-- -- VMYSQL4.3 ALTER TABLE llx_table ADD PRIMARY KEY(rowid); +-- -- VMYSQL4.3 ALTER TABLE llx_table CHANGE COLUMN rowid rowid INTEGER NOT NULL AUTO_INCREMENT; +-- To make pk to be auto increment (postgres): +-- -- VPGSQL8.2 CREATE SEQUENCE llx_table_rowid_seq OWNED BY llx_table.rowid; +-- -- VPGSQL8.2 ALTER TABLE llx_table ADD PRIMARY KEY (rowid); +-- -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN rowid SET DEFAULT nextval('llx_table_rowid_seq'); +-- -- VPGSQL8.2 SELECT setval('llx_table_rowid_seq', MAX(rowid)) FROM llx_table; +-- To set a field as NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NULL; +-- To set a field as NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name DROP NOT NULL; +-- To set a field as NOT NULL: -- VMYSQL4.3 ALTER TABLE llx_table MODIFY COLUMN name varchar(60) NOT NULL; +-- To set a field as NOT NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET NOT NULL; +-- To set a field as default NULL: -- VPGSQL8.2 ALTER TABLE llx_table ALTER COLUMN name SET DEFAULT NULL; +-- Note: fields with type BLOB/TEXT can't have default value. +-- To rebuild sequence for postgresql after insert by forcing id autoincrement fields: +-- -- VPGSQL8.2 SELECT dol_util_rebuild_sequences(); + + +-- Missing in v16 or lower + +ALTER TABLE llx_accounting_system MODIFY COLUMN pcg_version varchar(32) NOT NULL; + +ALTER TABLE llx_c_action_trigger MODIFY elementtype VARCHAR(64); + +ALTER TABLE llx_c_email_templates ADD COLUMN joinfiles text; +ALTER TABLE llx_c_email_templates ADD COLUMN email_from varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_to varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_tocc varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN email_tobcc varchar(255); +ALTER TABLE llx_c_email_templates ADD COLUMN content_lines text; +ALTER TABLE llx_c_email_templates ADD COLUMN enabled varchar(255) DEFAULT '1'; + +ALTER TABLE llx_expedition ADD COLUMN billed smallint DEFAULT 0; + +ALTER TABLE llx_user DROP COLUMN idpers1; +ALTER TABLE llx_user DROP COLUMN idpers2; +ALTER TABLE llx_user DROP COLUMN idpers3; + + +-- v17 + +-- VMYSQL4.3 ALTER TABLE llx_partnership MODIFY COLUMN fk_user_creat integer NULL; +-- VPGSQL8.2 ALTER TABLE llx_partnership ALTER COLUMN fk_user_creat DROP NOT NULL; + +ALTER TABLE llx_partnership ADD COLUMN ip varchar(250); +ALTER TABLE llx_adherent ADD COLUMN ip varchar(250); + +UPDATE llx_const set name = 'ADHERENT_MAILMAN_ADMIN_PASSWORD' WHERE name = 'ADHERENT_MAILMAN_ADMINPW'; + +ALTER TABLE llx_oauth_token ADD COLUMN state text after tokenstring; + +ALTER TABLE llx_adherent ADD COLUMN default_lang VARCHAR(6) DEFAULT NULL AFTER datefin; + +ALTER TABLE llx_adherent_type ADD COLUMN caneditamount integer DEFAULT 0 AFTER amount; + + +ALTER TABLE llx_inventory ADD COLUMN categories_product VARCHAR(255) DEFAULT NULL AFTER fk_product; + +ALTER TABLE llx_ticket ADD COLUMN ip varchar(250); + +ALTER TABLE llx_societe ADD last_main_doc VARCHAR(255) NULL AFTER model_pdf; + +ALTER TABLE llx_emailcollector_emailcollector MODIFY COLUMN lastresult text; +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN port varchar(10) DEFAULT '993'; +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN acces_type integer DEFAULT 0; +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN oauth_service varchar(128) DEFAULT NULL; + + +ALTER TABLE llx_bank ADD COLUMN position integer DEFAULT 0; + +ALTER TABLE llx_commande_fournisseur_dispatch ADD INDEX idx_commande_fournisseur_dispatch_fk_product (fk_product); + +INSERT INTO llx_const (name, entity, value, type, visible) VALUES ('MAIN_SECURITY_MAX_IMG_IN_HTML_CONTENT', 1, 1000, 'int', 0); + +ALTER TABLE llx_emailcollector_emailcollector ADD COLUMN port varchar(10) DEFAULT '993'; + +ALTER TABLE llx_facture ADD COLUMN close_missing_amount double(24, 8) after close_code; + +ALTER TABLE llx_facture_fourn ADD COLUMN close_missing_amount double(24, 8) after close_code; + +ALTER TABLE llx_inventory ADD COLUMN categories_product VARCHAR(255) DEFAULT NULL AFTER fk_product; + +ALTER TABLE llx_product ADD COLUMN sell_or_eat_by_mandatory tinyint DEFAULT 0 NOT NULL AFTER tobatch; + -- Make sell-by or eat-by date mandatory + +ALTER TABLE llx_recruitment_recruitmentcandidature ADD email_date datetime after email_msgid; + +ALTER TABLE llx_societe ADD last_main_doc VARCHAR(255) NULL AFTER model_pdf; + +ALTER TABLE llx_ticket ADD COLUMN ip varchar(250); + +ALTER TABLE llx_ticket ADD email_date datetime after email_msgid; + +ALTER TABLE llx_cronjob ADD COLUMN pid integer; + +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-VICTORYDAY', 0, 2, '', 0, 5, 8, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-NATIONALDAY', 0, 2, '', 0, 7, 21, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ASSOMPTION', 0, 2, '', 0, 8, 15, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-TOUSSAINT', 0, 2, '', 0, 11, 1, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ARMISTICE', 0, 2, '', 0, 11, 11, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-EASTER', 0, 2, 'eastermonday', 0, 0, 0, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-ASCENSION', 0, 2, 'ascension', 0, 0, 0, 1); +INSERT INTO llx_c_hrm_public_holiday (code, entity, fk_country, dayrule, year, month, day, active) VALUES('BE-PENTECOST', 0, 2, 'pentecost', 0, 0, 0, 1); + +ALTER TABLE llx_societe_rib ADD COLUMN state_id integer AFTER default_rib; +ALTER TABLE llx_societe_rib ADD COLUMN fk_country integer AFTER state_id; +ALTER TABLE llx_societe_rib ADD COLUMN currency_code varchar(3) AFTER fk_country; + +ALTER TABLE llx_user_rib ADD COLUMN state_id integer AFTER owner_address; +ALTER TABLE llx_user_rib ADD COLUMN fk_country integer AFTER state_id; +ALTER TABLE llx_user_rib ADD COLUMN currency_code varchar(3) AFTER fk_country; diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 4add688b880..1cf808d9dd9 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -270,7 +270,7 @@ 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 several times if you still have duplicate. +-- Sequence to removed duplicated values of llx_links. Run several 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); @@ -279,7 +279,7 @@ delete from llx_links where (rowid, label) in (select max_rowid, label from tmp_ drop table tmp_links_double; --- Sequence to removed duplicated values of barcode in llx_product. Use several times if you still have duplicate. +-- Sequence to removed duplicated values of barcode in llx_product. Run several 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); @@ -288,7 +288,7 @@ update llx_product set barcode = null where (rowid, barcode) in (select max_rowi drop table tmp_product_double; --- Sequence to removed duplicated values of barcode in llx_societe. Use several times if you still have duplicate. +-- Sequence to removed duplicated values of barcode in llx_societe. Run several times if you still have duplicate. drop table tmp_societe_double; --select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_societe where barcode is not null group by barcode having count(rowid) >= 2; create table tmp_societe_double as (select barcode, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_societe where barcode is not null group by barcode having count(rowid) >= 2); @@ -297,7 +297,7 @@ update llx_societe set barcode = null where (rowid, barcode) in (select max_rowi drop table tmp_societe_double; --- Sequence to removed duplicated values of llx_accounting_account. Use several times if you still have duplicate. +-- Sequence to removed duplicated values of llx_accounting_account. Run several times if you still have duplicate. drop table tmp_accounting_account_double; --select account_number, fk_pcg_version, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_accounting_account where label is not null group by account_number, fk_pcg_version having count(rowid) >= 2; create table tmp_accounting_account_double as (select account_number, fk_pcg_version, max(rowid) as max_rowid, count(rowid) as count_rowid from llx_accounting_account where label is not null group by account_number, fk_pcg_version having count(rowid) >= 2); @@ -415,6 +415,11 @@ ALTER TABLE llx_accounting_account DROP INDEX uk_accounting_account; ALTER TABLE llx_accounting_account ADD UNIQUE INDEX uk_accounting_account (account_number, entity, fk_pcg_version); +UPDATE llx_facturedet SET fk_code_ventilation = 0 WHERE fk_code_ventilation > 0 AND fk_code_ventilation NOT IN (select rowid FROM llx_accounting_account); +UPDATE llx_facture_fourn_det SET fk_code_ventilation = 0 WHERE fk_code_ventilation > 0 AND fk_code_ventilation NOT IN (select rowid FROM llx_accounting_account); +UPDATE llx_expensereport_det SET fk_code_ventilation = 0 WHERE fk_code_ventilation > 0 AND fk_code_ventilation NOT IN (select rowid FROM llx_accounting_account); + + -- VMYSQL4.1 update llx_projet_task_time set task_datehour = task_date where task_datehour < task_date or task_datehour > DATE_ADD(task_date, interval 1 day); diff --git a/htdocs/install/mysql/tables/llx_adherent.sql b/htdocs/install/mysql/tables/llx_adherent.sql index 01a87167411..a91de4c65df 100644 --- a/htdocs/install/mysql/tables/llx_adherent.sql +++ b/htdocs/install/mysql/tables/llx_adherent.sql @@ -71,6 +71,7 @@ create table llx_adherent statut smallint NOT NULL DEFAULT 0, public smallint NOT NULL DEFAULT 0, -- certain champ de la fiche sont ils public ou pas ? datefin datetime, -- end date of validity of the contribution / date de fin de validite de la cotisation + default_lang varchar(6) DEFAULT NULL, note_private text DEFAULT NULL, note_public text DEFAULT NULL, model_pdf varchar(255), @@ -81,5 +82,6 @@ create table llx_adherent fk_user_mod integer, fk_user_valid integer, canvas varchar(32), -- type of canvas if used (null by default) + ip varchar(250), -- ip used to create record (for public membership submission page) import_key varchar(14) -- Import key )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_adherent_type.sql b/htdocs/install/mysql/tables/llx_adherent_type.sql index 4144d9b32b7..3473798a6ea 100644 --- a/htdocs/install/mysql/tables/llx_adherent_type.sql +++ b/htdocs/install/mysql/tables/llx_adherent_type.sql @@ -34,6 +34,7 @@ create table llx_adherent_type duration varchar(6) DEFAULT NULL, -- (minimal) duration of membership subscription varchar(3) NOT NULL DEFAULT '1', -- subscription with costs / fee or without / for free amount double(24,8) DEFAULT NULL, -- membership fee + caneditamount integer DEFAULT 0, -- can member edit the amount of subscription vote varchar(3) NOT NULL DEFAULT '1', -- entitled to vote note text, -- description / comment mail_valid text -- text for welcome email diff --git a/htdocs/install/mysql/tables/llx_bank.sql b/htdocs/install/mysql/tables/llx_bank.sql index d0a8e34790b..9a1b12d5754 100644 --- a/htdocs/install/mysql/tables/llx_bank.sql +++ b/htdocs/install/mysql/tables/llx_bank.sql @@ -37,6 +37,7 @@ create table llx_bank rappro tinyint default 0, note text, fk_bordereau integer DEFAULT 0, + position integer DEFAULT 0, banque varchar(255), -- banque pour les cheques emetteur varchar(255), -- emetteur du cheque author varchar(40), -- a supprimer apres migration diff --git a/htdocs/install/mysql/tables/llx_c_type_contact.sql b/htdocs/install/mysql/tables/llx_c_type_contact.sql index 4b12661657e..e2275e71e5f 100644 --- a/htdocs/install/mysql/tables/llx_c_type_contact.sql +++ b/htdocs/install/mysql/tables/llx_c_type_contact.sql @@ -29,7 +29,7 @@ create table llx_c_type_contact ( - rowid integer PRIMARY KEY, + rowid integer AUTO_INCREMENT PRIMARY KEY, element varchar(30) NOT NULL, source varchar(8) DEFAULT 'external' NOT NULL, code varchar(32) NOT NULL, diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.key.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.key.sql index 9049cf57065..62d62a2ec38 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.key.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.key.sql @@ -19,3 +19,4 @@ ALTER TABLE llx_commande_fournisseur_dispatch ADD INDEX idx_commande_fournisseur_dispatch_fk_commande (fk_commande); ALTER TABLE llx_commande_fournisseur_dispatch ADD INDEX idx_commande_fournisseur_dispatch_fk_reception (fk_reception); ALTER TABLE llx_commande_fournisseur_dispatch ADD CONSTRAINT fk_commande_fournisseur_dispatch_fk_reception FOREIGN KEY (fk_reception) REFERENCES llx_reception (rowid); +ALTER TABLE llx_commande_fournisseur_dispatch ADD INDEX idx_commande_fournisseur_dispatch_fk_product (fk_product); diff --git a/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.sql b/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.sql index 974e10c09ff..058a74eea19 100644 --- a/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.sql +++ b/htdocs/install/mysql/tables/llx_commande_fournisseur_dispatch.sql @@ -17,6 +17,10 @@ -- This table is just an history table to track all receiving done for a -- particular supplier order. A movement with same information is also done -- into stock_movement so this table may be useless. +-- +-- Detail of each lines of a reception (qty, batch and into wich warehouse is +-- received a purchase order line). +-- This table should be also name llx_receptiondet. -- =================================================================== create table llx_commande_fournisseur_dispatch diff --git a/htdocs/install/mysql/tables/llx_cronjob.sql b/htdocs/install/mysql/tables/llx_cronjob.sql index 27e8a31cc9a..012801c28bb 100644 --- a/htdocs/install/mysql/tables/llx_cronjob.sql +++ b/htdocs/install/mysql/tables/llx_cronjob.sql @@ -47,6 +47,7 @@ CREATE TABLE llx_cronjob autodelete integer DEFAULT 0, -- 0=Job is kept unchanged once nbrun > maxrun or date > dateend, 2=Job must be archived (archive = status 2) once nbrun > maxrun or date > dateend status integer NOT NULL DEFAULT 1, -- 0=disabled, 1=enabled, 2=archived processing integer NOT NULL DEFAULT 0, -- 1=process currently running + pid integer, -- The cronjob PID, NULL if not in processing test varchar(255) DEFAULT '1', fk_user_author integer DEFAULT NULL, fk_user_mod integer DEFAULT NULL, diff --git a/htdocs/install/mysql/tables/llx_element_tag.key.sql b/htdocs/install/mysql/tables/llx_element_categorie.key.sql similarity index 71% rename from htdocs/install/mysql/tables/llx_element_tag.key.sql rename to htdocs/install/mysql/tables/llx_element_categorie.key.sql index d3a0b38afa9..0367eddc0a1 100644 --- a/htdocs/install/mysql/tables/llx_element_tag.key.sql +++ b/htdocs/install/mysql/tables/llx_element_categorie.key.sql @@ -1,5 +1,5 @@ -- ============================================================================ --- Copyright (C) 2021 Maxime Kohlhaas +-- Copyright (C) 2022 Charlene Benke -- -- 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 @@ -16,6 +16,7 @@ -- -- ============================================================================ -ALTER TABLE llx_element_tag ADD UNIQUE INDEX idx_element_tag_uk (fk_categorie, fk_element); -ALTER TABLE llx_element_tag ADD CONSTRAINT fk_element_tag_categorie_rowid FOREIGN KEY (fk_categorie) REFERENCES llx_categorie (rowid); +ALTER TABLE llx_element_categorie ADD UNIQUE INDEX idx_element_categorie_idx1 (fk_element, fk_categorie); + +ALTER TABLE llx_element_contact ADD CONSTRAINT fk_element_categorie_fk_categorie FOREIGN KEY (fk_categorie) REFERENCES llx_fk_categorie(rowid); diff --git a/htdocs/install/mysql/tables/llx_element_tag.sql b/htdocs/install/mysql/tables/llx_element_categorie.sql similarity index 90% rename from htdocs/install/mysql/tables/llx_element_tag.sql rename to htdocs/install/mysql/tables/llx_element_categorie.sql index d43ced98130..a1c7fddb0eb 100644 --- a/htdocs/install/mysql/tables/llx_element_tag.sql +++ b/htdocs/install/mysql/tables/llx_element_categorie.sql @@ -1,5 +1,5 @@ -- ============================================================================ --- Copyright (C) 2021 Maxime Kohlhaas +-- Copyright (C) 2022 charlene Benke -- -- 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 @@ -16,7 +16,7 @@ -- -- ============================================================================ -create table llx_element_tag +create table llx_element_categorie ( rowid integer AUTO_INCREMENT PRIMARY KEY, fk_categorie integer NOT NULL, diff --git a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql index b62a9b6ba7f..f13fff71a6f 100644 --- a/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql +++ b/htdocs/install/mysql/tables/llx_emailcollector_emailcollector.sql @@ -16,30 +16,33 @@ CREATE TABLE llx_emailcollector_emailcollector( -- BEGIN MODULEBUILDER FIELDS - rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, - entity integer DEFAULT 1 NOT NULL, + rowid integer AUTO_INCREMENT PRIMARY KEY NOT NULL, + entity integer DEFAULT 1 NOT NULL, ref varchar(128) NOT NULL, - label varchar(255), + label varchar(255), description text, host varchar(255), + port varchar(10) DEFAULT '993', hostcharset varchar(16) DEFAULT 'UTF-8', - login varchar(128), + login varchar(128), + acces_type integer DEFAULT 0, + oauth_service varchar(128), password varchar(128), source_directory varchar(255) NOT NULL, target_directory varchar(255), maxemailpercollect integer DEFAULT 100, - datelastresult datetime, - codelastresult varchar(16), - lastresult varchar(255), + datelastresult datetime, + codelastresult varchar(16), + lastresult text, datelastok datetime, - note_public text, - note_private text, - date_creation datetime NOT NULL, - tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - fk_user_creat integer NOT NULL, - fk_user_modif integer, + note_public text, + note_private text, + date_creation datetime NOT NULL, + tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + fk_user_creat integer NOT NULL, + fk_user_modif integer, position INTEGER NOT NULL DEFAULT 0, - import_key varchar(14), + import_key varchar(14), status integer NOT NULL -- END MODULEBUILDER FIELDS ) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_entrepot.sql b/htdocs/install/mysql/tables/llx_entrepot.sql index b2e814c15c6..4b93106e0d4 100644 --- a/htdocs/install/mysql/tables/llx_entrepot.sql +++ b/htdocs/install/mysql/tables/llx_entrepot.sql @@ -35,6 +35,8 @@ create table llx_entrepot fk_pays integer DEFAULT 0, phone varchar(20), -- phone number fax varchar(20), -- fax number + barcode varchar(180) DEFAULT NULL, -- barcode + fk_barcode_type integer DEFAULT NULL, -- barcode type warehouse_usage integer DEFAULT 1, -- 1=internal, 2=external (virtual warehouse or stock out of company) statut tinyint DEFAULT 1, -- 1 open, 0 close fk_user_author integer, diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index 8c7e2db385c..3e8ac2b7a50 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -48,6 +48,7 @@ create table llx_facture remise real DEFAULT 0, -- remise totale calculee close_code varchar(16), -- Code motif cloture sans paiement complet + close_missing_amount double(24,8), -- Amount missing when closing with a not complete payment close_note varchar(128), -- Commentaire cloture sans paiement complet total_tva double(24,8) DEFAULT 0, -- amount total tva apres remise totale diff --git a/htdocs/install/mysql/tables/llx_facture_fourn.sql b/htdocs/install/mysql/tables/llx_facture_fourn.sql index 9ceff4e4fa9..3a304567beb 100644 --- a/htdocs/install/mysql/tables/llx_facture_fourn.sql +++ b/htdocs/install/mysql/tables/llx_facture_fourn.sql @@ -44,6 +44,7 @@ create table llx_facture_fourn remise double(24,8) DEFAULT 0, close_code varchar(16), -- Code motif cloture sans paiement complet + close_missing_amount double(24,8), -- Amount missing when closing with a not complete payment close_note varchar(128), -- Commentaire cloture sans paiement complet tva double(24,8) DEFAULT 0, diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_det_rec.extrafields.key.sql b/htdocs/install/mysql/tables/llx_facture_fourn_det_rec_extrafields.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_facture_fourn_det_rec.extrafields.key.sql rename to htdocs/install/mysql/tables/llx_facture_fourn_det_rec_extrafields.key.sql diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_det_rec.extrafields.sql b/htdocs/install/mysql/tables/llx_facture_fourn_det_rec_extrafields.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_facture_fourn_det_rec.extrafields.sql rename to htdocs/install/mysql/tables/llx_facture_fourn_det_rec_extrafields.sql diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.key.sql b/htdocs/install/mysql/tables/llx_facture_fourn_rec_extrafields.key.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.key.sql rename to htdocs/install/mysql/tables/llx_facture_fourn_rec_extrafields.key.sql diff --git a/htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.sql b/htdocs/install/mysql/tables/llx_facture_fourn_rec_extrafields.sql similarity index 100% rename from htdocs/install/mysql/tables/llx_facture_fourn_rec.extrafields.sql rename to htdocs/install/mysql/tables/llx_facture_fourn_rec_extrafields.sql diff --git a/htdocs/install/mysql/tables/llx_inventory-stock.sql b/htdocs/install/mysql/tables/llx_inventory-stock.sql index c25ccb9767b..0c7a6d2eb49 100644 --- a/htdocs/install/mysql/tables/llx_inventory-stock.sql +++ b/htdocs/install/mysql/tables/llx_inventory-stock.sql @@ -28,8 +28,9 @@ CREATE TABLE llx_inventory fk_user_modif integer, -- user making last change fk_user_valid integer, -- valideur de la fiche fk_warehouse integer DEFAULT NULL, - fk_product integer DEFAULT NULL, - status integer DEFAULT 0, + fk_product integer DEFAULT NULL, + categories_product varchar(255) DEFAULT NULL, -- product categories id separated by comma + status integer DEFAULT 0, title varchar(255) NOT NULL, date_inventory datetime DEFAULT NULL, date_validation datetime DEFAULT NULL, diff --git a/htdocs/install/mysql/tables/llx_loan_schedule-loan.key.sql b/htdocs/install/mysql/tables/llx_loan_schedule-loan.key.sql new file mode 100644 index 00000000000..8d47d879a2d --- /dev/null +++ b/htdocs/install/mysql/tables/llx_loan_schedule-loan.key.sql @@ -0,0 +1,20 @@ +-- =================================================================== +-- Copyright (C) 2022 Laurent Destailleur +-- +-- This program is free software; you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation; either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see . +-- +-- =================================================================== + +ALTER TABLE llx_loan_schedule ADD UNIQUE INDEX uk_loan_schedule_ref (fk_loan, datep); + diff --git a/htdocs/install/mysql/tables/llx_loan_schedule-loan.sql b/htdocs/install/mysql/tables/llx_loan_schedule-loan.sql index dd68a426e61..0e3eba210a8 100644 --- a/htdocs/install/mysql/tables/llx_loan_schedule-loan.sql +++ b/htdocs/install/mysql/tables/llx_loan_schedule-loan.sql @@ -23,7 +23,7 @@ create table llx_loan_schedule fk_loan integer, datec datetime, -- creation date tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - datep datetime, -- payment date + datep datetime, -- payment date expected amount_capital double(24,8) DEFAULT 0, amount_insurance double(24,8) DEFAULT 0, amount_interest double(24,8) DEFAULT 0, diff --git a/htdocs/install/mysql/tables/llx_oauth_token.sql b/htdocs/install/mysql/tables/llx_oauth_token.sql index 62542d13401..7d33b0ea8cb 100644 --- a/htdocs/install/mysql/tables/llx_oauth_token.sql +++ b/htdocs/install/mysql/tables/llx_oauth_token.sql @@ -20,6 +20,7 @@ CREATE TABLE llx_oauth_token ( service varchar(36), -- What king of key or token: 'Google', 'Stripe', 'auth-public-key', ... token text, -- token in serialize format, of an object StdOAuth2Token of library phpoauth2. Deprecated, use tokenstring instead. tokenstring text, -- token in json or text format. Value depends on 'service'. For example for an OAUTH service: '{"access_token": "sk_test_cccc", "refresh_token": "rt_aaa", "token_type": "bearer", ..., "scope": "read_write"} + state text, -- the state (list of permission) the token was obtained for fk_soc integer, -- Id of thirdparty in llx_societe fk_user integer, -- Id of user in llx_user fk_adherent integer, -- Id of member in llx_adherent diff --git a/htdocs/install/mysql/tables/llx_partnership-partnership.sql b/htdocs/install/mysql/tables/llx_partnership-partnership.sql index 8f83e2e82e5..d023e67920e 100644 --- a/htdocs/install/mysql/tables/llx_partnership-partnership.sql +++ b/htdocs/install/mysql/tables/llx_partnership-partnership.sql @@ -28,7 +28,7 @@ CREATE TABLE llx_partnership( entity integer DEFAULT 1 NOT NULL, -- multi company id, 0 = all reason_decline_or_cancel text NULL, date_creation datetime NOT NULL, - fk_user_creat integer NOT NULL, + fk_user_creat integer NULL, -- can be null if created from public page tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, fk_user_modif integer, note_private text, @@ -37,6 +37,7 @@ CREATE TABLE llx_partnership( url_to_check varchar(255), -- url to check to find a specific keyword (defined into llx_c_partnership) to keep status of partnership valid count_last_url_check_error integer DEFAULT '0', -- last result of check of keyword into url last_check_backlink datetime NULL, -- date of last check of keyword into url + ip varchar(250), import_key varchar(14), model_pdf varchar(255) ) ENGINE=innodb; \ No newline at end of file diff --git a/htdocs/install/mysql/tables/llx_product.sql b/htdocs/install/mysql/tables/llx_product.sql index 83e8882caa7..a234ae8ddb1 100644 --- a/htdocs/install/mysql/tables/llx_product.sql +++ b/htdocs/install/mysql/tables/llx_product.sql @@ -59,6 +59,7 @@ create table llx_product tobuy tinyint DEFAULT 1, -- Product you buy onportal tinyint DEFAULT 0, -- If it is a product you sell and you want to sell it on portal (module website must be on) tobatch tinyint DEFAULT 0 NOT NULL, -- Is it a product that need a batch management (eat-by or lot management) + sell_or_eat_by_mandatory tinyint DEFAULT 0 NOT NULL, -- Make sell-by or eat-by date mandatory batch_mask varchar(32) DEFAULT NULL, -- If the product has batch feature, you may want to use a batch mask per product fk_product_type integer DEFAULT 0, -- Type of product: 0 for regular product, 1 for service, 9 for other (used by external module) duration varchar(6), diff --git a/htdocs/install/mysql/tables/llx_product_stock.sql b/htdocs/install/mysql/tables/llx_product_stock.sql index c5a2f4ad005..8132a71cdd3 100644 --- a/htdocs/install/mysql/tables/llx_product_stock.sql +++ b/htdocs/install/mysql/tables/llx_product_stock.sql @@ -16,6 +16,7 @@ -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . -- +-- See also its child table llx_product_batch that contains details per lot -- ============================================================================ create table llx_product_stock diff --git a/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature-recruitment.sql b/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature-recruitment.sql index 5749acd93d8..8d5dd3bd14f 100644 --- a/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature-recruitment.sql +++ b/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature-recruitment.sql @@ -38,6 +38,7 @@ CREATE TABLE llx_recruitment_recruitmentcandidature( remuneration_requested integer, remuneration_proposed integer, email_msgid varchar(175), -- Do not use a too large value, it generates trouble with unique index + email_date datetime, fk_recruitment_origin INTEGER NULL -- END MODULEBUILDER FIELDS ) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_societe_contacts.sql b/htdocs/install/mysql/tables/llx_societe_contacts.sql index 31d82f3003d..3f301c0cf34 100644 --- a/htdocs/install/mysql/tables/llx_societe_contacts.sql +++ b/htdocs/install/mysql/tables/llx_societe_contacts.sql @@ -13,9 +13,11 @@ -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . --- +-- -- ======================================================================== +-- This table contains the contacts by default of a thirdparty +-- Such contacts will be added to document automatiall if their role match the one expected by the document. create table llx_societe_contacts ( diff --git a/htdocs/install/mysql/tables/llx_societe_rib.sql b/htdocs/install/mysql/tables/llx_societe_rib.sql index 9ea6ccf9188..a798f6ac594 100644 --- a/htdocs/install/mysql/tables/llx_societe_rib.sql +++ b/htdocs/install/mysql/tables/llx_societe_rib.sql @@ -43,20 +43,23 @@ create table llx_societe_rib proprio varchar(60), owner_address varchar(255), default_rib smallint NOT NULL DEFAULT 0, - - -- For BAN direct debit feature + state_id integer, + fk_country integer, + currency_code varchar(3), + + -- For BAN direct debit feature rum varchar(32), -- RUM value to use for SEPA generation date_rum date, -- Date of mandate frstrecur varchar(16) default 'FRST', -- 'FRST' or 'RECUR' - + --For credit card last_four varchar(4), -- last 4 card_type varchar(255), -- card type 'VISA', 'MC' , ... - cvn varchar(255), + cvn varchar(255), exp_date_month INTEGER, exp_date_year INTEGER, country_code varchar(10), - + --For Paypal approved INTEGER DEFAULT 0, email varchar(255), @@ -65,7 +68,7 @@ create table llx_societe_rib preapproval_key varchar(255), starting_date date, total_amount_of_all_payments double(24,8), - + --For Stripe stripe_card_ref varchar(128), -- 'card_...' stripe_account varchar(128), -- 'pk_live_...' diff --git a/htdocs/install/mysql/tables/llx_ticket-ticket.sql b/htdocs/install/mysql/tables/llx_ticket-ticket.sql index d079fdf3964..278d62894bc 100644 --- a/htdocs/install/mysql/tables/llx_ticket-ticket.sql +++ b/htdocs/install/mysql/tables/llx_ticket-ticket.sql @@ -34,12 +34,14 @@ CREATE TABLE llx_ticket type_code varchar(32), category_code varchar(32), severity_code varchar(32), - datec datetime, + datec datetime, -- date of creation of record date_read datetime, date_last_msg_sent datetime, date_close datetime, notify_tiers_at_create tinyint, email_msgid varchar(255), -- if ticket is created by email collector, we store here MSG ID + email_date datetime, -- if ticket is created by email collector, we store here Date of message + ip varchar(250), tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, import_key varchar(14) )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_user.sql b/htdocs/install/mysql/tables/llx_user.sql index ae3715eb028..a47b40cb3d1 100644 --- a/htdocs/install/mysql/tables/llx_user.sql +++ b/htdocs/install/mysql/tables/llx_user.sql @@ -19,95 +19,95 @@ create table llx_user ( - rowid integer AUTO_INCREMENT PRIMARY KEY, - entity integer DEFAULT 1 NOT NULL, -- multi company id + rowid integer AUTO_INCREMENT PRIMARY KEY, + entity integer DEFAULT 1 NOT NULL, -- multi company id - ref_employee varchar(50), - ref_ext varchar(50), -- reference into an external system (not used by dolibarr) + ref_employee varchar(50), + ref_ext varchar(50), -- reference into an external system (not used by dolibarr) - admin smallint DEFAULT 0, -- user has admin profile + admin smallint DEFAULT 0, -- user has admin profile - employee tinyint DEFAULT 1, -- 1 if user is an employee - fk_establishment integer DEFAULT 0, + employee tinyint DEFAULT 1, -- 1 if user is an employee + fk_establishment integer DEFAULT 0, - datec datetime, - tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - fk_user_creat integer, - fk_user_modif integer, - login varchar(50) NOT NULL, - pass_encoding varchar(24), - pass varchar(128), - pass_crypted varchar(128), - pass_temp varchar(128), -- temporary password when asked for forget password or 'hashtoallowreset:YYYMMDDHHMMSS' (where date is max date of validity) - api_key varchar(128), -- key to use REST API by this user - gender varchar(10), - civility varchar(6), - lastname varchar(50), - firstname varchar(50), - address varchar(255), -- user personal address - zip varchar(25), -- zipcode - town varchar(50), -- town - fk_state integer DEFAULT 0, - fk_country integer DEFAULT 0, - birth date, -- birthday - job varchar(128), - office_phone varchar(20), - office_fax varchar(20), - user_mobile varchar(20), - personal_mobile varchar(20), - email varchar(255), - personal_email varchar(255), - signature text DEFAULT NULL, + datec datetime, -- date/time of creation + tms timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + fk_user_creat integer, -- user who created dataset + fk_user_modif integer, -- user who modified dataset + login varchar(50) NOT NULL, + pass_encoding varchar(24), + pass varchar(128), + pass_crypted varchar(128), + pass_temp varchar(128), -- temporary password when asked for forget password or 'hashtoallowreset:YYYMMDDHHMMSS' (where date is max date of validity) + api_key varchar(128), -- key to use REST API by this user + gender varchar(10), + civility varchar(6), + lastname varchar(50), + firstname varchar(50), + address varchar(255), -- user personal address + zip varchar(25), -- zipcode + town varchar(50), -- town + fk_state integer DEFAULT 0, + fk_country integer DEFAULT 0, + birth date, -- birthday + job varchar(128), + office_phone varchar(20), + office_fax varchar(20), + user_mobile varchar(20), + personal_mobile varchar(20), + email varchar(255), + personal_email varchar(255), + signature text DEFAULT NULL, - socialnetworks text DEFAULT NULL, -- json with socialnetworks + socialnetworks text DEFAULT NULL, -- json with socialnetworks --module_comm smallint DEFAULT 1, --module_compta smallint DEFAULT 1, - fk_soc integer NULL, -- id thirdparty if user linked to a company (external user) - fk_socpeople integer NULL, -- id contact origin if user linked to a contact - fk_member integer NULL, -- if member if suer linked to a member - fk_user integer NULL, -- Supervisor, hierarchic parent - fk_user_expense_validator integer NULL, - fk_user_holiday_validator integer NULL, + fk_soc integer NULL, -- id thirdparty if user linked to a company (external user) + fk_socpeople integer NULL, -- id contact origin if user linked to a contact + fk_member integer NULL, -- if member if user linked to a member + fk_user integer NULL, -- Supervisor, hierarchic parent + fk_user_expense_validator integer NULL, + fk_user_holiday_validator integer NULL, - idpers1 varchar(128), - idpers2 varchar(128), - idpers3 varchar(128), + idpers1 varchar(128), + idpers2 varchar(128), + idpers3 varchar(128), - note_public text, - note text DEFAULT NULL, - model_pdf varchar(255) DEFAULT NULL, - datelastlogin datetime, - datepreviouslogin datetime, - datelastpassvalidation datetime, -- last date we change password or we made a disconnect all - datestartvalidity datetime, - dateendvalidity datetime, - iplastlogin varchar(250), - ippreviouslogin varchar(250), - egroupware_id integer, - ldap_sid varchar(255) DEFAULT NULL, - openid varchar(255), - statut tinyint DEFAULT 1, - photo varchar(255), -- filename or url of photo - lang varchar(6), -- default language for communication. Note that language selected by user as interface language is savec into llx_user_param. - color varchar(6), - barcode varchar(255) DEFAULT NULL, - fk_barcode_type integer DEFAULT 0, - accountancy_code varchar(32) NULL, - nb_holiday integer DEFAULT 0, - thm double(24,8), - tjm double(24,8), + note_public text, + note text DEFAULT NULL, + model_pdf varchar(255) DEFAULT NULL, + datelastlogin datetime, + datepreviouslogin datetime, + datelastpassvalidation datetime, -- last date we change password or we made a disconnect all + datestartvalidity datetime, + dateendvalidity datetime, + iplastlogin varchar(250), + ippreviouslogin varchar(250), + egroupware_id integer, + ldap_sid varchar(255) DEFAULT NULL, + openid varchar(255), + statut tinyint DEFAULT 1, + photo varchar(255), -- filename or url of photo + lang varchar(6), -- default language for communication. Note that language selected by user as interface language is savec into llx_user_param. + color varchar(6), + barcode varchar(255) DEFAULT NULL, + fk_barcode_type integer DEFAULT 0, + accountancy_code varchar(32) NULL, + nb_holiday integer DEFAULT 0, + thm double(24,8), + tjm double(24,8), - salary double(24,8), -- denormalized value coming from llx_user_employment - salaryextra double(24,8), -- denormalized value coming from llx_user_employment - dateemployment date, -- denormalized value coming from llx_user_employment - dateemploymentend date, -- denormalized value coming from llx_user_employment - weeklyhours double(16,8), -- denormalized value coming from llx_user_employment + salary double(24,8), -- denormalized value coming from llx_user_employment + salaryextra double(24,8), -- denormalized value coming from llx_user_employment + dateemployment date, -- denormalized value coming from llx_user_employment + dateemploymentend date, -- denormalized value coming from llx_user_employment + weeklyhours double(16,8), -- denormalized value coming from llx_user_employment - import_key varchar(14), -- import key - default_range integer, - default_c_exp_tax_cat integer, + import_key varchar(14), -- import key + default_range integer, + default_c_exp_tax_cat integer, national_registration_number varchar(50), - fk_warehouse integer -- default warehouse os user + fk_warehouse integer -- default warehouse of user )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_user_rib.sql b/htdocs/install/mysql/tables/llx_user_rib.sql index 4463a1f6f2b..c98e447a75e 100644 --- a/htdocs/install/mysql/tables/llx_user_rib.sql +++ b/htdocs/install/mysql/tables/llx_user_rib.sql @@ -33,5 +33,8 @@ create table llx_user_rib iban_prefix varchar(34), -- full iban. 34 according to ISO 13616 domiciliation varchar(255), proprio varchar(60), - owner_address varchar(255) + owner_address varchar(255), + state_id integer, + fk_country integer, + currency_code varchar(3) )ENGINE=innodb; diff --git a/htdocs/install/step1.php b/htdocs/install/step1.php index 9613e1a86b5..7235e564275 100644 --- a/htdocs/install/step1.php +++ b/htdocs/install/step1.php @@ -911,6 +911,8 @@ function write_conf_file($conffile) fputs($fp, '$dolibarr_mailing_limit_sendbyweb=\'0\';'); fputs($fp, "\n"); + fputs($fp, '$dolibarr_mailing_limit_sendbycli=\'0\';'); + fputs($fp, "\n"); // Write params to overwrites default lib path fputs($fp, "\n"); diff --git a/htdocs/install/step2.php b/htdocs/install/step2.php index fac191feec5..4569f917dec 100644 --- a/htdocs/install/step2.php +++ b/htdocs/install/step2.php @@ -147,10 +147,10 @@ if ($action == "set") { // To disable some code, so you can call step2 with url like // http://localhost/dolibarrnew/install/step2.php?action=set&token='.newToken().'&createtables=0&createkeys=0&createfunctions=0&createdata=llx_20_c_departements - $createtables = isset($_GET['createtables']) ?GETPOST('createtables') : 1; - $createkeys = isset($_GET['createkeys']) ?GETPOST('createkeys') : 1; - $createfunctions = isset($_GET['createfunctions']) ?GETPOST('createfunction') : 1; - $createdata = isset($_GET['createdata']) ?GETPOST('createdata') : 1; + $createtables = GETPOSTISSET('createtables') ? GETPOST('createtables') : 1; + $createkeys = GETPOSTISSET('createkeys') ? GETPOST('createkeys') : 1; + $createfunctions = GETPOSTISSET('createfunctions') ? GETPOST('createfunction') : 1; + $createdata = GETPOSTISSET('createdata') ? GETPOST('createdata') : 1; // To say sql requests are escaped for mysql so we need to unescape them diff --git a/htdocs/install/step4.php b/htdocs/install/step4.php index c8be975c19f..1b179cf98ab 100644 --- a/htdocs/install/step4.php +++ b/htdocs/install/step4.php @@ -80,10 +80,10 @@ $db = getDoliDBInstance($conf->db->type, $conf->db->host, $conf->db->user, $conf if ($db->ok) { print '
'; + print ''; print ''; - print ''; print '
'.$langs->trans("Income").''.price(price2num($total_ht_income, 'MT')).''.price(price2num($total_ttc_income, 'MT')).'
'.$langs->trans("Outcome").''.price(price2num(-$total_ht_outcome, 'MT')).''.price(price2num(-$total_ttc_outcome, 'MT')).'
'.$langs->trans("Profit").''.price(price2num($total_ht, 'MT')).''.price(price2num($total_ttc, 'MT')).'
'.$langs->trans('DefaultBankAccount').''; print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes(GETPOST('fk_account', 'int'), 'fk_account', 0, '', 2, '', 0, '', 1); print '
'; print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -726,7 +726,7 @@ if ($id > 0) { print '\n"; $labeltype = $langs->trans("PaymentType".$objp->type_code) != ("PaymentType".$objp->type_code) ? $langs->trans("PaymentType".$objp->type_code) : $objp->paiement_type; print "\n"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; diff --git a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php index 318e7fcd96b..0bf402c6c21 100644 --- a/htdocs/compta/sociales/class/paymentsocialcontribution.class.php +++ b/htdocs/compta/sociales/class/paymentsocialcontribution.class.php @@ -552,7 +552,7 @@ class PaymentSocialContribution extends CommonObject $error = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); diff --git a/htdocs/compta/sociales/list.php b/htdocs/compta/sociales/list.php index 14b8bfa043f..80b231ac381 100644 --- a/htdocs/compta/sociales/list.php +++ b/htdocs/compta/sociales/list.php @@ -107,7 +107,7 @@ $arrayfields = array( 'cs.paye' =>array('label'=>"Status", 'checked'=>1, 'position'=>110), ); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { $arrayfields['cs.fk_account'] = array('checked'=>-1, 'position'=>90, 'label'=>"DefaultBankAccount"); } diff --git a/htdocs/compta/sociales/payments.php b/htdocs/compta/sociales/payments.php index 843dbd58a50..7d59f16cd24 100644 --- a/htdocs/compta/sociales/payments.php +++ b/htdocs/compta/sociales/payments.php @@ -225,7 +225,7 @@ print ''; print ''; print ''; print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print ''; print ''; } @@ -245,7 +245,7 @@ print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "pc.datep", "", $pa print_liste_field_titre("Employee", $_SERVER["PHP_SELF"], "u.rowid", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("PaymentMode", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Numero", $_SERVER["PHP_SELF"], "pc.num_paiement", "", $param, '', $sortfield, $sortorder, '', 'ChequeOrTransferNumber'); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print_liste_field_titre("BankTransactionLine", $_SERVER["PHP_SELF"], "pc.fk_bank", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Account", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); } @@ -323,7 +323,7 @@ while ($i < min($num, $limit)) { print ''; // Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Bank transaction print ''; print ''; print ''; print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print ''; print ''; } diff --git a/htdocs/compta/stats/byratecountry.php b/htdocs/compta/stats/byratecountry.php index afc56532fdf..e188cdae859 100644 --- a/htdocs/compta/stats/byratecountry.php +++ b/htdocs/compta/stats/byratecountry.php @@ -1,6 +1,7 @@ * Copyright (C) 2018-2021 Frédéric France + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -54,7 +55,9 @@ if (empty($year)) { } $date_start = dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear"), 'tzserver'); // We use timezone of server so report is same from everywhere $date_end = dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear"), 'tzserver'); // We use timezone of server so report is same from everywhere + // Quarter +$q = ''; if (empty($date_start) || empty($date_end)) { // We define date_start and date_end $q = GETPOST("q", "int"); if (empty($q)) { @@ -155,10 +158,12 @@ foreach ($listofparams as $param) { llxHeader('', $langs->trans("TurnoverReport"), '', '', 0, 0, '', '', $morequerystring); - +$exportlink=""; +$namelink=""; //print load_fiche_titre($langs->trans("VAT"),""); //$fsearch.='
'; +$fsearch = ''; $fsearch .= ' '; $fsearch .= ' '; //$fsearch.=' '.$langs->trans("SalesTurnoverMinimum").': '; @@ -198,14 +203,17 @@ if ($nextquarter < 4) { $nextquarter = 1; $nextyear++; } -$description .= $fsearch; +$description = $fsearch; $builddate = dol_now(); +if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) { + $description .= '
'.$langs->trans("ThisIsAnEstimatedValue"); +} if ($conf->global->TAX_MODE_SELL_PRODUCT == 'invoice') { - $description .= $langs->trans("RulesVATDueProducts"); + $description .= '
'.$langs->trans("RulesVATDueProducts"); } if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment') { - $description .= $langs->trans("RulesVATInProducts"); + $description .= '
'.$langs->trans("RulesVATInProducts"); } if ($conf->global->TAX_MODE_SELL_SERVICE == 'invoice') { $description .= '
'.$langs->trans("RulesVATDueServices"); @@ -216,9 +224,6 @@ if ($conf->global->TAX_MODE_SELL_SERVICE == 'payment') { if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { $description .= '
'.$langs->trans("DepositsAreNotIncluded"); } -if (!empty($conf->global->MAIN_MODULE_ACCOUNTING)) { - $description .= '
'.$langs->trans("ThisIsAnEstimatedValue"); -} // Customers invoices $elementcust = $langs->trans("CustomersInvoices"); @@ -229,9 +234,6 @@ $amountcust = $langs->trans("AmountHT"); $elementsup = $langs->trans("SuppliersInvoices"); $productsup = $productcust; $amountsup = $amountcust; -$namesup = $namecust; - - // TODO Report from bookkeeping not yet available, so we switch on report on business events if ($modecompta == "BOOKKEEPING") { @@ -247,7 +249,7 @@ if ($modecompta == "CREANCES-DETTES") { $calcmode = $langs->trans("CalcModeDebt"); //$calcmode.='
('.$langs->trans("SeeReportInInputOutputMode",'','').')'; - $description = $langs->trans("RulesCADue"); + $description .= '
'.$langs->trans("RulesCADue"); if (!empty($conf->global->FACTURE_DEPOSITS_ARE_JUST_PAYMENTS)) { $description .= $langs->trans("DepositsAreNotIncluded"); } else { @@ -260,7 +262,7 @@ if ($modecompta == "CREANCES-DETTES") { $calcmode = $langs->trans("CalcModeEngagement"); //$calcmode.='
('.$langs->trans("SeeReportInDueDebtMode",'','').')'; - $description = $langs->trans("RulesCAIn"); + $description .= $langs->trans("RulesCAIn"); $description .= $langs->trans("DepositsAreIncluded"); $builddate = dol_now(); diff --git a/htdocs/compta/stats/cabyprodserv.php b/htdocs/compta/stats/cabyprodserv.php index e201d403bf4..6b4f8f3e9f2 100644 --- a/htdocs/compta/stats/cabyprodserv.php +++ b/htdocs/compta/stats/cabyprodserv.php @@ -3,6 +3,7 @@ * Copyright (C) 2013-2016 Laurent Destailleur * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2018 Frédéric France + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -186,7 +187,9 @@ if (!empty($year)) { if (!empty($month)) { $headerparams['month'] = $month; } -$headerparams['q'] = $q; +if (!empty($q)) { + $headerparams['q'] = $q; +} $tableparams = array(); if (!empty($selected_cat)) { @@ -205,6 +208,7 @@ $allparams = array_merge($commonparams, $headerparams, $tableparams); $headerparams = array_merge($commonparams, $headerparams); $tableparams = array_merge($commonparams, $tableparams); +$paramslink=""; foreach ($allparams as $key => $value) { $paramslink .= '&'.$key.'='.$value; } @@ -227,6 +231,9 @@ if ($modecompta == "BOOKKEEPINGCOLLECTED") { $modecompta = "RECETTES-DEPENSES"; } +$exportlink=""; +$namelink=""; + // Show report header if ($modecompta == "CREANCES-DETTES") { $name = $langs->trans("Turnover").', '.$langs->trans("ByProductsAndServices"); diff --git a/htdocs/compta/stats/cabyuser.php b/htdocs/compta/stats/cabyuser.php index 2b8f40b3aba..b1d5851ca4a 100644 --- a/htdocs/compta/stats/cabyuser.php +++ b/htdocs/compta/stats/cabyuser.php @@ -4,6 +4,7 @@ * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2013 Antoine Iauch * Copyright (C) 2018 Frédéric France + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -135,23 +136,36 @@ $commonparams['sortorder'] = $sortorder; $commonparams['sortfield'] = $sortfield; $headerparams = array(); -$headerparams['date_startyear'] = $date_startyear; -$headerparams['date_startmonth'] = $date_startmonth; -$headerparams['date_startday'] = $date_startday; -$headerparams['date_endyear'] = $date_endyear; -$headerparams['date_endmonth'] = $date_endmonth; -$headerparams['date_endday'] = $date_endday; -$headerparams['q'] = $q; +if (!empty($date_startyear)) { + $headerparams['date_startyear'] = $date_startyear; +} +if (!empty($date_startmonth)) { + $headerparams['date_startmonth'] = $date_startmonth; +} +if (!empty($date_startday)) { + $headerparams['date_startday'] = $date_startday; +} +if (!empty($date_endyear)) { + $headerparams['date_endyear'] = $date_endyear; +} +if (!empty($date_endmonth)) { + $headerparams['date_endmonth'] = $date_endmonth; +} +if (!empty($date_endday)) { + $headerparams['date_endday'] = $date_endday; +} +if (!empty($q)) { + $headerparams['q'] = $q; +} $tableparams = array(); -$tableparams['search_categ'] = $selected_cat; -$tableparams['subcat'] = ($subcat === true) ? 'yes' : ''; // Adding common parameters $allparams = array_merge($commonparams, $headerparams, $tableparams); $headerparams = array_merge($commonparams, $headerparams); $tableparams = array_merge($commonparams, $tableparams); +$paramslink=""; foreach ($allparams as $key => $value) { $paramslink .= '&'.$key.'='.$value; } @@ -172,6 +186,9 @@ if ($modecompta == "BOOKKEEPINGCOLLECTED") { $modecompta = "RECETTES-DEPENSES"; } +$exportlink=""; +$namelink=""; + // Show report header if ($modecompta == "CREANCES-DETTES") { $name = $langs->trans("Turnover").', '.$langs->trans("ByUserAuthorOfInvoice"); @@ -230,6 +247,8 @@ foreach ($headerparams as $key => $value) { } $catotal = 0; +$catotal_ht = 0; + if ($modecompta == 'CREANCES-DETTES') { $sql = "SELECT u.rowid as rowid, u.lastname as name, u.firstname as firstname, sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; @@ -245,8 +264,8 @@ if ($modecompta == 'CREANCES-DETTES') { } } elseif ($modecompta == "RECETTES-DEPENSES") { /* - * Liste des paiements (les anciens paiements ne sont pas vus par cette requete car, sur les - * vieilles versions, ils n'etaient pas lies via paiement_facture. On les ajoute plus loin) + * List of payments (old payments are not seen by this query because on older versions, + * they were not linked via the table llx_paiement_facture. They are added later) */ $sql = "SELECT u.rowid as rowid, u.lastname as name, u.firstname as firstname, sum(pf.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; @@ -287,7 +306,7 @@ if ($result) { dol_print_error($db); } -// Adding old-version payments, non-bound by "paiement_facture" then without User +// Adding old-version payments, non-bound by table llx_paiement_facture then without User if ($modecompta == 'RECETTES-DEPENSES') { $sql = "SELECT -1 as rowidx, '' as name, '' as firstname, sum(DISTINCT p.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -478,7 +497,7 @@ if (count($amount)) { // Other stats print '
",i.document[0]).appendTo(t)):"tr"===n?i._createTrPlaceholder(i.currentItem,t):"img"===n&&t.attr("src",i.currentItem.attr("src")),s||t.css("visibility","hidden"),t},update:function(t,e){s&&!o.forcePlaceholderSize||(e.height()&&(!o.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||e.height(i.currentItem.innerHeight()-parseInt(i.currentItem.css("paddingTop")||0,10)-parseInt(i.currentItem.css("paddingBottom")||0,10)),e.width()||e.width(i.currentItem.innerWidth()-parseInt(i.currentItem.css("paddingLeft")||0,10)-parseInt(i.currentItem.css("paddingRight")||0,10)))}}),i.placeholder=V(o.placeholder.element.call(i.element,i.currentItem)),i.currentItem.after(i.placeholder),o.placeholder.update(i,i.placeholder)},_createTrPlaceholder:function(t,e){var i=this;t.children().each(function(){V("",i.document[0]).attr("colspan",V(this).attr("colspan")||1).appendTo(e)})},_contactContainers:function(t){for(var e,i,s,n,o,a,r,l,h,c=null,u=null,d=this.containers.length-1;0<=d;d--)V.contains(this.currentItem[0],this.containers[d].element[0])||(this._intersectsWith(this.containers[d].containerCache)?c&&V.contains(this.containers[d].element[0],c.element[0])||(c=this.containers[d],u=d):this.containers[d].containerCache.over&&(this.containers[d]._trigger("out",t,this._uiHash(this)),this.containers[d].containerCache.over=0));if(c)if(1===this.containers.length)this.containers[u].containerCache.over||(this.containers[u]._trigger("over",t,this._uiHash(this)),this.containers[u].containerCache.over=1);else{for(i=1e4,s=null,n=(l=c.floating||this._isFloating(this.currentItem))?"left":"top",o=l?"width":"height",h=l?"pageX":"pageY",e=this.items.length-1;0<=e;e--)V.contains(this.containers[u].element[0],this.items[e].item[0])&&this.items[e].item[0]!==this.currentItem[0]&&(a=this.items[e].item.offset()[n],r=!1,t[h]-a>this.items[e][o]/2&&(r=!0),Math.abs(t[h]-a)this.containment[2]&&(i=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),e.grid&&(t=this.originalPageY+Math.round((s-this.originalPageY)/e.grid[1])*e.grid[1],s=!this.containment||t-this.offset.click.top>=this.containment[1]&&t-this.offset.click.top<=this.containment[3]?t:t-this.offset.click.top>=this.containment[1]?t-e.grid[1]:t+e.grid[1],t=this.originalPageX+Math.round((i-this.originalPageX)/e.grid[0])*e.grid[0],i=!this.containment||t-this.offset.click.left>=this.containment[0]&&t-this.offset.click.left<=this.containment[2]?t:t-this.offset.click.left>=this.containment[0]?t-e.grid[0]:t+e.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop()),left:i-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){this.reverting=!1;var i,s=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function n(e,i,s){return function(t){s._trigger(e,t,i._uiHash(i))}}for(this.fromOutside&&!e&&s.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||s.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(s.push(function(t){this._trigger("remove",t,this._uiHash())}),s.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),s.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||s.push(n("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(s.push(n("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var s=this._super(),n=this.element;return V.each(["min","max","step"],function(t,e){var i=n.attr(e);null!=i&&i.length&&(s[e]=i)}),s},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(t,e){var i=V.ui.safeActiveElement(this.document[0]);if(this.element[0]===i&&e){if(!this.spinning&&!this._start(t))return!1;this._spin((0").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0e.max?e.max:null!==e.min&&t"},_buttonHtml:function(){return""}});var ct;V.ui.spinner;V.widget("ui.tabs",{version:"1.13.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(ct=/#.*$/,function(t){var e=t.href.replace(ct,""),i=location.href.replace(ct,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,e=this.tablist.children(":has(a[href])");t.disabled=V.map(e.filter(".ui-state-disabled"),function(t){return e.index(t)}),this._processTabs(),!1!==t.active&&this.anchors.length?this.active.length&&!V.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=V()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active):(t.active=!1,this.active=V()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var l=this,t=this.tabs,e=this.anchors,i=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(t){V(this).is(".ui-state-disabled")&&t.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){V(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return V("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=V(),this.anchors.each(function(t,e){var i,s,n,o=V(e).uniqueId().attr("id"),a=V(e).closest("li"),r=a.attr("aria-controls");l._isLocal(e)?(n=(i=e.hash).substring(1),s=l.element.find(l._sanitizeSelector(i))):(n=a.attr("aria-controls")||V({}).uniqueId()[0].id,(s=l.element.find(i="#"+n)).length||(s=l._createPanel(n)).insertAfter(l.panels[t-1]||l.tablist),s.attr("aria-live","polite")),s.length&&(l.panels=l.panels.add(s)),r&&a.data("ui-tabs-aria-controls",r),a.attr({"aria-controls":n,"aria-labelledby":o}),s.attr("aria-labelledby",o)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),t&&(this._off(t.not(this.tabs)),this._off(e.not(this.anchors)),this._off(i.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(t){return V("
").attr("id",t).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(t){var e,i;for(Array.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1),i=0;e=this.tabs[i];i++)e=V(e),!0===t||-1!==V.inArray(i,t)?(e.attr("aria-disabled","true"),this._addClass(e,null,"ui-state-disabled")):(e.removeAttr("aria-disabled"),this._removeClass(e,null,"ui-state-disabled"));this.options.disabled=t,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===t)},_setupEvents:function(t){var i={};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var i,e=this.element.parent();"fill"===t?(i=e.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=V(this).outerHeight(!0)}),this.panels.each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===t&&(i=0,this.panels.each(function(){i=Math.max(i,V(this).height("").height())}).height(i))},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget).closest("li"),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():this._getPanelForTab(s),r=i.length?this._getPanelForTab(i):V(),i={oldTab:i,oldPanel:r,newTab:o?V():s,newPanel:a};t.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||n&&!e.collapsible||!1===this._trigger("beforeActivate",t,i)||(e.active=!o&&this.tabs.index(s),this.active=n?V():s,this.xhr&&this.xhr.abort(),r.length||a.length||V.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,i))},_toggle:function(t,e){var i=this,s=e.newPanel,n=e.oldPanel;function o(){i.running=!1,i._trigger("activate",t,e)}function a(){i._addClass(e.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&i.options.show?i._show(s,i.options.show,o):(s.show(),o())}this.running=!0,n.length&&this.options.hide?this._hide(n,this.options.hide,function(){i._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(e.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n.hide(),a()),n.attr("aria-hidden","true"),e.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&n.length?e.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===V(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),e.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(t){var t=this._findActive(t);t[0]!==this.active[0]&&(t=(t=!t.length?this.active:t).find(".ui-tabs-anchor")[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return!1===t?V():this.tabs.eq(t)},_getIndex:function(t){return t="string"==typeof t?this.anchors.index(this.anchors.filter("[href$='"+V.escapeSelector(t)+"']")):t},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){V.data(this,"ui-tabs-destroy")?V(this).remove():V(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var t=V(this),e=t.data("ui-tabs-aria-controls");e?t.attr("aria-controls",e).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(i){var t=this.options.disabled;!1!==t&&(t=void 0!==i&&(i=this._getIndex(i),Array.isArray(t)?V.map(t,function(t){return t!==i?t:null}):V.map(this.tabs,function(t,e){return e!==i?e:null})),this._setOptionDisabled(t))},disable:function(t){var e=this.options.disabled;if(!0!==e){if(void 0===t)e=!0;else{if(t=this._getIndex(t),-1!==V.inArray(t,e))return;e=Array.isArray(e)?V.merge([t],e).sort():[t]}this._setOptionDisabled(e)}},load:function(t,s){t=this._getIndex(t);function n(t,e){"abort"===e&&o.panels.stop(!1,!0),o._removeClass(i,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===o.xhr&&delete o.xhr}var o=this,i=this.tabs.eq(t),t=i.find(".ui-tabs-anchor"),a=this._getPanelForTab(i),r={tab:i,panel:a};this._isLocal(t[0])||(this.xhr=V.ajax(this._ajaxSettings(t,s,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(i,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,i){setTimeout(function(){a.html(t),o._trigger("load",s,r),n(i,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(t,i,s){var n=this;return{url:t.attr("href").replace(/#.*$/,""),beforeSend:function(t,e){return n._trigger("beforeLoad",i,V.extend({jqXHR:t,ajaxSettings:e},s))}}},_getPanelForTab:function(t){t=V(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+t))}}),!1!==V.uiBackCompat&&V.widget("ui.tabs",V.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}});V.ui.tabs;V.widget("ui.tooltip",{version:"1.13.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var t=V(this).attr("title");return V("").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(t){var e=t.data("ui-tooltip-id"),i=(t.attr("aria-describedby")||"").split(/\s+/),e=V.inArray(e,i);-1!==e&&i.splice(e,1),t.removeData("ui-tooltip-id"),(i=String.prototype.trim.call(i.join(" ")))?t.attr("aria-describedby",i):t.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=V("
").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=V([])},_setOption:function(t,e){var i=this;this._super(t,e),"content"===t&&V.each(this.tooltips,function(t,e){i._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur");i.target=i.currentTarget=e.element[0],s.close(i,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var t=V(this);if(t.is("[title]"))return t.data("ui-tooltip-title",t.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var t=V(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))}),this.disabledTitles=V([])},open:function(t){var i=this,e=V(t?t.target:this.element).closest(this.options.items);e.length&&!e.data("ui-tooltip-id")&&(e.attr("title")&&e.data("ui-tooltip-title",e.attr("title")),e.data("ui-tooltip-open",!0),t&&"mouseover"===t.type&&e.parents().each(function(){var t,e=V(this);e.data("ui-tooltip-open")&&((t=V.Event("blur")).target=t.currentTarget=this,i.close(t,!0)),e.attr("title")&&(e.uniqueId(),i.parents[this.id]={element:this,title:e.attr("title")},e.attr("title",""))}),this._registerCloseHandlers(t,e),this._updateContent(e,t))},_updateContent:function(e,i){var t=this.options.content,s=this,n=i?i.type:null;if("string"==typeof t||t.nodeType||t.jquery)return this._open(i,e,t);(t=t.call(e[0],function(t){s._delay(function(){e.data("ui-tooltip-open")&&(i&&(i.type=n),this._open(i,e,t))})}))&&this._open(i,e,t)},_open:function(t,e,i){var s,n,o,a=V.extend({},this.options.position);function r(t){a.of=t,n.is(":hidden")||n.position(a)}i&&((s=this._find(e))?s.tooltip.find(".ui-tooltip-content").html(i):(e.is("[title]")&&(t&&"mouseover"===t.type?e.attr("title",""):e.removeAttr("title")),s=this._tooltip(e),n=s.tooltip,this._addDescribedBy(e,n.attr("id")),n.find(".ui-tooltip-content").html(i),this.liveRegion.children().hide(),(i=V("
").html(n.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),i.removeAttr("id").find("[id]").removeAttr("id"),i.appendTo(this.liveRegion),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:r}),r(t)):n.position(V.extend({of:e},this.options.position)),n.hide(),this._show(n,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(o=this.delayedShow=setInterval(function(){n.is(":visible")&&(r(a.of),clearInterval(o))},13)),this._trigger("open",t,{tooltip:n})))},_registerCloseHandlers:function(t,e){var i={keyup:function(t){t.keyCode===V.ui.keyCode.ESCAPE&&((t=V.Event(t)).currentTarget=e[0],this.close(t,!0))}};e[0]!==this.element[0]&&(i.remove=function(){var t=this._find(e);t&&this._removeTooltip(t.tooltip)}),t&&"mouseover"!==t.type||(i.mouseleave="close"),t&&"focusin"!==t.type||(i.focusout="close"),this._on(!0,e,i)},close:function(t){var e,i=this,s=V(t?t.currentTarget:this.element),n=this._find(s);n?(e=n.tooltip,n.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),n.hiding=!0,e.stop(!0),this._hide(e,this.options.hide,function(){i._removeTooltip(V(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),t&&"mouseleave"===t.type&&V.each(this.parents,function(t,e){V(e.element).attr("title",e.title),delete i.parents[t]}),n.closing=!0,this._trigger("close",t,{tooltip:e}),n.hiding||(n.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(t){var e=V("
").attr("role","tooltip"),i=V("
").appendTo(e),s=e.uniqueId().attr("id");return this._addClass(i,"ui-tooltip-content"),this._addClass(e,"ui-tooltip","ui-widget ui-widget-content"),e.appendTo(this._appendTo(t)),this.tooltips[s]={element:t,tooltip:e}},_find:function(t){t=t.data("ui-tooltip-id");return t?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){t=t.closest(".ui-front, dialog");return t=!t.length?this.document[0].body:t},_destroy:function(){var s=this;V.each(this.tooltips,function(t,e){var i=V.Event("blur"),e=e.element;i.target=i.currentTarget=e[0],s.close(i,!0),V("#"+t).remove(),e.data("ui-tooltip-title")&&(e.attr("title")||e.attr("title",e.data("ui-tooltip-title")),e.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==V.uiBackCompat&&V.widget("ui.tooltip",V.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}});V.ui.tooltip}); \ No newline at end of file +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(V){"use strict";V.ui=V.ui||{};V.ui.version="1.13.2";var n,i=0,a=Array.prototype.hasOwnProperty,r=Array.prototype.slice;V.cleanData=(n=V.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=V._data(i,"events"))&&e.remove&&V(i).triggerHandler("remove");n(t)}),V.widget=function(t,i,e){var s,n,o,a={},r=t.split(".")[0],l=r+"-"+(t=t.split(".")[1]);return e||(e=i,i=V.Widget),Array.isArray(e)&&(e=V.extend.apply(null,[{}].concat(e))),V.expr.pseudos[l.toLowerCase()]=function(t){return!!V.data(t,l)},V[r]=V[r]||{},s=V[r][t],n=V[r][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},V.extend(n,s,{version:e.version,_proto:V.extend({},e),_childConstructors:[]}),(o=new i).options=V.widget.extend({},o.options),V.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}a[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=V.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:n,namespace:r,widgetName:t,widgetFullName:l}),s?(V.each(s._childConstructors,function(t,e){var i=e.prototype;V.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),V.widget.bridge(t,n),n},V.widget.extend=function(t){for(var e,i,s=r.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=V(e||this.defaultElement||this)[0],this.element=V(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=V(),this.hoverable=V(),this.focusable=V(),this.classesElementLookup={},e!==this&&(V.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=V(e.style?e.ownerDocument:e.document||e),this.window=V(this.document[0].defaultView||this.document[0].parentWindow)),this.options=V.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:V.noop,_create:V.noop,_init:V.noop,destroy:function(){var i=this;this._destroy(),V.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:V.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return V.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=V.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.2",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0
");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g
").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
'; print $langs->trans('DefaultBankAccount'); @@ -668,7 +668,7 @@ if ($id > 0) { print '
'; $nbcols = 3; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbcols++; } @@ -703,7 +703,7 @@ if ($id > 0) { print '
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans('BankAccount').''.$langs->trans("Amount").''.dol_print_date($db->jdate($objp->dp), 'day')."".$labeltype.' '.$objp->num_payment."'.$obj->num_payment.''; $accountlinestatic->id = $obj->fk_bank; @@ -379,7 +379,7 @@ print '    '; - if (!empty($conf->propal->enabled) && $key > 0) { + if (isModEnabled("propal") && $key > 0) { print ' '.img_picto($langs->trans("ProposalStats"), "stats").' '; } if (!empty($conf->commande->enabled) && $key > 0) { diff --git a/htdocs/compta/stats/casoc.php b/htdocs/compta/stats/casoc.php index 320efa36ed6..466b0307df6 100644 --- a/htdocs/compta/stats/casoc.php +++ b/htdocs/compta/stats/casoc.php @@ -6,6 +6,7 @@ * Copyright (C) 2013 Antoine Iauch * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2018 Frédéric France + * Copyright (C) 2022 Alexandre Spangaro * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -158,13 +159,27 @@ $commonparams['sortorder'] = $sortorder; $commonparams['sortfield'] = $sortfield; $headerparams = array(); -$headerparams['date_startyear'] = $date_startyear; -$headerparams['date_startmonth'] = $date_startmonth; -$headerparams['date_startday'] = $date_startday; -$headerparams['date_endyear'] = $date_endyear; -$headerparams['date_endmonth'] = $date_endmonth; -$headerparams['date_endday'] = $date_endday; -$headerparams['q'] = $q; +if (!empty($date_startyear)) { + $headerparams['date_startyear'] = $date_startyear; +} +if (!empty($date_startmonth)) { + $headerparams['date_startmonth'] = $date_startmonth; +} +if (!empty($date_startday)) { + $headerparams['date_startday'] = $date_startday; +} +if (!empty($date_endyear)) { + $headerparams['date_endyear'] = $date_endyear; +} +if (!empty($date_endmonth)) { + $headerparams['date_endmonth'] = $date_endmonth; +} +if (!empty($date_endday)) { + $headerparams['date_endday'] = $date_endday; +} +if (!empty($q)) { + $headerparams['q'] = $q; +} $tableparams = array(); $tableparams['search_categ'] = $selected_cat; @@ -250,8 +265,10 @@ $name = array(); // Show Array $catotal = 0; +$catotal_ht = 0; + if ($modecompta == 'CREANCES-DETTES') { - $sql = "SELECT DISTINCT s.rowid as socid, s.nom as name, s.zip, s.town, s.fk_pays,"; + $sql = "SELECT DISTINCT s.rowid as socid, s.nom as name, s.name_alias, s.zip, s.town, s.fk_pays,"; $sql .= " sum(f.total_ht) as amount, sum(f.total_ttc) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s"; if ($selected_cat === -2) { // Without any category @@ -281,10 +298,10 @@ if ($modecompta == 'CREANCES-DETTES') { } } elseif ($modecompta == "RECETTES-DEPENSES") { /* - * Liste des paiements (les anciens paiements ne sont pas vus par cette requete car, sur les - * vieilles versions, ils n'etaient pas lies via paiement_facture. On les ajoute plus loin) + * List of payments (old payments are not seen by this query because on older versions, + * they were not linked via the table llx_paiement_facture. They are added later) */ - $sql = "SELECT s.rowid as socid, s.nom as name, s.zip, s.town, s.fk_pays, sum(pf.amount) as amount_ttc"; + $sql = "SELECT s.rowid as socid, s.nom as name, s.name_alias, s.zip, s.town, s.fk_pays, sum(pf.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f"; $sql .= ", ".MAIN_DB_PREFIX."paiement_facture as pf"; $sql .= ", ".MAIN_DB_PREFIX."paiement as p"; @@ -329,7 +346,7 @@ $sql .= " AND f.entity IN (".getEntity('invoice').")"; if ($socid) { $sql .= " AND f.fk_soc = ".((int) $socid); } -$sql .= " GROUP BY s.rowid, s.nom, s.zip, s.town, s.fk_pays"; +$sql .= " GROUP BY s.rowid, s.nom, s.name_alias, s.zip, s.town, s.fk_pays"; $sql .= " ORDER BY s.rowid"; //echo $sql; @@ -344,7 +361,11 @@ if ($result) { $obj = $db->fetch_object($result); $amount_ht[$obj->socid] = $obj->amount; $amount[$obj->socid] = $obj->amount_ttc; - $name[$obj->socid] = $obj->name.' '.$obj->firstname; + $fullname = $obj->name; + if (!empty($obj->name_alias)) { + $fullname .= ' ('.$obj->name_alias.')'; + } + $name[$obj->socid] = $fullname; $address_zip[$obj->socid] = $obj->zip; $address_town[$obj->socid] = $obj->town; $address_pays[$obj->socid] = getCountry($obj->fk_pays); @@ -356,7 +377,7 @@ if ($result) { dol_print_error($db); } -// On ajoute les paiements anciennes version, non lies par paiement_facture +// We add the old versions of payments, not linked by table llx_paiement_facture if ($modecompta == "RECETTES-DEPENSES") { $sql = "SELECT '0' as socid, 'Autres' as name, sum(p.amount) as amount_ttc"; $sql .= " FROM ".MAIN_DB_PREFIX."bank as b"; @@ -409,7 +430,7 @@ print ''; -print ''; print ''; print ''; @@ -652,7 +673,7 @@ if (count($amount)) { // Other stats print ''; diff --git a/htdocs/compta/tva/card.php b/htdocs/compta/tva/card.php index e40b9b9b409..b4f16f0e564 100644 --- a/htdocs/compta/tva/card.php +++ b/htdocs/compta/tva/card.php @@ -494,7 +494,7 @@ if ($action == 'create') { print "\n"; print ""; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Bank account print ''; // Bank account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -128,7 +128,7 @@ class mod_bom_advanced extends ModeleNumRefboms require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->BOM_ADVANCED_MASK; + $mask = getDolGlobalString('BOM_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php index 86e43a9c021..b9ff88c4fe6 100644 --- a/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php +++ b/htdocs/core/modules/commande/doc/doc_generic_order_odt.modules.php @@ -280,7 +280,7 @@ class doc_generic_order_odt extends ModelePDFCommandes $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -289,11 +289,11 @@ class doc_generic_order_odt extends ModelePDFCommandes if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -301,8 +301,8 @@ class doc_generic_order_odt extends ModelePDFCommandes dol_mkdir($conf->commande->dir_temp); if (!is_writable($conf->commande->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->commande->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->commande->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php b/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php index 9050e1accf5..df584348e5e 100644 --- a/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php +++ b/htdocs/core/modules/contract/doc/doc_generic_contract_odt.modules.php @@ -266,7 +266,7 @@ class doc_generic_contract_odt extends ModelePDFContract $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -275,11 +275,11 @@ class doc_generic_contract_odt extends ModelePDFContract if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -287,8 +287,8 @@ class doc_generic_contract_odt extends ModelePDFContract dol_mkdir($conf->contrat->dir_temp); if (!is_writable($conf->contrat->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->contrat->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->contrat->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php index f2035c89575..8d6e980bdc5 100644 --- a/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php +++ b/htdocs/core/modules/expedition/doc/doc_generic_shipment_odt.modules.php @@ -278,7 +278,7 @@ class doc_generic_shipment_odt extends ModelePdfExpedition $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -287,11 +287,11 @@ class doc_generic_shipment_odt extends ModelePdfExpedition if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -299,8 +299,8 @@ class doc_generic_shipment_odt extends ModelePdfExpedition dol_mkdir($conf->expedition->dir_temp); if (!is_writable($conf->expedition->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->expedition->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->expedition->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php index 3a8defb8db4..2a2f813011b 100644 --- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php @@ -986,20 +986,20 @@ class pdf_espadon extends ModelePdfExpedition } // Show barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $posx = 105; } else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); } $pdf->SetDrawColor(128, 128, 128); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); diff --git a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php index ab9461d104f..de2c454de18 100644 --- a/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php +++ b/htdocs/core/modules/expedition/doc/pdf_rouget.modules.php @@ -931,20 +931,20 @@ class pdf_rouget extends ModelePdfExpedition } // Show barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $posx = 105; } else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); } $pdf->SetDrawColor(128, 128, 128); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); diff --git a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php index 43c1ae9e4de..365a2326281 100644 --- a/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php +++ b/htdocs/core/modules/expensereport/doc/pdf_standard.modules.php @@ -1043,7 +1043,7 @@ class pdf_standard extends ModeleExpenseReport $pdf->MultiCell(15, 3, $outputlangs->transnoentities("Amount"), 0, 'C', 0); $pdf->SetXY($tab3_posx + 35, $tab3_top + 1); $pdf->MultiCell(30, 3, $outputlangs->transnoentities("Type"), 0, 'L', 0); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $pdf->SetXY($tab3_posx + 65, $tab3_top + 1); $pdf->MultiCell(25, 3, $outputlangs->transnoentities("BankAccount"), 0, 'L', 0); } @@ -1083,7 +1083,7 @@ class pdf_standard extends ModeleExpenseReport $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort".$row->p_code); $pdf->MultiCell(40, 3, $oper, 0, 'L', 0); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $pdf->SetXY($tab3_posx + 65, $tab3_top + $y + 1); $pdf->MultiCell(30, 3, $row->baref, 0, 'L', 0); } diff --git a/htdocs/core/modules/expensereport/mod_expensereport_sand.php b/htdocs/core/modules/expensereport/mod_expensereport_sand.php index c403aa8c228..d14f17de067 100644 --- a/htdocs/core/modules/expensereport/mod_expensereport_sand.php +++ b/htdocs/core/modules/expensereport/mod_expensereport_sand.php @@ -82,7 +82,8 @@ class mod_expensereport_sand extends ModeleNumRefExpenseReport // Parametrage du prefix $texte .= ''; - $texte .= ''; + $mask = empty($conf->global->EXPENSEREPORT_SAND_MASK) ? '' : $conf->global->EXPENSEREPORT_SAND_MASK; + $texte .= ''; $texte .= ''; @@ -128,7 +129,7 @@ class mod_expensereport_sand extends ModeleNumRefExpenseReport require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->EXPENSEREPORT_SAND_MASK; + $mask = empty($conf->global->EXPENSEREPORT_SAND_MASK) ? '' : $conf->global->EXPENSEREPORT_SAND_MASK; if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/export/export_csv.modules.php b/htdocs/core/modules/export/export_csv.modules.php index 88ae937bb6d..4b3ede2ae14 100644 --- a/htdocs/core/modules/export/export_csv.modules.php +++ b/htdocs/core/modules/export/export_csv.modules.php @@ -275,6 +275,7 @@ class ExportCsv extends ModeleExports $newvalue = $outputlangs->transnoentities($reg[1]); } + // Clean data and add encloser if required (depending on value of USE_STRICT_CSV_RULES) $newvalue = $this->csvClean($newvalue, $outputlangs->charset_output); if (preg_match('/^Select:/i', $typefield) && $typefield = substr($typefield, 7)) { @@ -338,13 +339,16 @@ class ExportCsv extends ModeleExports $newvalue = dol_htmlcleanlastbr($newvalue); //print $charset.' '.$newvalue."\n"; - // Rule 1 CSV: No CR, LF in cells (except if USE_STRICT_CSV_RULES is on, we can keep record as it is but we must add quotes) + // Rule 1 CSV: No CR, LF in cells (except if USE_STRICT_CSV_RULES is 1, we can keep record as it is but we must add quotes) $oldvalue = $newvalue; $newvalue = str_replace("\r", '', $newvalue); $newvalue = str_replace("\n", '\n', $newvalue); if (!empty($conf->global->USE_STRICT_CSV_RULES) && $oldvalue != $newvalue) { - // If strict use of CSV rules, we just add quote - $newvalue = $oldvalue; + // If we must use enclusure on text with CR/LF) + if ($conf->global->USE_STRICT_CSV_RULES == 1) { + // If we use strict CSV rules (original value must remain but we add quote) + $newvalue = $oldvalue; + } $addquote = 1; } diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index fc73460bd1b..f255fa52474 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -278,7 +278,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -287,11 +287,11 @@ class doc_generic_invoice_odt extends ModelePDFFactures if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; //print "newdir=".$dir; //print "newfile=".$newfile; @@ -300,8 +300,8 @@ class doc_generic_invoice_odt extends ModelePDFFactures dol_mkdir($conf->facture->dir_temp); if (!is_writable($conf->facture->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->facture->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->facture->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php index 63e9d61c409..47d5480268c 100644 --- a/htdocs/core/modules/facture/doc/pdf_crabe.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_crabe.modules.php @@ -1163,6 +1163,14 @@ class pdf_crabe extends ModelePDFFactures $pdf->SetFont('', '', $default_font_size - 2); $pdf->SetXY($posxval, $posy); $lib_mode_reg = $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) != ('PaymentType'.$object->mode_reglement_code) ? $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) : $outputlangs->convToOutputCharset($object->mode_reglement); + //#21654: add account number used for the debit + if ($object->mode_reglement_code == "PRE") { + require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php'; + $bac = new CompanyBankAccount($this->db); + $bac->fetch(0, $object->thirdparty->id); + $iban= $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic; + $lib_mode_reg .= $langs->trans("PaymentTypePREdetails", dol_trunc($iban, 6, 'right', 'UTF-8', 1)); + } $pdf->MultiCell(80, 5, $lib_mode_reg, 0, 'L'); $posy = $pdf->GetY(); diff --git a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php index 46ac4ffde37..547aaaadae1 100644 --- a/htdocs/core/modules/facture/doc/pdf_sponge.modules.php +++ b/htdocs/core/modules/facture/doc/pdf_sponge.modules.php @@ -115,6 +115,32 @@ class pdf_sponge extends ModelePDFFactures */ public $marge_basse; + + /** + * @var int heightforinfotot + */ + public $heightforinfotot; + + /** + * @var int heightforfreetext + */ + public $heightforfreetext; + + /** + * @var int heightforfooter + */ + public $heightforfooter; + + /** + * @var int tab_top + */ + public $tab_top; + + /** + * @var int tab_top_newpage + */ + public $tab_top_newpage; + /** * Issuer * @var Societe Object that emits @@ -345,9 +371,9 @@ class pdf_sponge extends ModelePDFFactures $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance $pdf->SetAutoPageBreak(1, 0); - $heightforinfotot = 50 + (4 * $nbpayments); // Height reserved to output the info and total part and payment part - $heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page - $heightforfooter = $this->marge_basse + (empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? 12 : 22); // Height reserved to output the footer (value include bottom margin) + $this->heightforinfotot = 50 + (4 * $nbpayments); // Height reserved to output the info and total part and payment part + $this->heightforfreetext = (isset($conf->global->MAIN_PDF_FREETEXT_HEIGHT) ? $conf->global->MAIN_PDF_FREETEXT_HEIGHT : 5); // Height reserved to output the free text on last page + $this->heightforfooter = $this->marge_basse + (empty($conf->global->MAIN_GENERATE_DOCUMENTS_SHOW_FOOT_DETAILS) ? 12 : 22); // Height reserved to output the footer (value include bottom margin) if (class_exists('TCPDF')) { $pdf->setPrintHeader(false); @@ -429,9 +455,9 @@ class pdf_sponge extends ModelePDFFactures // $pdf->GetY() here can't be used. It is bottom of the second addresse box but first one may be higher - // $tab_top is y where we must continue content (90 = 42 + 48: 42 is height of logo and ref, 48 is address blocks) - $tab_top = 90 + $top_shift; // top_shift is an addition for linked objects or addons (0 in most cases) - $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10); + // $this->tab_top is y where we must continue content (90 = 42 + 48: 42 is height of logo and ref, 48 is address blocks) + $this->tab_top = 90 + $top_shift; // top_shift is an addition for linked objects or addons (0 in most cases) + $this->tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift : 10); // You can add more thing under header here, if you increase $extra_under_address_shift too. $extra_under_address_shift = 0; @@ -452,7 +478,7 @@ class pdf_sponge extends ModelePDFFactures 'module_width' => 1, // width of a single module in points 'module_height' => 1 // height of a single module in points ); - $pdf->write2DBarcode($qrcodestring, 'QRCODE,M', $this->marge_gauche, $tab_top - 5, 25, 25, $styleQr, 'N'); + $pdf->write2DBarcode($qrcodestring, 'QRCODE,M', $this->marge_gauche, $this->tab_top - 5, 25, 25, $styleQr, 'N'); $extra_under_address_shift += 25; } @@ -469,32 +495,32 @@ class pdf_sponge extends ModelePDFFactures $extra_under_address_shift += $hookmanager->resArray['extra_under_header_shift']; } - $tab_top += $extra_under_address_shift; - $tab_top_newpage += 0; + $this->tab_top += $extra_under_address_shift; + $this->tab_top_newpage += 0; // Define heigth of table for lines (for first page) - $tab_height = $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext; + $tab_height = $this->page_hauteur - $this->tab_top - $this->heightforfooter - $this->heightforfreetext; - $nexY = $tab_top - 1; + $nexY = $this->tab_top - 1; // Incoterm $height_incoterms = 0; if (!empty($conf->incoterm->enabled)) { $desc_incoterms = $object->getIncotermsForPDF(); if ($desc_incoterms) { - $tab_top -= 2; + $this->tab_top -= 2; $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top - 1, dol_htmlentitiesbr($desc_incoterms), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $this->tab_top - 1, dol_htmlentitiesbr($desc_incoterms), 0, 1); $nexY = max($pdf->GetY(), $nexY); - $height_incoterms = $nexY - $tab_top; + $height_incoterms = $nexY - $this->tab_top; // Rect takes a length in 3rd parameter $pdf->SetDrawColor(192, 192, 192); - $pdf->Rect($this->marge_gauche, $tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_incoterms + 1); + $pdf->Rect($this->marge_gauche, $this->tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_incoterms + 1); - $tab_top = $nexY + 6; + $this->tab_top = $nexY + 6; $height_incoterms += 4; } } @@ -521,7 +547,7 @@ class pdf_sponge extends ModelePDFFactures $pagenb = $pdf->getPage(); if ($notetoshow) { - $tab_top -= 2; + $this->tab_top -= 2; $tab_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite; $pageposbeforenote = $pagenb; @@ -534,7 +560,7 @@ class pdf_sponge extends ModelePDFFactures $pdf->startTransaction(); $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $this->tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); // Description $pageposafternote = $pdf->getPage(); $posyafter = $pdf->GetY(); @@ -553,29 +579,29 @@ class pdf_sponge extends ModelePDFFactures $this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis); } // $this->_pagefoot($pdf,$object,$outputlangs,1); - $pdf->setTopMargin($tab_top_newpage); + $pdf->setTopMargin($this->tab_top_newpage); // The only function to edit the bottom margin of current page to set it. - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); + $pdf->setPageOrientation('', 1, $this->heightforfooter + $this->heightforfreetext); } // back to start $pdf->setPage($pageposbeforenote); - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); + $pdf->setPageOrientation('', 1, $this->heightforfooter + $this->heightforfreetext); $pdf->SetFont('', '', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $this->tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $pageposafternote = $pdf->getPage(); $posyafter = $pdf->GetY(); - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { // There is no space left for total+free text + if ($posyafter > ($this->page_hauteur - ($this->heightforfooter + $this->heightforfreetext + 20))) { // There is no space left for total+free text $pdf->AddPage('', '', true); $pagenb++; $pageposafternote++; $pdf->setPage($pageposafternote); - $pdf->setTopMargin($tab_top_newpage); + $pdf->setTopMargin($this->tab_top_newpage); // The only function to edit the bottom margin of current page to set it. - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext); - //$posyafter = $tab_top_newpage; + $pdf->setPageOrientation('', 1, $this->heightforfooter + $this->heightforfreetext); + //$posyafter = $this->tab_top_newpage; } @@ -588,11 +614,11 @@ class pdf_sponge extends ModelePDFFactures $pdf->SetDrawColor(128, 128, 128); // Draw note frame if ($i > $pageposbeforenote) { - $height_note = $this->page_hauteur - ($tab_top_newpage + $heightforfooter); - $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); + $height_note = $this->page_hauteur - ($this->tab_top_newpage + $this->heightforfooter); + $pdf->Rect($this->marge_gauche, $this->tab_top_newpage - 1, $tab_width, $height_note + 1); } else { - $height_note = $this->page_hauteur - ($tab_top + $heightforfooter); - $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); + $height_note = $this->page_hauteur - ($this->tab_top + $this->heightforfooter); + $pdf->Rect($this->marge_gauche, $this->tab_top - 1, $tab_width, $height_note + 1); } // Add footer @@ -610,17 +636,17 @@ class pdf_sponge extends ModelePDFFactures if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { $this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis); } - $height_note = $posyafter - $tab_top_newpage; - $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1); + $height_note = $posyafter - $this->tab_top_newpage; + $pdf->Rect($this->marge_gauche, $this->tab_top_newpage - 1, $tab_width, $height_note + 1); } else { // No pagebreak $pdf->commitTransaction(); $posyafter = $pdf->GetY(); - $height_note = $posyafter - $tab_top; - $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1); + $height_note = $posyafter - $this->tab_top; + $pdf->Rect($this->marge_gauche, $this->tab_top - 1, $tab_width, $height_note + 1); - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) { + if ($posyafter > ($this->page_hauteur - ($this->heightforfooter + $this->heightforfreetext + 20))) { // not enough space, need to add page $pdf->AddPage('', '', true); $pagenb++; @@ -633,12 +659,12 @@ class pdf_sponge extends ModelePDFFactures $this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis); } - $posyafter = $tab_top_newpage; + $posyafter = $this->tab_top_newpage; } } $tab_height = $tab_height - $height_note; - $tab_top = $posyafter + 6; + $this->tab_top = $posyafter + 6; } else { $height_note = 0; } @@ -648,10 +674,10 @@ class pdf_sponge extends ModelePDFFactures // Table simulation to know the height of the title line (this set this->tableTitleHeight) $pdf->startTransaction(); - $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop); + $this->pdfTabTitles($pdf, $this->tab_top, $tab_height, $outputlangs, $hidetop); $pdf->rollbackTransaction(true); - $nexY = $tab_top + $this->tabTitleHeight; + $nexY = $this->tab_top + $this->tabTitleHeight; // Loop on each lines $pageposbeforeprintlines = $pdf->getPage(); @@ -667,8 +693,8 @@ class pdf_sponge extends ModelePDFFactures $imglinesize = pdf_getSizeForImage($realpatharray[$i]); } - $pdf->setTopMargin($tab_top_newpage); - $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext + $heightforinfotot); // The only function to edit the bottom margin of current page to set it. + $pdf->setTopMargin($this->tab_top_newpage); + $pdf->setPageOrientation('', 1, $this->heightforfooter + $this->heightforfreetext + $this->heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore = $pdf->getPage(); $showpricebeforepagebreak = 1; @@ -677,14 +703,14 @@ class pdf_sponge extends ModelePDFFactures if ($this->getColumnStatus('photo')) { // We start with Photo of product line - if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // If photo too high, we moved completely on new page + if (isset($imglinesize['width']) && isset($imglinesize['height']) && ($curY + $imglinesize['height']) > ($this->page_hauteur - ($this->heightforfooter + $this->heightforfreetext + $this->heightforinfotot))) { // If photo too high, we moved completely on new page $pdf->AddPage('', '', true); if (!empty($tplidx)) { $pdf->useTemplate($tplidx); } $pdf->setPage($pageposbefore + 1); - $curY = $tab_top_newpage; + $curY = $this->tab_top_newpage; // Allows data in the first page if description is long enough to break in multiples pages if (!empty($conf->global->MAIN_PDF_DATA_ON_FIRST_PAGE)) { @@ -711,14 +737,14 @@ class pdf_sponge extends ModelePDFFactures if ($pageposafter > $pageposbefore) { // There is a pagebreak $pdf->rollbackTransaction(true); $pageposafter = $pageposbefore; - $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $this->heightforfooter); // The only function to edit the bottom margin of current page to set it. $this->printColDescContent($pdf, $curY, 'desc', $object, $i, $outputlangs, $hideref, $hidedesc); $pageposafter = $pdf->getPage(); $posyafter = $pdf->GetY(); - //var_dump($posyafter); var_dump(($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))); exit; - if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + $heightforinfotot))) { // There is no space left for total+free text + //var_dump($posyafter); var_dump(($this->page_hauteur - ($this->heightforfooter+$this->heightforfreetext+$this->heightforinfotot))); exit; + if ($posyafter > ($this->page_hauteur - ($this->heightforfooter + $this->heightforfreetext + $this->heightforinfotot))) { // There is no space left for total+free text if ($i == ($nblines - 1)) { // No more lines, and no space left to show total, so we create a new page $pdf->AddPage('', '', true); if (!empty($tplidx)) { @@ -752,7 +778,7 @@ class pdf_sponge extends ModelePDFFactures // We suppose that a too long description or photo were moved completely on next page if ($pageposafter > $pageposbefore && empty($showpricebeforepagebreak)) { $pdf->setPage($pageposafter); - $curY = $tab_top_newpage; + $curY = $this->tab_top_newpage; } $pdf->SetFont('', '', $default_font_size - 1); // We reposition the default font @@ -923,9 +949,9 @@ class pdf_sponge extends ModelePDFFactures while ($pagenb < $pageposafter) { $pdf->setPage($pagenb); if ($pagenb == $pageposbeforeprintlines) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); + $this->_tableau($pdf, $this->tab_top, $this->page_hauteur - $this->tab_top - $this->heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); + $this->_tableau($pdf, $this->tab_top_newpage, $this->page_hauteur - $this->tab_top_newpage - $this->heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); } $this->_pagefoot($pdf, $object, $outputlangs, 1); $pagenb++; @@ -941,9 +967,9 @@ class pdf_sponge extends ModelePDFFactures if (isset($object->lines[$i + 1]->pagebreak) && $object->lines[$i + 1]->pagebreak) { if ($pagenb == $pageposafter) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); + $this->_tableau($pdf, $this->tab_top, $this->page_hauteur - $this->tab_top - $this->heightforfooter, 0, $outputlangs, $hidetop, 1, $object->multicurrency_code, $outputlangsbis); } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); + $this->_tableau($pdf, $this->tab_top_newpage, $this->page_hauteur - $this->tab_top_newpage - $this->heightforfooter, 0, $outputlangs, 1, 1, $object->multicurrency_code, $outputlangsbis); } $this->_pagefoot($pdf, $object, $outputlangs, 1); // New page @@ -960,11 +986,11 @@ class pdf_sponge extends ModelePDFFactures // Show square if ($pagenb == $pageposbeforeprintlines) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code, $outputlangsbis); - $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; + $this->_tableau($pdf, $this->tab_top, $this->page_hauteur - $this->tab_top - $this->heightforinfotot - $this->heightforfreetext - $this->heightforfooter, 0, $outputlangs, $hidetop, 0, $object->multicurrency_code, $outputlangsbis); + $bottomlasttab = $this->page_hauteur - $this->heightforinfotot - $this->heightforfreetext - $this->heightforfooter + 1; } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code, $outputlangsbis); - $bottomlasttab = $this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; + $this->_tableau($pdf, $this->tab_top_newpage, $this->page_hauteur - $this->tab_top_newpage - $this->heightforinfotot - $this->heightforfreetext - $this->heightforfooter, 0, $outputlangs, 1, 0, $object->multicurrency_code, $outputlangsbis); + $bottomlasttab = $this->page_hauteur - $this->heightforinfotot - $this->heightforfreetext - $this->heightforfooter + 1; } // Display infos area @@ -1217,37 +1243,47 @@ class pdf_sponge extends ModelePDFFactures if (empty($object->mode_reglement_code) && empty($conf->global->FACTURE_CHQ_NUMBER) && empty($conf->global->FACTURE_RIB_NUMBER)) { - $this->error = $outputlangs->transnoentities("ErrorNoPaiementModeConfigured"); + $this->error = $outputlangs->transnoentities("ErrorNoPaiementModeConfigured"); } elseif (($object->mode_reglement_code == 'CHQ' && empty($conf->global->FACTURE_CHQ_NUMBER) && empty($object->fk_account) && empty($object->fk_bank)) - || ($object->mode_reglement_code == 'VIR' && empty($conf->global->FACTURE_RIB_NUMBER) && empty($object->fk_account) && empty($object->fk_bank))) { - // Avoid having any valid PDF with setup that is not complete - $outputlangs->load("errors"); + || ($object->mode_reglement_code == 'VIR' && empty($conf->global->FACTURE_RIB_NUMBER) && empty($object->fk_account) && empty($object->fk_bank))) { + // Avoid having any valid PDF with setup that is not complete + $outputlangs->load("errors"); - $pdf->SetXY($this->marge_gauche, $posy); - $pdf->SetTextColor(200, 0, 0); - $pdf->SetFont('', 'B', $default_font_size - 2); - $this->error = $outputlangs->transnoentities("ErrorPaymentModeDefinedToWithoutSetup", $object->mode_reglement_code); - $pdf->MultiCell($posxend - $this->marge_gauche, 3, $this->error, 0, 'L', 0); - $pdf->SetTextColor(0, 0, 0); + $pdf->SetXY($this->marge_gauche, $posy); + $pdf->SetTextColor(200, 0, 0); + $pdf->SetFont('', 'B', $default_font_size - 2); + $this->error = $outputlangs->transnoentities("ErrorPaymentModeDefinedToWithoutSetup", $object->mode_reglement_code); + $pdf->MultiCell($posxend - $this->marge_gauche, 3, $this->error, 0, 'L', 0); + $pdf->SetTextColor(0, 0, 0); - $posy = $pdf->GetY() + 1; + $posy = $pdf->GetY() + 1; } // Show payment mode if (!empty($object->mode_reglement_code) - && $object->mode_reglement_code != 'CHQ' - && $object->mode_reglement_code != 'VIR') { - $pdf->SetFont('', 'B', $default_font_size - 2); - $pdf->SetXY($this->marge_gauche, $posy); - $titre = $outputlangs->transnoentities("PaymentMode").':'; - $pdf->MultiCell($posxend - $this->marge_gauche, 5, $titre, 0, 'L'); + && $object->mode_reglement_code != 'CHQ' + && $object->mode_reglement_code != 'VIR') { + $pdf->SetFont('', 'B', $default_font_size - 2); + $pdf->SetXY($this->marge_gauche, $posy); + $titre = $outputlangs->transnoentities("PaymentMode").':'; + $pdf->MultiCell($posxend - $this->marge_gauche, 5, $titre, 0, 'L'); - $pdf->SetFont('', '', $default_font_size - 2); - $pdf->SetXY($posxval, $posy); - $lib_mode_reg = $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) != ('PaymentType'.$object->mode_reglement_code) ? $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) : $outputlangs->convToOutputCharset($object->mode_reglement); - $pdf->MultiCell($posxend - $posxval, 5, $lib_mode_reg, 0, 'L'); + $pdf->SetFont('', '', $default_font_size - 2); + $pdf->SetXY($posxval, $posy); + $lib_mode_reg = $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) != ('PaymentType'.$object->mode_reglement_code) ? $outputlangs->transnoentities("PaymentType".$object->mode_reglement_code) : $outputlangs->convToOutputCharset($object->mode_reglement); - $posy = $pdf->GetY(); + //#21654: add account number used for the debit + if ($object->mode_reglement_code == "PRE") { + require_once DOL_DOCUMENT_ROOT.'/societe/class/companybankaccount.class.php'; + $bac = new CompanyBankAccount($this->db); + $bac->fetch(0, $object->thirdparty->id); + $iban= $bac->iban.(($bac->iban && $bac->bic) ? ' / ' : '').$bac->bic; + $lib_mode_reg .= $langs->trans("PaymentTypePREdetails", dol_trunc($iban, 6, 'right', 'UTF-8', 1)); + } + + $pdf->MultiCell($posxend - $posxval, 5, $lib_mode_reg, 0, 'L'); + + $posy = $pdf->GetY(); } // Show online payment link @@ -1265,6 +1301,7 @@ class pdf_sponge extends ModelePDFFactures } } + if ($object->statut != Facture::STATUS_DRAFT && $useonlinepayment) { require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; global $langs; @@ -1432,10 +1469,15 @@ class pdf_sponge extends ModelePDFFactures $posy = $pdf->GetY(); foreach ($TPreviousIncoice as &$fac) { - if ($posy > $this->page_hauteur - 4) { + if ($posy > $this->page_hauteur - 4 - $this->heightforfooter) { $this->_pagefoot($pdf, $object, $outputlangs, 1); $pdf->addPage(); - $pdf->setY($this->marge_haute); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { + $this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis); + $pdf->setY($this->tab_top_newpage); + } else { + $pdf->setY($this->marge_haute); + } $posy = $pdf->GetY(); } @@ -1495,9 +1537,15 @@ class pdf_sponge extends ModelePDFFactures $posy += $tab2_hl; - if ($posy > $this->page_hauteur - 4) { + if ($posy > $this->page_hauteur - 4 - $this->heightforfooter) { $pdf->addPage(); - $pdf->setY($this->marge_haute); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) { + $this->_pagehead($pdf, $object, 0, $outputlangs, $outputlangsbis); + $pdf->setY($this->tab_top_newpage); + } else { + $pdf->setY($this->marge_haute); + } + $posy = $pdf->GetY(); } diff --git a/htdocs/core/modules/hrm/mod_evaluation_advanced.php b/htdocs/core/modules/hrm/mod_evaluation_advanced.php index 0468c9ebb30..cdb1cc20109 100644 --- a/htdocs/core/modules/hrm/mod_evaluation_advanced.php +++ b/htdocs/core/modules/hrm/mod_evaluation_advanced.php @@ -79,9 +79,9 @@ class mod_evaluation_advanced extends ModeleNumRefEvaluation // Parametrage du prefix $texte .= ''; - $texte .= ''; + $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -132,7 +132,7 @@ class mod_evaluation_advanced extends ModeleNumRefEvaluation require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->HRM_EVALUATION_ADVANCED_MASK; + $mask = getDolGlobalString('HRM_EVALUATION_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/import/import_csv.modules.php b/htdocs/core/modules/import/import_csv.modules.php index 8c3e5bfeab9..32284a2cbd1 100644 --- a/htdocs/core/modules/import/import_csv.modules.php +++ b/htdocs/core/modules/import/import_csv.modules.php @@ -470,9 +470,9 @@ class ImportCsv extends ModeleImports $newval = $classinstance->id; } else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) { - $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); + $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, 'code', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); } elseif (!empty($objimport->array_import_convertvalue[0][$val]['element'])) { - $this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', $key, $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); + $this->errors[$error]['lib'] = $langs->trans('ErrorFieldRefNotIn', num2Alpha($key - 1), $newval, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['element'])); } else { $this->errors[$error]['lib'] = 'ErrorBadDefinitionOfImportProfile'; } @@ -512,7 +512,7 @@ class ImportCsv extends ModeleImports $newval = $classinstance->id; } else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) { - $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); + $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); } else { $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; } @@ -549,7 +549,7 @@ class ImportCsv extends ModeleImports $newval = $scaleorid ? $scaleorid : 0; } else { if (!empty($objimport->array_import_convertvalue[0][$val]['dict'])) { - $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', $key, $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); + $this->errors[$error]['lib'] = $langs->trans('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, 'scale', $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$val]['dict'])); } else { $this->errors[$error]['lib'] = 'ErrorFieldValueNotIn'; } @@ -697,7 +697,7 @@ class ImportCsv extends ModeleImports if (!empty($filter)) { $tableforerror .= ':'.$filter; } - $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorFieldValueNotIn', $key, $newval, $field, $tableforerror); + $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorFieldValueNotIn', num2Alpha($key - 1), $newval, $field, $tableforerror); $this->errors[$error]['type'] = 'FOREIGNKEY'; $errorforthistable++; $error++; @@ -705,13 +705,22 @@ class ImportCsv extends ModeleImports } elseif (!preg_match('/'.$objimport->array_import_regex[0][$val].'/i', $newval)) { // If test is just a static regex //if ($key == 19) print "xxx".$newval."zzz".$objimport->array_import_regex[0][$val]."
"; - $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorWrongValueForField', $key, $newval, $objimport->array_import_regex[0][$val]); + $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorWrongValueForField', num2Alpha($key - 1), $newval, $objimport->array_import_regex[0][$val]); $this->errors[$error]['type'] = 'REGEX'; $errorforthistable++; $error++; } } + // Check HTML injection + $inj = testSqlAndScriptInject($newval, 0); + if ($inj) { + $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorHtmlInjectionForField', num2Alpha($key - 1), dol_trunc($newval, 100)); + $this->errors[$error]['type'] = 'HTMLINJECTION'; + $errorforthistable++; + $error++; + } + // Other tests // ... } diff --git a/htdocs/core/modules/import/import_xlsx.modules.php b/htdocs/core/modules/import/import_xlsx.modules.php index 4740f7d3390..d8a9d77a98e 100644 --- a/htdocs/core/modules/import/import_xlsx.modules.php +++ b/htdocs/core/modules/import/import_xlsx.modules.php @@ -756,6 +756,15 @@ class ImportXlsx extends ModeleImports } } + // Check HTML injection + $inj = testSqlAndScriptInject($newval, 0); + if ($inj) { + $this->errors[$error]['lib'] = $langs->transnoentitiesnoconv('ErrorHtmlInjectionForField', $key, dol_trunc($newval, 100)); + $this->errors[$error]['type'] = 'HTMLINJECTION'; + $errorforthistable++; + $error++; + } + // Other tests // ... } diff --git a/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php b/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php index 0b64203798f..0a196b49ae3 100644 --- a/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php +++ b/htdocs/core/modules/member/doc/doc_generic_member_odt.class.php @@ -125,7 +125,7 @@ class doc_generic_member_odt extends ModelePDFMember // List of directories area $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -129,7 +129,7 @@ class mod_mo_advanced extends ModeleNumRefMos require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->MRP_MO_ADVANCED_MASK; + $mask = getDolGlobalString('MRP_MO_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/oauth/generic_oauthcallback.php b/htdocs/core/modules/oauth/generic_oauthcallback.php new file mode 100644 index 00000000000..9d66bb07302 --- /dev/null +++ b/htdocs/core/modules/oauth/generic_oauthcallback.php @@ -0,0 +1,193 @@ + + * Copyright (C) 2015 Frederic France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/core/modules/oauth/generic_oauthcallback.php + * \ingroup oauth + * \brief Page to get oauth callback + */ + +require '../../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; +use OAuth\Common\Storage\DoliStorage; +use OAuth\Common\Consumer\Credentials; +use OAuth\OAuth2\Service\GitHub; + +// 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 + + +$action = GETPOST('action', 'aZ09'); +$backtourl = GETPOST('backtourl', 'alpha'); +$keyforprovider = GETPOST('keyforprovider', 'aZ09'); +if (empty($keyforprovider) && !empty($_SESSION["oauthkeyforproviderbeforeoauthjump"]) && (GETPOST('code') || $action == 'delete')) { + $keyforprovider = $_SESSION["oauthkeyforproviderbeforeoauthjump"]; +} +$genericstring = 'OTHER'; + + +/** + * Create a new instance of the URI class with the current URI, stripping the query string + */ +$uriFactory = new \OAuth\Common\Http\Uri\UriFactory(); +//$currentUri = $uriFactory->createFromSuperGlobalArray($_SERVER); +//$currentUri->setQuery(''); +$currentUri = $uriFactory->createFromAbsolute($urlwithroot.'/core/modules/oauth/generic_oauthcallback.php'); + + +/** + * Load the credential for the service + */ + +/** @var $serviceFactory \OAuth\ServiceFactory An OAuth service factory. */ +$serviceFactory = new \OAuth\ServiceFactory(); +$httpClient = new \OAuth\Common\Http\Client\CurlClient(); +// TODO Set options for proxy and timeout +// $params=array('CURLXXX'=>value, ...) +//$httpClient->setCurlParameters($params); +$serviceFactory->setHttpClient($httpClient); + +// Dolibarr storage +$storage = new DoliStorage($db, $conf); + +// Setup the credentials for the requests +$keyforparamid = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_ID'; +$keyforparamsecret = 'OAUTH_'.$genericstring.($keyforprovider ? '-'.$keyforprovider : '').'_SECRET'; +$credentials = new Credentials( + getDolGlobalString($keyforparamid), + getDolGlobalString($keyforparamsecret), + $currentUri->getAbsoluteUri() +); + +$requestedpermissionsarray = array(); +if (GETPOST('state')) { + $requestedpermissionsarray = explode(',', GETPOST('state')); // Example: 'user'. 'state' parameter is standard to retrieve some parameters back +} +if ($action != 'delete' && empty($requestedpermissionsarray)) { + print 'Error, parameter state is not defined'; + exit; +} +//var_dump($requestedpermissionsarray);exit; + +// Instantiate the Api service using the credentials, http client and storage mechanism for the token +$apiService = $serviceFactory->createService($genericstring, $credentials, $storage, $requestedpermissionsarray); + +/* +var_dump($genericstring.($keyforprovider ? '-'.$keyforprovider : '')); +var_dump($credentials); +var_dump($storage); +var_dump($requestedpermissionsarray); +*/ + +if (empty($apiService)) { + print 'Error, failed to create serviceFactory'; + exit; +} + +// access type needed to have oauth provider refreshing token +//$apiService->setAccessType('offline'); + +$langs->load("oauth"); + +if (!getDolGlobalString($keyforparamid)) { + accessforbidden('Setup of service is not complete. Customer ID is missing'); +} +if (!getDolGlobalString($keyforparamsecret)) { + accessforbidden('Setup of service is not complete. Secret key is missing'); +} + + +/* + * Actions + */ + +if ($action == 'delete') { + $storage->clearToken($genericstring); + + setEventMessages($langs->trans('TokenDeleted'), null, 'mesgs'); + + header('Location: '.$backtourl); + exit(); +} + +if (GETPOST('code')) { // We are coming from oauth provider page + // We should have + //$_GET=array('code' => string 'aaaaaaaaaaaaaa' (length=20), 'state' => string 'user,public_repo' (length=16)) + + dol_syslog("We are coming from the oauth provider page"); + //llxHeader('',$langs->trans("OAuthSetup")); + + //$linkback=''.$langs->trans("BackToModuleList").''; + //print load_fiche_titre($langs->trans("OAuthSetup"),$linkback,'title_setup'); + + //print dol_get_fiche_head(); + // retrieve the CSRF state parameter + $state = GETPOSTISSET('state') ? GETPOST('state') : null; + //print '
'; +print ''; print img_picto('', 'category', 'class="paddingrightonly"'); print $formother->select_categories(Categorie::TYPE_CUSTOMER, $selected_cat, 'search_categ', 0, $langs->trans("Category")); print ' '; @@ -435,7 +456,7 @@ print ''; print ''; print ''; -print $form->select_country($search_country, 'search_country'); +print $form->select_country($search_country, 'search_country', '', 0, 'minwidth100imp maxwidth100'); //print ''; print ' '; - if (!empty($conf->propal->enabled) && $key > 0) { + if (isModEnabled("propal") && $key > 0) { print ' '.img_picto($langs->trans("ProposalStats"), "stats").' '; } if (!empty($conf->commande->enabled) && $key > 0) { diff --git a/htdocs/compta/stats/index.php b/htdocs/compta/stats/index.php index b99002fe609..4051055af60 100644 --- a/htdocs/compta/stats/index.php +++ b/htdocs/compta/stats/index.php @@ -69,6 +69,8 @@ if (empty($date_start) || empty($date_end)) { // We define date_start and date_e $month_end = $month_start - 1; if ($month_end < 1) { $month_end = 12; + } else { + $year_end++; } } else { $month_end = $month_start; diff --git a/htdocs/compta/stats/supplier_turnover.php b/htdocs/compta/stats/supplier_turnover.php index 7273e8ed529..cd70671af61 100644 --- a/htdocs/compta/stats/supplier_turnover.php +++ b/htdocs/compta/stats/supplier_turnover.php @@ -39,12 +39,12 @@ $nbofyear = 4; // Date range $year = GETPOST('year', 'int'); if (empty($year)) { - $year_current = strftime("%Y", dol_now()); - $month_current = strftime("%m", dol_now()); + $year_current = dol_print_date(dol_now(), "%Y"); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year_current - ($nbofyear - 1); } else { $year_current = $year; - $month_current = strftime("%m", dol_now()); + $month_current = dol_print_date(dol_now(), "%m"); $year_start = $year - ($nbofyear - 1); } $date_start = dol_mktime(0, 0, 0, $date_startmonth, $date_startday, $date_startyear, 'tzserver'); // We use timezone of server so report is same from everywhere @@ -56,7 +56,7 @@ if (empty($date_start) || empty($date_end)) { // We define date_start and date_e if ($q == 0) { // We define date_start and date_end $year_end = $year_start + ($nbofyear - 1); - $month_start = GETPOST("month") ? GETPOST("month", 'int') : ($conf->global->SOCIETE_FISCAL_MONTH_START ? ($conf->global->SOCIETE_FISCAL_MONTH_START) : 1); + $month_start = GETPOSTISSET("month") ? GETPOST("month", 'int') : ($conf->global->SOCIETE_FISCAL_MONTH_START ? $conf->global->SOCIETE_FISCAL_MONTH_START : 1); if (!GETPOST('month')) { if (!GETPOST("year") && $month_start > $month_current) { $year_start--; @@ -65,6 +65,8 @@ if (empty($date_start) || empty($date_end)) { // We define date_start and date_e $month_end = $month_start - 1; if ($month_end < 1) { $month_end = 12; + } else { + $year_end++; } } else { $month_end = $month_start; diff --git a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php index 0be2df11190..d13bcfbf349 100644 --- a/htdocs/compta/stats/supplier_turnover_by_thirdparty.php +++ b/htdocs/compta/stats/supplier_turnover_by_thirdparty.php @@ -590,10 +590,10 @@ if (count($amount)) { if (!empty($conf->supplier_proposal->enabled) && $key > 0) { print ' '.img_picto($langs->trans("ProposalStats"), "stats").' '; } - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && $key > 0) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && $key > 0) { print ' '.img_picto($langs->trans("OrderStats"), "stats").' '; } - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) && $key > 0) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) && $key > 0) { print ' '.img_picto($langs->trans("InvoiceStats"), "stats").' '; } print '
'.$langs->trans("BankAccount").''; print img_picto('', 'bank_account', 'pictofixedwidth'); @@ -629,7 +629,7 @@ if ($id > 0) { print '
'; print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -712,7 +712,7 @@ if ($id > 0) { print '\n"; $labeltype = $langs->trans("PaymentType".$objp->type_code) != ("PaymentType".$objp->type_code) ? $langs->trans("PaymentType".$objp->type_code) : $objp->paiement_type; print "\n"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; diff --git a/htdocs/compta/tva/class/paymentvat.class.php b/htdocs/compta/tva/class/paymentvat.class.php index b7500fffaa0..ec951d8d72d 100644 --- a/htdocs/compta/tva/class/paymentvat.class.php +++ b/htdocs/compta/tva/class/paymentvat.class.php @@ -560,7 +560,7 @@ class PaymentVAT extends CommonObject $error = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); diff --git a/htdocs/compta/tva/class/tva.class.php b/htdocs/compta/tva/class/tva.class.php index f54ed42fb06..1ce6bed212b 100644 --- a/htdocs/compta/tva/class/tva.class.php +++ b/htdocs/compta/tva/class/tva.class.php @@ -572,11 +572,11 @@ class Tva extends CommonObject $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -4; } - if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) { + if (isModEnabled("banque") && (empty($this->accountid) || $this->accountid <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); return -5; } - if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) { + if (isModEnabled("banque") && (empty($this->type_payment) || $this->type_payment <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); return -5; } @@ -633,7 +633,7 @@ class Tva extends CommonObject if ($this->id > 0) { $ok = 1; - if (!empty($conf->banque->enabled) && !empty($this->amount)) { + if (isModEnabled("banque") && !empty($this->amount)) { // Insert into llx_bank require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; diff --git a/htdocs/compta/tva/list.php b/htdocs/compta/tva/list.php index 5f76b2e9190..524f8b0105b 100644 --- a/htdocs/compta/tva/list.php +++ b/htdocs/compta/tva/list.php @@ -83,7 +83,7 @@ $arrayfields = array( 't.status' =>array('checked'=>1, 'position'=>90, 'label'=>"Status"), ); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { $arrayfields['t.fk_account'] = array('checked'=>1, 'position'=>60, 'label'=>"DefaultBankAccount"); } diff --git a/htdocs/compta/tva/payments.php b/htdocs/compta/tva/payments.php index 0279acdeaa4..9e7c19c8754 100644 --- a/htdocs/compta/tva/payments.php +++ b/htdocs/compta/tva/payments.php @@ -129,7 +129,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "ptva.datep", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("PaymentMode", $_SERVER["PHP_SELF"], "pct.code", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Numero", $_SERVER["PHP_SELF"], "ptva.num_paiement", "", $param, '', $sortfield, $sortorder, '', 'ChequeOrTransferNumber'); - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print_liste_field_titre("BankTransactionLine", $_SERVER["PHP_SELF"], "ptva.fk_bank", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("BankAccount", $_SERVER["PHP_SELF"], "bank.ref", "", $param, '', $sortfield, $sortorder); } @@ -221,7 +221,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { // Chq number print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Bank transaction print ''; // A total here has no sense print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; print ''; } diff --git a/htdocs/conf/conf.php.example b/htdocs/conf/conf.php.example index 487576ed058..b58ac33707e 100644 --- a/htdocs/conf/conf.php.example +++ b/htdocs/conf/conf.php.example @@ -185,7 +185,7 @@ $dolibarr_main_instance_unique_id='84b5bc91f83b56e458db71e0adac2b62'; // values using a ",". In this case, Dolibarr will check login/pass for each value in // order defined into value. However, note that this can't work with all values. // Examples: -// $dolibarr_main_authentication='dolibarr'; // Use the password defined into application on user record. +// $dolibarr_main_authentication='dolibarr'; // Use the password defined into application on user file (default). // $dolibarr_main_authentication='http'; // Use the HTTP Basic authentication // $dolibarr_main_authentication='ldap'; // Check the password into a LDAP server // $dolibarr_main_authentication='ldap,dolibarr'; // You can set several mode using a comma as a separator. diff --git a/htdocs/contact/canvas/actions_contactcard_common.class.php b/htdocs/contact/canvas/actions_contactcard_common.class.php index a72ea3d7d21..2c7ac145b78 100644 --- a/htdocs/contact/canvas/actions_contactcard_common.class.php +++ b/htdocs/contact/canvas/actions_contactcard_common.class.php @@ -196,7 +196,7 @@ abstract class ActionsContactCardCommon $this->tpl['contact_element'][$i]['linked_element_value'] = $this->object->ref_commande ? $this->object->ref_commande : $langs->trans("NoContactForAnyOrder"); $i++; } - if (!empty($conf->propal->enabled)) { + if (isModEnabled("propal")) { $this->tpl['contact_element'][$i]['linked_element_label'] = $langs->trans("ContactForProposals"); $this->tpl['contact_element'][$i]['linked_element_value'] = $this->object->ref_propal ? $this->object->ref_propal : $langs->trans("NoContactForAnyProposal"); $i++; diff --git a/htdocs/contact/card.php b/htdocs/contact/card.php index 67b144ffd89..d486432f142 100644 --- a/htdocs/contact/card.php +++ b/htdocs/contact/card.php @@ -375,7 +375,7 @@ if (empty($reshook)) { $newfile = $dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - if (!$result > 0) { + if (!($result > 0)) { $errors[] = "ErrorFailedToSaveFile"; } else { $object->photo = dol_sanitizeFileName($_FILES['photo']['name']); @@ -567,20 +567,22 @@ $form = new Form($db); $formadmin = new FormAdmin($db); $formcompany = new FormCompany($db); +$objsoc = new Societe($db); +if ($socid > 0) { + $objsoc->fetch($socid); +} + $title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/contactnameonly/', $conf->global->MAIN_HTML_TITLE) && $object->lastname) { $title = $object->lastname; } $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; +$title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("NewContact") : $langs->trans("NewContactAddress")); + llxHeader('', $title, $help_url); $countrynotdefined = $langs->trans("ErrorSetACountryFirst").' ('.$langs->trans("SeeAbove").')'; -$objsoc = new Societe($db); -if ($socid > 0) { - $objsoc->fetch($socid); -} - if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // ----------------------------------------- // When used with CANVAS @@ -622,8 +624,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Show tabs $head = contact_prepare_head($object); - - $title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); } if ($user->rights->societe->contact->creer) { @@ -643,8 +643,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $object->country = $tmparray['label']; } - $title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("NewContact") : $langs->trans("NewContactAddress")); $linkback = ''; + print load_fiche_titre($title, $linkback, 'address'); // Show errors @@ -883,8 +883,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { //Default language if (!empty($conf->global->MAIN_MULTILANGS)) { print ''; print ''; } @@ -1171,8 +1170,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { //Default language if (!empty($conf->global->MAIN_MULTILANGS)) { print ''; print ''; } @@ -1197,6 +1195,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { // Categories if (!empty($conf->categorie->enabled) && !empty($user->rights->categorie->lire)) { + $arrayselected = array(); print ''; print ''; } - if (!empty($conf->propal->enabled)) { + if (isModEnabled("propal")) { print ''; @@ -1299,11 +1298,10 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $action = 'presend'; } + // View mode if (!empty($id) && $action != 'edit' && $action != 'create') { $objsoc = new Societe($db); - // View mode - // Show errors dol_htmloutput_errors(is_numeric($error) ? '' : $error, $errors); @@ -1328,7 +1326,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { //array('label' => $form->textwithpicto($langs->trans("Type"),$langs->trans("InternalExternalDesc")), 'type' => 'select', 'name' => 'intern', 'default' => 1, 'values' => array(0=>$langs->trans('Internal'),1=>$langs->trans('External'))) ); $text = $langs->trans("ConfirmCreateContact").'
'; - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { if ($object->socid > 0) { $text .= $langs->trans("UserWillBeExternalUser"); } else { @@ -1403,7 +1401,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { //$s=picto_from_langcode($object->default_lang); //print ($s?$s.' ':''); $langs->load("languages"); - $labellang = ($object->default_lang ? $langs->trans('Language_'.$object->default_lang.'_'.strtoupper($object->default_lang)) : ''); + $labellang = ($object->default_lang ? $langs->trans('Language_'.$object->default_lang) : ''); + print picto_from_langcode($object->default_lang, 'class="paddingrightonly saturatemedium opacitylow"'); print $labellang; print ''; } @@ -1490,22 +1489,22 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $object->load_ref_elements(); - if (!empty($conf->propal->enabled)) { + if (isModEnabled("propal")) { print ''; } - if (!empty($conf->commande->enabled) || !empty($conf->expedition->enabled)) { + if (!empty($conf->commande->enabled) || isModEnabled("expedition")) { print ''; @@ -1563,10 +1565,6 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''.$langs->trans('Modify').''; } - if (!$object->user_id && $user->rights->user->user->creer) { - print ''.$langs->trans("CreateDolibarrLogin").''; - } - // Activer if ($object->statut == 0 && $user->rights->societe->contact->creer) { print ''.$langs->trans("Reactivate").''; diff --git a/htdocs/contact/class/contact.class.php b/htdocs/contact/class/contact.class.php index 9fa3602ee4b..799b53cdad0 100644 --- a/htdocs/contact/class/contact.class.php +++ b/htdocs/contact/class/contact.class.php @@ -571,7 +571,6 @@ class Contact extends CommonObject $this->fax = trim($this->fax); $this->zip = (empty($this->zip) ? '' : trim($this->zip)); $this->town = (empty($this->town) ? '' : trim($this->town)); - $this->setUpperOrLowerCase(); $this->country_id = ($this->country_id > 0 ? $this->country_id : $this->country_id); if (empty($this->statut)) { $this->statut = 0; @@ -579,6 +578,7 @@ class Contact extends CommonObject if (empty($this->civility_code) && !is_numeric($this->civility_id)) { $this->civility_code = $this->civility_id; // For backward compatibility } + $this->setUpperOrLowerCase(); $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET"; diff --git a/htdocs/contact/consumption.php b/htdocs/contact/consumption.php index 41a6a74dd4b..c3cd54d890e 100644 --- a/htdocs/contact/consumption.php +++ b/htdocs/contact/consumption.php @@ -33,6 +33,7 @@ require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/contact/class/contact.class.php'; $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $id = GETPOST('id', 'int'); @@ -46,7 +47,7 @@ if (empty($object->thirdparty)) { $socid = $object->thirdparty->id; // Sort & Order fields -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; +$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); $sortorder = GETPOST('sortorder', 'aZ09comma'); $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("page", 'int'); @@ -153,7 +154,7 @@ print ''; if ($object->thirdparty->client) { $thirdTypeArray['customer'] = $langs->trans("customer"); - if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (isModEnabled("propal") && $user->rights->propal->lire) { $elementTypeArray['propal'] = $langs->transnoentitiesnoconv('Proposals'); } if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { @@ -167,21 +168,21 @@ if ($object->thirdparty->client) { } } -if ($conf->ficheinter->enabled && $user->rights->ficheinter->lire) { +if (!empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire) { $elementTypeArray['fichinter'] = $langs->transnoentitiesnoconv('Interventions'); } if ($object->thirdparty->fournisseur) { $thirdTypeArray['supplier'] = $langs->trans("supplier"); - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire)) { $elementTypeArray['supplier_invoice'] = $langs->transnoentitiesnoconv('SuppliersInvoices'); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire)) { $elementTypeArray['supplier_order'] = $langs->transnoentitiesnoconv('SuppliersOrders'); } // There no contact type for supplier proposals - // if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); + // if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $user->rights->supplier_proposal->lire) $elementTypeArray['supplier_proposal']=$langs->transnoentitiesnoconv('SupplierProposals'); } print '
'; print $langs->trans('BankAccount'); @@ -660,7 +660,7 @@ if ($id > 0) { print '
'; $nbcols = 3; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbcols++; } @@ -695,7 +695,7 @@ if ($id > 0) { print '
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans('BankAccount').''.$langs->trans("Amount").''.dol_print_date($db->jdate($objp->dp), 'day')."".$labeltype.' '.$objp->num_payment."'.dol_escape_htmltag($obj->num_payment).''; $accountlinestatic->id = $obj->fk_bank; @@ -258,7 +258,7 @@ if (!empty($conf->tax->enabled) && $user->rights->tax->charges->lire) { print '    
'.$form->editfieldkey('DefaultLang', 'default_lang', '', $object, 0).''."\n"; - print $formadmin->select_language(GETPOST('default_lang', 'alpha') ?GETPOST('default_lang', 'alpha') : ($object->default_lang ? $object->default_lang : ''), 'default_lang', 0, 0, 1, 0, 0, 'maxwidth200onsmartphone', 0, 0, 0, null, 1); - + print img_picto('', 'language', 'class="pictofixedwidth"').$formadmin->select_language(GETPOST('default_lang', 'alpha') ? GETPOST('default_lang', 'alpha') : ($object->default_lang ? $object->default_lang : ''), 'default_lang', 0, 0, 1, 0, 0, 'maxwidth200onsmartphone'); print '
'.$form->editfieldkey('DefaultLang', 'default_lang', '', $object, 0).''."\n"; - print $formadmin->select_language($object->default_lang, 'default_lang', 0, 0, 1, 0, 0, '', 0, 0, 0, null, 1); - + print img_picto('', 'language', 'class="pictofixedwidth"').$formadmin->select_language(GETPOST('default_lang', 'alpha') ? GETPOST('default_lang', 'alpha') : ($object->default_lang ? $object->default_lang : ''), 'default_lang', 0, 0, 1, 0, 0, 'maxwidth200onsmartphone'); print '
'.$form->editfieldkey('Categories', 'contcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_CONTACT, null, null, null, null, 1); @@ -1229,7 +1228,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print '
'.$langs->trans("ContactForProposals").''; print $object->ref_propal ? $object->ref_propal : (''.$langs->trans("NoContactForAnyProposal").''); print '
'.$langs->trans("ContactForProposals").''; print $object->ref_propal ? $object->ref_propal : $langs->trans("NoContactForAnyProposal"); print '
'; - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { print $langs->trans("ContactForOrdersOrShipments"); } else { print $langs->trans("ContactForOrders"); } print ''; $none = $langs->trans("NoContactForAnyOrder"); - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { $none = $langs->trans("NoContactForAnyOrderOrShipments"); } print $object->ref_commande ? $object->ref_commande : $none; @@ -1528,9 +1527,12 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { if ($object->user_id) { $dolibarr_user = new User($db); $result = $dolibarr_user->fetch($object->user_id); - print $dolibarr_user->getLoginUrl(1); + print $dolibarr_user->getLoginUrl(-1); } else { - print $langs->trans("NoDolibarrAccess"); + //print ''.$langs->trans("NoDolibarrAccess").''; + if (!$object->user_id && $user->rights->user->user->creer) { + print ''.img_picto($langs->trans("CreateDolibarrLogin"), 'add', 'class="pictofixedwidth"').$langs->trans("CreateDolibarrLogin").''; + } } print '
'; @@ -230,7 +231,7 @@ if ($type_element == 'fichinter') { // Customer : show products from invoices $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX.'element_contact ec ON ec.element_id=c.rowid AND ec.fk_socpeople = '.((int) $object->id); $tables_from .= ' INNER JOIN '.MAIN_DB_PREFIX."c_type_contact tc ON (ec.fk_c_type_contact=tc.rowid and tc.element='propal' and tc.source='external' and tc.active=1)"; $where = ' WHERE c.entity IN ('.getEntity('propal').')'; - $datePrint = 'c.datep'; + $dateprint = 'c.datep'; $doc_number = 'c.ref'; $thirdTypeSelect = 'customer'; } elseif ($type_element == 'order') { @@ -443,6 +444,8 @@ if ($sql_select) { $i = 0; + $total_qty = 0; + $total_ht = 0; while (($objp = $db->fetch_object($resql)) && $i < min($num, $limit)) { $documentstatic->id = $objp->doc_id; $documentstatic->ref = $objp->doc_number; diff --git a/htdocs/contact/list.php b/htdocs/contact/list.php index e68274ecff2..f5810db2b13 100644 --- a/htdocs/contact/list.php +++ b/htdocs/contact/list.php @@ -132,6 +132,7 @@ if (empty($page) || $page < 0 || GETPOST('button_search', 'alpha') || GETPOST('b } $offset = $limit * $page; + $title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); if ($type == "p") { if (empty($contextpage) || $contextpage == 'contactlist') { @@ -206,16 +207,16 @@ foreach ($object->fields as $key => $val) { } // Add none object fields to fields for list -$arrayfields['country.code_iso'] = array('label'=>"Country", 'position'=>22, 'checked'=>0); +$arrayfields['country.code_iso'] = array('label'=>"Country", 'position'=>66, 'checked'=>0); if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { - $arrayfields['s.nom'] = array('label'=>"ThirdParty", 'position'=>25, 'checked'=>1); + $arrayfields['s.nom'] = array('label'=>"ThirdParty", 'position'=>113, 'checked'=> 1); } $arrayfields['unsubscribed'] = array( 'label'=>'No_Email', 'checked'=>0, 'enabled'=>(!empty($conf->mailing->enabled)), - 'position'=>41); + 'position'=>111); if (!empty($conf->socialnetworks->enabled)) { foreach ($socialnetworks as $key => $value) { @@ -341,12 +342,13 @@ $formother = new FormOther($db); $formcompany = new FormCompany($db); $contactstatic = new Contact($db); +$morejs=array(); +$morecss = array(); + if (!empty($conf->global->THIRDPARTY_ENABLE_PROSPECTION_ON_ALTERNATIVE_ADRESSES)) { $contactstatic->loadCacheOfProspStatus(); } -$title = (!empty($conf->global->SOCIETE_ADDRESSES_MANAGEMENT) ? $langs->trans("Contacts") : $langs->trans("ContactsAddresses")); - // Select every potentiels, and note each potentiels which fit in search parameters $tab_level = array(); $sql = "SELECT code, label, sortorder"; @@ -371,6 +373,7 @@ $sql = "SELECT s.rowid as socid, s.nom as name,"; $sql .= " p.rowid, p.lastname as lastname, p.statut, p.firstname, p.address, p.zip, p.town, p.poste, p.email,"; $sql .= " p.socialnetworks, p.photo,"; $sql .= " p.phone as phone_pro, p.phone_mobile, p.phone_perso, p.fax, p.fk_pays, p.priv, p.datec as date_creation, p.tms as date_update,"; +$sql .= " p.import_key,"; $sql .= " st.libelle as stcomm, st.picto as stcomm_picto, p.fk_stcommcontact as stcomm_id, p.fk_prospectcontactlevel,"; $sql .= " co.label as country, co.code as country_code"; // Add fields from extrafields @@ -583,7 +586,7 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && ( } $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Módulo_Empresas'; -llxHeader('', $title, $help_url); +llxHeader('', $title, $help_url, '', 0, 0, $morejs, $morecss, '', 'bodyforlist'); $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { @@ -750,7 +753,7 @@ if (!empty($conf->categorie->enabled) && $user->rights->categorie->lire) { $moreforfilter .= ''; } - if (!empty($conf->fournisseur->enabled) && (empty($type) || $type == 'f')) { + if (isModEnabled("fournisseur") && (empty($type) || $type == 'f')) { $moreforfilter .= '
'; $tmptitle = $langs->trans('SuppliersCategoriesShort'); $moreforfilter .= img_picto($tmptitle, 'category', 'class="pictofixedwidth"'); @@ -772,7 +775,7 @@ print $hookmanager->resPrint; print '
'; $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields if ($massactionbutton) { $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); } @@ -782,6 +785,13 @@ print ''; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} if (!empty($arrayfields['p.rowid']['checked'])) { print ''; } // Action column -print ''; - +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print ''; // Ligne des titres print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} if (!empty($arrayfields['p.rowid']['checked'])) { print_liste_field_titre($arrayfields['p.rowid']['label'], $_SERVER["PHP_SELF"], "p.rowid", "", $param, "", $sortfield, $sortorder); } @@ -1032,7 +1046,9 @@ if (!empty($arrayfields['p.statut']['checked'])) { if (!empty($arrayfields['p.import_key']['checked'])) { print_liste_field_titre($arrayfields['p.import_key']['label'], $_SERVER["PHP_SELF"], "p.import_key", "", $param, '', $sortfield, $sortorder, 'center '); } -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} print "\n"; @@ -1059,11 +1075,24 @@ while ($i < min($num, $limit)) { $contactstatic->country = $obj->country; $contactstatic->country_code = $obj->country_code; $contactstatic->photo = $obj->photo; + $contactstatic->import_key = $obj->import_key; $contactstatic->fk_prospectlevel = $obj->fk_prospectcontactlevel; print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } // ID if (!empty($arrayfields['p.rowid']['checked'])) { print '\n"; if (!$i) { $totalarray['nbfield']++; @@ -1292,15 +1322,17 @@ while ($i < min($num, $limit)) { } // Action column - print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/contact/perso.php b/htdocs/contact/perso.php index 6030fc1e6bd..aa7ba34d9f0 100644 --- a/htdocs/contact/perso.php +++ b/htdocs/contact/perso.php @@ -60,7 +60,7 @@ if ($action == 'update' && !GETPOST("cancel") && $user->rights->societe->contact $result = $object->update_perso($id, $user); if ($result > 0) { - $object->oldcopy = clone $object; + $object->oldcopy = dol_clone($object); // Logo/Photo save $dir = $conf->societe->dir_output.'/contact/'.get_exdir($object->id, 0, 0, 1, $object, 'contact').'/photos'; diff --git a/htdocs/contact/project.php b/htdocs/contact/project.php index b05709f019a..e88c056af37 100644 --- a/htdocs/contact/project.php +++ b/htdocs/contact/project.php @@ -76,7 +76,11 @@ if ($id) { $linkback = ''.$langs->trans("BackToList").''; - $morehtmlref = '
'; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; + + $morehtmlref .= '
'; if (empty($conf->global->SOCIETE_DISABLE_CONTACTS) && !empty($socid)) { $object->thirdparty->fetch($socid); // Thirdparty diff --git a/htdocs/contact/vcard.php b/htdocs/contact/vcard.php index 1fba506e910..256039fa96f 100644 --- a/htdocs/contact/vcard.php +++ b/htdocs/contact/vcard.php @@ -44,7 +44,6 @@ if ($result <= 0) { exit; } -$physicalperson = 1; $company = new Societe($db); if ($contact->socid) { @@ -107,7 +106,7 @@ if ($company->id) { } // Si contact lie a un tiers non de type "particulier" - if ($contact->typent_code != 'TE_PRIVATE') { + if ($company->typent_code != 'TE_PRIVATE') { $v->setOrg($company->name); } } diff --git a/htdocs/contrat/card.php b/htdocs/contrat/card.php index 75689f509ea..9b25e710d85 100644 --- a/htdocs/contrat/card.php +++ b/htdocs/contrat/card.php @@ -41,7 +41,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->project->enabled)) { @@ -577,10 +577,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE) && !empty($conf->global->CONTRACT_ADDON_PDF)) { // No generation if default type not defined $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -754,10 +754,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -784,8 +784,10 @@ if (empty($reshook)) { setEventMessages($object->error, $object->errors, 'errors'); } } elseif ($action == 'confirm_activate' && $confirm == 'yes' && $user->rights->contrat->creer) { - // Close all lines - $result = $object->activateAll($user); + $date_start = dol_mktime(12, 0, 0, GETPOST('d_startmonth'), GETPOST('d_startday'), GETPOST('d_startyear')); + $date_end = dol_mktime(12, 0, 0, GETPOST('d_endmonth'), GETPOST('d_endday'), GETPOST('d_endyear')); + $comment = GETPOST('comment', 'alpha'); + $result = $object->activateAll($user, $date_start, 0, $comment, $date_end); if ($result < 0) { setEventMessages($object->error, $object->errors, 'errors'); } @@ -1260,7 +1262,12 @@ if ($action == 'create') { // Confirmation de la fermeture $formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("CloseAContract"), $langs->trans("ConfirmCloseContract"), "confirm_close", '', 0, 1); } elseif ($action == 'activate') { - $formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("ActivateAllOnContract"), $langs->trans("ConfirmActivateAllOnContract"), "confirm_activate", '', 0, 1); + $formquestion = array( + array('type' => 'date', 'name' => 'd_start', 'label' => $langs->trans("DateServiceActivate"), 'value' => dol_now()), + array('type' => 'date', 'name' => 'd_end', 'label' => $langs->trans("DateEndPlanned"), /*'value' => $form->selectDate('', "end", $usehm, $usehm, '', "active", 1, 0),*/ '', ''), + array('type' => 'text', 'name' => 'comment', 'label' => $langs->trans("Comment"), 'value' => '', '', '', 'class' => 'minwidth300', 'moreattr'=>'autofocus') + ); + $formconfirm = $form->formconfirm($_SERVER['PHP_SELF']."?id=".$object->id, $langs->trans("ActivateAllOnContract"), $langs->trans("ConfirmActivateAllOnContract"), "confirm_activate", $formquestion, 'yes', 1, 280); } elseif ($action == 'clone') { // Clone confirmation $formquestion = array(array('type' => 'other', 'name' => 'socid', 'label' => $langs->trans("SelectThirdParty"), 'value' => $form->select_company(GETPOST('socid', 'int'), 'socid', '(s.client=1 OR s.client=2 OR s.client=3)'))); @@ -2013,12 +2020,15 @@ if ($action == 'create') { print dol_get_fiche_end(); + // Select mail models is same action as presend + if (GETPOST('modelselected')) { + $action = 'presend'; + } /* * Buttons */ - - if ($user->socid == 0) { + if ($user->socid == 0 && $action != 'presend' && $action != 'editline') { print '
'; $parameters = array(); @@ -2130,11 +2140,6 @@ if ($action == 'create') { print "
"; } - // Select mail models is same action as presend - if (GETPOST('modelselected')) { - $action = 'presend'; - } - if ($action != 'presend') { print '
'; diff --git a/htdocs/contrat/class/contrat.class.php b/htdocs/contrat/class/contrat.class.php index ee59a5465dc..088d8f9b6d5 100644 --- a/htdocs/contrat/class/contrat.class.php +++ b/htdocs/contrat/class/contrat.class.php @@ -366,10 +366,11 @@ class Contrat extends CommonObject * @param int|string $date_start Date start (now if empty) * @param int $notrigger 1=Does not execute triggers, 0=Execute triggers * @param string $comment Comment + * @param int|string $date_end Date end * @return int <0 if KO, >0 if OK * @see () */ - public function activateAll($user, $date_start = '', $notrigger = 0, $comment = '') + public function activateAll($user, $date_start = '', $notrigger = 0, $comment = '', $date_end = '') { if (empty($date_start)) { $date_start = dol_now(); @@ -387,7 +388,7 @@ class Contrat extends CommonObject if ($contratline->statut != ContratLigne::STATUS_OPEN) { $contratline->context = $this->context; - $result = $contratline->active_line($user, $date_start, -1, $comment); // This call trigger LINECONTRACT_ACTIVATE + $result = $contratline->active_line($user, $date_start, !empty($date_end) ? $date_end : -1, $comment); // This call trigger LINECONTRACT_ACTIVATE if ($result < 0) { $error++; $this->error = $contratline->error; @@ -667,7 +668,7 @@ class Contrat extends CommonObject if (!$id) { $sql .= " WHERE entity IN (".getEntity('contract').")"; } else { - $sql .= " WHERE rowid=".(int) $id; + $sql .= " WHERE rowid = ".(int) $id; } if ($ref_customer) { $sql .= " AND ref_customer = '".$this->db->escape($ref_customer)."'"; @@ -676,7 +677,7 @@ class Contrat extends CommonObject $sql .= " AND ref_supplier = '".$this->db->escape($ref_supplier)."'"; } if ($ref) { - $sql .= " AND ref='".$this->db->escape($ref)."'"; + $sql .= " AND ref = '".$this->db->escape($ref)."'"; } dol_syslog(get_class($this)."::fetch", LOG_DEBUG); @@ -723,10 +724,13 @@ class Contrat extends CommonObject // Retrieve all extrafields // fetch optionals attributes and labels - $this->fetch_optionals(); + $result = $this->fetch_optionals(); // Lines - $result = $this->fetch_lines(); + if ($result >= 0 && !empty($this->table_element_line)) { + $result = $this->fetch_lines(); + } + if ($result < 0) { $this->error = $this->db->lasterror(); return -3; @@ -2596,6 +2600,177 @@ class Contrat extends CommonObject return -1; } } + + + /** + * Action executed by scheduler + * CAN BE A CRON TASK + * Loop on each contract lines and update the end of date. Do not execute the update if there is one pending invoice linked to contract. + * + * @param int $thirdparty_id Thirdparty id + * @param int $delayindaysshort To renew the resources x day before (positive value) or after (negative value) the end of date (default is 0) + * @return int 0 if OK, <>0 if KO (this function is used also by cron so only 0 is OK) + */ + public function doAutoRenewContracts($thirdparty_id = 0, $delayindaysshort = 0) + { + global $langs, $user; + + $langs->load("agenda"); + + $now = dol_now(); + + $enddatetoscan = dol_time_plus_duree($now, -1 * abs($delayindaysshort), 'd'); + + $error = 0; + $this->output = ''; + $this->error=''; + + $contractlineprocessed = array(); + $contractignored = array(); + $contracterror = array(); + + dol_syslog(__METHOD__, LOG_DEBUG); + + $sql = 'SELECT c.rowid, c.ref_customer, cd.rowid as lid, cd.date_fin_validite, p.duration'; + $sql.= ' FROM '.MAIN_DB_PREFIX.'contrat as c, '.MAIN_DB_PREFIX.'contratdet as cd'; + $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON p.rowid = cd.fk_product'; + $sql.= ' WHERE cd.fk_contrat = c.rowid'; + $sql.= " AND date_format(cd.date_fin_validite, '%Y-%m-%d') <= date_format('".$this->db->idate($enddatetoscan)."', '%Y-%m-%d')"; + $sql.= " AND cd.statut = 4"; + if ($thirdparty_id > 0) $sql.=" AND c.fk_soc = ".((int) $thirdparty_id); + //print $sql; + + $resql = $this->db->query($sql); + if ($resql) { + $num = $this->db->num_rows($resql); + + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; + + $i=0; + while ($i < $num) { + $obj = $this->db->fetch_object($resql); + if ($obj) { + if (! empty($contractlineprocessed[$obj->lid]) || ! empty($contractignored[$obj->rowid]) || ! empty($contracterror[$obj->rowid])) { + continue; + } + + // Load contract + $object = new Contrat($this->db); + $object->fetch($obj->rowid); // fetch also lines + $object->fetch_thirdparty(); + + if ($object->id <= 0) { + $error++; + $this->errors[] = 'Failed to load contract with id='.$obj->rowid; + continue; + } + + dol_syslog("* Process contract line in doRenewalContracts for contract id=".$object->id." ref=".$object->ref." ref_customer=".$object->ref_customer." contract line id=".$obj->lid); + + // Update expiration date of line + $expirationdate = $this->db->jdate($obj->date_fin_validite); + $duration_value = preg_replace('/[^0-9]/', '', $obj->duration); + $duration_unit = preg_replace('/\d/', '', $obj->duration); + //var_dump($expirationdate.' '.$enddatetoscan); + + // Test if there is pending invoice + $object->fetchObjectLinked(null, '', null, '', 'OR', 1, 'sourcetype', 1); + + if (is_array($object->linkedObjects['facture']) && count($object->linkedObjects['facture']) > 0) { + usort($object->linkedObjects['facture'], "cmp"); + + //dol_sort_array($contract->linkedObjects['facture'], 'date'); + $someinvoicenotpaid=0; + foreach ($object->linkedObjects['facture'] as $idinvoice => $invoice) { + if ($invoice->statut == Facture::STATUS_DRAFT) continue; // Draft invoice are not invoice not paid + + if (empty($invoice->paye)) { + $someinvoicenotpaid++; + } + } + if ($someinvoicenotpaid) { + $this->output .= 'Contract '.$object->ref.' is qualified for renewal but there is '.$someinvoicenotpaid.' invoice(s) unpayed so we cancel renewal'."\n"; + $contractignored[$object->id]=$object->ref; + continue; + } + } + + if ($expirationdate && $expirationdate < $enddatetoscan) { + dol_syslog("Define the newdate of end of services from expirationdate=".$expirationdate); + $newdate = $expirationdate; + $protecti=0; //$protecti is to avoid infinite loop + while ($newdate < $enddatetoscan && $protecti < 1000) { + $newdate = dol_time_plus_duree($newdate, $duration_value, $duration_unit); + $protecti++; + } + + if ($protecti < 1000) { // If not, there is a pb + // We will update the end of date of contrat, so first we refresh contract data + dol_syslog("We will update the end of date of contract with newdate = ".dol_print_date($newdate, 'dayhourrfc')); + + $this->db->begin(); + + $errorforlocaltransaction = 0; + + $label = 'Renewal of contrat '.$object->ref.' line '.$obj->lid; + $comment = 'Renew date of contract '.$object->ref.' line '.$obj->lid.' by doAutoRenewContracts'; + + $sqlupdate = 'UPDATE '.MAIN_DB_PREFIX."contratdet SET date_fin_validite = '".$this->db->idate($newdate)."'"; + $sqlupdate.= ' WHERE rowid = '.((int) $obj->lid); + $resqlupdate = $this->db->query($sqlupdate); + if ($resqlupdate) { + $contractlineprocessed[$obj->lid]=$object->ref; + + $actioncode = 'RENEW_CONTRACT'; + $now = dol_now(); + + // Create an event + $actioncomm = new ActionComm($this->db); + $actioncomm->type_code = 'AC_OTH_AUTO'; // Type of event ('AC_OTH', 'AC_OTH_AUTO', 'AC_XXX'...) + $actioncomm->code = 'AC_'.$actioncode; + $actioncomm->label = $label; + $actioncomm->datep = $now; + $actioncomm->datef = $now; + $actioncomm->percentage = -1; // Not applicable + $actioncomm->socid = $object->thirdparty->id; + $actioncomm->authorid = $user->id; // User saving action + $actioncomm->userownerid = $user->id; // Owner of action + $actioncomm->fk_element = $object->id; + $actioncomm->elementtype = 'contract'; + $actioncomm->note_private = $comment; + + $ret = $actioncomm->create($user); // User creating action + } else { + $contracterror[$object->id]=$object->ref; + + $error++; + $errorforlocaltransaction++; + $this->error = $this->db->lasterror(); + } + + if (! $errorforlocaltransaction) { + $this->db->commit(); + } else { + $this->db->rollback(); + } + } else { + $error++; + $this->error = "Bad value for newdate in doAutoRenewContracts - expirationdate=".$expirationdate." enddatetoscan=".$enddatetoscan." duration_value=".$duration_value." duration_unit=".$duration_value; + dol_syslog($this->error, LOG_ERR); + } + } + } + $i++; + } + } else { + $error++; + $this->error = $this->db->lasterror(); + } + + $this->output .= count($contractlineprocessed).' contract line(s) with end date before '.dol_print_date($enddatetoscan, 'day').' were renewed'.(count($contractlineprocessed)>0 ? ' : '.join(',', $contractlineprocessed) : ''); + + return ($error ? 1: 0); + } } @@ -3128,12 +3303,13 @@ class ContratLigne extends CommonObjectLine } } + // $this->oldcopy should have been set by the caller of update (here properties were already modified) + if (empty($this->oldcopy)) { + $this->oldcopy = dol_clone($this); + } $this->db->begin(); - $this->oldcopy = new ContratLigne($this->db); - $this->oldcopy->fetch($this->id); - // Update request $sql = "UPDATE ".MAIN_DB_PREFIX."contratdet SET"; $sql .= " fk_contrat=".((int) $this->fk_contrat).","; diff --git a/htdocs/contrat/index.php b/htdocs/contrat/index.php index 1b9ab289774..62b60d9a091 100644 --- a/htdocs/contrat/index.php +++ b/htdocs/contrat/index.php @@ -70,7 +70,10 @@ $productstatic = new Product($db); $now = dol_now(); -llxHeader(); +$title = $langs->trans("ContractsArea"); +$help_url = ''; + +llxHeader('', $title, $help_url); print load_fiche_titre($langs->trans("ContractsArea"), '', 'contract'); diff --git a/htdocs/contrat/list.php b/htdocs/contrat/list.php index 4f5d8d00b49..5ceec0a4cb9 100644 --- a/htdocs/contrat/list.php +++ b/htdocs/contrat/list.php @@ -872,8 +872,8 @@ while ($i < min($num, $limit)) { } // Country if (!empty($arrayfields['country.code_iso']['checked'])) { - print '
'; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/core/actions_addupdatedelete.inc.php b/htdocs/core/actions_addupdatedelete.inc.php index 506a1465fdc..c7dffe08691 100644 --- a/htdocs/core/actions_addupdatedelete.inc.php +++ b/htdocs/core/actions_addupdatedelete.inc.php @@ -61,7 +61,7 @@ if ($action == 'add' && !empty($permissiontoadd)) { continue; // The field was not submited to be saved } } else { - if (!GETPOSTISSET($key)) { + if (!GETPOSTISSET($key) && !preg_match('/^chkbxlst:/', $object->fields[$key]['type'])) { continue; // The field was not submited to be saved } } @@ -91,6 +91,12 @@ if ($action == 'add' && !empty($permissiontoadd)) { } elseif ($object->fields[$key]['type'] == 'reference') { $tmparraykey = array_keys($object->param_list); $value = $tmparraykey[GETPOST($key)].','.GETPOST($key.'2'); + } elseif (preg_match('/^chkbxlst:(.*)/', $object->fields[$key]['type'])) { + $value = ''; + $values_arr = GETPOST($key, 'array'); + if (!empty($values_arr)) { + $value = implode(',', $values_arr); + } } else { if ($key == 'lang') { $value = GETPOST($key, 'aZ09') ?GETPOST($key, 'aZ09') : ""; @@ -134,6 +140,8 @@ if ($action == 'add' && !empty($permissiontoadd)) { } if (!$error) { + $db->begin(); + $result = $object->create($user); if ($result > 0) { // Creation OK @@ -141,14 +149,19 @@ if ($action == 'add' && !empty($permissiontoadd)) { $categories = GETPOST('categories', 'array:int'); $object->setCategories($categories); } + $urltogo = $backtopage ? str_replace('__ID__', $result, $backtopage) : $backurlforlist; $urltogo = preg_replace('/--IDFORBACKTOPAGE--/', $object->id, $urltogo); // New method to autoselect project after a New on another form object creation + $db->commit(); + if (empty($noback)) { header("Location: " . $urltogo); exit; } } else { + $db->rollback(); + $error++; // Creation KO if (!empty($object->errors)) { @@ -177,7 +190,7 @@ if ($action == 'update' && !empty($permissiontoadd)) { continue; } } else { - if (!GETPOSTISSET($key)) { + if (!GETPOSTISSET($key) && !preg_match('/^chkbxlst:/', $object->fields[$key]['type'])) { continue; // The field was not submited to be saved } } @@ -215,6 +228,12 @@ if ($action == 'update' && !empty($permissiontoadd)) { $value = ((GETPOST($key, 'aZ09') == 'on' || GETPOST($key, 'aZ09') == '1') ? 1 : 0); } elseif ($object->fields[$key]['type'] == 'reference') { $value = array_keys($object->param_list)[GETPOST($key)].','.GETPOST($key.'2'); + } elseif (preg_match('/^chkbxlst:/', $object->fields[$key]['type'])) { + $value = ''; + $values_arr = GETPOST($key, 'array'); + if (!empty($values_arr)) { + $value = implode(',', $values_arr); + } } else { if ($key == 'lang') { $value = GETPOST($key, 'aZ09'); @@ -347,10 +366,10 @@ if ($action == 'confirm_deleteline' && $confirm == 'yes' && !empty($permissionto // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && is_object($object->thirdparty)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && is_object($object->thirdparty)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -423,10 +442,10 @@ if ($action == 'confirm_close' && $confirm == 'yes' && $permissiontoadd) { if (method_exists($object, 'generateDocument')) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -467,10 +486,10 @@ if ($action == 'confirm_reopen' && $confirm == 'yes' && $permissiontoadd) { if (method_exists($object, 'generateDocument')) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/core/actions_builddoc.inc.php b/htdocs/core/actions_builddoc.inc.php index 69d46dae51c..385b36bdbce 100644 --- a/htdocs/core/actions_builddoc.inc.php +++ b/htdocs/core/actions_builddoc.inc.php @@ -34,7 +34,7 @@ if (!empty($permissioncreate) && empty($permissiontoadd)) { } // Build doc -if ($action == 'builddoc' && $permissiontoadd) { +if ($action == 'builddoc' && ($permissiontoadd || !empty($usercangeneretedoc))) { if (is_numeric(GETPOST('model', 'alpha'))) { $error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Model")); } else { diff --git a/htdocs/core/actions_lineupdown.inc.php b/htdocs/core/actions_lineupdown.inc.php index 5aee952292b..d41f1f1932c 100644 --- a/htdocs/core/actions_lineupdown.inc.php +++ b/htdocs/core/actions_lineupdown.inc.php @@ -34,10 +34,10 @@ if ($action == 'up' && $permissiontoedit) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -59,10 +59,10 @@ if ($action == 'down' && $permissiontoedit) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/core/actions_massactions.inc.php b/htdocs/core/actions_massactions.inc.php index dfc9cdc7223..3f74ba7fdb2 100644 --- a/htdocs/core/actions_massactions.inc.php +++ b/htdocs/core/actions_massactions.inc.php @@ -74,6 +74,7 @@ if (!$error && $massaction == 'confirm_presend') { $nbignored = 0; $langs->load("mails"); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + include_once DOL_DOCUMENT_ROOT.'/core/lib/signature.lib.php'; $listofobjectid = array(); $listofobjectthirdparties = array(); @@ -668,6 +669,7 @@ if (!$error && $massaction == 'confirm_presend') { } } + if (!$error && $massaction == 'cancelorders') { $db->begin(); @@ -761,10 +763,10 @@ if (!$error && $massaction == "builddoc" && $permissiontoread && !GETPOST('butto // Define output language (Here it is not used because we do only merging existing PDF) $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - //elseif ($conf->global->MAIN_MULTILANGS && empty($newlang) && is_object($objecttmp->thirdparty)) { // On massaction, we can have several values for $objecttmp->thirdparty + //elseif (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && is_object($objecttmp->thirdparty)) { // On massaction, we can have several values for $objecttmp->thirdparty // $newlang = $objecttmp->thirdparty->default_lang; //} if (!empty($newlang)) { @@ -963,10 +965,10 @@ if (!$error && $massaction == 'validate' && $permissiontoadd) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $objecttmp->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1114,13 +1116,13 @@ if (!$error && $massaction == 'generate_doc' && $permissiontoread) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->thirdparty->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($objecttmp->thirdparty->default_lang)) { $newlang = $objecttmp->thirdparty->default_lang; // for proposal, order, invoice, ... } - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($objecttmp->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($objecttmp->default_lang)) { $newlang = $objecttmp->default_lang; // for thirdparty } if (!empty($newlang)) { diff --git a/htdocs/core/actions_sendmails.inc.php b/htdocs/core/actions_sendmails.inc.php index f0ef66eb78b..3749b403469 100644 --- a/htdocs/core/actions_sendmails.inc.php +++ b/htdocs/core/actions_sendmails.inc.php @@ -361,7 +361,7 @@ if (($action == 'send' || $action == 'relance') && !GETPOST('addfile') && !GETPO } $mailfile = new CMailFile($subject, $sendto, $from, $message, $filepath, $mimetype, $filename, $sendtocc, $sendtobcc, $deliveryreceipt, -1, '', '', $trackid, '', $sendcontext); - if ($mailfile->error) { + if (!empty($mailfile->error) || !empty($mailfile->errors)) { setEventMessages($mailfile->error, $mailfile->errors, 'errors'); $action = 'presend'; } else { @@ -427,9 +427,14 @@ if (($action == 'send' || $action == 'relance') && !GETPOST('addfile') && !GETPO } else { $langs->load("other"); $mesg = '
'; - if ($mailfile->error) { + if (!empty($mailfile->error) || !empty($mailfile->errors)) { $mesg .= $langs->transnoentities('ErrorFailedToSendMail', dol_escape_htmltag($from), dol_escape_htmltag($sendto)); - $mesg .= '
'.$mailfile->error; + if (!empty($mailfile->error)) { + $mesg .= '
'.$mailfile->error; + } + if (!empty($mailfile->errors) && is_array($mailfile->errors)) { + $mesg .= '
'.implode('
', $mailfile->errors); + } } else { $mesg .= $langs->transnoentities('ErrorFailedToSendMail', dol_escape_htmltag($from), dol_escape_htmltag($sendto)); if (!empty($conf->global->MAIN_DISABLE_ALL_MAILS)) { diff --git a/htdocs/core/actions_setnotes.inc.php b/htdocs/core/actions_setnotes.inc.php index 91e7f4a8aca..7595daf1093 100644 --- a/htdocs/core/actions_setnotes.inc.php +++ b/htdocs/core/actions_setnotes.inc.php @@ -45,10 +45,10 @@ if ($action == 'setnote_public' && !empty($permissionnote) && !GETPOST('cancel', if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/core/ajax/ajaxdirpreview.php b/htdocs/core/ajax/ajaxdirpreview.php index ce47cc3568f..7b29159b227 100644 --- a/htdocs/core/ajax/ajaxdirpreview.php +++ b/htdocs/core/ajax/ajaxdirpreview.php @@ -77,7 +77,7 @@ if (!isset($mode) || $mode != 'noajax') { // For ajax call $ecmdir = new EcmDirectory($db); if ($section > 0) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { //dol_print_error($db,$ecmdir->error); //exit; } @@ -90,7 +90,7 @@ if (!isset($mode) || $mode != 'noajax') { // For ajax call $relativepath = ''; if ($section > 0) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } diff --git a/htdocs/core/ajax/check_notifications.php b/htdocs/core/ajax/check_notifications.php index a5efb52e787..96a33f1f099 100644 --- a/htdocs/core/ajax/check_notifications.php +++ b/htdocs/core/ajax/check_notifications.php @@ -39,25 +39,6 @@ if (!defined('NOREQUIRETRAN')) { define('NOREQUIRETRAN', '1'); } -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', '1'); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("XFRAMEOPTIONS_ALLOWALL")) define('XFRAMEOPTIONS_ALLOWALL', '1'); // Do not add the HTTP header 'X-Frame-Options: SAMEORIGIN' but 'X-Frame-Options: ALLOWALL' - - require '../../main.inc.php'; //$time = (int) GETPOST('time', 'int'); // Use the time parameter that is always increased by time_update, even if call is late diff --git a/htdocs/core/ajax/onlineSign.php b/htdocs/core/ajax/onlineSign.php index 994ba5c42f3..0f4d274cc0d 100644 --- a/htdocs/core/ajax/onlineSign.php +++ b/htdocs/core/ajax/onlineSign.php @@ -53,12 +53,13 @@ if (is_numeric($entity)) { define("DOLENTITY", $entity); } include '../../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $action = GETPOST('action', 'aZ09'); $signature = GETPOST('signaturebase64'); $ref = GETPOST('ref', 'aZ09'); -$mode = GETPOST('mode', 'aZ09'); +$mode = GETPOST('mode', 'aZ09'); // 'proposal', ... $SECUREKEY = GETPOST("securekey"); // Secure key $error = 0; @@ -69,10 +70,10 @@ $type = $mode; // Check securitykey $securekeyseed = ''; if ($type == 'proposal') { - $securekeyseed = $conf->global->PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN; + $securekeyseed = getDolGlobalString('PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN'); } -if (!dol_verifyHash($securekeyseed.$type.$ref, $SECUREKEY, '0')) { +if (empty($SECUREKEY) || !dol_verifyHash($securekeyseed.$type.$ref.(empty($conf->multicompany->enabled) ? '' : $entity), $SECUREKEY, '0')) { http_response_code(403); print 'Bad value for securitykey. Value provided '.dol_escape_htmltag($SECUREKEY).' does not match expected value for ref='.dol_escape_htmltag($ref); exit(-1); @@ -122,28 +123,71 @@ if ($action == "importSignature") { } if (!$error) { - $newpdffilename = $upload_dir.$ref."_signed-".$date.".pdf"; + // Defined modele of doc + $last_main_doc_file = $object->last_main_doc; + $directdownloadlink = $object->getLastMainDocLink('proposal'); // url to download the $object->last_main_doc - $pdf = pdf_getInstance(); - $pdf->Open(); - $pdf->AddPage(); - $pagecount = $pdf->setSourceFile($upload_dir.$ref.".pdf"); // original PDF + if (preg_match('/\.pdf/i', $last_main_doc_file)) { + // TODO Use the $last_main_doc_file to defined the $newpdffilename and $sourcefile + $newpdffilename = $upload_dir.$ref."_signed-".$date.".pdf"; + $sourcefile = $upload_dir.$ref.".pdf"; - for ($i=1;$i<($pagecount+1);$i++) { - if ($i>1) $pdf->AddPage(); - $tppl=$pdf->importPage($i); - $pdf->useTemplate($tppl); + if (dol_is_file($sourcefile)) { + // We build the new PDF + $pdf = pdf_getInstance(); + if (class_exists('TCPDF')) { + $pdf->setPrintHeader(false); + $pdf->setPrintFooter(false); + } + $pdf->SetFont(pdf_getPDFFont($langs)); + + if (getDolGlobalString('MAIN_DISABLE_PDF_COMPRESSION')) { + $pdf->SetCompression(false); + } + + + //$pdf->Open(); + $pagecount = $pdf->setSourceFile($sourcefile); // original PDF + + $s = array(); // Array with size of each page. Exemple array(w'=>210, 'h'=>297); + for ($i=1; $i<($pagecount+1); $i++) { + try { + $tppl = $pdf->importPage($i); + $s = $pdf->getTemplatesize($tppl); + $pdf->AddPage($s['h'] > $s['w'] ? 'P' : 'L'); + $pdf->useTemplate($tppl); + } catch (Exception $e) { + dol_syslog("Error when manipulating some PDF by onlineSign: ".$e->getMessage(), LOG_ERR); + $response = $e->getMessage(); + $error++; + } + } + + // A signature image file is 720 x 180 (ratio 1/4) but we use only the size into PDF + // TODO Get position of box from PDF template + $xforimgstart = (empty($s['w']) ? 120 : round($s['w'] / 2) + 15); + $yforimgstart = (empty($s['h']) ? 240 : $s['h'] - 60); + $wforimg = $s['w'] - 20 - $xforimgstart; + + $pdf->Image($upload_dir.$filename, $xforimgstart, $yforimgstart, $wforimg, round($wforimg / 4)); + //$pdf->Close(); + $pdf->Output($newpdffilename, "F"); + + // Index the new file and update the last_main_doc property of object. + $object->indexFile($newpdffilename, 1); + } + } elseif (preg_match('/\.odt/i', $last_main_doc_file)) { + // Adding signature on .ODT not yet supported + // TODO + } else { + // Document format not supported to insert online signature. + // We should just create an image file with the signature. } + } - $pdf->Image($upload_dir.$filename, 129, 239.6, 60, 15); // FIXME Position will be wrong with non A4 format. Use a value from width and height of page minus relative offset. - $pdf->Close(); - $pdf->Output($newpdffilename, "F"); - + if (!$error) { $db->begin(); - // Index the new file and update the last_main_doc property of object. - $object->indexFile($newpdffilename, 1); - $online_sign_ip = getUserRemoteIP(); $online_sign_name = ''; // TODO Ask name on form to sign diff --git a/htdocs/core/ajax/pingresult.php b/htdocs/core/ajax/pingresult.php index 202dfbae390..8e3cc622512 100644 --- a/htdocs/core/ajax/pingresult.php +++ b/htdocs/core/ajax/pingresult.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2019-2022 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,7 +17,8 @@ /** * \file htdocs/core/ajax/pingresult.php - * \brief File to save result of an anonymous ping into database (1 ping is done per installation) + * \brief Page called after a ping was done in js to the official dolibarr ping service. + * This ajax URL is called with parameter 'firstpingok' or 'firstpingko' depending on the result of the ping. */ if (!defined('NOTOKENRENEWAL')) { diff --git a/htdocs/core/ajax/security.php b/htdocs/core/ajax/security.php index 0056120c6bd..1f2143d4b72 100644 --- a/htdocs/core/ajax/security.php +++ b/htdocs/core/ajax/security.php @@ -42,6 +42,9 @@ if (!defined('NOREQUIRETRAN')) { require '../../main.inc.php'; +$action = GETPOST('action'); + + /* * View */ @@ -52,10 +55,10 @@ top_httphead(); //print ''."\n"; // Registering the location of boxes -if (isset($_GET['action']) && !empty($_GET['action'])) { - if ($_GET['action'] == 'getrandompassword' && ($user->admin || $user->rights->api->apikey->generate)) { +if ($action) { + if ($action == 'getrandompassword' && ($user->admin || $user->rights->api->apikey->generate)) { require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - $generic = $_GET['generic'] ? true : false; + $generic = GETPOST('generic') ? true : false; echo getRandomPassword($generic); } } diff --git a/htdocs/core/ajax/selectsearchbox.php b/htdocs/core/ajax/selectsearchbox.php index c1199477f58..54e3e1e4470 100644 --- a/htdocs/core/ajax/selectsearchbox.php +++ b/htdocs/core/ajax/selectsearchbox.php @@ -64,63 +64,62 @@ $arrayresult = array(); // Define $searchform -if (!empty($conf->adherent->enabled) && empty($conf->global->MAIN_SEARCHFORM_ADHERENT_DISABLED) && $user->rights->adherent->lire) { +if (isModEnabled('adherent') && empty($conf->global->MAIN_SEARCHFORM_ADHERENT_DISABLED) && $user->hasRight('adherent', 'lire')) { $arrayresult['searchintomember'] = array('position'=>8, 'shortcut'=>'M', 'img'=>'object_member', 'label'=>$langs->trans("SearchIntoMembers", $search_boxvalue), 'text'=>img_picto('', 'object_member', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMembers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/adherents/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (((!empty($conf->societe->enabled) && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))) && empty($conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED) && $user->rights->societe->lire) { +if (((isModEnabled('societe') && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS))) || ((isModEnabled('fournisseur') && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled('supplier_order') || isModEnabled('supplier_invoice'))) && empty($conf->global->MAIN_SEARCHFORM_SOCIETE_DISABLED) && $user->hasRight('societe', 'lire')) { $arrayresult['searchintothirdparty'] = array('position'=>10, 'shortcut'=>'T', 'img'=>'object_company', 'label'=>$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'text'=>img_picto('', 'object_company', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoThirdparties", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/societe/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->societe->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED) && $user->rights->societe->lire) { +if (isModEnabled('societe') && empty($conf->global->MAIN_SEARCHFORM_CONTACT_DISABLED) && $user->hasRight('societe', 'lire')) { $arrayresult['searchintocontact'] = array('position'=>15, 'shortcut'=>'A', 'img'=>'object_contact', 'label'=>$langs->trans("SearchIntoContacts", $search_boxvalue), 'text'=>img_picto('', 'object_contact', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoContacts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contact/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (((!empty($conf->product->enabled) && $user->rights->produit->lire) || (!empty($conf->service->enabled) && $user->rights->service->lire)) -&& empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_DISABLED)) { +if (((isModEnabled('product') && $user->hasRight('produit', 'lire')) || (isModEnabled('service') && $user->hasRight('service', 'lire'))) && empty($conf->global->MAIN_SEARCHFORM_PRODUITSERVICE_DISABLED)) { $arrayresult['searchintoproduct'] = array('position'=>30, 'shortcut'=>'P', 'img'=>'object_product', 'label'=>$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'text'=>img_picto('', 'object_product', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProductsOrServices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); // search on lot/serial numbers - if ( ! empty($conf->productbatch->enabled) ) { + if (isModEnabled('productbatch')) { $arrayresult['searchintobatch'] = array('position'=>32, 'shortcut'=>'B', 'img'=>'object_lot', 'label'=>$langs->trans("SearchIntoBatch", $search_boxvalue), 'text'=>img_picto('', 'object_lot', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoBatch", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/product/stock/productlot_list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } } -if (!empty($conf->mrp->enabled) && $user->rights->mrp->read && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) { +if (isModEnabled('mrp') && $user->hasRight('mrp', 'read') && empty($conf->global->MAIN_SEARCHFORM_MRP_DISABLED)) { $arrayresult['searchintomo'] = array('position'=>35, 'shortcut'=>'', 'img'=>'object_mrp', 'label'=>$langs->trans("SearchIntoMO", $search_boxvalue), 'text'=>img_picto('', 'object_mrp', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoMO", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/mrp/mo_list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->project->enabled) && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->rights->projet->lire) { +if (isModEnabled('project') && empty($conf->global->MAIN_SEARCHFORM_PROJECT_DISABLED) && $user->hasRight('projet', 'lire')) { $arrayresult['searchintoprojects'] = array('position'=>40, 'shortcut'=>'Q', 'img'=>'object_project', 'label'=>$langs->trans("SearchIntoProjects", $search_boxvalue), 'text'=>img_picto('', 'object_project', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoProjects", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->project->enabled) && empty($conf->global->MAIN_SEARCHFORM_TASK_DISABLED) && $user->rights->projet->lire) { +if (isModEnabled('project') && empty($conf->global->MAIN_SEARCHFORM_TASK_DISABLED) && $user->hasRight('projet', 'lire')) { $arrayresult['searchintotasks'] = array('position'=>45, 'img'=>'object_projecttask', 'label'=>$langs->trans("SearchIntoTasks", $search_boxvalue), 'text'=>img_picto('', 'object_projecttask', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoTasks", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/projet/tasks/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->propal->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_PROPAL_DISABLED) && $user->rights->propal->lire) { +if (isModEnabled('propal') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_PROPAL_DISABLED) && $user->hasRight('propal', 'lire')) { $arrayresult['searchintopropal'] = array('position'=>60, 'img'=>'object_propal', 'label'=>$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'text'=>img_picto('', 'object_propal', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/comm/propal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->commande->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_ORDER_DISABLED) && $user->rights->commande->lire) { +if (isModEnabled('commande') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_ORDER_DISABLED) && $user->hasRight('commande', 'lire')) { $arrayresult['searchintoorder'] = array('position'=>70, 'img'=>'object_order', 'label'=>$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'text'=>img_picto('', 'object_order', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/commande/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->expedition->enabled) && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_SHIPMENT_DISABLED) && $user->rights->expedition->lire) { +if (isModEnabled('expedition') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_SHIPMENT_DISABLED) && $user->hasRight('expedition', 'lire')) { $arrayresult['searchintoshipment'] = array('position'=>80, 'img'=>'object_shipment', 'label'=>$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'text'=>img_picto('', 'object_shipment', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerShipments", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expedition/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (isModEnabled('facture') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->rights->facture->lire) { +if (isModEnabled('facture') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->hasRight('facture', 'lire')) { $arrayresult['searchintoinvoice'] = array('position'=>90, 'img'=>'object_bill', 'label'=>$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_bill', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoCustomerInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/compta/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->supplier_proposal->enabled) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->rights->supplier_proposal->lire) { +if (isModEnabled('supplier_proposal') && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_PROPAL_DISABLED) && $user->hasRight('supplier_proposal', 'lire')) { $arrayresult['searchintosupplierpropal'] = array('position'=>100, 'img'=>'object_supplier_proposal', 'label'=>$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_proposal', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierProposals", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/supplier_proposal/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire)) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED)) { +if (((isModEnabled('fournisseur') && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight('fournisseur', 'commande', 'lire')) || (isModEnabled('supplier_order') && $user->hasRight('supplier_order', 'lire'))) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_ORDER_DISABLED)) { $arrayresult['searchintosupplierorder'] = array('position'=>110, 'img'=>'object_supplier_order', 'label'=>$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_order', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierOrders", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/commande/list.php'.($search_boxvalue ? '?search_all='.urlencode($search_boxvalue) : '')); } -if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED)) { +if (((isModEnabled('fournisseur') && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight('fournisseur', 'facture', 'lire')) || (isModEnabled('supplier_invoice') && $user->hasRight('supplier_invoice', 'lire'))) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED)) { $arrayresult['searchintosupplierinvoice'] = array('position'=>120, 'img'=>'object_supplier_invoice', 'label'=>$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'text'=>img_picto('', 'object_supplier_invoice', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoSupplierInvoices", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fourn/facture/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } // Customer payments -if (isModEnabled('facture') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->rights->facture->lire) { +if (isModEnabled('facture') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INVOICE_DISABLED) && $user->hasRight('facture', 'lire')) { $arrayresult['searchintocustomerpayments'] = array( 'position'=>170, 'img'=>'object_payment', @@ -130,7 +129,7 @@ if (isModEnabled('facture') && empty($conf->global->MAIN_SEARCHFORM_CUSTOMER_INV } // Vendor payments -if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED)) { +if (((isModEnabled('fournisseur') && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight('fournisseur', 'facture', 'lire')) || (isModEnabled('supplier_invoice') && $user->hasRight('supplier_invoice', 'lire'))) && empty($conf->global->MAIN_SEARCHFORM_SUPPLIER_INVOICE_DISABLED)) { $arrayresult['searchintovendorpayments'] = array( 'position'=>175, 'img'=>'object_payment', @@ -140,7 +139,7 @@ if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_S } // Miscellaneous payments -if (!empty($conf->banque->enabled) && empty($conf->global->MAIN_SEARCHFORM_MISC_PAYMENTS_DISABLED) && $user->rights->banque->lire) { +if (isModEnabled('banque') && empty($conf->global->MAIN_SEARCHFORM_MISC_PAYMENTS_DISABLED) && $user->hasRight('banque', 'lire')) { $arrayresult['searchintomiscpayments'] = array( 'position'=>180, 'img'=>'object_payment', @@ -149,24 +148,24 @@ if (!empty($conf->banque->enabled) && empty($conf->global->MAIN_SEARCHFORM_MISC_ 'url'=>DOL_URL_ROOT.'/compta/bank/various_payment/list.php?leftmenu=tax_various'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->contrat->enabled) && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->rights->contrat->lire) { +if (isModEnabled('contrat') && empty($conf->global->MAIN_SEARCHFORM_CONTRACT_DISABLED) && $user->hasRight('contrat', 'lire')) { $arrayresult['searchintocontract'] = array('position'=>130, 'img'=>'object_contract', 'label'=>$langs->trans("SearchIntoContracts", $search_boxvalue), 'text'=>img_picto('', 'object_contract', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoContracts", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/contrat/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->ficheinter->enabled) && empty($conf->global->MAIN_SEARCHFORM_FICHINTER_DISABLED) && $user->rights->ficheinter->lire) { +if (isModEnabled('ficheinter') && empty($conf->global->MAIN_SEARCHFORM_FICHINTER_DISABLED) && $user->hasRight('ficheinter', 'lire')) { $arrayresult['searchintointervention'] = array('position'=>140, 'img'=>'object_intervention', 'label'=>$langs->trans("SearchIntoInterventions", $search_boxvalue), 'text'=>img_picto('', 'object_intervention', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoInterventions", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/fichinter/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->ticket->enabled) && empty($conf->global->MAIN_SEARCHFORM_TICKET_DISABLED) && $user->rights->ticket->read) { +if (isModEnabled('ticket') && empty($conf->global->MAIN_SEARCHFORM_TICKET_DISABLED) && $user->hasRight('ticket', 'read')) { $arrayresult['searchintotickets'] = array('position'=>145, 'img'=>'object_ticket', 'label'=>$langs->trans("SearchIntoTickets", $search_boxvalue), 'text'=>img_picto('', 'object_ticket', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoTickets", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/ticket/list.php?mainmenu=ticket'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } // HR -if (!empty($conf->user->enabled) && empty($conf->global->MAIN_SEARCHFORM_USER_DISABLED) && $user->rights->user->user->lire) { +if (isModEnabled('user') && empty($conf->global->MAIN_SEARCHFORM_USER_DISABLED) && $user->hasRight('user', 'user', 'lire')) { $arrayresult['searchintouser'] = array('position'=>200, 'shortcut'=>'U', 'img'=>'object_user', 'label'=>$langs->trans("SearchIntoUsers", $search_boxvalue), 'text'=>img_picto('', 'object_user', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoUsers", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/user/list.php'.($search_boxvalue ? '?sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->expensereport->enabled) && empty($conf->global->MAIN_SEARCHFORM_EXPENSEREPORT_DISABLED) && $user->rights->expensereport->lire) { +if (isModEnabled('expensereport') && empty($conf->global->MAIN_SEARCHFORM_EXPENSEREPORT_DISABLED) && $user->hasRight('expensereport', 'lire')) { $arrayresult['searchintoexpensereport'] = array('position'=>210, 'img'=>'object_trip', 'label'=>$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'text'=>img_picto('', 'object_trip', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoExpenseReports", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/expensereport/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } -if (!empty($conf->holiday->enabled) && empty($conf->global->MAIN_SEARCHFORM_HOLIDAY_DISABLED) && $user->rights->holiday->read) { +if (isModEnabled('holiday') && empty($conf->global->MAIN_SEARCHFORM_HOLIDAY_DISABLED) && $user->hasRight('holiday', 'read')) { $arrayresult['searchintoleaves'] = array('position'=>220, 'img'=>'object_holiday', 'label'=>$langs->trans("SearchIntoLeaves", $search_boxvalue), 'text'=>img_picto('', 'object_holiday', 'class="pictofixedwidth"').' '.$langs->trans("SearchIntoLeaves", $search_boxvalue), 'url'=>DOL_URL_ROOT.'/holiday/list.php?mainmenu=hrm'.($search_boxvalue ? '&sall='.urlencode($search_boxvalue) : '')); } diff --git a/htdocs/core/boxes/box_accountancy_last_manual_entries.php b/htdocs/core/boxes/box_accountancy_last_manual_entries.php index 96abd8699f3..a15728a04f0 100644 --- a/htdocs/core/boxes/box_accountancy_last_manual_entries.php +++ b/htdocs/core/boxes/box_accountancy_last_manual_entries.php @@ -60,7 +60,7 @@ class box_accountancy_last_manual_entries extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->accounting->mouvements->lire); + $this->hidden = empty($user->rights->accounting->mouvements->lire); } /** diff --git a/htdocs/core/boxes/box_accountancy_suspense_account.php b/htdocs/core/boxes/box_accountancy_suspense_account.php index f40c6e8a41b..3ea5b191799 100644 --- a/htdocs/core/boxes/box_accountancy_suspense_account.php +++ b/htdocs/core/boxes/box_accountancy_suspense_account.php @@ -60,7 +60,7 @@ class box_accountancy_suspense_account extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->accounting->mouvements->lire); + $this->hidden = empty($user->rights->accounting->mouvements->lire); } /** diff --git a/htdocs/core/boxes/box_actions.php b/htdocs/core/boxes/box_actions.php index ee41df3cdd2..fb0f93086d2 100644 --- a/htdocs/core/boxes/box_actions.php +++ b/htdocs/core/boxes/box_actions.php @@ -34,7 +34,7 @@ class box_actions extends ModeleBoxes { public $boxcode = "lastactions"; public $boximg = "object_action"; - public $boxlabel = "BoxLastActions"; + public $boxlabel = "BoxOldestActions"; public $depends = array("agenda"); /** @@ -62,7 +62,7 @@ class box_actions extends ModeleBoxes $this->enabled = $conf->agenda->enabled; - $this->hidden = !($user->rights->agenda->myactions->read); + $this->hidden = !($user->hasRight('agenda', 'myactions', 'read')); } /** @@ -82,7 +82,7 @@ class box_actions extends ModeleBoxes $societestatic = new Societe($this->db); $actionstatic = new ActionComm($this->db); - $this->info_box_head = array('text' => $langs->trans("BoxTitleLastActionsToDo", $max)); + $this->info_box_head = array('text' => $langs->trans("BoxTitleOldestActionsToDo", $max)); if ($user->rights->agenda->myactions->read) { $sql = "SELECT a.id, a.label, a.datep as dp, a.percent as percentage"; @@ -108,7 +108,7 @@ class box_actions extends ModeleBoxes if (empty($user->rights->agenda->allactions->read)) { $sql .= " AND (a.fk_user_author = ".((int) $user->id)." OR a.fk_user_action = ".((int) $user->id)." OR a.fk_user_done = ".((int) $user->id).")"; } - $sql .= " ORDER BY a.datec DESC"; + $sql .= " ORDER BY a.datep ASC"; $sql .= $this->db->plimit($max, 0); dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); diff --git a/htdocs/core/boxes/box_activity.php b/htdocs/core/boxes/box_activity.php index ea43eff12fc..12656518efc 100644 --- a/htdocs/core/boxes/box_activity.php +++ b/htdocs/core/boxes/box_activity.php @@ -63,8 +63,8 @@ class box_activity extends ModeleBoxes $this->enabled = ($conf->global->MAIN_FEATURES_LEVEL); // Not enabled by default due to bugs (see previous comments) $this->hidden = !((isModEnabled('facture') && $user->rights->facture->lire) - || (!empty($conf->commande->enabled) && $user->rights->commande->lire) - || (!empty($conf->propal->enabled) && $user->rights->propale->lire) + || (isModEnabled('commande') && $user->rights->commande->lire) + || (isModEnabled('propal') && $user->rights->propale->lire) ); } @@ -102,7 +102,7 @@ class box_activity extends ModeleBoxes // list the summary of the propals - if (!empty($conf->propal->enabled) && $user->rights->propale->lire) { + if (isModEnabled("propal") && $user->rights->propale->lire) { include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $propalstatic = new Propal($this->db); diff --git a/htdocs/core/boxes/box_birthdays.php b/htdocs/core/boxes/box_birthdays.php index 9462c810393..6aec6f4064a 100644 --- a/htdocs/core/boxes/box_birthdays.php +++ b/htdocs/core/boxes/box_birthdays.php @@ -85,13 +85,19 @@ class box_birthdays extends ModeleBoxes if ($user->rights->user->user->lire) { $tmparray = dol_getdate(dol_now(), true); - $sql = "SELECT u.rowid, u.firstname, u.lastname, u.birth, u.email, u.statut as status"; + $sql = "SELECT u.rowid, u.firstname, u.lastname, u.birth as datea, 'birth' as typea, u.email, u.statut as status"; $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $sql .= " WHERE u.entity IN (".getEntity('user').")"; $sql .= " AND u.statut = 1"; $sql .= dolSqlDateFilter('u.birth', 0, $tmparray['mon'], 0); - $sql .= " ORDER BY DAY(u.birth) ASC"; - $sql .= $this->db->plimit($max, 0); + $sql .= ' UNION '; + $sql .= "SELECT u.rowid, u.firstname, u.lastname, u.dateemployment as datea, 'employment' as typea, u.email, u.statut as status"; + $sql .= " FROM ".MAIN_DB_PREFIX."user as u"; + $sql .= " WHERE u.entity IN (".getEntity('user').")"; + $sql .= " AND u.statut = 1"; + $sql .= dolSqlDateFilter('u.dateemployment', 0, $tmparray['mon'], 0); + + $sql .= " ORDER BY DAY(datea) ASC"; dol_syslog(get_class($this)."::loadBox", LOG_DEBUG); $result = $this->db->query($sql); @@ -108,9 +114,13 @@ class box_birthdays extends ModeleBoxes $userstatic->email = $objp->email; $userstatic->statut = $objp->status; - $dateb = $this->db->jdate($objp->birth); + $dateb = $this->db->jdate($objp->datea); $age = date('Y', dol_now()) - date('Y', $dateb); + $picb = ''; + $pice = ''; + $typea = ($objp->typea == 'birth') ? $picb : $pice; + $this->info_box_contents[$line][] = array( 'td' => '', 'text' => $userstatic->getNomUrl(1), @@ -119,7 +129,18 @@ class box_birthdays extends ModeleBoxes $this->info_box_contents[$line][] = array( 'td' => 'class="center nowraponall"', - 'text' => dol_print_date($dateb, "day", 'tzserver').' - '.$age.' '.$langs->trans('DurationYears') + 'text' => dol_print_date($dateb, "day", 'tzserver') + ); + + $this->info_box_contents[$line][] = array( + 'td' => 'class="right nowraponall"', + 'text' => $age.' '.$langs->trans('DurationYears') + ); + + $this->info_box_contents[$line][] = array( + 'td' => 'class="center nowraponall"', + 'text' => $typea, + 'asis' => 1 ); /*$this->info_box_contents[$line][] = array( diff --git a/htdocs/core/boxes/box_boms.php b/htdocs/core/boxes/box_boms.php index a9a4f8746da..2ace554eb55 100644 --- a/htdocs/core/boxes/box_boms.php +++ b/htdocs/core/boxes/box_boms.php @@ -60,7 +60,7 @@ class box_boms extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->bom->read); + $this->hidden = empty($user->rights->bom->read); } /** diff --git a/htdocs/core/boxes/box_bookmarks.php b/htdocs/core/boxes/box_bookmarks.php index 1a3a1183032..3e8abd587c0 100644 --- a/htdocs/core/boxes/box_bookmarks.php +++ b/htdocs/core/boxes/box_bookmarks.php @@ -56,7 +56,7 @@ class box_bookmarks extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->bookmark->lire); + $this->hidden = empty($user->rights->bookmark->lire); } /** diff --git a/htdocs/core/boxes/box_commandes.php b/htdocs/core/boxes/box_commandes.php index b5656c36292..f4aec2075d7 100644 --- a/htdocs/core/boxes/box_commandes.php +++ b/htdocs/core/boxes/box_commandes.php @@ -60,7 +60,7 @@ class box_commandes extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->commande->lire); + $this->hidden = empty($user->rights->commande->lire); } /** diff --git a/htdocs/core/boxes/box_comptes.php b/htdocs/core/boxes/box_comptes.php index 5570051a065..606f8409161 100644 --- a/htdocs/core/boxes/box_comptes.php +++ b/htdocs/core/boxes/box_comptes.php @@ -68,7 +68,7 @@ class box_comptes extends ModeleBoxes $this->enabled = 0; // disabled for external users } - $this->hidden = !($user->rights->banque->lire); + $this->hidden = empty($user->rights->banque->lire); } /** diff --git a/htdocs/core/boxes/box_contacts.php b/htdocs/core/boxes/box_contacts.php index ea35a080d0e..f257d7db18d 100644 --- a/htdocs/core/boxes/box_contacts.php +++ b/htdocs/core/boxes/box_contacts.php @@ -63,7 +63,7 @@ class box_contacts extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->societe->lire && $user->rights->societe->contact->lire); + $this->hidden = !($user->hasRight('societe', 'lire') && $user->hasRight('societe', 'contact', 'lire')); } /** diff --git a/htdocs/core/boxes/box_contracts.php b/htdocs/core/boxes/box_contracts.php index dddafffdc02..99ea5541c98 100644 --- a/htdocs/core/boxes/box_contracts.php +++ b/htdocs/core/boxes/box_contracts.php @@ -59,7 +59,7 @@ class box_contracts extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->contrat->lire); + $this->hidden = !($user->hasRight('contrat', 'lire')); } /** diff --git a/htdocs/core/boxes/box_dolibarr_state_board.php b/htdocs/core/boxes/box_dolibarr_state_board.php index b25a42228e7..a979e3e5a36 100644 --- a/htdocs/core/boxes/box_dolibarr_state_board.php +++ b/htdocs/core/boxes/box_dolibarr_state_board.php @@ -112,32 +112,32 @@ class box_dolibarr_state_board extends ModeleBoxes 'dolresource' ); $conditions = array( - 'users' => $user->rights->user->user->lire, - 'members' => !empty($conf->adherent->enabled) && $user->rights->adherent->lire, - 'customers' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), - 'prospects' => !empty($conf->societe->enabled) && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), - 'suppliers' => ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->lire) - || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire) - || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire) + 'users' => $user->hasRight('user', 'user', 'lire'), + 'members' => isModEnabled('adherent') && $user->rights->adherent->lire, + 'customers' => isModEnabled('societe') && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS_STATS), + 'prospects' => isModEnabled('societe') && $user->rights->societe->lire && empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_PROSPECTS_STATS), + 'suppliers' => ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->lire) + || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire) + || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire) ) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS), - 'contacts' => !empty($conf->societe->enabled) && $user->rights->societe->contact->lire, - 'products' => !empty($conf->product->enabled) && $user->rights->produit->lire, - 'services' => !empty($conf->service->enabled) && $user->rights->service->lire, - 'proposals' => !empty($conf->propal->enabled) && $user->rights->propale->lire, - 'orders' => !empty($conf->commande->enabled) && $user->rights->commande->lire, - 'invoices' => isModEnabled('facture') && $user->rights->facture->lire, - 'donations' => !empty($conf->don->enabled) && $user->rights->don->lire, - 'contracts' => !empty($conf->contrat->enabled) && $user->rights->contrat->lire, - 'interventions' => !empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire, - 'supplier_orders' => !empty($conf->supplier_order->enabled) && $user->rights->fournisseur->commande->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_ORDERS_STATS), - 'supplier_invoices' => !empty($conf->supplier_invoice->enabled) && $user->rights->fournisseur->facture->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_INVOICES_STATS), - 'supplier_proposals' => !empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_PROPOSAL_STATS), - 'projects' => !empty($conf->project->enabled) && $user->rights->projet->lire, - 'expensereports' => !empty($conf->expensereport->enabled) && $user->rights->expensereport->lire, - 'holidays' => !empty($conf->holiday->enabled) && $user->rights->holiday->read, - 'ticket' => !empty($conf->ticket->enabled) && $user->rights->ticket->read, - 'dolresource' => !empty($conf->resource->enabled) && $user->rights->resource->read + 'contacts' => isModEnabled('societe') && $user->hasRight('societe', 'contact', 'lire'), + 'products' => isModEnabled('product') && $user->hasRight('produit', 'lire'), + 'services' => isModEnabled('service') && $user->hasRight('service', 'lire'), + 'proposals' => isModEnabled('propal') && $user->hasRight('propale', 'lire'), + 'orders' => isModEnabled('commande') && $user->hasRight('commande', 'lire'), + 'invoices' => isModEnabled('facture') && $user->hasRight('facture', 'lire'), + 'donations' => isModEnabled('don') && $user->hasRight('don', 'lire'), + 'contracts' => isModEnabled('contrat') && $user->hasRight('contrat', 'lire'), + 'interventions' => isModEnabled('ficheinter') && $user->hasRight('ficheinter', 'lire'), + 'supplier_orders' => isModEnabled('supplier_order') && $user->rights->fournisseur->commande->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_ORDERS_STATS), + 'supplier_invoices' => isModEnabled('supplier_invoice') && $user->rights->fournisseur->facture->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_INVOICES_STATS), + 'supplier_proposals' => isModEnabled('supplier_proposal') && $user->rights->supplier_proposal->lire && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_PROPOSAL_STATS), + 'projects' => isModEnabled('project') && $user->hasRight('projet', 'lire'), + 'expensereports' => isModEnabled('expensereport') && $user->hasRight('expensereport', 'lire'), + 'holidays' => isModEnabled('holiday') && $user->hasRight('holiday', 'read'), + 'ticket' => isModEnabled('ticket') && $user->hasRight('ticket', 'read'), + 'dolresource' => isModEnabled('resource') && $user->hasRight('resource', 'read') ); $classes = array( 'users' => 'User', @@ -209,7 +209,7 @@ class box_dolibarr_state_board extends ModeleBoxes 'expensereports' => DOL_URL_ROOT . '/expensereport/list.php?mainmenu=hrm&leftmenu=expensereport', 'holidays' => DOL_URL_ROOT . '/holiday/list.php?mainmenu=hrm&leftmenu=holiday', 'ticket' => DOL_URL_ROOT . '/ticket/list.php?leftmenu=ticket', - 'dolresource' => DOL_URL_ROOT . '/resource/list.php?mainmenu=tools', + 'dolresource' => DOL_URL_ROOT . '/resource/list.php?mainmenu=agenda', ); $titres = array( 'users' => "Users", diff --git a/htdocs/core/boxes/box_factures.php b/htdocs/core/boxes/box_factures.php index 43087949e47..e34e89c97eb 100644 --- a/htdocs/core/boxes/box_factures.php +++ b/htdocs/core/boxes/box_factures.php @@ -58,7 +58,7 @@ class box_factures extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->facture->lire); + $this->hidden = empty($user->rights->facture->lire); } /** diff --git a/htdocs/core/boxes/box_factures_fourn.php b/htdocs/core/boxes/box_factures_fourn.php index 5fc3bdafa38..06124d4ab35 100644 --- a/htdocs/core/boxes/box_factures_fourn.php +++ b/htdocs/core/boxes/box_factures_fourn.php @@ -59,7 +59,7 @@ class box_factures_fourn extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->facture->lire); + $this->hidden = !($user->hasRight('fournisseur', 'facture', 'lire')); } /** diff --git a/htdocs/core/boxes/box_factures_fourn_imp.php b/htdocs/core/boxes/box_factures_fourn_imp.php index d8c9321411d..ad6c6c97c27 100644 --- a/htdocs/core/boxes/box_factures_fourn_imp.php +++ b/htdocs/core/boxes/box_factures_fourn_imp.php @@ -58,7 +58,7 @@ class box_factures_fourn_imp extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->facture->lire); + $this->hidden = !($user->hasRight('fournisseur', 'facture', 'lire')); } /** diff --git a/htdocs/core/boxes/box_factures_imp.php b/htdocs/core/boxes/box_factures_imp.php index 6d6893f8ae2..a6103c26257 100644 --- a/htdocs/core/boxes/box_factures_imp.php +++ b/htdocs/core/boxes/box_factures_imp.php @@ -61,7 +61,7 @@ class box_factures_imp extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->facture->lire); + $this->hidden = empty($user->rights->facture->lire); } /** diff --git a/htdocs/core/boxes/box_ficheinter.php b/htdocs/core/boxes/box_ficheinter.php index b0f0e691471..f69ccb0ad94 100644 --- a/htdocs/core/boxes/box_ficheinter.php +++ b/htdocs/core/boxes/box_ficheinter.php @@ -59,7 +59,7 @@ class box_ficheinter extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->ficheinter->lire); + $this->hidden = !($user->hasRight('ficheinter', 'lire')); } /** diff --git a/htdocs/core/boxes/box_goodcustomers.php b/htdocs/core/boxes/box_goodcustomers.php index ab425ceac87..3341e08107d 100644 --- a/htdocs/core/boxes/box_goodcustomers.php +++ b/htdocs/core/boxes/box_goodcustomers.php @@ -69,7 +69,7 @@ class box_goodcustomers extends ModeleBoxes $this->enabled = 0; // not enabled by default. Very slow on large database } - $this->hidden = !($user->rights->societe->lire); + $this->hidden = empty($user->rights->societe->lire); } /** diff --git a/htdocs/core/boxes/box_graph_invoices_permonth.php b/htdocs/core/boxes/box_graph_invoices_permonth.php index 8179e134bcf..03b0e1d087b 100644 --- a/htdocs/core/boxes/box_graph_invoices_permonth.php +++ b/htdocs/core/boxes/box_graph_invoices_permonth.php @@ -56,7 +56,7 @@ class box_graph_invoices_permonth extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->facture->lire); + $this->hidden = empty($user->rights->facture->lire); } /** diff --git a/htdocs/core/boxes/box_graph_invoices_peryear.php b/htdocs/core/boxes/box_graph_invoices_peryear.php index 9126cfcfb37..5a9b84829f2 100644 --- a/htdocs/core/boxes/box_graph_invoices_peryear.php +++ b/htdocs/core/boxes/box_graph_invoices_peryear.php @@ -54,7 +54,7 @@ class box_graph_invoices_peryear extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->facture->lire); + $this->hidden = empty($user->rights->facture->lire); } /** diff --git a/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php b/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php index fc91cb692c1..75e51e071f8 100644 --- a/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php +++ b/htdocs/core/boxes/box_graph_invoices_supplier_permonth.php @@ -56,7 +56,7 @@ class box_graph_invoices_supplier_permonth extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->facture->lire); + $this->hidden = empty($user->rights->fournisseur->facture->lire); } /** diff --git a/htdocs/core/boxes/box_graph_orders_permonth.php b/htdocs/core/boxes/box_graph_orders_permonth.php index 885ec469632..c4205901528 100644 --- a/htdocs/core/boxes/box_graph_orders_permonth.php +++ b/htdocs/core/boxes/box_graph_orders_permonth.php @@ -56,7 +56,7 @@ class box_graph_orders_permonth extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->commande->lire); + $this->hidden = empty($user->rights->commande->lire); } /** diff --git a/htdocs/core/boxes/box_graph_orders_supplier_permonth.php b/htdocs/core/boxes/box_graph_orders_supplier_permonth.php index db7400c1c5a..433ba660365 100644 --- a/htdocs/core/boxes/box_graph_orders_supplier_permonth.php +++ b/htdocs/core/boxes/box_graph_orders_supplier_permonth.php @@ -56,7 +56,7 @@ class box_graph_orders_supplier_permonth extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->commande->lire); + $this->hidden = empty($user->rights->fournisseur->commande->lire); } /** diff --git a/htdocs/core/boxes/box_graph_product_distribution.php b/htdocs/core/boxes/box_graph_product_distribution.php index afed778912f..42a77f14b9c 100644 --- a/htdocs/core/boxes/box_graph_product_distribution.php +++ b/htdocs/core/boxes/box_graph_product_distribution.php @@ -61,8 +61,8 @@ class box_graph_product_distribution extends ModeleBoxes $this->hidden = !( (isModEnabled('facture') && !empty($user->rights->facture->lire)) - || (!empty($conf->commande->enabled) && !empty($user->rights->commande->lire)) - || (!empty($conf->propal->enabled) && !empty($user->rights->propale->lire)) + || (isModEnabled('commande') && !empty($user->rights->commande->lire)) + || (isModEnabled('propal') && !empty($user->rights->propale->lire)) ); } @@ -152,7 +152,7 @@ class box_graph_product_distribution extends ModeleBoxes $WIDTH = ($nbofgraph >= 2 || !empty($conf->dol_optimize_smallscreen)) ? '300' : '320'; $HEIGHT = '150'; // Height require to have 5+1 entries into legend visible. - if (!empty($conf->propal->enabled) && !empty($user->rights->propale->lire)) { + if (isModEnabled("propal") && !empty($user->rights->propale->lire)) { // Build graphic number of object. $data = array(array('Lib',val1,val2,val3),...) if ($showpropalnb) { $langs->load("propal"); @@ -365,7 +365,7 @@ class box_graph_product_distribution extends ModeleBoxes $stringtoshow .= ''; $stringtoshow .= ''; $stringtoshow .= ''; - if (!empty($conf->propal->enabled) || !empty($user->rights->propale->lire)) { + if (isModEnabled("propal") || !empty($user->rights->propale->lire)) { $stringtoshow .= ' '.$langs->trans("ForProposals"); $stringtoshow .= ' '; } diff --git a/htdocs/core/boxes/box_graph_propales_permonth.php b/htdocs/core/boxes/box_graph_propales_permonth.php index cb9a543bc19..13f3a29ec16 100644 --- a/htdocs/core/boxes/box_graph_propales_permonth.php +++ b/htdocs/core/boxes/box_graph_propales_permonth.php @@ -56,7 +56,7 @@ class box_graph_propales_permonth extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->propale->lire); + $this->hidden = empty($user->rights->propale->lire); } /** diff --git a/htdocs/core/boxes/box_mos.php b/htdocs/core/boxes/box_mos.php index cff19388c17..812fcab7b64 100644 --- a/htdocs/core/boxes/box_mos.php +++ b/htdocs/core/boxes/box_mos.php @@ -60,7 +60,7 @@ class box_mos extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->bom->read); + $this->hidden = empty($user->rights->bom->read); } /** diff --git a/htdocs/core/boxes/box_produits.php b/htdocs/core/boxes/box_produits.php index afd0db27990..7a9518d345e 100644 --- a/htdocs/core/boxes/box_produits.php +++ b/htdocs/core/boxes/box_produits.php @@ -62,7 +62,7 @@ class box_produits extends ModeleBoxes $this->db = $db; $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - $tmpentry = array('enabled'=>(!empty($conf->product->enabled) || !empty($conf->service->enabled)), 'perms'=>(!empty($user->rights->produit->lire) || !empty($user->rights->service->lire)), 'module'=>'product|service'); + $tmpentry = array('enabled'=>(isModEnabled("product") || isModEnabled("service")), 'perms'=>(!empty($user->rights->produit->lire) || !empty($user->rights->service->lire)), 'module'=>'product|service'); $showmode = isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); $this->hidden = ($showmode != 1); } diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php index 72b1957b287..203d42c7eed 100644 --- a/htdocs/core/boxes/box_produits_alerte_stock.php +++ b/htdocs/core/boxes/box_produits_alerte_stock.php @@ -64,7 +64,7 @@ class box_produits_alerte_stock extends ModeleBoxes $this->db = $db; $listofmodulesforexternal = explode(',', $conf->global->MAIN_MODULES_FOR_EXTERNAL); - $tmpentry = array('enabled'=>((!empty($conf->product->enabled) || !empty($conf->service->enabled)) && !empty($conf->stock->enabled)), 'perms'=>!empty($user->rights->stock->lire), 'module'=>'product|service|stock'); + $tmpentry = array('enabled'=>((isModEnabled("product") || isModEnabled("service")) && !empty($conf->stock->enabled)), 'perms'=>!empty($user->rights->stock->lire), 'module'=>'product|service|stock'); $showmode = isVisibleToUserType(($user->socid > 0 ? 1 : 0), $tmpentry, $listofmodulesforexternal); $this->hidden = ($showmode != 1); } diff --git a/htdocs/core/boxes/box_project.php b/htdocs/core/boxes/box_project.php index 909ff32acb9..80d465f0f87 100644 --- a/htdocs/core/boxes/box_project.php +++ b/htdocs/core/boxes/box_project.php @@ -62,7 +62,7 @@ class box_project extends ModeleBoxes $this->db = $db; $this->boxlabel = "OpenedProjects"; - $this->hidden = !($user->rights->projet->lire); + $this->hidden = empty($user->rights->projet->lire); } /** diff --git a/htdocs/core/boxes/box_propales.php b/htdocs/core/boxes/box_propales.php index cdaf629ae3f..8e8efc8d8f3 100644 --- a/htdocs/core/boxes/box_propales.php +++ b/htdocs/core/boxes/box_propales.php @@ -61,7 +61,7 @@ class box_propales extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->propale->lire); + $this->hidden = !($user->hasRight('propale', 'lire')); } /** diff --git a/htdocs/core/boxes/box_services_expired.php b/htdocs/core/boxes/box_services_expired.php index e9cca792de1..25fa5ca2b1f 100644 --- a/htdocs/core/boxes/box_services_expired.php +++ b/htdocs/core/boxes/box_services_expired.php @@ -58,7 +58,7 @@ class box_services_expired extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->contrat->lire); + $this->hidden = !($user->hasRight('contrat', 'lire')); } /** diff --git a/htdocs/core/boxes/box_shipments.php b/htdocs/core/boxes/box_shipments.php index ba95fe14356..4e54f3c5992 100644 --- a/htdocs/core/boxes/box_shipments.php +++ b/htdocs/core/boxes/box_shipments.php @@ -60,7 +60,7 @@ class box_shipments extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->expedition->lire); + $this->hidden = empty($user->rights->expedition->lire); } /** diff --git a/htdocs/core/boxes/box_supplier_orders.php b/htdocs/core/boxes/box_supplier_orders.php index 6ee0c5ef8a3..f3db3526bb6 100644 --- a/htdocs/core/boxes/box_supplier_orders.php +++ b/htdocs/core/boxes/box_supplier_orders.php @@ -58,7 +58,7 @@ class box_supplier_orders extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->commande->lire); + $this->hidden = !($user->hasRight('fournisseur', 'commande', 'lire')); } /** diff --git a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php index 32151828b83..ce0161582de 100644 --- a/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php +++ b/htdocs/core/boxes/box_supplier_orders_awaiting_reception.php @@ -58,7 +58,7 @@ class box_supplier_orders_awaiting_reception extends ModeleBoxes $this->db = $db; - $this->hidden = !($user->rights->fournisseur->commande->lire); + $this->hidden = !($user->hasRight('fournisseur', 'commande', 'lire')); } /** diff --git a/htdocs/core/boxes/box_task.php b/htdocs/core/boxes/box_task.php index 82e917b102a..3f3c9d83a62 100644 --- a/htdocs/core/boxes/box_task.php +++ b/htdocs/core/boxes/box_task.php @@ -64,7 +64,7 @@ class box_task extends ModeleBoxes $this->boxlabel = "Tasks"; $this->db = $db; - $this->hidden = (!empty($conf->global->PROJECT_HIDE_TASKS) || !($user->rights->projet->lire)); + $this->hidden = (!empty($conf->global->PROJECT_HIDE_TASKS) || empty($user->rights->projet->lire)); } /** diff --git a/htdocs/core/boxes/box_validated_projects.php b/htdocs/core/boxes/box_validated_projects.php index e57bb1f14d9..bab64d5a000 100644 --- a/htdocs/core/boxes/box_validated_projects.php +++ b/htdocs/core/boxes/box_validated_projects.php @@ -66,7 +66,7 @@ class box_validated_projects extends ModeleBoxes $this->db = $db; $this->boxlabel = "ProjectTasksWithoutTimeSpent"; - $this->hidden = !($user->rights->projet->lire); + $this->hidden = empty($user->rights->projet->lire); if ($conf->global->MAIN_FEATURES_LEVEL < 2) { $this->enabled = 0; diff --git a/htdocs/core/class/CMailFile.class.php b/htdocs/core/class/CMailFile.class.php index 94fb05d5346..a9518ee6dab 100644 --- a/htdocs/core/class/CMailFile.class.php +++ b/htdocs/core/class/CMailFile.class.php @@ -6,7 +6,7 @@ * Copyright (C) 2003 Jean-Louis Bergamo * Copyright (C) 2004-2015 Laurent Destailleur * Copyright (C) 2005-2012 Regis Houssin - * Copyright (C) 2019-2020 Frédéric France + * Copyright (C) 2019-2022 Frédéric France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -30,6 +30,8 @@ * \brief File of class to send emails (with attachments or not) */ +use OAuth\Common\Storage\DoliStorage; +use OAuth\Common\Consumer\Credentials; /** * Class to send emails (with attachments or not) * Usage: $mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filepath,$mimetype,$filename,$cc,$ccc,$deliveryreceipt,$msgishtml,$errors_to,$css,$trackid,$moreinheader,$sendcontext,$replyto); @@ -71,9 +73,29 @@ class CMailFile */ public $error = ''; + /** + * @var string[] Array of Error code (or message) + */ + public $errors = array(); + public $smtps; // Contains SMTPs object (if this method is used) public $phpmailer; // Contains PHPMailer object (if this method is used) + /** + * @var Swift_SmtpTransport + */ + public $transport; + + /** + * @var Swift_Mailer + */ + public $mailer; + + /** + * @var Swift_Plugins_Loggers_ArrayLogger + */ + public $logger; + /** * @var string CSS */ @@ -470,12 +492,12 @@ class CMailFile $emailMatchs = preg_match_all($regexp, $from, $adressEmailFrom); $adressEmailFrom = reset($adressEmailFrom); if ($emailMatchs !== false && filter_var($conf->global->MAIN_MAIL_SMTPS_ID, FILTER_VALIDATE_EMAIL) && $conf->global->MAIN_MAIL_SMTPS_ID !== $adressEmailFrom) { - $result = $this->message->setFrom($conf->global->MAIN_MAIL_SMTPS_ID); + $this->message->setFrom($conf->global->MAIN_MAIL_SMTPS_ID); } else { - $result = $this->message->setFrom($this->getArrayAddress($this->addr_from)); + $this->message->setFrom($this->getArrayAddress($this->addr_from)); } } else { - $result = $this->message->setFrom($this->getArrayAddress($this->addr_from)); + $this->message->setFrom($this->getArrayAddress($this->addr_from)); } } catch (Exception $e) { $this->errors[] = $e->getMessage(); @@ -485,7 +507,7 @@ class CMailFile // Set the To addresses with an associative array if (!empty($this->addr_to)) { try { - $result = $this->message->setTo($this->getArrayAddress($this->addr_to)); + $this->message->setTo($this->getArrayAddress($this->addr_to)); } catch (Exception $e) { $this->errors[] = $e->getMessage(); } @@ -493,14 +515,14 @@ class CMailFile if (!empty($this->reply_to)) { try { - $result = $this->message->SetReplyTo($this->getArrayAddress($this->reply_to)); + $this->message->SetReplyTo($this->getArrayAddress($this->reply_to)); } catch (Exception $e) { $this->errors[] = $e->getMessage(); } } try { - $result = $this->message->setCharSet($conf->file->character_set_client); + $this->message->setCharSet($conf->file->character_set_client); } catch (Exception $e) { $this->errors[] = $e->getMessage(); } @@ -547,14 +569,26 @@ class CMailFile } if (!empty($this->addr_cc)) { - $this->message->setCc($this->getArrayAddress($this->addr_cc)); + try { + $this->message->setCc($this->getArrayAddress($this->addr_cc)); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } } if (!empty($this->addr_bcc)) { - $this->message->setBcc($this->getArrayAddress($this->addr_bcc)); + try { + $this->message->setBcc($this->getArrayAddress($this->addr_bcc)); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } } //if (! empty($this->errors_to)) $this->message->setErrorsTo($this->getArrayAddress($this->errors_to)); if (isset($this->deliveryreceipt) && $this->deliveryreceipt == 1) { - $this->message->setReadReceiptTo($this->getArrayAddress($this->addr_from)); + try { + $this->message->setReadReceiptTo($this->getArrayAddress($this->addr_from)); + } catch (Exception $e) { + $this->errors[] = $e->getMessage(); + } } } else { // Send mail method not correctly defined @@ -657,6 +691,8 @@ class CMailFile } $keyforsmtpserver = 'MAIN_MAIL_SMTP_SERVER'; + $keyforsmtpauthtype = "MAIN_MAIL_SMTPS_AUTH_TYPE"; + $keyforsmtpoauthservice = "MAIN_MAIL_SMTPS_OAUTH_SERVICE"; $keyforsmtpport = 'MAIN_MAIL_SMTP_PORT'; $keyforsmtpid = 'MAIN_MAIL_SMTPS_ID'; $keyforsmtppw = 'MAIN_MAIL_SMTPS_PW'; @@ -832,6 +868,60 @@ class CMailFile $this->smtps->setPW($loginpass); } + if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") { + require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array + $keyforsupportedoauth2array = $conf->global->$keyforsmtpoauthservice; + if (preg_match('/^.*-/', $keyforsupportedoauth2array)) { + $keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array); + } else { + $keyforprovider = ''; + } + $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); + $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; + + $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); + + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; + + $storage = new DoliStorage($db, $conf); + try { + $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if (is_object($tokenobj)) { + $expire = ($tokenobj->getEndOfLife() !== -9002 && $tokenobj->getEndOfLife() !== -9001 && time() > ($tokenobj->getEndOfLife() - 30)); + } + // Token expired so we refresh it + if (is_object($tokenobj) && $expire) { + $credentials = new Credentials( + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_ID'), + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_SECRET'), + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_URLAUTHORIZE') + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $oauthname = explode('-', $OAUTH_SERVICENAME); + // ex service is Google-Emails we need only the first part Google + $apiService = $serviceFactory->createService($oauthname[0], $credentials, $storage, array()); + // We have to save the token because Google give it only once + $refreshtoken = $tokenobj->getRefreshToken(); + $tokenobj = $apiService->refreshAccessToken($tokenobj); + $tokenobj->setRefreshToken($refreshtoken); + $storage->storeAccessToken($OAUTH_SERVICENAME, $tokenobj); + } + + $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); + if (is_object($tokenobj)) { + $this->smtps->setToken($tokenobj->getAccessToken()); + } else { + $this->error = "Token not found"; + } + } catch (Exception $e) { + // Return an error if token not found + $this->error = $e->getMessage(); + dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR); + } + } + $res = true; $from = $this->smtps->getFrom('org'); if ($res && !$from) { @@ -852,7 +942,6 @@ class CMailFile } $result = $this->smtps->sendMsg(); - //print $result; if (!empty($conf->global->MAIN_MAIL_DEBUG)) { $this->dump_mail(); @@ -898,9 +987,62 @@ class CMailFile if (!empty($conf->global->$keyforsmtpid)) { $this->transport->setUsername($conf->global->$keyforsmtpid); } - if (!empty($conf->global->$keyforsmtppw)) { + if (!empty($conf->global->$keyforsmtppw) && getDolGlobalString($keyforsmtpauthtype) != "XOAUTH2") { $this->transport->setPassword($conf->global->$keyforsmtppw); } + if (getDolGlobalString($keyforsmtpauthtype) === "XOAUTH2") { + require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array + $keyforsupportedoauth2array = getDolGlobalString($keyforsmtpoauthservice); + if (preg_match('/^.*-/', $keyforsupportedoauth2array)) { + $keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array); + } else { + $keyforprovider = ''; + } + $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); + $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; + + $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); + + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; + + $storage = new DoliStorage($db, $conf); + + try { + $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); + $expire = false; + // Is token expired or will token expire in the next 30 seconds + if (is_object($tokenobj)) { + $expire = ($tokenobj->getEndOfLife() !== -9002 && $tokenobj->getEndOfLife() !== -9001 && time() > ($tokenobj->getEndOfLife() - 30)); + } + // Token expired so we refresh it + if (is_object($tokenobj) && $expire) { + $credentials = new Credentials( + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_ID'), + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_SECRET'), + getDolGlobalString('OAUTH_'.getDolGlobalString('MAIN_MAIL_SMTPS_OAUTH_SERVICE').'_URLAUTHORIZE') + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $oauthname = explode('-', $OAUTH_SERVICENAME); + // ex service is Google-Emails we need only the first part Google + $apiService = $serviceFactory->createService($oauthname[0], $credentials, $storage, array()); + // We have to save the token because Google give it only once + $refreshtoken = $tokenobj->getRefreshToken(); + $tokenobj = $apiService->refreshAccessToken($tokenobj); + $tokenobj->setRefreshToken($refreshtoken); + $storage->storeAccessToken($OAUTH_SERVICENAME, $tokenobj); + } + if (is_object($tokenobj)) { + $this->transport->setAuthMode('XOAUTH2'); + $this->transport->setPassword($tokenobj->getAccessToken()); + } else { + $this->errors[] = "Token not found"; + } + } catch (Exception $e) { + // Return an error if token not found + $this->errors[] = $e->getMessage(); + dol_syslog("CMailFile::sendfile: mail end error=".$e->getMessage(), LOG_ERR); + } + } if (!empty($conf->global->$keyforsslseflsigned)) { $this->transport->setStreamOptions(array('ssl' => array('allow_self_signed' => true, 'verify_peer' => false))); } @@ -933,16 +1075,16 @@ class CMailFile try { $result = $this->mailer->send($this->message, $failedRecipients); } catch (Exception $e) { - $this->error = $e->getMessage(); + $this->errors[] = $e->getMessage(); } if (!empty($conf->global->MAIN_MAIL_DEBUG)) { $this->dump_mail(); } $res = true; - if (!empty($this->error) || !$result) { + if (!empty($this->error) || !empty($this->errors) || !$result) { if (!empty($failedRecipients)) { - $this->error = 'Transport failed for the following addresses: "' . join('", "', $failedRecipients) . '".'; + $this->errors[] = 'Transport failed for the following addresses: "' . join('", "', $failedRecipients) . '".'; } dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR); $res = false; @@ -1413,6 +1555,7 @@ class CMailFile dol_syslog("Try socket connection to host=".$host." port=".$port); //See if we can connect to the SMTP server + $errno = 0; $errstr = ''; if ($socket = @fsockopen( $host, // Host to test, IP or domain. Add ssl:// for SSL/TLS. $port, // which Port number to use diff --git a/htdocs/core/class/comment.class.php b/htdocs/core/class/comment.class.php index 937ca6f7875..960d2ac4744 100644 --- a/htdocs/core/class/comment.class.php +++ b/htdocs/core/class/comment.class.php @@ -71,19 +71,19 @@ class Comment extends CommonObject public $fk_user_modif; /** - * @var int Entity + * @var int Entity */ public $entity; /** - * @var string import key + * @var string Import key */ public $import_key; public $comments = array(); /** - * @var Comment Object oldcopy + * @var Comment Object oldcopy */ public $oldcopy; diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index bee63613bca..d0b64fdca77 100644 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -895,7 +895,12 @@ abstract class CommonDocGenerator //Add value to store price with currency $array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key.'_currency' => $object->array_options['options_'.$key.'_currency'])); } elseif ($extrafields->attributes[$object->table_element]['type'][$key] == 'select') { - $object->array_options['options_'.$key] = $extrafields->attributes[$object->table_element]['param'][$key]['options'][$object->array_options['options_'.$key]]; + $valueofselectkey = $object->array_options['options_'.$key]; + if (array_key_exists($valueofselectkey, $extrafields->attributes[$object->table_element]['param'][$key]['options'])) { + $object->array_options['options_'.$key] = $extrafields->attributes[$object->table_element]['param'][$key]['options'][$valueofselectkey]; + } else { + $object->array_options['options_'.$key] = ''; + } } elseif ($extrafields->attributes[$object->table_element]['type'][$key] == 'checkbox') { $valArray = explode(',', $object->array_options['options_'.$key]); $output = array(); @@ -945,7 +950,11 @@ abstract class CommonDocGenerator } } - $array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key => $object->array_options['options_'.$key])); + if (array_key_exists('option_'.$key, $object->array_options)) { + $array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key => $object->array_options['options_'.$key])); + } else { + $array_to_fill = array_merge($array_to_fill, array($array_key.'_options_'.$key => '')); + } } } diff --git a/htdocs/core/class/commoninvoice.class.php b/htdocs/core/class/commoninvoice.class.php index e96eee5c553..bed28c63035 100644 --- a/htdocs/core/class/commoninvoice.class.php +++ b/htdocs/core/class/commoninvoice.class.php @@ -574,8 +574,13 @@ abstract class CommonInvoice extends CommonObject $labelStatus = $langs->transnoentitiesnoconv('BillStatusDraft'); $labelStatusShort = $langs->transnoentitiesnoconv('Bill'.$prefix.'StatusDraft'); } elseif (($status == 3 || $status == 2) && $alreadypaid <= 0) { - $labelStatus = $langs->transnoentitiesnoconv('BillStatusClosedUnpaid'); - $labelStatusShort = $langs->transnoentitiesnoconv('Bill'.$prefix.'StatusClosedUnpaid'); + if ($status == 3) { + $labelStatus = $langs->transnoentitiesnoconv('BillStatusCanceled'); + $labelStatusShort = $langs->transnoentitiesnoconv('Bill'.$prefix.'StatusCanceled'); + } else { + $labelStatus = $langs->transnoentitiesnoconv('BillStatusClosedUnpaid'); + $labelStatusShort = $langs->transnoentitiesnoconv('Bill'.$prefix.'StatusClosedUnpaid'); + } $statusType = 'status5'; } elseif (($status == 3 || $status == 2) && $alreadypaid > 0) { $labelStatus = $langs->transnoentitiesnoconv('BillStatusClosedPaidPartially'); diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index 2a5ddcf5a34..5b5de36406a 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -141,7 +141,7 @@ abstract class CommonObject public $linkedObjectsFullLoaded = array(); /** - * @var Object To store a cloned copy of object before to edit it and keep track of old properties + * @var CommonObject To store a cloned copy of object before to edit it and keep track of old properties */ public $oldcopy; @@ -520,6 +520,11 @@ abstract class CommonObject */ public $date_modification; // Date last change (tms field) + /** + * @var integer|string $date_cloture; + */ + public $date_cloture; // Date closing (tms field) + /** * @var User|int User author/creation * @TODO Merge with user_creation @@ -549,6 +554,10 @@ abstract class CommonObject * @var int User id of validation */ public $user_validation_id; + /** + * @var int User id closing object + */ + public $user_closing_id; /** * @var User|int User last modifier @@ -579,6 +588,10 @@ abstract class CommonObject public $alreadypaid; + protected $labelStatus; + protected $labelStatusShort; + + /** * @var array List of child tables. To test if we can delete object. */ @@ -593,6 +606,8 @@ abstract class CommonObject // No constructor as it is an abstract class + + /** * Check an object id/ref exists * If you don't need/want to instantiate object and just need to know if object exists, use this method instead of fetch @@ -639,6 +654,7 @@ abstract class CommonObject return -1; } + /** * Method to output saved errors * @@ -728,6 +744,7 @@ abstract class CommonObject public function setUpperOrLowerCase() { global $conf; + if (!empty($conf->global->MAIN_FIRST_TO_UPPER)) { $this->lastname = dol_ucwords(dol_strtolower($this->lastname)); $this->firstname = dol_ucwords(dol_strtolower($this->firstname)); @@ -743,6 +760,12 @@ abstract class CommonObject $this->address = dol_strtoupper($this->address); $this->town = dol_strtoupper($this->town); } + if (isset($this->email)) { + $this->email = dol_strtolower($this->email); + } + if (isset($this->personal_email)) { + $this->personal_email = dol_strtolower($this->personal_email); + } } /** @@ -1020,7 +1043,8 @@ abstract class CommonObject // Add entry into index if ($initsharekey) { require_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; - // TODO We can't, we dont' have full path of file, only last_main_doc adn ->element, so we must rebuild full path first + + // TODO We can't, we dont' have full path of file, only last_main_doc and ->element, so we must first rebuild full path $destfull /* $ecmfile->filepath = $rel_dir; $ecmfile->filename = $filename; @@ -3489,7 +3513,7 @@ abstract class CommonObject * * @param int $exclspec >0 = Exclude special product (product_type=9) * @param string $roundingadjust 'none'=Do nothing, 'auto'=Use default method (MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND if defined, or '0'), '0'=Force mode Total of rounding, '1'=Force mode Rounding of total - * @param int $nodatabaseupdate 1=Do not update database. Update only properties of object. + * @param int $nodatabaseupdate 1=Do not update database total fields of the main object. Update only properties in memory. Can be used to save SQL when this method is called several times, so we can do it only once at end. * @param Societe $seller If roundingadjust is '0' or '1' or maybe 'auto', it means we recalculate total for lines before calculating total for object and for this, we need seller object (used to analyze lines to check corrupted data). * @return int <0 if KO, >0 if OK */ @@ -3535,10 +3559,6 @@ abstract class CommonObject include_once DOL_DOCUMENT_ROOT.'/core/lib/price.lib.php'; - if ($roundingadjust == '-1') { - $roundingadjust = 'auto'; // For backward compatibility - } - $forcedroundingmode = $roundingadjust; if ($forcedroundingmode == 'auto' && isset($conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND)) { $forcedroundingmode = $conf->global->MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND; @@ -3550,7 +3570,7 @@ abstract class CommonObject $multicurrency_tx = !empty($this->multicurrency_tx) ? $this->multicurrency_tx : 1; - // Define constants to find lines to sum + // Define constants to find lines to sum (field name int the table_element_line not into table_element) $fieldtva = 'total_tva'; $fieldlocaltax1 = 'total_localtax1'; $fieldlocaltax2 = 'total_localtax2'; @@ -3586,6 +3606,7 @@ abstract class CommonObject $sql .= ' ORDER by rowid'; // We want to be sure to always use same order of line to not change lines differently when option MAIN_ROUNDOFTOTAL_NOT_TOTALOFROUND is used dol_syslog(get_class($this)."::update_price", LOG_DEBUG); + $resql = $this->db->query($sql); if ($resql) { $this->total_ht = 0; @@ -3614,14 +3635,26 @@ abstract class CommonObject $localtax_array = array($obj->localtax1_type, $obj->localtax1_tx, $obj->localtax2_type, $obj->localtax2_tx); $tmpcal = calcul_price_total($obj->qty, $obj->up, $obj->remise_percent, $obj->vatrate, $obj->localtax1_tx, $obj->localtax2_tx, 0, 'HT', $obj->info_bits, $obj->product_type, $seller, $localtax_array, (isset($obj->situation_percent) ? $obj->situation_percent : 100), $multicurrency_tx); - $diff_when_using_price_ht = price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); // If price was set with tax price adn unit price HT has a low number of digits, then we may have a diff on recalculation from unit price HT. + $diff_when_using_price_ht = price2num($tmpcal[1] - $obj->total_tva, 'MT', 1); // If price was set with tax price and unit price HT has a low number of digits, then we may have a diff on recalculation from unit price HT. $diff_on_current_total = price2num($obj->total_ttc - $obj->total_ht - $obj->total_tva - $obj->total_localtax1 - $obj->total_localtax2, 'MT', 1); - //var_dump($obj->total_ht.' '.$obj->total_tva.' '.$obj->total_localtax1.' '.$obj->total_localtax2.' =? '.$obj->total_ttc); + //var_dump($obj->total_ht.' '.$obj->total_tva.' '.$obj->total_localtax1.' '.$obj->total_localtax2.' => '.$obj->total_ttc); //var_dump($diff_when_using_price_ht.' '.$diff_on_current_total); - if ($diff_when_using_price_ht && $diff_on_current_total) { + if ($diff_on_current_total) { + // This should not happen, we should always have in table: total_ttc = total_ht + total_vat + total_localtax1 + total_localtax2 $sqlfix = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldtva." = ".price2num((float) $tmpcal[1]).", total_ttc = ".price2num((float) $tmpcal[2])." WHERE rowid = ".((int) $obj->rowid); - dol_syslog('We found unconsistent data into detailed line (diff_when_using_price_ht = '.$diff_when_using_price_ht.' and diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix, LOG_WARNING); + dol_syslog('We found unconsistent data into detailed line (diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (ht=".$obj->total_ht." vat=".$obj->total_tva." tax1=".$obj->total_localtax1." tax2=".$obj->total_localtax2." ttc=".$obj->total_ttc."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix, LOG_WARNING); + $resqlfix = $this->db->query($sqlfix); + if (!$resqlfix) { + dol_print_error($this->db, 'Failed to update line'); + } + $obj->total_tva = $tmpcal[1]; + $obj->total_ttc = $tmpcal[2]; + } elseif ($diff_when_using_price_ht && $roundingadjust == '0') { + // After calculation from HT, total is consistent but we have found a difference between VAT part in calculation and into database and + // we ask to force the use of rounding on line (like done on calculation) so we force update of line + $sqlfix = "UPDATE ".$this->db->prefix().$this->table_element_line." SET ".$fieldtva." = ".price2num((float) $tmpcal[1]).", total_ttc = ".price2num((float) $tmpcal[2])." WHERE rowid = ".((int) $obj->rowid); + dol_syslog('We found a line with different rounding data into detailed line (diff_when_using_price_ht = '.$diff_when_using_price_ht.' and diff_on_current_total = '.$diff_on_current_total.') for line rowid = '.$obj->rowid." (total vat of line calculated=".$tmpcal[1].", database=".$obj->total_tva."). We fix the total_vat and total_ttc of line by running sqlfix = ".$sqlfix); $resqlfix = $this->db->query($sqlfix); if (!$resqlfix) { dol_print_error($this->db, 'Failed to update line'); @@ -3702,7 +3735,7 @@ abstract class CommonObject $this->db->free($resql); - // Now update global field total_ht, total_ttc, total_tva, total_localtax1, total_localtax2, multicurrency_total_* + // Now update global fields total_ht, total_ttc, total_tva, total_localtax1, total_localtax2, multicurrency_total_* of main object $fieldht = 'total_ht'; $fieldtva = 'tva'; $fieldlocaltax1 = 'localtax1'; @@ -4909,7 +4942,7 @@ abstract class CommonObject * * @param string $action GET/POST action * @param CommonObjectLine $line Selected object line to output - * @param string $var Is it a an odd line (true) + * @param string $var Not used * @param int $num Number of line (0) * @param int $i I * @param int $dateSelector 1=Show also date range input fields @@ -4974,7 +5007,7 @@ abstract class CommonObject } $text .= ' - '.(!empty($line->label) ? $line->label : $label); - $description .= (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : dol_htmlentitiesbr($line->description)); // Description is what to show on popup. We shown nothing if already into desc. + $description .= (!empty($conf->global->PRODUIT_DESC_IN_FORM) ? '' : (!empty($line->description) ? dol_htmlentitiesbr($line->description) : '')); // Description is what to show on popup. We shown nothing if already into desc. } $line->pu_ttc = price2num((!empty($line->subprice) ? $line->subprice : 0) * (1 + ((!empty($line->tva_tx) ? $line->tva_tx : 0) / 100)), 'MU'); @@ -5458,7 +5491,7 @@ abstract class CommonObject // We save charset_output to restore it because write_file can change it if needed for // output format that does not support UTF8. - $sav_charset_output = $outputlangs->charset_output; + $sav_charset_output = empty($outputlangs->charset_output) ? '' : $outputlangs->charset_output; if (in_array(get_class($this), array('Adherent'))) { $resultwritefile = $obj->write_file($this, $outputlangs, $srctemplatepath, 'member', 1, 'tmp_cards', $moreparams); @@ -5521,7 +5554,9 @@ abstract class CommonObject * Index a file into the ECM database * * @param string $destfull Full path of file to index - * @param int $update_main_doc_field Update field main_doc file into table of object + * @param int $update_main_doc_field Update field main_doc fied into the table of object. + * This param is set when called for a document generation if document generator hase + * ->update_main_doc_field set and returns ->result['fullpath']. * @return int <0 if KO, >0 if OK */ public function indexFile($destfull, $update_main_doc_field) @@ -5560,6 +5595,9 @@ abstract class CommonObject if ($this->element == 'bank_account' && !empty($conf->global->BANK_ACCOUNT_ALLOW_EXTERNAL_DOWNLOAD)) { $setsharekey = true; } + if ($this->element == 'product' && !empty($conf->global->PRODUCT_ALLOW_EXTERNAL_DOWNLOAD)) { + $setsharekey = true; + } if ($this->element == 'contrat' && !empty($conf->global->CONTRACT_ALLOW_EXTERNAL_DOWNLOAD)) { $setsharekey = true; } @@ -5996,7 +6034,7 @@ abstract class CommonObject // Test fetch_array ! is_int($key) because fetch_array result is a mix table with Key as alpha and Key as int (depend db engine) if ($key != 'rowid' && $key != 'tms' && $key != 'fk_member' && !is_int($key)) { // we can add this attribute to object - if (!empty($extrafields) && in_array($extrafields->attributes[$this->table_element]['type'][$key], array('date', 'datetime'))) { + if (!empty($extrafields->attributes[$this->table_element]) && in_array($extrafields->attributes[$this->table_element]['type'][$key], array('date', 'datetime'))) { //var_dump($extrafields->attributes[$this->table_element]['type'][$key]); $this->array_options["options_".$key] = $this->db->jdate($value); } else { @@ -6009,7 +6047,7 @@ abstract class CommonObject // If field is a computed field, value must become result of compute foreach ($tab as $key => $value) { - if (!empty($extrafields) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) { + if (!empty($extrafields->attributes[$this->table_element]) && !empty($extrafields->attributes[$this->table_element]['computed'][$key])) { //var_dump($conf->disable_compute); if (empty($conf->disable_compute)) { $this->array_options["options_".$key] = dol_eval($extrafields->attributes[$this->table_element]['computed'][$key], 1, 0, ''); @@ -6746,6 +6784,9 @@ abstract class CommonObject } elseif (preg_match('/^(sellist):(.*):(.*)/i', $val['type'], $reg)) { $param['options'] = array($reg[2].':'.$reg[3] => 'N'); $type = 'sellist'; + } elseif (preg_match('/^chkbxlst:(.*)/i', $val['type'], $reg)) { + $param['options'] = array($reg[1] => 'N'); + $type = 'chkbxlst'; } elseif (preg_match('/varchar\((\d+)\)/', $val['type'], $reg)) { $param['options'] = array(); $type = 'varchar'; @@ -6848,7 +6889,7 @@ abstract class CommonObject $out = ''; } elseif (preg_match('/varchar/', $type)) { $out = ' 0 ? ' maxlength="'.$size.'"' : '').' value="'.dol_escape_htmltag($value).'"'.($moreparam ? $moreparam : '').($autofocusoncreate ? ' autofocus' : '').'>'; - } elseif (in_array($type, array('mail', 'phone', 'url'))) { + } elseif (in_array($type, array('email', 'mail', 'phone', 'url', 'ip'))) { $out = ''; } elseif (preg_match('/^text/', $type)) { if (!preg_match('/search_/', $keyprefix)) { // If keyprefix is search_ or search_options_, we must just use a simple text field @@ -6895,15 +6936,17 @@ abstract class CommonObject if ((!isset($this->fields[$key]['default'])) || ($this->fields[$key]['notnull'] != 1)) { $out .= ''; } - foreach ($param['options'] as $key => $val) { - if ((string) $key == '') { + foreach ($param['options'] as $keyb => $valb) { + if ((string) $keyb == '') { continue; } - if (strpos($val, "|") !== false) list($val, $parent) = explode('|', $val); - $out .= ''; } $out .= ''; } elseif ($type == 'sellist') { @@ -6924,6 +6967,8 @@ abstract class CommonObject // 2 : key fields name (if differ of rowid) // 3 : key field parent (for dependent lists) // 4 : where clause filter on column or table extrafield, syntax field='value' or extra.field=value + // 5 : id category type + // 6 : ids categories list separated by comma for category root $keyList = (empty($InfoFieldList[2]) ? 'rowid' : $InfoFieldList[2].' as rowid'); if (count($InfoFieldList) > 4 && !empty($InfoFieldList[4])) { @@ -6938,112 +6983,130 @@ abstract class CommonObject $keyList .= ', '.$parentField; } - $fields_label = explode('|', $InfoFieldList[1]); - if (is_array($fields_label)) { - $keyList .= ', '; - $keyList .= implode(', ', $fields_label); + $filter_categorie = false; + if (count($InfoFieldList) > 5) { + if ($InfoFieldList[0] == 'categorie') { + $filter_categorie = true; + } } - $sqlwhere = ''; - $sql = "SELECT ".$keyList; - $sql .= " FROM ".$this->db->prefix().$InfoFieldList[0]; - if (!empty($InfoFieldList[4])) { - // can use SELECT request - if (strpos($InfoFieldList[4], '$SEL$') !== false) { - $InfoFieldList[4] = str_replace('$SEL$', 'SELECT', $InfoFieldList[4]); + if ($filter_categorie === false) { + $fields_label = explode('|', $InfoFieldList[1]); + if (is_array($fields_label)) { + $keyList .= ', '; + $keyList .= implode(', ', $fields_label); } - // current object id can be use into filter - if (strpos($InfoFieldList[4], '$ID$') !== false && !empty($objectid)) { - $InfoFieldList[4] = str_replace('$ID$', $objectid, $InfoFieldList[4]); - } else { - $InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]); - } - - //We have to join on extrafield table - if (strpos($InfoFieldList[4], 'extra') !== false) { - $sql .= " as main, ".$this->db->prefix().$InfoFieldList[0]."_extrafields as extra"; - $sqlwhere .= " WHERE extra.fk_object=main.".$InfoFieldList[2]." AND ".$InfoFieldList[4]; - } else { - $sqlwhere .= " WHERE ".$InfoFieldList[4]; - } - } else { - $sqlwhere .= ' WHERE 1=1'; - } - // Some tables may have field, some other not. For the moment we disable it. - if (in_array($InfoFieldList[0], array('tablewithentity'))) { - $sqlwhere .= " AND entity = ".((int) $conf->entity); - } - $sql .= $sqlwhere; - //print $sql; - - $sql .= ' ORDER BY '.implode(', ', $fields_label); - - dol_syslog(get_class($this).'::showInputField type=sellist', LOG_DEBUG); - $resql = $this->db->query($sql); - if ($resql) { - $out .= ''; - $num = $this->db->num_rows($resql); - $i = 0; - while ($i < $num) { - $labeltoshow = ''; - $obj = $this->db->fetch_object($resql); - - // Several field into label (eq table:code|libelle:rowid) - $notrans = false; - $fields_label = explode('|', $InfoFieldList[1]); - if (count($fields_label) > 1) { - $notrans = true; - foreach ($fields_label as $field_toshow) { - $labeltoshow .= $obj->$field_toshow.' '; - } - } else { - $labeltoshow = $obj->{$InfoFieldList[1]}; + $sqlwhere = ''; + $sql = "SELECT " . $keyList; + $sql .= " FROM " . $this->db->prefix() . $InfoFieldList[0]; + if (!empty($InfoFieldList[4])) { + // can use SELECT request + if (strpos($InfoFieldList[4], '$SEL$') !== false) { + $InfoFieldList[4] = str_replace('$SEL$', 'SELECT', $InfoFieldList[4]); } - $labeltoshow = dol_trunc($labeltoshow, 45); - if ($value == $obj->rowid) { - foreach ($fields_label as $field_toshow) { - $translabel = $langs->trans($obj->$field_toshow); - if ($translabel != $obj->$field_toshow) { - $labeltoshow = dol_trunc($translabel).' '; - } else { - $labeltoshow = dol_trunc($obj->$field_toshow).' '; - } - } - $out .= ''; + // current object id can be use into filter + if (strpos($InfoFieldList[4], '$ID$') !== false && !empty($objectid)) { + $InfoFieldList[4] = str_replace('$ID$', $objectid, $InfoFieldList[4]); } else { - if (!$notrans) { - $translabel = $langs->trans($obj->{$InfoFieldList[1]}); - if ($translabel != $obj->{$InfoFieldList[1]}) { - $labeltoshow = dol_trunc($translabel, 18); - } else { - $labeltoshow = dol_trunc($obj->{$InfoFieldList[1]}); + $InfoFieldList[4] = str_replace('$ID$', '0', $InfoFieldList[4]); + } + + //We have to join on extrafield table + if (strpos($InfoFieldList[4], 'extra') !== false) { + $sql .= " as main, " . $this->db->prefix() . $InfoFieldList[0] . "_extrafields as extra"; + $sqlwhere .= " WHERE extra.fk_object=main." . $InfoFieldList[2] . " AND " . $InfoFieldList[4]; + } else { + $sqlwhere .= " WHERE " . $InfoFieldList[4]; + } + } else { + $sqlwhere .= ' WHERE 1=1'; + } + // Some tables may have field, some other not. For the moment we disable it. + if (in_array($InfoFieldList[0], array('tablewithentity'))) { + $sqlwhere .= " AND entity = " . ((int) $conf->entity); + } + $sql .= $sqlwhere; + //print $sql; + + $sql .= ' ORDER BY ' . implode(', ', $fields_label); + + dol_syslog(get_class($this) . '::showInputField type=sellist', LOG_DEBUG); + $resql = $this->db->query($sql); + if ($resql) { + $out .= ''; + $num = $this->db->num_rows($resql); + $i = 0; + while ($i < $num) { + $labeltoshow = ''; + $obj = $this->db->fetch_object($resql); + + // Several field into label (eq table:code|libelle:rowid) + $notrans = false; + $fields_label = explode('|', $InfoFieldList[1]); + if (count($fields_label) > 1) { + $notrans = true; + foreach ($fields_label as $field_toshow) { + $labeltoshow .= $obj->$field_toshow . ' '; } + } else { + $labeltoshow = $obj->{$InfoFieldList[1]}; } - if (empty($labeltoshow)) { - $labeltoshow = '(not defined)'; - } + $labeltoshow = dol_trunc($labeltoshow, 45); + if ($value == $obj->rowid) { - $out .= ''; + foreach ($fields_label as $field_toshow) { + $translabel = $langs->trans($obj->$field_toshow); + if ($translabel != $obj->$field_toshow) { + $labeltoshow = dol_trunc($translabel) . ' '; + } else { + $labeltoshow = dol_trunc($obj->$field_toshow) . ' '; + } + } + $out .= ''; + } else { + if (!$notrans) { + $translabel = $langs->trans($obj->{$InfoFieldList[1]}); + if ($translabel != $obj->{$InfoFieldList[1]}) { + $labeltoshow = dol_trunc($translabel, 18); + } else { + $labeltoshow = dol_trunc($obj->{$InfoFieldList[1]}); + } + } + if (empty($labeltoshow)) { + $labeltoshow = '(not defined)'; + } + if ($value == $obj->rowid) { + $out .= ''; + } + + if (!empty($InfoFieldList[3]) && $parentField) { + $parent = $parentName . ':' . $obj->{$parentField}; + $isDependList = 1; + } + + $out .= ''; } - if (!empty($InfoFieldList[3]) && $parentField) { - $parent = $parentName.':'.$obj->{$parentField}; - $isDependList = 1; - } - - $out .= ''; + $i++; } - - $i++; + $this->db->free($resql); + } else { + print 'Error in request ' . $sql . ' ' . $this->db->lasterror() . '. Check setup of extra parameters.
'; } - $this->db->free($resql); } else { - print 'Error in request '.$sql.' '.$this->db->lasterror().'. Check setup of extra parameters.
'; + require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; + $data = $form->select_all_categories(Categorie::$MAP_ID_TO_CODE[$InfoFieldList[5]], '', 'parent', 64, $InfoFieldList[6], 1, 1); + $out .= ''; + foreach ($data as $data_key => $data_value) { + $out .= '
'; - } elseif ($input['type'] == 'select') { + } elseif (in_array($input['type'], ['select', 'multiselect'])) { if (empty($morecss)) { $morecss = 'minwidth100'; } @@ -4996,7 +5003,11 @@ class Form if (!empty($input['label'])) { $more .= $input['label'].'
'; } - $more .= $this->selectarray($input['name'], $input['values'], isset($input['default'])?$input['default']:'', $show_empty, $key_in_label, $value_as_key, $moreattr, $translate, $maxlen, $disabled, $sort, $morecss); + if ($input['type'] == 'select') { + $more .= $this->selectarray($input['name'], $input['values'], $input['default'], $show_empty, $key_in_label, $value_as_key, $moreattr, $translate, $maxlen, $disabled, $sort, $morecss); + } else { + $more .= $this->multiselectarray($input['name'], $input['values'], is_array($input['default']) ? $input['default'] : [$input['default']], $key_in_label, $value_as_key, $morecss, $translate, $maxlen, $moreattr); + } $more .= '
'."\n"; } elseif ($input['type'] == 'checkbox') { $more .= '
'; @@ -5023,7 +5034,7 @@ class Form $more .= '
 
'; } $more .= '
transnoentities($labelbuttonyes)).'": function() { - var options = "&token='.urlencode(newToken()).'"; + var options = "token='.urlencode(newToken()).'"; var inputok = '.json_encode($inputok).'; /* List of fields into form */ + var page = "'.dol_escape_js(!empty($page) ? $page : '').'"; var pageyes = "'.dol_escape_js(!empty($pageyes) ? $pageyes : '').'"; if (inputok.length>0) { $.each(inputok, function(i, inputname) { @@ -5163,13 +5175,19 @@ class Form options += "&" + inputname + "=" + encodeURIComponent(inputvalue); }); } - var urljump = pageyes + (pageyes.indexOf("?") < 0 ? "?" : "") + options; - if (pageyes.length > 0) { location.href = urljump; } + if (pageyes.length > 0) { + var post = $.post( + pageyes, + options, + (data) => {$("body").html(data)} + ); + } $(this).dialog("close"); }, "'.dol_escape_js($langs->transnoentities($labelbuttonno)).'": function() { - var options = "&token='.urlencode(newToken()).'"; + var options = "token='.urlencode(newToken()).'"; var inputko = '.json_encode($inputko).'; /* List of fields into form */ + var page = "'.dol_escape_js(!empty($page) ? $page : '').'"; var pageno="'.dol_escape_js(!empty($pageno) ? $pageno : '').'"; if (inputko.length>0) { $.each(inputko, function(i, inputname) { @@ -5180,9 +5198,13 @@ class Form options += "&" + inputname + "=" + encodeURIComponent(inputvalue); }); } - var urljump=pageno + (pageno.indexOf("?") < 0 ? "?" : "") + options; - //alert(urljump); - if (pageno.length > 0) { location.href = urljump; } + if (pageno.length > 0) { + var post = $.post( + pageno, + options, + (data) => {$("body").html(data)} + ); + } $(this).dialog("close"); } } @@ -6448,11 +6470,15 @@ class Form } elseif ($usecalendar == 'jquery') { if (!$disabled) { // Output javascript for datepicker + $minYear = $conf->global->MIN_YEAR_SELECT_DATE ? $conf->global->MIN_YEAR_SELECT_DATE : (date('Y') - 100); + $maxYear = $conf->global->MAX_YEAR_SELECT_DATE ? $conf->global->MAX_YEAR_SELECT_DATE : (date('Y') + 100); + $retstring .= "'; - } + + // Add button to autosuggest a key + include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; + $out .= dolJSToSetRandomPassword($this->confKey, 'generate_token'.$this->confKey); + return $out; } @@ -1042,7 +1036,7 @@ class FormSetupItem */ public function generateOutputField() { - global $conf, $user; + global $conf, $user, $langs; if (!empty($this->fieldOverride)) { return $this->fieldOverride; @@ -1067,7 +1061,15 @@ class FormSetupItem } elseif ($this->type== 'color') { $out.= $this->generateOutputFieldColor(); } elseif ($this->type == 'yesno') { - $out.= ajax_constantonoff($this->confKey); + if (!empty($conf->use_javascript_ajax)) { + $out.= ajax_constantonoff($this->confKey); + } else { + if ($this->fieldValue == 1) { + $out.= $langs->trans('yes'); + } else { + $out.= $langs->trans('no'); + } + } } elseif (preg_match('/emailtemplate:/', $this->type)) { include_once DOL_DOCUMENT_ROOT . '/core/class/html.formmail.class.php'; $formmail = new FormMail($this->db); @@ -1103,6 +1105,7 @@ class FormSetupItem $out.= $this->langs->trans("NorProspectNorCustomer"); } } elseif ($this->type == 'product') { + require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; $product = new Product($this->db); $resprod = $product->fetch($this->fieldValue); if ($resprod > 0) { diff --git a/htdocs/core/class/html.formticket.class.php b/htdocs/core/class/html.formticket.class.php index e13aaba4685..83071830ae7 100644 --- a/htdocs/core/class/html.formticket.class.php +++ b/htdocs/core/class/html.formticket.class.php @@ -119,7 +119,7 @@ class FormTicket $this->action = 'add'; - $this->withcompany = $conf->societe->enabled ? 1 : 0; + $this->withcompany = isModEnabled("societe"); $this->withfromsocid = 0; $this->withfromcontactid = 0; //$this->withreadid=0; @@ -169,7 +169,7 @@ class FormTicket print dol_get_fiche_head(null, 'card', '', 0, ''); } - print ''; + print 'param["returnurl"] : "").'">'; print ''; print ''; foreach ($this->param as $key => $value) { @@ -315,7 +315,7 @@ class FormTicket // Type print '
'; // Group @@ -324,12 +324,12 @@ class FormTicket if ($public) { $filter = 'public=1'; } - $this->selectGroupTickets((GETPOST('category_code') ? GETPOST('category_code') : $this->category_code), 'category_code', $filter, 2, 0, 0, 0, 'minwidth200'); + $this->selectGroupTickets((GETPOST('category_code') ? GETPOST('category_code') : $this->category_code), 'category_code', $filter, 2, 1, 0, 0, 'minwidth200'); print ''; // Severity print ''; // Subject @@ -341,10 +341,12 @@ class FormTicket print $langs->trans('SubjectAnswerToTicket').' '.$this->topic_title; print ''; } else { - if ($this->withreadid > 0) { + if (isset($this->withreadid) && $this->withreadid > 0) { $subject = $langs->trans('SubjectAnswerToTicket').' '.$this->withreadid.' : '.$this->topic_title.''; + } else { + $subject = GETPOST('subject', 'alpha'); } - print ''; + print ''; print ''; } } @@ -643,7 +645,7 @@ class FormTicket print '
'; - print $form->buttonsSaveCancel((($this->withreadid > 0) ? "SendResponse" : "CreateTicket"), ($this->withcancel ? "Cancel" : "")); + print $form->buttonsSaveCancel(((isset($this->withreadid) && $this->withreadid > 0) ? "SendResponse" : "CreateTicket"), ($this->withcancel ? "Cancel" : "")); /* print '
'; @@ -733,6 +735,7 @@ class FormTicket } print '>'; + $value = ' '; if ($format == 0) { $value = ($maxlength ? dol_trunc($arraytypes['label'], $maxlength) : $arraytypes['label']); @@ -744,7 +747,7 @@ class FormTicket $value = $arraytypes['code']; } - print $value; + print $value ? $value : ' '; print ''; } } @@ -839,6 +842,7 @@ class FormTicket print '>'; + $value = ''; if ($format == 0) { $value = ($maxlength ? dol_trunc($label, $maxlength) : $label); } @@ -1172,6 +1176,8 @@ class FormTicket } print '>'; + + $value = ''; if ($format == 0) { $value = ($maxlength ? dol_trunc($arrayseverities['label'], $maxlength) : $arrayseverities['label']); } @@ -1253,7 +1259,7 @@ class FormTicket // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $this->param['langsmodels']; } if (!empty($newlang)) { @@ -1300,7 +1306,7 @@ class FormTicket // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $this->param['langsmodels']; } if (!empty($newlang)) { diff --git a/htdocs/core/class/html.formwebsite.class.php b/htdocs/core/class/html.formwebsite.class.php index 083e571cf35..c6a6826251f 100644 --- a/htdocs/core/class/html.formwebsite.class.php +++ b/htdocs/core/class/html.formwebsite.class.php @@ -165,9 +165,10 @@ class FormWebsite * @param int $useempty 1=Add an empty value in list * @param string $moreattrib More attributes on HTML select tag * @param int $addjscombo Add js combo + * @param string $morecss More css * @return string HTML select component with list of type of containers */ - public function selectSampleOfContainer($htmlname, $selected = '', $useempty = 0, $moreattrib = '', $addjscombo = 0) + public function selectSampleOfContainer($htmlname, $selected = '', $useempty = 0, $moreattrib = '', $addjscombo = 0, $morecss = 'minwidth200') { global $langs, $conf, $user; @@ -190,7 +191,7 @@ class FormWebsite } $out = ''; - $out .= ''; if ($useempty == 1 || $useempty == 2) { $out .= ''; diff --git a/htdocs/core/class/menubase.class.php b/htdocs/core/class/menubase.class.php index 6b45cd08f98..caeece975f2 100644 --- a/htdocs/core/class/menubase.class.php +++ b/htdocs/core/class/menubase.class.php @@ -181,21 +181,21 @@ class Menubase if (!isset($this->enabled)) { $this->enabled = '1'; } - $this->menu_handler = trim($this->menu_handler); - $this->module = trim($this->module); - $this->type = trim($this->type); - $this->mainmenu = trim($this->mainmenu); - $this->leftmenu = trim($this->leftmenu); + $this->menu_handler = trim((string) $this->menu_handler); + $this->module = trim((string) $this->module); + $this->type = trim((string) $this->type); + $this->mainmenu = trim((string) $this->mainmenu); + $this->leftmenu = trim((string) $this->leftmenu); $this->fk_menu = (int) $this->fk_menu; // If -1, fk_mainmenu and fk_leftmenu must be defined - $this->fk_mainmenu = trim($this->fk_mainmenu); - $this->fk_leftmenu = trim($this->fk_leftmenu); + $this->fk_mainmenu = trim((string) $this->fk_mainmenu); + $this->fk_leftmenu = trim((string) $this->fk_leftmenu); $this->position = (int) $this->position; - $this->url = trim($this->url); - $this->target = trim($this->target); - $this->title = trim($this->title); - $this->langs = trim($this->langs); - $this->perms = trim($this->perms); - $this->enabled = trim($this->enabled); + $this->url = trim((string) $this->url); + $this->target = trim((string) $this->target); + $this->title = trim((string) $this->title); + $this->langs = trim((string) $this->langs); + $this->perms = trim((string) $this->perms); + $this->enabled = trim((string) $this->enabled); $this->user = (int) $this->user; if (empty($this->position)) { $this->position = 0; diff --git a/htdocs/core/class/rssparser.class.php b/htdocs/core/class/rssparser.class.php index 93224b9f04d..66e9241d9f5 100644 --- a/htdocs/core/class/rssparser.class.php +++ b/htdocs/core/class/rssparser.class.php @@ -49,6 +49,14 @@ class RssParser private $_lastfetchdate; // Last successful fetch private $_rssarray = array(); + private $current_namespace; + + private $initem; + private $intextinput; + private $incontent; + private $inimage; + private $inchannel; + // For parsing with xmlparser public $stack = array(); // parser stack private $_CONTENT_CONSTRUCTS = array('content', 'summary', 'info', 'title', 'tagline', 'copyright'); @@ -252,21 +260,26 @@ class RssParser return -1; } - $xmlparser = xml_parser_create(''); + try { + $xmlparser = xml_parser_create(null); - if (!is_resource($xmlparser) && !is_object($xmlparser)) { - $this->error = "ErrorFailedToCreateParser"; - return -1; + if (!is_resource($xmlparser) && !is_object($xmlparser)) { + $this->error = "ErrorFailedToCreateParser"; + return -1; + } + + xml_set_object($xmlparser, $this); + xml_set_element_handler($xmlparser, 'feed_start_element', 'feed_end_element'); + xml_set_character_data_handler($xmlparser, 'feed_cdata'); + + $status = xml_parse($xmlparser, $str, false); + + xml_parser_free($xmlparser); + $rss = $this; + //var_dump($status.' '.$rss->_format);exit; + } catch (Exception $e) { + $rss = null; } - - xml_set_object($xmlparser, $this); - xml_set_element_handler($xmlparser, 'feed_start_element', 'feed_end_element'); - xml_set_character_data_handler($xmlparser, 'feed_cdata'); - - $status = xml_parse($xmlparser, $str); - xml_parser_free($xmlparser); - $rss = $this; - //var_dump($status.' '.$rss->_format);exit; } } @@ -441,7 +454,7 @@ class RssParser // Loop on each category $itemCategory = array(); - if (is_array($item->category)) { + if (!empty($item->category) && is_array($item->category)) { foreach ($item->category as $cat) { $itemCategory[] = (string) $cat; } @@ -512,7 +525,7 @@ class RssParser * @param array $attrs Attributes of tags * @return void */ - public function feed_start_element($p, $element, &$attrs) + public function feed_start_element($p, $element, $attrs) { // phpcs:enable $el = $element = strtolower($element); @@ -679,9 +692,9 @@ class RssParser public function append_content($text) { // phpcs:enable - if ($this->initem) { + if (!empty($this->initem)) { $this->concat($this->current_item[$this->incontent], $text); - } elseif ($this->inchannel) { + } elseif (!empty($this->inchannel)) { $this->concat($this->channel[$this->incontent], $text); } } @@ -698,24 +711,24 @@ class RssParser if (!$el) { return; } - if ($this->current_namespace) { - if ($this->initem) { + if (!empty($this->current_namespace)) { + if (!empty($this->initem)) { $this->concat($this->current_item[$this->current_namespace][$el], $text); - } elseif ($this->inchannel) { + } elseif (!empty($this->inchannel)) { $this->concat($this->channel[$this->current_namespace][$el], $text); - } elseif ($this->intextinput) { + } elseif (!empty($this->intextinput)) { $this->concat($this->textinput[$this->current_namespace][$el], $text); - } elseif ($this->inimage) { + } elseif (!empty($this->inimage)) { $this->concat($this->image[$this->current_namespace][$el], $text); } } else { - if ($this->initem) { + if (!empty($this->initem)) { $this->concat($this->current_item[$el], $text); - } elseif ($this->intextinput) { + } elseif (!empty($this->intextinput)) { $this->concat($this->textinput[$el], $text); - } elseif ($this->inimage) { + } elseif (!empty($this->inimage)) { $this->concat($this->image[$el], $text); - } elseif ($this->inchannel) { + } elseif (!empty($this->inchannel)) { $this->concat($this->channel[$el], $text); } } diff --git a/htdocs/core/class/smtps.class.php b/htdocs/core/class/smtps.class.php index 1f5a48a517d..06ada5c4911 100644 --- a/htdocs/core/class/smtps.class.php +++ b/htdocs/core/class/smtps.class.php @@ -68,6 +68,11 @@ class SMTPs */ private $_smtpsPW = null; + /** + * Token in case we use OAUTH2 + */ + private $_smtpsToken = null; + /** * Who sent the Message * This can be defined via a INI file or via a setter method @@ -565,13 +570,13 @@ class SMTPs } // Default authentication method is LOGIN - if (empty($conf->global->MAIL_SMTP_AUTH_TYPE)) { - $conf->global->MAIL_SMTP_AUTH_TYPE = 'LOGIN'; + if (empty($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE)) { + $conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE = 'LOGIN'; } // Send Authentication to Server // Check for errors along the way - switch ($conf->global->MAIL_SMTP_AUTH_TYPE) { + switch ($conf->global->MAIN_MAIL_SMTPS_AUTH_TYPE) { case 'NONE': // Do not send the 'AUTH type' message. For test purpose, if you don't need authentication, it is better to not enter login/pass into setup. $_retVal = true; @@ -583,9 +588,10 @@ class SMTPs break; case 'XOAUTH2': // "user=$email\1auth=Bearer $token\1\1" - $token = 'xxx'; - $xxxx = "user=".$this->_smtpsID."\1auth=Bearer ".$token."\1\1"; - $_retVal = $this->socket_send_str('AUTH XOAUTH2 '.base64_encode($xxxx), '235'); + $user = $this->_smtpsID; + $token = $this->_smtpsToken; + $initRes = "user=".$user."\001auth=Bearer ".$token."\001\001"; + $_retVal = $this->socket_send_str('AUTH XOAUTH2 '.base64_encode($initRes), '235'); if (!$_retVal) { $this->_setErr(130, 'Error when asking for AUTH XOAUTH2'); } @@ -631,7 +637,7 @@ class SMTPs // Connect to Server if ($this->socket = $this->_server_connect()) { // If a User ID *and* a password is given, assume Authentication is desired - if (!empty($this->_smtpsID) && !empty($this->_smtpsPW)) { + if (!empty($this->_smtpsID) && (!empty($this->_smtpsPW) || !empty($this->_smtpsToken))) { // Send the RFC2554 specified EHLO. $_retVal = $this->_server_authenticate(); } else { @@ -923,6 +929,27 @@ class SMTPs return $this->_smtpsPW; } + /** + * User token for OAUTH2 + * + * @param string $_strToken User token + * @return void + */ + public function setToken($_strToken) + { + $this->_smtpsToken = $_strToken; + } + + /** + * Retrieves the User token for OAUTH2 + * + * @return string User token for OAUTH2 + */ + public function getToken() + { + return $this->_smtpsToken; + } + /** * Character set used for current message * Character set is defaulted to 'iso-8859-1'; @@ -1866,7 +1893,7 @@ class SMTPs } if (!(substr($server_response, 0, 3) == $response)) { - $this->_setErr(120, "Ran into problems sending Mail.\r\nResponse: $server_response"); + $this->_setErr(120, "Ran into problems sending Mail.\r\nResponse:".$server_response); $_retVal = false; } diff --git a/htdocs/core/class/translate.class.php b/htdocs/core/class/translate.class.php index 94bd36799fc..29db15e0a0b 100644 --- a/htdocs/core/class/translate.class.php +++ b/htdocs/core/class/translate.class.php @@ -637,7 +637,11 @@ class Translate ); if (strpos($key, 'Format') !== 0) { - $str = sprintf($str, $param1, $param2, $param3, $param4); // Replace %s and %d except for FormatXXX strings. + try { + $str = sprintf($str, $param1, $param2, $param3, $param4); // Replace %s and %d except for FormatXXX strings. + } catch (Exception $e) { + // No exception managed + } } // Crypt string into HTML @@ -904,11 +908,11 @@ class Translate * This function need module "numberwords" to be installed. If not it will return * same number (this module is not provided by default as it use non GPL source code). * - * @param int $number Number to encode in full text - * @param string $isamount ''=it's just a number, '1'=It's an amount (default currency), 'currencycode'=It's an amount (foreign currency) - * @return string Label translated in UTF8 (but without entities) - * 10 if setDefaultLang was en_US => ten - * 123 if setDefaultLang was fr_FR => cent vingt trois + * @param int|string $number Number to encode in full text + * @param string $isamount ''=it's just a number, '1'=It's an amount (default currency), 'currencycode'=It's an amount (foreign currency) + * @return string Label translated in UTF8 (but without entities) + * 10 if setDefaultLang was en_US => ten + * 123 if setDefaultLang was fr_FR => cent vingt trois */ public function getLabelFromNumber($number, $isamount = '') { diff --git a/htdocs/core/class/utils.class.php b/htdocs/core/class/utils.class.php index c55d78b0caf..9a330c7aba5 100644 --- a/htdocs/core/class/utils.class.php +++ b/htdocs/core/class/utils.class.php @@ -952,7 +952,7 @@ class Utils dol_include_once('/core/lib/files.lib.php'); - $nbSaves = empty($conf->global->SYSLOG_FILE_SAVES) ? 10 : intval($conf->global->SYSLOG_FILE_SAVES); + $nbSaves = intval(getDolGlobalString('SYSLOG_FILE_SAVES', 10)); if (empty($conf->global->SYSLOG_FILE)) { $mainlogdir = DOL_DATA_ROOT; diff --git a/htdocs/core/class/utils_diff.class.php b/htdocs/core/class/utils_diff.class.php index 9abc1d899fe..2925bffc3b6 100644 --- a/htdocs/core/class/utils_diff.class.php +++ b/htdocs/core/class/utils_diff.class.php @@ -247,6 +247,7 @@ class Diff $html = ''; // loop over the lines in the diff + $element = 'unknown'; foreach ($diff as $line) { // extend the HTML with the line switch ($line[1]) { @@ -260,10 +261,7 @@ class Diff $element = 'ins'; break; } - $html .= - '<'.$element.'>' - . htmlspecialchars($line[0]) - . ''; + $html .= '<'.$element.'>'.dol_escape_htmltag($line[0]).''; // extend the HTML with the separator $html .= $separator; @@ -286,6 +284,8 @@ class Diff // initialise the HTML $html = $indentation."
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; print ''; @@ -934,15 +944,19 @@ if (!empty($arrayfields['p.import_key']['checked'])) { print ''; -$searchpicto = $form->showFilterAndCheckAddButtons(0); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterAndCheckAddButtons(0); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -1282,9 +1311,10 @@ while ($i < min($num, $limit)) { $totalarray['nbfield']++; } } + // Import key if (!empty($arrayfields['p.import_key']['checked'])) { print ''; - print $obj->import_key; + print dol_escape_htmltag($obj->import_key); print "'; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print ''; - print $socstatic->country; + print ''; + print dol_escape_htmltag($socstatic->country); print '
'; - $this->selectTypesTickets((GETPOST('type_code', 'alpha') ? GETPOST('type_code', 'alpha') : $this->type_code), 'type_code', '', 2, 0, 0, 0, 'minwidth200'); + $this->selectTypesTickets((GETPOST('type_code', 'alpha') ? GETPOST('type_code', 'alpha') : $this->type_code), 'type_code', '', 2, 1, 0, 0, 'minwidth200'); print '
'; - $this->selectSeveritiesTickets((GETPOST('severity_code') ? GETPOST('severity_code') : $this->severity_code), 'severity_code', '', 2, 0); + $this->selectSeveritiesTickets((GETPOST('severity_code') ? GETPOST('severity_code') : $this->severity_code), 'severity_code', '', 2, 1); print '
\n"; + $rightCell = $leftCell = ''; + // loop over the lines in the diff $index = 0; $nbdiff = count($diff); diff --git a/htdocs/core/class/vcard.class.php b/htdocs/core/class/vcard.class.php index d513262b871..dbe505a894b 100644 --- a/htdocs/core/class/vcard.class.php +++ b/htdocs/core/class/vcard.class.php @@ -195,14 +195,14 @@ class vCard // $type may be DOM | INTL | POSTAL | PARCEL | HOME | WORK or any combination of these: e.g. "WORK;PARCEL;POSTAL" $key = "ADR"; if ($type != "") { - $key .= ";$type"; + $key .= ";".$type; } $key .= ";CHARSET=".$this->encoding; $this->properties[$key] = ";".encode($extended).";".encode($street).";".encode($city).";".encode($region).";".encode($zip).";".encode($country); - if ($this->properties["LABEL;$type;CHARSET=".$this->encoding] == "") { + //if ($this->properties["LABEL;".$type.";CHARSET=".$this->encoding] == '') { //$this->setLabel($postoffice, $extended, $street, $city, $region, $zip, $country, $type); - } + //} } /** diff --git a/htdocs/core/customreports.php b/htdocs/core/customreports.php index 46b885bd60a..4fbee42b0dd 100644 --- a/htdocs/core/customreports.php +++ b/htdocs/core/customreports.php @@ -93,19 +93,19 @@ $object = null; $ObjectClassName = ''; // Objects available by default $arrayoftype = array( - 'thirdparty' => array('label' => 'ThirdParties', 'ObjectClassName' => 'Societe', 'enabled' => $conf->societe->enabled, 'ClassPath' => "/societe/class/societe.class.php"), - 'contact' => array('label' => 'Contacts', 'ObjectClassName' => 'Contact', 'enabled' => $conf->societe->enabled, 'ClassPath' => "/contact/class/contact.class.php"), - 'proposal' => array('label' => 'Proposals', 'ObjectClassName' => 'Propal', 'enabled' => $conf->propal->enabled, 'ClassPath' => "/comm/propal/class/propal.class.php"), - 'order' => array('label' => 'Orders', 'ObjectClassName' => 'Commande', 'enabled' => $conf->commande->enabled, 'ClassPath' => "/commande/class/commande.class.php"), - 'invoice' => array('label' => 'Invoices', 'ObjectClassName' => 'Facture', 'enabled' => $conf->facture->enabled, 'ClassPath' => "/compta/facture/class/facture.class.php"), - 'invoice_template'=>array('label' => 'PredefinedInvoices', 'ObjectClassName' => 'FactureRec', 'enabled' => $conf->facture->enabled, 'ClassPath' => "/compta/class/facturerec.class.php", 'langs'=>'bills'), - 'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => $conf->contrat->enabled, 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), - 'contractdet' => array('label' => 'ContractLines', 'ObjectClassName' => 'ContratLigne', 'enabled' => $conf->contrat->enabled, 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), - 'bom' => array('label' => 'BOM', 'ObjectClassName' => 'Bom', 'enabled' => $conf->bom->enabled), - 'mo' => array('label' => 'MO', 'ObjectClassName' => 'Mo', 'enabled' => $conf->mrp->enabled, 'ClassPath' => "/mrp/class/mo.class.php"), - 'ticket' => array('label' => 'Ticket', 'ObjectClassName' => 'Ticket', 'enabled' => $conf->ticket->enabled), - 'member' => array('label' => 'Adherent', 'ObjectClassName' => 'Adherent', 'enabled' => $conf->adherent->enabled, 'ClassPath' => "/adherents/class/adherent.class.php", 'langs'=>'members'), - 'cotisation' => array('label' => 'Subscriptions', 'ObjectClassName' => 'Subscription', 'enabled' => $conf->adherent->enabled, 'ClassPath' => "/adherents/class/subscription.class.php", 'langs'=>'members'), + 'thirdparty' => array('label' => 'ThirdParties', 'ObjectClassName' => 'Societe', 'enabled' => isModEnabled('societe'), 'ClassPath' => "/societe/class/societe.class.php"), + 'contact' => array('label' => 'Contacts', 'ObjectClassName' => 'Contact', 'enabled' => isModEnabled('societ'), 'ClassPath' => "/contact/class/contact.class.php"), + 'proposal' => array('label' => 'Proposals', 'ObjectClassName' => 'Propal', 'enabled' => isModEnabled('propal'), 'ClassPath' => "/comm/propal/class/propal.class.php"), + 'order' => array('label' => 'Orders', 'ObjectClassName' => 'Commande', 'enabled' => isModEnabled('commande'), 'ClassPath' => "/commande/class/commande.class.php"), + 'invoice' => array('label' => 'Invoices', 'ObjectClassName' => 'Facture', 'enabled' => isModEnabled('facture'), 'ClassPath' => "/compta/facture/class/facture.class.php"), + 'invoice_template'=>array('label' => 'PredefinedInvoices', 'ObjectClassName' => 'FactureRec', 'enabled' => isModEnabled('facture'), 'ClassPath' => "/compta/class/facturerec.class.php", 'langs'=>'bills'), + 'contract' => array('label' => 'Contracts', 'ObjectClassName' => 'Contrat', 'enabled' => isModEnabled('contrat'), 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), + 'contractdet' => array('label' => 'ContractLines', 'ObjectClassName' => 'ContratLigne', 'enabled' => isModEnabled('contrat'), 'ClassPath' => "/contrat/class/contrat.class.php", 'langs'=>'contracts'), + 'bom' => array('label' => 'BOM', 'ObjectClassName' => 'Bom', 'enabled' => isModEnabled('bom')), + 'mo' => array('label' => 'MO', 'ObjectClassName' => 'Mo', 'enabled' => isModEnabled('mrp'), 'ClassPath' => "/mrp/class/mo.class.php"), + 'ticket' => array('label' => 'Ticket', 'ObjectClassName' => 'Ticket', 'enabled' => isModEnabled('ticket')), + 'member' => array('label' => 'Adherent', 'ObjectClassName' => 'Adherent', 'enabled' => isModEnabled('adherent'), 'ClassPath' => "/adherents/class/adherent.class.php", 'langs'=>'members'), + 'cotisation' => array('label' => 'Subscriptions', 'ObjectClassName' => 'Subscription', 'enabled' => isModEnabled('adherent'), 'ClassPath' => "/adherents/class/subscription.class.php", 'langs'=>'members'), ); // Complete $arrayoftype by external modules @@ -217,7 +217,7 @@ foreach ($arrayoftype as $key => $val) { if (dol_eval($val['enabled'], 1, 1, '1')) { $newarrayoftype[$key] = $arrayoftype[$key]; } - if ($val['langs']) { + if (!empty($val['langs'])) { $langs->load($val['langs']); } } @@ -363,17 +363,35 @@ if (is_array($search_groupby) && count($search_groupby)) { // Add a protection/error to refuse the request if number of differentr values for the group by is higher than $MAXUNIQUEVALFORGROUP if (count($arrayofvaluesforgroupby['g_'.$gkey]) > $MAXUNIQUEVALFORGROUP) { $langs->load("errors"); - if (strpos($fieldtocount, 'te.') === 0) { + if (strpos($fieldtocount, 'te.') === 0) { // This is an extrafield //if (!empty($extrafields->attributes[$object->table_element]['langfile'][$gvalwithoutprefix])) { // $langs->load($extrafields->attributes[$object->table_element]['langfile'][$gvalwithoutprefix]); //} $keyforlabeloffield = $extrafields->attributes[$object->table_element]['label'][$gvalwithoutprefix]; - } else { - $keyforlabeloffield = $object->fields[$gvalwithoutprefix]['label']; + $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield); + } elseif (strpos($fieldtocount, 't__') === 0) { // This is a field of a foreign key + $reg = array(); + if (preg_match('/^(.*)\.(.*)/', $gvalwithoutprefix, $reg)) { + $gvalwithoutprefix = preg_replace('/\..*$/', '', $gvalwithoutprefix); + $gvalwithoutprefix = preg_replace('/t__/', '', $gvalwithoutprefix); + $keyforlabeloffield = $object->fields[$gvalwithoutprefix]['label']; + $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield).'-'.$reg[2]; + } else { + $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield); + } + } else { // This is a common field + $reg = array(); + if (preg_match('/^(.*)\-(year|month|day)/', $gvalwithoutprefix, $reg)) { + $gvalwithoutprefix = preg_replace('/\-(year|month|day)/', '', $gvalwithoutprefix); + $keyforlabeloffield = $object->fields[$gvalwithoutprefix]['label']; + $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield).'-'.$reg[2]; + } else { + $keyforlabeloffield = $object->fields[$gvalwithoutprefix]['label']; + $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield); + } } - //var_dump($gkey.' '.$gval.' '.$gvalwithoutprefix); - $gvalwithoutprefix = preg_replace('/\-(year|month|day)/', '', $gvalwithoutprefix); - $labeloffield = $langs->transnoentitiesnoconv($keyforlabeloffield); + //var_dump($gkey.' '.$gval.' '.$gvalwithoutprefix.' '.$fieldtocount.' '.$keyforlabeloffield); + //var_dump($object->fields); setEventMessages($langs->trans("ErrorTooManyDifferentValueForSelectedGroupBy", $MAXUNIQUEVALFORGROUP, $labeloffield), null, 'warnings'); $search_groupby = array(); } @@ -450,7 +468,7 @@ $simplearrayofmesures = array(); foreach ($arrayofmesures as $key => $val) { $simplearrayofmesures[$key] = $arrayofmesures[$key]['label']; } -print $form->multiselectarray('search_measures', $simplearrayofmesures, $search_measures, 0, 0, 'minwidth400', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields +print $form->multiselectarray('search_measures', $simplearrayofmesures, $search_measures, 0, 0, 'minwidth300', 1, 0, '', '', $langs->trans("Measures")); // Fill the array $arrayofmeasures with possible fields print ''; // XAxis @@ -458,7 +476,7 @@ $count = 0; print '
'; print '
'; //var_dump($arrayofxaxis); -print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis")); // Fill the array $arrayofxaxis with possible fields +print $formother->selectXAxisField($object, $search_xaxis, $arrayofxaxis, $langs->trans("XAxis"), 'minwidth300 maxwidth400'); // Fill the array $arrayofxaxis with possible fields print '
'; // Group by @@ -970,31 +988,31 @@ function fillArrayOfMeasures($object, $tablealias, $labelofobject, &$arrayofmesu // Add main fields of object foreach ($object->fields as $key => $val) { if (!empty($val['isameasure']) && (!isset($val['enabled']) || dol_eval($val['enabled'], 1, 1, '1'))) { - $position = (!empty($val['position']) ? $val['position'] : 0); + $position = (empty($val['position']) ? 0 : intVal($val['position'])); $arrayofmesures[$tablealias.'.'.$key.'-sum'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$langs->trans("Sum").')', - 'position' => ($position+($count * 100000)).'.1', + 'position' => ($position + ($count * 100000)).'.1', 'table' => $object->table_element ); $arrayofmesures[$tablealias.'.'.$key.'-average'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$langs->trans("Average").')', - 'position' => ($position+($count * 100000)).'.2', + 'position' => ($position + ($count * 100000)).'.2', 'table' => $object->table_element ); $arrayofmesures[$tablealias.'.'.$key.'-min'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$langs->trans("Minimum").')', - 'position' => ($position+($count * 100000)).'.3', + 'position' => ($position + ($count * 100000)).'.3', 'table' => $object->table_element ); $arrayofmesures[$tablealias.'.'.$key.'-max'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$langs->trans("Maximum").')', - 'position' => ($position+($count * 100000)).'.4', + 'position' => ($position + ($count * 100000)).'.4', 'table' => $object->table_element ); } } // Add extrafields to Measures - if ($object->isextrafieldmanaged) { + if (!empty($object->isextrafieldmanaged)) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if (!empty($extrafields->attributes[$object->table_element]['totalizable'][$key]) && (!isset($extrafields->attributes[$object->table_element]['enabled'][$key]) || dol_eval($extrafields->attributes[$object->table_element]['enabled'][$key], 1, 1, '1'))) { $position = (!empty($val['position']) ? $val['position'] : 0); @@ -1098,26 +1116,27 @@ function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis, continue; } if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) { - $position = (!empty($val['position']) ? $val['position'] : 0); + $position = (empty($val['position']) ? 0 : intVal($val['position'])); $arrayofxaxis[$tablealias.'.'.$key.'-year'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.')', - 'position' => ($position+($count * 100000)).'.1', + 'position' => ($position + ($count * 100000)).'.1', 'table' => $object->table_element ); $arrayofxaxis[$tablealias.'.'.$key.'-month'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.')', - 'position' => ($position+($count * 100000)).'.2', + 'position' => ($position + ($count * 100000)).'.2', 'table' => $object->table_element ); $arrayofxaxis[$tablealias.'.'.$key.'-day'] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.'-'.$DD.')', - 'position' => ($position+($count * 100000)).'.3', + 'position' => ($position + ($count * 100000)).'.3', 'table' => $object->table_element ); } else { + $position = (empty($val['position']) ? 0 : intVal($val['position'])); $arrayofxaxis[$tablealias.'.'.$key] = array( 'label' => img_picto('', $object->picto, 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), - 'position' => ($position+($count * 100000)), + 'position' => ($position + ($count * 100000)), 'table' => $object->table_element ); } @@ -1125,7 +1144,7 @@ function fillArrayOfXAxis($object, $tablealias, $labelofobject, &$arrayofxaxis, } // Add extrafields to X-Axis - if ($object->isextrafieldmanaged) { + if (!empty($object->isextrafieldmanaged)) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') { continue; @@ -1196,7 +1215,7 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup // Add main fields of object foreach ($object->fields as $key => $val) { - if (!$val['isameasure']) { + if (empty($val['isameasure'])) { if (in_array($key, array( 'id', 'ref_int', 'ref_ext', 'rowid', 'entity', 'last_main_doc', 'logo', 'logo_squarred', 'extraparams', 'parent', 'photo', 'socialnetworks', 'webservices_url', 'webservices_key'))) { @@ -1218,26 +1237,27 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup continue; } if (in_array($val['type'], array('timestamp', 'date', 'datetime'))) { - $position = (!empty($val['position']) ? $val['position'] : 0); + $position = (empty($val['position']) ? 0 : intVal($val['position'])); $arrayofgroupby[$tablealias.'.'.$key.'-year'] = array( 'label' => img_picto('', $object->picto, - 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.')', 'position' => ($position+($count * 100000)).'.1', + 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.')', 'position' => ($position + ($count * 100000)).'.1', 'table' => $object->table_element ); $arrayofgroupby[$tablealias.'.'.$key.'-month'] = array( 'label' => img_picto('', $object->picto, - 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.')', 'position' => ($position+($count * 100000)).'.2', + 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.')', 'position' => ($position + ($count * 100000)).'.2', 'table' => $object->table_element ); $arrayofgroupby[$tablealias.'.'.$key.'-day'] = array( 'label' => img_picto('', $object->picto, - 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.'-'.$DD.')', 'position' => ($position+($count * 100000)).'.3', + 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']).' ('.$YYYY.'-'.$MM.'-'.$DD.')', 'position' => ($position + ($count * 100000)).'.3', 'table' => $object->table_element ); } else { + $position = (empty($val['position']) ? 0 : intVal($val['position'])); $arrayofgroupby[$tablealias.'.'.$key] = array( 'label' => img_picto('', $object->picto, - 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($position+($count * 100000)), + 'class="pictofixedwidth"').' '.$labelofobject.': '.$langs->trans($val['label']), 'position' => ($position + ($count * 100000)), 'table' => $object->table_element ); } @@ -1245,7 +1265,7 @@ function fillArrayOfGroupBy($object, $tablealias, $labelofobject, &$arrayofgroup } // Add extrafields to Group by - if ($object->isextrafieldmanaged) { + if (! empty($object->isextrafieldmanaged)) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { if ($extrafields->attributes[$object->table_element]['type'][$key] == 'separate') { continue; diff --git a/htdocs/core/db/mysqli.class.php b/htdocs/core/db/mysqli.class.php index 582fd08811f..9b1d78f1694 100644 --- a/htdocs/core/db/mysqli.class.php +++ b/htdocs/core/db/mysqli.class.php @@ -92,14 +92,14 @@ class DoliDBMysqli extends DoliDB // We do not try to connect to database, only to server. Connect to database is done later in constrcutor $this->db = $this->connect($host, $user, $pass, '', $port); - if ($this->db->connect_errno) { - $this->connected = false; - $this->ok = false; - $this->error = $this->db->connect_error; - dol_syslog(get_class($this)."::DoliDBMysqli Connect error: ".$this->error, LOG_ERR); - } else { + if ($this->db && empty($this->db->connect_errno)) { $this->connected = true; $this->ok = true; + } else { + $this->connected = false; + $this->ok = false; + $this->error = empty($this->db) ? 'Failed to connect' : $this->db->connect_error; + dol_syslog(get_class($this)."::DoliDBMysqli Connect error: ".$this->error, LOG_ERR); } // If server connection is ok, we try to connect to the database @@ -204,7 +204,13 @@ class DoliDBMysqli extends DoliDB { // phpcs:enable dol_syslog(get_class($this)."::select_db database=".$database, LOG_DEBUG); - return $this->db->select_db($database); + $result = false; + try { + $result = $this->db->select_db($database); + } catch (Exception $e) { + // Nothing done on error + } + return $result; } @@ -216,7 +222,7 @@ class DoliDBMysqli extends DoliDB * @param string $passwd Password * @param string $name Name of database (not used for mysql, used for pgsql) * @param integer $port Port of database server - * @return mysqli Database access object + * @return mysqli|null Database access object * @see close() */ public function connect($host, $login, $passwd, $name, $port = 0) @@ -228,7 +234,13 @@ class DoliDBMysqli extends DoliDB // Can also be // mysqli::init(); mysql::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0'); mysqli::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5); // return mysqli::real_connect($host, $user, $pass, $db, $port); - return new mysqli($host, $login, $passwd, $name, $port); + $tmp = false; + try { + $tmp = new mysqli($host, $login, $passwd, $name, $port); + } catch (Exception $e) { + dol_syslog(get_class($this)."::connect failed", LOG_DEBUG); + } + return $tmp; } /** @@ -459,7 +471,7 @@ class DoliDBMysqli extends DoliDB */ public function escape($stringtoencode) { - return $this->db->real_escape_string($stringtoencode); + return $this->db->real_escape_string((string) $stringtoencode); } /** @@ -470,7 +482,7 @@ class DoliDBMysqli extends DoliDB */ public function escapeunderscore($stringtoencode) { - return str_replace('_', '\_', $stringtoencode); + return str_replace('_', '\_', (string) $stringtoencode); } /** @@ -746,6 +758,9 @@ class DoliDBMysqli extends DoliDB // phpcs:enable // FIXME: $fulltext_keys parameter is unused + $pk = ''; + $sqluq = $sqlk = array(); + // cles recherchees dans le tableau des descriptions (fields) : type,value,attribute,null,default,extra // ex. : $fields['rowid'] = array('type'=>'int','value'=>'11','null'=>'not null','extra'=> 'auto_increment'); $sql = "CREATE TABLE ".$table."("; diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index 5a2a1c1b753..d33affec476 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -419,7 +419,11 @@ class DoliDBPgsql extends DoliDB // try first Unix domain socket (local) if ((!empty($host) && $host == "socket") && !defined('NOLOCALSOCKETPGCONNECT')) { $con_string = "dbname='".$name."' user='".$login."' password='".$passwd."'"; // $name may be empty - $this->db = @pg_connect($con_string); + try { + $this->db = @pg_connect($con_string); + } catch (Exception $e) { + // No message + } } // if local connection failed or not requested, use TCP/IP @@ -871,10 +875,10 @@ class DoliDBPgsql extends DoliDB global $conf; // Type of encryption (2: AES (recommended), 1: DES , 0: no encryption) - $cryptType = ($conf->db->dolibarr_main_db_encryption ? $conf->db->dolibarr_main_db_encryption : 0); + //$cryptType = ($conf->db->dolibarr_main_db_encryption ? $conf->db->dolibarr_main_db_encryption : 0); //Encryption key - $cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey) ? $conf->db->dolibarr_main_db_cryptkey : ''); + //$cryptKey = (!empty($conf->db->dolibarr_main_db_cryptkey) ? $conf->db->dolibarr_main_db_cryptkey : ''); $return = $value; return $return; diff --git a/htdocs/core/filemanagerdol/browser/default/browser.php b/htdocs/core/filemanagerdol/browser/default/browser.php index b5bce100d39..0c1b29d12b2 100644 --- a/htdocs/core/filemanagerdol/browser/default/browser.php +++ b/htdocs/core/filemanagerdol/browser/default/browser.php @@ -21,10 +21,12 @@ //define('NOTOKENRENEWAL',1); // Disables token renewal //require '../../../../main.inc.php'; -require '../../connectors/php/config.php'; // This include the define('NOTOKENRENEWAL',1) and the require main.in.php +require '../../connectors/php/config.inc.php'; // This include the define('NOTOKENRENEWAL',1) and the require main.in.php global $Config; +top_httphead(); + ?> diff --git a/htdocs/core/filemanagerdol/browser/default/frmactualfolder.php b/htdocs/core/filemanagerdol/browser/default/frmactualfolder.php index c66187ee433..949307c0624 100644 --- a/htdocs/core/filemanagerdol/browser/default/frmactualfolder.php +++ b/htdocs/core/filemanagerdol/browser/default/frmactualfolder.php @@ -23,6 +23,8 @@ define('NOTOKENRENEWAL', 1); // Disables token renewal require '../../../../main.inc.php'; +top_httphead(); + ?> '."\n"; - $out .= ''.$buttonstring.''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; - $out .= ''; + '; + } return $out; } @@ -2196,7 +2212,7 @@ function dol_banner_tab($object, $paramid, $morehtml = '', $shownav = 1, $fieldi } if ($showbarcode) { - $morehtmlleft .= '
'.$form->showbarcode($object, 100, 'photoref').'
'; + $morehtmlleft .= '
'.$form->showbarcode($object, 100, 'photoref valignmiddle').'
'; } if ($object->element == 'societe') { @@ -3191,6 +3207,8 @@ function dol_print_phone($phone, $countrycode = '', $cid = 0, $socid = 0, $addli $newphone = substr($newphone, 0, 3).$separ.substr($newphone, 3, 2).$separ.substr($newphone, 5, 2).$separ.substr($newphone, 7, 2).$separ.substr($newphone, 9, 2); } elseif (dol_strlen($phone) == 12) { $newphone = substr($newphone, 0, 3).$separ.substr($newphone, 3, 1).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 2).$separ.substr($newphone, 10, 2); + } elseif (dol_strlen($phone) == 13) { + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 3).$separ.substr($newphone, 11, 2); } } elseif (strtoupper($countrycode) == "CA") { if (dol_strlen($phone) == 10) { @@ -3302,8 +3320,8 @@ function dol_print_phone($phone, $countrycode = '', $cid = 0, $socid = 0, $addli $newphone = substr($newphone, 0, 5).$separ.substr($newphone, 5, 3).$separ.substr($newphone, 8, 4); } } elseif (strtoupper($countrycode) == "MG") {//Madagascar - if (dol_strlen($phone) == 13) {//ex: +261_AB_CD_EF_GHI - $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 2).$separ.substr($newphone, 10, 3); + if (dol_strlen($phone) == 13) {//ex: +261_AB_CD_EFG_HI + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 3).$separ.substr($newphone, 11, 2); } } elseif (strtoupper($countrycode) == "GB") {//Royaume uni if (dol_strlen($phone) == 13) {//ex: +44_ABCD_EFG_HIJ @@ -3343,6 +3361,17 @@ function dol_print_phone($phone, $countrycode = '', $cid = 0, $socid = 0, $addli //ex: +61_A_BCDE_FGHI $newphone = substr($newphone, 0, 3).$separ.substr($newphone, 3, 1).$separ.substr($newphone, 4, 4).$separ.substr($newphone, 8, 4); } + } elseif (strtoupper($countrycode) == "LU") { + // Luxembourg + if (dol_strlen($phone) == 10) {// fixe 6 chiffres +352_AA_BB_CC + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 2); + } elseif (dol_strlen($phone) == 11) {// fixe 7 chiffres +352_AA_BB_CC_D + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 2).$separ.substr($newphone, 10, 1); + } elseif (dol_strlen($phone) == 12) {// fixe 8 chiffres +352_AA_BB_CC_DD + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 2).$separ.substr($newphone, 6, 2).$separ.substr($newphone, 8, 2).$separ.substr($newphone, 10, 2); + } elseif (dol_strlen($phone) == 13) {// mobile +352_AAA_BB_CC_DD + $newphone = substr($newphone, 0, 4).$separ.substr($newphone, 4, 3).$separ.substr($newphone, 7, 2).$separ.substr($newphone, 9, 2).$separ.substr($newphone, 11, 2); + } } if (!empty($addlink)) { // Link on phone number (+ link to add action if conf->global->AGENDA_ADDACTIONFORPHONE set) if ($conf->browser->layout == 'phone' || (!empty($conf->clicktodial->enabled) && !empty($conf->global->CLICKTODIAL_USE_TEL_LINK_ON_PHONE_NUMBERS))) { // If phone or option for, we use link of phone @@ -3876,15 +3905,18 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ if (strpos($pictowithouttext, 'fontawesome_') !== false || preg_match('/^fa-/', $pictowithouttext)) { // This is a font awesome image 'fonwtawesome_xxx' or 'fa-xxx' + $pictowithouttext = str_replace('fontawesome_', '', $pictowithouttext); $pictowithouttext = str_replace('fa-', '', $pictowithouttext); + $pictowithouttextarray = explode('_', $pictowithouttext); $marginleftonlyshort = 0; if (!empty($pictowithouttextarray[1])) { - $fakey = 'fa-'.$pictowithouttextarray[1]; - $fa = empty($pictowithouttextarray[2]) ? 'fa' : $pictowithouttextarray[2]; - $facolor = empty($pictowithouttextarray[3]) ? '' : $pictowithouttextarray[3]; - $fasize = empty($pictowithouttextarray[4]) ? '' : $pictowithouttextarray[4]; + // Syntax is 'fontawesome_fakey_faprefix_facolor_fasize' or 'fa-fakey_faprefix_facolor_fasize' + $fakey = 'fa-'.$pictowithouttextarray[0]; + $fa = empty($pictowithouttextarray[1]) ? 'fa' : $pictowithouttextarray[1]; + $facolor = empty($pictowithouttextarray[2]) ? '' : $pictowithouttextarray[2]; + $fasize = empty($pictowithouttextarray[3]) ? '' : $pictowithouttextarray[3]; } else { $fakey = 'fa-'.$pictowithouttext; $fa = 'fa'; @@ -3934,7 +3966,7 @@ function img_picto($titlealt, $picto, $moreatt = '', $pictoisfullpath = false, $ 'off', 'on', 'order', 'paiment', 'paragraph', 'play', 'pdf', 'phone', 'phoning', 'phoning_mobile', 'phoning_fax', 'playdisabled', 'previous', 'poll', 'pos', 'printer', 'product', 'propal', 'puce', 'stock', 'resize', 'service', 'stats', 'trip', - 'security', 'setup', 'share-alt', 'sign-out', 'split', 'stripe', 'stripe-s', 'switch_off', 'switch_on', 'switch_on_red', 'tools', 'unlink', 'uparrow', 'user', 'vcard', 'wrench', + 'security', 'setup', 'share-alt', 'sign-out', 'split', 'stripe', 'stripe-s', 'switch_off', 'switch_on', 'switch_on_red', 'tools', 'unlink', 'uparrow', 'user', 'user-tie', 'vcard', 'wrench', 'github', 'google', 'jabber', 'skype', 'twitter', 'facebook', 'linkedin', 'instagram', 'snapchat', 'youtube', 'google-plus-g', 'whatsapp', 'chevron-left', 'chevron-right', 'chevron-down', 'chevron-top', 'commercial', 'companies', 'generic', 'home', 'hrm', 'members', 'products', 'invoicing', @@ -4987,7 +5019,7 @@ function dol_print_error_email($prefixcode, $errormessage = '', $errormessages = * @param string $field Field to use for new sorting * @param string $begin ("" by defaut) * @param string $moreparam Add more parameters on sort url links ("" by default) - * @param string $moreattrib Options of attribute td ("" by defaut, example: 'align="center"') + * @param string $moreattrib Options of attribute td ("" by defaut) * @param string $sortfield Current field used to sort * @param string $sortorder Current sort order * @param string $prefix Prefix for css. Use space after prefix to add your own CSS tag. @@ -5009,7 +5041,7 @@ function print_liste_field_titre($name, $file = "", $field = "", $begin = "", $m * @param string $field Field to use for new sorting. Empty if this field is not sortable. Example "t.abc" or "t.abc,t.def" * @param string $begin ("" by defaut) * @param string $moreparam Add more parameters on sort url links ("" by default) - * @param string $moreattrib Add more attributes on th ("" by defaut, example: 'align="center"'). To add more css class, use param $prefix. + * @param string $moreattrib Add more attributes on th ("" by defaut). To add more css class, use param $prefix. * @param string $sortfield Current field used to sort (Ex: 'd.datep,d.id') * @param string $sortorder Current sort order (Ex: 'asc,desc') * @param string $prefix Prefix for css. Use space after prefix to add your own CSS tag, for example 'mycss '. @@ -5458,9 +5490,10 @@ function print_fleche_navigation($page, $file, $options = '', $nextpage = 0, $be * @param boolean $addpercent Add a percent % sign in output * @param int $info_bits Miscellaneous information on vat (0=Default, 1=French NPR vat) * @param int $usestarfornpr -1=Never show, 0 or 1=Use '*' for NPR vat rates + * @param int $html Used for html output * @return string String with formated amounts ('19,6' or '19,6%' or '8.5% (NPR)' or '8.5% *' or '19,6 (CODEX)') */ -function vatrate($rate, $addpercent = false, $info_bits = 0, $usestarfornpr = 0) +function vatrate($rate, $addpercent = false, $info_bits = 0, $usestarfornpr = 0, $html = 0) { $morelabel = ''; @@ -5468,9 +5501,11 @@ function vatrate($rate, $addpercent = false, $info_bits = 0, $usestarfornpr = 0) $rate = str_replace('%', '', $rate); $addpercent = true; } + $reg = array(); if (preg_match('/\((.*)\)/', $rate, $reg)) { $morelabel = ' ('.$reg[1].')'; $rate = preg_replace('/\s*'.preg_quote($morelabel, '/').'/', '', $rate); + $morelabel = ' '.($html ? '' : '').'('.$reg[1].')'.($html ? '' : ''); } if (preg_match('/\*/', $rate)) { $rate = str_replace('*', '', $rate); @@ -6566,10 +6601,10 @@ function get_exdir($num, $level, $alpha, $withoutslash, $object, $modulepart = ' * * @param string $dir Directory to create (Separator must be '/'. Example: '/mydir/mysubdir') * @param string $dataroot Data root directory (To avoid having the data root in the loop. Using this will also lost the warning on first dir PHP has no permission when open_basedir is used) - * @param string|null $newmask Mask for new file (Defaults to $conf->global->MAIN_UMASK or 0755 if unavailable). Example: '0444' + * @param string $newmask Mask for new file (Defaults to $conf->global->MAIN_UMASK or 0755 if unavailable). Example: '0444' * @return int < 0 if KO, 0 = already exists, > 0 if OK */ -function dol_mkdir($dir, $dataroot = '', $newmask = null) +function dol_mkdir($dir, $dataroot = '', $newmask = '') { global $conf; @@ -6610,7 +6645,7 @@ function dol_mkdir($dir, $dataroot = '', $newmask = null) dol_syslog("functions.lib::dol_mkdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.", LOG_DEBUG); umask(0); - $dirmaskdec = octdec($newmask); + $dirmaskdec = octdec((string) $newmask); if (empty($newmask)) { $dirmaskdec = empty($conf->global->MAIN_UMASK) ? octdec('0755') : octdec($conf->global->MAIN_UMASK); } @@ -6799,10 +6834,11 @@ function dol_string_onlythesehtmlattributes($stringtoclean, $allowed_attributes for ($attrs = $els->item($i)->attributes, $ii = $attrs->length - 1; $ii >= 0; $ii--) { //var_dump($attrs->item($ii)); if (! empty($attrs->item($ii)->name)) { - // Delete attribute if not into allowed_attributes if (! in_array($attrs->item($ii)->name, $allowed_attributes)) { + // Delete attribute if not into allowed_attributes $els->item($i)->removeAttribute($attrs->item($ii)->name); } elseif (in_array($attrs->item($ii)->name, array('style'))) { + // If attribute is 'style' $valuetoclean = $attrs->item($ii)->value; if (isset($valuetoclean)) { @@ -6811,10 +6847,14 @@ function dol_string_onlythesehtmlattributes($stringtoclean, $allowed_attributes $valuetoclean = preg_replace('/\/\*.*\*\//m', '', $valuetoclean); // clean css comments $valuetoclean = preg_replace('/position\s*:\s*[a-z]+/mi', '', $valuetoclean); if ($els->item($i)->tagName == 'a') { // more paranoiac cleaning for clickable tags. - $valuetoclean = preg_replace('/display\s*://m', '', $valuetoclean); - $valuetoclean = preg_replace('/z-index\s*://m', '', $valuetoclean); - $valuetoclean = preg_replace('/\s+(top|left|right|bottom)\s*://m', '', $valuetoclean); + $valuetoclean = preg_replace('/display\s*:/mi', '', $valuetoclean); + $valuetoclean = preg_replace('/z-index\s*:/mi', '', $valuetoclean); + $valuetoclean = preg_replace('/\s+(top|left|right|bottom)\s*:/mi', '', $valuetoclean); } + + // We do not allow logout|passwordforgotten.php and action= into the content of a "style" tag + $valuetoclean = preg_replace('/(logout|passwordforgotten)\.php/mi', '', $valuetoclean); + $valuetoclean = preg_replace('/action=/mi', '', $valuetoclean); } while ($oldvaluetoclean != $valuetoclean); } @@ -7167,6 +7207,8 @@ function dol_textishtml($msg, $option = 0) } return false; } else { + // Remove all urls because 'http://aa?param1=abc&param2=def' must not be used inside detection + $msg = preg_replace('/https?:\/\/[^"\'\s]+/i', '', $msg); if (preg_match('//i', $msg)) { return true; } elseif (preg_match('/&[A-Z0-9]{1,6};/i', $msg)) { + // TODO If content is 'A link https://aaa?param=abc&param2=def', it return true but must be false return true; // Html entities names (http://www.w3schools.com/tags/ref_entities.asp) } elseif (preg_match('/&#[0-9]{2,3};/i', $msg)) { return true; // Html entities numbers (http://www.w3schools.com/tags/ref_entities.asp) @@ -7299,13 +7342,14 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray['__ID__'] = '__ID__'; $substitutionarray['__REF__'] = '__REF__'; $substitutionarray['__NEWREF__'] = '__NEWREF__'; + $substitutionarray['__LABEL__'] = '__LABEL__'; $substitutionarray['__REF_CLIENT__'] = '__REF_CLIENT__'; $substitutionarray['__REF_SUPPLIER__'] = '__REF_SUPPLIER__'; $substitutionarray['__NOTE_PUBLIC__'] = '__NOTE_PUBLIC__'; $substitutionarray['__NOTE_PRIVATE__'] = '__NOTE_PRIVATE__'; $substitutionarray['__EXTRAFIELD_XXX__'] = '__EXTRAFIELD_XXX__'; - if (!empty($conf->societe->enabled)) { // Most objects are concerned + if (isModEnabled("societe")) { // Most objects are concerned $substitutionarray['__THIRDPARTY_ID__'] = '__THIRDPARTY_ID__'; $substitutionarray['__THIRDPARTY_NAME__'] = '__THIRDPARTY_NAME__'; $substitutionarray['__THIRDPARTY_NAME_ALIAS__'] = '__THIRDPARTY_NAME_ALIAS__'; @@ -7367,6 +7411,9 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATE__'] = 'Lowest data for planned expiration of service'; $substitutionarray['__CONTRACT_LOWEST_EXPIRATION_DATETIME__'] = 'Lowest date and hour for planned expiration of service'; } + if (isModEnabled("propal") && (!is_object($object) || $object->element == 'propal')) { + $substitutionarray['__ONLINE_SIGN_URL__'] = 'ToOfferALinkForOnlineSignature'; + } $substitutionarray['__ONLINE_PAYMENT_URL__'] = 'UrlToPayOnlineIfApplicable'; $substitutionarray['__ONLINE_PAYMENT_TEXT_AND_URL__'] = 'TextAndUrlToPayOnlineIfApplicable'; $substitutionarray['__SECUREKEYPAYMENT__'] = 'Security key (if key is not unique per record)'; @@ -7381,11 +7428,11 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray['__DIRECTDOWNLOAD_URL_CONTRACT__'] = 'Direct download url of a contract'; $substitutionarray['__DIRECTDOWNLOAD_URL_SUPPLIER_PROPOSAL__'] = 'Direct download url of a supplier proposal'; - if (!empty($conf->expedition->enabled) && (!is_object($object) || $object->element == 'shipping')) { + if (isModEnabled("expedition") && (!is_object($object) || $object->element == 'shipping')) { $substitutionarray['__SHIPPINGTRACKNUM__'] = 'Shipping tracking number'; $substitutionarray['__SHIPPINGTRACKNUMURL__'] = 'Shipping tracking url'; } - if (!empty($conf->reception->enabled) && (!is_object($object) || $object->element == 'reception')) { + if (isModEnabled("reception") && (!is_object($object) || $object->element == 'reception')) { $substitutionarray['__RECEPTIONTRACKNUM__'] = 'Shippin tracking number of shipment'; $substitutionarray['__RECEPTIONTRACKNUMURL__'] = 'Shipping tracking url'; } @@ -7393,6 +7440,7 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray['__ID__'] = $object->id; $substitutionarray['__REF__'] = $object->ref; $substitutionarray['__NEWREF__'] = $object->newref; + $substitutionarray['__LABEL__'] = (isset($object->label) ? $object->label : (isset($object->title) ? $object->title : null)); $substitutionarray['__REF_CLIENT__'] = (isset($object->ref_client) ? $object->ref_client : (isset($object->ref_customer) ? $object->ref_customer : null)); $substitutionarray['__REF_SUPPLIER__'] = (isset($object->ref_supplier) ? $object->ref_supplier : null); $substitutionarray['__NOTE_PUBLIC__'] = (isset($object->note_public) ? $object->note_public : null); @@ -7441,8 +7489,8 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null, $substitutionarray['__MEMBER_PHONEMOBILE__'] = (isset($object->phone_mobile) ? dol_print_phone($object->phone_mobile) : ''); $substitutionarray['__MEMBER_TYPE__'] = (isset($object->type) ? $object->type : ''); $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE__'] = dol_print_date($object->first_subscription_date, 'dayrfc'); - $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->first_subscription_date_start, 'dayrfc'); - $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->first_subscription_date_end, 'dayrfc'); + $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_START__'] = (isset($object->first_subscription_date_start) ? dol_print_date($object->first_subscription_date_start, 'dayrfc') : ''); + $substitutionarray['__MEMBER_FIRST_SUBSCRIPTION_DATE_END__'] = (isset($object->first_subscription_date_end) ? dol_print_date($object->first_subscription_date_end, 'dayrfc') : ''); $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE__'] = dol_print_date($object->last_subscription_date, 'dayrfc'); $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_START__'] = dol_print_date($object->last_subscription_date_start, 'dayrfc'); $substitutionarray['__MEMBER_LAST_SUBSCRIPTION_DATE_END__'] = dol_print_date($object->last_subscription_date_end, 'dayrfc'); @@ -7829,6 +7877,7 @@ function make_substitutions($text, $substitutionarray, $outputlangs = null, $con } else { if (! $msgishtml) { $valueishtml = dol_textishtml($value, 1); + //var_dump("valueishtml=".$valueishtml); if ($valueishtml) { $text = dol_htmlentitiesbr($text); @@ -8194,7 +8243,6 @@ function get_htmloutput_mesg($mesgstring = '', $mesgarray = '', $style = 'ok', $ } } if ($mesgstring) { - $langs->load("errors"); $ret++; $out .= $langs->trans($mesgstring); } @@ -8578,7 +8626,8 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1' if ($onlysimplestring == '1') { // We must accept: '1 && getDolGlobalInt("doesnotexist1") && $conf->global->MAIN_FEATURES_LEVEL' // We must accept: '$conf->barcode->enabled && preg_match(\'/^(AAA|BBB)/\',$leftmenu)' - if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/', '/').']/i', $s)) { + // We must accept: '$user->rights->cabinetmed->read && $object->canvas=="patient@cabinetmed"' + if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/@', '/').']/i', $s)) { if ($returnvalue) { return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s; } else { @@ -8590,7 +8639,7 @@ function dol_eval($s, $returnvalue = 0, $hideerrors = 1, $onlysimplestring = '1' } } elseif ($onlysimplestring == '2') { // We must accept: (($reloadedobj = new Task($db)) && ($reloadedobj->fetchNoCompute($object->id) > 0) && ($secondloadedobj = new Project($db)) && ($secondloadedobj->fetchNoCompute($reloadedobj->fk_project) > 0)) ? $secondloadedobj->ref : "Parent project not found" - if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/;[]', '/').']/i', $s)) { + if (preg_match('/[^a-z0-9\s'.preg_quote('^$_+-.*>&|=!?():"\',/@;[]', '/').']/i', $s)) { if ($returnvalue) { return 'Bad string syntax to evaluate (found chars that are not chars for simplestring): '.$s; } else { @@ -9118,6 +9167,7 @@ function printCommonFooter($zone = 'private') print "\n"; if (!empty($conf->use_javascript_ajax)) { + print "\n\n"; print ''; + } +} diff --git a/htdocs/core/lib/signature.lib.php b/htdocs/core/lib/signature.lib.php index d76120ab3de..1dbefb5719a 100644 --- a/htdocs/core/lib/signature.lib.php +++ b/htdocs/core/lib/signature.lib.php @@ -90,7 +90,7 @@ function getOnlineSignatureUrl($mode, $type, $ref = '', $localorexternal = 1) if ($mode == 1) { $out .= "hash('".$securekeyseed."' + '".$type."' + proposal_ref)"; } else { - $out .= '&securekey='.dol_hash($securekeyseed.$type.$ref, '0'); + $out .= '&securekey='.dol_hash($securekeyseed.$type.$ref.(empty($conf->multicompany->enabled) ? '' : $object->entity), '0'); } /* if ($mode == 1) { diff --git a/htdocs/core/lib/takepos.lib.php b/htdocs/core/lib/takepos.lib.php index d983f0298ce..c2468c98169 100644 --- a/htdocs/core/lib/takepos.lib.php +++ b/htdocs/core/lib/takepos.lib.php @@ -56,7 +56,7 @@ function takepos_admin_prepare_head() $numterminals = max(1, $conf->global->TAKEPOS_NUM_TERMINALS); for ($i = 1; $i <= $numterminals; $i++) { $head[$h][0] = DOL_URL_ROOT.'/takepos/admin/terminal.php?terminal='.$i; - $head[$h][1] = $langs->trans("Terminal")." ".$i; + $head[$h][1] = getDolGlobalString('TAKEPOS_TERMINAL_NAME_'.$i, $langs->trans("TerminalName", $i)); $head[$h][2] = 'terminal'.$i; $h++; } diff --git a/htdocs/core/lib/ticket.lib.php b/htdocs/core/lib/ticket.lib.php index e1544e763df..8ef509057c4 100644 --- a/htdocs/core/lib/ticket.lib.php +++ b/htdocs/core/lib/ticket.lib.php @@ -1,7 +1,7 @@ * Copyright (C) 2016 Christophe Battarel - * Copyright (C) 2019-2020 Frédéric France + * Copyright (C) 2019-2022 Frédéric France * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -84,7 +84,7 @@ function ticket_prepare_head($object) $head[$h][2] = 'tabTicket'; $h++; - if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && empty($user->socid) && $conf->societe->enabled) { + if (empty($conf->global->MAIN_DISABLE_CONTACTS_TAB) && empty($user->socid) && isModEnabled("societe")) { $nbContact = count($object->liste_contact(-1, 'internal')) + count($object->liste_contact(-1, 'external')); $head[$h][0] = DOL_URL_ROOT.'/ticket/contact.php?track_id='.$object->track_id; $head[$h][1] = $langs->trans('ContactsAddresses'); @@ -250,7 +250,7 @@ function llxHeaderTicket($title, $head = "", $disablejs = 0, $disablehead = 0, $ if (!empty($conf->global->TICKET_IMAGE_PUBLIC_INTERFACE)) { print '
'; - print ''; + print ''; print '
'; } @@ -560,7 +560,7 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no // Set $out to sow events $out = ''; - if (empty($conf->agenda->enabled)) { + if (!isModEnabled('agenda')) { $langs->loadLangs(array("admin", "errors")); $out = info_admin($langs->trans("WarningModuleXDisabledSoYouMayMissEventHere", $langs->transnoentitiesnoconv("Module2400Name")), 0, 0, 'warning'); } @@ -697,8 +697,8 @@ function show_ticket_messaging($conf, $langs, $db, $filterobj, $objcon = '', $no // $out.=''.$langs->trans('Show').''; //} - if ($user->rights->agenda->allactions->create || - (($actionstatic->authorid == $user->id || $actionstatic->userownerid == $user->id) && $user->rights->agenda->myactions->create)) { + if (!empty($user->rights->agenda->allactions->create) || + (($actionstatic->authorid == $user->id || $actionstatic->userownerid == $user->id) && !empty($user->rights->agenda->myactions->create))) { $out .= ''; } diff --git a/htdocs/core/lib/usergroups.lib.php b/htdocs/core/lib/usergroups.lib.php index 538fc299564..65b512ec18e 100644 --- a/htdocs/core/lib/usergroups.lib.php +++ b/htdocs/core/lib/usergroups.lib.php @@ -212,7 +212,7 @@ function group_prepare_head($object) $head = array(); $head[$h][0] = DOL_URL_ROOT.'/user/group/card.php?id='.$object->id; - $head[$h][1] = $langs->trans("GroupCard"); + $head[$h][1] = $langs->trans("Card"); $head[$h][2] = 'group'; $h++; @@ -455,6 +455,28 @@ function showSkins($fuser, $edit = 0, $foruserprofile = false) include DOL_DOCUMENT_ROOT.'/theme/'.$conf->theme.'/theme_vars.inc.php'; } + //Dark mode + if ($foruserprofile) { + //Nothing + } else { + $listofdarkmodes = array( + '0' => $langs->trans("AlwaysDisabled"), + '1' => $langs->trans("AccordingToBrowser"), + '2' => $langs->trans("AlwaysEnabled") + ); + print '
'; + print ''; + print ''; + } + + // TopMenuDisableImages if ($foruserprofile) { /* diff --git a/htdocs/core/lib/website.lib.php b/htdocs/core/lib/website.lib.php index e9de957e4a8..18bd7226400 100644 --- a/htdocs/core/lib/website.lib.php +++ b/htdocs/core/lib/website.lib.php @@ -213,6 +213,53 @@ function dolWebsiteReplacementOfLinks($website, $content, $removephppart = 0, $c return $content; } +/** + * Converts smiley string into the utf8 sequence. + * @param string $content Content to replace + * @return string Replacement of all smiley strings with their utf8 code + * @see dolWebsiteOutput() + */ +function dolReplaceSmileyCodeWithUTF8($content) +{ + $map = array( + ":face_with_tears_of_joy:" => "\xF0\x9F\x98\x82", + ":grinning_face_with_smiling_eyes:" => "\xF0\x9F\x98\x81", + ":smiling_face_with_open_mouth:" => "\xF0\x9F\x98\x83", + ":smiling_face_with_open_mouth_and_cold_sweat:" => "\xF0\x9F\x98\x85", + ":smiling_face_with_open_mouth_and_tightly_closed_eyes:" => "\xF0\x9F\x98\x86", + ":winking_face:" => "\xF0\x9F\x98\x89", + ":smiling_face_with_smiling_eyes:" => "\xF0\x9F\x98\x8A", + ":face_savouring_delicious_food:" => "\xF0\x9F\x98\x8B", + ":relieved_face:" => "\xF0\x9F\x98\x8C", + ":smiling_face_with_heart_shaped_eyes:" => "\xF0\x9F\x98\x8D", + ":smiling_face_with_sunglasses:" => "\xF0\x9F\x98\x8E", + ":smirking_face:" => "\xF0\x9F\x98\x8F", + ":neutral_face:" => "\xF0\x9F\x98\x90", + ":expressionless_face:" => "\xF0\x9F\x98\x91", + ":unamused_face:" => "\xF0\x9F\x98\x92", + ":face_with_cold_sweat:" => "\xF0\x9F\x98\x93", + ":pensive_face:" => "\xF0\x9F\x98\x94", + ":confused_face:" => "\xF0\x9F\x98\x95", + ":confounded_face:" => "\xF0\x9F\x98\x96", + ":kissing_face:" => "\xF0\x9F\x98\x97", + ":face_throwing_a_kiss:" => "\xF0\x9F\x98\x98", + ":kissing_face_with_smiling_eyes:" => "\xF0\x9F\x98\x99", + ":kissing_face_with_closed_eyes:" => "\xF0\x9F\x98\x9A", + ":face_with_stuck_out_tongue:" => "\xF0\x9F\x98\x9B", + ":face_with_stuck_out_tongue_and_winking_eye:" => "\xF0\x9F\x98\x9C", + ":face_with_stuck_out_tongue_and_tightly_closed_eyes:" => "\xF0\x9F\x98\x9D", + ":disappointed_face:" => "\xF0\x9F\x98\x9E", + ":worried_face:" => "\xF0\x9F\x98\x9F", + ":angry_face:" => "\xF0\x9F\x98\xA0", + ":face_with_symbols_on_mouth:" => "\xF0\x9F\x98\xA1", + ); + foreach ($map as $key => $value) { + $content = str_replace($key, $value, $content); + } + return $content; +} + + /** * Render a string of an HTML content and output it. * Used to ouput the page when viewed from a server (Dolibarr or Apache). @@ -369,6 +416,8 @@ function dolWebsiteOutput($content, $contenttype = 'html', $containerid = '') $content = str_replace('author_alias ? $event->author_alias : 'unknown'; //$tmpevent['category'] = ''; $tmpevent['desc'] = $event->description; - + $tmpevent['image'] = $GLOBALS['website']->virtualhost.'/medias/'.$event->image; $event = $tmpevent; } @@ -387,7 +387,9 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt $url = $event["url"]; $author = $event["author"]; $category = $event["category"]; - + if (!empty($event["image"])) { + $image = $event["image"]; + } /* No place inside a RSS $priority = $event["priority"]; $fulldayevent = $event["fulldayevent"]; @@ -404,6 +406,10 @@ function build_rssfile($format, $title, $desc, $events_array, $outputfile, $filt fwrite($fichier, "\n"); fwrite($fichier, "

'); + } + if ($description) { fwrite($fichier, $description); } diff --git a/htdocs/core/menus/init_menu_auguria.sql b/htdocs/core/menus/init_menu_auguria.sql index 96625dd1f95..0580c6c8cc0 100644 --- a/htdocs/core/menus/init_menu_auguria.sql +++ b/htdocs/core/menus/init_menu_auguria.sql @@ -12,7 +12,7 @@ delete from llx_menu where menu_handler=__HANDLER__ and entity=__ENTITY__; -- Top-Menu -- old: (module, enabled, rowid, ...) insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 1__+MAX_llx_menu__, '', '1', __HANDLER__, 'top', 'home', '', 0, '/index.php?mainmenu=home&leftmenu=', 'Home', -1, '', '', '', 2, 10, __ENTITY__); -insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 2__+MAX_llx_menu__, 'societe|fournisseur|supplier_order|supplier_invoice', '($conf->societe->enabled && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) || !empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || $conf->supplier_order->enabled || $conf->supplier_invoice->enabled))', __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); +insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 2__+MAX_llx_menu__, 'societe|fournisseur|supplier_order|supplier_invoice', '($conf->societe->enabled && (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) || empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) || isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || $conf->supplier_order->enabled || $conf->supplier_invoice->enabled))', __HANDLER__, 'top', 'companies', '', 0, '/societe/index.php?mainmenu=companies&leftmenu=', 'ThirdParties', -1, 'companies', '$user->rights->societe->lire || $user->rights->societe->contact->lire', '', 2, 20, __ENTITY__); insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 3__+MAX_llx_menu__, 'product|service', '$conf->product->enabled || $conf->service->enabled', __HANDLER__, 'top', 'products', '', 0, '/product/index.php?mainmenu=products&leftmenu=', 'ProductsPipeServices', -1, 'products', '$user->rights->produit->lire||$user->rights->service->lire', '', 0, 30, __ENTITY__); insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 16__+MAX_llx_menu__, 'bom|mrp', '$conf->bom->enabled || $conf->mrp->enabled', __HANDLER__, 'top', 'mrp', '', 0, '/mrp/index.php?mainmenu=mrp&leftmenu=', 'MRP', -1, 'mrp', '$user->rights->bom->read||$user->rights->mrp->read', '', 0, 31, __ENTITY__); insert into llx_menu (rowid, module, enabled, menu_handler, type, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ( 7__+MAX_llx_menu__, 'projet', '$conf->project->enabled', __HANDLER__, 'top', 'project', '', 0, '/projet/index.php?mainmenu=project&leftmenu=', 'Projects', -1, 'projects', '$user->rights->projet->lire', '', 2, 32, __ENTITY__); @@ -86,8 +86,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 500__+MAX_llx_menu__, 'companies', 'thirdparties', 2__+MAX_llx_menu__, '/societe/index.php?mainmenu=companies&leftmenu=thirdparties', 'ThirdParty', 0, 'companies', '$user->rights->societe->lire', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 501__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&action=create', 'MenuNewThirdParty', 1, 'companies', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 502__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&leftmenu=thirdparties', 'List', 1, 'companies', '$user->rights->societe->lire', '', 2, 0, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 503__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=f&leftmenu=suppliers', 'ListSuppliersShort', 1, 'suppliers', '$user->rights->societe->lire && $user->rights->fournisseur->lire', '', 2, 5, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 504__+MAX_llx_menu__, 'companies', '', 503__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=supplier&action=create&type=f', 'NewSupplier', 2, 'suppliers', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))', __HANDLER__, 'left', 503__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=f&leftmenu=suppliers', 'ListSuppliersShort', 1, 'suppliers', '$user->rights->societe->lire && $user->rights->fournisseur->lire', '', 2, 5, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))', __HANDLER__, 'left', 504__+MAX_llx_menu__, 'companies', '', 503__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=supplier&action=create&type=f', 'NewSupplier', 2, 'suppliers', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 506__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=p&leftmenu=prospects', 'ListProspectsShort', 1, 'companies', '$user->rights->societe->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 507__+MAX_llx_menu__, 'companies', '', 506__+MAX_llx_menu__, '/societe/card.php?mainmenu=companies&leftmenu=prospects&action=create&type=p', 'MenuNewProspect', 2, 'companies', '$user->rights->societe->creer', '', 2, 0, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 509__+MAX_llx_menu__, 'companies', '', 500__+MAX_llx_menu__, '/societe/list.php?mainmenu=companies&type=c&leftmenu=customers', 'ListCustomersShort', 1, 'companies', '$user->rights->societe->lire', '', 2, 4, __ENTITY__); @@ -99,7 +99,7 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 602__+MAX_llx_menu__, 'companies', '', 600__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts', 'List', 1, 'companies', '$user->rights->societe->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 604__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=p', 'ThirdPartyProspects', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 1, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 605__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=c', 'ThirdPartyCustomers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 2, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))', __HANDLER__, 'left', 606__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=f', 'ThirdPartySuppliers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 3, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))', __HANDLER__, 'left', 606__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=f', 'ThirdPartySuppliers', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled', __HANDLER__, 'left', 607__+MAX_llx_menu__, 'companies', '', 602__+MAX_llx_menu__, '/contact/list.php?mainmenu=companies&leftmenu=contacts&type=o', 'Others', 2, 'companies', '$user->rights->societe->contact->lire', '', 2, 4, __ENTITY__); -- Third parties - Category customer @@ -107,8 +107,8 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 651__+MAX_llx_menu__, 'companies', '', 650__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=1', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- Third parties - Category supplier -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $conf->categorie->enabled', __HANDLER__, 'left', 660__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=2', 'CustomersProspectsCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $conf->categorie->enabled', __HANDLER__, 'left', 661__+MAX_llx_menu__, 'companies', '', 660__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=2', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $conf->categorie->enabled', __HANDLER__, 'left', 660__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=2', 'CustomersProspectsCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 4, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $conf->categorie->enabled', __HANDLER__, 'left', 661__+MAX_llx_menu__, 'companies', '', 660__+MAX_llx_menu__, '/categories/card.php?mainmenu=companies&action=create&type=2', 'NewCategory', 1, 'categories', '$user->rights->categorie->creer', '', 2, 0, __ENTITY__); -- Third parties - Category contact insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->societe->enabled && $conf->categorie->enabled', __HANDLER__, 'left', 670__+MAX_llx_menu__, 'companies', 'cat', 2__+MAX_llx_menu__, '/categories/index.php?mainmenu=companies&leftmenu=cat&type=4', 'ContactCategoriesShort', 0, 'categories', '$user->rights->categorie->lire', '', 2, 3, __ENTITY__); @@ -257,7 +257,7 @@ 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->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2251__+MAX_llx_menu__, 'billing', '', 2250__+MAX_llx_menu__, '/compta/sociales/card.php?mainmenu=billing&leftmenu=tax_social&action=create', 'MenuNewSocialContribution', 2, '', '$user->rights->tax->charges->creer', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && $leftmenu=="tax_social"', __HANDLER__, 'left', 2252__+MAX_llx_menu__, 'billing', '', 2250__+MAX_llx_menu__, '/compta/sociales/payments.php?mainmenu=billing&leftmenu=tax_social', 'Payments', 2, '', '$user->rights->tax->charges->lire', '', 0, 3, __ENTITY__); --- VAT/TVA/IVA +-- VAT/TVA/IVA 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->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS)', __HANDLER__, 'left', 2300__+MAX_llx_menu__, 'billing', 'tax_vat', 2200__+MAX_llx_menu__, '/compta/tva/list.php?mainmenu=billing&leftmenu=tax_vat', 'VAT', 1, 'companies', '$user->rights->tax->charges->lire', '', 0, 7, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu=="tax_vat"', __HANDLER__, 'left', 2301__+MAX_llx_menu__, 'billing', '', 2300__+MAX_llx_menu__, '/compta/tva/card.php?mainmenu=billing&leftmenu=tax_vat&action=create', 'New', 2, 'companies', '$user->rights->tax->charges->creer', '', 0, 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->tax->enabled && empty($conf->global->TAX_DISABLE_VAT_MENUS) && $leftmenu=="tax_vat"', __HANDLER__, 'left', 2302__+MAX_llx_menu__, 'billing', '', 2300__+MAX_llx_menu__, '/compta/tva/list.php?mainmenu=billing&leftmenu=tax_vat', 'List', 2, 'companies', '$user->rights->tax->charges->lire', '', 0, 1, __ENTITY__); @@ -313,9 +313,9 @@ insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, left insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_SALES)', __HANDLER__, 'left', 2401__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_customer', 2400__+MAX_llx_menu__, '/accountancy/customer/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_customer', 'CustomersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 2, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_SALES) && $leftmenu=="accountancy_dispatch_customer"', __HANDLER__, 'left', 2402__+MAX_llx_menu__, 'accountancy', '', 2401__+MAX_llx_menu__, '/accountancy/customer/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 3, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->facture->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_SALES) && $leftmenu=="accountancy_dispatch_customer"', __HANDLER__, 'left', 2403__+MAX_llx_menu__, 'accountancy', '', 2401__+MAX_llx_menu__, '/accountancy/customer/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 4, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES)', __HANDLER__, 'left', 2410__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_supplier', 2400__+MAX_llx_menu__, '/accountancy/supplier/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier', 'SuppliersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2411__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); -insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2412__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_invoice")) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES)', __HANDLER__, 'left', 2410__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_supplier', 2400__+MAX_llx_menu__, '/accountancy/supplier/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_supplier', 'SuppliersVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_invoice")) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2411__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); +insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_invoice")) && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_PURCHASES) && $leftmenu=="accountancy_dispatch_supplier"', __HANDLER__, 'left', 2412__+MAX_llx_menu__, 'accountancy', '', 2410__+MAX_llx_menu__, '/accountancy/supplier/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS)', __HANDLER__, 'left', 2420__+MAX_llx_menu__, 'accountancy', 'accountancy_dispatch_expensereport', 2400__+MAX_llx_menu__, '/accountancy/expensereport/index.php?mainmenu=accountancy&leftmenu=accountancy_dispatch_expensereport', 'ExpenseReportsVentilation', 1, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 5, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS) && $leftmenu=="accountancy_dispatch_expensereport"', __HANDLER__, 'left', 2421__+MAX_llx_menu__, 'accountancy', '', 2420__+MAX_llx_menu__, '/accountancy/expensereport/list.php?mainmenu=accountancy', 'ToDispatch', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 6, __ENTITY__); insert into llx_menu (module, enabled, menu_handler, type, rowid, mainmenu, leftmenu, fk_menu, url, titre, level, langs, perms, target, usertype, position, entity) values ('', '$conf->accounting->enabled && $conf->expensereport->enabled && empty($conf->global->ACCOUNTING_DISABLE_BINDING_ON_EXPENSEREPORTS) && $leftmenu=="accountancy_dispatch_expensereport"', __HANDLER__, 'left', 2422__+MAX_llx_menu__, 'accountancy', '', 2420__+MAX_llx_menu__, '/accountancy/expensereport/lines.php?mainmenu=accountancy', 'Dispatched', 2, 'accountancy', '$user->rights->accounting->bind->write', '', 0, 7, __ENTITY__); diff --git a/htdocs/core/menus/standard/auguria.lib.php b/htdocs/core/menus/standard/auguria.lib.php index adc4f8d487c..71f399497c7 100644 --- a/htdocs/core/menus/standard/auguria.lib.php +++ b/htdocs/core/menus/standard/auguria.lib.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2010-2022 Laurent Destailleur * Copyright (C) 2010-2012 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -72,6 +72,7 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout $num = count($newTabMenu); for ($i = 0; $i < $num; $i++) { + //var_dump($type_user.' '.$newTabMenu[$i]['url'].' '.$showmode.' '.$newTabMenu[$i]['perms']); $idsel = (empty($newTabMenu[$i]['mainmenu']) ? 'none' : $newTabMenu[$i]['mainmenu']); $shorturl = ''; @@ -80,9 +81,9 @@ function print_auguria_menu($db, $atarget, $type_user, &$tabMenu, &$menu, $noout if ($showmode == 1) { $newTabMenu[$i]['url'] = make_substitutions($newTabMenu[$i]['url'], $substitarray); + // url = url from host, shorturl = relative path into dolibarr sources $url = $shorturl = $newTabMenu[$i]['url']; - - if (!preg_match("/^(http:\/\/|https:\/\/)/i", $newTabMenu[$i]['url'])) { + if (!preg_match("/^(http:\/\/|https:\/\/)/i", $newTabMenu[$i]['url'])) { // Do not change url content for external links $tmp = explode('?', $newTabMenu[$i]['url'], 2); $url = $shorturl = $tmp[0]; $param = (isset($tmp[1]) ? $tmp[1] : ''); @@ -235,11 +236,11 @@ function print_text_menu_entry_auguria($text, $showmode, $url, $id, $idsel, $cla $classnametxt = str_replace('class="', 'class="tmenulabel ', $classname); if ($showmode == 1) { - print ''; - print '
'; + print '
'; + print '
'; print '
'; if (empty($conf->global->THEME_TOPMENU_DISABLE_TEXT)) { - print ''; + print ''; print ''; print $text; print ''; @@ -300,11 +301,13 @@ function print_end_menu_array_auguria() * @param string $forcemainmenu 'x'=Force mainmenu to mainmenu='x' * @param string $forceleftmenu 'all'=Force leftmenu to '' (= all). If value come being '', we change it to value in session and 'none' if not defined in session. * @param array $moredata An array with more data to output + * @param int $type_user 0=Menu for backoffice, 1=Menu for front office * @return int Nb of menu entries */ -function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$tabMenu, &$menu, $noout = 0, $forcemainmenu = '', $forceleftmenu = '', $moredata = null) +function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$tabMenu, &$menu, $noout = 0, $forcemainmenu = '', $forceleftmenu = '', $moredata = null, $type_user = 0) { - global $user, $conf, $langs, $dolibarr_main_db_name, $mysoc; + global $user, $conf, $langs, $hookmanager; + global $dolibarr_main_db_name, $mysoc; $newmenu = $menu; @@ -472,6 +475,29 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t return 0; } + // Allow the $menu_array of the menu to be manipulated by modules + $parameters = array( + 'mainmenu' => $mainmenu, + ); + $hook_items = $menu_array; + $reshook = $hookmanager->executeHooks('menuLeftMenuItems', $parameters, $hook_items); // Note that $action and $object may have been modified by some hooks + + if (is_numeric($reshook)) { + if ($reshook == 0 && !empty($hookmanager->results)) { + $menu_array[] = $hookmanager->results; // add + } elseif ($reshook == 1) { + $menu_array = $hookmanager->results; // replace + } + + // @todo Sort menu items by 'position' value + // $position = array(); + // foreach ($menu_array as $key => $row) { + // $position[$key] = $row['position']; + // } + // $array1_sort_order = SORT_ASC; + // array_multisort($position, $array1_sort_order, $menu_array); + } + // Show menu $invert = empty($conf->global->MAIN_MENU_INVERT) ? "" : "invert"; if (empty($noout)) { @@ -542,7 +568,7 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t if ($menu_array[$i]['enabled']) { // Enabled so visible print ''."\n"; $lastlevel0 = 'enabled'; } elseif ($showmenu) { // Not enabled but visible (so greyed) - print ''."\n"; + print ''."\n"; $lastlevel0 = 'greyed'; } else { $lastlevel0 = 'hidden'; @@ -572,10 +602,12 @@ function print_left_auguria_menu($db, $menu_array_before, $menu_array_after, &$t $cssmenu = ' menu_contenu'.dol_string_nospecial(preg_replace('/\.php.*$/', '', $menu_array[$i]['url'])); } - if ($menu_array[$i]['enabled'] && $lastlevel0 == 'enabled') { // Enabled so visible, except if parent was not enabled. - print '
'; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -131,7 +131,7 @@ class mod_asset_advanced extends ModeleNumRefAsset require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->ASSET_ASSET_ADVANCED_MASK; + $mask = getDolGlobalString('ASSET_ASSET_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php index 8afafd8c06c..314a1fa7853 100644 --- a/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php +++ b/htdocs/core/modules/bank/doc/pdf_sepamandate.modules.php @@ -1,6 +1,4 @@ * Copyright (C) 2020 Josep Lluís Amador * diff --git a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php index 443e3f436f8..4add94ffafb 100644 --- a/htdocs/core/modules/barcode/doc/phpbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/phpbarcode.modules.php @@ -183,16 +183,16 @@ class modPhpbarcode extends ModeleBarCode */ public function writeBarCode($code, $encoding, $readable = 'Y', $scale = 1, $nooutputiferror = 0) { - global $conf, $filebarcode; + global $conf, $filebarcode, $langs; dol_mkdir($conf->barcode->dir_temp); if (!is_writable($conf->barcode->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->barcode->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->barcode->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } - $file = $conf->barcode->dir_temp.'/barcode_'.$code.'_'.$encoding.'.png'; + $file = $conf->barcode->dir_temp . '/barcode_' . $code . '_' . $encoding . '.png'; $filebarcode = $file; // global var to be used in barcode_outimage called by barcode_print in buildBarCode diff --git a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php index ed32667a67e..9536251c36a 100644 --- a/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php +++ b/htdocs/core/modules/barcode/doc/tcpdfbarcode.modules.php @@ -155,16 +155,16 @@ class modTcpdfbarcode extends ModeleBarCode */ public function writeBarCode($code, $encoding, $readable = 'Y', $scale = 1, $nooutputiferror = 0) { - global $conf, $_GET; + global $conf, $langs, $_GET; dol_mkdir($conf->barcode->dir_temp); if (!is_writable($conf->barcode->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->barcode->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->barcode->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } - $file = $conf->barcode->dir_temp.'/barcode_'.$code.'_'.$encoding.'.png'; + $file = $conf->barcode->dir_temp . '/barcode_' . $code . '_' . $encoding . '.png'; $tcpdfEncoding = $this->getTcpdfEncodingType($encoding); if (empty($tcpdfEncoding)) { diff --git a/htdocs/core/modules/barcode/mod_barcode_product_standard.php b/htdocs/core/modules/barcode/mod_barcode_product_standard.php index 17b5a9bb16a..f4bf05afb3b 100644 --- a/htdocs/core/modules/barcode/mod_barcode_product_standard.php +++ b/htdocs/core/modules/barcode/mod_barcode_product_standard.php @@ -109,7 +109,7 @@ class mod_barcode_product_standard extends ModeleNumRefBarCode //$texte.= ''; $texte .= ''; $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; $texte .= '
'.$langs->trans("DarkThemeMode").''; + if ($edit) { + print $form->selectarray('THEME_DARKMODEENABLED', $listofdarkmodes, isset($conf->global->THEME_DARKMODEENABLED) ? $conf->global->THEME_DARKMODEENABLED : 0); + } else { + print $listofdarkmodes[isset($conf->global->THEME_DARKMODEENABLED) ? $conf->global->THEME_DARKMODEENABLED : 0]; + } + print $form->textwithpicto('', $langs->trans("DoesNotWorkWithAllThemes")); + print '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans("Mask").' ('.$langs->trans("BarCodeModel").'):
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).'   
'; diff --git a/htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php b/htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php new file mode 100644 index 00000000000..e25cd1dd115 --- /dev/null +++ b/htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php @@ -0,0 +1,358 @@ + + * Copyright (C) 2006-2014 Laurent Destailleur + * Copyright (C) 2007-2012 Regis Houssin + * Copyright (C) 2011 Juanjo Menent + * Copyright (C) 2022 Faustin Boitel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see https://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/barcode/mod_barcode_thirdparty_standard.php + * \ingroup barcode + * \brief File of class to manage barcode numbering with standard rule + */ + +require_once DOL_DOCUMENT_ROOT.'/core/modules/barcode/modules_barcode.class.php'; + + +/** + * Class to manage barcode with standard rule + */ +class mod_barcode_thirdparty_standard extends ModeleNumRefBarCode +{ + public $name = 'Standard'; // Model Name + + public $code_modifiable; // Editable code + + public $code_modifiable_invalide; // Modified code if it is invalid + + public $code_modifiable_null; // Modified code if it is null + + public $code_null; // Optional code + + /** + * Dolibarr version of the loaded document + * @var string + */ + public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' + + /** + * @var int Automatic numbering + */ + public $code_auto; + + public $searchcode; // Search string + + public $numbitcounter; // Number of digits the counter + + public $prefixIsRequired; // The prefix field of third party must be filled when using {pre} + + + /** + * Constructor + */ + public function __construct() + { + $this->code_null = 0; + $this->code_modifiable = 1; + $this->code_modifiable_invalide = 1; + $this->code_modifiable_null = 1; + $this->code_auto = 1; + $this->prefixIsRequired = 0; + } + + + /** Return description of module + * + * @param Translate $langs Object langs + * @return string Description of module + */ + public function info($langs) + { + global $conf, $mc; + global $form; + + $langs->load("thirdparties"); + + $disabled = ((!empty($mc->sharings['referent']) && $mc->sharings['referent'] != $conf->entity) ? ' disabled' : ''); + + $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= ''; + + $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("BarCode"), $langs->transnoentities("BarCode")); + $tooltip .= $langs->trans("GenericMaskCodes3EAN"); + $tooltip .= ''.$langs->trans("Example").':
'; + $tooltip .= '020{000000000}? (for internal use)
'; + $tooltip .= '9771234{00000}? (example of ISSN code with prefix 1234)
'; + $tooltip .= '9791234{00000}? (example of ISMN code with prefix 1234)
'; + //$tooltip.=$langs->trans("GenericMaskCodes5"); + + // Mask parameter + //$texte.= ''; + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= ''; + + $texte .= '
'.$langs->trans("Mask").' ('.$langs->trans("BarCodeModel").'):
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).' 
'; + $texte .= ''; + + return $texte; + } + + + /** + * Return an example of result returned by getNextValue + * + * @param Translate $langs Object langs + * @param Societe $objthirdparty Object third-party + * @return string Return string example + */ + public function getExample($langs, $objthirdparty = 0) + { + $examplebarcode = $this->getNextValue($objthirdparty, ''); + if (!$examplebarcode) { + $examplebarcode = $langs->trans('NotConfigured'); + } + if ($examplebarcode == "ErrorBadMask") { + $langs->load("errors"); + $examplebarcode = $langs->trans($examplebarcode); + } + + return $examplebarcode; + } + /** + * Return literal barcode type code from numerical rowid type of barcode + * + * @param Database $db Database + * @param int $type Type of barcode (EAN, ISBN, ...) as rowid + * @return string + */ + public function literalBarcodeType($db, $type = '') + { + global $conf; + $out = ''; + + $sql = "SELECT rowid, code, libelle as label"; + $sql .= " FROM ".MAIN_DB_PREFIX."c_barcode_type"; + $sql .= " WHERE rowid = '".$db->escape($type)."'"; + $sql .= " AND entity = ".((int) $conf->entity); + $result = $db->query($sql); + if ($result) { + $num = $db->num_rows($result); + + if ($num > 0) { + $obj = $db->fetch_object($result); + $out .= $obj->label; //take the label corresponding to the type rowid in the database + } + } else { + dol_print_error($db); + } + + return $out; + } + /** + * Return next value + * + * @param Societe $objthirdparty Object third-party + * @param string $type Type of barcode (EAN, ISBN, ...) + * @return string Value if OK, '' if module not configured, <0 if KO + */ + public function getNextValue($objthirdparty, $type = '') + { + global $db, $conf; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + require_once DOL_DOCUMENT_ROOT.'/core/lib/barcode.lib.php'; // to be able to call function barcode_gen_ean_sum($ean) + + if (empty($type)) { + $type = $conf->global->GENBARCODE_BARCODETYPE_THIRDPARTY; + } //get barcode type configuration for companies if $type not set + + // TODO + + // Get Mask value + $mask = ''; + if (!empty($conf->global->BARCODE_STANDARD_THIRDPARTY_MASK)) { + $mask = $conf->global->BARCODE_STANDARD_THIRDPARTY_MASK; + } + + if (empty($mask)) { + $this->error = 'NotConfigured'; + return ''; + } + + $field = 'barcode'; + $where = ''; + + $now = dol_now(); + + $numFinal = get_next_value($db, $mask, 'societe', $field, $where, '', $now); + //Begin barcode with key: for barcode with key (EAN13...) calculate and substitute the last character (* or ?) used in the mask by the key + if ((substr($numFinal, -1)=='*') or (substr($numFinal, -1)=='?')) { // if last mask character is * or ? a joker, probably we have to calculate a key as last character (EAN13...) + $literaltype = ''; + $literaltype = $this->literalBarcodeType($db, $type);//get literal_Barcode_Type + switch ($literaltype) { + case 'EAN13': //EAN13 rowid = 2 + if (strlen($numFinal)==13) {// be sure that the mask length is correct for EAN13 + $ean = substr($numFinal, 0, 12); //take first 12 digits + $eansum = barcode_gen_ean_sum($ean); + $ean .= $eansum; //substitute the las character by the key + $numFinal = $ean; + } + break; + // Other barcode cases with key could be written here + default: + break; + } + } + //End barcode with key + return $numFinal; + } + + + /** + * Check validity of code according to its rules + * + * @param DoliDB $db Database handler + * @param string $code Code to check/correct + * @param Societe $thirdparty Object third-party + * @param int $thirdparty_type 0 = customer/prospect , 1 = supplier + * @param string $type type of barcode (EAN, ISBN, ...) + * @return int 0 if OK + * -1 ErrorBadCustomerCodeSyntax + * -2 ErrorCustomerCodeRequired + * -3 ErrorCustomerCodeAlreadyUsed + * -4 ErrorPrefixRequired + */ + public function verif($db, &$code, $thirdparty, $thirdparty_type, $type) + { + global $conf; + + //var_dump($code.' '.$thirdparty->ref.' '.$thirdparty_type);exit; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + + $result = 0; + $code = strtoupper(trim($code)); + + if (empty($code) && $this->code_null && empty($conf->global->BARCODE_STANDARD_THIRDPARTY_MASK)) { + $result = 0; + } elseif (empty($code) && (!$this->code_null || !empty($conf->global->BARCODE_STANDARD_THIRDPARTY_MASK))) { + $result = -2; + } else { + if ($this->verif_syntax($code, $type) >= 0) { + $is_dispo = $this->verif_dispo($db, $code, $thirdparty); + if ($is_dispo <> 0) { + $result = -3; + } else { + $result = 0; + } + } else { + if (dol_strlen($code) == 0) { + $result = -2; + } else { + $result = -1; + } + } + } + + dol_syslog(get_class($this)."::verif type=".$thirdparty_type." result=".$result); + return $result; + } + + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return if a code is used (by other element) + * + * @param DoliDB $db Handler acces base + * @param string $code Code to check + * @param Societe $thirdparty Objet third-party + * @return int 0 if available, <0 if KO + */ + public function verif_dispo($db, $code, $thirdparty) + { + // phpcs:enable + $sql = "SELECT barcode FROM ".MAIN_DB_PREFIX."societe"; + $sql .= " WHERE barcode = '".$db->escape($code)."'"; + if ($thirdparty->id > 0) { + $sql .= " AND rowid <> ".$thirdparty->id; + } + + $resql = $db->query($sql); + if ($resql) { + if ($db->num_rows($resql) == 0) { + return 0; + } else { + return -1; + } + } else { + return -2; + } + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps + /** + * Return if a barcode value match syntax + * + * @param string $codefortest Code to check syntax + * @param string $typefortest Type of barcode (ISBN, EAN, ...) + * @return int 0 if OK, <0 if KO + */ + public function verif_syntax($codefortest, $typefortest) + { + // phpcs:enable + global $conf; + + $result = 0; + + // Get Mask value + $mask = empty($conf->global->BARCODE_STANDARD_THIRDPARTY_MASK) ? '' : $conf->global->BARCODE_STANDARD_THIRDPARTY_MASK; + if (!$mask) { + $this->error = 'NotConfigured'; + return -1; + } + + dol_syslog(get_class($this).'::verif_syntax codefortest='.$codefortest." typefortest=".$typefortest); + + $newcodefortest = $codefortest; + + // Special case, if mask is on 12 digits instead of 13, we remove last char into code to test + if (in_array($typefortest, array('EAN13', 'ISBN'))) { // We remove the CRC char not included into mask + if (preg_match('/\{(0+)([@\+][0-9]+)?([@\+][0-9]+)?\}/i', $mask, $reg)) { + if (strlen($reg[1]) == 12) { + $newcodefortest = substr($newcodefortest, 0, 12); + } + dol_syslog(get_class($this).'::verif_syntax newcodefortest='.$newcodefortest); + } + } + + $result = check_value($mask, $newcodefortest); + if (is_string($result)) { + $this->error = $result; + return -1; + } + + return $result; + } +} diff --git a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php index 43bf3ecd2cb..514a6c162fd 100644 --- a/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php +++ b/htdocs/core/modules/bom/doc/doc_generic_bom_odt.modules.php @@ -274,7 +274,7 @@ class doc_generic_bom_odt extends ModelePDFBom $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -283,11 +283,11 @@ class doc_generic_bom_odt extends ModelePDFBom if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -295,8 +295,8 @@ class doc_generic_bom_odt extends ModelePDFBom dol_mkdir($conf->bom->dir_temp); if (!is_writable($conf->bom->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->bom->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->bom->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/bom/mod_bom_advanced.php b/htdocs/core/modules/bom/mod_bom_advanced.php index 09faf05d7d6..2228d643434 100644 --- a/htdocs/core/modules/bom/mod_bom_advanced.php +++ b/htdocs/core/modules/bom/mod_bom_advanced.php @@ -79,7 +79,7 @@ class mod_bom_advanced extends ModeleNumRefboms // Parametrage du prefix $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).'   
'; $texttitle = $langs->trans("ListOfDirectories"); - $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim($conf->global->MEMBER_ADDON_PDF_ODT_PATH))); + $listofdir = explode(',', preg_replace('/[\r\n]+/', ',', trim(getDolGlobalString('MEMBER_ADDON_PDF_ODT_PATH')))); $listoffiles = array(); foreach ($listofdir as $key => $tmpdir) { $tmpdir = trim($tmpdir); @@ -151,7 +151,7 @@ class doc_generic_member_odt extends ModelePDFMember $texte .= $form->textwithpicto($texttitle, $texthelp, 1, 'help', '', 1); $texte .= '
'; $texte .= ''; $texte .= '
'; $texte .= ''; @@ -268,7 +268,7 @@ class doc_generic_member_odt extends ModelePDFMember $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -277,11 +277,11 @@ class doc_generic_member_odt extends ModelePDFMember if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -289,8 +289,8 @@ class doc_generic_member_odt extends ModelePDFMember dol_mkdir($conf->adherent->dir_temp); if (!is_writable($conf->adherent->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->adherent->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->adherent->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/member/doc/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php index 0fc13cbe134..91206c2dd9f 100644 --- a/htdocs/core/modules/member/doc/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -173,14 +173,14 @@ class pdf_standard extends CommonStickerGenerator $widthtouse = $maxwidthtouse; $heighttouse = 0; // old value for image $tmp = dol_getImageSize($photo, false); - if ($tmp['height']) { + if (isset($tmp['height'])) { $imgratio = $tmp['width'] / $tmp['height']; if ($imgratio >= $defaultratio) { $widthtouse = $maxwidthtouse; $heighttouse = round($widthtouse / $imgratio); } else { - $heightouse = $maxheighttouse; - $widthtouse = round($heightouse * $imgratio); + $heighttouse = $maxheighttouse; + $widthtouse = round($heighttouse * $imgratio); } } //var_dump($this->_Width.'x'.$this->_Height.' with border and scale '.$imgscale.' => max '.$maxwidthtouse.'x'.$maxheighttouse.' => We use '.$widthtouse.'x'.$heighttouse);exit; @@ -314,10 +314,10 @@ class pdf_standard extends CommonStickerGenerator complete_substitutions_array($substitutionarray, $langs); // For business cards - $textleft = make_substitutions($conf->global->ADHERENT_CARD_TEXT, $substitutionarray); - $textheader = make_substitutions($conf->global->ADHERENT_CARD_HEADER_TEXT, $substitutionarray); - $textfooter = make_substitutions($conf->global->ADHERENT_CARD_FOOTER_TEXT, $substitutionarray); - $textright = make_substitutions($conf->global->ADHERENT_CARD_TEXT_RIGHT, $substitutionarray); + $textleft = make_substitutions(getDolGlobalString("ADHERENT_CARD_TEXT"), $substitutionarray); + $textheader = make_substitutions(getDolGlobalString("ADHERENT_CARD_HEADER_TEXT"), $substitutionarray); + $textfooter = make_substitutions(getDolGlobalString("ADHERENT_CARD_FOOTER_TEXT"), $substitutionarray); + $textright = make_substitutions(getDolGlobalString("ADHERENT_CARD_TEXT_RIGHT"), $substitutionarray); $nb = $_Avery_Labels[$this->code]['NX'] * $_Avery_Labels[$this->code]['NY']; if ($nb <= 0) { @@ -330,8 +330,8 @@ class pdf_standard extends CommonStickerGenerator 'textheader'=>$textheader, 'textfooter'=>$textfooter, 'textright'=>$textright, - 'id'=>$object->rowid, - 'photo'=>$object->photo + 'id'=>(isset($object->rowid) ? $object->rowid : ""), + 'photo'=>(isset($object->photo) ? $object->photo : "") ); } diff --git a/htdocs/core/modules/modAdherent.class.php b/htdocs/core/modules/modAdherent.class.php index 0d4a85e00ae..2db6311b172 100644 --- a/htdocs/core/modules/modAdherent.class.php +++ b/htdocs/core/modules/modAdherent.class.php @@ -145,7 +145,7 @@ class modAdherent extends DolibarrModules $this->const[$r][4] = 0; $r++; - $this->const[$r][0] = "ADHERENT_MAILMAN_ADMINPW"; + $this->const[$r][0] = "ADHERENT_MAILMAN_ADMIN_PASSWORD"; $this->const[$r][1] = "chaine"; $this->const[$r][2] = ""; $this->const[$r][3] = "Mot de passe Admin des liste mailman"; @@ -250,7 +250,7 @@ class modAdherent extends DolibarrModules $r++; $this->rights[$r][0] = 78; - $this->rights[$r][1] = 'Read subscriptions'; + $this->rights[$r][1] = 'Read membership fees'; $this->rights[$r][2] = 'r'; $this->rights[$r][3] = 0; $this->rights[$r][4] = 'cotisation'; @@ -258,7 +258,7 @@ class modAdherent extends DolibarrModules $r++; $this->rights[$r][0] = 79; - $this->rights[$r][1] = 'Create/modify/remove subscriptions'; + $this->rights[$r][1] = 'Create/modify/remove membership fees'; $this->rights[$r][2] = 'w'; $this->rights[$r][3] = 0; $this->rights[$r][4] = 'cotisation'; @@ -286,8 +286,8 @@ class modAdherent extends DolibarrModules $this->export_label[$r] = 'MembersAndSubscriptions'; $this->export_permission[$r] = array(array("adherent", "export")); $this->export_fields_array[$r] = array( - 'a.rowid'=>'Id', 'a.civility'=>"UserTitle", 'a.lastname'=>"Lastname", 'a.firstname'=>"Firstname", 'a.login'=>"Login", 'a.gender'=>"Gender", 'a.morphy'=>'MemberNature', - 'a.societe'=>'Company', 'a.address'=>"Address", 'a.zip'=>"Zip", 'a.town'=>"Town", 'd.nom'=>"State", 'co.code'=>"CountryCode", 'co.label'=>"Country", + 'a.rowid'=>'MemberId', 'a.ref'=>'MemberRef', 'a.civility'=>"UserTitle", 'a.lastname'=>"Lastname", 'a.firstname'=>"Firstname", 'a.login'=>"Login", 'a.gender'=>"Gender", 'a.morphy'=>'MemberNature', + 'a.societe'=>'Company', 'a.address'=>"Address", 'a.zip'=>"Zip", 'a.town'=>"Town", 'd.code_departement'=>'StateCode', 'd.nom'=>"State", 'co.code'=>"CountryCode", 'co.label'=>"Country", 'a.phone'=>"PhonePro", 'a.phone_perso'=>"PhonePerso", 'a.phone_mobile'=>"PhoneMobile", 'a.email'=>"Email", 'a.birth'=>"Birthday", 'a.statut'=>"Status", 'a.photo'=>"Photo", 'a.note_public'=>"NotePublic", 'a.note_private'=>"NotePrivate", 'a.datec'=>'DateCreation', 'a.datevalid'=>'DateValidation', 'a.tms'=>'DateLastModification', 'a.datefin'=>'DateEndSubscription', 'ta.rowid'=>'MemberTypeId', 'ta.libelle'=>'MemberTypeLabel', @@ -301,7 +301,7 @@ class modAdherent extends DolibarrModules 'c.rowid'=>'Numeric', 'c.dateadh'=>'Date', 'c.datef'=>'Date', 'c.subscription'=>'Numeric' ); $this->export_entities_array[$r] = array( - 'a.rowid'=>'member', 'a.civility'=>"member", 'a.lastname'=>"member", 'a.firstname'=>"member", 'a.login'=>"member", 'a.gender'=>'member', 'a.morphy'=>'member', + 'a.rowid'=>'member', 'a.ref'=>'member', 'a.civility'=>"member", 'a.lastname'=>"member", 'a.firstname'=>"member", 'a.login'=>"member", 'a.gender'=>'member', 'a.morphy'=>'member', 'a.societe'=>'member', 'a.address'=>"member", 'a.zip'=>"member", 'a.town'=>"member", 'd.nom'=>"member", 'co.code'=>"member", 'co.label'=>"member", 'a.phone'=>"member", 'a.phone_perso'=>"member", 'a.phone_mobile'=>"member", 'a.email'=>"member", 'a.birth'=>"member", 'a.statut'=>"member", 'a.photo'=>"member", 'a.note_public'=>"member", 'a.note_private'=>"member", 'a.datec'=>'member', 'a.datevalid'=>'member', 'a.tms'=>'member', @@ -338,14 +338,14 @@ class modAdherent extends DolibarrModules $this->import_tables_array[$r] = array('a'=>MAIN_DB_PREFIX.'adherent', 'extra'=>MAIN_DB_PREFIX.'adherent_extrafields'); $this->import_tables_creator_array[$r] = array('a'=>'fk_user_author'); // Fields to store import user id $this->import_fields_array[$r] = array( - 'a.ref' => 'Member Ref*', + 'a.ref' => 'MemberRef*', 'a.civility'=>"UserTitle", 'a.lastname'=>"Lastname*", 'a.firstname'=>"Firstname", 'a.gender'=>"Gender", 'a.login'=>"Login*", "a.pass"=>"Password", - "a.fk_adherent_type"=>"MemberType*", 'a.morphy'=>'MemberNature*', 'a.societe'=>'Company', 'a.address'=>"Address", 'a.zip'=>"Zip", 'a.town'=>"Town", - 'a.state_id'=>'StateId', 'a.country'=>"CountryId", 'a.phone'=>"PhonePro", 'a.phone_perso'=>"PhonePerso", 'a.phone_mobile'=>"PhoneMobile", + "a.fk_adherent_type"=>"MemberTypeId*", 'a.morphy'=>'MemberNature*', 'a.societe'=>'Company', 'a.address'=>"Address", 'a.zip'=>"Zip", 'a.town'=>"Town", + 'a.state_id'=>'StateId|StateCode', 'a.country'=>"CountryId|CountryCode", 'a.phone'=>"PhonePro", 'a.phone_perso'=>"PhonePerso", 'a.phone_mobile'=>"PhoneMobile", 'a.email'=>"Email", 'a.birth'=>"Birthday", 'a.statut'=>"Status*", 'a.photo'=>"Photo", 'a.note_public'=>"NotePublic", 'a.note_private'=>"NotePrivate", 'a.datec'=>'DateCreation', 'a.datefin'=>'DateEndSubscription' ); - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $this->import_fields_array[$r]['a.fk_soc'] = "ThirdParty"; } // Add extra fields @@ -380,7 +380,7 @@ class modAdherent extends DolibarrModules 'dict' => 'DictionaryCountry' ) ); - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $this->import_convertvalue_array[$r]['a.fk_soc'] = array('rule'=>'fetchidfromref', 'classfile'=>'/societe/class/societe.class.php', 'class'=>'Societe', 'method'=>'fetch', 'element'=>'ThirdParty'); } $this->import_fieldshidden_array[$r] = array('extra.fk_object'=>'lastrowid-'.MAIN_DB_PREFIX.'adherent'); // aliastable.field => ('user->id' or 'lastrowid-'.tableparent) @@ -394,10 +394,10 @@ class modAdherent extends DolibarrModules 'a.email'=>'jsmith@example.com', 'a.birth'=>'1972-10-10', 'a.statut'=>"0 or 1", 'a.note_public'=>"This is a public comment on member", 'a.note_private'=>"This is private comment on member", 'a.datec'=>dol_print_date($now, '%Y-%m__%d'), 'a.datefin'=>dol_print_date(dol_time_plus_duree($now, 1, 'y'), '%Y-%m-%d') ); - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $this->import_examplevalues_array[$r]['a.fk_soc'] = "rowid or name"; } - $this->import_updatekeys_array[$r] = array('a.ref'=>'Member Ref', 'a.login'=>'Login'); + $this->import_updatekeys_array[$r] = array('a.ref'=>'MemberRef', 'a.login'=>'Login'); // Cronjobs $arraydate = dol_getdate(dol_now()); diff --git a/htdocs/core/modules/modCategorie.class.php b/htdocs/core/modules/modCategorie.class.php index 57ac7a637dc..e70cdad999e 100644 --- a/htdocs/core/modules/modCategorie.class.php +++ b/htdocs/core/modules/modCategorie.class.php @@ -127,19 +127,19 @@ class modCategorie extends DolibarrModules $this->export_permission[$r] = array(array("categorie", "lire")); $typeexample = ""; - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $typeexample .= ($typeexample ? " / " : "")."0=Product-Service"; } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $typeexample .= ($typeexample ? "/" : "")."1=Supplier"; } - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $typeexample .= ($typeexample ? " / " : "")."2=Customer-Prospect"; } if (!empty($conf->adherent->enabled)) { $typeexample .= ($typeexample ? " / " : "")."3=Member"; } - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $typeexample .= ($typeexample ? " / " : "")."4=Contact"; } if (!empty($conf->bank->enabled)) { @@ -179,7 +179,7 @@ class modCategorie extends DolibarrModules $this->export_code[$r] = $this->rights_class.'_0_'.Categorie::$MAP_ID_TO_CODE[0]; $this->export_label[$r] = 'CatProdList'; $this->export_icon[$r] = $this->picto; - $this->export_enabled[$r] = '!empty($conf->product->enabled) || !empty($conf->service->abled)'; + $this->export_enabled[$r] = 'isModEnabled("product") || !empty($conf->service->abled)'; $this->export_permission[$r] = array(array("categorie", "lire"), array("produit", "export")); $this->export_fields_array[$r] = array('cat.rowid'=>"CategId", 'cat.label'=>"Label", 'cat.description'=>"Description", 'cat.fk_parent'=>"ParentCategory", 'p.rowid'=>'ProductId', 'p.ref'=>'Ref', 'p.label'=>'Label'); $this->export_TypeFields_array[$r] = array('cat.label'=>"Text", 'cat.description'=>"Text", 'cat.fk_parent'=>'List:categorie:label:rowid', 'p.ref'=>'Text', 'p.label'=>'Text'); @@ -203,7 +203,7 @@ class modCategorie extends DolibarrModules $this->export_code[$r] = $this->rights_class.'_1_'.Categorie::$MAP_ID_TO_CODE[1]; $this->export_label[$r] = 'CatSupList'; $this->export_icon[$r] = $this->picto; - $this->export_enabled[$r] = '!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)'; + $this->export_enabled[$r] = 'isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")'; $this->export_permission[$r] = array(array("categorie", "lire"), array("fournisseur", "lire")); $this->export_fields_array[$r] = array( 'cat.rowid'=>"CategId", 'cat.label'=>"Label", 'cat.description'=>"Description", 'cat.fk_parent'=>"ParentCategory", @@ -249,7 +249,7 @@ class modCategorie extends DolibarrModules $this->export_code[$r] = $this->rights_class.'_2_'.Categorie::$MAP_ID_TO_CODE[2]; $this->export_label[$r] = 'CatCusList'; $this->export_icon[$r] = $this->picto; - $this->export_enabled[$r] = '!empty($conf->societe->enabled)'; + $this->export_enabled[$r] = 'isModEnabled("societe")'; $this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "export")); $this->export_fields_array[$r] = array( 'cat.rowid'=>"CategId", 'cat.label'=>"Label", 'cat.description'=>"Description", 'cat.fk_parent'=>"ParentCategory", @@ -321,7 +321,7 @@ class modCategorie extends DolibarrModules $this->export_code[$r] = $this->rights_class.'_4_'.Categorie::$MAP_ID_TO_CODE[4]; $this->export_label[$r] = 'CatContactList'; $this->export_icon[$r] = $this->picto; - $this->export_enabled[$r] = '!empty($conf->societe->enabled)'; + $this->export_enabled[$r] = 'isModEnabled("societe")'; $this->export_permission[$r] = array(array("categorie", "lire"), array("societe", "contact", "export")); $this->export_fields_array[$r] = array( 'cat.rowid'=>"CategId", 'cat.label'=>"Label", 'cat.description'=>"Description", 'cat.fk_parent'=>"ParentCategory", @@ -466,7 +466,7 @@ class modCategorie extends DolibarrModules $this->import_updatekeys_array[$r] = array('ca.label'=>'Label'); // 0 Products - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $r++; $this->import_code[$r] = $this->rights_class.'_0_'.Categorie::$MAP_ID_TO_CODE[0]; $this->import_label[$r] = "CatProdLinks"; // Translation key @@ -485,7 +485,7 @@ class modCategorie extends DolibarrModules } // 1 Suppliers - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $r++; $this->import_code[$r] = $this->rights_class.'_1_'.Categorie::$MAP_ID_TO_CODE[1]; $this->import_label[$r] = "CatSupLinks"; // Translation key @@ -506,7 +506,7 @@ class modCategorie extends DolibarrModules } // 2 Customers - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $r++; $this->import_code[$r] = $this->rights_class.'_2_'.Categorie::$MAP_ID_TO_CODE[2]; $this->import_label[$r] = "CatCusLinks"; // Translation key @@ -545,7 +545,7 @@ class modCategorie extends DolibarrModules } // 4 Contacts/Addresses - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $r++; $this->import_code[$r] = $this->rights_class.'_4_'.Categorie::$MAP_ID_TO_CODE[4]; $this->import_label[$r] = "CatContactsLinks"; // Translation key diff --git a/htdocs/core/modules/modCommande.class.php b/htdocs/core/modules/modCommande.class.php index e75147ba78a..70f06169394 100644 --- a/htdocs/core/modules/modCommande.class.php +++ b/htdocs/core/modules/modCommande.class.php @@ -139,9 +139,17 @@ class modCommande extends DolibarrModules $this->rights[$r][4] = 'order_advance'; $this->rights[$r][5] = 'validate'; + $r++; + $this->rights[$r][0] = 85; + $this->rights[$r][1] = 'Generate the documents sales orders'; + $this->rights[$r][2] = 'd'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'order_advance'; + $this->rights[$r][5] = 'generetedoc'; + $r++; $this->rights[$r][0] = 86; - $this->rights[$r][1] = 'Send sale orders by email'; + $this->rights[$r][1] = 'Send sales orders by email'; $this->rights[$r][2] = 'd'; $this->rights[$r][3] = 0; $this->rights[$r][4] = 'order_advance'; diff --git a/htdocs/core/modules/modEventOrganization.class.php b/htdocs/core/modules/modEventOrganization.class.php index 93318bb952e..c2c9309cd44 100644 --- a/htdocs/core/modules/modEventOrganization.class.php +++ b/htdocs/core/modules/modEventOrganization.class.php @@ -24,6 +24,7 @@ * \brief Description and activation file for the EventOrganization */ include_once DOL_DOCUMENT_ROOT.'/core/modules/DolibarrModules.class.php'; +require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; /** * Description and activation class for module EventOrganization @@ -55,7 +56,7 @@ class modEventOrganization extends DolibarrModules $this->description = "EventOrganizationDescription"; $this->descriptionlong = "EventOrganizationDescriptionLong"; - $this->version = 'experimental'; + $this->version = 'dolibarr'; // Key used in llx_const table to save module status enabled/disabled (where EVENTORGANIZATION is value of property name of module in uppercase) @@ -257,7 +258,7 @@ class modEventOrganization extends DolibarrModules 'fk_menu'=>'fk_mainmenu=project,fk_leftmenu=eventorganization', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode 'type'=>'left', // This is a Left menu entry 'titre'=>'New', - 'url'=>'/projet/card.php?leftmenu=projects&action=create&usage_organize_event=1', + 'url'=>'/projet/card.php?leftmenu=projects&action=create&usage_organize_event=1&usage_opportunity=0', 'langs'=>'eventorganization@eventorganization', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory. 'position'=>1000+$r, 'enabled'=>'$conf->eventorganization->enabled', // Define condition to show or hide menu entry. Use '$conf->eventorganization->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected. @@ -367,7 +368,9 @@ class modEventOrganization extends DolibarrModules } } - return $this->_init($sql, $options); + $init = $this->_init($sql, $options); + + return $init; } /** diff --git a/htdocs/core/modules/modFTP.class.php b/htdocs/core/modules/modFTP.class.php index 3e2ccd7d049..ae2de933bb6 100644 --- a/htdocs/core/modules/modFTP.class.php +++ b/htdocs/core/modules/modFTP.class.php @@ -54,11 +54,11 @@ class modFTP extends DolibarrModules // Module description used if translation string 'ModuleXXXDesc' not found (XXX is id value) $this->description = "FTP Client"; // Possible values for version are: 'development', 'experimental', 'dolibarr' or version - $this->version = 'dolibarr'; + $this->version = 'dolibarr_deprecated'; // Key used in llx_const table to save module status enabled/disabled (XXX is id value) $this->const_name = 'MAIN_MODULE_'.strtoupper($this->name); // Name of png file (without png) used for this module - $this->picto = 'dir'; + $this->picto = 'folder'; // Data directories to create when module is enabled $this->dirs = array("/ftp/temp"); @@ -114,6 +114,7 @@ class modFTP extends DolibarrModules $this->menu[$r] = array('fk_menu'=>0, 'type'=>'top', 'titre'=>'FTP', + 'prefix' => img_picto('', $this->picto, 'class="paddingright pictofixedwidth em092"'), 'mainmenu'=>'ftp', 'url'=>'/ftp/index.php', 'langs'=>'ftp', diff --git a/htdocs/core/modules/modFacture.class.php b/htdocs/core/modules/modFacture.class.php index 2cdc8229e51..3cea4f0ff92 100644 --- a/htdocs/core/modules/modFacture.class.php +++ b/htdocs/core/modules/modFacture.class.php @@ -497,10 +497,12 @@ class modFacture extends DolibarrModules $r = 1; $alias_product_perentity = empty($conf->global->MAIN_PRODUCT_PERENTITY_SHARED) ? "p" : "ppe"; + $this->export_code[$r] = $this->rights_class.'_'.$r; $this->export_label[$r] = 'CustomersInvoicesAndInvoiceLines'; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_icon[$r] = 'invoice'; $this->export_permission[$r] = array(array("facture", "facture", "export", "other")); + $this->export_fields_array[$r] = array( 's.rowid'=>"IdCompany", 's.nom'=>'CompanyName', 'ps.nom' => 'ParentCompany', 's.code_client'=>'CustomerCode', 's.address'=>'Address', 's.zip'=>'Zip', 's.town'=>'Town', 'c.code'=>'CountryCode', 'cd.nom'=>'State', 's.phone'=>'Phone', @@ -508,17 +510,14 @@ class modFacture extends DolibarrModules 's.code_compta'=>'CustomerAccountancyCode', 's.code_compta_fournisseur'=>'SupplierAccountancyCode', 's.tva_intra'=>'VATIntra', + 't.libelle'=>"ThirdPartyType", // 'ce.code'=>"Staff", "cfj.libelle"=>"JuridicalStatus", 'f.rowid'=>"InvoiceId", 'f.ref'=>"InvoiceRef", 'f.ref_client'=>'RefCustomer', 'f.type'=>"Type", 'f.datec'=>"InvoiceDateCreation", 'f.datef'=>"DateInvoice", 'f.date_lim_reglement'=>"DateDue", 'f.total_ht'=>"TotalHT", 'f.total_ttc'=>"TotalTTC", 'f.total_tva'=>"TotalVAT", 'f.localtax1'=>'LT1', 'f.localtax2'=>'LT2', 'f.paye'=>"InvoicePaidCompletely", 'f.fk_statut'=>'InvoiceStatus', 'f.close_code'=>'EarlyClosingReason', 'f.close_note'=>'EarlyClosingComment', 'none.rest'=>'Rest', - 'f.note_private'=>"NotePrivate", 'f.note_public'=>"NotePublic", 'f.fk_user_author'=>'CreatedById', 'uc.login'=>'CreatedByLogin', - 'f.fk_user_valid'=>'ValidatedById', 'uv.login'=>'ValidatedByLogin', 'pj.ref'=>'ProjectRef', 'pj.title'=>'ProjectLabel', 'fd.rowid'=>'LineId', 'fd.description'=>"LineDescription", - 'fd.subprice'=>"LineUnitPrice", 'fd.tva_tx'=>"LineVATRate", 'fd.qty'=>"LineQty", 'fd.total_ht'=>"LineTotalHT", 'fd.total_tva'=>"LineTotalVAT", - 'fd.total_ttc'=>"LineTotalTTC", 'fd.date_start'=>"DateStart", 'fd.date_end'=>"DateEnd", 'fd.special_code'=>'SpecialCode', - 'fd.product_type'=>"TypeOfLineServiceOrProduct", 'fd.fk_product'=>'ProductId', 'p.ref'=>'ProductRef', 'p.label'=>'ProductLabel', - $alias_product_perentity . '.accountancy_code_sell'=>'ProductAccountancySellCode' + 'f.note_private'=>"NotePrivate", 'f.note_public'=>"NotePublic" ); + // Add multicurrency fields if (!empty($conf->multicurrency->enabled)) { $this->export_fields_array[$r]['f.multicurrency_code'] = 'Currency'; $this->export_fields_array[$r]['f.multicurrency_tx'] = 'CurrencyRate'; @@ -526,10 +525,16 @@ class modFacture extends DolibarrModules $this->export_fields_array[$r]['f.multicurrency_total_tva'] = 'MulticurrencyAmountVAT'; $this->export_fields_array[$r]['f.multicurrency_total_ttc'] = 'MulticurrencyAmountTTC'; } + // Add POS fields if (!empty($conf->cashdesk->enabled) || !empty($conf->takepos->enabled) || !empty($conf->global->INVOICE_SHOW_POS)) { $this->export_fields_array[$r]['f.module_source'] = 'Module'; $this->export_fields_array[$r]['f.pos_source'] = 'POSTerminal'; } + $this->export_fields_array[$r] = $this->export_fields_array[$r] + array( + 'f.fk_user_author'=>'CreatedById', 'uc.login'=>'CreatedByLogin', + 'f.fk_user_valid'=>'ValidatedById', 'uv.login'=>'ValidatedByLogin', + 'pj.ref'=>'ProjectRef', 'pj.title'=>'ProjectLabel' + ); // Add multicompany field if (!empty($conf->global->MULTICOMPANY_ENTITY_IN_EXPORT_IF_SHARED)) { $nbofallowedentities = count(explode(',', getEntity('invoice'))); @@ -537,31 +542,42 @@ class modFacture extends DolibarrModules $this->export_fields_array[$r]['f.entity'] = 'Entity'; } } + $this->export_fields_array[$r] = $this->export_fields_array[$r] + array( + 'fd.rowid'=>'LineId', 'fd.description'=>"LineDescription", + 'fd.subprice'=>"LineUnitPrice", 'fd.tva_tx'=>"LineVATRate", 'fd.qty'=>"LineQty", 'fd.total_ht'=>"LineTotalHT", 'fd.total_tva'=>"LineTotalVAT", + 'fd.total_ttc'=>"LineTotalTTC", 'fd.date_start'=>"DateStart", 'fd.date_end'=>"DateEnd", 'fd.special_code'=>'SpecialCode', + 'fd.product_type'=>"TypeOfLineServiceOrProduct", 'fd.fk_product'=>'ProductId', 'p.ref'=>'ProductRef', 'p.label'=>'ProductLabel', + $alias_product_perentity . '.accountancy_code_sell'=>'ProductAccountancySellCode', + 'aa.account_number' => 'AccountingAffectation' + ); $this->export_TypeFields_array[$r] = array( 's.rowid'=>'Numeric', 's.nom'=>'Text', 'ps.nom'=>'Text', 's.code_client'=>'Text', 's.address'=>'Text', 's.zip'=>'Text', 's.town'=>'Text', 'c.code'=>'Text', 'cd.nom'=>'Text', 's.phone'=>'Text', 's.siren'=>'Text', 's.siret'=>'Text', 's.ape'=>'Text', 's.idprof4'=>'Text', 's.code_compta'=>'Text', 's.code_compta_fournisseur'=>'Text', 's.tva_intra'=>'Text', + 't.libelle'=>"Text", // 'ce.code'=>"List:c_effectif:libelle:code", "cfj.libelle"=>"Text", 'f.rowid'=>'Numeric', 'f.ref'=>"Text", 'f.ref_client'=>'Text', 'f.type'=>"Numeric", 'f.datec'=>"Date", 'f.datef'=>"Date", 'f.date_lim_reglement'=>"Date", 'f.fk_mode_reglement'=>'Numeric', 'f.total_ht'=>"Numeric", 'f.total_ttc'=>"Numeric", 'f.total_tva'=>"Numeric", 'f.localtax1'=>'Numeric', 'f.localtax2'=>'Numeric', 'f.paye'=>"Boolean", 'f.fk_statut'=>'Numeric', 'f.close_code'=>'Text', 'f.close_note'=>'Text', 'none.rest'=>"NumericCompute", - 'f.note_private'=>"Text", 'f.note_public'=>"Text", 'f.fk_user_author'=>'Numeric', 'uc.login'=>'Text', 'f.fk_user_valid'=>'Numeric', 'uv.login'=>'Text', + 'f.note_private'=>"Text", 'f.note_public'=>"Text", + 'f.module_source' => 'Text', + 'f.pos_source' => 'Text', + 'f.entity'=>'List:entity:label:rowid', + 'f.fk_user_author'=>'Numeric', 'uc.login'=>'Text', 'f.fk_user_valid'=>'Numeric', 'uv.login'=>'Text', 'pj.ref'=>'Text', 'pj.title'=>'Text', 'fd.rowid'=>'Numeric', 'fd.description'=>"Text", 'fd.subprice'=>"Numeric", 'fd.tva_tx'=>"Numeric", 'fd.qty'=>"Numeric", 'fd.total_ht'=>"Numeric", 'fd.total_tva'=>"Numeric", 'fd.total_ttc'=>"Numeric", 'fd.date_start'=>"Date", 'fd.date_end'=>"Date", 'fd.special_code'=>'Numeric', 'fd.product_type'=>"Numeric", 'fd.fk_product'=>'List:product:label', 'p.ref'=>'Text', 'p.label'=>'Text', $alias_product_perentity . '.accountancy_code_sell'=>'Text', - 'f.entity'=>'List:entity:label:rowid', + 'aa.account_number' => 'Text' ); - if (!empty($conf->cashdesk->enabled) || !empty($conf->takepos->enabled) || !empty($conf->global->INVOICE_SHOW_POS)) { - $this->export_TypeFields_array[$r]['f.module_source'] = 'Text'; - $this->export_TypeFields_array[$r]['f.pos_source'] = 'Text'; - } $this->export_entities_array[$r] = array( 's.rowid'=>"company", 's.nom'=>'company', 'ps.nom'=>'company', 's.code_client'=>'company', 's.address'=>'company', 's.zip'=>'company', 's.town'=>'company', 'c.code'=>'company', 'cd.nom'=>'company', 's.phone'=>'company', - 's.siren'=>'company', 's.siret'=>'company', 's.ape'=>'company', 's.idprof4'=>'company', 's.code_compta'=>'company', 's.code_compta_fournisseur'=>'company', - 's.tva_intra'=>'company', 'pj.ref'=>'project', 'pj.title'=>'project', 'fd.rowid'=>'invoice_line', 'fd.description'=>"invoice_line", + 's.siren'=>'company', 's.siret'=>'company', 's.ape'=>'company', 's.idprof4'=>'company', 's.code_compta'=>'company', 's.code_compta_fournisseur'=>'company', 's.tva_intra'=>'company', + 't.libelle'=>'company', // 'ce.code'=>'company', 'cfj.libelle'=>'company' + 'pj.ref'=>'project', 'pj.title'=>'project', 'fd.rowid'=>'invoice_line', 'fd.description'=>"invoice_line", 'fd.subprice'=>"invoice_line", 'fd.total_ht'=>"invoice_line", 'fd.total_tva'=>"invoice_line", 'fd.total_ttc'=>"invoice_line", 'fd.tva_tx'=>"invoice_line", 'fd.qty'=>"invoice_line", 'fd.date_start'=>"invoice_line", 'fd.date_end'=>"invoice_line", 'fd.special_code'=>'invoice_line', 'fd.product_type'=>'invoice_line', 'fd.fk_product'=>'product', 'p.ref'=>'product', 'p.label'=>'product', $alias_product_perentity . '.accountancy_code_sell'=>'product', - 'f.fk_user_author'=>'user', 'uc.login'=>'user', 'f.fk_user_valid'=>'user', 'uv.login'=>'user' + 'f.fk_user_author'=>'user', 'uc.login'=>'user', 'f.fk_user_valid'=>'user', 'uv.login'=>'user', + 'aa.account_number' => "invoice_line", ); $this->export_special_array[$r] = array('none.rest'=>'getRemainToPay'); $this->export_dependencies_array[$r] = array('invoice_line'=>'fd.rowid', 'product'=>'fd.rowid', 'none.rest'=>array('f.rowid', 'f.total_ttc', 'f.close_code')); // To add unique key if we ask a field of a child to avoid the DISTINCT to discard them @@ -585,6 +601,7 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'societe as s'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe_extrafields as extra4 ON s.rowid = extra4.fk_object'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe as ps ON ps.rowid = s.parent'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_typent as t ON s.fk_typent = t.id'; if (empty($user->rights->societe->client->voir)) { $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'societe_commerciaux as sc ON sc.fk_soc = s.rowid'; } @@ -602,6 +619,7 @@ class modFacture extends DolibarrModules $this->export_sql_end[$r] .= " LEFT JOIN " . MAIN_DB_PREFIX . "product_perentity as ppe ON ppe.fk_product = p.rowid AND ppe.entity = " . ((int) $conf->entity); } $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra3 on p.rowid = extra3.fk_object'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'accounting_account as aa on fd.fk_code_ventilation = aa.rowid'; $this->export_sql_end[$r] .= ' WHERE f.fk_soc = s.rowid AND f.rowid = fd.fk_facture'; $this->export_sql_end[$r] .= ' AND f.entity IN ('.getEntity('invoice').')'; if (empty($user->rights->societe->client->voir)) { diff --git a/htdocs/core/modules/modHoliday.class.php b/htdocs/core/modules/modHoliday.class.php index 53f69dfefaf..429e511de48 100644 --- a/htdocs/core/modules/modHoliday.class.php +++ b/htdocs/core/modules/modHoliday.class.php @@ -140,7 +140,7 @@ class modHoliday extends DolibarrModules $datestart = dol_mktime(4, 0, 0, $arraydate['mon'], $arraydate['mday'], $arraydate['year']); $this->cronjobs = array( 0 => array( - 'label' => 'HolidayBalanceMonthlyUpdate', + 'label' => 'HolidayBalanceMonthlyUpdate:holiday', 'jobtype' => 'method', 'class' => 'holiday/class/holiday.class.php', 'objectname' => 'Holiday', diff --git a/htdocs/core/modules/modIncoterm.class.php b/htdocs/core/modules/modIncoterm.class.php index ffbd14a88fb..110afe442c2 100644 --- a/htdocs/core/modules/modIncoterm.class.php +++ b/htdocs/core/modules/modIncoterm.class.php @@ -93,7 +93,8 @@ class modIncoterm extends DolibarrModules 'tabfieldvalue'=>array("code,libelle"), // List of fields (list of fields to edit a record) 'tabfieldinsert'=>array("code,libelle"), // List of fields (list of fields for insert) 'tabrowid'=>array("rowid"), // Name of columns with primary key (try to always name it 'rowid') - 'tabcond'=>array($conf->incoterm->enabled) + 'tabcond'=>array($conf->incoterm->enabled), + 'tabhelp' => array(array()) ); $this->boxes = array(); // List of boxes diff --git a/htdocs/core/modules/modProduct.class.php b/htdocs/core/modules/modProduct.class.php index b18d10a29b1..f3c79de5ab8 100644 --- a/htdocs/core/modules/modProduct.class.php +++ b/htdocs/core/modules/modProduct.class.php @@ -127,6 +127,14 @@ class modProduct extends DolibarrModules $this->rights[$r][4] = 'creer'; $r++; + $this->rights[$r][0] = 33; // id de la permission + $this->rights[$r][1] = 'Read prices products'; // libelle de la permission + $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'product_advance'; + $this->rights[$r][5] = 'read_prices'; + $r++; + $this->rights[$r][0] = 34; // id de la permission $this->rights[$r][1] = 'Delete products'; // libelle de la permission $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) @@ -203,20 +211,20 @@ class modProduct extends DolibarrModules if (is_object($mysoc) && $usenpr) { $this->export_fields_array[$r]['p.recuperableonly'] = 'NPR'; } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.cost_price'=>'CostPrice')); } if (!empty($conf->stock->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('e.ref'=>'DefaultWarehouse', 'p.tobatch'=>'ManageLotSerial', 'p.stock'=>'Stock', 'p.seuil_stock_alerte'=>'StockLimit', 'p.desiredstock'=>'DesiredStock', 'p.pmp'=>'PMPValue')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.barcode'=>'BarCode')); } $keyforselect = 'product'; $keyforelement = 'product'; $keyforaliasextra = 'extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('s.nom'=>'Supplier', 'pf.ref_fourn'=>'SupplierRef', 'pf.quantity'=>'QtyMin', 'pf.remise_percent'=>'DiscountQtyMin', 'pf.unitprice'=>'BuyingPrice', 'pf.delivery_time_days'=>'NbDaysToDelivery')); } if (!empty($conf->global->EXPORTTOOL_CATEGORIES)) { @@ -247,10 +255,10 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('e.ref'=>'Text', 'p.tobatch'=>'Numeric', 'p.stock'=>'Numeric', 'p.seuil_stock_alerte'=>'Numeric', 'p.desiredstock'=>'Numeric', 'p.pmp'=>'Numeric', 'p.cost_price'=>'Numeric')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.barcode'=>'Text')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('s.nom'=>'Text', 'pf.ref_fourn'=>'Text', 'pf.unitprice'=>'Numeric', 'pf.quantity'=>'Numeric', 'pf.remise_percent'=>'Numeric', 'pf.delivery_time_days'=>'Numeric')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -266,10 +274,10 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'product', 'p.pmp'=>'product')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'product')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('s.nom'=>'product_supplier_ref', 'pf.ref_fourn'=>'product_supplier_ref', 'pf.unitprice'=>'product_supplier_ref', 'pf.quantity'=>'product_supplier_ref', 'pf.remise_percent'=>'product_supplier_ref', 'pf.delivery_time_days'=>'product_supplier_ref')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -281,10 +289,10 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'product', 'p.pmp'=>'product')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'product')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('s.nom'=>'product_supplier_ref', 'pf.ref_fourn'=>'product_supplier_ref', 'pf.unitprice'=>'product_supplier_ref', 'pf.quantity'=>'product_supplier_ref', 'pf.remise_percent'=>'product_supplier_ref', 'pf.delivery_time_days'=>'product_supplier_ref')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -305,7 +313,7 @@ class modProduct extends DolibarrModules $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_lang as l ON l.fk_product = p.rowid'; } $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra ON p.rowid = extra.fk_object'; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price as pf ON pf.fk_product = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe s ON s.rowid = pf.fk_soc'; } if (!empty($conf->stock->enabled)) { @@ -404,7 +412,7 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.stock'=>'Stock', 'p.seuil_stock_alerte'=>'StockLimit', 'p.desiredstock'=>'DesiredStock', 'p.pmp'=>'PMPValue')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.barcode'=>'BarCode')); } $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('pa.qty'=>'Qty', 'pa.incdec'=>'ComposedProductIncDecStock')); @@ -420,7 +428,7 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.stock'=>'Numeric', 'p.seuil_stock_alerte'=>'Numeric', 'p.desiredstock'=>'Numeric', 'p.pmp'=>'Numeric', 'p.cost_price'=>'Numeric')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.barcode'=>'Text')); } $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('pa.qty'=>'Numeric')); @@ -436,7 +444,7 @@ class modProduct extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'virtualproduct', 'p.seuil_stock_alerte'=>'virtualproduct', 'p.desiredstock'=>'virtualproduct', 'p.pmp'=>'virtualproduct')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'virtualproduct')); } $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('pa.qty'=>"subproduct", 'pa.incdec'=>'subproduct')); @@ -617,7 +625,7 @@ class modProduct extends DolibarrModules )); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.cost_price'=>'CostPrice')); } if (is_object($mysoc) && $usenpr) { @@ -629,7 +637,7 @@ class modProduct extends DolibarrModules if (is_object($mysoc) && $mysoc->useLocalTax(2)) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.localtax2_tx'=>'LT2', 'p.localtax2_type'=>'LT2Type')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.barcode'=>'BarCode')); } if (!empty($conf->global->PRODUCT_USE_UNITS)) { @@ -710,7 +718,7 @@ class modProduct extends DolibarrModules 'p.desiredstock' => '' )); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $import_sample = array_merge($import_sample, array('p.cost_price'=>'90')); } if (is_object($mysoc) && $usenpr) { @@ -722,7 +730,7 @@ class modProduct extends DolibarrModules if (is_object($mysoc) && $mysoc->useLocalTax(2)) { $import_sample = array_merge($import_sample, array('p.localtax2_tx'=>'', 'p.localtax2_type'=>'')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $import_sample = array_merge($import_sample, array('p.barcode'=>'')); } if (!empty($conf->global->PRODUCT_USE_UNITS)) { @@ -745,11 +753,11 @@ class modProduct extends DolibarrModules } $this->import_examplevalues_array[$r] = array_merge($import_sample, $import_extrafield_sample); $this->import_updatekeys_array[$r] = array('p.ref'=>'Ref'); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->import_updatekeys_array[$r] = array_merge($this->import_updatekeys_array[$r], array('p.barcode'=>'BarCode')); //only show/allow barcode as update key if Barcode module enabled } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { // Import suppliers prices (note: this code is duplicated in module Service) $r++; $this->import_code[$r] = $this->rights_class.'_supplierprices'; diff --git a/htdocs/core/modules/modResource.class.php b/htdocs/core/modules/modResource.class.php index b43ead29e7f..1d1d37ac240 100644 --- a/htdocs/core/modules/modResource.class.php +++ b/htdocs/core/modules/modResource.class.php @@ -239,22 +239,26 @@ class modResource extends DolibarrModules $this->export_code[$r] = $this->rights_class.'_'.$r; $this->export_label[$r] = "ResourceSingular"; // Translation key (used only if key ExportDataset_xxx_z not found) $this->export_permission[$r] = array(array("resource", "read")); - $this->export_fields_array[$r] = array('r.rowid'=>'IdResource', 'r.ref'=>'ResourceFormLabel_ref', 'c.code'=>'ResourceTypeCode', 'c.label'=>'ResourceType', 'r.description'=>'ResourceFormLabel_description', 'r.note_private'=>"NotePrivate", 'r.note_public'=>"NotePublic", 'r.asset_number'=>'AssetNumber', 'r.datec'=>"DateCreation", 'r.tms'=>"DateLastModification"); + + $this->export_fields_array[$r] = array('r.rowid'=>'IdResource', 'r.ref'=>'ResourceFormLabel_ref', 'c.rowid'=>'ResourceTypeID', 'c.code'=>'ResourceTypeCode', 'c.label'=>'ResourceTypeLabel', 'r.description'=>'ResourceFormLabel_description', 'r.note_private'=>"NotePrivate", 'r.note_public'=>"NotePublic", 'r.asset_number'=>'AssetNumber', 'r.datec'=>"DateCreation", 'r.tms'=>"DateLastModification"); $this->export_TypeFields_array[$r] = array('r.rowid'=>'List:resource:ref', 'r.ref'=>'Text', 'r.asset_number'=>'Text', 'r.description'=>'Text', 'c.code'=>'Text', 'c.label'=>'List:c_type_resource:label', 'r.datec'=>'Date', 'r.tms'=>'Date', 'r.note_private'=>'Text', 'r.note_public'=>'Text'); $this->export_entities_array[$r] = array('r.rowid'=>'resource', 'r.ref'=>'resource', 'c.code'=>'resource', 'c.label'=>'resource', 'r.description'=>'resource', 'r.note_private'=>"resource", 'r.resource'=>"resource", 'r.asset_number'=>'resource', 'r.datec'=>"resource", 'r.tms'=>"resource"); + $keyforselect = 'resource'; $keyforelement = 'resource'; $keyforaliasextra = 'extra'; + include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; $this->export_dependencies_array[$r] = array('resource'=>array('r.rowid')); // We must keep this until the aggregate_array is used. To add unique key if we ask a field of a child to avoid the DISTINCT to discard them. $this->export_sql_start[$r] = 'SELECT DISTINCT '; $this->export_sql_end[$r] = ' FROM '.MAIN_DB_PREFIX.'resource as r'; - $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_type_resource as c ON c.rowid=r.fk_code_type_resource'; + $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'c_type_resource as c ON c.code = r.fk_code_type_resource'; $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'resource_extrafields as extra ON extra.fk_object = r.rowid'; $this->export_sql_end[$r] .= ' WHERE r.entity IN ('.getEntity('resource').')'; + // Imports //-------- $r = 0; diff --git a/htdocs/core/modules/modService.class.php b/htdocs/core/modules/modService.class.php index bdc3388da5c..598c9131efb 100644 --- a/htdocs/core/modules/modService.class.php +++ b/htdocs/core/modules/modService.class.php @@ -102,6 +102,14 @@ class modService extends DolibarrModules $this->rights[$r][4] = 'creer'; $r++; + $this->rights[$r][0] = 533; // id de la permission + $this->rights[$r][1] = 'Read prices services'; // libelle de la permission + $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) + $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut + $this->rights[$r][4] = 'service_advance'; + $this->rights[$r][5] = 'read_prices'; + $r++; + $this->rights[$r][0] = 534; // id de la permission $this->rights[$r][1] = 'Delete les services'; // libelle de la permission $this->rights[$r][2] = 'd'; // type de la permission (deprecie a ce jour) @@ -168,20 +176,20 @@ class modService extends DolibarrModules if (is_object($mysoc) && $usenpr) { $this->export_fields_array[$r]['p.recuperableonly'] = 'NPR'; } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.cost_price'=>'CostPrice')); } if (!empty($conf->stock->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.stock'=>'Stock', 'p.seuil_stock_alerte'=>'StockLimit', 'p.desiredstock'=>'DesiredStock', 'p.pmp'=>'PMPValue')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.barcode'=>'BarCode')); } $keyforselect = 'product'; $keyforelement = 'product'; $keyforaliasextra = 'extra'; include DOL_DOCUMENT_ROOT.'/core/extrafieldsinexport.inc.php'; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('s.nom'=>'Supplier', 'pf.ref_fourn'=>'SupplierRef', 'pf.quantity'=>'QtyMin', 'pf.remise_percent'=>'DiscountQtyMin', 'pf.unitprice'=>'BuyingPrice', 'pf.delivery_time_days'=>'NbDaysToDelivery')); } if (!empty($conf->global->EXPORTTOOL_CATEGORIES)) { @@ -210,10 +218,10 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.stock'=>'Numeric', 'p.seuil_stock_alerte'=>'Numeric', 'p.desiredstock'=>'Numeric', 'p.pmp'=>'Numeric', 'p.cost_price'=>'Numeric')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.barcode'=>'Text')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('s.nom'=>'Text', 'pf.ref_fourn'=>'Text', 'pf.unitprice'=>'Numeric', 'pf.quantity'=>'Numeric', 'pf.remise_percent'=>'Numeric', 'pf.delivery_time_days'=>'Numeric')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -229,10 +237,10 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'product', 'p.pmp'=>'product')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'product')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('s.nom'=>'product_supplier_ref', 'pf.ref_fourn'=>'product_supplier_ref', 'pf.unitprice'=>'product_supplier_ref', 'pf.quantity'=>'product_supplier_ref', 'pf.remise_percent'=>'product_supplier_ref', 'pf.delivery_time_days'=>'product_supplier_ref')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -244,10 +252,10 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'product', 'p.pmp'=>'product')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'product')); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('s.nom'=>'product_supplier_ref', 'pf.ref_fourn'=>'product_supplier_ref', 'pf.unitprice'=>'product_supplier_ref', 'pf.quantity'=>'product_supplier_ref', 'pf.remise_percent'=>'product_supplier_ref', 'pf.delivery_time_days'=>'product_supplier_ref')); } if (!empty($conf->global->MAIN_MULTILANGS)) { @@ -268,7 +276,7 @@ class modService extends DolibarrModules $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_lang as l ON l.fk_product = p.rowid'; } $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_extrafields as extra ON p.rowid = extra.fk_object'; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->export_sql_end[$r] .= ' LEFT JOIN '.MAIN_DB_PREFIX.'product_fournisseur_price as pf ON pf.fk_product = p.rowid LEFT JOIN '.MAIN_DB_PREFIX.'societe s ON s.rowid = pf.fk_soc'; } $this->export_sql_end[$r] .= ' WHERE p.fk_product_type = 1 AND p.entity IN ('.getEntity('product').')'; @@ -363,7 +371,7 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.stock'=>'Stock', 'p.seuil_stock_alerte'=>'StockLimit', 'p.desiredstock'=>'DesiredStock', 'p.pmp'=>'PMPValue')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('p.barcode'=>'BarCode')); } $this->export_fields_array[$r] = array_merge($this->export_fields_array[$r], array('pa.qty'=>'Qty', 'pa.incdec'=>'ComposedProductIncDecStock')); @@ -379,7 +387,7 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.stock'=>'Numeric', 'p.seuil_stock_alerte'=>'Numeric', 'p.desiredstock'=>'Numeric', 'p.pmp'=>'Numeric', 'p.cost_price'=>'Numeric')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('p.barcode'=>'Text')); } $this->export_TypeFields_array[$r] = array_merge($this->export_TypeFields_array[$r], array('pa.qty'=>'Numeric')); @@ -395,7 +403,7 @@ class modService extends DolibarrModules if (!empty($conf->stock->enabled)) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.stock'=>'virtualproduct', 'p.seuil_stock_alerte'=>'virtualproduct', 'p.desiredstock'=>'virtualproduct', 'p.pmp'=>'virtualproduct')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('p.barcode'=>'virtualproduct')); } $this->export_entities_array[$r] = array_merge($this->export_entities_array[$r], array('pa.qty'=>"subproduct", 'pa.incdec'=>'subproduct')); @@ -564,7 +572,7 @@ class modService extends DolibarrModules )); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.cost_price'=>'CostPrice')); } if (is_object($mysoc) && $usenpr) { @@ -576,7 +584,7 @@ class modService extends DolibarrModules if (is_object($mysoc) && $mysoc->useLocalTax(2)) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.localtax2_tx'=>'LT2', 'p.localtax2_type'=>'LT2Type')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->import_fields_array[$r] = array_merge($this->import_fields_array[$r], array('p.barcode'=>'BarCode')); } if (!empty($conf->global->PRODUCT_USE_UNITS)) { @@ -655,7 +663,7 @@ class modService extends DolibarrModules 'p.desiredstock' => '' )); } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled) || !empty($conf->margin->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice") || !empty($conf->margin->enabled)) { $import_sample = array_merge($import_sample, array('p.cost_price'=>'90')); } if (is_object($mysoc) && $usenpr) { @@ -667,7 +675,7 @@ class modService extends DolibarrModules if (is_object($mysoc) && $mysoc->useLocalTax(2)) { $import_sample = array_merge($import_sample, array('p.localtax2_tx'=>'', 'p.localtax2_type'=>'')); } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $import_sample = array_merge($import_sample, array('p.barcode'=>'')); } if (!empty($conf->global->PRODUCT_USE_UNITS)) { @@ -693,12 +701,12 @@ class modService extends DolibarrModules } $this->import_examplevalues_array[$r] = array_merge($import_sample, $import_extrafield_sample); $this->import_updatekeys_array[$r] = array('p.ref'=>'Ref'); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->import_updatekeys_array[$r] = array_merge($this->import_updatekeys_array[$r], array('p.barcode'=>'BarCode')); //only show/allow barcode as update key if Barcode module enabled } if (empty($conf->product->enabled)) { // We enable next import templates only if module product not already enabled (to avoid duplicate entries) - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { // Import suppliers prices (note: this code is duplicated in module Service) $r++; $this->import_code[$r] = $this->rights_class.'_supplierprices'; diff --git a/htdocs/core/modules/modSociete.class.php b/htdocs/core/modules/modSociete.class.php index 327262ce39f..ff5edd3eeb4 100644 --- a/htdocs/core/modules/modSociete.class.php +++ b/htdocs/core/modules/modSociete.class.php @@ -413,7 +413,7 @@ class modSociete extends DolibarrModules 't.libelle'=>"company", 's.entity'=>'company', ); // We define here only fields that use another picto - if (empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if (empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { unset($this->export_fields_array[$r]['s.code_fournisseur']); unset($this->export_entities_array[$r]['s.code_fournisseur']); } diff --git a/htdocs/core/modules/modWebsite.class.php b/htdocs/core/modules/modWebsite.class.php index e27e7a2f6b0..6e0dc80e41c 100644 --- a/htdocs/core/modules/modWebsite.class.php +++ b/htdocs/core/modules/modWebsite.class.php @@ -164,6 +164,8 @@ class modWebsite extends DolibarrModules { global $conf, $langs; + $error = 0; + $result = $this->_load_tables('/install/mysql/', 'website'); if ($result < 0) { return -1; // Do not activate module if error 'not allowed' returned when loading module SQL queries (the _load_table run sql with run_sql with the error allowed parameter set to 'default') @@ -185,11 +187,16 @@ class modWebsite extends DolibarrModules if ($result < 0) { $langs->load("errors"); $this->error = $langs->trans('ErrorFailToCopyDir', $src, $dest); - return 0; + $this->errors[] = $langs->trans('ErrorFailToCopyDir', $src, $dest); + $error++; } } } + if ($error) { + return 0; + } + // Website templates $srcroot = DOL_DOCUMENT_ROOT.'/install/doctemplates/websites'; $destroot = DOL_DATA_ROOT.'/doctemplates/websites'; @@ -205,9 +212,15 @@ class modWebsite extends DolibarrModules if ($result < 0) { $langs->load("errors"); $this->error = $langs->trans('ErrorFailToCopyFile', $src, $dest); + $this->errors[] = $langs->trans('ErrorFailToCopyFile', $src, $dest); + $error++; } } + if ($error) { + return 0; + } + $sql = array(); return $this->_init($sql, $options); diff --git a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php index 7463ed995d0..1c08dd7228d 100644 --- a/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php +++ b/htdocs/core/modules/mrp/doc/doc_generic_mo_odt.modules.php @@ -267,7 +267,7 @@ class doc_generic_mo_odt extends ModelePDFMo $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -276,11 +276,11 @@ class doc_generic_mo_odt extends ModelePDFMo if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -288,8 +288,8 @@ class doc_generic_mo_odt extends ModelePDFMo dol_mkdir($conf->mrp->dir_temp); if (!is_writable($conf->mrp->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->mrp->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->mrp->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/mrp/mod_mo_advanced.php b/htdocs/core/modules/mrp/mod_mo_advanced.php index ba518159dbf..5588d1cae16 100644 --- a/htdocs/core/modules/mrp/mod_mo_advanced.php +++ b/htdocs/core/modules/mrp/mod_mo_advanced.php @@ -80,7 +80,7 @@ class mod_mo_advanced extends ModeleNumRefMos // Parametrage du prefix $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'; + + // This was a callback request from service, get the token + try { + //var_dump($_GET['code']); + //var_dump($state); + //var_dump($apiService); // OAuth\OAuth2\Service\GitHub + + //$token = $apiService->requestAccessToken(GETPOST('code'), $state); + $token = $apiService->requestAccessToken(GETPOST('code')); + // Github is a service that does not need state to be stored. + // Into constructor of GitHub, the call + // parent::__construct($credentials, $httpClient, $storage, $scopes, $baseApiUri) + // has not the ending parameter to true like the Google class constructor. + + setEventMessages($langs->trans('NewTokenStored'), null, 'mesgs'); // Stored into object managed by class DoliStorage so into table oauth_token + + $backtourl = $_SESSION["backtourlsavedbeforeoauthjump"]; + unset($_SESSION["backtourlsavedbeforeoauthjump"]); + + header('Location: '.$backtourl); + exit(); + } catch (Exception $e) { + print $e->getMessage(); + } +} else { // If entry on page with no parameter, we arrive here + $_SESSION["backtourlsavedbeforeoauthjump"] = $backtourl; + $_SESSION["oauthkeyforproviderbeforeoauthjump"] = $keyforprovider; + $_SESSION['oauthstateanticsrf'] = $state; + + // This may create record into oauth_state before the header redirect. + // Creation of record with state in this tables depend on the Provider used (see its constructor). + if (GETPOST('state')) { + $url = $apiService->getAuthorizationUri(array('state' => GETPOST('state'))); + } else { + $url = $apiService->getAuthorizationUri(); // Parameter state will be randomly generated + } + + // we go on oauth provider authorization page + header('Location: '.$url); + exit(); +} + + +/* + * View + */ + +// No view at all, just actions + +$db->close(); diff --git a/htdocs/core/modules/oauth/github_oauthcallback.php b/htdocs/core/modules/oauth/github_oauthcallback.php index 5c24e23aafa..f496c42d0ac 100644 --- a/htdocs/core/modules/oauth/github_oauthcallback.php +++ b/htdocs/core/modules/oauth/github_oauthcallback.php @@ -1,5 +1,5 @@ * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify @@ -86,7 +86,7 @@ if ($action != 'delete' && empty($requestedpermissionsarray)) { //var_dump($requestedpermissionsarray);exit; // Instantiate the Api service using the credentials, http client and storage mechanism for the token -$apiService = $serviceFactory->createService('GitHub'.($keyforprovider ? '-'.$keyforprovider : ''), $credentials, $storage, $requestedpermissionsarray); +$apiService = $serviceFactory->createService('GitHub', $credentials, $storage, $requestedpermissionsarray); // access type needed to have oauth provider refreshing token //$apiService->setAccessType('offline'); diff --git a/htdocs/core/modules/oauth/google_oauthcallback.php b/htdocs/core/modules/oauth/google_oauthcallback.php index 2812c4f7163..9208a6110a9 100644 --- a/htdocs/core/modules/oauth/google_oauthcallback.php +++ b/htdocs/core/modules/oauth/google_oauthcallback.php @@ -1,5 +1,5 @@ * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/core/modules/oauth/stripelive_oauthcallback.php b/htdocs/core/modules/oauth/stripelive_oauthcallback.php index bf9656df783..f24921faf83 100644 --- a/htdocs/core/modules/oauth/stripelive_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripelive_oauthcallback.php @@ -1,5 +1,5 @@ * Copyright (C) 2019 Thibault FOUCART * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/core/modules/oauth/stripetest_oauthcallback.php b/htdocs/core/modules/oauth/stripetest_oauthcallback.php index 64d55fba760..b41b579857e 100644 --- a/htdocs/core/modules/oauth/stripetest_oauthcallback.php +++ b/htdocs/core/modules/oauth/stripetest_oauthcallback.php @@ -1,5 +1,5 @@ * Copyright (C) 2015 Frederic France * * This program is free software; you can redistribute it and/or modify diff --git a/htdocs/core/modules/printing/modules_printing.php b/htdocs/core/modules/printing/modules_printing.php index fa86d832b73..26268e7c183 100644 --- a/htdocs/core/modules/printing/modules_printing.php +++ b/htdocs/core/modules/printing/modules_printing.php @@ -67,7 +67,11 @@ class PrintingDriver $list = array(); $listoffiles = array(); - $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + if (!empty($conf->modules_parts['printing'])) { + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + } else { + $dirmodels = array('/core/modules/printing/'); + } foreach ($dirmodels as $dir) { $tmpfiles = dol_dir_list(dol_buildpath($dir, 0), 'all', 0, '\.modules.php', '', 'name', SORT_ASC, 0); if (!empty($tmpfiles)) { diff --git a/htdocs/core/modules/printing/printgcp.modules.php b/htdocs/core/modules/printing/printgcp.modules.php index 226ed6c43cd..391f5b435d7 100644 --- a/htdocs/core/modules/printing/printgcp.modules.php +++ b/htdocs/core/modules/printing/printgcp.modules.php @@ -116,8 +116,8 @@ class printing_printgcp extends PrintingDriver 'type'=>'info', ); } else { - $this->google_id = $conf->global->OAUTH_GOOGLE_ID; - $this->google_secret = $conf->global->OAUTH_GOOGLE_SECRET; + $this->google_id = getDolGlobalString('OAUTH_GOOGLE_ID'); + $this->google_secret = getDolGlobalString('OAUTH_GOOGLE_SECRET'); // Token storage $storage = new DoliStorage($this->db, $this->conf); //$storage->clearToken($this->OAUTH_SERVICENAME_GOOGLE); @@ -137,7 +137,6 @@ class printing_printgcp extends PrintingDriver $this->errors[] = $e->getMessage(); $token_ok = false; } - //var_dump($this->errors);exit; $expire = false; // Is token expired or will token expire in the next 30 seconds diff --git a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php index bf1da990923..c1b93be6653 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php @@ -141,8 +141,8 @@ class pdf_standardlabel extends CommonStickerGenerator $widthtouse = $maxwidthtouse; $heighttouse = round($widthtouse / $imgratio); } else { - $heightouse = $maxheighttouse; - $widthtouse = round($heightouse * $imgratio); + $heighttouse = $maxheighttouse; + $widthtouse = round($heighttouse * $imgratio); } } //var_dump($this->_Width.'x'.$this->_Height.' with border and scale '.$imgscale.' => max '.$maxwidthtouse.'x'.$maxheighttouse.' => We use '.$widthtouse.'x'.$heighttouse);exit; diff --git a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php index 5d228da7d8c..c4167847986 100644 --- a/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php +++ b/htdocs/core/modules/product/doc/doc_generic_product_odt.modules.php @@ -278,7 +278,7 @@ class doc_generic_product_odt extends ModelePDFProduct $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -287,11 +287,11 @@ class doc_generic_product_odt extends ModelePDFProduct if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -299,8 +299,8 @@ class doc_generic_product_odt extends ModelePDFProduct dol_mkdir($conf->product->dir_temp); if (!is_writable($conf->product->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->product->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->product->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/product_batch/mod_lot_advanced.php b/htdocs/core/modules/product_batch/mod_lot_advanced.php index 0865ebc9a66..0e108b6b021 100644 --- a/htdocs/core/modules/product_batch/mod_lot_advanced.php +++ b/htdocs/core/modules/product_batch/mod_lot_advanced.php @@ -66,7 +66,7 @@ class mod_lot_advanced extends ModeleNumRefBatch $form = new Form($db); // We get cursor rule - $mask = isset($conf->global->LOT_ADVANCED_MASK) ? $conf->global->LOT_ADVANCED_MASK : ''; + $mask = getDolGlobalString('LOT_ADVANCED_MASK'); $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; $texte .= '
'; @@ -142,7 +142,7 @@ class mod_lot_advanced extends ModeleNumRefBatch require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = isset($conf->global->LOT_ADVANCED_MASK) ? $conf->global->LOT_ADVANCED_MASK : ''; + $mask = getDolGlobalString('LOT_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/product_batch/mod_sn_advanced.php b/htdocs/core/modules/product_batch/mod_sn_advanced.php index 46f803cb20f..f8d61c43c61 100644 --- a/htdocs/core/modules/product_batch/mod_sn_advanced.php +++ b/htdocs/core/modules/product_batch/mod_sn_advanced.php @@ -66,7 +66,7 @@ class mod_sn_advanced extends ModeleNumRefBatch $form = new Form($db); // We get cursor rule - $mask = isset($conf->global->SN_ADVANCED_MASK) ? $conf->global->SN_ADVANCED_MASK : ''; + $mask = getDolGlobalString('SN_ADVANCED_MASK'); $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; $texte .= ''; @@ -142,7 +142,7 @@ class mod_sn_advanced extends ModeleNumRefBatch require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = isset($conf->global->SN_ADVANCED_MASK) ? $conf->global->SN_ADVANCED_MASK : ''; + $mask = getDolGlobalString('SN_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php index 8bd8d030a37..420dfd61909 100644 --- a/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php +++ b/htdocs/core/modules/project/doc/doc_generic_project_odt.modules.php @@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (isModEnabled('facture')) { @@ -49,10 +49,10 @@ if (isModEnabled('facture')) { if (!empty($conf->commande->enabled)) { require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; } if (!empty($conf->contrat->enabled)) { @@ -556,7 +556,7 @@ class doc_generic_project_odt extends ModelePDFProjects $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -565,11 +565,11 @@ class doc_generic_project_odt extends ModelePDFProjects if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -577,8 +577,8 @@ class doc_generic_project_odt extends ModelePDFProjects dol_mkdir($conf->project->dir_temp); if (!is_writable($conf->project->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->project->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->project->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } @@ -971,13 +971,13 @@ class doc_generic_project_odt extends ModelePDFProjects 'title' => "ListSupplierOrdersAssociatedProject", 'table' => 'commande_fournisseur', 'class' => 'CommandeFournisseur', - 'test' => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire) + 'test' => (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire) ), 'invoice_supplier' => array( 'title' => "ListSupplierInvoicesAssociatedProject", 'table' => 'facture_fourn', 'class' => 'FactureFournisseur', - 'test' => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire) + 'test' => (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire) ), 'contract' => array( 'title' => "ListContractAssociatedProject", diff --git a/htdocs/core/modules/project/doc/pdf_beluga.modules.php b/htdocs/core/modules/project/doc/pdf_beluga.modules.php index fba5e02b098..1dc5b7bf3f9 100644 --- a/htdocs/core/modules/project/doc/pdf_beluga.modules.php +++ b/htdocs/core/modules/project/doc/pdf_beluga.modules.php @@ -407,7 +407,7 @@ class pdf_beluga extends ModelePDFProjects 'class'=>'CommandeFournisseur', 'table'=>'commande_fournisseur', 'datefieldname'=>'date_commande', - 'test'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire), + 'test'=>(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->lire) || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire), 'lang'=>'orders'), 'invoice_supplier'=>array( 'name'=>"BillsSuppliers", @@ -416,7 +416,7 @@ class pdf_beluga extends ModelePDFProjects 'margin'=>'minus', 'table'=>'facture_fourn', 'datefieldname'=>'datef', - 'test'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire), + 'test'=>(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->lire) || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire), 'lang'=>'bills'), 'contract'=>array( 'name'=>"Contracts", diff --git a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php index e26318b749c..8433aaa6331 100644 --- a/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php +++ b/htdocs/core/modules/project/task/doc/doc_generic_task_odt.modules.php @@ -38,7 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/doc.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (isModEnabled('facture')) { @@ -50,10 +50,10 @@ if (isModEnabled('facture')) { if (!empty($conf->commande->enabled)) { require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; } if (!empty($conf->contrat->enabled)) { @@ -517,9 +517,9 @@ class doc_generic_task_odt extends ModelePDFTask $newfiletmp = preg_replace('/\.(ods|odt)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; - $file = $dir.'/'.$newfiletmp.'.odt'; + $file = $dir . '/' . $newfiletmp . '.odt'; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -527,8 +527,8 @@ class doc_generic_task_odt extends ModelePDFTask dol_mkdir($conf->project->dir_temp); if (!is_writable($conf->project->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->project->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->project->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php index 6f91d676949..8314d62dada 100644 --- a/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php +++ b/htdocs/core/modules/propale/doc/doc_generic_proposal_odt.modules.php @@ -71,6 +71,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $this->db = $db; $this->name = "ODT templates"; $this->description = $langs->trans("DocumentModelOdt"); + $this->update_main_doc_field = 1; // Save the name of generated file as the main doc when generating a doc with this template $this->scandir = 'PROPALE_ADDON_PDF_ODT_PATH'; // Name of constant that is used to save list of directories to scan // Page size for A4 format @@ -310,7 +311,7 @@ class doc_generic_proposal_odt extends ModelePDFPropales $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -319,11 +320,11 @@ class doc_generic_proposal_odt extends ModelePDFPropales if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -331,8 +332,8 @@ class doc_generic_proposal_odt extends ModelePDFPropales dol_mkdir($conf->propal->multidir_temp[$object->entity]); if (!is_writable($conf->propal->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->propal->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->propal->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/propale/doc/pdf_azur.modules.php b/htdocs/core/modules/propale/doc/pdf_azur.modules.php index 177443153ce..bb6389a2e67 100644 --- a/htdocs/core/modules/propale/doc/pdf_azur.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_azur.modules.php @@ -815,15 +815,15 @@ class pdf_azur extends ModelePDFPropales foreach ($filetomerge->lines as $linefile) { if (!empty($linefile->id) && !empty($linefile->file_name)) { if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; - } elseif (!empty($conf->service->enabled)) { + } elseif (isModEnabled("service")) { $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; } } else { - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); - } elseif (!empty($conf->service->enabled)) { + } elseif (isModEnabled("service")) { $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); } } diff --git a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php index 1ed76728b92..7be7170edb2 100644 --- a/htdocs/core/modules/propale/doc/pdf_cyan.modules.php +++ b/htdocs/core/modules/propale/doc/pdf_cyan.modules.php @@ -940,15 +940,15 @@ class pdf_cyan extends ModelePDFPropales foreach ($filetomerge->lines as $linefile) { if (!empty($linefile->id) && !empty($linefile->file_name)) { if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; - } elseif (!empty($conf->service->enabled)) { + } elseif (isModEnabled("service")) { $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir($product->id, 2, 0, 0, $product, 'product').$product->id."/photos"; } } else { - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $filetomerge_dir = $conf->product->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); - } elseif (!empty($conf->service->enabled)) { + } elseif (isModEnabled("service")) { $filetomerge_dir = $conf->service->multidir_output[$entity_product_file].'/'.get_exdir(0, 0, 0, 0, $product, 'product'); } } diff --git a/htdocs/core/modules/propale/mod_propale_saphir.php b/htdocs/core/modules/propale/mod_propale_saphir.php index af7579fb142..2cb10e3d932 100644 --- a/htdocs/core/modules/propale/mod_propale_saphir.php +++ b/htdocs/core/modules/propale/mod_propale_saphir.php @@ -85,7 +85,8 @@ class mod_propale_saphir extends ModeleNumRefPropales // Parametrage du prefix $texte .= '
'; - $texte .= ''; + $mask = empty($conf->global->PROPALE_SAPHIR_MASK) ? '' : $conf->global->PROPALE_SAPHIR_MASK; + $texte .= ''; $texte .= ''; @@ -134,7 +135,7 @@ class mod_propale_saphir extends ModeleNumRefPropales require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // On defini critere recherche compteur - $mask = $conf->global->PROPALE_SAPHIR_MASK; + $mask = empty($conf->global->PROPALE_SAPHIR_MASK) ? '' : $conf->global->PROPALE_SAPHIR_MASK; if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/propale/modules_propale.php b/htdocs/core/modules/propale/modules_propale.php index ee7df804c59..dcb386947a3 100644 --- a/htdocs/core/modules/propale/modules_propale.php +++ b/htdocs/core/modules/propale/modules_propale.php @@ -67,7 +67,7 @@ abstract class ModelePDFPropales extends CommonDocGenerator /** - * Classe mere des modeles de numerotation des references de propales + * Parent class for numbering rules of proposals */ abstract class ModeleNumRefPropales { diff --git a/htdocs/core/modules/rapport/pdf_paiement.class.php b/htdocs/core/modules/rapport/pdf_paiement.class.php index 215987054ce..e4991a5830d 100644 --- a/htdocs/core/modules/rapport/pdf_paiement.class.php +++ b/htdocs/core/modules/rapport/pdf_paiement.class.php @@ -185,14 +185,14 @@ class pdf_paiement $sql .= ", c.code as paiement_code, p.num_paiement as num_payment"; $sql .= ", p.amount as paiement_amount, f.total_ttc as facture_amount"; $sql .= ", pf.amount as pf_amount"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= ", ba.ref as bankaccount"; } $sql .= ", p.rowid as prowid"; $sql .= " FROM ".MAIN_DB_PREFIX."paiement as p LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON p.fk_paiement = c.id"; $sql .= ", ".MAIN_DB_PREFIX."facture as f,"; $sql .= " ".MAIN_DB_PREFIX."paiement_facture as pf,"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= " ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba,"; } $sql .= " ".MAIN_DB_PREFIX."societe as s"; @@ -200,7 +200,7 @@ class pdf_paiement $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } $sql .= " WHERE f.fk_soc = s.rowid AND pf.fk_facture = f.rowid AND pf.fk_paiement = p.rowid"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= " AND p.fk_bank = b.rowid AND b.fk_account = ba.rowid "; } $sql .= " AND f.entity IN (".getEntity('invoice').")"; @@ -223,14 +223,14 @@ class pdf_paiement $sql .= ", c.code as paiement_code, p.num_paiement as num_payment"; $sql .= ", p.amount as paiement_amount, f.total_ttc as facture_amount"; $sql .= ", pf.amount as pf_amount"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= ", ba.ref as bankaccount"; } $sql .= ", p.rowid as prowid"; $sql .= " FROM ".MAIN_DB_PREFIX."paiementfourn as p LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON p.fk_paiement = c.id"; $sql .= ", ".MAIN_DB_PREFIX."facture_fourn as f,"; $sql .= " ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf,"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= " ".MAIN_DB_PREFIX."bank as b, ".MAIN_DB_PREFIX."bank_account as ba,"; } $sql .= " ".MAIN_DB_PREFIX."societe as s"; @@ -238,7 +238,7 @@ class pdf_paiement $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; } $sql .= " WHERE f.fk_soc = s.rowid AND pf.fk_facturefourn = f.rowid AND pf.fk_paiementfourn = p.rowid"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $sql .= " AND p.fk_bank = b.rowid AND b.fk_account = ba.rowid "; } $sql .= " AND f.entity IN (".getEntity('invoice').")"; diff --git a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php index 1976dea773f..18afd4fd054 100644 --- a/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php +++ b/htdocs/core/modules/reception/doc/doc_generic_reception_odt.modules.php @@ -271,7 +271,7 @@ class doc_generic_reception_odt extends ModelePdfReception $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -280,11 +280,11 @@ class doc_generic_reception_odt extends ModelePdfReception if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -292,8 +292,8 @@ class doc_generic_reception_odt extends ModelePdfReception dol_mkdir($conf->reception->dir_temp); if (!is_writable($conf->reception->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->reception->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->reception->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/reception/doc/pdf_squille.modules.php b/htdocs/core/modules/reception/doc/pdf_squille.modules.php index 61fab1ab02d..050459d91d2 100644 --- a/htdocs/core/modules/reception/doc/pdf_squille.modules.php +++ b/htdocs/core/modules/reception/doc/pdf_squille.modules.php @@ -856,20 +856,20 @@ class pdf_squille extends ModelePdfReception } // Show barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $posx = 105; } else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for reception ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); } $pdf->SetDrawColor(128, 128, 128); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for reception ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); @@ -917,7 +917,7 @@ class pdf_squille extends ModelePdfReception $origin_id = $object->origin_id; // TODO move to external function - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { // commonly $origin='commande' + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { // commonly $origin='commande' $outputlangs->load('orders'); $classname = 'CommandeFournisseur'; diff --git a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php index a19c90215b0..4a63e9c91f6 100644 --- a/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php +++ b/htdocs/core/modules/societe/doc/doc_generic_odt.modules.php @@ -256,7 +256,7 @@ class doc_generic_odt extends ModeleThirdPartyDoc // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); if (!empty($conf->global->MAIN_DOC_USE_OBJECT_THIRDPARTY_NAME)) { - $newfiletmp = dol_sanitizeFileName(dol_string_nospecial($object->name)).'-'.$newfiletmp; + $newfiletmp = dol_sanitizeFileName(dol_string_nospecial($object->name)) . '-' . $newfiletmp; $newfiletmp = preg_replace('/__+/', '_', $newfiletmp); // Replace repeated _ into one _ (to avoid string with substitution syntax) } if (!empty($conf->global->MAIN_DOC_USE_TIMING)) { @@ -264,11 +264,11 @@ class doc_generic_odt extends ModeleThirdPartyDoc if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; $object->builddoc_filename = $filename; // For triggers //print "newfileformat=".$newfileformat; //print "newdir=".$dir; @@ -279,8 +279,8 @@ class doc_generic_odt extends ModeleThirdPartyDoc dol_mkdir($conf->societe->multidir_temp[$object->entity]); if (!is_writable($conf->societe->multidir_temp[$object->entity])) { - $this->error = "Failed to write in temp directory ".$conf->societe->multidir_temp[$object->entity]; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->societe->multidir_temp[$object->entity]); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php index c54e5f4f02a..c5a6ae75389 100644 --- a/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php +++ b/htdocs/core/modules/stock/doc/doc_generic_stock_odt.modules.php @@ -279,7 +279,7 @@ class doc_generic_stock_odt extends ModelePDFStock $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -288,11 +288,11 @@ class doc_generic_stock_odt extends ModelePDFStock if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -300,8 +300,8 @@ class doc_generic_stock_odt extends ModelePDFStock dol_mkdir($conf->product->dir_temp); if (!is_writable($conf->product->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->product->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->product->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/stocktransfer/doc/pdf_eagle.modules.php b/htdocs/core/modules/stocktransfer/doc/pdf_eagle.modules.php index c00bf34621e..7722698593c 100644 --- a/htdocs/core/modules/stocktransfer/doc/pdf_eagle.modules.php +++ b/htdocs/core/modules/stocktransfer/doc/pdf_eagle.modules.php @@ -944,20 +944,20 @@ class pdf_eagle extends ModelePdfStockTransfer } // Show barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $posx = 105; } else { $posx = $this->marge_gauche + 3; } //$pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); } $pdf->SetDrawColor(128, 128, 128); - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { // TODO Build code bar with function writeBarCode of barcode module for sending ref $object->ref //$pdf->SetXY($this->marge_gauche+3, $this->marge_haute+3); //$pdf->Image($logo,10, 5, 0, 24); diff --git a/htdocs/core/modules/stocktransfer/mod_stocktransfer_advanced.php b/htdocs/core/modules/stocktransfer/mod_stocktransfer_advanced.php index fab0952e894..dd29e48d0b8 100644 --- a/htdocs/core/modules/stocktransfer/mod_stocktransfer_advanced.php +++ b/htdocs/core/modules/stocktransfer/mod_stocktransfer_advanced.php @@ -80,7 +80,7 @@ class mod_stocktransfer_advanced extends ModeleNumRefStockTransfer // Parametrage du prefix $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -133,7 +133,7 @@ class mod_stocktransfer_advanced extends ModeleNumRefStockTransfer require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->STOCKTRANSFER_STOCKTRANSFER_ADVANCED_MASK; + $mask = getDolGlobalString('STOCKTRANSFER_STOCKTRANSFER_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php index a9a8f612578..4e577795ceb 100644 --- a/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php +++ b/htdocs/core/modules/supplier_order/doc/doc_generic_supplier_order_odt.modules.php @@ -262,7 +262,7 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders $newfiletmp = preg_replace('/\.od(t|s)/i', '', $newfile); $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; //$file=$dir.'/'.$newfiletmp.'.'.dol_print_date(dol_now(),'%Y%m%d%H%M%S').'.odt'; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -271,11 +271,11 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -283,8 +283,8 @@ class doc_generic_supplier_order_odt extends ModelePDFSuppliersOrders dol_mkdir($conf->fournisseur->commande->dir_temp); if (!is_writable($conf->fournisseur->commande->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->fournisseur->commande->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->fournisseur->commande->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php index 82475f7a016..b8148a35c5d 100644 --- a/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php +++ b/htdocs/core/modules/supplier_proposal/doc/doc_generic_supplier_proposal_odt.modules.php @@ -297,7 +297,7 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -306,11 +306,11 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -318,8 +318,8 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal dol_mkdir($conf->supplier_proposal->dir_temp); if (!is_writable($conf->supplier_proposal->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->supplier_proposal->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->supplier_proposal->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php b/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php index cf358cae606..706977f72e6 100644 --- a/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php +++ b/htdocs/core/modules/ticket/doc/doc_generic_ticket_odt.modules.php @@ -266,7 +266,7 @@ class doc_generic_ticket_odt extends ModelePDFTicket $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -275,11 +275,11 @@ class doc_generic_ticket_odt extends ModelePDFTicket if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -287,8 +287,8 @@ class doc_generic_ticket_odt extends ModelePDFTicket dol_mkdir($conf->ticket->dir_temp); if (!is_writable($conf->ticket->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->ticket->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->ticket->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php index 0c9f5263e09..505d68f0441 100644 --- a/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php +++ b/htdocs/core/modules/user/doc/doc_generic_user_odt.modules.php @@ -297,7 +297,7 @@ class doc_generic_user_odt extends ModelePDFUser $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -306,11 +306,11 @@ class doc_generic_user_odt extends ModelePDFUser if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -318,8 +318,8 @@ class doc_generic_user_odt extends ModelePDFUser dol_mkdir($conf->user->dir_temp); if (!is_writable($conf->user->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->user->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->user->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php index 188cff00216..df3804670ad 100644 --- a/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php +++ b/htdocs/core/modules/usergroup/doc/doc_generic_usergroup_odt.modules.php @@ -123,7 +123,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $texte .= ''; $texte .= ''; $texte .= ''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if (!empty($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT)) { $texte .= ''; $texte .= ''; $texte .= ''; @@ -169,7 +169,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup if (count($listofdir)) { $texte .= $langs->trans("NumberOfModelFilesFound").': '.count($listoffiles).''; - if ($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT > 0) { + if (!empty($conf->global->MAIN_PROPAL_CHOOSE_ODT_DOCUMENT)) { // Model for creation $list = ModelePDFUserGroup::liste_modeles($this->db); $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'; @@ -281,7 +281,7 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup $newfiletmp = preg_replace('/template_/i', '', $newfiletmp); $newfiletmp = preg_replace('/modele_/i', '', $newfiletmp); - $newfiletmp = $objectref.'_'.$newfiletmp; + $newfiletmp = $objectref . '_' . $newfiletmp; // Get extension (ods or odt) $newfileformat = substr($newfile, strrpos($newfile, '.') + 1); @@ -290,11 +290,11 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup if ($format == '1') { $format = '%Y%m%d%H%M%S'; } - $filename = $newfiletmp.'-'.dol_print_date(dol_now(), $format).'.'.$newfileformat; + $filename = $newfiletmp . '-' . dol_print_date(dol_now(), $format) . '.' . $newfileformat; } else { - $filename = $newfiletmp.'.'.$newfileformat; + $filename = $newfiletmp . '.' . $newfileformat; } - $file = $dir.'/'.$filename; + $file = $dir . '/' . $filename; //print "newdir=".$dir; //print "newfile=".$newfile; //print "file=".$file; @@ -302,8 +302,8 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup dol_mkdir($conf->user->dir_temp); if (!is_writable($conf->user->dir_temp)) { - $this->error = "Failed to write in temp directory ".$conf->user->dir_temp; - dol_syslog('Error in write_file: '.$this->error, LOG_ERR); + $this->error = $langs->transnoentities("ErrorFailedToWriteInTempDirectory", $conf->user->dir_temp); + dol_syslog('Error in write_file: ' . $this->error, LOG_ERR); return -1; } diff --git a/htdocs/core/modules/workstation/mod_workstation_advanced.php b/htdocs/core/modules/workstation/mod_workstation_advanced.php index 6611f8d926e..125aa0f7c53 100644 --- a/htdocs/core/modules/workstation/mod_workstation_advanced.php +++ b/htdocs/core/modules/workstation/mod_workstation_advanced.php @@ -80,7 +80,7 @@ class mod_workstation_advanced extends ModeleNumRefWorkstation // Parametrage du prefix $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -133,7 +133,7 @@ class mod_workstation_advanced extends ModeleNumRefWorkstation require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; // We get cursor rule - $mask = $conf->global->WORKSTATION_WORKSTATION_ADVANCED_MASK; + $mask = getDolGlobalString('WORKSTATION_WORKSTATION_ADVANCED_MASK'); if (!$mask) { $this->error = 'NotConfigured'; diff --git a/htdocs/core/photos_resize.php b/htdocs/core/photos_resize.php index 65a3275dab7..e35d09d7e3f 100644 --- a/htdocs/core/photos_resize.php +++ b/htdocs/core/photos_resize.php @@ -56,13 +56,13 @@ if ($modulepart == 'produit' || $modulepart == 'product' || $modulepart == 'serv $accessallowed = 1; } elseif ($modulepart == 'project') { $result = restrictedArea($user, 'projet', $id); - if (!$user->rights->projet->lire) { + if (empty($user->rights->projet->lire)) { accessforbidden(); } $accessallowed = 1; } elseif ($modulepart == 'bom') { $result = restrictedArea($user, $modulepart, $id, 'bom_bom'); - if (!$user->rights->bom->read) { + if (empty($user->rights->bom->read)) { accessforbidden(); } $accessallowed = 1; @@ -73,14 +73,14 @@ if ($modulepart == 'produit' || $modulepart == 'product' || $modulepart == 'serv } $accessallowed = 1; } elseif ($modulepart == 'user') { - $result = restrictedArea($user, $modulepart, $id, $modulepart); - if (!$user->rights->user->user->lire) { + $result = restrictedArea($user, $modulepart, $id, $modulepart, $modulepart); + if (empty($user->rights->user->user->lire)) { accessforbidden(); } $accessallowed = 1; } elseif ($modulepart == 'tax') { $result = restrictedArea($user, $modulepart, $id, 'chargesociales', 'charges'); - if (!$user->rights->tax->charges->lire) { + if (empty($user->rights->tax->charges->lire)) { accessforbidden(); } $accessallowed = 1; @@ -474,6 +474,7 @@ if ($action == 'confirm_crop') { * View */ +$head = ''; $title = $langs->trans("ImageEditor"); $morejs = array('/includes/jquery/plugins/jcrop/js/jquery.Jcrop.min.js', '/core/js/lib_photosresize.js'); $morecss = array('/includes/jquery/plugins/jcrop/css/jquery.Jcrop.css'); @@ -505,8 +506,8 @@ print ''; print '
'; print ''.$langs->trans("Resize").''; print $langs->trans("ResizeDesc").'
'; -print $langs->trans("NewLength").': px   '.$langs->trans("or").'   '; -print $langs->trans("NewHeight").': px  
'; +print $langs->trans("NewLength").': px   '.$langs->trans("or").'   '; +print $langs->trans("NewHeight").': px  
'; print ''; print ''; @@ -564,12 +565,12 @@ if (!empty($conf->use_javascript_ajax)) { print '
'.$langs->trans("NewSizeAfterCropping").': - - - - - - +   +   +   +   +   +  
diff --git a/htdocs/core/tpl/admin_extrafields_view.tpl.php b/htdocs/core/tpl/admin_extrafields_view.tpl.php index 369f60ea201..da1d2d58558 100644 --- a/htdocs/core/tpl/admin_extrafields_view.tpl.php +++ b/htdocs/core/tpl/admin_extrafields_view.tpl.php @@ -38,7 +38,7 @@ $langs->load("modulebuilder"); '.$langs->trans("DefineHereComplementaryAttributes", $textobject).'
'."\n"; +print ''.$langs->trans("DefineHereComplementaryAttributes", empty($textobject) ? '': $textobject).'
'."\n"; print '
'; // Load $extrafields->attributes diff --git a/htdocs/core/tpl/card_presend.tpl.php b/htdocs/core/tpl/card_presend.tpl.php index 7b47c4676a6..c0e64a513ab 100644 --- a/htdocs/core/tpl/card_presend.tpl.php +++ b/htdocs/core/tpl/card_presend.tpl.php @@ -41,10 +41,10 @@ if ($action == 'presend') { $object->fetch_projet(); - if (!in_array($object->element, array('societe', 'user', 'member'))) { + $ref = dol_sanitizeFileName($object->ref); + if (!in_array($object->element, array('user', 'member'))) { // TODO get also the main_lastdoc field of $object. If not found, try to guess with following code - $ref = dol_sanitizeFileName($object->ref); include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; // Special case if ($object->element == 'invoice_supplier') { @@ -82,12 +82,15 @@ if ($action == 'presend') { // Build document if it not exists $forcebuilddoc = true; - if (in_array($object->element, array('societe', 'user', 'member'))) { + if (in_array($object->element, array('user', 'member'))) { $forcebuilddoc = false; } if ($object->element == 'invoice_supplier' && empty($conf->global->INVOICE_SUPPLIER_ADDON_PDF)) { $forcebuilddoc = false; } + if ($object->element == 'societe' && empty($conf->global->COMPANY_ADDON_PDF)) { + $forcebuilddoc = false; + } if ($forcebuilddoc) { // If there is no default value for supplier invoice, we do not generate file, even if modelpdf was set by a manual generation if ((!$file || !is_readable($file)) && method_exists($object, 'generateDocument')) { $result = $object->generateDocument(GETPOST('model') ? GETPOST('model') : $object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref); @@ -144,7 +147,8 @@ if ($action == 'presend') { $formmail->fromtype = 'special'; } - $formmail->trackid = $trackid; + $formmail->trackid = empty($trackid) ? '' : $trackid; + $formmail->inreplyto = empty($inreplyto) ? '' : $inreplyto; $formmail->withfrom = 1; // Fill list of recipient with email inside <>. @@ -194,7 +198,7 @@ if ($action == 'presend') { } $formmail->withto = $liste; - $formmail->withtofree = (GETPOSTISSET('sendto') ? (GETPOST('sendto', 'alphawithlgt') ? GETPOST('sendto', 'alphawithlgt') : '1') : '1'); + $formmail->withtofree = (GETPOST('sendto', 'alphawithlgt') ? GETPOST('sendto', 'alphawithlgt') : '1'); $formmail->withtocc = $liste; $formmail->withtoccc = getDolGlobalString('MAIN_EMAIL_USECCC'); $formmail->withtopic = $topicmail; diff --git a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php index aeafac07962..67d41199594 100644 --- a/htdocs/core/tpl/extrafields_list_print_fields.tpl.php +++ b/htdocs/core/tpl/extrafields_list_print_fields.tpl.php @@ -67,7 +67,10 @@ if (!empty($extrafieldsobjectkey) && !empty($extrafields->attributes[$extrafield // we keep position for the first line $totalarray['totalizable'][$key]['pos'] = $totalarray['nbfield']; } - if (is_numeric($obj->$tmpkey)) { + if (isset($obj->$tmpkey) && is_numeric($obj->$tmpkey)) { + if (!isset($totalarray['totalizable'][$key]['total'])) { + $totalarray['totalizable'][$key]['total'] = 0; + } $totalarray['totalizable'][$key]['total'] += $obj->$tmpkey; } } diff --git a/htdocs/core/tpl/extrafields_list_search_input.tpl.php b/htdocs/core/tpl/extrafields_list_search_input.tpl.php index aec66108d66..f57101b81e6 100644 --- a/htdocs/core/tpl/extrafields_list_search_input.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_input.tpl.php @@ -29,9 +29,9 @@ if (!empty($extrafieldsobjectkey)) { // $extrafieldsobject is the $object->table print '
service->enabled) || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') { // We show date field if required +if ((isModEnabled("service") || ($object->element == 'contrat')) && $dateSelector && GETPOST('type') != '0') { // We show date field if required print ''."\n"; if (!empty($conf->global->MAIN_VIEW_LINE_NUMBER)) { print ''; @@ -734,7 +735,7 @@ if (!empty($usemargins) && $user->rights->margins->creer) { $.post('/product/ajax/products.php?action=fetch', { 'id': $(this).val(), 'socid': socid; ?> }, function(data) { - console.log("Load unit price end, we got value "+data.price_ht); + console.log("Load unit price end, we got value ht="+data.price_ht+" ttc="+data.price_ttc+" pricebasetype="+data.pricebasetype); $('#date_start').removeAttr('type'); $('#date_end').removeAttr('type'); @@ -755,7 +756,11 @@ if (!empty($usemargins) && $user->rights->margins->creer) { jQuery('#date_end').removeClass('inputmandatory'); } - jQuery("#price_ht").val(data.price_ht); + if ( == 1 && data.pricebasetype == 'TTC') { + jQuery("#price_ttc").val(data.price_ttc); + } else { + jQuery("#price_ht").val(data.price_ht); + } global->PRODUIT_AUTOFILL_DESC) && $conf->global->PRODUIT_AUTOFILL_DESC == 1) { if (!empty($conf->global->MAIN_MULTILANGS) && !empty($conf->global->PRODUIT_TEXTS_IN_THIRDPARTY_LANGUAGE)) { ?> diff --git a/htdocs/core/tpl/objectline_edit.tpl.php b/htdocs/core/tpl/objectline_edit.tpl.php index c59949d5fb7..21e82d306a8 100644 --- a/htdocs/core/tpl/objectline_edit.tpl.php +++ b/htdocs/core/tpl/objectline_edit.tpl.php @@ -176,7 +176,7 @@ $coldisplay++; } // Show autofill date for recuring invoices - if (!empty($conf->service->enabled) && $line->product_type == 1 && ($line->element == 'facturedetrec' || $line->element == 'invoice_supplier_det_rec')) { + if (isModEnabled("service") && $line->product_type == 1 && ($line->element == 'facturedetrec' || $line->element == 'invoice_supplier_det_rec')) { if ($line->element == 'invoice_supplier_det_rec') { $line->date_start_fill = $line->date_start; $line->date_end_fill = $line->date_end; @@ -290,7 +290,7 @@ $coldisplay++; ?> -service->enabled) && $line->product_type == 1 && $dateSelector) { ?> +product_type == 1 && $dateSelector) { ?> global->MAIN_VIEW_LINE_NUMBER)) { ?> diff --git a/htdocs/core/tpl/objectline_title.tpl.php b/htdocs/core/tpl/objectline_title.tpl.php index 0071b37ab9b..762e9b4eefa 100644 --- a/htdocs/core/tpl/objectline_title.tpl.php +++ b/htdocs/core/tpl/objectline_title.tpl.php @@ -61,7 +61,7 @@ if ($this->element == 'supplier_proposal' || $this->element == 'order_supplier' } // VAT -print ''; // Price HT -print ''; +print ''; // Multicurrency if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf->currency) { @@ -93,7 +93,7 @@ if (!empty($conf->multicurrency->enabled) && $this->multicurrency_code != $conf- } if ($inputalsopricewithtax) { - print ''; + print ''; } // Qty @@ -105,7 +105,7 @@ if (!empty($conf->global->PRODUCT_USE_UNITS)) { } // Reduction short -print ' - + multicurrency->enabled) && $this->multicurrency_code != $conf->currency) { ?> - + - + - "; - print ""; print ""; @@ -353,7 +353,7 @@ if (($action == "create") || ($action == "edit")) { print '"; print ""; print ""; print ""; print "'; print ''; +print ''; print ''; print ''; //print ''; @@ -457,6 +454,7 @@ print ''; print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "t.rowid", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("CronLabel", $_SERVER["PHP_SELF"], "t.label", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("Prority", $_SERVER["PHP_SELF"], "t.priority", "", $param, '', $sortfield, $sortorder); +print_liste_field_titre("CronModule", $_SERVER["PHP_SELF"], "t.module_name", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("CronType", '', '', "", $param, '', $sortfield, $sortorder); print_liste_field_titre("CronFrequency", '', "", "", $param, '', $sortfield, $sortorder); //print_liste_field_titre("CronDtStart", $_SERVER["PHP_SELF"], "t.datestart", "", $param, 'align="center"', $sortfield, $sortorder); @@ -491,15 +489,21 @@ if ($num > 0) { } } + $reg = array(); + if (preg_match('/:(.*)$/', $obj->label, $reg)) { + $langs->load($reg[1]); + } + $object->id = $obj->rowid; $object->ref = $obj->rowid; - $object->label = $obj->label; + $object->label = preg_replace('/:.*$/', '', $obj->label); $object->status = $obj->status; $object->priority = $obj->priority; $object->processing = $obj->processing; $object->lastresult = $obj->lastresult; $object->datestart = $db->jdate($obj->datestart); $object->dateend = $db->jdate($obj->dateend); + $object->module_name = $obj->module_name; $datelastrun = $db->jdate($obj->datelastrun); $datelastresult = $db->jdate($obj->datelastresult); @@ -513,9 +517,9 @@ if ($num > 0) { // Label print ''; + // Module + print ''; + + // Class/Method print ''; @@ -606,9 +616,9 @@ if ($num > 0) { print ''; diff --git a/htdocs/datapolicy/admin/setupmail.php b/htdocs/datapolicy/admin/setupmail.php index 535c4383d0d..e2f562ee79b 100644 --- a/htdocs/datapolicy/admin/setupmail.php +++ b/htdocs/datapolicy/admin/setupmail.php @@ -63,7 +63,7 @@ if ($action == 'setvalue' && $user->admin) { $result = dolibarr_set_const($db, $sub, GETPOST($sub), 'chaine', 0, '', $conf->entity); $sub = "DATAPOLICIESREFUSE_".$l; $result = dolibarr_set_const($db, $sub, GETPOST($sub), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } if (!$error) { diff --git a/htdocs/datapolicy/class/actions_datapolicy.class.php b/htdocs/datapolicy/class/actions_datapolicy.class.php index 5a27b97b691..6b7e27c67aa 100644 --- a/htdocs/datapolicy/class/actions_datapolicy.class.php +++ b/htdocs/datapolicy/class/actions_datapolicy.class.php @@ -417,17 +417,19 @@ class ActionsDatapolicy } if (GETPOST('socid')) { + /* Removed due to awful harcoded values require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; $societe = new Societe($this->db); $societe->fetch(GETPOST('socid')); - if (!in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) && $societe->typent_id != 8) { + if (!empty($object->forme_juridique_code) && !in_array($object->forme_juridique_code, array(11, 12, 13, 15, 17, 18, 19, 35, 60, 200, 311, 312, 316, 401, 600, 700, 1005)) && $societe->typent_id != 8) { require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; $jsscript .= ''; } + */ } } elseif ($parameters['currentcontext'] == 'contactcard') { if (GETPOST('action') == 'create' || GETPOST('action') == 'edit') { diff --git a/htdocs/debugbar/class/DataCollector/DolibarrCollector.php b/htdocs/debugbar/class/DataCollector/DolibarrCollector.php index c69ebb9a121..3193fe26176 100644 --- a/htdocs/debugbar/class/DataCollector/DolibarrCollector.php +++ b/htdocs/debugbar/class/DataCollector/DolibarrCollector.php @@ -84,7 +84,7 @@ class DolibarrCollector extends DataCollector implements Renderable, AssetProvid protected function getMailInfo() { global $conf, $langs; - global $dolibarr_mailing_limit_sendbyweb; + global $dolibarr_mailing_limit_sendbyweb, $dolibarr_mailing_limit_sendbycli, $dolibarr_mailing_limit_sendbyday; $info = $langs->trans('Method').': '.getDolGlobalString("MAIN_MAIL_SENDMODE").'
'; $info .= $langs->trans('Server').': '.getDolGlobalString("MAIN_MAIL_SMTP_SERVER").'
'; @@ -94,6 +94,8 @@ class DolibarrCollector extends DataCollector implements Renderable, AssetProvid $info .= $langs->trans('TLS/STARTTLS').': '.getDolGlobalString("MAIN_MAIL_EMAIL_TLS").' / '.getDolGlobalString("MAIN_MAIL_EMAIL_STARTTLS").'
'; $info .= $langs->trans('MAIN_DISABLE_ALL_MAILS').': '.(empty($conf->global->MAIN_DISABLE_ALL_MAILS) ? $langs->trans('No') : $langs->trans('Yes')).'
'; $info .= 'dolibarr_mailing_limit_sendbyweb = '.$dolibarr_mailing_limit_sendbyweb.'
'; + $info .= 'dolibarr_mailing_limit_sendbycli = '.$dolibarr_mailing_limit_sendbycli.'
'; + $info .= 'dolibarr_mailing_limit_sendbyday = '.$dolibarr_mailing_limit_sendbyday.'
'; return $info; } diff --git a/htdocs/delivery/card.php b/htdocs/delivery/card.php index dba3d0de437..0b216df80a1 100644 --- a/htdocs/delivery/card.php +++ b/htdocs/delivery/card.php @@ -34,7 +34,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/sendings.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } if (!empty($conf->expedition_bon->enabled)) { @@ -142,10 +142,10 @@ if ($action == 'add') { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -312,7 +312,7 @@ if ($action == 'create') { // Create. Seems to no be used $objectsrc = new Commande($db); $objectsrc->fetch($expedition->origin_id); } - if ($typeobject == 'propal' && $expedition->origin_id > 0 && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $expedition->origin_id > 0 && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($expedition->origin_id); } @@ -409,7 +409,7 @@ if ($action == 'create') { // Create. Seems to no be used print "\n"; print ''; } - if ($typeobject == 'propal' && $expedition->origin_id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $expedition->origin_id && isModEnabled("propal")) { $propal = new Propal($db); $propal->fetch($expedition->origin_id); print ''; diff --git a/htdocs/delivery/class/delivery.class.php b/htdocs/delivery/class/delivery.class.php index 9edc080701b..9af06f87541 100644 --- a/htdocs/delivery/class/delivery.class.php +++ b/htdocs/delivery/class/delivery.class.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/commonincoterm.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/mouvementstock.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->commande->enabled)) { diff --git a/htdocs/document.php b/htdocs/document.php index a33708e3e77..65e5cce7e5f 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -120,7 +120,7 @@ if ($user->socid > 0) { // For some module part, dir may be privates if (in_array($modulepart, array('facture_paiement', 'unpaid'))) { - if (empty($user->rights->societe->client->voir) || $socid) { + if (!$user->hasRight('societe', 'client', 'voir') || $socid) { $original_file = 'private/'.$user->id.'/'.$original_file; // If user has no permission to see all, output dir is specific to user } } diff --git a/htdocs/don/admin/donation.php b/htdocs/don/admin/donation.php index c56effea73a..9a360f69882 100644 --- a/htdocs/don/admin/donation.php +++ b/htdocs/don/admin/donation.php @@ -310,7 +310,7 @@ print '\n"; print ''; print "\n"; -if (!empty($conf->societe->enabled)) { +if (isModEnabled("societe")) { print ''; print ''; // Company - if (!empty($conf->societe->enabled) && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { + if (isModEnabled("societe") && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { // Thirdparty if ($soc->id > 0) { print ''; @@ -591,7 +591,7 @@ if (!empty($id) && $action == 'edit') { print ""; print "\n"; - if (!empty($conf->societe->enabled) && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { + if (isModEnabled("societe") && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { $company = new Societe($db); print ''; - if (!empty($conf->societe->enabled) && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { + if (isModEnabled("societe") && !empty($conf->global->DONATION_USE_THIRDPARTIES)) { $company = new Societe($db); print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/don/payment/payment.php b/htdocs/don/payment/payment.php index 6cc37303346..092f5114141 100644 --- a/htdocs/don/payment/payment.php +++ b/htdocs/don/payment/payment.php @@ -66,7 +66,7 @@ if ($action == 'add_payment') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $error++; } - if (!empty($conf->banque->enabled) && !(GETPOST("accountid", 'int') > 0)) { + if (isModEnabled("banque") && !(GETPOST("accountid", 'int') > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); $error++; } @@ -111,7 +111,7 @@ if ($action == 'add_payment') { if (!$error) { $result = $payment->addPaymentToBank($user, 'payment_donation', '(DonationPayment)', GETPOST('accountid', 'int'), '', ''); - if (!$result > 0) { + if (!($result > 0)) { $errmsg = $payment->error; setEventMessages($errmsg, null, 'errors'); $error++; diff --git a/htdocs/ecm/dir_add_card.php b/htdocs/ecm/dir_add_card.php index d7de6acc727..6f80a68dc35 100644 --- a/htdocs/ecm/dir_add_card.php +++ b/htdocs/ecm/dir_add_card.php @@ -85,7 +85,7 @@ if (!$sortfield) { $ecmdir = new EcmDirectory($db); if (!empty($section)) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } @@ -230,7 +230,7 @@ if ($action == 'create') { print '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).'  '; $tmpkey = preg_replace('/'.$search_options_pattern.'/', '', $key); - if (in_array($typeofextrafield, array('varchar', 'int', 'double')) && empty($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key])) { + if (in_array($typeofextrafield, array('varchar', 'mail', 'ip', 'url', 'int', 'double')) && empty($extrafields->attributes[$extrafieldsobjectkey]['computed'][$key])) { $searchclass = ''; - if (in_array($typeofextrafield, array('varchar'))) { + if (in_array($typeofextrafield, array('varchar', 'mail', 'ip', 'url'))) { $searchclass = 'searchstring'; } if (in_array($typeofextrafield, array('int', 'double'))) { diff --git a/htdocs/core/tpl/extrafields_list_search_title.tpl.php b/htdocs/core/tpl/extrafields_list_search_title.tpl.php index 53a12e2d73d..8d24c81c2e4 100644 --- a/htdocs/core/tpl/extrafields_list_search_title.tpl.php +++ b/htdocs/core/tpl/extrafields_list_search_title.tpl.php @@ -36,7 +36,7 @@ if (!empty($extrafieldsobjectkey)) { // $extrafieldsobject is the $object->table $tooltip = empty($extrafields->attributes[$extrafieldsobjectkey]['help'][$key]) ? '' : $extrafields->attributes[$extrafieldsobjectkey]['help'][$key]; - print getTitleFieldOfList($extrafields->attributes[$extrafieldsobjectkey]['label'][$key], 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, ($cssclass ? 'class="'.$cssclass.'" data-titlekey="'.$key.'"' : 'data-titlekey="'.$key.'"'), $sortfield, $sortorder, '', $disablesortlink, $tooltip)."\n"; + print getTitleFieldOfList($extrafields->attributes[$extrafieldsobjectkey]['label'][$key], 0, $_SERVER["PHP_SELF"], $sortonfield, "", $param, 'data-titlekey="'.$key.'"', $sortfield, $sortorder, $cssclass.' ', $disablesortlink, $tooltip)."\n"; if (isset($totalarray) && isset($totalarray['nbfield'])) { $totalarray['nbfield']++; } diff --git a/htdocs/core/tpl/filemanager.tpl.php b/htdocs/core/tpl/filemanager.tpl.php index ddcb23da891..2c4b2f5dea8 100644 --- a/htdocs/core/tpl/filemanager.tpl.php +++ b/htdocs/core/tpl/filemanager.tpl.php @@ -54,7 +54,9 @@ if ($module == 'medias') { $showroot = 1; } - +if (!isset($section)) { + $section = 0; +} // Confirm remove file (for non javascript users) if (($action == 'delete' || $action == 'file_manager_delete') && empty($conf->use_javascript_ajax)) { @@ -106,12 +108,26 @@ $('#acreatedir').on('click', function() { try{ section_dir = $('.directory.expanded')[$('.directory.expanded').length-1].children[0].rel; section = $('.directory.expanded')[$('.directory.expanded').length-1].children[0].id.split('_')[2]; + catParent = "; +if ($module == 'ecm') { + print "section;"; +} else { + print "section_dir.substring(0, section_dir.length - 1);"; +} +print " } catch{ section_dir = '/'; section = 0; + catParent = "; +if ($module == 'ecm') { + print "section;"; +} else { + print "section_dir;"; +} +print " } console.log('We click to create a new directory, we set current section_dir='+section_dir+' into href url of button acreatedir'); - $('#acreatedir').attr('href', $('#acreatedir').attr('href')+'§ion_dir='+encodeURI(section_dir)+'§ion='+encodeURI(section)); + $('#acreatedir').attr('href', $('#acreatedir').attr('href')+'%26section_dir%3D'+encodeURI(section_dir)+'%26section%3D'+encodeURI(section)+'§ion_dir='+encodeURI(section_dir)+'§ion='+encodeURI(section)+'&catParent='+encodeURI(catParent)); console.log($('#acreatedir').attr('href')); }); $('#agenerateimgwebp').on('click', function() { diff --git a/htdocs/core/tpl/list_print_total.tpl.php b/htdocs/core/tpl/list_print_total.tpl.php index 8d84228e2ec..288f3b8f72e 100644 --- a/htdocs/core/tpl/list_print_total.tpl.php +++ b/htdocs/core/tpl/list_print_total.tpl.php @@ -3,7 +3,7 @@ if (!empty($totalarray['totalizable']) && is_array($totalarray['totalizable'])) { foreach ($totalarray['totalizable'] as $keytotalizable => $valtotalizable) { $totalarray['pos'][$valtotalizable['pos']] = $keytotalizable; - $totalarray['val'][$keytotalizable] = $valtotalizable['total']; + $totalarray['val'][$keytotalizable] = isset($valtotalizable['total']) ? $valtotalizable['total'] : 0; } } // Show total line diff --git a/htdocs/core/tpl/objectline_create.tpl.php b/htdocs/core/tpl/objectline_create.tpl.php index 2956e71178f..cb38d7a3546 100644 --- a/htdocs/core/tpl/objectline_create.tpl.php +++ b/htdocs/core/tpl/objectline_create.tpl.php @@ -48,6 +48,7 @@ if (!isset($dateSelector)) { global $dateSelector; // Take global var only if not already defined into function calling (for example formAddObjectLine) } global $forceall, $forcetoshowtitlelines, $senderissupplier, $inputalsopricewithtax; + if (!isset($dateSelector)) { $dateSelector = 1; // For backward compatibility } elseif (empty($dateSelector)) { @@ -192,7 +193,7 @@ if ($nolinesbefore) { // Free line echo ''; // Show radio free line - if ($forceall >= 0 && (!empty($conf->product->enabled) || !empty($conf->service->enabled))) { + if ($forceall >= 0 && (isModEnabled("product") || isModEnabled("service"))) { echo ''; } // Predefined product/service - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { if ($forceall >= 0 && $freelines) { echo '
'; } else { @@ -229,17 +230,17 @@ if ($nolinesbefore) { $labelforradio = ''; if (empty($conf->dol_optimize_smallscreen)) { if (empty($senderissupplier)) { - if (!empty($conf->product->enabled) && empty($conf->service->enabled)) { + if (isModEnabled("product") && empty($conf->service->enabled)) { $labelforradio = $langs->trans('PredefinedProductsToSell'); - } elseif ((empty($conf->product->enabled) && !empty($conf->service->enabled)) || ($object->element == 'contrat' && empty($conf->global->CONTRACT_SUPPORT_PRODUCTS))) { + } elseif ((empty($conf->product->enabled) && isModEnabled("service")) || ($object->element == 'contrat' && empty($conf->global->CONTRACT_SUPPORT_PRODUCTS))) { $labelforradio = $langs->trans('PredefinedServicesToSell'); } else { $labelforradio = $langs->trans('PredefinedProductsAndServicesToSell'); } } else { - if (!empty($conf->product->enabled) && empty($conf->service->enabled)) { + if (isModEnabled("product") && empty($conf->service->enabled)) { $labelforradio = $langs->trans('PredefinedProductsToPurchase'); - } elseif (empty($conf->product->enabled) && !empty($conf->service->enabled)) { + } elseif (empty($conf->product->enabled) && isModEnabled("service")) { $labelforradio = $langs->trans('PredefinedServicesToPurchase'); } else { $labelforradio = $langs->trans('PredefinedProductsAndServicesToPurchase'); @@ -335,7 +336,7 @@ if ($nolinesbefore) { print $hookmanager->resPrint; } } - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { echo '
'; if (!empty($conf->variants->enabled)) { echo '
'; @@ -355,7 +356,7 @@ if ($nolinesbefore) { $doleditor = new DolEditor('dp_desc', GETPOST('dp_desc', 'restricthtml'), '', (empty($conf->global->MAIN_DOLEDITOR_HEIGHT) ? 100 : $conf->global->MAIN_DOLEDITOR_HEIGHT), $toolbarname, '', false, true, $enabled, $nbrows, '98%'); $doleditor->Create(); // Show autofill date for recurring invoices - if (!empty($conf->service->enabled) && ($object->element == 'facturerec' || $object->element == 'invoice_supplier_rec')) { + if (isModEnabled("service") && ($object->element == 'facturerec' || $object->element == 'invoice_supplier_rec')) { echo '

'; echo $langs->trans('AutoFillDateFrom').' '; if (!empty($conf->global->INVOICE_REC_DATE_TO_YES)) { @@ -445,7 +446,7 @@ if ($nolinesbefore) { ?>
- product->enabled) || !empty($conf->service->enabled)) { ?> + @@ -470,7 +471,7 @@ if ($nolinesbefore) {
- product->enabled) || !empty($conf->service->enabled)) { ?> + @@ -330,7 +330,7 @@ $coldisplay++;
'; +print ''; if (!empty($conf->global->FACTURE_LOCAL_TAX1_OPTION) || !empty($conf->global->FACTURE_LOCAL_TAX2_OPTION)) { print $langs->trans('Taxes'); } else { @@ -85,7 +85,7 @@ if (in_array($object->element, array('propal', 'commande', 'facture')) && $objec print ''.$langs->trans('PriceUHT').''.$langs->trans('PriceUHT').''.$langs->trans('PriceUTTC').''.$langs->trans('PriceUTTC').''; +print ''; print $langs->trans('ReductionShort'); if (in_array($object->element, array('propal', 'commande', 'facture')) && $object->status == $object::STATUS_DRAFT) { diff --git a/htdocs/core/tpl/objectline_view.tpl.php b/htdocs/core/tpl/objectline_view.tpl.php index c2d81b81eb5..c93e0d5c4cd 100644 --- a/htdocs/core/tpl/objectline_view.tpl.php +++ b/htdocs/core/tpl/objectline_view.tpl.php @@ -280,17 +280,17 @@ print vatrate($positiverates.($line->vat_src_code ? ' ('.$line->vat_src_code.')' //print vatrate($line->tva_tx.($line->vat_src_code?(' ('.$line->vat_src_code.')'):''), '%', $line->info_bits); ?>subprice); ?>subprice); ?> multicurrency_subprice); ?>multicurrency_subprice); ?> pu_ttc) ? price($sign * $line->pu_ttc) : price($sign * $line->subprice)); ?>pu_ttc) ? price($sign * $line->pu_ttc) : price($sign * $line->subprice)); ?> + info_bits & 2) != 2) && $line->special_code != 3) { // I comment this because it shows info even when not required diff --git a/htdocs/core/tpl/onlinepaymentlinks.tpl.php b/htdocs/core/tpl/onlinepaymentlinks.tpl.php index 001ada1de0f..657d32a0a36 100644 --- a/htdocs/core/tpl/onlinepaymentlinks.tpl.php +++ b/htdocs/core/tpl/onlinepaymentlinks.tpl.php @@ -43,10 +43,10 @@ if (!empty($conf->commande->enabled)) { print ''; print ''; if (GETPOST('generate_order_ref', 'alpha')) { - print '
-> '; $url = getOnlinePaymentUrl(0, 'order', GETPOST('generate_order_ref', 'alpha')); + print ''."\n"; } print ''; } @@ -65,10 +65,10 @@ if (isModEnabled('facture')) { print ''; print ''; if (GETPOST('generate_invoice_ref', 'alpha')) { - print '
-> '; $url = getOnlinePaymentUrl(0, 'invoice', GETPOST('generate_invoice_ref', 'alpha')); + print ''."\n"; } print ''; } @@ -87,10 +87,10 @@ if (!empty($conf->contrat->enabled)) { print ''; print ''; if (GETPOST('generate_contract_ref')) { - print '
-> '; $url = getOnlinePaymentUrl(0, 'contractline', GETPOST('generate_contract_ref', 'alpha')); + print ''."\n"; } print ''; } @@ -109,10 +109,10 @@ if (!empty($conf->adherent->enabled)) { print ''; print ''; if (GETPOST('generate_member_ref')) { - print '
-> '; $url = getOnlinePaymentUrl(0, 'membersubscription', GETPOST('generate_member_ref', 'alpha')); + print ''."\n"; } print ''; } @@ -131,31 +131,21 @@ if (!empty($conf->don->enabled)) { print ''; print ''; if (GETPOST('generate_donation_ref')) { - print '
-> '; + print ''."\n"; } print ''; } print '
'; } -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} +$constname = 'PAYMENT_SECURITY_TOKEN'; + +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword($constname); print info_admin($langs->trans("YouCanAddTagOnUrl")); diff --git a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php index 8bd1e0d647d..9a8414c7a69 100644 --- a/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php +++ b/htdocs/core/triggers/interface_20_modWorkflow_WorkflowManager.class.php @@ -72,19 +72,25 @@ class InterfaceWorkflowManager extends DolibarrTriggers if ($action == 'PROPAL_CLOSE_SIGNED') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); if (!empty($conf->commande->enabled) && !empty($conf->global->WORKFLOW_PROPAL_AUTOCREATE_ORDER)) { - include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; - $newobject = new Commande($this->db); + $object->fetchObjectLinked(); + if (!empty($object->linkedObjectsIds['commande'])) { + setEventMessages($langs->trans("OrderExists"), null, 'warnings'); + return $ret; + } else { + include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; + $newobject = new Commande($this->db); - $newobject->context['createfrompropal'] = 'createfrompropal'; - $newobject->context['origin'] = $object->element; - $newobject->context['origin_id'] = $object->id; + $newobject->context['createfrompropal'] = 'createfrompropal'; + $newobject->context['origin'] = $object->element; + $newobject->context['origin_id'] = $object->id; - $ret = $newobject->createFromProposal($object, $user); - if ($ret < 0) { - $this->error = $newobject->error; - $this->errors[] = $newobject->error; + $ret = $newobject->createFromProposal($object, $user); + if ($ret < 0) { + $this->error = $newobject->error; + $this->errors[] = $newobject->error; + } + return $ret; } - return $ret; } } @@ -111,7 +117,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers // Order classify billed proposal if ($action == 'ORDER_CLASSIFY_BILLED') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL)) { + if (isModEnabled("propal") && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_ORDER_CLASSIFY_BILLED_PROPAL)) { $object->fetchObjectLinked('', 'propal', $object->id, $object->element); if (!empty($object->linkedObjects)) { $totalonlinkedelements = 0; @@ -155,7 +161,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers } // Second classify billed the proposal. - if (!empty($conf->propal->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL)) { + if (isModEnabled("propal") && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_INVOICE_CLASSIFY_BILLED_PROPAL)) { $object->fetchObjectLinked('', 'propal', $object->id, $object->element); if (!empty($object->linkedObjects)) { $totalonlinkedelements = 0; @@ -173,7 +179,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers } } - if (!empty($conf->expedition->enabled) && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE)) { + if (isModEnabled("expedition") && !empty($conf->workflow->enabled) && !empty($conf->global->WORKFLOW_SHIPPING_CLASSIFY_CLOSED_INVOICE)) { /** @var Facture $object */ $object->fetchObjectLinked('', 'shipping', $object->id, $object->element); @@ -194,7 +200,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers // Firstly, we set to purchase order to "Billed" if WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER is set. // After we will set proposals - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && !empty($conf->global->WORKFLOW_INVOICE_AMOUNT_CLASSIFY_BILLED_SUPPLIER_ORDER)) { $object->fetchObjectLinked('', 'order_supplier', $object->id, $object->element); if (!empty($object->linkedObjects)) { $totalonlinkedelements = 0; @@ -238,7 +244,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers } // Then set reception to "Billed" if WORKFLOW_BILL_ON_RECEPTION is set - if (!empty($conf->reception->enabled) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) { + if (isModEnabled("reception") && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) { $object->fetchObjectLinked('', 'reception', $object->id, $object->element); if (!empty($object->linkedObjects)) { $totalonlinkedelements = 0; @@ -290,7 +296,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers if (($action == 'SHIPPING_VALIDATE') || ($action == 'SHIPPING_CLOSED')) { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if (!empty($conf->commande->enabled) && !empty($conf->expedition->enabled) && !empty($conf->workflow->enabled) && + if (!empty($conf->commande->enabled) && isModEnabled("expedition") && !empty($conf->workflow->enabled) && ( (!empty($conf->global->WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING) && ($action == 'SHIPPING_VALIDATE')) || (!empty($conf->global->WORKFLOW_ORDER_CLASSIFY_SHIPPED_SHIPPING_CLOSED) && ($action == 'SHIPPING_CLOSED')) @@ -359,7 +365,7 @@ class InterfaceWorkflowManager extends DolibarrTriggers if (($action == 'RECEPTION_VALIDATE') || ($action == 'RECEPTION_CLOSED')) { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); - if ((!empty($conf->fournisseur->enabled) || !empty($conf->supplier_order->enabled)) && !empty($conf->reception->enabled) && !empty($conf->workflow->enabled) && + if ((isModEnabled("fournisseur") || isModEnabled("supplier_order")) && isModEnabled("reception") && !empty($conf->workflow->enabled) && ( (!empty($conf->global->WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION) && ($action == 'RECEPTION_VALIDATE')) || (!empty($conf->global->WORKFLOW_ORDER_CLASSIFY_RECEIVED_RECEPTION_CLOSED) && ($action == 'RECEPTION_CLOSED')) diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php index 0e018514353..4e926050f24 100644 --- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php +++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php @@ -798,6 +798,18 @@ class InterfaceActionsAuto extends DolibarrTriggers $object->actionmsg .= "\n".$langs->transnoentities("Member").': '.$object->getFullName($langs); $object->actionmsg .= "\n".$langs->transnoentities("Type").': '.$object->type; + $object->sendtoid = 0; + } elseif ($action == 'MEMBER_EXCLUDE') { + // Load translation files required by the page + $langs->loadLangs(array("agenda", "other", "members")); + + if (empty($object->actionmsg2)) { + $object->actionmsg2 = $langs->transnoentities("MemberExcludedInDolibarr", $object->getFullName($langs)); + } + $object->actionmsg = $langs->transnoentities("MemberExcludedInDolibarr", $object->getFullName($langs)); + $object->actionmsg .= "\n".$langs->transnoentities("Member").': '.$object->getFullName($langs); + $object->actionmsg .= "\n".$langs->transnoentities("Type").': '.$object->type; + $object->sendtoid = 0; } elseif ($action == 'PROJECT_CREATE') { // Projects diff --git a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php index 6e4f8cb1563..b4d32860c82 100644 --- a/htdocs/core/triggers/interface_50_modNotification_Notification.class.php +++ b/htdocs/core/triggers/interface_50_modNotification_Notification.class.php @@ -90,7 +90,7 @@ class InterfaceNotification extends DolibarrTriggers */ public function getListOfManagedEvents() { - global $conf; + global $conf, $action; global $hookmanager; @@ -100,6 +100,8 @@ class InterfaceNotification extends DolibarrTriggers } $hookmanager->initHooks(array('notification')); + $parameters = array(); + $object = new stdClass(); $reshook = $hookmanager->executeHooks('notifsupported', $parameters, $object, $action); if (empty($reshook)) { if (!empty($hookmanager->resArray['arrayofnotifsupported'])) { diff --git a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php index 298ad489764..87f707081bb 100644 --- a/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php +++ b/htdocs/core/triggers/interface_50_modTicket_TicketEmail.class.php @@ -387,10 +387,12 @@ class InterfaceTicketEmail extends DolibarrTriggers $trackid = 'tic'.$object->id; + $old_MAIN_MAIL_AUTOCOPY_TO = getDolGlobalString('MAIN_MAIL_AUTOCOPY_TO'); + if (!empty($conf->global->TICKET_DISABLE_MAIL_AUTOCOPY_TO)) { - $old_MAIN_MAIL_AUTOCOPY_TO = $conf->global->MAIN_MAIL_AUTOCOPY_TO; $conf->global->MAIN_MAIL_AUTOCOPY_TO = ''; } + include_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; $mailfile = new CMailFile($subject, $sendto, $from, $message_customer, $filepath, $mimetype, $filename, '', '', 0, -1, '', '', $trackid, '', 'ticket'); if ($mailfile->error) { diff --git a/htdocs/core/website.inc.php b/htdocs/core/website.inc.php index 8205696751b..3bbfe225bee 100644 --- a/htdocs/core/website.inc.php +++ b/htdocs/core/website.inc.php @@ -82,10 +82,82 @@ if ($pageid > 0) { } if (!defined('USEDOLIBARRSERVER') && !defined('USEDOLIBARREDITOR')) { + // Security options + + // X-Content-Type-Options header("X-Content-Type-Options: nosniff"); + + // X-Frame-Options if (empty($websitepage->allowed_in_frames) && empty($conf->global->WEBSITE_ALLOW_FRAMES_ON_ALL_PAGES)) { header("X-Frame-Options: SAMEORIGIN"); } + + // X-XSS-Protection + //header("X-XSS-Protection: 1"); // XSS filtering protection of some browsers (note: use of Content-Security-Policy is more efficient). Disabled as deprecated. + + // Content-Security-Policy + if (!defined('WEBSITE_MAIN_SECURITY_FORCECSP')) { + // The constant WEBSITE_MAIN_SECURITY_FORCECSP should never be defined by page, but the variable used just after may be + + // A default security policy that keep usage of js external component like ckeditor, stripe, google, working + // $contentsecuritypolicy = "font-src *; img-src *; style-src * 'unsafe-inline' 'unsafe-eval'; default-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; script-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; frame-src 'self' *.stripe.com; connect-src 'self';"; + $contentsecuritypolicy = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCECSP'); + + if (!is_object($hookmanager)) { + $hookmanager = new HookManager($db); + } + $hookmanager->initHooks(array("main")); + + $parameters = array('contentsecuritypolicy'=>$contentsecuritypolicy); + $result = $hookmanager->executeHooks('setContentSecurityPolicy', $parameters); // Note that $action and $object may have been modified by some hooks + if ($result > 0) { + $contentsecuritypolicy = $hookmanager->resPrint; // Replace CSP + } else { + $contentsecuritypolicy .= $hookmanager->resPrint; // Concat CSP + } + + if (!empty($contentsecuritypolicy)) { + // For example: to restrict to only local resources, except for css (cloudflare+google), and js (transifex + google tags) and object/iframe (youtube) + // default-src 'self'; style-src: https://cdnjs.cloudflare.com https://fonts.googleapis.com; script-src: https://cdn.transifex.com https://www.googletagmanager.com; object-src https://youtube.com; frame-src https://youtube.com; img-src: *; + // For example, to restrict everything to itself except img that can be on other servers: + // default-src 'self'; img-src *; + // Pre-existing site that uses too much js code to fix but wants to ensure resources are loaded only over https and disable plugins: + // default-src https: 'unsafe-inline' 'unsafe-eval'; object-src 'none' + header("Content-Security-Policy: ".$contentsecuritypolicy); + } + } + + // Referrer-Policy + if (!defined('WEBSITE_MAIN_SECURITY_FORCERP')) { + // The constant WEBSITE_MAIN_SECURITY_FORCERP should never be defined by page, but the variable used just after may be + + // For public web sites, we use the same default value than "strict-origin-when-cross-origin" + $referrerpolicy = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCERP', "strict-origin-when-cross-origin"); + + header("Referrer-Policy: ".$referrerpolicy); + } + + // Strict-Transport-Security + if (!defined('WEBSITE_MAIN_SECURITY_FORCESTS')) { + // The constant WEBSITE_MAIN_SECURITY_FORCESTS should never be defined by page, but the variable used just after may be + + // Example: "max-age=31536000; includeSubDomains" + $sts = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCESTS'); + if (!empty($sts)) { + header("Strict-Transport-Security: ".$sts); + } + } + + // Permissions-Policy (old name was Feature-Policy) + if (!defined('WEBSITE_MAIN_SECURITY_FORCEPP')) { + // The constant WEBSITE_MAIN_SECURITY_FORCEPP should never be defined by page, but the variable used just after may be + + // Example: "camera: 'none'; microphone: 'none';" + $pp = getDolGlobalString('WEBSITE_MAIN_SECURITY_FORCEPP'); + if (!empty($pp)) { + header("Permissions-Policy: ".$pp); + } + } } // A lang was forced, so we change weblangs init diff --git a/htdocs/cron/admin/cron.php b/htdocs/cron/admin/cron.php index 28078242dc6..d214c112aa3 100644 --- a/htdocs/cron/admin/cron.php +++ b/htdocs/cron/admin/cron.php @@ -129,21 +129,11 @@ dol_print_cron_urls(); print '
'; -if (!empty($conf->use_javascript_ajax)) { - print "\n".''; -} +$constname = 'CRON_KEY'; + +// Add button to autosuggest a key +include_once DOL_DOCUMENT_ROOT.'/core/lib/security2.lib.php'; +print dolJSToSetRandomPassword($constname); llxFooter(); $db->close(); diff --git a/htdocs/cron/card.php b/htdocs/cron/card.php index 6fd71669d9c..ed95546cd67 100644 --- a/htdocs/cron/card.php +++ b/htdocs/cron/card.php @@ -337,7 +337,7 @@ if (($action == "create") || ($action == "edit")) { print '
'; print $langs->trans('CronLabel')."label."\" /> "; + print ' '; print ""; print "
'; print $langs->trans('CronModule').""; - print "module_name."\" /> "; + print ' '; print ""; print $form->textwithpicto('', $langs->trans("CronModuleHelp"), 1, 'help'); @@ -362,7 +362,7 @@ if (($action == "create") || ($action == "edit")) { print '
'; print $langs->trans('CronClassFile').""; - print ' '; + print ' '; print ""; print $form->textwithpicto('', $langs->trans("CronClassFileHelp"), 1, 'help'); @@ -371,7 +371,7 @@ if (($action == "create") || ($action == "edit")) { print '
'; print $langs->trans('CronObject').""; - print "objectname."\" /> "; + print ' '; print ""; print $form->textwithpicto('', $langs->trans("CronObjectHelp"), 1, 'help'); @@ -380,7 +380,7 @@ if (($action == "create") || ($action == "edit")) { print '
'; print $langs->trans('CronMethod').""; - print ' '; + print ' '; print ""; print $form->textwithpicto('', $langs->trans("CronMethodHelp"), 1, 'help'); @@ -545,8 +545,15 @@ if (($action == "create") || ($action == "edit")) { $linkback = ''.$langs->trans("BackToList").''; + $reg = array(); + if (preg_match('/:(.*)$/', $object->label, $reg)) { + $langs->load($reg[1]); + } + + $labeltoshow = preg_replace('/:.*$/', '', $object->label); + $morehtmlref = '
'; - $morehtmlref .= $langs->trans($object->label); + $morehtmlref .= $langs->trans($labeltoshow); $morehtmlref .= '
'; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', $morehtmlref); diff --git a/htdocs/cron/class/cronjob.class.php b/htdocs/cron/class/cronjob.class.php index 744ac1834aa..714622e8014 100644 --- a/htdocs/cron/class/cronjob.class.php +++ b/htdocs/cron/class/cronjob.class.php @@ -137,6 +137,11 @@ class Cronjob extends CommonObject */ public $processing; + /** + * @var int The job current PID + */ + public $pid; + /** * @var int ID */ @@ -422,6 +427,7 @@ class Cronjob extends CommonObject $sql .= " t.frequency,"; $sql .= " t.status,"; $sql .= " t.processing,"; + $sql .= " t.pid,"; $sql .= " t.fk_user_author,"; $sql .= " t.fk_user_mod,"; $sql .= " t.note as note_private,"; @@ -470,6 +476,7 @@ class Cronjob extends CommonObject $this->frequency = $obj->frequency; $this->status = $obj->status; $this->processing = $obj->processing; + $this->pid = $obj->pid; $this->fk_user_author = $obj->fk_user_author; $this->fk_user_mod = $obj->fk_user_mod; $this->note_private = $obj->note_private; @@ -487,9 +494,9 @@ class Cronjob extends CommonObject } } - // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** - * Load object in memory from the database + * Load list of cron jobs in a memory array from the database + * @TODO Use object CronJob and not CronJobLine. * * @param string $sortorder sort order * @param string $sortfield sort field @@ -500,11 +507,8 @@ class Cronjob extends CommonObject * @param int $processing Processing or not * @return int <0 if KO, >0 if OK */ - public function fetch_all($sortorder = 'DESC', $sortfield = 't.rowid', $limit = 0, $offset = 0, $status = 1, $filter = '', $processing = -1) + public function fetchAll($sortorder = 'DESC', $sortfield = 't.rowid', $limit = 0, $offset = 0, $status = 1, $filter = '', $processing = -1) { - // phpcs:enable - global $langs; - $this->lines = array(); $sql = "SELECT"; @@ -533,6 +537,7 @@ class Cronjob extends CommonObject $sql .= " t.frequency,"; $sql .= " t.status,"; $sql .= " t.processing,"; + $sql .= " t.pid,"; $sql .= " t.fk_user_author,"; $sql .= " t.fk_user_mod,"; $sql .= " t.note as note_private,"; @@ -609,6 +614,7 @@ class Cronjob extends CommonObject $line->frequency = $obj->frequency; $line->status = $obj->status; $line->processing = $obj->processing; + $line->pid = $obj->pid; $line->fk_user_author = $obj->fk_user_author; $line->fk_user_mod = $obj->fk_user_mod; $line->note_private = $obj->note_private; @@ -711,6 +717,10 @@ class Cronjob extends CommonObject $this->processing = 0; } + if (empty($this->pid)) { + $this->pid = null; + } + // Check parameters // Put here code to add a control on parameters values if (dol_strlen($this->datenextrun) == 0) { @@ -776,6 +786,7 @@ class Cronjob extends CommonObject $sql .= " frequency=".(isset($this->frequency) ? $this->frequency : "null").","; $sql .= " status=".(isset($this->status) ? $this->status : "null").","; $sql .= " processing=".((isset($this->processing) && $this->processing > 0) ? $this->processing : "0").","; + $sql .= " pid=".(isset($this->pid) ? $this->pid : "null").","; $sql .= " fk_user_mod=".$user->id.","; $sql .= " note=".(isset($this->note_private) ? "'".$this->db->escape($this->note_private)."'" : "null").","; $sql .= " nbrun=".((isset($this->nbrun) && $this->nbrun > 0) ? $this->nbrun : "null").","; @@ -928,6 +939,7 @@ class Cronjob extends CommonObject $this->frequency = ''; $this->status = 0; $this->processing = 0; + $this->pid = null; $this->fk_user_author = 0; $this->fk_user_mod = 0; $this->note_private = ''; @@ -1128,6 +1140,7 @@ class Cronjob extends CommonObject $this->lastoutput = ''; $this->lastresult = ''; $this->processing = 1; // To know job was started + $this->pid = dol_getmypid(); $this->nbrun = $this->nbrun + 1; $result = $this->update($user); // This include begin/commit if ($result < 0) { @@ -1319,6 +1332,7 @@ class Cronjob extends CommonObject $this->datelastresult = dol_now(); $this->processing = 0; + $this->pid = null; $result = $this->update($user); // This include begin/commit if ($result < 0) { dol_syslog(get_class($this)."::run_jobs ".$this->error, LOG_ERR); @@ -1471,6 +1485,8 @@ class Cronjobline */ public $id; + public $entity; + /** * @var string Ref */ diff --git a/htdocs/cron/list.php b/htdocs/cron/list.php index e93434f725a..2732e41dc14 100644 --- a/htdocs/cron/list.php +++ b/htdocs/cron/list.php @@ -283,12 +283,8 @@ if (is_array($filter) && count($filter) > 0) { $sql .= " AND ".$key." LIKE '%".$db->escape($value)."%'"; } } -$sqlwhere = array(); if (!empty($search_module_name)) { - $sqlwhere[] = "(t.module_name = '".$db->escape($search_module_name)."')"; -} -if (count($sqlwhere) > 0) { - $sql .= " WHERE ".implode(' AND ', $sqlwhere); + $sql .= natural_search("t.module_name", $search_module_name); } // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; @@ -435,6 +431,7 @@ print '
'; print ''; print '    
'; - if (!empty($obj->label)) { - $object->ref = $langs->trans($obj->label); - print ''.$object->getNomUrl(0, '', 1).''; + if (!empty($object->label)) { + $object->ref = $langs->trans($object->label); + print ''.$object->getNomUrl(0, '', 1).''; $object->ref = $obj->rowid; } else { //print $langs->trans('CronNone'); @@ -524,9 +528,15 @@ if ($num > 0) { // Priority print ''; - print $object->priority; + print dol_escape_htmltag($object->priority); print ''; + print dol_escape_htmltag($object->module_name); + print ''; if ($obj->jobtype == 'method') { $text = $langs->trans("CronClass"); @@ -576,12 +586,12 @@ if ($num > 0) { print ''; if (!empty($obj->nbrun)) { - print $obj->nbrun; + print dol_escape_htmltag($obj->nbrun); } else { print '0'; } if (!empty($obj->maxrun)) { - print ' / '.$obj->maxrun.''; + print ' / '.dol_escape_htmltag($obj->maxrun).''; } print ''; if ($obj->lastresult != '') { if (empty($obj->lastresult)) { - print $obj->lastresult; + print $obj->lastresult; // Print '0' } else { - print ''.dol_trunc($obj->lastresult).''; + print ''.dol_escape_htmltag(dol_trunc($obj->lastresult)).''; } } print '
'.$langs->trans("RefProposal").''.$langs->trans("Value")."
'; print $langs->trans("DonationUseThirdparties"); diff --git a/htdocs/don/card.php b/htdocs/don/card.php index 30a3ec24c6c..c867418cfbb 100644 --- a/htdocs/don/card.php +++ b/htdocs/don/card.php @@ -44,7 +44,7 @@ if (!empty($conf->project->enabled)) { } require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; -$langs->loadLangs(array("bills", "companies", "donations", "users")); +$langs->loadLangs(array('bills', 'companies', 'donations', 'users')); $id = GETPOST('rowid') ?GETPOST('rowid', 'int') : GETPOST('id', 'int'); $action = GETPOST('action', 'aZ09'); @@ -119,10 +119,10 @@ if (empty($reshook)) { if (method_exists($object, 'generateDocument')) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -211,7 +211,7 @@ if (empty($reshook)) { $error = 0; - if (!empty($conf->societe->enabled) && !empty($conf->global->DONATION_USE_THIRDPARTIES) && !(GETPOST("socid", 'int') > 0)) { + if (isModEnabled("societe") && !empty($conf->global->DONATION_USE_THIRDPARTIES) && !(GETPOST("socid", 'int') > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("ThirdParty")), null, 'errors'); $action = "create"; $error++; @@ -351,8 +351,8 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang=''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang=$object->thirdparty->default_lang; + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && ! empty($_REQUEST['lang_id'])) $newlang=$_REQUEST['lang_id']; + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang=$object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("",$conf); @@ -402,7 +402,7 @@ if ($action == 'create') { print '
'.$langs->trans('Ref').''.$langs->trans('Draft').'
'.$langs->trans('ThirdParty').'
'.$langs->trans("ThirdParty").''; @@ -756,7 +756,7 @@ if (!empty($id) && $action != 'edit') { print yn($object->public); print '
'.$langs->trans("ThirdParty").''; diff --git a/htdocs/don/class/paymentdonation.class.php b/htdocs/don/class/paymentdonation.class.php index 6de83f5570e..e4928ac9363 100644 --- a/htdocs/don/class/paymentdonation.class.php +++ b/htdocs/don/class/paymentdonation.class.php @@ -574,7 +574,7 @@ class PaymentDonation extends CommonObject $error = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); diff --git a/htdocs/don/document.php b/htdocs/don/document.php index 030ca5cb085..1bb371c7812 100644 --- a/htdocs/don/document.php +++ b/htdocs/don/document.php @@ -40,7 +40,7 @@ if (!empty($conf->project->enabled)) { } // Load translation files required by the page -$langs->loadLangs(array("companies", "other", "donations")); +$langs->loadLangs(array('companies', 'other', 'donations')); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); diff --git a/htdocs/don/info.php b/htdocs/don/info.php index f326972f782..29d8f129036 100644 --- a/htdocs/don/info.php +++ b/htdocs/don/info.php @@ -30,7 +30,7 @@ if (!empty($conf->project->enabled)) { require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; } -$langs->load("donations"); +$langs->load('donations'); $id = GETPOST('id', 'int'); $ref = GETPOST('ref', 'alpha'); @@ -45,17 +45,22 @@ $result = restrictedArea($user, 'don', $id, ''); $object = new Don($db); $object->fetch($id); + + /* * Actions */ + if ($action == 'classin' && $user->rights->don->creer) { $object->fetch($id); $object->setProject($projectid); } + /* * View */ + $title = $langs->trans('Donation')." - ".$langs->trans('Info'); $help_url = 'EN:Module_Donations|FR:Module_Dons|ES:Módulo_Donaciones|DE:Modul_Spenden'; diff --git a/htdocs/don/list.php b/htdocs/don/list.php index 891f7e6877b..68f8ab0bbea 100644 --- a/htdocs/don/list.php +++ b/htdocs/don/list.php @@ -32,7 +32,7 @@ if (!empty($conf->project->enabled)) { } // Load translation files required by the page -$langs->loadLangs(array("companies", "donations")); +$langs->loadLangs(array('companies', 'donations')); $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'sclist'; diff --git a/htdocs/don/note.php b/htdocs/don/note.php index 8e1b5192ee2..0b1c555e772 100644 --- a/htdocs/don/note.php +++ b/htdocs/don/note.php @@ -35,7 +35,7 @@ if (!empty($conf->project->enabled)) { } // Load translation files required by the page -$langs->loadLangs(array("companies", "bills", "donations")); +$langs->loadLangs(array('companies', 'bills', 'donations')); $id = (GETPOST('id', 'int') ?GETPOST('id', 'int') : GETPOST('facid', 'int')); // For backward compatibility $ref = GETPOST('ref', 'alpha'); @@ -60,6 +60,7 @@ $permissionnote = $user->rights->don->creer; // Used by the include of actions_s /* * Actions */ + $reshook = $hookmanager->executeHooks('doActions', array(), $object, $action); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) { setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); @@ -73,6 +74,7 @@ if ($action == 'classin' && $user->rights->don->creer) { $object->setProject($projectid); } + /* * View */ diff --git a/htdocs/don/payment/card.php b/htdocs/don/payment/card.php index 363ef6d34ef..1b4ebaaf88e 100644 --- a/htdocs/don/payment/card.php +++ b/htdocs/don/payment/card.php @@ -27,7 +27,7 @@ require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -124,7 +124,7 @@ print '
'.$langs->trans('Amount').''.price($object->amount, 0, $ print '
'.$langs->trans('Note').''.nl2br($object->note_public).'
'; // Label - print ''."\n"; + print ''."\n"; print ''; + print ''; } diff --git a/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php b/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php index 6a76a14a38c..8d0f442e900 100644 --- a/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php +++ b/htdocs/eventorganization/lib/eventorganization_conferenceorbooth.lib.php @@ -47,12 +47,12 @@ function conferenceorboothPrepareHead($object, $with_project = 0) $head[$h][2] = 'card'; $h++; - /* - $head[$h][0] = DOL_URL_ROOT.'/eventorganization/conferenceorbooth_contact.php?id='.$object->id.$withProjectUrl; - $head[$h][1] = $langs->trans("ContactsAddresses"); - $head[$h][2] = 'contact'; - $h++; - */ + if (!empty($conf->global->MAIN_FEATURES_LEVEL) && $conf->global->MAIN_FEATURES_LEVEL >= 2) { + $head[$h][0] = DOL_URL_ROOT.'/eventorganization/conferenceorbooth_contact.php?id='.$object->id.$withProjectUrl; + $head[$h][1] = $langs->trans("ContactsAddresses"); + $head[$h][2] = 'contact'; + $h++; + } /* $head[$h][0] = DOL_URL_ROOT.'/eventorganization/conferenceorboothattendee_list.php?conforboothid='.$object->id.$withProjectUrl; diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 0508c51dfae..3a0a9869571 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -47,10 +47,10 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php'; require_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->productbatch->enabled)) { @@ -763,10 +763,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -804,9 +804,13 @@ if (empty($reshook)) { * View */ +$title = $langs->trans("Shipment"); +if ($action == 'create2') { + $title = $langs->trans("CreateShipment"); +} $help_url = 'EN:Module_Shipments|FR:Module_Expéditions|ES:Módulo_Expediciones|DE:Modul_Lieferungen'; -llxHeader('', $langs->trans('Shipment'), 'Expedition', $help_url); +llxHeader('', $title, 'Expedition', $help_url); if (empty($action)) { $action = 'view'; @@ -874,7 +878,7 @@ if ($action == 'create') { if ($origin == 'commande' && !empty($conf->commande->enabled)) { print $langs->trans("RefOrder"); } - if ($origin == 'propal' && !empty($conf->propal->enabled)) { + if ($origin == 'propal' && isModEnabled("propal")) { print $langs->trans("RefProposal"); } print '\n"; print ''; } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { print ''; print '\n"; print ''; } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { print '
'.$langs->trans("Label").'
'.$langs->trans("Label").'label).'" autofocus>
'.$langs->trans("AddIn").''; print $formecm->selectAllSections((GETPOST("catParent", 'alpha') ? GETPOST("catParent", 'alpha') : $ecmdir->fk_parent), 'catParent', $module); diff --git a/htdocs/ecm/file_card.php b/htdocs/ecm/file_card.php index c44fab4702e..624f8d6ddf0 100644 --- a/htdocs/ecm/file_card.php +++ b/htdocs/ecm/file_card.php @@ -76,7 +76,7 @@ if (!$urlfile) { // Load ecm object $ecmdir = new EcmDirectory($db); $result = $ecmdir->fetch(GETPOST("section", 'alpha')); -if (!$result > 0) { +if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } diff --git a/htdocs/ecm/file_note.php b/htdocs/ecm/file_note.php index 41367cf2894..53b120d3191 100644 --- a/htdocs/ecm/file_note.php +++ b/htdocs/ecm/file_note.php @@ -80,7 +80,7 @@ if (!$urlfile) { // Load ecm object $ecmdir = new EcmDirectory($db); $result = $ecmdir->fetch(GETPOST("section", 'alpha')); -if (!$result > 0) { +if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } diff --git a/htdocs/ecm/index.php b/htdocs/ecm/index.php index 11ac3bf95c1..ceaf74f533d 100644 --- a/htdocs/ecm/index.php +++ b/htdocs/ecm/index.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php'; require_once DOL_DOCUMENT_ROOT.'/ecm/class/ecmdirectory.class.php'; // Load translation files required by the page -$langs->loadLangs(array("ecm", "companies", "other", "users", "orders", "propal", "bills", "contracts")); +$langs->loadLangs(array('ecm', 'companies', 'other', 'users', 'orders', 'propal', 'bills', 'contracts')); // Get parameters $socid = GETPOST('socid', 'int'); @@ -64,7 +64,7 @@ if (!$sortfield) { $ecmdir = new EcmDirectory($db); if ($section > 0) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } diff --git a/htdocs/ecm/index_auto.php b/htdocs/ecm/index_auto.php index 1fcdac35b0f..4ffe606c79e 100644 --- a/htdocs/ecm/index_auto.php +++ b/htdocs/ecm/index_auto.php @@ -74,7 +74,7 @@ if ($module == 'invoice_supplier' && $sortfield == "fullname") { $ecmdir = new EcmDirectory($db); if ($section) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } @@ -309,14 +309,14 @@ llxHeader($moreheadcss.$moreheadjs, $langs->trans("ECMArea"), '', '', '', '', $m $rowspan = 0; $sectionauto = array(); if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) { - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $langs->load("products"); - $rowspan++; $sectionauto[] = array('position'=>10, 'level'=>1, 'module'=>'product', 'test'=>(!empty($conf->product->enabled) || !empty($conf->service->enabled)), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); + $rowspan++; $sectionauto[] = array('position'=>10, 'level'=>1, 'module'=>'product', 'test'=>(isModEnabled("product") || isModEnabled("service")), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } - if (!empty($conf->societe->enabled)) { + if (isModEnabled("societe")) { $rowspan++; $sectionauto[] = array('position'=>20, 'level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("ThirdParties"))); } - if (!empty($conf->propal->enabled)) { + if (isModEnabled("propal")) { $rowspan++; $sectionauto[] = array('position'=>30, 'level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Proposals"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("Proposals"))); } if (!empty($conf->contrat->enabled)) { @@ -332,11 +332,11 @@ if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) { $langs->load("supplier_proposal"); $rowspan++; $sectionauto[] = array('position'=>70, 'level'=>1, 'module'=>'supplier_proposal', 'test'=>$conf->supplier_proposal->enabled, 'label'=>$langs->trans("SupplierProposals"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierProposals"))); } - if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)) { - $rowspan++; $sectionauto[] = array('position'=>80, 'level'=>1, 'module'=>'order_supplier', 'test'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled)), 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("PurchaseOrders"))); + if (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order")) { + $rowspan++; $sectionauto[] = array('position'=>80, 'level'=>1, 'module'=>'order_supplier', 'test'=>(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order")), 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("PurchaseOrders"))); } - if (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)) { - $rowspan++; $sectionauto[] = array('position'=>90, 'level'=>1, 'module'=>'invoice_supplier', 'test'=>(!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_invoice->enabled)), 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierInvoices"))); + if (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_invoice")) { + $rowspan++; $sectionauto[] = array('position'=>90, 'level'=>1, 'module'=>'invoice_supplier', 'test'=>(isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_invoice")), 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierInvoices"))); } if (!empty($conf->tax->enabled)) { $langs->load("compta"); @@ -363,7 +363,7 @@ if (!empty($conf->global->ECM_AUTO_TREE_ENABLED)) { $langs->load("holiday"); $rowspan++; $sectionauto[] = array('position'=>170, 'level'=>1, 'module'=>'holiday', 'test'=>$conf->holiday->enabled, 'label'=>$langs->trans("Holidays"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("Holidays"))); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $langs->load("banks"); $rowspan++; $sectionauto[] = array('position'=>180, 'level'=>1, 'module'=>'banque', 'test'=>$conf->banque->enabled, 'label'=>$langs->trans("BankAccount"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("BankAccount"))); $rowspan++; $sectionauto[] = array('position'=>190, 'level'=>1, 'module'=>'chequereceipt', 'test'=>$conf->banque->enabled, 'label'=>$langs->trans("CheckReceipt"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("CheckReceipt"))); diff --git a/htdocs/ecm/search.php b/htdocs/ecm/search.php index 27a76d2ae6e..d04983fff11 100644 --- a/htdocs/ecm/search.php +++ b/htdocs/ecm/search.php @@ -78,7 +78,7 @@ if (!$sortfield) { $ecmdir = new EcmDirectory($db); if (!empty($section)) { $result = $ecmdir->fetch($section); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } @@ -113,13 +113,13 @@ $userstatic = new User($db); // Ajout rubriques automatiques $rowspan = 0; $sectionauto = array(); -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { - $langs->load("products"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'product', 'test'=>(!empty($conf->product->enabled) || !empty($conf->service->enabled)), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); +if (isModEnabled("product") || isModEnabled("service")) { + $langs->load("products"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'product', 'test'=>(isModEnabled("product") || isModEnabled("service")), 'label'=>$langs->trans("ProductsAndServices"), 'desc'=>$langs->trans("ECMDocsByProducts")); } -if (!empty($conf->societe->enabled)) { +if (isModEnabled("societe")) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'company', 'test'=>$conf->societe->enabled, 'label'=>$langs->trans("ThirdParties"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("ThirdParties"))); } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'propal', 'test'=>$conf->propal->enabled, 'label'=>$langs->trans("Proposals"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("Proposals"))); } if (!empty($conf->contrat->enabled)) { @@ -134,11 +134,11 @@ if (isModEnabled('facture')) { if (!empty($conf->supplier_proposal->enabled)) { $langs->load("supplier_proposal"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'supplier_proposal', 'test'=>$conf->supplier_proposal->enabled, 'label'=>$langs->trans("SupplierProposals"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierProposals"))); } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { - $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'order_supplier', 'test'=>((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)), 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("PurchaseOrders"))); +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { + $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'order_supplier', 'test'=>((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")), 'label'=>$langs->trans("SuppliersOrders"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("PurchaseOrders"))); } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) { - $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'invoice_supplier', 'test'=>((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)), 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierInvoices"))); +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) { + $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'invoice_supplier', 'test'=>((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")), 'label'=>$langs->trans("SuppliersInvoices"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SupplierInvoices"))); } if (!empty($conf->tax->enabled)) { $langs->load("compta"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'tax', 'test'=>$conf->tax->enabled, 'label'=>$langs->trans("SocialContributions"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("SocialContributions"))); @@ -155,7 +155,7 @@ if (!empty($conf->expensereport->enabled)) { if (!empty($conf->holiday->enabled)) { $langs->load("holiday"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'holiday', 'test'=>$conf->holiday->enabled, 'label'=>$langs->trans("Holidays"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("Holidays"))); } -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { $langs->load("banks"); $rowspan++; $sectionauto[] = array('level'=>1, 'module'=>'banque', 'test'=>$conf->banque->enabled, 'label'=>$langs->trans("BankAccount"), 'desc'=>$langs->trans("ECMDocsBy", $langs->transnoentitiesnoconv("BankAccount"))); } if (!empty($conf->mrp->enabled)) { diff --git a/htdocs/emailcollector/class/emailcollector.class.php b/htdocs/emailcollector/class/emailcollector.class.php index ab94be999cb..7c43286ed9f 100644 --- a/htdocs/emailcollector/class/emailcollector.class.php +++ b/htdocs/emailcollector/class/emailcollector.class.php @@ -37,10 +37,22 @@ require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; // Ship require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; // supplier invoice require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; // supplier order require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; // supplier proposal -require_once DOL_DOCUMENT_ROOT."/reception/class/reception.class.php"; // reception +require_once DOL_DOCUMENT_ROOT.'/reception/class/reception.class.php'; // reception include_once DOL_DOCUMENT_ROOT.'/emailcollector/lib/emailcollector.lib.php'; //require_once DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php'; // Holidays (leave request) -//require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; // expernse report +//require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; // expernse repor + + +// use Webklex\PHPIMAP; +require DOL_DOCUMENT_ROOT.'/includes/webklex/php-imap/vendor/autoload.php'; +use Webklex\PHPIMAP\ClientManager; + +use Webklex\PHPIMAP\Exceptions\ConnectionFailedException; +use Webklex\PHPIMAP\Exceptions\InvalidWhereQueryCriteriaException; +use Webklex\PHPIMAP\Exceptions\GetMessagesFailedException; + +use OAuth\Common\Storage\DoliStorage; +use OAuth\Common\Consumer\Credentials; /** @@ -111,14 +123,17 @@ class EmailCollector extends CommonObject public $fields = array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'visible'=>2, 'enabled'=>1, 'position'=>1, 'notnull'=>1, 'index'=>1), 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'default'=>1, 'notnull'=>1, 'index'=>1, 'position'=>20), - 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1', 'csslist'=>'tdoverflowmax250'), + 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'showoncombobox'=>1, 'index'=>1, 'position'=>10, 'searchall'=>1, 'help'=>'Example: MyCollector1', 'csslist'=>'tdoverflowmax150'), 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'visible'=>1, 'enabled'=>1, 'position'=>30, 'notnull'=>-1, 'searchall'=>1, 'help'=>'Example: My Email collector', 'csslist'=>'tdoverflowmax150'), 'description' => array('type'=>'text', 'label'=>'Description', 'visible'=>-1, 'enabled'=>1, 'position'=>60, 'notnull'=>-1, 'csslist'=>'small'), 'host' => array('type'=>'varchar(255)', 'label'=>'EMailHost', 'visible'=>1, 'enabled'=>1, 'position'=>90, 'notnull'=>1, 'searchall'=>1, 'comment'=>"IMAP server", 'help'=>'Example: imap.gmail.com', 'csslist'=>'tdoverflow125'), - 'hostcharset' => array('type'=>'varchar(16)', 'label'=>'HostCharset', 'visible'=>-1, 'enabled'=>1, 'position'=>91, 'notnull'=>0, 'searchall'=>0, 'comment'=>"IMAP server charset", 'help'=>'Example: "UTF-8" (May be "US-ASCII" with some Office365)'), - 'login' => array('type'=>'varchar(128)', 'label'=>'Login', 'visible'=>1, 'enabled'=>1, 'position'=>101, 'notnull'=>-1, 'index'=>1, 'comment'=>"IMAP login", 'help'=>'Example: myaccount@gmail.com'), - 'password' => array('type'=>'password', 'label'=>'Password', 'visible'=>-1, 'enabled'=>1, 'position'=>102, 'notnull'=>-1, 'comment'=>"IMAP password", 'help'=>'WithGMailYouCanCreateADedicatedPassword'), - 'source_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxSourceDirectory', 'visible'=>-1, 'enabled'=>1, 'position'=>103, 'notnull'=>1, 'default' => 'Inbox', 'help'=>'Example: INBOX'), + 'port' => array('type'=>'varchar(10)', 'label'=>'EMailHostPort', 'visible'=>1, 'enabled'=>1, 'position'=>91, 'notnull'=>1, 'searchall'=>0, 'comment'=>"IMAP server port", 'help'=>'Example: 993', 'csslist'=>'tdoverflow125', 'default'=>'993'), + 'hostcharset' => array('type'=>'varchar(16)', 'label'=>'HostCharset', 'visible'=>-1, 'enabled'=>1, 'position'=>92, 'notnull'=>0, 'searchall'=>0, 'comment'=>"IMAP server charset", 'help'=>'Example: "UTF-8" (May be "US-ASCII" with some Office365)', 'default'=>'UTF-8'), + 'acces_type' => array('type'=>'integer', 'label'=>'accessType', 'visible'=>-1, 'enabled'=>"getDolGlobalInt('MAIN_IMAP_USE_PHPIMAP')", 'position'=>101, 'notnull'=>1, 'index'=>1, 'comment'=>"IMAP login type", 'arrayofkeyval'=>array('0'=>'loginPassword', '1'=>'oauthToken'), 'default'=>'0', 'help'=>''), + 'login' => array('type'=>'varchar(128)', 'label'=>'Login', 'visible'=>-1, 'enabled'=>1, 'position'=>102, 'notnull'=>-1, 'index'=>1, 'comment'=>"IMAP login", 'help'=>'Example: myaccount@gmail.com'), + 'password' => array('type'=>'password', 'label'=>'Password', 'visible'=>-1, 'enabled'=>"1", 'position'=>103, 'notnull'=>-1, 'comment'=>"IMAP password", 'help'=>'WithGMailYouCanCreateADedicatedPassword'), + 'oauth_service' => array('type'=>'varchar(128)', 'label'=>'oauthService', 'visible'=>-1, 'enabled'=>"getDolGlobalInt('MAIN_IMAP_USE_PHPIMAP')", 'position'=>104, 'notnull'=>0, 'index'=>1, 'comment'=>"IMAP login oauthService", 'arrayofkeyval'=>array(), 'help'=>'TokenMustHaveBeenCreated'), + 'source_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxSourceDirectory', 'visible'=>-1, 'enabled'=>1, 'position'=>104, 'notnull'=>1, 'default' => 'Inbox', 'help'=>'Example: INBOX'), //'filter' => array('type'=>'text', 'label'=>'Filter', 'visible'=>1, 'enabled'=>1, 'position'=>105), //'actiontodo' => array('type'=>'varchar(255)', 'label'=>'ActionToDo', 'visible'=>1, 'enabled'=>1, 'position'=>106), 'target_directory' => array('type'=>'varchar(255)', 'label'=>'MailboxTargetDirectory', 'visible'=>1, 'enabled'=>1, 'position'=>110, 'notnull'=>0, 'help'=>"EmailCollectorTargetDir"), @@ -193,9 +208,12 @@ class EmailCollector extends CommonObject public $host; + public $port; public $hostcharset; public $login; public $password; + public $acces_type; + public $oauth_service; public $source_directory; public $target_directory; public $maxemailpercollect; @@ -237,6 +255,27 @@ class EmailCollector extends CommonObject $this->fields['entity']['enabled'] = 0; } + // List of oauth services + $oauthservices = array(); + + foreach ($conf->global as $key => $val) { + if (!empty($val) && preg_match('/^OAUTH_.*_ID$/', $key)) { + $key = preg_replace('/^OAUTH_/', '', $key); + $key = preg_replace('/_ID$/', '', $key); + if (preg_match('/^.*-/', $key)) { + $name = preg_replace('/^.*-/', '', $key); + } else { + $name = $langs->trans("NoName"); + } + $provider = preg_replace('/-.*$/', '', $key); + $provider = ucfirst(strtolower($provider)); + + $oauthservices[$key] = $name." (".$provider.")"; + } + } + + $this->fields['oauth_service']['arrayofkeyval'] = $oauthservices; + // Unset fields that are disabled foreach ($this->fields as $key => $val) { if (isset($val['enabled']) && empty($val['enabled'])) { @@ -272,8 +311,13 @@ class EmailCollector extends CommonObject return -1; } + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; + $this->password = dolEncrypt($this->password); + $id = $this->createCommon($user, $notrigger); + $this->password = dolDecrypt($this->password); + if (is_array($this->filters) && count($this->filters)) { $emailcollectorfilter = new EmailCollectorFilter($this->db); @@ -332,6 +376,7 @@ class EmailCollector extends CommonObject unset($object->id); unset($object->fk_user_creat); unset($object->import_key); + unset($object->password); // Clear fields $object->ref = "copy_of_".$object->ref; @@ -383,6 +428,10 @@ class EmailCollector extends CommonObject public function fetch($id, $ref = null) { $result = $this->fetchCommon($id, $ref); + + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; + $this->password = dolDecrypt($this->password); + //if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines(); return $result; } @@ -478,7 +527,14 @@ class EmailCollector extends CommonObject return -1; } - return $this->updateCommon($user, $notrigger); + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; + $this->password = dolEncrypt($this->password); + + $result = $this->updateCommon($user, $notrigger); + + $this->password = dolDecrypt($this->password); + + return $result; } /** @@ -746,7 +802,7 @@ class EmailCollector extends CommonObject $flags .= '/authuser='.$partofauth[0].'/user='.$partofauth[1]; } - $connectstringserver = '{'.$this->host.':993'.$flags.'}'; + $connectstringserver = '{'.$this->host.':'.$this->port.$flags.'}'; return $connectstringserver; } @@ -949,7 +1005,7 @@ class EmailCollector extends CommonObject */ public function doCollectOneCollector() { - global $conf, $langs, $user; + global $db, $conf, $langs, $user; global $hookmanager; //$conf->global->SYSLOG_FILE = 'DOL_DATA_ROOT/dolibarr_mydedicatedlofile.log'; @@ -966,6 +1022,7 @@ class EmailCollector extends CommonObject $now = dol_now(); + if (empty($this->host)) { $this->error = $langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('EMailHost')); return -1; @@ -978,149 +1035,386 @@ class EmailCollector extends CommonObject $this->error = $langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('MailboxSourceDirectory')); return -1; } - if (!function_exists('imap_open')) { - $this->error = 'IMAP function not enabled on your PHP'; - return -2; - } $this->fetchFilters(); $this->fetchActions(); - $sourcedir = $this->source_directory; - $targetdir = ($this->target_directory ? $this->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag' + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + if ($this->acces_type == 1) { + // Mode OAUth2 with PHP-IMAP + require_once DOL_DOCUMENT_ROOT.'/core/lib/oauth.lib.php'; // define $supportedoauth2array + $keyforsupportedoauth2array = $this->oauth_service; + if (preg_match('/^.*-/', $keyforsupportedoauth2array)) { + $keyforprovider = preg_replace('/^.*-/', '', $keyforsupportedoauth2array); + } else { + $keyforprovider = ''; + } + $keyforsupportedoauth2array = preg_replace('/-.*$/', '', $keyforsupportedoauth2array); + $keyforsupportedoauth2array = 'OAUTH_'.$keyforsupportedoauth2array.'_NAME'; - $connectstringserver = $this->getConnectStringIMAP(); - $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); - $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); + $OAUTH_SERVICENAME = (empty($supportedoauth2array[$keyforsupportedoauth2array]['name']) ? 'Unknown' : $supportedoauth2array[$keyforsupportedoauth2array]['name'].($keyforprovider ? '-'.$keyforprovider : '')); - $connection = imap_open($connectstringsource, $this->login, $this->password); - if (!$connection) { - $this->error = 'Failed to open IMAP connection '.$connectstringsource; - return -3; - } - imap_errors(); // Clear stack of errors. + require_once DOL_DOCUMENT_ROOT.'/includes/OAuth/bootstrap.php'; + //$debugtext = "Host: ".$this->host."
Port: ".$this->port."
Login: ".$this->login."
Password: ".$this->password."
access type: ".$this->acces_type."
oauth service: ".$this->oauth_service."
Max email per collect: ".$this->maxemailpercollect; + //dol_syslog($debugtext); - $host = dol_getprefix('email'); - //$host = '123456'; + $storage = new DoliStorage($db, $conf); - // Define the IMAP search string - // See https://tools.ietf.org/html/rfc3501#section-6.4.4 for IMAPv4 (PHP not yet compatible) - // See https://tools.ietf.org/html/rfc1064 page 13 for IMAPv2 - //$search='ALL'; - $search = 'UNDELETED'; // Seems not supported by some servers - $searchhead = ''; - $searchfilterdoltrackid = 0; - $searchfilternodoltrackid = 0; - $searchfilterisanswer = 0; - $searchfilterisnotanswer = 0; - foreach ($this->filters as $rule) { - if (empty($rule['status'])) { - continue; + try { + $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); + $expire = true; + // Is token expired or will token expire in the next 30 seconds + // if (is_object($tokenobj)) { + // $expire = ($tokenobj->getEndOfLife() !== -9002 && $tokenobj->getEndOfLife() !== -9001 && time() > ($tokenobj->getEndOfLife() - 30)); + // } + // Token expired so we refresh it + if (is_object($tokenobj) && $expire) { + $credentials = new Credentials( + getDolGlobalString('OAUTH_'.$this->oauth_service.'_ID'), + getDolGlobalString('OAUTH_'.$this->oauth_service.'_SECRET'), + getDolGlobalString('OAUTH_'.$this->oauth_service.'_URLAUTHORIZE') + ); + $serviceFactory = new \OAuth\ServiceFactory(); + $oauthname = explode('-', $OAUTH_SERVICENAME); + // ex service is Google-Emails we need only the first part Google + $apiService = $serviceFactory->createService($oauthname[0], $credentials, $storage, array()); + // We have to save the token because Google give it only once + $refreshtoken = $tokenobj->getRefreshToken(); + $tokenobj = $apiService->refreshAccessToken($tokenobj); + $tokenobj->setRefreshToken($refreshtoken); + $storage->storeAccessToken($OAUTH_SERVICENAME, $tokenobj); + } + $tokenobj = $storage->retrieveAccessToken($OAUTH_SERVICENAME); + if (is_object($tokenobj)) { + $token = $tokenobj->getAccessToken(); + } else { + $this->error = "Token not found"; + return -1; + } + } catch (Exception $e) { + // Return an error if token not found + $this->error = $e->getMessage(); + dol_syslog("CMailFile::sendfile: mail end error=".$this->error, LOG_ERR); + return -1; + } + + + $cm = new ClientManager(); + $client = $cm->make([ + 'host' => $this->host, + 'port' => $this->port, + 'encryption' => 'ssl', + 'validate_cert' => true, + 'protocol' => 'imap', + 'username' => $this->login, + 'password' => $token, + 'authentication' => "oauth", + ]); + } else { + // Mode login/pass with PHP-IMAP + $cm = new ClientManager(); + $client = $cm->make([ + 'host' => $this->host, + 'port' => $this->port, + 'encryption' => 'ssl', + 'validate_cert' => true, + 'protocol' => 'imap', + 'username' => $this->login, + 'password' => $this->password, + 'authentication' => "login", + ]); } - if ($rule['type'] == 'to') { - $tmprulevaluearray = explode('*', $rule['rulevalue']); - if (count($tmprulevaluearray) >= 2) { - foreach ($tmprulevaluearray as $tmprulevalue) { - $search .= ($search ? ' ' : '').'TO "'.str_replace('"', '', $tmprulevalue).'"'; + try { + $client->connect(); + } catch (ConnectionFailedException $e) { + $this->error = $e->getMessage(); + $this->errors[] = $this->error; + dol_syslog("EmailCollector::doCollectOneCollector ".$this->error, LOG_ERR); + return -1; + } + + $host = dol_getprefix('email'); + } else { + // Use native IMAP functions + if (!function_exists('imap_open')) { + $this->error = 'IMAP function not enabled on your PHP'; + return -2; + } + $sourcedir = $this->source_directory; + $targetdir = ($this->target_directory ? $this->target_directory : ''); // Can be '[Gmail]/Trash' or 'mytag' + + $connectstringserver = $this->getConnectStringIMAP(); + $connectstringsource = $connectstringserver.imap_utf7_encode($sourcedir); + $connectstringtarget = $connectstringserver.imap_utf7_encode($targetdir); + + $connection = imap_open($connectstringsource, $this->login, $this->password); + if (!$connection) { + $this->error = 'Failed to open IMAP connection '.$connectstringsource.' '.imap_last_error(); + return -3; + } + imap_errors(); // Clear stack of errors. + + $host = dol_getprefix('email'); + //$host = '123456'; + + // Define the IMAP search string + // See https://tools.ietf.org/html/rfc3501#section-6.4.4 for IMAPv4 (PHP not yet compatible) + // See https://tools.ietf.org/html/rfc1064 page 13 for IMAPv2 + //$search='ALL'; + } + + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + $criteria = array(array('UNDELETED')); // Seems not supported by some servers + $search = ''; + $searchhead = ''; + $searchfilterdoltrackid = 0; + $searchfilternodoltrackid = 0; + $searchfilterisanswer = 0; + $searchfilterisnotanswer = 0; + foreach ($this->filters as $rule) { + if (empty($rule['status'])) { + continue; + } + if ($rule['type'] == 'to') { + $tmprulevaluearray = explode('*', $rule['rulevalue']); + if (count($tmprulevaluearray) >= 2) { + foreach ($tmprulevaluearray as $tmprulevalue) { + array_push($criteria, array("TO" => $tmprulevalue)); + } + } else { + array_push($criteria, array("TO" => $rule['rulevalue'])); } - } else { - $search .= ($search ? ' ' : '').'TO "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'bcc') { + array_push($criteria, array("BCC" => $rule['rulevalue'])); + } + if ($rule['type'] == 'cc') { + array_push($criteria, array("CC" => $rule['rulevalue'])); + } + if ($rule['type'] == 'from') { + array_push($criteria, array("FROM" => $rule['rulevalue'])); + } + if ($rule['type'] == 'subject') { + array_push($criteria, array("SUBJECT" => $rule['rulevalue'])); + } + if ($rule['type'] == 'body') { + array_push($criteria, array("BODY" => $rule['rulevalue'])); + } + if ($rule['type'] == 'header') { + array_push($criteria, array("HEADER" => $rule['rulevalue'])); + } + + if ($rule['type'] == 'notinsubject') { + array_push($criteria, array("SUBJECT NOT" => $rule['rulevalue'])); + } + if ($rule['type'] == 'notinbody') { + array_push($criteria, array("BODY NOT" => $rule['rulevalue'])); + } + + if ($rule['type'] == 'seen') { + array_push($criteria, array("SEEN")); + } + if ($rule['type'] == 'unseen') { + array_push($criteria, array("UNSEEN")); + } + if ($rule['type'] == 'unanswered') { + array_push($criteria, array("UNANSWERED")); + } + if ($rule['type'] == 'answered') { + array_push($criteria, array("ANSWERED")); + } + if ($rule['type'] == 'smaller') { + array_push($criteria, array("SMALLER")); + } + if ($rule['type'] == 'larger') { + array_push($criteria, array("LARGER")); + } + + // Rules to filter after the search imap + if ($rule['type'] == 'withtrackingidinmsgid') { + $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withouttrackingidinmsgid') { + $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withtrackingid') { + $searchfilterdoltrackid++; $searchhead .= '/References.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withouttrackingid') { + $searchfilternodoltrackid++; $searchhead .= '! /References.*@'.preg_quote($host, '/').'/'; + } + + if ($rule['type'] == 'isanswer') { + $searchfilterisanswer++; $searchhead .= '/References.*@.*/'; + } + if ($rule['type'] == 'isnotanswer') { + $searchfilterisnotanswer++; $searchhead .= '! /References.*@.*/'; } } - if ($rule['type'] == 'bcc') { - $search .= ($search ? ' ' : '').'BCC'; - } - if ($rule['type'] == 'cc') { - $search .= ($search ? ' ' : '').'CC'; - } - if ($rule['type'] == 'from') { - $search .= ($search ? ' ' : '').'FROM "'.str_replace('"', '', $rule['rulevalue']).'"'; - } - if ($rule['type'] == 'subject') { - $search .= ($search ? ' ' : '').'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"'; - } - if ($rule['type'] == 'body') { - $search .= ($search ? ' ' : '').'BODY "'.str_replace('"', '', $rule['rulevalue']).'"'; - } - if ($rule['type'] == 'header') { - $search .= ($search ? ' ' : '').'HEADER '.$rule['rulevalue']; + + if (empty($targetdir)) { // Use last date as filter if there is no targetdir defined. + $fromdate = 0; + if ($this->datelastok) { + $fromdate = $this->datelastok; + } + if ($fromdate > 0) { + // $search .= ($search ? ' ' : '').'SINCE '.date('j-M-Y', $fromdate - 1); // SENTSINCE not supported. Date must be X-Abc-9999 (X on 1 digit if < 10) + array_push($criteria, array("SINCE" => date('j-M-Y', $fromdate - 1))); + } + //$search.=($search?' ':'').'SINCE 8-Apr-2022'; } - if ($rule['type'] == 'notinsubject') { - $search .= ($search ? ' ' : '').'SUBJECT NOT "'.str_replace('"', '', $rule['rulevalue']).'"'; - } - if ($rule['type'] == 'notinbody') { - $search .= ($search ? ' ' : '').'BODY NOT "'.str_replace('"', '', $rule['rulevalue']).'"'; + dol_syslog("IMAP search string = ".var_export($criteria, true)); + $search = var_export($criteria, true); + } else { + $search = 'UNDELETED'; // Seems not supported by some servers + $searchhead = ''; + $searchfilterdoltrackid = 0; + $searchfilternodoltrackid = 0; + $searchfilterisanswer = 0; + $searchfilterisnotanswer = 0; + foreach ($this->filters as $rule) { + if (empty($rule['status'])) { + continue; + } + + if ($rule['type'] == 'to') { + $tmprulevaluearray = explode('*', $rule['rulevalue']); + if (count($tmprulevaluearray) >= 2) { + foreach ($tmprulevaluearray as $tmprulevalue) { + $search .= ($search ? ' ' : '').'TO "'.str_replace('"', '', $tmprulevalue).'"'; + } + } else { + $search .= ($search ? ' ' : '').'TO "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + } + if ($rule['type'] == 'bcc') { + $search .= ($search ? ' ' : '').'BCC'; + } + if ($rule['type'] == 'cc') { + $search .= ($search ? ' ' : '').'CC'; + } + if ($rule['type'] == 'from') { + $search .= ($search ? ' ' : '').'FROM "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'subject') { + $search .= ($search ? ' ' : '').'SUBJECT "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'body') { + $search .= ($search ? ' ' : '').'BODY "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'header') { + $search .= ($search ? ' ' : '').'HEADER '.$rule['rulevalue']; + } + + if ($rule['type'] == 'notinsubject') { + $search .= ($search ? ' ' : '').'SUBJECT NOT "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'notinbody') { + $search .= ($search ? ' ' : '').'BODY NOT "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + + if ($rule['type'] == 'seen') { + $search .= ($search ? ' ' : '').'SEEN'; + } + if ($rule['type'] == 'unseen') { + $search .= ($search ? ' ' : '').'UNSEEN'; + } + if ($rule['type'] == 'unanswered') { + $search .= ($search ? ' ' : '').'UNANSWERED'; + } + if ($rule['type'] == 'answered') { + $search .= ($search ? ' ' : '').'ANSWERED'; + } + if ($rule['type'] == 'smaller') { + $search .= ($search ? ' ' : '').'SMALLER "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + if ($rule['type'] == 'larger') { + $search .= ($search ? ' ' : '').'LARGER "'.str_replace('"', '', $rule['rulevalue']).'"'; + } + + // Rules to filter after the search imap + if ($rule['type'] == 'withtrackingidinmsgid') { + $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withouttrackingidinmsgid') { + $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withtrackingid') { + $searchfilterdoltrackid++; $searchhead .= '/References.*@'.preg_quote($host, '/').'/'; + } + if ($rule['type'] == 'withouttrackingid') { + $searchfilternodoltrackid++; $searchhead .= '! /References.*@'.preg_quote($host, '/').'/'; + } + + if ($rule['type'] == 'isanswer') { + $searchfilterisanswer++; $searchhead .= '/References.*@.*/'; + } + if ($rule['type'] == 'isnotanswer') { + $searchfilterisnotanswer++; $searchhead .= '! /References.*@.*/'; + } } - if ($rule['type'] == 'seen') { - $search .= ($search ? ' ' : '').'SEEN'; - } - if ($rule['type'] == 'unseen') { - $search .= ($search ? ' ' : '').'UNSEEN'; - } - if ($rule['type'] == 'unanswered') { - $search .= ($search ? ' ' : '').'UNANSWERED'; - } - if ($rule['type'] == 'answered') { - $search .= ($search ? ' ' : '').'ANSWERED'; - } - if ($rule['type'] == 'smaller') { - $search .= ($search ? ' ' : '').'SMALLER "'.str_replace('"', '', $rule['rulevalue']).'"'; - } - if ($rule['type'] == 'larger') { - $search .= ($search ? ' ' : '').'LARGER "'.str_replace('"', '', $rule['rulevalue']).'"'; + if (empty($targetdir)) { // Use last date as filter if there is no targetdir defined. + $fromdate = 0; + if ($this->datelastok) { + $fromdate = $this->datelastok; + } + if ($fromdate > 0) { + $search .= ($search ? ' ' : '').'SINCE '.date('j-M-Y', $fromdate - 1); // SENTSINCE not supported. Date must be X-Abc-9999 (X on 1 digit if < 10) + } + //$search.=($search?' ':'').'SINCE 8-Apr-2018'; } - if ($rule['type'] == 'withtrackingidinmsgid') { - $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; - } - if ($rule['type'] == 'withouttrackingidinmsgid') { - $searchfilterdoltrackid++; $searchhead .= '/Message-ID.*@'.preg_quote($host, '/').'/'; - } - if ($rule['type'] == 'withtrackingid') { - $searchfilterdoltrackid++; $searchhead .= '/References.*@'.preg_quote($host, '/').'/'; - } - if ($rule['type'] == 'withouttrackingid') { - $searchfilternodoltrackid++; $searchhead .= '! /References.*@'.preg_quote($host, '/').'/'; - } - - if ($rule['type'] == 'isanswer') { - $searchfilterisanswer++; $searchhead .= '/References.*@.*/'; - } - if ($rule['type'] == 'isnotanswer') { - $searchfilterisnotanswer++; $searchhead .= '! /References.*@.*/'; - } + dol_syslog("IMAP search string = ".$search); + //var_dump($search); } - if (empty($targetdir)) { // Use last date as filter if there is no targetdir defined. - $fromdate = 0; - if ($this->datelastok) { - $fromdate = $this->datelastok; - } - if ($fromdate > 0) { - $search .= ($search ? ' ' : '').'SINCE '.date('j-M-Y', $fromdate - 1); // SENTSINCE not supported. Date must be X-Abc-9999 (X on 1 digit if < 10) - } - //$search.=($search?' ':'').'SINCE 8-Apr-2018'; - } - dol_syslog("IMAP search string = ".$search); - //var_dump($search); - $nbemailprocessed = 0; $nbemailok = 0; $nbactiondone = 0; $charset = ($this->hostcharset ? $this->hostcharset : "UTF-8"); - // Scan IMAP inbox - $arrayofemail = imap_search($connection, $search, null, $charset); - if ($arrayofemail === false) { - // Nothing found or search string not understood - $mapoferrrors = imap_errors(); - if ($mapoferrrors !== false) { - $error++; - $this->error = "Search string not understood - ".join(',', $mapoferrrors); + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + try { + //$criteria = [['ALL']]; + //$Query = $client->getFolders()[0]->messages()->where($criteria); + $f = $client->getFolders(false, $this->source_directory); + $Query = $f[0]->messages()->where($criteria); + } catch (InvalidWhereQueryCriteriaException $e) { + $this->error = $e->getMessage(); $this->errors[] = $this->error; + dol_syslog("EmailCollector::doCollectOneCollector ".$this->error, LOG_ERR); + return -1; + } catch (Exception $e) { + $this->error = $e->getMessage(); + $this->errors[] = $this->error; + dol_syslog("EmailCollector::doCollectOneCollector ".$this->error, LOG_ERR); + return -1; + } + + try { + //var_dump($Query->count()); + $arrayofemail = $Query->limit($this->maxemailpercollect)->setFetchOrder("asc")->get(); + //var_dump($arrayofemail); + } catch (Exception $e) { + $this->error = $e->getMessage(); + $this->errors[] = $this->error; + dol_syslog("EmailCollector::doCollectOneCollector ".$this->error, LOG_ERR); + return -1; + } + } else { + // Scan IMAP inbox + $arrayofemail = imap_search($connection, $search, null, $charset); + if ($arrayofemail === false) { + // Nothing found or search string not understood + $mapoferrrors = imap_errors(); + if ($mapoferrrors !== false) { + $error++; + $this->error = "Search string not understood - ".join(',', $mapoferrrors); + $this->errors[] = $this->error; + } } } @@ -1128,77 +1422,20 @@ class EmailCollector extends CommonObject if (!$error && !empty($arrayofemail) && count($arrayofemail) > 0) { // Loop to get part html and plain /* - 0 multipart/mixed - 1 multipart/alternative - 1.1 text/plain - 1.2 text/html - 2 message/rfc822 - 2 multipart/mixed - 2.1 multipart/alternative - 2.1.1 text/plain - 2.1.2 text/html - 2.2 message/rfc822 - 2.2 multipart/alternative - 2.2.1 text/plain - 2.2.2 text/html + 0 multipart/mixed + 1 multipart/alternative + 1.1 text/plain + 1.2 text/html + 2 message/rfc822 + 2 multipart/mixed + 2.1 multipart/alternative + 2.1.1 text/plain + 2.1.2 text/html + 2.2 message/rfc822 + 2.2 multipart/alternative + 2.2.1 text/plain + 2.2.2 text/html */ - /** - * create_part_array - * - * @param Object $structure Structure - * @param string $prefix prefix - * @return array Array with number and object - */ - /*function createPartArray($structure, $prefix = "") - { - //print_r($structure); - $part_array=array(); - if (count($structure->parts) > 0) { // There some sub parts - foreach ($structure->parts as $count => $part) { - addPartToArray($part, $prefix.($count+1), $part_array); - } - }else{ // Email does not have a seperate mime attachment for text - $part_array[] = array('part_number' => $prefix.'1', 'part_object' => $structure); - } - return $part_array; - }*/ - - /** - * Sub function for createPartArray(). Only called by createPartArray() and itself. - * - * @param Object $obj Structure - * @param string $partno Part no - * @param array $part_array array - * @return void - */ - /*function addPartToArray($obj, $partno, &$part_array) - { - $part_array[] = array('part_number' => $partno, 'part_object' => $obj); - if ($obj->type == 2) { // Check to see if the part is an attached email message, as in the RFC-822 type - //print_r($obj); - if (array_key_exists('parts', $obj)) { // Check to see if the email has parts - foreach ($obj->parts as $count => $part) { - // Iterate here again to compensate for the broken way that imap_fetchbody() handles attachments - if (count($part->parts) > 0) { - foreach ($part->parts as $count2 => $part2) { - addPartToArray($part2, $partno.".".($count2+1), $part_array); - } - }else{ // Attached email does not have a seperate mime attachment for text - $part_array[] = array('part_number' => $partno.'.'.($count+1), 'part_object' => $obj); - } - } - }else{ // Not sure if this is possible - $part_array[] = array('part_number' => $partno.'.1', 'part_object' => $obj); - } - }else{ // If there are more sub-parts, expand them out. - if (array_key_exists('parts', $obj)) { - foreach ($obj->parts as $count => $p) { - addPartToArray($p, $partno.".".($count+1), $part_array); - } - } - } - }*/ - dol_syslog("Start of loop on email", LOG_INFO, 1); $iforemailloop = 0; @@ -1206,23 +1443,25 @@ class EmailCollector extends CommonObject if ($nbemailprocessed > 1000) { break; // Do not process more than 1000 email per launch (this is a different protection than maxnbcollectedpercollect) } - $iforemailloop++; + // GET header and overview datas + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + $header = $imapemail->getHeader()->raw; + $overview = $imapemail->getAttributes(); + } else { + //$header = imap_headerinfo($connection, $imapemail); + $header = imap_fetchheader($connection, $imapemail, 0); + $overview = imap_fetch_overview($connection, $imapemail, 0); + } - $header = imap_fetchheader($connection, $imapemail, 0); - $overview = imap_fetch_overview($connection, $imapemail, 0); - - // print $header; - // var_dump($overview); - - // Process $header of email $header = preg_replace('/\r\n\s+/m', ' ', $header); // When a header line is on several lines, merge lines $matches = array(); preg_match_all('/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $header, $matches); $headers = array_combine($matches[1], $matches[2]); + //var_dump($headers);exit; if (!empty($headers['in-reply-to']) && empty($headers['In-Reply-To'])) { $headers['In-Reply-To'] = $headers['in-reply-to']; @@ -1233,12 +1472,15 @@ class EmailCollector extends CommonObject if (!empty($headers['message-id']) && empty($headers['Message-ID'])) { $headers['Message-ID'] = $headers['message-id']; } + if (!empty($headers['subject']) && empty($headers['Subject'])) { + $headers['Subject'] = $headers['subject']; + } $headers['Subject'] = $this->decodeSMTPSubject($headers['Subject']); dol_syslog("** Process email ".$iforemailloop." References: ".$headers['References']." Subject: ".$headers['Subject']); - //print "Process mail ".$iforemailloop." Subject: ".dol_escape_htmltag($headers['Subject'])." References: ".dol_escape_htmltag($headers['References'])." In-Reply-To: ".dol_escape_htmltag($headers['In-Reply-To'])."
\n"; + // If there is a filter on trackid if ($searchfilterdoltrackid > 0) { @@ -1313,21 +1555,38 @@ class EmailCollector extends CommonObject $this->db->begin(); - dol_syslog("msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." from=".$overview[0]->from." to=".$overview[0]->to." subject=".$overview[0]->subject); + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + dol_syslog("msgid=".$overview['message_id']." date=".dol_print_date($overview['date'], 'dayrfc', 'gmt')." from=".$overview['from']." to=".$overview['to']." subject=".$overview['subject']); - $overview[0]->subject = $this->decodeSMTPSubject($overview[0]->subject); + // Removed emojis + $overview['subject'] = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $overview['subject']); + } else { + dol_syslog("msgid=".$overview[0]->message_id." date=".dol_print_date($overview[0]->udate, 'dayrfc', 'gmt')." from=".$overview[0]->from." to=".$overview[0]->to." subject=".$overview[0]->subject); - $overview[0]->from = $this->decodeSMTPSubject($overview[0]->from); + $overview[0]->subject = $this->decodeSMTPSubject($overview[0]->subject); - // Removed emojis - $overview[0]->subject = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $overview[0]->subject); + $overview[0]->from = $this->decodeSMTPSubject($overview[0]->from); + // Removed emojis + $overview[0]->subject = preg_replace('/[\x{10000}-\x{10FFFF}]/u', "\xEF\xBF\xBD", $overview[0]->subject); + } // GET IMAP email structure/content global $htmlmsg, $plainmsg, $charset, $attachments; - $this->getmsg($connection, $imapemail); - + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + if ($imapemail->hasHTMLBody()) { + $htmlmsg = $imapemail->getHTMLBody(); + } + if ($imapemail->hasTextBody()) { + $plainmsg = $imapemail->getTextBody(); + } + if ($imapemail->hasAttachments()) { + $attachments = $imapemail->getAttachments(); + } + } else { + $this->getmsg($connection, $imapemail); + } //print $plainmsg; //var_dump($plainmsg); exit; @@ -1391,16 +1650,29 @@ class EmailCollector extends CommonObject //print $messagetext; //exit; - $fromstring = $overview[0]->from; + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + $fromstring = $overview['from']; + + $sender = $overview['sender']; + $to = $overview['to']; + $sendtocc = empty($overview['cc']) ? '' : $overview['cc']; + $sendtobcc = empty($overview['bcc']) ? '' : $overview['bcc']; + $date = $overview['date']; + $msgid = str_replace(array('<', '>'), '', $overview['message_id']); + $subject = $overview['subject']; + } else { + $fromstring = $overview[0]->from; + + $sender = $overview[0]->sender; + $to = $overview[0]->to; + $sendtocc = $overview[0]->cc; + $sendtobcc = $overview[0]->bcc; + $date = $overview[0]->udate; + $msgid = str_replace(array('<', '>'), '', $overview[0]->message_id); + $subject = $overview[0]->subject; + //var_dump($msgid);exit; + } - $sender = $overview[0]->sender; - $to = $overview[0]->to; - $sendtocc = $overview[0]->cc; - $sendtobcc = $overview[0]->bcc; - $date = $overview[0]->udate; - $msgid = str_replace(array('<', '>'), '', $overview[0]->message_id); - $subject = $overview[0]->subject; - //var_dump($msgid);exit; $reg = array(); if (preg_match('/^(.*)<(.*)>$/', $fromstring, $reg)) { @@ -1778,8 +2050,9 @@ class EmailCollector extends CommonObject dol_syslog("Third party with id=".$idtouseforthirdparty." email=".$emailtouseforthirdparty." name=".$nametouseforthirdparty." was not found"); $errorforactions++; - $this->error = 'ErrorFailedToLoadThirdParty'; - $this->errors[] = 'ErrorFailedToLoadThirdParty'; + $langs->load("errors"); + $this->error = $langs->trans('ErrorFailedToLoadThirdParty', $idtouseforthirdparty, $emailtouseforthirdparty, $nametouseforthirdparty); + $this->errors[] = $this->error; } elseif ($operation['type'] == 'loadandcreatethirdparty') { dol_syslog("Third party with id=".$idtouseforthirdparty." email=".$emailtouseforthirdparty." name=".$nametouseforthirdparty." was not found. We try to create it."); @@ -1854,8 +2127,8 @@ class EmailCollector extends CommonObject $actioncomm->label = $langs->trans("ActionAC_".$actioncode).' - '.$langs->trans("MailFrom").' '.$from; $actioncomm->note_private = $descriptionfull; $actioncomm->fk_project = $projectstatic->id; - $actioncomm->datep = $date; - $actioncomm->datef = $date; + $actioncomm->datep = $date; // date of email + $actioncomm->datef = $date; // date of email $actioncomm->percentage = -1; // Not applicable $actioncomm->socid = $thirdpartystatic->id; $actioncomm->contact_id = $contactstatic->id; @@ -1909,49 +2182,49 @@ class EmailCollector extends CommonObject $data[$val['filename']] = getFileData($imapemail, $val['pos'], $val['type'], $connection); } if (count($pj) > 0) { - $sql = "SELECT rowid as id FROM " . MAIN_DB_PREFIX . "user WHERE email LIKE '%" . $from . "%'"; + $sql = "SELECT rowid as id FROM ".MAIN_DB_PREFIX."user WHERE email LIKE '%".$this->db->escape($from)."%'"; $resql = $this->db->query($sql); if ($this->db->num_rows($resql) == 0) { $this->errors[] = 'User Not allowed to add documents'; } $arrayobject = array( 'propale' => array('table' => 'propal', - 'fields' => array('ref'), - 'class' => 'comm/propal/class/propal.class.php', - 'object' => 'Propal'), + 'fields' => array('ref'), + 'class' => 'comm/propal/class/propal.class.php', + 'object' => 'Propal'), 'holiday' => array('table' => 'holiday', - 'fields' => array('ref'), - 'class' => 'holiday/class/holiday.class.php', - 'object' => 'Holiday'), + 'fields' => array('ref'), + 'class' => 'holiday/class/holiday.class.php', + 'object' => 'Holiday'), 'expensereport' => array('table' => 'expensereport', - 'fields' => array('ref'), - 'class' => 'expensereport/class/expensereport.class.php', - 'object' => 'ExpenseReport'), + 'fields' => array('ref'), + 'class' => 'expensereport/class/expensereport.class.php', + 'object' => 'ExpenseReport'), 'recruitment/recruitmentjobposition' => array('table' => 'recruitment_recruitmentjobposition', - 'fields' => array('ref'), - 'class' => 'recruitment/class/recruitmentjobposition.class.php', - 'object' => 'RecruitmentJobPosition'), + 'fields' => array('ref'), + 'class' => 'recruitment/class/recruitmentjobposition.class.php', + 'object' => 'RecruitmentJobPosition'), 'recruitment/recruitmentjobposition' => array('table' => 'recruitment_recruitmentcandidature', - 'fields' => array('ref'), - 'class' => 'recruitment/class/recruitmentcandidature.class.php', - 'object' => ' RecruitmentCandidature'), + 'fields' => array('ref'), + 'class' => 'recruitment/class/recruitmentcandidature.class.php', + 'object' => ' RecruitmentCandidature'), 'societe' => array('table' => 'societe', 'fields' => array('code_client', 'code_fournisseur'), 'class' => 'societe/class/societe.class.php', 'object' => 'Societe'), - 'commande' => array('table' => 'commande', + 'commande' => array('table' => 'commande', 'fields' => array('ref'), 'class' => 'commande/class/commande.class.php', 'object' => 'Commande'), - 'expedition' => array('table' => 'expedition', + 'expedition' => array('table' => 'expedition', 'fields' => array('ref'), 'class' => 'expedition/class/expedition.class.php', 'object' => 'Expedition'), - 'contract' => array('table' => 'contrat', + 'contract' => array('table' => 'contrat', 'fields' => array('ref'), 'class' => 'contrat/class/contrat.class.php', 'object' => 'Contrat'), - 'fichinter' => array('table' => 'fichinter', + 'fichinter' => array('table' => 'fichinter', 'fields' => array('ref'), 'class' => 'fichinter/class/fichinter.class.php', 'object' => 'Fichinter'), @@ -1959,51 +2232,51 @@ class EmailCollector extends CommonObject 'fields' => array('ref'), 'class' => 'ticket/class/ticket.class.php', 'object' => ' Ticket'), - 'knowledgemanagement' => array('table' => 'knowledgemanagement_knowledgerecord', + 'knowledgemanagement' => array('table' => 'knowledgemanagement_knowledgerecord', 'fields' => array('ref'), 'class' => 'knowledgemanagement/class/knowledgemanagement.class.php', 'object' => 'KnowledgeRecord'), - 'supplier_proposal' => array('table' => 'supplier_proposal', + 'supplier_proposal' => array('table' => 'supplier_proposal', 'fields' => array('ref'), 'class' => 'supplier_proposal/class/supplier_proposal.class.php', 'object' => 'SupplierProposal'), - 'fournisseur/commande' => array('table' => 'commande_fournisseur', + 'fournisseur/commande' => array('table' => 'commande_fournisseur', 'fields' => array('ref', 'ref_supplier'), 'class' => 'fourn/class/fournisseur.commande.class.php', 'object' => 'SupplierProposal'), - 'facture' => array('table' => 'facture', + 'facture' => array('table' => 'facture', 'fields' => array('ref'), 'class' => 'compta/facture/class/facture.class.php', 'object' => 'Facture'), - 'fournisseur/facture' => array('table' => 'facture_fourn', + 'fournisseur/facture' => array('table' => 'facture_fourn', 'fields' => array('ref', ref_client), 'class' => 'fourn/class/fournisseur.facture.class.php', 'object' => 'FactureFournisseur'), - 'produit' => array('table' => 'product', + 'produit' => array('table' => 'product', 'fields' => array('ref'), 'class' => 'product/class/product.class.php', 'object' => 'Product'), - 'productlot' => array('table' => 'product_lot', + 'productlot' => array('table' => 'product_lot', 'fields' => array('batch'), 'class' => 'product/stock/class/productlot.class.php', 'object' => 'Productlot'), - 'projet' => array('table' => 'projet', + 'projet' => array('table' => 'projet', 'fields' => array('ref'), 'class' => 'projet/class/projet.class.php', 'object' => 'Project'), - 'projet_task' => array('table' => 'projet_task', + 'projet_task' => array('table' => 'projet_task', 'fields' => array('ref'), 'class' => 'projet/class/task.class.php', 'object' => 'Task'), - 'ressource' => array('table' => 'resource', + 'ressource' => array('table' => 'resource', 'fields' => array('ref'), 'class' => 'ressource/class/dolressource.class.php', 'object' => 'Dolresource'), - 'bom' => array('table' => 'bom_bom', + 'bom' => array('table' => 'bom_bom', 'fields' => array('ref'), 'class' => 'bom/class/bom.class.php', 'object' => 'BOM'), - 'mrp' => array('table' => 'mrp_mo', + 'mrp' => array('table' => 'mrp_mo', 'fields' => array('ref'), 'class' => 'mrp/class/mo.class.php', 'object' => 'Mo'), @@ -2070,7 +2343,6 @@ class EmailCollector extends CommonObject } elseif ($operation['type'] == 'project') { // Create project / lead $projecttocreate = new Project($this->db); - $alreadycreated = $projecttocreate->fetch(0, '', '', $msgid); if ($alreadycreated == 0) { if ($thirdpartystatic->id > 0) { @@ -2102,7 +2374,7 @@ class EmailCollector extends CommonObject $percent_opp_status = dol_getIdFromCode($this->db, 'PROSP', 'c_lead_status', 'code', 'percent'); $projecttocreate->title = $subject; - $projecttocreate->date_start = $date; + $projecttocreate->date_start = $date; // date of email $projecttocreate->date_end = ''; $projecttocreate->opp_status = $id_opp_status; $projecttocreate->opp_percent = $percent_opp_status; @@ -2154,6 +2426,7 @@ class EmailCollector extends CommonObject $projecttocreate->ref = $defaultref; } + if ($errorforthisaction) { $errorforactions++; } else { @@ -2210,12 +2483,13 @@ class EmailCollector extends CommonObject $tickettocreate->severity_code = (!empty($conf->global->MAIN_EMAILCOLLECTOR_TICKET_SEVERITY_CODE) ? $conf->global->MAIN_EMAILCOLLECTOR_TICKET_SEVERITY_CODE : dol_getIdFromCode($this->db, 1, 'c_ticket_severity', 'use_default', 'code', 1)); $tickettocreate->origin_email = $from; $tickettocreate->fk_user_create = $user->id; - $tickettocreate->datec = $date; + $tickettocreate->datec = dol_now(); $tickettocreate->fk_project = $projectstatic->id; $tickettocreate->notify_tiers_at_create = 0; $tickettocreate->note_private = $descriptionfull; $tickettocreate->entity = $conf->entity; $tickettocreate->email_msgid = $msgid; + $tickettocreate->email_date = $date; //$tickettocreate->fk_contact = $contactstatic->id; $savesocid = $tickettocreate->socid; @@ -2276,10 +2550,13 @@ class EmailCollector extends CommonObject $this->errors = $tickettocreate->errors; } else { if ($attachments) { - $destdir = $conf->ticket->dir_output.'/'.$tickettocreate->ref; - if (!dol_is_dir($destdir)) { - dol_mkdir($destdir); - $this->getmsg($connection, $imapemail, $destdir); + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + $destdir = $conf->ticket->dir_output.'/'.$tickettocreate->ref; + if (!dol_is_dir($destdir)) { + return -1; + dol_mkdir($destdir); + $this->getmsg($connection, $imapemail, $destdir); + } } } } @@ -2310,12 +2587,13 @@ class EmailCollector extends CommonObject $candidaturetocreate->email = $from; //$candidaturetocreate->lastname = $langs->trans("Anonymous").' - '.$from; $candidaturetocreate->fk_user_creat = $user->id; - $candidaturetocreate->date_creation = $date; + $candidaturetocreate->date_creation = dol_now(); $candidaturetocreate->fk_project = $projectstatic->id; $candidaturetocreate->description = $description; $candidaturetocreate->note_private = $descriptionfull; $candidaturetocreate->entity = $conf->entity; $candidaturetocreate->email_msgid = $msgid; + $candidaturetocreate->email_date = $date; // date of email $candidaturetocreate->status = $candidaturetocreate::STATUS_DRAFT; //$candidaturetocreate->fk_contact = $contactstatic->id; @@ -2402,7 +2680,7 @@ class EmailCollector extends CommonObject 'header'=>$header, 'attachments'=>$attachments, ); - $reshook = $hookmanager->executeHooks('doCollectOneCollector', $parameters, $this, $operation['type']); + $reshook = $hookmanager->executeHooks('doColleimapctOneCollector', $parameters, $this, $operation['type']); if ($reshook < 0) { $errorforthisaction++; @@ -2413,6 +2691,7 @@ class EmailCollector extends CommonObject } } + if (!$errorforactions) { $nbactiondoneforemail++; } @@ -2420,22 +2699,26 @@ class EmailCollector extends CommonObject // Error for email or not ? if (!$errorforactions) { - if ($targetdir) { - dol_syslog("EmailCollector::doCollectOneCollector move message ".$imapemail." to ".$connectstringtarget, LOG_DEBUG); - $res = imap_mail_move($connection, $imapemail, $targetdir, 0); - if ($res == false) { - $errorforemail++; - $this->error = imap_last_error(); - $this->errors[] = $this->error; - dol_syslog(imap_last_error()); + if (empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + if ($targetdir) { + dol_syslog("EmailCollector::doCollectOneCollector move message ".$imapemail." to ".$connectstringtarget, LOG_DEBUG); + $res = imap_mail_move($connection, $imapemail, $targetdir, 0); + if ($res == false) { + $errorforemail++; + $this->error = imap_last_error(); + $this->errors[] = $this->error; + dol_syslog(imap_last_error()); + } + } else { + dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG); + // TODO Make the move } - } else { - dol_syslog("EmailCollector::doCollectOneCollector message ".$imapemail." to ".$connectstringtarget." was set to read", LOG_DEBUG); } } else { $errorforemail++; } + unset($objectemail); unset($projectstatic); unset($thirdpartystatic); @@ -2468,9 +2751,13 @@ class EmailCollector extends CommonObject $output = $langs->trans('NoNewEmailToProcess'); } - imap_expunge($connection); // To validate any move + if (!empty($conf->global->MAIN_IMAP_USE_PHPIMAP)) { + $client->disconnect(); + } else { + imap_expunge($connection); // To validate any move - imap_close($connection); + imap_close($connection); + } $this->datelastresult = $now; $this->lastresult = $output; @@ -2484,7 +2771,7 @@ class EmailCollector extends CommonObject } if (!empty($this->errors)) { - $this->lastresult .= " - ".join(" - ", $this->errors); + $this->lastresult .= "
".join("
", $this->errors); } $this->codelastresult = ($error ? 'KO' : 'OK'); $this->update($user); diff --git a/htdocs/eventorganization/class/conferenceorbooth.class.php b/htdocs/eventorganization/class/conferenceorbooth.class.php index 3df55ff48f3..a2eb140c789 100644 --- a/htdocs/eventorganization/class/conferenceorbooth.class.php +++ b/htdocs/eventorganization/class/conferenceorbooth.class.php @@ -105,8 +105,8 @@ class ConferenceOrBooth extends ActionComm public $fields = array( 'id' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'integer', 'label'=>'Ref', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>2, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), - 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"Help text", 'showoncombobox'=>'1',), - 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"LinkToThirparty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'), + 'label' => array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>'1', 'position'=>30, 'notnull'=>0, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth300', 'csslist'=>'tdoverflowmax125', 'help'=>"OrganizationEvenLabelName", 'showoncombobox'=>'1',), + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'$conf->societe->enabled', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'help'=>"OrganizationEventLinkToThirdParty", 'picto'=>'company', 'css'=>'tdoverflowmax150 maxwidth500'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1:t.usage_organize_event=1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'picto'=>'project', 'css'=>'tdoverflowmax150 maxwidth500'), 'note' => array('type'=>'text', 'label'=>'Description', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>1), 'fk_action' => array('type'=>'sellist:c_actioncomm:libelle:id::module LIKE (\'%@eventorganization\')', 'label'=>'Format', 'enabled'=>'1', 'position'=>60, 'notnull'=>1, 'visible'=>1, 'css'=>'width300'), diff --git a/htdocs/eventorganization/conferenceorbooth_card.php b/htdocs/eventorganization/conferenceorbooth_card.php index 0d5991bb0ac..ac64a16602f 100644 --- a/htdocs/eventorganization/conferenceorbooth_card.php +++ b/htdocs/eventorganization/conferenceorbooth_card.php @@ -185,7 +185,9 @@ if (!empty($withproject)) { // Tabs for project $tab = 'eventorganisation'; $withProjectUrl = "&withproject=1"; + $head = project_prepare_head($projectstatic); + print dol_get_fiche_head($head, $tab, $langs->trans("Project"), -1, ($projectstatic->public ? 'projectpub' : 'project'), 0, '', ''); $param = ($mode == 'mine' ? '&mode=mine' : ''); @@ -468,6 +470,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $res = $object->fetch_optionals(); $head = conferenceorboothPrepareHead($object, $withproject); + print dol_get_fiche_head($head, 'card', $langs->trans("ConferenceOrBooth"), -1, $object->picto); $formconfirm = ''; diff --git a/htdocs/eventorganization/conferenceorbooth_document.php b/htdocs/eventorganization/conferenceorbooth_document.php index 739e6f81036..4a5b368df02 100644 --- a/htdocs/eventorganization/conferenceorbooth_document.php +++ b/htdocs/eventorganization/conferenceorbooth_document.php @@ -58,7 +58,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/eventorganization/conferenceorboothattendee_list.php b/htdocs/eventorganization/conferenceorboothattendee_list.php index 972e546255f..c1626f7bbf3 100644 --- a/htdocs/eventorganization/conferenceorboothattendee_list.php +++ b/htdocs/eventorganization/conferenceorboothattendee_list.php @@ -947,7 +947,7 @@ if ($num == 0) { $colspan++; } } - print '
'.$langs->trans("NoRecordFound").'
'.$langs->trans("NoRecordFound").'
'; @@ -1311,10 +1315,10 @@ if ($action == 'create') { $detail = ''; $detail .= $langs->trans("Batch").': '.$dbatch->batch; - if (empty($conf->global->PRODUCT_DISABLE_SELLBY)) { + if (empty($conf->global->PRODUCT_DISABLE_SELLBY) && !empty($dbatch->sellby)) { $detail .= ' - '.$langs->trans("SellByDate").': '.dol_print_date($dbatch->sellby, "day"); } - if (empty($conf->global->PRODUCT_DISABLE_EATBY)) { + if (empty($conf->global->PRODUCT_DISABLE_EATBY) && !empty($dbatch->eatby)) { $detail .= ' - '.$langs->trans("EatByDate").': '.dol_print_date($dbatch->eatby, "day"); } $detail .= ' - '.$langs->trans("Qty").': '.$dbatch->qty; @@ -1522,6 +1526,12 @@ if ($action == 'create') { } else { print 'TableLotIncompleteRunRepairWithParamStandardEqualConfirmed'; } + if (empty($conf->global->PRODUCT_DISABLE_SELLBY) && !empty($dbatch->sellby)) { + print ' - '.$langs->trans("SellByDate").': '.dol_print_date($dbatch->sellby, "day"); + } + if (empty($conf->global->PRODUCT_DISABLE_EATBY) && !empty($dbatch->eatby)) { + print ' - '.$langs->trans("EatByDate").': '.dol_print_date($dbatch->eatby, "day"); + } print ' ('.$dbatch->qty.')'; $quantityToBeDelivered -= $deliverableQty; if ($quantityToBeDelivered < 0) { @@ -1708,7 +1718,7 @@ if ($action == 'create') { $objectsrc = new Commande($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); } @@ -1777,7 +1787,7 @@ if ($action == 'create') { print "
'; print $langs->trans("RefProposal").''; @@ -2565,8 +2575,8 @@ if ($action == 'create') { // Show links to link elements - //$linktoelem = $form->showLinkToObjectBlock($object, null, array('order')); - $somethingshown = $form->showLinkedObjectBlock($object, ''); + $linktoelem = $form->showLinkToObjectBlock($object, null, array('shipping')); + $somethingshown = $form->showLinkedObjectBlock($object, $linktoelem); print '
'; diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 2de87f93666..5df7108e895 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -37,7 +37,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT."/core/class/commonobjectline.class.php"; require_once DOL_DOCUMENT_ROOT.'/core/class/commonincoterm.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->commande->enabled)) { @@ -752,7 +752,7 @@ class Expedition extends CommonObject //var_dump($this->lines[$i]); $mouvS = new MouvementStock($this->db); - //$mouvS->origin = dol_clone($this, 1); + $mouvS->setOrigin($this->element, $this->id); if (empty($obj->edbrowid)) { @@ -898,6 +898,7 @@ class Expedition extends CommonObject * Add an expedition line. * If STOCK_WAREHOUSE_NOT_REQUIRED_FOR_SHIPMENTS is set, you can add a shipment line, with no stock source defined * If STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT is not set, you can add a shipment line, even if not enough into stock + * Note: For product that need a batch number, you must use addline_batch() * * @param int $entrepot_id Id of warehouse * @param int $id Id of source line (order line) diff --git a/htdocs/expedition/contact.php b/htdocs/expedition/contact.php index 669c6f8e56d..112d35a63aa 100644 --- a/htdocs/expedition/contact.php +++ b/htdocs/expedition/contact.php @@ -57,7 +57,7 @@ if ($id > 0 || !empty($ref)) { $objectsrc = new Commande($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); } @@ -206,7 +206,7 @@ if ($id > 0 || !empty($ref)) { print "
'; $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); diff --git a/htdocs/expedition/list.php b/htdocs/expedition/list.php index 6b67f419da5..adc80e27b64 100644 --- a/htdocs/expedition/list.php +++ b/htdocs/expedition/list.php @@ -611,7 +611,7 @@ if (!empty($moreforfilter)) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); if ($massactionbutton) { $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); // This also change content of $arrayfields } @@ -621,6 +621,13 @@ print ''; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} // Ref if (!empty($arrayfields['e.ref']['checked'])) { print ''; } // Action column -print ''; +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print "\n"; print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} if (!empty($arrayfields['e.ref']['checked'])) { print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", "", $param, '', $sortfield, $sortorder); } @@ -809,7 +821,9 @@ if (!empty($arrayfields['e.fk_statut']['checked'])) { if (!empty($arrayfields['e.billed']['checked'])) { print_liste_field_titre($arrayfields['e.billed']['label'], $_SERVER["PHP_SELF"], "e.billed", "", $param, '', $sortfield, $sortorder, 'center '); } -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} print "\n"; $typenArray = $formcompany->typent_array(1); @@ -832,6 +846,18 @@ while ($i < min($num, $limit)) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } // Ref if (!empty($arrayfields['e.ref']['checked'])) { print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/expedition/note.php b/htdocs/expedition/note.php index e391d5be180..c8fc0ff35be 100644 --- a/htdocs/expedition/note.php +++ b/htdocs/expedition/note.php @@ -55,7 +55,7 @@ if ($id > 0 || !empty($ref)) { $objectsrc = new Commande($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); } diff --git a/htdocs/expedition/shipment.php b/htdocs/expedition/shipment.php index a64e6c2b761..0be623ab6bf 100644 --- a/htdocs/expedition/shipment.php +++ b/htdocs/expedition/shipment.php @@ -40,10 +40,10 @@ if (!empty($conf->project->enabled)) { if (!empty($conf->stock->enabled)) { require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } @@ -231,7 +231,7 @@ if (!empty($conf->project->enabled)) { $formproject = new FormProjets($db); } -$title = $langs->trans('Order')." - ".$langs->trans('Shipments'); +$title = $object->ref." - ".$langs->trans('Shipments'); $help_url = 'EN:Customers_Orders|FR:Commandes_Clients|ES:Pedidos de clientes|DE:Modul_Kundenaufträge'; llxHeader('', $title, $help_url); @@ -610,7 +610,7 @@ if ($id > 0 || !empty($ref)) { * Lines or orders with quantity shipped and remain to ship * Note: Qty shipped are already available into $object->expeditions[fk_product] */ - print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; @@ -742,13 +749,18 @@ if (!empty($arrayfields['e.billed']['checked'])) { print ''; -$searchpicto = $form->showFilterAndCheckAddButtons(0); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterAndCheckAddButtons(0); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -1008,15 +1034,17 @@ while ($i < min($num, $limit)) { } // Action column - print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print '
'; + print '
'; $sql = "SELECT cd.rowid, cd.fk_product, cd.product_type as type, cd.label, cd.description,"; $sql .= " cd.price, cd.tva_tx, cd.subprice,"; @@ -635,18 +635,19 @@ if ($id > 0 || !empty($ref)) { if ($resql) { $num = $db->num_rows($resql); $i = 0; - + print ''; print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; if (!empty($conf->stock->enabled)) { - print ''; + print ''; } else { - print ''; + print ''; } print "\n"; + print ''; $toBeShipped = array(); $toBeShippedTotal = 0; @@ -797,6 +798,10 @@ if ($id > 0 || !empty($ref)) { print $product->stock_reel; if ($product->stock_reel < $toBeShipped[$objp->fk_product]) { print ' '.img_warning($langs->trans("StockTooLow")); + if (!empty($conf->global->STOCK_CORRECT_STOCK_IN_SHIPMENT)) { + $nbPiece = $toBeShipped[$objp->fk_product] - $product->stock_reel; + print '   '.$langs->trans("GoTo").' '.$langs->trans("CorrectStock").''; + } } print ''; } else { diff --git a/htdocs/expedition/tpl/linkedobjectblock.tpl.php b/htdocs/expedition/tpl/linkedobjectblock.tpl.php index 2305b0d4fac..8825cde4b67 100644 --- a/htdocs/expedition/tpl/linkedobjectblock.tpl.php +++ b/htdocs/expedition/tpl/linkedobjectblock.tpl.php @@ -60,8 +60,7 @@ foreach ($linkedObjectBlock as $key => $objectlink) { // For now, shipments must stay linked to order, so link is not deletable if ($object->element != 'commande') { ?> - ">transnoentitiesnoconv("RemoveLink"), 'unlink'); ?> - id.'&token='.newToken().'&action=dellink&dellinkid='.$key; ?>">transnoentitiesnoconv("RemoveLink"), 'unlink'); ?> diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index a877b659141..4110ba98e1b 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -138,7 +138,7 @@ $candelete = 0; if (!empty($user->rights->expensereport->supprimer)) { $candelete = 1; } -if ($object->statut == ExpenseReport::STATUS_DRAFT && !empty($user->rights->expensereport->write) && in_array($object->fk_user_author, $childids)) { +if ($object->statut == ExpenseReport::STATUS_DRAFT && $user->hasRight('expensereport', 'write') && in_array($object->fk_user_author, $childids)) { $candelete = 1; } @@ -263,7 +263,7 @@ if (empty($reshook)) { if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->expensereport->creer)) || (!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->expensereport->creer) && empty($user->rights->expensereport->writeall_advance))) { $error++; - setEventMessages($langs->trans("NotEnoughPermission"), null, 'errors'); + setEventMessages($langs->trans("NotEnoughPermissions"), null, 'errors'); } if (!$error) { if (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->expensereport->writeall_advance)) { @@ -383,10 +383,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -493,10 +493,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -603,10 +603,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -717,10 +717,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -831,10 +831,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -943,10 +943,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -982,10 +982,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1011,10 +1011,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1229,10 +1229,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1321,10 +1321,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1930,7 +1930,7 @@ if ($action == 'create') { // List of payments already done $nbcols = 3; $nbrows = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbrows++; $nbcols++; } @@ -1941,7 +1941,7 @@ if ($action == 'create') { print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -1950,7 +1950,7 @@ if ($action == 'create') { // Payments already done (from payment on this expensereport) $sql = "SELECT p.rowid, p.num_payment, p.datep as dp, p.amount, p.fk_bank,"; - $sql .= "c.code as p_code, c.libelle as payment_type,"; + $sql .= "c.code as payment_code, c.libelle as payment_type,"; $sql .= "ba.rowid as baid, ba.ref as baref, ba.label, ba.number as banumber, ba.account_number, ba.fk_accountancy_journal"; $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e, ".MAIN_DB_PREFIX."payment_expensereport as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as c ON p.fk_typepayment = c.id"; @@ -1969,19 +1969,21 @@ if ($action == 'create') { $objp = $db->fetch_object($resql); $paymentexpensereportstatic->id = $objp->rowid; - $paymentexpensereportstatic->datepaye = $db->jdate($objp->dp); + $paymentexpensereportstatic->datep = $db->jdate($objp->dp); $paymentexpensereportstatic->ref = $objp->rowid; $paymentexpensereportstatic->num_payment = $objp->num_payment; - $paymentexpensereportstatic->payment_code = $objp->payment_code; + $paymentexpensereportstatic->type_code = $objp->payment_code; + $paymentexpensereportstatic->type_label = $objp->payment_type; print ''; print ''; print '\n"; - $labeltype = $langs->trans("PaymentType".$objp->p_code) != ("PaymentType".$objp->p_code) ? $langs->trans("PaymentType".$objp->p_code) : $objp->payment_type; + $labeltype = $langs->trans("PaymentType".$objp->payment_code) != ("PaymentType".$objp->payment_code) ? $langs->trans("PaymentType".$objp->payment_code) : $objp->payment_type; print "\n"; - if (!empty($conf->banque->enabled)) { + // Bank account + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; @@ -2765,7 +2767,7 @@ if ($action != 'create' && $action != 'edit' && $action != 'editline') { } // If bank module is used - if ($user->rights->expensereport->to_paid && !empty($conf->banque->enabled) && $object->status == ExpenseReport::STATUS_APPROVED) { + if ($user->rights->expensereport->to_paid && isModEnabled("banque") && $object->status == ExpenseReport::STATUS_APPROVED) { // Pay if ($remaintopay == 0) { print '
'.$langs->trans('DoPayment').'
'; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index da93c26ceaa..ca8f1698767 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -129,6 +129,10 @@ class ExpenseReport extends CommonObject public $localtax1; // for backward compatibility (real field should be total_localtax1 defined into CommonObject) public $localtax2; // for backward compatibility (real field should be total_localtax2 defined into CommonObject) + public $statuts = array(); + public $statuts_short = array(); + public $statuts_logo; + /** * Draft status diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 5f9e9f17e6f..e871cba86b3 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -137,14 +137,17 @@ class PaymentExpenseReport extends CommonObject if (isset($this->note_public)) { $this->note_public = trim($this->note_public); } + if (isset($this->note_private)) { + $this->note_private = trim($this->note_private); + } if (isset($this->fk_bank)) { - $this->fk_bank = trim($this->fk_bank); + $this->fk_bank = ((int) $this->fk_bank); } if (isset($this->fk_user_creat)) { - $this->fk_user_creat = trim($this->fk_user_creat); + $this->fk_user_creat = ((int) $this->fk_user_creat); } if (isset($this->fk_user_modif)) { - $this->fk_user_modif = trim($this->fk_user_modif); + $this->fk_user_modif = ((int) $this->fk_user_modif); } $totalamount = 0; @@ -170,7 +173,7 @@ class PaymentExpenseReport extends CommonObject $sql .= " '".$this->db->idate($this->datepaid)."',"; $sql .= " ".price2num($totalamount).","; $sql .= " ".((int) $this->fk_typepayment).", '".$this->db->escape($this->num_payment)."', '".$this->db->escape($this->note_public)."', ".((int) $user->id).","; - $sql .= " 0)"; + $sql .= " 0)"; // fk_bank is ID of transaction into ll_bank dol_syslog(get_class($this)."::create", LOG_DEBUG); $resql = $this->db->query($sql); @@ -513,7 +516,7 @@ class PaymentExpenseReport extends CommonObject $error = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); @@ -540,7 +543,7 @@ class PaymentExpenseReport extends CommonObject ); // Update fk_bank in llx_paiement. - // On connait ainsi le paiement qui a genere l'ecriture bancaire + // So we wil know the payment that have generated the bank transaction if ($bank_line_id > 0) { $result = $this->update_fk_bank($bank_line_id); if ($result <= 0) { @@ -585,6 +588,7 @@ class PaymentExpenseReport extends CommonObject } } else { $this->error = $acc->error; + $this->errors = $acc->errors; $error++; } } diff --git a/htdocs/expensereport/list.php b/htdocs/expensereport/list.php index 24432cb7cf1..38f85c6c006 100644 --- a/htdocs/expensereport/list.php +++ b/htdocs/expensereport/list.php @@ -482,7 +482,7 @@ if ($resql) { if ($canedit) { print ''.$langs->trans("AddTrip").''; } else { - print ''.$langs->trans("AddTrip").''; + print ''.$langs->trans("AddTrip").''; } print ''; diff --git a/htdocs/expensereport/payment/card.php b/htdocs/expensereport/payment/card.php index 847c059a9c6..c24689a9d69 100644 --- a/htdocs/expensereport/payment/card.php +++ b/htdocs/expensereport/payment/card.php @@ -26,7 +26,7 @@ require_once DOL_DOCUMENT_ROOT.'/expensereport/class/expensereport.class.php'; require_once DOL_DOCUMENT_ROOT.'/expensereport/class/paymentexpensereport.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/expensereport/modules_expensereport.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/expensereport.lib.php'; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; } @@ -120,7 +120,7 @@ print ''; // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && isModEnabled("banque")) { $langs->load("bank"); print ''; print ''; if (!empty($arrayfields['cpl.rowid']['checked'])) { - print_liste_field_titre($arrayfields['cpl.rowid']['label'], $_SERVER["PHP_SELF"], 'rowid', '', '', '', $sortfield, $sortorder); + print_liste_field_titre($arrayfields['cpl.rowid']['label'], $_SERVER["PHP_SELF"], 'cpl.rowid', '', '', '', $sortfield, $sortorder); } if (!empty($arrayfields['cpl.date_action']['checked'])) { print_liste_field_titre($arrayfields['cpl.date_action']['label'], $_SERVER["PHP_SELF"], 'date_action', '', '', '', $sortfield, $sortorder, 'center '); @@ -484,11 +484,12 @@ while ($i < min($num, $limit)) { // Description if (!empty($arrayfields['cpl.type_action']['checked'])) { - print ''; + print ''; } // Type if (!empty($arrayfields['cpl.fk_type']['checked'])) { + $label = ''; if (!empty($alltypeleaves[$holidaylogstatic->type])) { if ($alltypeleaves[$holidaylogstatic->type]['code'] && $langs->trans($alltypeleaves[$holidaylogstatic->type]['code']) != $alltypeleaves[$holidaylogstatic->type]['code']) { $label = $langs->trans($alltypeleaves[$holidaylogstatic->type]['code']); @@ -510,8 +511,13 @@ while ($i < min($num, $limit)) { // Variation if (!empty($arrayfields['variation']['checked'])) { $delta = price2num($holidaylogstatic->balance_new - $holidaylogstatic->balance_previous, 5); - $detasign = ($delta > 0 ? '+' : ''); - print ''; + print ''; } // New Balance diff --git a/htdocs/hrm/admin/admin_establishment.php b/htdocs/hrm/admin/admin_establishment.php index bf1886f4bca..223f8a720d5 100644 --- a/htdocs/hrm/admin/admin_establishment.php +++ b/htdocs/hrm/admin/admin_establishment.php @@ -40,6 +40,24 @@ $permissiontoadd = $user->admin; if (empty($conf->hrm->enabled)) accessforbidden(); if (empty($permissiontoread)) accessforbidden(); +$sortorder = GETPOST('sortorder', 'aZ09comma'); +$sortfield = GETPOST('sortfield', 'aZ09comma'); +if (!$sortorder) { + $sortorder = "DESC"; +} +if (!$sortfield) { + $sortfield = "e.rowid"; +} + +if (empty($page) || $page == -1) { + $page = 0; +} + +$offset = $limit * $page; +$pageprev = $page - 1; +$pagenext = $page + 1; +$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; + /* * Actions @@ -59,46 +77,50 @@ $title = $langs->trans('Establishments'); llxHeader('', $title, ''); -$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; -$sortorder = GETPOST('sortorder', 'aZ09comma'); -$sortfield = GETPOST('sortfield', 'aZ09comma'); -if (!$sortorder) { - $sortorder = "DESC"; -} -if (!$sortfield) { - $sortfield = "e.rowid"; -} - -if (empty($page) || $page == -1) { - $page = 0; -} - -$offset = $limit * $page; -$pageprev = $page - 1; -$pagenext = $page + 1; -$limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; // Subheader $linkback = ''.$langs->trans("BackToModuleList").''; print load_fiche_titre($langs->trans("HRMSetup"), $linkback, 'title_setup'); -$newcardbutton = dolGetButtonTitle($langs->trans('NewEstablishment'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/hrm/establishment/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); // Configuration header $head = hrmAdminPrepareHead(); -print dol_get_fiche_head($head, 'establishments', $langs->trans("HRM"), -1, "user", 0, $newcardbutton); +print dol_get_fiche_head($head, 'establishments', $langs->trans("HRM"), -1, "hrm", 0, ''); + +$param = ''; $sql = "SELECT e.rowid, e.rowid as ref, e.label, e.address, e.zip, e.town, e.status"; $sql .= " FROM ".MAIN_DB_PREFIX."establishment as e"; $sql .= " WHERE e.entity IN (".getEntity('establishment').')'; + +// Count total nb of records +$nbtotalofrecords = ''; +if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { + $resql = $db->query($sql); + $nbtotalofrecords = $db->num_rows($resql); + + if (($page * $limit) > $nbtotalofrecords) { // if total of record found is smaller than page * limit, goto and load page 0 + $page = 0; + $offset = 0; + } + $db->free($resql); +} + $sql .= $db->order($sortfield, $sortorder); $sql .= $db->plimit($limit + 1, $offset); + +$newcardbutton = dolGetButtonTitle($langs->trans('NewEstablishment'), '', 'fa fa-plus-circle', DOL_URL_ROOT.'/hrm/establishment/card.php?action=create&backtopage='.urlencode($_SERVER['PHP_SELF']), '', $permissiontoadd); + +print_barre_liste($title, $page, $_SERVER["PHP_SELF"], $param, $sortfield, $sortorder, '', 0, $nbtotalofrecords, '', 0, $newcardbutton, '', $limit, 0, 0, 1); + + $result = $db->query($sql); if ($result) { $num = $db->num_rows($result); $i = 0; + print '
'; // You can use div-table-responsive-no-min if you dont need reserved height for your table print '
'.$langs->trans("Description").''.$langs->trans("QtyOrdered").''.$langs->trans("QtyShipped").''.$langs->trans("KeepToShip").''.$langs->trans("Description").''.$langs->trans("QtyOrdered").''.$langs->trans("QtyShipped").''.$langs->trans("KeepToShip").''.$langs->trans("RealStock").''.$langs->trans("RealStock").'  
'.$langs->trans('Payments').''.$langs->trans('Date').''.$langs->trans('Type').''.$langs->trans('BankAccount').''.$langs->trans('Amount').'
'; print $paymentexpensereportstatic->getNomUrl(1); print ''.dol_print_date($db->jdate($objp->dp), 'day')."".$labeltype.' '.$objp->num_payment."
'.$langs->trans('Note').''.nl2 $disable_delete = 0; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/expensereport/payment/list.php b/htdocs/expensereport/payment/list.php index 3f3e017612d..5a08c30f636 100644 --- a/htdocs/expensereport/payment/list.php +++ b/htdocs/expensereport/payment/list.php @@ -103,7 +103,7 @@ $arrayfields = array( 'u.login' =>array('label'=>"User", 'checked'=>1, 'position'=>30), 'c.libelle' =>array('label'=>"Type", 'checked'=>1, 'position'=>40), 'pndf.num_payment' =>array('label'=>"Numero", 'checked'=>1, 'position'=>50, 'tooltip'=>"ChequeOrTransferNumber"), - 'ba.label' =>array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enable'=>(!empty($conf->banque->enabled))), + 'ba.label' =>array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enable'=>(isModEnabled("banque"))), 'pndf.amount' =>array('label'=>"Amount", 'checked'=>1, 'position'=>70), ); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/expensereport/payment/payment.php b/htdocs/expensereport/payment/payment.php index 185b3cdc139..74e0c63151b 100644 --- a/htdocs/expensereport/payment/payment.php +++ b/htdocs/expensereport/payment/payment.php @@ -75,7 +75,8 @@ if ($action == 'add_payment') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $error++; } - if (!empty($conf->banque->enabled) && !($accountid > 0)) { + + if (isModEnabled("banque") && !($accountid > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToDebit")), null, 'errors'); $error++; } @@ -87,14 +88,16 @@ if ($action == 'add_payment') { // Read possible payments foreach ($_POST as $key => $value) { if (substr($key, 0, 7) == 'amount_') { - $amounts[$expensereport->fk_user_author] = price2num(GETPOST($key)); - $total += price2num(GETPOST($key)); + if (GETPOST($key)) { + $amounts[$expensereport->fk_user_author] = price2num(GETPOST($key)); + $total += price2num(GETPOST($key)); + } } } if (count($amounts) <= 0) { $error++; - $errmsg = 'ErrorNoPaymentDefined'; + setEventMessages('ErrorNoPaymentDefined', null, 'errors'); } if (!$error) { @@ -109,6 +112,7 @@ if ($action == 'add_payment') { $payment->fk_typepayment = GETPOST("fk_typepayment", 'int'); $payment->num_payment = GETPOST("num_payment", 'alphanothtml'); $payment->note_public = GETPOST("note_public", 'restricthtml'); + $payment->fk_bank = $accountid; if (!$error) { $paymentid = $payment->create($user); @@ -120,7 +124,7 @@ if ($action == 'add_payment') { if (!$error) { $result = $payment->addPaymentToBank($user, 'payment_expensereport', '(ExpenseReportPayment)', $accountid, '', ''); - if (!$result > 0) { + if ($result <= 0) { setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } @@ -130,7 +134,7 @@ if ($action == 'add_payment') { $payment->fetch($paymentid); if ($expensereport->total_ttc - $payment->amount == 0) { $result = $expensereport->setPaid($expensereport->id, $user); - if (!$result > 0) { + if (!($result > 0)) { setEventMessages($payment->error, $payment->errors, 'errors'); $error++; } @@ -202,7 +206,7 @@ if ($action == 'create' || empty($action)) { print ''."\n"; print ''; - print ''; + print ''; $sql = "SELECT sum(p.amount) as total"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_expensereport as p, ".MAIN_DB_PREFIX."expensereport as e"; @@ -214,8 +218,8 @@ if ($action == 'create' || empty($action)) { $sumpaid = $obj->total; $db->free($resql); } - print ''; - print ''; + print ''; + print ''; print '
'.$langs->trans("Period").''.get_date_range($expensereport->date_debut, $expensereport->date_fin, "", $langs, 0).'
'.$langs->trans("Amount").''.price($expensereport->total_ttc, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("Amount").''.price($expensereport->total_ttc, 0, $langs, 1, -1, -1, $conf->currency).'
'.$langs->trans("AlreadyPaid").''.price($sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("RemainderToPay").''.price($total - $sumpaid, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("AlreadyPaid").''.price($sumpaid, 0, $langs, 1, -1, -1, $conf->currency).'
'.$langs->trans("RemainderToPay").''.price($total - $sumpaid, 0, $langs, 1, -1, -1, $conf->currency).'
'; @@ -223,6 +227,8 @@ if ($action == 'create' || empty($action)) { print dol_get_fiche_end(); + print '
'; + print dol_get_fiche_head(); print ''."\n"; @@ -239,11 +245,12 @@ if ($action == 'create' || empty($action)) { print "\n"; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; print ''; print ''; } @@ -277,7 +284,7 @@ if ($action == 'create' || empty($action)) { print ''; print "\n"; - $total = 0; + $total_ttc = 0; $totalrecu = 0; while ($i < $num) { @@ -298,7 +305,7 @@ if ($action == 'create' || empty($action)) { } $remaintopay = $objp->total_ttc - $sumpaid; // autofill remainder amount print ''; // autofill remainder amount - print ''; + print ''; } else { print '-'; } @@ -306,9 +313,8 @@ if ($action == 'create' || empty($action)) { print "\n"; - $total += $objp->total; $total_ttc += $objp->total_ttc; - $totalrecu += $objp->am; + $totalrecu += $sumpaid; $i++; } if ($i > 1) { diff --git a/htdocs/exports/index.php b/htdocs/exports/index.php index 3ba5e0a3591..41d6cd18ed0 100644 --- a/htdocs/exports/index.php +++ b/htdocs/exports/index.php @@ -41,7 +41,7 @@ $result = restrictedArea($user, 'export'); $form = new Form($db); -$help_url = 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones'; +$help_url = 'EN:Module_Exports_En|FR:Module_Exports|ES:Módulo_Exportaciones|DE:Modul_DatenExporte'; llxHeader('', $langs->trans("ExportsArea"), $help_url); diff --git a/htdocs/externalsite/frames.php b/htdocs/externalsite/frames.php index 7462dd82c35..6deb6e9cf72 100644 --- a/htdocs/externalsite/frames.php +++ b/htdocs/externalsite/frames.php @@ -29,7 +29,7 @@ require '../main.inc.php'; // Load translation files required by the page -$langs->load("externalsite"); +$langs->load("other"); $mainmenu = GETPOST('mainmenu', "aZ09"); diff --git a/htdocs/externalsite/frametop.php b/htdocs/externalsite/frametop.php index 7aac7955262..f774d89d0c6 100644 --- a/htdocs/externalsite/frametop.php +++ b/htdocs/externalsite/frametop.php @@ -25,7 +25,7 @@ require "../main.inc.php"; // Load translation files required by the page -$langs->load("externalsite"); +$langs->load("other"); top_htmlhead("", ""); diff --git a/htdocs/fichinter/card.php b/htdocs/fichinter/card.php index d03cb11a7e0..e2d03790f78 100644 --- a/htdocs/fichinter/card.php +++ b/htdocs/fichinter/card.php @@ -173,10 +173,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -198,10 +198,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -516,10 +516,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -612,10 +612,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -645,10 +645,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -665,10 +665,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -687,10 +687,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1645,7 +1645,7 @@ if ($action == 'create') { } // Proposal - if ($conf->service->enabled && !empty($conf->propal->enabled) && $object->statut > Fichinter::STATUS_DRAFT) { + if ($conf->service->enabled && isModEnabled("propal") && $object->statut > Fichinter::STATUS_DRAFT) { $langs->load("propal"); if ($object->statut < Fichinter::STATUS_BILLED) { if ($user->rights->propal->creer) { diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index b9f0264ad46..61c127cab9b 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -524,6 +524,8 @@ class Fichinter extends CommonObject dol_syslog(get_class($this)."::setDraft", LOG_DEBUG); + $this->oldcopy = dol_clone($this); + $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."fichinter"; @@ -532,10 +534,6 @@ class Fichinter extends CommonObject $resql = $this->db->query($sql); if ($resql) { - if (!$error) { - $this->oldcopy = clone $this; - } - if (!$error) { // Call trigger $result = $this->call_trigger('FICHINTER_UNVALIDATE', $user); @@ -590,7 +588,7 @@ class Fichinter extends CommonObject $sql .= " SET fk_statut = 1"; $sql .= ", ref = '".$this->db->escape($num)."'"; $sql .= ", date_valid = '".$this->db->idate($now)."'"; - $sql .= ", fk_user_valid = ".((int) $user->id); + $sql .= ", fk_user_valid = ".($user->id > 0 ? (int) $user->id : "null"); $sql .= " WHERE rowid = ".((int) $this->id); $sql .= " AND entity = ".((int) $conf->entity); $sql .= " AND fk_statut = 0"; @@ -1204,7 +1202,7 @@ class Fichinter extends CommonObject // Clear fields $this->user_author_id = $user->id; - $this->user_valid = ''; + $this->user_valid = 0; $this->date_creation = ''; $this->date_validation = ''; $this->ref_client = ''; @@ -1411,6 +1409,8 @@ class Fichinter extends CommonObject $this->db->begin(); + $this->oldcopy = dol_clone($this); + $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element." SET ref_client = ".(empty($ref_client) ? 'NULL' : "'".$this->db->escape($ref_client)."'"); $sql .= " WHERE rowid = ".((int) $this->id); @@ -1422,7 +1422,6 @@ class Fichinter extends CommonObject } if (!$error) { - $this->oldcopy = clone $this; $this->ref_client = $ref_client; } diff --git a/htdocs/fichinter/list.php b/htdocs/fichinter/list.php index ef71f01e228..d8bb62f6b5d 100644 --- a/htdocs/fichinter/list.php +++ b/htdocs/fichinter/list.php @@ -316,7 +316,7 @@ $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListWhere', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; // Add GroupBy from hooks -$parameters = array('all' => $all, 'fieldstosearchall' => $fieldstosearchall); +$parameters = array('search_all' => $sall, 'fieldstosearchall' => $fieldstosearchall); $reshook = $hookmanager->executeHooks('printFieldListGroupBy', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; @@ -692,7 +692,7 @@ while ($i < $imaxinloop) { print '
'.$langs->trans('AccountToDebit').''; - $form->select_comptes(GETPOSTISSET("accountid") ? GETPOST("accountid", "int") : $expensereport->accountid, "accountid", 0, '', 2); // Show open bank account list + print img_picto('', 'bank_account', 'class="pictofixedwidth"'); + $form->select_comptes(GETPOSTISSET("accountid") ? GETPOST("accountid", "int") : 0, "accountid", 0, '', 2); // Show open bank account list print '
'.$langs->trans("Amount").'
'; // Picto + Ref - print ''; // Warning @@ -726,7 +726,7 @@ while ($i < $imaxinloop) { if (!empty($arrayfields['f.ref_client']['checked'])) { // Customer ref print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/filefunc.inc.php b/htdocs/filefunc.inc.php index e5b7c62aae4..ccd85e47810 100644 --- a/htdocs/filefunc.inc.php +++ b/htdocs/filefunc.inc.php @@ -34,7 +34,7 @@ if (!defined('DOL_APPLICATION_TITLE')) { define('DOL_APPLICATION_TITLE', 'Dolibarr'); } if (!defined('DOL_VERSION')) { - define('DOL_VERSION', '16.0.0-beta'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c + define('DOL_VERSION', '17.0.0-alpha'); // a.b.c-alpha, a.b.c-beta, a.b.c-rcX or a.b.c } if (!defined('EURO')) { @@ -179,6 +179,9 @@ if (empty($dolibarr_mailing_limit_sendbyweb)) { if (empty($dolibarr_mailing_limit_sendbycli)) { $dolibarr_mailing_limit_sendbycli = 0; } +if (empty($dolibarr_mailing_limit_sendbyday)) { + $dolibarr_mailing_limit_sendbyday = 0; +} if (empty($dolibarr_strict_mode)) { $dolibarr_strict_mode = 0; // For debug in php strict mode } diff --git a/htdocs/fourn/card.php b/htdocs/fourn/card.php index fb89cd2c455..7234e54e8f1 100644 --- a/htdocs/fourn/card.php +++ b/htdocs/fourn/card.php @@ -328,7 +328,7 @@ if ($object->id > 0) { print ''; print ''; - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && !empty($conf->global->ORDER_MANAGE_MIN_AMOUNT)) { print ''; print '
'; + print ''; print $objectstatic->getNomUrl(1); print ''; - print $obj->ref_client; + print dol_escape_htmltag($obj->ref_client); print '
'; print $form->editfieldkey("OrderMinAmount", 'supplier_order_min_amount', $object->supplier_order_min_amount, $object, $user->rights->societe->creer); @@ -408,7 +408,7 @@ if ($object->id > 0) { } } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { // Box proposals $tmp = $object->getOutstandingOrders('supplier'); $outstandingOpened = $tmp['opened']; @@ -429,7 +429,7 @@ if ($object->id > 0) { } } - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) { $warn = ''; $tmp = $object->getOutstandingBills('supplier'); $outstandingOpened = $tmp['opened']; @@ -514,7 +514,7 @@ if ($object->id > 0) { /* * List of products */ - if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { + if (isModEnabled("product") || isModEnabled("service")) { $langs->load("products"); //Query from product/liste.php $sql = 'SELECT p.rowid, p.ref, p.label, p.fk_product_type, p.entity, p.tosell as status, p.tobuy as status_buy, p.tobatch as status_batch,'; diff --git a/htdocs/fourn/class/api_supplier_invoices.class.php b/htdocs/fourn/class/api_supplier_invoices.class.php index 17146eecd35..5cc3e5592a2 100644 --- a/htdocs/fourn/class/api_supplier_invoices.class.php +++ b/htdocs/fourn/class/api_supplier_invoices.class.php @@ -433,7 +433,7 @@ class SupplierInvoices extends DolibarrApi throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if (empty($accountid)) { throw new RestException(400, 'Bank account ID is mandatory'); } @@ -482,7 +482,7 @@ class SupplierInvoices extends DolibarrApi throw new RestException(400, 'Payment error : '.$paiement->error); } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $result = $paiement->addPaymentToBank(DolibarrApiAccess::$user, 'payment_supplier', '(SupplierInvoicePayment)', $accountid, $chqemetteur, $chqbank); if ($result < 0) { $this->db->rollback(); diff --git a/htdocs/fourn/class/fournisseur.commande.class.php b/htdocs/fourn/class/fournisseur.commande.class.php index f134f04e618..c794a227afa 100644 --- a/htdocs/fourn/class/fournisseur.commande.class.php +++ b/htdocs/fourn/class/fournisseur.commande.class.php @@ -1432,7 +1432,7 @@ class CommandeFournisseur extends CommonOrder } - $this->special_code = $line->special_code; // TODO : remove this in 9.0 and add special_code param to addline() + //$this->special_code = $line->special_code; // TODO : remove this in 9.0 and add special_code param to addline() // This include test on qty if option SUPPLIER_ORDER_WITH_NOPRICEDEFINED is not set $result = $this->addline( @@ -1454,7 +1454,8 @@ class CommandeFournisseur extends CommonOrder $line->date_start, $line->date_end, $line->array_options, - $line->fk_unit + $line->fk_unit, + $line->special_code ); if ($result < 0) { dol_syslog(get_class($this)."::create ".$this->error, LOG_WARNING); // do not use dol_print_error here as it may be a functionnal error @@ -1581,7 +1582,7 @@ class CommandeFournisseur extends CommonOrder $sql .= " total_ttc=".(isset($this->total_ttc) ? $this->total_ttc : "null").","; $sql .= " fk_statut=".(isset($this->statut) ? $this->statut : "null").","; $sql .= " fk_user_author=".(isset($this->user_author_id) ? $this->user_author_id : "null").","; - $sql .= " fk_user_valid=".(isset($this->user_valid) ? $this->user_valid : "null").","; + $sql .= " fk_user_valid=".(isset($this->user_valid) && $this->user_valid > 0 ? $this->user_valid : "null").","; $sql .= " fk_projet=".(isset($this->fk_project) ? $this->fk_project : "null").","; $sql .= " fk_cond_reglement=".(isset($this->cond_reglement_id) ? $this->cond_reglement_id : "null").","; $sql .= " fk_mode_reglement=".(isset($this->mode_reglement_id) ? $this->mode_reglement_id : "null").","; @@ -1679,7 +1680,7 @@ class CommandeFournisseur extends CommonOrder // Clear fields $this->user_author_id = $user->id; - $this->user_valid = ''; + $this->user_valid = 0; $this->date_creation = ''; $this->date_validation = ''; $this->ref_supplier = ''; @@ -1745,9 +1746,10 @@ class CommandeFournisseur extends CommonOrder * @param string $origin 'order', ... * @param int $origin_id Id of origin object * @param int $rang Rank + * @param int $special_code Special code * @return int <=0 if KO, >0 if OK */ - public function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1 = 0.0, $txlocaltax2 = 0.0, $fk_product = 0, $fk_prod_fourn_price = 0, $ref_supplier = '', $remise_percent = 0.0, $price_base_type = 'HT', $pu_ttc = 0.0, $type = 0, $info_bits = 0, $notrigger = false, $date_start = null, $date_end = null, $array_options = 0, $fk_unit = null, $pu_ht_devise = 0, $origin = '', $origin_id = 0, $rang = -1) + public function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1 = 0.0, $txlocaltax2 = 0.0, $fk_product = 0, $fk_prod_fourn_price = 0, $ref_supplier = '', $remise_percent = 0.0, $price_base_type = 'HT', $pu_ttc = 0.0, $type = 0, $info_bits = 0, $notrigger = false, $date_start = null, $date_end = null, $array_options = 0, $fk_unit = null, $pu_ht_devise = 0, $origin = '', $origin_id = 0, $rang = -1, $special_code = 0) { global $langs, $mysoc, $conf; @@ -1871,7 +1873,7 @@ class CommandeFournisseur extends CommonOrder // Predefine quantity according to packaging if (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING)) { - $prod = new Product($this->db, $fk_product); + $prod = new Product($this->db); $prod->get_buyprice($fk_prod_fourn_price, $qty, $fk_product, 'none', ($this->fk_soc ? $this->fk_soc : $this->socid)); if ($qty < $prod->packaging) { @@ -1880,9 +1882,9 @@ class CommandeFournisseur extends CommonOrder if (!empty($prod->packaging) && ($qty % $prod->packaging) > 0) { $coeff = intval($qty / $prod->packaging) + 1; $qty = $prod->packaging * $coeff; + setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs'); } } - setEventMessage($langs->trans('QtyRecalculatedWithPackaging'), 'mesgs'); } } @@ -1957,7 +1959,7 @@ class CommandeFournisseur extends CommonOrder $this->line->total_localtax2 = $total_localtax2; $this->line->total_ttc = $total_ttc; $this->line->product_type = $type; - $this->line->special_code = $this->special_code; + $this->line->special_code = (!empty($this->special_code) ? $this->special_code : 0); $this->line->origin = $origin; $this->line->origin_id = $origin_id; $this->line->fk_unit = $fk_unit; @@ -2856,7 +2858,7 @@ class CommandeFournisseur extends CommonOrder $this->line->total_localtax2 = $total_localtax2; $this->line->total_ttc = $total_ttc; $this->line->product_type = $type; - $this->line->special_code = $this->special_code; + $this->line->special_code = (!empty($this->special_code) ? $this->special_code : 0); $this->line->origin = $this->origin; $this->line->fk_unit = $fk_unit; @@ -3365,7 +3367,7 @@ class CommandeFournisseur extends CommonOrder { global $conf, $langs; - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php'; $qtydelivered = array(); diff --git a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php index 27c991e5896..dfb1e371636 100644 --- a/htdocs/fourn/class/fournisseur.commande.dispatch.class.php +++ b/htdocs/fourn/class/fournisseur.commande.dispatch.class.php @@ -79,6 +79,9 @@ class CommandeFournisseurDispatch extends CommonObjectLine */ public $fk_commandefourndet; + public $fk_reception; + + public $qty; public $qty_asked; diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php index df10ed07632..830430f3730 100644 --- a/htdocs/fourn/class/fournisseur.facture.class.php +++ b/htdocs/fourn/class/fournisseur.facture.class.php @@ -504,10 +504,10 @@ class FactureFournisseur extends CommonInvoice $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($this->thirdparty->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($this->thirdparty->default_lang)) { $newlang = $this->thirdparty->default_lang; // for proposal, order, invoice, ... } - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && isset($this->default_lang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && isset($this->default_lang)) { $newlang = $this->default_lang; // for thirdparty } if (! empty($newlang)) { @@ -2074,7 +2074,7 @@ class FactureFournisseur extends CommonInvoice if (!empty($conf->global->SUPPLIER_INVOICE_WITH_PREDEFINED_PRICES_ONLY)) { // Check quantity is enough dol_syslog(get_class($this)."::addline we check supplier prices fk_product=".$fk_product." qty=".$qty." ref_supplier=".$ref_supplier); - $prod = new Product($this->db, $fk_product); + $prod = new Product($this->db); if ($prod->fetch($fk_product) > 0) { $product_type = $prod->type; $label = $prod->label; @@ -3060,7 +3060,7 @@ class FactureFournisseur extends CommonInvoice // Clear fields $object->ref_supplier = (empty($this->ref_supplier) ? $langs->trans("CopyOf").' '.$object->ref_supplier : $this->ref_supplier); $object->author = $user->id; - $object->user_valid = ''; + $object->user_valid = 0; $object->fk_facture_source = 0; $object->date_creation = ''; $object->date_validation = ''; diff --git a/htdocs/fourn/class/fournisseur.product.class.php b/htdocs/fourn/class/fournisseur.product.class.php index 690558fc9ad..cbf961b8ff9 100644 --- a/htdocs/fourn/class/fournisseur.product.class.php +++ b/htdocs/fourn/class/fournisseur.product.class.php @@ -620,7 +620,7 @@ class ProductFournisseur extends Product $this->fourn_multicurrency_tx = $obj->multicurrency_tx; $this->fourn_multicurrency_id = $obj->fk_multicurrency; $this->fourn_multicurrency_code = $obj->multicurrency_code; - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $this->fourn_barcode = $obj->barcode; // deprecated $this->fourn_fk_barcode_type = $obj->fk_barcode_type; // deprecated $this->supplier_barcode = $obj->barcode; @@ -730,7 +730,7 @@ class ProductFournisseur extends Product $prodfourn->packaging = $record["packaging"]; - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $prodfourn->supplier_barcode = $record["barcode"]; $prodfourn->supplier_fk_barcode_type = $record["fk_barcode_type"]; } @@ -808,7 +808,7 @@ class ProductFournisseur extends Product $sql .= " ,pfp.multicurrency_price, pfp.multicurrency_unitprice, pfp.multicurrency_tx, pfp.fk_multicurrency, pfp.multicurrency_code"; $sql .= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."product_fournisseur_price as pfp"; $sql .= " WHERE s.entity IN (".getEntity('societe').")"; - $sql .= " AND pfp.entity = ".$conf->entity; // only current entity + $sql .= " AND pfp.entity IN (".getEntity('productsupplierprice').")"; $sql .= " AND pfp.fk_product = ".((int) $prodid); $sql .= " AND pfp.fk_soc = s.rowid"; $sql .= " AND s.status = 1"; // only enabled society @@ -960,7 +960,7 @@ class ProductFournisseur extends Product public function display_price_product_fournisseur($showunitprice = 1, $showsuptitle = 1, $maxlen = 0, $notooltip = 0, $productFournList = array()) { // phpcs:enable - global $langs; + global $conf, $langs; $out = ''; $langs->load("suppliers"); @@ -978,7 +978,7 @@ class ProductFournisseur extends Product } $out .= '
'; } else { - $out = ($showunitprice ? price($this->fourn_unitprice * (1 - $this->fourn_remise_percent / 100) + $this->fourn_remise).' '.$langs->trans("HT").'   (' : ''); + $out = ($showunitprice ? price($this->fourn_unitprice * (1 - $this->fourn_remise_percent / 100) + $this->fourn_remise, 0, $langs, 1, -1, -1, $conf->currency).' '.$langs->trans("HT").'   (' : ''); $out .= ($showsuptitle ? ''.$langs->trans("Supplier").': ' : '').$this->getSocNomUrl(1, 'supplier', $maxlen, $notooltip).' / '.$langs->trans("SupplierRef").': '.$this->ref_supplier; $out .= ($showunitprice ? ')' : ''); } @@ -1121,12 +1121,15 @@ class ProductFournisseur extends Product * * @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto) * @param string $option On what the link point to ('nolink', ...) - * @param int $notooltip 1=Disable tooltip - * @param string $morecss Add more css on link + * @param int $maxlength Maxlength of ref * @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking + * @param int $notooltip No tooltip + * @param string $morecss ''=Add more css on link + * @param int $add_label 0=Default, 1=Add label into string, >1=Add first chars into string + * @param string $sep ' - '=Separator between ref and label if option 'add_label' is set * @return string String with URL */ - public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1) + public function getNomUrl($withpicto = 0, $option = '', $maxlength = 0, $save_lastsearch_value = -1, $notooltip = 0, $morecss = '', $add_label = 0, $sep = ' - ') { global $db, $conf, $langs, $hookmanager; @@ -1137,6 +1140,11 @@ class ProductFournisseur extends Product $result = ''; $label = ''; + $newref = $this->ref; + if ($maxlength) { + $newref = dol_trunc($newref, $maxlength, 'middle'); + } + if (!empty($this->entity)) { $tmpphoto = $this->show_photos('product', $conf->product->multidir_output[$this->entity], 1, 1, 0, 0, 0, 80); if ($this->nbphoto > 0) { @@ -1170,7 +1178,7 @@ class ProductFournisseur extends Product $label .= "
".$langs->trans("ManageLotSerial").': '.$this->getLibStatut(0, 2); } } - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { $label .= '
'.$langs->trans('BarCode').': '.$this->barcode; } @@ -1258,10 +1266,12 @@ class ProductFournisseur extends Product $result .= img_object(($notooltip ? '' : $label), ($this->picto ? $this->picto : 'generic'), ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip"'), 0, 0, $notooltip ? 0 : 1); } if ($withpicto != 2) { - $result .= $this->ref.($this->ref_supplier ? ' ('.$this->ref_supplier.')' : ''); + $result .= $newref.($this->ref_supplier ? ' ('.$this->ref_supplier.')' : ''); } $result .= $linkend; - //if ($withpicto != 2) $result.=(($addlabel && $this->label) ? $sep . dol_trunc($this->label, ($addlabel > 1 ? $addlabel : 0)) : ''); + if ($withpicto != 2) { + $result .= (($add_label && $this->label) ? $sep.dol_trunc($this->label, ($add_label > 1 ? $add_label : 0)) : ''); + } global $action; $hookmanager->initHooks(array($this->element . 'dao')); diff --git a/htdocs/fourn/class/paiementfourn.class.php b/htdocs/fourn/class/paiementfourn.class.php index 8fc181e18e0..386c34483de 100644 --- a/htdocs/fourn/class/paiementfourn.class.php +++ b/htdocs/fourn/class/paiementfourn.class.php @@ -349,7 +349,7 @@ class PaiementFourn extends Paiement if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $newlang = ''; $outputlangs = $langs; - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $invoice->thirdparty->default_lang; } if (!empty($newlang)) { diff --git a/htdocs/fourn/commande/card.php b/htdocs/fourn/commande/card.php index 19a630871fc..67ec98e3c96 100644 --- a/htdocs/fourn/commande/card.php +++ b/htdocs/fourn/commande/card.php @@ -46,7 +46,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; if (!empty($conf->supplier_proposal->enabled)) { require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; } -if (!empty($conf->product->enabled)) { +if (isModEnabled("product")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } if (!empty($conf->project->enabled)) { @@ -555,13 +555,15 @@ if (empty($reshook)) { $ref_supplier = $productsupplier->ref_supplier; // Get vat rate + $tva_npr = 0; if (!GETPOSTISSET('tva_tx')) { // If vat rate not provided from the form (the form has the priority) $tva_tx = get_default_tva($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice', 'alpha')); $tva_npr = get_default_npr($object->thirdparty, $mysoc, $productsupplier->id, GETPOST('idprodfournprice', 'alpha')); + if (empty($tva_tx)) { + $tva_npr = 0; + } } - if (empty($tva_tx)) { - $tva_npr = 0; - } + $localtax1_tx = get_localtax($tva_tx, 1, $mysoc, $object->thirdparty, $tva_npr); $localtax2_tx = get_localtax($tva_tx, 2, $mysoc, $object->thirdparty, $tva_npr); @@ -597,7 +599,7 @@ if (empty($reshook)) { $localtax1_tx, $localtax2_tx, $idprod, - 0, // We already have the $idprod always defined + $productsupplier->product_fourn_price_id, $ref_supplier, $remise_percent, $price_base_type, @@ -667,11 +669,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { - $newlang = GETPOST('lang_id', 'aZ09'); - } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; + if (GETPOST('lang_id', 'aZ09')) + $newlang = GETPOST('lang_id', 'aZ09'); } if (!empty($newlang)) { $outputlangs = new Translate("", $conf); @@ -844,10 +845,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -882,10 +883,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -924,10 +925,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -987,10 +988,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1048,10 +1049,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1538,7 +1539,10 @@ if (!empty($conf->project->enabled)) { $formproject = new FormProjets($db); } -$title = $langs->trans('SupplierOrder')." - ".$langs->trans('Card'); +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewOrderSupplier"); +} $help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; llxHeader('', $title, $help_url); @@ -1737,7 +1741,7 @@ if ($action == 'create') { print '
'.$langs->trans('BankAccount').''; print img_picto('', 'bank_account', 'class="paddingrightonly"'); @@ -2079,6 +2083,10 @@ if ($action == 'create') { // Date if ($object->methode_commande_id > 0) { + $usehourmin = 0; + if (!empty($conf->global->SUPPLIER_ORDER_USE_HOUR_FOR_DELIVERY_DATE)) { + $usehourmin = 1; + } print '
'.$langs->trans("Date").''; print $object->date_commande ? dol_print_date($object->date_commande, $usehourmin ? 'dayhour' : 'day') : ''; if ($object->hasDelay() && !empty($object->date_delivery) && !empty($object->date_commande)) { @@ -2207,7 +2215,7 @@ if ($action == 'create') { } // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_SUPPLIER_ORDER) && isModEnabled("banque")) { print '
'; print ''; - } elseif (!empty($conf->reception->enabled)) { + } elseif (isModEnabled("reception")) { print ''; } @@ -1202,10 +1203,6 @@ if ($id > 0 || !empty($ref)) { while ($i < $num) { $objp = $db->fetch_object($resql); - $tmpproduct->id = $objp->fk_product; - $tmpproduct->ref = $objp->ref; - $tmpproduct->label = $objp->label; - if ($action == 'editline' && $lineid == $objp->dispatchlineid) { print ' @@ -1217,7 +1214,7 @@ if ($id > 0 || !empty($ref)) { print ''; // Reception ref - if (!empty($conf->reception->enabled)) { + if (isModEnabled("reception")) { print ''; - } elseif (!empty($conf->reception->enabled)) { + } elseif (isModEnabled("reception")) { print ''; } + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; + } // Town if (!empty($arrayfields['s.town']['checked'])) { print ''; @@ -1447,6 +1466,9 @@ if ($resql) { if (!empty($arrayfields['cf.fk_soc']['checked'])) { print_liste_field_titre($arrayfields['cf.fk_soc']['label'], $_SERVER["PHP_SELF"], "s.nom", "", $param, '', $sortfield, $sortorder); } + if (!empty($arrayfields['s.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], "s.name_alias", "", $param, '', $sortfield, $sortorder); + } if (!empty($arrayfields['s.town']['checked'])) { print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder); } @@ -1535,6 +1557,7 @@ if ($resql) { $totalarray = array('nbfield' => 0, 'val' => array(), 'pos' => array()); $totalarray['val']['cf.total_ht'] = 0; $totalarray['val']['cf.total_ttc'] = 0; + $totalarray['val']['cf.total_tva'] = 0; $imaxinloop = ($limit ? min($num, $limit) : $num); while ($i < $imaxinloop) { @@ -1623,7 +1646,17 @@ if ($resql) { $thirdpartytmp->id = $obj->socid; $thirdpartytmp->name = $obj->name; $thirdpartytmp->email = $obj->email; - print $thirdpartytmp->getNomUrl(1, 'supplier'); + $thirdpartytmp->name_alias = $obj->alias; + print $thirdpartytmp->getNomUrl(1, 'supplier', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); + print ''."\n"; + if (!$i) { + $totalarray['nbfield']++; + } + } + //alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''."\n"; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/fourn/commande/note.php b/htdocs/fourn/commande/note.php index d2c7398a98c..cfdea75d9d9 100644 --- a/htdocs/fourn/commande/note.php +++ b/htdocs/fourn/commande/note.php @@ -69,7 +69,7 @@ if (empty($reshook)) { /* * View */ -$title = $langs->trans('SupplierOrder')." - ".$langs->trans('Notes'); +$title = $object->ref." - ".$langs->trans('Notes'); $help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; llxHeader('', $title, $help_url); diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index c2fc4e8511a..ddf54ba0727 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -45,7 +45,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/fourn.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; -if (!empty($conf->product->enabled)) { +if (isModEnabled("product")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/product.lib.php'; } @@ -229,10 +229,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -273,9 +273,9 @@ if (empty($reshook)) { // Define output language /*$outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id','aZ09')) + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id','aZ09')) $newlang = GETPOST('lang_id','aZ09'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) $newlang = $object->thirdparty->default_lang; if (! empty($newlang)) { $outputlangs = new Translate("", $conf); @@ -342,10 +342,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -501,10 +501,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1648,10 +1648,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1748,10 +1748,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1894,7 +1894,10 @@ if (!empty($conf->project->enabled)) { $now = dol_now(); -$title = $langs->trans('SupplierInvoice')." - ".$langs->trans('Card'); +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("NewSupplierInvoice"); +} $help_url = 'EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores|DE:Modul_Lieferantenrechnungen'; llxHeader('', $title, $help_url); @@ -1902,7 +1905,7 @@ llxHeader('', $title, $help_url); if ($action == 'create') { $facturestatic = new FactureFournisseur($db); - print load_fiche_titre($langs->trans('NewBill'), '', 'supplier_invoice'); + print load_fiche_titre($langs->trans('NewSupplierInvoice'), '', 'supplier_invoice'); dol_htmloutput_events(); @@ -2398,7 +2401,7 @@ if ($action == 'create') { print ''; // Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; @@ -3092,7 +3095,7 @@ if ($action == 'create') { } // Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; + print ''; + print ''; + print ''; + print load_fiche_titre($langs->trans("AddFolder"), null, null); + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + } } else { $foundsetup = false; $MAXFTP = 20; @@ -662,124 +705,14 @@ if (!function_exists('ftp_connect')) { print '
'; -// Close FTP connection -if ($conn_id) { - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - } elseif (!empty($conf->global->FTP_CONNECT_WITH_SSL)) { - ftp_close($conn_id); - } else { - ftp_close($conn_id); +if (!empty($conn_id)) { + $disconnect = dol_ftp_close($conn_id); + + if ($disconnect == false) { + setEventMessages($langs->trans("ErrorFTPNodisconnect"), null, 'errors'); } } // End of page llxFooter(); $db->close(); - - - -/** - * Connect to FTP server - * - * @param string $ftp_server Server name - * @param string $ftp_port Server port - * @param string $ftp_user FTP user - * @param string $ftp_password FTP password - * @param string $section Directory - * @param integer $ftp_passive Use a passive mode - * @return int <0 if OK, >0 if KO - */ -function dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $section, $ftp_passive = 0) -{ - global $langs, $conf; - - $ok = 1; - $conn_id = null; - - if (!is_numeric($ftp_port)) { - $mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServer", $ftp_server, $ftp_port); - $ok = 0; - } - - if ($ok) { - $connecttimeout = (empty($conf->global->FTP_CONNECT_TIMEOUT) ? 40 : $conf->global->FTP_CONNECT_TIMEOUT); - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - dol_syslog('Try to connect with ssh2_ftp'); - $tmp_conn_id = ssh2_connect($ftp_server, $ftp_port); - } elseif (!empty($conf->global->FTP_CONNECT_WITH_SSL)) { - dol_syslog('Try to connect with ftp_ssl_connect'); - $conn_id = ftp_ssl_connect($ftp_server, $ftp_port, $connecttimeout); - } else { - dol_syslog('Try to connect with ftp_connect'); - $conn_id = ftp_connect($ftp_server, $ftp_port, $connecttimeout); - } - if ($conn_id || $tmp_conn_id) { - if ($ftp_user) { - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - dol_syslog('Try to authenticate with ssh2_auth_password'); - if (ssh2_auth_password($tmp_conn_id, $ftp_user, $ftp_password)) { - // Turn on passive mode transfers (must be after a successful login - //if ($ftp_passive) ftp_pasv($conn_id, true); - - // Change the dir - $newsectioniso = utf8_decode($section); - //ftp_chdir($conn_id, $newsectioniso); - $conn_id = ssh2_sftp($tmp_conn_id); - if (!$conn_id) { - dol_syslog('Failed to connect to SFTP after sssh authentication', LOG_DEBUG); - $mesg = $langs->transnoentitiesnoconv("FailedToConnectToSFTPAfterSSHAuthentication"); - $ok = 0; - $error++; - } - } else { - dol_syslog('Failed to connect to FTP with login '.$ftp_user, LOG_DEBUG); - $mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServerWithCredentials"); - $ok = 0; - $error++; - } - } else { - if (ftp_login($conn_id, $ftp_user, $ftp_password)) { - // Turn on passive mode transfers (must be after a successful login - if ($ftp_passive) { - ftp_pasv($conn_id, true); - } - - // Change the dir - $newsectioniso = utf8_decode($section); - ftp_chdir($conn_id, $newsectioniso); - } else { - $mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServerWithCredentials"); - $ok = 0; - $error++; - } - } - } - } else { - dol_syslog('FailedToConnectToFTPServer '.$ftp_server.' '.$ftp_port, LOG_ERR); - $mesg = $langs->transnoentitiesnoconv("FailedToConnectToFTPServer", $ftp_server, $ftp_port); - $ok = 0; - } - } - - $arrayresult = array('conn_id'=>$conn_id, 'ok'=>$ok, 'mesg'=>$mesg, 'curdir'=>$section, 'curdiriso'=>$newsectioniso); - return $arrayresult; -} - - -/** - * Tell if an entry is a FTP directory - * - * @param resource $connect_id Connection handler - * @param string $dir Directory - * @return int 1=directory, 0=not a directory - */ -function ftp_isdir($connect_id, $dir) -{ - if (@ftp_chdir($connect_id, $dir)) { - ftp_cdup($connect_id); - return 1; - } else { - return 0; - } -} - diff --git a/htdocs/holiday/card.php b/htdocs/holiday/card.php index 383d3577a8e..f9112f5faad 100644 --- a/htdocs/holiday/card.php +++ b/htdocs/holiday/card.php @@ -910,7 +910,7 @@ $edit = false; if ((empty($id) && empty($ref)) || $action == 'create' || $action == 'add') { // If user has no permission to create a leave - if ((in_array($fuserid, $childids) && empty($user->rights->holiday->write)) || (!in_array($fuserid, $childids) && (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->holiday->writeall_advance)))) { + if ((in_array($fuserid, $childids) && empty($user->rights->holiday->write)) || (!in_array($fuserid, $childids) && ((!empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->holiday->writeall_advance) || empty($user->rights->holiday->writeall))))) { $errors[] = $langs->trans('CantCreateCP'); } else { // Form to add a leave request @@ -923,7 +923,7 @@ if ((empty($id) && empty($ref)) || $action == 'create' || $action == 'add') { $errors[] = $langs->trans('ErrorEndDateCP'); break; case 'SQL_Create': - $errors[] = $langs->trans('ErrorSQLCreateCP').' '.htmlentities($_GET['msg']).''; + $errors[] = $langs->trans('ErrorSQLCreateCP'); break; case 'CantCreate': $errors[] = $langs->trans('CantCreateCP'); @@ -1153,7 +1153,7 @@ if ((empty($id) && empty($ref)) || $action == 'create' || $action == 'add') { $errors[] = $langs->transnoentitiesnoconv('ErrorEndDateCP'); break; case 'SQL_Create': - $errors[] = $langs->transnoentitiesnoconv('ErrorSQLCreateCP').' '.$_GET['msg']; + $errors[] = $langs->transnoentitiesnoconv('ErrorSQLCreateCP'); break; case 'CantCreate': $errors[] = $langs->transnoentitiesnoconv('CantCreateCP'); @@ -1174,7 +1174,7 @@ if ((empty($id) && empty($ref)) || $action == 'create' || $action == 'add') { $errors[] = $langs->transnoentitiesnoconv('NoMotifRefuseCP'); break; case 'mail': - $errors[] = $langs->transnoentitiesnoconv('ErrorMailNotSend')."\n".$_GET['error_content']; + $errors[] = $langs->transnoentitiesnoconv('ErrorMailNotSend'); break; } diff --git a/htdocs/holiday/card_group.php b/htdocs/holiday/card_group.php new file mode 100644 index 00000000000..950e2342de8 --- /dev/null +++ b/htdocs/holiday/card_group.php @@ -0,0 +1,789 @@ + + * Copyright (C) 2012-2016 Laurent Destailleur + * Copyright (C) 2012-2016 Regis Houssin + * Copyright (C) 2013 Juanjo Menent + * Copyright (C) 2017 Alexandre Spangaro + * Copyright (C) 2014-2017 Ferran Marcet + * Copyright (C) 2018 Frédéric France + * Copyright (C) 2020-2021 Udo Tamm + * Copyright (C) 2022 Anthony Berton + * + * 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, orwrite + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/holiday/card.php + * \ingroup holiday + * \brief Form and file creation of paid holiday. + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; +require_once DOL_DOCUMENT_ROOT.'/user/class/usergroup.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/holiday.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/holiday/class/holiday.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; + +// Get parameters +$action = GETPOST('action', 'aZ09'); +$cancel = GETPOST('cancel', 'alpha'); +$confirm = GETPOST('confirm', 'alpha'); +$id = GETPOST('id', 'int'); +$ref = GETPOST('ref', 'alpha'); +$fuserid = (GETPOST('fuserid', 'int') ?GETPOST('fuserid', 'int') : $user->id); +$users = (GETPOST('users', 'array') ?GETPOST('users', 'array') : array($user->id)); +$groups = GETPOST('groups', 'array'); +$socid = GETPOST('socid', 'int'); +$autoValidation = GETPOST('autoValidation', 'int'); +$AutoSendMail = GETPOST('AutoSendMail', 'int'); +// Load translation files required by the page +$langs->loadLangs(array("other", "holiday", "mails", "trips")); + +$error = 0; + +$now = dol_now(); + +$childids = $user->getAllChildIds(1); + +$morefilter = ''; +if (!empty($conf->global->HOLIDAY_HIDE_FOR_NON_SALARIES)) { + $morefilter = 'AND employee = 1'; +} + +$object = new Holiday($db); + +$extrafields = new ExtraFields($db); + +// fetch optionals attributes and labels +$extrafields->fetch_name_optionals_label($object->table_element); + +if (($id > 0) || $ref) { + $object->fetch($id, $ref); + + // Check current user can read this leave request + $canread = 0; + if (!empty($user->rights->holiday->readall)) { + $canread = 1; + } + if (!empty($user->rights->holiday->read) && in_array($object->fk_user, $childids)) { + $canread = 1; + } + if (!$canread) { + accessforbidden(); + } +} + +// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context +$hookmanager->initHooks(array('holidaycard', 'globalcard')); + +$cancreate = 0; +$cancreateall = 0; +if (!empty($user->rights->holiday->write) && in_array($fuserid, $childids)) { + $cancreate = 1; +} +if (!empty($user->rights->holiday->writeall)) { + $cancreate = 1; + $cancreateall = 1; +} + +$candelete = 0; +if (!empty($user->rights->holiday->delete)) { + $candelete = 1; +} +if ($object->statut == Holiday::STATUS_DRAFT && $user->rights->holiday->write && in_array($object->fk_user, $childids)) { + $candelete = 1; +} + +// Protection if external user +if ($user->socid) { + $socid = $user->socid; +} +$result = restrictedArea($user, 'holiday', $object->id, 'holiday', '', '', 'rowid', $object->statut); + + +/* + * Actions + */ + +$parameters = array('socid' => $socid); +$reshook = $hookmanager->executeHooks('doActions', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks +if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); +} + +if (empty($reshook)) { + $backurlforlist = DOL_URL_ROOT.'/holiday/list.php'; + + if (empty($backtopage) || ($cancel && empty($id))) { + if (empty($backtopage) || ($cancel && strpos($backtopage, '__ID__'))) { + if (empty($id) && (($action != 'add' && $action != 'create') || $cancel)) { + $backtopage = $backurlforlist; + } else { + $backtopage = DOL_URL_ROOT.'/holiday/card_group.php?id='.((!empty($id) && $id > 0) ? $id : '__ID__'); + } + } + } + + if ($cancel) { + if (!empty($backtopageforcancel)) { + header("Location: ".$backtopageforcancel); + exit; + } elseif (!empty($backtopage)) { + header("Location: ".$backtopage); + exit; + } + $action = ''; + } + + // Add leave request + if ($action == 'add') { + // If no right to create a request + if (!$cancreate) { + $error++; + setEventMessages($langs->trans('CantCreateCP'), null, 'errors'); + $action = 'create'; + } + + if (!$error) { + $users = GETPOST('users', 'array'); + $groups = GETPOST('groups', 'array'); + + $date_debut = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year')); + $date_fin = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year')); + $date_debut_gmt = dol_mktime(0, 0, 0, GETPOST('date_debut_month'), GETPOST('date_debut_day'), GETPOST('date_debut_year'), 1); + $date_fin_gmt = dol_mktime(0, 0, 0, GETPOST('date_fin_month'), GETPOST('date_fin_day'), GETPOST('date_fin_year'), 1); + $starthalfday = GETPOST('starthalfday'); + $endhalfday = GETPOST('endhalfday'); + $type = GETPOST('type'); + + $halfday = 0; + if ($starthalfday == 'afternoon' && $endhalfday == 'morning') { + $halfday = 2; + } elseif ($starthalfday == 'afternoon') { + $halfday = -1; + } elseif ($endhalfday == 'morning') { + $halfday = 1; + } + + $approverid = GETPOST('valideur', 'int'); + $description = trim(GETPOST('description', 'restricthtml')); + + // Check that leave is for a user inside the hierarchy or advanced permission for all is set + if (!$cancreateall) { + if (empty($conf->global->MAIN_USE_ADVANCED_PERMS)) { + if (empty($user->rights->holiday->write)) { + $error++; + setEventMessages($langs->trans("NotEnoughPermissions"), null, 'errors'); + } elseif (!in_array($fuserid, $childids)) { + $error++; + setEventMessages($langs->trans("UserNotInHierachy"), null, 'errors'); + $action = 'create'; + } + } else { + if (empty($user->rights->holiday->write) && empty($user->rights->holiday->writeall_advance)) { + $error++; + setEventMessages($langs->trans("NotEnoughPermissions"), null, 'errors'); + } elseif (empty($user->rights->holiday->writeall_advance) && !in_array($fuserid, $childids)) { + $error++; + setEventMessages($langs->trans("UserNotInHierachy"), null, 'errors'); + $action = 'create'; + } + } + } + // If no groups and no users + if (empty($groups) && empty($users)) { + setEventMessages($langs->trans("ErrorFieldRequiredUserOrGroup"), null, 'errors'); + //setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("UserOrGroup")), null, 'errors'); + //setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Group")), null, 'errors'); + $error++; + $action = 'create'; + } + // If no type + if ($type <= 0) { + setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type")), null, 'errors'); + $error++; + $action = 'create'; + } + + // If no start date + if (empty($date_debut)) { + setEventMessages($langs->trans("NoDateDebut"), null, 'errors'); + $error++; + $action = 'create'; + } + // If no end date + if (empty($date_fin)) { + setEventMessages($langs->trans("NoDateFin"), null, 'errors'); + $error++; + $action = 'create'; + } + // If start date after end date + if ($date_debut > $date_fin) { + setEventMessages($langs->trans("ErrorEndDateCP"), null, 'errors'); + $error++; + $action = 'create'; + } + + // If there is no Business Days within request + $nbopenedday = num_open_day($date_debut_gmt, $date_fin_gmt, 0, 1, $halfday); + if ($nbopenedday < 0.5) { + setEventMessages($langs->trans("ErrorDureeCP"), null, 'errors'); // No working day + $error++; + $action = 'create'; + } + + // If no validator designated + if ($approverid < 1) { + setEventMessages($langs->transnoentitiesnoconv('InvalidValidatorCP'), null, 'errors'); + $error++; + } + + $result = 0; + + + if (!$error) { + $TusersToProcess = array(); + // usergroup select + // better perf on single sql + /** GROUPS */ + $sql = ' SELECT DISTINCT u.rowid,u.lastname,u.firstname from ' . MAIN_DB_PREFIX . 'user as u'; + $sql .= ' LEFT JOIN ' . MAIN_DB_PREFIX . 'usergroup_user as ug on ug.fk_user = u.rowid '; + $sql .= ' WHERE fk_usergroup in (' .$db->sanitize(implode(',', $groups)) . ')'; + $resql = $db->query($sql); + + if ($resql) { + while ($obj = $db->fetch_object($resql)) { + $TusersToProcess[$obj->rowid] = $obj->rowid; + } + } + /** USERS */ + if (is_array($users) && count($users) > 0) { + foreach ($users as $u) { + $TusersToProcess[$u] = $u; + } + } + foreach ($TusersToProcess as $u) { + // Check if there is already holiday for this period pour chaque user + $verifCP = $object->verifDateHolidayCP($u, $date_debut, $date_fin, $halfday); + if (!$verifCP) { + //setEventMessages($langs->trans("alreadyCPexist"), null, 'errors'); + + $userError = new User($db); + $result = $userError->fetch($u); + + if ($result) { + setEventMessages($langs->trans("UseralreadyCPexist", $userError->firstname . ' '. $userError->lastname), null, 'errors'); + } else { + setEventMessages($langs->trans("ErrorUserFetch", $u), null, 'errors'); + } + + $error++; + $action = 'create'; + } + } + + if (!$error) { + $db->begin(); + // non errors we can insert all + foreach ($TusersToProcess as $u) { + $object = new Holiday($db); + $object->fk_user = $u; + $object->description = $description; + $object->fk_validator = $approverid; + $object->fk_type = $type; + $object->date_debut = $date_debut; + $object->date_fin = $date_fin; + $object->halfday = $halfday; + + $result = $object->create($user); + + if ($result <= 0) { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + } else { + //@TODO changer le nom si validated + if ($autoValidation) { + $htemp = new Holiday($db); + $htemp->fetch($result); + + $htemp->statut = Holiday::STATUS_VALIDATED; + $resultValidated = $htemp->update($approverid); + + if ($resultValidated < 0 ) { + setEventMessages($object->error, $object->errors, 'errors'); + $error++; + } + // we can auto send mail if we are in auto validation behavior + + if ($AutoSendMail && !$error) { + // send a mail to the user + $returnSendMail = sendMail($result, $cancreate, $now, $autoValidation); + if (!empty($returnSendMail->msg)) setEventMessage($returnSendMail->msg, $returnSendMail->style); + } + } + } + } + } + // If no SQL error we redirect to the request card + if (!$error) { + $db->commit(); + header('Location: '.DOL_URL_ROOT.'/holiday/list.php'); + exit; + } else { + $db->rollback(); + } + } + } + } +} + + + +/* + * View + */ + +$form = new Form($db); +$object = new Holiday($db); + +$listhalfday = array('morning'=>$langs->trans("Morning"), "afternoon"=>$langs->trans("Afternoon")); + +$title = $langs->trans('Leave'); +$help_url = 'EN:Module_Holiday'; + +llxHeader('', $title, $help_url); + +if ((empty($id) && empty($ref)) || $action == 'create' || $action == 'add') { + // If user has no permission to create a leave + if ((in_array($fuserid, $childids) && empty($user->rights->holiday->writeall)) || (!in_array($fuserid, $childids) && (empty($conf->global->MAIN_USE_ADVANCED_PERMS) || empty($user->rights->holiday->writeall_advance)))) { + $errors[] = $langs->trans('CantCreateCP'); + } else { + // Form to add a leave request + print load_fiche_titre($langs->trans('MenuCollectiveAddCP'), '', 'title_hrm.png'); + + // Error management + if (GETPOST('error')) { + switch (GETPOST('error')) { + case 'datefin': + $errors[] = $langs->trans('ErrorEndDateCP'); + break; + case 'SQL_Create': + $errors[] = $langs->trans('ErrorSQLCreateCP'); + break; + case 'CantCreate': + $errors[] = $langs->trans('CantCreateCP'); + break; + case 'Valideur': + $errors[] = $langs->trans('InvalidValidatorCP'); + break; + case 'nodatedebut': + $errors[] = $langs->trans('NoDateDebut'); + break; + case 'nodatefin': + $errors[] = $langs->trans('NoDateFin'); + break; + case 'DureeHoliday': + $errors[] = $langs->trans('ErrorDureeCP'); + break; + case 'alreadyCP': + $errors[] = $langs->trans('alreadyCPexist'); + break; + } + + setEventMessages($errors, null, 'errors'); + } + + + print ''."\n"; + + + // Formulaire de demande + print '
'."\n"; + print ''."\n"; + print ''."\n"; + + print dol_get_fiche_head(); + + print '
'; print $langs->trans('BankAccount'); @@ -2430,206 +2438,206 @@ if ($action == 'create') { * Buttons for actions */ - if ($user->socid == 0 && $action != 'editline' && $action != 'delete') { - print '
'; + if ($user->socid == 0 && $action != 'delete') { + if ($action != 'makeorder' && $action != 'presend' && $action != 'editline') { + print '
'; - $parameters = array(); - $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been - // modified by hook - if (empty($reshook)) { - $object->fetchObjectLinked(); // Links are used to show or not button, so we load them now. + $parameters = array(); + $reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been + // modified by hook + if (empty($reshook)) { + $object->fetchObjectLinked(); // Links are used to show or not button, so we load them now. - // Validate - if ($object->statut == 0 && $num > 0) { - if ($usercanvalidate) { - $tmpbuttonlabel = $langs->trans('Validate'); - if ($usercanapprove && empty($conf->global->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) { - $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); + // Validate + if ($object->statut == 0 && $num > 0) { + if ($usercanvalidate) { + $tmpbuttonlabel = $langs->trans('Validate'); + if ($usercanapprove && empty($conf->global->SUPPLIER_ORDER_NO_DIRECT_APPROVE)) { + $tmpbuttonlabel = $langs->trans("ValidateAndApprove"); + } + + print ''; + print $tmpbuttonlabel; + print ''; } - - print ''; - print $tmpbuttonlabel; - print ''; } - } - // Create event - /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page. - { - print ''; - }*/ + // Create event + /*if ($conf->agenda->enabled && ! empty($conf->global->MAIN_ADD_EVENT_ON_ELEMENT_CARD)) // Add hidden condition because this is not a "workflow" action so should appears somewhere else on page. + { + print ''; + }*/ - // Modify - if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { - if ($usercanorder) { - print ''.$langs->trans("Modify").''; - } - } - - // Approve - if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { - if ($usercanapprove) { - if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED && !empty($object->user_approve_id)) { - print ''.$langs->trans("ApproveOrder").''; - } else { - print ''.$langs->trans("ApproveOrder").''; - } - } else { - print ''.$langs->trans("ApproveOrder").''; - } - } - - // Second approval (if option SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED is set) - if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) { + // Modify if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { - if ($usercanapprovesecond) { - if (!empty($object->user_approve_id2)) { - print ''.$langs->trans("Approve2Order").''; + if ($usercanorder) { + print ''.$langs->trans("Modify").''; + } + } + + // Approve + if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { + if ($usercanapprove) { + if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED && !empty($object->user_approve_id)) { + print ''.$langs->trans("ApproveOrder").''; } else { - print ''.$langs->trans("Approve2Order").''; + print ''.$langs->trans("ApproveOrder").''; } } else { - print ''.$langs->trans("Approve2Order").''; + print ''.$langs->trans("ApproveOrder").''; } } - } - // Refuse - if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { - if ($usercanapprove || $usercanapprovesecond) { - print ''.$langs->trans("RefuseOrder").''; - } else { - print ''.$langs->trans("RefuseOrder").''; + // Second approval (if option SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED is set) + if (!empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) && $object->total_ht >= $conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED) { + if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { + if ($usercanapprovesecond) { + if (!empty($object->user_approve_id2)) { + print ''.$langs->trans("Approve2Order").''; + } else { + print ''.$langs->trans("Approve2Order").''; + } + } else { + print ''.$langs->trans("Approve2Order").''; + } + } } - } - // Send - if (empty($user->socid)) { - if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED, 3, 4, 5)) || !empty($conf->global->SUPPLIER_ORDER_SENDBYEMAIL_FOR_ALL_STATUS)) { + // Refuse + if ($object->statut == CommandeFournisseur::STATUS_VALIDATED) { + if ($usercanapprove || $usercanapprovesecond) { + print ''.$langs->trans("RefuseOrder").''; + } else { + print ''.$langs->trans("RefuseOrder").''; + } + } + + // Send + if (empty($user->socid)) { + if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED, 3, 4, 5)) || !empty($conf->global->SUPPLIER_ORDER_SENDBYEMAIL_FOR_ALL_STATUS)) { + if ($usercanorder) { + print ''.$langs->trans('SendMail').''; + } + } + } + + // Reopen + if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED))) { + $buttonshown = 0; + if (!$buttonshown && $usercanapprove) { + if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) + || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) && $user->id == $object->user_approve_id)) { + print ''.$langs->trans("Disapprove").''; + $buttonshown++; + } + } + if (!$buttonshown && $usercanapprovesecond && !empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED)) { + if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) + || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) && $user->id == $object->user_approve_id2)) { + print ''.$langs->trans("Disapprove").''; + } + } + } + if (in_array($object->statut, array(3, 4, 5, 6, 7, 9))) { if ($usercanorder) { - print ''.$langs->trans('SendMail').''; + print ''.$langs->trans("ReOpen").''; } } - } - // Reopen - if (in_array($object->statut, array(CommandeFournisseur::STATUS_ACCEPTED))) { - $buttonshown = 0; - if (!$buttonshown && $usercanapprove) { - if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) - || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER_ONLY) && $user->id == $object->user_approve_id)) { - print ''.$langs->trans("Disapprove").''; - $buttonshown++; - } - } - if (!$buttonshown && $usercanapprovesecond && !empty($conf->global->SUPPLIER_ORDER_3_STEPS_TO_BE_APPROVED)) { - if (empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) - || (!empty($conf->global->SUPPLIER_ORDER_REOPEN_BY_APPROVER2_ONLY) && $user->id == $object->user_approve_id2)) { - print ''.$langs->trans("Disapprove").''; - } - } - } - if (in_array($object->statut, array(3, 4, 5, 6, 7, 9))) { - if ($usercanorder) { - print ''.$langs->trans("ReOpen").''; - } - } - - // Ship - $hasreception = 0; - if (!empty($conf->stock->enabled) && (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE))) { - $labelofbutton = $langs->trans('ReceiveProducts'); - if ($conf->reception->enabled) { - $labelofbutton = $langs->trans("CreateReception"); - if (!empty($object->linkedObjects['reception'])) { - foreach ($object->linkedObjects['reception'] as $element) { - if ($element->statut >= 0) { - $hasreception = 1; - break; + // Ship + $hasreception = 0; + if (!empty($conf->stock->enabled) && (!empty($conf->global->STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION) || !empty($conf->global->STOCK_CALCULATE_ON_RECEPTION_CLOSE))) { + $labelofbutton = $langs->trans('ReceiveProducts'); + if ($conf->reception->enabled) { + $labelofbutton = $langs->trans("CreateReception"); + if (!empty($object->linkedObjects['reception'])) { + foreach ($object->linkedObjects['reception'] as $element) { + if ($element->statut >= 0) { + $hasreception = 1; + break; + } } } } - } - if (in_array($object->statut, array(3, 4, 5))) { - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && $usercanreceive) { - print ''; - } else { - print ''; - } - } - } - - if ($object->statut == CommandeFournisseur::STATUS_ACCEPTED) { - if ($usercanorder) { - print ''; - } else { - print ''; - } - } - - // Classify received (this does not record reception) - if ($object->statut == CommandeFournisseur::STATUS_ORDERSENT || $object->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY) { - if ($usercanreceive) { - print ''; - } - } - - // Create bill - //if (isModEnabled('facture')) - //{ - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) && ($object->statut >= 2 && $object->statut != 7 && $object->billed != 1)) { // statut 2 means approved, 7 means canceled - if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) { - print ''.$langs->trans("CreateBill").''; - } - } - //} - - // Classify billed manually (need one invoice if module invoice is on, no condition on invoice if not) - if ($usercancreate && $object->statut >= 2 && $object->statut != 7 && $object->billed != 1) { // statut 2 means approved - if (!isModEnabled('facture')) { - print ''.$langs->trans("ClassifyBilled").''; - } else { - if (!empty($object->linkedObjectsIds['invoice_supplier'])) { - if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) { - print ''.$langs->trans("ClassifyBilled").''; + if (in_array($object->statut, array(3, 4, 5))) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && $usercanreceive) { + print ''; + } else { + print ''; } + } + } + + if ($object->statut == CommandeFournisseur::STATUS_ACCEPTED) { + if ($usercanorder) { + print ''; } else { - print ''.$langs->trans("ClassifyBilled").''; + print ''; + } + } + + // Classify received (this does not record reception) + if ($object->statut == CommandeFournisseur::STATUS_ORDERSENT || $object->statut == CommandeFournisseur::STATUS_RECEIVED_PARTIALLY) { + if ($usercanreceive) { + print ''; + } + } + + // Create bill + //if (isModEnabled('facture')) + //{ + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) && ($object->statut >= 2 && $object->statut != 7 && $object->billed != 1)) { // statut 2 means approved, 7 means canceled + if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) { + print ''.$langs->trans("CreateBill").''; + } + } + //} + + // Classify billed manually (need one invoice if module invoice is on, no condition on invoice if not) + if ($usercancreate && $object->statut >= 2 && $object->statut != 7 && $object->billed != 1) { // statut 2 means approved + if (!isModEnabled('facture')) { + print ''.$langs->trans("ClassifyBilled").''; + } else { + if (!empty($object->linkedObjectsIds['invoice_supplier'])) { + if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) { + print ''.$langs->trans("ClassifyBilled").''; + } + } else { + print ''.$langs->trans("ClassifyBilled").''; + } + } + } + + // Create a remote order using WebService only if module is activated + if (!empty($conf->syncsupplierwebservices->enabled) && $object->statut >= 2) { // 2 means accepted + print ''.$langs->trans('CreateRemoteOrder').''; + } + + // Clone + if ($usercancreate) { + print ''.$langs->trans("ToClone").''; + } + + // Cancel + if ($object->statut == CommandeFournisseur::STATUS_ACCEPTED) { + if ($usercanorder) { + print ''.$langs->trans("CancelOrder").''; + } + } + + // Delete + if (!empty($usercandelete)) { + if ($hasreception) { + print ''.$langs->trans("Delete").''; + } else { + print ''.$langs->trans("Delete").''; } } } - // Create a remote order using WebService only if module is activated - if (!empty($conf->syncsupplierwebservices->enabled) && $object->statut >= 2) { // 2 means accepted - print ''.$langs->trans('CreateRemoteOrder').''; - } - - // Clone - if ($usercancreate) { - print ''.$langs->trans("ToClone").''; - } - - // Cancel - if ($object->statut == CommandeFournisseur::STATUS_ACCEPTED) { - if ($usercanorder) { - print ''.$langs->trans("CancelOrder").''; - } - } - - // Delete - if (!empty($usercandelete)) { - if ($hasreception) { - print ''.$langs->trans("Delete").''; - } else { - print ''.$langs->trans("Delete").''; - } - } + print "
"; } - print "
"; - - - if ($usercanorder && $object->statut == CommandeFournisseur::STATUS_ACCEPTED && $action == 'makeorder') { // Set status to ordered (action=commande) print ''."\n"; @@ -2665,7 +2673,12 @@ if ($action == 'create') { print "
"; } - if ($action != 'makeorder') { + // Select mail models is same action as presend + if (GETPOST('modelselected')) { + $action = 'presend'; + } + + if ($action != 'makeorder' && $action != 'presend' ) { print '
'; // Generated documents @@ -2678,7 +2691,7 @@ if ($action == 'create') { $delallowed = $usercancreate; $modelpdf = (!empty($object->model_pdf) ? $object->model_pdf : (empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF) ? '' : $conf->global->COMMANDE_SUPPLIER_ADDON_PDF)); - print $formfile->showdocuments('commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0, '', '', '', $object->thirdparty->default_lang); + print $formfile->showdocuments('commande_fournisseur', $objref, $filedir, $urlsource, $genallowed, $delallowed, $modelpdf, 1, 0, 0, 0, 0, '', '', '', $object->thirdparty->default_lang, '', $object); $somethingshown = $formfile->numoffiles; // Show links to link elements @@ -2914,11 +2927,6 @@ if ($action == 'create') { } } - // Select mail models is same action as presend - if (GETPOST('modelselected')) { - $action = 'presend'; - } - // Presend form $modelmail = 'order_supplier_send'; $defaulttopic = 'SendOrderRef'; diff --git a/htdocs/fourn/commande/contact.php b/htdocs/fourn/commande/contact.php index f05251993a7..3cae4f04c73 100644 --- a/htdocs/fourn/commande/contact.php +++ b/htdocs/fourn/commande/contact.php @@ -99,10 +99,6 @@ if ($action == 'addcontact' && ($user->rights->fournisseur->commande->creer || $ /* * View */ -$title = $langs->trans('SupplierOrder')." - ".$langs->trans('ContactsAddresses'); -$help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; -llxHeader('', $title, $help_url); - $form = new Form($db); $formcompany = new FormCompany($db); $contactstatic = new Contact($db); @@ -121,6 +117,10 @@ if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref) > 0) { $object->fetch_thirdparty(); + $title = $object->ref." - ".$langs->trans('ContactsAddresses'); + $help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; + llxHeader('', $title, $help_url); + $head = ordersupplier_prepare_head($object); print dol_get_fiche_head($head, 'contact', $langs->trans("SupplierOrder"), -1, 'order'); diff --git a/htdocs/fourn/commande/dispatch.php b/htdocs/fourn/commande/dispatch.php index 7b352a01abc..5dd20832088 100644 --- a/htdocs/fourn/commande/dispatch.php +++ b/htdocs/fourn/commande/dispatch.php @@ -505,10 +505,11 @@ $formproduct = new FormProduct($db); $warehouse_static = new Entrepot($db); $supplierorderdispatch = new CommandeFournisseurDispatch($db); +$title = $object->ref." - ".$langs->trans('OrderDispatch'); $help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; $morejs = array('/fourn/js/lib_dispatch.js.php'); -llxHeader('', $langs->trans("OrderDispatch"), $help_url, '', 0, 0, $morejs); +llxHeader('', $title, $help_url, '', 0, 0, $morejs); if ($id > 0 || !empty($ref)) { $soc = new Societe($db); @@ -1190,7 +1191,7 @@ if ($id > 0 || !empty($ref)) { // Status if (!empty($conf->global->SUPPLIER_ORDER_USE_DISPATCH_STATUS) && empty($reception->rowid)) { print '
'.$langs->trans("Status").'
'; if (!empty($objp->fk_reception)) { $reception = new Reception($db); @@ -1334,7 +1331,7 @@ if ($id > 0 || !empty($ref)) { } } print ''; if (!empty($reception->id)) { print $reception->getLibStatut(5); diff --git a/htdocs/fourn/commande/document.php b/htdocs/fourn/commande/document.php index ca43b69fd5e..5a017296887 100644 --- a/htdocs/fourn/commande/document.php +++ b/htdocs/fourn/commande/document.php @@ -98,7 +98,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; $form = new Form($db); -$title = $langs->trans('SupplierOrder')." - ".$langs->trans('Documents'); +$title = $object->ref." - ".$langs->trans('Documents'); $help_url = 'EN:Module_Suppliers_Orders|FR:CommandeFournisseur|ES:Módulo_Pedidos_a_proveedores'; llxHeader('', $title, $help_url); diff --git a/htdocs/fourn/commande/index.php b/htdocs/fourn/commande/index.php index 7d6b3b6936a..052876f0616 100644 --- a/htdocs/fourn/commande/index.php +++ b/htdocs/fourn/commande/index.php @@ -172,7 +172,7 @@ if ($resql) { * Draft orders */ -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { $sql = "SELECT c.rowid, c.ref, s.nom as name, s.rowid as socid"; $sql .= " FROM ".MAIN_DB_PREFIX."commande_fournisseur as c"; $sql .= ", ".MAIN_DB_PREFIX."societe as s"; diff --git a/htdocs/fourn/commande/info.php b/htdocs/fourn/commande/info.php index 771a6faf23f..18c4f5f2670 100644 --- a/htdocs/fourn/commande/info.php +++ b/htdocs/fourn/commande/info.php @@ -113,7 +113,7 @@ if ($id > 0 || !empty($ref)) { $object->info($object->id); } -$title = $langs->trans("SupplierOrder").' - '.$langs->trans('Info').' - '.$object->ref.' '.$object->name; +$title = $object->ref.' - '.$langs->trans('Info').' - '.$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"); } diff --git a/htdocs/fourn/commande/list.php b/htdocs/fourn/commande/list.php index 22c4921b5b1..8d03dbb387c 100644 --- a/htdocs/fourn/commande/list.php +++ b/htdocs/fourn/commande/list.php @@ -7,7 +7,7 @@ * Copyright (C) 2014 Juanjo Menent * Copyright (C) 2016 Ferran Marcet * Copyright (C) 2018-2021 Frédéric France - * Copyright (C) 2018-2020 Charlene Benke + * Copyright (C) 2018-2022 Charlene Benke * Copyright (C) 2019 Nicolas Zabouri * Copyright (C) 2021 Alexandre Spangaro * @@ -93,6 +93,7 @@ $search_product_category = GETPOST('search_product_category', 'int'); $search_ref = GETPOST('search_ref', 'alpha'); $search_refsupp = GETPOST('search_refsupp', 'alpha'); $search_company = GETPOST('search_company', 'alpha'); +$search_company_alias = GETPOST('search_company_alias', 'alpha'); $search_town = GETPOST('search_town', 'alpha'); $search_zip = GETPOST('search_zip', 'alpha'); $search_state = GETPOST("search_state", 'alpha'); @@ -181,6 +182,7 @@ $checkedtypetiers = 0; // Definition of array of fields for columns $arrayfields = array( + 's.name_alias'=>array('label'=>"AliasNameShort", 'position'=>47, 'checked'=>0), 's.town'=>array('label'=>"Town", 'enabled'=>1, 'position'=>47, 'checked'=>1), 's.zip'=>array('label'=>"Zip", 'enabled'=>1, 'position'=>47, 'checked'=>1), 'state.nom'=>array('label'=>"StateShort", 'enabled'=>1, 'position'=>48), @@ -246,6 +248,7 @@ if (empty($reshook)) { $search_ref = ''; $search_refsupp = ''; $search_company = ''; + $search_company_alias = ''; $search_town = ''; $search_zip = ""; $search_state = ""; @@ -657,6 +660,9 @@ if (empty($reshook)) { if ($search_company) { $param .= '&search_company='.urlencode($search_company); } + if ($search_company_alias) { + $param .= '&search_company_alias='.urlencode($search_company_alias); + } //if ($search_ref_customer) $param .= '&search_ref_customer='.urlencode($search_ref_customer); if ($search_user > 0) { $param .= '&search_user='.urlencode($search_user); @@ -741,7 +747,7 @@ $sql = 'SELECT'; if ($sall || $search_product_category > 0) { $sql = 'SELECT DISTINCT'; } -$sql .= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client, s.email,'; +$sql .= ' s.rowid as socid, s.nom as name, s.name_alias as alias, s.town, s.zip, s.fk_pays, s.client, s.code_client, s.email,'; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; $sql .= " cf.rowid, cf.ref, cf.ref_supplier, cf.fk_statut, cf.billed, cf.total_ht, cf.total_tva, cf.total_ttc, cf.fk_user_author, cf.date_commande as date_commande, cf.date_livraison as date_livraison,cf.date_valid, cf.date_approve,"; @@ -803,6 +809,9 @@ if ($sall) { if ($search_company) { $sql .= natural_search('s.nom', $search_company); } +if ($search_company_alias) { + $sql .= natural_search('s.name_alias', $search_company_alias); +} if ($search_request_author) { $sql .= natural_search(array('u.lastname', 'u.firstname', 'u.login'), $search_request_author); } @@ -861,6 +870,9 @@ if ($search_type_thirdparty != '' && $search_type_thirdparty > 0) { if ($search_company) { $sql .= natural_search('s.nom', $search_company); } +if ($search_company_alias) { + $sql .= natural_search('s.name_alias', $search_company_alias); +} if ($search_sale > 0) { $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".((int) $search_sale); } @@ -1032,6 +1044,9 @@ if ($resql) { if ($search_company) { $param .= '&search_company='.urlencode($search_company); } + if ($search_company_alias) { + $param .= '&search_company_alias='.urlencode($search_company_alias); + } if ($search_user > 0) { $param .= '&search_user='.urlencode($search_user); } @@ -1122,7 +1137,7 @@ if ($resql) { $url .= '&socid='.((int) $socid); $url .= '&backtopage='.urlencode(DOL_URL_ROOT.'/fourn/commande/list.php?socid='.((int) $socid)); } - $newcardbutton = dolGetButtonTitle($langs->trans('NewSupplierOrderShort'), '', 'fa fa-plus-circle', $url, '', $permissitiontoadd); + $newcardbutton = dolGetButtonTitle($langs->trans('NewSupplierOrderShort'), '', 'fa fa-plus-circle', $url, '', $permissiontoadd); // Lines of title fields print ''; @@ -1275,6 +1290,10 @@ if ($resql) { if (!empty($arrayfields['cf.fk_soc']['checked'])) { print ''; + print $obj->alias; print '
'.$langs->trans('BankAccount').''; print img_picto('', 'bank_account', 'class="pictofixedwidth"').$form->select_comptes((GETPOSTISSET('fk_account') ?GETPOST('fk_account', 'alpha') : $fk_account), 'fk_account', 0, '', 1, '', 0, 'maxwidth200 widthcentpercentminusx', 1); print '
'; print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -3313,7 +3316,7 @@ if ($action == 'create') { print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; diff --git a/htdocs/fourn/facture/contact.php b/htdocs/fourn/facture/contact.php index 85885ae866e..1096cb1eae8 100644 --- a/htdocs/fourn/facture/contact.php +++ b/htdocs/fourn/facture/contact.php @@ -99,11 +99,6 @@ if ($action == 'addcontact' && ($user->rights->fournisseur->facture->creer || $u /* * View */ - -$title = $langs->trans('SupplierInvoice')." - ".$langs->trans('ContactsAddresses'); -$helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; -llxHeader('', $title, $helpurl); - $form = new Form($db); $formcompany = new FormCompany($db); $contactstatic = new Contact($db); @@ -122,6 +117,10 @@ if ($id > 0 || !empty($ref)) { $alreadypaid = $object->getSommePaiement(); + $title = $object->ref." - ".$langs->trans('ContactsAddresses'); + $helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; + llxHeader('', $title, $helpurl); + $head = facturefourn_prepare_head($object); print dol_get_fiche_head($head, 'contact', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice'); diff --git a/htdocs/fourn/facture/document.php b/htdocs/fourn/facture/document.php index d2f7181856a..6cedd8884df 100644 --- a/htdocs/fourn/facture/document.php +++ b/htdocs/fourn/facture/document.php @@ -94,7 +94,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; $form = new Form($db); -$title = $langs->trans('SupplierInvoice')." - ".$langs->trans('Documents'); +$title = $object->ref." - ".$langs->trans('Documents'); $helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; llxHeader('', $title, $helpurl); diff --git a/htdocs/fourn/facture/info.php b/htdocs/fourn/facture/info.php index 0f932c27bae..de5985ae28f 100644 --- a/htdocs/fourn/facture/info.php +++ b/htdocs/fourn/facture/info.php @@ -54,18 +54,15 @@ $object = new FactureFournisseur($db); */ $form = new Form($db); - -$title = $langs->trans('SupplierInvoice')." - ".$langs->trans('Info'); -$helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; -llxHeader('', $title, $helpurl); - $object->fetch($id, $ref); $object->fetch_thirdparty(); - $object->info($object->id); - $alreadypaid = $object->getSommePaiement(); +$title = $object->ref." - ".$langs->trans('Info'); +$helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; +llxHeader('', $title, $helpurl); + $head = facturefourn_prepare_head($object); $titre = $langs->trans('SupplierInvoice'); print dol_get_fiche_head($head, 'info', $langs->trans('SupplierInvoice'), -1, 'supplier_invoice'); diff --git a/htdocs/fourn/facture/list.php b/htdocs/fourn/facture/list.php index 70a7334196a..f9419653c2f 100644 --- a/htdocs/fourn/facture/list.php +++ b/htdocs/fourn/facture/list.php @@ -77,6 +77,7 @@ $search_refsupplier = GETPOST('search_refsupplier', 'alpha'); $search_type = GETPOST('search_type', 'int'); $search_project = GETPOST('search_project', 'alpha'); $search_company = GETPOST('search_company', 'alpha'); +$search_company_alias = GETPOST('search_company_alias', 'alpha'); $search_montant_ht = GETPOST('search_montant_ht', 'alpha'); $search_montant_vat = GETPOST('search_montant_vat', 'alpha'); $search_montant_localtax1 = GETPOST('search_montant_localtax1', 'alpha'); @@ -178,6 +179,7 @@ $arrayfields = array( 'f.date_lim_reglement'=>array('label'=>"DateDue", 'checked'=>1), 'p.ref'=>array('label'=>"ProjectRef", 'checked'=>0), 's.nom'=>array('label'=>"ThirdParty", 'checked'=>1), + 's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>0), 's.town'=>array('label'=>"Town", 'checked'=>-1), 's.zip'=>array('label'=>"Zip", 'checked'=>1), 'state.nom'=>array('label'=>"StateShort", 'checked'=>0), @@ -252,6 +254,7 @@ if (empty($reshook)) { $search_label = ""; $search_project = ''; $search_company = ""; + $search_company_alias = ""; $search_amount_no_tax = ""; $search_amount_all_tax = ""; $search_montant_ht = ''; @@ -413,7 +416,7 @@ $sql .= " f.localtax1 as total_localtax1, f.localtax2 as total_localtax2,"; $sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva as multicurrency_total_vat, f.multicurrency_total_ttc,'; $sql .= " f.note_public, f.note_private,"; $sql .= " f.fk_user_author,"; -$sql .= " s.rowid as socid, s.nom as name, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,"; +$sql .= " s.rowid as socid, s.nom as name, s.name_alias as alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta as code_compta_client, s.code_compta_fournisseur,"; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; $sql .= " country.code as country_code,"; @@ -518,6 +521,9 @@ if ($search_project) { if ($search_company) { $sql .= natural_search('s.nom', $search_company); } +if ($search_company_alias) { + $sql .= natural_search('s.name_alias', $search_company_alias); +} if ($search_town) { $sql .= natural_search('s.town', $search_town); } @@ -629,7 +635,7 @@ if (!$search_all) { $sql .= ' f.fk_multicurrency, f.multicurrency_code, f.multicurrency_tx, f.multicurrency_total_ht, f.multicurrency_total_tva, f.multicurrency_total_ttc,'; $sql .= " f.note_public, f.note_private,"; $sql .= " f.fk_user_author,"; - $sql .= ' s.rowid, s.nom, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,'; + $sql .= ' s.rowid, s.nom, s.name_alias, s.email, s.town, s.zip, s.fk_pays, s.client, s.fournisseur, s.code_client, s.code_fournisseur, s.code_compta, s.code_compta_fournisseur,'; $sql .= " typent.code,"; $sql .= " state.code_departement, state.nom,"; $sql .= ' country.code,'; @@ -693,6 +699,7 @@ if ($resql) { $soc->fetch($socid); if (empty($search_company)) { $search_company = $soc->name; + $search_company_alias = $soc->name_alias; } } @@ -757,6 +764,9 @@ if ($resql) { if ($search_company) { $param .= '&search_company='.urlencode($search_company); } + if ($search_company_alias) { + $param .= '&search_company_alias='.urlencode($search_company_alias); + } if ($search_login) { $param .= '&search_login='.urlencode($search_login); } @@ -1002,7 +1012,11 @@ if ($resql) { } // Thirpdarty if (!empty($arrayfields['s.nom']['checked'])) { - print ''; + print ''; + } + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; } // Town if (!empty($arrayfields['s.town']['checked'])) { @@ -1181,6 +1195,9 @@ if ($resql) { if (!empty($arrayfields['s.nom']['checked'])) { print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER['PHP_SELF'], 's.nom', '', $param, '', $sortfield, $sortorder); } + if (!empty($arrayfields['s.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER['PHP_SELF'], 's.name_alias', '', $param, '', $sortfield, $sortorder); + } if (!empty($arrayfields['s.town']['checked'])) { print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder); } @@ -1188,7 +1205,10 @@ if ($resql) { print_liste_field_titre($arrayfields['s.zip']['label'], $_SERVER["PHP_SELF"], 's.zip', '', $param, '', $sortfield, $sortorder, 'center '); } if (!empty($arrayfields['state.nom']['checked'])) { - print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder); + print_liste_field_titre($arrayfields['state.nom']['label'], $_SERVER["PHP_SELF"], "state.name_alias", "", $param, '', $sortfield, $sortorder); + } + if (!empty($arrayfields['state.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['state.name_alias']['label'], $_SERVER["PHP_SELF"], "state.nom", "", $param, '', $sortfield, $sortorder); } if (!empty($arrayfields['country.code_iso']['checked'])) { print_liste_field_titre($arrayfields['country.code_iso']['label'], $_SERVER["PHP_SELF"], "country.code_iso", "", $param, '', $sortfield, $sortorder, 'center '); @@ -1293,6 +1313,7 @@ if ($resql) { $thirdparty->id = $obj->socid; $thirdparty->name = $obj->name; + $thirdparty->name_alias = $obj->alias; $thirdparty->client = $obj->client; $thirdparty->fournisseur = $obj->fournisseur; $thirdparty->code_client = $obj->code_client; @@ -1417,7 +1438,16 @@ if ($resql) { // Third party if (!empty($arrayfields['s.nom']['checked'])) { print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; if (!$i) { $totalarray['nbfield']++; @@ -1434,8 +1464,8 @@ if ($resql) { } // Zip if (!empty($arrayfields['s.zip']['checked'])) { - print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/fourn/facture/note.php b/htdocs/fourn/facture/note.php index 682d92b4515..46a9f8fdc44 100644 --- a/htdocs/fourn/facture/note.php +++ b/htdocs/fourn/facture/note.php @@ -83,7 +83,7 @@ if ($action == 'setlabel' && ($user->rights->fournisseur->facture->creer || $use $form = new Form($db); -$title = $langs->trans('SupplierInvoice')." - ".$langs->trans('Notes'); +$title = $object->ref." - ".$langs->trans('Notes'); $helpurl = "EN:Module_Suppliers_Invoices|FR:Module_Fournisseurs_Factures|ES:Módulo_Facturas_de_proveedores"; llxHeader('', $title, $helpurl); diff --git a/htdocs/fourn/facture/paiement.php b/htdocs/fourn/facture/paiement.php index 6e9e73c8d27..09507929daf 100644 --- a/htdocs/fourn/facture/paiement.php +++ b/htdocs/fourn/facture/paiement.php @@ -199,7 +199,7 @@ if (empty($reshook)) { if ($result <= 0) { dol_print_error($db); } - $multicurrency_amountsresttopay[$cursorfacid] = price2num($tmpinvoice->total_ttc - $tmpinvoice->getSommePaiement(1)); + $multicurrency_amountsresttopay[$cursorfacid] = price2num($tmpinvoice->multicurrency_total_ttc - $tmpinvoice->getSommePaiement(1)); if ($multicurrency_amounts[$cursorfacid]) { // Check amount if ($multicurrency_amounts[$cursorfacid] && (abs($multicurrency_amounts[$cursorfacid]) > abs($multicurrency_amountsresttopay[$cursorfacid]))) { @@ -224,7 +224,7 @@ if (empty($reshook)) { $error++; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // If bank module is on, account is required to enter a payment if (GETPOST('accountid') <= 0) { setEventMessages($langs->transnoentities('ErrorFieldRequired', $langs->transnoentities('AccountToCredit')), null, 'errors'); @@ -504,7 +504,7 @@ if ($action == 'create' || $action == 'confirm_paiement' || $action == 'add_paie print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; print ''; - if (!$num > 0) { - print ''; + if ($num <= 0) { + print ''; } $solde = 0; diff --git a/htdocs/ftp/admin/ftpclient.php b/htdocs/ftp/admin/ftpclient.php index cd24a3a881a..c3d5509aa36 100644 --- a/htdocs/ftp/admin/ftpclient.php +++ b/htdocs/ftp/admin/ftpclient.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2004-2022 Laurent Destailleur * Copyright (C) 2011 Juanjo Menent * * This program is free software; you can redistribute it and/or modify @@ -25,12 +25,7 @@ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; -$langs->loadLangs(array("admin", "ftp")); - -// Security check -if (!$user->admin) { - accessforbidden(); -} +$langs->loadLangs(array("admin", "other")); $def = array(); $lastftpentry = 0; @@ -38,6 +33,11 @@ $lastftpentry = 0; $action = GETPOST('action', 'aZ09'); $entry = GETPOST('numero_entry', 'alpha'); +// Security check +if (!$user->admin) { + accessforbidden(); +} + /* * Action @@ -49,8 +49,9 @@ $sql .= " WHERE name like 'FTP_SERVER_%'"; $result = $db->query($sql); if ($result) { $obj = $db->fetch_object($result); + $reg = array(); preg_match('/([0-9]+)$/i', $obj->name, $reg); - if ($reg[1]) { + if (!empty($reg[1])) { $lastftpentry = $reg[1]; } } else { @@ -63,12 +64,12 @@ if ($action == 'add' || GETPOST('modify', 'alpha')) { $error = 0; - if (!GETPOST("$ftp_name", 'alpha')) { + if (!GETPOST($ftp_name, 'alpha')) { $error = 1; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Label")), null, 'errors'); } - if (!GETPOST("$ftp_server", 'alpha')) { + if (!GETPOST($ftp_server, 'alpha')) { $error = 1; setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Server")), null, 'errors'); } @@ -170,37 +171,37 @@ if (!function_exists('ftp_connect')) { print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; $defaultpassive = GETPOST("FTP_PASSIVE_".($lastftpentry + 1)); if (!GETPOSTISSET("FTP_PASSIVE_".($lastftpentry + 1))) { @@ -213,11 +214,13 @@ if (!function_exists('ftp_connect')) { print '
'; print $langs->trans('BankAccount'); @@ -3247,7 +3250,7 @@ if ($action == 'create') { if (!empty($conf->project->enabled)) { $nbrows++; } - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbrows++; $nbcols++; } if (!empty($conf->incoterm->enabled)) { @@ -3288,7 +3291,7 @@ if ($action == 'create') { print ''.($object->type == FactureFournisseur::TYPE_CREDIT_NOTE ? $langs->trans("PaymentsBack") : $langs->trans('Payments')).''.$langs->trans('Date').''.$langs->trans('Type').''.$langs->trans('BankAccount').''.$langs->trans('Amount').''; print $form->form_modes_reglement(null, $objp->paiement_type, 'none').' '.$objp->num_payment; print ' 0 ? " disabled" : "").'>'; - print $thirdparty->getNomUrl(1, 'supplier'); + print $thirdparty->getNomUrl(1, 'supplier', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); + print ''; + print $thirdparty->name_alias; print ''; - print $obj->zip; + print ''; + print dol_escape_htmltag($obj->zip); print '
'.$langs->trans('PaymentMode').''; $form->select_types_paiements(!GETPOST('paiementid') ? $obj->fk_mode_reglement : GETPOST('paiementid'), 'paiementid'); print '
'.$langs->trans('Account').''; print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print $form->select_comptes(empty($accountid) ? $obj->fk_account : $accountid, 'accountid', 0, '', 2, '', 0, 'widthcentpercentminusx maxwidth500', 1); diff --git a/htdocs/fourn/index.php b/htdocs/fourn/index.php index 1dc3e963db7..68a6d663d8a 100644 --- a/htdocs/fourn/index.php +++ b/htdocs/fourn/index.php @@ -99,7 +99,7 @@ if ($resql) { // Draft orders -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { $langs->load("orders"); $sql = "SELECT cf.rowid, cf.ref, cf.total_ttc,"; @@ -157,7 +157,7 @@ if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SU } // Draft invoices -if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) && $user->rights->fournisseur->facture->lire) { +if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) && $user->rights->fournisseur->facture->lire) { $sql = "SELECT ff.ref_supplier, ff.rowid, ff.total_ttc, ff.type"; $sql .= ", s.nom as name, s.rowid as socid"; $sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as ff"; diff --git a/htdocs/fourn/paiement/card.php b/htdocs/fourn/paiement/card.php index 3c2c864346a..d9144b3a83f 100644 --- a/htdocs/fourn/paiement/card.php +++ b/htdocs/fourn/paiement/card.php @@ -220,7 +220,7 @@ if ($result > 0) { $allow_delete = 1; // Bank account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($object->fk_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/fourn/paiement/document.php b/htdocs/fourn/paiement/document.php index a8a41b3fde6..58d04d097d5 100644 --- a/htdocs/fourn/paiement/document.php +++ b/htdocs/fourn/paiement/document.php @@ -124,7 +124,7 @@ if ($object->id > 0) { $allow_delete = 1; // Bank account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { if ($object->fk_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/fourn/paiement/list.php b/htdocs/fourn/paiement/list.php index 13812e3595f..edffba6a7a8 100644 --- a/htdocs/fourn/paiement/list.php +++ b/htdocs/fourn/paiement/list.php @@ -103,7 +103,7 @@ $arrayfields = array( 's.nom' =>array('label'=>"ThirdParty", 'checked'=>1, 'position'=>30), 'c.libelle' =>array('label'=>"Type", 'checked'=>1, 'position'=>40), 'p.num_paiement' =>array('label'=>"Numero", 'checked'=>1, 'position'=>50, 'tooltip'=>"ChequeOrTransferNumber"), - 'ba.label' =>array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enable'=>(!empty($conf->banque->enabled))), + 'ba.label' =>array('label'=>"Account", 'checked'=>1, 'position'=>60, 'enable'=>(isModEnabled("banque"))), 'p.amount' =>array('label'=>"Amount", 'checked'=>1, 'position'=>70), ); $arrayfields = dol_sort_array($arrayfields, 'position'); diff --git a/htdocs/fourn/recap-fourn.php b/htdocs/fourn/recap-fourn.php index 993d772a641..b5489a3d8e0 100644 --- a/htdocs/fourn/recap-fourn.php +++ b/htdocs/fourn/recap-fourn.php @@ -63,7 +63,7 @@ if ($socid > 0) { dol_banner_tab($societe, 'socid', '', ($user->socid ? 0 : 1), 'rowid', 'nom'); print dol_get_fiche_end(); - if ((!empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) { + if ((isModEnabled("fournisseur") && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire)) { // Invoice list print load_fiche_titre($langs->trans("SupplierPreview")); @@ -92,8 +92,8 @@ if ($socid > 0) { print ' 
'.$langs->trans("NoInvoice").'
'.$langs->trans("NoInvoice").'
'.$langs->trans("Example").'
'.$langs->trans("Label").'My FTP access
'.$langs->trans("Server").'localhost
'.$langs->trans("Port").'21 for pure non crypted FTP or if option FTP_CONNECT_WITH_SSL (See Home-Setup-Other) is on (FTPS)
22 if option FTP_CONNECT_WITH_SFTP (See Home-Setup-Other) is on (SFTP)
'.$langs->trans("User").'myftplogin
'.$langs->trans("Password").'myftppassword
'.$langs->trans("FTPPassiveMode").'
'; ?> -
">
+
+ ">
'; + print '
'; ?>
@@ -242,10 +245,12 @@ if (!function_exists('ftp_connect')) { $idrss = $reg[0]; //print "x".join(',',$reg)."=".$obj->name."=".$idrss; - print ""; + print '
'; + print ''; print ''; print ''; + print '
'; print ''."\n"; print ''; @@ -262,51 +267,50 @@ if (!function_exists('ftp_connect')) { print ''; print ""; - print ""; + print ""; print ""; print ''; print ""; - print ""; + print ""; print ""; print ''; print ""; - print ""; + print ""; print ""; print ''; print ""; - print ""; + print ""; print ""; print ''; print ""; - print ""; + print ""; print ""; print ''; print ""; - print ''; - print ""; - - print ""; - print ""; + print ''; print ""; print '
".$langs->trans("Name")."global->$keyforname."\" size=\"64\">
".$langs->trans("Server")."global->$keyforserver."\" size=\"64\">
".$langs->trans("Port")."global->$keyforport."\" size=\"64\">
".$langs->trans("User")."global->$keyforuser."\" size=\"24\">
".$langs->trans("Password")."global->$keyforpassword."\" size=\"24\">
".$langs->trans("FTPPassiveMode")."'.$form->selectyesno('FTP_PASSIVE_'.$idrss, $conf->global->$keyforpassive, 1).'
"; - print "trans("Modify")."\">"; - print "   "; - print "trans("Delete")."\">"; - print "'.$form->selectyesno('FTP_PASSIVE_'.$idrss, getDolGlobalString($keyforpassive), 1).'
'; + print '
'; + + print '
'; + print ''; + print "   "; + print ''; + print ''; print ""; - print '
'; + print '

'; $i++; } diff --git a/htdocs/ftp/index.php b/htdocs/ftp/index.php index bbf01bb4fbe..ea9cd9ec996 100644 --- a/htdocs/ftp/index.php +++ b/htdocs/ftp/index.php @@ -27,9 +27,10 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/treeview.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/ftp.lib.php'; // Load translation files required by the page -$langs->loadLangs(array('ftp', 'companies', 'other')); +$langs->loadLangs(array('companies', 'other')); // Security check if ($user->socid) { @@ -40,6 +41,7 @@ $result = restrictedArea($user, 'ftp', ''); // Get parameters $action = GETPOST('action', 'aZ09'); $section = GETPOST('section'); +$newfolder = GETPOST('newfolder'); if (!$section) { $section = '/'; } @@ -74,14 +76,15 @@ $s_ftp_port = 'FTP_PORT_'.$numero_ftp; $s_ftp_user = 'FTP_USER_'.$numero_ftp; $s_ftp_password = 'FTP_PASSWORD_'.$numero_ftp; $s_ftp_passive = 'FTP_PASSIVE_'.$numero_ftp; -$ftp_name = $conf->global->$s_ftp_name; -$ftp_server = $conf->global->$s_ftp_server; -$ftp_port = $conf->global->$s_ftp_port; if (empty($ftp_port)) { +$ftp_name = getDolGlobalString($s_ftp_name); +$ftp_server = getDolGlobalString($s_ftp_server); +$ftp_port = getDolGlobalString($s_ftp_port); +if (empty($ftp_port)) { $ftp_port = 21; } -$ftp_user = $conf->global->$s_ftp_user; -$ftp_password = $conf->global->$s_ftp_password; -$ftp_passive = $conf->global->$s_ftp_passive; +$ftp_user = getDolGlobalString($s_ftp_user); +$ftp_password = getDolGlobalString($s_ftp_password); +$ftp_passive = getDolGlobalString($s_ftp_passive); // For result on connection $ok = 0; @@ -99,7 +102,7 @@ if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) { require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $result = $ecmdir->fetch(GETPOST("section", 'int')); - if (!$result > 0) { + if (!($result > 0)) { dol_print_error($db, $ecmdir->error); exit; } @@ -129,6 +132,60 @@ if (GETPOST("sendit") && !empty($conf->global->MAIN_UPLOAD_DOC)) { } } +if ($action == 'uploadfile') { + // set up a connection or die + if (!$conn_id) { + $newsectioniso = utf8_decode($section); + $resultarray = dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $newsectioniso, $ftp_passive); + $conn_id = $resultarray['conn_id']; + $ok = $resultarray['ok']; + $mesg = $resultarray['mesg']; + } + if ($conn_id && $ok && !$mesg) { + $nbfile = count($_FILES['userfile']['name']); + for ($i = 0; $i < $nbfile; $i++) { + $newsection = $newsectioniso; + $fileupload = $_FILES['userfile']['name'][$i]; + $fileuploadpath = $_FILES['userfile']['tmp_name'][$i]; + $result = dol_ftp_put($conn_id, $fileupload, $fileuploadpath, $newsection); + + if ($result) { + setEventMessages($langs->trans("FileWasUpload", $fileupload), null, 'mesgs'); + } else { + dol_syslog("ftp/index.php ftp_delete", LOG_ERR); + setEventMessages($langs->trans("FTPFailedToUploadFile", $fileupload), null, 'errors'); + } + } + $action = ''; + } else { + dol_print_error('', $mesg); + } +} + +if ($action == 'addfolder') { + // set up a connection or die + if (!$conn_id) { + $newsectioniso = utf8_decode($section); + $resultarray = dol_ftp_connect($ftp_server, $ftp_port, $ftp_user, $ftp_password, $newsectioniso, $ftp_passive); + $conn_id = $resultarray['conn_id']; + $ok = $resultarray['ok']; + $mesg = $resultarray['mesg']; + } + if ($conn_id && $ok && !$mesg) { + $result = dol_ftp_mkdir($conn_id, $newfolder, $newsectioniso); + + if ($result) { + setEventMessages($langs->trans("FileWasCreateFolder", $newfolder), null, 'mesgs'); + } else { + dol_syslog("ftp/index.php ftp_delete", LOG_ERR); + setEventMessages($langs->trans("FTPFailedToCreateFolder", $newfolder), null, 'errors'); + } + $action = ''; + } else { + dol_print_error('', $mesg); + } +} + // Action ajout d'un rep if ($action == 'add' && $user->rights->ftp->setup) { $ecmdir->ref = GETPOST("ref"); @@ -158,24 +215,8 @@ if ($action == 'confirm_deletefile' && GETPOST('confirm') == 'yes') { if ($conn_id && $ok && !$mesg) { $newsection = $section; - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $newsection = ssh2_sftp_realpath($conn_id, ".").'/./'; // workaround for bug https://bugs.php.net/bug.php?id=64169 - } + $result = dol_ftp_delete($conn_id, $file, $newsection); - $langs->load("other"); - - // Remote file - $filename = $file; - $remotefile = $newsection.(preg_match('@[\\\/]$@', $newsection) ? '' : '/').$file; - $newremotefileiso = utf8_decode($remotefile); - - //print "x".$newremotefileiso; - dol_syslog("ftp/index.php ftp_delete ".$newremotefileiso); - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $result = ssh2_sftp_unlink($conn_id, $newremotefileiso); - } else { - $result = @ftp_delete($conn_id, $newremotefileiso); - } if ($result) { setEventMessages($langs->trans("FileWasRemoved", $file), null, 'mesgs'); } else { @@ -183,8 +224,6 @@ if ($action == 'confirm_deletefile' && GETPOST('confirm') == 'yes') { setEventMessages($langs->trans("FTPFailedToRemoveFile", $file), null, 'errors'); } - //ftp_close($conn_id); Close later - $action = ''; } else { dol_print_error('', $mesg); @@ -204,25 +243,15 @@ if (GETPOST("const", 'array') && GETPOST("delete") && GETPOST("delete") == $lang if ($conn_id && $ok && !$mesg) { foreach (GETPOST('const', 'array') as $const) { - if ($const["check"]) { // Is checkbox checked + if (isset($const["check"])) { // Is checkbox checked $langs->load("other"); // Remote file $file = $const["file"]; $newsection = $const["section"]; - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $newsection = ssh2_sftp_realpath($conn_id, ".").'/./'; // workaround for bug https://bugs.php.net/bug.php?id=64169 - } - $remotefile = $newsection.(preg_match('@[\\\/]$@', $newsection) ? '' : '/').$file; - $newremotefileiso = utf8_decode($remotefile); - //print "x".$newremotefileiso; - dol_syslog("ftp/index.php ftp_delete n files for ".$newremotefileiso); - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $result = ssh2_sftp_unlink($conn_id, $newremotefileiso); - } else { - $result = @ftp_delete($conn_id, $newremotefileiso); - } + $result = dol_ftp_delete($conn_id, $file, $newsection); + if ($result) { setEventMessages($langs->trans("FileWasRemoved", $file), null, 'mesgs'); } else { @@ -253,20 +282,9 @@ if ($action == 'confirm_deletesection' && $confirm == 'yes') { if ($conn_id && $ok && !$mesg) { $newsection = $section; - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $newsection = ssh2_sftp_realpath($conn_id, ".").'/./'; // workaround for bug https://bugs.php.net/bug.php?id=64169 - } - // Remote file - $filename = $file; - $remotefile = $newsection.(preg_match('@[\\\/]$@', $newsection) ? '' : '/').$file; - $newremotefileiso = utf8_decode($remotefile); + $result = dol_ftp_rmdir($conn_id, $file, $newsection); - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $result = ssh2_sftp_rmdir($conn_id, $newremotefileiso); - } else { - $result = @ftp_rmdir($conn_id, $newremotefileiso); - } if ($result) { setEventMessages($langs->trans("DirWasRemoved", $file), null, 'mesgs'); } else { @@ -297,20 +315,10 @@ if ($action == 'download') { $localfile = tempnam($download_dir, 'dol_'); $newsection = $section; - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $newsection = ssh2_sftp_realpath($conn_id, ".").'/./'; // workaround for bug https://bugs.php.net/bug.php?id=64169 - } - // Remote file - $filename = $file; - $remotefile = $newsection.(preg_match('@[\\\/]$@', $newsection) ? '' : '/').$file; - $newremotefileiso = utf8_decode($remotefile); + $result = dol_ftp_get($connect_id, $file, $newsection); + - if (!empty($conf->global->FTP_CONNECT_WITH_SFTP)) { - $result = fopen('ssh2.sftp://'.intval($conn_id).$newremotefileiso, 'r'); - } else { - $result = ftp_get($conn_id, $localfile, $newremotefileiso, FTP_BINARY); - } if ($result) { if (!empty($conf->global->MAIN_UMASK)) { @chmod($localfile, octdec($conf->global->MAIN_UMASK)); @@ -343,8 +351,6 @@ if ($action == 'download') { readfile($localfile); - ftp_close($conn_id); - exit; } else { setEventMessages($langs->transnoentitiesnoconv('FailedToGetFile', $remotefile), null, 'errors'); @@ -408,12 +414,12 @@ if (!function_exists('ftp_connect')) { if (!empty($ftp_server)) { // Confirm remove file if ($action == 'delete') { - print $form->formconfirm($_SERVER["PHP_SELF"].'?numero_ftp='.$numero_ftp.'§ion='.urlencode(GETPOST('section')).'&file='.urlencode(GETPOST('file')), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', '', 1); + print $form->formconfirm($_SERVER["PHP_SELF"].'?numero_ftp='.$numero_ftp.'§ion='.urlencode(GETPOST('section')).'&file='.urlencode(GETPOST('file')), $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile', GETPOST('file')), 'confirm_deletefile', '', '', 1); } // Confirmation de la suppression d'une ligne categorie if ($action == 'delete_section') { - print $form->formconfirm($_SERVER["PHP_SELF"].'?numero_ftp='.$numero_ftp.'§ion='.urlencode(GETPOST('section')).'&file='.urlencode(GETPOST('file')), $langs->trans('DeleteSection'), $langs->trans('ConfirmDeleteSection', $ecmdir->label), 'confirm_deletesection', '', '', 1); + print $form->formconfirm($_SERVER["PHP_SELF"].'?numero_ftp='.$numero_ftp.'§ion='.urlencode(GETPOST('section')).'&file='.urlencode(GETPOST('file')), $langs->trans('DeleteSection'), $langs->trans('ConfirmDeleteSection', GETPOST('file')), 'confirm_deletesection', '', '', 1); } print $langs->trans("Server").': '.$ftp_server.'
'; @@ -492,28 +498,42 @@ if (!function_exists('ftp_connect')) { //$newsection = '/./'; $newsection = ssh2_sftp_realpath($conn_id, ".").'/./'; // workaround for bug https://bugs.php.net/bug.php?id=64169 } + //$newsection='/'; //$dirHandle = opendir("ssh2.sftp://$conn_id".$newsection); //$dirHandle = opendir("ssh2.sftp://".intval($conn_id).ssh2_sftp_realpath($conn_id, ".").'/./'); + $contents = scandir('ssh2.sftp://'.intval($conn_id).$newsection); $buff = array(); foreach ($contents as $i => $key) { $buff[$i] = "---------- - root root 1234 Aug 01 2000 ".$key; } + + //$i = 0; + //$handle = opendir('ssh2.sftp://'.intval($conn_id).$newsection); + //$buff=array(); + //while (false !== ($file = readdir($handle))) { + // if (substr("$file", 0, 1) != "."){ + // if (is_dir($file)) { + // $buff[$i]="d--------- - root root 1234 Aug 01 2000 ".$file; + // } else { + // $buff[$i]="---------- - root root 1234 Aug 01 2000 ".$file; + // } + // } + // $i++; + //} } else { $buff = ftp_rawlist($conn_id, $newsectioniso); $contents = ftp_nlist($conn_id, $newsectioniso); // Sometimes rawlist fails but never nlist - //var_dump($contents); - //var_dump($buff); } $nboflines = count($contents); $rawlisthasfailed = false; $i = 0; + $nbofentries = 0; while ($i < $nboflines && $i < 1000) { $vals = preg_split('@ +@', utf8_encode($buff[$i]), 9); //$vals=preg_split('@ +@','drwxr-xr-x 2 root root 4096 Aug 30 2008 backup_apollon1',9); - //var_dump($vals); $file = $vals[8]; if (empty($file)) { $rawlisthasfailed = true; @@ -527,6 +547,7 @@ if (!function_exists('ftp_connect')) { // Is it a directory ? $is_directory = 0; + $is_link = 0; if ($file == '..') { $is_directory = 1; } elseif (!$rawlisthasfailed) { @@ -639,6 +660,28 @@ if (!function_exists('ftp_connect')) { print '
'; print ""; + if ($user->hasRight('ftp', 'write')) { + print load_fiche_titre($langs->trans("AttachANewFile"), null, null); + print '
'; + print ''; + print ''; + print ''; + print ''; + print '
'; + print ''; + + // groupe + print ''; + print ''; + + print ''; + + // users + print ''; + print ''; + + + + // Type + print ''; + print ''; + print ''; + print ''; + + // Date start + print ''; + print ''; + print ''; + print ''; + + // Date end + print ''; + print ''; + print ''; + print ''; + + // Approver + print ''; + print ''; + print ''; + print ''; + + //auto validation ON CREATE + print ''."\n"; + + + //no auto SEND MAIL + print ''."\n"; + + // Description + print ''; + print ''; + print ''; + + // Other attributes + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; + + print ''; + print '
'; + print $form->textwithpicto($langs->trans("groups"), $langs->trans("fusionGroupsUsers")); + + print ''; + //@todo ajouter entity ! + $sql =' SELECT rowid, nom from '.MAIN_DB_PREFIX.'usergroup '; + + $resql = $db->query($sql); + $Tgroup = array(); + while ($obj = $db->fetch_object($resql)) { + $Tgroup[$obj->rowid] = $obj->nom; + } + print $form->multiselectarray('groups', $Tgroup, GETPOST('groups', 'array'), '', 0, 'quatrevingtpercent widthcentpercentminusx', 0, 0); + + print '
'; + print $form->textwithpicto($langs->trans("users"), $langs->trans("fusionGroupsUsers")); + print ''; + + $sql = ' SELECT DISTINCT u.rowid,u.lastname,u.firstname from '.MAIN_DB_PREFIX.'user as u'; + $sql .= ' WHERE 1=1 '; + $sql .= !empty($morefilter) ? $morefilter : ''; + + $resql = $db->query($sql); + if ($resql) { + while ($obj = $db->fetch_object($resql)) { + $userlist[$obj->rowid] = $obj->firstname . ' '. $obj->lastname; + } + } + + print img_picto('', 'users') . $form->multiselectarray('users', $userlist, GETPOST('users', 'array'), '', 0, 'quatrevingtpercent widthcentpercentminusx', 0, 0); + print '
'.$langs->trans("Type").''; + $typeleaves = $object->getTypes(1, -1); + $arraytypeleaves = array(); + foreach ($typeleaves as $key => $val) { + $labeltoshow = ($langs->trans($val['code']) != $val['code'] ? $langs->trans($val['code']) : $val['label']); + $labeltoshow .= ($val['delay'] > 0 ? ' ('.$langs->trans("NoticePeriod").': '.$val['delay'].' '.$langs->trans("days").')' : ''); + $arraytypeleaves[$val['rowid']] = $labeltoshow; + } + print $form->selectarray('type', $arraytypeleaves, (GETPOST('type', 'alpha') ?GETPOST('type', 'alpha') : ''), 1, 0, 0, '', 0, 0, 0, '', '', true); + if ($user->admin) { + print info_admin($langs->trans("YouCanChangeValuesForThisListFromDictionarySetup"), 1); + } + print '
'; + print $form->textwithpicto($langs->trans("DateDebCP"), $langs->trans("FirstDayOfHoliday")); + print ''; + // Si la demande ne vient pas de l'agenda + if (!GETPOST('date_debut_')) { + print $form->selectDate(-1, 'date_debut_', 0, 0, 0, '', 1, 1); + } else { + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_debut_month', 'int'), GETPOST('date_debut_day', 'int'), GETPOST('date_debut_year', 'int')); + print $form->selectDate($tmpdate, 'date_debut_', 0, 0, 0, '', 1, 1); + } + print '     '; + print $form->selectarray('starthalfday', $listhalfday, (GETPOST('starthalfday', 'alpha') ?GETPOST('starthalfday', 'alpha') : 'morning')); + print '
'; + print $form->textwithpicto($langs->trans("DateFinCP"), $langs->trans("LastDayOfHoliday")); + print ''; + if (!GETPOST('date_fin_')) { + print $form->selectDate(-1, 'date_fin_', 0, 0, 0, '', 1, 1); + } else { + $tmpdate = dol_mktime(0, 0, 0, GETPOST('date_fin_month', 'int'), GETPOST('date_fin_day', 'int'), GETPOST('date_fin_year', 'int')); + print $form->selectDate($tmpdate, 'date_fin_', 0, 0, 0, '', 1, 1); + } + print '     '; + print $form->selectarray('endhalfday', $listhalfday, (GETPOST('endhalfday', 'alpha') ?GETPOST('endhalfday', 'alpha') : 'afternoon')); + print '
'.$langs->trans("ReviewedByCP").''; + + $object = new Holiday($db); + $include_users = $object->fetch_users_approver_holiday(); + if (empty($include_users)) { + print img_warning().' '.$langs->trans("NobodyHasPermissionToValidateHolidays"); + } else { + // Defined default approver (the forced approved of user or the supervisor if no forced value defined) + // Note: This use will be set only if the deinfed approvr has permission to approve so is inside include_users + $defaultselectuser = (empty($user->fk_user_holiday_validator) ? $user->fk_user : $user->fk_user_holiday_validator); + if (!empty($conf->global->HOLIDAY_DEFAULT_VALIDATOR)) { + $defaultselectuser = $conf->global->HOLIDAY_DEFAULT_VALIDATOR; // Can force default approver + } + if (GETPOST('valideur', 'int') > 0) { + $defaultselectuser = GETPOST('valideur', 'int'); + } + $s = $form->select_dolusers($defaultselectuser, "valideur", 1, '', 0, $include_users, '', '0,'.$conf->entity, 0, 0, '', 0, '', 'minwidth200 maxwidth500'); + print img_picto('', 'user').$form->textwithpicto($s, $langs->trans("AnyOtherInThisListCanValidate")); + } + + + print '
'.$langs->trans("AutoValidationOnCreate").''; + print ''; + print '
'.$langs->trans("AutoSendMail").''; + print ''; + print '
'.$langs->trans("DescCP").''; + $doleditor = new DolEditor('description', GETPOST('description', 'restricthtml'), '', 80, 'dolibarr_notes', 'In', 0, false, empty($conf->fckeditor->enabled) ? false : $conf->fckeditor->enabled, ROWS_3, '90%'); + print $doleditor->Create(1); + print '
'; + + print dol_get_fiche_end(); + + print $form->buttonsSaveCancel("SendRequestCollectiveCP"); + + print ''."\n"; + } +} else { + if ($error) { + print '
'; + print $error; + print '

'; + print '
'; + } +} + +// End of page +llxFooter(); + +if (is_object($db)) { + $db->close(); +} +/** + * send email to validator for current leave represented by (id) + * @param $id validator for current leave represented by (id) + * @param $cancreate flag for user right + * @param $now date + * @param $autoValidation boolean flag on autovalidation + * @return stdClass + * @throws Exception + */ +function sendMail($id, $cancreate, $now, $autoValidation) +{ + $objStd = new stdClass(); + $objStd->msg = ''; + $objStd->status = 'success'; + $objStd->error = 0; + $objStd->style = ''; + + global $db, $user, $conf, $langs; + + $object = new Holiday($db); + + $result = $object->fetch($id); + + if ($result) { + // If draft and owner of leave + if ($object->statut == Holiday::STATUS_VALIDATED && $cancreate) { + $object->oldcopy = dol_clone($object); + + //if ($autoValidation) $object->statut = Holiday::STATUS_VALIDATED; + + $verif = $object->validate($user); + + if ($verif > 0) { + // To + $destinataire = new User($db); + $destinataire->fetch($object->fk_validator); + $emailTo = $destinataire->email; + + + if (!$emailTo) { + dol_syslog("Expected validator has no email, so we redirect directly to finished page without sending email"); + + $objStd->error++; + $objStd->msg = $langs->trans('ErroremailTo'); + $objStd->status = 'error'; + $objStd->style="warnings"; + return $objStd; + } + + // From + $expediteur = new User($db); + $expediteur->fetch($object->fk_user); + //$emailFrom = $expediteur->email; Email of user can be an email into another company. Sending will fails, we must use the generic email. + $emailFrom = $conf->global->MAIN_MAIL_EMAIL_FROM; + + // Subject + $societeName = $conf->global->MAIN_INFO_SOCIETE_NOM; + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { + $societeName = $conf->global->MAIN_APPLICATION_TITLE; + } + + $subject = $societeName." - ".$langs->transnoentitiesnoconv("HolidaysToValidate"); + + // Content + $message = "

".$langs->transnoentitiesnoconv("Hello")." ".$destinataire->firstname.",

\n"; + + $message .= "

".$langs->transnoentities("HolidaysToValidateBody")."

\n"; + + + // option to warn the validator in case of too short delay + if (empty($conf->global->HOLIDAY_HIDE_APPROVER_ABOUT_TOO_LOW_DELAY)) { + $delayForRequest = 0; // TODO Set delay depending of holiday leave type + if ($delayForRequest) { + $nowplusdelay = dol_time_plus_duree($now, $delayForRequest, 'd'); + + if ($object->date_debut < $nowplusdelay) { + $message = "

".$langs->transnoentities("HolidaysToValidateDelay", $delayForRequest)."

\n"; + } + } + } + + // option to notify the validator if the balance is less than the request + if (empty($conf->global->HOLIDAY_HIDE_APPROVER_ABOUT_NEGATIVE_BALANCE)) { + $nbopenedday = num_open_day($object->date_debut_gmt, $object->date_fin_gmt, 0, 1, $object->halfday); + + if ($nbopenedday > $object->getCPforUser($object->fk_user, $object->fk_type)) { + $message .= "

".$langs->transnoentities("HolidaysToValidateAlertSolde")."

\n"; + } + } + + $link = dol_buildpath("/holiday/card.php", 3) . '?id='.$object->id; + + $message .= "
    "; + $message .= "
  • ".$langs->transnoentitiesnoconv("Name")." : ".dolGetFirstLastname($expediteur->firstname, $expediteur->lastname)."
  • \n"; + $message .= "
  • ".$langs->transnoentitiesnoconv("Period")." : ".dol_print_date($object->date_debut, 'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($object->date_fin, 'day')."
  • \n"; + $message .= "
  • ".$langs->transnoentitiesnoconv("Link").' : '.$link."
  • \n"; + $message .= "
\n"; + + $trackid = 'leav'.$object->id; + + $mail = new CMailFile($subject, $emailTo, $emailFrom, $message, array(), array(), array(), '', '', 0, 1, '', '', $trackid); + + // Sending the email + $result = $mail->sendfile(); + + if (!$result) { + $objStd->error++; + $objStd->msg = $langs->trans('ErroreSendmail'); + $objStd->style="warnings"; + $objStd->status = 'error'; + } else { + $objStd->msg = $langs->trans('mailSended'); + } + + return $objStd; + } else { + $objStd->error++; + $objStd->msg = $langs->trans('ErroreVerif'); + $objStd->status = 'error'; + $objStd->style="errors"; + return $objStd; + } + } + } else { + $objStd->error++; + $objStd->msg = $langs->trans('ErrorloadUserOnSendingMail'); + $objStd->status = 'error'; + $objStd->style="warnings"; + return $objStd; + } + + return $objStd; +} diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 5e0f12d98a8..806f899df36 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -1115,11 +1115,11 @@ class Holiday extends CommonObject $this->fetchByUser($fk_user, '', ''); foreach ($this->holiday as $infos_CP) { - if ($infos_CP['statut'] == 4) { + if ($infos_CP['statut'] == Holiday::STATUS_CANCELED) { continue; // ignore not validated holidays } - if ($infos_CP['statut'] == 5) { - continue; // ignore not validated holidays + if ($infos_CP['statut'] == Holiday::STATUS_REFUSED) { + continue; // ignore refused holidays } //var_dump("--"); //var_dump("old: ".dol_print_date($infos_CP['date_debut'],'dayhour').' '.dol_print_date($infos_CP['date_fin'],'dayhour').' '.$infos_CP['halfday']); @@ -1442,7 +1442,7 @@ class Holiday extends CommonObject } /** - * Return value of a conf parameterfor leave module + * Return value of a conf parameter for leave module * TODO Move this into llx_const table * * @param string $name Name of parameter diff --git a/htdocs/holiday/define_holiday.php b/htdocs/holiday/define_holiday.php index 0a557b0db76..85de7b09f61 100644 --- a/htdocs/holiday/define_holiday.php +++ b/htdocs/holiday/define_holiday.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2007-2022 Laurent Destailleur * Copyright (C) 2011 Dimitri Mouillard * Copyright (C) 2013 Marcos García * Copyright (C) 2016 Regis Houssin @@ -130,12 +130,15 @@ if (empty($reshook)) { // Si il y a une action de mise à jour if ($action == 'update' && GETPOSTISSET('update_cp')) { $error = 0; + $nbok = 0; $typeleaves = $holiday->getTypes(1, 1); $userID = array_keys(GETPOST('update_cp')); $userID = $userID[0]; + $db->begin(); + foreach ($typeleaves as $key => $val) { $userValue = GETPOST('nb_holiday_'.$val['rowid']); $userValue = $userValue[$userID]; @@ -150,20 +153,26 @@ if (empty($reshook)) { $note_holiday = GETPOST('note_holiday'); $comment = ((isset($note_holiday[$userID]) && !empty($note_holiday[$userID])) ? ' ('.$note_holiday[$userID].')' : ''); - //print 'holiday: '.$val['rowid'].'-'.$userValue; + //print 'holiday: '.$val['rowid'].'-'.$userValue;exit; if ($userValue != '') { - // We add the modification to the log (must be before update of sold because we read current value of sold) + // We add the modification to the log (must be done before the update of balance because we read current value of balance inside this method) $result = $holiday->addLogCP($user->id, $userID, $langs->transnoentitiesnoconv('ManualUpdate').$comment, $userValue, $val['rowid']); if ($result < 0) { setEventMessages($holiday->error, $holiday->errors, 'errors'); $error++; + } elseif ($result == 0) { + setEventMessages($langs->trans("HolidayQtyNotModified", $user->login), null, 'warnings'); } // Update of the days of the employee - $result = $holiday->updateSoldeCP($userID, $userValue, $val['rowid']); - if ($result < 0) { - setEventMessages($holiday->error, $holiday->errors, 'errors'); - $error++; + if ($result > 0) { + $nbok++; + + $result = $holiday->updateSoldeCP($userID, $userValue, $val['rowid']); + if ($result < 0) { + setEventMessages($holiday->error, $holiday->errors, 'errors'); + $error++; + } } // If it first update of balance, we set date to avoid to have sold incremented by new month @@ -179,7 +188,13 @@ if (empty($reshook)) { } if (!$error) { - setEventMessages('UpdateConfCPOK', '', 'mesgs'); + $db->commit(); + + if ($nbok > 0) { + setEventMessages('UpdateConfCPOK', '', 'mesgs'); + } + } else { + $db->rollback(); } } } diff --git a/htdocs/holiday/view_log.php b/htdocs/holiday/view_log.php index 57bcd134745..ea71deb4d26 100644 --- a/htdocs/holiday/view_log.php +++ b/htdocs/holiday/view_log.php @@ -159,15 +159,15 @@ if (empty($reshook)) { // Definition of fields for lists $arrayfields = array( - 'cpl.rowid'=>array('label'=>$langs->trans("ID"), 'checked'=>1), - 'cpl.date_action'=>array('label'=>$langs->trans("Date"), 'checked'=>1), - 'cpl.fk_user_action'=>array('label'=>$langs->trans("ActionByCP"), 'checked'=>1), - 'cpl.fk_user_update'=>array('label'=>$langs->trans("UserUpdateCP"), 'checked'=>1), - 'cpl.type_action'=>array('label'=>$langs->trans("Description"), 'checked'=>1), - 'cpl.fk_type'=>array('label'=>$langs->trans("Type"), 'checked'=>1), - 'cpl.prev_solde'=>array('label'=>$langs->trans("PrevSoldeCP"), 'checked'=>1), - 'variation'=>array('label'=>$langs->trans("Variation"), 'checked'=>1), - 'cpl.new_solde'=>array('label'=>$langs->trans("NewSoldeCP"), 'checked'=>1), + 'cpl.rowid'=>array('label'=>"ID", 'checked'=>1), + 'cpl.date_action'=>array('label'=>"Date", 'checked'=>1), + 'cpl.fk_user_action'=>array('label'=>"ActionByCP", 'checked'=>1), + 'cpl.fk_user_update'=>array('label'=>"UserUpdateCP", 'checked'=>1), + 'cpl.type_action'=>array('label'=>"Description", 'checked'=>1), + 'cpl.fk_type'=>array('label'=>"Type", 'checked'=>1), + 'cpl.prev_solde'=>array('label'=>"PrevSoldeCP", 'checked'=>1), + 'variation'=>array('label'=>"Variation", 'checked'=>1), + 'cpl.new_solde'=>array('label'=>"NewSoldeCP", 'checked'=>1), ); @@ -403,7 +403,7 @@ print '
'.$holidaylogstatic->description.''.dol_escape_htmltag($holidaylogstatic->description).''.$detasign.$delta.''; + if ($delta > 0) { + print '+'.$delta.''; + } else { + print ''.$delta.''; + } + print '
'; print ''; print_liste_field_titre("Ref", $_SERVER["PHP_SELF"], "e.ref", "", "", "", $sortfield, $sortorder); @@ -139,6 +161,7 @@ if ($result) { } print '
'; + print ''; } else { dol_print_error($db); } diff --git a/htdocs/hrm/admin/evaluation_extrafields.php b/htdocs/hrm/admin/evaluation_extrafields.php index 771dfc46e99..6513ea311e3 100644 --- a/htdocs/hrm/admin/evaluation_extrafields.php +++ b/htdocs/hrm/admin/evaluation_extrafields.php @@ -27,33 +27,7 @@ */ // Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once '../lib/hrm.lib.php'; @@ -105,7 +79,7 @@ print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); $head = hrmAdminPrepareHead(); -print dol_get_fiche_head($head, 'evaluationsAttributes', $langs->trans($page_name), -1, 'hrm@hrm'); +print dol_get_fiche_head($head, 'evaluationsAttributes', $langs->trans($page_name), -1, 'hrm'); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; diff --git a/htdocs/hrm/admin/job_extrafields.php b/htdocs/hrm/admin/job_extrafields.php index 467d94437b0..5d6ea5d6990 100644 --- a/htdocs/hrm/admin/job_extrafields.php +++ b/htdocs/hrm/admin/job_extrafields.php @@ -27,33 +27,7 @@ */ // Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once '../lib/hrm.lib.php'; @@ -105,7 +79,7 @@ print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); $head = hrmAdminPrepareHead(); -print dol_get_fiche_head($head, 'jobsAttributes', $langs->trans($page_name), -1, 'hrm@job'); +print dol_get_fiche_head($head, 'jobsAttributes', $langs->trans($page_name), -1, 'hrm'); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; diff --git a/htdocs/hrm/admin/skill_extrafields.php b/htdocs/hrm/admin/skill_extrafields.php index 44042a0e30a..adcf6277dd0 100644 --- a/htdocs/hrm/admin/skill_extrafields.php +++ b/htdocs/hrm/admin/skill_extrafields.php @@ -27,33 +27,7 @@ */ // Load Dolibarr environment -$res = 0; -// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) -if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) { - $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php"; -} -// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME -$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1; -while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { - $i--; $j--; -} -if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) { - $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; -} -if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) { - $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; -} -// Try main.inc.php using relative path -if (!$res && file_exists("../../main.inc.php")) { - $res = @include "../../main.inc.php"; -} -if (!$res && file_exists("../../../main.inc.php")) { - $res = @include "../../../main.inc.php"; -} -if (!$res) { - die("Include of main fails"); -} - +require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once '../lib/hrm.lib.php'; @@ -105,7 +79,7 @@ print load_fiche_titre($langs->trans($page_name), $linkback, 'title_setup'); $head = hrmAdminPrepareHead(); -print dol_get_fiche_head($head, 'skillsAttributes', $langs->trans($page_name), -1, 'hrm@skill'); +print dol_get_fiche_head($head, 'skillsAttributes', $langs->trans($page_name), -1, 'hrm'); require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_view.tpl.php'; diff --git a/htdocs/hrm/class/establishment.class.php b/htdocs/hrm/class/establishment.class.php index 326ced8b9c8..6a37ba1e929 100644 --- a/htdocs/hrm/class/establishment.class.php +++ b/htdocs/hrm/class/establishment.class.php @@ -445,6 +445,9 @@ class Establishment extends CommonObject $label .= '
'; $label .= ''.$langs->trans('Ref').': '.$this->ref; + $label .= '
'; + $label .= ''.$langs->trans('Residence').': '.$this->address.', '.$this->zip.' '.$this->town; + $url = DOL_URL_ROOT.'/hrm/establishment/card.php?id='.$this->id; if ($option != 'nolink') { @@ -489,7 +492,7 @@ class Establishment extends CommonObject } if ($withpicto != 2) { - $result .= $this->ref; + $result .= $this->label; } $result .= $linkend; diff --git a/htdocs/hrm/class/skill.class.php b/htdocs/hrm/class/skill.class.php index c2e8833955b..d9f4073e11e 100644 --- a/htdocs/hrm/class/skill.class.php +++ b/htdocs/hrm/class/skill.class.php @@ -76,7 +76,7 @@ class Skill extends CommonObject const STATUS_DRAFT = 0; const STATUS_VALIDATED = 1; const STATUS_CANCELED = 9; - const DEFAULT_MAX_RANK_PER_SKILL = 5; + const DEFAULT_MAX_RANK_PER_SKILL = 3; /** * 'type' field format ('integer', 'integer:ObjectClass:PathToClass[:AddCreateButtonOrNot[:Filter]]', 'sellist:TableName:LabelFieldName[:KeyFieldName[:KeyFieldParent[:Filter]]]', 'varchar(x)', 'double(24,8)', 'real', 'price', 'text', 'text:none', 'html', 'date', 'datetime', 'timestamp', 'duration', 'mail', 'phone', 'url', 'password') @@ -251,7 +251,7 @@ class Skill extends CommonObject global $conf, $user, $langs; $MaxNumberSkill = isset($conf->global->HRM_MAXRANK) ? $conf->global->HRM_MAXRANK : self::DEFAULT_MAX_RANK_PER_SKILL; - $defaultSkillDesc = !empty($conf->global->HRM_DEFAULT_SKILL_DESCRIPTION) ? $conf->global->HRM_DEFAULT_SKILL_DESCRIPTION : 'no Description'; + $defaultSkillDesc = !empty($conf->global->HRM_DEFAULT_SKILL_DESCRIPTION) ? $conf->global->HRM_DEFAULT_SKILL_DESCRIPTION : $langs->trans("NoDescription"); $error = 0; diff --git a/htdocs/hrm/evaluation_document.php b/htdocs/hrm/evaluation_document.php index 215756eff8b..cf93c75edbf 100644 --- a/htdocs/hrm/evaluation_document.php +++ b/htdocs/hrm/evaluation_document.php @@ -54,7 +54,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/hrm/job_document.php b/htdocs/hrm/job_document.php index 83745962052..0e4d34e0412 100644 --- a/htdocs/hrm/job_document.php +++ b/htdocs/hrm/job_document.php @@ -52,7 +52,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/hrm/position_document.php b/htdocs/hrm/position_document.php index eb4ac0e68ce..c51f2204441 100644 --- a/htdocs/hrm/position_document.php +++ b/htdocs/hrm/position_document.php @@ -53,7 +53,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/hrm/skill_card.php b/htdocs/hrm/skill_card.php index 3a27d5898c0..9093766d3ed 100644 --- a/htdocs/hrm/skill_card.php +++ b/htdocs/hrm/skill_card.php @@ -123,11 +123,11 @@ if (empty($reshook)) { // Actions cancel, add, update, update_extras, confirm_validate, confirm_delete, confirm_deleteline, confirm_clone, confirm_close, confirm_setdraft, confirm_reopen - include DOL_DOCUMENT_ROOT . '/core/actions_addupdatedelete.inc.php'; + $noback = 1; + include DOL_DOCUMENT_ROOT.'/core/actions_addupdatedelete.inc.php'; // action update on Skilldet - - $skilldetArray = GETPOST("descriptionline", "array"); + $skilldetArray = GETPOST("descriptionline", "array:alphanohtml"); if (!$error) { if (is_array($skilldetArray) && count($skilldetArray) > 0) { diff --git a/htdocs/hrm/skill_document.php b/htdocs/hrm/skill_document.php index f305ecd1e2e..c0fe492be06 100644 --- a/htdocs/hrm/skill_document.php +++ b/htdocs/hrm/skill_document.php @@ -53,7 +53,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { diff --git a/htdocs/hrm/skill_tab.php b/htdocs/hrm/skill_tab.php index 11dcf9a5172..52c45c72848 100644 --- a/htdocs/hrm/skill_tab.php +++ b/htdocs/hrm/skill_tab.php @@ -152,8 +152,6 @@ if (empty($reshook)) { /* * View - * - * Put here all code to build page */ $form = new Form($db); @@ -216,9 +214,9 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea // ------------------------------------------------------------ $linkback = '' . $langs->trans("BackToList") . ''; - $morehtmlref = '
'; - if (isset($object->label)) $morehtmlref.= $object->label; - $morehtmlref .= '
'; + $morehtmlref = ''; + $morehtmlref .= img_picto($langs->trans("Download").' '.$langs->trans("VCard"), 'vcard.png', 'class="valignmiddle marginleftonly paddingrightonly"'); + $morehtmlref .= ''; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'rowid', $morehtmlref, '&objecttype='.$objecttype); @@ -317,6 +315,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; print ''; + print ''; print '
'; print ''; print ''; @@ -336,6 +335,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print ''; print ''; + print ''; print ''; } print '
'; diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index 38a540ca042..f573d3c85f4 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -2,6 +2,7 @@ /* Copyright (C) 2005-2016 Laurent Destailleur * Copyright (C) 2005-2009 Regis Houssin * Copyright (C) 2012 Christophe Battarel + * Copyright (C) 2022 Charlene Benke * * 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 @@ -625,7 +626,7 @@ if ($step == 3 && $datatoimport) { $maxfilesizearray = getMaxFileSizeArray(); $maxmin = $maxfilesizearray['maxmin']; if ($maxmin > 0) { - $texte .= ''; // MAX_FILE_SIZE must precede the field type=file + print ''; // MAX_FILE_SIZE must precede the field type=file } print '     '; $out = (empty($conf->global->MAIN_UPLOAD_DOC) ? ' disabled' : ''); @@ -635,29 +636,29 @@ if ($step == 3 && $datatoimport) { $max = $conf->global->MAIN_UPLOAD_DOC; // In Kb $maxphp = @ini_get('upload_max_filesize'); // In unknown if (preg_match('/k$/i', $maxphp)) { - $maxphp = $maxphp * 1; + $maxphp = (int) substr($maxphp, 0, -1) * 1; } if (preg_match('/m$/i', $maxphp)) { - $maxphp = $maxphp * 1024; + $maxphp = (int) substr($maxphp, 0, -1) * 1024; } if (preg_match('/g$/i', $maxphp)) { - $maxphp = $maxphp * 1024 * 1024; + $maxphp = (int) substr($maxphp, 0, -1) * 1024 * 1024; } if (preg_match('/t$/i', $maxphp)) { - $maxphp = $maxphp * 1024 * 1024 * 1024; + $maxphp = (int) substr($maxphp, 0, -1) * 1024 * 1024 * 1024; } $maxphp2 = @ini_get('post_max_size'); // In unknown if (preg_match('/k$/i', $maxphp2)) { - $maxphp2 = $maxphp2 * 1; + $maxphp2 = (int) substr($maxphp2, 0, -1) * 1; } if (preg_match('/m$/i', $maxphp2)) { - $maxphp2 = $maxphp2 * 1024; + $maxphp2 = (int) substr($maxphp2, 0, -1) * 1024; } if (preg_match('/g$/i', $maxphp2)) { - $maxphp2 = $maxphp2 * 1024 * 1024; + $maxphp2 = (int) substr($maxphp2, 0, -1) * 1024 * 1024; } if (preg_match('/t$/i', $maxphp2)) { - $maxphp2 = $maxphp2 * 1024 * 1024 * 1024; + $maxphp2 = (int) substr($maxphp2, 0, -1) * 1024 * 1024 * 1024; } // Now $max and $maxphp and $maxphp2 are in Kb $maxmin = $max; @@ -876,9 +877,9 @@ if ($step == 4 && $datatoimport) { $isrequired = preg_match('/\*$/', $label); if (!empty($isrequired)) { $newlabel = substr($label, 0, -1); - $fieldstarget_tmp[$key] = array("label"=>$newlabel,"required"=>true); + $fieldstarget_tmp[$key] = array("label"=>$newlabel, "required"=>true); } else { - $fieldstarget_tmp[$key] = array("label"=>$label,"required"=>false); + $fieldstarget_tmp[$key] = array("label"=>$label, "required"=>false); } if (!empty($array_match_database_to_file[$key])) { $fieldstarget_tmp[$key]["imported"] = true; @@ -1089,9 +1090,14 @@ if ($step == 4 && $datatoimport) { $optionsall = array(); foreach ($fieldstarget as $code => $line) { //var_dump($line); - $labeltoshow = $langs->transnoentities($line["label"]); - $optionsall[$code] = array('labelkey'=>$line['label'], 'label'=>$labeltoshow, 'required'=>(empty($line["required"]) ? 0 : 1), 'position'=>!empty($line['position']) ? $line['position'] : 0); - // TODO Get type from an new array into module descriptor. + + $tmparray = explode('|', $line["label"]); // If label of field is several translation keys separated with | + $labeltoshow = ''; + foreach ($tmparray as $tmpkey => $tmpval) { + $labeltoshow .= ($labeltoshow ? ' '.$langs->trans('or').' ' : '').$langs->transnoentities($tmpval); + } + $optionsall[$code] = array('labelkey'=>$line['label'], 'labelkeyarray'=>$tmparray, 'label'=>$labeltoshow, 'required'=>(empty($line["required"]) ? 0 : 1), 'position'=>!empty($line['position']) ? $line['position'] : 0); + // TODO Get type from a new array into module descriptor. //$picto = 'email'; $picto = ''; if ($picto) { @@ -1129,9 +1135,6 @@ if ($step == 4 && $datatoimport) { print '
'; $entity = (!empty($objimport->array_import_entities[0][$code]) ? $objimport->array_import_entities[0][$code] : $objimport->array_import_icon[0]); - $tablealias = preg_replace('/(\..*)$/i', '', $code); - $tablename = !empty($objimport->array_import_tables[0][$tablealias]) ? $objimport->array_import_tables[0][$tablealias] : ""; - $entityicon = !empty($entitytoicon[$entity]) ? $entitytoicon[$entity] : $entity; // $entityicon must string name of picto of the field like 'project', 'company', 'contact', 'modulename', ... $entitylang = $entitytolang[$entity] ? $entitytolang[$entity] : $objimport->array_import_label[0]; // $entitylang must be a translation key to describe object the field is related to, like 'Company', 'Contact', 'MyModyle', ... @@ -1161,6 +1164,48 @@ if ($step == 4 && $datatoimport) { $label .= $tmpval['label']; $label .= $tmpval['required'] ? '*' : ''; + $tablealias = preg_replace('/(\..*)$/i', '', $tmpcode); + $tablename = !empty($objimport->array_import_tables[0][$tablealias]) ? $objimport->array_import_tables[0][$tablealias] : ""; + + $htmltext = ''; + + $filecolumn = ($i + 1); + // Source field info + if (empty($objimport->array_import_convertvalue[0][$tmpcode])) { // If source file does not need convertion + $filecolumntoshow = num2Alpha($i); + } else { + if ($objimport->array_import_convertvalue[0][$tmpcode]['rule'] == 'fetchidfromref') { + $htmltext .= $langs->trans("DataComeFromIdFoundFromRef", $filecolumn, $langs->transnoentitiesnoconv($entitylang)).'
'; + } + if ($objimport->array_import_convertvalue[0][$tmpcode]['rule'] == 'fetchidfromcodeid') { + $htmltext .= $langs->trans("DataComeFromIdFoundFromCodeId", $filecolumn, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'
'; + } + } + // Source required + $example = !empty($objimport->array_import_examplevalues[0][$tmpcode])?$objimport->array_import_examplevalues[0][$tmpcode]:""; + // Example + if (empty($objimport->array_import_convertvalue[0][$tmpcode])) { // If source file does not need convertion + if ($example) { + $htmltext .= $langs->trans("SourceExample").': '.str_replace('"', '', $example).'
'; + } + } else { + if ($objimport->array_import_convertvalue[0][$tmpcode]['rule'] == 'fetchidfromref') { + $htmltext .= $langs->trans("SourceExample").': '.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement", $entitylang).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; + } elseif ($objimport->array_import_convertvalue[0][$tmpcode]['rule'] == 'fetchidfromcodeid') { + $htmltext .= $langs->trans("SourceExample").': '.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary", $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; + } elseif ($example) { + $htmltext .= $langs->trans("SourceExample").': '.str_replace('"', '', $example).'
'; + } + } + // Format control rule + if (!empty($objimport->array_import_regex[0][$tmpcode])) { + $htmltext .= $langs->trans("FormatControlRule").': '.str_replace('"', '', $objimport->array_import_regex[0][$tmpcode]).'
'; + } + + $htmltext .= $langs->trans("Table")."->".$langs->trans("Field").':   '.$tablename."->".preg_replace('/^.*\./', '', $tmpcode).""; + + $labelhtml = $label.' '.$form->textwithpicto('', $htmltext, 1, 'help', '', 1); + $selectforline .= ''; print ''; $i++; } @@ -1813,7 +1819,7 @@ if ($step == 5 && $datatoimport) { // Actions print '
'; - if ($user->rights->import->run) { + if ($user->hasRight('import', 'run')) { print ''; } else { print ''.$langs->trans("RunSimulateImportFile").''; @@ -1926,9 +1932,9 @@ if ($step == 5 && $datatoimport) { print $langs->trans("TooMuchErrors", (count($arrayoferrors) - $nboferrors))."
"; break; } - print '* '.$langs->trans("Line").' '.$key.'
'; + print '* '.$langs->trans("Line").' '.dol_escape_htmltag($key).'
'; foreach ($val as $i => $err) { - print '     > '.$err['lib'].'
'; + print '     > '.dol_escape_htmltag($err['lib']).'
'; } } print '
' . $langs->trans('AddSkill') . '
'; - $filecolumn = ($i + 1); + // Source field info $htmltext = ''.$langs->trans("FieldSource").'
'; - if ($filecolumn > count($fieldssource)) { - $htmltext .= $langs->trans("DataComeFromNoWhere").'
'; - } else { - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - $filecolumntoshow = num2Alpha($i); - $htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'
'; - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("DataComeFromIdFoundFromRef", $filecolumn, $langs->transnoentitiesnoconv($entitylang)).'
'; - } - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("DataComeFromIdFoundFromCodeId", $filecolumn, $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).'
'; - } - } - } - // Source required - $example = !empty($objimport->array_import_examplevalues[0][$code])?$objimport->array_import_examplevalues[0][$code]:""; - // Example - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - if ($example) { - $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; - } - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("SourceExample").': '.$langs->transnoentitiesnoconv("ExampleAnyRefFoundIntoElement", $entitylang).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; - } elseif ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("SourceExample").': '.$langs->trans("ExampleAnyCodeOrIdFoundIntoDictionary", $langs->transnoentitiesnoconv($objimport->array_import_convertvalue[0][$code]['dict'])).($example ? ' ('.$langs->transnoentitiesnoconv("Example").': '.$example.')' : '').'
'; - } elseif ($example) { - $htmltext .= $langs->trans("SourceExample").': '.$example.'
'; - } - } - // Format control rule - if (!empty($objimport->array_import_regex[0][$code])) { - $htmltext .= $langs->trans("FormatControlRule").': '.$objimport->array_import_regex[0][$code].'
'; - } - $htmltext .= '
'; - // Target field info - $htmltext .= ''.$langs->trans("FieldTarget").'
'; - //$htmltext .= $langs->trans("SourceRequired").': '.yn($line["label"]).'
'; - if (empty($objimport->array_import_convertvalue[0][$code])) { // If source file does not need convertion - $htmltext .= $langs->trans("DataIsInsertedInto").'
'; - } else { - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromref') { - $htmltext .= $langs->trans("DataIDSourceIsInsertedInto").'
'; - } - if ($objimport->array_import_convertvalue[0][$code]['rule'] == 'fetchidfromcodeid') { - $htmltext .= $langs->trans("DataCodeIDSourceIsInsertedInto").'
'; - } - } - $htmltext .= $langs->trans("FieldTitle").": ".$langs->trans($fieldstarget[$arraykeysfieldtarget[$code-1]]["label"])."
"; - $htmltext .= $langs->trans("Table")." -> ".$langs->trans("Field").': '.$tablename." -> ".preg_replace('/^.*\./', '', $code)."
"; - print $form->textwithpicto($more, $htmltext); + $filecolumntoshow = num2Alpha($i); + $htmltext .= $langs->trans("DataComeFromFileFieldNb", $filecolumntoshow).'
'; + + print $form->textwithpicto('', $htmltext); + + print '
'; @@ -1946,9 +1952,9 @@ if ($step == 5 && $datatoimport) { print $langs->trans("TooMuchWarnings", (count($arrayofwarnings) - $nbofwarnings))."
"; break; } - print ' * '.$langs->trans("Line").' '.$key.'
'; + print ' * '.$langs->trans("Line").' '.dol_escape_htmltag($key).'
'; foreach ($val as $i => $err) { - print '     > '.$err['lib'].'
'; + print '     > '.dol_escape_htmltag($err['lib']).'
'; } } print '
'; @@ -1969,7 +1975,7 @@ if ($step == 5 && $datatoimport) { // Actions print '
'; - if ($user->rights->import->run) { + if ($user->hasRight('import', 'run')) { if (empty($nboferrors)) { print ''.$langs->trans("RunImportFile").''; } else { diff --git a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php index 8bd15b7602e..3e09e53fbe6 100644 --- a/htdocs/includes/OAuth/Common/Storage/DoliStorage.php +++ b/htdocs/includes/OAuth/Common/Storage/DoliStorage.php @@ -55,9 +55,13 @@ class DoliStorage implements TokenStorageInterface private $conf; private $key; - private $stateKey; + //private $stateKey; private $keyforprovider; + public $state; + public $date_creation; + public $date_modification; + /** * @param DoliDB $db Database handler @@ -100,7 +104,9 @@ class DoliStorage implements TokenStorageInterface //var_dump($token); dol_syslog("storeAccessToken service=".$service); - $serializedToken = serialize($token); + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; + $serializedToken = dolEncrypt(serialize($token)); + $this->tokens[$service] = $token; if (!is_array($this->tokens)) { @@ -122,8 +128,10 @@ class DoliStorage implements TokenStorageInterface $resql = $this->db->query($sql); } else { // save - $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_token (service, token, entity)"; - $sql.= " VALUES ('".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."', '".$this->db->escape($serializedToken)."', ".((int) $conf->entity).")"; + $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_token (service, token, entity, datec)"; + $sql .= " VALUES ('".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."', '".$this->db->escape($serializedToken)."', ".((int) $conf->entity).", "; + $sql .= " '".$this->db->idate(dol_now())."'"; + $sql .= ")"; $resql = $this->db->query($sql); } //print $sql; @@ -140,15 +148,26 @@ class DoliStorage implements TokenStorageInterface // get from db dol_syslog("hasAccessToken service=".$service); - $sql = "SELECT token FROM ".MAIN_DB_PREFIX."oauth_token"; - $sql .= " WHERE service = '".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."'"; + $sql = "SELECT token, datec, tms, state FROM ".MAIN_DB_PREFIX."oauth_token"; + $sql .= " WHERE service = '".$this->db->escape($service.(empty($this->keyforprovider) ? '' : '-'.$this->keyforprovider))."'"; $sql .= " AND entity IN (".getEntity('oauth_token').")"; $resql = $this->db->query($sql); if (! $resql) { dol_print_error($this->db); } $result = $this->db->fetch_array($resql); - $token = unserialize($result['token']); + if ($result) { + include_once DOL_DOCUMENT_ROOT.'/core/lib/security.lib.php'; + $token = unserialize(dolDecrypt($result['token'])); + $this->date_creation = $this->db->jdate($result['datec']); + $this->date_modification = $this->db->jdate($result['tms']); + $this->state = $result['state']; + } else { + $token = ''; + $this->date_creation = null; + $this->date_modification = null; + $this->state = ''; + } $this->tokens[$service] = $token; @@ -213,9 +232,7 @@ class DoliStorage implements TokenStorageInterface { global $conf; - // TODO save or update - - dol_syslog("storeAuthorizationState service=".$service); + dol_syslog("storeAuthorizationState service=".$service." state=".$state); if (!isset($this->states) || !is_array($this->states)) { $this->states = array(); @@ -224,7 +241,10 @@ class DoliStorage implements TokenStorageInterface //$states[$service] = $state; $this->states[$service] = $state; - $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."oauth_state"; + //$newstate = preg_replace('/\-.*$/', '', $state); + $newstate = $state; + + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."oauth_token"; $sql .= " WHERE service = '".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."'"; $sql .= " AND entity IN (".getEntity('oauth_token').")"; $resql = $this->db->query($sql); @@ -234,14 +254,14 @@ class DoliStorage implements TokenStorageInterface $obj = $this->db->fetch_array($resql); if ($obj) { // update - $sql = "UPDATE ".MAIN_DB_PREFIX."oauth_state"; - $sql.= " SET state = '".$this->db->escape($state)."'"; + $sql = "UPDATE ".MAIN_DB_PREFIX."oauth_token"; + $sql.= " SET state = '".$this->db->escape($newstate)."'"; $sql.= " WHERE rowid = ".((int) $obj['rowid']); $resql = $this->db->query($sql); } else { - // save - $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_state (service, state, entity)"; - $sql.= " VALUES ('".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."', '".$this->db->escape($state)."', ".((int) $conf->entity).")"; + // insert (should not happen) + $sql = "INSERT INTO ".MAIN_DB_PREFIX."oauth_token (service, state, entity)"; + $sql.= " VALUES ('".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."', '".$this->db->escape($newstate)."', ".((int) $conf->entity).")"; $resql = $this->db->query($sql); } @@ -257,7 +277,7 @@ class DoliStorage implements TokenStorageInterface // get state from db dol_syslog("hasAuthorizationState service=".$service); - $sql = "SELECT state FROM ".MAIN_DB_PREFIX."oauth_state"; + $sql = "SELECT state FROM ".MAIN_DB_PREFIX."oauth_token"; $sql .= " WHERE service = '".$this->db->escape($service.($this->keyforprovider?'-'.$this->keyforprovider:''))."'"; $sql .= " AND entity IN (".getEntity('oauth_token').")"; diff --git a/htdocs/includes/OAuth/OAuth2/Service/WordPress.php b/htdocs/includes/OAuth/OAuth2/Service/WordPress.php old mode 100755 new mode 100644 diff --git a/htdocs/includes/jquery/js/jquery-ui.js b/htdocs/includes/jquery/js/jquery-ui.js index 5d9bfa2f1b1..1a613bf2f94 100644 --- a/htdocs/includes/jquery/js/jquery-ui.js +++ b/htdocs/includes/jquery/js/jquery-ui.js @@ -1,4 +1,4 @@ -/*! jQuery UI - v1.13.1 - 2022-01-20 +/*! jQuery UI - v1.13.2 - 2022-07-14 * http://jqueryui.com * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ @@ -20,11 +20,11 @@ $.ui = $.ui || {}; -var version = $.ui.version = "1.13.1"; +var version = $.ui.version = "1.13.2"; /*! - * jQuery UI Widget 1.13.1 + * jQuery UI Widget 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -766,7 +766,7 @@ var widget = $.widget; /*! - * jQuery UI Position 1.13.1 + * jQuery UI Position 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -1263,7 +1263,7 @@ var position = $.ui.position; /*! - * jQuery UI :data 1.13.1 + * jQuery UI :data 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -1292,7 +1292,7 @@ var data = $.extend( $.expr.pseudos, { } ); /*! - * jQuery UI Disable Selection 1.13.1 + * jQuery UI Disable Selection 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -2047,7 +2047,7 @@ colors = jQuery.Color.names = { /*! - * jQuery UI Effects 1.13.1 + * jQuery UI Effects 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -2431,7 +2431,7 @@ if ( $.uiBackCompat !== false ) { } $.extend( $.effects, { - version: "1.13.1", + version: "1.13.2", define: function( name, mode, effect ) { if ( !effect ) { @@ -2999,7 +2999,7 @@ var effect = $.effects; /*! - * jQuery UI Effects Blind 1.13.1 + * jQuery UI Effects Blind 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3054,7 +3054,7 @@ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, d /*! - * jQuery UI Effects Bounce 1.13.1 + * jQuery UI Effects Bounce 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3149,7 +3149,7 @@ var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) /*! - * jQuery UI Effects Clip 1.13.1 + * jQuery UI Effects Clip 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3199,7 +3199,7 @@ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, don /*! - * jQuery UI Effects Drop 1.13.1 + * jQuery UI Effects Drop 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3253,7 +3253,7 @@ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, don /*! - * jQuery UI Effects Explode 1.13.1 + * jQuery UI Effects Explode 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3349,7 +3349,7 @@ var effectsEffectExplode = $.effects.define( "explode", "hide", function( option /*! - * jQuery UI Effects Fade 1.13.1 + * jQuery UI Effects Fade 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3381,7 +3381,7 @@ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, d /*! - * jQuery UI Effects Fold 1.13.1 + * jQuery UI Effects Fold 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3455,7 +3455,7 @@ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, don /*! - * jQuery UI Effects Highlight 1.13.1 + * jQuery UI Effects Highlight 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3497,7 +3497,7 @@ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( op /*! - * jQuery UI Effects Size 1.13.1 + * jQuery UI Effects Size 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3675,7 +3675,7 @@ var effectsEffectSize = $.effects.define( "size", function( options, done ) { /*! - * jQuery UI Effects Scale 1.13.1 + * jQuery UI Effects Scale 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3715,7 +3715,7 @@ var effectsEffectScale = $.effects.define( "scale", function( options, done ) { /*! - * jQuery UI Effects Puff 1.13.1 + * jQuery UI Effects Puff 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3741,7 +3741,7 @@ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, don /*! - * jQuery UI Effects Pulsate 1.13.1 + * jQuery UI Effects Pulsate 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3790,7 +3790,7 @@ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( option /*! - * jQuery UI Effects Shake 1.13.1 + * jQuery UI Effects Shake 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3849,7 +3849,7 @@ var effectsEffectShake = $.effects.define( "shake", function( options, done ) { /*! - * jQuery UI Effects Slide 1.13.1 + * jQuery UI Effects Slide 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3910,7 +3910,7 @@ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, d /*! - * jQuery UI Effects Transfer 1.13.1 + * jQuery UI Effects Transfer 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -3935,7 +3935,7 @@ var effectsEffectTransfer = effect; /*! - * jQuery UI Focusable 1.13.1 + * jQuery UI Focusable 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4017,7 +4017,7 @@ var form = $.fn._form = function() { /*! - * jQuery UI Form Reset Mixin 1.13.1 + * jQuery UI Form Reset Mixin 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4079,7 +4079,7 @@ var formResetMixin = $.ui.formResetMixin = { /*! - * jQuery UI Support for jQuery core 1.8.x and newer 1.13.1 + * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4154,7 +4154,7 @@ if ( !$.fn.even || !$.fn.odd ) { ; /*! - * jQuery UI Keycode 1.13.1 + * jQuery UI Keycode 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4189,7 +4189,7 @@ var keycode = $.ui.keyCode = { /*! - * jQuery UI Labels 1.13.1 + * jQuery UI Labels 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4244,7 +4244,7 @@ var labels = $.fn.labels = function() { /*! - * jQuery UI Scroll Parent 1.13.1 + * jQuery UI Scroll Parent 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4278,7 +4278,7 @@ var scrollParent = $.fn.scrollParent = function( includeHidden ) { /*! - * jQuery UI Tabbable 1.13.1 + * jQuery UI Tabbable 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4302,7 +4302,7 @@ var tabbable = $.extend( $.expr.pseudos, { /*! - * jQuery UI Unique ID 1.13.1 + * jQuery UI Unique ID 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4340,7 +4340,7 @@ var uniqueId = $.fn.extend( { /*! - * jQuery UI Accordion 1.13.1 + * jQuery UI Accordion 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4361,7 +4361,7 @@ var uniqueId = $.fn.extend( { var widgetsAccordion = $.widget( "ui.accordion", { - version: "1.13.1", + version: "1.13.2", options: { active: 0, animate: {}, @@ -4972,7 +4972,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) { /*! - * jQuery UI Menu 1.13.1 + * jQuery UI Menu 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -4991,7 +4991,7 @@ var safeActiveElement = $.ui.safeActiveElement = function( document ) { var widgetsMenu = $.widget( "ui.menu", { - version: "1.13.1", + version: "1.13.2", defaultElement: "
    ", delay: 300, options: { @@ -5663,7 +5663,7 @@ var widgetsMenu = $.widget( "ui.menu", { /*! - * jQuery UI Autocomplete 1.13.1 + * jQuery UI Autocomplete 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -5682,7 +5682,7 @@ var widgetsMenu = $.widget( "ui.menu", { $.widget( "ui.autocomplete", { - version: "1.13.1", + version: "1.13.2", defaultElement: "", options: { appendTo: null, @@ -6319,7 +6319,7 @@ var widgetsAutocomplete = $.ui.autocomplete; /*! - * jQuery UI Controlgroup 1.13.1 + * jQuery UI Controlgroup 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -6340,7 +6340,7 @@ var widgetsAutocomplete = $.ui.autocomplete; var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g; var widgetsControlgroup = $.widget( "ui.controlgroup", { - version: "1.13.1", + version: "1.13.2", defaultElement: "
    ", options: { direction: "horizontal", @@ -6604,7 +6604,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", { } ); /*! - * jQuery UI Checkboxradio 1.13.1 + * jQuery UI Checkboxradio 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -6624,7 +6624,7 @@ var widgetsControlgroup = $.widget( "ui.controlgroup", { $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { - version: "1.13.1", + version: "1.13.2", options: { disabled: null, label: null, @@ -6636,8 +6636,7 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { }, _getCreateOptions: function() { - var disabled, labels; - var that = this; + var disabled, labels, labelContents; var options = this._super() || {}; // We read the type here, because it makes more sense to throw a element type error first, @@ -6657,12 +6656,18 @@ $.widget( "ui.checkboxradio", [ $.ui.formResetMixin, { // We need to get the label text but this may also need to make sure it does not contain the // input itself. - this.label.contents().not( this.element[ 0 ] ).each( function() { + // The label contents could be text, html, or a mix. We wrap all elements + // and read the wrapper's `innerHTML` to get a string representation of + // the label, without the input as part of it. + labelContents = this.label.contents().not( this.element[ 0 ] ); - // The label contents could be text, html, or a mix. We concat each element to get a - // string representation of the label, without the input as part of it. - that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML; - } ); + if ( labelContents.length ) { + this.originalLabel += labelContents + .clone() + .wrapAll( "
    " ) + .parent() + .html(); + } // Set the label option if we found label text if ( this.originalLabel ) { @@ -6870,7 +6875,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio; /*! - * jQuery UI Button 1.13.1 + * jQuery UI Button 1.13.2 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors @@ -6889,7 +6894,7 @@ var widgetsCheckboxradio = $.ui.checkboxradio; $.widget( "ui.button", { - version: "1.13.1", + version: "1.13.2", defaultElement: "
    "),i=e.children()[0];return V("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(k(s),k(n))?o.important="horizontal":o.important="vertical",u.using.call(this,t,o)}),a.offset(V.extend(h,{using:t}))})},V.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,a=s-o,r=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0")[0],w=d.each;function P(t){return null==t?t+"":"object"==typeof t?p[e.call(t)]||"object":typeof t}function M(t,e,i){var s=v[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:Math.min(s.max,Math.max(0,t)))}function S(s){var n=m(),o=n._rgba=[];return s=s.toLowerCase(),w(g,function(t,e){var i=e.re.exec(s),i=i&&e.parse(i),e=e.space||"rgba";if(i)return i=n[e](i),n[_[e].cache]=i[_[e].cache],o=n._rgba=i._rgba,!1}),o.length?("0,0,0,0"===o.join()&&d.extend(o,B.transparent),n):B[s]}function H(t,e,i){return 6*(i=(i+1)%1)<1?t+(e-t)*i*6:2*i<1?e:3*i<2?t+(e-t)*(2/3-i)*6:t}y.style.cssText="background-color:rgba(1,1,1,.5)",b.rgba=-1o.mod/2?s+=o.mod:s-n>o.mod/2&&(s-=o.mod)),l[i]=M((n-s)*a+s,e)))}),this[e](l)},blend:function(t){if(1===this._rgba[3])return this;var e=this._rgba.slice(),i=e.pop(),s=m(t)._rgba;return m(d.map(e,function(t,e){return(1-i)*s[e]+i*t}))},toRgbaString:function(){var t="rgba(",e=d.map(this._rgba,function(t,e){return null!=t?t:2
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:i.width(),height:i.height()},n=document.activeElement;try{n.id}catch(t){n=document.body}return i.wrap(t),i[0]!==n&&!V.contains(i[0],n)||V(n).trigger("focus"),t=i.parent(),"static"===i.css("position")?(t.css({position:"relative"}),i.css({position:"relative"})):(V.extend(s,{position:i.css("position"),zIndex:i.css("z-index")}),V.each(["top","left","bottom","right"],function(t,e){s[e]=i.css(e),isNaN(parseInt(s[e],10))&&(s[e]="auto")}),i.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),i.css(e),t.css(s).show()},removeWrapper:function(t){var e=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),t[0]!==e&&!V.contains(t[0],e)||V(e).trigger("focus")),t}}),V.extend(V.effects,{version:"1.13.1",define:function(t,e,i){return i||(i=e,e="effect"),V.effects.effect[t]=i,V.effects.effect[t].mode=e,i},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,e="vertical"!==i?(e||100)/100:1;return{height:t.height()*e,width:t.width()*s,outerHeight:t.outerHeight()*e,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();1").insertAfter(t).css({display:/^(inline|ruby)/.test(t.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:t.css("marginTop"),marginBottom:t.css("marginBottom"),marginLeft:t.css("marginLeft"),marginRight:t.css("marginRight"),float:t.css("float")}).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).addClass("ui-effects-placeholder"),t.data(j+"placeholder",e)),t.css({position:i,left:s.left,top:s.top}),e},removePlaceholder:function(t){var e=j+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(t){V.effects.restoreStyle(t),V.effects.removePlaceholder(t)},setTransition:function(s,t,n,o){return o=o||{},V.each(t,function(t,e){var i=s.cssUnit(e);0");l.appendTo("body").addClass(t.className).css({top:s.top-a,left:s.left-r,height:i.innerHeight(),width:i.innerWidth(),position:n?"fixed":"absolute"}).animate(o,t.duration,t.easing,function(){l.remove(),"function"==typeof e&&e()})}}),V.fx.step.clip=function(t){t.clipInit||(t.start=V(t.elem).cssClip(),"string"==typeof t.end&&(t.end=G(t.end,t.elem)),t.clipInit=!0),V(t.elem).cssClip({top:t.pos*(t.end.top-t.start.top)+t.start.top,right:t.pos*(t.end.right-t.start.right)+t.start.right,bottom:t.pos*(t.end.bottom-t.start.bottom)+t.start.bottom,left:t.pos*(t.end.left-t.start.left)+t.start.left})},Y={},V.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,t){Y[t]=function(t){return Math.pow(t,e+2)}}),V.extend(Y,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;t<((e=Math.pow(2,--i))-1)/11;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),V.each(Y,function(t,e){V.easing["easeIn"+t]=e,V.easing["easeOut"+t]=function(t){return 1-e(1-t)},V.easing["easeInOut"+t]=function(t){return t<.5?e(2*t)/2:1-e(-2*t+2)/2}});y=V.effects,V.effects.define("blind","hide",function(t,e){var i={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},s=V(this),n=t.direction||"up",o=s.cssClip(),a={clip:V.extend({},o)},r=V.effects.createPlaceholder(s);a.clip[i[n][0]]=a.clip[i[n][1]],"show"===t.mode&&(s.cssClip(a.clip),r&&r.css(V.effects.clipToBox(a)),a.clip=o),r&&r.animate(V.effects.clipToBox(a),t.duration,t.easing),s.animate(a,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("bounce",function(t,e){var i,s,n=V(this),o=t.mode,a="hide"===o,r="show"===o,l=t.direction||"up",h=t.distance,c=t.times||5,o=2*c+(r||a?1:0),u=t.duration/o,d=t.easing,p="up"===l||"down"===l?"top":"left",f="up"===l||"left"===l,g=0,t=n.queue().length;for(V.effects.createPlaceholder(n),l=n.css(p),h=h||n["top"==p?"outerHeight":"outerWidth"]()/3,r&&((s={opacity:1})[p]=l,n.css("opacity",0).css(p,f?2*-h:2*h).animate(s,u,d)),a&&(h/=Math.pow(2,c-1)),(s={})[p]=l;g").css({position:"absolute",visibility:"visible",left:-s*p,top:-i*f}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:p,height:f,left:n+(u?a*p:0),top:o+(u?r*f:0),opacity:u?0:1}).animate({left:n+(u?0:a*p),top:o+(u?0:r*f),opacity:u?1:0},t.duration||500,t.easing,m)}),V.effects.define("fade","toggle",function(t,e){var i="show"===t.mode;V(this).css("opacity",i?0:1).animate({opacity:i?1:0},{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("fold","hide",function(e,t){var i=V(this),s=e.mode,n="show"===s,o="hide"===s,a=e.size||15,r=/([0-9]+)%/.exec(a),l=!!e.horizFirst?["right","bottom"]:["bottom","right"],h=e.duration/2,c=V.effects.createPlaceholder(i),u=i.cssClip(),d={clip:V.extend({},u)},p={clip:V.extend({},u)},f=[u[l[0]],u[l[1]]],s=i.queue().length;r&&(a=parseInt(r[1],10)/100*f[o?0:1]),d.clip[l[0]]=a,p.clip[l[0]]=a,p.clip[l[1]]=0,n&&(i.cssClip(p.clip),c&&c.css(V.effects.clipToBox(p)),p.clip=u),i.queue(function(t){c&&c.animate(V.effects.clipToBox(d),h,e.easing).animate(V.effects.clipToBox(p),h,e.easing),t()}).animate(d,h,e.easing).animate(p,h,e.easing).queue(t),V.effects.unshift(i,s,4)}),V.effects.define("highlight","show",function(t,e){var i=V(this),s={backgroundColor:i.css("backgroundColor")};"hide"===t.mode&&(s.opacity=0),V.effects.saveStyle(i),i.css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(s,{queue:!1,duration:t.duration,easing:t.easing,complete:e})}),V.effects.define("size",function(s,e){var n,i=V(this),t=["fontSize"],o=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],a=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],r=s.mode,l="effect"!==r,h=s.scale||"both",c=s.origin||["middle","center"],u=i.css("position"),d=i.position(),p=V.effects.scaledDimensions(i),f=s.from||p,g=s.to||V.effects.scaledDimensions(i,0);V.effects.createPlaceholder(i),"show"===r&&(r=f,f=g,g=r),n={from:{y:f.height/p.height,x:f.width/p.width},to:{y:g.height/p.height,x:g.width/p.width}},"box"!==h&&"both"!==h||(n.from.y!==n.to.y&&(f=V.effects.setTransition(i,o,n.from.y,f),g=V.effects.setTransition(i,o,n.to.y,g)),n.from.x!==n.to.x&&(f=V.effects.setTransition(i,a,n.from.x,f),g=V.effects.setTransition(i,a,n.to.x,g))),"content"!==h&&"both"!==h||n.from.y!==n.to.y&&(f=V.effects.setTransition(i,t,n.from.y,f),g=V.effects.setTransition(i,t,n.to.y,g)),c&&(c=V.effects.getBaseline(c,p),f.top=(p.outerHeight-f.outerHeight)*c.y+d.top,f.left=(p.outerWidth-f.outerWidth)*c.x+d.left,g.top=(p.outerHeight-g.outerHeight)*c.y+d.top,g.left=(p.outerWidth-g.outerWidth)*c.x+d.left),delete f.outerHeight,delete f.outerWidth,i.css(f),"content"!==h&&"both"!==h||(o=o.concat(["marginTop","marginBottom"]).concat(t),a=a.concat(["marginLeft","marginRight"]),i.find("*[width]").each(function(){var t=V(this),e=V.effects.scaledDimensions(t),i={height:e.height*n.from.y,width:e.width*n.from.x,outerHeight:e.outerHeight*n.from.y,outerWidth:e.outerWidth*n.from.x},e={height:e.height*n.to.y,width:e.width*n.to.x,outerHeight:e.height*n.to.y,outerWidth:e.width*n.to.x};n.from.y!==n.to.y&&(i=V.effects.setTransition(t,o,n.from.y,i),e=V.effects.setTransition(t,o,n.to.y,e)),n.from.x!==n.to.x&&(i=V.effects.setTransition(t,a,n.from.x,i),e=V.effects.setTransition(t,a,n.to.x,e)),l&&V.effects.saveStyle(t),t.css(i),t.animate(e,s.duration,s.easing,function(){l&&V.effects.restoreStyle(t)})})),i.animate(g,{queue:!1,duration:s.duration,easing:s.easing,complete:function(){var t=i.offset();0===g.opacity&&i.css("opacity",f.opacity),l||(i.css("position","static"===u?"relative":u).offset(t),V.effects.saveStyle(i)),e()}})}),V.effects.define("scale",function(t,e){var i=V(this),s=t.mode,s=parseInt(t.percent,10)||(0===parseInt(t.percent,10)||"effect"!==s?0:100),s=V.extend(!0,{from:V.effects.scaledDimensions(i),to:V.effects.scaledDimensions(i,s,t.direction||"both"),origin:t.origin||["middle","center"]},t);t.fade&&(s.from.opacity=1,s.to.opacity=0),V.effects.effect.size.call(this,s,e)}),V.effects.define("puff","hide",function(t,e){t=V.extend(!0,{},t,{fade:!0,percent:parseInt(t.percent,10)||150});V.effects.effect.scale.call(this,t,e)}),V.effects.define("pulsate","show",function(t,e){var i=V(this),s=t.mode,n="show"===s,o=2*(t.times||5)+(n||"hide"===s?1:0),a=t.duration/o,r=0,l=1,s=i.queue().length;for(!n&&i.is(":visible")||(i.css("opacity",0).show(),r=1);l li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var t=this.options;this.prevShow=this.prevHide=V(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),t.collapsible||!1!==t.active&&null!=t.active||(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():V()}},_createIcons:function(){var t,e=this.options.icons;e&&(t=V(""),this._addClass(t,"ui-accordion-header-icon","ui-icon "+e.header),t.prependTo(this.headers),t=this.active.children(".ui-accordion-header-icon"),this._removeClass(t,e.header)._addClass(t,null,e.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(t){if(!t.altKey&&!t.ctrlKey){var e=V.ui.keyCode,i=this.headers.length,s=this.headers.index(t.target),n=!1;switch(t.keyCode){case e.RIGHT:case e.DOWN:n=this.headers[(s+1)%i];break;case e.LEFT:case e.UP:n=this.headers[(s-1+i)%i];break;case e.SPACE:case e.ENTER:this._eventHandler(t);break;case e.HOME:n=this.headers[0];break;case e.END:n=this.headers[i-1]}n&&(V(t.target).attr("tabIndex",-1),V(n).attr("tabIndex",0),V(n).trigger("focus"),t.preventDefault())}},_panelKeyDown:function(t){t.keyCode===V.ui.keyCode.UP&&t.ctrlKey&&V(t.currentTarget).prev().trigger("focus")},refresh:function(){var t=this.options;this._processPanels(),!1===t.active&&!0===t.collapsible||!this.headers.length?(t.active=!1,this.active=V()):!1===t.active?this._activate(0):this.active.length&&!V.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=V()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var i,t=this.options,e=t.heightStyle,s=this.element.parent();this.active=this._findActive(t.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var t=V(this),e=t.uniqueId().attr("id"),i=t.next(),s=i.uniqueId().attr("id");t.attr("aria-controls",s),i.attr("aria-labelledby",e)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(t.event),"fill"===e?(i=s.height(),this.element.siblings(":visible").each(function(){var t=V(this),e=t.css("position");"absolute"!==e&&"fixed"!==e&&(i-=t.outerHeight(!0))}),this.headers.each(function(){i-=V(this).outerHeight(!0)}),this.headers.next().each(function(){V(this).height(Math.max(0,i-V(this).innerHeight()+V(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.headers.next().each(function(){var t=V(this).is(":visible");t||V(this).show(),i=Math.max(i,V(this).css("height","").height()),t||V(this).hide()}).height(i))},_activate:function(t){t=this._findActive(t)[0];t!==this.active[0]&&(t=t||this.active[0],this._eventHandler({target:t,currentTarget:t,preventDefault:V.noop}))},_findActive:function(t){return"number"==typeof t?this.headers.eq(t):V()},_setupEvents:function(t){var i={keydown:"_keydown"};t&&V.each(t.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var e=this.options,i=this.active,s=V(t.currentTarget),n=s[0]===i[0],o=n&&e.collapsible,a=o?V():s.next(),r=i.next(),a={oldHeader:i,oldPanel:r,newHeader:o?V():s,newPanel:a};t.preventDefault(),n&&!e.collapsible||!1===this._trigger("beforeActivate",t,a)||(e.active=!o&&this.headers.index(s),this.active=n?V():s,this._toggle(a),this._removeClass(i,"ui-accordion-header-active","ui-state-active"),e.icons&&(i=i.children(".ui-accordion-header-icon"),this._removeClass(i,null,e.icons.activeHeader)._addClass(i,null,e.icons.header)),n||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),e.icons&&(n=s.children(".ui-accordion-header-icon"),this._removeClass(n,null,e.icons.header)._addClass(n,null,e.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(t){var e=t.newPanel,i=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=e,this.prevHide=i,this.options.animate?this._animate(e,i,t):(i.hide(),e.show(),this._toggleComplete(t)),i.attr({"aria-hidden":"true"}),i.prev().attr({"aria-selected":"false","aria-expanded":"false"}),e.length&&i.length?i.prev().attr({tabIndex:-1,"aria-expanded":"false"}):e.length&&this.headers.filter(function(){return 0===parseInt(V(this).attr("tabIndex"),10)}).attr("tabIndex",-1),e.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,i,e){var s,n,o,a=this,r=0,l=t.css("box-sizing"),h=t.length&&(!i.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=V(t.target),i=V(V.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){V.contains(this.element[0],V.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=V(t.target).closest(".ui-menu-item"),i=V(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=V(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case V.ui.keyCode.PAGE_UP:this.previousPage(t);break;case V.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case V.ui.keyCode.HOME:this._move("first","first",t);break;case V.ui.keyCode.END:this._move("last","last",t);break;case V.ui.keyCode.UP:this.previous(t);break;case V.ui.keyCode.DOWN:this.next(t);break;case V.ui.keyCode.LEFT:this.collapse(t);break;case V.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case V.ui.keyCode.ENTER:case V.ui.keyCode.SPACE:this._activate(t);break;case V.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=V(this),e=t.prev(),i=V("").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=V(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!V.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(V.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(V.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=V.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=V("
 
",x=o?"":"",g=0;g<7;g++)x+="";for(w+=x+"",D=this._getDaysInMonth(U,K),U===t.selectedYear&&K===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,D)),C=(this._getFirstDayOfMonth(U,K)-n+7)%7,D=Math.ceil((C+D)/7),I=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=I,T=this._daylightSavingAdjust(new Date(U,K,1-C)),P=0;P",M=o?"":"",g=0;g<7;g++)S=c?c.apply(t.input?t.input[0]:null,[T]):[!0,""],z=(H=T.getMonth()!==K)&&!d||!S[0]||j&&T"+(H&&!u?" ":z?""+T.getDate()+"":""+T.getDate()+"")+"",T.setDate(T.getDate()+1),T=this._daylightSavingAdjust(T);w+=M+""}11<++K&&(K=0,U++),_+=w+="
"+this._get(t,"weekHeader")+""+r[k]+"
"+this._get(t,"calculateWeek")(T)+"
"+(Y?""+(0":""):"")}f+=_}return f+=F,t._keyEvent=!1,f},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var l,h,c,u,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),_=this._get(t,"selectMonthLabel"),v=this._get(t,"selectYearLabel"),b="
",y="";if(o||!f)y+=""+a[e]+"";else{for(l=s&&s.getFullYear()===i,h=n&&n.getFullYear()===i,y+=""}if(m||(b+=y+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)b+=""+i+"";else{for(a=this._get(t,"yearRange").split(":"),u=(new Date).getFullYear(),d=(_=function(t){t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?u+parseInt(t,10):parseInt(t,10);return isNaN(t)?u:t})(a[0]),p=Math.max(d,_(a[1]||"")),d=s?Math.max(d,s.getFullYear()):d,p=n?Math.min(p,n.getFullYear()):p,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),m&&(b+=(!o&&f&&g?"":" ")+y),b+="
"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),e=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),t=this._getMinMaxDate(t,"max"),e=i&&e=i.getTime())&&(!s||e.getTime()<=s.getTime())&&(!n||e.getFullYear()>=n)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),V.fn.datepicker=function(t){if(!this.length)return this;V.datepicker.initialized||(V(document).on("mousedown",V.datepicker._checkExternalClick),V.datepicker.initialized=!0),0===V("#"+V.datepicker._mainDivId).length&&V("body").append(V.datepicker.dpDiv);var e=Array.prototype.slice.call(arguments,1);return"string"==typeof t&&("isDisabled"===t||"getDate"===t||"widget"===t)||"option"===t&&2===arguments.length&&"string"==typeof arguments[1]?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this[0]].concat(e)):this.each(function(){"string"==typeof t?V.datepicker["_"+t+"Datepicker"].apply(V.datepicker,[this].concat(e)):V.datepicker._attachDatepicker(this,t)})},V.datepicker=new st,V.datepicker.initialized=!1,V.datepicker.uuid=(new Date).getTime(),V.datepicker.version="1.13.2";V.datepicker,V.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var rt=!1;V(document).on("mouseup",function(){rt=!1});V.widget("ui.mouse",{version:"1.13.2",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(t){if(!0===V.data(t.target,e.widgetName+".preventClickEvent"))return V.removeData(t.target,e.widgetName+".preventClickEvent"),t.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!rt){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var e=this,i=1===t.which,s=!("string"!=typeof this.options.cancel||!t.target.nodeName)&&V(t.target).closest(this.options.cancel).length;return i&&!s&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(t),!this._mouseStarted)?(t.preventDefault(),!0):(!0===V.data(t.target,this.widgetName+".preventClickEvent")&&V.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return e._mouseMove(t)},this._mouseUpDelegate=function(t){return e._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),rt=!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(V.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button)return this._mouseUp(t);if(!t.which)if(t.originalEvent.altKey||t.originalEvent.ctrlKey||t.originalEvent.metaKey||t.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,t),this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&V.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,rt=!1,t.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),V.ui.plugin={add:function(t,e,i){var s,n=V.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var e=V.ui.safeActiveElement(this.document[0]);V(t.target).closest(e).length||V.ui.safeBlur(e)},_mouseStart:function(t){var e=this.options;return this.helper=this._createHelper(t),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),V.ui.ddmanager&&(V.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(a=i[3]+this.offset.click.top)),s.grid&&(t=s.grid[1]?this.originalPageY+Math.round((a-this.originalPageY)/s.grid[1])*s.grid[1]:this.originalPageY,a=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-s.grid[1]:t+s.grid[1],t=s.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/s.grid[0])*s.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-s.grid[0]:t+s.grid[0]),"y"===s.axis&&(o=this.originalPageX),"x"===s.axis&&(a=this.originalPageY)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:n?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:n?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(t,e,i){return i=i||this._uiHash(),V.ui.plugin.call(this,t,[e,i,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),i.offset=this.positionAbs),V.Widget.prototype._trigger.call(this,t,e,i)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),V.ui.plugin.add("draggable","connectToSortable",{start:function(e,t,i){var s=V.extend({},t,{item:i.element});i.sortables=[],V(i.options.connectToSortable).each(function(){var t=V(this).sortable("instance");t&&!t.options.disabled&&(i.sortables.push(t),t.refreshPositions(),t._trigger("activate",e,s))})},stop:function(e,t,i){var s=V.extend({},t,{item:i.element});i.cancelHelperRemoval=!1,V.each(i.sortables,function(){var t=this;t.isOver?(t.isOver=0,i.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(i,s,n){V.each(n.sortables,function(){var t=!1,e=this;e.positionAbs=n.positionAbs,e.helperProportions=n.helperProportions,e.offset.click=n.offset.click,e._intersectsWith(e.containerCache)&&(t=!0,V.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,t=this!==e&&this._intersectsWith(this.containerCache)&&V.contains(e.element[0],this.element[0])?!1:t})),t?(e.isOver||(e.isOver=1,n._parent=s.helper.parent(),e.currentItem=s.helper.appendTo(e.element).data("ui-sortable-item",!0),e.options._helper=e.options.helper,e.options.helper=function(){return s.helper[0]},i.target=e.currentItem[0],e._mouseCapture(i,!0),e._mouseStart(i,!0,!0),e.offset.click.top=n.offset.click.top,e.offset.click.left=n.offset.click.left,e.offset.parent.left-=n.offset.parent.left-e.offset.parent.left,e.offset.parent.top-=n.offset.parent.top-e.offset.parent.top,n._trigger("toSortable",i),n.dropped=e.element,V.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,e.fromOutside=n),e.currentItem&&(e._mouseDrag(i),s.position=e.position)):e.isOver&&(e.isOver=0,e.cancelHelperRemoval=!0,e.options._revert=e.options.revert,e.options.revert=!1,e._trigger("out",i,e._uiHash(e)),e._mouseStop(i,!0),e.options.revert=e.options._revert,e.options.helper=e.options._helper,e.placeholder&&e.placeholder.remove(),s.helper.appendTo(n._parent),n._refreshOffsets(i),s.position=n._generatePosition(i,!0),n._trigger("fromSortable",i),n.dropped=!1,V.each(n.sortables,function(){this.refreshPositions()}))})}}),V.ui.plugin.add("draggable","cursor",{start:function(t,e,i){var s=V("body"),i=i.options;s.css("cursor")&&(i._cursor=s.css("cursor")),s.css("cursor",i.cursor)},stop:function(t,e,i){i=i.options;i._cursor&&V("body").css("cursor",i._cursor)}}),V.ui.plugin.add("draggable","opacity",{start:function(t,e,i){e=V(e.helper),i=i.options;e.css("opacity")&&(i._opacity=e.css("opacity")),e.css("opacity",i.opacity)},stop:function(t,e,i){i=i.options;i._opacity&&V(e.helper).css("opacity",i._opacity)}}),V.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,e,i){var s=i.options,n=!1,o=i.scrollParentNotHidden[0],a=i.document[0];o!==a&&"HTML"!==o.tagName?(s.axis&&"x"===s.axis||(i.overflowOffset.top+o.offsetHeight-t.pageY").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&V(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){V(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,a=this;if(this.handles=o.handles||(V(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=V(),this._addedHandles=V(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=V(this.handles[e]),this._on(this.handles[e],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=V(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=V(this.handles[e])[0])!==t.target&&!V.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=V(s.containment).scrollLeft()||0,i+=V(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=V(".ui-resizable-"+this.axis).css("cursor"),V("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),V.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(V.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),V("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,h=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&h&&(t.left=r-e.minWidth),s&&h&&(t.left=r-e.maxWidth),a&&i&&(t.top=l-e.minHeight),n&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return V.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return V.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){V.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),V.ui.plugin.add("resizable","animate",{stop:function(e){var i=V(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,a=n?0:i.sizeDiff.width,n={width:i.size.width-a,height:i.size.height-o},a=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(V.extend(n,o&&a?{top:o,left:a}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&V(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),V.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=V(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,a=o instanceof V?o.get(0):/parent/.test(o)?e.parent().get(0):o;a&&(n.containerElement=V(a),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:V(document),left:0,top:0,width:V(document).width(),height:V(document).height()||document.body.parentNode.scrollHeight}):(i=V(a),s=[],V(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(a,"left")?a.scrollWidth:o,e=n._hasScroll(a)?a.scrollHeight:e,n.parentData={element:a,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=V(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,a={top:0,left:0},r=e.containerElement,t=!0;r[0]!==document&&/static/.test(r.css("position"))&&(a=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-a.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-a.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-a.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=V(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=V(t.helper),a=o.offset(),r=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&V(this).css({left:a.left-s.left-i.left,width:r,height:o})}}),V.ui.plugin.add("resizable","alsoResize",{start:function(){var t=V(this).resizable("instance").options;V(t.alsoResize).each(function(){var t=V(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=V(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,a={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};V(s.alsoResize).each(function(){var t=V(this),s=V(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];V.each(e,function(t,e){var i=(s[e]||0)+(a[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){V(this).removeData("ui-resizable-alsoresize")}}),V.ui.plugin.add("resizable","ghost",{start:function(){var t=V(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==V.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=V(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=V(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),V.ui.plugin.add("resizable","grid",{resize:function(){var t,e=V(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,a=e.axis,r="number"==typeof i.grid?[i.grid,i.grid]:i.grid,l=r[0]||1,h=r[1]||1,c=Math.round((s.width-n.width)/l)*l,u=Math.round((s.height-n.height)/h)*h,d=n.width+c,p=n.height+u,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>p;i.grid=r,m&&(d+=l),s&&(p+=h),f&&(d-=l),g&&(p-=h),/^(se|s|e)$/.test(a)?(e.size.width=d,e.size.height=p):/^(ne)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.top=o.top-u):/^(sw)$/.test(a)?(e.size.width=d,e.size.height=p,e.position.left=o.left-c):((p-h<=0||d-l<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),i=!0),i&&!e&&this._trigger("focus",t),i},open:function(){var t=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=V(V.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){t._focusTabbable(),t._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=!(t=!(t=!(t=!(t=t||this.element.find("[autofocus]")).length?this.element.find(":tabbable"):t).length?this.uiDialogButtonPane.find(":tabbable"):t).length?this.uiDialogTitlebarClose.filter(":tabbable"):t).length?this.uiDialog:t).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var t=V.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===t||V.contains(this.uiDialog[0],t)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=V("
").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===V.ui.keyCode.ESCAPE)return t.preventDefault(),void this.close(t);var e,i,s;t.keyCode!==V.ui.keyCode.TAB||t.isDefaultPrevented()||(e=this.uiDialog.find(":tabbable"),i=e.first(),s=e.last(),t.target!==s[0]&&t.target!==this.uiDialog[0]||t.shiftKey?t.target!==i[0]&&t.target!==this.uiDialog[0]||!t.shiftKey||(this._delay(function(){s.trigger("focus")}),t.preventDefault()):(this._delay(function(){i.trigger("focus")}),t.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=V("
"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(t){V(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=V("").button({label:V("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),t=V("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(t,"ui-dialog-title"),this._title(t),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=V("
"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=V("
").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var s=this,t=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),V.isEmptyObject(t)||Array.isArray(t)&&!t.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(V.each(t,function(t,e){var i;e=V.extend({type:"button"},e="function"==typeof e?{click:e,text:t}:e),i=e.click,t={icon:e.icon,iconPosition:e.iconPosition,showLabel:e.showLabel,icons:e.icons,text:e.text},delete e.click,delete e.icon,delete e.iconPosition,delete e.showLabel,delete e.icons,"boolean"==typeof e.text&&delete e.text,V("",e).button(t).appendTo(s.uiButtonSet).on("click",function(){i.apply(s.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var n=this,o=this.options;function a(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(t,e){n._addClass(V(this),"ui-dialog-dragging"),n._blockFrames(),n._trigger("dragStart",t,a(e))},drag:function(t,e){n._trigger("drag",t,a(e))},stop:function(t,e){var i=e.offset.left-n.document.scrollLeft(),s=e.offset.top-n.document.scrollTop();o.position={my:"left top",at:"left"+(0<=i?"+":"")+i+" top"+(0<=s?"+":"")+s,of:n.window},n._removeClass(V(this),"ui-dialog-dragging"),n._unblockFrames(),n._trigger("dragStop",t,a(e))}})},_makeResizable:function(){var n=this,o=this.options,t=o.resizable,e=this.uiDialog.css("position"),t="string"==typeof t?t:"n,e,s,w,se,sw,ne,nw";function a(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:o.maxWidth,maxHeight:o.maxHeight,minWidth:o.minWidth,minHeight:this._minHeight(),handles:t,start:function(t,e){n._addClass(V(this),"ui-dialog-resizing"),n._blockFrames(),n._trigger("resizeStart",t,a(e))},resize:function(t,e){n._trigger("resize",t,a(e))},stop:function(t,e){var i=n.uiDialog.offset(),s=i.left-n.document.scrollLeft(),i=i.top-n.document.scrollTop();o.height=n.uiDialog.height(),o.width=n.uiDialog.width(),o.position={my:"left top",at:"left"+(0<=s?"+":"")+s+" top"+(0<=i?"+":"")+i,of:n.window},n._removeClass(V(this),"ui-dialog-resizing"),n._unblockFrames(),n._trigger("resizeStop",t,a(e))}}).css("position",e)},_trackFocus:function(){this._on(this.widget(),{focusin:function(t){this._makeFocusTarget(),this._focusedElement=V(t.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var t=this._trackingInstances(),e=V.inArray(this,t);-1!==e&&t.splice(e,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,n={};V.each(t,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(t,e){var i,s=this.uiDialog;"disabled"!==t&&(this._super(t,e),"appendTo"===t&&this.uiDialog.appendTo(this._appendTo()),"buttons"===t&&this._createButtons(),"closeText"===t&&this.uiDialogTitlebarClose.button({label:V("").text(""+this.options.closeText).html()}),"draggable"===t&&((i=s.is(":data(ui-draggable)"))&&!e&&s.draggable("destroy"),!i&&e&&this._makeDraggable()),"position"===t&&this._position(),"resizable"===t&&((i=s.is(":data(ui-resizable)"))&&!e&&s.resizable("destroy"),i&&"string"==typeof e&&s.resizable("option","handles",e),i||!1===e||this._makeResizable()),"title"===t&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var t=V(this);return V("
").css({position:"absolute",width:t.outerWidth(),height:t.outerHeight()}).appendTo(t.parent()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(t){return!!V(t.target).closest(".ui-dialog").length||!!V(t.target).closest(".ui-datepicker").length},_createOverlay:function(){var i,s;this.options.modal&&(i=V.fn.jquery.substring(0,4),s=!0,this._delay(function(){s=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var e;s||((e=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),e._focusTabbable(),"3.4."!==i&&"3.5."!==i||e._delay(e._restoreTabbableFocus)))}.bind(this)),this.overlay=V("
").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==V.uiBackCompat&&V.widget("ui.dialog",V.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}});V.ui.dialog;function lt(t,e,i){return e<=t&&t").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,e=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).width(e.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,t===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=V("
").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}}),V.widget("ui.selectable",V.ui.mouse,{version:"1.13.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var i=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){i.elementPos=V(i.element[0]).offset(),i.selectees=V(i.options.filter,i.element[0]),i._addClass(i.selectees,"ui-selectee"),i.selectees.each(function(){var t=V(this),e=t.offset(),e={left:e.left-i.elementPos.left,top:e.top-i.elementPos.top};V.data(this,"selectable-item",{element:this,$element:t,left:e.left,top:e.top,right:e.left+t.outerWidth(),bottom:e.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=V("
"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(i){var s=this,t=this.options;this.opos=[i.pageX,i.pageY],this.elementPos=V(this.element[0]).offset(),this.options.disabled||(this.selectees=V(t.filter,this.element[0]),this._trigger("start",i),V(t.appendTo).append(this.helper),this.helper.css({left:i.pageX,top:i.pageY,width:0,height:0}),t.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var t=V.data(this,"selectable-item");t.startselected=!0,i.metaKey||i.ctrlKey||(s._removeClass(t.$element,"ui-selected"),t.selected=!1,s._addClass(t.$element,"ui-unselecting"),t.unselecting=!0,s._trigger("unselecting",i,{unselecting:t.element}))}),V(i.target).parents().addBack().each(function(){var t,e=V.data(this,"selectable-item");if(e)return t=!i.metaKey&&!i.ctrlKey||!e.$element.hasClass("ui-selected"),s._removeClass(e.$element,t?"ui-unselecting":"ui-selected")._addClass(e.$element,t?"ui-selecting":"ui-unselecting"),e.unselecting=!t,e.selecting=t,(e.selected=t)?s._trigger("selecting",i,{selecting:e.element}):s._trigger("unselecting",i,{unselecting:e.element}),!1}))},_mouseDrag:function(s){if(this.dragged=!0,!this.options.disabled){var t,n=this,o=this.options,a=this.opos[0],r=this.opos[1],l=s.pageX,h=s.pageY;return ll||i.righth||i.bottoma&&i.rightr&&i.bottom",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var t=this.element.uniqueId().attr("id");this.ids={element:t,button:t+"-button",menu:t+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=V()},_drawButton:function(){var t,e=this,i=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=V("",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),t=V("").appendTo(this.button),this._addClass(t,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(i).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){e._rendered||e._refreshMenu()})},_drawMenu:function(){var i=this;this.menu=V("
    ",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=V("
    ").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,e){t.preventDefault(),i._setSelection(),i._select(e.item.data("ui-selectmenu-item"),t)},focus:function(t,e){e=e.item.data("ui-selectmenu-item");null!=i.focusIndex&&e.index!==i.focusIndex&&(i._trigger("focus",t,{item:e}),i.isOpen||i._select(e,t)),i.focusIndex=e.index,i.button.attr("aria-activedescendant",i.menuItems.eq(e.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(V.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(t){var e=V("");return this._setText(e,t.label),this._addClass(e,"ui-selectmenu-text"),e},_renderMenu:function(s,t){var n=this,o="";V.each(t,function(t,e){var i;e.optgroup!==o&&(i=V("
  • ",{text:e.optgroup}),n._addClass(i,"ui-selectmenu-optgroup","ui-menu-divider"+(e.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),i.appendTo(s),o=e.optgroup),n._renderItemData(s,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(t,e){var i=V("
  • "),s=V("
    ",{title:e.element.attr("title")});return e.disabled&&this._addClass(i,null,"ui-state-disabled"),this._setText(s,e.label),i.append(s).appendTo(t)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),s+=":not(.ui-state-disabled)"),(s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](s).eq(-1):i[t+"All"](s).eq(0)).length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.trigger("focus"))},_documentClick:{mousedown:function(t){this.isOpen&&(V(t.target).closest(".ui-selectmenu-menu, #"+V.escapeSelector(this.ids.button)).length||this.close(t))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(t){var e=!0;switch(t.keyCode){case V.ui.keyCode.TAB:case V.ui.keyCode.ESCAPE:this.close(t),e=!1;break;case V.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(t);break;case V.ui.keyCode.UP:t.altKey?this._toggle(t):this._move("prev",t);break;case V.ui.keyCode.DOWN:t.altKey?this._toggle(t):this._move("next",t);break;case V.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(t):this._toggle(t);break;case V.ui.keyCode.LEFT:this._move("prev",t);break;case V.ui.keyCode.RIGHT:this._move("next",t);break;case V.ui.keyCode.HOME:case V.ui.keyCode.PAGE_UP:this._move("first",t);break;case V.ui.keyCode.END:case V.ui.keyCode.PAGE_DOWN:this._move("last",t);break;default:this.menu.trigger(t),e=!1}e&&t.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?V(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(t){var i=this,s=[];t.each(function(t,e){e.hidden||s.push(i._parseOption(V(e),t))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),V.widget("ui.slider",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var t,e=this.options,i=this.element.find(".ui-slider-handle"),s=[],n=e.values&&e.values.length||1;for(i.length>n&&(i.slice(n).remove(),i=i.slice(0,n)),t=i.length;t");this.handles=i.add(V(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(t){V(this).data("ui-slider-handle-index",t).attr("tabIndex",0)})},_createRange:function(){var t=this.options;t.range?(!0===t.range&&(t.values?t.values.length&&2!==t.values.length?t.values=[t.values[0],t.values[0]]:Array.isArray(t.values)&&(t.values=t.values.slice(0)):t.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=V("
    ").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==t.range&&"max"!==t.range||this._addClass(this.range,"ui-slider-range-"+t.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(t){var i,s,n,o,e,a,r=this,l=this.options;return!l.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(a),s=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var e=Math.abs(i-r.values(t));(e=this._valueMax())return this._valueMax();var e=0=e&&(t+=0this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return t=null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString(),t=e.indexOf(".");return-1===t?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,t,s,n,o=this.options.range,a=this.options,r=this,l=!this._animateOff&&a.animate,h={};this._hasMultipleValues()?this.handles.each(function(t){i=(r.values(t)-r._valueMin())/(r._valueMax()-r._valueMin())*100,h["horizontal"===r.orientation?"left":"bottom"]=i+"%",V(this).stop(1,1)[l?"animate":"css"](h,a.animate),!0===r.options.range&&("horizontal"===r.orientation?(0===t&&r.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===t&&r.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},a.animate),1===t&&r.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(t=this.value(),s=this._valueMin(),n=this._valueMax(),i=n!==s?(t-s)/(n-s)*100:0,h["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](h,a.animate),"min"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},a.animate),"max"===o&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},a.animate),"min"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},a.animate),"max"===o&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(t){var e,i,s,n=V(t.target).data("ui-slider-handle-index");switch(t.keyCode){case V.ui.keyCode.HOME:case V.ui.keyCode.END:case V.ui.keyCode.PAGE_UP:case V.ui.keyCode.PAGE_DOWN:case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(t.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(V(t.target),null,"ui-state-active"),!1===this._start(t,n)))return}switch(s=this.options.step,e=i=this._hasMultipleValues()?this.values(n):this.value(),t.keyCode){case V.ui.keyCode.HOME:i=this._valueMin();break;case V.ui.keyCode.END:i=this._valueMax();break;case V.ui.keyCode.PAGE_UP:i=this._trimAlignValue(e+(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.PAGE_DOWN:i=this._trimAlignValue(e-(this._valueMax()-this._valueMin())/this.numPages);break;case V.ui.keyCode.UP:case V.ui.keyCode.RIGHT:if(e===this._valueMax())return;i=this._trimAlignValue(e+s);break;case V.ui.keyCode.DOWN:case V.ui.keyCode.LEFT:if(e===this._valueMin())return;i=this._trimAlignValue(e-s)}this._slide(t,n,i)},keyup:function(t){var e=V(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,e),this._change(t,e),this._removeClass(V(t.target),null,"ui-state-active"))}}}),V.widget("ui.sortable",V.ui.mouse,{version:"1.13.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t*{ cursor: "+o.cursor+" !important; }").appendTo(n)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!i)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",t,this._uiHash(this));return V.ui.ddmanager&&(V.ui.ddmanager.current=this),V.ui.ddmanager&&!o.dropBehaviour&&V.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(t),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageYt[this.floating?"width":"height"]?h&&c:o",i.document[0]);return i._addClass(t,"ui-sortable-placeholder",s||i.currentItem[0].className)._removeClass(t,"ui-sortable-helper"),"tbody"===n?i._createTrPlaceholder(i.currentItem.find("tr").eq(0),V("
 
'; - print '
'; print '
'; + print '
'; print '
'; diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index 30e7b45d198..a9e48c96bf3 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -2037,7 +2037,7 @@ function migrate_modeles($db, $langs, $conf) } } - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { include_once DOL_DOCUMENT_ROOT.'/core/modules/expedition/modules_expedition.php'; $modellist = ModelePDFExpedition::liste_modeles($db); if (count($modellist) == 0) { @@ -4116,6 +4116,7 @@ function migrate_delete_old_files($db, $langs, $conf) '/core/boxes/box_members.php', '/api/class/api_generic.class.php', + '/asterisk/cidlookup.php', '/categories/class/api_category.class.php', '/categories/class/api_deprecated_category.class.php', '/compta/facture/class/api_invoice.class.php', diff --git a/htdocs/intracommreport/list.php b/htdocs/intracommreport/list.php index 1478dbea83f..2c47ab3c7a2 100644 --- a/htdocs/intracommreport/list.php +++ b/htdocs/intracommreport/list.php @@ -121,7 +121,7 @@ $isInEEC = isInEEC($mysoc); $arrayfields = array( 'i.ref' => array('label'=>$langs->trans("Ref"), 'checked'=>1), 'i.label' => array('label'=>$langs->trans("Label"), 'checked'=>1), - 'i.fk_product_type'=>array('label'=>$langs->trans("Type"), 'checked'=>0, 'enabled'=>(!empty($conf->produit->enabled) && !empty($conf->service->enabled))), + 'i.fk_product_type'=>array('label'=>$langs->trans("Type"), 'checked'=>0, 'enabled'=>(!empty($conf->produit->enabled) && isModEnabled("service"))), ); /* // Extra fields diff --git a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php index b95a5717932..ccf54b1d6d9 100644 --- a/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php +++ b/htdocs/knowledgemanagement/class/api_knowledgemanagement.class.php @@ -125,18 +125,19 @@ class KnowledgeManagement extends DolibarrApi * * Get a list of knowledgerecords * - * @param string $sortfield Sort field - * @param string $sortorder Sort order - * @param int $limit Limit for list - * @param int $page Page number - * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @param int $category Use this param to filter list by category + * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" * @return array Array of order objects * * @throws RestException * * @url GET /knowledgerecords/ */ - public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') + public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $category = 0, $sqlfilters = '') { global $db, $conf; @@ -166,6 +167,9 @@ class KnowledgeManagement extends DolibarrApi if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale } + if ($category > 0) { + $sql .= ", ".$this->db->prefix()."categorie_knowledgemanagement as c"; + } $sql .= " WHERE 1 = 1"; // Example of use $mode @@ -188,6 +192,11 @@ class KnowledgeManagement extends DolibarrApi if ($restrictonsocid && $search_sale > 0) { $sql .= " AND sc.fk_user = ".((int) $search_sale); } + // Select products of given category + if ($category > 0) { + $sql .= " AND c.fk_categorie = ".((int) $category); + $sql .= " AND c.fk_knowledgemanagement = t.rowid"; + } if ($sqlfilters) { $errormessage = ''; if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { diff --git a/htdocs/knowledgemanagement/class/knowledgerecord.class.php b/htdocs/knowledgemanagement/class/knowledgerecord.class.php index 88ef801625e..d48be5e2a21 100644 --- a/htdocs/knowledgemanagement/class/knowledgerecord.class.php +++ b/htdocs/knowledgemanagement/class/knowledgerecord.class.php @@ -468,6 +468,24 @@ class KnowledgeRecord extends CommonObject $this->error .= $this->db->lasterror(); $errorflag = -1; } + + // Delete all child tables + if (!$error) { + $elements = array('categorie_knowledgemanagement'); + foreach ($elements as $table) { + if (!$error) { + $sql = "DELETE FROM ".MAIN_DB_PREFIX.$table; + $sql .= " WHERE fk_knowledgemanagement = ".(int) $this->id; + + $result = $this->db->query($sql); + if (!$result) { + $error++; + $this->errors[] = $this->db->lasterror(); + } + } + } + } + return $this->deleteCommon($user, $notrigger); //return $this->deleteCommon($user, $notrigger, 1); } diff --git a/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_advanced.php b/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_advanced.php index 8cdbee53395..ba0cf9818dc 100644 --- a/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_advanced.php +++ b/htdocs/knowledgemanagement/core/modules/knowledgemanagement/mod_knowledgerecord_advanced.php @@ -79,7 +79,7 @@ class mod_knowledgerecord_advanced extends ModeleNumRefKnowledgeRecord // Parametrage du prefix $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans("Label").'
'.$langs->trans("Account").''; $form->select_comptes(GETPOST("accountid"), "accountid", 0, "courant=1", 1); // Show list of bank account with courant print '
'.$langs->trans("LoanCapital").''.price($object->capital, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("LoanCapital").''.price($object->capital, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("Insurance").''.price($object->insurance_amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans("Insurance").''.price($object->insurance_amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'
'.$langs->trans('NotePrivate').''.nl2br($payment->note_p print '
'.$langs->trans('NotePublic').''.nl2br($payment->note_public).'
'.$langs->trans("PaymentMode").''; + print img_picto('', 'money-bill-alt', 'class="pictofixedwidth"'); $form->select_types_paiements(GETPOSTISSET("paymenttype") ? GETPOST("paymenttype", 'alphanohtml') : $loan->fk_typepayment, "paymenttype"); print "
'.$langs->trans('AccountToDebit').''; + print img_picto('', 'bank_account', 'class="pictofixedwidth"'); $form->select_comptes(GETPOSTISSET("accountid") ? GETPOST("accountid", 'int') : $loan->accountid, "accountid", 0, 'courant = '.Account::TYPE_CURRENT, 1); // Show opend bank account list print '
'.$langs->trans('Numero'); print ' ('.$langs->trans("ChequeOrTransferNumber").')'; print '
'; -print ''; + $colspan = 6; if (count($echeances->lines) > 0) { $colspan++; } -print ''; -print ''; print ''; print ''; @@ -276,10 +275,10 @@ if ($object->nbterm > 0 && count($echeances->lines) == 0) { print ''; print ''; print ''; - print ''; - print ''; - print ''; - print ''; + print ''; + print ''; + print ''; + print ''; print ''."\n"; $i++; $capital = $cap_rest; @@ -300,15 +299,15 @@ if ($object->nbterm > 0 && count($echeances->lines) == 0) { print ''; print ''; print ''; - print ''; - print ''; + print ''; + print ''; if (empty($line->fk_bank)) { - print ''; + print ''; } else { - print ''; + print ''; } - print ''; + print ''; print ''; diff --git a/htdocs/mailmanspip/class/mailmanspip.class.php b/htdocs/mailmanspip/class/mailmanspip.class.php index 9635c0e2c1f..bcfb1b83d6e 100644 --- a/htdocs/mailmanspip/class/mailmanspip.class.php +++ b/htdocs/mailmanspip/class/mailmanspip.class.php @@ -141,7 +141,7 @@ class MailmanSpip $list, $object->email, $object->pass, - $conf->global->ADHERENT_MAILMAN_ADMINPW + $conf->global->ADHERENT_MAILMAN_ADMIN_PASSWORD ); $curl_url = str_replace($patterns, $replace, $url); diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index ad52907983f..6a0fda06cb0 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -183,7 +183,7 @@ function testSqlAndScriptInject($val, $type) $inj += preg_match('/javascript\s*:/i', $val); $inj += preg_match('/vbscript\s*:/i', $val); // For XSS Injection done by adding javascript closing html tags like with onmousemove, etc... (closing a src or href tag with not cleaned param) - if ($type == 1) { + if ($type == 1 || $type == 3) { $val = str_replace('enclosure="', 'enclosure=X', $val); // We accept enclosure=" for the export/import module $inj += preg_match('/"/i', $val); // We refused " in GET parameters value. } @@ -197,7 +197,7 @@ function testSqlAndScriptInject($val, $type) /** * Return true if security check on parameters are OK, false otherwise. * - * @param string $var Variable name + * @param string|array $var Variable name * @param string $type 1=GET, 0=POST, 2=PHP_SELF * @return boolean|null true if there is no injection. Stop code if injection found. */ @@ -210,7 +210,7 @@ function analyseVarsForSqlAndScriptsInjection(&$var, $type) } else { // Get remote IP: PS: We do not use getRemoteIP(), function is not yet loaded and we need a value that can't be spoofed $ip = (empty($_SERVER['REMOTE_ADDR']) ? 'unknown' : $_SERVER['REMOTE_ADDR']); - $errormessage = 'Access refused to '.$ip.' by SQL or Script injection protection in main.inc.php - GETPOST type='.htmlentities($type).' paramkey='.htmlentities($key).' paramvalue='.htmlentities($value).' page='.htmlentities($_SERVER["REQUEST_URI"]); + $errormessage = 'Access refused to '.htmlentities($ip, ENT_COMPAT, 'UTF-8').' by SQL or Script injection protection in main.inc.php - GETPOST type='.htmlentities($type, ENT_COMPAT, 'UTF-8').' paramkey='.htmlentities($key, ENT_COMPAT, 'UTF-8').' paramvalue='.htmlentities($value, ENT_COMPAT, 'UTF-8').' page='.htmlentities($_SERVER["REQUEST_URI"], ENT_COMPAT, 'UTF-8'); print $errormessage; // Add entry into error log if (function_exists('error_log')) { @@ -536,7 +536,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( } // Check a token is provided for all cases that need a mandatory token - // (all POST actions + all login, actions and mass actions on pages with CSRFCHECK_WITH_TOKEN set + all sensitive GET actions) + // (all POST actions + all sensitive GET actions + all mass actions + all login/actions/logout on pages with CSRFCHECK_WITH_TOKEN set) if ( $_SERVER['REQUEST_METHOD'] == 'POST' || $sensitiveget || @@ -573,7 +573,7 @@ if ((!defined('NOCSRFCHECK') && empty($dolibarr_nocsrfcheck) && getDolGlobalInt( $sessiontokenforthisurl = (empty($_SESSION['token']) ? '' : $_SESSION['token']); // TODO Get the sessiontokenforthisurl into an array of session token (one array per base URL so we can use the CSRF per page and we keep ability for several tabs per url in a browser) if (GETPOSTISSET('token') && GETPOST('token') != 'notrequired' && GETPOST('token', 'alpha') != $sessiontokenforthisurl) { - dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (invalid token), so we disable POST and some GET parameters - referer=".$_SERVER['HTTP_REFERER'].", action=".GETPOST('action', 'aZ09').", _GET|POST['token']=".GETPOST('token', 'alpha'), LOG_WARNING); + dol_syslog("--- Access to ".(empty($_SERVER["REQUEST_METHOD"]) ? '' : $_SERVER["REQUEST_METHOD"].' ').$_SERVER["PHP_SELF"]." refused by CSRF protection (invalid token), so we disable POST and some GET parameters - referer=".(empty($_SERVER['HTTP_REFERER'])?'':$_SERVER['HTTP_REFERER']).", action=".GETPOST('action', 'aZ09').", _GET|POST['token']=".GETPOST('token', 'alpha'), LOG_WARNING); //dol_syslog("_SESSION['token']=".$sessiontokenforthisurl, LOG_DEBUG); // Do not output anything on standard output because this create problems when using the BACK button on browsers. So we just set a message into session. setEventMessages('SecurityTokenHasExpiredSoActionHasBeenCanceledPleaseRetry', null, 'warnings'); @@ -1349,7 +1349,7 @@ if (!function_exists("llxHeader")) { */ function llxHeader($head = '', $title = '', $help_url = '', $target = '', $disablejs = 0, $disablehead = 0, $arrayofjs = '', $arrayofcss = '', $morequerystring = '', $morecssonbody = '', $replacemainareaby = '', $disablenofollow = 0, $disablenoindex = 0) { - global $conf; + global $conf, $hookmanager; // html header top_htmlhead($head, $title, $disablejs, $disablehead, $arrayofjs, $arrayofcss, 0, $disablenofollow, $disablenoindex); @@ -1369,6 +1369,12 @@ if (!function_exists("llxHeader")) { print ''."\n"; + $parameters = array('help_url' => $help_url); + $reshook = $hookmanager->executeHooks('changeHelpURL', $parameters); + if ($reshook > 0) { + $help_url = $hookmanager->resPrint; + } + // top menu and left menu area if ((empty($conf->dol_hide_topmenu) || GETPOST('dol_invisible_topmenu', 'int')) && !GETPOST('dol_openinpopup', 'aZ09')) { top_menu($head, $title, $target, $disablejs, $disablehead, $arrayofjs, $arrayofcss, $morequerystring, $help_url); @@ -1406,21 +1412,27 @@ function top_httphead($contenttype = 'text/html', $forcenocache = 0) } // Security options + + // X-Content-Type-Options header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) + + // X-Frame-Options if (!defined('XFRAMEOPTIONS_ALLOWALL')) { header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) } else { header("X-Frame-Options: ALLOWALL"); } + + // X-XSS-Protection //header("X-XSS-Protection: 1"); // XSS filtering protection of some browsers (note: use of Content-Security-Policy is more efficient). Disabled as deprecated. - if (!defined('FORCECSP')) { - //if (! isset($conf->global->MAIN_HTTP_CONTENT_SECURITY_POLICY)) - //{ - // // A default security policy that keep usage of js external component like ckeditor, stripe, google, working + + // Content-Security-Policy + if (!defined('MAIN_SECURITY_FORCECSP')) { + // If CSP not forced from the page + + // A default security policy that keep usage of js external component like ckeditor, stripe, google, working // $contentsecuritypolicy = "font-src *; img-src *; style-src * 'unsafe-inline' 'unsafe-eval'; default-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; script-src 'self' *.stripe.com 'unsafe-inline' 'unsafe-eval'; frame-src 'self' *.stripe.com; connect-src 'self';"; - //} - //else - $contentsecuritypolicy = empty($conf->global->MAIN_HTTP_CONTENT_SECURITY_POLICY) ? '' : $conf->global->MAIN_HTTP_CONTENT_SECURITY_POLICY; + $contentsecuritypolicy = getDolGlobalString('MAIN_SECURITY_FORCECSP'); if (!is_object($hookmanager)) { $hookmanager = new HookManager($db); @@ -1442,16 +1454,29 @@ function top_httphead($contenttype = 'text/html', $forcenocache = 0) // default-src https://cdn.example.net; object-src 'none' // For example, to restrict everything to itself except img that can be on other servers: // default-src 'self'; img-src *; - // Pre-existing site that uses too much inline code to fix but wants to ensure resources are loaded only over https and disable plugins: - // default-src http: https: 'unsafe-eval' 'unsafe-inline'; object-src 'none' + // Pre-existing site that uses too much js code to fix but wants to ensure resources are loaded only over https and disable plugins: + // default-src https: 'unsafe-inline' 'unsafe-eval'; object-src 'none' header("Content-Security-Policy: ".$contentsecuritypolicy); } - } elseif (constant('FORCECSP')) { - header("Content-Security-Policy: ".constant('FORCECSP')); + } else { + header("Content-Security-Policy: ".constant('MAIN_SECURITY_FORCECSP')); } + + // Referrer-Policy + // Say if we must provide the referrer when we jump onto another web page. + // Default browser are 'strict-origin-when-cross-origin', we want more so we use 'same-origin' so we don't send any referrer when going into another web site + if (!defined('MAIN_SECURITY_FORCERP')) { + $referrerpolicy = getDolGlobalString('MAIN_SECURITY_FORCERP', "same-origin"); + + header("Referrer-Policy: ".$referrerpolicy); + } + if ($forcenocache) { header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0"); } + + // No need to add this token in header, we use instead the one into the forms. + //header("anti-csrf-token: ".newToken()); } /** @@ -2407,7 +2432,7 @@ function printDropdownQuickadd() "title" => "MenuNewMember@members", "name" => "Adherent@members", "picto" => "object_member", - "activation" => !empty($conf->adherent->enabled) && $user->rights->adherent->creer, // vs hooking + "activation" => !empty($conf->adherent->enabled) && $user->hasRight("adherent", "write"), // vs hooking "position" => 5, ), array( @@ -2415,7 +2440,7 @@ function printDropdownQuickadd() "title" => "MenuNewThirdParty@companies", "name" => "ThirdParty@companies", "picto" => "object_company", - "activation" => !empty($conf->societe->enabled) && $user->rights->societe->creer, // vs hooking + "activation" => isModEnabled("societe") && $user->hasRight("societe", "write"), // vs hooking "position" => 10, ), array( @@ -2423,7 +2448,7 @@ function printDropdownQuickadd() "title" => "NewContactAddress@companies", "name" => "Contact@companies", "picto" => "object_contact", - "activation" => !empty($conf->societe->enabled) && $user->rights->societe->contact->creer, // vs hooking + "activation" => isModEnabled("societe") && $user->hasRight("societe", "contact", "write"), // vs hooking "position" => 20, ), array( @@ -2431,7 +2456,7 @@ function printDropdownQuickadd() "title" => "NewPropal@propal", "name" => "Proposal@propal", "picto" => "object_propal", - "activation" => !empty($conf->propal->enabled) && $user->rights->propale->creer, // vs hooking + "activation" => isModEnabled("propal") && $user->hasRight("propale", "write"), // vs hooking "position" => 30, ), @@ -2440,7 +2465,7 @@ function printDropdownQuickadd() "title" => "NewOrder@orders", "name" => "Order@orders", "picto" => "object_order", - "activation" => !empty($conf->commande->enabled) && $user->rights->commande->creer, // vs hooking + "activation" => !empty($conf->commande->enabled) && $user->hasRight("commande", "write"), // vs hooking "position" => 40, ), array( @@ -2448,7 +2473,7 @@ function printDropdownQuickadd() "title" => "NewBill@bills", "name" => "Bill@bills", "picto" => "object_bill", - "activation" => isModEnabled('facture') && $user->rights->facture->creer, // vs hooking + "activation" => isModEnabled('facture') && $user->hasRight("facture", "write"), // vs hooking "position" => 50, ), array( @@ -2456,7 +2481,7 @@ function printDropdownQuickadd() "title" => "NewContractSubscription@contracts", "name" => "Contract@contracts", "picto" => "object_contract", - "activation" => !empty($conf->contrat->enabled) && $user->rights->contrat->creer, // vs hooking + "activation" => !empty($conf->contrat->enabled) && $user->hasRight("contrat", "write"), // vs hooking "position" => 60, ), array( @@ -2464,7 +2489,7 @@ function printDropdownQuickadd() "title" => "SupplierProposalNew@supplier_proposal", "name" => "SupplierProposal@supplier_proposal", "picto" => "supplier_proposal", - "activation" => !empty($conf->supplier_proposal->enabled) && $user->rights->supplier_proposal->creer, // vs hooking + "activation" => !empty($conf->supplier_proposal->enabled) && $user->hasRight("supplier_invoice", "write"), // vs hooking "position" => 70, ), array( @@ -2472,7 +2497,7 @@ function printDropdownQuickadd() "title" => "NewSupplierOrderShort@orders", "name" => "SupplierOrder@orders", "picto" => "supplier_order", - "activation" => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->commande->creer) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->creer), // vs hooking + "activation" => (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "commande", "write")) || (isModEnabled("supplier_order") && $user->hasRight("supplier_invoice", "write")), // vs hooking "position" => 80, ), array( @@ -2480,7 +2505,7 @@ function printDropdownQuickadd() "title" => "NewBill@bills", "name" => "SupplierBill@bills", "picto" => "supplier_invoice", - "activation" => (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->rights->fournisseur->facture->creer) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->creer), // vs hooking + "activation" => (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) && $user->hasRight("fournisseur", "facture", "write")) || (isModEnabled("supplier_invoice") && $user->hasRight("supplier_invoice", "write")), // vs hooking "position" => 90, ), array( @@ -2488,7 +2513,7 @@ function printDropdownQuickadd() "title" => "NewProduct@products", "name" => "Product@products", "picto" => "object_product", - "activation" => !empty($conf->product->enabled) && $user->rights->produit->creer, // vs hooking + "activation" => isModEnabled("product") && $user->hasRight("produit", "write"), // vs hooking "position" => 100, ), array( @@ -2496,7 +2521,7 @@ function printDropdownQuickadd() "title" => "NewService@products", "name" => "Service@products", "picto" => "object_service", - "activation" => !empty($conf->service->enabled) && $user->rights->service->creer, // vs hooking + "activation" => isModEnabled("service") && $user->hasRight("service", "write"), // vs hooking "position" => 110, ), array( @@ -2504,7 +2529,7 @@ function printDropdownQuickadd() "title" => "AddUser@users", "name" => "User@users", "picto" => "user", - "activation" => $user->rights->user->user->creer, // vs hooking + "activation" => $user->hasRight("user", "user", "write"), // vs hooking "position" => 500, ), ), @@ -2818,7 +2843,7 @@ function left_menu($menu_array_before, $helppagename = '', $notused = '', $menu_ } else { if (is_array($arrayresult)) { foreach ($arrayresult as $key => $val) { - $searchform .= printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', $val['shortcut'], 'searchleft'.$key, $val['img']); + $searchform .= printSearchForm($val['url'], $val['url'], $val['label'], 'maxwidth125', 'sall', (empty($val['shortcut']) ? '' : $val['shortcut']), 'searchleft'.$key, $val['img']); } } } @@ -3176,7 +3201,7 @@ if (!function_exists("llxFooter")) { // Clean and save data foreach ($user->lastsearch_values_tmp as $key => $val) { unset($_SESSION['lastsearch_values_tmp_'.$key]); // Clean array to rebuild it just after - if (count($val) && empty($_POST['button_removefilter'])) { // If there is search criteria to save and we did not click on 'Clear filter' button + if (count($val) && empty($_POST['button_removefilter']) && empty($_POST['button_removefilter_x'])) { if (empty($val['sortfield'])) { unset($val['sortfield']); } @@ -3364,7 +3389,7 @@ if (!function_exists("llxFooter")) { url: '', timeout: 500, // timeout milliseconds cache: false, - data: { hash_algo: 'md5', hash_unique_id: '', action: 'firstpingok', token: 'notrequired' }, // for update + data: { hash_algo: 'md5', hash_unique_id: '', action: 'firstpingok', token: '' }, // for update }); }, error: function (data,status,xhr) { // error callback function @@ -3374,7 +3399,7 @@ if (!function_exists("llxFooter")) { url: '', timeout: 500, // timeout milliseconds cache: false, - data: { hash_algo: 'md5', hash_unique_id: '', action: 'firstpingko', token: 'notrequired' }, + data: { hash_algo: 'md5', hash_unique_id: '', action: 'firstpingko', token: '' }, }); } }); diff --git a/htdocs/margin/admin/margin.php b/htdocs/margin/admin/margin.php index 94330eb8dc1..b87131a4135 100644 --- a/htdocs/margin/admin/margin.php +++ b/htdocs/margin/admin/margin.php @@ -212,7 +212,7 @@ print ''; print ''; print ''; print ''; print ''; print ''; print ''; } - if (((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { + if (((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { print ''; print ''; + print ''; + + print ''; + print ''; - print ''; - - print ''; - print '
'; -print $langs->trans("FinancialCommitment"); -print '
'.$langs->trans("Term").'
'.$i.''.dol_print_date(dol_time_plus_duree($object->datestart, $i - 1, 'm'), 'day').''.price($insurance + (($i == 1) ? $regulInsurance : 0), 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest).''.price($insurance + (($i == 1) ? $regulInsurance : 0), 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest).'
'.$i.''.dol_print_date($line->datep, 'day').''.price($insu, 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($insu, 0, '', 1, -1, -1, $conf->currency).''.price($int, 0, '', 1, -1, -1, $conf->currency).''.price($mens, 0, '', 1, -1, -1, $conf->currency).''.price($mens, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest, 0, '', 1, -1, -1, $conf->currency).''.price($cap_rest, 0, '', 1, -1, -1, $conf->currency).''; if (!empty($line->fk_bank)) { print $langs->trans('Paid'); @@ -316,7 +315,7 @@ if ($object->nbterm > 0 && count($echeances->lines) == 0) { print ' ('.img_object($langs->trans("Payment"), "payment").' '.$line->fk_payment_loan.')'; } } elseif (!$printed) { - print ''.$langs->trans('DoPayment').''; + print ''.$langs->trans('DoPayment').''; $printed = true; } print '
'.$langs->trans("MARGIN_METHODE_FOR_DISCOUNT").''; -print Form::selectarray('MARGIN_METHODE_FOR_DISCOUNT', $methods, $conf->global->MARGIN_METHODE_FOR_DISCOUNT); +print Form::selectarray('MARGIN_METHODE_FOR_DISCOUNT', $methods, getDolGlobalString('MARGIN_METHODE_FOR_DISCOUNT')); print ''; print ''; @@ -230,7 +230,7 @@ print ''.$langs->trans("AgentContactType").''; $formcompany = new FormCompany($db); $facture = new Facture($db); -print $formcompany->selectTypeContact($facture, $conf->global->AGENT_CONTACT_TYPE, "AGENT_CONTACT_TYPE", "internal", "code", 1, "maxwidth250"); +print $formcompany->selectTypeContact($facture, getDolGlobalString('AGENT_CONTACT_TYPE'), "AGENT_CONTACT_TYPE", "internal", "code", 1, "maxwidth250"); print ''; print ''; diff --git a/htdocs/margin/tabs/thirdpartyMargins.php b/htdocs/margin/tabs/thirdpartyMargins.php index c69c0443e28..363af100cbe 100644 --- a/htdocs/margin/tabs/thirdpartyMargins.php +++ b/htdocs/margin/tabs/thirdpartyMargins.php @@ -129,7 +129,7 @@ if ($socid > 0) { print '
'; print $langs->trans('SupplierCode').''; print showValueWithClipboardCPButton(dol_escape_htmltag($object->code_fournisseur)); diff --git a/htdocs/master.inc.php b/htdocs/master.inc.php index aa836842e71..fe4bdf42d79 100644 --- a/htdocs/master.inc.php +++ b/htdocs/master.inc.php @@ -75,8 +75,9 @@ if (defined('TEST_DB_FORCE_TYPE')) { // Set properties specific to conf file $conf->file->main_limit_users = $dolibarr_main_limit_users; -$conf->file->mailing_limit_sendbyweb = $dolibarr_mailing_limit_sendbyweb; -$conf->file->mailing_limit_sendbycli = $dolibarr_mailing_limit_sendbycli; +$conf->file->mailing_limit_sendbyweb = empty($dolibarr_mailing_limit_sendbyweb) ? 0 : $dolibarr_mailing_limit_sendbyweb; +$conf->file->mailing_limit_sendbycli = empty($dolibarr_mailing_limit_sendbycli) ? 0 : $dolibarr_mailing_limit_sendbycli; +$conf->file->mailing_limit_sendbyday = empty($dolibarr_mailing_limit_sendbyday) ? 0 : $dolibarr_mailing_limit_sendbyday; $conf->file->main_authentication = empty($dolibarr_main_authentication) ? '' : $dolibarr_main_authentication; // Identification mode $conf->file->main_force_https = empty($dolibarr_main_force_https) ? '' : $dolibarr_main_force_https; // Force https $conf->file->strict_mode = empty($dolibarr_strict_mode) ? '' : $dolibarr_strict_mode; // Force php strict mode (for debug) diff --git a/htdocs/modulebuilder/admin/setup.php b/htdocs/modulebuilder/admin/setup.php index da2cff7eff4..50c86e38cc0 100644 --- a/htdocs/modulebuilder/admin/setup.php +++ b/htdocs/modulebuilder/admin/setup.php @@ -111,7 +111,7 @@ print '
'; print ''; print ''; -print ''; +print ''; print ''; print "\n"; @@ -134,35 +134,35 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; print ''; print ''; - print ''; + print ''; print ''; @@ -170,14 +170,14 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { } print ''; -print ''; +print ''; print ''; print ''; print ''; -print ''; +print ''; print ''; print ''; print ''; -print ''; +print ''; print '
'.$langs->trans("Key").''.$langs->trans("Parameter").''.$langs->trans("Value").'
'.$langs->trans("UseSpecificEditorName").''.$langs->trans("UseSpecificEditorName").''; print ''; print '
'.$langs->trans("UseSpecificEditorURL").''.$langs->trans("UseSpecificEditorURL").''; print ''; print '
'.$langs->trans("UseSpecificFamily").''.$langs->trans("UseSpecificFamily").''; print ''; print '
'.$langs->trans("UseSpecificAuthor").''.$langs->trans("UseSpecificAuthor").''; print ''; print '
'.$langs->trans("UseSpecificVersion").''.$langs->trans("UseSpecificVersion").''; print ''; print '
'.$langs->trans("UseSpecificReadme").''.$langs->trans("UseSpecificReadme").''; print ''; print '
'.$langs->trans("AsciiToHtmlConverter").''.$langs->trans("AsciiToHtmlConverter").''; print ''; print ' '.$langs->trans("Example").': asciidoc, asciidoctor'; @@ -185,7 +185,7 @@ print '
'.$langs->trans("AsciiToPdfConverter").''.$langs->trans("AsciiToPdfConverter").''; print ''; print ' '.$langs->trans("Example").': asciidoctor-pdf'; diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php index fd84cb5e4dd..dd922e6cba4 100644 --- a/htdocs/modulebuilder/index.php +++ b/htdocs/modulebuilder/index.php @@ -71,6 +71,12 @@ $file = GETPOST('file', 'alpha'); $modulename = dol_sanitizeFileName(GETPOST('modulename', 'alpha')); $objectname = dol_sanitizeFileName(GETPOST('objectname', 'alpha')); $dicname = dol_sanitizeFileName(GETPOST('dicname', 'alpha')); +$editorname= GETPOST('editorname', 'alpha'); +$editorurl= GETPOST('editorurl', 'alpha'); +$version= GETPOST('version', 'alpha'); +$family= GETPOST('family', 'alpha'); +$picto= GETPOST('idpicto', 'alpha'); +$idmodule= GETPOST('idmodule', 'alpha'); // Security check if (!isModEnabled('modulebuilder')) { @@ -334,7 +340,13 @@ if ($dirins && $action == 'initmodule' && $modulename) { 'Mon module'=>$modulename, 'mon module'=>$modulename, 'htdocs/modulebuilder/template'=>strtolower($modulename), - '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : '') + '---Put here your own copyright and developer email---'=>dol_print_date($now, '%Y').' '.$user->getFullName($langs).($user->email ? ' <'.$user->email.'>' : ''), + 'Editor name'=>$editorname, + 'https://www.example.com'=>$editorurl, + '$this->version = \'1.0\''=>'$this->version = \''.$version.'\'', + '$this->picto = \'generic\';'=>(empty($picto)) ? '$this->picto = \'generic\'' : '$this->picto = \''.$picto.'\';', + "modulefamily" =>$family, + '500000'=>$idmodule ); if (!empty($conf->global->MODULEBUILDER_SPECIFIC_EDITOR_NAME)) { @@ -350,7 +362,7 @@ if ($dirins && $action == 'initmodule' && $modulename) { $arrayreplacement['1.0'] = $conf->global->MODULEBUILDER_SPECIFIC_VERSION; } if (!empty($conf->global->MODULEBUILDER_SPECIFIC_FAMILY)) { - $arrayreplacement['other'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; + $arrayreplacement['modulefamily'] = $conf->global->MODULEBUILDER_SPECIFIC_FAMILY; } $result = dolReplaceInFile($phpfileval['fullname'], $arrayreplacement); @@ -370,7 +382,6 @@ if ($dirins && $action == 'initmodule' && $modulename) { if (!$error) { setEventMessages('ModuleInitialized', null); $module = $modulename; - $modulename = ''; clearstatcache(true); if (function_exists('opcache_invalidate')) { @@ -1507,9 +1518,10 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && $error++; }*/ + $moduletype = $listofmodules[strtolower($module)]['moduletype']; + // Edit the class file to write properties if (!$error) { - $moduletype = 'external'; $object = rebuildObjectClass($destdir, $module, $objectname, $newmask, $srcdir, $addfieldentry, $moduletype); if (is_numeric($object) && $object <= 0) { @@ -1519,21 +1531,20 @@ if ($dirins && $action == 'addproperty' && empty($cancel) && !empty($module) && // Edit sql with new properties if (!$error) { - $moduletype = 'external'; - $result = rebuildObjectSql($destdir, $module, $objectname, $newmask, $srcdir, $object, $moduletype); + if ($result <= 0) { $error++; } } if (!$error) { + clearstatcache(true); + setEventMessages($langs->trans('FilesForObjectUpdated', $objectname), null); setEventMessages($langs->trans('WarningDatabaseIsNotUpdated'), null); - clearstatcache(true); - // Make a redirect to reload all data header("Location: ".DOL_URL_ROOT.'/modulebuilder/index.php?tab=objects&module='.$module.($forceddirread ? '@'.$dirread : '').'&tabobj='.$objectname.'&nocache='.time()); @@ -2075,10 +2086,44 @@ if ($module == 'initmodule') { print ''; //print ''.$langs->trans("ModuleBuilderDesc2", 'conf/conf.php', $newdircustom).'
'; - print $langs->trans("EnterNameOfModuleDesc").'
'; print '
'; - print '
'; + print ''.$langs->trans("ModuleName").' '; + print ' '.$form->textwithpicto('', $langs->trans("EnterNameOfModuleDesc")).'
'; + + print ''.$langs->trans("IdModule").' '; + print ''; + print '   ('; + print dolButtonToOpenUrlInDialogPopup('popup_modules_id', $langs->transnoentitiesnoconv("SeeIDsInUse"), $langs->transnoentitiesnoconv("SeeIDsInUse"), '/admin/system/modules.php?mainmenu=home&leftmenu=admintools_info', '', ''); + print ' - '; + print ''.$langs->trans("SeeReservedIDsRangeHere").''; + print ')'; + print ''; + print '
'; + print ''.$langs->trans("Version").'
'; + print ''.$langs->trans("Family").' '; + print '
'; + print ajax_combobox("family"); + print ''.$langs->trans("Picto").' '; + print $form->textwithpicto('', $langs->trans("Example").': fa-generic, fa-globe, ... any font awesome code.
Advanced syntax is fa-fakey[_faprefix[_facolor[_fasize]]]'); + print '
'; + print ''.$langs->trans("Description").'
'; + + print ''.$langs->trans("EditorName").'
'; + print ''.$langs->trans("EditorUrl").'
'; print '
'; print ''; @@ -2226,7 +2271,7 @@ if ($module == 'initmodule') { print '
'; print '
'; - print load_fiche_titre($langs->trans("DescriptorFile"), '', ''); + print load_fiche_titre($form->textwithpicto($langs->trans("DescriptorFile"), $pathtofile), '', ''); if (!empty($moduleobj)) { print '
'; @@ -2243,8 +2288,10 @@ if ($module == 'initmodule') { print $langs->trans("Numero"); print '
'; print $moduleobj->numero; + print ''; print '   ('.$langs->trans("SeeIDsInUse").''; print ' - '.$langs->trans("SeeReservedIDsRangeHere").')'; + print ''; print '
'; @@ -2266,6 +2313,19 @@ if ($module == 'initmodule') { print $moduleobj->family; print '
'; + print $langs->trans("Picto"); + print ''; + print $moduleobj->picto; + print '   '.img_picto('', $moduleobj->picto, 'class="valignmiddle pictomodule paddingrightonly"'); + print '
'; + print $langs->trans("Description"); + print ''; + print $moduleobj->getDesc(); + print '
'; print $langs->trans("EditorName"); print ''; @@ -2280,19 +2340,6 @@ if ($module == 'initmodule') { } print '
'; - print $langs->trans("Picto"); - print ''; - print $moduleobj->picto; - print '   '.img_picto('', $moduleobj->picto, 'class="valignmiddle pictomodule paddingrightonly"'); - print '
'; - print $langs->trans("Description"); - print ''; - print $moduleobj->getDesc(); - print '
'; } else { print $langs->trans("ErrorFailedToLoadModuleDescriptorForXXX", $module).'
'; @@ -2302,7 +2349,7 @@ if ($module == 'initmodule') { print '

'; // Readme file - print load_fiche_titre($langs->trans("ReadmeFile"), '', ''); + print load_fiche_titre($form->textwithpicto($langs->trans("ReadmeFile"), $pathtofilereadme), '', ''); print ''; if (dol_is_file($dirread.'/'.$pathtofilereadme)) { @@ -2314,7 +2361,7 @@ if ($module == 'initmodule') { print '

'; // ChangeLog - print load_fiche_titre($langs->trans("ChangeLog"), '', ''); + print load_fiche_titre($form->textwithpicto($langs->trans("ChangeLog"), $pathtochangelog), '', ''); print ''; if (dol_is_file($dirread.'/'.$pathtochangelog)) { @@ -2563,10 +2610,63 @@ if ($module == 'initmodule') { $pathtonote = strtolower($module).'/'.strtolower($tabobj).'_note.php'; $pathtocontact = strtolower($module).'/'.strtolower($tabobj).'_contact.php'; $pathtophpunit = strtolower($module).'/test/phpunit/'.strtolower($tabobj).'Test.php'; - $pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.sql'; - $pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.sql'; - $pathtosqlkey = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.key.sql'; - $pathtosqlextrakey = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.key.sql'; + + // Try to load object class file + clearstatcache(true); + if (function_exists('opcache_invalidate')) { + opcache_invalidate($dirread.'/'.$pathtoclass, true); // remove the include cache hell ! + } + + if (empty($forceddirread) && empty($dirread)) { + $result = dol_include_once($pathtoclass); + $stringofinclude = "dol_include_once(".$pathtoclass.")"; + } else { + $result = @include_once $dirread.'/'.$pathtoclass; + $stringofinclude = "@include_once ".$dirread.'/'.$pathtoclass; + } + if (class_exists($tabobj)) { + try { + $tmpobjet = @new $tabobj($db); + } catch (Exception $e) { + dol_syslog('Failed to load Constructor of class: '.$e->getMessage(), LOG_WARNING); + } + } else { + print ''.$langs->trans('Failed to find the class '.$tabobj.' despite the '.$stringofinclude).'

'; + } + + // Define path for sql file + $pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql'; + $result = dol_buildpath($pathtosql); + if (! dol_is_file($result)) { + $pathtosql = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'.sql'; + $result = dol_buildpath($pathtosql); + if (! dol_is_file($result)) { + $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'-'.strtolower($module).'.sql'; + $result = dol_buildpath($pathtosql); + if (! dol_is_file($result)) { + $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'-'.strtolower($module).'.sql'; + $result = dol_buildpath($pathtosql); + if (! dol_is_file($result)) { + $pathtosql = 'install/mysql/tables/llx_'.strtolower($module).'.sql'; + $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields.sql'; + $result = dol_buildpath($pathtosql); + } else { + $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_extrafields-'.strtolower($module).'.sql'; + } + } else { + $pathtosqlextra = 'install/mysql/tables/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql'; + } + } else { + $pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields.sql'; + } + } else { + $pathtosqlextra = strtolower($module).'/sql/llx_'.strtolower($module).'_'.strtolower($tabobj).'_extrafields-'.strtolower($module).'.sql'; + } + $pathtosqlroot = preg_replace('/\/llx_.*$/', '', $pathtosql); + + $pathtosqlkey = preg_replace('/\.sql$/', '.key.sql', $pathtosql); + $pathtosqlextrakey = preg_replace('/\.sql$/', '.key.sql', $pathtosqlextra); + $pathtolib = strtolower($module).'/lib/'.strtolower($module).'.lib.php'; $pathtoobjlib = strtolower($module).'/lib/'.strtolower($module).'_'.strtolower($tabobj).'.lib.php'; $pathtopicto = strtolower($module).'/img/object_'.strtolower($tabobj).'.png'; @@ -2598,6 +2698,10 @@ if ($module == 'initmodule') { $urloflist = dol_buildpath('/'.$pathtolist, 1); $urlofcard = dol_buildpath('/'.$pathtocard, 1); + + + + print '
'; // Main DAO class file print ' '.$langs->trans("ClassFile").' : '.(dol_is_file($realpathtoclass) ? '' : '').preg_replace('/^'.strtolower($module).'\//', '', $pathtoclass).(dol_is_file($realpathtoclass) ? '' : '').''; @@ -2728,24 +2832,6 @@ if ($module == 'initmodule') { print '


'; - clearstatcache(true); - if (function_exists('opcache_invalidate')) { - opcache_invalidate($dirread.'/'.$pathtoclass, true); // remove the include cache hell ! - } - - if (empty($forceddirread) && empty($dirread)) { - $result = dol_include_once($pathtoclass); - } else { - $result = @include_once $dirread.'/'.$pathtoclass; - } - if (class_exists($tabobj)) { - try { - $tmpobjet = @new $tabobj($db); - } catch (Exception $e) { - dol_syslog('Failed to load Constructor of class: '.$e->getMessage(), LOG_WARNING); - } - } - if (!empty($tmpobjet)) { $reflector = new ReflectionClass($tabobj); $reflectorproperties = $reflector->getProperties(); // Can also use get_object_vars @@ -2757,6 +2843,7 @@ if ($module == 'initmodule') { print ''; print ''; print ''; + print ''; print ''; print ''; @@ -2945,8 +3032,8 @@ if ($module == 'initmodule') { print ''; print '
'; - print ''; - print ''; + print ''; + print ''; print ''; @@ -3078,7 +3165,7 @@ if ($module == 'initmodule') { print ''; } else { - print '
'.$langs->trans('Failed to init the object with the new.').'
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'.$langs->trans('Description'); + print ''.$langs->trans('Ref'); if (!empty($conf->global->BOM_SUB_BOM)) { print '   '.img_picto('', 'folder-open', 'class="paddingright"').$langs->trans("ExpandAll").'  '; print ''.img_picto('', 'folder', 'class="paddingright"').$langs->trans("UndoExpandAll").' '; } print ''.$langs->trans('Ref').''.$langs->trans('Qty'); if ($this->bom->bomtype == 0) { print ' ('.$langs->trans("ForAQuantityOf", $this->bom->qty).')'; @@ -1394,7 +1395,7 @@ class Mo extends CommonObject print ''.$langs->trans('DisableStockChange').''.$langs->trans('MoChildGenerate').''.$form->showCheckAddButtons('checkforselect', 1).'
'.$tmpproduct->getNomUrl(1); print '
'.$tmpproduct->label.''; @@ -930,6 +942,13 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea print ''; print '
'.$langs->trans("ToConsume").''; - if ($tmpproduct->status_batch) { + $type = 'batch'; - print img_picto($langs->trans('AddStockLocationLine'), 'split.png', 'class="splitbutton" onClick="addDispatchLine('.$line->id.', \''.$type.'\', \'qtymissingconsume\')"'); + print ''; + print ' '.img_picto($langs->trans('AddStockLocationLine'), 'split.png', 'class="splitbutton" onClick="addDispatchLine('.((int) $line->id).', \''.dol_escape_js($type).'\', \'qtymissingconsume\')"'); + print ''; + if (($action == 'consumeorproduce' || $action == 'consumeandproduceall')) print img_picto($langs->trans('SplitAllQuantity'), 'split.png', 'class="splitbutton splitallbutton field-error-icon" data-max-qty="1" onClick="addDispatchLine('.$line->id.', \'batch\', \'allmissingconsume\')"'); + print ''; if ($collapse || in_array($action, array('consumeorproduce', 'consumeandproduceall'))) { print $langs->trans("Batch"); + + // Split + print ''.$line->qty.''; @@ -1285,13 +1319,20 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } print '
'.$langs->trans("ToProduce").''; if ($tmpproduct->status_batch) { $type = 'batch'; + print ''; print img_picto($langs->trans('AddStockLocationLine'), 'split.png', 'class="splitbutton" onClick="addDispatchLine('.$line->id.', \''.$type.'\', \'qtymissing\')"'); + print ''; + if (($action == 'consumeorproduce' || $action == 'consumeandproduceall') && $tmpproduct->status_batch == 2) print img_picto($langs->trans('SplitAllQuantity'), 'split.png', 'class="splitbutton splitallbutton field-error-icon" onClick="addDispatchLine('.$line->id.', \'batch\', \'alltoproduce\')"'); // + print ' '; if ($res) { print $tmpproduct->getNomUrl(1); @@ -58,7 +59,7 @@ if ($res) { print $this->tpl['label']; } print ''.$this->tpl['label'].''.$this->tpl['qty'].(($this->tpl['efficiency'] > 0 && $this->tpl['efficiency'] < 1) ? ' / '.$form->textwithpicto($this->tpl['efficiency'], $langs->trans("ValueOfMeansLoss")).' = '.$qtytoconsumeforline : '').''.(empty($this->tpl['stock']) ? 0 : price2num($this->tpl['stock'], 'MS')); if ($this->tpl['seuil_stock_alerte'] != '' && ($this->tpl['stock'] < $this->tpl['seuil_stock_alerte'])) { @@ -78,18 +79,19 @@ $selected = 1; if (!empty($selectedLines) && !in_array($this->tpl['id'], $selectedLines)) { $selected = 0; } -print ''; -//print ''; -print ''; print ''; print ' '; +//print ''; +//print '
'; $adresseadmin = $object->mail_admin; print $langs->trans("Title").''; if ($action == 'edit') { - print ''; + print ''; } else { print dol_htmlentities($object->title); } diff --git a/htdocs/partnership/class/api_partnership.class.php b/htdocs/partnership/class/api_partnership.class.php new file mode 100644 index 00000000000..1e1c7ca80fe --- /dev/null +++ b/htdocs/partnership/class/api_partnership.class.php @@ -0,0 +1,394 @@ + + * Copyright (C) 2022 Alice Adminson + * + * 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 . + */ + +use Luracast\Restler\RestException; + +dol_include_once('/partnership/class/partnership.class.php'); + + + +/** + * \file partnership/class/api_partnership.class.php + * \ingroup partnership + * \brief File for API management of partnership. + */ + +/** + * API class for partnership partnership + * + * @access protected + * @class DolibarrApiAccess {@requires user,external} + */ +class PartnershipApi extends DolibarrApi +{ + /** + * @var Partnership $partnership {@type Partnership} + */ + public $partnership; + + /** + * Constructor + * + * @url GET / + * + */ + public function __construct() + { + global $db; + $this->db = $db; + $this->partnership = new Partnership($this->db); + } + + /** + * Get properties of a partnership object + * + * Return an array with partnership informations + * + * @param int $id ID of partnership + * @return array|mixed data without useless information + * + * @url GET partnerships/{id} + * + * @throws RestException 401 Not allowed + * @throws RestException 404 Not found + */ + public function get($id) + { + if (!DolibarrApiAccess::$user->rights->partnership->read) { + throw new RestException(401); + } + + $result = $this->partnership->fetch($id); + if (!$result) { + throw new RestException(404, 'Partnership not found'); + } + + if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) { + throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } + + return $this->_cleanObjectDatas($this->partnership); + } + + + /** + * List partnerships + * + * Get a list of partnerships + * + * @param string $sortfield Sort field + * @param string $sortorder Sort order + * @param int $limit Limit for list + * @param int $page Page number + * @param string $sqlfilters Other criteria to filter answers separated by a comma. Syntax example "(t.ref:like:'SO-%') and (t.date_creation:<:'20160101')" + * @return array Array of order objects + * + * @throws RestException + * + * @url GET /partnerships/ + */ + public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $sqlfilters = '') + { + global $db, $conf; + + $obj_ret = array(); + $tmpobject = new Partnership($this->db); + + if (!DolibarrApiAccess::$user->rights->partnership->read) { + throw new RestException(401); + } + + $socid = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : ''; + + $restrictonsocid = 0; // Set to 1 if there is a field socid in table of object + + // If the internal user must only see his customers, force searching by him + $search_sale = 0; + if ($restrictonsocid && !DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) { + $search_sale = DolibarrApiAccess::$user->id; + } + + $sql = "SELECT t.rowid"; + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { + $sql .= ", sc.fk_soc, sc.fk_user"; // We need these fields in order to filter by sale (including the case where the user can only see his prospects) + } + $sql .= " FROM ".MAIN_DB_PREFIX.$tmpobject->table_element." as t"; + + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { + $sql .= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; // We need this table joined to the select in order to filter by sale + } + $sql .= " WHERE 1 = 1"; + + // Example of use $mode + //if ($mode == 1) $sql.= " AND s.client IN (1, 3)"; + //if ($mode == 2) $sql.= " AND s.client IN (2, 3)"; + + if ($tmpobject->ismultientitymanaged) { + $sql .= ' AND t.entity IN ('.getEntity($tmpobject->element).')'; + } + if ($restrictonsocid && (!DolibarrApiAccess::$user->rights->societe->client->voir && !$socid) || $search_sale > 0) { + $sql .= " AND t.fk_soc = sc.fk_soc"; + } + if ($restrictonsocid && $socid) { + $sql .= " AND t.fk_soc = ".((int) $socid); + } + if ($restrictonsocid && $search_sale > 0) { + $sql .= " AND t.rowid = sc.fk_soc"; // Join for the needed table to filter by sale + } + // Insert sale filter + if ($restrictonsocid && $search_sale > 0) { + $sql .= " AND sc.fk_user = ".((int) $search_sale); + } + if ($sqlfilters) { + $errormessage = ''; + if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + } + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + } + + $sql .= $this->db->order($sortfield, $sortorder); + if ($limit) { + if ($page < 0) { + $page = 0; + } + $offset = $limit * $page; + + $sql .= $this->db->plimit($limit + 1, $offset); + } + + $result = $this->db->query($sql); + $i = 0; + if ($result) { + $num = $this->db->num_rows($result); + while ($i < $num) { + $obj = $this->db->fetch_object($result); + $tmp_object = new Partnership($this->db); + if ($tmp_object->fetch($obj->rowid)) { + $obj_ret[] = $this->_cleanObjectDatas($tmp_object); + } + $i++; + } + } else { + throw new RestException(503, 'Error when retrieving partnership list: '.$this->db->lasterror()); + } + if (!count($obj_ret)) { + throw new RestException(404, 'No partnership found'); + } + return $obj_ret; + } + + /** + * Create partnership object + * + * @param array $request_data Request datas + * @return int ID of partnership + * + * @throws RestException + * + * @url POST partnerships/ + */ + public function post($request_data = null) + { + if (!DolibarrApiAccess::$user->rights->partnership->write) { + throw new RestException(401); + } + + // Check mandatory fields + $result = $this->_validate($request_data); + + foreach ($request_data as $field => $value) { + $this->partnership->$field = $this->_checkValForAPI($field, $value, $this->partnership); + } + + // Clean data + // $this->partnership->abc = sanitizeVal($this->partnership->abc, 'alphanohtml'); + + if ($this->partnership->create(DolibarrApiAccess::$user)<0) { + throw new RestException(500, "Error creating Partnership", array_merge(array($this->partnership->error), $this->partnership->errors)); + } + return $this->partnership->id; + } + + /** + * Update partnership + * + * @param int $id Id of partnership to update + * @param array $request_data Datas + * @return int + * + * @throws RestException + * + * @url PUT partnerships/{id} + */ + public function put($id, $request_data = null) + { + if (!DolibarrApiAccess::$user->rights->partnership->write) { + throw new RestException(401); + } + + $result = $this->partnership->fetch($id); + if (!$result) { + throw new RestException(404, 'Partnership not found'); + } + + if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) { + throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } + + foreach ($request_data as $field => $value) { + if ($field == 'id') { + continue; + } + $this->partnership->$field = $this->_checkValForAPI($field, $value, $this->partnership); + } + + // Clean data + // $this->partnership->abc = sanitizeVal($this->partnership->abc, 'alphanohtml'); + + if ($this->partnership->update(DolibarrApiAccess::$user, false) > 0) { + return $this->get($id); + } else { + throw new RestException(500, $this->partnership->error); + } + } + + /** + * Delete partnership + * + * @param int $id Partnership ID + * @return array + * + * @throws RestException + * + * @url DELETE partnerships/{id} + */ + public function delete($id) + { + if (!DolibarrApiAccess::$user->rights->partnership->delete) { + throw new RestException(401); + } + $result = $this->partnership->fetch($id); + if (!$result) { + throw new RestException(404, 'Partnership not found'); + } + + if (!DolibarrApi::_checkAccessToResource('partnership', $this->partnership->id, 'partnership')) { + throw new RestException(401, 'Access to instance id='.$this->partnership->id.' of object not allowed for login '.DolibarrApiAccess::$user->login); + } + + if (!$this->partnership->delete(DolibarrApiAccess::$user)) { + throw new RestException(500, 'Error when deleting Partnership : '.$this->partnership->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Partnership deleted' + ) + ); + } + + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Clean sensible object datas + * + * @param Object $object Object to clean + * @return Object Object with cleaned properties + */ + protected function _cleanObjectDatas($object) + { + // phpcs:enable + $object = parent::_cleanObjectDatas($object); + + unset($object->rowid); + unset($object->canvas); + + /*unset($object->name); + unset($object->lastname); + unset($object->firstname); + unset($object->civility_id); + unset($object->statut); + unset($object->state); + unset($object->state_id); + unset($object->state_code); + unset($object->region); + unset($object->region_code); + unset($object->country); + unset($object->country_id); + unset($object->country_code); + unset($object->barcode_type); + unset($object->barcode_type_code); + unset($object->barcode_type_label); + unset($object->barcode_type_coder); + unset($object->total_ht); + unset($object->total_tva); + unset($object->total_localtax1); + unset($object->total_localtax2); + unset($object->total_ttc); + unset($object->fk_account); + unset($object->comments); + unset($object->note); + unset($object->mode_reglement_id); + unset($object->cond_reglement_id); + unset($object->cond_reglement); + unset($object->shipping_method_id); + unset($object->fk_incoterms); + unset($object->label_incoterms); + unset($object->location_incoterms); + */ + + // If object has lines, remove $db property + if (isset($object->lines) && is_array($object->lines) && count($object->lines) > 0) { + $nboflines = count($object->lines); + for ($i = 0; $i < $nboflines; $i++) { + $this->_cleanObjectDatas($object->lines[$i]); + + unset($object->lines[$i]->lines); + unset($object->lines[$i]->note); + } + } + + return $object; + } + + /** + * Validate fields before create or update object + * + * @param array $data Array of data to validate + * @return array + * + * @throws RestException + */ + private function _validate($data) + { + $partnership = array(); + foreach ($this->partnership->fields as $field => $propfield) { + if (in_array($field, array('rowid', 'entity', 'date_creation', 'tms', 'fk_user_creat')) || $propfield['notnull'] != 1) { + continue; // Not a mandatory field + } + if (!isset($data[$field])) { + throw new RestException(400, "$field field missing"); + } + $partnership[$field] = $data[$field]; + } + return $partnership; + } +} diff --git a/htdocs/partnership/class/partnership.class.php b/htdocs/partnership/class/partnership.class.php index 28fcc2fd68e..38d8c333749 100644 --- a/htdocs/partnership/class/partnership.class.php +++ b/htdocs/partnership/class/partnership.class.php @@ -105,8 +105,8 @@ class Partnership extends CommonObject public $fields=array( 'rowid' => array('type'=>'integer', 'label'=>'TechnicalID', 'enabled'=>'1', 'position'=>1, 'notnull'=>1, 'visible'=>0, 'noteditable'=>'1', 'index'=>1, 'css'=>'left', 'comment'=>"Id"), 'ref' => array('type'=>'varchar(128)', 'label'=>'Ref', 'enabled'=>'1', 'position'=>10, 'notnull'=>1, 'visible'=>4, 'noteditable'=>'1', 'default'=>'(PROV)', 'index'=>1, 'searchall'=>1, 'showoncombobox'=>'1', 'comment'=>"Reference of object"), - 'entity' => array('type' => 'integer', 'label' => 'Entity', 'default' => 1, 'enabled' => 1, 'visible' => -2, 'notnull' => 1, 'position' => 15, 'index' => 1), - 'fk_type' => array('type' => 'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label' => 'Type', 'notnull'=>1, 'enabled' => 1, 'visible' => 1, 'position' => 20), + 'entity' => array('type'=>'integer', 'label'=>'Entity', 'enabled'=>'1', 'position'=>15, 'notnull'=>1, 'visible'=>-2, 'default'=>'1', 'index'=>1,), + 'fk_type' => array('type'=>'integer:PartnershipType:partnership/class/partnership_type.class.php:0:active=1', 'label'=>'Type', 'enabled'=>'1', 'position'=>20, 'notnull'=>1, 'visible'=>1,), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,), 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>-2,), @@ -118,38 +118,34 @@ class Partnership extends CommonObject 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,), 'date_partnership_start' => array('type'=>'date', 'label'=>'DatePartnershipStart', 'enabled'=>'1', 'position'=>52, 'notnull'=>1, 'visible'=>1,), 'date_partnership_end' => array('type'=>'date', 'label'=>'DatePartnershipEnd', 'enabled'=>'1', 'position'=>53, 'notnull'=>0, 'visible'=>1,), - 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'index'=>1, 'arrayofkeyval'=>array('-1'=>'','0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '9'=>'Terminated'),), - 'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1), + 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>2, 'index'=>1, 'arrayofkeyval'=>array('-1'=>'', '0'=>'Draft', '1'=>'Accepted', '2'=>'Refused', '8'=>'Suspended', '9'=>'Terminated'),), + 'url_to_check' => array('type'=>'varchar(255)', 'label'=>'UrlToCheck', 'enabled'=>'1', 'position'=>70, 'notnull'=>0, 'visible'=>-1,), 'count_last_url_check_error' => array('type'=>'integer', 'label'=>'CountLastUrlCheckError', 'enabled'=>'1', 'position'=>71, 'notnull'=>0, 'visible'=>-2, 'default'=>'0',), 'last_check_backlink' => array('type'=>'datetime', 'label'=>'LastCheckBacklink', 'enabled'=>'1', 'position'=>72, 'notnull'=>0, 'visible'=>-2,), 'reason_decline_or_cancel' => array('type'=>'text', 'label'=>'ReasonDeclineOrCancel', 'enabled'=>'1', 'position'=>73, 'notnull'=>0, 'visible'=>-2,), - // fk_member and fk_soc are added into constructor + 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'picto'=>'company', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150',), ); - - /** - * @var int rowid - * @deprecated - * @see $id - */ public $rowid; - - public $fk_soc; // Link to thirdparty - public $fk_member; // Link to member - + public $ref; + public $entity; + public $fk_type; + public $note_public; + public $note_private; + public $date_creation; public $tms; public $fk_user_creat; public $fk_user_modif; - - public $status; + public $last_main_doc; + public $import_key; + public $model_pdf; public $date_partnership_start; public $date_partnership_end; + public $status; + public $url_to_check; public $count_last_url_check_error; public $last_check_backlink; - - /** - * @var string reason_decline_or_cancel - */ public $reason_decline_or_cancel; + public $fk_soc; // END MODULEBUILDER PROPERTIES @@ -205,7 +201,7 @@ class Partnership extends CommonObject $this->fields['fk_soc'] = array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'ThirdParty', 'enabled'=>'1', 'position'=>50, 'notnull'=>-1, 'visible'=>1, 'index'=>1, 'picto'=>'company', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150'); } - if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid'])) { + if (empty($conf->global->MAIN_SHOW_TECHNICAL_ID) && isset($this->fields['rowid']) && !empty($this->fields['ref'])) { $this->fields['rowid']['visible'] = 0; } // if (empty($conf->multicompany->enabled) && isset($this->fields['entity'])) { diff --git a/htdocs/partnership/class/partnershiputils.class.php b/htdocs/partnership/class/partnershiputils.class.php index 9ad2e5b7ca2..874059431e1 100644 --- a/htdocs/partnership/class/partnershiputils.class.php +++ b/htdocs/partnership/class/partnershiputils.class.php @@ -157,7 +157,7 @@ class PartnershipUtils // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); @@ -323,7 +323,7 @@ class PartnershipUtils // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09'); if (!empty($newlang)) { $outputlangs = new Translate("", $conf); $outputlangs->setDefaultLang($newlang); diff --git a/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php b/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php index 5d348843941..d717bdc49bf 100644 --- a/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php +++ b/htdocs/partnership/core/modules/partnership/mod_partnership_advanced.php @@ -79,7 +79,7 @@ class mod_partnership_advanced extends ModeleNumRefPartnership // Parametrage du prefix $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; if (!empty($val['arrayofkeyval']) && is_array($val['arrayofkeyval'])) { - print $form->selectarray('search_'.$key, $val['arrayofkeyval'], $search[$key], $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1); + print $form->selectarray('search_'.$key, $val['arrayofkeyval'], (isset($search[$key]) ? $search[$key] : ''), $val['notnull'], 0, 0, '', 1, 0, 0, '', 'maxwidth100', 1); } elseif ((strpos($val['type'], 'integer:') === 0) || (strpos($val['type'], 'sellist:') === 0)) { - print $object->showInputField($val, $key, $search[$key], '', '', 'search_', 'maxwidth125', 1); - } elseif (!preg_match('/^(date|timestamp|datetime)/', $val['type'])) { - print ''; + print $object->showInputField($val, $key, (isset($search[$key]) ? $search[$key] : ''), '', '', 'search_', $cssforfield.' maxwidth250', 1); } elseif (preg_match('/^(date|timestamp|datetime)/', $val['type'])) { print '
'; print $form->selectDate($search[$key.'_dtstart'] ? $search[$key.'_dtstart'] : '', "search_".$key."_dtstart", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('From')); @@ -577,6 +599,12 @@ foreach ($object->fields as $key => $val) { print '
'; print $form->selectDate($search[$key.'_dtend'] ? $search[$key.'_dtend'] : '', "search_".$key."_dtend", 0, 0, 1, '', 1, 0, 0, '', '', '', '', 1, '', $langs->trans('to')); print '
'; + } elseif ($key == 'lang') { + require_once DOL_DOCUMENT_ROOT.'/core/class/html.formadmin.class.php'; + $formadmin = new FormAdmin($db); + print $formadmin->select_language($search[$key], 'search_lang', 0, null, 1, 0, 0, 'minwidth150 maxwidth200', 2); + } else { + print ''; } print '
'; -$searchpicto = $form->showFilterButtons(); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; + print '
'; } - - if (in_array($val['type'], array('timestamp'))) { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; - } elseif ($key == 'ref') { - $cssforfield .= ($cssforfield ? ' ' : '').'nowrap'; + // Output Kanban + print $object->getKanbanView(''); + if ($i == ($imaxinloop - 1)) { + print '
'; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; } print ''; - $result = $adherent->fetch($object->fk_member); - if ($result) { - $datefin = $adherent->datefin; - if ($datefin) { - print dol_print_date($datefin, 'day'); - if ($adherent->hasDelay()) { - $textlate .= ' ('.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24) >= 0 ? '+' : '').ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24).' '.$langs->trans("days").')'; - print " ".img_warning($langs->trans("SubscriptionLate").$textlate); - } - } else { - if ($adherent->subscription == 'yes') { - print $langs->trans("SubscriptionNotReceived"); - if ($adherent->statut > 0) { - print " ".img_warning(); + // End of subscription date + if ($managedfor == 'member') { + print ''; + $result = $adherent->fetch($object->fk_member); + if ($result) { + $datefin = $adherent->datefin; + if ($datefin) { + print dol_print_date($datefin, 'day'); + if ($adherent->hasDelay()) { + $textlate .= ' ('.$langs->trans("DateReference").' > '.$langs->trans("DateToday").' '.(ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24) >= 0 ? '+' : '').ceil($conf->adherent->subscription->warning_delay / 60 / 60 / 24).' '.$langs->trans("days").')'; + print " ".img_warning($langs->trans("SubscriptionLate").$textlate); } } else { - print ' '; + if ($adherent->subscription == 'yes') { + print $langs->trans("SubscriptionNotReceived"); + if ($adherent->statut > 0) { + print " ".img_warning(); + } + } else { + print ' '; + } } } + print ''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; + // Extra fields + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; + // Fields from hook + $parameters = array('arrayfields'=>$arrayfields, 'object'=>$object, 'obj'=>$obj, 'i'=>$i, 'totalarray'=>&$totalarray); + $reshook = $hookmanager->executeHooks('printFieldListValue', $parameters, $object); // Note that $action and $object may have been modified by hook + print $hookmanager->resPrint; + // Action column + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print '
'.$langs->trans("NoRecordFound").'
'.$langs->trans("NoRecordFound").'
'."\n"; diff --git a/htdocs/paybox/admin/paybox.php b/htdocs/paybox/admin/paybox.php index 60426e6a3b0..f651ba43760 100644 --- a/htdocs/paybox/admin/paybox.php +++ b/htdocs/paybox/admin/paybox.php @@ -43,64 +43,64 @@ if ($action == 'setvalue' && $user->admin) { $db->begin(); //$result=dolibarr_set_const($db, "PAYBOX_IBS_DEVISE", GETPOST("PAYBOX_IBS_DEVISE"),'chaine',0,'',$conf->entity); $result = dolibarr_set_const($db, "PAYBOX_CGI_URL_V1", GETPOST('PAYBOX_CGI_URL_V1', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_CGI_URL_V2", GETPOST('PAYBOX_CGI_URL_V2', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_IBS_SITE", GETPOST('PAYBOX_IBS_SITE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_IBS_RANG", GETPOST('PAYBOX_IBS_RANG', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_PBX_IDENTIFIANT", GETPOST('PAYBOX_PBX_IDENTIFIANT', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } // Payment token for URL $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYBOX_HMAC_KEY", dol_encode(GETPOST('PAYBOX_HMAC_KEY', 'alpha')), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } @@ -226,7 +226,7 @@ print '
'.$langs->trans("Example").': '.$mysoc->n print '
'; print $langs->trans("BankAccount").''; $form->select_comptes($conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS, 'PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); diff --git a/htdocs/paypal/admin/paypal.php b/htdocs/paypal/admin/paypal.php index df5bb4161a5..d5142c851d9 100644 --- a/htdocs/paypal/admin/paypal.php +++ b/htdocs/paypal/admin/paypal.php @@ -45,65 +45,65 @@ if ($action == 'setvalue' && $user->admin) { $db->begin(); $result = dolibarr_set_const($db, "PAYPAL_API_USER", GETPOST('PAYPAL_API_USER', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_API_PASSWORD", GETPOST('PAYPAL_API_PASSWORD', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_API_SIGNATURE", GETPOST('PAYPAL_API_SIGNATURE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_SSLVERSION", GETPOST('PAYPAL_SSLVERSION', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_API_INTEGRAL_OR_PAYPALONLY", GETPOST('PAYPAL_API_INTEGRAL_OR_PAYPALONLY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "PAYPAL_ADD_PAYMENT_URL", GETPOST('PAYPAL_ADD_PAYMENT_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } // Payment token for URL $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } if (empty($conf->use_javascript_ajax)) { $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } } @@ -244,7 +244,7 @@ print ''.$langs->trans("Example").': '.$mysoc->name.''; print '
'; print $langs->trans("BankAccount").''; print img_picto('', 'bank_account').' '; diff --git a/htdocs/printing/admin/printing.php b/htdocs/printing/admin/printing.php index a0849f082e8..3eda0fc4457 100644 --- a/htdocs/printing/admin/printing.php +++ b/htdocs/printing/admin/printing.php @@ -70,7 +70,7 @@ if ($action == 'setconst' && $user->admin) { foreach ($_POST['setupdriver'] as $setupconst) { //print '
'.print_r($setupconst, true).'
'; $result = dolibarr_set_const($db, $setupconst['varname'], $setupconst['value'], 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } } @@ -89,7 +89,7 @@ if ($action == 'setvalue' && $user->admin) { $db->begin(); $result = dolibarr_set_const($db, $varname, $value, 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } @@ -135,7 +135,12 @@ if ($mode == 'setup' && $user->admin) { $submit_enabled = 0; if (!empty($driver)) { - $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + if (!empty($conf->modules_parts['printing'])) { + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + } else { + $dirmodels = array('/core/modules/printing/'); + } + foreach ($dirmodels as $dir) { if (file_exists(dol_buildpath($dir, 0).$driver.'.modules.php')) { $classfile = dol_buildpath($dir, 0).$driver.'.modules.php'; @@ -253,7 +258,13 @@ if ($mode == 'config' && $user->admin) { $object = new PrintingDriver($db); $result = $object->listDrivers($db, 10); - $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + + if (!empty($conf->modules_parts['printing'])) { + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + } else { + $dirmodels = array('/core/modules/printing/'); + } + foreach ($result as $driver) { foreach ($dirmodels as $dir) { if (file_exists(dol_buildpath($dir, 0).$driver.'.modules.php')) { @@ -296,7 +307,12 @@ if ($mode == 'test' && $user->admin) { print ''; if (!empty($driver)) { - $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + if (!empty($conf->modules_parts['printing'])) { + $dirmodels = array_merge(array('/core/modules/printing/'), (array) $conf->modules_parts['printing']); + } else { + $dirmodels = array('/core/modules/printing/'); + } + foreach ($dirmodels as $dir) { if (file_exists(dol_buildpath($dir, 0).$driver.'.modules.php')) { $classfile = dol_buildpath($dir, 0).$driver.'.modules.php'; diff --git a/htdocs/printing/index.php b/htdocs/printing/index.php index 2d20db4ddf7..7ce4399501b 100644 --- a/htdocs/printing/index.php +++ b/htdocs/printing/index.php @@ -59,7 +59,7 @@ foreach ($result as $driver) { $langs->load($driver); $printer = new $classname($db); $keyforprinteractive = $printer->active; - if ($keyforprinteractive && $conf->global->$keyforprinteractive) { + if ($keyforprinteractive && getDolGlobalString($keyforprinteractive)) { //$printer->listJobs('commande'); $result = $printer->listJobs(); print $printer->resprint; diff --git a/htdocs/product/admin/product.php b/htdocs/product/admin/product.php index eeeaa094f29..24b34dc5ccc 100644 --- a/htdocs/product/admin/product.php +++ b/htdocs/product/admin/product.php @@ -596,9 +596,10 @@ print $form->selectPriceBaseType($conf->global->PRODUCT_PRICE_BASE_TYPE, "price_ print ''; print ''; -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { +// Use conditionnement in buying +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { print ''; - print ''; + print ''; print ''; - $inherited_mask_lot = $conf->global->LOT_ADVANCED_MASK; - $inherited_mask_sn = $conf->global->SN_ADVANCED_MASK; + $inherited_mask_lot = getDolGlobalString('LOT_ADVANCED_MASK'); + $inherited_mask_sn = getDolGlobalString('SN_ADVANCED_MASK'); print '
'.$langs->trans("UseProductSupplierPackaging").''.$form->textwithpicto($langs->trans("UseProductSupplierPackaging"), $langs->trans("PackagingForThisProductDesc")).''; print ajax_constantonoff("PRODUCT_USE_SUPPLIER_PACKAGING", array(), $conf->entity, 0, 0, 0, 0); //print $form->selectyesno("activate_useProdSupplierPackaging", (!empty($conf->global->PRODUCT_USE_SUPPLIER_PACKAGING) ? $conf->global->PRODUCT_USE_SUPPLIER_PACKAGING : 0), 1); diff --git a/htdocs/product/admin/product_lot.php b/htdocs/product/admin/product_lot.php index 24f515fa0bc..bf43c2d0048 100644 --- a/htdocs/product/admin/product_lot.php +++ b/htdocs/product/admin/product_lot.php @@ -36,6 +36,9 @@ if (!$user->admin || (empty($conf->productbatch->enabled))) $action = GETPOST('action', 'alpha'); $value = GETPOST('value', 'alpha'); +$error = 0; + + /* * Actions */ @@ -46,9 +49,10 @@ if ($action == 'updateMaskLot') { $maskconstbatch = GETPOST('maskconstLot', 'alpha'); $maskbatch = GETPOST('maskLot', 'alpha'); - if ($maskconstbatch) $res = dolibarr_set_const($db, $maskconstbatch, $maskbatch, 'chaine', 0, '', $conf->entity); - - if (!$res > 0) $error++; + if ($maskconstbatch) { + $res = dolibarr_set_const($db, $maskconstbatch, $maskbatch, 'chaine', 0, '', $conf->entity); + if ($res <= 0) $error++; + } if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); @@ -59,9 +63,10 @@ if ($action == 'updateMaskLot') { $maskconstbatch = GETPOST('maskconstSN', 'alpha'); $maskbatch = GETPOST('maskSN', 'alpha'); - if ($maskconstbatch) $res = dolibarr_set_const($db, $maskconstbatch, $maskbatch, 'chaine', 0, '', $conf->entity); - - if (!$res > 0) $error++; + if ($maskconstbatch) { + $res = dolibarr_set_const($db, $maskconstbatch, $maskbatch, 'chaine', 0, '', $conf->entity); + if ($res <= 0) $error++; + } if (!$error) { setEventMessages($langs->trans("SetupSaved"), null, 'mesgs'); diff --git a/htdocs/product/card.php b/htdocs/product/card.php index 664b25ff169..761fe2a148f 100644 --- a/htdocs/product/card.php +++ b/htdocs/product/card.php @@ -16,9 +16,10 @@ * Copyright (C) 2016-2022 Charlene Benke * Copyright (C) 2016 Meziane Sof * Copyright (C) 2017 Josep Lluís Amador - * Copyright (C) 2019-2021 Frédéric France + * Copyright (C) 2019-2022 Frédéric France * Copyright (C) 2019-2020 Thibault FOUCART * Copyright (C) 2020 Pierre Ardoin + * Copyright (C) 2022 Vincent de Grandpré * * 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 @@ -53,7 +54,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/product/modules_product.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (isModEnabled('facture')) { @@ -135,14 +136,14 @@ if ($id > 0 || !empty($ref)) { if ($result < 0) { dol_print_error($db, $object->error, $object->errors); } - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $upload_dir = $conf->product->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref); - } elseif (!empty($conf->service->enabled)) { + } elseif (isModEnabled("service")) { $upload_dir = $conf->service->multidir_output[$object->entity].'/'.get_exdir(0, 0, 0, 0, $object, 'product').dol_sanitizeFileName($object->ref); } if (!empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) { // For backward compatiblity, we scan also old dirs - if (!empty($conf->product->enabled)) { + if (isModEnabled("product")) { $upload_dirold = $conf->product->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2), 1, 1).'/'.substr(substr("000".$object->id, -2), 0, 1).'/'.$object->id."/photos"; } else { $upload_dirold = $conf->service->multidir_output[$object->entity].'/'.substr(substr("000".$object->id, -2), 1, 1).'/'.substr(substr("000".$object->id, -2), 0, 1).'/'.$object->id."/photos"; @@ -666,7 +667,20 @@ if (empty($reshook)) { if (count($object->errors)) { setEventMessages($object->error, $object->errors, 'errors'); } else { - setEventMessages($langs->trans($object->error), null, 'errors'); + if ($object->error == 'ErrorProductAlreadyExists') { + // allow to hook on ErrorProductAlreadyExists in any module + $reshook = $hookmanager->executeHooks('onProductAlreadyExists', $parameters, $object, $action); + if ($reshook < 0) { + setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); + } + if ($object->error) { + // check again to prevent translation issue, + // as error may have been cleared in hook function + setEventMessages($langs->trans($object->error), null, 'errors'); + } + } else { + setEventMessages($langs->trans($object->error), null, 'errors'); + } } $action = "create"; } @@ -1190,22 +1204,31 @@ if (!empty($conf->accounting->enabled)) { $title = $langs->trans('ProductServiceCard'); + $help_url = ''; $shortlabel = dol_trunc($object->label, 16); if (GETPOST("type") == '0' || ($object->type == Product::TYPE_PRODUCT)) { - $title = $langs->trans('Product')." ".$shortlabel." - ".$langs->trans('Card'); - $help_url = 'EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos|DE:Modul_Produkte'; + if ($action == 'create') { + $title = $langs->trans("NewProduct"); + } else { + $title = $langs->trans('Product')." ".$shortlabel." - ".$langs->trans('Card'); + $help_url = 'EN:Module_Products|FR:Module_Produits|ES:Módulo_Productos|DE:Modul_Produkte'; + } } if (GETPOST("type") == '1' || ($object->type == Product::TYPE_SERVICE)) { - $title = $langs->trans('Service')." ".$shortlabel." - ".$langs->trans('Card'); - $help_url = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios|DE:Modul_Leistungen'; + if ($action == 'create') { + $title = $langs->trans("NewService"); + } else { + $title = $langs->trans('Service')." ".$shortlabel." - ".$langs->trans('Card'); + $help_url = 'EN:Module_Services_En|FR:Module_Services|ES:Módulo_Servicios|DE:Modul_Leistungen'; + } } llxHeader('', $title, $help_url); // Load object modBarCodeProduct $res = 0; -if (!empty($conf->barcode->enabled) && !empty($conf->global->BARCODE_PRODUCT_ADDON_NUM)) { +if (isModEnabled('barcode') && !empty($conf->global->BARCODE_PRODUCT_ADDON_NUM)) { $module = strtolower($conf->global->BARCODE_PRODUCT_ADDON_NUM); $dirbarcode = array_merge(array('/core/modules/barcode/'), $conf->modules_parts['barcode']); foreach ($dirbarcode as $dirroot) { @@ -1343,8 +1366,8 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { if ((!empty($conf->global->PRODUCTBATCH_LOT_USE_PRODUCT_MASKS) && $conf->global->PRODUCTBATCH_LOT_ADDON == 'mod_lot_advanced') || (!empty($conf->global->PRODUCTBATCH_SN_USE_PRODUCT_MASKS) && $conf->global->PRODUCTBATCH_SN_ADDON == 'mod_sn_advanced')) { print '
'.$langs->trans("ManageLotMask").''; print $form->textwithpicto('', $tooltip, 1, 1); print ''; print '
'; } if (empty($conf->global->PROJECT_HIDE_TASKS)) { - print ' '; + print ' '; $htmltext = $langs->trans("ProjectFollowTasks"); print ''; print '
'; } if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { - print ' '; + print ' '; $htmltext = $langs->trans("ProjectBillTimeDescription"); print ''; print '
'; } if (!empty($conf->eventorganization->enabled)) { - print ' '; + print ' '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print ''; } @@ -733,7 +739,7 @@ if ($action == 'create' && $user->rights->projet->creer) { print ''; - // Change probability from status + // Change probability from status or role of project print ''; print '
'; @@ -1280,6 +1289,19 @@ if ($action == 'create' && $user->rights->projet->creer) { } } + // Accounting Report + /* + $accouting_module_activated = !empty($conf->comptabilite->enabled) || !empty($conf->accounting->enabled); + if ($accouting_module_activated && $object->statut != Project::STATUS_DRAFT) { + $start = dol_getdate((int) $object->date_start); + $end = dol_getdate((int) $object->date_end); + $url = DOL_URL_ROOT.'/compta/accounting-files.php?projectid='.$object->id; + if (!empty($object->date_start)) $url .= '&date_startday='.$start['mday'].'&date_startmonth='.$start['mon'].'&date_startyear='.$start['year']; + if (!empty($object->date_end)) $url .= '&date_stopday='.$end['mday'].'&date_stopmonth='.$end['mon'].'&date_stopyear='.$end['year']; + print dolGetButtonAction('', $langs->trans('ExportAccountingReportButtonLabel'), 'default', $url, ''); + } + */ + // Modify if ($object->statut != Project::STATUS_CLOSED && $user->rights->projet->creer) { if ($userWrite > 0) { @@ -1316,50 +1338,56 @@ if ($action == 'create' && $user->rights->projet->creer) { } } - // Add button to create objects from project + if (!empty($conf->global->PROJECT_SHOW_CREATE_OBJECT_BUTTON)) { - if (!empty($conf->propal->enabled) && $user->rights->propal->creer) { + print'"; } - // Clone if ($user->rights->projet->creer) { if ($userWrite > 0) { diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 4d851b86270..f395173b327 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -1272,7 +1272,7 @@ class Project extends CommonObject } $linkclose = ''; - if (empty($notooltip) && $user->rights->projet->lire) { + if (empty($notooltip) && $user->hasRight('projet', 'lire')) { if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) { $label = $langs->trans("ShowProject"); $linkclose .= ' alt="'.dol_escape_htmltag($label, 1).'"'; @@ -1294,7 +1294,7 @@ class Project extends CommonObject $result .= $linkstart; if ($withpicto) { - $result .= img_object(($notooltip ? '' : $label), $picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip pictofixedwidth"'), 0, 0, $notooltip ? 0 : 1); + $result .= img_object(($notooltip ? '' : $label), $picto, ($notooltip ? (($withpicto != 2) ? 'class="paddingright"' : '') : 'class="'.(($withpicto != 2) ? 'paddingright ' : '').'classfortooltip pictofixedwidth em088"'), 0, 0, $notooltip ? 0 : 1); } if ($withpicto != 2) { $result .= $this->ref; diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index ba31845592a..52dd2aae311 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -127,6 +127,7 @@ class Task extends CommonObjectLine public $timespent_fk_user; public $timespent_thm; public $timespent_note; + public $timespent_fk_product; public $comments = array(); @@ -1227,6 +1228,7 @@ class Task extends CommonObjectLine $sql .= ", task_date_withhour"; $sql .= ", task_duration"; $sql .= ", fk_user"; + $sql .= ", fk_product"; $sql .= ", note"; $sql .= ", datec"; $sql .= ") VALUES ("; @@ -1236,6 +1238,7 @@ class Task extends CommonObjectLine $sql .= ", ".(empty($this->timespent_withhour) ? 0 : 1); $sql .= ", ".((int) $this->timespent_duration); $sql .= ", ".((int) $this->timespent_fk_user); + $sql .= ", ".((int) $this->timespent_fk_product); $sql .= ", ".(isset($this->timespent_note) ? "'".$this->db->escape($this->timespent_note)."'" : "null"); $sql .= ", '".$this->db->idate($now)."'"; $sql .= ")"; @@ -1523,6 +1526,7 @@ class Task extends CommonObjectLine $sql .= " t.task_date_withhour,"; $sql .= " t.task_duration,"; $sql .= " t.fk_user,"; + $sql .= " t.fk_product,"; $sql .= " t.thm,"; $sql .= " t.note"; $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; @@ -1541,6 +1545,7 @@ class Task extends CommonObjectLine $this->timespent_withhour = $obj->task_date_withhour; $this->timespent_duration = $obj->task_duration; $this->timespent_fk_user = $obj->fk_user; + $this->timespent_fk_product = $obj->fk_product; $this->timespent_thm = $obj->thm; // hourly rate $this->timespent_note = $obj->note; } @@ -1694,6 +1699,7 @@ class Task extends CommonObjectLine $sql .= " task_date_withhour = ".(empty($this->timespent_withhour) ? 0 : 1).","; $sql .= " task_duration = ".((int) $this->timespent_duration).","; $sql .= " fk_user = ".((int) $this->timespent_fk_user).","; + $sql .= " fk_product = ".((int) $this->timespent_fk_product).","; $sql .= " note = ".(isset($this->timespent_note) ? "'".$this->db->escape($this->timespent_note)."'" : "null"); $sql .= " WHERE rowid = ".((int) $this->timespent_id); @@ -1718,26 +1724,31 @@ class Task extends CommonObjectLine $ret = -1; } - if ($ret == 1 && ($this->timespent_old_duration != $this->timespent_duration)) { - // Recalculate amount of time spent for task and update denormalized field - $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task"; - $sql .= " SET duration_effective = (SELECT SUM(task_duration) FROM ".MAIN_DB_PREFIX."projet_task_time as ptt where ptt.fk_task = ".((int) $this->id).")"; - if (isset($this->progress)) { - $sql .= ", progress = ".((float) $this->progress); // Do not overwrite value if not provided - } - $sql .= " WHERE rowid = ".((int) $this->id); + if ($ret == 1 && (($this->timespent_old_duration != $this->timespent_duration) || !empty($conf->global->TIMESPENT_ALWAYS_UPDATE_THM))) { + if ($this->timespent_old_duration != $this->timespent_duration) { + // Recalculate amount of time spent for task and update denormalized field + $sql = "UPDATE " . MAIN_DB_PREFIX . "projet_task"; + $sql .= " SET duration_effective = (SELECT SUM(task_duration) FROM " . MAIN_DB_PREFIX . "projet_task_time as ptt where ptt.fk_task = " . ((int) $this->id) . ")"; + if (isset($this->progress)) { + $sql .= ", progress = " . ((float) $this->progress); // Do not overwrite value if not provided + } + $sql .= " WHERE rowid = " . ((int) $this->id); - dol_syslog(get_class($this)."::updateTimeSpent", LOG_DEBUG); - if (!$this->db->query($sql)) { - $this->error = $this->db->lasterror(); - $this->db->rollback(); - $ret = -2; + dol_syslog(get_class($this) . "::updateTimeSpent", LOG_DEBUG); + if (!$this->db->query($sql)) { + $this->error = $this->db->lasterror(); + $this->db->rollback(); + $ret = -2; + } } // Update hourly rate of this time spent entry, but only if it was not set initialy $sql = "UPDATE ".MAIN_DB_PREFIX."projet_task_time"; $sql .= " SET thm = (SELECT thm FROM ".MAIN_DB_PREFIX."user WHERE rowid = ".((int) $this->timespent_fk_user).")"; // set average hour rate of user - $sql .= " WHERE (thm IS NULL OR thm = 0) AND rowid = ".((int) $this->timespent_id); + $sql .= " WHERE rowid = ".((int) $this->timespent_id); + if (empty($conf->global->TIMESPENT_ALWAYS_UPDATE_THM)) { // then if not empty we always update, in case of new thm for user, or change user of task time line + $sql .= " AND (thm IS NULL OR thm = 0)"; + } dol_syslog(get_class($this)."::addTimeSpent", LOG_DEBUG); if (!$this->db->query($sql)) { diff --git a/htdocs/projet/document.php b/htdocs/projet/document.php index 588043a56dc..ad5b8715e95 100644 --- a/htdocs/projet/document.php +++ b/htdocs/projet/document.php @@ -97,7 +97,7 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; * View */ -$title = $langs->trans('Project').' - '.$langs->trans('Document').' - '.$object->ref.' '.$object->name; +$title = $langs->trans('Documents').' - '.$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('Document'); } diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php index 16b67dd4876..a96ba8c2819 100644 --- a/htdocs/projet/element.php +++ b/htdocs/projet/element.php @@ -39,7 +39,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; if (!empty($conf->stock->enabled)) { require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (isModEnabled('facture')) { @@ -52,10 +52,10 @@ if (!empty($conf->commande->enabled)) { if (!empty($conf->supplier_proposal->enabled)) { require_once DOL_DOCUMENT_ROOT.'/supplier_proposal/class/supplier_proposal.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; } if (!empty($conf->contrat->enabled)) { @@ -64,7 +64,7 @@ if (!empty($conf->contrat->enabled)) { if (!empty($conf->ficheinter->enabled)) { require_once DOL_DOCUMENT_ROOT.'/fichinter/class/fichinter.class.php'; } -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { require_once DOL_DOCUMENT_ROOT.'/expedition/class/expedition.class.php'; } if (!empty($conf->deplacement->enabled)) { @@ -89,7 +89,7 @@ if (!empty($conf->stock->enabled)) { if (!empty($conf->tax->enabled)) { require_once DOL_DOCUMENT_ROOT.'/compta/sociales/class/chargesociales.class.php'; } -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/paymentvarious.class.php'; } if (!empty($conf->salaries->enabled)) { @@ -110,7 +110,7 @@ if (isModEnabled('facture')) { if (!empty($conf->commande->enabled)) { $langs->load("orders"); } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { $langs->load("propal"); } if (!empty($conf->ficheinter->enabled)) { diff --git a/htdocs/projet/info.php b/htdocs/projet/info.php index 19897bf2859..e3532fb6471 100644 --- a/htdocs/projet/info.php +++ b/htdocs/projet/info.php @@ -109,8 +109,8 @@ if ($id > 0 || !empty($ref)) { } $object->info($object->id); } - -$title = $langs->trans("Project").' - '.$object->ref.' '.$object->name; +$agenda = (!empty($conf->agenda->enabled) && (!empty($user->rights->agenda->myactions->read) || !empty($user->rights->agenda->allactions->read))) ? '/'.$langs->trans("Agenda") : ''; +$title = $langs->trans('Events').$agenda.' - '.$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"); } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index eaf9c5022a3..c1e18d60309 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -91,6 +91,7 @@ $search_all = GETPOST('search_all', 'alphanohtml') ? GETPOST('search_all', 'alph $search_ref = GETPOST("search_ref", 'alpha'); $search_label = GETPOST("search_label", 'alpha'); $search_societe = GETPOST("search_societe", 'alpha'); +$search_societe_alias = GETPOST("search_societe_alias", 'alpha'); $search_status = GETPOST("search_status", 'int'); $search_opp_status = GETPOST("search_opp_status", 'alpha'); $search_opp_percent = GETPOST("search_opp_percent", 'alpha'); @@ -108,6 +109,7 @@ $search_accept_conference_suggestions = GETPOST('search_accept_conference_sugges $search_accept_booth_suggestions = GETPOST('search_accept_booth_suggestions', 'int'); $search_price_registration = GETPOST("search_price_registration", 'alpha'); $search_price_booth = GETPOST("search_price_booth", 'alpha'); +$search_login = GETPOST('search_login', 'alpha'); $optioncss = GETPOST('optioncss', 'alpha'); $mine = ((GETPOST('mode') == 'mine') ? 1 : 0); @@ -198,9 +200,11 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; // Add non object fields to fields for list $arrayfields['s.nom'] = array('label'=>$langs->trans("ThirdParty"), 'checked'=>1, 'position'=>21, 'enabled'=>(empty($conf->societe->enabled) ? 0 : 1)); +$arrayfields['s.name_alias'] = array('label'=>"AliasNameShort", 'checked'=>0, 'position'=>22); $arrayfields['commercial'] = array('label'=>$langs->trans("SaleRepresentativesOfThirdParty"), 'checked'=>0, 'position'=>23); $arrayfields['c.assigned'] = array('label'=>$langs->trans("AssignedTo"), 'checked'=>-1, 'position'=>120); $arrayfields['opp_weighted_amount'] = array('label'=>$langs->trans('OpportunityWeightedAmountShort'), 'checked'=>0, 'position'=> 116, 'enabled'=>(empty($conf->global->PROJECT_USE_OPPORTUNITIES) ? 0 : 1), 'position'=>106); +$arrayfields['u.login'] = array('label'=>"Author", 'checked'=>1, 'position'=>165); // Force some fields according to search_usage filter... if (GETPOST('search_usage_opportunity')) { //$arrayfields['p.usage_opportunity']['visible'] = 1; // Not require, filter on search_opp_status is enough @@ -246,6 +250,7 @@ if (empty($reshook)) { $search_ref = ""; $search_label = ""; $search_societe = ""; + $search_societe_alias = ''; $search_status = -1; $search_opp_status = -1; $search_opp_amount = ''; @@ -285,6 +290,7 @@ if (empty($reshook)) { $search_accept_booth_suggestions = ''; $search_price_registration = ''; $search_price_booth = ''; + $search_login = ''; $toselect = array(); $search_array_options = array(); $search_category_array = array(); @@ -390,10 +396,11 @@ $sql = "SELECT ".$distinct." p.rowid as id, p.ref, p.title, p.fk_statut as statu $sql .= " p.datec as date_creation, p.dateo as date_start, p.datee as date_end, p.opp_amount, p.opp_percent, (p.opp_amount*p.opp_percent/100) as opp_weighted_amount, p.tms as date_update, p.budget_amount,"; $sql .= " p.usage_opportunity, p.usage_task, p.usage_bill_time, p.usage_organize_event,"; $sql .= " p.email_msgid,"; -$sql .= " accept_conference_suggestions, accept_booth_suggestions, price_registration, price_booth,"; +$sql .= " p.accept_conference_suggestions, p.accept_booth_suggestions, p.price_registration, p.price_booth,"; $sql .= " s.rowid as socid, s.nom as name, s.name_alias as alias, s.email, s.email, s.phone, s.fax, s.address, s.town, s.zip, s.fk_pays, s.client, s.code_client,"; $sql .= " country.code as country_code,"; -$sql .= " cls.code as opp_status_code"; +$sql .= " cls.code as opp_status_code,"; +$sql .= ' u.login, u.lastname, u.firstname, u.email as user_email, u.statut as user_statut, u.entity, u.photo, u.office_phone, u.office_fax, u.user_mobile, u.job, u.gender'; // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { @@ -415,6 +422,7 @@ if (!empty($extrafields->attributes[$object->table_element]['label']) &&is_array $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_country as country on (country.rowid = s.fk_pays)"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status as cls on p.fk_opp_status = cls.rowid"; +$sql .= ' LEFT JOIN '.MAIN_DB_PREFIX.'user AS u ON p.fk_user_creat = u.rowid'; // We'll need this table joined to the select in order to filter by sale // No check is done on company permission because readability is managed by public status of project and assignement. //if ($search_sale > 0 || (! $user->rights->societe->client->voir && ! $socid)) $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON sc.fk_soc = s.rowid"; @@ -447,6 +455,9 @@ if ($search_label) { if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } +if ($search_societe_alias) { + $sql .= natural_search('s.name_alias', $search_societe_alias); +} if ($search_opp_amount) { $sql .= natural_search('p.opp_amount', $search_opp_amount, 1); } @@ -544,6 +555,9 @@ if ($search_price_registration != '') { if ($search_price_booth != '') { $sql .= natural_search('p.price_booth', $search_price_booth, 1); } +if ($search_login) { + $sql .= natural_search(array('u.login', 'u.firstname', 'u.lastname'), $search_login); +} // Add where from extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_sql.tpl.php'; // Add where from hooks @@ -687,6 +701,9 @@ if ($search_label != '') { if ($search_societe != '') { $param .= '&search_societe='.urlencode($search_societe); } +if ($search_societe_alias != '') { + $param .= '&search_societe_alias='.urlencode($search_societe_alias); +} if ($search_status >= 0) { $param .= '&search_status='.urlencode($search_status); } @@ -735,6 +752,9 @@ if ($search_price_registration != '') { if ($search_price_booth != '') { $param .= '&search_price_booth='.urlencode($search_price_booth); } +if ($search_login) { + $param .= '&search_login='.urlencode($search_login); +} if ($optioncss != '') { $param .= '&optioncss='.urlencode($optioncss); } @@ -854,7 +874,7 @@ if (!empty($moreforfilter)) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= (count($arrayofmassactions) ? $form->showCheckAddButtons('checkforselect', 1) : ''); @@ -864,6 +884,13 @@ print ''; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} // Project ref if (!empty($arrayfields['p.ref']['checked'])) { print ''; } + +// Alias +if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; +} // Sale representative if (!empty($arrayfields['commercial']['checked'])) { print ''; @@ -999,6 +1038,12 @@ if (!empty($arrayfields['p.price_booth']['checked'])) { print ''; print ''; } +if (!empty($arrayfields['u.login']['checked'])) { + // Author + print ''; +} // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_input.tpl.php'; @@ -1033,14 +1078,18 @@ if (!empty($arrayfields['p.fk_statut']['checked'])) { print ''; } // Action column -print ''; - +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print ''."\n"; print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} if (!empty($arrayfields['p.ref']['checked'])) { print_liste_field_titre($arrayfields['p.ref']['label'], $_SERVER["PHP_SELF"], "p.ref", "", $param, "", $sortfield, $sortorder); } @@ -1050,6 +1099,9 @@ if (!empty($arrayfields['p.title']['checked'])) { if (!empty($arrayfields['s.nom']['checked'])) { print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], "s.nom", "", $param, "", $sortfield, $sortorder); } +if (!empty($arrayfields['s.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], "s.name_alias", "", $param, "", $sortfield, $sortorder); +} if (!empty($arrayfields['commercial']['checked'])) { print_liste_field_titre($arrayfields['commercial']['label'], $_SERVER["PHP_SELF"], "", "", $param, "", $sortfield, $sortorder, 'tdoverflowmax100imp '); } @@ -1104,6 +1156,9 @@ if (!empty($arrayfields['p.price_registration']['checked'])) { if (!empty($arrayfields['p.price_booth']['checked'])) { print_liste_field_titre($arrayfields['p.price_booth']['label'], $_SERVER["PHP_SELF"], 'p.price_booth', "", $param, '', $sortfield, $sortorder, 'right '); } +if (!empty($arrayfields['u.login']['checked'])) { + print_liste_field_titre($arrayfields['u.login']['label'], $_SERVER["PHP_SELF"], 'u.login', '', $param, 'align="center"', $sortfield, $sortorder); +} // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_search_title.tpl.php'; // Hook fields @@ -1122,9 +1177,13 @@ if (!empty($arrayfields['p.email_msgid']['checked'])) { if (!empty($arrayfields['p.fk_statut']['checked'])) { print_liste_field_titre($arrayfields['p.fk_statut']['label'], $_SERVER["PHP_SELF"], "p.fk_statut", "", $param, '', $sortfield, $sortorder, 'right '); } -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} print "\n"; +$userstatic = new User($db); + $i = 0; $totalarray = array( 'nbfield' => 0, @@ -1160,6 +1219,18 @@ while ($i < min($num, $limit)) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } // Project url if (!empty($arrayfields['p.ref']['checked'])) { print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print '\n"; + if (!$i) { + $totalarray['nbfield']++; + } + } // Extra fields include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_print_fields.tpl.php'; // Fields from hook @@ -1512,15 +1623,17 @@ while ($i < min($num, $limit)) { } } // Action column - print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/projet/note.php b/htdocs/projet/note.php index 2ee52d3a247..3eed5e14c60 100644 --- a/htdocs/projet/note.php +++ b/htdocs/projet/note.php @@ -69,7 +69,7 @@ if (empty($reshook)) { * View */ -$title = $langs->trans("Project").' - '.$langs->trans("Note").' - '.$object->ref.' '.$object->name; +$title = $langs->trans("Notes").' - '.$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("Note"); } diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php index 612aa0e6fe7..018cb5c3408 100644 --- a/htdocs/projet/tasks.php +++ b/htdocs/projet/tasks.php @@ -152,18 +152,18 @@ $planned_workload = $planned_workloadhour * 3600 + $planned_workloadmin * 60; // Definition of fields for list $arrayfields = array( - 't.ref'=>array('label'=>$langs->trans("RefTask"), 'checked'=>1, 'position'=>1), - 't.label'=>array('label'=>$langs->trans("LabelTask"), 'checked'=>1, 'position'=>2), - 't.description'=>array('label'=>$langs->trans("Description"), 'checked'=>0, 'position'=>3), - 't.dateo'=>array('label'=>$langs->trans("DateStart"), 'checked'=>1, 'position'=>4), - 't.datee'=>array('label'=>$langs->trans("Deadline"), 'checked'=>1, 'position'=>5), - 't.planned_workload'=>array('label'=>$langs->trans("PlannedWorkload"), 'checked'=>1, 'position'=>6), - 't.duration_effective'=>array('label'=>$langs->trans("TimeSpent"), 'checked'=>1, 'position'=>7), - 't.progress_calculated'=>array('label'=>$langs->trans("ProgressCalculated"), 'checked'=>1, 'position'=>8), - 't.progress'=>array('label'=>$langs->trans("ProgressDeclared"), 'checked'=>1, 'position'=>9), - 't.progress_summary'=>array('label'=>$langs->trans("TaskProgressSummary"), 'checked'=>1, 'position'=>10), - 't.budget_amount'=>array('label'=>"Budget", 'checked'=>1, 'position'=>11), - 'c.assigned'=>array('label'=>$langs->trans("TaskRessourceLinks"), 'checked'=>1, 'position'=>12), + 't.ref'=>array('label'=>"RefTask", 'checked'=>1, 'position'=>1), + 't.label'=>array('label'=>"LabelTask", 'checked'=>1, 'position'=>2), + 't.description'=>array('label'=>"Description", 'checked'=>0, 'position'=>3), + 't.dateo'=>array('label'=>"DateStart", 'checked'=>1, 'position'=>4), + 't.datee'=>array('label'=>"Deadline", 'checked'=>1, 'position'=>5), + 't.planned_workload'=>array('label'=>"PlannedWorkload", 'checked'=>1, 'position'=>6), + 't.duration_effective'=>array('label'=>"TimeSpent", 'checked'=>1, 'position'=>7), + 't.progress_calculated'=>array('label'=>"ProgressCalculated", 'checked'=>1, 'position'=>8), + 't.progress'=>array('label'=>"ProgressDeclared", 'checked'=>1, 'position'=>9), + 't.progress_summary'=>array('label'=>"TaskProgressSummary", 'checked'=>1, 'position'=>10), + 't.budget_amount'=>array('label'=>"Budget", 'checked'=>0, 'position'=>11), + 'c.assigned'=>array('label'=>"TaskRessourceLinks", 'checked'=>1, 'position'=>12), ); if ($object->usage_bill_time) { $arrayfields['t.tobill'] = array('label'=>$langs->trans("TimeToBill"), 'checked'=>0, 'position'=>11); @@ -402,10 +402,13 @@ $projectstatic = new Project($db); $taskstatic = new Task($db); $userstatic = new User($db); -$title = $langs->trans("Project").' - '.$langs->trans("Tasks").' - '.$object->ref.' '.$object->name; +$title = $langs->trans("Tasks").' - '.$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("Tasks"); } +if ($action == 'create') { + $title = $langs->trans("NewTask"); +} $help_url = "EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos"; llxHeader("", $title, $help_url); @@ -1059,6 +1062,7 @@ if ($action == 'create' && $user->rights->projet->creer && (empty($object->third print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); print "\n"; + $nboftaskshown = 0; if (count($tasksarray) > 0) { // Show all lines in taskarray (recursive function to go down on tree) $j = 0; $level = 0; diff --git a/htdocs/projet/tasks/comment.php b/htdocs/projet/tasks/comment.php index 82628d5136b..bed307d65bf 100644 --- a/htdocs/projet/tasks/comment.php +++ b/htdocs/projet/tasks/comment.php @@ -175,7 +175,7 @@ if ($id > 0 || !empty($ref)) { print '
'; } if (!empty($conf->eventorganization->enabled)) { - print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; + print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); } diff --git a/htdocs/projet/tasks/contact.php b/htdocs/projet/tasks/contact.php index 9718a0ffccb..680f8ecc70a 100644 --- a/htdocs/projet/tasks/contact.php +++ b/htdocs/projet/tasks/contact.php @@ -140,13 +140,19 @@ if (!empty($project_ref) && !empty($withproject)) { /* * View */ - -llxHeader('', $langs->trans("Task")); - $form = new Form($db); $formcompany = new FormCompany($db); $contactstatic = new Contact($db); $userstatic = new User($db); +$result = $projectstatic->fetch($object->fk_project); + +$title = $object->ref . ' - ' . $langs->trans("Contacts"); +if (!empty($withproject)) { + $title .= ' | ' . $langs->trans("Project") . (!empty($projectstatic->ref) ? ': '.$projectstatic->ref : '') ; +} +$help_url = ''; + +llxHeader('', $title, $help_url); /* *************************************************************************** */ @@ -162,7 +168,6 @@ if ($id > 0 || !empty($ref)) { } $id = $object->id; // So when doing a search from ref, id is also set correctly. - $result = $projectstatic->fetch($object->fk_project); if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_PROJECT) && method_exists($projectstatic, 'fetchComments') && empty($projectstatic->comments)) { $projectstatic->fetchComments(); } @@ -234,7 +239,7 @@ if ($id > 0 || !empty($ref)) { print '
'; } if (!empty($conf->eventorganization->enabled)) { - print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; + print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); } diff --git a/htdocs/projet/tasks/document.php b/htdocs/projet/tasks/document.php index ad0a2c0b628..f86d9c8f441 100644 --- a/htdocs/projet/tasks/document.php +++ b/htdocs/projet/tasks/document.php @@ -119,10 +119,15 @@ include DOL_DOCUMENT_ROOT.'/core/actions_linkedfiles.inc.php'; /* * View */ - $form = new Form($db); -llxHeader('', $langs->trans('Task')); +$title = $object->ref . ' - ' . $langs->trans("Documents"); +if (!empty($withproject)) { + $title .= ' | ' . $langs->trans("Project") . (!empty($projectstatic->ref) ? ': '.$projectstatic->ref : '') ; +} +$help_url = ''; + +llxHeader('', $title, $help_url); if ($object->id > 0) { $projectstatic->fetch_thirdparty(); @@ -190,7 +195,7 @@ if ($object->id > 0) { print '
'; } if (!empty($conf->eventorganization->enabled)) { - print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; + print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); } diff --git a/htdocs/projet/tasks/list.php b/htdocs/projet/tasks/list.php index bfda3ad31be..5a91f47dbd9 100644 --- a/htdocs/projet/tasks/list.php +++ b/htdocs/projet/tasks/list.php @@ -68,6 +68,7 @@ $search_task_user = GETPOST('search_task_user', 'int'); $search_task_progress = GETPOST('search_task_progress'); $search_task_budget_amount = GETPOST('search_task_budget_amount'); $search_societe = GETPOST('search_societe'); +$search_societe_alias = GETPOST('search_societe_alias'); $search_opp_status = GETPOST("search_opp_status", 'alpha'); $mine = GETPOST('mode', 'alpha') == 'mine' ? 1 : 0; @@ -154,13 +155,14 @@ $arrayfields = array( 'p.ref'=>array('label'=>"ProjectRef", 'checked'=>1), 'p.title'=>array('label'=>"ProjectLabel", 'checked'=>0), 's.nom'=>array('label'=>"ThirdParty", 'checked'=>0), + 's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>1), 'p.fk_statut'=>array('label'=>"ProjectStatus", 'checked'=>1), 't.planned_workload'=>array('label'=>"PlannedWorkload", 'checked'=>1, 'position'=>102), 't.duration_effective'=>array('label'=>"TimeSpent", 'checked'=>1, 'position'=>103), 't.progress_calculated'=>array('label'=>"ProgressCalculated", 'checked'=>1, 'position'=>104), 't.progress'=>array('label'=>"ProgressDeclared", 'checked'=>1, 'position'=>105), 't.progress_summary'=>array('label'=>"TaskProgressSummary", 'checked'=>1, 'position'=>106), - 't.budget_amount'=>array('label'=>"Budget", 'checked'=>1, 'position'=>107), + 't.budget_amount'=>array('label'=>"Budget", 'checked'=>0, 'position'=>107), 't.tobill'=>array('label'=>"TimeToBill", 'checked'=>0, 'position'=>110), 't.billed'=>array('label'=>"TimeBilled", 'checked'=>0, 'position'=>111), 't.datec'=>array('label'=>"DateCreation", 'checked'=>0, 'position'=>500), @@ -205,6 +207,8 @@ if (empty($reshook)) { $search_categ = ""; $search_projectstatus = -1; $search_project_ref = ""; + $search_societe = ""; + $search_societe_alias = ""; $search_project_title = ""; $search_task_ref = ""; $search_task_label = ""; @@ -274,7 +278,7 @@ if ($search_task_user > 0) { $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $title = $langs->trans("Activities"); @@ -326,13 +330,13 @@ if (count($listoftaskcontacttype) == 0) { $distinct = 'DISTINCT'; // We add distinct until we are added a protection to be sure a contact of a project and task is assigned only once. $sql = "SELECT ".$distinct." p.rowid as projectid, p.ref as projectref, p.title as projecttitle, p.fk_statut as projectstatus, p.datee as projectdatee, p.fk_opp_status, p.public, p.fk_user_creat as projectusercreate, p.usage_bill_time,"; -$sql .= " s.nom as name, s.rowid as socid,"; +$sql .= " s.nom as name, s.name_alias as alias, s.rowid as socid,"; $sql .= " t.datec as date_creation, t.dateo as date_start, t.datee as date_end, t.tms as date_update,"; $sql .= " t.rowid as id, t.ref, t.label, t.planned_workload, t.duration_effective, t.progress, t.fk_statut, "; $sql .= " t.description, t.fk_task_parent"; $sql .= " ,t.budget_amount"; // We'll need these fields in order to filter by categ -if ($search_categ) { +if ($search_categ > 0) { $sql .= ", cs.fk_categorie, cs.fk_project"; } // Add sum fields @@ -352,7 +356,7 @@ $sql .= $hookmanager->resPrint; $sql .= " FROM ".MAIN_DB_PREFIX."projet as p"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s on p.fk_soc = s.rowid"; // We'll need this table joined to the select in order to filter by categ -if (!empty($search_categ)) { +if ($search_categ > 0) { $sql .= ' LEFT JOIN '.MAIN_DB_PREFIX."categorie_project as cs ON p.rowid = cs.fk_project"; // We'll need this table joined to the select in order to filter by categ } $sql .= ", ".MAIN_DB_PREFIX."projet_task as t"; @@ -413,6 +417,9 @@ if ($search_task_budget_amount) { if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } +if ($search_societe_alias) { + $sql .= natural_search('s.name_alias', $search_societe_alias); +} if ($search_date_start) { $sql .= " AND t.dateo >= '".$db->idate($search_date_start)."'"; } @@ -579,6 +586,9 @@ if ($search_task_progress != '') { if ($search_societe != '') { $param .= '&search_societe='.urlencode($search_societe); } +if ($search_societe != '') { + $param .= '&search_societe_alias='.urlencode($search_societe_alias); +} if ($search_projectstatus != '') { $param .= '&search_projectstatus='.urlencode($search_projectstatus); } @@ -708,6 +718,13 @@ print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; @@ -887,6 +914,18 @@ if (!empty($arrayfields['s.nom']['checked'])) { print ''; print ''; + if ($socid > 0) { + $tmpthirdparty = new Societe($db); + $tmpthirdparty->fetch($socid); + $search_societe_alias = $tmpthirdparty->name_alias; + } + print ''; + print ' '; + print ''; + print ''; -$searchpicto = $form->showFilterButtons(); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -1185,7 +1256,20 @@ while ($i < min($num, $limit)) { if (!empty($arrayfields['s.nom']['checked'])) { print ''; if ($obj->socid) { - print $companystatic->getNomUrl(1); + print $companystatic->getNomUrl(1, '', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); + } else { + print ' '; + } + print ''; + if ($obj->socid) { + print $companystatic->name_alias; } else { print ' '; } @@ -1473,6 +1557,33 @@ while ($i < min($num, $limit)) { $totalarray['pos'][$totalarray['nbfield']] = 'p.price_booth'; } } + // Author + $userstatic->id = $obj->fk_user_creat; + $userstatic->login = $obj->login; + $userstatic->lastname = $obj->lastname; + $userstatic->firstname = $obj->firstname; + $userstatic->email = $obj->user_email; + $userstatic->statut = $obj->user_statut; + $userstatic->entity = $obj->entity; + $userstatic->photo = $obj->photo; + $userstatic->office_phone = $obj->office_phone; + $userstatic->office_fax = $obj->office_fax; + $userstatic->user_mobile = $obj->user_mobile; + $userstatic->job = $obj->job; + $userstatic->gender = $obj->gender; + + if (!empty($arrayfields['u.login']['checked'])) { + print ''; + if ($userstatic->id) { + print $userstatic->getNomUrl(-1); + } else { + print ' '; + } + print "'; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->id, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->id, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print '
'; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} if (!empty($arrayfields['t.fk_task_parent']['checked'])) { print ''; } +if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; +} if (!empty($arrayfields['p.fk_statut']['checked'])) { print ''; } // Action column -print ''; +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print ''."\n"; $totalarray = array( @@ -854,6 +878,9 @@ $totalarray = array( // Fields title label // -------------------------------------------------------------------- print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} if (!empty($arrayfields['t.fk_task_parent']['checked'])) { print_liste_field_titre($arrayfields['t.fk_task_parent']['label'], $_SERVER["PHP_SELF"], "t.fk_task_parent", "", $param, "", $sortfield, $sortorder); $totalarray['nbfield']++; @@ -890,6 +917,10 @@ if (!empty($arrayfields['s.nom']['checked'])) { print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], "s.nom", "", $param, "", $sortfield, $sortorder); $totalarray['nbfield']++; } +if (!empty($arrayfields['s.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], "s.name_alias", "", $param, "", $sortfield, $sortorder); + $totalarray['nbfield']++; +} if (!empty($arrayfields['p.fk_statut']['checked'])) { print_liste_field_titre($arrayfields['p.fk_statut']['label'], $_SERVER["PHP_SELF"], "p.fk_statut", "", $param, '', $sortfield, $sortorder, 'center '); $totalarray['nbfield']++; @@ -946,7 +977,9 @@ if (!empty($arrayfields['t.tms']['checked'])) { print_liste_field_titre($arrayfields['t.tms']['label'], $_SERVER["PHP_SELF"], "t.tms", "", $param, '', $sortfield, $sortorder, 'center nowrap '); $totalarray['nbfield']++; } -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} $totalarray['nbfield']++; print ''."\n"; @@ -992,6 +1025,11 @@ while ($i < $imaxinloop) { $projectstatic->statut = $obj->projectstatus; $projectstatic->datee = $db->jdate($obj->projectdatee); + if ($obj->socid) { + $socstatic->id = $obj->socid; + $socstatic->name = $obj->name; + $socstatic->name_alias = $obj->alias; + } if ($mode == 'kanban') { if ($i == 0) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } // Ref Parent if (!empty($arrayfields['t.fk_task_parent']['checked'])) { print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; if (!$i) { $totalarray['nbfield']++; @@ -1318,15 +1382,17 @@ while ($i < $imaxinloop) { print ''; }*/ // Action column - print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/projet/tasks/note.php b/htdocs/projet/tasks/note.php index 206a92afb36..6b7142dc0f2 100644 --- a/htdocs/projet/tasks/note.php +++ b/htdocs/projet/tasks/note.php @@ -110,14 +110,19 @@ if (empty($reshook)) { /* * View */ - -llxHeader('', $langs->trans("Task")); - $form = new Form($db); $userstatic = new User($db); $now = dol_now(); +$title = $object->ref . ' - ' . $langs->trans("Notes"); +if (!empty($withproject)) { + $title .= ' | ' . $langs->trans("Project") . (!empty($projectstatic->ref) ? ': '.$projectstatic->ref : '') ; +} +$help_url = ''; + +llxHeader('', $title, $help_url); + if ($object->id > 0) { $userWrite = $projectstatic->restrictedProjectArea($user, 'write'); @@ -180,7 +185,7 @@ if ($object->id > 0) { print '
'; } if (!empty($conf->eventorganization->enabled)) { - print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; + print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); } diff --git a/htdocs/projet/tasks/task.php b/htdocs/projet/tasks/task.php index 3df3cf8928e..ef00a85a0d4 100644 --- a/htdocs/projet/tasks/task.php +++ b/htdocs/projet/tasks/task.php @@ -37,11 +37,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/modules/project/task/modules_task.php'; // Load translation files required by the page $langs->loadlangs(array('projects', 'companies')); +$action = GETPOST('action', 'aZ09'); +$confirm = GETPOST('confirm', 'alpha'); + $id = GETPOST('id', 'int'); $ref = GETPOST("ref", 'alpha', 1); // task ref $taskref = GETPOST("taskref", 'alpha'); // task ref -$action = GETPOST('action', 'aZ09'); -$confirm = GETPOST('confirm', 'alpha'); $withproject = GETPOST('withproject', 'int'); $project_ref = GETPOST('project_ref', 'alpha'); $planned_workload = ((GETPOST('planned_workloadhour', 'int') != '' || GETPOST('planned_workloadmin', 'int') != '') ? (GETPOST('planned_workloadhour', 'int') > 0 ?GETPOST('planned_workloadhour', 'int') * 3600 : 0) + (GETPOST('planned_workloadmin', 'int') > 0 ?GETPOST('planned_workloadmin', 'int') * 60 : 0) : ''); @@ -128,6 +129,28 @@ if ($action == 'update' && !GETPOST("cancel") && $user->rights->projet->creer) { } } +if ($action == 'confirm_clone' && $confirm == 'yes') { + //$clone_contacts = GETPOST('clone_contacts') ? 1 : 0; + $clone_prog = GETPOST('clone_prog') ? 1 : 0; + $clone_time = GETPOST('clone_time') ? 1 : 0; + $clone_affectation = GETPOST('clone_affectation') ? 1 : 0; + $clone_change_dt = GETPOST('clone_change_dt') ? 1 : 0; + $clone_notes = GETPOST('clone_notes') ? 1 : 0; + $clone_file = GETPOST('clone_file') ? 1 : 0; + $result = $object->createFromClone($user, $object->id, $object->fk_project, $object->fk_task_parent, $clone_change_dt, $clone_affectation, $clone_time, $clone_file, $clone_notes, $clone_prog); + if ($result <= 0) { + setEventMessages($object->error, $object->errors, 'errors'); + } else { + // Load new object + $newobject = new Task($db); + $newobject->fetch($result); + $newobject->fetch_optionals(); + $newobject->fetch_thirdparty(); // Load new object + $object = $newobject; + $action = ''; + } +} + if ($action == 'confirm_delete' && $confirm == "yes" && $user->rights->projet->supprimer) { $result = $projectstatic->fetch($object->fk_project); $projectstatic->fetch_thirdparty(); @@ -192,12 +215,19 @@ if ($action == 'remove_file' && $user->rights->projet->creer) { /* * View */ - -llxHeader('', $langs->trans("Task")); - $form = new Form($db); $formother = new FormOther($db); $formfile = new FormFile($db); +$result = $projectstatic->fetch($object->fk_project); + +$title = $object->ref; +if (!empty($withproject)) { + $title .= ' | ' . $langs->trans("Project") . (!empty($projectstatic->ref) ? ': '.$projectstatic->ref : '') ; +} +$help_url = ''; + +llxHeader('', $title, $help_url); + if ($id > 0 || !empty($ref)) { $res = $object->fetch_optionals(); @@ -205,7 +235,7 @@ if ($id > 0 || !empty($ref)) { $object->fetchComments(); } - $result = $projectstatic->fetch($object->fk_project); + if (!empty($conf->global->PROJECT_ALLOW_COMMENT_ON_PROJECT) && method_exists($projectstatic, 'fetchComments') && empty($projectstatic->comments)) { $projectstatic->fetchComments(); } @@ -233,7 +263,7 @@ if ($id > 0 || !empty($ref)) { // Title $morehtmlref .= $projectstatic->title; // Thirdparty - if ($projectstatic->thirdparty->id > 0) { + if (!empty($projectstatic->thirdparty->id) &&$projectstatic->thirdparty->id > 0) { $morehtmlref .= '
'.$langs->trans('ThirdParty').' : '.$projectstatic->thirdparty->getNomUrl(1, 'project'); } $morehtmlref .= ''; @@ -244,7 +274,7 @@ if ($id > 0 || !empty($ref)) { $projectstatic->next_prev_filter = " rowid IN (".$db->sanitize(count($objectsListId) ?join(',', array_keys($objectsListId)) : '0').")"; } - dol_banner_tab($projectstatic, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref); + dol_banner_tab($projectstatic, 'project_ref', $linkback, 1, 'ref', 'ref', $morehtmlref, $param); print '
'; print '
'; @@ -253,7 +283,7 @@ if ($id > 0 || !empty($ref)) { print '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; print ''; @@ -768,6 +785,11 @@ if (!empty($arrayfields['s.nom']['checked'])) { print ''; print ''; + print ''; + print ''; $arrayofstatus = array(); @@ -826,10 +848,12 @@ if (!empty($arrayfields['t.tms']['checked'])) { print ''; -$searchpicto = $form->showFilterButtons(); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterButtons(); + print $searchpicto; + print '
'; @@ -1008,6 +1046,18 @@ while ($i < $imaxinloop) { if ($userAccess >= 0) { print '
'; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -1101,9 +1151,20 @@ while ($i < $imaxinloop) { if (!empty($arrayfields['s.nom']['checked'])) { print ''; if ($obj->socid) { - $socstatic->id = $obj->socid; - $socstatic->name = $obj->name; - print $socstatic->getNomUrl(1); + print $socstatic->getNomUrl(1, '', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); + } else { + print ' '; + } + print ''; + if ($obj->socid) { + print $socstatic->name_alias; } else { print ' '; } @@ -1229,9 +1290,12 @@ while ($i < $imaxinloop) { $totalarray['totalprogress_summary'] = $totalarray['nbfield']; } } + // Budget for task if (!empty($arrayfields['t.budget_amount']['checked'])) { print ''; - print price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency); + if ($object->budget_amount) { + print ''.price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency).''; + } print ''.$projectstatic->getLibStatut(5).''; - if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($object->id, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($object->id, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print '
'; // Usage - if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) || empty($conf->global->PROJECT_HIDE_TASKS) || !empty($conf->eventorganization->enabled)) { + if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) || empty($conf->global->PROJECT_HIDE_TASKS) || isModEnabled('eventorganization')) { print ''; @@ -276,8 +306,8 @@ if ($id > 0 || !empty($ref)) { print $form->textwithpicto($langs->trans("BillTime"), $htmltext); print '
'; } - if (!empty($conf->eventorganization->enabled)) { - print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; + if (isModEnabled('eventorganization')) { + print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); } @@ -310,7 +340,7 @@ if ($id > 0 || !empty($ref)) { // Budget print ''; @@ -325,7 +355,7 @@ if ($id > 0 || !empty($ref)) { print '
'; print '
'; - print '
'; print $langs->trans("Usage"); print '
'.$langs->trans("Budget").''; if (strcmp($projectstatic->budget_amount, '')) { - print price($projectstatic->budget_amount, '', $langs, 1, 0, 0, $conf->currency); + print ''.price($projectstatic->budget_amount, '', $langs, 1, 0, 0, $conf->currency).''; } print '
'; + print '
'; // Description print ''; @@ -622,6 +668,7 @@ if ($id > 0 || !empty($ref)) { // Modify if ($user->rights->projet->creer) { print ''.$langs->trans('Modify').''; + print ''.$langs->trans('Clone').''; } else { print ''.$langs->trans('Modify').''; } diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php index ab93e3561b0..d803162afc4 100644 --- a/htdocs/projet/tasks/time.php +++ b/htdocs/projet/tasks/time.php @@ -38,7 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formintervention.class.php'; // Load translation files required by the page -$langsLoad=array('projects', 'bills', 'orders'); +$langsLoad=array('projects', 'bills', 'orders', 'companies'); if (!empty($conf->eventorganization->enabled)) { $langsLoad[]='eventorganization'; } @@ -73,6 +73,8 @@ $search_task_ref = GETPOST('search_task_ref', 'alpha'); $search_task_label = GETPOST('search_task_label', 'alpha'); $search_user = GETPOST('search_user', 'int'); $search_valuebilled = GETPOST('search_valuebilled', 'int'); +$search_product_ref = GETPOST('search_product_ref', 'alpha'); +$search_company = GETPOST('$search_company', 'alpha'); $limit = GETPOST('limit', 'int') ?GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -98,8 +100,10 @@ $childids = $user->getAllChildIds(1); $hookmanager->initHooks(array('projecttasktime', 'globalcard')); $object = new Task($db); -$projectstatic = new Project($db); $extrafields = new ExtraFields($db); +$projectstatic = new Project($db); + +// fetch optionals attributes and labels $extrafields->fetch_name_optionals_label($projectstatic->table_element); $extrafields->fetch_name_optionals_label($object->table_element); @@ -161,9 +165,11 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_date_creation = ''; $search_date_update = ''; $search_task_ref = ''; + $search_company = ''; $search_task_label = ''; $search_user = 0; $search_valuebilled = ''; + $search_product_ref = ''; $toselect = array(); $search_array_options = array(); $action = ''; @@ -218,6 +224,7 @@ if ($action == 'addtimespent' && $user->rights->projet->time) { $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timemonth", 'int'), GETPOST("timeday", 'int'), GETPOST("timeyear", 'int')); } $object->timespent_fk_user = GETPOST("userid", 'int'); + $object->timespent_fk_product = GETPOST("fk_product", 'int'); $result = $object->addTimeSpent($user); if ($result >= 0) { setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); @@ -269,17 +276,17 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$cancel && $us $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timelinemonth"), GETPOST("timelineday"), GETPOST("timelineyear")); } $object->timespent_fk_user = GETPOST("userid_line", 'int'); + $object->timespent_fk_product = GETPOST("fk_product", 'int'); $result = 0; if (in_array($object->timespent_fk_user, $childids) || $user->rights->projet->all->creer) { $result = $object->addTimeSpent($user); - } - - if ($result >= 0) { - setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); - } else { - setEventMessages($langs->trans($object->error), null, 'errors'); - $error++; + if ($result >= 0) { + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); + } else { + setEventMessages($langs->trans($object->error), null, 'errors'); + $error++; + } } } else { $object->fetch($id, $ref); @@ -296,6 +303,7 @@ if (($action == 'updateline' || $action == 'updatesplitline') && !$cancel && $us $object->timespent_date = dol_mktime(12, 0, 0, GETPOST("timelinemonth", 'int'), GETPOST("timelineday", 'int'), GETPOST("timelineyear", 'int')); } $object->timespent_fk_user = GETPOST("userid_line", 'int'); + $object->timespent_fk_product = GETPOST("fk_product", 'int'); $result = 0; if (in_array($object->timespent_fk_user, $childids) || $user->rights->projet->all->creer) { @@ -389,36 +397,22 @@ if ($action == 'confirm_generateinvoice') { $generateinvoicemode = GETPOST('generateinvoicemode', 'string'); $invoiceToUse = GETPOST('invoiceid', 'int'); - $prodDurationHours = 1.0; + $prodDurationHoursBase = 1.0; + $product_data_cache = array(); if ($idprod > 0) { $tmpproduct->fetch($idprod); + if ($result<0) { + $error++; + setEventMessages($tmpproduct->error, $tmpproduct->errors, 'errors'); + } - if (empty($tmpproduct->duration_value)) { + $prodDurationHoursBase=$tmpproduct->getProductDurationHours(); + if ($prodDurationHoursBase<0) { $error++; $langs->load("errors"); - setEventMessages($langs->trans("ErrorDurationForServiceNotDefinedCantCalculateHourlyPrice"), null, 'errors'); + setEventMessages(null, $tmpproduct->errors, 'errors'); } - if ($tmpproduct->duration_unit == 'i') { - $prodDurationHours = 1. / 60; - } - if ($tmpproduct->duration_unit == 'h') { - $prodDurationHours = 1.; - } - if ($tmpproduct->duration_unit == 'd') { - $prodDurationHours = 24.; - } - if ($tmpproduct->duration_unit == 'w') { - $prodDurationHours = 24. * 7; - } - if ($tmpproduct->duration_unit == 'm') { - $prodDurationHours = 24. * 30; - } - if ($tmpproduct->duration_unit == 'y') { - $prodDurationHours = 24. * 365; - } - $prodDurationHours *= $tmpproduct->duration_value; - $dataforprice = $tmpproduct->getSellPrice($mysoc, $projectstatic->thirdparty, 0); $pu_ht = empty($dataforprice['pu_ht']) ? 0 : $dataforprice['pu_ht']; @@ -426,7 +420,7 @@ if ($action == 'confirm_generateinvoice') { $localtax1 = $dataforprice['localtax1']; $localtax2 = $dataforprice['localtax2']; } else { - $prodDurationHours = 1; + $prodDurationHoursBase = 1; $pu_ht = 0; $txtva = get_default_tva($mysoc, $projectstatic->thirdparty); @@ -454,39 +448,85 @@ if ($action == 'confirm_generateinvoice') { foreach ($toselect as $key => $value) { // Get userid, timepent $object->fetchTimeSpent($value); - $arrayoftasks[$object->timespent_fk_user]['timespent'] += $object->timespent_duration; - $arrayoftasks[$object->timespent_fk_user]['totalvaluetodivideby3600'] += ($object->timespent_duration * $object->timespent_thm); + $arrayoftasks[$object->timespent_fk_user][(int) $object->timespent_fk_product]['timespent'] += $object->timespent_duration; + $arrayoftasks[$object->timespent_fk_user][(int) $object->timespent_fk_product]['totalvaluetodivideby3600'] += ($object->timespent_duration * $object->timespent_thm); } - foreach ($arrayoftasks as $userid => $value) { + foreach ($arrayoftasks as $userid => $data) { $fuser->fetch($userid); //$pu_ht = $value['timespent'] * $fuser->thm; $username = $fuser->getFullName($langs); + foreach ($data as $fk_product=>$timespent_data) { + // Define qty per hour + $qtyhour = $timespent_data['timespent'] / 3600; + $qtyhourtext = convertSecondToTime($timespent_data['timespent'], 'all', $conf->global->MAIN_DURATION_OF_WORKDAY); - // Define qty per hour - $qtyhour = $value['timespent'] / 3600; - $qtyhourtext = convertSecondToTime($value['timespent'], 'all', $conf->global->MAIN_DURATION_OF_WORKDAY); + // If no unit price known + if (empty($pu_ht)) { + $pu_ht = price2num($timespent_data['totalvaluetodivideby3600'] / 3600, 'MU'); + } - // If no unit price known - if (empty($pu_ht)) { - $pu_ht = price2num($value['totalvaluetodivideby3600'] / 3600, 'MU'); - } + // Add lines + $prodDurationHours = $prodDurationHoursBase; + $idprodline=$idprod; + $pu_htline = $pu_ht; + $txtvaline = $txtva; + $localtax1line = $localtax1; + $localtax2line = $localtax2; - // Add lines - $lineid = $tmpinvoice->addline($langs->trans("TimeSpentForInvoice", $username).' : '.$qtyhourtext, $pu_ht, round($qtyhour / $prodDurationHours, 2), $txtva, $localtax1, $localtax2, ($idprod > 0 ? $idprod : 0)); + if (!empty($fk_product) && $fk_product!==$idprod) { + if (!array_key_exists($fk_product, $product_data_cache)) { + $result = $tmpproduct->fetch($fk_product); + if ($result < 0) { + $error++; + setEventMessages($tmpproduct->error, $tmpproduct->errors, 'errors'); + } + $prodDurationHours = $tmpproduct->getProductDurationHours(); + if ($prodDurationHours < 0) { + $error++; + $langs->load("errors"); + setEventMessages(null, $tmpproduct->errors, 'errors'); + } - // Update lineid into line of timespent - $sql = 'UPDATE '.MAIN_DB_PREFIX.'projet_task_time SET invoice_line_id = '.((int) $lineid).', invoice_id = '.((int) $tmpinvoice->id); - $sql .= ' WHERE rowid IN ('.$db->sanitize(join(',', $toselect)).') AND fk_user = '.((int) $userid); - $result = $db->query($sql); - if (!$result) { - $error++; - setEventMessages($db->lasterror(), null, 'errors'); - break; + $dataforprice = $tmpproduct->getSellPrice($mysoc, $projectstatic->thirdparty, 0); + + $pu_htline = empty($dataforprice['pu_ht']) ? 0 : $dataforprice['pu_ht']; + $txtvaline = $dataforprice['tva_tx']; + $localtax1line = $dataforprice['localtax1']; + $localtax2line = $dataforprice['localtax2']; + + $product_data_cache[$fk_product] = array('duration'=>$prodDurationHours,'dataforprice'=>$dataforprice); + } else { + $prodDurationHours = $product_data_cache[$fk_product]['duration']; + $pu_htline = empty($product_data_cache[$fk_product]['dataforprice']['pu_ht']) ? 0 : $product_data_cache[$fk_product]['dataforprice']['pu_ht']; + $txtvaline = $product_data_cache[$fk_product]['dataforprice']['tva_tx']; + $localtax1line = $product_data_cache[$fk_product]['dataforprice']['localtax1']; + $localtax2line = $product_data_cache[$fk_product]['dataforprice']['localtax2']; + } + $idprodline=$fk_product; + } + + // Add lines + $lineid = $tmpinvoice->addline($langs->trans("TimeSpentForInvoice", $username).' : '.$qtyhourtext, $pu_htline, round($qtyhour / $prodDurationHours, 2), $txtvaline, $localtax1line, $localtax2line, ($idprodline > 0 ? $idprodline : 0)); + if ($lineid<0) { + $error++; + setEventMessages(null, $tmpinvoice->errors, 'errors'); + } + + // Update lineid into line of timespent + $sql = 'UPDATE '.MAIN_DB_PREFIX.'projet_task_time SET invoice_line_id = '.((int) $lineid).', invoice_id = '.((int) $tmpinvoice->id); + $sql .= ' WHERE rowid IN ('.$db->sanitize(join(',', $toselect)).') AND fk_user = '.((int) $userid); + $result = $db->query($sql); + if (!$result) { + $error++; + setEventMessages($db->lasterror(), null, 'errors'); + break; + } } } } elseif ($generateinvoicemode == 'onelineperperiod') { // One line for each time spent line $arrayoftasks = array(); + $withdetail=GETPOST('detail_time_duration', 'alpha'); foreach ($toselect as $key => $value) { // Get userid, timepent @@ -516,6 +556,7 @@ if ($action == 'confirm_generateinvoice') { $arrayoftasks[$object->timespent_id]['note'] .= ' - '.$langs->trans("Duration").': '.convertSecondToTime($object->timespent_duration, 'all', $conf->global->MAIN_DURATION_OF_WORKDAY); } $arrayoftasks[$object->timespent_id]['user'] = $object->timespent_fk_user; + $arrayoftasks[$object->timespent_id]['fk_product'] = $object->timespent_fk_product; } foreach ($arrayoftasks as $timespent_id => $value) { @@ -531,7 +572,49 @@ if ($action == 'confirm_generateinvoice') { } // Add lines - $lineid = $tmpinvoice->addline($value['note'], $pu_ht, round($qtyhour / $prodDurationHours, 2), $txtva, $localtax1, $localtax2, ($idprod > 0 ? $idprod : 0)); + $prodDurationHours = $prodDurationHoursBase; + $idprodline=$idprod; + $pu_htline = $pu_ht; + $txtvaline = $txtva; + $localtax1line = $localtax1; + $localtax2line = $localtax2; + + if (!empty($value['fk_product']) && $value['fk_product']!==$idprod) { + if (!array_key_exists($value['fk_product'], $product_data_cache)) { + $result = $tmpproduct->fetch($value['fk_product']); + if ($result < 0) { + $error++; + setEventMessages($tmpproduct->error, $tmpproduct->errors, 'errors'); + } + $prodDurationHours = $tmpproduct->getProductDurationHours(); + if ($prodDurationHours < 0) { + $error++; + $langs->load("errors"); + setEventMessages(null, $tmpproduct->errors, 'errors'); + } + + $dataforprice = $tmpproduct->getSellPrice($mysoc, $projectstatic->thirdparty, 0); + + $pu_htline = empty($dataforprice['pu_ht']) ? 0 : $dataforprice['pu_ht']; + $txtvaline = $dataforprice['tva_tx']; + $localtax1line = $dataforprice['localtax1']; + $localtax2line = $dataforprice['localtax2']; + + $product_data_cache[$value['fk_product']] = array('duration'=>$prodDurationHours,'dataforprice'=>$dataforprice); + } else { + $prodDurationHours = $product_data_cache[$value['fk_product']]['duration']; + $pu_htline = empty($product_data_cache[$value['fk_product']]['dataforprice']['pu_ht']) ? 0 : $product_data_cache[$value['fk_product']]['dataforprice']['pu_ht']; + $txtvaline = $product_data_cache[$value['fk_product']]['dataforprice']['tva_tx']; + $localtax1line = $product_data_cache[$value['fk_product']]['dataforprice']['localtax1']; + $localtax2line = $product_data_cache[$value['fk_product']]['dataforprice']['localtax2']; + } + $idprodline=$value['fk_product']; + } + $lineid = $tmpinvoice->addline($value['note'], $pu_htline, round($qtyhour / $prodDurationHours, 2), $txtvaline, $localtax1line, $localtax2line, ($idprodline > 0 ? $idprodline : 0)); + if ($lineid<0) { + $error++; + setEventMessages(null, $tmpinvoice->errors, 'errors'); + } //var_dump($lineid);exit; // Update lineid into line of timespent @@ -550,56 +633,99 @@ if ($action == 'confirm_generateinvoice') { // Get userid, timepent $object->fetchTimeSpent($value); // Call method to get list of timespent for a timespent line id (We use the utiliy method found into Task object) // $object->id is now the task id - $arrayoftasks[$object->id]['timespent'] += $object->timespent_duration; - $arrayoftasks[$object->id]['totalvaluetodivideby3600'] += ($object->timespent_duration * $object->timespent_thm); + $arrayoftasks[$object->id][(int) $object->timespent_fk_product]['timespent'] += $object->timespent_duration; + $arrayoftasks[$object->id][(int) $object->timespent_fk_product]['totalvaluetodivideby3600'] += ($object->timespent_duration * $object->timespent_thm); } - foreach ($arrayoftasks as $task_id => $value) { + foreach ($arrayoftasks as $task_id => $data) { $ftask = new Task($db); $ftask->fetch($task_id); - // Define qty per hour - $qtyhour = $value['timespent'] / 3600; - $qtyhourtext = convertSecondToTime($value['timespent'], 'all', $conf->global->MAIN_DURATION_OF_WORKDAY); - if ($idprod > 0) { - // If a product is defined, we msut use the $prodDurationHours and $pu_ht of product (already set previously). - $pu_ht_for_task = $pu_ht; - // If we want to reuse the value of timespent (so use same price than cost price) - if (!empty($conf->global->PROJECT_TIME_SPENT_INTO_INVOICE_USE_VALUE)) { - $pu_ht_for_task = price2num($value['totalvaluetodivideby3600'] / $value['timespent'], 'MU') * $prodDurationHours; + foreach ($data as $fk_product=>$timespent_data) { + $qtyhour = $timespent_data['timespent'] / 3600; + $qtyhourtext = convertSecondToTime($timespent_data['timespent'], 'all', $conf->global->MAIN_DURATION_OF_WORKDAY); + + // Add lines + $prodDurationHours = $prodDurationHoursBase; + $idprodline=$idprod; + $pu_htline = $pu_ht; + $txtvaline = $txtva; + $localtax1line = $localtax1; + $localtax2line = $localtax2; + + if (!empty($fk_product) && $fk_product!==$idprod) { + if (!array_key_exists($fk_product, $product_data_cache)) { + $result = $tmpproduct->fetch($fk_product); + if ($result < 0) { + $error++; + setEventMessages($tmpproduct->error, $tmpproduct->errors, 'errors'); + } + $prodDurationHours = $tmpproduct->getProductDurationHours(); + if ($prodDurationHours < 0) { + $error++; + $langs->load("errors"); + setEventMessages(null, $tmpproduct->errors, 'errors'); + } + + $dataforprice = $tmpproduct->getSellPrice($mysoc, $projectstatic->thirdparty, 0); + + $pu_htline = empty($dataforprice['pu_ht']) ? 0 : $dataforprice['pu_ht']; + $txtvaline = $dataforprice['tva_tx']; + $localtax1line = $dataforprice['localtax1']; + $localtax2line = $dataforprice['localtax2']; + + $product_data_cache[$fk_product] = array('duration'=>$prodDurationHours,'dataforprice'=>$dataforprice); + } else { + $prodDurationHours = $product_data_cache[$fk_product]['duration']; + $pu_htline = empty($product_data_cache[$fk_product]['dataforprice']['pu_ht']) ? 0 : $product_data_cache[$fk_product]['dataforprice']['pu_ht']; + $txtvaline = $product_data_cache[$fk_product]['dataforprice']['tva_tx']; + $localtax1line = $product_data_cache[$fk_product]['dataforprice']['localtax1']; + $localtax2line = $product_data_cache[$fk_product]['dataforprice']['localtax2']; + } + $idprodline=$fk_product; } - $pa_ht = price2num($value['totalvaluetodivideby3600'] / $value['timespent'], 'MU') * $prodDurationHours; - } else { - // If not product used, we use the hour unit for duration and unit price. - $pu_ht_for_task = 0; - // If we want to reuse the value of timespent (so use same price than cost price) - if (!empty($conf->global->PROJECT_TIME_SPENT_INTO_INVOICE_USE_VALUE)) { - $pu_ht_for_task = price2num($value['totalvaluetodivideby3600'] / $value['timespent'], 'MU'); + + + if ($idprodline > 0) { + // If a product is defined, we msut use the $prodDurationHours and $pu_ht of product (already set previously). + $pu_ht_for_task = $pu_htline; + // If we want to reuse the value of timespent (so use same price than cost price) + if (!empty($conf->global->PROJECT_TIME_SPENT_INTO_INVOICE_USE_VALUE)) { + $pu_ht_for_task = price2num($timespent_data['totalvaluetodivideby3600'] / $timespent_data['timespent'], 'MU') * $prodDurationHours; + } + $pa_ht = price2num($timespent_data['totalvaluetodivideby3600'] / $timespent_data['timespent'], 'MU') * $prodDurationHours; + } else { + // If not product used, we use the hour unit for duration and unit price. + $pu_ht_for_task = 0; + // If we want to reuse the value of timespent (so use same price than cost price) + if (!empty($conf->global->PROJECT_TIME_SPENT_INTO_INVOICE_USE_VALUE)) { + $pu_ht_for_task = price2num($timespent_data['totalvaluetodivideby3600'] / $timespent_data['timespent'], 'MU'); + } + $pa_ht = price2num($timespent_data['totalvaluetodivideby3600'] / $timespent_data['timespent'], 'MU'); } - $pa_ht = price2num($value['totalvaluetodivideby3600'] / $value['timespent'], 'MU'); - } - // Add lines - $date_start = ''; - $date_end = ''; - $lineName = $ftask->ref.' - '.$ftask->label; - $lineid = $tmpinvoice->addline($lineName, $pu_ht_for_task, price2num($qtyhour / $prodDurationHours, 'MS'), $txtva, $localtax1, $localtax2, ($idprod > 0 ? $idprod : 0), 0, $date_start, $date_end, 0, 0, '', 'HT', 0, 1, -1, 0, '', 0, 0, null, $pa_ht); - if ($lineid < 0) { - $error++; - setEventMessages($tmpinvoice->error, $tmpinvoice->errors, 'errors'); - break; - } - - if (!$error) { - // Update lineid into line of timespent - $sql = 'UPDATE '.MAIN_DB_PREFIX.'projet_task_time SET invoice_line_id = '.((int) $lineid).', invoice_id = '.((int) $tmpinvoice->id); - $sql .= ' WHERE rowid IN ('.$db->sanitize(join(',', $toselect)).')'; - $result = $db->query($sql); - if (!$result) { + // Add lines + $date_start = ''; + $date_end = ''; + $lineName = $ftask->ref . ' - ' . $ftask->label; + $lineid = $tmpinvoice->addline($lineName, $pu_ht_for_task, price2num($qtyhour / $prodDurationHours, 'MS'), $txtvaline, $localtax1line, $localtax2line, ($idprodline > 0 ? $idprodline : 0), 0, $date_start, $date_end, 0, 0, '', 'HT', 0, 1, -1, 0, '', 0, 0, null, $pa_ht); + if ($lineid < 0) { $error++; - setEventMessages($db->lasterror(), null, 'errors'); + setEventMessages($tmpinvoice->error, $tmpinvoice->errors, 'errors'); break; } + + if (!$error) { + // Update lineid into line of timespent + $sql = 'UPDATE ' . MAIN_DB_PREFIX . 'projet_task_time SET invoice_line_id = ' . ((int) $lineid) . ', invoice_id = ' . ((int) $tmpinvoice->id); + $sql .= ' WHERE rowid IN (' . $db->sanitize(join(',', $toselect)) . ')'; + $result = $db->query($sql); + if (!$result) { + $error++; + setEventMessages($db->lasterror(), null, 'errors'); + break; + } + } } } } @@ -700,15 +826,20 @@ if ($action == 'confirm_generateinter') { /* * View */ - -$arrayofselected = is_array($toselect) ? $toselect : array(); - -llxHeader("", $langs->trans("Task")); - $form = new Form($db); $formother = new FormOther($db); $formproject = new FormProjets($db); $userstatic = new User($db); +//$result = $projectstatic->fetch($object->fk_project); +$arrayofselected = is_array($toselect) ? $toselect : array(); + +$title = $object->ref . ' - ' . $langs->trans("TimeSpent"); +if (!empty($withproject)) { + $title .= ' | ' . $langs->trans("Project") . (!empty($projectstatic->ref) ? ': '.$projectstatic->ref : '') ; +} +$help_url = ''; + +llxHeader('', $title, $help_url); if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser > 0) { /* @@ -790,7 +921,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print '
'.$langs->trans("Description").''; @@ -379,6 +409,22 @@ if ($id > 0 || !empty($ref)) { //$userAccess = $projectstatic->restrictedProjectArea($user); // We allow task affected to user even if a not allowed project //$arrayofuseridoftask=$object->getListContactId('internal'); + if ($action == 'clone') { + $formquestion = array( + 'text' => $langs->trans("ConfirmClone"), + //array('type' => 'checkbox', 'name' => 'clone_contacts', 'label' => $langs->trans("CloneContacts"), 'value' => true), + array('type' => 'checkbox', 'name' => 'clone_change_dt', 'label' => $langs->trans("CloneChanges"), 'value' => true), + array('type' => 'checkbox', 'name' => 'clone_affectation', 'label' => $langs->trans("CloneAffectation"), 'value' => true), + array('type' => 'checkbox', 'name' => 'clone_prog', 'label' => $langs->trans("CloneProgression"), 'value' => true), + array('type' => 'checkbox', 'name' => 'clone_time', 'label' => $langs->trans("CloneTimes"), 'value' => true), + array('type' => 'checkbox', 'name' => 'clone_file', 'label' => $langs->trans("CloneFile"), 'value' => true), + + ); + + print $form->formconfirm($_SERVER["PHP_SELF"]."?id=".$object->id, $langs->trans("ToClone"), $langs->trans("ConfirmCloneTask"), "confirm_clone", $formquestion, '', 1, 300, 590); + } + + $head = task_prepare_head($object); if ($action == 'edit' && $user->rights->projet->creer) { @@ -509,7 +555,7 @@ if ($id > 0 || !empty($ref)) { // Third party $morehtmlref .= $langs->trans("ThirdParty").': '; - if (!empty($projectstatic->thirdparty)) { + if (!empty($projectstatic->thirdparty) && is_object($projectstatic->thirdparty)) { $morehtmlref .= $projectstatic->thirdparty->getNomUrl(1); } $morehtmlref .= ''; @@ -588,7 +634,7 @@ if ($id > 0 || !empty($ref)) { // Budget print '
'.$langs->trans("Budget").''; if (strcmp($object->budget_amount, '')) { - print price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency); + print ''.price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency).''; } print '
'; // Usage - if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) || empty($conf->global->PROJECT_HIDE_TASKS) || !empty($conf->eventorganization->enabled)) { + if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) || empty($conf->global->PROJECT_HIDE_TASKS) || isModEnabled('eventorganization')) { print ''; @@ -813,7 +944,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print $form->textwithpicto($langs->trans("BillTime"), $htmltext); print '
'; } - if (!empty($conf->eventorganization->enabled)) { + if (isModEnabled('eventorganization')) { print 'usage_organize_event ? ' checked="checked"' : '')).'"> '; $htmltext = $langs->trans("EventOrganizationDescriptionLong"); print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext); @@ -969,7 +1100,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Third party $morehtmlref .= $langs->trans("ThirdParty").': '; - if (is_object($projectstatic->thirdparty)) { + if (!empty($projectstatic->thirdparty) && is_object($projectstatic->thirdparty)) { $morehtmlref .= $projectstatic->thirdparty->getNomUrl(1); } $morehtmlref .= ''; @@ -981,10 +1112,19 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print '
'; print '
'; - print '
'; print $langs->trans("Usage"); print '
'; + print '
'; + + // Task parent + print ''; // Date start - Date end - print ''; if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { print ''; + + if ($conf->service->enabled && $projectstatic->thirdparty->id > 0 && $projectstatic->usage_bill_time) { + print ''; + } } // Hook fields $parameters = array('mode' => 'create'); @@ -1518,6 +1681,12 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (empty($conf->global->PROJECT_HIDE_TASKS) && !empty($conf->global->PROJECT_BILL_TIME_SPENT)) { print ''; + + if ($conf->service->enabled && $projectstatic->thirdparty->id > 0 && $projectstatic->usage_bill_time) { + print ''; + } } // Fields from hook @@ -1572,6 +1741,11 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print $formother->selectyear($search_year, 'search_year', 1, 20, 5); print ''; } + // Thirdparty + if (!empty($arrayfields['p.fk_soc']['checked'])) { + print ''; + } + if (!empty($allprojectforuser)) { print ''; } @@ -1596,6 +1770,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (!empty($arrayfields['t.task_duration']['checked'])) { print ''; } + // Product + if (!empty($arrayfields['t.fk_product']['checked'])) { + print ''; + } // Value in main currency if (!empty($arrayfields['value']['checked'])) { print ''; @@ -1624,6 +1802,9 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (!empty($arrayfields['t.task_date']['checked'])) { print_liste_field_titre($arrayfields['t.task_date']['label'], $_SERVER['PHP_SELF'], 't.task_date,t.task_datehour,t.rowid', '', $param, '', $sortfield, $sortorder); } + if (!empty($arrayfields['p.fk_soc']['checked'])) { + print_liste_field_titre($arrayfields['p.fk_soc']['label'], $_SERVER['PHP_SELF'], 't.task_date,t.task_datehour,t.rowid', '', $param, '', $sortfield, $sortorder); + } if (!empty($allprojectforuser)) { print_liste_field_titre("Project", $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder); } @@ -1644,6 +1825,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (!empty($arrayfields['t.task_duration']['checked'])) { print_liste_field_titre($arrayfields['t.task_duration']['label'], $_SERVER['PHP_SELF'], 't.task_duration', '', $param, '', $sortfield, $sortorder, 'right '); } + if (!empty($arrayfields['t.fk_product']['checked'])) { + print_liste_field_titre($arrayfields['t.fk_product']['label'], $_SERVER['PHP_SELF'], 't.fk_product', '', $param, '', $sortfield, $sortorder); + } + if (!empty($arrayfields['value']['checked'])) { print_liste_field_titre($arrayfields['value']['label'], $_SERVER['PHP_SELF'], '', '', $param, '', $sortfield, $sortorder, 'right '); } @@ -1682,7 +1867,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Date if (!empty($arrayfields['t.task_date']['checked'])) { print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + // Project ref if (!empty($allprojectforuser)) { print ''; + } + // Value spent if (!empty($arrayfields['value']['checked'])) { $langs->load("salaries"); @@ -1917,13 +2136,13 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Add line to split - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; // Date if (!empty($arrayfields['t.task_date']['checked'])) { print ''; - } elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + } elseif ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } // Time spent if (!empty($arrayfields['t.task_duration']['checked'])) { print ''; - } elseif ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + } elseif ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } // Time spent if (!empty($arrayfields['t.task_duration']['checked'])) { print '
'.$langs->trans("ChildOfTask").''; + if ($object->fk_task_parent > 0) { + $tasktmp = new Task($db); + $tasktmp->fetch($object->fk_task_parent); + print $tasktmp->getNomUrl(1); + } + print '
'.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").''; + print '
'.$langs->trans("DateStart").' - '.$langs->trans("Deadline").''; $start = dol_print_date($object->date_start, 'dayhour'); print ($start ? $start : '?'); $end = dol_print_date($object->date_end, 'dayhour'); @@ -1071,12 +1211,16 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Definition of fields for list $arrayfields = array(); $arrayfields['t.task_date'] = array('label'=>$langs->trans("Date"), 'checked'=>1); + $arrayfields['p.fk_soc'] = array('label'=>$langs->trans("ThirdParty"), 'type'=>'integer:Societe:/societe/class/societe.class.php:1','checked'=>1); if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task $arrayfields['t.task_ref'] = array('label'=>$langs->trans("RefTask"), 'checked'=>1); $arrayfields['t.task_label'] = array('label'=>$langs->trans("LabelTask"), 'checked'=>1); } $arrayfields['author'] = array('label'=>$langs->trans("By"), 'checked'=>1); $arrayfields['t.note'] = array('label'=>$langs->trans("Note"), 'checked'=>1); + if ($conf->service->enabled && $projectstatic->thirdparty->id > 0 && $projectstatic->usage_bill_time) { + $arrayfields['t.fk_product'] = array('label' => $langs->trans("Product"), 'checked' => 1); + } $arrayfields['t.task_duration'] = array('label'=>$langs->trans("Duration"), 'checked'=>1); $arrayfields['value'] = array('label'=>$langs->trans("Value"), 'checked'=>1, 'enabled'=>(empty($conf->salaries->enabled) ? 0 : 1)); $arrayfields['valuebilled'] = array('label'=>$langs->trans("Billed"), 'checked'=>1, 'enabled'=>(((!empty($conf->global->PROJECT_HIDE_TASKS) || empty($conf->global->PROJECT_BILL_TIME_SPENT)) ? 0 : 1) && $projectstatic->usage_bill_time)); @@ -1104,6 +1248,9 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if ($search_task_ref != '') { $param .= '&search_task_ref='.urlencode($search_task_ref); } + if ($search_company != '') { + $param .= '&$search_company='.urlencode($search_company); + } if ($search_task_label != '') { $param .= '&search_task_label='.urlencode($search_task_label); } @@ -1301,9 +1448,11 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser $tasks = array(); $sql = "SELECT t.rowid, t.fk_task, t.task_date, t.task_datehour, t.task_date_withhour, t.task_duration, t.fk_user, t.note, t.thm,"; + $sql .= " t.fk_product,"; $sql .= " pt.ref, pt.label, pt.fk_projet,"; $sql .= " u.lastname, u.firstname, u.login, u.photo, u.statut as user_status,"; $sql .= " il.fk_facture as invoice_id, inv.fk_statut,"; + $sql .= " p.fk_soc,"; // Add fields from hooks $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListSelect', $parameters, $object); // Note that $action and $object may have been modified by hook @@ -1312,13 +1461,17 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser $sql .= " FROM ".MAIN_DB_PREFIX."projet_task_time as t"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facturedet as il ON il.rowid = t.invoice_line_id"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."facture as inv ON inv.rowid = il.fk_facture"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as prod ON prod.rowid = t.fk_product"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."projet_task as pt ON pt.rowid = t.fk_task"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."projet as p ON p.rowid = pt.fk_projet"; + $sql .= " INNER JOIN ".MAIN_DB_PREFIX."user as u ON t.fk_user = u.rowid"; + $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = p.fk_soc"; + // Add table from hooks $parameters = array(); $reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook $sql .= $hookmanager->resPrint; - $sql .= ", ".MAIN_DB_PREFIX."projet_task as pt, ".MAIN_DB_PREFIX."user as u"; - $sql .= " WHERE t.fk_user = u.rowid AND t.fk_task = pt.rowid"; - + $sql .= " WHERE 1 = 1 "; if (empty($projectidforalltimes) && empty($allprojectforuser)) { // Limit on one task $sql .= " AND t.fk_task =".((int) $object->id); @@ -1339,12 +1492,18 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if ($search_task_ref) { $sql .= natural_search('pt.ref', $search_task_ref); } + if ($search_company) { + $sql .= natural_search('s.nom', $search_company); + } if ($search_task_label) { $sql .= natural_search('pt.label', $search_task_label); } if ($search_user > 0) { $sql .= natural_search('t.fk_user', $search_user, 2); } + if (!empty($search_product_ref)) { + $sql .= natural_search('prod.ref', $search_product_ref); + } if ($search_valuebilled == '1') { $sql .= ' AND t.invoice_id > 0'; } @@ -1443,6 +1602,10 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser print ''.$langs->trans("ProgressDeclared").''.$langs->trans("Product").''; print ''; + print $form->select_produits('', 'fk_product', '1', 0, $projectstatic->thirdparty->price_level, 1, 2, '', 0, array(), $projectstatic->thirdparty->id, 'None', 0, 'maxwidth500'); + print ''; - if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 3, 3, 2, "timespent_date", 1, 0); } else { @@ -1697,6 +1882,23 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser } } + // Thirdparty + if (!empty($arrayfields['p.fk_soc']['checked'])) { + print ''; + if (empty($conf->cache['thridparty'][$task_time->fk_soc])) { + $tmpsociete = new Societe($db); + $tmpsociete->fetch($task_time->fk_soc); + $conf->cache['thridparty'][$task_time->fk_soc] = $tmpsociete; + } else { + $tmpsociete = $conf->cache['thridparty'][$task_time->fk_soc]; + } + print $tmpsociete->getNomUrl(1); + print ''; @@ -1718,7 +1920,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (!empty($arrayfields['t.task_ref']['checked'])) { if ((empty($id) && empty($ref)) || !empty($projectidforalltimes)) { // Not a dedicated task print ''; - if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { $formproject->selectTasks(-1, GETPOST('taskid', 'int') ? GETPOST('taskid', 'int') : $task_time->fk_task, 'taskid', 0, 0, 1, 1, 0, 0, 'maxwidth300', $projectstatic->id, ''); } else { $tasktmp->id = $task_time->fk_task; @@ -1750,7 +1952,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // By User if (!empty($arrayfields['author']['checked'])) { print ''; - if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($object->id)) { $object->fetch($id); } @@ -1781,7 +1983,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Note if (!empty($arrayfields['t.note']['checked'])) { print ''; - if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } else { print dol_nl2br($task_time->note); @@ -1790,14 +1992,14 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser if (!$i) { $totalarray['nbfield']++; } - } elseif ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + } elseif ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } // Time spent if (!empty($arrayfields['t.task_duration']['checked'])) { print ''; - if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'editline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; print $form->select_duration('new_duration', $task_time->task_duration, 0, 'text'); } else { @@ -1817,6 +2019,23 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser $totalarray['totalduration'] += $task_time->task_duration; } + //Product + if (!empty($arrayfields['t.fk_product']['checked'])) { + print ''; + if ($action == 'editline' && $_GET['lineid'] == $task_time->rowid) { + $form->select_produits($task_time->fk_product, 'fk_product', '1', 0, $projectstatic->thirdparty->price_level, 1, 2, '', 0, array(), $projectstatic->thirdparty->id, 'None', 0, 'maxwidth500'); + } elseif (!empty($task_time->fk_product)) { + $product = new Product($db); + $resultFetch = $product->fetch($task_time->fk_product); + if ($resultFetch < 0) { + setEventMessages($product->error, $product->errors, 'errors'); + } else { + print $product->getNomUrl(1); + } + } + print '
'; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline', 3, 3, 2, "timespent_date", 1, 0); } else { @@ -1967,7 +2186,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // User if (!empty($arrayfields['author']['checked'])) { print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($object->id)) { $object->fetch($id); } @@ -1995,20 +2214,20 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Note if (!empty($arrayfields['t.note']['checked'])) { print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } else { print dol_nl2br($task_time->note); } print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; print $form->select_duration('new_duration', $task_time->task_duration, 0, 'text'); } else { @@ -2061,7 +2280,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Date if (!empty($arrayfields['t.task_date']['checked'])) { print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($task_time->task_date_withhour)) { print $form->selectDate(($date2 ? $date2 : $date1), 'timeline_2', 3, 3, 2, "timespent_date", 1, 0); } else { @@ -2105,7 +2324,7 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // User if (!empty($arrayfields['author']['checked'])) { print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { if (empty($object->id)) { $object->fetch($id); } @@ -2133,20 +2352,20 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0 || $allprojectforuser // Note if (!empty($arrayfields['t.note']['checked'])) { print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; } else { print dol_nl2br($task_time->note); } print ''; - if ($action == 'splitline' && $_GET['lineid'] == $task_time->rowid) { + if ($action == 'splitline' && GETPOST('lineid', 'int') == $task_time->rowid) { print ''; print $form->select_duration('new_duration_2', 0, 0, 'text'); } else { diff --git a/htdocs/asterisk/cidlookup.php b/htdocs/public/clicktodial/cidlookup.php similarity index 71% rename from htdocs/asterisk/cidlookup.php rename to htdocs/public/clicktodial/cidlookup.php index 716057198f8..3ec7024855d 100644 --- a/htdocs/asterisk/cidlookup.php +++ b/htdocs/public/clicktodial/cidlookup.php @@ -16,20 +16,45 @@ */ /** - * \file htdocs/asterisk/cidlookup.php + * \file htdocs/public/clicktodial/cidlookup.php * \brief Script to search companies names based on incoming calls, from caller phone number - * \remarks To use this script, your Asterisk must be compiled with CURL, - * and your dialplan must be something like this: + * \remarks To use this script, your Asterisk must be compiled with CURL, and your dialplan must be something like this: * - * exten => s,1,Set(CALLERID(name)=${CURL(http://IP-DOLIBARR:80/asterisk/cidlookup.php?phone=${CALLERID(num)})}) + * exten => s,1,Set(CALLERID(name)=${CURL(http://IP-DOLIBARR:80/asterisk/cidlookup.php?phone=${CALLERID(num)}&securitykey=SECURITYKEY)}) * * Change IP-DOLIBARR to the IP address of your dolibarr server + * Change SECURITYKEY to the value defined into your setup of module ClickToDial */ +if (!defined('NOTOKENRENEWAL')) { + define('NOTOKENRENEWAL', '1'); // Disables token renewal +} +if (!defined('NOREQUIREMENU')) { + define('NOREQUIREMENU', '1'); +} +if (!defined('NOREQUIREHTML')) { + define('NOREQUIREHTML', '1'); +} +if (!defined('NOREQUIREAJAX')) { + define('NOREQUIREAJAX', '1'); +} +if (!defined('NOLOGIN')) { + define('NOLOGIN', '1'); +} +if (!defined('NOIPCHECK')) { + define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip +} -include '../master.inc.php'; +// So log file will have a suffix +if (!defined('USESUFFIXINLOG')) { + define('USESUFFIXINLOG', '_cidlookup'); +} + +include '../../main.inc.php'; $phone = GETPOST('phone'); +$securitykey = GETPOST('securitykey'); + $notfound = $langs->trans("Unknown"); // Security check @@ -38,12 +63,27 @@ if (empty($conf->clicktodial->enabled)) { exit; } + +/* + * View + */ + +if (empty($securitykey)) { + echo 'Securitykey is required. Check setup of clicktodial module.'; + exit; +} +if ($securitykey != getDolGlobalString('CLICKTODIAL_KEY_FOR_CIDLOOKUP')) { + echo 'Securitykey is wrong.'; + exit; +} + // Check parameters if (empty($phone)) { print "Error: Url must be called with parameter phone=phone to search\n"; exit; } + $sql = "SELECT s.nom as name FROM ".MAIN_DB_PREFIX."societe as s"; $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."socpeople as sp ON sp.fk_soc = s.rowid"; $sql .= " WHERE s.entity IN (".getEntity('societe').")"; diff --git a/htdocs/public/cron/cron_run_jobs_by_url.php b/htdocs/public/cron/cron_run_jobs_by_url.php index 8aa910a2d4f..fa81b8d8bd7 100644 --- a/htdocs/public/cron/cron_run_jobs_by_url.php +++ b/htdocs/public/cron/cron_run_jobs_by_url.php @@ -93,7 +93,7 @@ if (empty($key)) { echo 'Securitykey is required. Check setup of cron jobs module.'; exit; } -if ($key != $conf->global->CRON_KEY) { +if ($key != getDolGlobalString('CRON_KEY')) { echo 'Securitykey is wrong.'; exit; } @@ -135,7 +135,7 @@ if (!empty($id)) { $filter['t.rowid'] = $id; } -$result = $object->fetch_all('ASC,ASC,ASC', 't.priority,t.entity,t.rowid', 0, 0, 1, $filter, 0); +$result = $object->fetchAll('ASC,ASC,ASC', 't.priority,t.entity,t.rowid', 0, 0, 1, $filter, 0); if ($result < 0) { echo "Error: ".$object->error; dol_syslog("cron_run_jobs.php fetch Error".$object->error, LOG_ERR); diff --git a/htdocs/public/emailing/mailing-unsubscribe.php b/htdocs/public/emailing/mailing-unsubscribe.php index 76a73e8de05..cd69132d1a8 100644 --- a/htdocs/public/emailing/mailing-unsubscribe.php +++ b/htdocs/public/emailing/mailing-unsubscribe.php @@ -45,22 +45,11 @@ if (!defined('NOIPCHECK')) { if (!defined("NOSESSION")) { define("NOSESSION", '1'); } - -/** - * Header empty - * - * @return void - */ -function llxHeader() -{ +if (! defined('NOREQUIREHTML')) { + define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php } -/** - * Footer empty - * - * @return void - */ -function llxFooter() -{ +if (! defined('NOREQUIREAJAX')) { + define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library } @@ -71,9 +60,7 @@ global $user, $conf, $langs; $langs->loadLangs(array("main", "mails")); -$mtid = GETPOST('mtid'); -$email = GETPOST('email'); -$tag = GETPOST('tag'); +$tag = GETPOST('tag'); // To retreive the emailing, and recipient $unsuscrib = GETPOST('unsuscrib'); $securitykey = GETPOST('securitykey'); @@ -84,100 +71,98 @@ $securitykey = GETPOST('securitykey'); dol_syslog("public/emailing/mailing-read.php : tag=".$tag." securitykey=".$securitykey, LOG_DEBUG); -if ($securitykey != $conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY) { +if ($securitykey != getDolGlobalString('MAILING_EMAIL_UNSUBSCRIBE_KEY')) { print 'Bad security key value.'; exit; } - -if (!empty($tag) && ($unsuscrib == '1')) { - dol_syslog("public/emailing/mailing-unsubscribe.php : Launch unsubscribe requests", LOG_DEBUG); - - $sql = "SELECT mc.rowid, mc.email, mc.statut, m.entity"; - $sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc, ".MAIN_DB_PREFIX."mailing as m"; - $sql .= " WHERE mc.fk_mailing = m.rowid AND mc.tag='".$db->escape($tag)."'"; - - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - - $obj = $db->fetch_object($resql); - - if (empty($obj)) { - print 'Email target not valid. Operation canceled.'; - exit; - } - if (empty($obj->email)) { - print 'Email target not valid. Operation canceled.'; - exit; - } - if ($obj->statut == 3) { - print 'Email target already set to unsubscribe. Operation canceled.'; - exit; - } - // TODO Test that mtid and email match also with the one found from $tag - /* - if ($obj->email != $email) - { - print 'Email does not match tagnot found. No need to unsubscribe.'; - exit; - } - */ - - // Update status of mail in recipient mailing list table - $statut = '3'; - $sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=".((int) $statut)." WHERE tag = '".$db->escape($tag)."'"; - - $resql = $db->query($sql); - if (!$resql) { - dol_print_error($db); - } - - /* - // Update status communication of thirdparty prospect (old usage) - $sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=-1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='thirdparty' AND source_id is not null)"; - - $resql=$db->query($sql); - if (! $resql) dol_print_error($db); - - // Update status communication of contact prospect (old usage) - $sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET no_email=1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='contact' AND source_id is not null)"; - - $resql=$db->query($sql); - if (! $resql) dol_print_error($db); - */ - - // Update status communication of email (new usage) - $sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe (date_creat, entity, email, unsubscribegroup, ip) VALUES ('".$db->idate(dol_now())."', ".((int) $obj->entity).", '".$db->escape($obj->email)."', '', '".$db->escape(getUserRemoteIP())."')"; - - $resql = $db->query($sql); - //if (! $resql) dol_print_error($db); No test on errors, may fail if already unsubscribed - - - header("Content-type: text/html; charset=".$conf->file->character_set_client); - - print ''; - print "\n"; - print "\n"; - print "\n"; - print ''."\n"; - print ''."\n"; - print ''."\n"; - print "".$langs->trans("MailUnsubcribe")."\n"; - print ''."\n"; - print ''; - - print "\n"; - print ''."\n"; - print '
'; - print $langs->trans("YourMailUnsubcribeOK", $obj->email)."
\n"; - print '
'; - print "\n"; - print "\n"; +if (empty($tag) || ($unsuscrib != '1')) { + print 'Bad parameters'; + exit; } + +/* + * View + */ + +$head = ''; +$replacemainarea = (empty($conf->dol_hide_leftmenu) ? '
' : '').'
'; +llxHeader($head, $langs->trans("MailUnsubcribe"), '', '', 0, 0, '', '', '', 'onlinepaymentbody', $replacemainarea); + +dol_syslog("public/emailing/mailing-unsubscribe.php : Launch unsubscribe requests", LOG_DEBUG); + +$sql = "SELECT mc.rowid, mc.email, mc.statut, m.entity"; +$sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc, ".MAIN_DB_PREFIX."mailing as m"; +$sql .= " WHERE mc.fk_mailing = m.rowid AND mc.tag = '".$db->escape($tag)."'"; + +$resql = $db->query($sql); +if (!$resql) { + dol_print_error($db); +} + +$obj = $db->fetch_object($resql); + +if (empty($obj)) { + print 'Email tag not found. Operation canceled.'; + llxFooter('', 'private'); + exit; +} +if (empty($obj->email)) { + print 'Email for this tag not valid. Operation canceled.'; + llxFooter('', 'private'); + exit; +} + +if ($obj->statut == 3) { + print 'Email tag already set to unsubscribe. Operation canceled.'; + llxFooter('', 'private'); + exit; +} +// TODO Test that mtid and email match also with the one found from $tag +/* +if ($obj->email != $email) +{ + print 'Email does not match tagnot found. No need to unsubscribe.'; + exit; +} +*/ + +// Update status of mail in recipient mailing list table +$statut = '3'; +$sql = "UPDATE ".MAIN_DB_PREFIX."mailing_cibles SET statut=".((int) $statut)." WHERE tag = '".$db->escape($tag)."'"; + +$resql = $db->query($sql); +if (!$resql) { + dol_print_error($db); +} + +/* +// Update status communication of thirdparty prospect (old usage) +$sql = "UPDATE ".MAIN_DB_PREFIX."societe SET fk_stcomm=-1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='thirdparty' AND source_id is not null)"; + +$resql=$db->query($sql); +if (! $resql) dol_print_error($db); + +// Update status communication of contact prospect (old usage) +$sql = "UPDATE ".MAIN_DB_PREFIX."socpeople SET no_email=1 WHERE rowid IN (SELECT source_id FROM ".MAIN_DB_PREFIX."mailing_cibles WHERE tag = '".$db->escape($tag)."' AND source_type='contact' AND source_id is not null)"; + +$resql=$db->query($sql); +if (! $resql) dol_print_error($db); +*/ + +// Update status communication of email (new usage) +$sql = "INSERT INTO ".MAIN_DB_PREFIX."mailing_unsubscribe (date_creat, entity, email, unsubscribegroup, ip) VALUES ('".$db->idate(dol_now())."', ".((int) $obj->entity).", '".$db->escape($obj->email)."', '', '".$db->escape(getUserRemoteIP())."')"; + +$resql = $db->query($sql); +//if (! $resql) dol_print_error($db); No test on errors, may fail if already unsubscribed + + +print '
'; +print $langs->trans("YourMailUnsubcribeOK", $obj->email)."
\n"; +print '
'; + + +llxFooter('', 'public'); + $db->close(); diff --git a/htdocs/public/error-401.php b/htdocs/public/error-401.php index bae712ec095..3d453cd30e5 100644 --- a/htdocs/public/error-401.php +++ b/htdocs/public/error-401.php @@ -21,7 +21,7 @@ Sorry. You are not allowed to access this resource.
- +
diff --git a/htdocs/public/error-404.php b/htdocs/public/error-404.php index 680b9e4a77c..c964e49cd85 100644 --- a/htdocs/public/error-404.php +++ b/htdocs/public/error-404.php @@ -21,7 +21,7 @@ You requested a website or a page that does not exists.
- +
diff --git a/htdocs/public/eventorganization/attendee_new.php b/htdocs/public/eventorganization/attendee_new.php index 661ae6accfe..8bb85022b2e 100644 --- a/htdocs/public/eventorganization/attendee_new.php +++ b/htdocs/public/eventorganization/attendee_new.php @@ -60,6 +60,7 @@ global $dolibarr_main_url_root; // Init vars $errmsg = ''; +$errors = array(); $error = 0; $backtopage = GETPOST('backtopage', 'alpha'); $action = GETPOST('action', 'aZ09'); @@ -90,6 +91,7 @@ if ($type == 'conf') { if ($resultproject < 0) { $error++; $errmsg .= $project->error; + $errors = array_merge($errors, $project->errors); } } @@ -99,6 +101,7 @@ if ($type == 'global') { if ($resultproject < 0) { $error++; $errmsg .= $project->error; + $errors = array_merge($errors, $project->errors); } else { $sql = "SELECT COUNT(*) as nb FROM ".MAIN_DB_PREFIX."projet"; $sql .= " WHERE ".MAIN_DB_PREFIX."eventorganization_conferenceorboothattendee = ".((int) $project->id); @@ -279,6 +282,7 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen if ($resultconfattendee < 0) { $error++; $errmsg .= $confattendee->error; + $errors = array_merge($errors, $confattendee->errors); } } @@ -403,6 +407,7 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen // If an error was found $error++; $errmsg .= $thirdparty->error; + $errors = array_merge($errors, $thirdparty->errors); } elseif ($resultfetchthirdparty == 0) { // No thirdparty found + a payment is expected // Creation of a new thirdparty if (!empty($societe)) { @@ -441,6 +446,7 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen if ($readythirdparty < 0) { $error++; $errmsg .= $thirdparty->error; + $errors = array_merge($errors, $thirdparty->errors); } else { $thirdparty->country_code = getCountry($thirdparty->country_id, 2, $db, $langs); $thirdparty->country = getCountry($thirdparty->country_code, 0, $db, $langs); @@ -472,6 +478,7 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen if ($resultprod < 0) { $error++; $errmsg .= $productforinvoicerow->error; + $errors = array_merge($errors, $productforinvoicerow->errors); } else { $facture = new Facture($db); if (empty($confattendee->fk_invoice)) { @@ -668,7 +675,7 @@ if ($maxattendees && $currentnbofattendees >= $maxattendees) { print '
'; -dol_htmloutput_errors($errmsg); +dol_htmloutput_errors($errmsg, $errors); if ((!empty($conference->id) && $conference->status == ConferenceOrBooth::STATUS_CONFIRMED) || (!empty($project->id) && $project->status == Project::STATUS_VALIDATED)) { if (empty($maxattendees) || $currentnbofattendees < $maxattendees) { diff --git a/htdocs/public/members/new.php b/htdocs/public/members/new.php index 31f1fa9f952..c409703862c 100644 --- a/htdocs/public/members/new.php +++ b/htdocs/public/members/new.php @@ -64,10 +64,12 @@ if (is_numeric($entity)) { require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent.class.php'; require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherent_type.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; +require_once DOL_DOCUMENT_ROOT.'/core/class/cunits.class.php'; // Init vars $errmsg = ''; @@ -255,7 +257,7 @@ if (empty($reshook) && $action == 'add') { $public = GETPOSTISSET('public') ? 1 : 0; if (!$error) { - // email a peu pres correct et le login n'existe pas + // E-mail looks OK and login does not exist $adh = new Adherent($db); $adh->statut = -1; $adh->public = $public; @@ -376,6 +378,16 @@ if (empty($reshook) && $action == 'add') { } } + // Auto-create thirdparty on member creation + if (!empty($conf->global->ADHERENT_DEFAULT_CREATE_THIRDPARTY)) { + $company = new Societe($db); + $result = $company->create_from_member($adh); + if ($result < 0) { + $error++; + $errmsg .= join('
', $company->errors); + } + } + if (!empty($backtopage)) { $urlback = $backtopage; } elseif (!empty($conf->global->MEMBER_URL_REDIRECT_SUBSCRIPTION)) { @@ -473,254 +485,352 @@ dol_htmloutput_errors($errmsg); print '
'."\n"; print ''; print ''; -print ''; -print ''; -print '
'; +if (!empty($conf->global->MEMBER_SKIP_TABLE) || !empty($conf->global->MEMBER_NEWFORM_FORCETYPE) || $action == 'create') { + print ''; + print '
'; + print '
'.$langs->trans("FieldsWithAreMandatory", '*').'
'; + //print $langs->trans("FieldsWithIsForPublic",'**').'
'; -print '
'.$langs->trans("FieldsWithAreMandatory", '*').'
'; -//print $langs->trans("FieldsWithIsForPublic",'**').'
'; - -print dol_get_fiche_head(''); - -print ''; - - -print ''."\n"; - -// Type -if (empty($conf->global->MEMBER_NEWFORM_FORCETYPE)) { - $listoftype = $adht->liste_array(); - $tmp = array_keys($listoftype); - $defaulttype = ''; - $isempty = 1; - if (count($listoftype) == 1) { - $defaulttype = $tmp[0]; - $isempty = 0; - } - print ''."\n"; -} else { - $adht->fetch($conf->global->MEMBER_NEWFORM_FORCETYPE); - print ''; -} - -// Moral/Physic attribute -$morphys["phy"] = $langs->trans("Physical"); -$morphys["mor"] = $langs->trans("Moral"); -if (empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY)) { - print ''."\n"; -} else { - print $morphys[$conf->global->MEMBER_NEWFORM_FORCEMORPHY]; - print ''; -} - -// Company -print ''."\n"; -// Title -print ''."\n"; -// Lastname -print ''."\n"; -// Firstname -print ''."\n"; -// EMail -print ''."\n"; -// Login -if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { - print ''."\n"; - print ''."\n"; - print ''."\n"; -} -// Gender -print ''; -print ''; -// Address -print ''."\n"; -// Zip / Town -print ''; -// Country -print ''; -// State -if (empty($conf->global->SOCIETE_DISABLE_STATE)) { - print ''; -} -// Birthday -print ''."\n"; -// Photo -print ''."\n"; -// Public -print ''."\n"; -// Other attributes -$tpl_context = 'public'; // define template context to public -include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; -// Comments -print ''; -print ''; -print ''; -print ''."\n"; - -// Add specific fields used by Dolibarr foundation for example -// TODO Move this into generic feature. -if (!empty($conf->global->MEMBER_NEWFORM_DOLIBARRTURNOVER)) { - $arraybudget = array('50'=>'<= 100 000', '100'=>'<= 200 000', '200'=>'<= 500 000', '300'=>'<= 1 500 000', '600'=>'<= 3 000 000', '1000'=>'<= 5 000 000', '2000'=>'5 000 000+'); - print ''."\n"; -} + jQuery(document).ready(function () { + jQuery(document).ready(function () { + function initmorphy() + { + console.log("Call initmorphy"); + if (jQuery("#morphy").val() == \'phy\') { + jQuery("#trcompany").hide(); + } + if (jQuery("#morphy").val() == \'mor\') { + jQuery("#trcompany").show(); + } + }; + initmorphy(); + jQuery("#morphy").change(function() { + initmorphy(); + }); + jQuery("#selectcountry_id").change(function() { + document.newmember.action.value="create"; + document.newmember.submit(); + }); + jQuery("#typeid").change(function() { + document.newmember.action.value="create"; + document.newmember.submit(); + }); + }); + }); + '; -if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE)) { - $amount = 0; - $typeid = $conf->global->MEMBER_NEWFORM_FORCETYPE ? $conf->global->MEMBER_NEWFORM_FORCETYPE : GETPOST('typeid', 'int'); - // Set amount for the subscription: - // - First check the amount of the member type. - $amountbytype = $adht->amountByType(1); // Load the array of amount per type - $amount = empty($amountbytype[$typeid]) ? (isset($amount) ? $amount : 0) : $amountbytype[$typeid]; - // - If not found, take the default amount - if (empty($amount) && !empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; - } - // - If not set, we accept ot have amount defined as parameter (for backward compatibility). - if (empty($amount)) { - $amount = (GETPOST('amount') ? price2num(GETPOST('amount', 'alpha'), 'MT', 2) : ''); - } + print '
'.$langs->trans("Type").' *'; - print $form->selectarray("typeid", $adht->liste_array(1), GETPOST('typeid') ? GETPOST('typeid') : $defaulttype, $isempty); - print '
'.$langs->trans('MemberNature').' *'."\n"; - print $form->selectarray("morphy", $morphys, GETPOST('morphy'), 1); - print '
'.$langs->trans("Company").''; -print img_picto('', 'company', 'class="pictofixedwidth"'); -print '
'.$langs->trans('UserTitle').''; -print $formcompany->select_civility(GETPOST('civility_id'), 'civility_id').'
'.$langs->trans("Lastname").' *
'.$langs->trans("Firstname").' *
'.$langs->trans("Email").($conf->global->ADHERENT_MAIL_REQUIRED ? ' *' : '').''; -//print img_picto('', 'email', 'class="pictofixedwidth"'); -print '
'.$langs->trans("Login").' *
'.$langs->trans("Password").' *
'.$langs->trans("PasswordAgain").' *
'.$langs->trans("Gender").''; -$arraygender = array('man'=>$langs->trans("Genderman"), 'woman'=>$langs->trans("Genderwoman")); -print $form->selectarray('gender', $arraygender, GETPOST('gender') ?GETPOST('gender') : $object->gender, 1); -print '
'.$langs->trans("Address").''."\n"; -print '
'.$langs->trans('Zip').' / '.$langs->trans('Town').''; -print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 1, '', 'width75'); -print ' / '; -print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1); -print '
'.$langs->trans('Country').''; -print img_picto('', 'country', 'class="pictofixedwidth"'); -$country_id = GETPOST('country_id', 'int'); -if (!$country_id && !empty($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE)) { - $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, 2, $db, $langs); -} -if (!$country_id && !empty($conf->geoipmaxmind->enabled)) { - $country_code = dol_user_country(); - //print $country_code; - if ($country_code) { - $new_country_id = getCountry($country_code, 3, $db, $langs); - //print 'xxx'.$country_code.' - '.$new_country_id; - if ($new_country_id) { - $country_id = $new_country_id; - } - } -} -$country_code = getCountry($country_id, 2, $db, $langs); -print $form->select_country($country_id, 'country_id'); -print '
'.$langs->trans('State').''; - if ($country_code) { - print $formcompany->select_state(GETPOST("state_id"), $country_code); - } - print '
'.$langs->trans("DateOfBirth").''; -print $form->selectDate($birthday, 'birth', 0, 0, 1, "newmember", 1, 0); -print '
'.$langs->trans("URLPhoto").'
'.$langs->trans("Public").'
'.$langs->trans("Comments").'
'.$langs->trans("TurnoverOrBudget").' *'; - print $form->selectarray('budget', $arraybudget, GETPOST('budget'), 1); - print ' € or $'; + print dol_get_fiche_head(''); print ''; - print '
'."\n"; - // Clean the amount - $amount = price2num($amount); - - // $conf->global->MEMBER_NEWFORM_PAYONLINE is 'paypal', 'paybox' or 'stripe' - print ''."\n"; } else { - print ''; - print ''; + $adht->fetch($conf->global->MEMBER_NEWFORM_FORCETYPE); + print ''; } - print ' '.$langs->trans("Currency".$conf->currency); + + // Moral/Physic attribute + $morphys["phy"] = $langs->trans("Physical"); + $morphys["mor"] = $langs->trans("Moral"); + if (empty($conf->global->MEMBER_NEWFORM_FORCEMORPHY)) { + print ''."\n"; + } else { + print $morphys[$conf->global->MEMBER_NEWFORM_FORCEMORPHY]; + print ''; + } + + // Company + print ''."\n"; + // Title + print ''."\n"; + // Lastname + print ''."\n"; + // Firstname + print ''."\n"; + // EMail + print ''."\n"; + // Login + if (empty($conf->global->ADHERENT_LOGIN_NOT_REQUIRED)) { + print ''."\n"; + print ''."\n"; + print ''."\n"; + } + // Gender + print ''; + print ''; + // Address + print ''."\n"; + // Zip / Town + print ''; + // Country + print ''; + // State + if (empty($conf->global->SOCIETE_DISABLE_STATE)) { + print ''; + } + // Birthday + print ''."\n"; + // Photo + print ''."\n"; + // Public + print ''."\n"; + // Other attributes + $tpl_context = 'public'; // define template context to public + include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_add.tpl.php'; + // Comments + print ''; + print ''; + print ''; + print ''."\n"; + + // Add specific fields used by Dolibarr foundation for example + // TODO Move this into generic feature. + if (!empty($conf->global->MEMBER_NEWFORM_DOLIBARRTURNOVER)) { + $arraybudget = array('50'=>'<= 100 000', '100'=>'<= 200 000', '200'=>'<= 500 000', '300'=>'<= 1 500 000', '600'=>'<= 3 000 000', '1000'=>'<= 5 000 000', '2000'=>'5 000 000+'); + print ''."\n"; + } + + if (!empty($conf->global->MEMBER_NEWFORM_PAYONLINE)) { + $typeid = $conf->global->MEMBER_NEWFORM_FORCETYPE ? $conf->global->MEMBER_NEWFORM_FORCETYPE : GETPOST('typeid', 'int'); + $adht = new AdherentType($db); + $adht->fetch($typeid); + $caneditamount = $adht->caneditamount; + + // Set amount for the subscription: + // - First check the amount of the member type. + $amountbytype = $adht->amountByType(1); // Load the array of amount per type + $amount = empty($amountbytype[$typeid]) ? (isset($amount) ? $amount : 0) : $amountbytype[$typeid]; + // - If not found, take the default amount only of the user is authorized to edit it + if ($caneditamount && empty($amount) && !empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; + } + // - If not set, we accept ot have amount defined as parameter (for backward compatibility). + if (empty($amount)) { + $amount = (GETPOST('amount') ? price2num(GETPOST('amount', 'alpha'), 'MT', 2) : ''); + } + + // Clean the amount + $amount = price2num($amount); + $showedamount = $amount>0? $amount: 0; + // $conf->global->MEMBER_NEWFORM_PAYONLINE is 'paypal', 'paybox' or 'stripe' + print ''; + } + + print "
'.$langs->trans("Subscription").''; - if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { - print ''; + // Type + if (empty($conf->global->MEMBER_NEWFORM_FORCETYPE)) { + $listoftype = $adht->liste_array(); + $tmp = array_keys($listoftype); + $defaulttype = ''; + $isempty = 1; + if (count($listoftype) == 1) { + $defaulttype = $tmp[0]; + $isempty = 0; + } + print '
'.$langs->trans("Type").' *'; + print $form->selectarray("typeid", $adht->liste_array(1), GETPOST('typeid') ? GETPOST('typeid') : $defaulttype, $isempty); + print '
'.$langs->trans('MemberNature').' *'."\n"; + print $form->selectarray("morphy", $morphys, GETPOST('morphy'), 1); + print '
'.$langs->trans("Company").''; + print img_picto('', 'company', 'class="pictofixedwidth"'); + print '
'.$langs->trans('UserTitle').''; + print $formcompany->select_civility(GETPOST('civility_id'), 'civility_id').'
'.$langs->trans("Lastname").' *
'.$langs->trans("Firstname").' *
'.$langs->trans("Email").($conf->global->ADHERENT_MAIL_REQUIRED ? ' *' : '').''; + //print img_picto('', 'email', 'class="pictofixedwidth"'); + print '
'.$langs->trans("Login").' *
'.$langs->trans("Password").' *
'.$langs->trans("PasswordRetype").' *
'.$langs->trans("Gender").''; + $arraygender = array('man'=>$langs->trans("Genderman"), 'woman'=>$langs->trans("Genderwoman")); + print $form->selectarray('gender', $arraygender, GETPOST('gender') ?GETPOST('gender') : $object->gender, 1); print '
'.$langs->trans("Address").''."\n"; + print '
'.$langs->trans('Zip').' / '.$langs->trans('Town').''; + print $formcompany->select_ziptown(GETPOST('zipcode'), 'zipcode', array('town', 'selectcountry_id', 'state_id'), 0, 1, '', 'width75'); + print ' / '; + print $formcompany->select_ziptown(GETPOST('town'), 'town', array('zipcode', 'selectcountry_id', 'state_id'), 0, 1); + print '
'.$langs->trans('Country').''; + print img_picto('', 'country', 'class="pictofixedwidth"'); + $country_id = GETPOST('country_id', 'int'); + if (!$country_id && !empty($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE)) { + $country_id = getCountry($conf->global->MEMBER_NEWFORM_FORCECOUNTRYCODE, 2, $db, $langs); + } + if (!$country_id && !empty($conf->geoipmaxmind->enabled)) { + $country_code = dol_user_country(); + //print $country_code; + if ($country_code) { + $new_country_id = getCountry($country_code, 3, $db, $langs); + //print 'xxx'.$country_code.' - '.$new_country_id; + if ($new_country_id) { + $country_id = $new_country_id; + } + } + } + $country_code = getCountry($country_id, 2, $db, $langs); + print $form->select_country($country_id, 'country_id'); + print '
'.$langs->trans('State').''; + if ($country_code) { + print $formcompany->select_state(GETPOST("state_id"), $country_code); + } + print '
'.$langs->trans("DateOfBirth").''; + print $form->selectDate($birthday, 'birth', 0, 0, 1, "newmember", 1, 0); + print '
'.$langs->trans("URLPhoto").'
'.$langs->trans("Public").'
'.$langs->trans("Comments").'
'.$langs->trans("TurnoverOrBudget").' *'; + print $form->selectarray('budget', $arraybudget, GETPOST('budget'), 1); + print ' € or $'; + + print ''; + print '
'.$langs->trans("Subscription"); + if (!empty($conf->global->MEMBER_EXT_URL_SUBSCRIPTION_INFO)) { + print ' - '.$langs->trans("SeeHere").''; + } + print ''; + + if (empty($amount) && !empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { + $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; + } + + if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $caneditamount) { + print ''; + print ' '.$langs->trans("Currency".$conf->currency).' – '; + print $amount>0? $langs->trans("AnyAmountWithAdvisedAmount", $amount, $langs->trans("Currency".$conf->currency)): $langs->trans("AnyAmountWithoutAdvisedAmount"); + print ''; + } else { + print ''; + print ''; + print ' '.$langs->trans("Currency".$conf->currency); + } + print '
\n"; + + print dol_get_fiche_end(); + + // Save + print '
'; + print ''; + if (!empty($backtopage)) { + print '     '; + } + print '
'; + + + print "
\n"; + print "
"; + print '
'; +} else { // Show the table of membership types + // Get units + $measuringUnits = new CUnits($db); + $result = $measuringUnits->fetchAll('', '', 0, 0, array('t.active' => 1)); + $units = array(); + foreach ($measuringUnits->records as $lines) + $units[$lines->short_label] = $langs->trans(ucfirst($lines->label)); + + $sql = "SELECT d.rowid, d.libelle as label, d.subscription, d.amount, d.caneditamount, d.vote, d.note, d.duration, d.statut as status, d.morphy"; + $sql .= " FROM ".MAIN_DB_PREFIX."adherent_type as d"; + $sql .= " WHERE d.entity IN (".getEntity('member_type').")"; + $sql .= " AND d.statut=1"; + + $result = $db->query($sql); + if ($result) { + $num = $db->num_rows($result); + + print '
'; + print ''."\n"; + print ''; + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print "\n"; + + $i = 0; + while ($i < $num) { + $objp = $db->fetch_object($result); + + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print ""; + $i++; + } + + // If no record found + if ($num == 0) { + $colspan = 8; + print ''; + } + + print "
'.$langs->trans("Label").''.$langs->trans("MembershipDuration").''.$langs->trans("Amount").''.$langs->trans("MembersNature").''.$langs->trans("VoteAllowed").''.$langs->trans("NewSubscription").'
'.dol_escape_htmltag($objp->label).''; + $unit = preg_replace("/[^a-zA-Z]+/", "", $objp->duration); + print max(1, intval($objp->duration)).' '.$units[$unit]; + print ''; + $displayedamount = max(intval($objp->amount), intval($conf->global->MEMBER_MIN_AMOUNT)); + $caneditamount = !empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $objp->caneditamount; + if ($objp->subscription) { + if ($displayedamount > 0 || !$caneditamount) { + print $displayedamount.' '.strtoupper($conf->currency); + } + if ($caneditamount && $displayedamount>0) { + print $form->textwithpicto('', $langs->transnoentities("CanEditAmountShortForValues"), 1, 'help', '', 0, 3); + } elseif ($caneditamount) { + print $langs->transnoentities("CanEditAmountShort"); + } + } else { + print "–"; // No subscription required + } + print ''; + if ($objp->morphy == 'phy') { + print $langs->trans("Physical"); + } elseif ($objp->morphy == 'mor') { + print $langs->trans("Moral"); + } else { + print $langs->trans("MorAndPhy"); + } + print ''.yn($objp->vote).'
'.$langs->trans("NoRecordFound").'
"; + print '
'; + + print ''; + } else { + dol_print_error($db); + } } -print "
\n"; - -print dol_get_fiche_end(); - -// Save -print '
'; -print ''; -if (!empty($backtopage)) { - print '     '; -} -print '
'; - - -print "\n"; -print "
"; -print ''; - llxFooterVierge(); diff --git a/htdocs/public/members/public_card.php b/htdocs/public/members/public_card.php index a6512b83a60..d58b6448edb 100644 --- a/htdocs/public/members/public_card.php +++ b/htdocs/public/members/public_card.php @@ -147,16 +147,8 @@ $db->close(); */ function llxHeaderVierge($title, $head = "") { - global $user, $conf, $langs; + top_htmlhead($head, $title); - header("Content-type: text/html; charset=".$conf->file->character_set_client); - print "\n"; - print "\n"; - print "".$title."\n"; - if ($head) { - print $head."\n"; - } - print "\n"; print ''."\n"; } diff --git a/htdocs/public/members/public_list.php b/htdocs/public/members/public_list.php index 4bf2a6b94bf..178af5fce11 100644 --- a/htdocs/public/members/public_list.php +++ b/htdocs/public/members/public_list.php @@ -65,16 +65,8 @@ $langs->loadLangs(array("main", "members", "companies", "other")); */ function llxHeaderVierge($title, $head = "") { - global $user, $conf, $langs; + top_htmlhead($head, $title); - header("Content-type: text/html; charset=".$conf->file->character_set_client); - print "\n"; - print "\n"; - print "".$title."\n"; - if ($head) { - print $head."\n"; - } - print "\n"; print ''."\n"; } @@ -151,13 +143,13 @@ if ($result) { print ''; print ''; - print ''; - print ''."\n"; + print ''; + print ''."\n"; //print_liste_field_titre("DateOfBirth", $_SERVER["PHP_SELF"],"birth",'',$param,$sortfield,$sortorder); // est-ce nécessaire ?? - print_liste_field_titre("EMail", $_SERVER["PHP_SELF"], "email", '', $param, '', $sortfield, $sortorder, 'public_'); - print_liste_field_titre("Zip", $_SERVER["PHP_SELF"], "zip", "", $param, '', $sortfield, $sortorder, 'public_'); - print_liste_field_titre("Town", $_SERVER["PHP_SELF"], "town", "", $param, '', $sortfield, $sortorder, 'public_'); - print_liste_field_titre("Photo", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'public_'); + print_liste_field_titre("EMail", $_SERVER["PHP_SELF"], "email", '', $param, '', $sortfield, $sortorder, 'left public_'); + print_liste_field_titre("Zip", $_SERVER["PHP_SELF"], "zip", "", $param, '', $sortfield, $sortorder, 'left public_'); + print_liste_field_titre("Town", $_SERVER["PHP_SELF"], "town", "", $param, '', $sortfield, $sortorder, 'left public_'); + print_liste_field_titre("Photo", $_SERVER["PHP_SELF"], "", "", $param, '', $sortfield, $sortorder, 'center public_'); print "\n"; while ($i < $num && $i < $conf->liste_limit) { @@ -170,7 +162,7 @@ if ($result) { print ''."\n"; print ''."\n"; if (isset($objp->photo) && $objp->photo != '') { - print ''."\n"; } else { diff --git a/htdocs/public/onlinesign/newonlinesign.php b/htdocs/public/onlinesign/newonlinesign.php index d1020dc2c1d..e698c20c4f0 100644 --- a/htdocs/public/onlinesign/newonlinesign.php +++ b/htdocs/public/onlinesign/newonlinesign.php @@ -39,7 +39,7 @@ if (!defined('NOBROWSERNOTIF')) { // For MultiCompany module. // Do not use GETPOST here, function is not defined and define must be done before including main.inc.php -// TODO This should be useless. Because entity must be retrieve from object ref and not from url. +// Because 2 entities can have the same ref. $entity = (!empty($_GET['entity']) ? (int) $_GET['entity'] : (!empty($_POST['entity']) ? (int) $_POST['entity'] : 1)); if (is_numeric($entity)) { define("DOLENTITY", $entity); @@ -51,10 +51,9 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; -require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; // Load translation files -$langs->loadLangs(array("main", "other", "dict", "bills", "companies", "errors", "members", "paybox", "propal")); +$langs->loadLangs(array("main", "other", "dict", "bills", "companies", "errors", "members", "paybox", "propal", "commercial")); // Security check // No check on module enabled. Done later according to $validpaymentmethod @@ -125,8 +124,9 @@ $creditor = $mysoc->name; $type = $source; if ($source == 'proposal') { + require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; $object = new Propal($db); - $object->fetch(0, $ref); + $result= $object->fetch(0, $ref, '', $entity); } else { accessforbidden('Bad value for source'); exit; @@ -136,10 +136,10 @@ if ($source == 'proposal') { // Check securitykey $securekeyseed = ''; if ($source == 'proposal') { - $securekeyseed = $conf->global->PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN; + $securekeyseed = getDolGlobalString('PROPOSAL_ONLINE_SIGNATURE_SECURITY_TOKEN'); } -if (!dol_verifyHash($securekeyseed.$type.$ref, $SECUREKEY, '0')) { +if (!dol_verifyHash($securekeyseed.$type.$ref.(empty($conf->multicompany->enabled) ? '' : $entity), $SECUREKEY, '0')) { http_response_code(403); print 'Bad value for securitykey. Value provided '.dol_escape_htmltag($SECUREKEY).' does not match expected value for ref='.dol_escape_htmltag($ref); exit(-1); @@ -290,19 +290,9 @@ if ($source == 'proposal') { $found = true; $langs->load("proposal"); - require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; - - $proposal = new Propal($db); - $result = $proposal->fetch('', $ref); - if ($result <= 0) { - $mesg = $proposal->error; - $error++; - } else { - $result = $proposal->fetch_thirdparty($proposal->socid); - } + $result = $object->fetch_thirdparty($object->socid); // Creditor - print ''."\n"; // Debitor - print ''."\n"; // Amount - print ''."\n"; // Object - - $text = ''.$langs->trans("SignatureProposalRef", $proposal->ref).''; - print ''."\n"; - - // TODO Add link to download PDF (similar code than for invoice) } diff --git a/htdocs/public/partnership/new.php b/htdocs/public/partnership/new.php index f6f0efc4fb2..9178d37ddc6 100644 --- a/htdocs/public/partnership/new.php +++ b/htdocs/public/partnership/new.php @@ -182,6 +182,10 @@ if (empty($reshook) && $action == 'add') { $error++; $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Type"))."
\n"; }*/ + if (!GETPOST('societe')) { + $error++; + $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("societe"))."
\n"; + } if (!GETPOST('lastname')) { $error++; $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Lastname"))."
\n"; @@ -190,6 +194,7 @@ if (empty($reshook) && $action == 'add') { $error++; $errmsg .= $langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Firstname"))."
\n"; } + if (empty(GETPOST('email'))) { $error++; $errmsg .= $langs->trans('ErrorFieldRequired', $langs->transnoentitiesnoconv('Email'))."
\n"; @@ -203,6 +208,7 @@ if (empty($reshook) && $action == 'add') { if (!$error) { $partnership = new Partnership($db); + $partnershipt = new PartnershipType($db); // We try to find the thirdparty or the member if (getDolGlobalString('PARTNERSHIP_IS_MANAGED_FOR', 'thirdparty') == 'thirdparty') { @@ -211,17 +217,70 @@ if (empty($reshook) && $action == 'add') { $partnership->fk_soc = 0; } - $partnership->statut = -1; - $partnership->firstname = GETPOST('firstname'); - $partnership->lastname = GETPOST('lastname'); - $partnership->address = GETPOST('address'); - $partnership->zip = GETPOST('zipcode'); - $partnership->town = GETPOST('town'); - $partnership->email = GETPOST('email'); - $partnership->country_id = GETPOST('country_id', 'int'); - $partnership->state_id = GETPOST('state_id', 'int'); - //$partnership->typeid = $conf->global->PARTNERSHIP_NEWFORM_FORCETYPE ? $conf->global->PARTNERSHIP_NEWFORM_FORCETYPE : GETPOST('typeid', 'int'); + $partnership->status = 0; $partnership->note_private = GETPOST('note_private'); + $partnership->date_creation = dol_now(); + $partnership->date_partnership_start = dol_now(); + $partnership->fk_user_creat = 0; + + /*$partnershipt->fetch(0, 'default'); + if ($partnershipt->id > 0) { + $partnership->fk_type = $partnershipt->id; + }*/ + $partnership->fk_type = GETPOST('partnershiptype', 'int'); + + //$partnership->firstname = GETPOST('firstname'); + //$partnership->lastname = GETPOST('lastname'); + //$partnership->address = GETPOST('address'); + //$partnership->zip = GETPOST('zipcode'); + //$partnership->town = GETPOST('town'); + //$partnership->email = GETPOST('email'); + //$partnership->country_id = GETPOST('country_id', 'int'); + //$partnership->state_id = GETPOST('state_id', 'int'); + //$partnership->typeid = $conf->global->PARTNERSHIP_NEWFORM_FORCETYPE ? $conf->global->PARTNERSHIP_NEWFORM_FORCETYPE : GETPOST('typeid', 'int'); + + // test if societe already exist + $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE nom='".$db->escape(GETPOST('societe'))."'"; + $result = $db->query($sql); + if ($result) { + $num = $db->num_rows($result); + } + if ($num = 0) { // si il ya pas d'entree sur le nom on teste l'email + $sql1 = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE email='".$db->escape(GETPOST('email'))."'"; + $result1 = $db->query($sql1); + if ($result1) { + $num1 = $db->num_rows($result1); + } + if ($num1 != 0) { + $error++; + $errmsg = "email already exists please rewrite your company name"; + } else { + //create thirdparty + $company = new Societe($db); + + $company->address = GETPOST('address'); + $company->zip = GETPOST('zipcode'); + $company->town = GETPOST('town'); + $company->email = GETPOST('email'); + $company->country_id = GETPOST('country_id', 'int'); + $company->state_id = GETPOST('state_id', 'int'); + $company->name_alias = dolGetFirstLastname(GETPOST('firstname'), GETPOST('lastname')); + + $resultat=$company->create($user); + if ($resultat < 0) { + $error++; + $errmsg .= join('
', $company->errors); + } + + $partnership->fk_soc = $company->id; + } + } elseif ($num > 1) { + $error++; + $errmsg = 'more than one entry exist for this company please contact us to complete your partnership request'; + } else { + $company = $db->fetch_object($result); + $partnership->fk_soc = $company->rowid; + } // Fill array 'array_options' with data from add form $extrafields->fetch_name_optionals_label($partnership->table_element); @@ -230,175 +289,180 @@ if (empty($reshook) && $action == 'add') { $error++; } - $result = $partnership->create($user); - if ($result > 0) { - require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; - $object = $partnership; + if (!$error) { + $result = $partnership->create($user); + if ($result > 0) { + /* + require_once DOL_DOCUMENT_ROOT.'/core/class/CMailFile.class.php'; + $object = $partnership; - /* - $partnershipt = new PartnershipType($db); - $partnershipt->fetch($object->typeid); - if ($object->email) { - $subject = ''; - $msg = ''; + $partnershipt = new PartnershipType($db); + $partnershipt->fetch($object->typeid); - // Send subscription email - include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; - $formmail = new FormMail($db); - // Set output language - $outputlangs = new Translate('', $conf); - $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); - // Load traductions files required by page - $outputlangs->loadLangs(array("main", "members")); - // Get email content from template - $arraydefaultmessage = null; - $labeltouse = $conf->global->PARTNERSHIP_EMAIL_TEMPLATE_AUTOREGISTER; + if ($object->email) { + $subject = ''; + $msg = ''; - if (!empty($labeltouse)) { - $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); + // Send subscription email + include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; + $formmail = new FormMail($db); + // Set output language + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); + // Load traductions files required by page + $outputlangs->loadLangs(array("main", "members")); + // Get email content from template + $arraydefaultmessage = null; + $labeltouse = $conf->global->PARTNERSHIP_EMAIL_TEMPLATE_AUTOREGISTER; + + if (!empty($labeltouse)) { + $arraydefaultmessage = $formmail->getEMailTemplate($db, 'member', $user, $outputlangs, 0, 1, $labeltouse); + } + + if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) { + $subject = $arraydefaultmessage->topic; + $msg = $arraydefaultmessage->content; + } + + $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object); + complete_substitutions_array($substitutionarray, $outputlangs, $object); + $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs); + $texttosend = make_substitutions(dol_concatdesc($msg, $partnershipt->getMailOnValid()), $substitutionarray, $outputlangs); + + if ($subjecttosend && $texttosend) { + $moreinheader = 'X-Dolibarr-Info: send_an_email by public/members/new.php'."\r\n"; + + $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader); + } } - if (!empty($labeltouse) && is_object($arraydefaultmessage) && $arraydefaultmessage->id > 0) { - $subject = $arraydefaultmessage->topic; - $msg = $arraydefaultmessage->content; - } - $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object); - complete_substitutions_array($substitutionarray, $outputlangs, $object); - $subjecttosend = make_substitutions($subject, $substitutionarray, $outputlangs); - $texttosend = make_substitutions(dol_concatdesc($msg, $partnershipt->getMailOnValid()), $substitutionarray, $outputlangs); - - if ($subjecttosend && $texttosend) { - $moreinheader = 'X-Dolibarr-Info: send_an_email by public/members/new.php'."\r\n"; - - $result = $object->send_an_email($texttosend, $subjecttosend, array(), array(), array(), "", "", 0, -1, '', $moreinheader); - } - } - */ - - // Send email to the foundation to say a new member subscribed with autosubscribe form - if (getDolGlobalString('MAIN_INFO_SOCIETE_MAIL') && !empty($conf->global->PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL_SUBJECT) && - !empty($conf->global->PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL)) { - // Define link to login card - $appli = constant('DOL_APPLICATION_TITLE'); - if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { - $appli = $conf->global->MAIN_APPLICATION_TITLE; - if (preg_match('/\d\.\d/', $appli)) { - if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) { - $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core + // Send email to the foundation to say a new member subscribed with autosubscribe form + /* + if (getDolGlobalString('MAIN_INFO_SOCIETE_MAIL') && !empty($conf->global->PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL_SUBJECT) && + !empty($conf->global->PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL)) { + // Define link to login card + $appli = constant('DOL_APPLICATION_TITLE'); + if (!empty($conf->global->MAIN_APPLICATION_TITLE)) { + $appli = $conf->global->MAIN_APPLICATION_TITLE; + if (preg_match('/\d\.\d/', $appli)) { + if (!preg_match('/'.preg_quote(DOL_VERSION).'/', $appli)) { + $appli .= " (".DOL_VERSION.")"; // If new title contains a version that is different than core + } + } else { + $appli .= " ".DOL_VERSION; } } else { $appli .= " ".DOL_VERSION; } + + $to = $partnership->makeSubstitution(getDolGlobalString('MAIN_INFO_SOCIETE_MAIL')); + $from = getDolGlobalString('PARTNERSHIP_MAIL_FROM'); + $mailfile = new CMailFile( + '['.$appli.'] '.getDolGlobalString('PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL_SUBJECT', 'Partnership request'), + $to, + $from, + $partnership->makeSubstitution(getDolGlobalString('PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL')), + array(), + array(), + array(), + "", + "", + 0, + -1 + ); + + if (!$mailfile->sendfile()) { + dol_syslog($langs->trans("ErrorFailedToSendMail", $from, $to), LOG_ERR); + } + }*/ + + if (!empty($backtopage)) { + $urlback = $backtopage; + } elseif (!empty($conf->global->PARTNERSHIP_URL_REDIRECT_SUBSCRIPTION)) { + $urlback = $conf->global->PARTNERSHIP_URL_REDIRECT_SUBSCRIPTION; + // TODO Make replacement of __AMOUNT__, etc... } else { - $appli .= " ".DOL_VERSION; + $urlback = $_SERVER["PHP_SELF"]."?action=added&token=".newToken(); } - $to = $partnership->makeSubstitution(getDolGlobalString('MAIN_INFO_SOCIETE_MAIL')); - $from = getDolGlobalString('PARTNERSHIP_MAIL_FROM'); - $mailfile = new CMailFile( - '['.$appli.'] '.getDolGlobalString('PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL_SUBJECT', 'Partnership request'), - $to, - $from, - $partnership->makeSubstitution(getDolGlobalString('PARTNERSHIP_AUTOREGISTER_NOTIF_MAIL')), - array(), - array(), - array(), - "", - "", - 0, - -1 - ); + /* + if (!empty($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE) && $conf->global->PARTNERSHIP_NEWFORM_PAYONLINE != '-1') { + if ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'all') { + $urlback = DOL_MAIN_URL_ROOT.'/public/payment/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); + if (price2num(GETPOST('amount', 'alpha'))) { + $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); + } + if (GETPOST('email')) { + $urlback .= '&email='.urlencode(GETPOST('email')); + } + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { + $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); + } else { + $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); + } + } + } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'paybox') { + $urlback = DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); + if (price2num(GETPOST('amount', 'alpha'))) { + $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); + } + if (GETPOST('email')) { + $urlback .= '&email='.urlencode(GETPOST('email')); + } + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { + $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); + } else { + $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); + } + } + } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'paypal') { + $urlback = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); + if (price2num(GETPOST('amount', 'alpha'))) { + $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); + } + if (GETPOST('email')) { + $urlback .= '&email='.urlencode(GETPOST('email')); + } + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { + $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); + } else { + $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); + } + } + } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'stripe') { + $urlback = DOL_MAIN_URL_ROOT.'/public/stripe/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.$partnership->ref; + if (price2num(GETPOST('amount', 'alpha'))) { + $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); + } + if (GETPOST('email')) { + $urlback .= '&email='.urlencode(GETPOST('email')); + } + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { + if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { + $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); + } else { + $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); + } + } + } else { + dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment"); + exit; + } + }*/ - if (!$mailfile->sendfile()) { - dol_syslog($langs->trans("ErrorFailedToSendMail", $from, $to), LOG_ERR); + if (!empty($entity)) { + $urlback .= '&entity='.$entity; } - } - - if (!empty($backtopage)) { - $urlback = $backtopage; - } elseif (!empty($conf->global->PARTNERSHIP_URL_REDIRECT_SUBSCRIPTION)) { - $urlback = $conf->global->PARTNERSHIP_URL_REDIRECT_SUBSCRIPTION; - // TODO Make replacement of __AMOUNT__, etc... + dol_syslog("partnership ".$partnership->ref." was created, we redirect to ".$urlback); } else { - $urlback = $_SERVER["PHP_SELF"]."?action=added&token=".newToken(); + $error++; + $errmsg .= join('
', $partnership->errors); } - - if (!empty($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE) && $conf->global->PARTNERSHIP_NEWFORM_PAYONLINE != '-1') { - if ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'all') { - $urlback = DOL_MAIN_URL_ROOT.'/public/payment/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); - if (price2num(GETPOST('amount', 'alpha'))) { - $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); - } - if (GETPOST('email')) { - $urlback .= '&email='.urlencode(GETPOST('email')); - } - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { - $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); - } else { - $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); - } - } - } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'paybox') { - $urlback = DOL_MAIN_URL_ROOT.'/public/paybox/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); - if (price2num(GETPOST('amount', 'alpha'))) { - $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); - } - if (GETPOST('email')) { - $urlback .= '&email='.urlencode(GETPOST('email')); - } - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { - $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); - } else { - $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); - } - } - } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'paypal') { - $urlback = DOL_MAIN_URL_ROOT.'/public/paypal/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.urlencode($partnership->ref); - if (price2num(GETPOST('amount', 'alpha'))) { - $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); - } - if (GETPOST('email')) { - $urlback .= '&email='.urlencode(GETPOST('email')); - } - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { - $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); - } else { - $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); - } - } - } elseif ($conf->global->PARTNERSHIP_NEWFORM_PAYONLINE == 'stripe') { - $urlback = DOL_MAIN_URL_ROOT.'/public/stripe/newpayment.php?from=partnershipnewform&source=membersubscription&ref='.$partnership->ref; - if (price2num(GETPOST('amount', 'alpha'))) { - $urlback .= '&amount='.price2num(GETPOST('amount', 'alpha')); - } - if (GETPOST('email')) { - $urlback .= '&email='.urlencode(GETPOST('email')); - } - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN)) { - if (!empty($conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE)) { - $urlback .= '&securekey='.urlencode(dol_hash($conf->global->PAYMENT_SECURITY_TOKEN.'membersubscription'.$partnership->ref, 2)); - } else { - $urlback .= '&securekey='.urlencode($conf->global->PAYMENT_SECURITY_TOKEN); - } - } - } else { - dol_print_error('', "Autosubscribe form is setup to ask an online payment for a not managed online payment"); - exit; - } - } - - if (!empty($entity)) { - $urlback .= '&entity='.$entity; - } - dol_syslog("partnership ".$partnership->ref." was created, we redirect to ".$urlback); - } else { - $error++; - $errmsg .= join('
', $partnership->errors); } } diff --git a/htdocs/public/payment/newpayment.php b/htdocs/public/payment/newpayment.php index b61a2e22a06..426d02e2eb9 100644 --- a/htdocs/public/payment/newpayment.php +++ b/htdocs/public/payment/newpayment.php @@ -1353,7 +1353,7 @@ if ($source == 'contractline') { // Object $text = ''.$langs->trans("PaymentRenewContractId", $contract->ref, $contractline->ref).''; - if ($contractline->fk_product) { + if ($contractline->fk_product > 0) { $contractline->fetch_product(); $text .= '
'.$contractline->product->ref.($contractline->product->label ? ' - '.$contractline->product->label : ''); } @@ -1364,8 +1364,8 @@ if ($source == 'contractline') { // $text.='
'.$langs->trans("DateEndPlanned").': '; // $text.=dol_print_date($contractline->date_fin_validite); //} - if ($contractline->date_fin_validite) { - $text .= '
'.$langs->trans("ExpiredSince").': '.dol_print_date($contractline->date_fin_validite); + if ($contractline->date_end) { + $text .= '
'.$langs->trans("ExpiredSince").': '.dol_print_date($contractline->date_end); } if (GETPOST('desc', 'alpha')) { $text = ''.$langs->trans(GETPOST('desc', 'alpha')).''; @@ -1500,7 +1500,7 @@ if ($source == 'member' || $source == 'membersubscription') { $amount = $adht->amount; } - $amount = price2num($amount, 'MT'); + $amount = max(0, price2num($amount, 'MT')); } if (GETPOST('fulltag', 'alpha')) { @@ -1596,7 +1596,7 @@ if ($source == 'member' || $source == 'membersubscription') { print '\n"; - } elseif ($action == dopayment) { + } elseif ($action == 'dopayment') { print ''."\n"; diff --git a/htdocs/public/payment/paymentok.php b/htdocs/public/payment/paymentok.php index c0b88736ce3..209e931a75b 100644 --- a/htdocs/public/payment/paymentok.php +++ b/htdocs/public/payment/paymentok.php @@ -369,6 +369,7 @@ if ($ispaymentok) { } if (empty($user->rights->facture)) { $user->rights->facture = new stdClass(); + $user->rights->facture->invoice_advance = new stdClass(); } if (empty($user->rights->adherent)) { $user->rights->adherent = new stdClass(); @@ -376,6 +377,7 @@ if ($ispaymentok) { } $user->rights->societe->creer = 1; $user->rights->facture->creer = 1; + $user->rights->facture->invoice_advance->validate = 1; $user->rights->adherent->cotisation->creer = 1; if (array_key_exists('MEM', $tmptag) && $tmptag['MEM'] > 0) { @@ -504,9 +506,13 @@ if ($ispaymentok) { $datesubend = dol_time_plus_duree($datesubend, -1, 'd'); } + // Set output language + $outputlangs = new Translate('', $conf); + $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); $paymentdate = $now; $amount = $FinalPaymentAmt; - $label = 'Online subscription '.dol_print_date($now, 'standard').' using '.$paymentmethod.' from '.$ipaddress.' - Transaction ID = '.$TRANSACTIONID; + $formatteddate = dol_print_date($paymentdate, 'dayhour', 'auto', $outputlangs); + $label = $langs->trans("OnlineSubscriptionPaymentLine", $formatteddate, $paymentmethod, $ipaddress, $TRANSACTIONID); // Payment informations $accountid = 0; @@ -533,11 +539,11 @@ if ($ispaymentok) { $emetteur_banque = ''; // Define default choice for complementary actions $option = ''; - if (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankviainvoice' && !empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { + if (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankviainvoice' && isModEnabled("banque") && isModEnabled("societe") && isModEnabled('facture')) { $option = 'bankviainvoice'; - } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankdirect' && !empty($conf->banque->enabled)) { + } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'bankdirect' && isModEnabled("banque")) { $option = 'bankdirect'; - } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'invoiceonly' && !empty($conf->banque->enabled) && !empty($conf->societe->enabled) && isModEnabled('facture')) { + } elseif (!empty($conf->global->ADHERENT_BANK_USE) && $conf->global->ADHERENT_BANK_USE == 'invoiceonly' && isModEnabled("banque") && isModEnabled("societe") && isModEnabled('facture')) { $option = 'invoiceonly'; } if (empty($option)) { @@ -693,9 +699,6 @@ if ($ispaymentok) { // Send subscription email include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; $formmail = new FormMail($db); - // Set output language - $outputlangs = new Translate('', $conf); - $outputlangs->setDefaultLang(empty($object->thirdparty->default_lang) ? $mysoc->default_lang : $object->thirdparty->default_lang); // Load traductions files required by page $outputlangs->loadLangs(array("main", "members")); // Get email content from template @@ -849,7 +852,7 @@ if ($ispaymentok) { } } - if (!$error && !empty($conf->banque->enabled)) { + if (!$error && isModEnabled("banque")) { $bankaccountid = 0; if ($paymentmethod == 'paybox') { $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS; @@ -966,7 +969,7 @@ if ($ispaymentok) { } } - if (!$error && !empty($conf->banque->enabled)) { + if (!$error && isModEnabled("banque")) { $bankaccountid = 0; if ($paymentmethod == 'paybox') $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS; elseif ($paymentmethod == 'paypal') $bankaccountid = $conf->global->PAYPAL_BANK_ACCOUNT_FOR_PAYMENTS; @@ -1086,7 +1089,7 @@ if ($ispaymentok) { } } - if (!$error && !empty($conf->banque->enabled)) { + if (!$error && isModEnabled("banque")) { $bankaccountid = 0; if ($paymentmethod == 'paybox') { $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS; @@ -1202,7 +1205,7 @@ if ($ispaymentok) { } } - if (!$error && !empty($conf->banque->enabled)) { + if (!$error && isModEnabled("banque")) { $bankaccountid = 0; if ($paymentmethod == 'paybox') { $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS; @@ -1411,7 +1414,7 @@ if ($ispaymentok) { } } - if (!$error && !empty($conf->banque->enabled)) { + if (!$error && isModEnabled("banque")) { $bankaccountid = 0; if ($paymentmethod == 'paybox') { $bankaccountid = $conf->global->PAYBOX_BANK_ACCOUNT_FOR_PAYMENTS; diff --git a/htdocs/public/project/suggestbooth.php b/htdocs/public/project/suggestbooth.php index cb1b1089b0c..52193e4fcd4 100644 --- a/htdocs/public/project/suggestbooth.php +++ b/htdocs/public/project/suggestbooth.php @@ -101,7 +101,7 @@ $extrafields = new ExtraFields($db); $user->loadDefaultValues(); $cactioncomm = new CActionComm($db); -$arrayofeventtype = $cactioncomm->liste_array('', 'id', '', 0, "module='booth@eventorganization'"); +$arrayofconfboothtype = $cactioncomm->liste_array('', 'id', '', 0, "module='booth@eventorganization'"); // Security check if (empty($conf->eventorganization->enabled)) { @@ -612,8 +612,8 @@ if (empty($conf->global->SOCIETE_DISABLE_STATE)) { print ''; } // Type of event -print ''."\n"; -print ''; +print ''."\n"; +print ''; // Label print ''."\n"; print ''."\n"; diff --git a/htdocs/public/project/suggestconference.php b/htdocs/public/project/suggestconference.php index 22589c941d2..05cc8e61a82 100644 --- a/htdocs/public/project/suggestconference.php +++ b/htdocs/public/project/suggestconference.php @@ -102,7 +102,7 @@ $extrafields = new ExtraFields($db); $user->loadDefaultValues(); $cactioncomm = new CActionComm($db); -$arrayofeventtype = $cactioncomm->liste_array('', 'id', '', 0, "module='conference@eventorganization'"); +$arrayofconfboothtype = $cactioncomm->liste_array('', 'id', '', 0, "module='conference@eventorganization'"); // Security check if (empty($conf->eventorganization->enabled)) { @@ -463,8 +463,7 @@ print '
'; print '
'; print '
'; - -dol_htmloutput_errors($errmsg); +dol_htmloutput_errors($errmsg, $errors); // Print form print '
'."\n"; @@ -547,8 +546,8 @@ if (empty($conf->global->SOCIETE_DISABLE_STATE)) { print ''; } // Type of event -print '
'."\n"; -print ''; +print ''."\n"; +print ''; // Label print ''."\n"; print ''."\n"; diff --git a/htdocs/public/recruitment/index.php b/htdocs/public/recruitment/index.php index ce30306eb2f..632a3f57da2 100644 --- a/htdocs/public/recruitment/index.php +++ b/htdocs/public/recruitment/index.php @@ -272,9 +272,10 @@ if (is_array($results)) { if ($action != 'dosubmit') { - if ($found && !$error) { // We are in a management option and no error + if ($found && !$error) { + // We are in a management option and no error } else { - dol_print_error_email('ERRORNEWONLINESIGN'); + dol_print_error_email('ERRORSUBMITAPPLICATION'); } } else { // Print diff --git a/htdocs/public/recruitment/view.php b/htdocs/public/recruitment/view.php index 4516b9c0d2f..b92dcbf9824 100644 --- a/htdocs/public/recruitment/view.php +++ b/htdocs/public/recruitment/view.php @@ -323,9 +323,10 @@ print "\n"; if ($action != 'dosubmit') { - if ($found && !$error) { // We are in a management option and no error + if ($found && !$error) { + // We are in a management option and no error } else { - dol_print_error_email('ERRORNEWONLINESIGN'); + dol_print_error_email('ERRORSUBMITAPPLICATION'); } } else { // Print diff --git a/htdocs/public/test/test_arrays.php b/htdocs/public/test/test_arrays.php index 01910f71aaf..609ced5f684 100644 --- a/htdocs/public/test/test_arrays.php +++ b/htdocs/public/test/test_arrays.php @@ -44,6 +44,10 @@ $usedolheader = 1; // 1 = Test inside a dolibarr page, 0 = Use hard coded header if (empty($usedolheader)) { header("Content-type: text/html; charset=UTF8"); + + // Security options + header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) + header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) ?> diff --git a/htdocs/public/test/test_badges.php b/htdocs/public/test/test_badges.php index 64ccf82345b..d3ed6476f95 100644 --- a/htdocs/public/test/test_badges.php +++ b/htdocs/public/test/test_badges.php @@ -12,6 +12,16 @@ if ($dolibarr_main_prod) { accessforbidden('Access forbidden when $dolibarr_main_prod is set to 1'); } +/* + * View + */ + +header("Content-type: text/html; charset=UTF8"); + +// Security options +header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) +header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) + ?> diff --git a/htdocs/public/test/buttons.php b/htdocs/public/test/test_buttons.php similarity index 100% rename from htdocs/public/test/buttons.php rename to htdocs/public/test/test_buttons.php diff --git a/htdocs/public/test/test_csrf.php b/htdocs/public/test/test_csrf.php index 3127a765985..43372d22f15 100644 --- a/htdocs/public/test/test_csrf.php +++ b/htdocs/public/test/test_csrf.php @@ -34,6 +34,11 @@ if ($dolibarr_main_prod) { * View */ +header("Content-type: text/html; charset=UTF8"); + +// Security options +header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) +header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) ?> This is a form to test if a CSRF exists into a Dolibarr page.
diff --git a/htdocs/public/test/test_exec.php b/htdocs/public/test/test_exec.php index 94a1d96462b..ef6f41df132 100644 --- a/htdocs/public/test/test_exec.php +++ b/htdocs/public/test/test_exec.php @@ -41,17 +41,6 @@ if (!defined("NOSESSION")) { define("NOSESSION", '1'); } -print "*** SHOW SESSION STATUS
\n"; -print "Legend:
\n"; -print 'PHP_SESSION_DISABLED='.PHP_SESSION_DISABLED."
\n"; -print 'PHP_SESSION_NONE='.PHP_SESSION_NONE."
\n"; -print 'PHP_SESSION_ACTIVE='.PHP_SESSION_ACTIVE."
\n"; -print '
'; - -print 'session_status='.session_status().' (before main.inc.php)
'; - -print '

'."\n"; - require '../../main.inc.php'; // Security @@ -64,6 +53,12 @@ if ($dolibarr_main_prod) { * View */ +header("Content-type: text/html; charset=UTF8"); + +// Security options +header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) +header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) + print "*** TEST READ OF /tmp/test.txt FILE
\n"; $out=''; @@ -85,7 +80,7 @@ print '

'."\n"; print "*** TEST READ OF /test.txt FILE AND LS /dev/std*
\n"; exec('cat /test.txt; ls /dev/std*; sleep 1;', $out, $ret); -print $ret."
\n"; +print "ret=".$ret."
\n"; print_r($out); print '
'; @@ -97,5 +92,5 @@ print "*** TRY TO RUN CLAMDSCAN
\n"; $ret = 0; $out = null; exec('/usr/bin/clamdscan --fdpass filethatdoesnotexists.php', $out, $ret); -print $ret."
\n"; +print "ret=".$ret."
\n"; print_r($out); diff --git a/htdocs/public/test/test_sessionlock.php b/htdocs/public/test/test_sessionlock.php index 8464ba2eb4f..1aea6204b3e 100644 --- a/htdocs/public/test/test_sessionlock.php +++ b/htdocs/public/test/test_sessionlock.php @@ -41,6 +41,17 @@ if (!defined("NOSESSION")) { define("NOSESSION", '1'); } + +// Special +// We add header and output some content before the include of main.inc.php !! +// Because we need to So we can make +header("Content-type: text/html; charset=UTF8"); + +// Security options +header("X-Content-Type-Options: nosniff"); // With the nosniff option, if the server says the content is text/html, the browser will render it as text/html (note that most browsers now force this option to on) +header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) + + print "Legend:
\n"; print 'PHP_SESSION_DISABLED='.PHP_SESSION_DISABLED."
\n"; print 'PHP_SESSION_NONE='.PHP_SESSION_NONE."
\n"; diff --git a/htdocs/public/ticket/create_ticket.php b/htdocs/public/ticket/create_ticket.php index f7e6e023a7f..1c302c33b2e 100644 --- a/htdocs/public/ticket/create_ticket.php +++ b/htdocs/public/ticket/create_ticket.php @@ -209,7 +209,7 @@ if (empty($reshook) && $action == 'create_ticket' && GETPOST('save', 'alpha')) { } // Check Captcha code if is enabled - if (!empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA)) { + if (!empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA) || !empty($conf->global->MAIN_SECURITY_ENABLECAPTCHA_TICKET)) { $sessionkey = 'dol_antispam_value'; $ok = (array_key_exists($sessionkey, $_SESSION) === true && (strtolower($_SESSION[$sessionkey]) === strtolower(GETPOST('code', 'restricthtml')))); if (!$ok) { diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php index ed4586a7376..e548beca63c 100644 --- a/htdocs/reception/card.php +++ b/htdocs/reception/card.php @@ -44,13 +44,13 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/doleditor.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/entrepot.class.php'; require_once DOL_DOCUMENT_ROOT.'/product/stock/class/productlot.class.php'; -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } -if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) { +if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) { require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.dispatch.class.php'; } @@ -129,7 +129,7 @@ if ($id > 0 || !empty($ref)) { } // Linked documents - if ($origin == 'order_supplier' && $object->$typeobject->id && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled))) { + if ($origin == 'order_supplier' && $object->$typeobject->id && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order"))) { $origin_id = $object->$typeobject->id; $objectsrc = new CommandeFournisseur($db); $objectsrc->fetch($object->$typeobject->id); @@ -142,7 +142,7 @@ if ($user->socid) { $socid = $user->socid; } -if (!empty($conf->reception->enabled) || $origin == 'reception' || empty($origin)) { +if (isModEnabled("reception") || $origin == 'reception' || empty($origin)) { $result = restrictedArea($user, 'reception', $id); } else { // We do not use the reception module, so we test permission on the supplier orders @@ -153,7 +153,7 @@ if (!empty($conf->reception->enabled) || $origin == 'reception' || empty($origin } } -if (!empty($conf->reception->enabled)) { +if (isModEnabled("reception")) { $permissiontoread = $user->rights->reception->lire; $permissiontoadd = $user->rights->reception->creer; $permissiondellink = $user->rights->reception->creer; // Used by the include of actions_dellink.inc.php @@ -198,10 +198,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -436,10 +436,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -531,10 +531,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $reception->thirdparty->default_lang; } if (!empty($newlang)) { @@ -666,10 +666,10 @@ if (empty($reshook)) { // Define output language $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -770,10 +770,10 @@ if ($action == 'create') { // Ref print ''; @@ -1362,11 +1362,11 @@ if ($action == 'create') { $objectsrc = new Commande($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'CommandeFournisseur' && $object->$typeobject->id && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) { + if ($typeobject == 'CommandeFournisseur' && $object->$typeobject->id && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order"))) { $objectsrc = new CommandeFournisseur($db); $objectsrc->fetch($object->$typeobject->id); } @@ -1435,7 +1435,7 @@ if ($action == 'create') { print "\n"; print ''; } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { print ''; print '\n"; print ''; } - if ($typeobject == 'CommandeFournisseur' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'CommandeFournisseur' && $object->$typeobject->id && isModEnabled("propal")) { print ''; print '
'.dolGetFirstLastname($langs->trans("Firstname"), $langs->trans("Lastname")).''.$langs->trans("Company").''.dolGetFirstLastname($langs->trans("Firstname"), $langs->trans("Lastname")).''.$langs->trans("Company").'
'.$objp->zip.''.$objp->town.''; + print ''; print $form->showphoto('memberphoto', $objp, 64); print '
'.$langs->trans("Creditor"); print ''; print img_picto('', 'company', 'class="pictofixedwidth"'); @@ -311,43 +301,48 @@ if ($source == 'proposal') { print '
'.$langs->trans("ThirdParty"); print ''; print img_picto('', 'company', 'class="pictofixedwidth"'); - print ''.$proposal->thirdparty->name.''; + print ''.$object->thirdparty->name.''; print '
'.$langs->trans("Amount"); print ''; - print ''.price($proposal->total_ttc, 0, $langs, 1, -1, -1, $conf->currency).''; + print ''.price($object->total_ttc, 0, $langs, 1, -1, -1, $conf->currency).''; print '
'.$langs->trans("Designation"); + $text = ''.$langs->trans("SignatureProposalRef", $object->ref).''; + print '
'.$langs->trans("Designation"); print ''.$text; - if ($proposal->status == $proposal::STATUS_VALIDATED) { - $directdownloadlink = $proposal->getLastMainDocLink('proposal'); + + $last_main_doc_file = $object->last_main_doc; + + if ($object->status == $object::STATUS_VALIDATED) { + if (empty($last_main_doc_file) || !dol_is_file(DOL_DATA_ROOT.'/'.$object->last_main_doc)) { + // It seems document has never been generated, or was generated and then deleted. + // So we try to regenerate it with its default template. + $defaulttemplate = ''; // We force the use an empty string instead of $object->model_pdf to be sure to use a "main" default template and not the last one used. + $object->generateDocument($defaulttemplate, $langs); + } + + $directdownloadlink = $object->getLastMainDocLink('proposal'); if ($directdownloadlink) { print '
'; - print img_mime($proposal->last_main_doc, ''); + print img_mime($object->last_main_doc, ''); print $langs->trans("DownloadDocument").''; } } else { - $last_main_doc_file = $proposal->last_main_doc; - - if ($proposal->status == $proposal::STATUS_NOTSIGNED) { - $directdownloadlink = $proposal->getLastMainDocLink('proposal'); + if ($object->status == $object::STATUS_NOTSIGNED) { + $directdownloadlink = $object->getLastMainDocLink('proposal'); if ($directdownloadlink) { print '
'; - print img_mime($proposal->last_main_doc, ''); + print img_mime($last_main_doc_file, ''); print $langs->trans("DownloadDocument").''; } - } elseif ($proposal->status == $proposal::STATUS_SIGNED || $proposal->status == $proposal::STATUS_BILLED) { + } elseif ($object->status == $object::STATUS_SIGNED || $object->status == $object::STATUS_BILLED) { if (preg_match('/_signed-(\d+)/', $last_main_doc_file)) { // If the last main doc has been signed $last_main_doc_file_not_signed = preg_replace('/_signed-(\d+)/', '', $last_main_doc_file); @@ -355,10 +350,10 @@ if ($source == 'proposal') { $datefilenotsigned = dol_filemtime($last_main_doc_file_not_signed); if (empty($datefilenotsigned) || $datefilesigned > $datefilenotsigned) { - $directdownloadlink = $proposal->getLastMainDocLink('proposal'); + $directdownloadlink = $object->getLastMainDocLink('proposal'); if ($directdownloadlink) { print '
'; - print img_mime($proposal->last_main_doc, ''); + print img_mime($object->last_main_doc, ''); print $langs->trans("DownloadDocument").''; } } @@ -367,10 +362,8 @@ if ($source == 'proposal') { } print ''; - print ''; + print ''; print '
'; print $form->selectarray("typeid", $adht->liste_array(1), $member->typeid, 0, 0, 0, 'onchange="window.location.replace(\''.$urlwithroot.'/public/payment/newpayment.php?source='.urlencode($source).'&ref='.urlencode($ref).'&amount='.urlencode($amount).'&typeid=\' + this.value + \'&securekey='.urlencode($SECUREKEY).'\');"', 0, 0, 0, '', '', 1); print "
'.$langs->trans("NewMemberType"); print ''.dol_escape_htmltag($member->type); print ''; @@ -1611,57 +1611,23 @@ if ($source == 'member' || $source == 'membersubscription') { // Amount print '
'.$langs->trans("Amount"); - if (empty($amount)) { - if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - print ' ('.$langs->trans("ToComplete"); - } - if (!empty($conf->global->MEMBER_EXT_URL_SUBSCRIPTION_INFO)) { - print ' - '.$langs->trans("SeeHere").''; - } - if (empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - print ')'; - } + // This place no longer allows amount edition + if (!empty($conf->global->MEMBER_EXT_URL_SUBSCRIPTION_INFO)) { + print ' - '.$langs->trans("SeeHere").''; } print ''; - $valtoshow = ''; - if (empty($amount) || !is_numeric($amount)) { - $valtoshow = price2num(GETPOST("newamount", 'alpha'), 'MT'); - // force default subscription amount to value defined into constant... - if (empty($valtoshow)) { - if (!empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { - if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - $valtoshow = $conf->global->MEMBER_NEWFORM_AMOUNT; - } - } else { - if (!empty($conf->global->MEMBER_NEWFORM_AMOUNT)) { - $amount = $conf->global->MEMBER_NEWFORM_AMOUNT; - } - } - } + if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $amount) { + $amount = max(0, $conf->global->MEMBER_MIN_AMOUNT, $amount); } - if (empty($amount) || !is_numeric($amount)) { - //$valtoshow=price2num(GETPOST("newamount",'alpha'),'MT'); - if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) { - $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); - } - print ''; - if (empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT)) { - print ''; - print ''; - } else { - print ''; - } - print ' '.$langs->trans("Currency".$currency).''; - } else { - $valtoshow = $amount; - if (!empty($conf->global->MEMBER_MIN_AMOUNT) && $valtoshow) { - $valtoshow = max($conf->global->MEMBER_MIN_AMOUNT, $valtoshow); - $amount = $valtoshow; - } - print ''.price($valtoshow, 1, $langs, 1, -1, -1, $currency).''; // Price with currency - print ''; - print ''; + print ''.price($amount, 1, $langs, 1, -1, -1, $currency).''; // Price with currency + $caneditamount = !empty($conf->global->MEMBER_NEWFORM_EDITAMOUNT) || $adht->caneditamount; + $minimumamount = empty($conf->global->MEMBER_MIN_AMOUNT)? $adht->amount : max($conf->global->MEMBER_MIN_AMOUNT, $adht->amount > $amount); + if (!$caneditamount && $minimumamount > $amount) { + print ' '. $langs->trans("AmountIsLowerToMinimumNotice", price($adht->amount, 1, $langs, 1, -1, -1, $currency)); } + + print ''; + print ''; print ''; print '
'.$langs->trans("EventType").'*'.FORM::selectarray('eventtype', $arrayofeventtype, $eventtype).'
'.$langs->trans("Format").'*'.Form::selectarray('eventtype', $arrayofconfboothtype, $eventtype, 1).'
'.$langs->trans("LabelOfBooth").'*
'.$langs->trans("EventType").'*'.FORM::selectarray('eventtype', $arrayofeventtype, $eventtype).'
'.$langs->trans("Format").'*'.Form::selectarray('eventtype', $arrayofconfboothtype, $eventtype, 1).'
'.$langs->trans("LabelOfconference").'*
'; - if ($origin == 'supplierorder' && ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled))) { + if ($origin == 'supplierorder' && ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order"))) { print $langs->trans("RefOrder").''.img_object($langs->trans("ShowOrder"), 'order').' '.$objectsrc->ref; } - if ($origin == 'propal' && !empty($conf->propal->enabled)) { + if ($origin == 'propal' && isModEnabled("propal")) { print $langs->trans("RefProposal").''.img_object($langs->trans("ShowProposal"), 'propal').' '.$objectsrc->ref; } print '
'; print $langs->trans("RefProposal").''; @@ -1443,7 +1443,7 @@ if ($action == 'create') { print "
'; print $langs->trans("SupplierOrder").''; @@ -2101,7 +2101,7 @@ if ($action == 'create') { } // Create bill - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_invoice->enabled)) && ($object->statut == Reception::STATUS_VALIDATED || $object->statut == Reception::STATUS_CLOSED)) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_invoice")) && ($object->statut == Reception::STATUS_VALIDATED || $object->statut == Reception::STATUS_CLOSED)) { if ($user->rights->fournisseur->facture->creer || $user->rights->supplier_invoice->creer) { // TODO show button only if (! empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) // If we do that, we must also make this option official. @@ -2115,7 +2115,7 @@ if ($action == 'create') { if ($user->rights->reception->creer && $object->statut > 0 && !$object->billed) { $label = "Close"; $paramaction = 'classifyclosed'; // = Transferred/Received // Label here should be "Close" or "ClassifyBilled" if we decided to make bill on receptions instead of orders - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) { // Quand l'option est on, il faut avoir le bouton en plus et non en remplacement du Close ? + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && !empty($conf->global->WORKFLOW_BILL_ON_RECEPTION)) { // Quand l'option est on, il faut avoir le bouton en plus et non en remplacement du Close ? $label = "ClassifyBilled"; $paramaction = 'classifybilled'; } diff --git a/htdocs/reception/class/api_receptions.class.php b/htdocs/reception/class/api_receptions.class.php new file mode 100644 index 00000000000..473650161e2 --- /dev/null +++ b/htdocs/reception/class/api_receptions.class.php @@ -0,0 +1,721 @@ + + * Copyright (C) 2022 Laurent Destailleur + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 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 . + */ + + use Luracast\Restler\RestException; + + require_once DOL_DOCUMENT_ROOT.'/reception/class/reception.class.php'; + +/** + * API class for receptions + * + * @access protected + * @class DolibarrApiAccess {@requires user,external} + */ +class Receptions extends DolibarrApi +{ + + /** + * @var array $FIELDS Mandatory fields, checked when create and update object + */ + public static $FIELDS = array( + 'socid', + 'origin_id', + 'origin_type', + ); + + /** + * @var Reception $reception {@type Reception} + */ + public $reception; + + /** + * Constructor + */ + public function __construct() + { + global $db, $conf; + $this->db = $db; + $this->reception = new Reception($this->db); + } + + /** + * Get properties of a reception object + * + * Return an array with reception informations + * + * @param int $id ID of reception + * @return array|mixed data without useless information + * + * @throws RestException + */ + public function get($id) + { + if (!DolibarrApiAccess::$user->rights->reception->lire) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $this->reception->fetchObjectLinked(); + return $this->_cleanObjectDatas($this->reception); + } + + + + /** + * List receptions + * + * Get a list of receptions + * + * @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 receptions 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 reception objects + * + * @throws RestException + */ + public function index($sortfield = "t.rowid", $sortorder = 'ASC', $limit = 100, $page = 0, $thirdparty_ids = '', $sqlfilters = '') + { + global $db, $conf; + + if (!DolibarrApiAccess::$user->rights->reception->lire) { + throw new RestException(401); + } + + $obj_ret = array(); + + // case of external user, $thirdparty_ids param is ignored and replaced by user's socid + $socids = DolibarrApiAccess::$user->socid ? DolibarrApiAccess::$user->socid : $thirdparty_ids; + + // If the internal user must only see his customers, force searching by him + $search_sale = 0; + 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."reception 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('reception').')'; + 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 (".$this->db->sanitize($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 = ".((int) $search_sale); + } + // Add sql filters + if ($sqlfilters) { + $errormessage = ''; + if (!DolibarrApi::_checkFilters($sqlfilters, $errormessage)) { + throw new RestException(503, 'Error when validating parameter sqlfilters -> '.$errormessage); + } + $regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)'; + $sql .= " AND (".preg_replace_callback('/'.$regexstring.'/', 'DolibarrApi::_forge_criteria_callback', $sqlfilters).")"; + } + + $sql .= $this->db->order($sortfield, $sortorder); + if ($limit) { + if ($page < 0) { + $page = 0; + } + $offset = $limit * $page; + + $sql .= $this->db->plimit($limit + 1, $offset); + } + + dol_syslog("API Rest request"); + $result = $this->db->query($sql); + + if ($result) { + $num = $this->db->num_rows($result); + $min = min($num, ($limit <= 0 ? $num : $limit)); + $i = 0; + while ($i < $min) { + $obj = $this->db->fetch_object($result); + $reception_static = new Reception($this->db); + if ($reception_static->fetch($obj->rowid)) { + $obj_ret[] = $this->_cleanObjectDatas($reception_static); + } + $i++; + } + } else { + throw new RestException(503, 'Error when retrieve commande list : '.$this->db->lasterror()); + } + if (!count($obj_ret)) { + throw new RestException(404, 'No reception found'); + } + return $obj_ret; + } + + /** + * Create reception object + * + * @param array $request_data Request data + * @return int ID of reception + */ + public function post($request_data = null) + { + if (!DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401, "Insuffisant rights"); + } + // Check mandatory fields + $result = $this->_validate($request_data); + + foreach ($request_data as $field => $value) { + $this->reception->$field = $value; + } + if (isset($request_data["lines"])) { + $lines = array(); + foreach ($request_data["lines"] as $line) { + array_push($lines, (object) $line); + } + $this->reception->lines = $lines; + } + + if ($this->reception->create(DolibarrApiAccess::$user) < 0) { + throw new RestException(500, "Error creating reception", array_merge(array($this->reception->error), $this->reception->errors)); + } + + return $this->reception->id; + } + + // /** + // * Get lines of an reception + // * + // * @param int $id Id of reception + // * + // * @url GET {id}/lines + // * + // * @return int + // */ + /* + public function getLines($id) + { + if(! DolibarrApiAccess::$user->rights->reception->lire) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Reception not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('reception',$this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + $this->reception->getLinesArray(); + $result = array(); + foreach ($this->reception->lines as $line) { + array_push($result,$this->_cleanObjectDatas($line)); + } + return $result; + } + */ + + // /** + // * Add a line to given reception + // * + // * @param int $id Id of reception to update + // * @param array $request_data ShipmentLine data + // * + // * @url POST {id}/lines + // * + // * @return int + // */ + /* + public function postLine($id, $request_data = null) + { + if(! DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if ( ! $result ) { + throw new RestException(404, 'Reception not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('reception',$this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $request_data = (object) $request_data; + + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); + + $updateRes = $this->reception->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, + $request_data->origin, + $request_data->origin_id, + $request_data->multicurrency_subprice + ); + + if ($updateRes > 0) { + return $updateRes; + + } + return false; + }*/ + + // /** + // * Update a line to given reception + // * + // * @param int $id Id of reception to update + // * @param int $lineid Id of line to update + // * @param array $request_data ShipmentLine data + // * + // * @url PUT {id}/lines/{lineid} + // * + // * @return object + // */ + /* + public function putLine($id, $lineid, $request_data = null) + { + if (! DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if ( ! $result ) { + throw new RestException(404, 'Reception not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('reception',$this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $request_data = (object) $request_data; + + $request_data->desc = sanitizeVal($request_data->desc, 'restricthtml'); + $request_data->label = sanitizeVal($request_data->label); + + $updateRes = $this->reception->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, + $request_data->multicurrency_subprice + ); + + if ($updateRes > 0) { + $result = $this->get($id); + unset($result->line); + return $this->_cleanObjectDatas($result); + } + return false; + }*/ + + /** + * Delete a line to given reception + * + * + * @param int $id Id of reception to update + * @param int $lineid Id of line to delete + * + * @url DELETE {id}/lines/{lineid} + * + * @return int + * + * @throws RestException 401 + * @throws RestException 404 + */ + public function deleteLine($id, $lineid) + { + if (!DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + // TODO Check the lineid $lineid is a line of ojbect + + $updateRes = $this->reception->deleteline(DolibarrApiAccess::$user, $lineid); + if ($updateRes > 0) { + return $this->get($id); + } else { + throw new RestException(405, $this->reception->error); + } + } + + /** + * Update reception general fields (won't touch lines of reception) + * + * @param int $id Id of reception to update + * @param array $request_data Datas + * + * @return int + */ + public function put($id, $request_data = null) + { + if (!DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + foreach ($request_data as $field => $value) { + if ($field == 'id') { + continue; + } + $this->reception->$field = $value; + } + + if ($this->reception->update(DolibarrApiAccess::$user) > 0) { + return $this->get($id); + } else { + throw new RestException(500, $this->reception->error); + } + } + + /** + * Delete reception + * + * @param int $id Reception ID + * + * @return array + */ + public function delete($id) + { + if (!DolibarrApiAccess::$user->rights->reception->supprimer) { + throw new RestException(401); + } + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + if (!$this->reception->delete(DolibarrApiAccess::$user)) { + throw new RestException(500, 'Error when deleting reception : '.$this->reception->error); + } + + return array( + 'success' => array( + 'code' => 200, + 'message' => 'Reception deleted' + ) + ); + } + + /** + * Validate a reception + * + * This may record stock movements if module stock is enabled and option to + * decrease stock on reception is on. + * + * @param int $id Reception ID + * @param int $notrigger 1=Does not execute triggers, 0= execute triggers + * + * @url POST {id}/validate + * + * @return array + * \todo 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 + * } + */ + public function validate($id, $notrigger = 0) + { + if (!DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->reception->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $result = $this->reception->valid(DolibarrApiAccess::$user, $notrigger); + if ($result == 0) { + throw new RestException(304, 'Error nothing done. May be object is already validated'); + } + if ($result < 0) { + throw new RestException(500, 'Error when validating Reception: '.$this->reception->error); + } + + // Reload reception + $result = $this->reception->fetch($id); + + $this->reception->fetchObjectLinked(); + return $this->_cleanObjectDatas($this->reception); + } + + + // /** + // * Classify the reception as invoiced + // * + // * @param int $id Id of the reception + // * + // * @url POST {id}/setinvoiced + // * + // * @return int + // * + // * @throws RestException 400 + // * @throws RestException 401 + // * @throws RestException 404 + // * @throws RestException 405 + // */ + /* + public function setinvoiced($id) + { + + if(! DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + if(empty($id)) { + throw new RestException(400, 'Reception ID is mandatory'); + } + $result = $this->reception->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Reception not found'); + } + + $result = $this->reception->classifyBilled(DolibarrApiAccess::$user); + if( $result < 0) { + throw new RestException(400, $this->reception->error); + } + return $result; + } + */ + + + // /** + // * Create a reception using an existing order. + // * + // * @param int $orderid Id of the order + // * + // * @url POST /createfromorder/{orderid} + // * + // * @return int + // * @throws RestException 400 + // * @throws RestException 401 + // * @throws RestException 404 + // * @throws RestException 405 + // */ + /* + public function createShipmentFromOrder($orderid) + { + + require_once DOL_DOCUMENT_ROOT . '/commande/class/commande.class.php'; + + if(! DolibarrApiAccess::$user->rights->reception->lire) { + throw new RestException(401); + } + if(! DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + if(empty($proposalid)) { + throw new RestException(400, 'Order ID is mandatory'); + } + + $order = new Commande($this->db); + $result = $order->fetch($proposalid); + if( ! $result ) { + throw new RestException(404, 'Order not found'); + } + + $result = $this->reception->createFromOrder($order, DolibarrApiAccess::$user); + if( $result < 0) { + throw new RestException(405, $this->reception->error); + } + $this->reception->fetchObjectLinked(); + return $this->_cleanObjectDatas($this->reception); + } + */ + + /** + * Close a reception (Classify it as "Delivered") + * + * @param int $id Reception ID + * @param int $notrigger Disabled triggers + * + * @url POST {id}/close + * + * @return int + */ + public function close($id, $notrigger = 0) + { + if (!DolibarrApiAccess::$user->rights->reception->creer) { + throw new RestException(401); + } + + $result = $this->reception->fetch($id); + if (!$result) { + throw new RestException(404, 'Reception not found'); + } + + if (!DolibarrApi::_checkAccessToResource('reception', $this->commande->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $result = $this->reception->setClosed(); + if ($result == 0) { + throw new RestException(304, 'Error nothing done. May be object is already closed'); + } + if ($result < 0) { + throw new RestException(500, 'Error when closing Order: '.$this->commande->error); + } + + // Reload reception + $result = $this->reception->fetch($id); + + $this->reception->fetchObjectLinked(); + + return $this->_cleanObjectDatas($this->reception); + } + + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore + /** + * Clean sensible object datas + * + * @param Object $object Object to clean + * @return Object Object with cleaned properties + */ + protected function _cleanObjectDatas($object) + { + // phpcs:enable + $object = parent::_cleanObjectDatas($object); + + unset($object->thirdparty); // id already returned + + unset($object->note); + unset($object->address); + unset($object->barcode_type); + unset($object->barcode_type_code); + unset($object->barcode_type_label); + unset($object->barcode_type_coder); + + if (!empty($object->lines) && is_array($object->lines)) { + foreach ($object->lines as $line) { + unset($line->tva_tx); + unset($line->vat_src_code); + unset($line->total_ht); + unset($line->total_ttc); + unset($line->total_tva); + unset($line->total_localtax1); + unset($line->total_localtax2); + unset($line->remise_percent); + } + } + + return $object; + } + + /** + * Validate fields before create or update object + * + * @param array $data Array with data to verify + * @return array + * @throws RestException + */ + private function _validate($data) + { + $reception = array(); + foreach (Shipments::$FIELDS as $field) { + if (!isset($data[$field])) { + throw new RestException(400, "$field field missing"); + } + $reception[$field] = $data[$field]; + } + return $reception; + } +} diff --git a/htdocs/reception/class/reception.class.php b/htdocs/reception/class/reception.class.php index f7d695abaad..ceb71624292 100644 --- a/htdocs/reception/class/reception.class.php +++ b/htdocs/reception/class/reception.class.php @@ -35,7 +35,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/commonobject.class.php'; require_once DOL_DOCUMENT_ROOT."/core/class/commonobjectline.class.php"; require_once DOL_DOCUMENT_ROOT.'/core/class/commonincoterm.class.php'; -if (!empty($conf->propal->enabled)) { +if (isModEnabled("propal")) { require_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; } if (!empty($conf->commande->enabled)) { @@ -846,6 +846,21 @@ class Reception extends CommonObject } } + // Check batch is set + $product = new Product($this->db); + $product->fetch($fk_product); + if (!empty($conf->productbatch->enabled)) { + $langs->load("errors"); + if (!empty($product->status_batch) && empty($batch)) { + $this->error = $langs->trans('ErrorProductNeedBatchNumber', $product->ref); + return -1; + } elseif (empty($product->status_batch) && !empty($batch)) { + $this->error = $langs->trans('ErrorProductDoesNotNeedBatchNumber', $product->ref); + return -1; + } + } + unset($product); + // extrafields $line->array_options = $supplierorderline->array_options; if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_options) && count($array_options) > 0) { @@ -864,6 +879,7 @@ class Reception extends CommonObject $line->status = 1; $line->cost_price = $cost_price; $line->fk_reception = $this->id; + $this->lines[$num] = $line; return $num; diff --git a/htdocs/reception/contact.php b/htdocs/reception/contact.php index 4e04bdd2926..5b10ac8bcb1 100644 --- a/htdocs/reception/contact.php +++ b/htdocs/reception/contact.php @@ -54,7 +54,7 @@ if ($id > 0 || !empty($ref)) { } // Linked documents - if ($origin == 'order_supplier' && $object->$typeobject->id && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled))) { + if ($origin == 'order_supplier' && $object->$typeobject->id && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order"))) { $objectsrc = new CommandeFournisseur($db); $objectsrc->fetch($object->$typeobject->id); } @@ -192,7 +192,7 @@ if ($id > 0 || !empty($ref)) { print ''; // Linked documents - if ($origin == 'order_supplier' && $object->$typeobject->id && (!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || !empty($conf->supplier_order->enabled))) { + if ($origin == 'order_supplier' && $object->$typeobject->id && (isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD) || isModEnabled("supplier_order"))) { print '\n"; print ''; } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { print '
'; $objectsrc = new CommandeFournisseur($db); $objectsrc->fetch($object->$typeobject->id); @@ -202,7 +202,7 @@ if ($id > 0 || !empty($ref)) { print "
'; $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); diff --git a/htdocs/reception/list.php b/htdocs/reception/list.php index 5cdbb201d87..88c86168678 100644 --- a/htdocs/reception/list.php +++ b/htdocs/reception/list.php @@ -751,7 +751,7 @@ if (!empty($moreforfilter)) { } $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; -$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage); // This also change content of $arrayfields +$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN', '')); // This also change content of $arrayfields $selectedfields .= $form->showCheckAddButtons('checkforselect', 1); @@ -761,6 +761,13 @@ print ''; +// Action column +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} // Ref if (!empty($arrayfields['e.ref']['checked'])) { print ''; } // Action column -print ''; +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; +} print "\n"; print ''; +if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} if (!empty($arrayfields['e.ref']['checked'])) { print_liste_field_titre($arrayfields['e.ref']['label'], $_SERVER["PHP_SELF"], "e.ref", "", $param, '', $sortfield, $sortorder); } @@ -907,7 +919,9 @@ if (!empty($arrayfields['e.fk_statut']['checked'])) { if (!empty($arrayfields['e.billed']['checked'])) { print_liste_field_titre($arrayfields['e.billed']['label'], $_SERVER["PHP_SELF"], "e.billed", "", $param, '', $sortfield, $sortorder, 'center '); } -print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print_liste_field_titre($selectedfields, $_SERVER["PHP_SELF"], "", '', '', '', $sortfield, $sortorder, 'center maxwidthsearch '); +} print "\n"; $i = 0; @@ -926,6 +940,19 @@ while ($i < min($num, $limit)) { print ''; + // Action column + if (!empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + } // Ref if (!empty($arrayfields['e.ref']['checked'])) { print ''; } - print ''; if (!$i) { $totalarray['nbfield']++; } diff --git a/htdocs/reception/note.php b/htdocs/reception/note.php index 46e10002d76..fadf222aa3e 100644 --- a/htdocs/reception/note.php +++ b/htdocs/reception/note.php @@ -55,7 +55,7 @@ if ($id > 0 || !empty($ref)) { $objectsrc = new Commande($db); $objectsrc->fetch($object->$typeobject->id); } - if ($typeobject == 'propal' && $object->$typeobject->id && !empty($conf->propal->enabled)) { + if ($typeobject == 'propal' && $object->$typeobject->id && isModEnabled("propal")) { $objectsrc = new Propal($db); $objectsrc->fetch($object->$typeobject->id); } diff --git a/htdocs/recruitment/admin/public_interface.php b/htdocs/recruitment/admin/public_interface.php index b951f440005..7212a687442 100644 --- a/htdocs/recruitment/admin/public_interface.php +++ b/htdocs/recruitment/admin/public_interface.php @@ -139,12 +139,12 @@ print dol_get_fiche_end(); print ''; -/* + if (!empty($conf->global->RECRUITMENT_ENABLE_PUBLIC_INTERFACE)) { print '
'; //print $langs->trans('FollowingLinksArePublic').'
'; - print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').':
'; - if ($conf->multicompany->enabled) { + print img_picto('', 'globe').' '.$langs->trans('BlankSubscriptionForm').'
'; + if (!empty($conf->multicompany->enabled)) { $entity_qr = '?entity='.$conf->entity; } else { $entity_qr = ''; @@ -155,9 +155,12 @@ if (!empty($conf->global->RECRUITMENT_ENABLE_PUBLIC_INTERFACE)) { $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 - print ''.$urlwithroot.'/public/members/new.php'.$entity_qr.''; + print ''; + print ajax_autoselect('publicurlmember'); } -*/ // End of page llxFooter(); diff --git a/htdocs/recruitment/admin/setup.php b/htdocs/recruitment/admin/setup.php index c2cd40f6b6d..517bbca5c19 100644 --- a/htdocs/recruitment/admin/setup.php +++ b/htdocs/recruitment/admin/setup.php @@ -93,11 +93,11 @@ if ((float) DOL_VERSION >= 6) { } if ($action == 'updateMask') { - $maskconstorder = GETPOST('maskconstorder', 'alpha'); - $maskorder = GETPOST('maskorder', 'alpha'); + $maskconstjob = GETPOST('maskconstjob', 'alpha'); + $maskjob = GETPOST('maskjob', 'alpha'); - if ($maskconstorder) { - $res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity); + if ($maskconstjob) { + $res = dolibarr_set_const($db, $maskconstjob, $maskjob, 'chaine', 0, '', $conf->entity); } if (!($res > 0)) { diff --git a/htdocs/recruitment/admin/setup_candidatures.php b/htdocs/recruitment/admin/setup_candidatures.php index 1ab24288401..adc12a656f4 100644 --- a/htdocs/recruitment/admin/setup_candidatures.php +++ b/htdocs/recruitment/admin/setup_candidatures.php @@ -93,11 +93,11 @@ if ((float) DOL_VERSION >= 6) { } if ($action == 'updateMask') { - $maskconstorder = GETPOST('maskconstorder', 'alpha'); - $maskorder = GETPOST('maskorder', 'alpha'); + $maskconstcand = GETPOST('maskconstcand', 'alpha'); + $maskcand = GETPOST('maskcand', 'alpha'); - if ($maskconstorder) { - $res = dolibarr_set_const($db, $maskconstorder, $maskorder, 'chaine', 0, '', $conf->entity); + if ($maskconstcand) { + $res = dolibarr_set_const($db, $maskconstcand, $maskcand, 'chaine', 0, '', $conf->entity); } if (!($res > 0)) { diff --git a/htdocs/recruitment/class/recruitmentcandidature.class.php b/htdocs/recruitment/class/recruitmentcandidature.class.php index 021ed614a5f..c42d6d10ff1 100644 --- a/htdocs/recruitment/class/recruitmentcandidature.class.php +++ b/htdocs/recruitment/class/recruitmentcandidature.class.php @@ -114,20 +114,21 @@ class RecruitmentCandidature extends CommonObject 'fk_recruitmentjobposition' => array('type'=>'integer:RecruitmentJobPosition:recruitment/class/recruitmentjobposition.class.php', 'label'=>'Job', 'enabled'=>'1', 'position'=>15, 'notnull'=>0, 'visible'=>1, 'index'=>1, 'picto'=>'recruitmentjobposition', 'css'=>'minwidth300 maxwidth500 widthcentpercentminusx', 'csslist'=>'minwidth125 tdoverflowmax200'), 'note_public' => array('type'=>'html', 'label'=>'NotePublic', 'enabled'=>'1', 'position'=>61, 'notnull'=>0, 'visible'=>0,), 'note_private' => array('type'=>'html', 'label'=>'NotePrivate', 'enabled'=>'1', 'position'=>62, 'notnull'=>0, 'visible'=>0,), - 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>1,), - 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2,), 'fk_user_creat' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserAuthor', 'enabled'=>'1', 'position'=>510, 'notnull'=>1, 'visible'=>-2, 'foreignkey'=>'user.rowid',), 'fk_user_modif' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'UserModif', 'enabled'=>'1', 'position'=>511, 'notnull'=>-1, 'visible'=>-2,), - 'lastname' => array('type'=>'varchar(128)', 'label'=>'Lastname', 'enabled'=>'1', 'position'=>20, 'notnull'=>0, 'visible'=>1,), - 'firstname' => array('type'=>'varchar(128)', 'label'=>'Firstname', 'enabled'=>'1', 'position'=>21, 'notnull'=>0, 'visible'=>1,), + 'lastname' => array('type'=>'varchar(128)', 'label'=>'Lastname', 'enabled'=>'1', 'position'=>20, 'notnull'=>0, 'visible'=>1, 'csslist'=>'tdoverflowmax150'), + 'firstname' => array('type'=>'varchar(128)', 'label'=>'Firstname', 'enabled'=>'1', 'position'=>21, 'notnull'=>0, 'visible'=>1, 'csslist'=>'tdoverflowmax150'), 'email' => array('type'=>'email', 'label'=>'EMail', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'picto'=>'email', 'csslist'=>'tdoverflowmax200'), 'phone' => array('type'=>'phone', 'label'=>'Phone', 'enabled'=>'1', 'position'=>31, 'notnull'=>0, 'visible'=>1, 'picto'=>'phone', 'csslist'=>'tdoverflowmax150'), 'date_birth' => array('type'=>'date', 'label'=>'DateOfBirth', 'enabled'=>'1', 'position'=>70, 'visible'=>-1,), 'email_msgid' => array('type'=>'varchar(255)', 'label'=>'EmailMsgID', 'visible'=>-2, 'enabled'=>1, 'position'=>540, 'notnull'=>-1, 'help'=>'EmailMsgIDDesc'), + 'email_date' => array('type'=>'datetime', 'label'=>'EmailDate', 'visible'=>-2, 'enabled'=>1, 'position'=>541), //'fk_recruitment_origin' => array('type'=>'integer:CRecruitmentOrigin:recruitment/class/crecruitmentorigin.class.php', 'label'=>'Origin', 'enabled'=>'1', 'position'=>45, 'visible'=>1, 'index'=>1), 'remuneration_requested' => array('type'=>'integer', 'label'=>'RequestedRemuneration', 'enabled'=>'1', 'position'=>80, 'notnull'=>0, 'visible'=>-1,), 'remuneration_proposed' => array('type'=>'integer', 'label'=>'ProposedRemuneration', 'enabled'=>'1', 'position'=>81, 'notnull'=>0, 'visible'=>-1,), - 'description' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>500, 'notnull'=>0, 'visible'=>3,), + 'description' => array('type'=>'html', 'label'=>'Description', 'enabled'=>'1', 'position'=>300, 'notnull'=>0, 'visible'=>3, 'cssview'=>'wordbreak'), + 'date_creation' => array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>'1', 'position'=>500, 'notnull'=>1, 'visible'=>1, 'csslist'=>'nowraponall'), + 'tms' => array('type'=>'timestamp', 'label'=>'DateModification', 'enabled'=>'1', 'position'=>501, 'notnull'=>0, 'visible'=>-2, 'csslist'=>'nowraponall'), 'import_key' => array('type'=>'varchar(14)', 'label'=>'ImportId', 'enabled'=>'1', 'position'=>1000, 'notnull'=>-1, 'visible'=>-2,), 'model_pdf' => array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>'1', 'position'=>1010, 'notnull'=>-1, 'visible'=>0,), 'status' => array('type'=>'smallint', 'label'=>'Status', 'enabled'=>'1', 'position'=>1000, 'notnull'=>1, 'visible'=>1, 'index'=>1, 'default'=>0, 'arrayofkeyval'=>array('0'=>'Draft', '1'=>'Received', '3'=>'ContractProposed', '5'=>'ContractSigned', '8'=>'Refused', '9'=>'Canceled')), @@ -149,6 +150,7 @@ class RecruitmentCandidature extends CommonObject public $phone; public $date_birth; public $email_msgid; + public $email_date; public $remuneration_requested; public $remuneration_proposed; public $fk_recruitment_origin; diff --git a/htdocs/recruitment/class/recruitmentjobposition.class.php b/htdocs/recruitment/class/recruitmentjobposition.class.php index cc56b1c9cd7..e0a59b0e3a6 100644 --- a/htdocs/recruitment/class/recruitmentjobposition.class.php +++ b/htdocs/recruitment/class/recruitmentjobposition.class.php @@ -105,9 +105,9 @@ class RecruitmentJobPosition extends CommonObject 'label' => array('type'=>'varchar(255)', 'label'=>'JobLabel', 'enabled'=>'1', 'position'=>30, 'notnull'=>1, 'visible'=>1, 'searchall'=>1, 'css'=>'minwidth500', 'csslist'=>'tdoverflowmax300', 'showoncombobox'=>'2', 'autofocusoncreate'=>1), 'qty' => array('type'=>'integer', 'label'=>'NbOfEmployeesExpected', 'enabled'=>'1', 'position'=>45, 'notnull'=>1, 'visible'=>1, 'default'=>'1', 'isameasure'=>'1', 'css'=>'maxwidth75imp'), 'fk_project' => array('type'=>'integer:Project:projet/class/project.class.php:1', 'label'=>'Project', 'enabled'=>'$conf->project->enabled', 'position'=>52, 'notnull'=>-1, 'visible'=>-1, 'index'=>1, 'css'=>'maxwidth500', 'picto'=>'project'), - 'fk_user_recruiter' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'ResponsibleOfRecruitement', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), + 'fk_user_recruiter' => array('type'=>'integer:User:user/class/user.class.php:status=1', 'label'=>'ResponsibleOfRecruitement', 'enabled'=>'1', 'position'=>54, 'notnull'=>1, 'visible'=>1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), 'email_recruiter' => array('type'=>'varchar(255)', 'label'=>'EmailRecruiter', 'enabled'=>'1', 'position'=>54, 'notnull'=>0, 'visible'=>-1, 'help'=>'ToUseAGenericEmail', 'picto'=>'email'), - 'fk_user_supervisor' => array('type'=>'integer:User:user/class/user.class.php', 'label'=>'FutureManager', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), + 'fk_user_supervisor' => array('type'=>'integer:User:user/class/user.class.php::t.statut = 1', 'label'=>'FutureManager', 'enabled'=>'1', 'position'=>55, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'user.rowid', 'css'=>'maxwidth500', 'csslist'=>'tdoverflowmax150', 'picto'=>'user'), 'fk_establishment' => array('type'=>'integer:Establishment:hrm/class/establishment.class.php', 'label'=>'Establishment', 'enabled'=>'$conf->hrm->enabled', 'position'=>56, 'notnull'=>0, 'visible'=>-1, 'foreignkey'=>'establishment.rowid',), 'fk_soc' => array('type'=>'integer:Societe:societe/class/societe.class.php:1:status=1 AND entity IN (__SHARED_ENTITIES__)', 'label'=>'WorkPlace', 'enabled'=>'$conf->societe->enabled', 'position'=>57, 'notnull'=>-1, 'visible'=>-1, 'css'=>'maxwidth500', 'index'=>1, 'help'=>"IfJobIsLocatedAtAPartner", 'picto'=>'company'), 'date_planned' => array('type'=>'date', 'label'=>'DateExpected', 'enabled'=>'1', 'position'=>60, 'notnull'=>0, 'visible'=>1,), diff --git a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php index 8d187807700..ba35cb0ba3f 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php @@ -4,7 +4,7 @@ * Copyright (C) 2014 Marcos García * Copyright (C) 2016 Charlie Benke * Copyright (C) 2018-2021 Philippe Grand - * Copyright (C) 2018 Frédéric France + * Copyright (C) 2018-2022 Frédéric France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,12 +22,12 @@ */ /** - * \file htdocs/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php + * \file htdocs/recruitment/core/modules/recruitment/doc/doc_generic_recruitmentjobposition_odt.modules.php * \ingroup recruitment * \brief File of class to build ODT documents for recruitmentjobpositions */ -dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentjobposition.php'); +require_once DOL_DOCUMENT_ROOT.'/recruitment/core/modules/recruitment/modules_recruitmentjobposition.php'; require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; @@ -234,7 +234,7 @@ class doc_generic_recruitmentjobposition_odt extends ModelePDFRecruitmentJobPosi $outputlangs->loadLangs(array("main", "dict", "companies", "bills")); - if ($conf->commande->dir_output) { + if ($conf->recruitment->dir_output) { // If $object is id instead of object if (!is_object($object)) { $id = $object; @@ -246,7 +246,7 @@ class doc_generic_recruitmentjobposition_odt extends ModelePDFRecruitmentJobPosi } } - $dir = $conf->commande->multidir_output[isset($object->entity) ? $object->entity : 1]; + $dir = $conf->recruitment->multidir_output[isset($object->entity) ? $object->entity : 1].'/recruitmentjobposition/'; $objectref = dol_sanitizeFileName($object->ref); if (!preg_match('/specimen/i', $objectref)) { $dir .= "/".$objectref; diff --git a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php index 61ae610fb3b..2e85bfab121 100644 --- a/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php +++ b/htdocs/recruitment/core/modules/recruitment/doc/pdf_standard_recruitmentjobposition.modules.php @@ -817,8 +817,8 @@ class pdf_standard_recruitmentjobposition extends ModelePDFRecruitmentJobPositio pdf_pagehead($pdf, $outputlangs, $this->page_hauteur); // Show Draft Watermark - if ($object->statut == $object::STATUS_DRAFT && (!empty($conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_DRAFT_WATERMARK))) { - pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', $conf->global->RECRUITMENT_RECRUITMENTJOBPOSITION_DRAFT_WATERMARK); + if ($object->statut == $object::STATUS_DRAFT && getDolGlobalString('RECRUITMENT_RECRUITMENTJOBPOSITION_DRAFT_WATERMARK')) { + pdf_watermark($pdf, $outputlangs, $this->page_hauteur, $this->page_largeur, 'mm', getDolGlobalString('RECRUITMENT_RECRUITMENTJOBPOSITION_DRAFT_WATERMARK')); } $pdf->SetTextColor(0, 0, 60); diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php new file mode 100644 index 00000000000..8772e97bf77 --- /dev/null +++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentcandidature_advanced.php @@ -0,0 +1,143 @@ + + * Copyright (C) 2004-2007 Laurent Destailleur + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2008 Raphael Bertrand (Resultic) + * Copyright (C) 2019 Frédéric France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see https://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/recruitment/mod_recruitmentcandidaturen_advanced.php + * \ingroup recruitment + * \brief File containing class for advanced numbering model of RecruitmentCandidature + */ + +dol_include_once('/recruitment/core/modules/recruitment/modules_recruitmentcandidature.php'); + + +/** + * Class to manage customer Bom numbering rules advanced + */ +class mod_recruitmentcandidature_advanced extends ModeleNumRefRecruitmentCandidature +{ + /** + * Dolibarr version of the loaded document + * @var string + */ + public $version = 'dolibarr'; // 'development', 'experimental', 'dolibarr' + + /** + * @var string Error message + */ + public $error = ''; + + /** + * @var string name + */ + public $name = 'advanced'; + + + /** + * Returns the description of the numbering model + * + * @return string Texte descripif + */ + public function info() + { + global $conf, $langs, $db; + + $langs->load("bills"); + + $form = new Form($db); + + $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; + $texte .= '
'; + $texte .= ''; + $texte .= ''; + $texte .= ''; + $texte .= '
'; + $searchpicto = $form->showFilterButtons('left'); + print $searchpicto; + print ''; @@ -849,13 +856,18 @@ if (!empty($arrayfields['e.billed']['checked'])) { print ''; -$searchpicto = $form->showFilterAndCheckAddButtons(0); -print $searchpicto; -print ''; + $searchpicto = $form->showFilterAndCheckAddButtons(0); + print $searchpicto; + print '
'; + if ($massactionbutton || $massaction) { + // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; + } + print ''; @@ -1085,16 +1112,18 @@ while ($i < min($num, $limit)) { } // Action column - print ''; - if ($massactionbutton || $massaction) { - // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined - $selected = 0; - if (in_array($obj->rowid, $arrayofselected)) { - $selected = 1; + if (empty($conf->global->MAIN_CHECKBOX_LEFT_COLUMN)) { + print ''; + if ($massactionbutton || $massaction) { + // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined + $selected = 0; + if (in_array($obj->rowid, $arrayofselected)) { + $selected = 1; + } + print ''; } - print ''; + print '
'; + + $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("RecruitmentCandidature"), $langs->transnoentities("RecruitmentCandidature")); + $tooltip .= $langs->trans("GenericMaskCodes2"); + $tooltip .= $langs->trans("GenericMaskCodes3"); + $tooltip .= $langs->trans("GenericMaskCodes4a", $langs->transnoentities("RecruitmentCandidature"), $langs->transnoentities("RecruitmentCandidature")); + $tooltip .= $langs->trans("GenericMaskCodes5"); + + // Parametrage du prefix + $texte .= ''; + $texte .= ''; + + $texte .= ''; + + $texte .= ''; + + $texte .= '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).' 
'; + $texte .= ''; + + return $texte; + } + + /** + * Return an example of numbering + * + * @return string Example + */ + public function getExample() + { + global $conf, $langs, $mysoc; + + $old_code_client = $mysoc->code_client; + $old_code_type = $mysoc->typent_code; + $mysoc->code_client = 'CCCCCCCCCC'; + $mysoc->typent_code = 'TTTTTTTTTT'; + $numExample = $this->getNextValue($mysoc); + $mysoc->code_client = $old_code_client; + $mysoc->typent_code = $old_code_type; + + if (!$numExample) { + $numExample = $langs->trans('NotConfigured'); + } + return $numExample; + } + + /** + * Return next free value + * + * @param Object $object Object we need next value for + * @return string Value if KO, <0 if KO + */ + public function getNextValue($object) + { + global $db, $conf; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + + // We get cursor rule + $mask = getDolGlobalString('RECRUITMENT_RECRUITMENTCANDIDATURE_ADVANCED_MASK'); + + if (!$mask) { + $this->error = 'NotConfigured'; + return 0; + } + + $date = $object->date; + + $numFinal = get_next_value($db, $mask, 'recruitment_recruitmentcandidature', 'ref', '', null, $date); + + return $numFinal; + } +} diff --git a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php index e4a07c63633..c280153f9c8 100644 --- a/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php +++ b/htdocs/recruitment/core/modules/recruitment/mod_recruitmentjobposition_advanced.php @@ -68,7 +68,7 @@ class mod_recruitmentjobposition_advanced extends ModeleNumRefRecruitmentJobPosi $texte .= '
'; $texte .= ''; $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; $tooltip = $langs->trans("GenericMaskCodes", $langs->transnoentities("RecruitmentJobPosition"), $langs->transnoentities("RecruitmentJobPosition")); @@ -79,7 +79,7 @@ class mod_recruitmentjobposition_advanced extends ModeleNumRefRecruitmentJobPosi // Parametrage du prefix $texte .= ''; - $texte .= ''; + $texte .= ''; $texte .= ''; @@ -98,20 +98,15 @@ class mod_recruitmentjobposition_advanced extends ModeleNumRefRecruitmentJobPosi */ public function getExample() { - global $conf, $db, $langs, $mysoc; + global $conf, $langs, $mysoc; - $object = new RecruitmentJobPosition($db); - $object->initAsSpecimen(); - - /*$old_code_client = $mysoc->code_client; + $old_code_client = $mysoc->code_client; $old_code_type = $mysoc->typent_code; $mysoc->code_client = 'CCCCCCCCCC'; - $mysoc->typent_code = 'TTTTTTTTTT';*/ - - $numExample = $this->getNextValue($object); - - /*$mysoc->code_client = $old_code_client; - $mysoc->typent_code = $old_code_type;*/ + $mysoc->typent_code = 'TTTTTTTTTT'; + $numExample = $this->getNextValue($mysoc); + $mysoc->code_client = $old_code_client; + $mysoc->typent_code = $old_code_type; if (!$numExample) { $numExample = $langs->trans('NotConfigured'); diff --git a/htdocs/recruitment/recruitmentcandidature_card.php b/htdocs/recruitment/recruitmentcandidature_card.php index 0da5badd7bc..b1903edb71f 100644 --- a/htdocs/recruitment/recruitmentcandidature_card.php +++ b/htdocs/recruitment/recruitmentcandidature_card.php @@ -21,26 +21,6 @@ * \brief Page to create/edit/view recruitmentcandidature */ -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION','1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION','1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK','1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT','auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE','aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN',1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP','none'); // Disable all Content Security Policies - - // Load Dolibarr environment require_once '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; @@ -86,7 +66,7 @@ foreach ($object->fields as $key => $val) { } if (empty($action) && empty($id) && empty($ref)) { - $action = 'view'; + $action = 'create'; } // Load object @@ -477,6 +457,23 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea } } }*/ + // Author + if (!empty($object->email_msgid)) { + $morehtmlref .= $langs->trans("CreatedBy").' : '; + + if ($object->fk_user_creat > 0) { + $fuser = new User($db); + $fuser->fetch($object->fk_user_creat); + $morehtmlref .= $fuser->getNomUrl(-1); + } + if (!empty($object->email_msgid)) { + $morehtmlref .= ' ('.$form->textwithpicto($langs->trans("CreatedByEmailCollector"), $langs->trans("EmailMsgID").': '.$object->email_msgid).')'; + } + } /* elseif (!empty($object->origin_email)) { + $morehtmlref .= $langs->trans("CreatedBy").' : '; + $morehtmlref .= img_picto('', 'email', 'class="paddingrightonly"'); + $morehtmlref .= dol_escape_htmltag($object->origin_email).' ('.$langs->trans("CreatedByPublicPortal").')'; + } */ $morehtmlref .= ''; @@ -652,6 +649,7 @@ if ($object->id > 0 && (empty($action) || ($action != 'edit' && $action != 'crea $defaulttopic = 'InformationMessage'; $diroutput = $conf->recruitment->dir_output; $trackid = 'recruitmentcandidature'.$object->id; + $inreplyto = $object->email_msgid; include DOL_DOCUMENT_ROOT.'/core/tpl/card_presend.tpl.php'; } diff --git a/htdocs/recruitment/recruitmentcandidature_document.php b/htdocs/recruitment/recruitmentcandidature_document.php index 38715f412f2..cd3da93b9e0 100644 --- a/htdocs/recruitment/recruitmentcandidature_document.php +++ b/htdocs/recruitment/recruitmentcandidature_document.php @@ -48,7 +48,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { @@ -188,6 +188,7 @@ if ($object->id) { $param = '&id='.$object->id; $relativepathwithnofile = 'recruitmentcandidature/'.dol_sanitizeFileName($object->ref).'/'; + $savingdocmask = dol_sanitizeFileName($object->ref).'-__file__'; include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } else { diff --git a/htdocs/recruitment/recruitmentcandidature_list.php b/htdocs/recruitment/recruitmentcandidature_list.php index e8a52730b74..d64d2e70037 100644 --- a/htdocs/recruitment/recruitmentcandidature_list.php +++ b/htdocs/recruitment/recruitmentcandidature_list.php @@ -21,25 +21,6 @@ * \brief List page for recruitmentcandidature */ -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', '1'); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("XFRAMEOPTIONS_ALLOWALL")) define('XFRAMEOPTIONS_ALLOWALL', '1'); // Do not add the HTTP header 'X-Frame-Options: SAMEORIGIN' but 'X-Frame-Options: ALLOWALL' - // Load Dolibarr environment require_once '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment.lib.php'; diff --git a/htdocs/recruitment/recruitmentjobposition_applications.php b/htdocs/recruitment/recruitmentjobposition_applications.php index 16e19066be3..6a7d471046e 100644 --- a/htdocs/recruitment/recruitmentjobposition_applications.php +++ b/htdocs/recruitment/recruitmentjobposition_applications.php @@ -21,26 +21,6 @@ * \brief Page to see/add applications of a job position */ -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION','1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION','1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK','1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT','auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE','aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN',1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP','none'); // Disable all Content Security Policies - - // Load Dolibarr environment $res = 0; // Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined) diff --git a/htdocs/recruitment/recruitmentjobposition_card.php b/htdocs/recruitment/recruitmentjobposition_card.php index b2172aca80d..996868a791e 100644 --- a/htdocs/recruitment/recruitmentjobposition_card.php +++ b/htdocs/recruitment/recruitmentjobposition_card.php @@ -21,41 +21,21 @@ * \brief Page to create/edit/view recruitmentjobposition */ -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION','1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION','1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too. -//if (! defined('NOIPCHECK')) define('NOIPCHECK','1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT','auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE','aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN',1); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("FORCECSP")) define('FORCECSP','none'); // Disable all Content Security Policies - - // Load Dolibarr environment require_once '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; -dol_include_once('/recruitment/class/recruitmentjobposition.class.php'); -dol_include_once('/recruitment/lib/recruitment_recruitmentjobposition.lib.php'); +require_once DOL_DOCUMENT_ROOT.'/recruitment/class/recruitmentjobposition.class.php'; +require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment_recruitmentjobposition.lib.php'; // Load translation files required by the page $langs->loadLangs(array("recruitment", "other")); // Get parameters $id = GETPOST('id', 'int'); -$ref = GETPOST('ref', 'alpha'); +$ref = GETPOST('ref', 'alpha'); $action = GETPOST('action', 'aZ09'); $confirm = GETPOST('confirm', 'alpha'); $cancel = GETPOST('cancel', 'aZ09'); @@ -85,7 +65,7 @@ foreach ($object->fields as $key => $val) { } if (empty($action) && empty($id) && empty($ref)) { - $action = 'view'; + $action = 'create'; } // Load object diff --git a/htdocs/recruitment/recruitmentjobposition_document.php b/htdocs/recruitment/recruitmentjobposition_document.php index 43f90ca1fdd..d05ed9ab5d6 100644 --- a/htdocs/recruitment/recruitmentjobposition_document.php +++ b/htdocs/recruitment/recruitmentjobposition_document.php @@ -28,8 +28,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/images.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; -dol_include_once('/recruitment/class/recruitmentjobposition.class.php'); -dol_include_once('/recruitment/lib/recruitment_recruitmentjobposition.lib.php'); +require_once DOL_DOCUMENT_ROOT.'/recruitment/class/recruitmentjobposition.class.php'; +require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment_recruitmentjobposition.lib.php'; // Load translation files required by the page $langs->loadLangs(array("recruitment", "companies", "other", "mails")); @@ -48,7 +48,7 @@ $page = GETPOSTISSET('pageplusone') ? (GETPOST('pageplusone') - 1) : GETPOST("pa if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1 -$offset = $liste_limit * $page; +$offset = $limit * $page; $pageprev = $page - 1; $pagenext = $page + 1; if (!$sortorder) { @@ -186,8 +186,8 @@ if ($object->id) { $permtoedit = $user->rights->recruitment->recruitmentjobposition->write; $param = '&id='.$object->id; - //$relativepathwithnofile='recruitmentjobposition/' . dol_sanitizeFileName($object->id).'/'; $relativepathwithnofile = 'recruitmentjobposition/'.dol_sanitizeFileName($object->ref).'/'; + $savingdocmask = dol_sanitizeFileName($object->ref).'-__file__'; include DOL_DOCUMENT_ROOT.'/core/tpl/document_actions_post_headers.tpl.php'; } else { diff --git a/htdocs/recruitment/recruitmentjobposition_list.php b/htdocs/recruitment/recruitmentjobposition_list.php index ef9a882bd8e..5435a5a2ac2 100644 --- a/htdocs/recruitment/recruitmentjobposition_list.php +++ b/htdocs/recruitment/recruitmentjobposition_list.php @@ -21,25 +21,6 @@ * \brief List page for recruitmentjobposition */ -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db -//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user -//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc -//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs -//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters -//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters -//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on). -//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on) -//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data -//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip -//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu -//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php -//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library -//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session) -//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value -//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler -//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', '1'); // The main.inc.php does not make a redirect if not logged, instead show simple error message -//if (! defined("XFRAMEOPTIONS_ALLOWALL")) define('XFRAMEOPTIONS_ALLOWALL', '1'); // Do not add the HTTP header 'X-Frame-Options: SAMEORIGIN' but 'X-Frame-Options: ALLOWALL' - // Load Dolibarr environment require_once '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/recruitment/lib/recruitment_recruitmentjobposition.lib.php'; @@ -216,7 +197,7 @@ $now = dol_now(); //$help_url="EN:Module_RecruitmentJobPosition|FR:Module_RecruitmentJobPosition_FR|ES:Módulo_RecruitmentJobPosition"; $help_url = ''; -$title = $langs->trans('ListOfPositionsToBeFilled'); +$title = $langs->trans('PositionsToBeFilled'); $morejs = array(); $morecss = array(); diff --git a/htdocs/resource/class/dolresource.class.php b/htdocs/resource/class/dolresource.class.php index da99b2f2e97..46371fead0f 100644 --- a/htdocs/resource/class/dolresource.class.php +++ b/htdocs/resource/class/dolresource.class.php @@ -262,10 +262,9 @@ class Dolresource extends CommonObject $this->country_id = 0; } + // $this->oldcopy should have been set by the caller of update (here properties were already modified) if (empty($this->oldcopy)) { - $org = new self($this->db); - $org->fetch($this->id); - $this->oldcopy = $org; + $this->oldcopy = dol_clone($this); } // Update request diff --git a/htdocs/resource/element_resource.php b/htdocs/resource/element_resource.php index 09c7befc664..b4f76a93ae3 100644 --- a/htdocs/resource/element_resource.php +++ b/htdocs/resource/element_resource.php @@ -33,7 +33,7 @@ if (!empty($conf->project->enabled)) { require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php'; } -if (!empty($conf->product->enabled) || !empty($conf->service->enabled)) { +if (isModEnabled("product") || isModEnabled("service")) { require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php'; } diff --git a/htdocs/salaries/card.php b/htdocs/salaries/card.php index 7d57575dacd..ce2ef50150d 100644 --- a/htdocs/salaries/card.php +++ b/htdocs/salaries/card.php @@ -260,7 +260,7 @@ if ($action == 'add' && empty($cancel)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Amount")), null, 'errors'); $error++; } - if (!empty($conf->banque->enabled) && !empty($auto_create_paiement) && !$object->accountid > 0) { + if (isModEnabled("banque") && !empty($auto_create_paiement) && !$object->accountid > 0) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("BankAccount")), null, 'errors'); $error++; } @@ -583,7 +583,7 @@ if ($action == 'create') { print ''."\n"; // Date payment // Bank - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; // Number - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Number print ''; // Default Bank Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; - if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire)) + if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire)) || (!empty($conf->supplier_proposal->enabled) && !empty($user->rights->supplier_proposal->lire))) { // Supplier print ''; @@ -1477,11 +1485,11 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } print ''; print ''; print '\n"; print ''; print ''; print ''; if (getDolGlobalInt('MAIN_FEATURES_LEVEL') >= 2) { // What is this for ? print ''; +} + +// Card Present for Stripe Terminal +if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code + print ''; +} + +// Locations for Stripe Terminal +if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code + print ''; } // Activate Payment Request API if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code print ''; } @@ -385,7 +447,7 @@ if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { // TODO Not used by current code print ajax_constantonoff('STRIPE_SEPA_DIRECT_DEBIT'); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_SEPA_DIRECT_DEBIT", $arrval, $conf->global->STRIPE_SEPA_DIRECT_DEBIT); + print $form->selectarray("STRIPE_SEPA_DIRECT_DEBIT", $arrval, getDolGlobalString('STRIPE_SEPA_DIRECT_DEBIT')); } print ''; } @@ -486,6 +548,7 @@ print ''; print ''; @@ -519,7 +582,7 @@ print ''; print ''; // Bank Account - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && isModEnabled("banque")) { print ''; } // Shipping Method - if (!empty($conf->expedition->enabled)) { + if (isModEnabled("expedition")) { print ''; @@ -1355,7 +1358,7 @@ if ($action == 'create') { // Calcul contrat->price (HT), contrat->total (TTC), contrat->tva $objectsrc->remise_absolue = $remise_absolue; $objectsrc->remise_percent = $remise_percent; - $objectsrc->update_price(1, - 1, 1); + $objectsrc->update_price(1, 'auto', 1); } print "\n"; @@ -1744,7 +1747,7 @@ if ($action == 'create') { print ''; }*/ - if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && !empty($conf->banque->enabled)) { + if (!empty($conf->global->BANK_ASK_PAYMENT_BANK_DURING_PROPOSAL) && isModEnabled("banque")) { // Bank Account print '
'.$langs->trans("Mask").':'.$form->textwithpicto('', $tooltip, 1, 1).''.$form->textwithpicto('', $tooltip, 1, 1).' 
'; print $form->editfieldkey('BankAccount', 'selectaccountid', '', $object, 0, 'string', '', 1).''; print img_picto('', 'bank_account', 'class="paddingrighonly"'); @@ -610,7 +610,7 @@ if ($action == 'create') { print '
'; print ''; print ''; print ''; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } print ''; @@ -972,7 +972,7 @@ if ($id) { print '\n"; $labeltype = $langs->trans("PaymentType".$objp->type_code) != ("PaymentType".$objp->type_code) ? $langs->trans("PaymentType".$objp->type_code) : $objp->paiement_type; print "\n"; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $bankaccountstatic->id = $objp->baid; $bankaccountstatic->ref = $objp->baref; $bankaccountstatic->label = $objp->baref; diff --git a/htdocs/salaries/class/paymentsalary.class.php b/htdocs/salaries/class/paymentsalary.class.php index 3a6ade39c6a..1a716cba31d 100644 --- a/htdocs/salaries/class/paymentsalary.class.php +++ b/htdocs/salaries/class/paymentsalary.class.php @@ -493,7 +493,7 @@ class PaymentSalary extends CommonObject $error = 0; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { include_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $acc = new Account($this->db); diff --git a/htdocs/salaries/class/salary.class.php b/htdocs/salaries/class/salary.class.php index 968320ce394..8949313ecb0 100644 --- a/htdocs/salaries/class/salary.class.php +++ b/htdocs/salaries/class/salary.class.php @@ -372,12 +372,12 @@ class Salary extends CommonObject $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Amount")); return -5; } - /* if (!empty($conf->banque->enabled) && (empty($this->accountid) || $this->accountid <= 0)) + /* if (isModEnabled("banque") && (empty($this->accountid) || $this->accountid <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("Account")); return -6; } - if (!empty($conf->banque->enabled) && (empty($this->type_payment) || $this->type_payment <= 0)) + if (isModEnabled("banque") && (empty($this->type_payment) || $this->type_payment <= 0)) { $this->error = $langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")); return -7; diff --git a/htdocs/salaries/list.php b/htdocs/salaries/list.php index e578e8e0d02..82a6199407e 100644 --- a/htdocs/salaries/list.php +++ b/htdocs/salaries/list.php @@ -40,7 +40,7 @@ $show_files = GETPOST('show_files', 'int'); // Show files area generated by bulk $confirm = GETPOST('confirm', 'alpha'); // Result of a confirmation $cancel = GETPOST('cancel', 'alpha'); // We click on a Cancel button $toselect = GETPOST('toselect', 'array'); // Array of ids of elements selected into a list -$contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'bomlist'; // To manage different context of search +$contextpage = GETPOST('contextpage', 'aZ') ? GETPOST('contextpage', 'aZ') : str_replace('_', '', basename(dirname(__FILE__)).basename(__FILE__, '.php')); // To manage different context of search $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page $optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print') @@ -438,7 +438,7 @@ $form->select_types_paiements($search_type_id, 'search_type_id', '', 0, 1, 1, 16 print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print ''; @@ -476,7 +476,7 @@ print_liste_field_titre("DateStart", $_SERVER["PHP_SELF"], "s.datesp,s.rowid", " print_liste_field_titre("DateEnd", $_SERVER["PHP_SELF"], "s.dateep,s.rowid", "", $param, 'align="center"', $sortfield, $sortorder); print_liste_field_titre("Employee", $_SERVER["PHP_SELF"], "u.lastname", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("DefaultPaymentMode", $_SERVER["PHP_SELF"], "type", "", $param, 'class="left"', $sortfield, $sortorder); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print_liste_field_titre("DefaultBankAccount", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); } print_liste_field_titre("Amount", $_SERVER["PHP_SELF"], "s.amount", "", $param, 'class="right"', $sortfield, $sortorder); @@ -577,7 +577,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) { } // Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { print ''; } diff --git a/htdocs/salaries/paiement_salary.php b/htdocs/salaries/paiement_salary.php index cfca26efca4..8c885385a7f 100644 --- a/htdocs/salaries/paiement_salary.php +++ b/htdocs/salaries/paiement_salary.php @@ -77,7 +77,7 @@ if ($action == 'add_payment' || ($action == 'confirm_paiement' && $confirm == 'y $error++; $action = 'create'; } - if (!empty($conf->banque->enabled) && !(GETPOST("accountid", 'int') > 0)) { + if (isModEnabled("banque") && !(GETPOST("accountid", 'int') > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToDebit")), null, 'errors'); $error++; $action = 'create'; diff --git a/htdocs/salaries/payment_salary/card.php b/htdocs/salaries/payment_salary/card.php index 9e5a55563e4..f5e8d465378 100644 --- a/htdocs/salaries/payment_salary/card.php +++ b/htdocs/salaries/payment_salary/card.php @@ -31,7 +31,7 @@ require_once DOL_DOCUMENT_ROOT.'/salaries/class/salary.class.php'; require_once DOL_DOCUMENT_ROOT.'/salaries/class/paymentsalary.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/facture/modules_facture.php'; -if (!empty($conf->banque->enabled)) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; +if (isModEnabled("banque")) require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // Load translation files required by the page $langs->loadLangs(array('bills', 'banks', 'companies', 'salaries')); @@ -111,7 +111,7 @@ if ($action == 'delete') { /* if ($action == 'valide') { - $facid = $_GET['facid']; + $facid = GETPOST('facid', 'int'); print $form->formconfirm('card.php?id='.$object->id.'&facid='.$facid, $langs->trans("ValidatePayment"), $langs->trans("ConfirmValidatePayment"), 'confirm_valide','',0,2); } @@ -152,7 +152,7 @@ print ''; // Bank account -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { if ($object->bank_account) { $bankline = new AccountLine($db); $bankline->fetch($object->bank_line); diff --git a/htdocs/salaries/payments.php b/htdocs/salaries/payments.php index 54a8589677d..e7a1e02e1e7 100644 --- a/htdocs/salaries/payments.php +++ b/htdocs/salaries/payments.php @@ -448,7 +448,7 @@ print ''; // Chq number print ''; -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { // Bank transaction print '"; } else { print '"; } } @@ -626,7 +615,7 @@ foreach ($dirsociete as $dirroot) { // Preview print ''; print '\n"; print ''; @@ -864,7 +853,7 @@ if (!empty($conf->global->CONTACT_SHOW_EMAIL_PHONE_TOWN_SELECTLIST)) { print ''; print ''; -if (!empty($conf->expedition->enabled)) { +if (isModEnabled("expedition")) { if (getDolGlobalInt('MAIN_FEATURES_LEVEL') > 0) { // Visible on experimental only because seems to not be implemented everywhere (only on proposal) print ''; print ''; diff --git a/htdocs/societe/canvas/actions_card_common.class.php b/htdocs/societe/canvas/actions_card_common.class.php index 4ef3d64a424..5a26946913c 100644 --- a/htdocs/societe/canvas/actions_card_common.class.php +++ b/htdocs/societe/canvas/actions_card_common.class.php @@ -186,7 +186,7 @@ abstract class ActionsCardCommon $s = $modCodeClient->getToolTip($langs, $this->object, 0); $this->tpl['help_customercode'] = $form->textwithpicto('', $s, 1); - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { $this->tpl['supplier_enabled'] = 1; // Load object modCodeFournisseur diff --git a/htdocs/societe/canvas/company/tpl/card_create.tpl.php b/htdocs/societe/canvas/company/tpl/card_create.tpl.php index 2deb1dba8b1..58752a1bc7b 100644 --- a/htdocs/societe/canvas/company/tpl/card_create.tpl.php +++ b/htdocs/societe/canvas/company/tpl/card_create.tpl.php @@ -105,7 +105,7 @@ if (empty($conf) || !is_object($conf)) { barcode->enabled)) { ?> +if (isModEnabled('barcode')) { ?> diff --git a/htdocs/societe/canvas/company/tpl/card_edit.tpl.php b/htdocs/societe/canvas/company/tpl/card_edit.tpl.php index 35e38a10f0e..eb300cfdd4e 100644 --- a/htdocs/societe/canvas/company/tpl/card_edit.tpl.php +++ b/htdocs/societe/canvas/company/tpl/card_edit.tpl.php @@ -120,7 +120,7 @@ if ($this->control->tpl['fournisseur']) { } } -if (!empty($conf->barcode->enabled)) { ?> +if (isModEnabled('barcode')) { ?> diff --git a/htdocs/societe/canvas/company/tpl/card_view.tpl.php b/htdocs/societe/canvas/company/tpl/card_view.tpl.php index e57421bf8b5..0c6f2caf1e1 100644 --- a/htdocs/societe/canvas/company/tpl/card_view.tpl.php +++ b/htdocs/societe/canvas/company/tpl/card_view.tpl.php @@ -79,7 +79,7 @@ print dol_get_fiche_head($head, 'card', $langs->trans("ThirdParty"), 0, 'company -barcode->enabled)) { ?> + diff --git a/htdocs/societe/canvas/individual/tpl/card_create.tpl.php b/htdocs/societe/canvas/individual/tpl/card_create.tpl.php index 0010b87ff90..1c8b51dac7c 100644 --- a/htdocs/societe/canvas/individual/tpl/card_create.tpl.php +++ b/htdocs/societe/canvas/individual/tpl/card_create.tpl.php @@ -113,7 +113,7 @@ if (empty($conf) || !is_object($conf)) { barcode->enabled)) { ?> +if (isModEnabled('barcode')) { ?> diff --git a/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php b/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php index 7a43f256b45..56192bbe4e7 100644 --- a/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php +++ b/htdocs/societe/canvas/individual/tpl/card_edit.tpl.php @@ -117,7 +117,7 @@ if ($this->control->tpl['fournisseur']) { } ?> -barcode->enabled)) { ?> + diff --git a/htdocs/societe/canvas/individual/tpl/card_view.tpl.php b/htdocs/societe/canvas/individual/tpl/card_view.tpl.php index 16cd9f1e637..bfbf6271711 100644 --- a/htdocs/societe/canvas/individual/tpl/card_view.tpl.php +++ b/htdocs/societe/canvas/individual/tpl/card_view.tpl.php @@ -74,7 +74,7 @@ if ($this->control->tpl['action_delete']) { -barcode->enabled)) { ?> + diff --git a/htdocs/societe/card.php b/htdocs/societe/card.php index 8e347a6d487..5d557d30a02 100644 --- a/htdocs/societe/card.php +++ b/htdocs/societe/card.php @@ -548,9 +548,8 @@ if (empty($reshook)) { } //var_dump($object->array_languages);exit; - if (GETPOST('deletephoto')) { - $object->logo = ''; - } elseif (!empty($_FILES['photo']['name'])) { + if (!empty($_FILES['photo']['name'])) { + $current_logo = $object->logo; $object->logo = dol_sanitizeFileName($_FILES['photo']['name']); } @@ -648,7 +647,7 @@ if (empty($reshook)) { $newfile = $dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - if (!$result > 0) { + if (!($result > 0)) { $errors[] = "ErrorFailedToSaveFile"; } else { // Create thumbs @@ -801,13 +800,20 @@ if (empty($reshook)) { } if ($file_OK) { if (image_format_supported($_FILES['photo']['name']) > 0) { + if ($current_logo != $object->logo) { + $fileimg = $dir.'/'.$current_logo; + $dirthumbs = $dir.'/thumbs'; + dol_delete_file($fileimg); + dol_delete_dir_recursive($dirthumbs); + } + dol_mkdir($dir); if (@is_dir($dir)) { $newfile = $dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - if (!$result > 0) { + if (!($result > 0)) { $errors[] = "ErrorFailedToSaveFile"; } else { // Create thumbs @@ -959,10 +965,12 @@ if ($socid > 0 && empty($object->id)) { } $title = $langs->trans("ThirdParty"); +if ($action == 'create') { + $title = $langs->trans("NewThirdParty"); +} if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) { $title = $object->name." - ".$langs->trans('Card'); } - $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas|DE:Modul_Geschäftspartner'; llxHeader('', $title, $help_url); @@ -1041,7 +1049,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $object->client = 1; } - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && (GETPOST("type") == 'f' || (GETPOST("type") == '' && !empty($conf->global->THIRDPARTY_SUPPLIER_BY_DEFAULT)))) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && (GETPOST("type") == 'f' || (GETPOST("type") == '' && !empty($conf->global->THIRDPARTY_SUPPLIER_BY_DEFAULT)))) { $object->fournisseur = 1; } @@ -1137,7 +1145,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $newfile = $dir.'/'.dol_sanitizeFileName($_FILES['photo']['name']); $result = dol_move_uploaded_file($_FILES['photo']['tmp_name'], $newfile, 1); - if (!$result > 0) { + if (!($result > 0)) { $errors[] = "ErrorFailedToSaveFile"; } else { // Create thumbs @@ -1459,7 +1467,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print '
'; print $langs->trans('DefaultBankAccount'); @@ -922,7 +922,7 @@ if ($id) { print '
'; $nbcols = 3; - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { $nbcols++; } @@ -956,7 +956,7 @@ if ($id) { print '
'.$langs->trans("RefPayment").''.$langs->trans("Date").''.$langs->trans("Type").''.$langs->trans('BankAccount').''.$langs->trans("Amount").''.dol_print_date($db->jdate($objp->dp), 'day')."".$labeltype.' '.$objp->num_payment."'; $form->select_comptes($search_account, 'search_account', 0, '', 1); print ''; if ($obj->fk_account > 0) { //$accountstatic->fetch($obj->fk_bank); @@ -663,7 +663,7 @@ if ($num == 0) { } }*/ $colspan = 9; - if (!empty($conf->banque->enabled)) { $colspan++; } + if (isModEnabled("banque")) { $colspan++; } print '
'.$langs->trans("NoRecordFound").'
'.$langs->trans('Amount').''.price($object-> print '
'.$langs->trans('Note').''.nl2br($object->note).'
'; print ''; @@ -489,7 +489,7 @@ print_liste_field_titre("DatePayment", $_SERVER["PHP_SELF"], "s.datep,s.rowid", print_liste_field_titre("Employee", $_SERVER["PHP_SELF"], "u.rowid", "", $param, "", $sortfield, $sortorder); print_liste_field_titre("PaymentMode", $_SERVER["PHP_SELF"], "pst.code", "", $param, 'class="left"', $sortfield, $sortorder); print_liste_field_titre("Numero", $_SERVER["PHP_SELF"], "s.num_payment", "", $param, '', $sortfield, $sortorder, '', 'ChequeOrTransferNumber'); -if (!empty($conf->banque->enabled)) { +if (isModEnabled("banque")) { print_liste_field_titre("BankTransactionLine", $_SERVER["PHP_SELF"], "s.fk_bank", "", $param, '', $sortfield, $sortorder); print_liste_field_titre("BankAccount", $_SERVER["PHP_SELF"], "ba.label", "", $param, "", $sortfield, $sortorder); } @@ -604,7 +604,7 @@ while ($i < ($limit ? min($num, $limit) : $num)) { } // Account - if (!empty($conf->banque->enabled)) { + if (isModEnabled("banque")) { // Bank transaction print ''; $accountlinestatic->id = $obj->fk_bank; diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 2fb9285379f..40f92007f38 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -51,19 +51,15 @@ $formcompany = new FormCompany($db); include DOL_DOCUMENT_ROOT.'/core/actions_setmoduleoptions.inc.php'; if ($action == 'setcodeclient') { - if (dolibarr_set_const($db, "SOCIETE_CODECLIENT_ADDON", $value, 'chaine', 0, '', $conf->entity) > 0) { - header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } else { + $result = dolibarr_set_const($db, "SOCIETE_CODECLIENT_ADDON", $value, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } if ($action == 'setcodecompta') { - if (dolibarr_set_const($db, "SOCIETE_CODECOMPTA_ADDON", $value, 'chaine', 0, '', $conf->entity) > 0) { - header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } else { + $result = dolibarr_set_const($db, "SOCIETE_CODECOMPTA_ADDON", $value, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } @@ -273,10 +269,8 @@ if ($action == 'setprofid') { $status = GETPOST('status', 'alpha'); $idprof = "SOCIETE_".$value."_UNIQUE"; - if (dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity) > 0) { - //header("Location: ".$_SERVER["PHP_SELF"]); - //exit; - } else { + $result = dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } @@ -286,10 +280,8 @@ if ($action == 'setprofidmandatory') { $status = GETPOST('status', 'alpha'); $idprof = "SOCIETE_".$value."_MANDATORY"; - if (dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity) > 0) { - //header("Location: ".$_SERVER["PHP_SELF"]); - //exit; - } else { + $result = dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } @@ -299,10 +291,8 @@ if ($action == 'setprofidinvoicemandatory') { $status = GETPOST('status', 'alpha'); $idprof = "SOCIETE_".$value."_INVOICE_MANDATORY"; - if (dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity) > 0) { - //header("Location: ".$_SERVER["PHP_SELF"]); - //exit; - } else { + $result = dolibarr_set_const($db, $idprof, $status, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } @@ -311,10 +301,8 @@ if ($action == 'setprofidinvoicemandatory') { if ($action == 'sethideinactivethirdparty') { $status = GETPOST('status', 'alpha'); - if (dolibarr_set_const($db, "COMPANY_HIDE_INACTIVE_IN_COMBOBOX", $status, 'chaine', 0, '', $conf->entity) > 0) { - header("Location: ".$_SERVER["PHP_SELF"]); - exit; - } else { + $result = dolibarr_set_const($db, "COMPANY_HIDE_INACTIVE_IN_COMBOBOX", $status, 'chaine', 0, '', $conf->entity); + if ($result <= 0) { dol_print_error($db); } } @@ -331,6 +319,7 @@ if ($action == 'setonsearchandlistgooncustomerorsuppliercard') { } } + /* * View */ @@ -575,7 +564,7 @@ foreach ($dirsociete as $dirroot) { if ($modulequalified) { print '
'; - print $module->name; + print dol_escape_htmltag($module->name); print "\n"; if (method_exists($module, 'info')) { print $module->info($langs); @@ -589,7 +578,7 @@ foreach ($dirsociete as $dirroot) { print "\n"; //if ($conf->global->COMPANY_ADDON_PDF != "$name") //{ - print 'scandir.'&label='.urlencode($module->name).'">'; + print 'scandir.'&label='.urlencode($module->name).'">'; print img_picto($langs->trans("Enabled"), 'switch_on'); print ''; //} @@ -605,7 +594,7 @@ foreach ($dirsociete as $dirroot) { print "'."\n"; - print 'scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; + print 'scandir).'&label='.urlencode($module->name).'">'.img_picto($langs->trans("Disabled"), 'switch_off').''; print "'; if ($module->type == 'pdf') { - $linkspec = ''.img_object($langs->trans("Preview"), 'pdf').''; + $linkspec = ''.img_object($langs->trans("Preview"), 'pdf').''; } else { $linkspec = img_object($langs->trans("PreviewNotAvailable"), 'generic'); } @@ -724,7 +713,7 @@ foreach ($profid as $key => $val) { $i++; } -if ($conf->accounting->enabled) { +if (!empty($conf->accounting->enabled)) { print '
'.$langs->trans('CustomerAccountancyCodeShort')."
'.$langs->trans("AskForPreferredShippingMethod").'
trans('Gencod'); ?>
trans('Gencod'); ?>
trans('Gencod'); ?> control->tpl['barcode']; ?>
trans('Gencod'); ?>
trans('Gencod'); ?>
trans('Gencod'); ?> control->tpl['barcode']; ?>
'; print '
'; - if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) { + if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) { print $form->editfieldkey('SupplierCode', 'supplier_code', '', $object, 0); } print ''; - if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) { + if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) { print ''; // Barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { print ''; print ''; // Supplier - if (((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) + if (((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) || (!empty($conf->supplier_proposal->enabled) && !empty($user->rights->supplier_proposal->lire))) { print ''; print ''; @@ -2170,7 +2178,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print ''; } print ''; @@ -2199,7 +2207,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { print ''; print '"; // Supplier - if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) { + if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) { print ''; print ''; @@ -2666,7 +2674,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Supplier code - if (((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { + if (((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { print ''; @@ -2881,7 +2889,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Supplier - if (((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { + if (((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) && $object->fournisseur) { print ''; print '\n"; } + // Link user (you must create a contact to get a user) + /* + print ''; + */ + // Webservices url/key if (!empty($conf->syncsupplierwebservices->enabled)) { print ''; @@ -3122,7 +3146,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Subsidiaries list - if (empty($conf->global->SOCIETE_DISABLE_SUBSIDIARIES)) { + if (!empty($conf->global->SOCIETE_DISABLE_PARENTCOMPANY) && empty($conf->global->SOCIETE_DISABLE_SHOW_SUBSIDIARIES)) { $result = show_subsidiaries($conf, $langs, $db, $object); } diff --git a/htdocs/societe/class/api_contacts.class.php b/htdocs/societe/class/api_contacts.class.php index 3e7e1ac2080..e79c39a1955 100644 --- a/htdocs/societe/class/api_contacts.class.php +++ b/htdocs/societe/class/api_contacts.class.php @@ -97,6 +97,10 @@ class Contacts extends DolibarrApi $this->contact->fetchRoles(); } + if (isModEnabled('mailing')) { + $this->contact->getNoEmail(); + } + return $this->_cleanObjectDatas($this->contact); } @@ -141,6 +145,10 @@ class Contacts extends DolibarrApi $this->contact->fetchRoles(); } + if (isModEnabled('mailing')) { + $this->contact->getNoEmail(); + } + return $this->_cleanObjectDatas($this->contact); } @@ -250,6 +258,9 @@ class Contacts extends DolibarrApi if ($includeroles) { $contact_static->fetchRoles(); } + if (isModEnabled('mailing')) { + $contact_static->getNoEmail(); + } $obj_ret[] = $this->_cleanObjectDatas($contact_static); } @@ -285,6 +296,9 @@ class Contacts extends DolibarrApi if ($this->contact->create(DolibarrApiAccess::$user) < 0) { throw new RestException(500, "Error creating contact", array_merge(array($this->contact->error), $this->contact->errors)); } + if (isModEnabled('mailing') && !empty($this->contact->email) && isset($this->contact->no_email)) { + $this->contact->setNoEmail($this->contact->no_email); + } return $this->contact->id; } @@ -317,6 +331,10 @@ class Contacts extends DolibarrApi $this->contact->$field = $value; } + if (isModEnabled('mailing') && !empty($this->contact->email) && isset($this->contact->no_email)) { + $this->contact->setNoEmail($this->contact->no_email); + } + if ($this->contact->update($id, DolibarrApiAccess::$user, 1, '', '', 'update')) { return $this->get($id); } diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 962bbf021b8..5021712c010 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -425,8 +425,9 @@ class Thirdparties extends DolibarrApi // TODO Mutualise the list into object societe.class.php $objects = array( 'Adherent' => '/adherents/class/adherent.class.php', + 'Don' => '/don/class/don.class.php', 'Societe' => '/societe/class/societe.class.php', - 'Categorie' => '/categories/class/categorie.class.php', + //'Categorie' => '/categories/class/categorie.class.php', 'ActionComm' => '/comm/action/class/actioncomm.class.php', 'Propal' => '/comm/propal/class/propal.class.php', 'Commande' => '/commande/class/commande.class.php', @@ -442,12 +443,13 @@ class Thirdparties extends DolibarrApi 'FactureFournisseur' => '/fourn/class/fournisseur.facture.class.php', 'SupplierProposal' => '/supplier_proposal/class/supplier_proposal.class.php', 'ProductFournisseur' => '/fourn/class/fournisseur.product.class.php', - 'Livraison' => '/delivery/class/delivery.class.php', + 'Delivery' => '/delivery/class/delivery.class.php', 'Product' => '/product/class/product.class.php', 'Project' => '/projet/class/project.class.php', 'Ticket' => '/ticket/class/ticket.class.php', 'User' => '/user/class/user.class.php', - 'Account' => '/compta/bank/class/account.class.php' + 'Account' => '/compta/bank/class/account.class.php', + 'ConferenceOrBoothAttendee' => '/eventorganization/class/conferenceorboothattendee.class.php' ); //First, all core objects must update their tables diff --git a/htdocs/societe/class/companybankaccount.class.php b/htdocs/societe/class/companybankaccount.class.php index 717398c92d4..4ddbd1c613f 100644 --- a/htdocs/societe/class/companybankaccount.class.php +++ b/htdocs/societe/class/companybankaccount.class.php @@ -127,7 +127,7 @@ class CompanyBankAccount extends Account // End call triggers if (!$error) { - return 1; + return $this->id; } else { return 0; } @@ -136,7 +136,7 @@ class CompanyBankAccount extends Account } } } else { - print $this->db->error(); + $this->error = $this->db->lasterror(); return 0; } } @@ -150,7 +150,7 @@ class CompanyBankAccount extends Account */ public function update(User $user = null, $notrigger = 0) { - global $conf; + global $conf, $langs; $error = 0; @@ -207,7 +207,11 @@ class CompanyBankAccount extends Account return 1; } } else { - $this->error = $this->db->lasterror(); + if ($this->db->errno() == 'DB_ERROR_RECORD_ALREADY_EXISTS') { + $this->error = $langs->trans('ErrorDuplicateField'); + } else { + $this->error = $this->db->lasterror(); + } return -1; } } diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php index d13893ca7dd..cb20caca7ab 100644 --- a/htdocs/societe/class/societe.class.php +++ b/htdocs/societe/class/societe.class.php @@ -17,6 +17,7 @@ * Copyright (C) 2019-2020 Josep Lluís Amador * Copyright (C) 2019-2021 Frédéric France * Copyright (C) 2020 Open-Dsi + * Copyright (C) 2022 ButterflyOfFire * * 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 @@ -231,6 +232,7 @@ class Societe extends CommonObject 'fk_incoterms' =>array('type'=>'integer', 'label'=>'Fk incoterms', 'enabled'=>1, 'visible'=>-1, 'position'=>425), 'location_incoterms' =>array('type'=>'varchar(255)', 'label'=>'Location incoterms', 'enabled'=>1, 'visible'=>-1, 'position'=>430), 'model_pdf' =>array('type'=>'varchar(255)', 'label'=>'Model pdf', 'enabled'=>1, 'visible'=>0, 'position'=>435), + 'last_main_doc' =>array('type'=>'varchar(255)', 'label'=>'LastMainDoc', 'enabled'=>1, 'visible'=>-1, 'position'=>270), 'fk_multicurrency' =>array('type'=>'integer', 'label'=>'Fk multicurrency', 'enabled'=>1, 'visible'=>-1, 'position'=>440), 'multicurrency_code' =>array('type'=>'varchar(255)', 'label'=>'Multicurrency code', 'enabled'=>1, 'visible'=>-1, 'position'=>445), 'fk_account' =>array('type'=>'integer', 'label'=>'AccountingAccount', 'enabled'=>1, 'visible'=>-1, 'position'=>450), @@ -1269,7 +1271,6 @@ class Societe extends CommonObject $this->address = $this->address ?trim($this->address) : trim($this->address); $this->zip = $this->zip ?trim($this->zip) : trim($this->zip); $this->town = $this->town ?trim($this->town) : trim($this->town); - $this->setUpperOrLowerCase(); $this->state_id = trim($this->state_id); $this->country_id = ($this->country_id > 0) ? $this->country_id : 0; $this->phone = trim($this->phone); @@ -1278,7 +1279,7 @@ class Societe extends CommonObject $this->fax = trim($this->fax); $this->fax = preg_replace("/\s/", "", $this->fax); $this->fax = preg_replace("/\./", "", $this->fax); - $this->email = trim($this->email); + $this->email = trim($this->email); $this->url = $this->url ?clean_url($this->url, 0) : ''; $this->note_private = trim($this->note_private); $this->note_public = trim($this->note_public); @@ -1411,7 +1412,7 @@ class Societe extends CommonObject } } } - + $this->setUpperOrLowerCase(); if ($result >= 0) { dol_syslog(get_class($this)."::update verify ok or not done"); @@ -1580,6 +1581,7 @@ class Societe extends CommonObject $lmember->phone = $this->phone; $lmember->state_id = $this->state_id; $lmember->country_id = $this->country_id; + $lmember->default_lang = $this->default_lang; $result = $lmember->update($user, 0, 1, 1, 1); // Use nosync to 1 to avoid cyclic updates if ($result < 0) { @@ -2289,7 +2291,7 @@ class Societe extends CommonObject $desc = trim($desc); // Check parameters - if (!$remise > 0) { + if (!($remise > 0)) { $this->error = $langs->trans("ErrorWrongValueForParameter", "1"); return -1; } @@ -2806,7 +2808,7 @@ class Societe extends CommonObject } } if (empty($option) || preg_match('/supplier/', $option)) { - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $this->fournisseur) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $this->fournisseur) { $s .= '<'.$tag.' class="vendor-back" title="'.$langs->trans("Supplier").'" href="'.DOL_URL_ROOT.'/fourn/card.php?socid='.$this->id.'">'.dol_substr($langs->trans("Supplier"), 0, 1).''; } } @@ -3790,6 +3792,20 @@ class Societe extends CommonObject } } + //Verify NIF if country is DZ + //Returns: 1 if NIF ok, -1 if NIF bad, 0 if unexpected bad + if ($idprof == 1 && $soc->country_code == 'DZ') { + $string = trim($this->idprof1); + $string = preg_replace('/(\s)/', '', $string); + + //Check NIF + if (preg_match('/(^[0-9]{15}$)/', $string)) { + return 1; + } else { + return -1; + } + } + return $ok; } @@ -3832,6 +3848,9 @@ class Societe extends CommonObject if ($idprof == 1 && $thirdparty->country_code == 'IN') { $url = 'http://www.tinxsys.com/TinxsysInternetWeb/dealerControllerServlet?tinNumber='.$strippedIdProf1.';&searchBy=TIN&backPage=searchByTin_Inter.jsp'; } + if ($idprof == 1 && $thirdparty->country_code == 'DZ') { + $url = 'http://nif.mfdgi.gov.dz/nif.asp?Nif='.$strippedIdProf1; + } if ($idprof == 1 && $thirdparty->country_code == 'PT') { $url = 'http://www.nif.pt/'.$strippedIdProf1; } @@ -4006,12 +4025,25 @@ class Societe extends CommonObject global $conf, $user, $langs; dol_syslog(get_class($this)."::create_from_member", LOG_DEBUG); + $fullname = $member->getFullName($langs); - $name = $socname ? $socname : $member->societe; - if (empty($name)) { - $name = $member->getFullName($langs); + if ($member->morphy == 'mor') { + if (empty($socname)) { + $socname = $member->company? $member->company : $member->societe; + } + if (!empty($fullname) && empty($socalias)) { + $socalias = $fullname; + } + } elseif (empty($socname) && $member->morphy == 'phy') { + if (empty($socname)) { + $socname = $fullname; + } + if (!empty($member->company) && empty($socalias)) { + $socalias = $member->company; + } } + $name = $socname; $alias = $socalias ? $socalias : ''; // Positionne parametres diff --git a/htdocs/societe/consumption.php b/htdocs/societe/consumption.php index f74758296a9..03c78a0c07b 100644 --- a/htdocs/societe/consumption.php +++ b/htdocs/societe/consumption.php @@ -162,7 +162,7 @@ if ($object->client) { $obj = $db->fetch_object($resql); $nbFactsClient = $obj->nb; $thirdTypeArray['customer'] = $langs->trans("customer"); - if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (isModEnabled("propal") && $user->rights->propal->lire) { $elementTypeArray['propal'] = $langs->transnoentitiesnoconv('Proposals'); } if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { @@ -199,10 +199,10 @@ if ($object->fournisseur) { $obj = $db->fetch_object($resql); $nbCmdsFourn = $obj->nb; $thirdTypeArray['supplier'] = $langs->trans("supplier"); - if ((isModEnabled('fournisseur') && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_invoice->enabled) && $user->rights->supplier_invoice->lire)) { + if ((isModEnabled('fournisseur') && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_invoice") && $user->rights->supplier_invoice->lire)) { $elementTypeArray['supplier_invoice'] = $langs->transnoentitiesnoconv('SuppliersInvoices'); } - if ((isModEnabled('fournisseur') && $user->rights->fournisseur->commande->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && $user->rights->supplier_order->lire)) { + if ((isModEnabled('fournisseur') && $user->rights->fournisseur->commande->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && $user->rights->supplier_order->lire)) { $elementTypeArray['supplier_order'] = $langs->transnoentitiesnoconv('SuppliersOrders'); } if (isModEnabled('supplier_proposal') && $user->rights->supplier_proposal->lire) { @@ -361,7 +361,8 @@ if (!empty($sql_select)) { $sql .= " AND ".$doc_number." LIKE '%".$db->escape($sref)."%'"; } if ($sprod_fulldescr) { - $sql .= " AND (d.description LIKE '%".$db->escape($sprod_fulldescr)."%' OR d.description LIKE '%".$db->escape(dol_htmlentities($sprod_fulldescr))."%'"; + // We test both case description is correctly saved of was save after dol_escape_htmltag(). + $sql .= " AND (d.description LIKE '%".$db->escape($sprod_fulldescr)."%' OR d.description LIKE '%".$db->escape(dol_escape_htmltag($sprod_fulldescr))."%'"; if (GETPOST('type_element') != 'fichinter') { $sql .= " OR p.ref LIKE '%".$db->escape($sprod_fulldescr)."%'"; } diff --git a/htdocs/societe/contact.php b/htdocs/societe/contact.php index a09c9751f1f..4ecfc2a8cf4 100644 --- a/htdocs/societe/contact.php +++ b/htdocs/societe/contact.php @@ -173,7 +173,7 @@ print '
'; if ($action != 'presend') { // Contacts list if (empty($conf->global->SOCIETE_DISABLE_CONTACTS)) { - $result = show_contacts($conf, $langs, $db, $object, $_SERVER["PHP_SELF"].'?socid='.$object->id); + $result = show_contacts($conf, $langs, $db, $object, $_SERVER["PHP_SELF"].'?socid='.$object->id, 1); } } diff --git a/htdocs/societe/index.php b/htdocs/societe/index.php index f4637186b4d..a13d8a3de99 100644 --- a/htdocs/societe/index.php +++ b/htdocs/societe/index.php @@ -178,7 +178,7 @@ if (!empty($conf->use_javascript_ajax) && ((round($third['prospect']) ? 1 : 0) + $statstring .= "
"; } $statstring2 = ''; - if (((isModEnabled('societe') && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled('supplier_order') && $user->rights->supplier_order->lire) || (isModEnabled('supplier_invoice') && $user->rights->supplier_invoice->lire)) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS)) { + if (((isModEnabled('fournisseur') && $user->rights->fournisseur->facture->lire && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled('supplier_order') && $user->rights->supplier_order->lire) || (isModEnabled('supplier_invoice') && $user->rights->supplier_invoice->lire)) && empty($conf->global->SOCIETE_DISABLE_SUPPLIERS_STATS)) { $statstring2 = ""; $statstring2 .= ''; $statstring2 .= ""; diff --git a/htdocs/societe/list.php b/htdocs/societe/list.php index a57b498490b..bf3ec6eb041 100644 --- a/htdocs/societe/list.php +++ b/htdocs/societe/list.php @@ -50,17 +50,11 @@ $show_files = GETPOST('show_files', 'int'); $confirm = GETPOST('confirm', 'alpha'); $toselect = GETPOST('toselect', 'array'); $contextpage = GETPOST('contextpage', 'aZ') ?GETPOST('contextpage', 'aZ') : 'thirdpartylist'; - +$optioncss = GETPOST('optioncss', 'alpha'); if ($contextpage == 'poslist') { - $_GET['optioncss'] = 'print'; + $optioncss = 'print'; } - -// Security check -$socid = GETPOST('socid', 'int'); -if ($user->socid) { - $socid = $user->socid; -} -$result = restrictedArea($user, 'societe', $socid, ''); +$mode = GETPOST("mode", 'alpha'); $search_all = trim(GETPOST('search_all', 'alphanohtml') ?GETPOST('search_all', 'alphanohtml') : GETPOST('sall', 'alphanohtml')); $search_cti = preg_replace('/^0+/', '', preg_replace('/[^0-9]/', '', GETPOST('search_cti', 'alphanohtml'))); // Phone number without any special chars @@ -105,8 +99,6 @@ $search_import_key = trim(GETPOST("search_import_key", "alpha")); $search_parent_name = trim(GETPOST('search_parent_name', 'alpha')); $type = GETPOST('type', 'alpha'); -$optioncss = GETPOST('optioncss', 'alpha'); -$mode = GETPOST("mode", 'alpha'); $place = GETPOST('place', 'aZ09') ? GETPOST('place', 'aZ09') : '0'; // $place is string id of table for Bar or Restaurant $diroutputmassaction = $conf->societe->dir_output.'/temp/massgeneration/'.$user->id; @@ -195,7 +187,7 @@ if (($tmp = $langs->transnoentities("ProfId5".$mysoc->country_code)) && $tmp != if (($tmp = $langs->transnoentities("ProfId6".$mysoc->country_code)) && $tmp != "ProfId6".$mysoc->country_code && $tmp != '-') { $fieldstosearchall['s.idprof6'] = 'ProfId6'; } -if (!empty($conf->barcode->enabled)) { +if (isModEnabled('barcode')) { $fieldstosearchall['s.barcode'] = 'Gencod'; } // Personalized search criterias. Example: $conf->global->THIRDPARTY_QUICKSEARCH_ON_FIELDS = 's.nom=ThirdPartyName;s.name_alias=AliasNameShort;s.code_client=CustomerCode' @@ -225,11 +217,11 @@ $arrayfields = array( 's.rowid'=>array('label'=>"TechnicalID", 'position'=>1, 'checked'=>(!empty($conf->global->MAIN_SHOW_TECHNICAL_ID)), 'enabled'=>(!empty($conf->global->MAIN_SHOW_TECHNICAL_ID))), 's.nom'=>array('label'=>"ThirdPartyName", 'position'=>2, 'checked'=>1), 's.name_alias'=>array('label'=>"AliasNameShort", 'position'=>3, 'checked'=>1), - 's.barcode'=>array('label'=>"Gencod", 'position'=>5, 'checked'=>1, 'enabled'=>(!empty($conf->barcode->enabled))), + 's.barcode'=>array('label'=>"Gencod", 'position'=>5, 'checked'=>1, 'enabled'=>(isModEnabled('barcode'))), 's.code_client'=>array('label'=>"CustomerCodeShort", 'position'=>10, 'checked'=>$checkedcustomercode), - 's.code_fournisseur'=>array('label'=>"SupplierCodeShort", 'position'=>11, 'checked'=>$checkedsuppliercode, 'enabled'=>((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), + 's.code_fournisseur'=>array('label'=>"SupplierCodeShort", 'position'=>11, 'checked'=>$checkedsuppliercode, 'enabled'=>((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))), 's.code_compta'=>array('label'=>"CustomerAccountancyCodeShort", 'position'=>13, 'checked'=>$checkedcustomeraccountcode), - 's.code_compta_fournisseur'=>array('label'=>"SupplierAccountancyCodeShort", 'position'=>14, 'checked'=>$checkedsupplieraccountcode, 'enabled'=>((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled))), + 's.code_compta_fournisseur'=>array('label'=>"SupplierAccountancyCodeShort", 'position'=>14, 'checked'=>$checkedsupplieraccountcode, 'enabled'=>((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice"))), 's.address'=>array('label'=>"Address", 'position'=>19, 'checked'=>0), 's.zip'=>array('label'=>"Zip", 'position'=>20, 'checked'=>1), 's.town'=>array('label'=>"Town", 'position'=>21, 'checked'=>0), @@ -268,6 +260,14 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php'; $object->fields = dol_sort_array($object->fields, 'position'); $arrayfields = dol_sort_array($arrayfields, 'position'); +// Security check +$socid = GETPOST('socid', 'int'); +if ($user->socid) { + $socid = $user->socid; +} +$result = restrictedArea($user, 'societe', $socid, ''); + + /* * Actions @@ -638,7 +638,7 @@ if ($search_type == '0') { if ($search_status != '' && $search_status >= 0) { $sql .= natural_search("s.status", $search_status, 2); } -if (!empty($conf->barcode->enabled) && $search_barcode) { +if (isModEnabled('barcode') && $search_barcode) { $sql .= natural_search("s.barcode", $search_barcode); } if ($search_price_level && $search_price_level != '-1') { @@ -731,7 +731,7 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && ( } $help_url = 'EN:Module_Third_Parties|FR:Module_Tiers|ES:Empresas'; -llxHeader('', $langs->trans("ThirdParty"), $help_url); +llxHeader('', $title, $help_url); $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { @@ -980,7 +980,7 @@ if (empty($type) || $type == 'c' || $type == 'p') { } if (empty($type) || $type == 'f') { - if (!empty($conf->fournisseur->enabled) && !empty($conf->categorie->enabled) && $user->rights->categorie->lire) { + if (isModEnabled("fournisseur") && !empty($conf->categorie->enabled) && $user->rights->categorie->lire) { require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php'; $moreforfilter .= '
'; $tmptitle = $langs->trans('Categories'); @@ -1583,7 +1583,7 @@ while ($i < min($num, $limit)) { } } if (!empty($arrayfields['s.email']['checked'])) { - print '
\n"; + print '\n"; if (!$i) { $totalarray['nbfield']++; } @@ -1737,9 +1737,10 @@ while ($i < min($num, $limit)) { $totalarray['nbfield']++; } } + // Import key if (!empty($arrayfields['s.import_key']['checked'])) { - print '\n"; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/societe/notify/card.php b/htdocs/societe/notify/card.php index 8729ed3b46e..45c07c83b76 100644 --- a/htdocs/societe/notify/card.php +++ b/htdocs/societe/notify/card.php @@ -183,7 +183,7 @@ if ($result > 0) { print ''; } - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) && $object->fournisseur && !empty($user->rights->fournisseur->lire)) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) && $object->fournisseur && !empty($user->rights->fournisseur->lire)) { print ''; @@ -1288,6 +1290,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $morehtmlright = dolGetButtonTitle($langs->trans('Add'), '', 'fa fa-plus-circle', $_SERVER["PHP_SELF"] . '?socid=' . $object->id . '&action=create'); } + print load_fiche_titre($langs->trans("BankAccounts"), $morehtmlright, 'bank'); $rib_list = $object->get_all_rib(); @@ -1453,6 +1456,10 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' // Edit/Delete print '
'; $tmpcode = $object->code_fournisseur; if (empty($tmpcode) && !empty($modCodeFournisseur->code_auto)) { @@ -1502,7 +1510,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print '
'.$form->editfieldkey('Gencod', 'barcode', '', $object, 0).''; print img_picto('', 'barcode', 'class="pictofixedwidth"'); @@ -1762,7 +1770,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Supplier - if ((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled) || !empty($conf->supplier_invoice->enabled)) { + if ((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order") || isModEnabled("supplier_invoice")) { print '
'.$form->editfieldkey('SuppliersCategoriesShort', 'suppcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_SUPPLIER, null, 'parent', null, null, 1); print img_picto('', 'category', 'class="pictofixedwidth"').$form->multiselectarray('suppcats', $cate_arbo, GETPOST('suppcats', 'array'), null, null, 'quatrevingtpercent widthcentpercentminusx', 0, 0); @@ -2159,7 +2167,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print '
'.$form->editfieldkey('Supplier', 'fournisseur', '', $object, 0, 'string', '', 1).'
'; - if ((!empty($conf->fournisseur->enabled) && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (!empty($conf->supplier_order->enabled) && !empty($user->rights->supplier_order->lire)) || (!empty($conf->supplier_invoice->enabled) && !empty($user->rights->supplier_invoice->lire))) { + if ((isModEnabled("fournisseur") && !empty($user->rights->fournisseur->lire) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || (isModEnabled("supplier_order") && !empty($user->rights->supplier_order->lire)) || (isModEnabled("supplier_invoice") && !empty($user->rights->supplier_invoice->lire))) { print $form->editfieldkey('SupplierCode', 'supplier_code', '', $object, 0); } print '
'.$form->editfieldkey('Gencod', 'barcode', '', $object, 0).''; print img_picto('', 'barcode'); @@ -2461,7 +2469,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print "
'.$form->editfieldkey('SuppliersCategoriesShort', 'suppcats', '', $object, 0).''; $cate_arbo = $form->select_all_categories(Categorie::TYPE_SUPPLIER, null, null, null, null, 1); @@ -2518,7 +2526,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { $maxfilesizearray = getMaxFileSizeArray(); $maxmin = $maxfilesizearray['maxmin']; if ($maxmin > 0) { - $texte .= ''; // MAX_FILE_SIZE must precede the field type=file + print ''; // MAX_FILE_SIZE must precede the field type=file } print ''; print '
'; print $langs->trans('SupplierCode').''; print showValueWithClipboardCPButton(dol_escape_htmltag($object->code_fournisseur)); @@ -2679,7 +2687,7 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { } // Barcode - if (!empty($conf->barcode->enabled)) { + if (isModEnabled('barcode')) { print '
'; print $langs->trans('Gencod').''.showValueWithClipboardCPButton(dol_escape_htmltag($object->barcode)); print '
'.$langs->trans("SuppliersCategoriesShort").''; print $form->showCategories($object->id, Categorie::TYPE_SUPPLIER, 1); @@ -3033,6 +3041,22 @@ if (is_object($objcanvas) && $objcanvas->displayCanvasExists($action)) { print "
'.$langs->trans("DolibarrLogin").''; + if ($object->user_id) { + $dolibarr_user = new User($db); + $result = $dolibarr_user->fetch($object->user_id); + print $dolibarr_user->getLoginUrl(-1); + } else { + //print ''.$langs->trans("NoDolibarrAccess").''; + if (!$object->user_id && $user->rights->user->user->creer) { + print ''.img_picto($langs->trans("CreateDolibarrLogin"), 'add').' '.$langs->trans("CreateDolibarrLogin").''; + } + } + print '
'.$langs->trans("WebServiceURL").''.dol_print_url($object->webservices_url).'
'.$langs->trans("Suppliers").''.round($third['supplier']).'
'.dol_print_email($obj->email, $obj->rowid, $obj->socid, 'AC_EMAIL', 0, 0, 1)."'.dol_print_email($obj->email, $obj->rowid, $obj->rowid, 'AC_EMAIL', 0, 0, 1)."'; - print $obj->import_key; + print ''; + print dol_escape_htmltag($obj->import_key); print "
'; print $langs->trans('SupplierCode').''; print showValueWithClipboardCPButton(dol_escape_htmltag($object->code_fournisseur)); diff --git a/htdocs/societe/paymentmodes.php b/htdocs/societe/paymentmodes.php index 9eef585fb45..2c2c125530b 100644 --- a/htdocs/societe/paymentmodes.php +++ b/htdocs/societe/paymentmodes.php @@ -682,8 +682,9 @@ $title = $langs->trans("ThirdParty"); if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/thirdpartynameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) { $title = $object->name." - ".$langs->trans('PaymentInformation'); } +$help_url = ''; -llxHeader(); +llxHeader('', $title, $help_url); $head = societe_prepare_head($object); @@ -778,7 +779,7 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' $obj = $db->fetch_object($resql); $nbFactsClient = $obj->nb; $thirdTypeArray['customer'] = $langs->trans("customer"); - if (!empty($conf->propal->enabled) && $user->rights->propal->lire) { + if (isModEnabled("propal") && $user->rights->propal->lire) { $elementTypeArray['propal'] = $langs->transnoentitiesnoconv('Proposals'); } if (!empty($conf->commande->enabled) && $user->rights->commande->lire) { @@ -814,7 +815,8 @@ if ($socid && $action != 'edit' && $action != 'create' && $action != 'editcard' print ''; print ''; print ''; - print ''; + print img_picto($langs->trans("CreateCustomerOnStripe"), 'stripe'); + print ''; print ''; } print '
'; if ($permissiontoaddupdatepaymentinformation) { + print ''; + print img_picto($langs->trans("CreateBAN"), 'stripe'); + print ''; + print ''; print img_picto($langs->trans("Modify"), 'edit'); print ''; @@ -1624,7 +1631,7 @@ if ($socid && $action == 'edit' && $permissiontoaddupdatepaymentinformation) { print '
'; print ''; - if ($conf->prelevement->enabled) { + if (isModEnabled('prelevement')) { print '
'; print '
'; @@ -1715,10 +1722,10 @@ if ($socid && $action == 'create' && $permissiontoaddupdatepaymentinformation) { print ''; print ''; - print ''; + print ''; print ''; - print ''; + print ''; // Show fields of bank account foreach ($companybankaccount->getFieldsToShow(1) as $val) { @@ -1785,7 +1792,7 @@ if ($socid && $action == 'create' && $permissiontoaddupdatepaymentinformation) { print '
'.$langs->trans("LabelRIB").'
'.$langs->trans("Bank").'
'; - if ($conf->prelevement->enabled) { + if (isModEnabled('prelevement')) { print '
'; print ''; @@ -1811,7 +1818,7 @@ if ($socid && $action == 'create' && $permissiontoaddupdatepaymentinformation) { print dol_get_fiche_end(); - dol_set_focus('#label'); + dol_set_focus('#bank'); print $form->buttonsSaveCancel("Add"); } diff --git a/htdocs/societe/price.php b/htdocs/societe/price.php index 897a372dc27..314fb663631 100644 --- a/htdocs/societe/price.php +++ b/htdocs/societe/price.php @@ -543,6 +543,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { print ''; print ''; + print '
'; print '
'; print ''; @@ -562,14 +563,14 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { if (count($prodcustprice->lines) > 0 || $search_prod) { print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; print ''; print ''; - print ''; - print ''; + print ''; + print ''; print ''; print ''; print ''; @@ -633,6 +634,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) { } print "
"; + print '
'; print ""; } diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php index df10c0d4bf9..b1e5174820c 100644 --- a/htdocs/societe/societecontact.php +++ b/htdocs/societe/societecontact.php @@ -128,17 +128,10 @@ $contactstatic = new Contact($db); $userstatic = new User($db); -/* *************************************************************************** */ -/* */ -/* Mode vue et edition */ -/* */ -/* *************************************************************************** */ +// View and edit if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref) > 0) { - $soc = new Societe($db); - $soc->fetch($object->socid); - $head = societe_prepare_head($object); print dol_get_fiche_head($head, 'contact', $langs->trans("ThirdParty"), -1, 'company'); diff --git a/htdocs/stripe/admin/stripe.php b/htdocs/stripe/admin/stripe.php index 77c8d9a03b2..eb947d1dc28 100644 --- a/htdocs/stripe/admin/stripe.php +++ b/htdocs/stripe/admin/stripe.php @@ -2,7 +2,7 @@ /* Copyright (C) 2017 Alexandre Spangaro * Copyright (C) 2017 Olivier Geffroy * Copyright (C) 2017 Saasprov - * Copyright (C) 2018-2021 Thibault FOUCART + * Copyright (C) 2018-2022 Thibault FOUCART * Copyright (C) 2018 Frédéric France * * This program is free software; you can redistribute it and/or modify @@ -56,72 +56,78 @@ if ($action == 'setvalue' && $user->admin) { if (empty($conf->stripeconnect->enabled)) { $result = dolibarr_set_const($db, "STRIPE_TEST_PUBLISHABLE_KEY", GETPOST('STRIPE_TEST_PUBLISHABLE_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_TEST_SECRET_KEY", GETPOST('STRIPE_TEST_SECRET_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_TEST_WEBHOOK_ID", GETPOST('STRIPE_TEST_WEBHOOK_ID', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_TEST_WEBHOOK_KEY", GETPOST('STRIPE_TEST_WEBHOOK_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_LIVE_PUBLISHABLE_KEY", GETPOST('STRIPE_LIVE_PUBLISHABLE_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_LIVE_SECRET_KEY", GETPOST('STRIPE_LIVE_SECRET_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_LIVE_WEBHOOK_ID", GETPOST('STRIPE_LIVE_WEBHOOK_ID', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_LIVE_WEBHOOK_KEY", GETPOST('STRIPE_LIVE_WEBHOOK_KEY', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CREDITOR", GETPOST('ONLINE_PAYMENT_CREDITOR', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_BANK_ACCOUNT_FOR_PAYMENTS", GETPOST('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS', 'int'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_USER_ACCOUNT_FOR_ACTIONS", GETPOST('STRIPE_USER_ACCOUNT_FOR_ACTIONS', 'int'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS", GETPOST('STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS', 'int'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } + if (GETPOSTISSET('STRIPE_LOCATION')) { + $result = dolibarr_set_const($db, "STRIPE_LOCATION", GETPOST('STRIPE_LOCATION', 'alpha'), 'chaine', 0, '', $conf->entity); + if (!$result > 0) { + $error++; + } + } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_CSS_URL", GETPOST('ONLINE_PAYMENT_CSS_URL', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_FORM", GETPOST('ONLINE_PAYMENT_MESSAGE_FORM', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_OK", GETPOST('ONLINE_PAYMENT_MESSAGE_OK', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_MESSAGE_KO", GETPOST('ONLINE_PAYMENT_MESSAGE_KO', 'restricthtml'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } $result = dolibarr_set_const($db, "ONLINE_PAYMENT_SENDEMAIL", GETPOST('ONLINE_PAYMENT_SENDEMAIL'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } // Stock decrement @@ -131,12 +137,12 @@ if ($action == 'setvalue' && $user->admin) { // Payment token for URL $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN", GETPOST('PAYMENT_SECURITY_TOKEN', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } if (empty($conf->use_javascript_ajax)) { $result = dolibarr_set_const($db, "PAYMENT_SECURITY_TOKEN_UNIQUE", GETPOST('PAYMENT_SECURITY_TOKEN_UNIQUE', 'alpha'), 'chaine', 0, '', $conf->entity); - if (!$result > 0) { + if (!($result > 0)) { $error++; } } @@ -221,10 +227,10 @@ if (empty($conf->stripeconnect->enabled)) { print '
'; print ''.$langs->trans("STRIPE_TEST_WEBHOOK_KEY").''; if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - print ''; + print ''; print '
'; } - print ''; + print ''; $out = img_picto('', 'globe').' '.$langs->trans("ToOfferALinkForTestWebhook").' '; $url = dol_buildpath('/public/stripe/ipn.php?test', 3); $out .= ''; @@ -272,22 +278,22 @@ if (empty($conf->stripeconnect->enabled)) { if (empty($conf->stripeconnect->enabled)) { print '
'; print ''.$langs->trans("STRIPE_LIVE_PUBLISHABLE_KEY").''; - print ''; + print ''; print '
'; print ''.$langs->trans("STRIPE_LIVE_SECRET_KEY").''; - print ''; + print ''; print '
'; print ''.$langs->trans("STRIPE_LIVE_WEBHOOK_KEY").''; if ($conf->global->MAIN_FEATURES_LEVEL >= 2) { - print ''; + print ''; print '
'; } - print ''; - $out = img_picto('', 'globe').' '.$langs->trans("ToOfferALinkForLiveWebhook").' '; + print ''; + $out = img_picto('', 'globe', 'class="pictofixedwidth"').' '.$langs->trans("ToOfferALinkForLiveWebhook").' '; $url = dol_buildpath('/public/stripe/ipn.php', 3); $out .= ''; $out .= ajax_autoselect("onlinelivewebhookurl", 0); @@ -341,38 +347,94 @@ print "
'; print $langs->trans("PublicVendorName").''; -print ''; +print ''; print '   '.$langs->trans("Example").': '.$mysoc->name.''; print '
'; print $langs->trans("StripeUserAccountForActions").''; -print img_picto('', 'user').$form->select_dolusers($conf->global->STRIPE_USER_ACCOUNT_FOR_ACTIONS, 'STRIPE_USER_ACCOUNT_FOR_ACTIONS', 0); +print img_picto('', 'user', 'class="pictofixedwidth"').$form->select_dolusers(getDolGlobalString('STRIPE_USER_ACCOUNT_FOR_ACTIONS'), 'STRIPE_USER_ACCOUNT_FOR_ACTIONS', 0); print '
'; print $langs->trans("BankAccount").''; -print img_picto('', 'bank_account').' '; -$form->select_comptes($conf->global->STRIPE_BANK_ACCOUNT_FOR_PAYMENTS, 'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); +print img_picto('', 'bank_account', 'class="pictofixedwidth"'); +$form->select_comptes(getDolGlobalString('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS'), 'STRIPE_BANK_ACCOUNT_FOR_PAYMENTS', 0, '', 1); print '
'; print $langs->trans("BankAccountForBankTransfer").''; - print img_picto('', 'bank_account').' '; - $form->select_comptes($conf->global->STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS, 'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS', 0, '', 1); + print img_picto('', 'bank_account', 'class="pictofixedwidth"'); + $form->select_comptes(getDolGlobalString('STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS'), 'STRIPE_BANK_ACCOUNT_FOR_BANKTRANSFERS', 0, '', 1); + print '
'; + print $langs->trans("STRIPE_CARD_PRESENT").''; + if ($conf->use_javascript_ajax) { + print ajax_constantonoff('STRIPE_CARD_PRESENT'); + } else { + $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); + print $form->selectarray("STRIPE_CARD_PRESENT", $arrval, $conf->global->STRIPE_CARD_PRESENT); + } + print '
'; + print $langs->trans("TERMINAL_LOCATION").''; + $service = 'StripeTest'; + $servicestatus = 0; + if (!empty($conf->global->STRIPE_LIVE) && !GETPOST('forcesandbox', 'alpha')) { + $service = 'StripeLive'; + $servicestatus = 1; + } + global $stripearrayofkeysbyenv; + $site_account = $stripearrayofkeysbyenv[$servicestatus]['secret_key']; + if (!empty($site_account)) { + \Stripe\Stripe::setApiKey($site_account); + } + if (!empty($conf->stripe->enabled) && (empty($conf->global->STRIPE_LIVE) || GETPOST('forcesandbox', 'alpha'))) { + $service = 'StripeTest'; + $servicestatus = '0'; + dol_htmloutput_mesg($langs->trans('YouAreCurrentlyInSandboxMode', 'Stripe'), '', 'warning'); + } else { + $service = 'StripeLive'; + $servicestatus = '1'; + } + $stripe = new Stripe($db); + if (!empty($site_account)) { + // If $site_account not defined, then key not set and no way to call API Location + $stripeacc = $stripe->getStripeAccount($service); + if ($stripeacc) { + $locations = \Stripe\Terminal\Location::all('', array("stripe_account" => $stripeacc)); + } else { + $locations = \Stripe\Terminal\Location::all(); + } + } + + $location = array(); + $location[""] = $langs->trans("NotDefined"); + foreach ($locations as $locations) { + $location[$locations->id] = $locations->display_name; + } + print $form->selectarray("STRIPE_LOCATION", $location, getDolGlobalString('STRIPE_LOCATION')); print '
'; - print $langs->trans("STRIPE_PAYMENT_REQUEST_API").''; + print $langs->trans("STRIPE_PAYMENT_REQUEST_API").' ?? Not used, what is it for ??'; if ($conf->use_javascript_ajax) { print ajax_constantonoff('STRIPE_PAYMENT_REQUEST_API'); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); - print $form->selectarray("STRIPE_PAYMENT_REQUEST_API", $arrval, $conf->global->STRIPE_PAYMENT_REQUEST_API); + print $form->selectarray("STRIPE_PAYMENT_REQUEST_API", $arrval, getDolGlobalString('STRIPE_PAYMENT_REQUEST_API')); } print '
'; print $langs->trans("ONLINE_PAYMENT_SENDEMAIL").''; +print img_picto('', 'email', 'class="pictofixedwidth"'); print ''; print '   '.$langs->trans("Example").': myemail@myserver.com, Payment service <myemail2@myserver2.com>'; print '
'; print $langs->trans("SecurityTokenIsUnique").''; if ($conf->use_javascript_ajax) { - print ajax_constantonoff('PAYMENT_SECURITY_TOKEN_UNIQUE'); + print ajax_constantonoff('PAYMENT_SECURITY_TOKEN_UNIQUE', null, null, 0, 0, 1); } else { $arrval = array('0' => $langs->trans("No"), '1' => $langs->trans("Yes")); print $form->selectarray("PAYMENT_SECURITY_TOKEN_UNIQUE", $arrval, $conf->global->PAYMENT_SECURITY_TOKEN_UNIQUE); diff --git a/htdocs/stripe/ajax/ajax.php b/htdocs/stripe/ajax/ajax.php new file mode 100644 index 00000000000..cf6ec53d580 --- /dev/null +++ b/htdocs/stripe/ajax/ajax.php @@ -0,0 +1,124 @@ + + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/stripe/ajax/ajax.php + * \brief Ajax action for Stipe ie: Terminal + */ + +if (!defined('NOCSRFCHECK')) { + define('NOCSRFCHECK', '1'); +} +if (!defined('NOTOKENRENEWAL')) { + define('NOTOKENRENEWAL', '1'); +} +if (!defined('NOREQUIREMENU')) { + define('NOREQUIREMENU', '1'); +} +if (!defined('NOREQUIREHTML')) { + define('NOREQUIREHTML', '1'); +} +if (!defined('NOREQUIREAJAX')) { + define('NOREQUIREAJAX', '1'); +} +if (!defined('NOBROWSERNOTIF')) { + define('NOBROWSERNOTIF', '1'); +} + +require '../../main.inc.php'; // Load $user and permissions +require_once DOL_DOCUMENT_ROOT.'/includes/stripe/stripe-php/init.php'; +require_once DOL_DOCUMENT_ROOT.'/stripe/class/stripe.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; + +$action = GETPOST('action', 'aZ09'); +$location = GETPOST('location', 'alphanohtml'); +$stripeacc = GETPOST('stripeacc', 'alphanohtml'); +$servicestatus = GETPOST('servicestatus', 'int'); +$amount = GETPOST('amount', 'int'); + +if (empty($user->rights->takepos->run)) { + accessforbidden(); +} + + +/* + * View + */ + +if ($action == 'getConnexionToken') { + try { + // Be sure to authenticate the endpoint for creating connection tokens. + // Force to use the correct API key + global $stripearrayofkeysbyenv; + \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$servicestatus]['secret_key']); + // The ConnectionToken's secret lets you connect to any Stripe Terminal reader + // and take payments with your Stripe account. + $array = array(); + if (isset($location) && !empty($location)) $array['location'] = $location; + if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage + $connectionToken = \Stripe\Terminal\ConnectionToken::create($array); + } else { + $connectionToken = \Stripe\Terminal\ConnectionToken::create($array, array("stripe_account" => $stripeacc)); + } + echo json_encode(array('secret' => $connectionToken->secret)); + } catch (Error $e) { + http_response_code(500); + echo json_encode(['error' => $e->getMessage()]); + } +} elseif ($action == 'createPaymentIntent') { + try { + $json_str = file_get_contents('php://input'); + $json_obj = json_decode($json_str); + + // For Terminal payments, the 'payment_method_types' parameter must include + // 'card_present' and the 'capture_method' must be set to 'manual' + $object = new Facture($db); + $object->fetch($json_obj->invoiceid); + $object->fetch_thirdparty(); + + $fulltag='INV='.$object->id.'.CUS='.$object->thirdparty->id; + $tag=null; + $fulltag=dol_string_unaccent($fulltag); + + $stripe = new Stripe($db); + $customer = $stripe->customerStripe($object->thirdparty, $stripeacc, $servicestatus, 1); + + $intent = $stripe->getPaymentIntent($json_obj->amount, $object->multicurrency_code, null, 'Stripe payment: '.$fulltag.(is_object($object)?' ref='.$object->ref:''), $object, $customer, $stripeacc, $servicestatus, 1, 'terminal', false, null, 0, 1); + + echo json_encode(array('client_secret' => $intent->client_secret)); + } catch (Error $e) { + http_response_code(500); + echo json_encode(['error' => $e->getMessage()]); + } +} elseif ($action == 'capturePaymentIntent') { + try { + // retrieve JSON from POST body + $json_str = file_get_contents('php://input'); + $json_obj = json_decode($json_str); + if (empty($stripeacc)) { // If the Stripe connect account not set, we use common API usage + $intent = \Stripe\PaymentIntent::retrieve($json_obj->id); + } else { + $intent = \Stripe\PaymentIntent::retrieve($json_obj->id, array("stripe_account" => $stripeacc)); + } + $intent = $intent->capture(); + + echo json_encode($intent); + } catch (Error $e) { + http_response_code(500); + echo json_encode(['error' => $e->getMessage()]); + } +} diff --git a/htdocs/stripe/charge.php b/htdocs/stripe/charge.php index 2cd61bfe5d0..7f17d51800d 100644 --- a/htdocs/stripe/charge.php +++ b/htdocs/stripe/charge.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2018-2022 Thibault FOUCART * Copyright (C) 2019 Frédéric France * * This program is free software; you can redistribute it and/or modify @@ -251,16 +251,15 @@ if (!$rowid) { $object = new Commande($db); $object->fetch($charge->metadata->dol_id); if ($object->id > 0) { - print "".img_picto('', 'object_order')." ".$object->ref.""; + print "".img_picto('', 'order')." ".$object->ref.""; } else { print $FULLTAG; } } elseif ($charge->metadata->dol_type == "invoice" || $charge->metadata->dol_type == "facture") { - print $charge->metadata->dol_type.' '.$charge->metadata->dol_id.' - '; $object = new Facture($db); $object->fetch($charge->metadata->dol_id); if ($object->id > 0) { - print "".img_picto('', 'object_invoice')." ".$object->ref.""; + print "".img_picto('', 'bill')." ".$object->ref.""; } else { print $FULLTAG; } diff --git a/htdocs/stripe/class/stripe.class.php b/htdocs/stripe/class/stripe.class.php index 36e67d2827c..5ec149ba07f 100644 --- a/htdocs/stripe/class/stripe.class.php +++ b/htdocs/stripe/class/stripe.class.php @@ -115,7 +115,7 @@ class Stripe extends CommonObject $tokenstring = $obj->tokenstring; $tmparray = json_decode($tokenstring); - $key = $tmparray->stripe_user_id; + $key = empty($tmparray->stripe_user_id) ? '' : $tmparray->stripe_user_id; } else { $tokenstring = ''; } @@ -290,6 +290,34 @@ class Stripe extends CommonObject return $stripepaymentmethod; } + /** + * Get the Stripe reader Object from its ID + * + * @param string $reader Reader ID + * @param string $key ''=Use common API. If not '', it is the Stripe connect account 'acc_....' to use Stripe connect + * @param int $status Status (0=test, 1=live) + * @return \Stripe\Terminal\Reader|null Stripe Reader or null if not found + */ + public function getSelectedReader($reader, $key = '', $status = 0) + { + $selectedreader = null; + + try { + // Force to use the correct API key + global $stripearrayofkeysbyenv; + \Stripe\Stripe::setApiKey($stripearrayofkeysbyenv[$status]['secret_key']); + if (empty($key)) { // If the Stripe connect account not set, we use common API usage + $selectedreader = \Stripe\Terminal\Reader::retrieve(''.$reader.''); + } else { + $stripepaymentmethod = \Stripe\Terminal\Reader::retrieve(''.$reader.'', array("stripe_account" => $key)); + } + } catch (Exception $e) { + $this->error = $e->getMessage(); + } + + return $selectedreader; + } + /** * Get the Stripe payment intent. Create it with confirmnow=false * Warning. If a payment was tried and failed, a payment intent was created. @@ -350,7 +378,7 @@ class Stripe extends CommonObject $paymentintent = null; - if (is_object($object) && !empty($conf->global->STRIPE_REUSE_EXISTING_INTENT_IF_FOUND)) { + if (is_object($object) && !empty($conf->global->STRIPE_REUSE_EXISTING_INTENT_IF_FOUND) && empty($conf->global->STRIPE_CARD_PRESENT)) { // Warning. If a payment was tried and failed, a payment intent was created. // But if we change something on object to pay (amount or other that does not change the idempotency key), reusing same payment intent is not allowed by Stripe. // Recommended solution is to recreate a new payment intent each time we need one (old one will be automatically closed by Stripe after a delay), Stripe will @@ -424,6 +452,9 @@ class Stripe extends CommonObject if (!empty($conf->global->STRIPE_SOFORT)) { $paymentmethodtypes[] = "sofort"; } + if (!empty($conf->global->STRIPE_CARD_PRESENT) && $mode == 'terminal') { + $paymentmethodtypes = array("card_present"); + } $dataforintent = array( "confirm" => $confirmnow, // Do not confirm immediatly during creation of intent @@ -456,6 +487,11 @@ class Stripe extends CommonObject if (!empty($conf->global->STRIPE_KLARNA)) { unset($dataforintent['setup_future_usage']); } + if (!empty($conf->global->STRIPE_CARD_PRESENT) && $mode == 'terminal') { + unset($dataforintent['setup_future_usage']); + $dataforintent["capture_method"] = "manual"; + $dataforintent["confirmation_method"] = "manual"; + } if (!is_null($payment_method)) { $dataforintent["payment_method"] = $payment_method; $description .= ' - '.$payment_method; diff --git a/htdocs/supplier_proposal/card.php b/htdocs/supplier_proposal/card.php index 9e92a5fb4b6..e4c2efd2c72 100644 --- a/htdocs/supplier_proposal/card.php +++ b/htdocs/supplier_proposal/card.php @@ -221,10 +221,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -448,10 +448,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -841,10 +841,10 @@ if (empty($reshook)) { if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) { $outputlangs = $langs; $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang) && GETPOST('lang_id', 'aZ09')) { $newlang = GETPOST('lang_id', 'aZ09'); } - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) { + if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) { $newlang = $object->thirdparty->default_lang; } if (!empty($newlang)) { @@ -1122,7 +1122,10 @@ if (empty($reshook)) { /* * View */ -$title = $langs->trans('CommRequest')." - ".$langs->trans('Card'); +$title = $object->ref." - ".$langs->trans('Card'); +if ($action == 'create') { + $title = $langs->trans("SupplierProposalNew"); +} $help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; llxHeader('', $title, $help_url); @@ -1141,7 +1144,7 @@ $now = dol_now(); if ($action == 'create') { $currency_code = $conf->currency; - print load_fiche_titre($langs->trans("NewAskPrice"), '', 'supplier_proposal'); + print load_fiche_titre($langs->trans("SupplierProposalNew"), '', 'supplier_proposal'); $soc = new Societe($db); if ($socid > 0) { @@ -1273,14 +1276,14 @@ if ($action == 'create') { print '
'.$langs->trans('BankAccount').''; $form->select_comptes(GETPOST('fk_account') > 0 ? GETPOST('fk_account', 'int') : $fk_account, 'fk_account', 0, '', 1); print '
'.$langs->trans('SendingMethod').''; print $form->selectShippingMethod(GETPOST('shipping_method_id') > 0 ? GETPOST('shipping_method_id', 'int') : $shipping_method_id, 'shipping_method_id', '', 1); print '
'; print ''; } + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; + } if (!empty($arrayfields['s.town']['checked'])) { print ''; } @@ -816,6 +830,9 @@ if ($resql) { if (!empty($arrayfields['s.nom']['checked'])) { print_liste_field_titre($arrayfields['s.nom']['label'], $_SERVER["PHP_SELF"], 's.nom', '', $param, '', $sortfield, $sortorder); } + if (!empty($arrayfields['s.name_alias']['checked'])) { + print_liste_field_titre($arrayfields['s.name_alias']['label'], $_SERVER["PHP_SELF"], 's.name_alias', '', $param, '', $sortfield, $sortorder); + } if (!empty($arrayfields['s.town']['checked'])) { print_liste_field_titre($arrayfields['s.town']['label'], $_SERVER["PHP_SELF"], 's.town', '', $param, '', $sortfield, $sortorder); } @@ -904,6 +921,7 @@ if ($resql) { // Company $companystatic->id = $obj->socid; $companystatic->name = $obj->name; + $companystatic->name_alias = $obj->alias; $companystatic->client = $obj->client; $companystatic->code_client = $obj->code_client; @@ -942,7 +960,17 @@ if ($resql) { // Thirdparty if (!empty($arrayfields['s.nom']['checked'])) { print ''; + if (!$i) { + $totalarray['nbfield']++; + } + } + + // Alias + if (!empty($arrayfields['s.name_alias']['checked'])) { + print ''; if (!$i) { $totalarray['nbfield']++; diff --git a/htdocs/supplier_proposal/note.php b/htdocs/supplier_proposal/note.php index 4ef46594e0e..48ce778c0cf 100644 --- a/htdocs/supplier_proposal/note.php +++ b/htdocs/supplier_proposal/note.php @@ -72,10 +72,6 @@ if (empty($reshook)) { /* * View */ -$title = $langs->trans('CommRequest')." - ".$langs->trans('Notes'); -$help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; -llxHeader('', $title, $help_url); - $form = new Form($db); if ($id > 0 || !empty($ref)) { @@ -88,6 +84,10 @@ if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref)) { $object->fetch_thirdparty(); + $title = $object->ref." - ".$langs->trans('Notes'); + $help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; + llxHeader('', $title, $help_url); + $societe = new Societe($db); if ($societe->fetch($object->socid)) { $head = supplier_proposal_prepare_head($object); diff --git a/htdocs/support/inc.php b/htdocs/support/inc.php index d5c92cade7b..3f372e97c1e 100644 --- a/htdocs/support/inc.php +++ b/htdocs/support/inc.php @@ -235,7 +235,10 @@ function pHeader($soutitre, $next, $action = 'none') // On force contenu dans format sortie header("Content-type: text/html; charset=".$conf->file->character_set_client); + + // Security options header("X-Content-Type-Options: nosniff"); + header("X-Frame-Options: SAMEORIGIN"); // Frames allowed only if on same domain (stop some XSS attacks) print ''."\n"; print ''."\n"; diff --git a/htdocs/support/index.php b/htdocs/support/index.php index 7330c034aa7..e61fef41f23 100644 --- a/htdocs/support/index.php +++ b/htdocs/support/index.php @@ -77,17 +77,22 @@ print '
'; -print '
'; +print '
'; @@ -1965,7 +1968,7 @@ if ($action == 'create') { } // Create an order - if (((!empty($conf->fournisseur->enabled) && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || !empty($conf->supplier_order->enabled)) && $object->statut == SupplierProposal::STATUS_SIGNED) { + if (((isModEnabled("fournisseur") && empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)) || isModEnabled("supplier_order")) && $object->statut == SupplierProposal::STATUS_SIGNED) { if ($usercancreateorder) { print ''; } diff --git a/htdocs/supplier_proposal/class/supplier_proposal.class.php b/htdocs/supplier_proposal/class/supplier_proposal.class.php index 8f0c1d36919..24b45c992eb 100644 --- a/htdocs/supplier_proposal/class/supplier_proposal.class.php +++ b/htdocs/supplier_proposal/class/supplier_proposal.class.php @@ -1149,8 +1149,10 @@ class SupplierProposal extends CommonObject } // Clear fields - $this->user_author = $user->id; - $this->user_valid = ''; + $this->user_author = $user->id; // deprecated + $this->user_author_id = $user->id; + $this->user_valid = 0; // deprecated + $this->user_valid_id = 0; $this->date = $now; // Set ref @@ -2190,7 +2192,7 @@ class SupplierProposal extends CommonObject $this->labelStatus[self::STATUS_NOTSIGNED] = $langs->transnoentitiesnoconv("SupplierProposalStatusNotSigned"); $this->labelStatus[self::STATUS_CLOSE] = $langs->transnoentitiesnoconv("SupplierProposalStatusClosed"); $this->labelStatusShort[self::STATUS_DRAFT] = $langs->transnoentitiesnoconv("SupplierProposalStatusDraftShort"); - $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv("Opened"); + $this->labelStatusShort[self::STATUS_VALIDATED] = $langs->transnoentitiesnoconv("SupplierProposalStatusValidatedShort"); $this->labelStatusShort[self::STATUS_SIGNED] = $langs->transnoentitiesnoconv("SupplierProposalStatusSignedShort"); $this->labelStatusShort[self::STATUS_NOTSIGNED] = $langs->transnoentitiesnoconv("SupplierProposalStatusNotSignedShort"); $this->labelStatusShort[self::STATUS_CLOSE] = $langs->transnoentitiesnoconv("SupplierProposalStatusClosedShort"); diff --git a/htdocs/supplier_proposal/contact.php b/htdocs/supplier_proposal/contact.php index bc5e555fa99..51137133aca 100644 --- a/htdocs/supplier_proposal/contact.php +++ b/htdocs/supplier_proposal/contact.php @@ -98,10 +98,6 @@ if ($action == 'addcontact' && $permissiontoedit) { /* * View */ -$title = $langs->trans('CommRequest')." - ".$langs->trans('ContactsAddresses'); -$help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; -llxHeader('', $title, $help_url); - $form = new Form($db); $formcompany = new FormCompany($db); $contactstatic = new Contact($db); @@ -120,6 +116,10 @@ if ($id > 0 || !empty($ref)) { if ($object->fetch($id, $ref) > 0) { $object->fetch_thirdparty(); + $title = $object->ref." - ".$langs->trans('ContactsAddresses'); + $help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; + llxHeader('', $title, $help_url); + $head = supplier_proposal_prepare_head($object); print dol_get_fiche_head($head, 'contact', $langs->trans("CommRequest"), -1, 'supplier_proposal'); diff --git a/htdocs/supplier_proposal/document.php b/htdocs/supplier_proposal/document.php index af2353c4d8f..74dd7c6160e 100644 --- a/htdocs/supplier_proposal/document.php +++ b/htdocs/supplier_proposal/document.php @@ -90,7 +90,7 @@ if ($object->id > 0) { * View */ -$title = $langs->trans('CommRequest')." - ".$langs->trans('Documents'); +$title = $object->ref." - ".$langs->trans('Documents'); $help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; llxHeader('', $title, $help_url); diff --git a/htdocs/supplier_proposal/info.php b/htdocs/supplier_proposal/info.php index 7bb6d4f7682..b95c06581ce 100644 --- a/htdocs/supplier_proposal/info.php +++ b/htdocs/supplier_proposal/info.php @@ -48,19 +48,16 @@ $result = restrictedArea($user, 'supplier_proposal', $id); /* * View */ - $form = new Form($db); - -$title = $langs->trans('CommRequest')." - ".$langs->trans('Info'); -$help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; -llxHeader('', $title, $help_url); - $object = new SupplierProposal($db); $object->fetch($id); $object->fetch_thirdparty(); - $object->info($object->id); +$title = $object->ref." - ".$langs->trans('Info'); +$help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; +llxHeader('', $title, $help_url); + $head = supplier_proposal_prepare_head($object); print dol_get_fiche_head($head, 'info', $langs->trans('CommRequest'), -1, 'supplier_proposal'); diff --git a/htdocs/supplier_proposal/list.php b/htdocs/supplier_proposal/list.php index 96f8a2b2cca..03de4f7ecca 100644 --- a/htdocs/supplier_proposal/list.php +++ b/htdocs/supplier_proposal/list.php @@ -61,6 +61,7 @@ $search_user = GETPOST('search_user', 'int'); $search_sale = GETPOST('search_sale', 'int'); $search_ref = GETPOST('sf_ref') ?GETPOST('sf_ref', 'alpha') : GETPOST('search_ref', 'alpha'); $search_societe = GETPOST('search_societe', 'alpha'); +$search_societe_alias = GETPOST('search_societe_alias', 'alpha'); $search_login = GETPOST('search_login', 'alpha'); $search_town = GETPOST('search_town', 'alpha'); $search_zip = GETPOST('search_zip', 'alpha'); @@ -168,6 +169,7 @@ $checkedtypetiers = 0; $arrayfields = array( 'sp.ref'=>array('label'=>$langs->trans("Ref"), 'checked'=>1), 's.nom'=>array('label'=>$langs->trans("Supplier"), 'checked'=>1), + 's.name_alias'=>array('label'=>"AliasNameShort", 'checked'=>0), 's.town'=>array('label'=>$langs->trans("Town"), 'checked'=>1), 's.zip'=>array('label'=>$langs->trans("Zip"), 'checked'=>1), 'state.nom'=>array('label'=>$langs->trans("StateShort"), 'checked'=>0), @@ -224,6 +226,7 @@ if (GETPOST('button_removefilter_x', 'alpha') || GETPOST('button_removefilter.x' $search_sale = ''; $search_ref = ''; $search_societe = ''; + $search_societe_alias = ''; $search_montant_ht = ''; $search_montant_vat = ''; $search_montant_ttc = ''; @@ -285,14 +288,16 @@ $formpropal = new FormPropal($db); $companystatic = new Societe($db); $formcompany = new FormCompany($db); +$title = $langs->trans('ListOfSupplierProposals'); $help_url = 'EN:Ask_Price_Supplier|FR:Demande_de_prix_fournisseur'; -//llxHeader('',$langs->trans('CommRequest'),$help_url); + +llxHeader('', $title, $help_url); $sql = 'SELECT'; if ($sall || $search_product_category > 0 || $search_user > 0) { $sql = 'SELECT DISTINCT'; } -$sql .= ' s.rowid as socid, s.nom as name, s.town, s.zip, s.fk_pays, s.client, s.code_client,'; +$sql .= ' s.rowid as socid, s.nom as name, s.name_alias as alias, s.town, s.zip, s.fk_pays, s.client, s.code_client,'; $sql .= " typent.code as typent_code,"; $sql .= " state.code_departement as state_code, state.nom as state_name,"; $sql .= ' sp.rowid, sp.note_public, sp.note_private, sp.total_ht, sp.total_tva, sp.total_ttc, sp.localtax1, sp.localtax2, sp.ref, sp.fk_statut as status, sp.fk_user_author, sp.date_valid, sp.date_livraison as dp,'; @@ -302,7 +307,7 @@ $sql .= " p.rowid as project_id, p.ref as project_ref,"; if (empty($user->rights->societe->client->voir) && !$socid) { $sql .= " sc.fk_soc, sc.fk_user,"; } -$sql .= " u.firstname, u.lastname, u.photo, u.login, u.statut as status, u.admin, u.employee, u.email as uemail"; +$sql .= " u.firstname, u.lastname, u.photo, u.login, u.statut as ustatus, u.admin, u.employee, u.email as uemail"; // Add fields from extrafields if (!empty($extrafields->attributes[$object->table_element]['label'])) { foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) { @@ -363,6 +368,9 @@ if ($search_ref) { if ($search_societe) { $sql .= natural_search('s.nom', $search_societe); } +if ($search_societe_alias) { + $sql .= natural_search('s.name_alias', $search_societe_alias); +} if ($search_login) { $sql .= natural_search(array('u.lastname', 'u.firstname', 'u.login'), $search_login); } @@ -467,8 +475,6 @@ if ($resql) { exit; } - llxHeader('', $langs->trans('CommRequest'), $help_url); - $param = ''; if (!empty($contextpage) && $contextpage != $_SERVER["PHP_SELF"]) { $param .= '&contextpage='.urlencode($contextpage); @@ -521,6 +527,9 @@ if ($resql) { if ($search_societe) { $param .= '&search_societe='.urlencode($search_societe); } + if ($search_societe_alias) { + $param .= '&search_societe_alias='.urlencode($search_societe_alias); + } if ($search_user > 0) { $param .= '&search_user='.urlencode($search_user); } @@ -677,6 +686,11 @@ if ($resql) { print ''; print ''; + print ''; + print ''; - print $companystatic->getNomUrl(1, 'supplier'); + print $companystatic->getNomUrl(1, 'supplier', 0, 0, -1, empty($arrayfields['s.name_alias']['checked']) ? 0 : 1); + print ''; + print $companystatic->name_alias; print '
'; +print ''; print ''; print ''; @@ -141,17 +148,22 @@ print "\n"; print '
'; // EMail support -print '
'; -print ''; +print ''; +print ''; print '